remove gdb_stat.h
[platform/upstream/binutils.git] / gdb / dwarf2read.c
1 /* DWARF 2 debugging format support for GDB.
2
3    Copyright (C) 1994-2013 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     /* Abbrev number */
1229     unsigned int abbrev;
1230
1231     /* Offset in .debug_info or .debug_types section.  */
1232     sect_offset offset;
1233
1234     /* The dies in a compilation unit form an n-ary tree.  PARENT
1235        points to this die's parent; CHILD points to the first child of
1236        this node; and all the children of a given node are chained
1237        together via their SIBLING fields.  */
1238     struct die_info *child;     /* Its first child, if any.  */
1239     struct die_info *sibling;   /* Its next sibling, if any.  */
1240     struct die_info *parent;    /* Its parent, if any.  */
1241
1242     /* An array of attributes, with NUM_ATTRS elements.  There may be
1243        zero, but it's not common and zero-sized arrays are not
1244        sufficiently portable C.  */
1245     struct attribute attrs[1];
1246   };
1247
1248 /* Get at parts of an attribute structure.  */
1249
1250 #define DW_STRING(attr)    ((attr)->u.str)
1251 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1252 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1253 #define DW_BLOCK(attr)     ((attr)->u.blk)
1254 #define DW_SND(attr)       ((attr)->u.snd)
1255 #define DW_ADDR(attr)      ((attr)->u.addr)
1256 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1257
1258 /* Blocks are a bunch of untyped bytes.  */
1259 struct dwarf_block
1260   {
1261     size_t size;
1262
1263     /* Valid only if SIZE is not zero.  */
1264     const gdb_byte *data;
1265   };
1266
1267 #ifndef ATTR_ALLOC_CHUNK
1268 #define ATTR_ALLOC_CHUNK 4
1269 #endif
1270
1271 /* Allocate fields for structs, unions and enums in this size.  */
1272 #ifndef DW_FIELD_ALLOC_CHUNK
1273 #define DW_FIELD_ALLOC_CHUNK 4
1274 #endif
1275
1276 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1277    but this would require a corresponding change in unpack_field_as_long
1278    and friends.  */
1279 static int bits_per_byte = 8;
1280
1281 /* The routines that read and process dies for a C struct or C++ class
1282    pass lists of data member fields and lists of member function fields
1283    in an instance of a field_info structure, as defined below.  */
1284 struct field_info
1285   {
1286     /* List of data member and baseclasses fields.  */
1287     struct nextfield
1288       {
1289         struct nextfield *next;
1290         int accessibility;
1291         int virtuality;
1292         struct field field;
1293       }
1294      *fields, *baseclasses;
1295
1296     /* Number of fields (including baseclasses).  */
1297     int nfields;
1298
1299     /* Number of baseclasses.  */
1300     int nbaseclasses;
1301
1302     /* Set if the accesibility of one of the fields is not public.  */
1303     int non_public_fields;
1304
1305     /* Member function fields array, entries are allocated in the order they
1306        are encountered in the object file.  */
1307     struct nextfnfield
1308       {
1309         struct nextfnfield *next;
1310         struct fn_field fnfield;
1311       }
1312      *fnfields;
1313
1314     /* Member function fieldlist array, contains name of possibly overloaded
1315        member function, number of overloaded member functions and a pointer
1316        to the head of the member function field chain.  */
1317     struct fnfieldlist
1318       {
1319         const char *name;
1320         int length;
1321         struct nextfnfield *head;
1322       }
1323      *fnfieldlists;
1324
1325     /* Number of entries in the fnfieldlists array.  */
1326     int nfnfields;
1327
1328     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1329        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1330     struct typedef_field_list
1331       {
1332         struct typedef_field field;
1333         struct typedef_field_list *next;
1334       }
1335     *typedef_field_list;
1336     unsigned typedef_field_list_count;
1337   };
1338
1339 /* One item on the queue of compilation units to read in full symbols
1340    for.  */
1341 struct dwarf2_queue_item
1342 {
1343   struct dwarf2_per_cu_data *per_cu;
1344   enum language pretend_language;
1345   struct dwarf2_queue_item *next;
1346 };
1347
1348 /* The current queue.  */
1349 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1350
1351 /* Loaded secondary compilation units are kept in memory until they
1352    have not been referenced for the processing of this many
1353    compilation units.  Set this to zero to disable caching.  Cache
1354    sizes of up to at least twenty will improve startup time for
1355    typical inter-CU-reference binaries, at an obvious memory cost.  */
1356 static int dwarf2_max_cache_age = 5;
1357 static void
1358 show_dwarf2_max_cache_age (struct ui_file *file, int from_tty,
1359                            struct cmd_list_element *c, const char *value)
1360 {
1361   fprintf_filtered (file, _("The upper bound on the age of cached "
1362                             "dwarf2 compilation units is %s.\n"),
1363                     value);
1364 }
1365 \f
1366 /* local function prototypes */
1367
1368 static const char *get_section_name (const struct dwarf2_section_info *);
1369
1370 static const char *get_section_file_name (const struct dwarf2_section_info *);
1371
1372 static void dwarf2_locate_sections (bfd *, asection *, void *);
1373
1374 static void dwarf2_find_base_address (struct die_info *die,
1375                                       struct dwarf2_cu *cu);
1376
1377 static struct partial_symtab *create_partial_symtab
1378   (struct dwarf2_per_cu_data *per_cu, const char *name);
1379
1380 static void dwarf2_build_psymtabs_hard (struct objfile *);
1381
1382 static void scan_partial_symbols (struct partial_die_info *,
1383                                   CORE_ADDR *, CORE_ADDR *,
1384                                   int, struct dwarf2_cu *);
1385
1386 static void add_partial_symbol (struct partial_die_info *,
1387                                 struct dwarf2_cu *);
1388
1389 static void add_partial_namespace (struct partial_die_info *pdi,
1390                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1391                                    int need_pc, struct dwarf2_cu *cu);
1392
1393 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1394                                 CORE_ADDR *highpc, int need_pc,
1395                                 struct dwarf2_cu *cu);
1396
1397 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1398                                      struct dwarf2_cu *cu);
1399
1400 static void add_partial_subprogram (struct partial_die_info *pdi,
1401                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1402                                     int need_pc, struct dwarf2_cu *cu);
1403
1404 static void dwarf2_read_symtab (struct partial_symtab *,
1405                                 struct objfile *);
1406
1407 static void psymtab_to_symtab_1 (struct partial_symtab *);
1408
1409 static struct abbrev_info *abbrev_table_lookup_abbrev
1410   (const struct abbrev_table *, unsigned int);
1411
1412 static struct abbrev_table *abbrev_table_read_table
1413   (struct dwarf2_section_info *, sect_offset);
1414
1415 static void abbrev_table_free (struct abbrev_table *);
1416
1417 static void abbrev_table_free_cleanup (void *);
1418
1419 static void dwarf2_read_abbrevs (struct dwarf2_cu *,
1420                                  struct dwarf2_section_info *);
1421
1422 static void dwarf2_free_abbrev_table (void *);
1423
1424 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1425
1426 static struct partial_die_info *load_partial_dies
1427   (const struct die_reader_specs *, const gdb_byte *, int);
1428
1429 static const gdb_byte *read_partial_die (const struct die_reader_specs *,
1430                                          struct partial_die_info *,
1431                                          struct abbrev_info *,
1432                                          unsigned int,
1433                                          const gdb_byte *);
1434
1435 static struct partial_die_info *find_partial_die (sect_offset, int,
1436                                                   struct dwarf2_cu *);
1437
1438 static void fixup_partial_die (struct partial_die_info *,
1439                                struct dwarf2_cu *);
1440
1441 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1442                                        struct attribute *, struct attr_abbrev *,
1443                                        const gdb_byte *);
1444
1445 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1446
1447 static int read_1_signed_byte (bfd *, const gdb_byte *);
1448
1449 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1450
1451 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1452
1453 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1454
1455 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1456                                unsigned int *);
1457
1458 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1459
1460 static LONGEST read_checked_initial_length_and_offset
1461   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1462    unsigned int *, unsigned int *);
1463
1464 static LONGEST read_offset (bfd *, const gdb_byte *,
1465                             const struct comp_unit_head *,
1466                             unsigned int *);
1467
1468 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1469
1470 static sect_offset read_abbrev_offset (struct dwarf2_section_info *,
1471                                        sect_offset);
1472
1473 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1474
1475 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1476
1477 static const char *read_indirect_string (bfd *, const gdb_byte *,
1478                                          const struct comp_unit_head *,
1479                                          unsigned int *);
1480
1481 static const char *read_indirect_string_from_dwz (struct dwz_file *, LONGEST);
1482
1483 static ULONGEST read_unsigned_leb128 (bfd *, const gdb_byte *, unsigned int *);
1484
1485 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1486
1487 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1488                                               const gdb_byte *,
1489                                               unsigned int *);
1490
1491 static const char *read_str_index (const struct die_reader_specs *reader,
1492                                    struct dwarf2_cu *cu, ULONGEST str_index);
1493
1494 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1495
1496 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1497                                       struct dwarf2_cu *);
1498
1499 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1500                                                 unsigned int);
1501
1502 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1503                                struct dwarf2_cu *cu);
1504
1505 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1506
1507 static struct die_info *die_specification (struct die_info *die,
1508                                            struct dwarf2_cu **);
1509
1510 static void free_line_header (struct line_header *lh);
1511
1512 static struct line_header *dwarf_decode_line_header (unsigned int offset,
1513                                                      struct dwarf2_cu *cu);
1514
1515 static void dwarf_decode_lines (struct line_header *, const char *,
1516                                 struct dwarf2_cu *, struct partial_symtab *,
1517                                 int);
1518
1519 static void dwarf2_start_subfile (const char *, const char *, const char *);
1520
1521 static void dwarf2_start_symtab (struct dwarf2_cu *,
1522                                  const char *, const char *, CORE_ADDR);
1523
1524 static struct symbol *new_symbol (struct die_info *, struct type *,
1525                                   struct dwarf2_cu *);
1526
1527 static struct symbol *new_symbol_full (struct die_info *, struct type *,
1528                                        struct dwarf2_cu *, struct symbol *);
1529
1530 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1531                                 struct dwarf2_cu *);
1532
1533 static void dwarf2_const_value_attr (const struct attribute *attr,
1534                                      struct type *type,
1535                                      const char *name,
1536                                      struct obstack *obstack,
1537                                      struct dwarf2_cu *cu, LONGEST *value,
1538                                      const gdb_byte **bytes,
1539                                      struct dwarf2_locexpr_baton **baton);
1540
1541 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1542
1543 static int need_gnat_info (struct dwarf2_cu *);
1544
1545 static struct type *die_descriptive_type (struct die_info *,
1546                                           struct dwarf2_cu *);
1547
1548 static void set_descriptive_type (struct type *, struct die_info *,
1549                                   struct dwarf2_cu *);
1550
1551 static struct type *die_containing_type (struct die_info *,
1552                                          struct dwarf2_cu *);
1553
1554 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1555                                      struct dwarf2_cu *);
1556
1557 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1558
1559 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1560
1561 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1562
1563 static char *typename_concat (struct obstack *obs, const char *prefix,
1564                               const char *suffix, int physname,
1565                               struct dwarf2_cu *cu);
1566
1567 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1568
1569 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1570
1571 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1572
1573 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1574
1575 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1576
1577 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1578                                struct dwarf2_cu *, struct partial_symtab *);
1579
1580 static int dwarf2_get_pc_bounds (struct die_info *,
1581                                  CORE_ADDR *, CORE_ADDR *, struct dwarf2_cu *,
1582                                  struct partial_symtab *);
1583
1584 static void get_scope_pc_bounds (struct die_info *,
1585                                  CORE_ADDR *, CORE_ADDR *,
1586                                  struct dwarf2_cu *);
1587
1588 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1589                                         CORE_ADDR, struct dwarf2_cu *);
1590
1591 static void dwarf2_add_field (struct field_info *, struct die_info *,
1592                               struct dwarf2_cu *);
1593
1594 static void dwarf2_attach_fields_to_type (struct field_info *,
1595                                           struct type *, struct dwarf2_cu *);
1596
1597 static void dwarf2_add_member_fn (struct field_info *,
1598                                   struct die_info *, struct type *,
1599                                   struct dwarf2_cu *);
1600
1601 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1602                                              struct type *,
1603                                              struct dwarf2_cu *);
1604
1605 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1606
1607 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1608
1609 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1610
1611 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1612
1613 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1614
1615 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1616
1617 static struct type *read_module_type (struct die_info *die,
1618                                       struct dwarf2_cu *cu);
1619
1620 static const char *namespace_name (struct die_info *die,
1621                                    int *is_anonymous, struct dwarf2_cu *);
1622
1623 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1624
1625 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1626
1627 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1628                                                        struct dwarf2_cu *);
1629
1630 static struct die_info *read_die_and_siblings_1
1631   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1632    struct die_info *);
1633
1634 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1635                                                const gdb_byte *info_ptr,
1636                                                const gdb_byte **new_info_ptr,
1637                                                struct die_info *parent);
1638
1639 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1640                                         struct die_info **, const gdb_byte *,
1641                                         int *, int);
1642
1643 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1644                                       struct die_info **, const gdb_byte *,
1645                                       int *);
1646
1647 static void process_die (struct die_info *, struct dwarf2_cu *);
1648
1649 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1650                                              struct obstack *);
1651
1652 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1653
1654 static const char *dwarf2_full_name (const char *name,
1655                                      struct die_info *die,
1656                                      struct dwarf2_cu *cu);
1657
1658 static const char *dwarf2_physname (const char *name, struct die_info *die,
1659                                     struct dwarf2_cu *cu);
1660
1661 static struct die_info *dwarf2_extension (struct die_info *die,
1662                                           struct dwarf2_cu **);
1663
1664 static const char *dwarf_tag_name (unsigned int);
1665
1666 static const char *dwarf_attr_name (unsigned int);
1667
1668 static const char *dwarf_form_name (unsigned int);
1669
1670 static char *dwarf_bool_name (unsigned int);
1671
1672 static const char *dwarf_type_encoding_name (unsigned int);
1673
1674 static struct die_info *sibling_die (struct die_info *);
1675
1676 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1677
1678 static void dump_die_for_error (struct die_info *);
1679
1680 static void dump_die_1 (struct ui_file *, int level, int max_level,
1681                         struct die_info *);
1682
1683 /*static*/ void dump_die (struct die_info *, int max_level);
1684
1685 static void store_in_ref_table (struct die_info *,
1686                                 struct dwarf2_cu *);
1687
1688 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1689
1690 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1691
1692 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1693                                                const struct attribute *,
1694                                                struct dwarf2_cu **);
1695
1696 static struct die_info *follow_die_ref (struct die_info *,
1697                                         const struct attribute *,
1698                                         struct dwarf2_cu **);
1699
1700 static struct die_info *follow_die_sig (struct die_info *,
1701                                         const struct attribute *,
1702                                         struct dwarf2_cu **);
1703
1704 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1705                                          struct dwarf2_cu *);
1706
1707 static struct type *get_DW_AT_signature_type (struct die_info *,
1708                                               const struct attribute *,
1709                                               struct dwarf2_cu *);
1710
1711 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1712
1713 static void read_signatured_type (struct signatured_type *);
1714
1715 static struct type_unit_group *get_type_unit_group
1716     (struct dwarf2_cu *, const struct attribute *);
1717
1718 static void build_type_unit_groups (die_reader_func_ftype *, void *);
1719
1720 /* memory allocation interface */
1721
1722 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1723
1724 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1725
1726 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int,
1727                                  const char *, int);
1728
1729 static int attr_form_is_block (const struct attribute *);
1730
1731 static int attr_form_is_section_offset (const struct attribute *);
1732
1733 static int attr_form_is_constant (const struct attribute *);
1734
1735 static int attr_form_is_ref (const struct attribute *);
1736
1737 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1738                                    struct dwarf2_loclist_baton *baton,
1739                                    const struct attribute *attr);
1740
1741 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1742                                          struct symbol *sym,
1743                                          struct dwarf2_cu *cu,
1744                                          int is_block);
1745
1746 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1747                                      const gdb_byte *info_ptr,
1748                                      struct abbrev_info *abbrev);
1749
1750 static void free_stack_comp_unit (void *);
1751
1752 static hashval_t partial_die_hash (const void *item);
1753
1754 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1755
1756 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1757   (sect_offset offset, unsigned int offset_in_dwz, struct objfile *objfile);
1758
1759 static void init_one_comp_unit (struct dwarf2_cu *cu,
1760                                 struct dwarf2_per_cu_data *per_cu);
1761
1762 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1763                                    struct die_info *comp_unit_die,
1764                                    enum language pretend_language);
1765
1766 static void free_heap_comp_unit (void *);
1767
1768 static void free_cached_comp_units (void *);
1769
1770 static void age_cached_comp_units (void);
1771
1772 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1773
1774 static struct type *set_die_type (struct die_info *, struct type *,
1775                                   struct dwarf2_cu *);
1776
1777 static void create_all_comp_units (struct objfile *);
1778
1779 static int create_all_type_units (struct objfile *);
1780
1781 static void load_full_comp_unit (struct dwarf2_per_cu_data *,
1782                                  enum language);
1783
1784 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1785                                     enum language);
1786
1787 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1788                                     enum language);
1789
1790 static void dwarf2_add_dependence (struct dwarf2_cu *,
1791                                    struct dwarf2_per_cu_data *);
1792
1793 static void dwarf2_mark (struct dwarf2_cu *);
1794
1795 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1796
1797 static struct type *get_die_type_at_offset (sect_offset,
1798                                             struct dwarf2_per_cu_data *);
1799
1800 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1801
1802 static void dwarf2_release_queue (void *dummy);
1803
1804 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1805                              enum language pretend_language);
1806
1807 static void process_queue (void);
1808
1809 static void find_file_and_directory (struct die_info *die,
1810                                      struct dwarf2_cu *cu,
1811                                      const char **name, const char **comp_dir);
1812
1813 static char *file_full_name (int file, struct line_header *lh,
1814                              const char *comp_dir);
1815
1816 static const gdb_byte *read_and_check_comp_unit_head
1817   (struct comp_unit_head *header,
1818    struct dwarf2_section_info *section,
1819    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1820    int is_debug_types_section);
1821
1822 static void init_cutu_and_read_dies
1823   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1824    int use_existing_cu, int keep,
1825    die_reader_func_ftype *die_reader_func, void *data);
1826
1827 static void init_cutu_and_read_dies_simple
1828   (struct dwarf2_per_cu_data *this_cu,
1829    die_reader_func_ftype *die_reader_func, void *data);
1830
1831 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1832
1833 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1834
1835 static struct dwo_unit *lookup_dwo_unit_in_dwp
1836   (struct dwp_file *dwp_file, const char *comp_dir,
1837    ULONGEST signature, int is_debug_types);
1838
1839 static struct dwp_file *get_dwp_file (void);
1840
1841 static struct dwo_unit *lookup_dwo_comp_unit
1842   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
1843
1844 static struct dwo_unit *lookup_dwo_type_unit
1845   (struct signatured_type *, const char *, const char *);
1846
1847 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1848
1849 static void free_dwo_file_cleanup (void *);
1850
1851 static void process_cu_includes (void);
1852
1853 static void check_producer (struct dwarf2_cu *cu);
1854 \f
1855 /* Various complaints about symbol reading that don't abort the process.  */
1856
1857 static void
1858 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
1859 {
1860   complaint (&symfile_complaints,
1861              _("statement list doesn't fit in .debug_line section"));
1862 }
1863
1864 static void
1865 dwarf2_debug_line_missing_file_complaint (void)
1866 {
1867   complaint (&symfile_complaints,
1868              _(".debug_line section has line data without a file"));
1869 }
1870
1871 static void
1872 dwarf2_debug_line_missing_end_sequence_complaint (void)
1873 {
1874   complaint (&symfile_complaints,
1875              _(".debug_line section has line "
1876                "program sequence without an end"));
1877 }
1878
1879 static void
1880 dwarf2_complex_location_expr_complaint (void)
1881 {
1882   complaint (&symfile_complaints, _("location expression too complex"));
1883 }
1884
1885 static void
1886 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
1887                                               int arg3)
1888 {
1889   complaint (&symfile_complaints,
1890              _("const value length mismatch for '%s', got %d, expected %d"),
1891              arg1, arg2, arg3);
1892 }
1893
1894 static void
1895 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
1896 {
1897   complaint (&symfile_complaints,
1898              _("debug info runs off end of %s section"
1899                " [in module %s]"),
1900              get_section_name (section),
1901              get_section_file_name (section));
1902 }
1903
1904 static void
1905 dwarf2_macro_malformed_definition_complaint (const char *arg1)
1906 {
1907   complaint (&symfile_complaints,
1908              _("macro debug info contains a "
1909                "malformed macro definition:\n`%s'"),
1910              arg1);
1911 }
1912
1913 static void
1914 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
1915 {
1916   complaint (&symfile_complaints,
1917              _("invalid attribute class or form for '%s' in '%s'"),
1918              arg1, arg2);
1919 }
1920 \f
1921 #if WORDS_BIGENDIAN
1922
1923 /* Convert VALUE between big- and little-endian.  */
1924 static offset_type
1925 byte_swap (offset_type value)
1926 {
1927   offset_type result;
1928
1929   result = (value & 0xff) << 24;
1930   result |= (value & 0xff00) << 8;
1931   result |= (value & 0xff0000) >> 8;
1932   result |= (value & 0xff000000) >> 24;
1933   return result;
1934 }
1935
1936 #define MAYBE_SWAP(V)  byte_swap (V)
1937
1938 #else
1939 #define MAYBE_SWAP(V) (V)
1940 #endif /* WORDS_BIGENDIAN */
1941
1942 /* The suffix for an index file.  */
1943 #define INDEX_SUFFIX ".gdb-index"
1944
1945 /* Try to locate the sections we need for DWARF 2 debugging
1946    information and return true if we have enough to do something.
1947    NAMES points to the dwarf2 section names, or is NULL if the standard
1948    ELF names are used.  */
1949
1950 int
1951 dwarf2_has_info (struct objfile *objfile,
1952                  const struct dwarf2_debug_sections *names)
1953 {
1954   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
1955   if (!dwarf2_per_objfile)
1956     {
1957       /* Initialize per-objfile state.  */
1958       struct dwarf2_per_objfile *data
1959         = obstack_alloc (&objfile->objfile_obstack, sizeof (*data));
1960
1961       memset (data, 0, sizeof (*data));
1962       set_objfile_data (objfile, dwarf2_objfile_data_key, data);
1963       dwarf2_per_objfile = data;
1964
1965       bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections,
1966                              (void *) names);
1967       dwarf2_per_objfile->objfile = objfile;
1968     }
1969   return (!dwarf2_per_objfile->info.is_virtual
1970           && dwarf2_per_objfile->info.s.asection != NULL
1971           && !dwarf2_per_objfile->abbrev.is_virtual
1972           && dwarf2_per_objfile->abbrev.s.asection != NULL);
1973 }
1974
1975 /* Return the containing section of virtual section SECTION.  */
1976
1977 static struct dwarf2_section_info *
1978 get_containing_section (const struct dwarf2_section_info *section)
1979 {
1980   gdb_assert (section->is_virtual);
1981   return section->s.containing_section;
1982 }
1983
1984 /* Return the bfd owner of SECTION.  */
1985
1986 static struct bfd *
1987 get_section_bfd_owner (const struct dwarf2_section_info *section)
1988 {
1989   if (section->is_virtual)
1990     {
1991       section = get_containing_section (section);
1992       gdb_assert (!section->is_virtual);
1993     }
1994   return section->s.asection->owner;
1995 }
1996
1997 /* Return the bfd section of SECTION.
1998    Returns NULL if the section is not present.  */
1999
2000 static asection *
2001 get_section_bfd_section (const struct dwarf2_section_info *section)
2002 {
2003   if (section->is_virtual)
2004     {
2005       section = get_containing_section (section);
2006       gdb_assert (!section->is_virtual);
2007     }
2008   return section->s.asection;
2009 }
2010
2011 /* Return the name of SECTION.  */
2012
2013 static const char *
2014 get_section_name (const struct dwarf2_section_info *section)
2015 {
2016   asection *sectp = get_section_bfd_section (section);
2017
2018   gdb_assert (sectp != NULL);
2019   return bfd_section_name (get_section_bfd_owner (section), sectp);
2020 }
2021
2022 /* Return the name of the file SECTION is in.  */
2023
2024 static const char *
2025 get_section_file_name (const struct dwarf2_section_info *section)
2026 {
2027   bfd *abfd = get_section_bfd_owner (section);
2028
2029   return bfd_get_filename (abfd);
2030 }
2031
2032 /* Return the id of SECTION.
2033    Returns 0 if SECTION doesn't exist.  */
2034
2035 static int
2036 get_section_id (const struct dwarf2_section_info *section)
2037 {
2038   asection *sectp = get_section_bfd_section (section);
2039
2040   if (sectp == NULL)
2041     return 0;
2042   return sectp->id;
2043 }
2044
2045 /* Return the flags of SECTION.
2046    SECTION (or containing section if this is a virtual section) must exist.  */
2047
2048 static int
2049 get_section_flags (const struct dwarf2_section_info *section)
2050 {
2051   asection *sectp = get_section_bfd_section (section);
2052
2053   gdb_assert (sectp != NULL);
2054   return bfd_get_section_flags (sectp->owner, sectp);
2055 }
2056
2057 /* When loading sections, we look either for uncompressed section or for
2058    compressed section names.  */
2059
2060 static int
2061 section_is_p (const char *section_name,
2062               const struct dwarf2_section_names *names)
2063 {
2064   if (names->normal != NULL
2065       && strcmp (section_name, names->normal) == 0)
2066     return 1;
2067   if (names->compressed != NULL
2068       && strcmp (section_name, names->compressed) == 0)
2069     return 1;
2070   return 0;
2071 }
2072
2073 /* This function is mapped across the sections and remembers the
2074    offset and size of each of the debugging sections we are interested
2075    in.  */
2076
2077 static void
2078 dwarf2_locate_sections (bfd *abfd, asection *sectp, void *vnames)
2079 {
2080   const struct dwarf2_debug_sections *names;
2081   flagword aflag = bfd_get_section_flags (abfd, sectp);
2082
2083   if (vnames == NULL)
2084     names = &dwarf2_elf_names;
2085   else
2086     names = (const struct dwarf2_debug_sections *) vnames;
2087
2088   if ((aflag & SEC_HAS_CONTENTS) == 0)
2089     {
2090     }
2091   else if (section_is_p (sectp->name, &names->info))
2092     {
2093       dwarf2_per_objfile->info.s.asection = sectp;
2094       dwarf2_per_objfile->info.size = bfd_get_section_size (sectp);
2095     }
2096   else if (section_is_p (sectp->name, &names->abbrev))
2097     {
2098       dwarf2_per_objfile->abbrev.s.asection = sectp;
2099       dwarf2_per_objfile->abbrev.size = bfd_get_section_size (sectp);
2100     }
2101   else if (section_is_p (sectp->name, &names->line))
2102     {
2103       dwarf2_per_objfile->line.s.asection = sectp;
2104       dwarf2_per_objfile->line.size = bfd_get_section_size (sectp);
2105     }
2106   else if (section_is_p (sectp->name, &names->loc))
2107     {
2108       dwarf2_per_objfile->loc.s.asection = sectp;
2109       dwarf2_per_objfile->loc.size = bfd_get_section_size (sectp);
2110     }
2111   else if (section_is_p (sectp->name, &names->macinfo))
2112     {
2113       dwarf2_per_objfile->macinfo.s.asection = sectp;
2114       dwarf2_per_objfile->macinfo.size = bfd_get_section_size (sectp);
2115     }
2116   else if (section_is_p (sectp->name, &names->macro))
2117     {
2118       dwarf2_per_objfile->macro.s.asection = sectp;
2119       dwarf2_per_objfile->macro.size = bfd_get_section_size (sectp);
2120     }
2121   else if (section_is_p (sectp->name, &names->str))
2122     {
2123       dwarf2_per_objfile->str.s.asection = sectp;
2124       dwarf2_per_objfile->str.size = bfd_get_section_size (sectp);
2125     }
2126   else if (section_is_p (sectp->name, &names->addr))
2127     {
2128       dwarf2_per_objfile->addr.s.asection = sectp;
2129       dwarf2_per_objfile->addr.size = bfd_get_section_size (sectp);
2130     }
2131   else if (section_is_p (sectp->name, &names->frame))
2132     {
2133       dwarf2_per_objfile->frame.s.asection = sectp;
2134       dwarf2_per_objfile->frame.size = bfd_get_section_size (sectp);
2135     }
2136   else if (section_is_p (sectp->name, &names->eh_frame))
2137     {
2138       dwarf2_per_objfile->eh_frame.s.asection = sectp;
2139       dwarf2_per_objfile->eh_frame.size = bfd_get_section_size (sectp);
2140     }
2141   else if (section_is_p (sectp->name, &names->ranges))
2142     {
2143       dwarf2_per_objfile->ranges.s.asection = sectp;
2144       dwarf2_per_objfile->ranges.size = bfd_get_section_size (sectp);
2145     }
2146   else if (section_is_p (sectp->name, &names->types))
2147     {
2148       struct dwarf2_section_info type_section;
2149
2150       memset (&type_section, 0, sizeof (type_section));
2151       type_section.s.asection = sectp;
2152       type_section.size = bfd_get_section_size (sectp);
2153
2154       VEC_safe_push (dwarf2_section_info_def, dwarf2_per_objfile->types,
2155                      &type_section);
2156     }
2157   else if (section_is_p (sectp->name, &names->gdb_index))
2158     {
2159       dwarf2_per_objfile->gdb_index.s.asection = sectp;
2160       dwarf2_per_objfile->gdb_index.size = bfd_get_section_size (sectp);
2161     }
2162
2163   if ((bfd_get_section_flags (abfd, sectp) & SEC_LOAD)
2164       && bfd_section_vma (abfd, sectp) == 0)
2165     dwarf2_per_objfile->has_section_at_zero = 1;
2166 }
2167
2168 /* A helper function that decides whether a section is empty,
2169    or not present.  */
2170
2171 static int
2172 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2173 {
2174   if (section->is_virtual)
2175     return section->size == 0;
2176   return section->s.asection == NULL || section->size == 0;
2177 }
2178
2179 /* Read the contents of the section INFO.
2180    OBJFILE is the main object file, but not necessarily the file where
2181    the section comes from.  E.g., for DWO files the bfd of INFO is the bfd
2182    of the DWO file.
2183    If the section is compressed, uncompress it before returning.  */
2184
2185 static void
2186 dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info)
2187 {
2188   asection *sectp;
2189   bfd *abfd;
2190   gdb_byte *buf, *retbuf;
2191
2192   if (info->readin)
2193     return;
2194   info->buffer = NULL;
2195   info->readin = 1;
2196
2197   if (dwarf2_section_empty_p (info))
2198     return;
2199
2200   sectp = get_section_bfd_section (info);
2201
2202   /* If this is a virtual section we need to read in the real one first.  */
2203   if (info->is_virtual)
2204     {
2205       struct dwarf2_section_info *containing_section =
2206         get_containing_section (info);
2207
2208       gdb_assert (sectp != NULL);
2209       if ((sectp->flags & SEC_RELOC) != 0)
2210         {
2211           error (_("Dwarf Error: DWP format V2 with relocations is not"
2212                    " supported in section %s [in module %s]"),
2213                  get_section_name (info), get_section_file_name (info));
2214         }
2215       dwarf2_read_section (objfile, containing_section);
2216       /* Other code should have already caught virtual sections that don't
2217          fit.  */
2218       gdb_assert (info->virtual_offset + info->size
2219                   <= containing_section->size);
2220       /* If the real section is empty or there was a problem reading the
2221          section we shouldn't get here.  */
2222       gdb_assert (containing_section->buffer != NULL);
2223       info->buffer = containing_section->buffer + info->virtual_offset;
2224       return;
2225     }
2226
2227   /* If the section has relocations, we must read it ourselves.
2228      Otherwise we attach it to the BFD.  */
2229   if ((sectp->flags & SEC_RELOC) == 0)
2230     {
2231       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2232       return;
2233     }
2234
2235   buf = obstack_alloc (&objfile->objfile_obstack, info->size);
2236   info->buffer = buf;
2237
2238   /* When debugging .o files, we may need to apply relocations; see
2239      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2240      We never compress sections in .o files, so we only need to
2241      try this when the section is not compressed.  */
2242   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2243   if (retbuf != NULL)
2244     {
2245       info->buffer = retbuf;
2246       return;
2247     }
2248
2249   abfd = get_section_bfd_owner (info);
2250   gdb_assert (abfd != NULL);
2251
2252   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2253       || bfd_bread (buf, info->size, abfd) != info->size)
2254     {
2255       error (_("Dwarf Error: Can't read DWARF data"
2256                " in section %s [in module %s]"),
2257              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2258     }
2259 }
2260
2261 /* A helper function that returns the size of a section in a safe way.
2262    If you are positive that the section has been read before using the
2263    size, then it is safe to refer to the dwarf2_section_info object's
2264    "size" field directly.  In other cases, you must call this
2265    function, because for compressed sections the size field is not set
2266    correctly until the section has been read.  */
2267
2268 static bfd_size_type
2269 dwarf2_section_size (struct objfile *objfile,
2270                      struct dwarf2_section_info *info)
2271 {
2272   if (!info->readin)
2273     dwarf2_read_section (objfile, info);
2274   return info->size;
2275 }
2276
2277 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2278    SECTION_NAME.  */
2279
2280 void
2281 dwarf2_get_section_info (struct objfile *objfile,
2282                          enum dwarf2_section_enum sect,
2283                          asection **sectp, const gdb_byte **bufp,
2284                          bfd_size_type *sizep)
2285 {
2286   struct dwarf2_per_objfile *data
2287     = objfile_data (objfile, dwarf2_objfile_data_key);
2288   struct dwarf2_section_info *info;
2289
2290   /* We may see an objfile without any DWARF, in which case we just
2291      return nothing.  */
2292   if (data == NULL)
2293     {
2294       *sectp = NULL;
2295       *bufp = NULL;
2296       *sizep = 0;
2297       return;
2298     }
2299   switch (sect)
2300     {
2301     case DWARF2_DEBUG_FRAME:
2302       info = &data->frame;
2303       break;
2304     case DWARF2_EH_FRAME:
2305       info = &data->eh_frame;
2306       break;
2307     default:
2308       gdb_assert_not_reached ("unexpected section");
2309     }
2310
2311   dwarf2_read_section (objfile, info);
2312
2313   *sectp = get_section_bfd_section (info);
2314   *bufp = info->buffer;
2315   *sizep = info->size;
2316 }
2317
2318 /* A helper function to find the sections for a .dwz file.  */
2319
2320 static void
2321 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2322 {
2323   struct dwz_file *dwz_file = arg;
2324
2325   /* Note that we only support the standard ELF names, because .dwz
2326      is ELF-only (at the time of writing).  */
2327   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2328     {
2329       dwz_file->abbrev.s.asection = sectp;
2330       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2331     }
2332   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2333     {
2334       dwz_file->info.s.asection = sectp;
2335       dwz_file->info.size = bfd_get_section_size (sectp);
2336     }
2337   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2338     {
2339       dwz_file->str.s.asection = sectp;
2340       dwz_file->str.size = bfd_get_section_size (sectp);
2341     }
2342   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2343     {
2344       dwz_file->line.s.asection = sectp;
2345       dwz_file->line.size = bfd_get_section_size (sectp);
2346     }
2347   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2348     {
2349       dwz_file->macro.s.asection = sectp;
2350       dwz_file->macro.size = bfd_get_section_size (sectp);
2351     }
2352   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2353     {
2354       dwz_file->gdb_index.s.asection = sectp;
2355       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2356     }
2357 }
2358
2359 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2360    there is no .gnu_debugaltlink section in the file.  Error if there
2361    is such a section but the file cannot be found.  */
2362
2363 static struct dwz_file *
2364 dwarf2_get_dwz_file (void)
2365 {
2366   bfd *dwz_bfd;
2367   char *data;
2368   struct cleanup *cleanup;
2369   const char *filename;
2370   struct dwz_file *result;
2371   bfd_size_type buildid_len_arg;
2372   size_t buildid_len;
2373   bfd_byte *buildid;
2374
2375   if (dwarf2_per_objfile->dwz_file != NULL)
2376     return dwarf2_per_objfile->dwz_file;
2377
2378   bfd_set_error (bfd_error_no_error);
2379   data = bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2380                                       &buildid_len_arg, &buildid);
2381   if (data == NULL)
2382     {
2383       if (bfd_get_error () == bfd_error_no_error)
2384         return NULL;
2385       error (_("could not read '.gnu_debugaltlink' section: %s"),
2386              bfd_errmsg (bfd_get_error ()));
2387     }
2388   cleanup = make_cleanup (xfree, data);
2389   make_cleanup (xfree, buildid);
2390
2391   buildid_len = (size_t) buildid_len_arg;
2392
2393   filename = (const char *) data;
2394   if (!IS_ABSOLUTE_PATH (filename))
2395     {
2396       char *abs = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2397       char *rel;
2398
2399       make_cleanup (xfree, abs);
2400       abs = ldirname (abs);
2401       make_cleanup (xfree, abs);
2402
2403       rel = concat (abs, SLASH_STRING, filename, (char *) NULL);
2404       make_cleanup (xfree, rel);
2405       filename = rel;
2406     }
2407
2408   /* First try the file name given in the section.  If that doesn't
2409      work, try to use the build-id instead.  */
2410   dwz_bfd = gdb_bfd_open (filename, gnutarget, -1);
2411   if (dwz_bfd != NULL)
2412     {
2413       if (!build_id_verify (dwz_bfd, buildid_len, buildid))
2414         {
2415           gdb_bfd_unref (dwz_bfd);
2416           dwz_bfd = NULL;
2417         }
2418     }
2419
2420   if (dwz_bfd == NULL)
2421     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2422
2423   if (dwz_bfd == NULL)
2424     error (_("could not find '.gnu_debugaltlink' file for %s"),
2425            objfile_name (dwarf2_per_objfile->objfile));
2426
2427   result = OBSTACK_ZALLOC (&dwarf2_per_objfile->objfile->objfile_obstack,
2428                            struct dwz_file);
2429   result->dwz_bfd = dwz_bfd;
2430
2431   bfd_map_over_sections (dwz_bfd, locate_dwz_sections, result);
2432
2433   do_cleanups (cleanup);
2434
2435   dwarf2_per_objfile->dwz_file = result;
2436   return result;
2437 }
2438 \f
2439 /* DWARF quick_symbols_functions support.  */
2440
2441 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2442    unique line tables, so we maintain a separate table of all .debug_line
2443    derived entries to support the sharing.
2444    All the quick functions need is the list of file names.  We discard the
2445    line_header when we're done and don't need to record it here.  */
2446 struct quick_file_names
2447 {
2448   /* The data used to construct the hash key.  */
2449   struct stmt_list_hash hash;
2450
2451   /* The number of entries in file_names, real_names.  */
2452   unsigned int num_file_names;
2453
2454   /* The file names from the line table, after being run through
2455      file_full_name.  */
2456   const char **file_names;
2457
2458   /* The file names from the line table after being run through
2459      gdb_realpath.  These are computed lazily.  */
2460   const char **real_names;
2461 };
2462
2463 /* When using the index (and thus not using psymtabs), each CU has an
2464    object of this type.  This is used to hold information needed by
2465    the various "quick" methods.  */
2466 struct dwarf2_per_cu_quick_data
2467 {
2468   /* The file table.  This can be NULL if there was no file table
2469      or it's currently not read in.
2470      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2471   struct quick_file_names *file_names;
2472
2473   /* The corresponding symbol table.  This is NULL if symbols for this
2474      CU have not yet been read.  */
2475   struct symtab *symtab;
2476
2477   /* A temporary mark bit used when iterating over all CUs in
2478      expand_symtabs_matching.  */
2479   unsigned int mark : 1;
2480
2481   /* True if we've tried to read the file table and found there isn't one.
2482      There will be no point in trying to read it again next time.  */
2483   unsigned int no_file_data : 1;
2484 };
2485
2486 /* Utility hash function for a stmt_list_hash.  */
2487
2488 static hashval_t
2489 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2490 {
2491   hashval_t v = 0;
2492
2493   if (stmt_list_hash->dwo_unit != NULL)
2494     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2495   v += stmt_list_hash->line_offset.sect_off;
2496   return v;
2497 }
2498
2499 /* Utility equality function for a stmt_list_hash.  */
2500
2501 static int
2502 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2503                     const struct stmt_list_hash *rhs)
2504 {
2505   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2506     return 0;
2507   if (lhs->dwo_unit != NULL
2508       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2509     return 0;
2510
2511   return lhs->line_offset.sect_off == rhs->line_offset.sect_off;
2512 }
2513
2514 /* Hash function for a quick_file_names.  */
2515
2516 static hashval_t
2517 hash_file_name_entry (const void *e)
2518 {
2519   const struct quick_file_names *file_data = e;
2520
2521   return hash_stmt_list_entry (&file_data->hash);
2522 }
2523
2524 /* Equality function for a quick_file_names.  */
2525
2526 static int
2527 eq_file_name_entry (const void *a, const void *b)
2528 {
2529   const struct quick_file_names *ea = a;
2530   const struct quick_file_names *eb = b;
2531
2532   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2533 }
2534
2535 /* Delete function for a quick_file_names.  */
2536
2537 static void
2538 delete_file_name_entry (void *e)
2539 {
2540   struct quick_file_names *file_data = e;
2541   int i;
2542
2543   for (i = 0; i < file_data->num_file_names; ++i)
2544     {
2545       xfree ((void*) file_data->file_names[i]);
2546       if (file_data->real_names)
2547         xfree ((void*) file_data->real_names[i]);
2548     }
2549
2550   /* The space for the struct itself lives on objfile_obstack,
2551      so we don't free it here.  */
2552 }
2553
2554 /* Create a quick_file_names hash table.  */
2555
2556 static htab_t
2557 create_quick_file_names_table (unsigned int nr_initial_entries)
2558 {
2559   return htab_create_alloc (nr_initial_entries,
2560                             hash_file_name_entry, eq_file_name_entry,
2561                             delete_file_name_entry, xcalloc, xfree);
2562 }
2563
2564 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2565    have to be created afterwards.  You should call age_cached_comp_units after
2566    processing PER_CU->CU.  dw2_setup must have been already called.  */
2567
2568 static void
2569 load_cu (struct dwarf2_per_cu_data *per_cu)
2570 {
2571   if (per_cu->is_debug_types)
2572     load_full_type_unit (per_cu);
2573   else
2574     load_full_comp_unit (per_cu, language_minimal);
2575
2576   gdb_assert (per_cu->cu != NULL);
2577
2578   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2579 }
2580
2581 /* Read in the symbols for PER_CU.  */
2582
2583 static void
2584 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
2585 {
2586   struct cleanup *back_to;
2587
2588   /* Skip type_unit_groups, reading the type units they contain
2589      is handled elsewhere.  */
2590   if (IS_TYPE_UNIT_GROUP (per_cu))
2591     return;
2592
2593   back_to = make_cleanup (dwarf2_release_queue, NULL);
2594
2595   if (dwarf2_per_objfile->using_index
2596       ? per_cu->v.quick->symtab == NULL
2597       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2598     {
2599       queue_comp_unit (per_cu, language_minimal);
2600       load_cu (per_cu);
2601
2602       /* If we just loaded a CU from a DWO, and we're working with an index
2603          that may badly handle TUs, load all the TUs in that DWO as well.
2604          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
2605       if (!per_cu->is_debug_types
2606           && per_cu->cu->dwo_unit != NULL
2607           && dwarf2_per_objfile->index_table != NULL
2608           && dwarf2_per_objfile->index_table->version <= 7
2609           /* DWP files aren't supported yet.  */
2610           && get_dwp_file () == NULL)
2611         queue_and_load_all_dwo_tus (per_cu);
2612     }
2613
2614   process_queue ();
2615
2616   /* Age the cache, releasing compilation units that have not
2617      been used recently.  */
2618   age_cached_comp_units ();
2619
2620   do_cleanups (back_to);
2621 }
2622
2623 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2624    the objfile from which this CU came.  Returns the resulting symbol
2625    table.  */
2626
2627 static struct symtab *
2628 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
2629 {
2630   gdb_assert (dwarf2_per_objfile->using_index);
2631   if (!per_cu->v.quick->symtab)
2632     {
2633       struct cleanup *back_to = make_cleanup (free_cached_comp_units, NULL);
2634       increment_reading_symtab ();
2635       dw2_do_instantiate_symtab (per_cu);
2636       process_cu_includes ();
2637       do_cleanups (back_to);
2638     }
2639   return per_cu->v.quick->symtab;
2640 }
2641
2642 /* Return the CU given its index.
2643
2644    This is intended for loops like:
2645
2646    for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2647                     + dwarf2_per_objfile->n_type_units); ++i)
2648      {
2649        struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
2650
2651        ...;
2652      }
2653 */
2654
2655 static struct dwarf2_per_cu_data *
2656 dw2_get_cu (int index)
2657 {
2658   if (index >= dwarf2_per_objfile->n_comp_units)
2659     {
2660       index -= dwarf2_per_objfile->n_comp_units;
2661       gdb_assert (index < dwarf2_per_objfile->n_type_units);
2662       return &dwarf2_per_objfile->all_type_units[index]->per_cu;
2663     }
2664
2665   return dwarf2_per_objfile->all_comp_units[index];
2666 }
2667
2668 /* Return the primary CU given its index.
2669    The difference between this function and dw2_get_cu is in the handling
2670    of type units (TUs).  Here we return the type_unit_group object.
2671
2672    This is intended for loops like:
2673
2674    for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2675                     + dwarf2_per_objfile->n_type_unit_groups); ++i)
2676      {
2677        struct dwarf2_per_cu_data *per_cu = dw2_get_primary_cu (i);
2678
2679        ...;
2680      }
2681 */
2682
2683 static struct dwarf2_per_cu_data *
2684 dw2_get_primary_cu (int index)
2685 {
2686   if (index >= dwarf2_per_objfile->n_comp_units)
2687     {
2688       index -= dwarf2_per_objfile->n_comp_units;
2689       gdb_assert (index < dwarf2_per_objfile->n_type_unit_groups);
2690       return &dwarf2_per_objfile->all_type_unit_groups[index]->per_cu;
2691     }
2692
2693   return dwarf2_per_objfile->all_comp_units[index];
2694 }
2695
2696 /* A helper for create_cus_from_index that handles a given list of
2697    CUs.  */
2698
2699 static void
2700 create_cus_from_index_list (struct objfile *objfile,
2701                             const gdb_byte *cu_list, offset_type n_elements,
2702                             struct dwarf2_section_info *section,
2703                             int is_dwz,
2704                             int base_offset)
2705 {
2706   offset_type i;
2707
2708   for (i = 0; i < n_elements; i += 2)
2709     {
2710       struct dwarf2_per_cu_data *the_cu;
2711       ULONGEST offset, length;
2712
2713       gdb_static_assert (sizeof (ULONGEST) >= 8);
2714       offset = extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2715       length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2716       cu_list += 2 * 8;
2717
2718       the_cu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2719                                struct dwarf2_per_cu_data);
2720       the_cu->offset.sect_off = offset;
2721       the_cu->length = length;
2722       the_cu->objfile = objfile;
2723       the_cu->section = section;
2724       the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2725                                         struct dwarf2_per_cu_quick_data);
2726       the_cu->is_dwz = is_dwz;
2727       dwarf2_per_objfile->all_comp_units[base_offset + i / 2] = the_cu;
2728     }
2729 }
2730
2731 /* Read the CU list from the mapped index, and use it to create all
2732    the CU objects for this objfile.  */
2733
2734 static void
2735 create_cus_from_index (struct objfile *objfile,
2736                        const gdb_byte *cu_list, offset_type cu_list_elements,
2737                        const gdb_byte *dwz_list, offset_type dwz_elements)
2738 {
2739   struct dwz_file *dwz;
2740
2741   dwarf2_per_objfile->n_comp_units = (cu_list_elements + dwz_elements) / 2;
2742   dwarf2_per_objfile->all_comp_units
2743     = obstack_alloc (&objfile->objfile_obstack,
2744                      dwarf2_per_objfile->n_comp_units
2745                      * sizeof (struct dwarf2_per_cu_data *));
2746
2747   create_cus_from_index_list (objfile, cu_list, cu_list_elements,
2748                               &dwarf2_per_objfile->info, 0, 0);
2749
2750   if (dwz_elements == 0)
2751     return;
2752
2753   dwz = dwarf2_get_dwz_file ();
2754   create_cus_from_index_list (objfile, dwz_list, dwz_elements, &dwz->info, 1,
2755                               cu_list_elements / 2);
2756 }
2757
2758 /* Create the signatured type hash table from the index.  */
2759
2760 static void
2761 create_signatured_type_table_from_index (struct objfile *objfile,
2762                                          struct dwarf2_section_info *section,
2763                                          const gdb_byte *bytes,
2764                                          offset_type elements)
2765 {
2766   offset_type i;
2767   htab_t sig_types_hash;
2768
2769   dwarf2_per_objfile->n_type_units = elements / 3;
2770   dwarf2_per_objfile->all_type_units
2771     = xmalloc (dwarf2_per_objfile->n_type_units
2772                * sizeof (struct signatured_type *));
2773
2774   sig_types_hash = allocate_signatured_type_table (objfile);
2775
2776   for (i = 0; i < elements; i += 3)
2777     {
2778       struct signatured_type *sig_type;
2779       ULONGEST offset, type_offset_in_tu, signature;
2780       void **slot;
2781
2782       gdb_static_assert (sizeof (ULONGEST) >= 8);
2783       offset = extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
2784       type_offset_in_tu = extract_unsigned_integer (bytes + 8, 8,
2785                                                     BFD_ENDIAN_LITTLE);
2786       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
2787       bytes += 3 * 8;
2788
2789       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2790                                  struct signatured_type);
2791       sig_type->signature = signature;
2792       sig_type->type_offset_in_tu.cu_off = type_offset_in_tu;
2793       sig_type->per_cu.is_debug_types = 1;
2794       sig_type->per_cu.section = section;
2795       sig_type->per_cu.offset.sect_off = offset;
2796       sig_type->per_cu.objfile = objfile;
2797       sig_type->per_cu.v.quick
2798         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2799                           struct dwarf2_per_cu_quick_data);
2800
2801       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
2802       *slot = sig_type;
2803
2804       dwarf2_per_objfile->all_type_units[i / 3] = sig_type;
2805     }
2806
2807   dwarf2_per_objfile->signatured_types = sig_types_hash;
2808 }
2809
2810 /* Read the address map data from the mapped index, and use it to
2811    populate the objfile's psymtabs_addrmap.  */
2812
2813 static void
2814 create_addrmap_from_index (struct objfile *objfile, struct mapped_index *index)
2815 {
2816   const gdb_byte *iter, *end;
2817   struct obstack temp_obstack;
2818   struct addrmap *mutable_map;
2819   struct cleanup *cleanup;
2820   CORE_ADDR baseaddr;
2821
2822   obstack_init (&temp_obstack);
2823   cleanup = make_cleanup_obstack_free (&temp_obstack);
2824   mutable_map = addrmap_create_mutable (&temp_obstack);
2825
2826   iter = index->address_table;
2827   end = iter + index->address_table_size;
2828
2829   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
2830
2831   while (iter < end)
2832     {
2833       ULONGEST hi, lo, cu_index;
2834       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2835       iter += 8;
2836       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2837       iter += 8;
2838       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
2839       iter += 4;
2840
2841       if (lo > hi)
2842         {
2843           complaint (&symfile_complaints,
2844                      _(".gdb_index address table has invalid range (%s - %s)"),
2845                      hex_string (lo), hex_string (hi));
2846           continue;
2847         }
2848
2849       if (cu_index >= dwarf2_per_objfile->n_comp_units)
2850         {
2851           complaint (&symfile_complaints,
2852                      _(".gdb_index address table has invalid CU number %u"),
2853                      (unsigned) cu_index);
2854           continue;
2855         }
2856
2857       addrmap_set_empty (mutable_map, lo + baseaddr, hi + baseaddr - 1,
2858                          dw2_get_cu (cu_index));
2859     }
2860
2861   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
2862                                                     &objfile->objfile_obstack);
2863   do_cleanups (cleanup);
2864 }
2865
2866 /* The hash function for strings in the mapped index.  This is the same as
2867    SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
2868    implementation.  This is necessary because the hash function is tied to the
2869    format of the mapped index file.  The hash values do not have to match with
2870    SYMBOL_HASH_NEXT.
2871    
2872    Use INT_MAX for INDEX_VERSION if you generate the current index format.  */
2873
2874 static hashval_t
2875 mapped_index_string_hash (int index_version, const void *p)
2876 {
2877   const unsigned char *str = (const unsigned char *) p;
2878   hashval_t r = 0;
2879   unsigned char c;
2880
2881   while ((c = *str++) != 0)
2882     {
2883       if (index_version >= 5)
2884         c = tolower (c);
2885       r = r * 67 + c - 113;
2886     }
2887
2888   return r;
2889 }
2890
2891 /* Find a slot in the mapped index INDEX for the object named NAME.
2892    If NAME is found, set *VEC_OUT to point to the CU vector in the
2893    constant pool and return 1.  If NAME cannot be found, return 0.  */
2894
2895 static int
2896 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
2897                           offset_type **vec_out)
2898 {
2899   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2900   offset_type hash;
2901   offset_type slot, step;
2902   int (*cmp) (const char *, const char *);
2903
2904   if (current_language->la_language == language_cplus
2905       || current_language->la_language == language_java
2906       || current_language->la_language == language_fortran)
2907     {
2908       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
2909          not contain any.  */
2910       const char *paren = strchr (name, '(');
2911
2912       if (paren)
2913         {
2914           char *dup;
2915
2916           dup = xmalloc (paren - name + 1);
2917           memcpy (dup, name, paren - name);
2918           dup[paren - name] = 0;
2919
2920           make_cleanup (xfree, dup);
2921           name = dup;
2922         }
2923     }
2924
2925   /* Index version 4 did not support case insensitive searches.  But the
2926      indices for case insensitive languages are built in lowercase, therefore
2927      simulate our NAME being searched is also lowercased.  */
2928   hash = mapped_index_string_hash ((index->version == 4
2929                                     && case_sensitivity == case_sensitive_off
2930                                     ? 5 : index->version),
2931                                    name);
2932
2933   slot = hash & (index->symbol_table_slots - 1);
2934   step = ((hash * 17) & (index->symbol_table_slots - 1)) | 1;
2935   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
2936
2937   for (;;)
2938     {
2939       /* Convert a slot number to an offset into the table.  */
2940       offset_type i = 2 * slot;
2941       const char *str;
2942       if (index->symbol_table[i] == 0 && index->symbol_table[i + 1] == 0)
2943         {
2944           do_cleanups (back_to);
2945           return 0;
2946         }
2947
2948       str = index->constant_pool + MAYBE_SWAP (index->symbol_table[i]);
2949       if (!cmp (name, str))
2950         {
2951           *vec_out = (offset_type *) (index->constant_pool
2952                                       + MAYBE_SWAP (index->symbol_table[i + 1]));
2953           do_cleanups (back_to);
2954           return 1;
2955         }
2956
2957       slot = (slot + step) & (index->symbol_table_slots - 1);
2958     }
2959 }
2960
2961 /* A helper function that reads the .gdb_index from SECTION and fills
2962    in MAP.  FILENAME is the name of the file containing the section;
2963    it is used for error reporting.  DEPRECATED_OK is nonzero if it is
2964    ok to use deprecated sections.
2965
2966    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
2967    out parameters that are filled in with information about the CU and
2968    TU lists in the section.
2969
2970    Returns 1 if all went well, 0 otherwise.  */
2971
2972 static int
2973 read_index_from_section (struct objfile *objfile,
2974                          const char *filename,
2975                          int deprecated_ok,
2976                          struct dwarf2_section_info *section,
2977                          struct mapped_index *map,
2978                          const gdb_byte **cu_list,
2979                          offset_type *cu_list_elements,
2980                          const gdb_byte **types_list,
2981                          offset_type *types_list_elements)
2982 {
2983   const gdb_byte *addr;
2984   offset_type version;
2985   offset_type *metadata;
2986   int i;
2987
2988   if (dwarf2_section_empty_p (section))
2989     return 0;
2990
2991   /* Older elfutils strip versions could keep the section in the main
2992      executable while splitting it for the separate debug info file.  */
2993   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
2994     return 0;
2995
2996   dwarf2_read_section (objfile, section);
2997
2998   addr = section->buffer;
2999   /* Version check.  */
3000   version = MAYBE_SWAP (*(offset_type *) addr);
3001   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3002      causes the index to behave very poorly for certain requests.  Version 3
3003      contained incomplete addrmap.  So, it seems better to just ignore such
3004      indices.  */
3005   if (version < 4)
3006     {
3007       static int warning_printed = 0;
3008       if (!warning_printed)
3009         {
3010           warning (_("Skipping obsolete .gdb_index section in %s."),
3011                    filename);
3012           warning_printed = 1;
3013         }
3014       return 0;
3015     }
3016   /* Index version 4 uses a different hash function than index version
3017      5 and later.
3018
3019      Versions earlier than 6 did not emit psymbols for inlined
3020      functions.  Using these files will cause GDB not to be able to
3021      set breakpoints on inlined functions by name, so we ignore these
3022      indices unless the user has done
3023      "set use-deprecated-index-sections on".  */
3024   if (version < 6 && !deprecated_ok)
3025     {
3026       static int warning_printed = 0;
3027       if (!warning_printed)
3028         {
3029           warning (_("\
3030 Skipping deprecated .gdb_index section in %s.\n\
3031 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3032 to use the section anyway."),
3033                    filename);
3034           warning_printed = 1;
3035         }
3036       return 0;
3037     }
3038   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3039      of the TU (for symbols coming from TUs),
3040      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3041      Plus gold-generated indices can have duplicate entries for global symbols,
3042      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3043      These are just performance bugs, and we can't distinguish gdb-generated
3044      indices from gold-generated ones, so issue no warning here.  */
3045
3046   /* Indexes with higher version than the one supported by GDB may be no
3047      longer backward compatible.  */
3048   if (version > 8)
3049     return 0;
3050
3051   map->version = version;
3052   map->total_size = section->size;
3053
3054   metadata = (offset_type *) (addr + sizeof (offset_type));
3055
3056   i = 0;
3057   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3058   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3059                        / 8);
3060   ++i;
3061
3062   *types_list = addr + MAYBE_SWAP (metadata[i]);
3063   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3064                            - MAYBE_SWAP (metadata[i]))
3065                           / 8);
3066   ++i;
3067
3068   map->address_table = addr + MAYBE_SWAP (metadata[i]);
3069   map->address_table_size = (MAYBE_SWAP (metadata[i + 1])
3070                              - MAYBE_SWAP (metadata[i]));
3071   ++i;
3072
3073   map->symbol_table = (offset_type *) (addr + MAYBE_SWAP (metadata[i]));
3074   map->symbol_table_slots = ((MAYBE_SWAP (metadata[i + 1])
3075                               - MAYBE_SWAP (metadata[i]))
3076                              / (2 * sizeof (offset_type)));
3077   ++i;
3078
3079   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3080
3081   return 1;
3082 }
3083
3084
3085 /* Read the index file.  If everything went ok, initialize the "quick"
3086    elements of all the CUs and return 1.  Otherwise, return 0.  */
3087
3088 static int
3089 dwarf2_read_index (struct objfile *objfile)
3090 {
3091   struct mapped_index local_map, *map;
3092   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3093   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3094   struct dwz_file *dwz;
3095
3096   if (!read_index_from_section (objfile, objfile_name (objfile),
3097                                 use_deprecated_index_sections,
3098                                 &dwarf2_per_objfile->gdb_index, &local_map,
3099                                 &cu_list, &cu_list_elements,
3100                                 &types_list, &types_list_elements))
3101     return 0;
3102
3103   /* Don't use the index if it's empty.  */
3104   if (local_map.symbol_table_slots == 0)
3105     return 0;
3106
3107   /* If there is a .dwz file, read it so we can get its CU list as
3108      well.  */
3109   dwz = dwarf2_get_dwz_file ();
3110   if (dwz != NULL)
3111     {
3112       struct mapped_index dwz_map;
3113       const gdb_byte *dwz_types_ignore;
3114       offset_type dwz_types_elements_ignore;
3115
3116       if (!read_index_from_section (objfile, bfd_get_filename (dwz->dwz_bfd),
3117                                     1,
3118                                     &dwz->gdb_index, &dwz_map,
3119                                     &dwz_list, &dwz_list_elements,
3120                                     &dwz_types_ignore,
3121                                     &dwz_types_elements_ignore))
3122         {
3123           warning (_("could not read '.gdb_index' section from %s; skipping"),
3124                    bfd_get_filename (dwz->dwz_bfd));
3125           return 0;
3126         }
3127     }
3128
3129   create_cus_from_index (objfile, cu_list, cu_list_elements, dwz_list,
3130                          dwz_list_elements);
3131
3132   if (types_list_elements)
3133     {
3134       struct dwarf2_section_info *section;
3135
3136       /* We can only handle a single .debug_types when we have an
3137          index.  */
3138       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3139         return 0;
3140
3141       section = VEC_index (dwarf2_section_info_def,
3142                            dwarf2_per_objfile->types, 0);
3143
3144       create_signatured_type_table_from_index (objfile, section, types_list,
3145                                                types_list_elements);
3146     }
3147
3148   create_addrmap_from_index (objfile, &local_map);
3149
3150   map = obstack_alloc (&objfile->objfile_obstack, sizeof (struct mapped_index));
3151   *map = local_map;
3152
3153   dwarf2_per_objfile->index_table = map;
3154   dwarf2_per_objfile->using_index = 1;
3155   dwarf2_per_objfile->quick_file_names_table =
3156     create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
3157
3158   return 1;
3159 }
3160
3161 /* A helper for the "quick" functions which sets the global
3162    dwarf2_per_objfile according to OBJFILE.  */
3163
3164 static void
3165 dw2_setup (struct objfile *objfile)
3166 {
3167   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
3168   gdb_assert (dwarf2_per_objfile);
3169 }
3170
3171 /* die_reader_func for dw2_get_file_names.  */
3172
3173 static void
3174 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3175                            const gdb_byte *info_ptr,
3176                            struct die_info *comp_unit_die,
3177                            int has_children,
3178                            void *data)
3179 {
3180   struct dwarf2_cu *cu = reader->cu;
3181   struct dwarf2_per_cu_data *this_cu = cu->per_cu;  
3182   struct objfile *objfile = dwarf2_per_objfile->objfile;
3183   struct dwarf2_per_cu_data *lh_cu;
3184   struct line_header *lh;
3185   struct attribute *attr;
3186   int i;
3187   const char *name, *comp_dir;
3188   void **slot;
3189   struct quick_file_names *qfn;
3190   unsigned int line_offset;
3191
3192   gdb_assert (! this_cu->is_debug_types);
3193
3194   /* Our callers never want to match partial units -- instead they
3195      will match the enclosing full CU.  */
3196   if (comp_unit_die->tag == DW_TAG_partial_unit)
3197     {
3198       this_cu->v.quick->no_file_data = 1;
3199       return;
3200     }
3201
3202   lh_cu = this_cu;
3203   lh = NULL;
3204   slot = NULL;
3205   line_offset = 0;
3206
3207   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3208   if (attr)
3209     {
3210       struct quick_file_names find_entry;
3211
3212       line_offset = DW_UNSND (attr);
3213
3214       /* We may have already read in this line header (TU line header sharing).
3215          If we have we're done.  */
3216       find_entry.hash.dwo_unit = cu->dwo_unit;
3217       find_entry.hash.line_offset.sect_off = line_offset;
3218       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3219                              &find_entry, INSERT);
3220       if (*slot != NULL)
3221         {
3222           lh_cu->v.quick->file_names = *slot;
3223           return;
3224         }
3225
3226       lh = dwarf_decode_line_header (line_offset, cu);
3227     }
3228   if (lh == NULL)
3229     {
3230       lh_cu->v.quick->no_file_data = 1;
3231       return;
3232     }
3233
3234   qfn = obstack_alloc (&objfile->objfile_obstack, sizeof (*qfn));
3235   qfn->hash.dwo_unit = cu->dwo_unit;
3236   qfn->hash.line_offset.sect_off = line_offset;
3237   gdb_assert (slot != NULL);
3238   *slot = qfn;
3239
3240   find_file_and_directory (comp_unit_die, cu, &name, &comp_dir);
3241
3242   qfn->num_file_names = lh->num_file_names;
3243   qfn->file_names = obstack_alloc (&objfile->objfile_obstack,
3244                                    lh->num_file_names * sizeof (char *));
3245   for (i = 0; i < lh->num_file_names; ++i)
3246     qfn->file_names[i] = file_full_name (i + 1, lh, comp_dir);
3247   qfn->real_names = NULL;
3248
3249   free_line_header (lh);
3250
3251   lh_cu->v.quick->file_names = qfn;
3252 }
3253
3254 /* A helper for the "quick" functions which attempts to read the line
3255    table for THIS_CU.  */
3256
3257 static struct quick_file_names *
3258 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3259 {
3260   /* This should never be called for TUs.  */
3261   gdb_assert (! this_cu->is_debug_types);
3262   /* Nor type unit groups.  */
3263   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3264
3265   if (this_cu->v.quick->file_names != NULL)
3266     return this_cu->v.quick->file_names;
3267   /* If we know there is no line data, no point in looking again.  */
3268   if (this_cu->v.quick->no_file_data)
3269     return NULL;
3270
3271   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3272
3273   if (this_cu->v.quick->no_file_data)
3274     return NULL;
3275   return this_cu->v.quick->file_names;
3276 }
3277
3278 /* A helper for the "quick" functions which computes and caches the
3279    real path for a given file name from the line table.  */
3280
3281 static const char *
3282 dw2_get_real_path (struct objfile *objfile,
3283                    struct quick_file_names *qfn, int index)
3284 {
3285   if (qfn->real_names == NULL)
3286     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3287                                       qfn->num_file_names, char *);
3288
3289   if (qfn->real_names[index] == NULL)
3290     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]);
3291
3292   return qfn->real_names[index];
3293 }
3294
3295 static struct symtab *
3296 dw2_find_last_source_symtab (struct objfile *objfile)
3297 {
3298   int index;
3299
3300   dw2_setup (objfile);
3301   index = dwarf2_per_objfile->n_comp_units - 1;
3302   return dw2_instantiate_symtab (dw2_get_cu (index));
3303 }
3304
3305 /* Traversal function for dw2_forget_cached_source_info.  */
3306
3307 static int
3308 dw2_free_cached_file_names (void **slot, void *info)
3309 {
3310   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3311
3312   if (file_data->real_names)
3313     {
3314       int i;
3315
3316       for (i = 0; i < file_data->num_file_names; ++i)
3317         {
3318           xfree ((void*) file_data->real_names[i]);
3319           file_data->real_names[i] = NULL;
3320         }
3321     }
3322
3323   return 1;
3324 }
3325
3326 static void
3327 dw2_forget_cached_source_info (struct objfile *objfile)
3328 {
3329   dw2_setup (objfile);
3330
3331   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3332                           dw2_free_cached_file_names, NULL);
3333 }
3334
3335 /* Helper function for dw2_map_symtabs_matching_filename that expands
3336    the symtabs and calls the iterator.  */
3337
3338 static int
3339 dw2_map_expand_apply (struct objfile *objfile,
3340                       struct dwarf2_per_cu_data *per_cu,
3341                       const char *name, const char *real_path,
3342                       int (*callback) (struct symtab *, void *),
3343                       void *data)
3344 {
3345   struct symtab *last_made = objfile->symtabs;
3346
3347   /* Don't visit already-expanded CUs.  */
3348   if (per_cu->v.quick->symtab)
3349     return 0;
3350
3351   /* This may expand more than one symtab, and we want to iterate over
3352      all of them.  */
3353   dw2_instantiate_symtab (per_cu);
3354
3355   return iterate_over_some_symtabs (name, real_path, callback, data,
3356                                     objfile->symtabs, last_made);
3357 }
3358
3359 /* Implementation of the map_symtabs_matching_filename method.  */
3360
3361 static int
3362 dw2_map_symtabs_matching_filename (struct objfile *objfile, const char *name,
3363                                    const char *real_path,
3364                                    int (*callback) (struct symtab *, void *),
3365                                    void *data)
3366 {
3367   int i;
3368   const char *name_basename = lbasename (name);
3369
3370   dw2_setup (objfile);
3371
3372   /* The rule is CUs specify all the files, including those used by
3373      any TU, so there's no need to scan TUs here.  */
3374
3375   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3376     {
3377       int j;
3378       struct dwarf2_per_cu_data *per_cu = dw2_get_primary_cu (i);
3379       struct quick_file_names *file_data;
3380
3381       /* We only need to look at symtabs not already expanded.  */
3382       if (per_cu->v.quick->symtab)
3383         continue;
3384
3385       file_data = dw2_get_file_names (per_cu);
3386       if (file_data == NULL)
3387         continue;
3388
3389       for (j = 0; j < file_data->num_file_names; ++j)
3390         {
3391           const char *this_name = file_data->file_names[j];
3392           const char *this_real_name;
3393
3394           if (compare_filenames_for_search (this_name, name))
3395             {
3396               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3397                                         callback, data))
3398                 return 1;
3399               continue;
3400             }
3401
3402           /* Before we invoke realpath, which can get expensive when many
3403              files are involved, do a quick comparison of the basenames.  */
3404           if (! basenames_may_differ
3405               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3406             continue;
3407
3408           this_real_name = dw2_get_real_path (objfile, file_data, j);
3409           if (compare_filenames_for_search (this_real_name, name))
3410             {
3411               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3412                                         callback, data))
3413                 return 1;
3414               continue;
3415             }
3416
3417           if (real_path != NULL)
3418             {
3419               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3420               gdb_assert (IS_ABSOLUTE_PATH (name));
3421               if (this_real_name != NULL
3422                   && FILENAME_CMP (real_path, this_real_name) == 0)
3423                 {
3424                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3425                                             callback, data))
3426                     return 1;
3427                   continue;
3428                 }
3429             }
3430         }
3431     }
3432
3433   return 0;
3434 }
3435
3436 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3437
3438 struct dw2_symtab_iterator
3439 {
3440   /* The internalized form of .gdb_index.  */
3441   struct mapped_index *index;
3442   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
3443   int want_specific_block;
3444   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3445      Unused if !WANT_SPECIFIC_BLOCK.  */
3446   int block_index;
3447   /* The kind of symbol we're looking for.  */
3448   domain_enum domain;
3449   /* The list of CUs from the index entry of the symbol,
3450      or NULL if not found.  */
3451   offset_type *vec;
3452   /* The next element in VEC to look at.  */
3453   int next;
3454   /* The number of elements in VEC, or zero if there is no match.  */
3455   int length;
3456   /* Have we seen a global version of the symbol?
3457      If so we can ignore all further global instances.
3458      This is to work around gold/15646, inefficient gold-generated
3459      indices.  */
3460   int global_seen;
3461 };
3462
3463 /* Initialize the index symtab iterator ITER.
3464    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3465    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
3466
3467 static void
3468 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3469                       struct mapped_index *index,
3470                       int want_specific_block,
3471                       int block_index,
3472                       domain_enum domain,
3473                       const char *name)
3474 {
3475   iter->index = index;
3476   iter->want_specific_block = want_specific_block;
3477   iter->block_index = block_index;
3478   iter->domain = domain;
3479   iter->next = 0;
3480   iter->global_seen = 0;
3481
3482   if (find_slot_in_mapped_hash (index, name, &iter->vec))
3483     iter->length = MAYBE_SWAP (*iter->vec);
3484   else
3485     {
3486       iter->vec = NULL;
3487       iter->length = 0;
3488     }
3489 }
3490
3491 /* Return the next matching CU or NULL if there are no more.  */
3492
3493 static struct dwarf2_per_cu_data *
3494 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3495 {
3496   for ( ; iter->next < iter->length; ++iter->next)
3497     {
3498       offset_type cu_index_and_attrs =
3499         MAYBE_SWAP (iter->vec[iter->next + 1]);
3500       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3501       struct dwarf2_per_cu_data *per_cu;
3502       int want_static = iter->block_index != GLOBAL_BLOCK;
3503       /* This value is only valid for index versions >= 7.  */
3504       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3505       gdb_index_symbol_kind symbol_kind =
3506         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3507       /* Only check the symbol attributes if they're present.
3508          Indices prior to version 7 don't record them,
3509          and indices >= 7 may elide them for certain symbols
3510          (gold does this).  */
3511       int attrs_valid =
3512         (iter->index->version >= 7
3513          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3514
3515       /* Don't crash on bad data.  */
3516       if (cu_index >= (dwarf2_per_objfile->n_comp_units
3517                        + dwarf2_per_objfile->n_type_units))
3518         {
3519           complaint (&symfile_complaints,
3520                      _(".gdb_index entry has bad CU index"
3521                        " [in module %s]"),
3522                      objfile_name (dwarf2_per_objfile->objfile));
3523           continue;
3524         }
3525
3526       per_cu = dw2_get_cu (cu_index);
3527
3528       /* Skip if already read in.  */
3529       if (per_cu->v.quick->symtab)
3530         continue;
3531
3532       /* Check static vs global.  */
3533       if (attrs_valid)
3534         {
3535           if (iter->want_specific_block
3536               && want_static != is_static)
3537             continue;
3538           /* Work around gold/15646.  */
3539           if (!is_static && iter->global_seen)
3540             continue;
3541           if (!is_static)
3542             iter->global_seen = 1;
3543         }
3544
3545       /* Only check the symbol's kind if it has one.  */
3546       if (attrs_valid)
3547         {
3548           switch (iter->domain)
3549             {
3550             case VAR_DOMAIN:
3551               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
3552                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
3553                   /* Some types are also in VAR_DOMAIN.  */
3554                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3555                 continue;
3556               break;
3557             case STRUCT_DOMAIN:
3558               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3559                 continue;
3560               break;
3561             case LABEL_DOMAIN:
3562               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3563                 continue;
3564               break;
3565             default:
3566               break;
3567             }
3568         }
3569
3570       ++iter->next;
3571       return per_cu;
3572     }
3573
3574   return NULL;
3575 }
3576
3577 static struct symtab *
3578 dw2_lookup_symbol (struct objfile *objfile, int block_index,
3579                    const char *name, domain_enum domain)
3580 {
3581   struct symtab *stab_best = NULL;
3582   struct mapped_index *index;
3583
3584   dw2_setup (objfile);
3585
3586   index = dwarf2_per_objfile->index_table;
3587
3588   /* index is NULL if OBJF_READNOW.  */
3589   if (index)
3590     {
3591       struct dw2_symtab_iterator iter;
3592       struct dwarf2_per_cu_data *per_cu;
3593
3594       dw2_symtab_iter_init (&iter, index, 1, block_index, domain, name);
3595
3596       while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3597         {
3598           struct symbol *sym = NULL;
3599           struct symtab *stab = dw2_instantiate_symtab (per_cu);
3600
3601           /* Some caution must be observed with overloaded functions
3602              and methods, since the index will not contain any overload
3603              information (but NAME might contain it).  */
3604           if (stab->primary)
3605             {
3606               struct blockvector *bv = BLOCKVECTOR (stab);
3607               struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
3608
3609               sym = lookup_block_symbol (block, name, domain);
3610             }
3611
3612           if (sym && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
3613             {
3614               if (!TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
3615                 return stab;
3616
3617               stab_best = stab;
3618             }
3619
3620           /* Keep looking through other CUs.  */
3621         }
3622     }
3623
3624   return stab_best;
3625 }
3626
3627 static void
3628 dw2_print_stats (struct objfile *objfile)
3629 {
3630   int i, total, count;
3631
3632   dw2_setup (objfile);
3633   total = dwarf2_per_objfile->n_comp_units + dwarf2_per_objfile->n_type_units;
3634   count = 0;
3635   for (i = 0; i < total; ++i)
3636     {
3637       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3638
3639       if (!per_cu->v.quick->symtab)
3640         ++count;
3641     }
3642   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
3643   printf_filtered (_("  Number of unread CUs: %d\n"), count);
3644 }
3645
3646 /* This dumps minimal information about the index.
3647    It is called via "mt print objfiles".
3648    One use is to verify .gdb_index has been loaded by the
3649    gdb.dwarf2/gdb-index.exp testcase.  */
3650
3651 static void
3652 dw2_dump (struct objfile *objfile)
3653 {
3654   dw2_setup (objfile);
3655   gdb_assert (dwarf2_per_objfile->using_index);
3656   printf_filtered (".gdb_index:");
3657   if (dwarf2_per_objfile->index_table != NULL)
3658     {
3659       printf_filtered (" version %d\n",
3660                        dwarf2_per_objfile->index_table->version);
3661     }
3662   else
3663     printf_filtered (" faked for \"readnow\"\n");
3664   printf_filtered ("\n");
3665 }
3666
3667 static void
3668 dw2_relocate (struct objfile *objfile,
3669               const struct section_offsets *new_offsets,
3670               const struct section_offsets *delta)
3671 {
3672   /* There's nothing to relocate here.  */
3673 }
3674
3675 static void
3676 dw2_expand_symtabs_for_function (struct objfile *objfile,
3677                                  const char *func_name)
3678 {
3679   struct mapped_index *index;
3680
3681   dw2_setup (objfile);
3682
3683   index = dwarf2_per_objfile->index_table;
3684
3685   /* index is NULL if OBJF_READNOW.  */
3686   if (index)
3687     {
3688       struct dw2_symtab_iterator iter;
3689       struct dwarf2_per_cu_data *per_cu;
3690
3691       /* Note: It doesn't matter what we pass for block_index here.  */
3692       dw2_symtab_iter_init (&iter, index, 0, GLOBAL_BLOCK, VAR_DOMAIN,
3693                             func_name);
3694
3695       while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3696         dw2_instantiate_symtab (per_cu);
3697     }
3698 }
3699
3700 static void
3701 dw2_expand_all_symtabs (struct objfile *objfile)
3702 {
3703   int i;
3704
3705   dw2_setup (objfile);
3706
3707   for (i = 0; i < (dwarf2_per_objfile->n_comp_units
3708                    + dwarf2_per_objfile->n_type_units); ++i)
3709     {
3710       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3711
3712       dw2_instantiate_symtab (per_cu);
3713     }
3714 }
3715
3716 static void
3717 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
3718                                   const char *fullname)
3719 {
3720   int i;
3721
3722   dw2_setup (objfile);
3723
3724   /* We don't need to consider type units here.
3725      This is only called for examining code, e.g. expand_line_sal.
3726      There can be an order of magnitude (or more) more type units
3727      than comp units, and we avoid them if we can.  */
3728
3729   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3730     {
3731       int j;
3732       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3733       struct quick_file_names *file_data;
3734
3735       /* We only need to look at symtabs not already expanded.  */
3736       if (per_cu->v.quick->symtab)
3737         continue;
3738
3739       file_data = dw2_get_file_names (per_cu);
3740       if (file_data == NULL)
3741         continue;
3742
3743       for (j = 0; j < file_data->num_file_names; ++j)
3744         {
3745           const char *this_fullname = file_data->file_names[j];
3746
3747           if (filename_cmp (this_fullname, fullname) == 0)
3748             {
3749               dw2_instantiate_symtab (per_cu);
3750               break;
3751             }
3752         }
3753     }
3754 }
3755
3756 static void
3757 dw2_map_matching_symbols (struct objfile *objfile,
3758                           const char * name, domain_enum namespace,
3759                           int global,
3760                           int (*callback) (struct block *,
3761                                            struct symbol *, void *),
3762                           void *data, symbol_compare_ftype *match,
3763                           symbol_compare_ftype *ordered_compare)
3764 {
3765   /* Currently unimplemented; used for Ada.  The function can be called if the
3766      current language is Ada for a non-Ada objfile using GNU index.  As Ada
3767      does not look for non-Ada symbols this function should just return.  */
3768 }
3769
3770 static void
3771 dw2_expand_symtabs_matching
3772   (struct objfile *objfile,
3773    int (*file_matcher) (const char *, void *, int basenames),
3774    int (*name_matcher) (const char *, void *),
3775    enum search_domain kind,
3776    void *data)
3777 {
3778   int i;
3779   offset_type iter;
3780   struct mapped_index *index;
3781
3782   dw2_setup (objfile);
3783
3784   /* index_table is NULL if OBJF_READNOW.  */
3785   if (!dwarf2_per_objfile->index_table)
3786     return;
3787   index = dwarf2_per_objfile->index_table;
3788
3789   if (file_matcher != NULL)
3790     {
3791       struct cleanup *cleanup;
3792       htab_t visited_found, visited_not_found;
3793
3794       visited_found = htab_create_alloc (10,
3795                                          htab_hash_pointer, htab_eq_pointer,
3796                                          NULL, xcalloc, xfree);
3797       cleanup = make_cleanup_htab_delete (visited_found);
3798       visited_not_found = htab_create_alloc (10,
3799                                              htab_hash_pointer, htab_eq_pointer,
3800                                              NULL, xcalloc, xfree);
3801       make_cleanup_htab_delete (visited_not_found);
3802
3803       /* The rule is CUs specify all the files, including those used by
3804          any TU, so there's no need to scan TUs here.  */
3805
3806       for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3807         {
3808           int j;
3809           struct dwarf2_per_cu_data *per_cu = dw2_get_primary_cu (i);
3810           struct quick_file_names *file_data;
3811           void **slot;
3812
3813           per_cu->v.quick->mark = 0;
3814
3815           /* We only need to look at symtabs not already expanded.  */
3816           if (per_cu->v.quick->symtab)
3817             continue;
3818
3819           file_data = dw2_get_file_names (per_cu);
3820           if (file_data == NULL)
3821             continue;
3822
3823           if (htab_find (visited_not_found, file_data) != NULL)
3824             continue;
3825           else if (htab_find (visited_found, file_data) != NULL)
3826             {
3827               per_cu->v.quick->mark = 1;
3828               continue;
3829             }
3830
3831           for (j = 0; j < file_data->num_file_names; ++j)
3832             {
3833               const char *this_real_name;
3834
3835               if (file_matcher (file_data->file_names[j], data, 0))
3836                 {
3837                   per_cu->v.quick->mark = 1;
3838                   break;
3839                 }
3840
3841               /* Before we invoke realpath, which can get expensive when many
3842                  files are involved, do a quick comparison of the basenames.  */
3843               if (!basenames_may_differ
3844                   && !file_matcher (lbasename (file_data->file_names[j]),
3845                                     data, 1))
3846                 continue;
3847
3848               this_real_name = dw2_get_real_path (objfile, file_data, j);
3849               if (file_matcher (this_real_name, data, 0))
3850                 {
3851                   per_cu->v.quick->mark = 1;
3852                   break;
3853                 }
3854             }
3855
3856           slot = htab_find_slot (per_cu->v.quick->mark
3857                                  ? visited_found
3858                                  : visited_not_found,
3859                                  file_data, INSERT);
3860           *slot = file_data;
3861         }
3862
3863       do_cleanups (cleanup);
3864     }
3865
3866   for (iter = 0; iter < index->symbol_table_slots; ++iter)
3867     {
3868       offset_type idx = 2 * iter;
3869       const char *name;
3870       offset_type *vec, vec_len, vec_idx;
3871       int global_seen = 0;
3872
3873       if (index->symbol_table[idx] == 0 && index->symbol_table[idx + 1] == 0)
3874         continue;
3875
3876       name = index->constant_pool + MAYBE_SWAP (index->symbol_table[idx]);
3877
3878       if (! (*name_matcher) (name, data))
3879         continue;
3880
3881       /* The name was matched, now expand corresponding CUs that were
3882          marked.  */
3883       vec = (offset_type *) (index->constant_pool
3884                              + MAYBE_SWAP (index->symbol_table[idx + 1]));
3885       vec_len = MAYBE_SWAP (vec[0]);
3886       for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
3887         {
3888           struct dwarf2_per_cu_data *per_cu;
3889           offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
3890           /* This value is only valid for index versions >= 7.  */
3891           int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3892           gdb_index_symbol_kind symbol_kind =
3893             GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3894           int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3895           /* Only check the symbol attributes if they're present.
3896              Indices prior to version 7 don't record them,
3897              and indices >= 7 may elide them for certain symbols
3898              (gold does this).  */
3899           int attrs_valid =
3900             (index->version >= 7
3901              && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3902
3903           /* Work around gold/15646.  */
3904           if (attrs_valid)
3905             {
3906               if (!is_static && global_seen)
3907                 continue;
3908               if (!is_static)
3909                 global_seen = 1;
3910             }
3911
3912           /* Only check the symbol's kind if it has one.  */
3913           if (attrs_valid)
3914             {
3915               switch (kind)
3916                 {
3917                 case VARIABLES_DOMAIN:
3918                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
3919                     continue;
3920                   break;
3921                 case FUNCTIONS_DOMAIN:
3922                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
3923                     continue;
3924                   break;
3925                 case TYPES_DOMAIN:
3926                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3927                     continue;
3928                   break;
3929                 default:
3930                   break;
3931                 }
3932             }
3933
3934           /* Don't crash on bad data.  */
3935           if (cu_index >= (dwarf2_per_objfile->n_comp_units
3936                            + dwarf2_per_objfile->n_type_units))
3937             {
3938               complaint (&symfile_complaints,
3939                          _(".gdb_index entry has bad CU index"
3940                            " [in module %s]"), objfile_name (objfile));
3941               continue;
3942             }
3943
3944           per_cu = dw2_get_cu (cu_index);
3945           if (file_matcher == NULL || per_cu->v.quick->mark)
3946             dw2_instantiate_symtab (per_cu);
3947         }
3948     }
3949 }
3950
3951 /* A helper for dw2_find_pc_sect_symtab which finds the most specific
3952    symtab.  */
3953
3954 static struct symtab *
3955 recursively_find_pc_sect_symtab (struct symtab *symtab, CORE_ADDR pc)
3956 {
3957   int i;
3958
3959   if (BLOCKVECTOR (symtab) != NULL
3960       && blockvector_contains_pc (BLOCKVECTOR (symtab), pc))
3961     return symtab;
3962
3963   if (symtab->includes == NULL)
3964     return NULL;
3965
3966   for (i = 0; symtab->includes[i]; ++i)
3967     {
3968       struct symtab *s = symtab->includes[i];
3969
3970       s = recursively_find_pc_sect_symtab (s, pc);
3971       if (s != NULL)
3972         return s;
3973     }
3974
3975   return NULL;
3976 }
3977
3978 static struct symtab *
3979 dw2_find_pc_sect_symtab (struct objfile *objfile,
3980                          struct minimal_symbol *msymbol,
3981                          CORE_ADDR pc,
3982                          struct obj_section *section,
3983                          int warn_if_readin)
3984 {
3985   struct dwarf2_per_cu_data *data;
3986   struct symtab *result;
3987
3988   dw2_setup (objfile);
3989
3990   if (!objfile->psymtabs_addrmap)
3991     return NULL;
3992
3993   data = addrmap_find (objfile->psymtabs_addrmap, pc);
3994   if (!data)
3995     return NULL;
3996
3997   if (warn_if_readin && data->v.quick->symtab)
3998     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
3999              paddress (get_objfile_arch (objfile), pc));
4000
4001   result = recursively_find_pc_sect_symtab (dw2_instantiate_symtab (data), pc);
4002   gdb_assert (result != NULL);
4003   return result;
4004 }
4005
4006 static void
4007 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
4008                           void *data, int need_fullname)
4009 {
4010   int i;
4011   struct cleanup *cleanup;
4012   htab_t visited = htab_create_alloc (10, htab_hash_pointer, htab_eq_pointer,
4013                                       NULL, xcalloc, xfree);
4014
4015   cleanup = make_cleanup_htab_delete (visited);
4016   dw2_setup (objfile);
4017
4018   /* The rule is CUs specify all the files, including those used by
4019      any TU, so there's no need to scan TUs here.
4020      We can ignore file names coming from already-expanded CUs.  */
4021
4022   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
4023     {
4024       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
4025
4026       if (per_cu->v.quick->symtab)
4027         {
4028           void **slot = htab_find_slot (visited, per_cu->v.quick->file_names,
4029                                         INSERT);
4030
4031           *slot = per_cu->v.quick->file_names;
4032         }
4033     }
4034
4035   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
4036     {
4037       int j;
4038       struct dwarf2_per_cu_data *per_cu = dw2_get_primary_cu (i);
4039       struct quick_file_names *file_data;
4040       void **slot;
4041
4042       /* We only need to look at symtabs not already expanded.  */
4043       if (per_cu->v.quick->symtab)
4044         continue;
4045
4046       file_data = dw2_get_file_names (per_cu);
4047       if (file_data == NULL)
4048         continue;
4049
4050       slot = htab_find_slot (visited, file_data, INSERT);
4051       if (*slot)
4052         {
4053           /* Already visited.  */
4054           continue;
4055         }
4056       *slot = file_data;
4057
4058       for (j = 0; j < file_data->num_file_names; ++j)
4059         {
4060           const char *this_real_name;
4061
4062           if (need_fullname)
4063             this_real_name = dw2_get_real_path (objfile, file_data, j);
4064           else
4065             this_real_name = NULL;
4066           (*fun) (file_data->file_names[j], this_real_name, data);
4067         }
4068     }
4069
4070   do_cleanups (cleanup);
4071 }
4072
4073 static int
4074 dw2_has_symbols (struct objfile *objfile)
4075 {
4076   return 1;
4077 }
4078
4079 const struct quick_symbol_functions dwarf2_gdb_index_functions =
4080 {
4081   dw2_has_symbols,
4082   dw2_find_last_source_symtab,
4083   dw2_forget_cached_source_info,
4084   dw2_map_symtabs_matching_filename,
4085   dw2_lookup_symbol,
4086   dw2_print_stats,
4087   dw2_dump,
4088   dw2_relocate,
4089   dw2_expand_symtabs_for_function,
4090   dw2_expand_all_symtabs,
4091   dw2_expand_symtabs_with_fullname,
4092   dw2_map_matching_symbols,
4093   dw2_expand_symtabs_matching,
4094   dw2_find_pc_sect_symtab,
4095   dw2_map_symbol_filenames
4096 };
4097
4098 /* Initialize for reading DWARF for this objfile.  Return 0 if this
4099    file will use psymtabs, or 1 if using the GNU index.  */
4100
4101 int
4102 dwarf2_initialize_objfile (struct objfile *objfile)
4103 {
4104   /* If we're about to read full symbols, don't bother with the
4105      indices.  In this case we also don't care if some other debug
4106      format is making psymtabs, because they are all about to be
4107      expanded anyway.  */
4108   if ((objfile->flags & OBJF_READNOW))
4109     {
4110       int i;
4111
4112       dwarf2_per_objfile->using_index = 1;
4113       create_all_comp_units (objfile);
4114       create_all_type_units (objfile);
4115       dwarf2_per_objfile->quick_file_names_table =
4116         create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
4117
4118       for (i = 0; i < (dwarf2_per_objfile->n_comp_units
4119                        + dwarf2_per_objfile->n_type_units); ++i)
4120         {
4121           struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
4122
4123           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4124                                             struct dwarf2_per_cu_quick_data);
4125         }
4126
4127       /* Return 1 so that gdb sees the "quick" functions.  However,
4128          these functions will be no-ops because we will have expanded
4129          all symtabs.  */
4130       return 1;
4131     }
4132
4133   if (dwarf2_read_index (objfile))
4134     return 1;
4135
4136   return 0;
4137 }
4138
4139 \f
4140
4141 /* Build a partial symbol table.  */
4142
4143 void
4144 dwarf2_build_psymtabs (struct objfile *objfile)
4145 {
4146   volatile struct gdb_exception except;
4147
4148   if (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0)
4149     {
4150       init_psymbol_list (objfile, 1024);
4151     }
4152
4153   TRY_CATCH (except, RETURN_MASK_ERROR)
4154     {
4155       /* This isn't really ideal: all the data we allocate on the
4156          objfile's obstack is still uselessly kept around.  However,
4157          freeing it seems unsafe.  */
4158       struct cleanup *cleanups = make_cleanup_discard_psymtabs (objfile);
4159
4160       dwarf2_build_psymtabs_hard (objfile);
4161       discard_cleanups (cleanups);
4162     }
4163   if (except.reason < 0)
4164     exception_print (gdb_stderr, except);
4165 }
4166
4167 /* Return the total length of the CU described by HEADER.  */
4168
4169 static unsigned int
4170 get_cu_length (const struct comp_unit_head *header)
4171 {
4172   return header->initial_length_size + header->length;
4173 }
4174
4175 /* Return TRUE if OFFSET is within CU_HEADER.  */
4176
4177 static inline int
4178 offset_in_cu_p (const struct comp_unit_head *cu_header, sect_offset offset)
4179 {
4180   sect_offset bottom = { cu_header->offset.sect_off };
4181   sect_offset top = { cu_header->offset.sect_off + get_cu_length (cu_header) };
4182
4183   return (offset.sect_off >= bottom.sect_off && offset.sect_off < top.sect_off);
4184 }
4185
4186 /* Find the base address of the compilation unit for range lists and
4187    location lists.  It will normally be specified by DW_AT_low_pc.
4188    In DWARF-3 draft 4, the base address could be overridden by
4189    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
4190    compilation units with discontinuous ranges.  */
4191
4192 static void
4193 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
4194 {
4195   struct attribute *attr;
4196
4197   cu->base_known = 0;
4198   cu->base_address = 0;
4199
4200   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
4201   if (attr)
4202     {
4203       cu->base_address = DW_ADDR (attr);
4204       cu->base_known = 1;
4205     }
4206   else
4207     {
4208       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
4209       if (attr)
4210         {
4211           cu->base_address = DW_ADDR (attr);
4212           cu->base_known = 1;
4213         }
4214     }
4215 }
4216
4217 /* Read in the comp unit header information from the debug_info at info_ptr.
4218    NOTE: This leaves members offset, first_die_offset to be filled in
4219    by the caller.  */
4220
4221 static const gdb_byte *
4222 read_comp_unit_head (struct comp_unit_head *cu_header,
4223                      const gdb_byte *info_ptr, bfd *abfd)
4224 {
4225   int signed_addr;
4226   unsigned int bytes_read;
4227
4228   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
4229   cu_header->initial_length_size = bytes_read;
4230   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
4231   info_ptr += bytes_read;
4232   cu_header->version = read_2_bytes (abfd, info_ptr);
4233   info_ptr += 2;
4234   cu_header->abbrev_offset.sect_off = read_offset (abfd, info_ptr, cu_header,
4235                                              &bytes_read);
4236   info_ptr += bytes_read;
4237   cu_header->addr_size = read_1_byte (abfd, info_ptr);
4238   info_ptr += 1;
4239   signed_addr = bfd_get_sign_extend_vma (abfd);
4240   if (signed_addr < 0)
4241     internal_error (__FILE__, __LINE__,
4242                     _("read_comp_unit_head: dwarf from non elf file"));
4243   cu_header->signed_addr_p = signed_addr;
4244
4245   return info_ptr;
4246 }
4247
4248 /* Helper function that returns the proper abbrev section for
4249    THIS_CU.  */
4250
4251 static struct dwarf2_section_info *
4252 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
4253 {
4254   struct dwarf2_section_info *abbrev;
4255
4256   if (this_cu->is_dwz)
4257     abbrev = &dwarf2_get_dwz_file ()->abbrev;
4258   else
4259     abbrev = &dwarf2_per_objfile->abbrev;
4260
4261   return abbrev;
4262 }
4263
4264 /* Subroutine of read_and_check_comp_unit_head and
4265    read_and_check_type_unit_head to simplify them.
4266    Perform various error checking on the header.  */
4267
4268 static void
4269 error_check_comp_unit_head (struct comp_unit_head *header,
4270                             struct dwarf2_section_info *section,
4271                             struct dwarf2_section_info *abbrev_section)
4272 {
4273   bfd *abfd = get_section_bfd_owner (section);
4274   const char *filename = get_section_file_name (section);
4275
4276   if (header->version != 2 && header->version != 3 && header->version != 4)
4277     error (_("Dwarf Error: wrong version in compilation unit header "
4278            "(is %d, should be 2, 3, or 4) [in module %s]"), header->version,
4279            filename);
4280
4281   if (header->abbrev_offset.sect_off
4282       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
4283     error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
4284            "(offset 0x%lx + 6) [in module %s]"),
4285            (long) header->abbrev_offset.sect_off, (long) header->offset.sect_off,
4286            filename);
4287
4288   /* Cast to unsigned long to use 64-bit arithmetic when possible to
4289      avoid potential 32-bit overflow.  */
4290   if (((unsigned long) header->offset.sect_off + get_cu_length (header))
4291       > section->size)
4292     error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
4293            "(offset 0x%lx + 0) [in module %s]"),
4294            (long) header->length, (long) header->offset.sect_off,
4295            filename);
4296 }
4297
4298 /* Read in a CU/TU header and perform some basic error checking.
4299    The contents of the header are stored in HEADER.
4300    The result is a pointer to the start of the first DIE.  */
4301
4302 static const gdb_byte *
4303 read_and_check_comp_unit_head (struct comp_unit_head *header,
4304                                struct dwarf2_section_info *section,
4305                                struct dwarf2_section_info *abbrev_section,
4306                                const gdb_byte *info_ptr,
4307                                int is_debug_types_section)
4308 {
4309   const gdb_byte *beg_of_comp_unit = info_ptr;
4310   bfd *abfd = get_section_bfd_owner (section);
4311
4312   header->offset.sect_off = beg_of_comp_unit - section->buffer;
4313
4314   info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4315
4316   /* If we're reading a type unit, skip over the signature and
4317      type_offset fields.  */
4318   if (is_debug_types_section)
4319     info_ptr += 8 /*signature*/ + header->offset_size;
4320
4321   header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
4322
4323   error_check_comp_unit_head (header, section, abbrev_section);
4324
4325   return info_ptr;
4326 }
4327
4328 /* Read in the types comp unit header information from .debug_types entry at
4329    types_ptr.  The result is a pointer to one past the end of the header.  */
4330
4331 static const gdb_byte *
4332 read_and_check_type_unit_head (struct comp_unit_head *header,
4333                                struct dwarf2_section_info *section,
4334                                struct dwarf2_section_info *abbrev_section,
4335                                const gdb_byte *info_ptr,
4336                                ULONGEST *signature,
4337                                cu_offset *type_offset_in_tu)
4338 {
4339   const gdb_byte *beg_of_comp_unit = info_ptr;
4340   bfd *abfd = get_section_bfd_owner (section);
4341
4342   header->offset.sect_off = beg_of_comp_unit - section->buffer;
4343
4344   info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4345
4346   /* If we're reading a type unit, skip over the signature and
4347      type_offset fields.  */
4348   if (signature != NULL)
4349     *signature = read_8_bytes (abfd, info_ptr);
4350   info_ptr += 8;
4351   if (type_offset_in_tu != NULL)
4352     type_offset_in_tu->cu_off = read_offset_1 (abfd, info_ptr,
4353                                                header->offset_size);
4354   info_ptr += header->offset_size;
4355
4356   header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
4357
4358   error_check_comp_unit_head (header, section, abbrev_section);
4359
4360   return info_ptr;
4361 }
4362
4363 /* Fetch the abbreviation table offset from a comp or type unit header.  */
4364
4365 static sect_offset
4366 read_abbrev_offset (struct dwarf2_section_info *section,
4367                     sect_offset offset)
4368 {
4369   bfd *abfd = get_section_bfd_owner (section);
4370   const gdb_byte *info_ptr;
4371   unsigned int length, initial_length_size, offset_size;
4372   sect_offset abbrev_offset;
4373
4374   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
4375   info_ptr = section->buffer + offset.sect_off;
4376   length = read_initial_length (abfd, info_ptr, &initial_length_size);
4377   offset_size = initial_length_size == 4 ? 4 : 8;
4378   info_ptr += initial_length_size + 2 /*version*/;
4379   abbrev_offset.sect_off = read_offset_1 (abfd, info_ptr, offset_size);
4380   return abbrev_offset;
4381 }
4382
4383 /* Allocate a new partial symtab for file named NAME and mark this new
4384    partial symtab as being an include of PST.  */
4385
4386 static void
4387 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
4388                                struct objfile *objfile)
4389 {
4390   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
4391
4392   if (!IS_ABSOLUTE_PATH (subpst->filename))
4393     {
4394       /* It shares objfile->objfile_obstack.  */
4395       subpst->dirname = pst->dirname;
4396     }
4397
4398   subpst->section_offsets = pst->section_offsets;
4399   subpst->textlow = 0;
4400   subpst->texthigh = 0;
4401
4402   subpst->dependencies = (struct partial_symtab **)
4403     obstack_alloc (&objfile->objfile_obstack,
4404                    sizeof (struct partial_symtab *));
4405   subpst->dependencies[0] = pst;
4406   subpst->number_of_dependencies = 1;
4407
4408   subpst->globals_offset = 0;
4409   subpst->n_global_syms = 0;
4410   subpst->statics_offset = 0;
4411   subpst->n_static_syms = 0;
4412   subpst->symtab = NULL;
4413   subpst->read_symtab = pst->read_symtab;
4414   subpst->readin = 0;
4415
4416   /* No private part is necessary for include psymtabs.  This property
4417      can be used to differentiate between such include psymtabs and
4418      the regular ones.  */
4419   subpst->read_symtab_private = NULL;
4420 }
4421
4422 /* Read the Line Number Program data and extract the list of files
4423    included by the source file represented by PST.  Build an include
4424    partial symtab for each of these included files.  */
4425
4426 static void
4427 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
4428                                struct die_info *die,
4429                                struct partial_symtab *pst)
4430 {
4431   struct line_header *lh = NULL;
4432   struct attribute *attr;
4433
4434   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
4435   if (attr)
4436     lh = dwarf_decode_line_header (DW_UNSND (attr), cu);
4437   if (lh == NULL)
4438     return;  /* No linetable, so no includes.  */
4439
4440   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  */
4441   dwarf_decode_lines (lh, pst->dirname, cu, pst, 1);
4442
4443   free_line_header (lh);
4444 }
4445
4446 static hashval_t
4447 hash_signatured_type (const void *item)
4448 {
4449   const struct signatured_type *sig_type = item;
4450
4451   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
4452   return sig_type->signature;
4453 }
4454
4455 static int
4456 eq_signatured_type (const void *item_lhs, const void *item_rhs)
4457 {
4458   const struct signatured_type *lhs = item_lhs;
4459   const struct signatured_type *rhs = item_rhs;
4460
4461   return lhs->signature == rhs->signature;
4462 }
4463
4464 /* Allocate a hash table for signatured types.  */
4465
4466 static htab_t
4467 allocate_signatured_type_table (struct objfile *objfile)
4468 {
4469   return htab_create_alloc_ex (41,
4470                                hash_signatured_type,
4471                                eq_signatured_type,
4472                                NULL,
4473                                &objfile->objfile_obstack,
4474                                hashtab_obstack_allocate,
4475                                dummy_obstack_deallocate);
4476 }
4477
4478 /* A helper function to add a signatured type CU to a table.  */
4479
4480 static int
4481 add_signatured_type_cu_to_table (void **slot, void *datum)
4482 {
4483   struct signatured_type *sigt = *slot;
4484   struct signatured_type ***datap = datum;
4485
4486   **datap = sigt;
4487   ++*datap;
4488
4489   return 1;
4490 }
4491
4492 /* Create the hash table of all entries in the .debug_types
4493    (or .debug_types.dwo) section(s).
4494    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
4495    otherwise it is NULL.
4496
4497    The result is a pointer to the hash table or NULL if there are no types.
4498
4499    Note: This function processes DWO files only, not DWP files.  */
4500
4501 static htab_t
4502 create_debug_types_hash_table (struct dwo_file *dwo_file,
4503                                VEC (dwarf2_section_info_def) *types)
4504 {
4505   struct objfile *objfile = dwarf2_per_objfile->objfile;
4506   htab_t types_htab = NULL;
4507   int ix;
4508   struct dwarf2_section_info *section;
4509   struct dwarf2_section_info *abbrev_section;
4510
4511   if (VEC_empty (dwarf2_section_info_def, types))
4512     return NULL;
4513
4514   abbrev_section = (dwo_file != NULL
4515                     ? &dwo_file->sections.abbrev
4516                     : &dwarf2_per_objfile->abbrev);
4517
4518   if (dwarf2_read_debug)
4519     fprintf_unfiltered (gdb_stdlog, "Reading .debug_types%s for %s:\n",
4520                         dwo_file ? ".dwo" : "",
4521                         get_section_file_name (abbrev_section));
4522
4523   for (ix = 0;
4524        VEC_iterate (dwarf2_section_info_def, types, ix, section);
4525        ++ix)
4526     {
4527       bfd *abfd;
4528       const gdb_byte *info_ptr, *end_ptr;
4529
4530       dwarf2_read_section (objfile, section);
4531       info_ptr = section->buffer;
4532
4533       if (info_ptr == NULL)
4534         continue;
4535
4536       /* We can't set abfd until now because the section may be empty or
4537          not present, in which case the bfd is unknown.  */
4538       abfd = get_section_bfd_owner (section);
4539
4540       /* We don't use init_cutu_and_read_dies_simple, or some such, here
4541          because we don't need to read any dies: the signature is in the
4542          header.  */
4543
4544       end_ptr = info_ptr + section->size;
4545       while (info_ptr < end_ptr)
4546         {
4547           sect_offset offset;
4548           cu_offset type_offset_in_tu;
4549           ULONGEST signature;
4550           struct signatured_type *sig_type;
4551           struct dwo_unit *dwo_tu;
4552           void **slot;
4553           const gdb_byte *ptr = info_ptr;
4554           struct comp_unit_head header;
4555           unsigned int length;
4556
4557           offset.sect_off = ptr - section->buffer;
4558
4559           /* We need to read the type's signature in order to build the hash
4560              table, but we don't need anything else just yet.  */
4561
4562           ptr = read_and_check_type_unit_head (&header, section,
4563                                                abbrev_section, ptr,
4564                                                &signature, &type_offset_in_tu);
4565
4566           length = get_cu_length (&header);
4567
4568           /* Skip dummy type units.  */
4569           if (ptr >= info_ptr + length
4570               || peek_abbrev_code (abfd, ptr) == 0)
4571             {
4572               info_ptr += length;
4573               continue;
4574             }
4575
4576           if (types_htab == NULL)
4577             {
4578               if (dwo_file)
4579                 types_htab = allocate_dwo_unit_table (objfile);
4580               else
4581                 types_htab = allocate_signatured_type_table (objfile);
4582             }
4583
4584           if (dwo_file)
4585             {
4586               sig_type = NULL;
4587               dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4588                                        struct dwo_unit);
4589               dwo_tu->dwo_file = dwo_file;
4590               dwo_tu->signature = signature;
4591               dwo_tu->type_offset_in_tu = type_offset_in_tu;
4592               dwo_tu->section = section;
4593               dwo_tu->offset = offset;
4594               dwo_tu->length = length;
4595             }
4596           else
4597             {
4598               /* N.B.: type_offset is not usable if this type uses a DWO file.
4599                  The real type_offset is in the DWO file.  */
4600               dwo_tu = NULL;
4601               sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4602                                          struct signatured_type);
4603               sig_type->signature = signature;
4604               sig_type->type_offset_in_tu = type_offset_in_tu;
4605               sig_type->per_cu.objfile = objfile;
4606               sig_type->per_cu.is_debug_types = 1;
4607               sig_type->per_cu.section = section;
4608               sig_type->per_cu.offset = offset;
4609               sig_type->per_cu.length = length;
4610             }
4611
4612           slot = htab_find_slot (types_htab,
4613                                  dwo_file ? (void*) dwo_tu : (void *) sig_type,
4614                                  INSERT);
4615           gdb_assert (slot != NULL);
4616           if (*slot != NULL)
4617             {
4618               sect_offset dup_offset;
4619
4620               if (dwo_file)
4621                 {
4622                   const struct dwo_unit *dup_tu = *slot;
4623
4624                   dup_offset = dup_tu->offset;
4625                 }
4626               else
4627                 {
4628                   const struct signatured_type *dup_tu = *slot;
4629
4630                   dup_offset = dup_tu->per_cu.offset;
4631                 }
4632
4633               complaint (&symfile_complaints,
4634                          _("debug type entry at offset 0x%x is duplicate to"
4635                            " the entry at offset 0x%x, signature %s"),
4636                          offset.sect_off, dup_offset.sect_off,
4637                          hex_string (signature));
4638             }
4639           *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
4640
4641           if (dwarf2_read_debug > 1)
4642             fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, signature %s\n",
4643                                 offset.sect_off,
4644                                 hex_string (signature));
4645
4646           info_ptr += length;
4647         }
4648     }
4649
4650   return types_htab;
4651 }
4652
4653 /* Create the hash table of all entries in the .debug_types section,
4654    and initialize all_type_units.
4655    The result is zero if there is an error (e.g. missing .debug_types section),
4656    otherwise non-zero.  */
4657
4658 static int
4659 create_all_type_units (struct objfile *objfile)
4660 {
4661   htab_t types_htab;
4662   struct signatured_type **iter;
4663
4664   types_htab = create_debug_types_hash_table (NULL, dwarf2_per_objfile->types);
4665   if (types_htab == NULL)
4666     {
4667       dwarf2_per_objfile->signatured_types = NULL;
4668       return 0;
4669     }
4670
4671   dwarf2_per_objfile->signatured_types = types_htab;
4672
4673   dwarf2_per_objfile->n_type_units = htab_elements (types_htab);
4674   dwarf2_per_objfile->all_type_units
4675     = xmalloc (dwarf2_per_objfile->n_type_units
4676                * sizeof (struct signatured_type *));
4677   iter = &dwarf2_per_objfile->all_type_units[0];
4678   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table, &iter);
4679   gdb_assert (iter - &dwarf2_per_objfile->all_type_units[0]
4680               == dwarf2_per_objfile->n_type_units);
4681
4682   return 1;
4683 }
4684
4685 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
4686    Fill in SIG_ENTRY with DWO_ENTRY.  */
4687
4688 static void
4689 fill_in_sig_entry_from_dwo_entry (struct objfile *objfile,
4690                                   struct signatured_type *sig_entry,
4691                                   struct dwo_unit *dwo_entry)
4692 {
4693   /* Make sure we're not clobbering something we don't expect to.  */
4694   gdb_assert (! sig_entry->per_cu.queued);
4695   gdb_assert (sig_entry->per_cu.cu == NULL);
4696   gdb_assert (sig_entry->per_cu.v.quick != NULL);
4697   gdb_assert (sig_entry->per_cu.v.quick->symtab == NULL);
4698   gdb_assert (sig_entry->signature == dwo_entry->signature);
4699   gdb_assert (sig_entry->type_offset_in_section.sect_off == 0);
4700   gdb_assert (sig_entry->type_unit_group == NULL);
4701   gdb_assert (sig_entry->dwo_unit == NULL);
4702
4703   sig_entry->per_cu.section = dwo_entry->section;
4704   sig_entry->per_cu.offset = dwo_entry->offset;
4705   sig_entry->per_cu.length = dwo_entry->length;
4706   sig_entry->per_cu.reading_dwo_directly = 1;
4707   sig_entry->per_cu.objfile = objfile;
4708   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
4709   sig_entry->dwo_unit = dwo_entry;
4710 }
4711
4712 /* Subroutine of lookup_signatured_type.
4713    If we haven't read the TU yet, create the signatured_type data structure
4714    for a TU to be read in directly from a DWO file, bypassing the stub.
4715    This is the "Stay in DWO Optimization": When there is no DWP file and we're
4716    using .gdb_index, then when reading a CU we want to stay in the DWO file
4717    containing that CU.  Otherwise we could end up reading several other DWO
4718    files (due to comdat folding) to process the transitive closure of all the
4719    mentioned TUs, and that can be slow.  The current DWO file will have every
4720    type signature that it needs.
4721    We only do this for .gdb_index because in the psymtab case we already have
4722    to read all the DWOs to build the type unit groups.  */
4723
4724 static struct signatured_type *
4725 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4726 {
4727   struct objfile *objfile = dwarf2_per_objfile->objfile;
4728   struct dwo_file *dwo_file;
4729   struct dwo_unit find_dwo_entry, *dwo_entry;
4730   struct signatured_type find_sig_entry, *sig_entry;
4731
4732   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4733
4734   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
4735      dwo_unit of the TU itself.  */
4736   dwo_file = cu->dwo_unit->dwo_file;
4737
4738   /* We only ever need to read in one copy of a signatured type.
4739      Just use the global signatured_types array.  If this is the first time
4740      we're reading this type, replace the recorded data from .gdb_index with
4741      this TU.  */
4742
4743   if (dwarf2_per_objfile->signatured_types == NULL)
4744     return NULL;
4745   find_sig_entry.signature = sig;
4746   sig_entry = htab_find (dwarf2_per_objfile->signatured_types, &find_sig_entry);
4747   if (sig_entry == NULL)
4748     return NULL;
4749
4750   /* We can get here with the TU already read, *or* in the process of being
4751      read.  Don't reassign it if that's the case.  Also note that if the TU is
4752      already being read, it may not have come from a DWO, the program may be
4753      a mix of Fission-compiled code and non-Fission-compiled code.  */
4754   /* Have we already tried to read this TU?  */
4755   if (sig_entry->per_cu.tu_read)
4756     return sig_entry;
4757
4758   /* Ok, this is the first time we're reading this TU.  */
4759   if (dwo_file->tus == NULL)
4760     return NULL;
4761   find_dwo_entry.signature = sig;
4762   dwo_entry = htab_find (dwo_file->tus, &find_dwo_entry);
4763   if (dwo_entry == NULL)
4764     return NULL;
4765
4766   fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
4767   sig_entry->per_cu.tu_read = 1;
4768   return sig_entry;
4769 }
4770
4771 /* Subroutine of lookup_dwp_signatured_type.
4772    Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.  */
4773
4774 static struct signatured_type *
4775 add_type_unit (ULONGEST sig)
4776 {
4777   struct objfile *objfile = dwarf2_per_objfile->objfile;
4778   int n_type_units = dwarf2_per_objfile->n_type_units;
4779   struct signatured_type *sig_type;
4780   void **slot;
4781
4782   ++n_type_units;
4783   dwarf2_per_objfile->all_type_units =
4784     xrealloc (dwarf2_per_objfile->all_type_units,
4785               n_type_units * sizeof (struct signatured_type *));
4786   dwarf2_per_objfile->n_type_units = n_type_units;
4787   sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4788                              struct signatured_type);
4789   dwarf2_per_objfile->all_type_units[n_type_units - 1] = sig_type;
4790   sig_type->signature = sig;
4791   sig_type->per_cu.is_debug_types = 1;
4792   sig_type->per_cu.v.quick =
4793     OBSTACK_ZALLOC (&objfile->objfile_obstack,
4794                     struct dwarf2_per_cu_quick_data);
4795   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4796                          sig_type, INSERT);
4797   gdb_assert (*slot == NULL);
4798   *slot = sig_type;
4799   /* The rest of sig_type must be filled in by the caller.  */
4800   return sig_type;
4801 }
4802
4803 /* Subroutine of lookup_signatured_type.
4804    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
4805    then try the DWP file.
4806    Normally this "can't happen", but if there's a bug in signature
4807    generation and/or the DWP file is built incorrectly, it can happen.
4808    Using the type directly from the DWP file means we don't have the stub
4809    which has some useful attributes (e.g., DW_AT_comp_dir), but they're
4810    not critical.  [Eventually the stub may go away for type units anyway.]  */
4811
4812 static struct signatured_type *
4813 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4814 {
4815   struct objfile *objfile = dwarf2_per_objfile->objfile;
4816   struct dwp_file *dwp_file = get_dwp_file ();
4817   struct dwo_unit *dwo_entry;
4818   struct signatured_type find_sig_entry, *sig_entry;
4819
4820   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4821   gdb_assert (dwp_file != NULL);
4822
4823   if (dwarf2_per_objfile->signatured_types != NULL)
4824     {
4825       find_sig_entry.signature = sig;
4826       sig_entry = htab_find (dwarf2_per_objfile->signatured_types,
4827                              &find_sig_entry);
4828       if (sig_entry != NULL)
4829         return sig_entry;
4830     }
4831
4832   /* This is the "shouldn't happen" case.
4833      Try the DWP file and hope for the best.  */
4834   if (dwp_file->tus == NULL)
4835     return NULL;
4836   dwo_entry = lookup_dwo_unit_in_dwp (dwp_file, NULL,
4837                                       sig, 1 /* is_debug_types */);
4838   if (dwo_entry == NULL)
4839     return NULL;
4840
4841   sig_entry = add_type_unit (sig);
4842   fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
4843
4844   /* The caller will signal a complaint if we return NULL.
4845      Here we don't return NULL but we still want to complain.  */
4846   complaint (&symfile_complaints,
4847              _("Bad type signature %s referenced by %s at 0x%x,"
4848                " coping by using copy in DWP [in module %s]"),
4849              hex_string (sig),
4850              cu->per_cu->is_debug_types ? "TU" : "CU",
4851              cu->per_cu->offset.sect_off,
4852              objfile_name (objfile));
4853
4854   return sig_entry;
4855 }
4856
4857 /* Lookup a signature based type for DW_FORM_ref_sig8.
4858    Returns NULL if signature SIG is not present in the table.
4859    It is up to the caller to complain about this.  */
4860
4861 static struct signatured_type *
4862 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4863 {
4864   if (cu->dwo_unit
4865       && dwarf2_per_objfile->using_index)
4866     {
4867       /* We're in a DWO/DWP file, and we're using .gdb_index.
4868          These cases require special processing.  */
4869       if (get_dwp_file () == NULL)
4870         return lookup_dwo_signatured_type (cu, sig);
4871       else
4872         return lookup_dwp_signatured_type (cu, sig);
4873     }
4874   else
4875     {
4876       struct signatured_type find_entry, *entry;
4877
4878       if (dwarf2_per_objfile->signatured_types == NULL)
4879         return NULL;
4880       find_entry.signature = sig;
4881       entry = htab_find (dwarf2_per_objfile->signatured_types, &find_entry);
4882       return entry;
4883     }
4884 }
4885 \f
4886 /* Low level DIE reading support.  */
4887
4888 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
4889
4890 static void
4891 init_cu_die_reader (struct die_reader_specs *reader,
4892                     struct dwarf2_cu *cu,
4893                     struct dwarf2_section_info *section,
4894                     struct dwo_file *dwo_file)
4895 {
4896   gdb_assert (section->readin && section->buffer != NULL);
4897   reader->abfd = get_section_bfd_owner (section);
4898   reader->cu = cu;
4899   reader->dwo_file = dwo_file;
4900   reader->die_section = section;
4901   reader->buffer = section->buffer;
4902   reader->buffer_end = section->buffer + section->size;
4903   reader->comp_dir = NULL;
4904 }
4905
4906 /* Subroutine of init_cutu_and_read_dies to simplify it.
4907    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
4908    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
4909    already.
4910
4911    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
4912    from it to the DIE in the DWO.  If NULL we are skipping the stub.
4913    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
4914    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
4915    attribute of the referencing CU.  Exactly one of STUB_COMP_UNIT_DIE and
4916    COMP_DIR must be non-NULL.
4917    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
4918    are filled in with the info of the DIE from the DWO file.
4919    ABBREV_TABLE_PROVIDED is non-zero if the caller of init_cutu_and_read_dies
4920    provided an abbrev table to use.
4921    The result is non-zero if a valid (non-dummy) DIE was found.  */
4922
4923 static int
4924 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
4925                         struct dwo_unit *dwo_unit,
4926                         int abbrev_table_provided,
4927                         struct die_info *stub_comp_unit_die,
4928                         const char *stub_comp_dir,
4929                         struct die_reader_specs *result_reader,
4930                         const gdb_byte **result_info_ptr,
4931                         struct die_info **result_comp_unit_die,
4932                         int *result_has_children)
4933 {
4934   struct objfile *objfile = dwarf2_per_objfile->objfile;
4935   struct dwarf2_cu *cu = this_cu->cu;
4936   struct dwarf2_section_info *section;
4937   bfd *abfd;
4938   const gdb_byte *begin_info_ptr, *info_ptr;
4939   const char *comp_dir_string;
4940   ULONGEST signature; /* Or dwo_id.  */
4941   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
4942   int i,num_extra_attrs;
4943   struct dwarf2_section_info *dwo_abbrev_section;
4944   struct attribute *attr;
4945   struct attribute comp_dir_attr;
4946   struct die_info *comp_unit_die;
4947
4948   /* Both can't be provided.  */
4949   gdb_assert (! (stub_comp_unit_die && stub_comp_dir));
4950
4951   /* These attributes aren't processed until later:
4952      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
4953      However, the attribute is found in the stub which we won't have later.
4954      In order to not impose this complication on the rest of the code,
4955      we read them here and copy them to the DWO CU/TU die.  */
4956
4957   stmt_list = NULL;
4958   low_pc = NULL;
4959   high_pc = NULL;
4960   ranges = NULL;
4961   comp_dir = NULL;
4962
4963   if (stub_comp_unit_die != NULL)
4964     {
4965       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
4966          DWO file.  */
4967       if (! this_cu->is_debug_types)
4968         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
4969       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
4970       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
4971       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
4972       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
4973
4974       /* There should be a DW_AT_addr_base attribute here (if needed).
4975          We need the value before we can process DW_FORM_GNU_addr_index.  */
4976       cu->addr_base = 0;
4977       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
4978       if (attr)
4979         cu->addr_base = DW_UNSND (attr);
4980
4981       /* There should be a DW_AT_ranges_base attribute here (if needed).
4982          We need the value before we can process DW_AT_ranges.  */
4983       cu->ranges_base = 0;
4984       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
4985       if (attr)
4986         cu->ranges_base = DW_UNSND (attr);
4987     }
4988   else if (stub_comp_dir != NULL)
4989     {
4990       /* Reconstruct the comp_dir attribute to simplify the code below.  */
4991       comp_dir = (struct attribute *)
4992         obstack_alloc (&cu->comp_unit_obstack, sizeof (*comp_dir));
4993       comp_dir->name = DW_AT_comp_dir;
4994       comp_dir->form = DW_FORM_string;
4995       DW_STRING_IS_CANONICAL (comp_dir) = 0;
4996       DW_STRING (comp_dir) = stub_comp_dir;
4997     }
4998
4999   /* Set up for reading the DWO CU/TU.  */
5000   cu->dwo_unit = dwo_unit;
5001   section = dwo_unit->section;
5002   dwarf2_read_section (objfile, section);
5003   abfd = get_section_bfd_owner (section);
5004   begin_info_ptr = info_ptr = section->buffer + dwo_unit->offset.sect_off;
5005   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
5006   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file);
5007
5008   if (this_cu->is_debug_types)
5009     {
5010       ULONGEST header_signature;
5011       cu_offset type_offset_in_tu;
5012       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
5013
5014       info_ptr = read_and_check_type_unit_head (&cu->header, section,
5015                                                 dwo_abbrev_section,
5016                                                 info_ptr,
5017                                                 &header_signature,
5018                                                 &type_offset_in_tu);
5019       /* This is not an assert because it can be caused by bad debug info.  */
5020       if (sig_type->signature != header_signature)
5021         {
5022           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
5023                    " TU at offset 0x%x [in module %s]"),
5024                  hex_string (sig_type->signature),
5025                  hex_string (header_signature),
5026                  dwo_unit->offset.sect_off,
5027                  bfd_get_filename (abfd));
5028         }
5029       gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5030       /* For DWOs coming from DWP files, we don't know the CU length
5031          nor the type's offset in the TU until now.  */
5032       dwo_unit->length = get_cu_length (&cu->header);
5033       dwo_unit->type_offset_in_tu = type_offset_in_tu;
5034
5035       /* Establish the type offset that can be used to lookup the type.
5036          For DWO files, we don't know it until now.  */
5037       sig_type->type_offset_in_section.sect_off =
5038         dwo_unit->offset.sect_off + dwo_unit->type_offset_in_tu.cu_off;
5039     }
5040   else
5041     {
5042       info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5043                                                 dwo_abbrev_section,
5044                                                 info_ptr, 0);
5045       gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5046       /* For DWOs coming from DWP files, we don't know the CU length
5047          until now.  */
5048       dwo_unit->length = get_cu_length (&cu->header);
5049     }
5050
5051   /* Replace the CU's original abbrev table with the DWO's.
5052      Reminder: We can't read the abbrev table until we've read the header.  */
5053   if (abbrev_table_provided)
5054     {
5055       /* Don't free the provided abbrev table, the caller of
5056          init_cutu_and_read_dies owns it.  */
5057       dwarf2_read_abbrevs (cu, dwo_abbrev_section);
5058       /* Ensure the DWO abbrev table gets freed.  */
5059       make_cleanup (dwarf2_free_abbrev_table, cu);
5060     }
5061   else
5062     {
5063       dwarf2_free_abbrev_table (cu);
5064       dwarf2_read_abbrevs (cu, dwo_abbrev_section);
5065       /* Leave any existing abbrev table cleanup as is.  */
5066     }
5067
5068   /* Read in the die, but leave space to copy over the attributes
5069      from the stub.  This has the benefit of simplifying the rest of
5070      the code - all the work to maintain the illusion of a single
5071      DW_TAG_{compile,type}_unit DIE is done here.  */
5072   num_extra_attrs = ((stmt_list != NULL)
5073                      + (low_pc != NULL)
5074                      + (high_pc != NULL)
5075                      + (ranges != NULL)
5076                      + (comp_dir != NULL));
5077   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
5078                               result_has_children, num_extra_attrs);
5079
5080   /* Copy over the attributes from the stub to the DIE we just read in.  */
5081   comp_unit_die = *result_comp_unit_die;
5082   i = comp_unit_die->num_attrs;
5083   if (stmt_list != NULL)
5084     comp_unit_die->attrs[i++] = *stmt_list;
5085   if (low_pc != NULL)
5086     comp_unit_die->attrs[i++] = *low_pc;
5087   if (high_pc != NULL)
5088     comp_unit_die->attrs[i++] = *high_pc;
5089   if (ranges != NULL)
5090     comp_unit_die->attrs[i++] = *ranges;
5091   if (comp_dir != NULL)
5092     comp_unit_die->attrs[i++] = *comp_dir;
5093   comp_unit_die->num_attrs += num_extra_attrs;
5094
5095   if (dwarf2_die_debug)
5096     {
5097       fprintf_unfiltered (gdb_stdlog,
5098                           "Read die from %s@0x%x of %s:\n",
5099                           get_section_name (section),
5100                           (unsigned) (begin_info_ptr - section->buffer),
5101                           bfd_get_filename (abfd));
5102       dump_die (comp_unit_die, dwarf2_die_debug);
5103     }
5104
5105   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
5106      TUs by skipping the stub and going directly to the entry in the DWO file.
5107      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
5108      to get it via circuitous means.  Blech.  */
5109   if (comp_dir != NULL)
5110     result_reader->comp_dir = DW_STRING (comp_dir);
5111
5112   /* Skip dummy compilation units.  */
5113   if (info_ptr >= begin_info_ptr + dwo_unit->length
5114       || peek_abbrev_code (abfd, info_ptr) == 0)
5115     return 0;
5116
5117   *result_info_ptr = info_ptr;
5118   return 1;
5119 }
5120
5121 /* Subroutine of init_cutu_and_read_dies to simplify it.
5122    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
5123    Returns NULL if the specified DWO unit cannot be found.  */
5124
5125 static struct dwo_unit *
5126 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
5127                  struct die_info *comp_unit_die)
5128 {
5129   struct dwarf2_cu *cu = this_cu->cu;
5130   struct attribute *attr;
5131   ULONGEST signature;
5132   struct dwo_unit *dwo_unit;
5133   const char *comp_dir, *dwo_name;
5134
5135   gdb_assert (cu != NULL);
5136
5137   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
5138   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5139   gdb_assert (attr != NULL);
5140   dwo_name = DW_STRING (attr);
5141   comp_dir = NULL;
5142   attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
5143   if (attr)
5144     comp_dir = DW_STRING (attr);
5145
5146   if (this_cu->is_debug_types)
5147     {
5148       struct signatured_type *sig_type;
5149
5150       /* Since this_cu is the first member of struct signatured_type,
5151          we can go from a pointer to one to a pointer to the other.  */
5152       sig_type = (struct signatured_type *) this_cu;
5153       signature = sig_type->signature;
5154       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
5155     }
5156   else
5157     {
5158       struct attribute *attr;
5159
5160       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
5161       if (! attr)
5162         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
5163                  " [in module %s]"),
5164                dwo_name, objfile_name (this_cu->objfile));
5165       signature = DW_UNSND (attr);
5166       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
5167                                        signature);
5168     }
5169
5170   return dwo_unit;
5171 }
5172
5173 /* Subroutine of init_cutu_and_read_dies to simplify it.
5174    Read a TU directly from a DWO file, bypassing the stub.  */
5175
5176 static void
5177 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu, int keep,
5178                            die_reader_func_ftype *die_reader_func,
5179                            void *data)
5180 {
5181   struct dwarf2_cu *cu;
5182   struct signatured_type *sig_type;
5183   struct cleanup *cleanups, *free_cu_cleanup;
5184   struct die_reader_specs reader;
5185   const gdb_byte *info_ptr;
5186   struct die_info *comp_unit_die;
5187   int has_children;
5188
5189   /* Verify we can do the following downcast, and that we have the
5190      data we need.  */
5191   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
5192   sig_type = (struct signatured_type *) this_cu;
5193   gdb_assert (sig_type->dwo_unit != NULL);
5194
5195   cleanups = make_cleanup (null_cleanup, NULL);
5196
5197   gdb_assert (this_cu->cu == NULL);
5198   cu = xmalloc (sizeof (*cu));
5199   init_one_comp_unit (cu, this_cu);
5200   /* If an error occurs while loading, release our storage.  */
5201   free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5202
5203   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
5204                               0 /* abbrev_table_provided */,
5205                               NULL /* stub_comp_unit_die */,
5206                               sig_type->dwo_unit->dwo_file->comp_dir,
5207                               &reader, &info_ptr,
5208                               &comp_unit_die, &has_children) == 0)
5209     {
5210       /* Dummy die.  */
5211       do_cleanups (cleanups);
5212       return;
5213     }
5214
5215   /* All the "real" work is done here.  */
5216   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5217
5218   /* This duplicates some code in init_cutu_and_read_dies,
5219      but the alternative is making the latter more complex.
5220      This function is only for the special case of using DWO files directly:
5221      no point in overly complicating the general case just to handle this.  */
5222   if (keep)
5223     {
5224       /* We've successfully allocated this compilation unit.  Let our
5225          caller clean it up when finished with it.  */
5226       discard_cleanups (free_cu_cleanup);
5227
5228       /* We can only discard free_cu_cleanup and all subsequent cleanups.
5229          So we have to manually free the abbrev table.  */
5230       dwarf2_free_abbrev_table (cu);
5231
5232       /* Link this CU into read_in_chain.  */
5233       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5234       dwarf2_per_objfile->read_in_chain = this_cu;
5235     }
5236   else
5237     do_cleanups (free_cu_cleanup);
5238
5239   do_cleanups (cleanups);
5240 }
5241
5242 /* Initialize a CU (or TU) and read its DIEs.
5243    If the CU defers to a DWO file, read the DWO file as well.
5244
5245    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
5246    Otherwise the table specified in the comp unit header is read in and used.
5247    This is an optimization for when we already have the abbrev table.
5248
5249    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
5250    Otherwise, a new CU is allocated with xmalloc.
5251
5252    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
5253    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
5254
5255    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5256    linker) then DIE_READER_FUNC will not get called.  */
5257
5258 static void
5259 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
5260                          struct abbrev_table *abbrev_table,
5261                          int use_existing_cu, int keep,
5262                          die_reader_func_ftype *die_reader_func,
5263                          void *data)
5264 {
5265   struct objfile *objfile = dwarf2_per_objfile->objfile;
5266   struct dwarf2_section_info *section = this_cu->section;
5267   bfd *abfd = get_section_bfd_owner (section);
5268   struct dwarf2_cu *cu;
5269   const gdb_byte *begin_info_ptr, *info_ptr;
5270   struct die_reader_specs reader;
5271   struct die_info *comp_unit_die;
5272   int has_children;
5273   struct attribute *attr;
5274   struct cleanup *cleanups, *free_cu_cleanup = NULL;
5275   struct signatured_type *sig_type = NULL;
5276   struct dwarf2_section_info *abbrev_section;
5277   /* Non-zero if CU currently points to a DWO file and we need to
5278      reread it.  When this happens we need to reread the skeleton die
5279      before we can reread the DWO file (this only applies to CUs, not TUs).  */
5280   int rereading_dwo_cu = 0;
5281
5282   if (dwarf2_die_debug)
5283     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5284                         this_cu->is_debug_types ? "type" : "comp",
5285                         this_cu->offset.sect_off);
5286
5287   if (use_existing_cu)
5288     gdb_assert (keep);
5289
5290   /* If we're reading a TU directly from a DWO file, including a virtual DWO
5291      file (instead of going through the stub), short-circuit all of this.  */
5292   if (this_cu->reading_dwo_directly)
5293     {
5294       /* Narrow down the scope of possibilities to have to understand.  */
5295       gdb_assert (this_cu->is_debug_types);
5296       gdb_assert (abbrev_table == NULL);
5297       gdb_assert (!use_existing_cu);
5298       init_tu_and_read_dwo_dies (this_cu, keep, die_reader_func, data);
5299       return;
5300     }
5301
5302   cleanups = make_cleanup (null_cleanup, NULL);
5303
5304   /* This is cheap if the section is already read in.  */
5305   dwarf2_read_section (objfile, section);
5306
5307   begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
5308
5309   abbrev_section = get_abbrev_section_for_cu (this_cu);
5310
5311   if (use_existing_cu && this_cu->cu != NULL)
5312     {
5313       cu = this_cu->cu;
5314
5315       /* If this CU is from a DWO file we need to start over, we need to
5316          refetch the attributes from the skeleton CU.
5317          This could be optimized by retrieving those attributes from when we
5318          were here the first time: the previous comp_unit_die was stored in
5319          comp_unit_obstack.  But there's no data yet that we need this
5320          optimization.  */
5321       if (cu->dwo_unit != NULL)
5322         rereading_dwo_cu = 1;
5323     }
5324   else
5325     {
5326       /* If !use_existing_cu, this_cu->cu must be NULL.  */
5327       gdb_assert (this_cu->cu == NULL);
5328
5329       cu = xmalloc (sizeof (*cu));
5330       init_one_comp_unit (cu, this_cu);
5331
5332       /* If an error occurs while loading, release our storage.  */
5333       free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5334     }
5335
5336   /* Get the header.  */
5337   if (cu->header.first_die_offset.cu_off != 0 && ! rereading_dwo_cu)
5338     {
5339       /* We already have the header, there's no need to read it in again.  */
5340       info_ptr += cu->header.first_die_offset.cu_off;
5341     }
5342   else
5343     {
5344       if (this_cu->is_debug_types)
5345         {
5346           ULONGEST signature;
5347           cu_offset type_offset_in_tu;
5348
5349           info_ptr = read_and_check_type_unit_head (&cu->header, section,
5350                                                     abbrev_section, info_ptr,
5351                                                     &signature,
5352                                                     &type_offset_in_tu);
5353
5354           /* Since per_cu is the first member of struct signatured_type,
5355              we can go from a pointer to one to a pointer to the other.  */
5356           sig_type = (struct signatured_type *) this_cu;
5357           gdb_assert (sig_type->signature == signature);
5358           gdb_assert (sig_type->type_offset_in_tu.cu_off
5359                       == type_offset_in_tu.cu_off);
5360           gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5361
5362           /* LENGTH has not been set yet for type units if we're
5363              using .gdb_index.  */
5364           this_cu->length = get_cu_length (&cu->header);
5365
5366           /* Establish the type offset that can be used to lookup the type.  */
5367           sig_type->type_offset_in_section.sect_off =
5368             this_cu->offset.sect_off + sig_type->type_offset_in_tu.cu_off;
5369         }
5370       else
5371         {
5372           info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5373                                                     abbrev_section,
5374                                                     info_ptr, 0);
5375
5376           gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5377           gdb_assert (this_cu->length == get_cu_length (&cu->header));
5378         }
5379     }
5380
5381   /* Skip dummy compilation units.  */
5382   if (info_ptr >= begin_info_ptr + this_cu->length
5383       || peek_abbrev_code (abfd, info_ptr) == 0)
5384     {
5385       do_cleanups (cleanups);
5386       return;
5387     }
5388
5389   /* If we don't have them yet, read the abbrevs for this compilation unit.
5390      And if we need to read them now, make sure they're freed when we're
5391      done.  Note that it's important that if the CU had an abbrev table
5392      on entry we don't free it when we're done: Somewhere up the call stack
5393      it may be in use.  */
5394   if (abbrev_table != NULL)
5395     {
5396       gdb_assert (cu->abbrev_table == NULL);
5397       gdb_assert (cu->header.abbrev_offset.sect_off
5398                   == abbrev_table->offset.sect_off);
5399       cu->abbrev_table = abbrev_table;
5400     }
5401   else if (cu->abbrev_table == NULL)
5402     {
5403       dwarf2_read_abbrevs (cu, abbrev_section);
5404       make_cleanup (dwarf2_free_abbrev_table, cu);
5405     }
5406   else if (rereading_dwo_cu)
5407     {
5408       dwarf2_free_abbrev_table (cu);
5409       dwarf2_read_abbrevs (cu, abbrev_section);
5410     }
5411
5412   /* Read the top level CU/TU die.  */
5413   init_cu_die_reader (&reader, cu, section, NULL);
5414   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5415
5416   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
5417      from the DWO file.
5418      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
5419      DWO CU, that this test will fail (the attribute will not be present).  */
5420   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5421   if (attr)
5422     {
5423       struct dwo_unit *dwo_unit;
5424       struct die_info *dwo_comp_unit_die;
5425
5426       if (has_children)
5427         {
5428           complaint (&symfile_complaints,
5429                      _("compilation unit with DW_AT_GNU_dwo_name"
5430                        " has children (offset 0x%x) [in module %s]"),
5431                      this_cu->offset.sect_off, bfd_get_filename (abfd));
5432         }
5433       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
5434       if (dwo_unit != NULL)
5435         {
5436           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
5437                                       abbrev_table != NULL,
5438                                       comp_unit_die, NULL,
5439                                       &reader, &info_ptr,
5440                                       &dwo_comp_unit_die, &has_children) == 0)
5441             {
5442               /* Dummy die.  */
5443               do_cleanups (cleanups);
5444               return;
5445             }
5446           comp_unit_die = dwo_comp_unit_die;
5447         }
5448       else
5449         {
5450           /* Yikes, we couldn't find the rest of the DIE, we only have
5451              the stub.  A complaint has already been logged.  There's
5452              not much more we can do except pass on the stub DIE to
5453              die_reader_func.  We don't want to throw an error on bad
5454              debug info.  */
5455         }
5456     }
5457
5458   /* All of the above is setup for this call.  Yikes.  */
5459   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5460
5461   /* Done, clean up.  */
5462   if (free_cu_cleanup != NULL)
5463     {
5464       if (keep)
5465         {
5466           /* We've successfully allocated this compilation unit.  Let our
5467              caller clean it up when finished with it.  */
5468           discard_cleanups (free_cu_cleanup);
5469
5470           /* We can only discard free_cu_cleanup and all subsequent cleanups.
5471              So we have to manually free the abbrev table.  */
5472           dwarf2_free_abbrev_table (cu);
5473
5474           /* Link this CU into read_in_chain.  */
5475           this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5476           dwarf2_per_objfile->read_in_chain = this_cu;
5477         }
5478       else
5479         do_cleanups (free_cu_cleanup);
5480     }
5481
5482   do_cleanups (cleanups);
5483 }
5484
5485 /* Read CU/TU THIS_CU in section SECTION,
5486    but do not follow DW_AT_GNU_dwo_name if present.
5487    DWOP_FILE, if non-NULL, is the DWO/DWP file to read (the caller is assumed
5488    to have already done the lookup to find the DWO/DWP file).
5489
5490    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
5491    THIS_CU->is_debug_types, but nothing else.
5492
5493    We fill in THIS_CU->length.
5494
5495    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5496    linker) then DIE_READER_FUNC will not get called.
5497
5498    THIS_CU->cu is always freed when done.
5499    This is done in order to not leave THIS_CU->cu in a state where we have
5500    to care whether it refers to the "main" CU or the DWO CU.  */
5501
5502 static void
5503 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
5504                                    struct dwarf2_section_info *abbrev_section,
5505                                    struct dwo_file *dwo_file,
5506                                    die_reader_func_ftype *die_reader_func,
5507                                    void *data)
5508 {
5509   struct objfile *objfile = dwarf2_per_objfile->objfile;
5510   struct dwarf2_section_info *section = this_cu->section;
5511   bfd *abfd = get_section_bfd_owner (section);
5512   struct dwarf2_cu cu;
5513   const gdb_byte *begin_info_ptr, *info_ptr;
5514   struct die_reader_specs reader;
5515   struct cleanup *cleanups;
5516   struct die_info *comp_unit_die;
5517   int has_children;
5518
5519   if (dwarf2_die_debug)
5520     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5521                         this_cu->is_debug_types ? "type" : "comp",
5522                         this_cu->offset.sect_off);
5523
5524   gdb_assert (this_cu->cu == NULL);
5525
5526   /* This is cheap if the section is already read in.  */
5527   dwarf2_read_section (objfile, section);
5528
5529   init_one_comp_unit (&cu, this_cu);
5530
5531   cleanups = make_cleanup (free_stack_comp_unit, &cu);
5532
5533   begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
5534   info_ptr = read_and_check_comp_unit_head (&cu.header, section,
5535                                             abbrev_section, info_ptr,
5536                                             this_cu->is_debug_types);
5537
5538   this_cu->length = get_cu_length (&cu.header);
5539
5540   /* Skip dummy compilation units.  */
5541   if (info_ptr >= begin_info_ptr + this_cu->length
5542       || peek_abbrev_code (abfd, info_ptr) == 0)
5543     {
5544       do_cleanups (cleanups);
5545       return;
5546     }
5547
5548   dwarf2_read_abbrevs (&cu, abbrev_section);
5549   make_cleanup (dwarf2_free_abbrev_table, &cu);
5550
5551   init_cu_die_reader (&reader, &cu, section, dwo_file);
5552   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5553
5554   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5555
5556   do_cleanups (cleanups);
5557 }
5558
5559 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
5560    does not lookup the specified DWO file.
5561    This cannot be used to read DWO files.
5562
5563    THIS_CU->cu is always freed when done.
5564    This is done in order to not leave THIS_CU->cu in a state where we have
5565    to care whether it refers to the "main" CU or the DWO CU.
5566    We can revisit this if the data shows there's a performance issue.  */
5567
5568 static void
5569 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
5570                                 die_reader_func_ftype *die_reader_func,
5571                                 void *data)
5572 {
5573   init_cutu_and_read_dies_no_follow (this_cu,
5574                                      get_abbrev_section_for_cu (this_cu),
5575                                      NULL,
5576                                      die_reader_func, data);
5577 }
5578 \f
5579 /* Type Unit Groups.
5580
5581    Type Unit Groups are a way to collapse the set of all TUs (type units) into
5582    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
5583    so that all types coming from the same compilation (.o file) are grouped
5584    together.  A future step could be to put the types in the same symtab as
5585    the CU the types ultimately came from.  */
5586
5587 static hashval_t
5588 hash_type_unit_group (const void *item)
5589 {
5590   const struct type_unit_group *tu_group = item;
5591
5592   return hash_stmt_list_entry (&tu_group->hash);
5593 }
5594
5595 static int
5596 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
5597 {
5598   const struct type_unit_group *lhs = item_lhs;
5599   const struct type_unit_group *rhs = item_rhs;
5600
5601   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
5602 }
5603
5604 /* Allocate a hash table for type unit groups.  */
5605
5606 static htab_t
5607 allocate_type_unit_groups_table (void)
5608 {
5609   return htab_create_alloc_ex (3,
5610                                hash_type_unit_group,
5611                                eq_type_unit_group,
5612                                NULL,
5613                                &dwarf2_per_objfile->objfile->objfile_obstack,
5614                                hashtab_obstack_allocate,
5615                                dummy_obstack_deallocate);
5616 }
5617
5618 /* Type units that don't have DW_AT_stmt_list are grouped into their own
5619    partial symtabs.  We combine several TUs per psymtab to not let the size
5620    of any one psymtab grow too big.  */
5621 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
5622 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
5623
5624 /* Helper routine for get_type_unit_group.
5625    Create the type_unit_group object used to hold one or more TUs.  */
5626
5627 static struct type_unit_group *
5628 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
5629 {
5630   struct objfile *objfile = dwarf2_per_objfile->objfile;
5631   struct dwarf2_per_cu_data *per_cu;
5632   struct type_unit_group *tu_group;
5633
5634   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5635                              struct type_unit_group);
5636   per_cu = &tu_group->per_cu;
5637   per_cu->objfile = objfile;
5638
5639   if (dwarf2_per_objfile->using_index)
5640     {
5641       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5642                                         struct dwarf2_per_cu_quick_data);
5643     }
5644   else
5645     {
5646       unsigned int line_offset = line_offset_struct.sect_off;
5647       struct partial_symtab *pst;
5648       char *name;
5649
5650       /* Give the symtab a useful name for debug purposes.  */
5651       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
5652         name = xstrprintf ("<type_units_%d>",
5653                            (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
5654       else
5655         name = xstrprintf ("<type_units_at_0x%x>", line_offset);
5656
5657       pst = create_partial_symtab (per_cu, name);
5658       pst->anonymous = 1;
5659
5660       xfree (name);
5661     }
5662
5663   tu_group->hash.dwo_unit = cu->dwo_unit;
5664   tu_group->hash.line_offset = line_offset_struct;
5665
5666   return tu_group;
5667 }
5668
5669 /* Look up the type_unit_group for type unit CU, and create it if necessary.
5670    STMT_LIST is a DW_AT_stmt_list attribute.  */
5671
5672 static struct type_unit_group *
5673 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
5674 {
5675   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
5676   struct type_unit_group *tu_group;
5677   void **slot;
5678   unsigned int line_offset;
5679   struct type_unit_group type_unit_group_for_lookup;
5680
5681   if (dwarf2_per_objfile->type_unit_groups == NULL)
5682     {
5683       dwarf2_per_objfile->type_unit_groups =
5684         allocate_type_unit_groups_table ();
5685     }
5686
5687   /* Do we need to create a new group, or can we use an existing one?  */
5688
5689   if (stmt_list)
5690     {
5691       line_offset = DW_UNSND (stmt_list);
5692       ++tu_stats->nr_symtab_sharers;
5693     }
5694   else
5695     {
5696       /* Ugh, no stmt_list.  Rare, but we have to handle it.
5697          We can do various things here like create one group per TU or
5698          spread them over multiple groups to split up the expansion work.
5699          To avoid worst case scenarios (too many groups or too large groups)
5700          we, umm, group them in bunches.  */
5701       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
5702                      | (tu_stats->nr_stmt_less_type_units
5703                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
5704       ++tu_stats->nr_stmt_less_type_units;
5705     }
5706
5707   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
5708   type_unit_group_for_lookup.hash.line_offset.sect_off = line_offset;
5709   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
5710                          &type_unit_group_for_lookup, INSERT);
5711   if (*slot != NULL)
5712     {
5713       tu_group = *slot;
5714       gdb_assert (tu_group != NULL);
5715     }
5716   else
5717     {
5718       sect_offset line_offset_struct;
5719
5720       line_offset_struct.sect_off = line_offset;
5721       tu_group = create_type_unit_group (cu, line_offset_struct);
5722       *slot = tu_group;
5723       ++tu_stats->nr_symtabs;
5724     }
5725
5726   return tu_group;
5727 }
5728
5729 /* Struct used to sort TUs by their abbreviation table offset.  */
5730
5731 struct tu_abbrev_offset
5732 {
5733   struct signatured_type *sig_type;
5734   sect_offset abbrev_offset;
5735 };
5736
5737 /* Helper routine for build_type_unit_groups, passed to qsort.  */
5738
5739 static int
5740 sort_tu_by_abbrev_offset (const void *ap, const void *bp)
5741 {
5742   const struct tu_abbrev_offset * const *a = ap;
5743   const struct tu_abbrev_offset * const *b = bp;
5744   unsigned int aoff = (*a)->abbrev_offset.sect_off;
5745   unsigned int boff = (*b)->abbrev_offset.sect_off;
5746
5747   return (aoff > boff) - (aoff < boff);
5748 }
5749
5750 /* A helper function to add a type_unit_group to a table.  */
5751
5752 static int
5753 add_type_unit_group_to_table (void **slot, void *datum)
5754 {
5755   struct type_unit_group *tu_group = *slot;
5756   struct type_unit_group ***datap = datum;
5757
5758   **datap = tu_group;
5759   ++*datap;
5760
5761   return 1;
5762 }
5763
5764 /* Efficiently read all the type units, calling init_cutu_and_read_dies on
5765    each one passing FUNC,DATA.
5766
5767    The efficiency is because we sort TUs by the abbrev table they use and
5768    only read each abbrev table once.  In one program there are 200K TUs
5769    sharing 8K abbrev tables.
5770
5771    The main purpose of this function is to support building the
5772    dwarf2_per_objfile->type_unit_groups table.
5773    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
5774    can collapse the search space by grouping them by stmt_list.
5775    The savings can be significant, in the same program from above the 200K TUs
5776    share 8K stmt_list tables.
5777
5778    FUNC is expected to call get_type_unit_group, which will create the
5779    struct type_unit_group if necessary and add it to
5780    dwarf2_per_objfile->type_unit_groups.  */
5781
5782 static void
5783 build_type_unit_groups (die_reader_func_ftype *func, void *data)
5784 {
5785   struct objfile *objfile = dwarf2_per_objfile->objfile;
5786   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
5787   struct cleanup *cleanups;
5788   struct abbrev_table *abbrev_table;
5789   sect_offset abbrev_offset;
5790   struct tu_abbrev_offset *sorted_by_abbrev;
5791   struct type_unit_group **iter;
5792   int i;
5793
5794   /* It's up to the caller to not call us multiple times.  */
5795   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
5796
5797   if (dwarf2_per_objfile->n_type_units == 0)
5798     return;
5799
5800   /* TUs typically share abbrev tables, and there can be way more TUs than
5801      abbrev tables.  Sort by abbrev table to reduce the number of times we
5802      read each abbrev table in.
5803      Alternatives are to punt or to maintain a cache of abbrev tables.
5804      This is simpler and efficient enough for now.
5805
5806      Later we group TUs by their DW_AT_stmt_list value (as this defines the
5807      symtab to use).  Typically TUs with the same abbrev offset have the same
5808      stmt_list value too so in practice this should work well.
5809
5810      The basic algorithm here is:
5811
5812       sort TUs by abbrev table
5813       for each TU with same abbrev table:
5814         read abbrev table if first user
5815         read TU top level DIE
5816           [IWBN if DWO skeletons had DW_AT_stmt_list]
5817         call FUNC  */
5818
5819   if (dwarf2_read_debug)
5820     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
5821
5822   /* Sort in a separate table to maintain the order of all_type_units
5823      for .gdb_index: TU indices directly index all_type_units.  */
5824   sorted_by_abbrev = XNEWVEC (struct tu_abbrev_offset,
5825                               dwarf2_per_objfile->n_type_units);
5826   for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
5827     {
5828       struct signatured_type *sig_type = dwarf2_per_objfile->all_type_units[i];
5829
5830       sorted_by_abbrev[i].sig_type = sig_type;
5831       sorted_by_abbrev[i].abbrev_offset =
5832         read_abbrev_offset (sig_type->per_cu.section,
5833                             sig_type->per_cu.offset);
5834     }
5835   cleanups = make_cleanup (xfree, sorted_by_abbrev);
5836   qsort (sorted_by_abbrev, dwarf2_per_objfile->n_type_units,
5837          sizeof (struct tu_abbrev_offset), sort_tu_by_abbrev_offset);
5838
5839   /* Note: In the .gdb_index case, get_type_unit_group may have already been
5840      called any number of times, so we don't reset tu_stats here.  */
5841
5842   abbrev_offset.sect_off = ~(unsigned) 0;
5843   abbrev_table = NULL;
5844   make_cleanup (abbrev_table_free_cleanup, &abbrev_table);
5845
5846   for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
5847     {
5848       const struct tu_abbrev_offset *tu = &sorted_by_abbrev[i];
5849
5850       /* Switch to the next abbrev table if necessary.  */
5851       if (abbrev_table == NULL
5852           || tu->abbrev_offset.sect_off != abbrev_offset.sect_off)
5853         {
5854           if (abbrev_table != NULL)
5855             {
5856               abbrev_table_free (abbrev_table);
5857               /* Reset to NULL in case abbrev_table_read_table throws
5858                  an error: abbrev_table_free_cleanup will get called.  */
5859               abbrev_table = NULL;
5860             }
5861           abbrev_offset = tu->abbrev_offset;
5862           abbrev_table =
5863             abbrev_table_read_table (&dwarf2_per_objfile->abbrev,
5864                                      abbrev_offset);
5865           ++tu_stats->nr_uniq_abbrev_tables;
5866         }
5867
5868       init_cutu_and_read_dies (&tu->sig_type->per_cu, abbrev_table, 0, 0,
5869                                func, data);
5870     }
5871
5872   /* type_unit_groups can be NULL if there is an error in the debug info.
5873      Just create an empty table so the rest of gdb doesn't have to watch
5874      for this error case.  */
5875   if (dwarf2_per_objfile->type_unit_groups == NULL)
5876     {
5877       dwarf2_per_objfile->type_unit_groups =
5878         allocate_type_unit_groups_table ();
5879       dwarf2_per_objfile->n_type_unit_groups = 0;
5880     }
5881
5882   /* Create a vector of pointers to primary type units to make it easy to
5883      iterate over them and CUs.  See dw2_get_primary_cu.  */
5884   dwarf2_per_objfile->n_type_unit_groups =
5885     htab_elements (dwarf2_per_objfile->type_unit_groups);
5886   dwarf2_per_objfile->all_type_unit_groups =
5887     obstack_alloc (&objfile->objfile_obstack,
5888                    dwarf2_per_objfile->n_type_unit_groups
5889                    * sizeof (struct type_unit_group *));
5890   iter = &dwarf2_per_objfile->all_type_unit_groups[0];
5891   htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
5892                           add_type_unit_group_to_table, &iter);
5893   gdb_assert (iter - &dwarf2_per_objfile->all_type_unit_groups[0]
5894               == dwarf2_per_objfile->n_type_unit_groups);
5895
5896   do_cleanups (cleanups);
5897
5898   if (dwarf2_read_debug)
5899     {
5900       fprintf_unfiltered (gdb_stdlog, "Done building type unit groups:\n");
5901       fprintf_unfiltered (gdb_stdlog, "  %d TUs\n",
5902                           dwarf2_per_objfile->n_type_units);
5903       fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
5904                           tu_stats->nr_uniq_abbrev_tables);
5905       fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
5906                           tu_stats->nr_symtabs);
5907       fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
5908                           tu_stats->nr_symtab_sharers);
5909       fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
5910                           tu_stats->nr_stmt_less_type_units);
5911     }
5912 }
5913 \f
5914 /* Partial symbol tables.  */
5915
5916 /* Create a psymtab named NAME and assign it to PER_CU.
5917
5918    The caller must fill in the following details:
5919    dirname, textlow, texthigh.  */
5920
5921 static struct partial_symtab *
5922 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
5923 {
5924   struct objfile *objfile = per_cu->objfile;
5925   struct partial_symtab *pst;
5926
5927   pst = start_psymtab_common (objfile, objfile->section_offsets,
5928                               name, 0,
5929                               objfile->global_psymbols.next,
5930                               objfile->static_psymbols.next);
5931
5932   pst->psymtabs_addrmap_supported = 1;
5933
5934   /* This is the glue that links PST into GDB's symbol API.  */
5935   pst->read_symtab_private = per_cu;
5936   pst->read_symtab = dwarf2_read_symtab;
5937   per_cu->v.psymtab = pst;
5938
5939   return pst;
5940 }
5941
5942 /* The DATA object passed to process_psymtab_comp_unit_reader has this
5943    type.  */
5944
5945 struct process_psymtab_comp_unit_data
5946 {
5947   /* True if we are reading a DW_TAG_partial_unit.  */
5948
5949   int want_partial_unit;
5950
5951   /* The "pretend" language that is used if the CU doesn't declare a
5952      language.  */
5953
5954   enum language pretend_language;
5955 };
5956
5957 /* die_reader_func for process_psymtab_comp_unit.  */
5958
5959 static void
5960 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
5961                                   const gdb_byte *info_ptr,
5962                                   struct die_info *comp_unit_die,
5963                                   int has_children,
5964                                   void *data)
5965 {
5966   struct dwarf2_cu *cu = reader->cu;
5967   struct objfile *objfile = cu->objfile;
5968   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
5969   struct attribute *attr;
5970   CORE_ADDR baseaddr;
5971   CORE_ADDR best_lowpc = 0, best_highpc = 0;
5972   struct partial_symtab *pst;
5973   int has_pc_info;
5974   const char *filename;
5975   struct process_psymtab_comp_unit_data *info = data;
5976
5977   if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
5978     return;
5979
5980   gdb_assert (! per_cu->is_debug_types);
5981
5982   prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
5983
5984   cu->list_in_scope = &file_symbols;
5985
5986   /* Allocate a new partial symbol table structure.  */
5987   attr = dwarf2_attr (comp_unit_die, DW_AT_name, cu);
5988   if (attr == NULL || !DW_STRING (attr))
5989     filename = "";
5990   else
5991     filename = DW_STRING (attr);
5992
5993   pst = create_partial_symtab (per_cu, filename);
5994
5995   /* This must be done before calling dwarf2_build_include_psymtabs.  */
5996   attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
5997   if (attr != NULL)
5998     pst->dirname = DW_STRING (attr);
5999
6000   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
6001
6002   dwarf2_find_base_address (comp_unit_die, cu);
6003
6004   /* Possibly set the default values of LOWPC and HIGHPC from
6005      `DW_AT_ranges'.  */
6006   has_pc_info = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
6007                                       &best_highpc, cu, pst);
6008   if (has_pc_info == 1 && best_lowpc < best_highpc)
6009     /* Store the contiguous range if it is not empty; it can be empty for
6010        CUs with no code.  */
6011     addrmap_set_empty (objfile->psymtabs_addrmap,
6012                        best_lowpc + baseaddr,
6013                        best_highpc + baseaddr - 1, pst);
6014
6015   /* Check if comp unit has_children.
6016      If so, read the rest of the partial symbols from this comp unit.
6017      If not, there's no more debug_info for this comp unit.  */
6018   if (has_children)
6019     {
6020       struct partial_die_info *first_die;
6021       CORE_ADDR lowpc, highpc;
6022
6023       lowpc = ((CORE_ADDR) -1);
6024       highpc = ((CORE_ADDR) 0);
6025
6026       first_die = load_partial_dies (reader, info_ptr, 1);
6027
6028       scan_partial_symbols (first_die, &lowpc, &highpc,
6029                             ! has_pc_info, cu);
6030
6031       /* If we didn't find a lowpc, set it to highpc to avoid
6032          complaints from `maint check'.  */
6033       if (lowpc == ((CORE_ADDR) -1))
6034         lowpc = highpc;
6035
6036       /* If the compilation unit didn't have an explicit address range,
6037          then use the information extracted from its child dies.  */
6038       if (! has_pc_info)
6039         {
6040           best_lowpc = lowpc;
6041           best_highpc = highpc;
6042         }
6043     }
6044   pst->textlow = best_lowpc + baseaddr;
6045   pst->texthigh = best_highpc + baseaddr;
6046
6047   pst->n_global_syms = objfile->global_psymbols.next -
6048     (objfile->global_psymbols.list + pst->globals_offset);
6049   pst->n_static_syms = objfile->static_psymbols.next -
6050     (objfile->static_psymbols.list + pst->statics_offset);
6051   sort_pst_symbols (objfile, pst);
6052
6053   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
6054     {
6055       int i;
6056       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6057       struct dwarf2_per_cu_data *iter;
6058
6059       /* Fill in 'dependencies' here; we fill in 'users' in a
6060          post-pass.  */
6061       pst->number_of_dependencies = len;
6062       pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
6063                                          len * sizeof (struct symtab *));
6064       for (i = 0;
6065            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
6066                         i, iter);
6067            ++i)
6068         pst->dependencies[i] = iter->v.psymtab;
6069
6070       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6071     }
6072
6073   /* Get the list of files included in the current compilation unit,
6074      and build a psymtab for each of them.  */
6075   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
6076
6077   if (dwarf2_read_debug)
6078     {
6079       struct gdbarch *gdbarch = get_objfile_arch (objfile);
6080
6081       fprintf_unfiltered (gdb_stdlog,
6082                           "Psymtab for %s unit @0x%x: %s - %s"
6083                           ", %d global, %d static syms\n",
6084                           per_cu->is_debug_types ? "type" : "comp",
6085                           per_cu->offset.sect_off,
6086                           paddress (gdbarch, pst->textlow),
6087                           paddress (gdbarch, pst->texthigh),
6088                           pst->n_global_syms, pst->n_static_syms);
6089     }
6090 }
6091
6092 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6093    Process compilation unit THIS_CU for a psymtab.  */
6094
6095 static void
6096 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
6097                            int want_partial_unit,
6098                            enum language pretend_language)
6099 {
6100   struct process_psymtab_comp_unit_data info;
6101
6102   /* If this compilation unit was already read in, free the
6103      cached copy in order to read it in again.  This is
6104      necessary because we skipped some symbols when we first
6105      read in the compilation unit (see load_partial_dies).
6106      This problem could be avoided, but the benefit is unclear.  */
6107   if (this_cu->cu != NULL)
6108     free_one_cached_comp_unit (this_cu);
6109
6110   gdb_assert (! this_cu->is_debug_types);
6111   info.want_partial_unit = want_partial_unit;
6112   info.pretend_language = pretend_language;
6113   init_cutu_and_read_dies (this_cu, NULL, 0, 0,
6114                            process_psymtab_comp_unit_reader,
6115                            &info);
6116
6117   /* Age out any secondary CUs.  */
6118   age_cached_comp_units ();
6119 }
6120
6121 /* Reader function for build_type_psymtabs.  */
6122
6123 static void
6124 build_type_psymtabs_reader (const struct die_reader_specs *reader,
6125                             const gdb_byte *info_ptr,
6126                             struct die_info *type_unit_die,
6127                             int has_children,
6128                             void *data)
6129 {
6130   struct objfile *objfile = dwarf2_per_objfile->objfile;
6131   struct dwarf2_cu *cu = reader->cu;
6132   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
6133   struct signatured_type *sig_type;
6134   struct type_unit_group *tu_group;
6135   struct attribute *attr;
6136   struct partial_die_info *first_die;
6137   CORE_ADDR lowpc, highpc;
6138   struct partial_symtab *pst;
6139
6140   gdb_assert (data == NULL);
6141   gdb_assert (per_cu->is_debug_types);
6142   sig_type = (struct signatured_type *) per_cu;
6143
6144   if (! has_children)
6145     return;
6146
6147   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
6148   tu_group = get_type_unit_group (cu, attr);
6149
6150   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
6151
6152   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
6153   cu->list_in_scope = &file_symbols;
6154   pst = create_partial_symtab (per_cu, "");
6155   pst->anonymous = 1;
6156
6157   first_die = load_partial_dies (reader, info_ptr, 1);
6158
6159   lowpc = (CORE_ADDR) -1;
6160   highpc = (CORE_ADDR) 0;
6161   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
6162
6163   pst->n_global_syms = objfile->global_psymbols.next -
6164     (objfile->global_psymbols.list + pst->globals_offset);
6165   pst->n_static_syms = objfile->static_psymbols.next -
6166     (objfile->static_psymbols.list + pst->statics_offset);
6167   sort_pst_symbols (objfile, pst);
6168 }
6169
6170 /* Traversal function for build_type_psymtabs.  */
6171
6172 static int
6173 build_type_psymtab_dependencies (void **slot, void *info)
6174 {
6175   struct objfile *objfile = dwarf2_per_objfile->objfile;
6176   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
6177   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
6178   struct partial_symtab *pst = per_cu->v.psymtab;
6179   int len = VEC_length (sig_type_ptr, tu_group->tus);
6180   struct signatured_type *iter;
6181   int i;
6182
6183   gdb_assert (len > 0);
6184   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
6185
6186   pst->number_of_dependencies = len;
6187   pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
6188                                      len * sizeof (struct psymtab *));
6189   for (i = 0;
6190        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
6191        ++i)
6192     {
6193       gdb_assert (iter->per_cu.is_debug_types);
6194       pst->dependencies[i] = iter->per_cu.v.psymtab;
6195       iter->type_unit_group = tu_group;
6196     }
6197
6198   VEC_free (sig_type_ptr, tu_group->tus);
6199
6200   return 1;
6201 }
6202
6203 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6204    Build partial symbol tables for the .debug_types comp-units.  */
6205
6206 static void
6207 build_type_psymtabs (struct objfile *objfile)
6208 {
6209   if (! create_all_type_units (objfile))
6210     return;
6211
6212   build_type_unit_groups (build_type_psymtabs_reader, NULL);
6213
6214   /* Now that all TUs have been processed we can fill in the dependencies.  */
6215   htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
6216                           build_type_psymtab_dependencies, NULL);
6217 }
6218
6219 /* A cleanup function that clears objfile's psymtabs_addrmap field.  */
6220
6221 static void
6222 psymtabs_addrmap_cleanup (void *o)
6223 {
6224   struct objfile *objfile = o;
6225
6226   objfile->psymtabs_addrmap = NULL;
6227 }
6228
6229 /* Compute the 'user' field for each psymtab in OBJFILE.  */
6230
6231 static void
6232 set_partial_user (struct objfile *objfile)
6233 {
6234   int i;
6235
6236   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6237     {
6238       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
6239       struct partial_symtab *pst = per_cu->v.psymtab;
6240       int j;
6241
6242       if (pst == NULL)
6243         continue;
6244
6245       for (j = 0; j < pst->number_of_dependencies; ++j)
6246         {
6247           /* Set the 'user' field only if it is not already set.  */
6248           if (pst->dependencies[j]->user == NULL)
6249             pst->dependencies[j]->user = pst;
6250         }
6251     }
6252 }
6253
6254 /* Build the partial symbol table by doing a quick pass through the
6255    .debug_info and .debug_abbrev sections.  */
6256
6257 static void
6258 dwarf2_build_psymtabs_hard (struct objfile *objfile)
6259 {
6260   struct cleanup *back_to, *addrmap_cleanup;
6261   struct obstack temp_obstack;
6262   int i;
6263
6264   if (dwarf2_read_debug)
6265     {
6266       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
6267                           objfile_name (objfile));
6268     }
6269
6270   dwarf2_per_objfile->reading_partial_symbols = 1;
6271
6272   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
6273
6274   /* Any cached compilation units will be linked by the per-objfile
6275      read_in_chain.  Make sure to free them when we're done.  */
6276   back_to = make_cleanup (free_cached_comp_units, NULL);
6277
6278   build_type_psymtabs (objfile);
6279
6280   create_all_comp_units (objfile);
6281
6282   /* Create a temporary address map on a temporary obstack.  We later
6283      copy this to the final obstack.  */
6284   obstack_init (&temp_obstack);
6285   make_cleanup_obstack_free (&temp_obstack);
6286   objfile->psymtabs_addrmap = addrmap_create_mutable (&temp_obstack);
6287   addrmap_cleanup = make_cleanup (psymtabs_addrmap_cleanup, objfile);
6288
6289   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6290     {
6291       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
6292
6293       process_psymtab_comp_unit (per_cu, 0, language_minimal);
6294     }
6295
6296   set_partial_user (objfile);
6297
6298   objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
6299                                                     &objfile->objfile_obstack);
6300   discard_cleanups (addrmap_cleanup);
6301
6302   do_cleanups (back_to);
6303
6304   if (dwarf2_read_debug)
6305     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
6306                         objfile_name (objfile));
6307 }
6308
6309 /* die_reader_func for load_partial_comp_unit.  */
6310
6311 static void
6312 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
6313                                const gdb_byte *info_ptr,
6314                                struct die_info *comp_unit_die,
6315                                int has_children,
6316                                void *data)
6317 {
6318   struct dwarf2_cu *cu = reader->cu;
6319
6320   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
6321
6322   /* Check if comp unit has_children.
6323      If so, read the rest of the partial symbols from this comp unit.
6324      If not, there's no more debug_info for this comp unit.  */
6325   if (has_children)
6326     load_partial_dies (reader, info_ptr, 0);
6327 }
6328
6329 /* Load the partial DIEs for a secondary CU into memory.
6330    This is also used when rereading a primary CU with load_all_dies.  */
6331
6332 static void
6333 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
6334 {
6335   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
6336                            load_partial_comp_unit_reader, NULL);
6337 }
6338
6339 static void
6340 read_comp_units_from_section (struct objfile *objfile,
6341                               struct dwarf2_section_info *section,
6342                               unsigned int is_dwz,
6343                               int *n_allocated,
6344                               int *n_comp_units,
6345                               struct dwarf2_per_cu_data ***all_comp_units)
6346 {
6347   const gdb_byte *info_ptr;
6348   bfd *abfd = get_section_bfd_owner (section);
6349
6350   if (dwarf2_read_debug)
6351     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
6352                         get_section_name (section),
6353                         get_section_file_name (section));
6354
6355   dwarf2_read_section (objfile, section);
6356
6357   info_ptr = section->buffer;
6358
6359   while (info_ptr < section->buffer + section->size)
6360     {
6361       unsigned int length, initial_length_size;
6362       struct dwarf2_per_cu_data *this_cu;
6363       sect_offset offset;
6364
6365       offset.sect_off = info_ptr - section->buffer;
6366
6367       /* Read just enough information to find out where the next
6368          compilation unit is.  */
6369       length = read_initial_length (abfd, info_ptr, &initial_length_size);
6370
6371       /* Save the compilation unit for later lookup.  */
6372       this_cu = obstack_alloc (&objfile->objfile_obstack,
6373                                sizeof (struct dwarf2_per_cu_data));
6374       memset (this_cu, 0, sizeof (*this_cu));
6375       this_cu->offset = offset;
6376       this_cu->length = length + initial_length_size;
6377       this_cu->is_dwz = is_dwz;
6378       this_cu->objfile = objfile;
6379       this_cu->section = section;
6380
6381       if (*n_comp_units == *n_allocated)
6382         {
6383           *n_allocated *= 2;
6384           *all_comp_units = xrealloc (*all_comp_units,
6385                                       *n_allocated
6386                                       * sizeof (struct dwarf2_per_cu_data *));
6387         }
6388       (*all_comp_units)[*n_comp_units] = this_cu;
6389       ++*n_comp_units;
6390
6391       info_ptr = info_ptr + this_cu->length;
6392     }
6393 }
6394
6395 /* Create a list of all compilation units in OBJFILE.
6396    This is only done for -readnow and building partial symtabs.  */
6397
6398 static void
6399 create_all_comp_units (struct objfile *objfile)
6400 {
6401   int n_allocated;
6402   int n_comp_units;
6403   struct dwarf2_per_cu_data **all_comp_units;
6404   struct dwz_file *dwz;
6405
6406   n_comp_units = 0;
6407   n_allocated = 10;
6408   all_comp_units = xmalloc (n_allocated
6409                             * sizeof (struct dwarf2_per_cu_data *));
6410
6411   read_comp_units_from_section (objfile, &dwarf2_per_objfile->info, 0,
6412                                 &n_allocated, &n_comp_units, &all_comp_units);
6413
6414   dwz = dwarf2_get_dwz_file ();
6415   if (dwz != NULL)
6416     read_comp_units_from_section (objfile, &dwz->info, 1,
6417                                   &n_allocated, &n_comp_units,
6418                                   &all_comp_units);
6419
6420   dwarf2_per_objfile->all_comp_units
6421     = obstack_alloc (&objfile->objfile_obstack,
6422                      n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6423   memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
6424           n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6425   xfree (all_comp_units);
6426   dwarf2_per_objfile->n_comp_units = n_comp_units;
6427 }
6428
6429 /* Process all loaded DIEs for compilation unit CU, starting at
6430    FIRST_DIE.  The caller should pass NEED_PC == 1 if the compilation
6431    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
6432    DW_AT_ranges).  If NEED_PC is set, then this function will set
6433    *LOWPC and *HIGHPC to the lowest and highest PC values found in CU
6434    and record the covered ranges in the addrmap.  */
6435
6436 static void
6437 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
6438                       CORE_ADDR *highpc, int need_pc, struct dwarf2_cu *cu)
6439 {
6440   struct partial_die_info *pdi;
6441
6442   /* Now, march along the PDI's, descending into ones which have
6443      interesting children but skipping the children of the other ones,
6444      until we reach the end of the compilation unit.  */
6445
6446   pdi = first_die;
6447
6448   while (pdi != NULL)
6449     {
6450       fixup_partial_die (pdi, cu);
6451
6452       /* Anonymous namespaces or modules have no name but have interesting
6453          children, so we need to look at them.  Ditto for anonymous
6454          enums.  */
6455
6456       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
6457           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
6458           || pdi->tag == DW_TAG_imported_unit)
6459         {
6460           switch (pdi->tag)
6461             {
6462             case DW_TAG_subprogram:
6463               add_partial_subprogram (pdi, lowpc, highpc, need_pc, cu);
6464               break;
6465             case DW_TAG_constant:
6466             case DW_TAG_variable:
6467             case DW_TAG_typedef:
6468             case DW_TAG_union_type:
6469               if (!pdi->is_declaration)
6470                 {
6471                   add_partial_symbol (pdi, cu);
6472                 }
6473               break;
6474             case DW_TAG_class_type:
6475             case DW_TAG_interface_type:
6476             case DW_TAG_structure_type:
6477               if (!pdi->is_declaration)
6478                 {
6479                   add_partial_symbol (pdi, cu);
6480                 }
6481               break;
6482             case DW_TAG_enumeration_type:
6483               if (!pdi->is_declaration)
6484                 add_partial_enumeration (pdi, cu);
6485               break;
6486             case DW_TAG_base_type:
6487             case DW_TAG_subrange_type:
6488               /* File scope base type definitions are added to the partial
6489                  symbol table.  */
6490               add_partial_symbol (pdi, cu);
6491               break;
6492             case DW_TAG_namespace:
6493               add_partial_namespace (pdi, lowpc, highpc, need_pc, cu);
6494               break;
6495             case DW_TAG_module:
6496               add_partial_module (pdi, lowpc, highpc, need_pc, cu);
6497               break;
6498             case DW_TAG_imported_unit:
6499               {
6500                 struct dwarf2_per_cu_data *per_cu;
6501
6502                 /* For now we don't handle imported units in type units.  */
6503                 if (cu->per_cu->is_debug_types)
6504                   {
6505                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
6506                              " supported in type units [in module %s]"),
6507                            objfile_name (cu->objfile));
6508                   }
6509
6510                 per_cu = dwarf2_find_containing_comp_unit (pdi->d.offset,
6511                                                            pdi->is_dwz,
6512                                                            cu->objfile);
6513
6514                 /* Go read the partial unit, if needed.  */
6515                 if (per_cu->v.psymtab == NULL)
6516                   process_psymtab_comp_unit (per_cu, 1, cu->language);
6517
6518                 VEC_safe_push (dwarf2_per_cu_ptr,
6519                                cu->per_cu->imported_symtabs, per_cu);
6520               }
6521               break;
6522             case DW_TAG_imported_declaration:
6523               add_partial_symbol (pdi, cu);
6524               break;
6525             default:
6526               break;
6527             }
6528         }
6529
6530       /* If the die has a sibling, skip to the sibling.  */
6531
6532       pdi = pdi->die_sibling;
6533     }
6534 }
6535
6536 /* Functions used to compute the fully scoped name of a partial DIE.
6537
6538    Normally, this is simple.  For C++, the parent DIE's fully scoped
6539    name is concatenated with "::" and the partial DIE's name.  For
6540    Java, the same thing occurs except that "." is used instead of "::".
6541    Enumerators are an exception; they use the scope of their parent
6542    enumeration type, i.e. the name of the enumeration type is not
6543    prepended to the enumerator.
6544
6545    There are two complexities.  One is DW_AT_specification; in this
6546    case "parent" means the parent of the target of the specification,
6547    instead of the direct parent of the DIE.  The other is compilers
6548    which do not emit DW_TAG_namespace; in this case we try to guess
6549    the fully qualified name of structure types from their members'
6550    linkage names.  This must be done using the DIE's children rather
6551    than the children of any DW_AT_specification target.  We only need
6552    to do this for structures at the top level, i.e. if the target of
6553    any DW_AT_specification (if any; otherwise the DIE itself) does not
6554    have a parent.  */
6555
6556 /* Compute the scope prefix associated with PDI's parent, in
6557    compilation unit CU.  The result will be allocated on CU's
6558    comp_unit_obstack, or a copy of the already allocated PDI->NAME
6559    field.  NULL is returned if no prefix is necessary.  */
6560 static const char *
6561 partial_die_parent_scope (struct partial_die_info *pdi,
6562                           struct dwarf2_cu *cu)
6563 {
6564   const char *grandparent_scope;
6565   struct partial_die_info *parent, *real_pdi;
6566
6567   /* We need to look at our parent DIE; if we have a DW_AT_specification,
6568      then this means the parent of the specification DIE.  */
6569
6570   real_pdi = pdi;
6571   while (real_pdi->has_specification)
6572     real_pdi = find_partial_die (real_pdi->spec_offset,
6573                                  real_pdi->spec_is_dwz, cu);
6574
6575   parent = real_pdi->die_parent;
6576   if (parent == NULL)
6577     return NULL;
6578
6579   if (parent->scope_set)
6580     return parent->scope;
6581
6582   fixup_partial_die (parent, cu);
6583
6584   grandparent_scope = partial_die_parent_scope (parent, cu);
6585
6586   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
6587      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
6588      Work around this problem here.  */
6589   if (cu->language == language_cplus
6590       && parent->tag == DW_TAG_namespace
6591       && strcmp (parent->name, "::") == 0
6592       && grandparent_scope == NULL)
6593     {
6594       parent->scope = NULL;
6595       parent->scope_set = 1;
6596       return NULL;
6597     }
6598
6599   if (pdi->tag == DW_TAG_enumerator)
6600     /* Enumerators should not get the name of the enumeration as a prefix.  */
6601     parent->scope = grandparent_scope;
6602   else if (parent->tag == DW_TAG_namespace
6603       || parent->tag == DW_TAG_module
6604       || parent->tag == DW_TAG_structure_type
6605       || parent->tag == DW_TAG_class_type
6606       || parent->tag == DW_TAG_interface_type
6607       || parent->tag == DW_TAG_union_type
6608       || parent->tag == DW_TAG_enumeration_type)
6609     {
6610       if (grandparent_scope == NULL)
6611         parent->scope = parent->name;
6612       else
6613         parent->scope = typename_concat (&cu->comp_unit_obstack,
6614                                          grandparent_scope,
6615                                          parent->name, 0, cu);
6616     }
6617   else
6618     {
6619       /* FIXME drow/2004-04-01: What should we be doing with
6620          function-local names?  For partial symbols, we should probably be
6621          ignoring them.  */
6622       complaint (&symfile_complaints,
6623                  _("unhandled containing DIE tag %d for DIE at %d"),
6624                  parent->tag, pdi->offset.sect_off);
6625       parent->scope = grandparent_scope;
6626     }
6627
6628   parent->scope_set = 1;
6629   return parent->scope;
6630 }
6631
6632 /* Return the fully scoped name associated with PDI, from compilation unit
6633    CU.  The result will be allocated with malloc.  */
6634
6635 static char *
6636 partial_die_full_name (struct partial_die_info *pdi,
6637                        struct dwarf2_cu *cu)
6638 {
6639   const char *parent_scope;
6640
6641   /* If this is a template instantiation, we can not work out the
6642      template arguments from partial DIEs.  So, unfortunately, we have
6643      to go through the full DIEs.  At least any work we do building
6644      types here will be reused if full symbols are loaded later.  */
6645   if (pdi->has_template_arguments)
6646     {
6647       fixup_partial_die (pdi, cu);
6648
6649       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
6650         {
6651           struct die_info *die;
6652           struct attribute attr;
6653           struct dwarf2_cu *ref_cu = cu;
6654
6655           /* DW_FORM_ref_addr is using section offset.  */
6656           attr.name = 0;
6657           attr.form = DW_FORM_ref_addr;
6658           attr.u.unsnd = pdi->offset.sect_off;
6659           die = follow_die_ref (NULL, &attr, &ref_cu);
6660
6661           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
6662         }
6663     }
6664
6665   parent_scope = partial_die_parent_scope (pdi, cu);
6666   if (parent_scope == NULL)
6667     return NULL;
6668   else
6669     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
6670 }
6671
6672 static void
6673 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
6674 {
6675   struct objfile *objfile = cu->objfile;
6676   CORE_ADDR addr = 0;
6677   const char *actual_name = NULL;
6678   CORE_ADDR baseaddr;
6679   char *built_actual_name;
6680
6681   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
6682
6683   built_actual_name = partial_die_full_name (pdi, cu);
6684   if (built_actual_name != NULL)
6685     actual_name = built_actual_name;
6686
6687   if (actual_name == NULL)
6688     actual_name = pdi->name;
6689
6690   switch (pdi->tag)
6691     {
6692     case DW_TAG_subprogram:
6693       if (pdi->is_external || cu->language == language_ada)
6694         {
6695           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
6696              of the global scope.  But in Ada, we want to be able to access
6697              nested procedures globally.  So all Ada subprograms are stored
6698              in the global scope.  */
6699           /* prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr,
6700              mst_text, objfile); */
6701           add_psymbol_to_list (actual_name, strlen (actual_name),
6702                                built_actual_name != NULL,
6703                                VAR_DOMAIN, LOC_BLOCK,
6704                                &objfile->global_psymbols,
6705                                0, pdi->lowpc + baseaddr,
6706                                cu->language, objfile);
6707         }
6708       else
6709         {
6710           /* prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr,
6711              mst_file_text, objfile); */
6712           add_psymbol_to_list (actual_name, strlen (actual_name),
6713                                built_actual_name != NULL,
6714                                VAR_DOMAIN, LOC_BLOCK,
6715                                &objfile->static_psymbols,
6716                                0, pdi->lowpc + baseaddr,
6717                                cu->language, objfile);
6718         }
6719       break;
6720     case DW_TAG_constant:
6721       {
6722         struct psymbol_allocation_list *list;
6723
6724         if (pdi->is_external)
6725           list = &objfile->global_psymbols;
6726         else
6727           list = &objfile->static_psymbols;
6728         add_psymbol_to_list (actual_name, strlen (actual_name),
6729                              built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
6730                              list, 0, 0, cu->language, objfile);
6731       }
6732       break;
6733     case DW_TAG_variable:
6734       if (pdi->d.locdesc)
6735         addr = decode_locdesc (pdi->d.locdesc, cu);
6736
6737       if (pdi->d.locdesc
6738           && addr == 0
6739           && !dwarf2_per_objfile->has_section_at_zero)
6740         {
6741           /* A global or static variable may also have been stripped
6742              out by the linker if unused, in which case its address
6743              will be nullified; do not add such variables into partial
6744              symbol table then.  */
6745         }
6746       else if (pdi->is_external)
6747         {
6748           /* Global Variable.
6749              Don't enter into the minimal symbol tables as there is
6750              a minimal symbol table entry from the ELF symbols already.
6751              Enter into partial symbol table if it has a location
6752              descriptor or a type.
6753              If the location descriptor is missing, new_symbol will create
6754              a LOC_UNRESOLVED symbol, the address of the variable will then
6755              be determined from the minimal symbol table whenever the variable
6756              is referenced.
6757              The address for the partial symbol table entry is not
6758              used by GDB, but it comes in handy for debugging partial symbol
6759              table building.  */
6760
6761           if (pdi->d.locdesc || pdi->has_type)
6762             add_psymbol_to_list (actual_name, strlen (actual_name),
6763                                  built_actual_name != NULL,
6764                                  VAR_DOMAIN, LOC_STATIC,
6765                                  &objfile->global_psymbols,
6766                                  0, addr + baseaddr,
6767                                  cu->language, objfile);
6768         }
6769       else
6770         {
6771           /* Static Variable.  Skip symbols without location descriptors.  */
6772           if (pdi->d.locdesc == NULL)
6773             {
6774               xfree (built_actual_name);
6775               return;
6776             }
6777           /* prim_record_minimal_symbol (actual_name, addr + baseaddr,
6778              mst_file_data, objfile); */
6779           add_psymbol_to_list (actual_name, strlen (actual_name),
6780                                built_actual_name != NULL,
6781                                VAR_DOMAIN, LOC_STATIC,
6782                                &objfile->static_psymbols,
6783                                0, addr + baseaddr,
6784                                cu->language, objfile);
6785         }
6786       break;
6787     case DW_TAG_typedef:
6788     case DW_TAG_base_type:
6789     case DW_TAG_subrange_type:
6790       add_psymbol_to_list (actual_name, strlen (actual_name),
6791                            built_actual_name != NULL,
6792                            VAR_DOMAIN, LOC_TYPEDEF,
6793                            &objfile->static_psymbols,
6794                            0, (CORE_ADDR) 0, cu->language, objfile);
6795       break;
6796     case DW_TAG_imported_declaration:
6797     case DW_TAG_namespace:
6798       add_psymbol_to_list (actual_name, strlen (actual_name),
6799                            built_actual_name != NULL,
6800                            VAR_DOMAIN, LOC_TYPEDEF,
6801                            &objfile->global_psymbols,
6802                            0, (CORE_ADDR) 0, cu->language, objfile);
6803       break;
6804     case DW_TAG_class_type:
6805     case DW_TAG_interface_type:
6806     case DW_TAG_structure_type:
6807     case DW_TAG_union_type:
6808     case DW_TAG_enumeration_type:
6809       /* Skip external references.  The DWARF standard says in the section
6810          about "Structure, Union, and Class Type Entries": "An incomplete
6811          structure, union or class type is represented by a structure,
6812          union or class entry that does not have a byte size attribute
6813          and that has a DW_AT_declaration attribute."  */
6814       if (!pdi->has_byte_size && pdi->is_declaration)
6815         {
6816           xfree (built_actual_name);
6817           return;
6818         }
6819
6820       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
6821          static vs. global.  */
6822       add_psymbol_to_list (actual_name, strlen (actual_name),
6823                            built_actual_name != NULL,
6824                            STRUCT_DOMAIN, LOC_TYPEDEF,
6825                            (cu->language == language_cplus
6826                             || cu->language == language_java)
6827                            ? &objfile->global_psymbols
6828                            : &objfile->static_psymbols,
6829                            0, (CORE_ADDR) 0, cu->language, objfile);
6830
6831       break;
6832     case DW_TAG_enumerator:
6833       add_psymbol_to_list (actual_name, strlen (actual_name),
6834                            built_actual_name != NULL,
6835                            VAR_DOMAIN, LOC_CONST,
6836                            (cu->language == language_cplus
6837                             || cu->language == language_java)
6838                            ? &objfile->global_psymbols
6839                            : &objfile->static_psymbols,
6840                            0, (CORE_ADDR) 0, cu->language, objfile);
6841       break;
6842     default:
6843       break;
6844     }
6845
6846   xfree (built_actual_name);
6847 }
6848
6849 /* Read a partial die corresponding to a namespace; also, add a symbol
6850    corresponding to that namespace to the symbol table.  NAMESPACE is
6851    the name of the enclosing namespace.  */
6852
6853 static void
6854 add_partial_namespace (struct partial_die_info *pdi,
6855                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
6856                        int need_pc, struct dwarf2_cu *cu)
6857 {
6858   /* Add a symbol for the namespace.  */
6859
6860   add_partial_symbol (pdi, cu);
6861
6862   /* Now scan partial symbols in that namespace.  */
6863
6864   if (pdi->has_children)
6865     scan_partial_symbols (pdi->die_child, lowpc, highpc, need_pc, cu);
6866 }
6867
6868 /* Read a partial die corresponding to a Fortran module.  */
6869
6870 static void
6871 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
6872                     CORE_ADDR *highpc, int need_pc, struct dwarf2_cu *cu)
6873 {
6874   /* Now scan partial symbols in that module.  */
6875
6876   if (pdi->has_children)
6877     scan_partial_symbols (pdi->die_child, lowpc, highpc, need_pc, cu);
6878 }
6879
6880 /* Read a partial die corresponding to a subprogram and create a partial
6881    symbol for that subprogram.  When the CU language allows it, this
6882    routine also defines a partial symbol for each nested subprogram
6883    that this subprogram contains.
6884
6885    DIE my also be a lexical block, in which case we simply search
6886    recursively for suprograms defined inside that lexical block.
6887    Again, this is only performed when the CU language allows this
6888    type of definitions.  */
6889
6890 static void
6891 add_partial_subprogram (struct partial_die_info *pdi,
6892                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
6893                         int need_pc, struct dwarf2_cu *cu)
6894 {
6895   if (pdi->tag == DW_TAG_subprogram)
6896     {
6897       if (pdi->has_pc_info)
6898         {
6899           if (pdi->lowpc < *lowpc)
6900             *lowpc = pdi->lowpc;
6901           if (pdi->highpc > *highpc)
6902             *highpc = pdi->highpc;
6903           if (need_pc)
6904             {
6905               CORE_ADDR baseaddr;
6906               struct objfile *objfile = cu->objfile;
6907
6908               baseaddr = ANOFFSET (objfile->section_offsets,
6909                                    SECT_OFF_TEXT (objfile));
6910               addrmap_set_empty (objfile->psymtabs_addrmap,
6911                                  pdi->lowpc + baseaddr,
6912                                  pdi->highpc - 1 + baseaddr,
6913                                  cu->per_cu->v.psymtab);
6914             }
6915         }
6916
6917       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
6918         {
6919           if (!pdi->is_declaration)
6920             /* Ignore subprogram DIEs that do not have a name, they are
6921                illegal.  Do not emit a complaint at this point, we will
6922                do so when we convert this psymtab into a symtab.  */
6923             if (pdi->name)
6924               add_partial_symbol (pdi, cu);
6925         }
6926     }
6927
6928   if (! pdi->has_children)
6929     return;
6930
6931   if (cu->language == language_ada)
6932     {
6933       pdi = pdi->die_child;
6934       while (pdi != NULL)
6935         {
6936           fixup_partial_die (pdi, cu);
6937           if (pdi->tag == DW_TAG_subprogram
6938               || pdi->tag == DW_TAG_lexical_block)
6939             add_partial_subprogram (pdi, lowpc, highpc, need_pc, cu);
6940           pdi = pdi->die_sibling;
6941         }
6942     }
6943 }
6944
6945 /* Read a partial die corresponding to an enumeration type.  */
6946
6947 static void
6948 add_partial_enumeration (struct partial_die_info *enum_pdi,
6949                          struct dwarf2_cu *cu)
6950 {
6951   struct partial_die_info *pdi;
6952
6953   if (enum_pdi->name != NULL)
6954     add_partial_symbol (enum_pdi, cu);
6955
6956   pdi = enum_pdi->die_child;
6957   while (pdi)
6958     {
6959       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
6960         complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
6961       else
6962         add_partial_symbol (pdi, cu);
6963       pdi = pdi->die_sibling;
6964     }
6965 }
6966
6967 /* Return the initial uleb128 in the die at INFO_PTR.  */
6968
6969 static unsigned int
6970 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
6971 {
6972   unsigned int bytes_read;
6973
6974   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
6975 }
6976
6977 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
6978    Return the corresponding abbrev, or NULL if the number is zero (indicating
6979    an empty DIE).  In either case *BYTES_READ will be set to the length of
6980    the initial number.  */
6981
6982 static struct abbrev_info *
6983 peek_die_abbrev (const gdb_byte *info_ptr, unsigned int *bytes_read,
6984                  struct dwarf2_cu *cu)
6985 {
6986   bfd *abfd = cu->objfile->obfd;
6987   unsigned int abbrev_number;
6988   struct abbrev_info *abbrev;
6989
6990   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
6991
6992   if (abbrev_number == 0)
6993     return NULL;
6994
6995   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
6996   if (!abbrev)
6997     {
6998       error (_("Dwarf Error: Could not find abbrev number %d [in module %s]"),
6999              abbrev_number, bfd_get_filename (abfd));
7000     }
7001
7002   return abbrev;
7003 }
7004
7005 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7006    Returns a pointer to the end of a series of DIEs, terminated by an empty
7007    DIE.  Any children of the skipped DIEs will also be skipped.  */
7008
7009 static const gdb_byte *
7010 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
7011 {
7012   struct dwarf2_cu *cu = reader->cu;
7013   struct abbrev_info *abbrev;
7014   unsigned int bytes_read;
7015
7016   while (1)
7017     {
7018       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
7019       if (abbrev == NULL)
7020         return info_ptr + bytes_read;
7021       else
7022         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
7023     }
7024 }
7025
7026 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7027    INFO_PTR should point just after the initial uleb128 of a DIE, and the
7028    abbrev corresponding to that skipped uleb128 should be passed in
7029    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
7030    children.  */
7031
7032 static const gdb_byte *
7033 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
7034               struct abbrev_info *abbrev)
7035 {
7036   unsigned int bytes_read;
7037   struct attribute attr;
7038   bfd *abfd = reader->abfd;
7039   struct dwarf2_cu *cu = reader->cu;
7040   const gdb_byte *buffer = reader->buffer;
7041   const gdb_byte *buffer_end = reader->buffer_end;
7042   const gdb_byte *start_info_ptr = info_ptr;
7043   unsigned int form, i;
7044
7045   for (i = 0; i < abbrev->num_attrs; i++)
7046     {
7047       /* The only abbrev we care about is DW_AT_sibling.  */
7048       if (abbrev->attrs[i].name == DW_AT_sibling)
7049         {
7050           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
7051           if (attr.form == DW_FORM_ref_addr)
7052             complaint (&symfile_complaints,
7053                        _("ignoring absolute DW_AT_sibling"));
7054           else
7055             {
7056               unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
7057               const gdb_byte *sibling_ptr = buffer + off;
7058
7059               if (sibling_ptr < info_ptr)
7060                 complaint (&symfile_complaints,
7061                            _("DW_AT_sibling points backwards"));
7062               else
7063                 return sibling_ptr;
7064             }
7065         }
7066
7067       /* If it isn't DW_AT_sibling, skip this attribute.  */
7068       form = abbrev->attrs[i].form;
7069     skip_attribute:
7070       switch (form)
7071         {
7072         case DW_FORM_ref_addr:
7073           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
7074              and later it is offset sized.  */
7075           if (cu->header.version == 2)
7076             info_ptr += cu->header.addr_size;
7077           else
7078             info_ptr += cu->header.offset_size;
7079           break;
7080         case DW_FORM_GNU_ref_alt:
7081           info_ptr += cu->header.offset_size;
7082           break;
7083         case DW_FORM_addr:
7084           info_ptr += cu->header.addr_size;
7085           break;
7086         case DW_FORM_data1:
7087         case DW_FORM_ref1:
7088         case DW_FORM_flag:
7089           info_ptr += 1;
7090           break;
7091         case DW_FORM_flag_present:
7092           break;
7093         case DW_FORM_data2:
7094         case DW_FORM_ref2:
7095           info_ptr += 2;
7096           break;
7097         case DW_FORM_data4:
7098         case DW_FORM_ref4:
7099           info_ptr += 4;
7100           break;
7101         case DW_FORM_data8:
7102         case DW_FORM_ref8:
7103         case DW_FORM_ref_sig8:
7104           info_ptr += 8;
7105           break;
7106         case DW_FORM_string:
7107           read_direct_string (abfd, info_ptr, &bytes_read);
7108           info_ptr += bytes_read;
7109           break;
7110         case DW_FORM_sec_offset:
7111         case DW_FORM_strp:
7112         case DW_FORM_GNU_strp_alt:
7113           info_ptr += cu->header.offset_size;
7114           break;
7115         case DW_FORM_exprloc:
7116         case DW_FORM_block:
7117           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7118           info_ptr += bytes_read;
7119           break;
7120         case DW_FORM_block1:
7121           info_ptr += 1 + read_1_byte (abfd, info_ptr);
7122           break;
7123         case DW_FORM_block2:
7124           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
7125           break;
7126         case DW_FORM_block4:
7127           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
7128           break;
7129         case DW_FORM_sdata:
7130         case DW_FORM_udata:
7131         case DW_FORM_ref_udata:
7132         case DW_FORM_GNU_addr_index:
7133         case DW_FORM_GNU_str_index:
7134           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
7135           break;
7136         case DW_FORM_indirect:
7137           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7138           info_ptr += bytes_read;
7139           /* We need to continue parsing from here, so just go back to
7140              the top.  */
7141           goto skip_attribute;
7142
7143         default:
7144           error (_("Dwarf Error: Cannot handle %s "
7145                    "in DWARF reader [in module %s]"),
7146                  dwarf_form_name (form),
7147                  bfd_get_filename (abfd));
7148         }
7149     }
7150
7151   if (abbrev->has_children)
7152     return skip_children (reader, info_ptr);
7153   else
7154     return info_ptr;
7155 }
7156
7157 /* Locate ORIG_PDI's sibling.
7158    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
7159
7160 static const gdb_byte *
7161 locate_pdi_sibling (const struct die_reader_specs *reader,
7162                     struct partial_die_info *orig_pdi,
7163                     const gdb_byte *info_ptr)
7164 {
7165   /* Do we know the sibling already?  */
7166
7167   if (orig_pdi->sibling)
7168     return orig_pdi->sibling;
7169
7170   /* Are there any children to deal with?  */
7171
7172   if (!orig_pdi->has_children)
7173     return info_ptr;
7174
7175   /* Skip the children the long way.  */
7176
7177   return skip_children (reader, info_ptr);
7178 }
7179
7180 /* Expand this partial symbol table into a full symbol table.  SELF is
7181    not NULL.  */
7182
7183 static void
7184 dwarf2_read_symtab (struct partial_symtab *self,
7185                     struct objfile *objfile)
7186 {
7187   if (self->readin)
7188     {
7189       warning (_("bug: psymtab for %s is already read in."),
7190                self->filename);
7191     }
7192   else
7193     {
7194       if (info_verbose)
7195         {
7196           printf_filtered (_("Reading in symbols for %s..."),
7197                            self->filename);
7198           gdb_flush (gdb_stdout);
7199         }
7200
7201       /* Restore our global data.  */
7202       dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
7203
7204       /* If this psymtab is constructed from a debug-only objfile, the
7205          has_section_at_zero flag will not necessarily be correct.  We
7206          can get the correct value for this flag by looking at the data
7207          associated with the (presumably stripped) associated objfile.  */
7208       if (objfile->separate_debug_objfile_backlink)
7209         {
7210           struct dwarf2_per_objfile *dpo_backlink
7211             = objfile_data (objfile->separate_debug_objfile_backlink,
7212                             dwarf2_objfile_data_key);
7213
7214           dwarf2_per_objfile->has_section_at_zero
7215             = dpo_backlink->has_section_at_zero;
7216         }
7217
7218       dwarf2_per_objfile->reading_partial_symbols = 0;
7219
7220       psymtab_to_symtab_1 (self);
7221
7222       /* Finish up the debug error message.  */
7223       if (info_verbose)
7224         printf_filtered (_("done.\n"));
7225     }
7226
7227   process_cu_includes ();
7228 }
7229 \f
7230 /* Reading in full CUs.  */
7231
7232 /* Add PER_CU to the queue.  */
7233
7234 static void
7235 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
7236                  enum language pretend_language)
7237 {
7238   struct dwarf2_queue_item *item;
7239
7240   per_cu->queued = 1;
7241   item = xmalloc (sizeof (*item));
7242   item->per_cu = per_cu;
7243   item->pretend_language = pretend_language;
7244   item->next = NULL;
7245
7246   if (dwarf2_queue == NULL)
7247     dwarf2_queue = item;
7248   else
7249     dwarf2_queue_tail->next = item;
7250
7251   dwarf2_queue_tail = item;
7252 }
7253
7254 /* If PER_CU is not yet queued, add it to the queue.
7255    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
7256    dependency.
7257    The result is non-zero if PER_CU was queued, otherwise the result is zero
7258    meaning either PER_CU is already queued or it is already loaded.
7259
7260    N.B. There is an invariant here that if a CU is queued then it is loaded.
7261    The caller is required to load PER_CU if we return non-zero.  */
7262
7263 static int
7264 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
7265                        struct dwarf2_per_cu_data *per_cu,
7266                        enum language pretend_language)
7267 {
7268   /* We may arrive here during partial symbol reading, if we need full
7269      DIEs to process an unusual case (e.g. template arguments).  Do
7270      not queue PER_CU, just tell our caller to load its DIEs.  */
7271   if (dwarf2_per_objfile->reading_partial_symbols)
7272     {
7273       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
7274         return 1;
7275       return 0;
7276     }
7277
7278   /* Mark the dependence relation so that we don't flush PER_CU
7279      too early.  */
7280   if (dependent_cu != NULL)
7281     dwarf2_add_dependence (dependent_cu, per_cu);
7282
7283   /* If it's already on the queue, we have nothing to do.  */
7284   if (per_cu->queued)
7285     return 0;
7286
7287   /* If the compilation unit is already loaded, just mark it as
7288      used.  */
7289   if (per_cu->cu != NULL)
7290     {
7291       per_cu->cu->last_used = 0;
7292       return 0;
7293     }
7294
7295   /* Add it to the queue.  */
7296   queue_comp_unit (per_cu, pretend_language);
7297
7298   return 1;
7299 }
7300
7301 /* Process the queue.  */
7302
7303 static void
7304 process_queue (void)
7305 {
7306   struct dwarf2_queue_item *item, *next_item;
7307
7308   if (dwarf2_read_debug)
7309     {
7310       fprintf_unfiltered (gdb_stdlog,
7311                           "Expanding one or more symtabs of objfile %s ...\n",
7312                           objfile_name (dwarf2_per_objfile->objfile));
7313     }
7314
7315   /* The queue starts out with one item, but following a DIE reference
7316      may load a new CU, adding it to the end of the queue.  */
7317   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
7318     {
7319       if (dwarf2_per_objfile->using_index
7320           ? !item->per_cu->v.quick->symtab
7321           : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
7322         {
7323           struct dwarf2_per_cu_data *per_cu = item->per_cu;
7324           unsigned int debug_print_threshold;
7325           char buf[100];
7326
7327           if (per_cu->is_debug_types)
7328             {
7329               struct signatured_type *sig_type =
7330                 (struct signatured_type *) per_cu;
7331
7332               sprintf (buf, "TU %s at offset 0x%x",
7333                        hex_string (sig_type->signature),
7334                        per_cu->offset.sect_off);
7335               /* There can be 100s of TUs.
7336                  Only print them in verbose mode.  */
7337               debug_print_threshold = 2;
7338             }
7339           else
7340             {
7341               sprintf (buf, "CU at offset 0x%x", per_cu->offset.sect_off);
7342               debug_print_threshold = 1;
7343             }
7344
7345           if (dwarf2_read_debug >= debug_print_threshold)
7346             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
7347
7348           if (per_cu->is_debug_types)
7349             process_full_type_unit (per_cu, item->pretend_language);
7350           else
7351             process_full_comp_unit (per_cu, item->pretend_language);
7352
7353           if (dwarf2_read_debug >= debug_print_threshold)
7354             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
7355         }
7356
7357       item->per_cu->queued = 0;
7358       next_item = item->next;
7359       xfree (item);
7360     }
7361
7362   dwarf2_queue_tail = NULL;
7363
7364   if (dwarf2_read_debug)
7365     {
7366       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
7367                           objfile_name (dwarf2_per_objfile->objfile));
7368     }
7369 }
7370
7371 /* Free all allocated queue entries.  This function only releases anything if
7372    an error was thrown; if the queue was processed then it would have been
7373    freed as we went along.  */
7374
7375 static void
7376 dwarf2_release_queue (void *dummy)
7377 {
7378   struct dwarf2_queue_item *item, *last;
7379
7380   item = dwarf2_queue;
7381   while (item)
7382     {
7383       /* Anything still marked queued is likely to be in an
7384          inconsistent state, so discard it.  */
7385       if (item->per_cu->queued)
7386         {
7387           if (item->per_cu->cu != NULL)
7388             free_one_cached_comp_unit (item->per_cu);
7389           item->per_cu->queued = 0;
7390         }
7391
7392       last = item;
7393       item = item->next;
7394       xfree (last);
7395     }
7396
7397   dwarf2_queue = dwarf2_queue_tail = NULL;
7398 }
7399
7400 /* Read in full symbols for PST, and anything it depends on.  */
7401
7402 static void
7403 psymtab_to_symtab_1 (struct partial_symtab *pst)
7404 {
7405   struct dwarf2_per_cu_data *per_cu;
7406   int i;
7407
7408   if (pst->readin)
7409     return;
7410
7411   for (i = 0; i < pst->number_of_dependencies; i++)
7412     if (!pst->dependencies[i]->readin
7413         && pst->dependencies[i]->user == NULL)
7414       {
7415         /* Inform about additional files that need to be read in.  */
7416         if (info_verbose)
7417           {
7418             /* FIXME: i18n: Need to make this a single string.  */
7419             fputs_filtered (" ", gdb_stdout);
7420             wrap_here ("");
7421             fputs_filtered ("and ", gdb_stdout);
7422             wrap_here ("");
7423             printf_filtered ("%s...", pst->dependencies[i]->filename);
7424             wrap_here ("");     /* Flush output.  */
7425             gdb_flush (gdb_stdout);
7426           }
7427         psymtab_to_symtab_1 (pst->dependencies[i]);
7428       }
7429
7430   per_cu = pst->read_symtab_private;
7431
7432   if (per_cu == NULL)
7433     {
7434       /* It's an include file, no symbols to read for it.
7435          Everything is in the parent symtab.  */
7436       pst->readin = 1;
7437       return;
7438     }
7439
7440   dw2_do_instantiate_symtab (per_cu);
7441 }
7442
7443 /* Trivial hash function for die_info: the hash value of a DIE
7444    is its offset in .debug_info for this objfile.  */
7445
7446 static hashval_t
7447 die_hash (const void *item)
7448 {
7449   const struct die_info *die = item;
7450
7451   return die->offset.sect_off;
7452 }
7453
7454 /* Trivial comparison function for die_info structures: two DIEs
7455    are equal if they have the same offset.  */
7456
7457 static int
7458 die_eq (const void *item_lhs, const void *item_rhs)
7459 {
7460   const struct die_info *die_lhs = item_lhs;
7461   const struct die_info *die_rhs = item_rhs;
7462
7463   return die_lhs->offset.sect_off == die_rhs->offset.sect_off;
7464 }
7465
7466 /* die_reader_func for load_full_comp_unit.
7467    This is identical to read_signatured_type_reader,
7468    but is kept separate for now.  */
7469
7470 static void
7471 load_full_comp_unit_reader (const struct die_reader_specs *reader,
7472                             const gdb_byte *info_ptr,
7473                             struct die_info *comp_unit_die,
7474                             int has_children,
7475                             void *data)
7476 {
7477   struct dwarf2_cu *cu = reader->cu;
7478   enum language *language_ptr = data;
7479
7480   gdb_assert (cu->die_hash == NULL);
7481   cu->die_hash =
7482     htab_create_alloc_ex (cu->header.length / 12,
7483                           die_hash,
7484                           die_eq,
7485                           NULL,
7486                           &cu->comp_unit_obstack,
7487                           hashtab_obstack_allocate,
7488                           dummy_obstack_deallocate);
7489
7490   if (has_children)
7491     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
7492                                                   &info_ptr, comp_unit_die);
7493   cu->dies = comp_unit_die;
7494   /* comp_unit_die is not stored in die_hash, no need.  */
7495
7496   /* We try not to read any attributes in this function, because not
7497      all CUs needed for references have been loaded yet, and symbol
7498      table processing isn't initialized.  But we have to set the CU language,
7499      or we won't be able to build types correctly.
7500      Similarly, if we do not read the producer, we can not apply
7501      producer-specific interpretation.  */
7502   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
7503 }
7504
7505 /* Load the DIEs associated with PER_CU into memory.  */
7506
7507 static void
7508 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
7509                      enum language pretend_language)
7510 {
7511   gdb_assert (! this_cu->is_debug_types);
7512
7513   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
7514                            load_full_comp_unit_reader, &pretend_language);
7515 }
7516
7517 /* Add a DIE to the delayed physname list.  */
7518
7519 static void
7520 add_to_method_list (struct type *type, int fnfield_index, int index,
7521                     const char *name, struct die_info *die,
7522                     struct dwarf2_cu *cu)
7523 {
7524   struct delayed_method_info mi;
7525   mi.type = type;
7526   mi.fnfield_index = fnfield_index;
7527   mi.index = index;
7528   mi.name = name;
7529   mi.die = die;
7530   VEC_safe_push (delayed_method_info, cu->method_list, &mi);
7531 }
7532
7533 /* A cleanup for freeing the delayed method list.  */
7534
7535 static void
7536 free_delayed_list (void *ptr)
7537 {
7538   struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
7539   if (cu->method_list != NULL)
7540     {
7541       VEC_free (delayed_method_info, cu->method_list);
7542       cu->method_list = NULL;
7543     }
7544 }
7545
7546 /* Compute the physnames of any methods on the CU's method list.
7547
7548    The computation of method physnames is delayed in order to avoid the
7549    (bad) condition that one of the method's formal parameters is of an as yet
7550    incomplete type.  */
7551
7552 static void
7553 compute_delayed_physnames (struct dwarf2_cu *cu)
7554 {
7555   int i;
7556   struct delayed_method_info *mi;
7557   for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
7558     {
7559       const char *physname;
7560       struct fn_fieldlist *fn_flp
7561         = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
7562       physname = dwarf2_physname (mi->name, mi->die, cu);
7563       fn_flp->fn_fields[mi->index].physname = physname ? physname : "";
7564     }
7565 }
7566
7567 /* Go objects should be embedded in a DW_TAG_module DIE,
7568    and it's not clear if/how imported objects will appear.
7569    To keep Go support simple until that's worked out,
7570    go back through what we've read and create something usable.
7571    We could do this while processing each DIE, and feels kinda cleaner,
7572    but that way is more invasive.
7573    This is to, for example, allow the user to type "p var" or "b main"
7574    without having to specify the package name, and allow lookups
7575    of module.object to work in contexts that use the expression
7576    parser.  */
7577
7578 static void
7579 fixup_go_packaging (struct dwarf2_cu *cu)
7580 {
7581   char *package_name = NULL;
7582   struct pending *list;
7583   int i;
7584
7585   for (list = global_symbols; list != NULL; list = list->next)
7586     {
7587       for (i = 0; i < list->nsyms; ++i)
7588         {
7589           struct symbol *sym = list->symbol[i];
7590
7591           if (SYMBOL_LANGUAGE (sym) == language_go
7592               && SYMBOL_CLASS (sym) == LOC_BLOCK)
7593             {
7594               char *this_package_name = go_symbol_package_name (sym);
7595
7596               if (this_package_name == NULL)
7597                 continue;
7598               if (package_name == NULL)
7599                 package_name = this_package_name;
7600               else
7601                 {
7602                   if (strcmp (package_name, this_package_name) != 0)
7603                     complaint (&symfile_complaints,
7604                                _("Symtab %s has objects from two different Go packages: %s and %s"),
7605                                (SYMBOL_SYMTAB (sym)
7606                           ? symtab_to_filename_for_display (SYMBOL_SYMTAB (sym))
7607                                 : objfile_name (cu->objfile)),
7608                                this_package_name, package_name);
7609                   xfree (this_package_name);
7610                 }
7611             }
7612         }
7613     }
7614
7615   if (package_name != NULL)
7616     {
7617       struct objfile *objfile = cu->objfile;
7618       const char *saved_package_name = obstack_copy0 (&objfile->objfile_obstack,
7619                                                       package_name,
7620                                                       strlen (package_name));
7621       struct type *type = init_type (TYPE_CODE_MODULE, 0, 0,
7622                                      saved_package_name, objfile);
7623       struct symbol *sym;
7624
7625       TYPE_TAG_NAME (type) = TYPE_NAME (type);
7626
7627       sym = allocate_symbol (objfile);
7628       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
7629       SYMBOL_SET_NAMES (sym, saved_package_name,
7630                         strlen (saved_package_name), 0, objfile);
7631       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
7632          e.g., "main" finds the "main" module and not C's main().  */
7633       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
7634       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
7635       SYMBOL_TYPE (sym) = type;
7636
7637       add_symbol_to_list (sym, &global_symbols);
7638
7639       xfree (package_name);
7640     }
7641 }
7642
7643 /* Return the symtab for PER_CU.  This works properly regardless of
7644    whether we're using the index or psymtabs.  */
7645
7646 static struct symtab *
7647 get_symtab (struct dwarf2_per_cu_data *per_cu)
7648 {
7649   return (dwarf2_per_objfile->using_index
7650           ? per_cu->v.quick->symtab
7651           : per_cu->v.psymtab->symtab);
7652 }
7653
7654 /* A helper function for computing the list of all symbol tables
7655    included by PER_CU.  */
7656
7657 static void
7658 recursively_compute_inclusions (VEC (symtab_ptr) **result,
7659                                 htab_t all_children, htab_t all_type_symtabs,
7660                                 struct dwarf2_per_cu_data *per_cu,
7661                                 struct symtab *immediate_parent)
7662 {
7663   void **slot;
7664   int ix;
7665   struct symtab *symtab;
7666   struct dwarf2_per_cu_data *iter;
7667
7668   slot = htab_find_slot (all_children, per_cu, INSERT);
7669   if (*slot != NULL)
7670     {
7671       /* This inclusion and its children have been processed.  */
7672       return;
7673     }
7674
7675   *slot = per_cu;
7676   /* Only add a CU if it has a symbol table.  */
7677   symtab = get_symtab (per_cu);
7678   if (symtab != NULL)
7679     {
7680       /* If this is a type unit only add its symbol table if we haven't
7681          seen it yet (type unit per_cu's can share symtabs).  */
7682       if (per_cu->is_debug_types)
7683         {
7684           slot = htab_find_slot (all_type_symtabs, symtab, INSERT);
7685           if (*slot == NULL)
7686             {
7687               *slot = symtab;
7688               VEC_safe_push (symtab_ptr, *result, symtab);
7689               if (symtab->user == NULL)
7690                 symtab->user = immediate_parent;
7691             }
7692         }
7693       else
7694         {
7695           VEC_safe_push (symtab_ptr, *result, symtab);
7696           if (symtab->user == NULL)
7697             symtab->user = immediate_parent;
7698         }
7699     }
7700
7701   for (ix = 0;
7702        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
7703        ++ix)
7704     {
7705       recursively_compute_inclusions (result, all_children,
7706                                       all_type_symtabs, iter, symtab);
7707     }
7708 }
7709
7710 /* Compute the symtab 'includes' fields for the symtab related to
7711    PER_CU.  */
7712
7713 static void
7714 compute_symtab_includes (struct dwarf2_per_cu_data *per_cu)
7715 {
7716   gdb_assert (! per_cu->is_debug_types);
7717
7718   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
7719     {
7720       int ix, len;
7721       struct dwarf2_per_cu_data *per_cu_iter;
7722       struct symtab *symtab_iter;
7723       VEC (symtab_ptr) *result_symtabs = NULL;
7724       htab_t all_children, all_type_symtabs;
7725       struct symtab *symtab = get_symtab (per_cu);
7726
7727       /* If we don't have a symtab, we can just skip this case.  */
7728       if (symtab == NULL)
7729         return;
7730
7731       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7732                                         NULL, xcalloc, xfree);
7733       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7734                                             NULL, xcalloc, xfree);
7735
7736       for (ix = 0;
7737            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
7738                         ix, per_cu_iter);
7739            ++ix)
7740         {
7741           recursively_compute_inclusions (&result_symtabs, all_children,
7742                                           all_type_symtabs, per_cu_iter,
7743                                           symtab);
7744         }
7745
7746       /* Now we have a transitive closure of all the included symtabs.  */
7747       len = VEC_length (symtab_ptr, result_symtabs);
7748       symtab->includes
7749         = obstack_alloc (&dwarf2_per_objfile->objfile->objfile_obstack,
7750                          (len + 1) * sizeof (struct symtab *));
7751       for (ix = 0;
7752            VEC_iterate (symtab_ptr, result_symtabs, ix, symtab_iter);
7753            ++ix)
7754         symtab->includes[ix] = symtab_iter;
7755       symtab->includes[len] = NULL;
7756
7757       VEC_free (symtab_ptr, result_symtabs);
7758       htab_delete (all_children);
7759       htab_delete (all_type_symtabs);
7760     }
7761 }
7762
7763 /* Compute the 'includes' field for the symtabs of all the CUs we just
7764    read.  */
7765
7766 static void
7767 process_cu_includes (void)
7768 {
7769   int ix;
7770   struct dwarf2_per_cu_data *iter;
7771
7772   for (ix = 0;
7773        VEC_iterate (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus,
7774                     ix, iter);
7775        ++ix)
7776     {
7777       if (! iter->is_debug_types)
7778         compute_symtab_includes (iter);
7779     }
7780
7781   VEC_free (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus);
7782 }
7783
7784 /* Generate full symbol information for PER_CU, whose DIEs have
7785    already been loaded into memory.  */
7786
7787 static void
7788 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
7789                         enum language pretend_language)
7790 {
7791   struct dwarf2_cu *cu = per_cu->cu;
7792   struct objfile *objfile = per_cu->objfile;
7793   CORE_ADDR lowpc, highpc;
7794   struct symtab *symtab;
7795   struct cleanup *back_to, *delayed_list_cleanup;
7796   CORE_ADDR baseaddr;
7797   struct block *static_block;
7798
7799   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
7800
7801   buildsym_init ();
7802   back_to = make_cleanup (really_free_pendings, NULL);
7803   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
7804
7805   cu->list_in_scope = &file_symbols;
7806
7807   cu->language = pretend_language;
7808   cu->language_defn = language_def (cu->language);
7809
7810   /* Do line number decoding in read_file_scope () */
7811   process_die (cu->dies, cu);
7812
7813   /* For now fudge the Go package.  */
7814   if (cu->language == language_go)
7815     fixup_go_packaging (cu);
7816
7817   /* Now that we have processed all the DIEs in the CU, all the types 
7818      should be complete, and it should now be safe to compute all of the
7819      physnames.  */
7820   compute_delayed_physnames (cu);
7821   do_cleanups (delayed_list_cleanup);
7822
7823   /* Some compilers don't define a DW_AT_high_pc attribute for the
7824      compilation unit.  If the DW_AT_high_pc is missing, synthesize
7825      it, by scanning the DIE's below the compilation unit.  */
7826   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
7827
7828   static_block
7829     = end_symtab_get_static_block (highpc + baseaddr, objfile, 0, 1);
7830
7831   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
7832      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
7833      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
7834      addrmap to help ensure it has an accurate map of pc values belonging to
7835      this comp unit.  */
7836   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
7837
7838   symtab = end_symtab_from_static_block (static_block, objfile,
7839                                          SECT_OFF_TEXT (objfile), 0);
7840
7841   if (symtab != NULL)
7842     {
7843       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
7844
7845       /* Set symtab language to language from DW_AT_language.  If the
7846          compilation is from a C file generated by language preprocessors, do
7847          not set the language if it was already deduced by start_subfile.  */
7848       if (!(cu->language == language_c && symtab->language != language_c))
7849         symtab->language = cu->language;
7850
7851       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
7852          produce DW_AT_location with location lists but it can be possibly
7853          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
7854          there were bugs in prologue debug info, fixed later in GCC-4.5
7855          by "unwind info for epilogues" patch (which is not directly related).
7856
7857          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
7858          needed, it would be wrong due to missing DW_AT_producer there.
7859
7860          Still one can confuse GDB by using non-standard GCC compilation
7861          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
7862          */ 
7863       if (cu->has_loclist && gcc_4_minor >= 5)
7864         symtab->locations_valid = 1;
7865
7866       if (gcc_4_minor >= 5)
7867         symtab->epilogue_unwind_valid = 1;
7868
7869       symtab->call_site_htab = cu->call_site_htab;
7870     }
7871
7872   if (dwarf2_per_objfile->using_index)
7873     per_cu->v.quick->symtab = symtab;
7874   else
7875     {
7876       struct partial_symtab *pst = per_cu->v.psymtab;
7877       pst->symtab = symtab;
7878       pst->readin = 1;
7879     }
7880
7881   /* Push it for inclusion processing later.  */
7882   VEC_safe_push (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus, per_cu);
7883
7884   do_cleanups (back_to);
7885 }
7886
7887 /* Generate full symbol information for type unit PER_CU, whose DIEs have
7888    already been loaded into memory.  */
7889
7890 static void
7891 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
7892                         enum language pretend_language)
7893 {
7894   struct dwarf2_cu *cu = per_cu->cu;
7895   struct objfile *objfile = per_cu->objfile;
7896   struct symtab *symtab;
7897   struct cleanup *back_to, *delayed_list_cleanup;
7898   struct signatured_type *sig_type;
7899
7900   gdb_assert (per_cu->is_debug_types);
7901   sig_type = (struct signatured_type *) per_cu;
7902
7903   buildsym_init ();
7904   back_to = make_cleanup (really_free_pendings, NULL);
7905   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
7906
7907   cu->list_in_scope = &file_symbols;
7908
7909   cu->language = pretend_language;
7910   cu->language_defn = language_def (cu->language);
7911
7912   /* The symbol tables are set up in read_type_unit_scope.  */
7913   process_die (cu->dies, cu);
7914
7915   /* For now fudge the Go package.  */
7916   if (cu->language == language_go)
7917     fixup_go_packaging (cu);
7918
7919   /* Now that we have processed all the DIEs in the CU, all the types 
7920      should be complete, and it should now be safe to compute all of the
7921      physnames.  */
7922   compute_delayed_physnames (cu);
7923   do_cleanups (delayed_list_cleanup);
7924
7925   /* TUs share symbol tables.
7926      If this is the first TU to use this symtab, complete the construction
7927      of it with end_expandable_symtab.  Otherwise, complete the addition of
7928      this TU's symbols to the existing symtab.  */
7929   if (sig_type->type_unit_group->primary_symtab == NULL)
7930     {
7931       symtab = end_expandable_symtab (0, objfile, SECT_OFF_TEXT (objfile));
7932       sig_type->type_unit_group->primary_symtab = symtab;
7933
7934       if (symtab != NULL)
7935         {
7936           /* Set symtab language to language from DW_AT_language.  If the
7937              compilation is from a C file generated by language preprocessors,
7938              do not set the language if it was already deduced by
7939              start_subfile.  */
7940           if (!(cu->language == language_c && symtab->language != language_c))
7941             symtab->language = cu->language;
7942         }
7943     }
7944   else
7945     {
7946       augment_type_symtab (objfile,
7947                            sig_type->type_unit_group->primary_symtab);
7948       symtab = sig_type->type_unit_group->primary_symtab;
7949     }
7950
7951   if (dwarf2_per_objfile->using_index)
7952     per_cu->v.quick->symtab = symtab;
7953   else
7954     {
7955       struct partial_symtab *pst = per_cu->v.psymtab;
7956       pst->symtab = symtab;
7957       pst->readin = 1;
7958     }
7959
7960   do_cleanups (back_to);
7961 }
7962
7963 /* Process an imported unit DIE.  */
7964
7965 static void
7966 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
7967 {
7968   struct attribute *attr;
7969
7970   /* For now we don't handle imported units in type units.  */
7971   if (cu->per_cu->is_debug_types)
7972     {
7973       error (_("Dwarf Error: DW_TAG_imported_unit is not"
7974                " supported in type units [in module %s]"),
7975              objfile_name (cu->objfile));
7976     }
7977
7978   attr = dwarf2_attr (die, DW_AT_import, cu);
7979   if (attr != NULL)
7980     {
7981       struct dwarf2_per_cu_data *per_cu;
7982       struct symtab *imported_symtab;
7983       sect_offset offset;
7984       int is_dwz;
7985
7986       offset = dwarf2_get_ref_die_offset (attr);
7987       is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
7988       per_cu = dwarf2_find_containing_comp_unit (offset, is_dwz, cu->objfile);
7989
7990       /* If necessary, add it to the queue and load its DIEs.  */
7991       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
7992         load_full_comp_unit (per_cu, cu->language);
7993
7994       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
7995                      per_cu);
7996     }
7997 }
7998
7999 /* Process a die and its children.  */
8000
8001 static void
8002 process_die (struct die_info *die, struct dwarf2_cu *cu)
8003 {
8004   switch (die->tag)
8005     {
8006     case DW_TAG_padding:
8007       break;
8008     case DW_TAG_compile_unit:
8009     case DW_TAG_partial_unit:
8010       read_file_scope (die, cu);
8011       break;
8012     case DW_TAG_type_unit:
8013       read_type_unit_scope (die, cu);
8014       break;
8015     case DW_TAG_subprogram:
8016     case DW_TAG_inlined_subroutine:
8017       read_func_scope (die, cu);
8018       break;
8019     case DW_TAG_lexical_block:
8020     case DW_TAG_try_block:
8021     case DW_TAG_catch_block:
8022       read_lexical_block_scope (die, cu);
8023       break;
8024     case DW_TAG_GNU_call_site:
8025       read_call_site_scope (die, cu);
8026       break;
8027     case DW_TAG_class_type:
8028     case DW_TAG_interface_type:
8029     case DW_TAG_structure_type:
8030     case DW_TAG_union_type:
8031       process_structure_scope (die, cu);
8032       break;
8033     case DW_TAG_enumeration_type:
8034       process_enumeration_scope (die, cu);
8035       break;
8036
8037     /* These dies have a type, but processing them does not create
8038        a symbol or recurse to process the children.  Therefore we can
8039        read them on-demand through read_type_die.  */
8040     case DW_TAG_subroutine_type:
8041     case DW_TAG_set_type:
8042     case DW_TAG_array_type:
8043     case DW_TAG_pointer_type:
8044     case DW_TAG_ptr_to_member_type:
8045     case DW_TAG_reference_type:
8046     case DW_TAG_string_type:
8047       break;
8048
8049     case DW_TAG_base_type:
8050     case DW_TAG_subrange_type:
8051     case DW_TAG_typedef:
8052       /* Add a typedef symbol for the type definition, if it has a
8053          DW_AT_name.  */
8054       new_symbol (die, read_type_die (die, cu), cu);
8055       break;
8056     case DW_TAG_common_block:
8057       read_common_block (die, cu);
8058       break;
8059     case DW_TAG_common_inclusion:
8060       break;
8061     case DW_TAG_namespace:
8062       cu->processing_has_namespace_info = 1;
8063       read_namespace (die, cu);
8064       break;
8065     case DW_TAG_module:
8066       cu->processing_has_namespace_info = 1;
8067       read_module (die, cu);
8068       break;
8069     case DW_TAG_imported_declaration:
8070       cu->processing_has_namespace_info = 1;
8071       if (read_namespace_alias (die, cu))
8072         break;
8073       /* The declaration is not a global namespace alias: fall through.  */
8074     case DW_TAG_imported_module:
8075       cu->processing_has_namespace_info = 1;
8076       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
8077                                  || cu->language != language_fortran))
8078         complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
8079                    dwarf_tag_name (die->tag));
8080       read_import_statement (die, cu);
8081       break;
8082
8083     case DW_TAG_imported_unit:
8084       process_imported_unit_die (die, cu);
8085       break;
8086
8087     default:
8088       new_symbol (die, NULL, cu);
8089       break;
8090     }
8091 }
8092 \f
8093 /* DWARF name computation.  */
8094
8095 /* A helper function for dwarf2_compute_name which determines whether DIE
8096    needs to have the name of the scope prepended to the name listed in the
8097    die.  */
8098
8099 static int
8100 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
8101 {
8102   struct attribute *attr;
8103
8104   switch (die->tag)
8105     {
8106     case DW_TAG_namespace:
8107     case DW_TAG_typedef:
8108     case DW_TAG_class_type:
8109     case DW_TAG_interface_type:
8110     case DW_TAG_structure_type:
8111     case DW_TAG_union_type:
8112     case DW_TAG_enumeration_type:
8113     case DW_TAG_enumerator:
8114     case DW_TAG_subprogram:
8115     case DW_TAG_member:
8116     case DW_TAG_imported_declaration:
8117       return 1;
8118
8119     case DW_TAG_variable:
8120     case DW_TAG_constant:
8121       /* We only need to prefix "globally" visible variables.  These include
8122          any variable marked with DW_AT_external or any variable that
8123          lives in a namespace.  [Variables in anonymous namespaces
8124          require prefixing, but they are not DW_AT_external.]  */
8125
8126       if (dwarf2_attr (die, DW_AT_specification, cu))
8127         {
8128           struct dwarf2_cu *spec_cu = cu;
8129
8130           return die_needs_namespace (die_specification (die, &spec_cu),
8131                                       spec_cu);
8132         }
8133
8134       attr = dwarf2_attr (die, DW_AT_external, cu);
8135       if (attr == NULL && die->parent->tag != DW_TAG_namespace
8136           && die->parent->tag != DW_TAG_module)
8137         return 0;
8138       /* A variable in a lexical block of some kind does not need a
8139          namespace, even though in C++ such variables may be external
8140          and have a mangled name.  */
8141       if (die->parent->tag ==  DW_TAG_lexical_block
8142           || die->parent->tag ==  DW_TAG_try_block
8143           || die->parent->tag ==  DW_TAG_catch_block
8144           || die->parent->tag == DW_TAG_subprogram)
8145         return 0;
8146       return 1;
8147
8148     default:
8149       return 0;
8150     }
8151 }
8152
8153 /* Retrieve the last character from a mem_file.  */
8154
8155 static void
8156 do_ui_file_peek_last (void *object, const char *buffer, long length)
8157 {
8158   char *last_char_p = (char *) object;
8159
8160   if (length > 0)
8161     *last_char_p = buffer[length - 1];
8162 }
8163
8164 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
8165    compute the physname for the object, which include a method's:
8166    - formal parameters (C++/Java),
8167    - receiver type (Go),
8168    - return type (Java).
8169
8170    The term "physname" is a bit confusing.
8171    For C++, for example, it is the demangled name.
8172    For Go, for example, it's the mangled name.
8173
8174    For Ada, return the DIE's linkage name rather than the fully qualified
8175    name.  PHYSNAME is ignored..
8176
8177    The result is allocated on the objfile_obstack and canonicalized.  */
8178
8179 static const char *
8180 dwarf2_compute_name (const char *name,
8181                      struct die_info *die, struct dwarf2_cu *cu,
8182                      int physname)
8183 {
8184   struct objfile *objfile = cu->objfile;
8185
8186   if (name == NULL)
8187     name = dwarf2_name (die, cu);
8188
8189   /* For Fortran GDB prefers DW_AT_*linkage_name if present but otherwise
8190      compute it by typename_concat inside GDB.  */
8191   if (cu->language == language_ada
8192       || (cu->language == language_fortran && physname))
8193     {
8194       /* For Ada unit, we prefer the linkage name over the name, as
8195          the former contains the exported name, which the user expects
8196          to be able to reference.  Ideally, we want the user to be able
8197          to reference this entity using either natural or linkage name,
8198          but we haven't started looking at this enhancement yet.  */
8199       struct attribute *attr;
8200
8201       attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8202       if (attr == NULL)
8203         attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8204       if (attr && DW_STRING (attr))
8205         return DW_STRING (attr);
8206     }
8207
8208   /* These are the only languages we know how to qualify names in.  */
8209   if (name != NULL
8210       && (cu->language == language_cplus || cu->language == language_java
8211           || cu->language == language_fortran))
8212     {
8213       if (die_needs_namespace (die, cu))
8214         {
8215           long length;
8216           const char *prefix;
8217           struct ui_file *buf;
8218
8219           prefix = determine_prefix (die, cu);
8220           buf = mem_fileopen ();
8221           if (*prefix != '\0')
8222             {
8223               char *prefixed_name = typename_concat (NULL, prefix, name,
8224                                                      physname, cu);
8225
8226               fputs_unfiltered (prefixed_name, buf);
8227               xfree (prefixed_name);
8228             }
8229           else
8230             fputs_unfiltered (name, buf);
8231
8232           /* Template parameters may be specified in the DIE's DW_AT_name, or
8233              as children with DW_TAG_template_type_param or
8234              DW_TAG_value_type_param.  If the latter, add them to the name
8235              here.  If the name already has template parameters, then
8236              skip this step; some versions of GCC emit both, and
8237              it is more efficient to use the pre-computed name.
8238
8239              Something to keep in mind about this process: it is very
8240              unlikely, or in some cases downright impossible, to produce
8241              something that will match the mangled name of a function.
8242              If the definition of the function has the same debug info,
8243              we should be able to match up with it anyway.  But fallbacks
8244              using the minimal symbol, for instance to find a method
8245              implemented in a stripped copy of libstdc++, will not work.
8246              If we do not have debug info for the definition, we will have to
8247              match them up some other way.
8248
8249              When we do name matching there is a related problem with function
8250              templates; two instantiated function templates are allowed to
8251              differ only by their return types, which we do not add here.  */
8252
8253           if (cu->language == language_cplus && strchr (name, '<') == NULL)
8254             {
8255               struct attribute *attr;
8256               struct die_info *child;
8257               int first = 1;
8258
8259               die->building_fullname = 1;
8260
8261               for (child = die->child; child != NULL; child = child->sibling)
8262                 {
8263                   struct type *type;
8264                   LONGEST value;
8265                   const gdb_byte *bytes;
8266                   struct dwarf2_locexpr_baton *baton;
8267                   struct value *v;
8268
8269                   if (child->tag != DW_TAG_template_type_param
8270                       && child->tag != DW_TAG_template_value_param)
8271                     continue;
8272
8273                   if (first)
8274                     {
8275                       fputs_unfiltered ("<", buf);
8276                       first = 0;
8277                     }
8278                   else
8279                     fputs_unfiltered (", ", buf);
8280
8281                   attr = dwarf2_attr (child, DW_AT_type, cu);
8282                   if (attr == NULL)
8283                     {
8284                       complaint (&symfile_complaints,
8285                                  _("template parameter missing DW_AT_type"));
8286                       fputs_unfiltered ("UNKNOWN_TYPE", buf);
8287                       continue;
8288                     }
8289                   type = die_type (child, cu);
8290
8291                   if (child->tag == DW_TAG_template_type_param)
8292                     {
8293                       c_print_type (type, "", buf, -1, 0, &type_print_raw_options);
8294                       continue;
8295                     }
8296
8297                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
8298                   if (attr == NULL)
8299                     {
8300                       complaint (&symfile_complaints,
8301                                  _("template parameter missing "
8302                                    "DW_AT_const_value"));
8303                       fputs_unfiltered ("UNKNOWN_VALUE", buf);
8304                       continue;
8305                     }
8306
8307                   dwarf2_const_value_attr (attr, type, name,
8308                                            &cu->comp_unit_obstack, cu,
8309                                            &value, &bytes, &baton);
8310
8311                   if (TYPE_NOSIGN (type))
8312                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
8313                        changed, this can use value_print instead.  */
8314                     c_printchar (value, type, buf);
8315                   else
8316                     {
8317                       struct value_print_options opts;
8318
8319                       if (baton != NULL)
8320                         v = dwarf2_evaluate_loc_desc (type, NULL,
8321                                                       baton->data,
8322                                                       baton->size,
8323                                                       baton->per_cu);
8324                       else if (bytes != NULL)
8325                         {
8326                           v = allocate_value (type);
8327                           memcpy (value_contents_writeable (v), bytes,
8328                                   TYPE_LENGTH (type));
8329                         }
8330                       else
8331                         v = value_from_longest (type, value);
8332
8333                       /* Specify decimal so that we do not depend on
8334                          the radix.  */
8335                       get_formatted_print_options (&opts, 'd');
8336                       opts.raw = 1;
8337                       value_print (v, buf, &opts);
8338                       release_value (v);
8339                       value_free (v);
8340                     }
8341                 }
8342
8343               die->building_fullname = 0;
8344
8345               if (!first)
8346                 {
8347                   /* Close the argument list, with a space if necessary
8348                      (nested templates).  */
8349                   char last_char = '\0';
8350                   ui_file_put (buf, do_ui_file_peek_last, &last_char);
8351                   if (last_char == '>')
8352                     fputs_unfiltered (" >", buf);
8353                   else
8354                     fputs_unfiltered (">", buf);
8355                 }
8356             }
8357
8358           /* For Java and C++ methods, append formal parameter type
8359              information, if PHYSNAME.  */
8360
8361           if (physname && die->tag == DW_TAG_subprogram
8362               && (cu->language == language_cplus
8363                   || cu->language == language_java))
8364             {
8365               struct type *type = read_type_die (die, cu);
8366
8367               c_type_print_args (type, buf, 1, cu->language,
8368                                  &type_print_raw_options);
8369
8370               if (cu->language == language_java)
8371                 {
8372                   /* For java, we must append the return type to method
8373                      names.  */
8374                   if (die->tag == DW_TAG_subprogram)
8375                     java_print_type (TYPE_TARGET_TYPE (type), "", buf,
8376                                      0, 0, &type_print_raw_options);
8377                 }
8378               else if (cu->language == language_cplus)
8379                 {
8380                   /* Assume that an artificial first parameter is
8381                      "this", but do not crash if it is not.  RealView
8382                      marks unnamed (and thus unused) parameters as
8383                      artificial; there is no way to differentiate
8384                      the two cases.  */
8385                   if (TYPE_NFIELDS (type) > 0
8386                       && TYPE_FIELD_ARTIFICIAL (type, 0)
8387                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
8388                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
8389                                                                         0))))
8390                     fputs_unfiltered (" const", buf);
8391                 }
8392             }
8393
8394           name = ui_file_obsavestring (buf, &objfile->objfile_obstack,
8395                                        &length);
8396           ui_file_delete (buf);
8397
8398           if (cu->language == language_cplus)
8399             {
8400               const char *cname
8401                 = dwarf2_canonicalize_name (name, cu,
8402                                             &objfile->objfile_obstack);
8403
8404               if (cname != NULL)
8405                 name = cname;
8406             }
8407         }
8408     }
8409
8410   return name;
8411 }
8412
8413 /* Return the fully qualified name of DIE, based on its DW_AT_name.
8414    If scope qualifiers are appropriate they will be added.  The result
8415    will be allocated on the objfile_obstack, or NULL if the DIE does
8416    not have a name.  NAME may either be from a previous call to
8417    dwarf2_name or NULL.
8418
8419    The output string will be canonicalized (if C++/Java).  */
8420
8421 static const char *
8422 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
8423 {
8424   return dwarf2_compute_name (name, die, cu, 0);
8425 }
8426
8427 /* Construct a physname for the given DIE in CU.  NAME may either be
8428    from a previous call to dwarf2_name or NULL.  The result will be
8429    allocated on the objfile_objstack or NULL if the DIE does not have a
8430    name.
8431
8432    The output string will be canonicalized (if C++/Java).  */
8433
8434 static const char *
8435 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
8436 {
8437   struct objfile *objfile = cu->objfile;
8438   struct attribute *attr;
8439   const char *retval, *mangled = NULL, *canon = NULL;
8440   struct cleanup *back_to;
8441   int need_copy = 1;
8442
8443   /* In this case dwarf2_compute_name is just a shortcut not building anything
8444      on its own.  */
8445   if (!die_needs_namespace (die, cu))
8446     return dwarf2_compute_name (name, die, cu, 1);
8447
8448   back_to = make_cleanup (null_cleanup, NULL);
8449
8450   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8451   if (!attr)
8452     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8453
8454   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
8455      has computed.  */
8456   if (attr && DW_STRING (attr))
8457     {
8458       char *demangled;
8459
8460       mangled = DW_STRING (attr);
8461
8462       /* Use DMGL_RET_DROP for C++ template functions to suppress their return
8463          type.  It is easier for GDB users to search for such functions as
8464          `name(params)' than `long name(params)'.  In such case the minimal
8465          symbol names do not match the full symbol names but for template
8466          functions there is never a need to look up their definition from their
8467          declaration so the only disadvantage remains the minimal symbol
8468          variant `long name(params)' does not have the proper inferior type.
8469          */
8470
8471       if (cu->language == language_go)
8472         {
8473           /* This is a lie, but we already lie to the caller new_symbol_full.
8474              new_symbol_full assumes we return the mangled name.
8475              This just undoes that lie until things are cleaned up.  */
8476           demangled = NULL;
8477         }
8478       else
8479         {
8480           demangled = gdb_demangle (mangled,
8481                                     (DMGL_PARAMS | DMGL_ANSI
8482                                      | (cu->language == language_java
8483                                         ? DMGL_JAVA | DMGL_RET_POSTFIX
8484                                         : DMGL_RET_DROP)));
8485         }
8486       if (demangled)
8487         {
8488           make_cleanup (xfree, demangled);
8489           canon = demangled;
8490         }
8491       else
8492         {
8493           canon = mangled;
8494           need_copy = 0;
8495         }
8496     }
8497
8498   if (canon == NULL || check_physname)
8499     {
8500       const char *physname = dwarf2_compute_name (name, die, cu, 1);
8501
8502       if (canon != NULL && strcmp (physname, canon) != 0)
8503         {
8504           /* It may not mean a bug in GDB.  The compiler could also
8505              compute DW_AT_linkage_name incorrectly.  But in such case
8506              GDB would need to be bug-to-bug compatible.  */
8507
8508           complaint (&symfile_complaints,
8509                      _("Computed physname <%s> does not match demangled <%s> "
8510                        "(from linkage <%s>) - DIE at 0x%x [in module %s]"),
8511                      physname, canon, mangled, die->offset.sect_off,
8512                      objfile_name (objfile));
8513
8514           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
8515              is available here - over computed PHYSNAME.  It is safer
8516              against both buggy GDB and buggy compilers.  */
8517
8518           retval = canon;
8519         }
8520       else
8521         {
8522           retval = physname;
8523           need_copy = 0;
8524         }
8525     }
8526   else
8527     retval = canon;
8528
8529   if (need_copy)
8530     retval = obstack_copy0 (&objfile->objfile_obstack, retval, strlen (retval));
8531
8532   do_cleanups (back_to);
8533   return retval;
8534 }
8535
8536 /* Inspect DIE in CU for a namespace alias.  If one exists, record
8537    a new symbol for it.
8538
8539    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
8540
8541 static int
8542 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
8543 {
8544   struct attribute *attr;
8545
8546   /* If the die does not have a name, this is not a namespace
8547      alias.  */
8548   attr = dwarf2_attr (die, DW_AT_name, cu);
8549   if (attr != NULL)
8550     {
8551       int num;
8552       struct die_info *d = die;
8553       struct dwarf2_cu *imported_cu = cu;
8554
8555       /* If the compiler has nested DW_AT_imported_declaration DIEs,
8556          keep inspecting DIEs until we hit the underlying import.  */
8557 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
8558       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
8559         {
8560           attr = dwarf2_attr (d, DW_AT_import, cu);
8561           if (attr == NULL)
8562             break;
8563
8564           d = follow_die_ref (d, attr, &imported_cu);
8565           if (d->tag != DW_TAG_imported_declaration)
8566             break;
8567         }
8568
8569       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
8570         {
8571           complaint (&symfile_complaints,
8572                      _("DIE at 0x%x has too many recursively imported "
8573                        "declarations"), d->offset.sect_off);
8574           return 0;
8575         }
8576
8577       if (attr != NULL)
8578         {
8579           struct type *type;
8580           sect_offset offset = dwarf2_get_ref_die_offset (attr);
8581
8582           type = get_die_type_at_offset (offset, cu->per_cu);
8583           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
8584             {
8585               /* This declaration is a global namespace alias.  Add
8586                  a symbol for it whose type is the aliased namespace.  */
8587               new_symbol (die, type, cu);
8588               return 1;
8589             }
8590         }
8591     }
8592
8593   return 0;
8594 }
8595
8596 /* Read the import statement specified by the given die and record it.  */
8597
8598 static void
8599 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
8600 {
8601   struct objfile *objfile = cu->objfile;
8602   struct attribute *import_attr;
8603   struct die_info *imported_die, *child_die;
8604   struct dwarf2_cu *imported_cu;
8605   const char *imported_name;
8606   const char *imported_name_prefix;
8607   const char *canonical_name;
8608   const char *import_alias;
8609   const char *imported_declaration = NULL;
8610   const char *import_prefix;
8611   VEC (const_char_ptr) *excludes = NULL;
8612   struct cleanup *cleanups;
8613
8614   import_attr = dwarf2_attr (die, DW_AT_import, cu);
8615   if (import_attr == NULL)
8616     {
8617       complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8618                  dwarf_tag_name (die->tag));
8619       return;
8620     }
8621
8622   imported_cu = cu;
8623   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
8624   imported_name = dwarf2_name (imported_die, imported_cu);
8625   if (imported_name == NULL)
8626     {
8627       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
8628
8629         The import in the following code:
8630         namespace A
8631           {
8632             typedef int B;
8633           }
8634
8635         int main ()
8636           {
8637             using A::B;
8638             B b;
8639             return b;
8640           }
8641
8642         ...
8643          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
8644             <52>   DW_AT_decl_file   : 1
8645             <53>   DW_AT_decl_line   : 6
8646             <54>   DW_AT_import      : <0x75>
8647          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
8648             <59>   DW_AT_name        : B
8649             <5b>   DW_AT_decl_file   : 1
8650             <5c>   DW_AT_decl_line   : 2
8651             <5d>   DW_AT_type        : <0x6e>
8652         ...
8653          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
8654             <76>   DW_AT_byte_size   : 4
8655             <77>   DW_AT_encoding    : 5        (signed)
8656
8657         imports the wrong die ( 0x75 instead of 0x58 ).
8658         This case will be ignored until the gcc bug is fixed.  */
8659       return;
8660     }
8661
8662   /* Figure out the local name after import.  */
8663   import_alias = dwarf2_name (die, cu);
8664
8665   /* Figure out where the statement is being imported to.  */
8666   import_prefix = determine_prefix (die, cu);
8667
8668   /* Figure out what the scope of the imported die is and prepend it
8669      to the name of the imported die.  */
8670   imported_name_prefix = determine_prefix (imported_die, imported_cu);
8671
8672   if (imported_die->tag != DW_TAG_namespace
8673       && imported_die->tag != DW_TAG_module)
8674     {
8675       imported_declaration = imported_name;
8676       canonical_name = imported_name_prefix;
8677     }
8678   else if (strlen (imported_name_prefix) > 0)
8679     canonical_name = obconcat (&objfile->objfile_obstack,
8680                                imported_name_prefix, "::", imported_name,
8681                                (char *) NULL);
8682   else
8683     canonical_name = imported_name;
8684
8685   cleanups = make_cleanup (VEC_cleanup (const_char_ptr), &excludes);
8686
8687   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
8688     for (child_die = die->child; child_die && child_die->tag;
8689          child_die = sibling_die (child_die))
8690       {
8691         /* DWARF-4: A Fortran use statement with a “rename list” may be
8692            represented by an imported module entry with an import attribute
8693            referring to the module and owned entries corresponding to those
8694            entities that are renamed as part of being imported.  */
8695
8696         if (child_die->tag != DW_TAG_imported_declaration)
8697           {
8698             complaint (&symfile_complaints,
8699                        _("child DW_TAG_imported_declaration expected "
8700                          "- DIE at 0x%x [in module %s]"),
8701                        child_die->offset.sect_off, objfile_name (objfile));
8702             continue;
8703           }
8704
8705         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
8706         if (import_attr == NULL)
8707           {
8708             complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8709                        dwarf_tag_name (child_die->tag));
8710             continue;
8711           }
8712
8713         imported_cu = cu;
8714         imported_die = follow_die_ref_or_sig (child_die, import_attr,
8715                                               &imported_cu);
8716         imported_name = dwarf2_name (imported_die, imported_cu);
8717         if (imported_name == NULL)
8718           {
8719             complaint (&symfile_complaints,
8720                        _("child DW_TAG_imported_declaration has unknown "
8721                          "imported name - DIE at 0x%x [in module %s]"),
8722                        child_die->offset.sect_off, objfile_name (objfile));
8723             continue;
8724           }
8725
8726         VEC_safe_push (const_char_ptr, excludes, imported_name);
8727
8728         process_die (child_die, cu);
8729       }
8730
8731   cp_add_using_directive (import_prefix,
8732                           canonical_name,
8733                           import_alias,
8734                           imported_declaration,
8735                           excludes,
8736                           0,
8737                           &objfile->objfile_obstack);
8738
8739   do_cleanups (cleanups);
8740 }
8741
8742 /* Cleanup function for handle_DW_AT_stmt_list.  */
8743
8744 static void
8745 free_cu_line_header (void *arg)
8746 {
8747   struct dwarf2_cu *cu = arg;
8748
8749   free_line_header (cu->line_header);
8750   cu->line_header = NULL;
8751 }
8752
8753 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
8754    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
8755    this, it was first present in GCC release 4.3.0.  */
8756
8757 static int
8758 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
8759 {
8760   if (!cu->checked_producer)
8761     check_producer (cu);
8762
8763   return cu->producer_is_gcc_lt_4_3;
8764 }
8765
8766 static void
8767 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu,
8768                          const char **name, const char **comp_dir)
8769 {
8770   struct attribute *attr;
8771
8772   *name = NULL;
8773   *comp_dir = NULL;
8774
8775   /* Find the filename.  Do not use dwarf2_name here, since the filename
8776      is not a source language identifier.  */
8777   attr = dwarf2_attr (die, DW_AT_name, cu);
8778   if (attr)
8779     {
8780       *name = DW_STRING (attr);
8781     }
8782
8783   attr = dwarf2_attr (die, DW_AT_comp_dir, cu);
8784   if (attr)
8785     *comp_dir = DW_STRING (attr);
8786   else if (producer_is_gcc_lt_4_3 (cu) && *name != NULL
8787            && IS_ABSOLUTE_PATH (*name))
8788     {
8789       char *d = ldirname (*name);
8790
8791       *comp_dir = d;
8792       if (d != NULL)
8793         make_cleanup (xfree, d);
8794     }
8795   if (*comp_dir != NULL)
8796     {
8797       /* Irix 6.2 native cc prepends <machine>.: to the compilation
8798          directory, get rid of it.  */
8799       char *cp = strchr (*comp_dir, ':');
8800
8801       if (cp && cp != *comp_dir && cp[-1] == '.' && cp[1] == '/')
8802         *comp_dir = cp + 1;
8803     }
8804
8805   if (*name == NULL)
8806     *name = "<unknown>";
8807 }
8808
8809 /* Handle DW_AT_stmt_list for a compilation unit.
8810    DIE is the DW_TAG_compile_unit die for CU.
8811    COMP_DIR is the compilation directory.
8812    WANT_LINE_INFO is non-zero if the pc/line-number mapping is needed.  */
8813
8814 static void
8815 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
8816                         const char *comp_dir) /* ARI: editCase function */
8817 {
8818   struct attribute *attr;
8819
8820   gdb_assert (! cu->per_cu->is_debug_types);
8821
8822   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
8823   if (attr)
8824     {
8825       unsigned int line_offset = DW_UNSND (attr);
8826       struct line_header *line_header
8827         = dwarf_decode_line_header (line_offset, cu);
8828
8829       if (line_header)
8830         {
8831           cu->line_header = line_header;
8832           make_cleanup (free_cu_line_header, cu);
8833           dwarf_decode_lines (line_header, comp_dir, cu, NULL, 1);
8834         }
8835     }
8836 }
8837
8838 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
8839
8840 static void
8841 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
8842 {
8843   struct objfile *objfile = dwarf2_per_objfile->objfile;
8844   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
8845   CORE_ADDR lowpc = ((CORE_ADDR) -1);
8846   CORE_ADDR highpc = ((CORE_ADDR) 0);
8847   struct attribute *attr;
8848   const char *name = NULL;
8849   const char *comp_dir = NULL;
8850   struct die_info *child_die;
8851   bfd *abfd = objfile->obfd;
8852   CORE_ADDR baseaddr;
8853
8854   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8855
8856   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
8857
8858   /* If we didn't find a lowpc, set it to highpc to avoid complaints
8859      from finish_block.  */
8860   if (lowpc == ((CORE_ADDR) -1))
8861     lowpc = highpc;
8862   lowpc += baseaddr;
8863   highpc += baseaddr;
8864
8865   find_file_and_directory (die, cu, &name, &comp_dir);
8866
8867   prepare_one_comp_unit (cu, die, cu->language);
8868
8869   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
8870      standardised yet.  As a workaround for the language detection we fall
8871      back to the DW_AT_producer string.  */
8872   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
8873     cu->language = language_opencl;
8874
8875   /* Similar hack for Go.  */
8876   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
8877     set_cu_language (DW_LANG_Go, cu);
8878
8879   dwarf2_start_symtab (cu, name, comp_dir, lowpc);
8880
8881   /* Decode line number information if present.  We do this before
8882      processing child DIEs, so that the line header table is available
8883      for DW_AT_decl_file.  */
8884   handle_DW_AT_stmt_list (die, cu, comp_dir);
8885
8886   /* Process all dies in compilation unit.  */
8887   if (die->child != NULL)
8888     {
8889       child_die = die->child;
8890       while (child_die && child_die->tag)
8891         {
8892           process_die (child_die, cu);
8893           child_die = sibling_die (child_die);
8894         }
8895     }
8896
8897   /* Decode macro information, if present.  Dwarf 2 macro information
8898      refers to information in the line number info statement program
8899      header, so we can only read it if we've read the header
8900      successfully.  */
8901   attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
8902   if (attr && cu->line_header)
8903     {
8904       if (dwarf2_attr (die, DW_AT_macro_info, cu))
8905         complaint (&symfile_complaints,
8906                    _("CU refers to both DW_AT_GNU_macros and DW_AT_macro_info"));
8907
8908       dwarf_decode_macros (cu, DW_UNSND (attr), comp_dir, 1);
8909     }
8910   else
8911     {
8912       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
8913       if (attr && cu->line_header)
8914         {
8915           unsigned int macro_offset = DW_UNSND (attr);
8916
8917           dwarf_decode_macros (cu, macro_offset, comp_dir, 0);
8918         }
8919     }
8920
8921   do_cleanups (back_to);
8922 }
8923
8924 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
8925    Create the set of symtabs used by this TU, or if this TU is sharing
8926    symtabs with another TU and the symtabs have already been created
8927    then restore those symtabs in the line header.
8928    We don't need the pc/line-number mapping for type units.  */
8929
8930 static void
8931 setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
8932 {
8933   struct objfile *objfile = dwarf2_per_objfile->objfile;
8934   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8935   struct type_unit_group *tu_group;
8936   int first_time;
8937   struct line_header *lh;
8938   struct attribute *attr;
8939   unsigned int i, line_offset;
8940   struct signatured_type *sig_type;
8941
8942   gdb_assert (per_cu->is_debug_types);
8943   sig_type = (struct signatured_type *) per_cu;
8944
8945   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
8946
8947   /* If we're using .gdb_index (includes -readnow) then
8948      per_cu->type_unit_group may not have been set up yet.  */
8949   if (sig_type->type_unit_group == NULL)
8950     sig_type->type_unit_group = get_type_unit_group (cu, attr);
8951   tu_group = sig_type->type_unit_group;
8952
8953   /* If we've already processed this stmt_list there's no real need to
8954      do it again, we could fake it and just recreate the part we need
8955      (file name,index -> symtab mapping).  If data shows this optimization
8956      is useful we can do it then.  */
8957   first_time = tu_group->primary_symtab == NULL;
8958
8959   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
8960      debug info.  */
8961   lh = NULL;
8962   if (attr != NULL)
8963     {
8964       line_offset = DW_UNSND (attr);
8965       lh = dwarf_decode_line_header (line_offset, cu);
8966     }
8967   if (lh == NULL)
8968     {
8969       if (first_time)
8970         dwarf2_start_symtab (cu, "", NULL, 0);
8971       else
8972         {
8973           gdb_assert (tu_group->symtabs == NULL);
8974           restart_symtab (0);
8975         }
8976       /* Note: The primary symtab will get allocated at the end.  */
8977       return;
8978     }
8979
8980   cu->line_header = lh;
8981   make_cleanup (free_cu_line_header, cu);
8982
8983   if (first_time)
8984     {
8985       dwarf2_start_symtab (cu, "", NULL, 0);
8986
8987       tu_group->num_symtabs = lh->num_file_names;
8988       tu_group->symtabs = XNEWVEC (struct symtab *, lh->num_file_names);
8989
8990       for (i = 0; i < lh->num_file_names; ++i)
8991         {
8992           const char *dir = NULL;
8993           struct file_entry *fe = &lh->file_names[i];
8994
8995           if (fe->dir_index)
8996             dir = lh->include_dirs[fe->dir_index - 1];
8997           dwarf2_start_subfile (fe->name, dir, NULL);
8998
8999           /* Note: We don't have to watch for the main subfile here, type units
9000              don't have DW_AT_name.  */
9001
9002           if (current_subfile->symtab == NULL)
9003             {
9004               /* NOTE: start_subfile will recognize when it's been passed
9005                  a file it has already seen.  So we can't assume there's a
9006                  simple mapping from lh->file_names to subfiles,
9007                  lh->file_names may contain dups.  */
9008               current_subfile->symtab = allocate_symtab (current_subfile->name,
9009                                                          objfile);
9010             }
9011
9012           fe->symtab = current_subfile->symtab;
9013           tu_group->symtabs[i] = fe->symtab;
9014         }
9015     }
9016   else
9017     {
9018       restart_symtab (0);
9019
9020       for (i = 0; i < lh->num_file_names; ++i)
9021         {
9022           struct file_entry *fe = &lh->file_names[i];
9023
9024           fe->symtab = tu_group->symtabs[i];
9025         }
9026     }
9027
9028   /* The main symtab is allocated last.  Type units don't have DW_AT_name
9029      so they don't have a "real" (so to speak) symtab anyway.
9030      There is later code that will assign the main symtab to all symbols
9031      that don't have one.  We need to handle the case of a symbol with a
9032      missing symtab (DW_AT_decl_file) anyway.  */
9033 }
9034
9035 /* Process DW_TAG_type_unit.
9036    For TUs we want to skip the first top level sibling if it's not the
9037    actual type being defined by this TU.  In this case the first top
9038    level sibling is there to provide context only.  */
9039
9040 static void
9041 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
9042 {
9043   struct die_info *child_die;
9044
9045   prepare_one_comp_unit (cu, die, language_minimal);
9046
9047   /* Initialize (or reinitialize) the machinery for building symtabs.
9048      We do this before processing child DIEs, so that the line header table
9049      is available for DW_AT_decl_file.  */
9050   setup_type_unit_groups (die, cu);
9051
9052   if (die->child != NULL)
9053     {
9054       child_die = die->child;
9055       while (child_die && child_die->tag)
9056         {
9057           process_die (child_die, cu);
9058           child_die = sibling_die (child_die);
9059         }
9060     }
9061 }
9062 \f
9063 /* DWO/DWP files.
9064
9065    http://gcc.gnu.org/wiki/DebugFission
9066    http://gcc.gnu.org/wiki/DebugFissionDWP
9067
9068    To simplify handling of both DWO files ("object" files with the DWARF info)
9069    and DWP files (a file with the DWOs packaged up into one file), we treat
9070    DWP files as having a collection of virtual DWO files.  */
9071
9072 static hashval_t
9073 hash_dwo_file (const void *item)
9074 {
9075   const struct dwo_file *dwo_file = item;
9076   hashval_t hash;
9077
9078   hash = htab_hash_string (dwo_file->dwo_name);
9079   if (dwo_file->comp_dir != NULL)
9080     hash += htab_hash_string (dwo_file->comp_dir);
9081   return hash;
9082 }
9083
9084 static int
9085 eq_dwo_file (const void *item_lhs, const void *item_rhs)
9086 {
9087   const struct dwo_file *lhs = item_lhs;
9088   const struct dwo_file *rhs = item_rhs;
9089
9090   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
9091     return 0;
9092   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
9093     return lhs->comp_dir == rhs->comp_dir;
9094   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
9095 }
9096
9097 /* Allocate a hash table for DWO files.  */
9098
9099 static htab_t
9100 allocate_dwo_file_hash_table (void)
9101 {
9102   struct objfile *objfile = dwarf2_per_objfile->objfile;
9103
9104   return htab_create_alloc_ex (41,
9105                                hash_dwo_file,
9106                                eq_dwo_file,
9107                                NULL,
9108                                &objfile->objfile_obstack,
9109                                hashtab_obstack_allocate,
9110                                dummy_obstack_deallocate);
9111 }
9112
9113 /* Lookup DWO file DWO_NAME.  */
9114
9115 static void **
9116 lookup_dwo_file_slot (const char *dwo_name, const char *comp_dir)
9117 {
9118   struct dwo_file find_entry;
9119   void **slot;
9120
9121   if (dwarf2_per_objfile->dwo_files == NULL)
9122     dwarf2_per_objfile->dwo_files = allocate_dwo_file_hash_table ();
9123
9124   memset (&find_entry, 0, sizeof (find_entry));
9125   find_entry.dwo_name = dwo_name;
9126   find_entry.comp_dir = comp_dir;
9127   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
9128
9129   return slot;
9130 }
9131
9132 static hashval_t
9133 hash_dwo_unit (const void *item)
9134 {
9135   const struct dwo_unit *dwo_unit = item;
9136
9137   /* This drops the top 32 bits of the id, but is ok for a hash.  */
9138   return dwo_unit->signature;
9139 }
9140
9141 static int
9142 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
9143 {
9144   const struct dwo_unit *lhs = item_lhs;
9145   const struct dwo_unit *rhs = item_rhs;
9146
9147   /* The signature is assumed to be unique within the DWO file.
9148      So while object file CU dwo_id's always have the value zero,
9149      that's OK, assuming each object file DWO file has only one CU,
9150      and that's the rule for now.  */
9151   return lhs->signature == rhs->signature;
9152 }
9153
9154 /* Allocate a hash table for DWO CUs,TUs.
9155    There is one of these tables for each of CUs,TUs for each DWO file.  */
9156
9157 static htab_t
9158 allocate_dwo_unit_table (struct objfile *objfile)
9159 {
9160   /* Start out with a pretty small number.
9161      Generally DWO files contain only one CU and maybe some TUs.  */
9162   return htab_create_alloc_ex (3,
9163                                hash_dwo_unit,
9164                                eq_dwo_unit,
9165                                NULL,
9166                                &objfile->objfile_obstack,
9167                                hashtab_obstack_allocate,
9168                                dummy_obstack_deallocate);
9169 }
9170
9171 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
9172
9173 struct create_dwo_cu_data
9174 {
9175   struct dwo_file *dwo_file;
9176   struct dwo_unit dwo_unit;
9177 };
9178
9179 /* die_reader_func for create_dwo_cu.  */
9180
9181 static void
9182 create_dwo_cu_reader (const struct die_reader_specs *reader,
9183                       const gdb_byte *info_ptr,
9184                       struct die_info *comp_unit_die,
9185                       int has_children,
9186                       void *datap)
9187 {
9188   struct dwarf2_cu *cu = reader->cu;
9189   struct objfile *objfile = dwarf2_per_objfile->objfile;
9190   sect_offset offset = cu->per_cu->offset;
9191   struct dwarf2_section_info *section = cu->per_cu->section;
9192   struct create_dwo_cu_data *data = datap;
9193   struct dwo_file *dwo_file = data->dwo_file;
9194   struct dwo_unit *dwo_unit = &data->dwo_unit;
9195   struct attribute *attr;
9196
9197   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
9198   if (attr == NULL)
9199     {
9200       complaint (&symfile_complaints,
9201                  _("Dwarf Error: debug entry at offset 0x%x is missing"
9202                    " its dwo_id [in module %s]"),
9203                  offset.sect_off, dwo_file->dwo_name);
9204       return;
9205     }
9206
9207   dwo_unit->dwo_file = dwo_file;
9208   dwo_unit->signature = DW_UNSND (attr);
9209   dwo_unit->section = section;
9210   dwo_unit->offset = offset;
9211   dwo_unit->length = cu->per_cu->length;
9212
9213   if (dwarf2_read_debug)
9214     fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, dwo_id %s\n",
9215                         offset.sect_off, hex_string (dwo_unit->signature));
9216 }
9217
9218 /* Create the dwo_unit for the lone CU in DWO_FILE.
9219    Note: This function processes DWO files only, not DWP files.  */
9220
9221 static struct dwo_unit *
9222 create_dwo_cu (struct dwo_file *dwo_file)
9223 {
9224   struct objfile *objfile = dwarf2_per_objfile->objfile;
9225   struct dwarf2_section_info *section = &dwo_file->sections.info;
9226   bfd *abfd;
9227   htab_t cu_htab;
9228   const gdb_byte *info_ptr, *end_ptr;
9229   struct create_dwo_cu_data create_dwo_cu_data;
9230   struct dwo_unit *dwo_unit;
9231
9232   dwarf2_read_section (objfile, section);
9233   info_ptr = section->buffer;
9234
9235   if (info_ptr == NULL)
9236     return NULL;
9237
9238   /* We can't set abfd until now because the section may be empty or
9239      not present, in which case section->asection will be NULL.  */
9240   abfd = get_section_bfd_owner (section);
9241
9242   if (dwarf2_read_debug)
9243     {
9244       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
9245                           get_section_name (section),
9246                           get_section_file_name (section));
9247     }
9248
9249   create_dwo_cu_data.dwo_file = dwo_file;
9250   dwo_unit = NULL;
9251
9252   end_ptr = info_ptr + section->size;
9253   while (info_ptr < end_ptr)
9254     {
9255       struct dwarf2_per_cu_data per_cu;
9256
9257       memset (&create_dwo_cu_data.dwo_unit, 0,
9258               sizeof (create_dwo_cu_data.dwo_unit));
9259       memset (&per_cu, 0, sizeof (per_cu));
9260       per_cu.objfile = objfile;
9261       per_cu.is_debug_types = 0;
9262       per_cu.offset.sect_off = info_ptr - section->buffer;
9263       per_cu.section = section;
9264
9265       init_cutu_and_read_dies_no_follow (&per_cu,
9266                                          &dwo_file->sections.abbrev,
9267                                          dwo_file,
9268                                          create_dwo_cu_reader,
9269                                          &create_dwo_cu_data);
9270
9271       if (create_dwo_cu_data.dwo_unit.dwo_file != NULL)
9272         {
9273           /* If we've already found one, complain.  We only support one
9274              because having more than one requires hacking the dwo_name of
9275              each to match, which is highly unlikely to happen.  */
9276           if (dwo_unit != NULL)
9277             {
9278               complaint (&symfile_complaints,
9279                          _("Multiple CUs in DWO file %s [in module %s]"),
9280                          dwo_file->dwo_name, objfile_name (objfile));
9281               break;
9282             }
9283
9284           dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
9285           *dwo_unit = create_dwo_cu_data.dwo_unit;
9286         }
9287
9288       info_ptr += per_cu.length;
9289     }
9290
9291   return dwo_unit;
9292 }
9293
9294 /* DWP file .debug_{cu,tu}_index section format:
9295    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
9296
9297    DWP Version 1:
9298
9299    Both index sections have the same format, and serve to map a 64-bit
9300    signature to a set of section numbers.  Each section begins with a header,
9301    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
9302    indexes, and a pool of 32-bit section numbers.  The index sections will be
9303    aligned at 8-byte boundaries in the file.
9304
9305    The index section header consists of:
9306
9307     V, 32 bit version number
9308     -, 32 bits unused
9309     N, 32 bit number of compilation units or type units in the index
9310     M, 32 bit number of slots in the hash table
9311
9312    Numbers are recorded using the byte order of the application binary.
9313
9314    The hash table begins at offset 16 in the section, and consists of an array
9315    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
9316    order of the application binary).  Unused slots in the hash table are 0.
9317    (We rely on the extreme unlikeliness of a signature being exactly 0.)
9318
9319    The parallel table begins immediately after the hash table
9320    (at offset 16 + 8 * M from the beginning of the section), and consists of an
9321    array of 32-bit indexes (using the byte order of the application binary),
9322    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
9323    table contains a 32-bit index into the pool of section numbers.  For unused
9324    hash table slots, the corresponding entry in the parallel table will be 0.
9325
9326    The pool of section numbers begins immediately following the hash table
9327    (at offset 16 + 12 * M from the beginning of the section).  The pool of
9328    section numbers consists of an array of 32-bit words (using the byte order
9329    of the application binary).  Each item in the array is indexed starting
9330    from 0.  The hash table entry provides the index of the first section
9331    number in the set.  Additional section numbers in the set follow, and the
9332    set is terminated by a 0 entry (section number 0 is not used in ELF).
9333
9334    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
9335    section must be the first entry in the set, and the .debug_abbrev.dwo must
9336    be the second entry. Other members of the set may follow in any order.
9337
9338    ---
9339
9340    DWP Version 2:
9341
9342    DWP Version 2 combines all the .debug_info, etc. sections into one,
9343    and the entries in the index tables are now offsets into these sections.
9344    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
9345    section.
9346
9347    Index Section Contents:
9348     Header
9349     Hash Table of Signatures   dwp_hash_table.hash_table
9350     Parallel Table of Indices  dwp_hash_table.unit_table
9351     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
9352     Table of Section Sizes     dwp_hash_table.v2.sizes
9353
9354    The index section header consists of:
9355
9356     V, 32 bit version number
9357     L, 32 bit number of columns in the table of section offsets
9358     N, 32 bit number of compilation units or type units in the index
9359     M, 32 bit number of slots in the hash table
9360
9361    Numbers are recorded using the byte order of the application binary.
9362
9363    The hash table has the same format as version 1.
9364    The parallel table of indices has the same format as version 1,
9365    except that the entries are origin-1 indices into the table of sections
9366    offsets and the table of section sizes.
9367
9368    The table of offsets begins immediately following the parallel table
9369    (at offset 16 + 12 * M from the beginning of the section).  The table is
9370    a two-dimensional array of 32-bit words (using the byte order of the
9371    application binary), with L columns and N+1 rows, in row-major order.
9372    Each row in the array is indexed starting from 0.  The first row provides
9373    a key to the remaining rows: each column in this row provides an identifier
9374    for a debug section, and the offsets in the same column of subsequent rows
9375    refer to that section.  The section identifiers are:
9376
9377     DW_SECT_INFO         1  .debug_info.dwo
9378     DW_SECT_TYPES        2  .debug_types.dwo
9379     DW_SECT_ABBREV       3  .debug_abbrev.dwo
9380     DW_SECT_LINE         4  .debug_line.dwo
9381     DW_SECT_LOC          5  .debug_loc.dwo
9382     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
9383     DW_SECT_MACINFO      7  .debug_macinfo.dwo
9384     DW_SECT_MACRO        8  .debug_macro.dwo
9385
9386    The offsets provided by the CU and TU index sections are the base offsets
9387    for the contributions made by each CU or TU to the corresponding section
9388    in the package file.  Each CU and TU header contains an abbrev_offset
9389    field, used to find the abbreviations table for that CU or TU within the
9390    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
9391    be interpreted as relative to the base offset given in the index section.
9392    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
9393    should be interpreted as relative to the base offset for .debug_line.dwo,
9394    and offsets into other debug sections obtained from DWARF attributes should
9395    also be interpreted as relative to the corresponding base offset.
9396
9397    The table of sizes begins immediately following the table of offsets.
9398    Like the table of offsets, it is a two-dimensional array of 32-bit words,
9399    with L columns and N rows, in row-major order.  Each row in the array is
9400    indexed starting from 1 (row 0 is shared by the two tables).
9401
9402    ---
9403
9404    Hash table lookup is handled the same in version 1 and 2:
9405
9406    We assume that N and M will not exceed 2^32 - 1.
9407    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
9408
9409    Given a 64-bit compilation unit signature or a type signature S, an entry
9410    in the hash table is located as follows:
9411
9412    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
9413       the low-order k bits all set to 1.
9414
9415    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
9416
9417    3) If the hash table entry at index H matches the signature, use that
9418       entry.  If the hash table entry at index H is unused (all zeroes),
9419       terminate the search: the signature is not present in the table.
9420
9421    4) Let H = (H + H') modulo M. Repeat at Step 3.
9422
9423    Because M > N and H' and M are relatively prime, the search is guaranteed
9424    to stop at an unused slot or find the match.  */
9425
9426 /* Create a hash table to map DWO IDs to their CU/TU entry in
9427    .debug_{info,types}.dwo in DWP_FILE.
9428    Returns NULL if there isn't one.
9429    Note: This function processes DWP files only, not DWO files.  */
9430
9431 static struct dwp_hash_table *
9432 create_dwp_hash_table (struct dwp_file *dwp_file, int is_debug_types)
9433 {
9434   struct objfile *objfile = dwarf2_per_objfile->objfile;
9435   bfd *dbfd = dwp_file->dbfd;
9436   const gdb_byte *index_ptr, *index_end;
9437   struct dwarf2_section_info *index;
9438   uint32_t version, nr_columns, nr_units, nr_slots;
9439   struct dwp_hash_table *htab;
9440
9441   if (is_debug_types)
9442     index = &dwp_file->sections.tu_index;
9443   else
9444     index = &dwp_file->sections.cu_index;
9445
9446   if (dwarf2_section_empty_p (index))
9447     return NULL;
9448   dwarf2_read_section (objfile, index);
9449
9450   index_ptr = index->buffer;
9451   index_end = index_ptr + index->size;
9452
9453   version = read_4_bytes (dbfd, index_ptr);
9454   index_ptr += 4;
9455   if (version == 2)
9456     nr_columns = read_4_bytes (dbfd, index_ptr);
9457   else
9458     nr_columns = 0;
9459   index_ptr += 4;
9460   nr_units = read_4_bytes (dbfd, index_ptr);
9461   index_ptr += 4;
9462   nr_slots = read_4_bytes (dbfd, index_ptr);
9463   index_ptr += 4;
9464
9465   if (version != 1 && version != 2)
9466     {
9467       error (_("Dwarf Error: unsupported DWP file version (%s)"
9468                " [in module %s]"),
9469              pulongest (version), dwp_file->name);
9470     }
9471   if (nr_slots != (nr_slots & -nr_slots))
9472     {
9473       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
9474                " is not power of 2 [in module %s]"),
9475              pulongest (nr_slots), dwp_file->name);
9476     }
9477
9478   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
9479   htab->version = version;
9480   htab->nr_columns = nr_columns;
9481   htab->nr_units = nr_units;
9482   htab->nr_slots = nr_slots;
9483   htab->hash_table = index_ptr;
9484   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
9485
9486   /* Exit early if the table is empty.  */
9487   if (nr_slots == 0 || nr_units == 0
9488       || (version == 2 && nr_columns == 0))
9489     {
9490       /* All must be zero.  */
9491       if (nr_slots != 0 || nr_units != 0
9492           || (version == 2 && nr_columns != 0))
9493         {
9494           complaint (&symfile_complaints,
9495                      _("Empty DWP but nr_slots,nr_units,nr_columns not"
9496                        " all zero [in modules %s]"),
9497                      dwp_file->name);
9498         }
9499       return htab;
9500     }
9501
9502   if (version == 1)
9503     {
9504       htab->section_pool.v1.indices =
9505         htab->unit_table + sizeof (uint32_t) * nr_slots;
9506       /* It's harder to decide whether the section is too small in v1.
9507          V1 is deprecated anyway so we punt.  */
9508     }
9509   else
9510     {
9511       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
9512       int *ids = htab->section_pool.v2.section_ids;
9513       /* Reverse map for error checking.  */
9514       int ids_seen[DW_SECT_MAX + 1];
9515       int i;
9516
9517       if (nr_columns < 2)
9518         {
9519           error (_("Dwarf Error: bad DWP hash table, too few columns"
9520                    " in section table [in module %s]"),
9521                  dwp_file->name);
9522         }
9523       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
9524         {
9525           error (_("Dwarf Error: bad DWP hash table, too many columns"
9526                    " in section table [in module %s]"),
9527                  dwp_file->name);
9528         }
9529       memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9530       memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9531       for (i = 0; i < nr_columns; ++i)
9532         {
9533           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
9534
9535           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
9536             {
9537               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
9538                        " in section table [in module %s]"),
9539                      id, dwp_file->name);
9540             }
9541           if (ids_seen[id] != -1)
9542             {
9543               error (_("Dwarf Error: bad DWP hash table, duplicate section"
9544                        " id %d in section table [in module %s]"),
9545                      id, dwp_file->name);
9546             }
9547           ids_seen[id] = i;
9548           ids[i] = id;
9549         }
9550       /* Must have exactly one info or types section.  */
9551       if (((ids_seen[DW_SECT_INFO] != -1)
9552            + (ids_seen[DW_SECT_TYPES] != -1))
9553           != 1)
9554         {
9555           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
9556                    " DWO info/types section [in module %s]"),
9557                  dwp_file->name);
9558         }
9559       /* Must have an abbrev section.  */
9560       if (ids_seen[DW_SECT_ABBREV] == -1)
9561         {
9562           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
9563                    " section [in module %s]"),
9564                  dwp_file->name);
9565         }
9566       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
9567       htab->section_pool.v2.sizes =
9568         htab->section_pool.v2.offsets + (sizeof (uint32_t)
9569                                          * nr_units * nr_columns);
9570       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
9571                                           * nr_units * nr_columns))
9572           > index_end)
9573         {
9574           error (_("Dwarf Error: DWP index section is corrupt (too small)"
9575                    " [in module %s]"),
9576                  dwp_file->name);
9577         }
9578     }
9579
9580   return htab;
9581 }
9582
9583 /* Update SECTIONS with the data from SECTP.
9584
9585    This function is like the other "locate" section routines that are
9586    passed to bfd_map_over_sections, but in this context the sections to
9587    read comes from the DWP V1 hash table, not the full ELF section table.
9588
9589    The result is non-zero for success, or zero if an error was found.  */
9590
9591 static int
9592 locate_v1_virtual_dwo_sections (asection *sectp,
9593                                 struct virtual_v1_dwo_sections *sections)
9594 {
9595   const struct dwop_section_names *names = &dwop_section_names;
9596
9597   if (section_is_p (sectp->name, &names->abbrev_dwo))
9598     {
9599       /* There can be only one.  */
9600       if (sections->abbrev.s.asection != NULL)
9601         return 0;
9602       sections->abbrev.s.asection = sectp;
9603       sections->abbrev.size = bfd_get_section_size (sectp);
9604     }
9605   else if (section_is_p (sectp->name, &names->info_dwo)
9606            || section_is_p (sectp->name, &names->types_dwo))
9607     {
9608       /* There can be only one.  */
9609       if (sections->info_or_types.s.asection != NULL)
9610         return 0;
9611       sections->info_or_types.s.asection = sectp;
9612       sections->info_or_types.size = bfd_get_section_size (sectp);
9613     }
9614   else if (section_is_p (sectp->name, &names->line_dwo))
9615     {
9616       /* There can be only one.  */
9617       if (sections->line.s.asection != NULL)
9618         return 0;
9619       sections->line.s.asection = sectp;
9620       sections->line.size = bfd_get_section_size (sectp);
9621     }
9622   else if (section_is_p (sectp->name, &names->loc_dwo))
9623     {
9624       /* There can be only one.  */
9625       if (sections->loc.s.asection != NULL)
9626         return 0;
9627       sections->loc.s.asection = sectp;
9628       sections->loc.size = bfd_get_section_size (sectp);
9629     }
9630   else if (section_is_p (sectp->name, &names->macinfo_dwo))
9631     {
9632       /* There can be only one.  */
9633       if (sections->macinfo.s.asection != NULL)
9634         return 0;
9635       sections->macinfo.s.asection = sectp;
9636       sections->macinfo.size = bfd_get_section_size (sectp);
9637     }
9638   else if (section_is_p (sectp->name, &names->macro_dwo))
9639     {
9640       /* There can be only one.  */
9641       if (sections->macro.s.asection != NULL)
9642         return 0;
9643       sections->macro.s.asection = sectp;
9644       sections->macro.size = bfd_get_section_size (sectp);
9645     }
9646   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
9647     {
9648       /* There can be only one.  */
9649       if (sections->str_offsets.s.asection != NULL)
9650         return 0;
9651       sections->str_offsets.s.asection = sectp;
9652       sections->str_offsets.size = bfd_get_section_size (sectp);
9653     }
9654   else
9655     {
9656       /* No other kind of section is valid.  */
9657       return 0;
9658     }
9659
9660   return 1;
9661 }
9662
9663 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
9664    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
9665    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
9666    This is for DWP version 1 files.  */
9667
9668 static struct dwo_unit *
9669 create_dwo_unit_in_dwp_v1 (struct dwp_file *dwp_file,
9670                            uint32_t unit_index,
9671                            const char *comp_dir,
9672                            ULONGEST signature, int is_debug_types)
9673 {
9674   struct objfile *objfile = dwarf2_per_objfile->objfile;
9675   const struct dwp_hash_table *dwp_htab =
9676     is_debug_types ? dwp_file->tus : dwp_file->cus;
9677   bfd *dbfd = dwp_file->dbfd;
9678   const char *kind = is_debug_types ? "TU" : "CU";
9679   struct dwo_file *dwo_file;
9680   struct dwo_unit *dwo_unit;
9681   struct virtual_v1_dwo_sections sections;
9682   void **dwo_file_slot;
9683   char *virtual_dwo_name;
9684   struct dwarf2_section_info *cutu;
9685   struct cleanup *cleanups;
9686   int i;
9687
9688   gdb_assert (dwp_file->version == 1);
9689
9690   if (dwarf2_read_debug)
9691     {
9692       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
9693                           kind,
9694                           pulongest (unit_index), hex_string (signature),
9695                           dwp_file->name);
9696     }
9697
9698   /* Fetch the sections of this DWO unit.
9699      Put a limit on the number of sections we look for so that bad data
9700      doesn't cause us to loop forever.  */
9701
9702 #define MAX_NR_V1_DWO_SECTIONS \
9703   (1 /* .debug_info or .debug_types */ \
9704    + 1 /* .debug_abbrev */ \
9705    + 1 /* .debug_line */ \
9706    + 1 /* .debug_loc */ \
9707    + 1 /* .debug_str_offsets */ \
9708    + 1 /* .debug_macro or .debug_macinfo */ \
9709    + 1 /* trailing zero */)
9710
9711   memset (&sections, 0, sizeof (sections));
9712   cleanups = make_cleanup (null_cleanup, 0);
9713
9714   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
9715     {
9716       asection *sectp;
9717       uint32_t section_nr =
9718         read_4_bytes (dbfd,
9719                       dwp_htab->section_pool.v1.indices
9720                       + (unit_index + i) * sizeof (uint32_t));
9721
9722       if (section_nr == 0)
9723         break;
9724       if (section_nr >= dwp_file->num_sections)
9725         {
9726           error (_("Dwarf Error: bad DWP hash table, section number too large"
9727                    " [in module %s]"),
9728                  dwp_file->name);
9729         }
9730
9731       sectp = dwp_file->elf_sections[section_nr];
9732       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
9733         {
9734           error (_("Dwarf Error: bad DWP hash table, invalid section found"
9735                    " [in module %s]"),
9736                  dwp_file->name);
9737         }
9738     }
9739
9740   if (i < 2
9741       || dwarf2_section_empty_p (&sections.info_or_types)
9742       || dwarf2_section_empty_p (&sections.abbrev))
9743     {
9744       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
9745                " [in module %s]"),
9746              dwp_file->name);
9747     }
9748   if (i == MAX_NR_V1_DWO_SECTIONS)
9749     {
9750       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
9751                " [in module %s]"),
9752              dwp_file->name);
9753     }
9754
9755   /* It's easier for the rest of the code if we fake a struct dwo_file and
9756      have dwo_unit "live" in that.  At least for now.
9757
9758      The DWP file can be made up of a random collection of CUs and TUs.
9759      However, for each CU + set of TUs that came from the same original DWO
9760      file, we can combine them back into a virtual DWO file to save space
9761      (fewer struct dwo_file objects to allocate).  Remember that for really
9762      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
9763
9764   virtual_dwo_name =
9765     xstrprintf ("virtual-dwo/%d-%d-%d-%d",
9766                 get_section_id (&sections.abbrev),
9767                 get_section_id (&sections.line),
9768                 get_section_id (&sections.loc),
9769                 get_section_id (&sections.str_offsets));
9770   make_cleanup (xfree, virtual_dwo_name);
9771   /* Can we use an existing virtual DWO file?  */
9772   dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
9773   /* Create one if necessary.  */
9774   if (*dwo_file_slot == NULL)
9775     {
9776       if (dwarf2_read_debug)
9777         {
9778           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
9779                               virtual_dwo_name);
9780         }
9781       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
9782       dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
9783                                           virtual_dwo_name,
9784                                           strlen (virtual_dwo_name));
9785       dwo_file->comp_dir = comp_dir;
9786       dwo_file->sections.abbrev = sections.abbrev;
9787       dwo_file->sections.line = sections.line;
9788       dwo_file->sections.loc = sections.loc;
9789       dwo_file->sections.macinfo = sections.macinfo;
9790       dwo_file->sections.macro = sections.macro;
9791       dwo_file->sections.str_offsets = sections.str_offsets;
9792       /* The "str" section is global to the entire DWP file.  */
9793       dwo_file->sections.str = dwp_file->sections.str;
9794       /* The info or types section is assigned below to dwo_unit,
9795          there's no need to record it in dwo_file.
9796          Also, we can't simply record type sections in dwo_file because
9797          we record a pointer into the vector in dwo_unit.  As we collect more
9798          types we'll grow the vector and eventually have to reallocate space
9799          for it, invalidating all copies of pointers into the previous
9800          contents.  */
9801       *dwo_file_slot = dwo_file;
9802     }
9803   else
9804     {
9805       if (dwarf2_read_debug)
9806         {
9807           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
9808                               virtual_dwo_name);
9809         }
9810       dwo_file = *dwo_file_slot;
9811     }
9812   do_cleanups (cleanups);
9813
9814   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
9815   dwo_unit->dwo_file = dwo_file;
9816   dwo_unit->signature = signature;
9817   dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
9818                                      sizeof (struct dwarf2_section_info));
9819   *dwo_unit->section = sections.info_or_types;
9820   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
9821
9822   return dwo_unit;
9823 }
9824
9825 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
9826    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
9827    piece within that section used by a TU/CU, return a virtual section
9828    of just that piece.  */
9829
9830 static struct dwarf2_section_info
9831 create_dwp_v2_section (struct dwarf2_section_info *section,
9832                        bfd_size_type offset, bfd_size_type size)
9833 {
9834   struct dwarf2_section_info result;
9835   asection *sectp;
9836
9837   gdb_assert (section != NULL);
9838   gdb_assert (!section->is_virtual);
9839
9840   memset (&result, 0, sizeof (result));
9841   result.s.containing_section = section;
9842   result.is_virtual = 1;
9843
9844   if (size == 0)
9845     return result;
9846
9847   sectp = get_section_bfd_section (section);
9848
9849   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
9850      bounds of the real section.  This is a pretty-rare event, so just
9851      flag an error (easier) instead of a warning and trying to cope.  */
9852   if (sectp == NULL
9853       || offset + size > bfd_get_section_size (sectp))
9854     {
9855       bfd *abfd = sectp->owner;
9856
9857       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
9858                " in section %s [in module %s]"),
9859              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
9860              objfile_name (dwarf2_per_objfile->objfile));
9861     }
9862
9863   result.virtual_offset = offset;
9864   result.size = size;
9865   return result;
9866 }
9867
9868 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
9869    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
9870    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
9871    This is for DWP version 2 files.  */
9872
9873 static struct dwo_unit *
9874 create_dwo_unit_in_dwp_v2 (struct dwp_file *dwp_file,
9875                            uint32_t unit_index,
9876                            const char *comp_dir,
9877                            ULONGEST signature, int is_debug_types)
9878 {
9879   struct objfile *objfile = dwarf2_per_objfile->objfile;
9880   const struct dwp_hash_table *dwp_htab =
9881     is_debug_types ? dwp_file->tus : dwp_file->cus;
9882   bfd *dbfd = dwp_file->dbfd;
9883   const char *kind = is_debug_types ? "TU" : "CU";
9884   struct dwo_file *dwo_file;
9885   struct dwo_unit *dwo_unit;
9886   struct virtual_v2_dwo_sections sections;
9887   void **dwo_file_slot;
9888   char *virtual_dwo_name;
9889   struct dwarf2_section_info *cutu;
9890   struct cleanup *cleanups;
9891   int i;
9892
9893   gdb_assert (dwp_file->version == 2);
9894
9895   if (dwarf2_read_debug)
9896     {
9897       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
9898                           kind,
9899                           pulongest (unit_index), hex_string (signature),
9900                           dwp_file->name);
9901     }
9902
9903   /* Fetch the section offsets of this DWO unit.  */
9904
9905   memset (&sections, 0, sizeof (sections));
9906   cleanups = make_cleanup (null_cleanup, 0);
9907
9908   for (i = 0; i < dwp_htab->nr_columns; ++i)
9909     {
9910       uint32_t offset = read_4_bytes (dbfd,
9911                                       dwp_htab->section_pool.v2.offsets
9912                                       + (((unit_index - 1) * dwp_htab->nr_columns
9913                                           + i)
9914                                          * sizeof (uint32_t)));
9915       uint32_t size = read_4_bytes (dbfd,
9916                                     dwp_htab->section_pool.v2.sizes
9917                                     + (((unit_index - 1) * dwp_htab->nr_columns
9918                                         + i)
9919                                        * sizeof (uint32_t)));
9920
9921       switch (dwp_htab->section_pool.v2.section_ids[i])
9922         {
9923         case DW_SECT_INFO:
9924         case DW_SECT_TYPES:
9925           sections.info_or_types_offset = offset;
9926           sections.info_or_types_size = size;
9927           break;
9928         case DW_SECT_ABBREV:
9929           sections.abbrev_offset = offset;
9930           sections.abbrev_size = size;
9931           break;
9932         case DW_SECT_LINE:
9933           sections.line_offset = offset;
9934           sections.line_size = size;
9935           break;
9936         case DW_SECT_LOC:
9937           sections.loc_offset = offset;
9938           sections.loc_size = size;
9939           break;
9940         case DW_SECT_STR_OFFSETS:
9941           sections.str_offsets_offset = offset;
9942           sections.str_offsets_size = size;
9943           break;
9944         case DW_SECT_MACINFO:
9945           sections.macinfo_offset = offset;
9946           sections.macinfo_size = size;
9947           break;
9948         case DW_SECT_MACRO:
9949           sections.macro_offset = offset;
9950           sections.macro_size = size;
9951           break;
9952         }
9953     }
9954
9955   /* It's easier for the rest of the code if we fake a struct dwo_file and
9956      have dwo_unit "live" in that.  At least for now.
9957
9958      The DWP file can be made up of a random collection of CUs and TUs.
9959      However, for each CU + set of TUs that came from the same original DWO
9960      file, we can combine them back into a virtual DWO file to save space
9961      (fewer struct dwo_file objects to allocate).  Remember that for really
9962      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
9963
9964   virtual_dwo_name =
9965     xstrprintf ("virtual-dwo/%ld-%ld-%ld-%ld",
9966                 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
9967                 (long) (sections.line_size ? sections.line_offset : 0),
9968                 (long) (sections.loc_size ? sections.loc_offset : 0),
9969                 (long) (sections.str_offsets_size
9970                         ? sections.str_offsets_offset : 0));
9971   make_cleanup (xfree, virtual_dwo_name);
9972   /* Can we use an existing virtual DWO file?  */
9973   dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
9974   /* Create one if necessary.  */
9975   if (*dwo_file_slot == NULL)
9976     {
9977       if (dwarf2_read_debug)
9978         {
9979           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
9980                               virtual_dwo_name);
9981         }
9982       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
9983       dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
9984                                           virtual_dwo_name,
9985                                           strlen (virtual_dwo_name));
9986       dwo_file->comp_dir = comp_dir;
9987       dwo_file->sections.abbrev =
9988         create_dwp_v2_section (&dwp_file->sections.abbrev,
9989                                sections.abbrev_offset, sections.abbrev_size);
9990       dwo_file->sections.line =
9991         create_dwp_v2_section (&dwp_file->sections.line,
9992                                sections.line_offset, sections.line_size);
9993       dwo_file->sections.loc =
9994         create_dwp_v2_section (&dwp_file->sections.loc,
9995                                sections.loc_offset, sections.loc_size);
9996       dwo_file->sections.macinfo =
9997         create_dwp_v2_section (&dwp_file->sections.macinfo,
9998                                sections.macinfo_offset, sections.macinfo_size);
9999       dwo_file->sections.macro =
10000         create_dwp_v2_section (&dwp_file->sections.macro,
10001                                sections.macro_offset, sections.macro_size);
10002       dwo_file->sections.str_offsets =
10003         create_dwp_v2_section (&dwp_file->sections.str_offsets,
10004                                sections.str_offsets_offset,
10005                                sections.str_offsets_size);
10006       /* The "str" section is global to the entire DWP file.  */
10007       dwo_file->sections.str = dwp_file->sections.str;
10008       /* The info or types section is assigned below to dwo_unit,
10009          there's no need to record it in dwo_file.
10010          Also, we can't simply record type sections in dwo_file because
10011          we record a pointer into the vector in dwo_unit.  As we collect more
10012          types we'll grow the vector and eventually have to reallocate space
10013          for it, invalidating all copies of pointers into the previous
10014          contents.  */
10015       *dwo_file_slot = dwo_file;
10016     }
10017   else
10018     {
10019       if (dwarf2_read_debug)
10020         {
10021           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10022                               virtual_dwo_name);
10023         }
10024       dwo_file = *dwo_file_slot;
10025     }
10026   do_cleanups (cleanups);
10027
10028   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10029   dwo_unit->dwo_file = dwo_file;
10030   dwo_unit->signature = signature;
10031   dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
10032                                      sizeof (struct dwarf2_section_info));
10033   *dwo_unit->section = create_dwp_v2_section (is_debug_types
10034                                               ? &dwp_file->sections.types
10035                                               : &dwp_file->sections.info,
10036                                               sections.info_or_types_offset,
10037                                               sections.info_or_types_size);
10038   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
10039
10040   return dwo_unit;
10041 }
10042
10043 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
10044    Returns NULL if the signature isn't found.  */
10045
10046 static struct dwo_unit *
10047 lookup_dwo_unit_in_dwp (struct dwp_file *dwp_file, const char *comp_dir,
10048                         ULONGEST signature, int is_debug_types)
10049 {
10050   const struct dwp_hash_table *dwp_htab =
10051     is_debug_types ? dwp_file->tus : dwp_file->cus;
10052   bfd *dbfd = dwp_file->dbfd;
10053   uint32_t mask = dwp_htab->nr_slots - 1;
10054   uint32_t hash = signature & mask;
10055   uint32_t hash2 = ((signature >> 32) & mask) | 1;
10056   unsigned int i;
10057   void **slot;
10058   struct dwo_unit find_dwo_cu, *dwo_cu;
10059
10060   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
10061   find_dwo_cu.signature = signature;
10062   slot = htab_find_slot (is_debug_types
10063                          ? dwp_file->loaded_tus
10064                          : dwp_file->loaded_cus,
10065                          &find_dwo_cu, INSERT);
10066
10067   if (*slot != NULL)
10068     return *slot;
10069
10070   /* Use a for loop so that we don't loop forever on bad debug info.  */
10071   for (i = 0; i < dwp_htab->nr_slots; ++i)
10072     {
10073       ULONGEST signature_in_table;
10074
10075       signature_in_table =
10076         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
10077       if (signature_in_table == signature)
10078         {
10079           uint32_t unit_index =
10080             read_4_bytes (dbfd,
10081                           dwp_htab->unit_table + hash * sizeof (uint32_t));
10082
10083           if (dwp_file->version == 1)
10084             {
10085               *slot = create_dwo_unit_in_dwp_v1 (dwp_file, unit_index,
10086                                                  comp_dir, signature,
10087                                                  is_debug_types);
10088             }
10089           else
10090             {
10091               *slot = create_dwo_unit_in_dwp_v2 (dwp_file, unit_index,
10092                                                  comp_dir, signature,
10093                                                  is_debug_types);
10094             }
10095           return *slot;
10096         }
10097       if (signature_in_table == 0)
10098         return NULL;
10099       hash = (hash + hash2) & mask;
10100     }
10101
10102   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
10103            " [in module %s]"),
10104          dwp_file->name);
10105 }
10106
10107 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
10108    Open the file specified by FILE_NAME and hand it off to BFD for
10109    preliminary analysis.  Return a newly initialized bfd *, which
10110    includes a canonicalized copy of FILE_NAME.
10111    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
10112    SEARCH_CWD is true if the current directory is to be searched.
10113    It will be searched before debug-file-directory.
10114    If unable to find/open the file, return NULL.
10115    NOTE: This function is derived from symfile_bfd_open.  */
10116
10117 static bfd *
10118 try_open_dwop_file (const char *file_name, int is_dwp, int search_cwd)
10119 {
10120   bfd *sym_bfd;
10121   int desc, flags;
10122   char *absolute_name;
10123   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
10124      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
10125      to debug_file_directory.  */
10126   char *search_path;
10127   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
10128
10129   if (search_cwd)
10130     {
10131       if (*debug_file_directory != '\0')
10132         search_path = concat (".", dirname_separator_string,
10133                               debug_file_directory, NULL);
10134       else
10135         search_path = xstrdup (".");
10136     }
10137   else
10138     search_path = xstrdup (debug_file_directory);
10139
10140   flags = OPF_RETURN_REALPATH;
10141   if (is_dwp)
10142     flags |= OPF_SEARCH_IN_PATH;
10143   desc = openp (search_path, flags, file_name,
10144                 O_RDONLY | O_BINARY, &absolute_name);
10145   xfree (search_path);
10146   if (desc < 0)
10147     return NULL;
10148
10149   sym_bfd = gdb_bfd_open (absolute_name, gnutarget, desc);
10150   xfree (absolute_name);
10151   if (sym_bfd == NULL)
10152     return NULL;
10153   bfd_set_cacheable (sym_bfd, 1);
10154
10155   if (!bfd_check_format (sym_bfd, bfd_object))
10156     {
10157       gdb_bfd_unref (sym_bfd); /* This also closes desc.  */
10158       return NULL;
10159     }
10160
10161   return sym_bfd;
10162 }
10163
10164 /* Try to open DWO file FILE_NAME.
10165    COMP_DIR is the DW_AT_comp_dir attribute.
10166    The result is the bfd handle of the file.
10167    If there is a problem finding or opening the file, return NULL.
10168    Upon success, the canonicalized path of the file is stored in the bfd,
10169    same as symfile_bfd_open.  */
10170
10171 static bfd *
10172 open_dwo_file (const char *file_name, const char *comp_dir)
10173 {
10174   bfd *abfd;
10175
10176   if (IS_ABSOLUTE_PATH (file_name))
10177     return try_open_dwop_file (file_name, 0 /*is_dwp*/, 0 /*search_cwd*/);
10178
10179   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
10180
10181   if (comp_dir != NULL)
10182     {
10183       char *path_to_try = concat (comp_dir, SLASH_STRING, file_name, NULL);
10184
10185       /* NOTE: If comp_dir is a relative path, this will also try the
10186          search path, which seems useful.  */
10187       abfd = try_open_dwop_file (path_to_try, 0 /*is_dwp*/, 1 /*search_cwd*/);
10188       xfree (path_to_try);
10189       if (abfd != NULL)
10190         return abfd;
10191     }
10192
10193   /* That didn't work, try debug-file-directory, which, despite its name,
10194      is a list of paths.  */
10195
10196   if (*debug_file_directory == '\0')
10197     return NULL;
10198
10199   return try_open_dwop_file (file_name, 0 /*is_dwp*/, 1 /*search_cwd*/);
10200 }
10201
10202 /* This function is mapped across the sections and remembers the offset and
10203    size of each of the DWO debugging sections we are interested in.  */
10204
10205 static void
10206 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
10207 {
10208   struct dwo_sections *dwo_sections = dwo_sections_ptr;
10209   const struct dwop_section_names *names = &dwop_section_names;
10210
10211   if (section_is_p (sectp->name, &names->abbrev_dwo))
10212     {
10213       dwo_sections->abbrev.s.asection = sectp;
10214       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
10215     }
10216   else if (section_is_p (sectp->name, &names->info_dwo))
10217     {
10218       dwo_sections->info.s.asection = sectp;
10219       dwo_sections->info.size = bfd_get_section_size (sectp);
10220     }
10221   else if (section_is_p (sectp->name, &names->line_dwo))
10222     {
10223       dwo_sections->line.s.asection = sectp;
10224       dwo_sections->line.size = bfd_get_section_size (sectp);
10225     }
10226   else if (section_is_p (sectp->name, &names->loc_dwo))
10227     {
10228       dwo_sections->loc.s.asection = sectp;
10229       dwo_sections->loc.size = bfd_get_section_size (sectp);
10230     }
10231   else if (section_is_p (sectp->name, &names->macinfo_dwo))
10232     {
10233       dwo_sections->macinfo.s.asection = sectp;
10234       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
10235     }
10236   else if (section_is_p (sectp->name, &names->macro_dwo))
10237     {
10238       dwo_sections->macro.s.asection = sectp;
10239       dwo_sections->macro.size = bfd_get_section_size (sectp);
10240     }
10241   else if (section_is_p (sectp->name, &names->str_dwo))
10242     {
10243       dwo_sections->str.s.asection = sectp;
10244       dwo_sections->str.size = bfd_get_section_size (sectp);
10245     }
10246   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10247     {
10248       dwo_sections->str_offsets.s.asection = sectp;
10249       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
10250     }
10251   else if (section_is_p (sectp->name, &names->types_dwo))
10252     {
10253       struct dwarf2_section_info type_section;
10254
10255       memset (&type_section, 0, sizeof (type_section));
10256       type_section.s.asection = sectp;
10257       type_section.size = bfd_get_section_size (sectp);
10258       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
10259                      &type_section);
10260     }
10261 }
10262
10263 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
10264    by PER_CU.  This is for the non-DWP case.
10265    The result is NULL if DWO_NAME can't be found.  */
10266
10267 static struct dwo_file *
10268 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
10269                         const char *dwo_name, const char *comp_dir)
10270 {
10271   struct objfile *objfile = dwarf2_per_objfile->objfile;
10272   struct dwo_file *dwo_file;
10273   bfd *dbfd;
10274   struct cleanup *cleanups;
10275
10276   dbfd = open_dwo_file (dwo_name, comp_dir);
10277   if (dbfd == NULL)
10278     {
10279       if (dwarf2_read_debug)
10280         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
10281       return NULL;
10282     }
10283   dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
10284   dwo_file->dwo_name = dwo_name;
10285   dwo_file->comp_dir = comp_dir;
10286   dwo_file->dbfd = dbfd;
10287
10288   cleanups = make_cleanup (free_dwo_file_cleanup, dwo_file);
10289
10290   bfd_map_over_sections (dbfd, dwarf2_locate_dwo_sections, &dwo_file->sections);
10291
10292   dwo_file->cu = create_dwo_cu (dwo_file);
10293
10294   dwo_file->tus = create_debug_types_hash_table (dwo_file,
10295                                                  dwo_file->sections.types);
10296
10297   discard_cleanups (cleanups);
10298
10299   if (dwarf2_read_debug)
10300     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
10301
10302   return dwo_file;
10303 }
10304
10305 /* This function is mapped across the sections and remembers the offset and
10306    size of each of the DWP debugging sections common to version 1 and 2 that
10307    we are interested in.  */
10308
10309 static void
10310 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
10311                                    void *dwp_file_ptr)
10312 {
10313   struct dwp_file *dwp_file = dwp_file_ptr;
10314   const struct dwop_section_names *names = &dwop_section_names;
10315   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10316
10317   /* Record the ELF section number for later lookup: this is what the
10318      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
10319   gdb_assert (elf_section_nr < dwp_file->num_sections);
10320   dwp_file->elf_sections[elf_section_nr] = sectp;
10321
10322   /* Look for specific sections that we need.  */
10323   if (section_is_p (sectp->name, &names->str_dwo))
10324     {
10325       dwp_file->sections.str.s.asection = sectp;
10326       dwp_file->sections.str.size = bfd_get_section_size (sectp);
10327     }
10328   else if (section_is_p (sectp->name, &names->cu_index))
10329     {
10330       dwp_file->sections.cu_index.s.asection = sectp;
10331       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
10332     }
10333   else if (section_is_p (sectp->name, &names->tu_index))
10334     {
10335       dwp_file->sections.tu_index.s.asection = sectp;
10336       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
10337     }
10338 }
10339
10340 /* This function is mapped across the sections and remembers the offset and
10341    size of each of the DWP version 2 debugging sections that we are interested
10342    in.  This is split into a separate function because we don't know if we
10343    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
10344
10345 static void
10346 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
10347 {
10348   struct dwp_file *dwp_file = dwp_file_ptr;
10349   const struct dwop_section_names *names = &dwop_section_names;
10350   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10351
10352   /* Record the ELF section number for later lookup: this is what the
10353      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
10354   gdb_assert (elf_section_nr < dwp_file->num_sections);
10355   dwp_file->elf_sections[elf_section_nr] = sectp;
10356
10357   /* Look for specific sections that we need.  */
10358   if (section_is_p (sectp->name, &names->abbrev_dwo))
10359     {
10360       dwp_file->sections.abbrev.s.asection = sectp;
10361       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
10362     }
10363   else if (section_is_p (sectp->name, &names->info_dwo))
10364     {
10365       dwp_file->sections.info.s.asection = sectp;
10366       dwp_file->sections.info.size = bfd_get_section_size (sectp);
10367     }
10368   else if (section_is_p (sectp->name, &names->line_dwo))
10369     {
10370       dwp_file->sections.line.s.asection = sectp;
10371       dwp_file->sections.line.size = bfd_get_section_size (sectp);
10372     }
10373   else if (section_is_p (sectp->name, &names->loc_dwo))
10374     {
10375       dwp_file->sections.loc.s.asection = sectp;
10376       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
10377     }
10378   else if (section_is_p (sectp->name, &names->macinfo_dwo))
10379     {
10380       dwp_file->sections.macinfo.s.asection = sectp;
10381       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
10382     }
10383   else if (section_is_p (sectp->name, &names->macro_dwo))
10384     {
10385       dwp_file->sections.macro.s.asection = sectp;
10386       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
10387     }
10388   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10389     {
10390       dwp_file->sections.str_offsets.s.asection = sectp;
10391       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
10392     }
10393   else if (section_is_p (sectp->name, &names->types_dwo))
10394     {
10395       dwp_file->sections.types.s.asection = sectp;
10396       dwp_file->sections.types.size = bfd_get_section_size (sectp);
10397     }
10398 }
10399
10400 /* Hash function for dwp_file loaded CUs/TUs.  */
10401
10402 static hashval_t
10403 hash_dwp_loaded_cutus (const void *item)
10404 {
10405   const struct dwo_unit *dwo_unit = item;
10406
10407   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
10408   return dwo_unit->signature;
10409 }
10410
10411 /* Equality function for dwp_file loaded CUs/TUs.  */
10412
10413 static int
10414 eq_dwp_loaded_cutus (const void *a, const void *b)
10415 {
10416   const struct dwo_unit *dua = a;
10417   const struct dwo_unit *dub = b;
10418
10419   return dua->signature == dub->signature;
10420 }
10421
10422 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
10423
10424 static htab_t
10425 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
10426 {
10427   return htab_create_alloc_ex (3,
10428                                hash_dwp_loaded_cutus,
10429                                eq_dwp_loaded_cutus,
10430                                NULL,
10431                                &objfile->objfile_obstack,
10432                                hashtab_obstack_allocate,
10433                                dummy_obstack_deallocate);
10434 }
10435
10436 /* Try to open DWP file FILE_NAME.
10437    The result is the bfd handle of the file.
10438    If there is a problem finding or opening the file, return NULL.
10439    Upon success, the canonicalized path of the file is stored in the bfd,
10440    same as symfile_bfd_open.  */
10441
10442 static bfd *
10443 open_dwp_file (const char *file_name)
10444 {
10445   bfd *abfd;
10446
10447   abfd = try_open_dwop_file (file_name, 1 /*is_dwp*/, 1 /*search_cwd*/);
10448   if (abfd != NULL)
10449     return abfd;
10450
10451   /* Work around upstream bug 15652.
10452      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
10453      [Whether that's a "bug" is debatable, but it is getting in our way.]
10454      We have no real idea where the dwp file is, because gdb's realpath-ing
10455      of the executable's path may have discarded the needed info.
10456      [IWBN if the dwp file name was recorded in the executable, akin to
10457      .gnu_debuglink, but that doesn't exist yet.]
10458      Strip the directory from FILE_NAME and search again.  */
10459   if (*debug_file_directory != '\0')
10460     {
10461       /* Don't implicitly search the current directory here.
10462          If the user wants to search "." to handle this case,
10463          it must be added to debug-file-directory.  */
10464       return try_open_dwop_file (lbasename (file_name), 1 /*is_dwp*/,
10465                                  0 /*search_cwd*/);
10466     }
10467
10468   return NULL;
10469 }
10470
10471 /* Initialize the use of the DWP file for the current objfile.
10472    By convention the name of the DWP file is ${objfile}.dwp.
10473    The result is NULL if it can't be found.  */
10474
10475 static struct dwp_file *
10476 open_and_init_dwp_file (void)
10477 {
10478   struct objfile *objfile = dwarf2_per_objfile->objfile;
10479   struct dwp_file *dwp_file;
10480   char *dwp_name;
10481   bfd *dbfd;
10482   struct cleanup *cleanups;
10483
10484   /* Try to find first .dwp for the binary file before any symbolic links
10485      resolving.  */
10486   dwp_name = xstrprintf ("%s.dwp", objfile->original_name);
10487   cleanups = make_cleanup (xfree, dwp_name);
10488
10489   dbfd = open_dwp_file (dwp_name);
10490   if (dbfd == NULL
10491       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
10492     {
10493       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
10494       dwp_name = xstrprintf ("%s.dwp", objfile_name (objfile));
10495       make_cleanup (xfree, dwp_name);
10496       dbfd = open_dwp_file (dwp_name);
10497     }
10498
10499   if (dbfd == NULL)
10500     {
10501       if (dwarf2_read_debug)
10502         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name);
10503       do_cleanups (cleanups);
10504       return NULL;
10505     }
10506   dwp_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_file);
10507   dwp_file->name = bfd_get_filename (dbfd);
10508   dwp_file->dbfd = dbfd;
10509   do_cleanups (cleanups);
10510
10511   /* +1: section 0 is unused */
10512   dwp_file->num_sections = bfd_count_sections (dbfd) + 1;
10513   dwp_file->elf_sections =
10514     OBSTACK_CALLOC (&objfile->objfile_obstack,
10515                     dwp_file->num_sections, asection *);
10516
10517   bfd_map_over_sections (dbfd, dwarf2_locate_common_dwp_sections, dwp_file);
10518
10519   dwp_file->cus = create_dwp_hash_table (dwp_file, 0);
10520
10521   dwp_file->tus = create_dwp_hash_table (dwp_file, 1);
10522
10523   /* The DWP file version is stored in the hash table.  Oh well.  */
10524   if (dwp_file->cus->version != dwp_file->tus->version)
10525     {
10526       /* Technically speaking, we should try to limp along, but this is
10527          pretty bizarre.  */
10528       error (_("Dwarf Error: DWP file CU version %d doesn't match"
10529                " TU version %d [in DWP file %s]"),
10530              dwp_file->cus->version, dwp_file->tus->version, dwp_name);
10531     }
10532   dwp_file->version = dwp_file->cus->version;
10533
10534   if (dwp_file->version == 2)
10535     bfd_map_over_sections (dbfd, dwarf2_locate_v2_dwp_sections, dwp_file);
10536
10537   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
10538   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
10539
10540   if (dwarf2_read_debug)
10541     {
10542       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
10543       fprintf_unfiltered (gdb_stdlog,
10544                           "    %s CUs, %s TUs\n",
10545                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
10546                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
10547     }
10548
10549   return dwp_file;
10550 }
10551
10552 /* Wrapper around open_and_init_dwp_file, only open it once.  */
10553
10554 static struct dwp_file *
10555 get_dwp_file (void)
10556 {
10557   if (! dwarf2_per_objfile->dwp_checked)
10558     {
10559       dwarf2_per_objfile->dwp_file = open_and_init_dwp_file ();
10560       dwarf2_per_objfile->dwp_checked = 1;
10561     }
10562   return dwarf2_per_objfile->dwp_file;
10563 }
10564
10565 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
10566    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
10567    or in the DWP file for the objfile, referenced by THIS_UNIT.
10568    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
10569    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
10570
10571    This is called, for example, when wanting to read a variable with a
10572    complex location.  Therefore we don't want to do file i/o for every call.
10573    Therefore we don't want to look for a DWO file on every call.
10574    Therefore we first see if we've already seen SIGNATURE in a DWP file,
10575    then we check if we've already seen DWO_NAME, and only THEN do we check
10576    for a DWO file.
10577
10578    The result is a pointer to the dwo_unit object or NULL if we didn't find it
10579    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
10580
10581 static struct dwo_unit *
10582 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
10583                  const char *dwo_name, const char *comp_dir,
10584                  ULONGEST signature, int is_debug_types)
10585 {
10586   struct objfile *objfile = dwarf2_per_objfile->objfile;
10587   const char *kind = is_debug_types ? "TU" : "CU";
10588   void **dwo_file_slot;
10589   struct dwo_file *dwo_file;
10590   struct dwp_file *dwp_file;
10591
10592   /* First see if there's a DWP file.
10593      If we have a DWP file but didn't find the DWO inside it, don't
10594      look for the original DWO file.  It makes gdb behave differently
10595      depending on whether one is debugging in the build tree.  */
10596
10597   dwp_file = get_dwp_file ();
10598   if (dwp_file != NULL)
10599     {
10600       const struct dwp_hash_table *dwp_htab =
10601         is_debug_types ? dwp_file->tus : dwp_file->cus;
10602
10603       if (dwp_htab != NULL)
10604         {
10605           struct dwo_unit *dwo_cutu =
10606             lookup_dwo_unit_in_dwp (dwp_file, comp_dir,
10607                                     signature, is_debug_types);
10608
10609           if (dwo_cutu != NULL)
10610             {
10611               if (dwarf2_read_debug)
10612                 {
10613                   fprintf_unfiltered (gdb_stdlog,
10614                                       "Virtual DWO %s %s found: @%s\n",
10615                                       kind, hex_string (signature),
10616                                       host_address_to_string (dwo_cutu));
10617                 }
10618               return dwo_cutu;
10619             }
10620         }
10621     }
10622   else
10623     {
10624       /* No DWP file, look for the DWO file.  */
10625
10626       dwo_file_slot = lookup_dwo_file_slot (dwo_name, comp_dir);
10627       if (*dwo_file_slot == NULL)
10628         {
10629           /* Read in the file and build a table of the CUs/TUs it contains.  */
10630           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
10631         }
10632       /* NOTE: This will be NULL if unable to open the file.  */
10633       dwo_file = *dwo_file_slot;
10634
10635       if (dwo_file != NULL)
10636         {
10637           struct dwo_unit *dwo_cutu = NULL;
10638
10639           if (is_debug_types && dwo_file->tus)
10640             {
10641               struct dwo_unit find_dwo_cutu;
10642
10643               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
10644               find_dwo_cutu.signature = signature;
10645               dwo_cutu = htab_find (dwo_file->tus, &find_dwo_cutu);
10646             }
10647           else if (!is_debug_types && dwo_file->cu)
10648             {
10649               if (signature == dwo_file->cu->signature)
10650                 dwo_cutu = dwo_file->cu;
10651             }
10652
10653           if (dwo_cutu != NULL)
10654             {
10655               if (dwarf2_read_debug)
10656                 {
10657                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
10658                                       kind, dwo_name, hex_string (signature),
10659                                       host_address_to_string (dwo_cutu));
10660                 }
10661               return dwo_cutu;
10662             }
10663         }
10664     }
10665
10666   /* We didn't find it.  This could mean a dwo_id mismatch, or
10667      someone deleted the DWO/DWP file, or the search path isn't set up
10668      correctly to find the file.  */
10669
10670   if (dwarf2_read_debug)
10671     {
10672       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
10673                           kind, dwo_name, hex_string (signature));
10674     }
10675
10676   /* This is a warning and not a complaint because it can be caused by
10677      pilot error (e.g., user accidentally deleting the DWO).  */
10678   warning (_("Could not find DWO %s %s(%s) referenced by %s at offset 0x%x"
10679              " [in module %s]"),
10680            kind, dwo_name, hex_string (signature),
10681            this_unit->is_debug_types ? "TU" : "CU",
10682            this_unit->offset.sect_off, objfile_name (objfile));
10683   return NULL;
10684 }
10685
10686 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
10687    See lookup_dwo_cutu_unit for details.  */
10688
10689 static struct dwo_unit *
10690 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
10691                       const char *dwo_name, const char *comp_dir,
10692                       ULONGEST signature)
10693 {
10694   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
10695 }
10696
10697 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
10698    See lookup_dwo_cutu_unit for details.  */
10699
10700 static struct dwo_unit *
10701 lookup_dwo_type_unit (struct signatured_type *this_tu,
10702                       const char *dwo_name, const char *comp_dir)
10703 {
10704   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
10705 }
10706
10707 /* Traversal function for queue_and_load_all_dwo_tus.  */
10708
10709 static int
10710 queue_and_load_dwo_tu (void **slot, void *info)
10711 {
10712   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
10713   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
10714   ULONGEST signature = dwo_unit->signature;
10715   struct signatured_type *sig_type =
10716     lookup_dwo_signatured_type (per_cu->cu, signature);
10717
10718   if (sig_type != NULL)
10719     {
10720       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
10721
10722       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
10723          a real dependency of PER_CU on SIG_TYPE.  That is detected later
10724          while processing PER_CU.  */
10725       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
10726         load_full_type_unit (sig_cu);
10727       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
10728     }
10729
10730   return 1;
10731 }
10732
10733 /* Queue all TUs contained in the DWO of PER_CU to be read in.
10734    The DWO may have the only definition of the type, though it may not be
10735    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
10736    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
10737
10738 static void
10739 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
10740 {
10741   struct dwo_unit *dwo_unit;
10742   struct dwo_file *dwo_file;
10743
10744   gdb_assert (!per_cu->is_debug_types);
10745   gdb_assert (get_dwp_file () == NULL);
10746   gdb_assert (per_cu->cu != NULL);
10747
10748   dwo_unit = per_cu->cu->dwo_unit;
10749   gdb_assert (dwo_unit != NULL);
10750
10751   dwo_file = dwo_unit->dwo_file;
10752   if (dwo_file->tus != NULL)
10753     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
10754 }
10755
10756 /* Free all resources associated with DWO_FILE.
10757    Close the DWO file and munmap the sections.
10758    All memory should be on the objfile obstack.  */
10759
10760 static void
10761 free_dwo_file (struct dwo_file *dwo_file, struct objfile *objfile)
10762 {
10763   int ix;
10764   struct dwarf2_section_info *section;
10765
10766   /* Note: dbfd is NULL for virtual DWO files.  */
10767   gdb_bfd_unref (dwo_file->dbfd);
10768
10769   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
10770 }
10771
10772 /* Wrapper for free_dwo_file for use in cleanups.  */
10773
10774 static void
10775 free_dwo_file_cleanup (void *arg)
10776 {
10777   struct dwo_file *dwo_file = (struct dwo_file *) arg;
10778   struct objfile *objfile = dwarf2_per_objfile->objfile;
10779
10780   free_dwo_file (dwo_file, objfile);
10781 }
10782
10783 /* Traversal function for free_dwo_files.  */
10784
10785 static int
10786 free_dwo_file_from_slot (void **slot, void *info)
10787 {
10788   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
10789   struct objfile *objfile = (struct objfile *) info;
10790
10791   free_dwo_file (dwo_file, objfile);
10792
10793   return 1;
10794 }
10795
10796 /* Free all resources associated with DWO_FILES.  */
10797
10798 static void
10799 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
10800 {
10801   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
10802 }
10803 \f
10804 /* Read in various DIEs.  */
10805
10806 /* qsort helper for inherit_abstract_dies.  */
10807
10808 static int
10809 unsigned_int_compar (const void *ap, const void *bp)
10810 {
10811   unsigned int a = *(unsigned int *) ap;
10812   unsigned int b = *(unsigned int *) bp;
10813
10814   return (a > b) - (b > a);
10815 }
10816
10817 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
10818    Inherit only the children of the DW_AT_abstract_origin DIE not being
10819    already referenced by DW_AT_abstract_origin from the children of the
10820    current DIE.  */
10821
10822 static void
10823 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
10824 {
10825   struct die_info *child_die;
10826   unsigned die_children_count;
10827   /* CU offsets which were referenced by children of the current DIE.  */
10828   sect_offset *offsets;
10829   sect_offset *offsets_end, *offsetp;
10830   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
10831   struct die_info *origin_die;
10832   /* Iterator of the ORIGIN_DIE children.  */
10833   struct die_info *origin_child_die;
10834   struct cleanup *cleanups;
10835   struct attribute *attr;
10836   struct dwarf2_cu *origin_cu;
10837   struct pending **origin_previous_list_in_scope;
10838
10839   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
10840   if (!attr)
10841     return;
10842
10843   /* Note that following die references may follow to a die in a
10844      different cu.  */
10845
10846   origin_cu = cu;
10847   origin_die = follow_die_ref (die, attr, &origin_cu);
10848
10849   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
10850      symbols in.  */
10851   origin_previous_list_in_scope = origin_cu->list_in_scope;
10852   origin_cu->list_in_scope = cu->list_in_scope;
10853
10854   if (die->tag != origin_die->tag
10855       && !(die->tag == DW_TAG_inlined_subroutine
10856            && origin_die->tag == DW_TAG_subprogram))
10857     complaint (&symfile_complaints,
10858                _("DIE 0x%x and its abstract origin 0x%x have different tags"),
10859                die->offset.sect_off, origin_die->offset.sect_off);
10860
10861   child_die = die->child;
10862   die_children_count = 0;
10863   while (child_die && child_die->tag)
10864     {
10865       child_die = sibling_die (child_die);
10866       die_children_count++;
10867     }
10868   offsets = xmalloc (sizeof (*offsets) * die_children_count);
10869   cleanups = make_cleanup (xfree, offsets);
10870
10871   offsets_end = offsets;
10872   child_die = die->child;
10873   while (child_die && child_die->tag)
10874     {
10875       /* For each CHILD_DIE, find the corresponding child of
10876          ORIGIN_DIE.  If there is more than one layer of
10877          DW_AT_abstract_origin, follow them all; there shouldn't be,
10878          but GCC versions at least through 4.4 generate this (GCC PR
10879          40573).  */
10880       struct die_info *child_origin_die = child_die;
10881       struct dwarf2_cu *child_origin_cu = cu;
10882
10883       while (1)
10884         {
10885           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
10886                               child_origin_cu);
10887           if (attr == NULL)
10888             break;
10889           child_origin_die = follow_die_ref (child_origin_die, attr,
10890                                              &child_origin_cu);
10891         }
10892
10893       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
10894          counterpart may exist.  */
10895       if (child_origin_die != child_die)
10896         {
10897           if (child_die->tag != child_origin_die->tag
10898               && !(child_die->tag == DW_TAG_inlined_subroutine
10899                    && child_origin_die->tag == DW_TAG_subprogram))
10900             complaint (&symfile_complaints,
10901                        _("Child DIE 0x%x and its abstract origin 0x%x have "
10902                          "different tags"), child_die->offset.sect_off,
10903                        child_origin_die->offset.sect_off);
10904           if (child_origin_die->parent != origin_die)
10905             complaint (&symfile_complaints,
10906                        _("Child DIE 0x%x and its abstract origin 0x%x have "
10907                          "different parents"), child_die->offset.sect_off,
10908                        child_origin_die->offset.sect_off);
10909           else
10910             *offsets_end++ = child_origin_die->offset;
10911         }
10912       child_die = sibling_die (child_die);
10913     }
10914   qsort (offsets, offsets_end - offsets, sizeof (*offsets),
10915          unsigned_int_compar);
10916   for (offsetp = offsets + 1; offsetp < offsets_end; offsetp++)
10917     if (offsetp[-1].sect_off == offsetp->sect_off)
10918       complaint (&symfile_complaints,
10919                  _("Multiple children of DIE 0x%x refer "
10920                    "to DIE 0x%x as their abstract origin"),
10921                  die->offset.sect_off, offsetp->sect_off);
10922
10923   offsetp = offsets;
10924   origin_child_die = origin_die->child;
10925   while (origin_child_die && origin_child_die->tag)
10926     {
10927       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
10928       while (offsetp < offsets_end
10929              && offsetp->sect_off < origin_child_die->offset.sect_off)
10930         offsetp++;
10931       if (offsetp >= offsets_end
10932           || offsetp->sect_off > origin_child_die->offset.sect_off)
10933         {
10934           /* Found that ORIGIN_CHILD_DIE is really not referenced.  */
10935           process_die (origin_child_die, origin_cu);
10936         }
10937       origin_child_die = sibling_die (origin_child_die);
10938     }
10939   origin_cu->list_in_scope = origin_previous_list_in_scope;
10940
10941   do_cleanups (cleanups);
10942 }
10943
10944 static void
10945 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
10946 {
10947   struct objfile *objfile = cu->objfile;
10948   struct context_stack *new;
10949   CORE_ADDR lowpc;
10950   CORE_ADDR highpc;
10951   struct die_info *child_die;
10952   struct attribute *attr, *call_line, *call_file;
10953   const char *name;
10954   CORE_ADDR baseaddr;
10955   struct block *block;
10956   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
10957   VEC (symbolp) *template_args = NULL;
10958   struct template_symbol *templ_func = NULL;
10959
10960   if (inlined_func)
10961     {
10962       /* If we do not have call site information, we can't show the
10963          caller of this inlined function.  That's too confusing, so
10964          only use the scope for local variables.  */
10965       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
10966       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
10967       if (call_line == NULL || call_file == NULL)
10968         {
10969           read_lexical_block_scope (die, cu);
10970           return;
10971         }
10972     }
10973
10974   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10975
10976   name = dwarf2_name (die, cu);
10977
10978   /* Ignore functions with missing or empty names.  These are actually
10979      illegal according to the DWARF standard.  */
10980   if (name == NULL)
10981     {
10982       complaint (&symfile_complaints,
10983                  _("missing name for subprogram DIE at %d"),
10984                  die->offset.sect_off);
10985       return;
10986     }
10987
10988   /* Ignore functions with missing or invalid low and high pc attributes.  */
10989   if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
10990     {
10991       attr = dwarf2_attr (die, DW_AT_external, cu);
10992       if (!attr || !DW_UNSND (attr))
10993         complaint (&symfile_complaints,
10994                    _("cannot get low and high bounds "
10995                      "for subprogram DIE at %d"),
10996                    die->offset.sect_off);
10997       return;
10998     }
10999
11000   lowpc += baseaddr;
11001   highpc += baseaddr;
11002
11003   /* If we have any template arguments, then we must allocate a
11004      different sort of symbol.  */
11005   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
11006     {
11007       if (child_die->tag == DW_TAG_template_type_param
11008           || child_die->tag == DW_TAG_template_value_param)
11009         {
11010           templ_func = allocate_template_symbol (objfile);
11011           templ_func->base.is_cplus_template_function = 1;
11012           break;
11013         }
11014     }
11015
11016   new = push_context (0, lowpc);
11017   new->name = new_symbol_full (die, read_type_die (die, cu), cu,
11018                                (struct symbol *) templ_func);
11019
11020   /* If there is a location expression for DW_AT_frame_base, record
11021      it.  */
11022   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
11023   if (attr)
11024     dwarf2_symbol_mark_computed (attr, new->name, cu, 1);
11025
11026   cu->list_in_scope = &local_symbols;
11027
11028   if (die->child != NULL)
11029     {
11030       child_die = die->child;
11031       while (child_die && child_die->tag)
11032         {
11033           if (child_die->tag == DW_TAG_template_type_param
11034               || child_die->tag == DW_TAG_template_value_param)
11035             {
11036               struct symbol *arg = new_symbol (child_die, NULL, cu);
11037
11038               if (arg != NULL)
11039                 VEC_safe_push (symbolp, template_args, arg);
11040             }
11041           else
11042             process_die (child_die, cu);
11043           child_die = sibling_die (child_die);
11044         }
11045     }
11046
11047   inherit_abstract_dies (die, cu);
11048
11049   /* If we have a DW_AT_specification, we might need to import using
11050      directives from the context of the specification DIE.  See the
11051      comment in determine_prefix.  */
11052   if (cu->language == language_cplus
11053       && dwarf2_attr (die, DW_AT_specification, cu))
11054     {
11055       struct dwarf2_cu *spec_cu = cu;
11056       struct die_info *spec_die = die_specification (die, &spec_cu);
11057
11058       while (spec_die)
11059         {
11060           child_die = spec_die->child;
11061           while (child_die && child_die->tag)
11062             {
11063               if (child_die->tag == DW_TAG_imported_module)
11064                 process_die (child_die, spec_cu);
11065               child_die = sibling_die (child_die);
11066             }
11067
11068           /* In some cases, GCC generates specification DIEs that
11069              themselves contain DW_AT_specification attributes.  */
11070           spec_die = die_specification (spec_die, &spec_cu);
11071         }
11072     }
11073
11074   new = pop_context ();
11075   /* Make a block for the local symbols within.  */
11076   block = finish_block (new->name, &local_symbols, new->old_blocks,
11077                         lowpc, highpc, objfile);
11078
11079   /* For C++, set the block's scope.  */
11080   if ((cu->language == language_cplus || cu->language == language_fortran)
11081       && cu->processing_has_namespace_info)
11082     block_set_scope (block, determine_prefix (die, cu),
11083                      &objfile->objfile_obstack);
11084
11085   /* If we have address ranges, record them.  */
11086   dwarf2_record_block_ranges (die, block, baseaddr, cu);
11087
11088   /* Attach template arguments to function.  */
11089   if (! VEC_empty (symbolp, template_args))
11090     {
11091       gdb_assert (templ_func != NULL);
11092
11093       templ_func->n_template_arguments = VEC_length (symbolp, template_args);
11094       templ_func->template_arguments
11095         = obstack_alloc (&objfile->objfile_obstack,
11096                          (templ_func->n_template_arguments
11097                           * sizeof (struct symbol *)));
11098       memcpy (templ_func->template_arguments,
11099               VEC_address (symbolp, template_args),
11100               (templ_func->n_template_arguments * sizeof (struct symbol *)));
11101       VEC_free (symbolp, template_args);
11102     }
11103
11104   /* In C++, we can have functions nested inside functions (e.g., when
11105      a function declares a class that has methods).  This means that
11106      when we finish processing a function scope, we may need to go
11107      back to building a containing block's symbol lists.  */
11108   local_symbols = new->locals;
11109   using_directives = new->using_directives;
11110
11111   /* If we've finished processing a top-level function, subsequent
11112      symbols go in the file symbol list.  */
11113   if (outermost_context_p ())
11114     cu->list_in_scope = &file_symbols;
11115 }
11116
11117 /* Process all the DIES contained within a lexical block scope.  Start
11118    a new scope, process the dies, and then close the scope.  */
11119
11120 static void
11121 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
11122 {
11123   struct objfile *objfile = cu->objfile;
11124   struct context_stack *new;
11125   CORE_ADDR lowpc, highpc;
11126   struct die_info *child_die;
11127   CORE_ADDR baseaddr;
11128
11129   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11130
11131   /* Ignore blocks with missing or invalid low and high pc attributes.  */
11132   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
11133      as multiple lexical blocks?  Handling children in a sane way would
11134      be nasty.  Might be easier to properly extend generic blocks to
11135      describe ranges.  */
11136   if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
11137     return;
11138   lowpc += baseaddr;
11139   highpc += baseaddr;
11140
11141   push_context (0, lowpc);
11142   if (die->child != NULL)
11143     {
11144       child_die = die->child;
11145       while (child_die && child_die->tag)
11146         {
11147           process_die (child_die, cu);
11148           child_die = sibling_die (child_die);
11149         }
11150     }
11151   new = pop_context ();
11152
11153   if (local_symbols != NULL || using_directives != NULL)
11154     {
11155       struct block *block
11156         = finish_block (0, &local_symbols, new->old_blocks, new->start_addr,
11157                         highpc, objfile);
11158
11159       /* Note that recording ranges after traversing children, as we
11160          do here, means that recording a parent's ranges entails
11161          walking across all its children's ranges as they appear in
11162          the address map, which is quadratic behavior.
11163
11164          It would be nicer to record the parent's ranges before
11165          traversing its children, simply overriding whatever you find
11166          there.  But since we don't even decide whether to create a
11167          block until after we've traversed its children, that's hard
11168          to do.  */
11169       dwarf2_record_block_ranges (die, block, baseaddr, cu);
11170     }
11171   local_symbols = new->locals;
11172   using_directives = new->using_directives;
11173 }
11174
11175 /* Read in DW_TAG_GNU_call_site and insert it to CU->call_site_htab.  */
11176
11177 static void
11178 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
11179 {
11180   struct objfile *objfile = cu->objfile;
11181   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11182   CORE_ADDR pc, baseaddr;
11183   struct attribute *attr;
11184   struct call_site *call_site, call_site_local;
11185   void **slot;
11186   int nparams;
11187   struct die_info *child_die;
11188
11189   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11190
11191   attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11192   if (!attr)
11193     {
11194       complaint (&symfile_complaints,
11195                  _("missing DW_AT_low_pc for DW_TAG_GNU_call_site "
11196                    "DIE 0x%x [in module %s]"),
11197                  die->offset.sect_off, objfile_name (objfile));
11198       return;
11199     }
11200   pc = DW_ADDR (attr) + baseaddr;
11201
11202   if (cu->call_site_htab == NULL)
11203     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
11204                                                NULL, &objfile->objfile_obstack,
11205                                                hashtab_obstack_allocate, NULL);
11206   call_site_local.pc = pc;
11207   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
11208   if (*slot != NULL)
11209     {
11210       complaint (&symfile_complaints,
11211                  _("Duplicate PC %s for DW_TAG_GNU_call_site "
11212                    "DIE 0x%x [in module %s]"),
11213                  paddress (gdbarch, pc), die->offset.sect_off,
11214                  objfile_name (objfile));
11215       return;
11216     }
11217
11218   /* Count parameters at the caller.  */
11219
11220   nparams = 0;
11221   for (child_die = die->child; child_die && child_die->tag;
11222        child_die = sibling_die (child_die))
11223     {
11224       if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11225         {
11226           complaint (&symfile_complaints,
11227                      _("Tag %d is not DW_TAG_GNU_call_site_parameter in "
11228                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11229                      child_die->tag, child_die->offset.sect_off,
11230                      objfile_name (objfile));
11231           continue;
11232         }
11233
11234       nparams++;
11235     }
11236
11237   call_site = obstack_alloc (&objfile->objfile_obstack,
11238                              (sizeof (*call_site)
11239                               + (sizeof (*call_site->parameter)
11240                                  * (nparams - 1))));
11241   *slot = call_site;
11242   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
11243   call_site->pc = pc;
11244
11245   if (dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
11246     {
11247       struct die_info *func_die;
11248
11249       /* Skip also over DW_TAG_inlined_subroutine.  */
11250       for (func_die = die->parent;
11251            func_die && func_die->tag != DW_TAG_subprogram
11252            && func_die->tag != DW_TAG_subroutine_type;
11253            func_die = func_die->parent);
11254
11255       /* DW_AT_GNU_all_call_sites is a superset
11256          of DW_AT_GNU_all_tail_call_sites.  */
11257       if (func_die
11258           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
11259           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
11260         {
11261           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
11262              not complete.  But keep CALL_SITE for look ups via call_site_htab,
11263              both the initial caller containing the real return address PC and
11264              the final callee containing the current PC of a chain of tail
11265              calls do not need to have the tail call list complete.  But any
11266              function candidate for a virtual tail call frame searched via
11267              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
11268              determined unambiguously.  */
11269         }
11270       else
11271         {
11272           struct type *func_type = NULL;
11273
11274           if (func_die)
11275             func_type = get_die_type (func_die, cu);
11276           if (func_type != NULL)
11277             {
11278               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
11279
11280               /* Enlist this call site to the function.  */
11281               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
11282               TYPE_TAIL_CALL_LIST (func_type) = call_site;
11283             }
11284           else
11285             complaint (&symfile_complaints,
11286                        _("Cannot find function owning DW_TAG_GNU_call_site "
11287                          "DIE 0x%x [in module %s]"),
11288                        die->offset.sect_off, objfile_name (objfile));
11289         }
11290     }
11291
11292   attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
11293   if (attr == NULL)
11294     attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11295   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
11296   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
11297     /* Keep NULL DWARF_BLOCK.  */;
11298   else if (attr_form_is_block (attr))
11299     {
11300       struct dwarf2_locexpr_baton *dlbaton;
11301
11302       dlbaton = obstack_alloc (&objfile->objfile_obstack, sizeof (*dlbaton));
11303       dlbaton->data = DW_BLOCK (attr)->data;
11304       dlbaton->size = DW_BLOCK (attr)->size;
11305       dlbaton->per_cu = cu->per_cu;
11306
11307       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
11308     }
11309   else if (attr_form_is_ref (attr))
11310     {
11311       struct dwarf2_cu *target_cu = cu;
11312       struct die_info *target_die;
11313
11314       target_die = follow_die_ref (die, attr, &target_cu);
11315       gdb_assert (target_cu->objfile == objfile);
11316       if (die_is_declaration (target_die, target_cu))
11317         {
11318           const char *target_physname = NULL;
11319           struct attribute *target_attr;
11320
11321           /* Prefer the mangled name; otherwise compute the demangled one.  */
11322           target_attr = dwarf2_attr (target_die, DW_AT_linkage_name, target_cu);
11323           if (target_attr == NULL)
11324             target_attr = dwarf2_attr (target_die, DW_AT_MIPS_linkage_name,
11325                                        target_cu);
11326           if (target_attr != NULL && DW_STRING (target_attr) != NULL)
11327             target_physname = DW_STRING (target_attr);
11328           else
11329             target_physname = dwarf2_physname (NULL, target_die, target_cu);
11330           if (target_physname == NULL)
11331             complaint (&symfile_complaints,
11332                        _("DW_AT_GNU_call_site_target target DIE has invalid "
11333                          "physname, for referencing DIE 0x%x [in module %s]"),
11334                        die->offset.sect_off, objfile_name (objfile));
11335           else
11336             SET_FIELD_PHYSNAME (call_site->target, target_physname);
11337         }
11338       else
11339         {
11340           CORE_ADDR lowpc;
11341
11342           /* DW_AT_entry_pc should be preferred.  */
11343           if (!dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL))
11344             complaint (&symfile_complaints,
11345                        _("DW_AT_GNU_call_site_target target DIE has invalid "
11346                          "low pc, for referencing DIE 0x%x [in module %s]"),
11347                        die->offset.sect_off, objfile_name (objfile));
11348           else
11349             SET_FIELD_PHYSADDR (call_site->target, lowpc + baseaddr);
11350         }
11351     }
11352   else
11353     complaint (&symfile_complaints,
11354                _("DW_TAG_GNU_call_site DW_AT_GNU_call_site_target is neither "
11355                  "block nor reference, for DIE 0x%x [in module %s]"),
11356                die->offset.sect_off, objfile_name (objfile));
11357
11358   call_site->per_cu = cu->per_cu;
11359
11360   for (child_die = die->child;
11361        child_die && child_die->tag;
11362        child_die = sibling_die (child_die))
11363     {
11364       struct call_site_parameter *parameter;
11365       struct attribute *loc, *origin;
11366
11367       if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11368         {
11369           /* Already printed the complaint above.  */
11370           continue;
11371         }
11372
11373       gdb_assert (call_site->parameter_count < nparams);
11374       parameter = &call_site->parameter[call_site->parameter_count];
11375
11376       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
11377          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
11378          register is contained in DW_AT_GNU_call_site_value.  */
11379
11380       loc = dwarf2_attr (child_die, DW_AT_location, cu);
11381       origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
11382       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
11383         {
11384           sect_offset offset;
11385
11386           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
11387           offset = dwarf2_get_ref_die_offset (origin);
11388           if (!offset_in_cu_p (&cu->header, offset))
11389             {
11390               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
11391                  binding can be done only inside one CU.  Such referenced DIE
11392                  therefore cannot be even moved to DW_TAG_partial_unit.  */
11393               complaint (&symfile_complaints,
11394                          _("DW_AT_abstract_origin offset is not in CU for "
11395                            "DW_TAG_GNU_call_site child DIE 0x%x "
11396                            "[in module %s]"),
11397                          child_die->offset.sect_off, objfile_name (objfile));
11398               continue;
11399             }
11400           parameter->u.param_offset.cu_off = (offset.sect_off
11401                                               - cu->header.offset.sect_off);
11402         }
11403       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
11404         {
11405           complaint (&symfile_complaints,
11406                      _("No DW_FORM_block* DW_AT_location for "
11407                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11408                      child_die->offset.sect_off, objfile_name (objfile));
11409           continue;
11410         }
11411       else
11412         {
11413           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
11414             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
11415           if (parameter->u.dwarf_reg != -1)
11416             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
11417           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
11418                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
11419                                              &parameter->u.fb_offset))
11420             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
11421           else
11422             {
11423               complaint (&symfile_complaints,
11424                          _("Only single DW_OP_reg or DW_OP_fbreg is supported "
11425                            "for DW_FORM_block* DW_AT_location is supported for "
11426                            "DW_TAG_GNU_call_site child DIE 0x%x "
11427                            "[in module %s]"),
11428                          child_die->offset.sect_off, objfile_name (objfile));
11429               continue;
11430             }
11431         }
11432
11433       attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
11434       if (!attr_form_is_block (attr))
11435         {
11436           complaint (&symfile_complaints,
11437                      _("No DW_FORM_block* DW_AT_GNU_call_site_value for "
11438                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11439                      child_die->offset.sect_off, objfile_name (objfile));
11440           continue;
11441         }
11442       parameter->value = DW_BLOCK (attr)->data;
11443       parameter->value_size = DW_BLOCK (attr)->size;
11444
11445       /* Parameters are not pre-cleared by memset above.  */
11446       parameter->data_value = NULL;
11447       parameter->data_value_size = 0;
11448       call_site->parameter_count++;
11449
11450       attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
11451       if (attr)
11452         {
11453           if (!attr_form_is_block (attr))
11454             complaint (&symfile_complaints,
11455                        _("No DW_FORM_block* DW_AT_GNU_call_site_data_value for "
11456                          "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11457                        child_die->offset.sect_off, objfile_name (objfile));
11458           else
11459             {
11460               parameter->data_value = DW_BLOCK (attr)->data;
11461               parameter->data_value_size = DW_BLOCK (attr)->size;
11462             }
11463         }
11464     }
11465 }
11466
11467 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
11468    Return 1 if the attributes are present and valid, otherwise, return 0.
11469    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
11470
11471 static int
11472 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
11473                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
11474                     struct partial_symtab *ranges_pst)
11475 {
11476   struct objfile *objfile = cu->objfile;
11477   struct comp_unit_head *cu_header = &cu->header;
11478   bfd *obfd = objfile->obfd;
11479   unsigned int addr_size = cu_header->addr_size;
11480   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
11481   /* Base address selection entry.  */
11482   CORE_ADDR base;
11483   int found_base;
11484   unsigned int dummy;
11485   const gdb_byte *buffer;
11486   CORE_ADDR marker;
11487   int low_set;
11488   CORE_ADDR low = 0;
11489   CORE_ADDR high = 0;
11490   CORE_ADDR baseaddr;
11491
11492   found_base = cu->base_known;
11493   base = cu->base_address;
11494
11495   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
11496   if (offset >= dwarf2_per_objfile->ranges.size)
11497     {
11498       complaint (&symfile_complaints,
11499                  _("Offset %d out of bounds for DW_AT_ranges attribute"),
11500                  offset);
11501       return 0;
11502     }
11503   buffer = dwarf2_per_objfile->ranges.buffer + offset;
11504
11505   /* Read in the largest possible address.  */
11506   marker = read_address (obfd, buffer, cu, &dummy);
11507   if ((marker & mask) == mask)
11508     {
11509       /* If we found the largest possible address, then
11510          read the base address.  */
11511       base = read_address (obfd, buffer + addr_size, cu, &dummy);
11512       buffer += 2 * addr_size;
11513       offset += 2 * addr_size;
11514       found_base = 1;
11515     }
11516
11517   low_set = 0;
11518
11519   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11520
11521   while (1)
11522     {
11523       CORE_ADDR range_beginning, range_end;
11524
11525       range_beginning = read_address (obfd, buffer, cu, &dummy);
11526       buffer += addr_size;
11527       range_end = read_address (obfd, buffer, cu, &dummy);
11528       buffer += addr_size;
11529       offset += 2 * addr_size;
11530
11531       /* An end of list marker is a pair of zero addresses.  */
11532       if (range_beginning == 0 && range_end == 0)
11533         /* Found the end of list entry.  */
11534         break;
11535
11536       /* Each base address selection entry is a pair of 2 values.
11537          The first is the largest possible address, the second is
11538          the base address.  Check for a base address here.  */
11539       if ((range_beginning & mask) == mask)
11540         {
11541           /* If we found the largest possible address, then
11542              read the base address.  */
11543           base = read_address (obfd, buffer + addr_size, cu, &dummy);
11544           found_base = 1;
11545           continue;
11546         }
11547
11548       if (!found_base)
11549         {
11550           /* We have no valid base address for the ranges
11551              data.  */
11552           complaint (&symfile_complaints,
11553                      _("Invalid .debug_ranges data (no base address)"));
11554           return 0;
11555         }
11556
11557       if (range_beginning > range_end)
11558         {
11559           /* Inverted range entries are invalid.  */
11560           complaint (&symfile_complaints,
11561                      _("Invalid .debug_ranges data (inverted range)"));
11562           return 0;
11563         }
11564
11565       /* Empty range entries have no effect.  */
11566       if (range_beginning == range_end)
11567         continue;
11568
11569       range_beginning += base;
11570       range_end += base;
11571
11572       /* A not-uncommon case of bad debug info.
11573          Don't pollute the addrmap with bad data.  */
11574       if (range_beginning + baseaddr == 0
11575           && !dwarf2_per_objfile->has_section_at_zero)
11576         {
11577           complaint (&symfile_complaints,
11578                      _(".debug_ranges entry has start address of zero"
11579                        " [in module %s]"), objfile_name (objfile));
11580           continue;
11581         }
11582
11583       if (ranges_pst != NULL)
11584         addrmap_set_empty (objfile->psymtabs_addrmap,
11585                            range_beginning + baseaddr,
11586                            range_end - 1 + baseaddr,
11587                            ranges_pst);
11588
11589       /* FIXME: This is recording everything as a low-high
11590          segment of consecutive addresses.  We should have a
11591          data structure for discontiguous block ranges
11592          instead.  */
11593       if (! low_set)
11594         {
11595           low = range_beginning;
11596           high = range_end;
11597           low_set = 1;
11598         }
11599       else
11600         {
11601           if (range_beginning < low)
11602             low = range_beginning;
11603           if (range_end > high)
11604             high = range_end;
11605         }
11606     }
11607
11608   if (! low_set)
11609     /* If the first entry is an end-of-list marker, the range
11610        describes an empty scope, i.e. no instructions.  */
11611     return 0;
11612
11613   if (low_return)
11614     *low_return = low;
11615   if (high_return)
11616     *high_return = high;
11617   return 1;
11618 }
11619
11620 /* Get low and high pc attributes from a die.  Return 1 if the attributes
11621    are present and valid, otherwise, return 0.  Return -1 if the range is
11622    discontinuous, i.e. derived from DW_AT_ranges information.  */
11623
11624 static int
11625 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
11626                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
11627                       struct partial_symtab *pst)
11628 {
11629   struct attribute *attr;
11630   struct attribute *attr_high;
11631   CORE_ADDR low = 0;
11632   CORE_ADDR high = 0;
11633   int ret = 0;
11634
11635   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
11636   if (attr_high)
11637     {
11638       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11639       if (attr)
11640         {
11641           low = DW_ADDR (attr);
11642           if (attr_high->form == DW_FORM_addr
11643               || attr_high->form == DW_FORM_GNU_addr_index)
11644             high = DW_ADDR (attr_high);
11645           else
11646             high = low + DW_UNSND (attr_high);
11647         }
11648       else
11649         /* Found high w/o low attribute.  */
11650         return 0;
11651
11652       /* Found consecutive range of addresses.  */
11653       ret = 1;
11654     }
11655   else
11656     {
11657       attr = dwarf2_attr (die, DW_AT_ranges, cu);
11658       if (attr != NULL)
11659         {
11660           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
11661              We take advantage of the fact that DW_AT_ranges does not appear
11662              in DW_TAG_compile_unit of DWO files.  */
11663           int need_ranges_base = die->tag != DW_TAG_compile_unit;
11664           unsigned int ranges_offset = (DW_UNSND (attr)
11665                                         + (need_ranges_base
11666                                            ? cu->ranges_base
11667                                            : 0));
11668
11669           /* Value of the DW_AT_ranges attribute is the offset in the
11670              .debug_ranges section.  */
11671           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
11672             return 0;
11673           /* Found discontinuous range of addresses.  */
11674           ret = -1;
11675         }
11676     }
11677
11678   /* read_partial_die has also the strict LOW < HIGH requirement.  */
11679   if (high <= low)
11680     return 0;
11681
11682   /* When using the GNU linker, .gnu.linkonce. sections are used to
11683      eliminate duplicate copies of functions and vtables and such.
11684      The linker will arbitrarily choose one and discard the others.
11685      The AT_*_pc values for such functions refer to local labels in
11686      these sections.  If the section from that file was discarded, the
11687      labels are not in the output, so the relocs get a value of 0.
11688      If this is a discarded function, mark the pc bounds as invalid,
11689      so that GDB will ignore it.  */
11690   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
11691     return 0;
11692
11693   *lowpc = low;
11694   if (highpc)
11695     *highpc = high;
11696   return ret;
11697 }
11698
11699 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
11700    its low and high PC addresses.  Do nothing if these addresses could not
11701    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
11702    and HIGHPC to the high address if greater than HIGHPC.  */
11703
11704 static void
11705 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
11706                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
11707                                  struct dwarf2_cu *cu)
11708 {
11709   CORE_ADDR low, high;
11710   struct die_info *child = die->child;
11711
11712   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL))
11713     {
11714       *lowpc = min (*lowpc, low);
11715       *highpc = max (*highpc, high);
11716     }
11717
11718   /* If the language does not allow nested subprograms (either inside
11719      subprograms or lexical blocks), we're done.  */
11720   if (cu->language != language_ada)
11721     return;
11722
11723   /* Check all the children of the given DIE.  If it contains nested
11724      subprograms, then check their pc bounds.  Likewise, we need to
11725      check lexical blocks as well, as they may also contain subprogram
11726      definitions.  */
11727   while (child && child->tag)
11728     {
11729       if (child->tag == DW_TAG_subprogram
11730           || child->tag == DW_TAG_lexical_block)
11731         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
11732       child = sibling_die (child);
11733     }
11734 }
11735
11736 /* Get the low and high pc's represented by the scope DIE, and store
11737    them in *LOWPC and *HIGHPC.  If the correct values can't be
11738    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
11739
11740 static void
11741 get_scope_pc_bounds (struct die_info *die,
11742                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
11743                      struct dwarf2_cu *cu)
11744 {
11745   CORE_ADDR best_low = (CORE_ADDR) -1;
11746   CORE_ADDR best_high = (CORE_ADDR) 0;
11747   CORE_ADDR current_low, current_high;
11748
11749   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL))
11750     {
11751       best_low = current_low;
11752       best_high = current_high;
11753     }
11754   else
11755     {
11756       struct die_info *child = die->child;
11757
11758       while (child && child->tag)
11759         {
11760           switch (child->tag) {
11761           case DW_TAG_subprogram:
11762             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
11763             break;
11764           case DW_TAG_namespace:
11765           case DW_TAG_module:
11766             /* FIXME: carlton/2004-01-16: Should we do this for
11767                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
11768                that current GCC's always emit the DIEs corresponding
11769                to definitions of methods of classes as children of a
11770                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
11771                the DIEs giving the declarations, which could be
11772                anywhere).  But I don't see any reason why the
11773                standards says that they have to be there.  */
11774             get_scope_pc_bounds (child, &current_low, &current_high, cu);
11775
11776             if (current_low != ((CORE_ADDR) -1))
11777               {
11778                 best_low = min (best_low, current_low);
11779                 best_high = max (best_high, current_high);
11780               }
11781             break;
11782           default:
11783             /* Ignore.  */
11784             break;
11785           }
11786
11787           child = sibling_die (child);
11788         }
11789     }
11790
11791   *lowpc = best_low;
11792   *highpc = best_high;
11793 }
11794
11795 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
11796    in DIE.  */
11797
11798 static void
11799 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
11800                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
11801 {
11802   struct objfile *objfile = cu->objfile;
11803   struct attribute *attr;
11804   struct attribute *attr_high;
11805
11806   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
11807   if (attr_high)
11808     {
11809       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11810       if (attr)
11811         {
11812           CORE_ADDR low = DW_ADDR (attr);
11813           CORE_ADDR high;
11814           if (attr_high->form == DW_FORM_addr
11815               || attr_high->form == DW_FORM_GNU_addr_index)
11816             high = DW_ADDR (attr_high);
11817           else
11818             high = low + DW_UNSND (attr_high);
11819
11820           record_block_range (block, baseaddr + low, baseaddr + high - 1);
11821         }
11822     }
11823
11824   attr = dwarf2_attr (die, DW_AT_ranges, cu);
11825   if (attr)
11826     {
11827       bfd *obfd = objfile->obfd;
11828       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
11829          We take advantage of the fact that DW_AT_ranges does not appear
11830          in DW_TAG_compile_unit of DWO files.  */
11831       int need_ranges_base = die->tag != DW_TAG_compile_unit;
11832
11833       /* The value of the DW_AT_ranges attribute is the offset of the
11834          address range list in the .debug_ranges section.  */
11835       unsigned long offset = (DW_UNSND (attr)
11836                               + (need_ranges_base ? cu->ranges_base : 0));
11837       const gdb_byte *buffer;
11838
11839       /* For some target architectures, but not others, the
11840          read_address function sign-extends the addresses it returns.
11841          To recognize base address selection entries, we need a
11842          mask.  */
11843       unsigned int addr_size = cu->header.addr_size;
11844       CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
11845
11846       /* The base address, to which the next pair is relative.  Note
11847          that this 'base' is a DWARF concept: most entries in a range
11848          list are relative, to reduce the number of relocs against the
11849          debugging information.  This is separate from this function's
11850          'baseaddr' argument, which GDB uses to relocate debugging
11851          information from a shared library based on the address at
11852          which the library was loaded.  */
11853       CORE_ADDR base = cu->base_address;
11854       int base_known = cu->base_known;
11855
11856       dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
11857       if (offset >= dwarf2_per_objfile->ranges.size)
11858         {
11859           complaint (&symfile_complaints,
11860                      _("Offset %lu out of bounds for DW_AT_ranges attribute"),
11861                      offset);
11862           return;
11863         }
11864       buffer = dwarf2_per_objfile->ranges.buffer + offset;
11865
11866       for (;;)
11867         {
11868           unsigned int bytes_read;
11869           CORE_ADDR start, end;
11870
11871           start = read_address (obfd, buffer, cu, &bytes_read);
11872           buffer += bytes_read;
11873           end = read_address (obfd, buffer, cu, &bytes_read);
11874           buffer += bytes_read;
11875
11876           /* Did we find the end of the range list?  */
11877           if (start == 0 && end == 0)
11878             break;
11879
11880           /* Did we find a base address selection entry?  */
11881           else if ((start & base_select_mask) == base_select_mask)
11882             {
11883               base = end;
11884               base_known = 1;
11885             }
11886
11887           /* We found an ordinary address range.  */
11888           else
11889             {
11890               if (!base_known)
11891                 {
11892                   complaint (&symfile_complaints,
11893                              _("Invalid .debug_ranges data "
11894                                "(no base address)"));
11895                   return;
11896                 }
11897
11898               if (start > end)
11899                 {
11900                   /* Inverted range entries are invalid.  */
11901                   complaint (&symfile_complaints,
11902                              _("Invalid .debug_ranges data "
11903                                "(inverted range)"));
11904                   return;
11905                 }
11906
11907               /* Empty range entries have no effect.  */
11908               if (start == end)
11909                 continue;
11910
11911               start += base + baseaddr;
11912               end += base + baseaddr;
11913
11914               /* A not-uncommon case of bad debug info.
11915                  Don't pollute the addrmap with bad data.  */
11916               if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
11917                 {
11918                   complaint (&symfile_complaints,
11919                              _(".debug_ranges entry has start address of zero"
11920                                " [in module %s]"), objfile_name (objfile));
11921                   continue;
11922                 }
11923
11924               record_block_range (block, start, end - 1);
11925             }
11926         }
11927     }
11928 }
11929
11930 /* Check whether the producer field indicates either of GCC < 4.6, or the
11931    Intel C/C++ compiler, and cache the result in CU.  */
11932
11933 static void
11934 check_producer (struct dwarf2_cu *cu)
11935 {
11936   const char *cs;
11937   int major, minor, release;
11938
11939   if (cu->producer == NULL)
11940     {
11941       /* For unknown compilers expect their behavior is DWARF version
11942          compliant.
11943
11944          GCC started to support .debug_types sections by -gdwarf-4 since
11945          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
11946          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
11947          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
11948          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
11949     }
11950   else if (strncmp (cu->producer, "GNU ", strlen ("GNU ")) == 0)
11951     {
11952       /* Skip any identifier after "GNU " - such as "C++" or "Java".  */
11953
11954       cs = &cu->producer[strlen ("GNU ")];
11955       while (*cs && !isdigit (*cs))
11956         cs++;
11957       if (sscanf (cs, "%d.%d.%d", &major, &minor, &release) != 3)
11958         {
11959           /* Not recognized as GCC.  */
11960         }
11961       else
11962         {
11963           cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
11964           cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
11965         }
11966     }
11967   else if (strncmp (cu->producer, "Intel(R) C", strlen ("Intel(R) C")) == 0)
11968     cu->producer_is_icc = 1;
11969   else
11970     {
11971       /* For other non-GCC compilers, expect their behavior is DWARF version
11972          compliant.  */
11973     }
11974
11975   cu->checked_producer = 1;
11976 }
11977
11978 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
11979    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
11980    during 4.6.0 experimental.  */
11981
11982 static int
11983 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
11984 {
11985   if (!cu->checked_producer)
11986     check_producer (cu);
11987
11988   return cu->producer_is_gxx_lt_4_6;
11989 }
11990
11991 /* Return the default accessibility type if it is not overriden by
11992    DW_AT_accessibility.  */
11993
11994 static enum dwarf_access_attribute
11995 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
11996 {
11997   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
11998     {
11999       /* The default DWARF 2 accessibility for members is public, the default
12000          accessibility for inheritance is private.  */
12001
12002       if (die->tag != DW_TAG_inheritance)
12003         return DW_ACCESS_public;
12004       else
12005         return DW_ACCESS_private;
12006     }
12007   else
12008     {
12009       /* DWARF 3+ defines the default accessibility a different way.  The same
12010          rules apply now for DW_TAG_inheritance as for the members and it only
12011          depends on the container kind.  */
12012
12013       if (die->parent->tag == DW_TAG_class_type)
12014         return DW_ACCESS_private;
12015       else
12016         return DW_ACCESS_public;
12017     }
12018 }
12019
12020 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
12021    offset.  If the attribute was not found return 0, otherwise return
12022    1.  If it was found but could not properly be handled, set *OFFSET
12023    to 0.  */
12024
12025 static int
12026 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
12027                              LONGEST *offset)
12028 {
12029   struct attribute *attr;
12030
12031   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
12032   if (attr != NULL)
12033     {
12034       *offset = 0;
12035
12036       /* Note that we do not check for a section offset first here.
12037          This is because DW_AT_data_member_location is new in DWARF 4,
12038          so if we see it, we can assume that a constant form is really
12039          a constant and not a section offset.  */
12040       if (attr_form_is_constant (attr))
12041         *offset = dwarf2_get_attr_constant_value (attr, 0);
12042       else if (attr_form_is_section_offset (attr))
12043         dwarf2_complex_location_expr_complaint ();
12044       else if (attr_form_is_block (attr))
12045         *offset = decode_locdesc (DW_BLOCK (attr), cu);
12046       else
12047         dwarf2_complex_location_expr_complaint ();
12048
12049       return 1;
12050     }
12051
12052   return 0;
12053 }
12054
12055 /* Add an aggregate field to the field list.  */
12056
12057 static void
12058 dwarf2_add_field (struct field_info *fip, struct die_info *die,
12059                   struct dwarf2_cu *cu)
12060 {
12061   struct objfile *objfile = cu->objfile;
12062   struct gdbarch *gdbarch = get_objfile_arch (objfile);
12063   struct nextfield *new_field;
12064   struct attribute *attr;
12065   struct field *fp;
12066   const char *fieldname = "";
12067
12068   /* Allocate a new field list entry and link it in.  */
12069   new_field = (struct nextfield *) xmalloc (sizeof (struct nextfield));
12070   make_cleanup (xfree, new_field);
12071   memset (new_field, 0, sizeof (struct nextfield));
12072
12073   if (die->tag == DW_TAG_inheritance)
12074     {
12075       new_field->next = fip->baseclasses;
12076       fip->baseclasses = new_field;
12077     }
12078   else
12079     {
12080       new_field->next = fip->fields;
12081       fip->fields = new_field;
12082     }
12083   fip->nfields++;
12084
12085   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
12086   if (attr)
12087     new_field->accessibility = DW_UNSND (attr);
12088   else
12089     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
12090   if (new_field->accessibility != DW_ACCESS_public)
12091     fip->non_public_fields = 1;
12092
12093   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
12094   if (attr)
12095     new_field->virtuality = DW_UNSND (attr);
12096   else
12097     new_field->virtuality = DW_VIRTUALITY_none;
12098
12099   fp = &new_field->field;
12100
12101   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
12102     {
12103       LONGEST offset;
12104
12105       /* Data member other than a C++ static data member.  */
12106
12107       /* Get type of field.  */
12108       fp->type = die_type (die, cu);
12109
12110       SET_FIELD_BITPOS (*fp, 0);
12111
12112       /* Get bit size of field (zero if none).  */
12113       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
12114       if (attr)
12115         {
12116           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
12117         }
12118       else
12119         {
12120           FIELD_BITSIZE (*fp) = 0;
12121         }
12122
12123       /* Get bit offset of field.  */
12124       if (handle_data_member_location (die, cu, &offset))
12125         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
12126       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
12127       if (attr)
12128         {
12129           if (gdbarch_bits_big_endian (gdbarch))
12130             {
12131               /* For big endian bits, the DW_AT_bit_offset gives the
12132                  additional bit offset from the MSB of the containing
12133                  anonymous object to the MSB of the field.  We don't
12134                  have to do anything special since we don't need to
12135                  know the size of the anonymous object.  */
12136               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
12137             }
12138           else
12139             {
12140               /* For little endian bits, compute the bit offset to the
12141                  MSB of the anonymous object, subtract off the number of
12142                  bits from the MSB of the field to the MSB of the
12143                  object, and then subtract off the number of bits of
12144                  the field itself.  The result is the bit offset of
12145                  the LSB of the field.  */
12146               int anonymous_size;
12147               int bit_offset = DW_UNSND (attr);
12148
12149               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
12150               if (attr)
12151                 {
12152                   /* The size of the anonymous object containing
12153                      the bit field is explicit, so use the
12154                      indicated size (in bytes).  */
12155                   anonymous_size = DW_UNSND (attr);
12156                 }
12157               else
12158                 {
12159                   /* The size of the anonymous object containing
12160                      the bit field must be inferred from the type
12161                      attribute of the data member containing the
12162                      bit field.  */
12163                   anonymous_size = TYPE_LENGTH (fp->type);
12164                 }
12165               SET_FIELD_BITPOS (*fp,
12166                                 (FIELD_BITPOS (*fp)
12167                                  + anonymous_size * bits_per_byte
12168                                  - bit_offset - FIELD_BITSIZE (*fp)));
12169             }
12170         }
12171
12172       /* Get name of field.  */
12173       fieldname = dwarf2_name (die, cu);
12174       if (fieldname == NULL)
12175         fieldname = "";
12176
12177       /* The name is already allocated along with this objfile, so we don't
12178          need to duplicate it for the type.  */
12179       fp->name = fieldname;
12180
12181       /* Change accessibility for artificial fields (e.g. virtual table
12182          pointer or virtual base class pointer) to private.  */
12183       if (dwarf2_attr (die, DW_AT_artificial, cu))
12184         {
12185           FIELD_ARTIFICIAL (*fp) = 1;
12186           new_field->accessibility = DW_ACCESS_private;
12187           fip->non_public_fields = 1;
12188         }
12189     }
12190   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
12191     {
12192       /* C++ static member.  */
12193
12194       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
12195          is a declaration, but all versions of G++ as of this writing
12196          (so through at least 3.2.1) incorrectly generate
12197          DW_TAG_variable tags.  */
12198
12199       const char *physname;
12200
12201       /* Get name of field.  */
12202       fieldname = dwarf2_name (die, cu);
12203       if (fieldname == NULL)
12204         return;
12205
12206       attr = dwarf2_attr (die, DW_AT_const_value, cu);
12207       if (attr
12208           /* Only create a symbol if this is an external value.
12209              new_symbol checks this and puts the value in the global symbol
12210              table, which we want.  If it is not external, new_symbol
12211              will try to put the value in cu->list_in_scope which is wrong.  */
12212           && dwarf2_flag_true_p (die, DW_AT_external, cu))
12213         {
12214           /* A static const member, not much different than an enum as far as
12215              we're concerned, except that we can support more types.  */
12216           new_symbol (die, NULL, cu);
12217         }
12218
12219       /* Get physical name.  */
12220       physname = dwarf2_physname (fieldname, die, cu);
12221
12222       /* The name is already allocated along with this objfile, so we don't
12223          need to duplicate it for the type.  */
12224       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
12225       FIELD_TYPE (*fp) = die_type (die, cu);
12226       FIELD_NAME (*fp) = fieldname;
12227     }
12228   else if (die->tag == DW_TAG_inheritance)
12229     {
12230       LONGEST offset;
12231
12232       /* C++ base class field.  */
12233       if (handle_data_member_location (die, cu, &offset))
12234         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
12235       FIELD_BITSIZE (*fp) = 0;
12236       FIELD_TYPE (*fp) = die_type (die, cu);
12237       FIELD_NAME (*fp) = type_name_no_tag (fp->type);
12238       fip->nbaseclasses++;
12239     }
12240 }
12241
12242 /* Add a typedef defined in the scope of the FIP's class.  */
12243
12244 static void
12245 dwarf2_add_typedef (struct field_info *fip, struct die_info *die,
12246                     struct dwarf2_cu *cu)
12247 {
12248   struct objfile *objfile = cu->objfile;
12249   struct typedef_field_list *new_field;
12250   struct attribute *attr;
12251   struct typedef_field *fp;
12252   char *fieldname = "";
12253
12254   /* Allocate a new field list entry and link it in.  */
12255   new_field = xzalloc (sizeof (*new_field));
12256   make_cleanup (xfree, new_field);
12257
12258   gdb_assert (die->tag == DW_TAG_typedef);
12259
12260   fp = &new_field->field;
12261
12262   /* Get name of field.  */
12263   fp->name = dwarf2_name (die, cu);
12264   if (fp->name == NULL)
12265     return;
12266
12267   fp->type = read_type_die (die, cu);
12268
12269   new_field->next = fip->typedef_field_list;
12270   fip->typedef_field_list = new_field;
12271   fip->typedef_field_list_count++;
12272 }
12273
12274 /* Create the vector of fields, and attach it to the type.  */
12275
12276 static void
12277 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
12278                               struct dwarf2_cu *cu)
12279 {
12280   int nfields = fip->nfields;
12281
12282   /* Record the field count, allocate space for the array of fields,
12283      and create blank accessibility bitfields if necessary.  */
12284   TYPE_NFIELDS (type) = nfields;
12285   TYPE_FIELDS (type) = (struct field *)
12286     TYPE_ALLOC (type, sizeof (struct field) * nfields);
12287   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
12288
12289   if (fip->non_public_fields && cu->language != language_ada)
12290     {
12291       ALLOCATE_CPLUS_STRUCT_TYPE (type);
12292
12293       TYPE_FIELD_PRIVATE_BITS (type) =
12294         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12295       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
12296
12297       TYPE_FIELD_PROTECTED_BITS (type) =
12298         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12299       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
12300
12301       TYPE_FIELD_IGNORE_BITS (type) =
12302         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12303       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
12304     }
12305
12306   /* If the type has baseclasses, allocate and clear a bit vector for
12307      TYPE_FIELD_VIRTUAL_BITS.  */
12308   if (fip->nbaseclasses && cu->language != language_ada)
12309     {
12310       int num_bytes = B_BYTES (fip->nbaseclasses);
12311       unsigned char *pointer;
12312
12313       ALLOCATE_CPLUS_STRUCT_TYPE (type);
12314       pointer = TYPE_ALLOC (type, num_bytes);
12315       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
12316       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
12317       TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
12318     }
12319
12320   /* Copy the saved-up fields into the field vector.  Start from the head of
12321      the list, adding to the tail of the field array, so that they end up in
12322      the same order in the array in which they were added to the list.  */
12323   while (nfields-- > 0)
12324     {
12325       struct nextfield *fieldp;
12326
12327       if (fip->fields)
12328         {
12329           fieldp = fip->fields;
12330           fip->fields = fieldp->next;
12331         }
12332       else
12333         {
12334           fieldp = fip->baseclasses;
12335           fip->baseclasses = fieldp->next;
12336         }
12337
12338       TYPE_FIELD (type, nfields) = fieldp->field;
12339       switch (fieldp->accessibility)
12340         {
12341         case DW_ACCESS_private:
12342           if (cu->language != language_ada)
12343             SET_TYPE_FIELD_PRIVATE (type, nfields);
12344           break;
12345
12346         case DW_ACCESS_protected:
12347           if (cu->language != language_ada)
12348             SET_TYPE_FIELD_PROTECTED (type, nfields);
12349           break;
12350
12351         case DW_ACCESS_public:
12352           break;
12353
12354         default:
12355           /* Unknown accessibility.  Complain and treat it as public.  */
12356           {
12357             complaint (&symfile_complaints, _("unsupported accessibility %d"),
12358                        fieldp->accessibility);
12359           }
12360           break;
12361         }
12362       if (nfields < fip->nbaseclasses)
12363         {
12364           switch (fieldp->virtuality)
12365             {
12366             case DW_VIRTUALITY_virtual:
12367             case DW_VIRTUALITY_pure_virtual:
12368               if (cu->language == language_ada)
12369                 error (_("unexpected virtuality in component of Ada type"));
12370               SET_TYPE_FIELD_VIRTUAL (type, nfields);
12371               break;
12372             }
12373         }
12374     }
12375 }
12376
12377 /* Return true if this member function is a constructor, false
12378    otherwise.  */
12379
12380 static int
12381 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
12382 {
12383   const char *fieldname;
12384   const char *typename;
12385   int len;
12386
12387   if (die->parent == NULL)
12388     return 0;
12389
12390   if (die->parent->tag != DW_TAG_structure_type
12391       && die->parent->tag != DW_TAG_union_type
12392       && die->parent->tag != DW_TAG_class_type)
12393     return 0;
12394
12395   fieldname = dwarf2_name (die, cu);
12396   typename = dwarf2_name (die->parent, cu);
12397   if (fieldname == NULL || typename == NULL)
12398     return 0;
12399
12400   len = strlen (fieldname);
12401   return (strncmp (fieldname, typename, len) == 0
12402           && (typename[len] == '\0' || typename[len] == '<'));
12403 }
12404
12405 /* Add a member function to the proper fieldlist.  */
12406
12407 static void
12408 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
12409                       struct type *type, struct dwarf2_cu *cu)
12410 {
12411   struct objfile *objfile = cu->objfile;
12412   struct attribute *attr;
12413   struct fnfieldlist *flp;
12414   int i;
12415   struct fn_field *fnp;
12416   const char *fieldname;
12417   struct nextfnfield *new_fnfield;
12418   struct type *this_type;
12419   enum dwarf_access_attribute accessibility;
12420
12421   if (cu->language == language_ada)
12422     error (_("unexpected member function in Ada type"));
12423
12424   /* Get name of member function.  */
12425   fieldname = dwarf2_name (die, cu);
12426   if (fieldname == NULL)
12427     return;
12428
12429   /* Look up member function name in fieldlist.  */
12430   for (i = 0; i < fip->nfnfields; i++)
12431     {
12432       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
12433         break;
12434     }
12435
12436   /* Create new list element if necessary.  */
12437   if (i < fip->nfnfields)
12438     flp = &fip->fnfieldlists[i];
12439   else
12440     {
12441       if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
12442         {
12443           fip->fnfieldlists = (struct fnfieldlist *)
12444             xrealloc (fip->fnfieldlists,
12445                       (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
12446                       * sizeof (struct fnfieldlist));
12447           if (fip->nfnfields == 0)
12448             make_cleanup (free_current_contents, &fip->fnfieldlists);
12449         }
12450       flp = &fip->fnfieldlists[fip->nfnfields];
12451       flp->name = fieldname;
12452       flp->length = 0;
12453       flp->head = NULL;
12454       i = fip->nfnfields++;
12455     }
12456
12457   /* Create a new member function field and chain it to the field list
12458      entry.  */
12459   new_fnfield = (struct nextfnfield *) xmalloc (sizeof (struct nextfnfield));
12460   make_cleanup (xfree, new_fnfield);
12461   memset (new_fnfield, 0, sizeof (struct nextfnfield));
12462   new_fnfield->next = flp->head;
12463   flp->head = new_fnfield;
12464   flp->length++;
12465
12466   /* Fill in the member function field info.  */
12467   fnp = &new_fnfield->fnfield;
12468
12469   /* Delay processing of the physname until later.  */
12470   if (cu->language == language_cplus || cu->language == language_java)
12471     {
12472       add_to_method_list (type, i, flp->length - 1, fieldname,
12473                           die, cu);
12474     }
12475   else
12476     {
12477       const char *physname = dwarf2_physname (fieldname, die, cu);
12478       fnp->physname = physname ? physname : "";
12479     }
12480
12481   fnp->type = alloc_type (objfile);
12482   this_type = read_type_die (die, cu);
12483   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
12484     {
12485       int nparams = TYPE_NFIELDS (this_type);
12486
12487       /* TYPE is the domain of this method, and THIS_TYPE is the type
12488            of the method itself (TYPE_CODE_METHOD).  */
12489       smash_to_method_type (fnp->type, type,
12490                             TYPE_TARGET_TYPE (this_type),
12491                             TYPE_FIELDS (this_type),
12492                             TYPE_NFIELDS (this_type),
12493                             TYPE_VARARGS (this_type));
12494
12495       /* Handle static member functions.
12496          Dwarf2 has no clean way to discern C++ static and non-static
12497          member functions.  G++ helps GDB by marking the first
12498          parameter for non-static member functions (which is the this
12499          pointer) as artificial.  We obtain this information from
12500          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
12501       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
12502         fnp->voffset = VOFFSET_STATIC;
12503     }
12504   else
12505     complaint (&symfile_complaints, _("member function type missing for '%s'"),
12506                dwarf2_full_name (fieldname, die, cu));
12507
12508   /* Get fcontext from DW_AT_containing_type if present.  */
12509   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
12510     fnp->fcontext = die_containing_type (die, cu);
12511
12512   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
12513      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
12514
12515   /* Get accessibility.  */
12516   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
12517   if (attr)
12518     accessibility = DW_UNSND (attr);
12519   else
12520     accessibility = dwarf2_default_access_attribute (die, cu);
12521   switch (accessibility)
12522     {
12523     case DW_ACCESS_private:
12524       fnp->is_private = 1;
12525       break;
12526     case DW_ACCESS_protected:
12527       fnp->is_protected = 1;
12528       break;
12529     }
12530
12531   /* Check for artificial methods.  */
12532   attr = dwarf2_attr (die, DW_AT_artificial, cu);
12533   if (attr && DW_UNSND (attr) != 0)
12534     fnp->is_artificial = 1;
12535
12536   fnp->is_constructor = dwarf2_is_constructor (die, cu);
12537
12538   /* Get index in virtual function table if it is a virtual member
12539      function.  For older versions of GCC, this is an offset in the
12540      appropriate virtual table, as specified by DW_AT_containing_type.
12541      For everyone else, it is an expression to be evaluated relative
12542      to the object address.  */
12543
12544   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
12545   if (attr)
12546     {
12547       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
12548         {
12549           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
12550             {
12551               /* Old-style GCC.  */
12552               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
12553             }
12554           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
12555                    || (DW_BLOCK (attr)->size > 1
12556                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
12557                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
12558             {
12559               struct dwarf_block blk;
12560               int offset;
12561
12562               offset = (DW_BLOCK (attr)->data[0] == DW_OP_deref
12563                         ? 1 : 2);
12564               blk.size = DW_BLOCK (attr)->size - offset;
12565               blk.data = DW_BLOCK (attr)->data + offset;
12566               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
12567               if ((fnp->voffset % cu->header.addr_size) != 0)
12568                 dwarf2_complex_location_expr_complaint ();
12569               else
12570                 fnp->voffset /= cu->header.addr_size;
12571               fnp->voffset += 2;
12572             }
12573           else
12574             dwarf2_complex_location_expr_complaint ();
12575
12576           if (!fnp->fcontext)
12577             fnp->fcontext = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
12578         }
12579       else if (attr_form_is_section_offset (attr))
12580         {
12581           dwarf2_complex_location_expr_complaint ();
12582         }
12583       else
12584         {
12585           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
12586                                                  fieldname);
12587         }
12588     }
12589   else
12590     {
12591       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
12592       if (attr && DW_UNSND (attr))
12593         {
12594           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
12595           complaint (&symfile_complaints,
12596                      _("Member function \"%s\" (offset %d) is virtual "
12597                        "but the vtable offset is not specified"),
12598                      fieldname, die->offset.sect_off);
12599           ALLOCATE_CPLUS_STRUCT_TYPE (type);
12600           TYPE_CPLUS_DYNAMIC (type) = 1;
12601         }
12602     }
12603 }
12604
12605 /* Create the vector of member function fields, and attach it to the type.  */
12606
12607 static void
12608 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
12609                                  struct dwarf2_cu *cu)
12610 {
12611   struct fnfieldlist *flp;
12612   int i;
12613
12614   if (cu->language == language_ada)
12615     error (_("unexpected member functions in Ada type"));
12616
12617   ALLOCATE_CPLUS_STRUCT_TYPE (type);
12618   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
12619     TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
12620
12621   for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
12622     {
12623       struct nextfnfield *nfp = flp->head;
12624       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
12625       int k;
12626
12627       TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
12628       TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
12629       fn_flp->fn_fields = (struct fn_field *)
12630         TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
12631       for (k = flp->length; (k--, nfp); nfp = nfp->next)
12632         fn_flp->fn_fields[k] = nfp->fnfield;
12633     }
12634
12635   TYPE_NFN_FIELDS (type) = fip->nfnfields;
12636 }
12637
12638 /* Returns non-zero if NAME is the name of a vtable member in CU's
12639    language, zero otherwise.  */
12640 static int
12641 is_vtable_name (const char *name, struct dwarf2_cu *cu)
12642 {
12643   static const char vptr[] = "_vptr";
12644   static const char vtable[] = "vtable";
12645
12646   /* Look for the C++ and Java forms of the vtable.  */
12647   if ((cu->language == language_java
12648        && strncmp (name, vtable, sizeof (vtable) - 1) == 0)
12649        || (strncmp (name, vptr, sizeof (vptr) - 1) == 0
12650        && is_cplus_marker (name[sizeof (vptr) - 1])))
12651     return 1;
12652
12653   return 0;
12654 }
12655
12656 /* GCC outputs unnamed structures that are really pointers to member
12657    functions, with the ABI-specified layout.  If TYPE describes
12658    such a structure, smash it into a member function type.
12659
12660    GCC shouldn't do this; it should just output pointer to member DIEs.
12661    This is GCC PR debug/28767.  */
12662
12663 static void
12664 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
12665 {
12666   struct type *pfn_type, *domain_type, *new_type;
12667
12668   /* Check for a structure with no name and two children.  */
12669   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
12670     return;
12671
12672   /* Check for __pfn and __delta members.  */
12673   if (TYPE_FIELD_NAME (type, 0) == NULL
12674       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
12675       || TYPE_FIELD_NAME (type, 1) == NULL
12676       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
12677     return;
12678
12679   /* Find the type of the method.  */
12680   pfn_type = TYPE_FIELD_TYPE (type, 0);
12681   if (pfn_type == NULL
12682       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
12683       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
12684     return;
12685
12686   /* Look for the "this" argument.  */
12687   pfn_type = TYPE_TARGET_TYPE (pfn_type);
12688   if (TYPE_NFIELDS (pfn_type) == 0
12689       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
12690       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
12691     return;
12692
12693   domain_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
12694   new_type = alloc_type (objfile);
12695   smash_to_method_type (new_type, domain_type, TYPE_TARGET_TYPE (pfn_type),
12696                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
12697                         TYPE_VARARGS (pfn_type));
12698   smash_to_methodptr_type (type, new_type);
12699 }
12700
12701 /* Return non-zero if the CU's PRODUCER string matches the Intel C/C++ compiler
12702    (icc).  */
12703
12704 static int
12705 producer_is_icc (struct dwarf2_cu *cu)
12706 {
12707   if (!cu->checked_producer)
12708     check_producer (cu);
12709
12710   return cu->producer_is_icc;
12711 }
12712
12713 /* Called when we find the DIE that starts a structure or union scope
12714    (definition) to create a type for the structure or union.  Fill in
12715    the type's name and general properties; the members will not be
12716    processed until process_structure_scope.
12717
12718    NOTE: we need to call these functions regardless of whether or not the
12719    DIE has a DW_AT_name attribute, since it might be an anonymous
12720    structure or union.  This gets the type entered into our set of
12721    user defined types.
12722
12723    However, if the structure is incomplete (an opaque struct/union)
12724    then suppress creating a symbol table entry for it since gdb only
12725    wants to find the one with the complete definition.  Note that if
12726    it is complete, we just call new_symbol, which does it's own
12727    checking about whether the struct/union is anonymous or not (and
12728    suppresses creating a symbol table entry itself).  */
12729
12730 static struct type *
12731 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
12732 {
12733   struct objfile *objfile = cu->objfile;
12734   struct type *type;
12735   struct attribute *attr;
12736   const char *name;
12737
12738   /* If the definition of this type lives in .debug_types, read that type.
12739      Don't follow DW_AT_specification though, that will take us back up
12740      the chain and we want to go down.  */
12741   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
12742   if (attr)
12743     {
12744       type = get_DW_AT_signature_type (die, attr, cu);
12745
12746       /* The type's CU may not be the same as CU.
12747          Ensure TYPE is recorded with CU in die_type_hash.  */
12748       return set_die_type (die, type, cu);
12749     }
12750
12751   type = alloc_type (objfile);
12752   INIT_CPLUS_SPECIFIC (type);
12753
12754   name = dwarf2_name (die, cu);
12755   if (name != NULL)
12756     {
12757       if (cu->language == language_cplus
12758           || cu->language == language_java)
12759         {
12760           const char *full_name = dwarf2_full_name (name, die, cu);
12761
12762           /* dwarf2_full_name might have already finished building the DIE's
12763              type.  If so, there is no need to continue.  */
12764           if (get_die_type (die, cu) != NULL)
12765             return get_die_type (die, cu);
12766
12767           TYPE_TAG_NAME (type) = full_name;
12768           if (die->tag == DW_TAG_structure_type
12769               || die->tag == DW_TAG_class_type)
12770             TYPE_NAME (type) = TYPE_TAG_NAME (type);
12771         }
12772       else
12773         {
12774           /* The name is already allocated along with this objfile, so
12775              we don't need to duplicate it for the type.  */
12776           TYPE_TAG_NAME (type) = name;
12777           if (die->tag == DW_TAG_class_type)
12778             TYPE_NAME (type) = TYPE_TAG_NAME (type);
12779         }
12780     }
12781
12782   if (die->tag == DW_TAG_structure_type)
12783     {
12784       TYPE_CODE (type) = TYPE_CODE_STRUCT;
12785     }
12786   else if (die->tag == DW_TAG_union_type)
12787     {
12788       TYPE_CODE (type) = TYPE_CODE_UNION;
12789     }
12790   else
12791     {
12792       TYPE_CODE (type) = TYPE_CODE_CLASS;
12793     }
12794
12795   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
12796     TYPE_DECLARED_CLASS (type) = 1;
12797
12798   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
12799   if (attr)
12800     {
12801       TYPE_LENGTH (type) = DW_UNSND (attr);
12802     }
12803   else
12804     {
12805       TYPE_LENGTH (type) = 0;
12806     }
12807
12808   if (producer_is_icc (cu))
12809     {
12810       /* ICC does not output the required DW_AT_declaration
12811          on incomplete types, but gives them a size of zero.  */
12812     }
12813   else
12814     TYPE_STUB_SUPPORTED (type) = 1;
12815
12816   if (die_is_declaration (die, cu))
12817     TYPE_STUB (type) = 1;
12818   else if (attr == NULL && die->child == NULL
12819            && producer_is_realview (cu->producer))
12820     /* RealView does not output the required DW_AT_declaration
12821        on incomplete types.  */
12822     TYPE_STUB (type) = 1;
12823
12824   /* We need to add the type field to the die immediately so we don't
12825      infinitely recurse when dealing with pointers to the structure
12826      type within the structure itself.  */
12827   set_die_type (die, type, cu);
12828
12829   /* set_die_type should be already done.  */
12830   set_descriptive_type (type, die, cu);
12831
12832   return type;
12833 }
12834
12835 /* Finish creating a structure or union type, including filling in
12836    its members and creating a symbol for it.  */
12837
12838 static void
12839 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
12840 {
12841   struct objfile *objfile = cu->objfile;
12842   struct die_info *child_die = die->child;
12843   struct type *type;
12844
12845   type = get_die_type (die, cu);
12846   if (type == NULL)
12847     type = read_structure_type (die, cu);
12848
12849   if (die->child != NULL && ! die_is_declaration (die, cu))
12850     {
12851       struct field_info fi;
12852       struct die_info *child_die;
12853       VEC (symbolp) *template_args = NULL;
12854       struct cleanup *back_to = make_cleanup (null_cleanup, 0);
12855
12856       memset (&fi, 0, sizeof (struct field_info));
12857
12858       child_die = die->child;
12859
12860       while (child_die && child_die->tag)
12861         {
12862           if (child_die->tag == DW_TAG_member
12863               || child_die->tag == DW_TAG_variable)
12864             {
12865               /* NOTE: carlton/2002-11-05: A C++ static data member
12866                  should be a DW_TAG_member that is a declaration, but
12867                  all versions of G++ as of this writing (so through at
12868                  least 3.2.1) incorrectly generate DW_TAG_variable
12869                  tags for them instead.  */
12870               dwarf2_add_field (&fi, child_die, cu);
12871             }
12872           else if (child_die->tag == DW_TAG_subprogram)
12873             {
12874               /* C++ member function.  */
12875               dwarf2_add_member_fn (&fi, child_die, type, cu);
12876             }
12877           else if (child_die->tag == DW_TAG_inheritance)
12878             {
12879               /* C++ base class field.  */
12880               dwarf2_add_field (&fi, child_die, cu);
12881             }
12882           else if (child_die->tag == DW_TAG_typedef)
12883             dwarf2_add_typedef (&fi, child_die, cu);
12884           else if (child_die->tag == DW_TAG_template_type_param
12885                    || child_die->tag == DW_TAG_template_value_param)
12886             {
12887               struct symbol *arg = new_symbol (child_die, NULL, cu);
12888
12889               if (arg != NULL)
12890                 VEC_safe_push (symbolp, template_args, arg);
12891             }
12892
12893           child_die = sibling_die (child_die);
12894         }
12895
12896       /* Attach template arguments to type.  */
12897       if (! VEC_empty (symbolp, template_args))
12898         {
12899           ALLOCATE_CPLUS_STRUCT_TYPE (type);
12900           TYPE_N_TEMPLATE_ARGUMENTS (type)
12901             = VEC_length (symbolp, template_args);
12902           TYPE_TEMPLATE_ARGUMENTS (type)
12903             = obstack_alloc (&objfile->objfile_obstack,
12904                              (TYPE_N_TEMPLATE_ARGUMENTS (type)
12905                               * sizeof (struct symbol *)));
12906           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
12907                   VEC_address (symbolp, template_args),
12908                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
12909                    * sizeof (struct symbol *)));
12910           VEC_free (symbolp, template_args);
12911         }
12912
12913       /* Attach fields and member functions to the type.  */
12914       if (fi.nfields)
12915         dwarf2_attach_fields_to_type (&fi, type, cu);
12916       if (fi.nfnfields)
12917         {
12918           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
12919
12920           /* Get the type which refers to the base class (possibly this
12921              class itself) which contains the vtable pointer for the current
12922              class from the DW_AT_containing_type attribute.  This use of
12923              DW_AT_containing_type is a GNU extension.  */
12924
12925           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
12926             {
12927               struct type *t = die_containing_type (die, cu);
12928
12929               TYPE_VPTR_BASETYPE (type) = t;
12930               if (type == t)
12931                 {
12932                   int i;
12933
12934                   /* Our own class provides vtbl ptr.  */
12935                   for (i = TYPE_NFIELDS (t) - 1;
12936                        i >= TYPE_N_BASECLASSES (t);
12937                        --i)
12938                     {
12939                       const char *fieldname = TYPE_FIELD_NAME (t, i);
12940
12941                       if (is_vtable_name (fieldname, cu))
12942                         {
12943                           TYPE_VPTR_FIELDNO (type) = i;
12944                           break;
12945                         }
12946                     }
12947
12948                   /* Complain if virtual function table field not found.  */
12949                   if (i < TYPE_N_BASECLASSES (t))
12950                     complaint (&symfile_complaints,
12951                                _("virtual function table pointer "
12952                                  "not found when defining class '%s'"),
12953                                TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
12954                                "");
12955                 }
12956               else
12957                 {
12958                   TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
12959                 }
12960             }
12961           else if (cu->producer
12962                    && strncmp (cu->producer,
12963                                "IBM(R) XL C/C++ Advanced Edition", 32) == 0)
12964             {
12965               /* The IBM XLC compiler does not provide direct indication
12966                  of the containing type, but the vtable pointer is
12967                  always named __vfp.  */
12968
12969               int i;
12970
12971               for (i = TYPE_NFIELDS (type) - 1;
12972                    i >= TYPE_N_BASECLASSES (type);
12973                    --i)
12974                 {
12975                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
12976                     {
12977                       TYPE_VPTR_FIELDNO (type) = i;
12978                       TYPE_VPTR_BASETYPE (type) = type;
12979                       break;
12980                     }
12981                 }
12982             }
12983         }
12984
12985       /* Copy fi.typedef_field_list linked list elements content into the
12986          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
12987       if (fi.typedef_field_list)
12988         {
12989           int i = fi.typedef_field_list_count;
12990
12991           ALLOCATE_CPLUS_STRUCT_TYPE (type);
12992           TYPE_TYPEDEF_FIELD_ARRAY (type)
12993             = TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i);
12994           TYPE_TYPEDEF_FIELD_COUNT (type) = i;
12995
12996           /* Reverse the list order to keep the debug info elements order.  */
12997           while (--i >= 0)
12998             {
12999               struct typedef_field *dest, *src;
13000
13001               dest = &TYPE_TYPEDEF_FIELD (type, i);
13002               src = &fi.typedef_field_list->field;
13003               fi.typedef_field_list = fi.typedef_field_list->next;
13004               *dest = *src;
13005             }
13006         }
13007
13008       do_cleanups (back_to);
13009
13010       if (HAVE_CPLUS_STRUCT (type))
13011         TYPE_CPLUS_REALLY_JAVA (type) = cu->language == language_java;
13012     }
13013
13014   quirk_gcc_member_function_pointer (type, objfile);
13015
13016   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
13017      snapshots) has been known to create a die giving a declaration
13018      for a class that has, as a child, a die giving a definition for a
13019      nested class.  So we have to process our children even if the
13020      current die is a declaration.  Normally, of course, a declaration
13021      won't have any children at all.  */
13022
13023   while (child_die != NULL && child_die->tag)
13024     {
13025       if (child_die->tag == DW_TAG_member
13026           || child_die->tag == DW_TAG_variable
13027           || child_die->tag == DW_TAG_inheritance
13028           || child_die->tag == DW_TAG_template_value_param
13029           || child_die->tag == DW_TAG_template_type_param)
13030         {
13031           /* Do nothing.  */
13032         }
13033       else
13034         process_die (child_die, cu);
13035
13036       child_die = sibling_die (child_die);
13037     }
13038
13039   /* Do not consider external references.  According to the DWARF standard,
13040      these DIEs are identified by the fact that they have no byte_size
13041      attribute, and a declaration attribute.  */
13042   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
13043       || !die_is_declaration (die, cu))
13044     new_symbol (die, type, cu);
13045 }
13046
13047 /* Given a DW_AT_enumeration_type die, set its type.  We do not
13048    complete the type's fields yet, or create any symbols.  */
13049
13050 static struct type *
13051 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
13052 {
13053   struct objfile *objfile = cu->objfile;
13054   struct type *type;
13055   struct attribute *attr;
13056   const char *name;
13057
13058   /* If the definition of this type lives in .debug_types, read that type.
13059      Don't follow DW_AT_specification though, that will take us back up
13060      the chain and we want to go down.  */
13061   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
13062   if (attr)
13063     {
13064       type = get_DW_AT_signature_type (die, attr, cu);
13065
13066       /* The type's CU may not be the same as CU.
13067          Ensure TYPE is recorded with CU in die_type_hash.  */
13068       return set_die_type (die, type, cu);
13069     }
13070
13071   type = alloc_type (objfile);
13072
13073   TYPE_CODE (type) = TYPE_CODE_ENUM;
13074   name = dwarf2_full_name (NULL, die, cu);
13075   if (name != NULL)
13076     TYPE_TAG_NAME (type) = name;
13077
13078   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13079   if (attr)
13080     {
13081       TYPE_LENGTH (type) = DW_UNSND (attr);
13082     }
13083   else
13084     {
13085       TYPE_LENGTH (type) = 0;
13086     }
13087
13088   /* The enumeration DIE can be incomplete.  In Ada, any type can be
13089      declared as private in the package spec, and then defined only
13090      inside the package body.  Such types are known as Taft Amendment
13091      Types.  When another package uses such a type, an incomplete DIE
13092      may be generated by the compiler.  */
13093   if (die_is_declaration (die, cu))
13094     TYPE_STUB (type) = 1;
13095
13096   return set_die_type (die, type, cu);
13097 }
13098
13099 /* Given a pointer to a die which begins an enumeration, process all
13100    the dies that define the members of the enumeration, and create the
13101    symbol for the enumeration type.
13102
13103    NOTE: We reverse the order of the element list.  */
13104
13105 static void
13106 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
13107 {
13108   struct type *this_type;
13109
13110   this_type = get_die_type (die, cu);
13111   if (this_type == NULL)
13112     this_type = read_enumeration_type (die, cu);
13113
13114   if (die->child != NULL)
13115     {
13116       struct die_info *child_die;
13117       struct symbol *sym;
13118       struct field *fields = NULL;
13119       int num_fields = 0;
13120       int unsigned_enum = 1;
13121       const char *name;
13122       int flag_enum = 1;
13123       ULONGEST mask = 0;
13124
13125       child_die = die->child;
13126       while (child_die && child_die->tag)
13127         {
13128           if (child_die->tag != DW_TAG_enumerator)
13129             {
13130               process_die (child_die, cu);
13131             }
13132           else
13133             {
13134               name = dwarf2_name (child_die, cu);
13135               if (name)
13136                 {
13137                   sym = new_symbol (child_die, this_type, cu);
13138                   if (SYMBOL_VALUE (sym) < 0)
13139                     {
13140                       unsigned_enum = 0;
13141                       flag_enum = 0;
13142                     }
13143                   else if ((mask & SYMBOL_VALUE (sym)) != 0)
13144                     flag_enum = 0;
13145                   else
13146                     mask |= SYMBOL_VALUE (sym);
13147
13148                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
13149                     {
13150                       fields = (struct field *)
13151                         xrealloc (fields,
13152                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
13153                                   * sizeof (struct field));
13154                     }
13155
13156                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
13157                   FIELD_TYPE (fields[num_fields]) = NULL;
13158                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
13159                   FIELD_BITSIZE (fields[num_fields]) = 0;
13160
13161                   num_fields++;
13162                 }
13163             }
13164
13165           child_die = sibling_die (child_die);
13166         }
13167
13168       if (num_fields)
13169         {
13170           TYPE_NFIELDS (this_type) = num_fields;
13171           TYPE_FIELDS (this_type) = (struct field *)
13172             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
13173           memcpy (TYPE_FIELDS (this_type), fields,
13174                   sizeof (struct field) * num_fields);
13175           xfree (fields);
13176         }
13177       if (unsigned_enum)
13178         TYPE_UNSIGNED (this_type) = 1;
13179       if (flag_enum)
13180         TYPE_FLAG_ENUM (this_type) = 1;
13181     }
13182
13183   /* If we are reading an enum from a .debug_types unit, and the enum
13184      is a declaration, and the enum is not the signatured type in the
13185      unit, then we do not want to add a symbol for it.  Adding a
13186      symbol would in some cases obscure the true definition of the
13187      enum, giving users an incomplete type when the definition is
13188      actually available.  Note that we do not want to do this for all
13189      enums which are just declarations, because C++0x allows forward
13190      enum declarations.  */
13191   if (cu->per_cu->is_debug_types
13192       && die_is_declaration (die, cu))
13193     {
13194       struct signatured_type *sig_type;
13195
13196       sig_type = (struct signatured_type *) cu->per_cu;
13197       gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
13198       if (sig_type->type_offset_in_section.sect_off != die->offset.sect_off)
13199         return;
13200     }
13201
13202   new_symbol (die, this_type, cu);
13203 }
13204
13205 /* Extract all information from a DW_TAG_array_type DIE and put it in
13206    the DIE's type field.  For now, this only handles one dimensional
13207    arrays.  */
13208
13209 static struct type *
13210 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
13211 {
13212   struct objfile *objfile = cu->objfile;
13213   struct die_info *child_die;
13214   struct type *type;
13215   struct type *element_type, *range_type, *index_type;
13216   struct type **range_types = NULL;
13217   struct attribute *attr;
13218   int ndim = 0;
13219   struct cleanup *back_to;
13220   const char *name;
13221
13222   element_type = die_type (die, cu);
13223
13224   /* The die_type call above may have already set the type for this DIE.  */
13225   type = get_die_type (die, cu);
13226   if (type)
13227     return type;
13228
13229   /* Irix 6.2 native cc creates array types without children for
13230      arrays with unspecified length.  */
13231   if (die->child == NULL)
13232     {
13233       index_type = objfile_type (objfile)->builtin_int;
13234       range_type = create_range_type (NULL, index_type, 0, -1);
13235       type = create_array_type (NULL, element_type, range_type);
13236       return set_die_type (die, type, cu);
13237     }
13238
13239   back_to = make_cleanup (null_cleanup, NULL);
13240   child_die = die->child;
13241   while (child_die && child_die->tag)
13242     {
13243       if (child_die->tag == DW_TAG_subrange_type)
13244         {
13245           struct type *child_type = read_type_die (child_die, cu);
13246
13247           if (child_type != NULL)
13248             {
13249               /* The range type was succesfully read.  Save it for the
13250                  array type creation.  */
13251               if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
13252                 {
13253                   range_types = (struct type **)
13254                     xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
13255                               * sizeof (struct type *));
13256                   if (ndim == 0)
13257                     make_cleanup (free_current_contents, &range_types);
13258                 }
13259               range_types[ndim++] = child_type;
13260             }
13261         }
13262       child_die = sibling_die (child_die);
13263     }
13264
13265   /* Dwarf2 dimensions are output from left to right, create the
13266      necessary array types in backwards order.  */
13267
13268   type = element_type;
13269
13270   if (read_array_order (die, cu) == DW_ORD_col_major)
13271     {
13272       int i = 0;
13273
13274       while (i < ndim)
13275         type = create_array_type (NULL, type, range_types[i++]);
13276     }
13277   else
13278     {
13279       while (ndim-- > 0)
13280         type = create_array_type (NULL, type, range_types[ndim]);
13281     }
13282
13283   /* Understand Dwarf2 support for vector types (like they occur on
13284      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
13285      array type.  This is not part of the Dwarf2/3 standard yet, but a
13286      custom vendor extension.  The main difference between a regular
13287      array and the vector variant is that vectors are passed by value
13288      to functions.  */
13289   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
13290   if (attr)
13291     make_vector_type (type);
13292
13293   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
13294      implementation may choose to implement triple vectors using this
13295      attribute.  */
13296   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13297   if (attr)
13298     {
13299       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
13300         TYPE_LENGTH (type) = DW_UNSND (attr);
13301       else
13302         complaint (&symfile_complaints,
13303                    _("DW_AT_byte_size for array type smaller "
13304                      "than the total size of elements"));
13305     }
13306
13307   name = dwarf2_name (die, cu);
13308   if (name)
13309     TYPE_NAME (type) = name;
13310
13311   /* Install the type in the die.  */
13312   set_die_type (die, type, cu);
13313
13314   /* set_die_type should be already done.  */
13315   set_descriptive_type (type, die, cu);
13316
13317   do_cleanups (back_to);
13318
13319   return type;
13320 }
13321
13322 static enum dwarf_array_dim_ordering
13323 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
13324 {
13325   struct attribute *attr;
13326
13327   attr = dwarf2_attr (die, DW_AT_ordering, cu);
13328
13329   if (attr) return DW_SND (attr);
13330
13331   /* GNU F77 is a special case, as at 08/2004 array type info is the
13332      opposite order to the dwarf2 specification, but data is still
13333      laid out as per normal fortran.
13334
13335      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
13336      version checking.  */
13337
13338   if (cu->language == language_fortran
13339       && cu->producer && strstr (cu->producer, "GNU F77"))
13340     {
13341       return DW_ORD_row_major;
13342     }
13343
13344   switch (cu->language_defn->la_array_ordering)
13345     {
13346     case array_column_major:
13347       return DW_ORD_col_major;
13348     case array_row_major:
13349     default:
13350       return DW_ORD_row_major;
13351     };
13352 }
13353
13354 /* Extract all information from a DW_TAG_set_type DIE and put it in
13355    the DIE's type field.  */
13356
13357 static struct type *
13358 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
13359 {
13360   struct type *domain_type, *set_type;
13361   struct attribute *attr;
13362
13363   domain_type = die_type (die, cu);
13364
13365   /* The die_type call above may have already set the type for this DIE.  */
13366   set_type = get_die_type (die, cu);
13367   if (set_type)
13368     return set_type;
13369
13370   set_type = create_set_type (NULL, domain_type);
13371
13372   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13373   if (attr)
13374     TYPE_LENGTH (set_type) = DW_UNSND (attr);
13375
13376   return set_die_type (die, set_type, cu);
13377 }
13378
13379 /* A helper for read_common_block that creates a locexpr baton.
13380    SYM is the symbol which we are marking as computed.
13381    COMMON_DIE is the DIE for the common block.
13382    COMMON_LOC is the location expression attribute for the common
13383    block itself.
13384    MEMBER_LOC is the location expression attribute for the particular
13385    member of the common block that we are processing.
13386    CU is the CU from which the above come.  */
13387
13388 static void
13389 mark_common_block_symbol_computed (struct symbol *sym,
13390                                    struct die_info *common_die,
13391                                    struct attribute *common_loc,
13392                                    struct attribute *member_loc,
13393                                    struct dwarf2_cu *cu)
13394 {
13395   struct objfile *objfile = dwarf2_per_objfile->objfile;
13396   struct dwarf2_locexpr_baton *baton;
13397   gdb_byte *ptr;
13398   unsigned int cu_off;
13399   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
13400   LONGEST offset = 0;
13401
13402   gdb_assert (common_loc && member_loc);
13403   gdb_assert (attr_form_is_block (common_loc));
13404   gdb_assert (attr_form_is_block (member_loc)
13405               || attr_form_is_constant (member_loc));
13406
13407   baton = obstack_alloc (&objfile->objfile_obstack,
13408                          sizeof (struct dwarf2_locexpr_baton));
13409   baton->per_cu = cu->per_cu;
13410   gdb_assert (baton->per_cu);
13411
13412   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
13413
13414   if (attr_form_is_constant (member_loc))
13415     {
13416       offset = dwarf2_get_attr_constant_value (member_loc, 0);
13417       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
13418     }
13419   else
13420     baton->size += DW_BLOCK (member_loc)->size;
13421
13422   ptr = obstack_alloc (&objfile->objfile_obstack, baton->size);
13423   baton->data = ptr;
13424
13425   *ptr++ = DW_OP_call4;
13426   cu_off = common_die->offset.sect_off - cu->per_cu->offset.sect_off;
13427   store_unsigned_integer (ptr, 4, byte_order, cu_off);
13428   ptr += 4;
13429
13430   if (attr_form_is_constant (member_loc))
13431     {
13432       *ptr++ = DW_OP_addr;
13433       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
13434       ptr += cu->header.addr_size;
13435     }
13436   else
13437     {
13438       /* We have to copy the data here, because DW_OP_call4 will only
13439          use a DW_AT_location attribute.  */
13440       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
13441       ptr += DW_BLOCK (member_loc)->size;
13442     }
13443
13444   *ptr++ = DW_OP_plus;
13445   gdb_assert (ptr - baton->data == baton->size);
13446
13447   SYMBOL_LOCATION_BATON (sym) = baton;
13448   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
13449 }
13450
13451 /* Create appropriate locally-scoped variables for all the
13452    DW_TAG_common_block entries.  Also create a struct common_block
13453    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
13454    is used to sepate the common blocks name namespace from regular
13455    variable names.  */
13456
13457 static void
13458 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
13459 {
13460   struct attribute *attr;
13461
13462   attr = dwarf2_attr (die, DW_AT_location, cu);
13463   if (attr)
13464     {
13465       /* Support the .debug_loc offsets.  */
13466       if (attr_form_is_block (attr))
13467         {
13468           /* Ok.  */
13469         }
13470       else if (attr_form_is_section_offset (attr))
13471         {
13472           dwarf2_complex_location_expr_complaint ();
13473           attr = NULL;
13474         }
13475       else
13476         {
13477           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
13478                                                  "common block member");
13479           attr = NULL;
13480         }
13481     }
13482
13483   if (die->child != NULL)
13484     {
13485       struct objfile *objfile = cu->objfile;
13486       struct die_info *child_die;
13487       size_t n_entries = 0, size;
13488       struct common_block *common_block;
13489       struct symbol *sym;
13490
13491       for (child_die = die->child;
13492            child_die && child_die->tag;
13493            child_die = sibling_die (child_die))
13494         ++n_entries;
13495
13496       size = (sizeof (struct common_block)
13497               + (n_entries - 1) * sizeof (struct symbol *));
13498       common_block = obstack_alloc (&objfile->objfile_obstack, size);
13499       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
13500       common_block->n_entries = 0;
13501
13502       for (child_die = die->child;
13503            child_die && child_die->tag;
13504            child_die = sibling_die (child_die))
13505         {
13506           /* Create the symbol in the DW_TAG_common_block block in the current
13507              symbol scope.  */
13508           sym = new_symbol (child_die, NULL, cu);
13509           if (sym != NULL)
13510             {
13511               struct attribute *member_loc;
13512
13513               common_block->contents[common_block->n_entries++] = sym;
13514
13515               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
13516                                         cu);
13517               if (member_loc)
13518                 {
13519                   /* GDB has handled this for a long time, but it is
13520                      not specified by DWARF.  It seems to have been
13521                      emitted by gfortran at least as recently as:
13522                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
13523                   complaint (&symfile_complaints,
13524                              _("Variable in common block has "
13525                                "DW_AT_data_member_location "
13526                                "- DIE at 0x%x [in module %s]"),
13527                              child_die->offset.sect_off,
13528                              objfile_name (cu->objfile));
13529
13530                   if (attr_form_is_section_offset (member_loc))
13531                     dwarf2_complex_location_expr_complaint ();
13532                   else if (attr_form_is_constant (member_loc)
13533                            || attr_form_is_block (member_loc))
13534                     {
13535                       if (attr)
13536                         mark_common_block_symbol_computed (sym, die, attr,
13537                                                            member_loc, cu);
13538                     }
13539                   else
13540                     dwarf2_complex_location_expr_complaint ();
13541                 }
13542             }
13543         }
13544
13545       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
13546       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
13547     }
13548 }
13549
13550 /* Create a type for a C++ namespace.  */
13551
13552 static struct type *
13553 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
13554 {
13555   struct objfile *objfile = cu->objfile;
13556   const char *previous_prefix, *name;
13557   int is_anonymous;
13558   struct type *type;
13559
13560   /* For extensions, reuse the type of the original namespace.  */
13561   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
13562     {
13563       struct die_info *ext_die;
13564       struct dwarf2_cu *ext_cu = cu;
13565
13566       ext_die = dwarf2_extension (die, &ext_cu);
13567       type = read_type_die (ext_die, ext_cu);
13568
13569       /* EXT_CU may not be the same as CU.
13570          Ensure TYPE is recorded with CU in die_type_hash.  */
13571       return set_die_type (die, type, cu);
13572     }
13573
13574   name = namespace_name (die, &is_anonymous, cu);
13575
13576   /* Now build the name of the current namespace.  */
13577
13578   previous_prefix = determine_prefix (die, cu);
13579   if (previous_prefix[0] != '\0')
13580     name = typename_concat (&objfile->objfile_obstack,
13581                             previous_prefix, name, 0, cu);
13582
13583   /* Create the type.  */
13584   type = init_type (TYPE_CODE_NAMESPACE, 0, 0, NULL,
13585                     objfile);
13586   TYPE_NAME (type) = name;
13587   TYPE_TAG_NAME (type) = TYPE_NAME (type);
13588
13589   return set_die_type (die, type, cu);
13590 }
13591
13592 /* Read a C++ namespace.  */
13593
13594 static void
13595 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
13596 {
13597   struct objfile *objfile = cu->objfile;
13598   int is_anonymous;
13599
13600   /* Add a symbol associated to this if we haven't seen the namespace
13601      before.  Also, add a using directive if it's an anonymous
13602      namespace.  */
13603
13604   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
13605     {
13606       struct type *type;
13607
13608       type = read_type_die (die, cu);
13609       new_symbol (die, type, cu);
13610
13611       namespace_name (die, &is_anonymous, cu);
13612       if (is_anonymous)
13613         {
13614           const char *previous_prefix = determine_prefix (die, cu);
13615
13616           cp_add_using_directive (previous_prefix, TYPE_NAME (type), NULL,
13617                                   NULL, NULL, 0, &objfile->objfile_obstack);
13618         }
13619     }
13620
13621   if (die->child != NULL)
13622     {
13623       struct die_info *child_die = die->child;
13624
13625       while (child_die && child_die->tag)
13626         {
13627           process_die (child_die, cu);
13628           child_die = sibling_die (child_die);
13629         }
13630     }
13631 }
13632
13633 /* Read a Fortran module as type.  This DIE can be only a declaration used for
13634    imported module.  Still we need that type as local Fortran "use ... only"
13635    declaration imports depend on the created type in determine_prefix.  */
13636
13637 static struct type *
13638 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
13639 {
13640   struct objfile *objfile = cu->objfile;
13641   const char *module_name;
13642   struct type *type;
13643
13644   module_name = dwarf2_name (die, cu);
13645   if (!module_name)
13646     complaint (&symfile_complaints,
13647                _("DW_TAG_module has no name, offset 0x%x"),
13648                die->offset.sect_off);
13649   type = init_type (TYPE_CODE_MODULE, 0, 0, module_name, objfile);
13650
13651   /* determine_prefix uses TYPE_TAG_NAME.  */
13652   TYPE_TAG_NAME (type) = TYPE_NAME (type);
13653
13654   return set_die_type (die, type, cu);
13655 }
13656
13657 /* Read a Fortran module.  */
13658
13659 static void
13660 read_module (struct die_info *die, struct dwarf2_cu *cu)
13661 {
13662   struct die_info *child_die = die->child;
13663
13664   while (child_die && child_die->tag)
13665     {
13666       process_die (child_die, cu);
13667       child_die = sibling_die (child_die);
13668     }
13669 }
13670
13671 /* Return the name of the namespace represented by DIE.  Set
13672    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
13673    namespace.  */
13674
13675 static const char *
13676 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
13677 {
13678   struct die_info *current_die;
13679   const char *name = NULL;
13680
13681   /* Loop through the extensions until we find a name.  */
13682
13683   for (current_die = die;
13684        current_die != NULL;
13685        current_die = dwarf2_extension (die, &cu))
13686     {
13687       name = dwarf2_name (current_die, cu);
13688       if (name != NULL)
13689         break;
13690     }
13691
13692   /* Is it an anonymous namespace?  */
13693
13694   *is_anonymous = (name == NULL);
13695   if (*is_anonymous)
13696     name = CP_ANONYMOUS_NAMESPACE_STR;
13697
13698   return name;
13699 }
13700
13701 /* Extract all information from a DW_TAG_pointer_type DIE and add to
13702    the user defined type vector.  */
13703
13704 static struct type *
13705 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
13706 {
13707   struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
13708   struct comp_unit_head *cu_header = &cu->header;
13709   struct type *type;
13710   struct attribute *attr_byte_size;
13711   struct attribute *attr_address_class;
13712   int byte_size, addr_class;
13713   struct type *target_type;
13714
13715   target_type = die_type (die, cu);
13716
13717   /* The die_type call above may have already set the type for this DIE.  */
13718   type = get_die_type (die, cu);
13719   if (type)
13720     return type;
13721
13722   type = lookup_pointer_type (target_type);
13723
13724   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
13725   if (attr_byte_size)
13726     byte_size = DW_UNSND (attr_byte_size);
13727   else
13728     byte_size = cu_header->addr_size;
13729
13730   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
13731   if (attr_address_class)
13732     addr_class = DW_UNSND (attr_address_class);
13733   else
13734     addr_class = DW_ADDR_none;
13735
13736   /* If the pointer size or address class is different than the
13737      default, create a type variant marked as such and set the
13738      length accordingly.  */
13739   if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
13740     {
13741       if (gdbarch_address_class_type_flags_p (gdbarch))
13742         {
13743           int type_flags;
13744
13745           type_flags = gdbarch_address_class_type_flags
13746                          (gdbarch, byte_size, addr_class);
13747           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
13748                       == 0);
13749           type = make_type_with_address_space (type, type_flags);
13750         }
13751       else if (TYPE_LENGTH (type) != byte_size)
13752         {
13753           complaint (&symfile_complaints,
13754                      _("invalid pointer size %d"), byte_size);
13755         }
13756       else
13757         {
13758           /* Should we also complain about unhandled address classes?  */
13759         }
13760     }
13761
13762   TYPE_LENGTH (type) = byte_size;
13763   return set_die_type (die, type, cu);
13764 }
13765
13766 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
13767    the user defined type vector.  */
13768
13769 static struct type *
13770 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
13771 {
13772   struct type *type;
13773   struct type *to_type;
13774   struct type *domain;
13775
13776   to_type = die_type (die, cu);
13777   domain = die_containing_type (die, cu);
13778
13779   /* The calls above may have already set the type for this DIE.  */
13780   type = get_die_type (die, cu);
13781   if (type)
13782     return type;
13783
13784   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
13785     type = lookup_methodptr_type (to_type);
13786   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
13787     {
13788       struct type *new_type = alloc_type (cu->objfile);
13789
13790       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
13791                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
13792                             TYPE_VARARGS (to_type));
13793       type = lookup_methodptr_type (new_type);
13794     }
13795   else
13796     type = lookup_memberptr_type (to_type, domain);
13797
13798   return set_die_type (die, type, cu);
13799 }
13800
13801 /* Extract all information from a DW_TAG_reference_type DIE and add to
13802    the user defined type vector.  */
13803
13804 static struct type *
13805 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
13806 {
13807   struct comp_unit_head *cu_header = &cu->header;
13808   struct type *type, *target_type;
13809   struct attribute *attr;
13810
13811   target_type = die_type (die, cu);
13812
13813   /* The die_type call above may have already set the type for this DIE.  */
13814   type = get_die_type (die, cu);
13815   if (type)
13816     return type;
13817
13818   type = lookup_reference_type (target_type);
13819   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13820   if (attr)
13821     {
13822       TYPE_LENGTH (type) = DW_UNSND (attr);
13823     }
13824   else
13825     {
13826       TYPE_LENGTH (type) = cu_header->addr_size;
13827     }
13828   return set_die_type (die, type, cu);
13829 }
13830
13831 static struct type *
13832 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
13833 {
13834   struct type *base_type, *cv_type;
13835
13836   base_type = die_type (die, cu);
13837
13838   /* The die_type call above may have already set the type for this DIE.  */
13839   cv_type = get_die_type (die, cu);
13840   if (cv_type)
13841     return cv_type;
13842
13843   /* In case the const qualifier is applied to an array type, the element type
13844      is so qualified, not the array type (section 6.7.3 of C99).  */
13845   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
13846     {
13847       struct type *el_type, *inner_array;
13848
13849       base_type = copy_type (base_type);
13850       inner_array = base_type;
13851
13852       while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
13853         {
13854           TYPE_TARGET_TYPE (inner_array) =
13855             copy_type (TYPE_TARGET_TYPE (inner_array));
13856           inner_array = TYPE_TARGET_TYPE (inner_array);
13857         }
13858
13859       el_type = TYPE_TARGET_TYPE (inner_array);
13860       TYPE_TARGET_TYPE (inner_array) =
13861         make_cv_type (1, TYPE_VOLATILE (el_type), el_type, NULL);
13862
13863       return set_die_type (die, base_type, cu);
13864     }
13865
13866   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
13867   return set_die_type (die, cv_type, cu);
13868 }
13869
13870 static struct type *
13871 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
13872 {
13873   struct type *base_type, *cv_type;
13874
13875   base_type = die_type (die, cu);
13876
13877   /* The die_type call above may have already set the type for this DIE.  */
13878   cv_type = get_die_type (die, cu);
13879   if (cv_type)
13880     return cv_type;
13881
13882   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
13883   return set_die_type (die, cv_type, cu);
13884 }
13885
13886 /* Handle DW_TAG_restrict_type.  */
13887
13888 static struct type *
13889 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
13890 {
13891   struct type *base_type, *cv_type;
13892
13893   base_type = die_type (die, cu);
13894
13895   /* The die_type call above may have already set the type for this DIE.  */
13896   cv_type = get_die_type (die, cu);
13897   if (cv_type)
13898     return cv_type;
13899
13900   cv_type = make_restrict_type (base_type);
13901   return set_die_type (die, cv_type, cu);
13902 }
13903
13904 /* Extract all information from a DW_TAG_string_type DIE and add to
13905    the user defined type vector.  It isn't really a user defined type,
13906    but it behaves like one, with other DIE's using an AT_user_def_type
13907    attribute to reference it.  */
13908
13909 static struct type *
13910 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
13911 {
13912   struct objfile *objfile = cu->objfile;
13913   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13914   struct type *type, *range_type, *index_type, *char_type;
13915   struct attribute *attr;
13916   unsigned int length;
13917
13918   attr = dwarf2_attr (die, DW_AT_string_length, cu);
13919   if (attr)
13920     {
13921       length = DW_UNSND (attr);
13922     }
13923   else
13924     {
13925       /* Check for the DW_AT_byte_size attribute.  */
13926       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13927       if (attr)
13928         {
13929           length = DW_UNSND (attr);
13930         }
13931       else
13932         {
13933           length = 1;
13934         }
13935     }
13936
13937   index_type = objfile_type (objfile)->builtin_int;
13938   range_type = create_range_type (NULL, index_type, 1, length);
13939   char_type = language_string_char_type (cu->language_defn, gdbarch);
13940   type = create_string_type (NULL, char_type, range_type);
13941
13942   return set_die_type (die, type, cu);
13943 }
13944
13945 /* Assuming that DIE corresponds to a function, returns nonzero
13946    if the function is prototyped.  */
13947
13948 static int
13949 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
13950 {
13951   struct attribute *attr;
13952
13953   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
13954   if (attr && (DW_UNSND (attr) != 0))
13955     return 1;
13956
13957   /* The DWARF standard implies that the DW_AT_prototyped attribute
13958      is only meaninful for C, but the concept also extends to other
13959      languages that allow unprototyped functions (Eg: Objective C).
13960      For all other languages, assume that functions are always
13961      prototyped.  */
13962   if (cu->language != language_c
13963       && cu->language != language_objc
13964       && cu->language != language_opencl)
13965     return 1;
13966
13967   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
13968      prototyped and unprototyped functions; default to prototyped,
13969      since that is more common in modern code (and RealView warns
13970      about unprototyped functions).  */
13971   if (producer_is_realview (cu->producer))
13972     return 1;
13973
13974   return 0;
13975 }
13976
13977 /* Handle DIES due to C code like:
13978
13979    struct foo
13980    {
13981    int (*funcp)(int a, long l);
13982    int b;
13983    };
13984
13985    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
13986
13987 static struct type *
13988 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
13989 {
13990   struct objfile *objfile = cu->objfile;
13991   struct type *type;            /* Type that this function returns.  */
13992   struct type *ftype;           /* Function that returns above type.  */
13993   struct attribute *attr;
13994
13995   type = die_type (die, cu);
13996
13997   /* The die_type call above may have already set the type for this DIE.  */
13998   ftype = get_die_type (die, cu);
13999   if (ftype)
14000     return ftype;
14001
14002   ftype = lookup_function_type (type);
14003
14004   if (prototyped_function_p (die, cu))
14005     TYPE_PROTOTYPED (ftype) = 1;
14006
14007   /* Store the calling convention in the type if it's available in
14008      the subroutine die.  Otherwise set the calling convention to
14009      the default value DW_CC_normal.  */
14010   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
14011   if (attr)
14012     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
14013   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
14014     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
14015   else
14016     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
14017
14018   /* We need to add the subroutine type to the die immediately so
14019      we don't infinitely recurse when dealing with parameters
14020      declared as the same subroutine type.  */
14021   set_die_type (die, ftype, cu);
14022
14023   if (die->child != NULL)
14024     {
14025       struct type *void_type = objfile_type (objfile)->builtin_void;
14026       struct die_info *child_die;
14027       int nparams, iparams;
14028
14029       /* Count the number of parameters.
14030          FIXME: GDB currently ignores vararg functions, but knows about
14031          vararg member functions.  */
14032       nparams = 0;
14033       child_die = die->child;
14034       while (child_die && child_die->tag)
14035         {
14036           if (child_die->tag == DW_TAG_formal_parameter)
14037             nparams++;
14038           else if (child_die->tag == DW_TAG_unspecified_parameters)
14039             TYPE_VARARGS (ftype) = 1;
14040           child_die = sibling_die (child_die);
14041         }
14042
14043       /* Allocate storage for parameters and fill them in.  */
14044       TYPE_NFIELDS (ftype) = nparams;
14045       TYPE_FIELDS (ftype) = (struct field *)
14046         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
14047
14048       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
14049          even if we error out during the parameters reading below.  */
14050       for (iparams = 0; iparams < nparams; iparams++)
14051         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
14052
14053       iparams = 0;
14054       child_die = die->child;
14055       while (child_die && child_die->tag)
14056         {
14057           if (child_die->tag == DW_TAG_formal_parameter)
14058             {
14059               struct type *arg_type;
14060
14061               /* DWARF version 2 has no clean way to discern C++
14062                  static and non-static member functions.  G++ helps
14063                  GDB by marking the first parameter for non-static
14064                  member functions (which is the this pointer) as
14065                  artificial.  We pass this information to
14066                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
14067
14068                  DWARF version 3 added DW_AT_object_pointer, which GCC
14069                  4.5 does not yet generate.  */
14070               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
14071               if (attr)
14072                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
14073               else
14074                 {
14075                   TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
14076
14077                   /* GCC/43521: In java, the formal parameter
14078                      "this" is sometimes not marked with DW_AT_artificial.  */
14079                   if (cu->language == language_java)
14080                     {
14081                       const char *name = dwarf2_name (child_die, cu);
14082
14083                       if (name && !strcmp (name, "this"))
14084                         TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 1;
14085                     }
14086                 }
14087               arg_type = die_type (child_die, cu);
14088
14089               /* RealView does not mark THIS as const, which the testsuite
14090                  expects.  GCC marks THIS as const in method definitions,
14091                  but not in the class specifications (GCC PR 43053).  */
14092               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
14093                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
14094                 {
14095                   int is_this = 0;
14096                   struct dwarf2_cu *arg_cu = cu;
14097                   const char *name = dwarf2_name (child_die, cu);
14098
14099                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
14100                   if (attr)
14101                     {
14102                       /* If the compiler emits this, use it.  */
14103                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
14104                         is_this = 1;
14105                     }
14106                   else if (name && strcmp (name, "this") == 0)
14107                     /* Function definitions will have the argument names.  */
14108                     is_this = 1;
14109                   else if (name == NULL && iparams == 0)
14110                     /* Declarations may not have the names, so like
14111                        elsewhere in GDB, assume an artificial first
14112                        argument is "this".  */
14113                     is_this = 1;
14114
14115                   if (is_this)
14116                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
14117                                              arg_type, 0);
14118                 }
14119
14120               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
14121               iparams++;
14122             }
14123           child_die = sibling_die (child_die);
14124         }
14125     }
14126
14127   return ftype;
14128 }
14129
14130 static struct type *
14131 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
14132 {
14133   struct objfile *objfile = cu->objfile;
14134   const char *name = NULL;
14135   struct type *this_type, *target_type;
14136
14137   name = dwarf2_full_name (NULL, die, cu);
14138   this_type = init_type (TYPE_CODE_TYPEDEF, 0,
14139                          TYPE_FLAG_TARGET_STUB, NULL, objfile);
14140   TYPE_NAME (this_type) = name;
14141   set_die_type (die, this_type, cu);
14142   target_type = die_type (die, cu);
14143   if (target_type != this_type)
14144     TYPE_TARGET_TYPE (this_type) = target_type;
14145   else
14146     {
14147       /* Self-referential typedefs are, it seems, not allowed by the DWARF
14148          spec and cause infinite loops in GDB.  */
14149       complaint (&symfile_complaints,
14150                  _("Self-referential DW_TAG_typedef "
14151                    "- DIE at 0x%x [in module %s]"),
14152                  die->offset.sect_off, objfile_name (objfile));
14153       TYPE_TARGET_TYPE (this_type) = NULL;
14154     }
14155   return this_type;
14156 }
14157
14158 /* Find a representation of a given base type and install
14159    it in the TYPE field of the die.  */
14160
14161 static struct type *
14162 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
14163 {
14164   struct objfile *objfile = cu->objfile;
14165   struct type *type;
14166   struct attribute *attr;
14167   int encoding = 0, size = 0;
14168   const char *name;
14169   enum type_code code = TYPE_CODE_INT;
14170   int type_flags = 0;
14171   struct type *target_type = NULL;
14172
14173   attr = dwarf2_attr (die, DW_AT_encoding, cu);
14174   if (attr)
14175     {
14176       encoding = DW_UNSND (attr);
14177     }
14178   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14179   if (attr)
14180     {
14181       size = DW_UNSND (attr);
14182     }
14183   name = dwarf2_name (die, cu);
14184   if (!name)
14185     {
14186       complaint (&symfile_complaints,
14187                  _("DW_AT_name missing from DW_TAG_base_type"));
14188     }
14189
14190   switch (encoding)
14191     {
14192       case DW_ATE_address:
14193         /* Turn DW_ATE_address into a void * pointer.  */
14194         code = TYPE_CODE_PTR;
14195         type_flags |= TYPE_FLAG_UNSIGNED;
14196         target_type = init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
14197         break;
14198       case DW_ATE_boolean:
14199         code = TYPE_CODE_BOOL;
14200         type_flags |= TYPE_FLAG_UNSIGNED;
14201         break;
14202       case DW_ATE_complex_float:
14203         code = TYPE_CODE_COMPLEX;
14204         target_type = init_type (TYPE_CODE_FLT, size / 2, 0, NULL, objfile);
14205         break;
14206       case DW_ATE_decimal_float:
14207         code = TYPE_CODE_DECFLOAT;
14208         break;
14209       case DW_ATE_float:
14210         code = TYPE_CODE_FLT;
14211         break;
14212       case DW_ATE_signed:
14213         break;
14214       case DW_ATE_unsigned:
14215         type_flags |= TYPE_FLAG_UNSIGNED;
14216         if (cu->language == language_fortran
14217             && name
14218             && strncmp (name, "character(", sizeof ("character(") - 1) == 0)
14219           code = TYPE_CODE_CHAR;
14220         break;
14221       case DW_ATE_signed_char:
14222         if (cu->language == language_ada || cu->language == language_m2
14223             || cu->language == language_pascal
14224             || cu->language == language_fortran)
14225           code = TYPE_CODE_CHAR;
14226         break;
14227       case DW_ATE_unsigned_char:
14228         if (cu->language == language_ada || cu->language == language_m2
14229             || cu->language == language_pascal
14230             || cu->language == language_fortran)
14231           code = TYPE_CODE_CHAR;
14232         type_flags |= TYPE_FLAG_UNSIGNED;
14233         break;
14234       case DW_ATE_UTF:
14235         /* We just treat this as an integer and then recognize the
14236            type by name elsewhere.  */
14237         break;
14238
14239       default:
14240         complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
14241                    dwarf_type_encoding_name (encoding));
14242         break;
14243     }
14244
14245   type = init_type (code, size, type_flags, NULL, objfile);
14246   TYPE_NAME (type) = name;
14247   TYPE_TARGET_TYPE (type) = target_type;
14248
14249   if (name && strcmp (name, "char") == 0)
14250     TYPE_NOSIGN (type) = 1;
14251
14252   return set_die_type (die, type, cu);
14253 }
14254
14255 /* Read the given DW_AT_subrange DIE.  */
14256
14257 static struct type *
14258 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
14259 {
14260   struct type *base_type, *orig_base_type;
14261   struct type *range_type;
14262   struct attribute *attr;
14263   LONGEST low, high;
14264   int low_default_is_valid;
14265   const char *name;
14266   LONGEST negative_mask;
14267
14268   orig_base_type = die_type (die, cu);
14269   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
14270      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
14271      creating the range type, but we use the result of check_typedef
14272      when examining properties of the type.  */
14273   base_type = check_typedef (orig_base_type);
14274
14275   /* The die_type call above may have already set the type for this DIE.  */
14276   range_type = get_die_type (die, cu);
14277   if (range_type)
14278     return range_type;
14279
14280   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
14281      omitting DW_AT_lower_bound.  */
14282   switch (cu->language)
14283     {
14284     case language_c:
14285     case language_cplus:
14286       low = 0;
14287       low_default_is_valid = 1;
14288       break;
14289     case language_fortran:
14290       low = 1;
14291       low_default_is_valid = 1;
14292       break;
14293     case language_d:
14294     case language_java:
14295     case language_objc:
14296       low = 0;
14297       low_default_is_valid = (cu->header.version >= 4);
14298       break;
14299     case language_ada:
14300     case language_m2:
14301     case language_pascal:
14302       low = 1;
14303       low_default_is_valid = (cu->header.version >= 4);
14304       break;
14305     default:
14306       low = 0;
14307       low_default_is_valid = 0;
14308       break;
14309     }
14310
14311   /* FIXME: For variable sized arrays either of these could be
14312      a variable rather than a constant value.  We'll allow it,
14313      but we don't know how to handle it.  */
14314   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
14315   if (attr)
14316     low = dwarf2_get_attr_constant_value (attr, low);
14317   else if (!low_default_is_valid)
14318     complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
14319                                       "- DIE at 0x%x [in module %s]"),
14320                die->offset.sect_off, objfile_name (cu->objfile));
14321
14322   attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
14323   if (attr)
14324     {
14325       if (attr_form_is_block (attr) || attr_form_is_ref (attr))
14326         {
14327           /* GCC encodes arrays with unspecified or dynamic length
14328              with a DW_FORM_block1 attribute or a reference attribute.
14329              FIXME: GDB does not yet know how to handle dynamic
14330              arrays properly, treat them as arrays with unspecified
14331              length for now.
14332
14333              FIXME: jimb/2003-09-22: GDB does not really know
14334              how to handle arrays of unspecified length
14335              either; we just represent them as zero-length
14336              arrays.  Choose an appropriate upper bound given
14337              the lower bound we've computed above.  */
14338           high = low - 1;
14339         }
14340       else
14341         high = dwarf2_get_attr_constant_value (attr, 1);
14342     }
14343   else
14344     {
14345       attr = dwarf2_attr (die, DW_AT_count, cu);
14346       if (attr)
14347         {
14348           int count = dwarf2_get_attr_constant_value (attr, 1);
14349           high = low + count - 1;
14350         }
14351       else
14352         {
14353           /* Unspecified array length.  */
14354           high = low - 1;
14355         }
14356     }
14357
14358   /* Dwarf-2 specifications explicitly allows to create subrange types
14359      without specifying a base type.
14360      In that case, the base type must be set to the type of
14361      the lower bound, upper bound or count, in that order, if any of these
14362      three attributes references an object that has a type.
14363      If no base type is found, the Dwarf-2 specifications say that
14364      a signed integer type of size equal to the size of an address should
14365      be used.
14366      For the following C code: `extern char gdb_int [];'
14367      GCC produces an empty range DIE.
14368      FIXME: muller/2010-05-28: Possible references to object for low bound,
14369      high bound or count are not yet handled by this code.  */
14370   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
14371     {
14372       struct objfile *objfile = cu->objfile;
14373       struct gdbarch *gdbarch = get_objfile_arch (objfile);
14374       int addr_size = gdbarch_addr_bit (gdbarch) /8;
14375       struct type *int_type = objfile_type (objfile)->builtin_int;
14376
14377       /* Test "int", "long int", and "long long int" objfile types,
14378          and select the first one having a size above or equal to the
14379          architecture address size.  */
14380       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14381         base_type = int_type;
14382       else
14383         {
14384           int_type = objfile_type (objfile)->builtin_long;
14385           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14386             base_type = int_type;
14387           else
14388             {
14389               int_type = objfile_type (objfile)->builtin_long_long;
14390               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14391                 base_type = int_type;
14392             }
14393         }
14394     }
14395
14396   negative_mask =
14397     (LONGEST) -1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1);
14398   if (!TYPE_UNSIGNED (base_type) && (low & negative_mask))
14399     low |= negative_mask;
14400   if (!TYPE_UNSIGNED (base_type) && (high & negative_mask))
14401     high |= negative_mask;
14402
14403   range_type = create_range_type (NULL, orig_base_type, low, high);
14404
14405   /* Mark arrays with dynamic length at least as an array of unspecified
14406      length.  GDB could check the boundary but before it gets implemented at
14407      least allow accessing the array elements.  */
14408   if (attr && attr_form_is_block (attr))
14409     TYPE_HIGH_BOUND_UNDEFINED (range_type) = 1;
14410
14411   /* Ada expects an empty array on no boundary attributes.  */
14412   if (attr == NULL && cu->language != language_ada)
14413     TYPE_HIGH_BOUND_UNDEFINED (range_type) = 1;
14414
14415   name = dwarf2_name (die, cu);
14416   if (name)
14417     TYPE_NAME (range_type) = name;
14418
14419   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14420   if (attr)
14421     TYPE_LENGTH (range_type) = DW_UNSND (attr);
14422
14423   set_die_type (die, range_type, cu);
14424
14425   /* set_die_type should be already done.  */
14426   set_descriptive_type (range_type, die, cu);
14427
14428   return range_type;
14429 }
14430
14431 static struct type *
14432 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
14433 {
14434   struct type *type;
14435
14436   /* For now, we only support the C meaning of an unspecified type: void.  */
14437
14438   type = init_type (TYPE_CODE_VOID, 0, 0, NULL, cu->objfile);
14439   TYPE_NAME (type) = dwarf2_name (die, cu);
14440
14441   return set_die_type (die, type, cu);
14442 }
14443
14444 /* Read a single die and all its descendents.  Set the die's sibling
14445    field to NULL; set other fields in the die correctly, and set all
14446    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
14447    location of the info_ptr after reading all of those dies.  PARENT
14448    is the parent of the die in question.  */
14449
14450 static struct die_info *
14451 read_die_and_children (const struct die_reader_specs *reader,
14452                        const gdb_byte *info_ptr,
14453                        const gdb_byte **new_info_ptr,
14454                        struct die_info *parent)
14455 {
14456   struct die_info *die;
14457   const gdb_byte *cur_ptr;
14458   int has_children;
14459
14460   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
14461   if (die == NULL)
14462     {
14463       *new_info_ptr = cur_ptr;
14464       return NULL;
14465     }
14466   store_in_ref_table (die, reader->cu);
14467
14468   if (has_children)
14469     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
14470   else
14471     {
14472       die->child = NULL;
14473       *new_info_ptr = cur_ptr;
14474     }
14475
14476   die->sibling = NULL;
14477   die->parent = parent;
14478   return die;
14479 }
14480
14481 /* Read a die, all of its descendents, and all of its siblings; set
14482    all of the fields of all of the dies correctly.  Arguments are as
14483    in read_die_and_children.  */
14484
14485 static struct die_info *
14486 read_die_and_siblings_1 (const struct die_reader_specs *reader,
14487                          const gdb_byte *info_ptr,
14488                          const gdb_byte **new_info_ptr,
14489                          struct die_info *parent)
14490 {
14491   struct die_info *first_die, *last_sibling;
14492   const gdb_byte *cur_ptr;
14493
14494   cur_ptr = info_ptr;
14495   first_die = last_sibling = NULL;
14496
14497   while (1)
14498     {
14499       struct die_info *die
14500         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
14501
14502       if (die == NULL)
14503         {
14504           *new_info_ptr = cur_ptr;
14505           return first_die;
14506         }
14507
14508       if (!first_die)
14509         first_die = die;
14510       else
14511         last_sibling->sibling = die;
14512
14513       last_sibling = die;
14514     }
14515 }
14516
14517 /* Read a die, all of its descendents, and all of its siblings; set
14518    all of the fields of all of the dies correctly.  Arguments are as
14519    in read_die_and_children.
14520    This the main entry point for reading a DIE and all its children.  */
14521
14522 static struct die_info *
14523 read_die_and_siblings (const struct die_reader_specs *reader,
14524                        const gdb_byte *info_ptr,
14525                        const gdb_byte **new_info_ptr,
14526                        struct die_info *parent)
14527 {
14528   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
14529                                                   new_info_ptr, parent);
14530
14531   if (dwarf2_die_debug)
14532     {
14533       fprintf_unfiltered (gdb_stdlog,
14534                           "Read die from %s@0x%x of %s:\n",
14535                           get_section_name (reader->die_section),
14536                           (unsigned) (info_ptr - reader->die_section->buffer),
14537                           bfd_get_filename (reader->abfd));
14538       dump_die (die, dwarf2_die_debug);
14539     }
14540
14541   return die;
14542 }
14543
14544 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
14545    attributes.
14546    The caller is responsible for filling in the extra attributes
14547    and updating (*DIEP)->num_attrs.
14548    Set DIEP to point to a newly allocated die with its information,
14549    except for its child, sibling, and parent fields.
14550    Set HAS_CHILDREN to tell whether the die has children or not.  */
14551
14552 static const gdb_byte *
14553 read_full_die_1 (const struct die_reader_specs *reader,
14554                  struct die_info **diep, const gdb_byte *info_ptr,
14555                  int *has_children, int num_extra_attrs)
14556 {
14557   unsigned int abbrev_number, bytes_read, i;
14558   sect_offset offset;
14559   struct abbrev_info *abbrev;
14560   struct die_info *die;
14561   struct dwarf2_cu *cu = reader->cu;
14562   bfd *abfd = reader->abfd;
14563
14564   offset.sect_off = info_ptr - reader->buffer;
14565   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
14566   info_ptr += bytes_read;
14567   if (!abbrev_number)
14568     {
14569       *diep = NULL;
14570       *has_children = 0;
14571       return info_ptr;
14572     }
14573
14574   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
14575   if (!abbrev)
14576     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
14577            abbrev_number,
14578            bfd_get_filename (abfd));
14579
14580   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
14581   die->offset = offset;
14582   die->tag = abbrev->tag;
14583   die->abbrev = abbrev_number;
14584
14585   /* Make the result usable.
14586      The caller needs to update num_attrs after adding the extra
14587      attributes.  */
14588   die->num_attrs = abbrev->num_attrs;
14589
14590   for (i = 0; i < abbrev->num_attrs; ++i)
14591     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
14592                                info_ptr);
14593
14594   *diep = die;
14595   *has_children = abbrev->has_children;
14596   return info_ptr;
14597 }
14598
14599 /* Read a die and all its attributes.
14600    Set DIEP to point to a newly allocated die with its information,
14601    except for its child, sibling, and parent fields.
14602    Set HAS_CHILDREN to tell whether the die has children or not.  */
14603
14604 static const gdb_byte *
14605 read_full_die (const struct die_reader_specs *reader,
14606                struct die_info **diep, const gdb_byte *info_ptr,
14607                int *has_children)
14608 {
14609   const gdb_byte *result;
14610
14611   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
14612
14613   if (dwarf2_die_debug)
14614     {
14615       fprintf_unfiltered (gdb_stdlog,
14616                           "Read die from %s@0x%x of %s:\n",
14617                           get_section_name (reader->die_section),
14618                           (unsigned) (info_ptr - reader->die_section->buffer),
14619                           bfd_get_filename (reader->abfd));
14620       dump_die (*diep, dwarf2_die_debug);
14621     }
14622
14623   return result;
14624 }
14625 \f
14626 /* Abbreviation tables.
14627
14628    In DWARF version 2, the description of the debugging information is
14629    stored in a separate .debug_abbrev section.  Before we read any
14630    dies from a section we read in all abbreviations and install them
14631    in a hash table.  */
14632
14633 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
14634
14635 static struct abbrev_info *
14636 abbrev_table_alloc_abbrev (struct abbrev_table *abbrev_table)
14637 {
14638   struct abbrev_info *abbrev;
14639
14640   abbrev = (struct abbrev_info *)
14641     obstack_alloc (&abbrev_table->abbrev_obstack, sizeof (struct abbrev_info));
14642   memset (abbrev, 0, sizeof (struct abbrev_info));
14643   return abbrev;
14644 }
14645
14646 /* Add an abbreviation to the table.  */
14647
14648 static void
14649 abbrev_table_add_abbrev (struct abbrev_table *abbrev_table,
14650                          unsigned int abbrev_number,
14651                          struct abbrev_info *abbrev)
14652 {
14653   unsigned int hash_number;
14654
14655   hash_number = abbrev_number % ABBREV_HASH_SIZE;
14656   abbrev->next = abbrev_table->abbrevs[hash_number];
14657   abbrev_table->abbrevs[hash_number] = abbrev;
14658 }
14659
14660 /* Look up an abbrev in the table.
14661    Returns NULL if the abbrev is not found.  */
14662
14663 static struct abbrev_info *
14664 abbrev_table_lookup_abbrev (const struct abbrev_table *abbrev_table,
14665                             unsigned int abbrev_number)
14666 {
14667   unsigned int hash_number;
14668   struct abbrev_info *abbrev;
14669
14670   hash_number = abbrev_number % ABBREV_HASH_SIZE;
14671   abbrev = abbrev_table->abbrevs[hash_number];
14672
14673   while (abbrev)
14674     {
14675       if (abbrev->number == abbrev_number)
14676         return abbrev;
14677       abbrev = abbrev->next;
14678     }
14679   return NULL;
14680 }
14681
14682 /* Read in an abbrev table.  */
14683
14684 static struct abbrev_table *
14685 abbrev_table_read_table (struct dwarf2_section_info *section,
14686                          sect_offset offset)
14687 {
14688   struct objfile *objfile = dwarf2_per_objfile->objfile;
14689   bfd *abfd = get_section_bfd_owner (section);
14690   struct abbrev_table *abbrev_table;
14691   const gdb_byte *abbrev_ptr;
14692   struct abbrev_info *cur_abbrev;
14693   unsigned int abbrev_number, bytes_read, abbrev_name;
14694   unsigned int abbrev_form;
14695   struct attr_abbrev *cur_attrs;
14696   unsigned int allocated_attrs;
14697
14698   abbrev_table = XMALLOC (struct abbrev_table);
14699   abbrev_table->offset = offset;
14700   obstack_init (&abbrev_table->abbrev_obstack);
14701   abbrev_table->abbrevs = obstack_alloc (&abbrev_table->abbrev_obstack,
14702                                          (ABBREV_HASH_SIZE
14703                                           * sizeof (struct abbrev_info *)));
14704   memset (abbrev_table->abbrevs, 0,
14705           ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
14706
14707   dwarf2_read_section (objfile, section);
14708   abbrev_ptr = section->buffer + offset.sect_off;
14709   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14710   abbrev_ptr += bytes_read;
14711
14712   allocated_attrs = ATTR_ALLOC_CHUNK;
14713   cur_attrs = xmalloc (allocated_attrs * sizeof (struct attr_abbrev));
14714
14715   /* Loop until we reach an abbrev number of 0.  */
14716   while (abbrev_number)
14717     {
14718       cur_abbrev = abbrev_table_alloc_abbrev (abbrev_table);
14719
14720       /* read in abbrev header */
14721       cur_abbrev->number = abbrev_number;
14722       cur_abbrev->tag = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14723       abbrev_ptr += bytes_read;
14724       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
14725       abbrev_ptr += 1;
14726
14727       /* now read in declarations */
14728       abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14729       abbrev_ptr += bytes_read;
14730       abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14731       abbrev_ptr += bytes_read;
14732       while (abbrev_name)
14733         {
14734           if (cur_abbrev->num_attrs == allocated_attrs)
14735             {
14736               allocated_attrs += ATTR_ALLOC_CHUNK;
14737               cur_attrs
14738                 = xrealloc (cur_attrs, (allocated_attrs
14739                                         * sizeof (struct attr_abbrev)));
14740             }
14741
14742           cur_attrs[cur_abbrev->num_attrs].name = abbrev_name;
14743           cur_attrs[cur_abbrev->num_attrs++].form = abbrev_form;
14744           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14745           abbrev_ptr += bytes_read;
14746           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14747           abbrev_ptr += bytes_read;
14748         }
14749
14750       cur_abbrev->attrs = obstack_alloc (&abbrev_table->abbrev_obstack,
14751                                          (cur_abbrev->num_attrs
14752                                           * sizeof (struct attr_abbrev)));
14753       memcpy (cur_abbrev->attrs, cur_attrs,
14754               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
14755
14756       abbrev_table_add_abbrev (abbrev_table, abbrev_number, cur_abbrev);
14757
14758       /* Get next abbreviation.
14759          Under Irix6 the abbreviations for a compilation unit are not
14760          always properly terminated with an abbrev number of 0.
14761          Exit loop if we encounter an abbreviation which we have
14762          already read (which means we are about to read the abbreviations
14763          for the next compile unit) or if the end of the abbreviation
14764          table is reached.  */
14765       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
14766         break;
14767       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14768       abbrev_ptr += bytes_read;
14769       if (abbrev_table_lookup_abbrev (abbrev_table, abbrev_number) != NULL)
14770         break;
14771     }
14772
14773   xfree (cur_attrs);
14774   return abbrev_table;
14775 }
14776
14777 /* Free the resources held by ABBREV_TABLE.  */
14778
14779 static void
14780 abbrev_table_free (struct abbrev_table *abbrev_table)
14781 {
14782   obstack_free (&abbrev_table->abbrev_obstack, NULL);
14783   xfree (abbrev_table);
14784 }
14785
14786 /* Same as abbrev_table_free but as a cleanup.
14787    We pass in a pointer to the pointer to the table so that we can
14788    set the pointer to NULL when we're done.  It also simplifies
14789    build_type_unit_groups.  */
14790
14791 static void
14792 abbrev_table_free_cleanup (void *table_ptr)
14793 {
14794   struct abbrev_table **abbrev_table_ptr = table_ptr;
14795
14796   if (*abbrev_table_ptr != NULL)
14797     abbrev_table_free (*abbrev_table_ptr);
14798   *abbrev_table_ptr = NULL;
14799 }
14800
14801 /* Read the abbrev table for CU from ABBREV_SECTION.  */
14802
14803 static void
14804 dwarf2_read_abbrevs (struct dwarf2_cu *cu,
14805                      struct dwarf2_section_info *abbrev_section)
14806 {
14807   cu->abbrev_table =
14808     abbrev_table_read_table (abbrev_section, cu->header.abbrev_offset);
14809 }
14810
14811 /* Release the memory used by the abbrev table for a compilation unit.  */
14812
14813 static void
14814 dwarf2_free_abbrev_table (void *ptr_to_cu)
14815 {
14816   struct dwarf2_cu *cu = ptr_to_cu;
14817
14818   if (cu->abbrev_table != NULL)
14819     abbrev_table_free (cu->abbrev_table);
14820   /* Set this to NULL so that we SEGV if we try to read it later,
14821      and also because free_comp_unit verifies this is NULL.  */
14822   cu->abbrev_table = NULL;
14823 }
14824 \f
14825 /* Returns nonzero if TAG represents a type that we might generate a partial
14826    symbol for.  */
14827
14828 static int
14829 is_type_tag_for_partial (int tag)
14830 {
14831   switch (tag)
14832     {
14833 #if 0
14834     /* Some types that would be reasonable to generate partial symbols for,
14835        that we don't at present.  */
14836     case DW_TAG_array_type:
14837     case DW_TAG_file_type:
14838     case DW_TAG_ptr_to_member_type:
14839     case DW_TAG_set_type:
14840     case DW_TAG_string_type:
14841     case DW_TAG_subroutine_type:
14842 #endif
14843     case DW_TAG_base_type:
14844     case DW_TAG_class_type:
14845     case DW_TAG_interface_type:
14846     case DW_TAG_enumeration_type:
14847     case DW_TAG_structure_type:
14848     case DW_TAG_subrange_type:
14849     case DW_TAG_typedef:
14850     case DW_TAG_union_type:
14851       return 1;
14852     default:
14853       return 0;
14854     }
14855 }
14856
14857 /* Load all DIEs that are interesting for partial symbols into memory.  */
14858
14859 static struct partial_die_info *
14860 load_partial_dies (const struct die_reader_specs *reader,
14861                    const gdb_byte *info_ptr, int building_psymtab)
14862 {
14863   struct dwarf2_cu *cu = reader->cu;
14864   struct objfile *objfile = cu->objfile;
14865   struct partial_die_info *part_die;
14866   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
14867   struct abbrev_info *abbrev;
14868   unsigned int bytes_read;
14869   unsigned int load_all = 0;
14870   int nesting_level = 1;
14871
14872   parent_die = NULL;
14873   last_die = NULL;
14874
14875   gdb_assert (cu->per_cu != NULL);
14876   if (cu->per_cu->load_all_dies)
14877     load_all = 1;
14878
14879   cu->partial_dies
14880     = htab_create_alloc_ex (cu->header.length / 12,
14881                             partial_die_hash,
14882                             partial_die_eq,
14883                             NULL,
14884                             &cu->comp_unit_obstack,
14885                             hashtab_obstack_allocate,
14886                             dummy_obstack_deallocate);
14887
14888   part_die = obstack_alloc (&cu->comp_unit_obstack,
14889                             sizeof (struct partial_die_info));
14890
14891   while (1)
14892     {
14893       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
14894
14895       /* A NULL abbrev means the end of a series of children.  */
14896       if (abbrev == NULL)
14897         {
14898           if (--nesting_level == 0)
14899             {
14900               /* PART_DIE was probably the last thing allocated on the
14901                  comp_unit_obstack, so we could call obstack_free
14902                  here.  We don't do that because the waste is small,
14903                  and will be cleaned up when we're done with this
14904                  compilation unit.  This way, we're also more robust
14905                  against other users of the comp_unit_obstack.  */
14906               return first_die;
14907             }
14908           info_ptr += bytes_read;
14909           last_die = parent_die;
14910           parent_die = parent_die->die_parent;
14911           continue;
14912         }
14913
14914       /* Check for template arguments.  We never save these; if
14915          they're seen, we just mark the parent, and go on our way.  */
14916       if (parent_die != NULL
14917           && cu->language == language_cplus
14918           && (abbrev->tag == DW_TAG_template_type_param
14919               || abbrev->tag == DW_TAG_template_value_param))
14920         {
14921           parent_die->has_template_arguments = 1;
14922
14923           if (!load_all)
14924             {
14925               /* We don't need a partial DIE for the template argument.  */
14926               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
14927               continue;
14928             }
14929         }
14930
14931       /* We only recurse into c++ subprograms looking for template arguments.
14932          Skip their other children.  */
14933       if (!load_all
14934           && cu->language == language_cplus
14935           && parent_die != NULL
14936           && parent_die->tag == DW_TAG_subprogram)
14937         {
14938           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
14939           continue;
14940         }
14941
14942       /* Check whether this DIE is interesting enough to save.  Normally
14943          we would not be interested in members here, but there may be
14944          later variables referencing them via DW_AT_specification (for
14945          static members).  */
14946       if (!load_all
14947           && !is_type_tag_for_partial (abbrev->tag)
14948           && abbrev->tag != DW_TAG_constant
14949           && abbrev->tag != DW_TAG_enumerator
14950           && abbrev->tag != DW_TAG_subprogram
14951           && abbrev->tag != DW_TAG_lexical_block
14952           && abbrev->tag != DW_TAG_variable
14953           && abbrev->tag != DW_TAG_namespace
14954           && abbrev->tag != DW_TAG_module
14955           && abbrev->tag != DW_TAG_member
14956           && abbrev->tag != DW_TAG_imported_unit
14957           && abbrev->tag != DW_TAG_imported_declaration)
14958         {
14959           /* Otherwise we skip to the next sibling, if any.  */
14960           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
14961           continue;
14962         }
14963
14964       info_ptr = read_partial_die (reader, part_die, abbrev, bytes_read,
14965                                    info_ptr);
14966
14967       /* This two-pass algorithm for processing partial symbols has a
14968          high cost in cache pressure.  Thus, handle some simple cases
14969          here which cover the majority of C partial symbols.  DIEs
14970          which neither have specification tags in them, nor could have
14971          specification tags elsewhere pointing at them, can simply be
14972          processed and discarded.
14973
14974          This segment is also optional; scan_partial_symbols and
14975          add_partial_symbol will handle these DIEs if we chain
14976          them in normally.  When compilers which do not emit large
14977          quantities of duplicate debug information are more common,
14978          this code can probably be removed.  */
14979
14980       /* Any complete simple types at the top level (pretty much all
14981          of them, for a language without namespaces), can be processed
14982          directly.  */
14983       if (parent_die == NULL
14984           && part_die->has_specification == 0
14985           && part_die->is_declaration == 0
14986           && ((part_die->tag == DW_TAG_typedef && !part_die->has_children)
14987               || part_die->tag == DW_TAG_base_type
14988               || part_die->tag == DW_TAG_subrange_type))
14989         {
14990           if (building_psymtab && part_die->name != NULL)
14991             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
14992                                  VAR_DOMAIN, LOC_TYPEDEF,
14993                                  &objfile->static_psymbols,
14994                                  0, (CORE_ADDR) 0, cu->language, objfile);
14995           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
14996           continue;
14997         }
14998
14999       /* The exception for DW_TAG_typedef with has_children above is
15000          a workaround of GCC PR debug/47510.  In the case of this complaint
15001          type_name_no_tag_or_error will error on such types later.
15002
15003          GDB skipped children of DW_TAG_typedef by the shortcut above and then
15004          it could not find the child DIEs referenced later, this is checked
15005          above.  In correct DWARF DW_TAG_typedef should have no children.  */
15006
15007       if (part_die->tag == DW_TAG_typedef && part_die->has_children)
15008         complaint (&symfile_complaints,
15009                    _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
15010                      "- DIE at 0x%x [in module %s]"),
15011                    part_die->offset.sect_off, objfile_name (objfile));
15012
15013       /* If we're at the second level, and we're an enumerator, and
15014          our parent has no specification (meaning possibly lives in a
15015          namespace elsewhere), then we can add the partial symbol now
15016          instead of queueing it.  */
15017       if (part_die->tag == DW_TAG_enumerator
15018           && parent_die != NULL
15019           && parent_die->die_parent == NULL
15020           && parent_die->tag == DW_TAG_enumeration_type
15021           && parent_die->has_specification == 0)
15022         {
15023           if (part_die->name == NULL)
15024             complaint (&symfile_complaints,
15025                        _("malformed enumerator DIE ignored"));
15026           else if (building_psymtab)
15027             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
15028                                  VAR_DOMAIN, LOC_CONST,
15029                                  (cu->language == language_cplus
15030                                   || cu->language == language_java)
15031                                  ? &objfile->global_psymbols
15032                                  : &objfile->static_psymbols,
15033                                  0, (CORE_ADDR) 0, cu->language, objfile);
15034
15035           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
15036           continue;
15037         }
15038
15039       /* We'll save this DIE so link it in.  */
15040       part_die->die_parent = parent_die;
15041       part_die->die_sibling = NULL;
15042       part_die->die_child = NULL;
15043
15044       if (last_die && last_die == parent_die)
15045         last_die->die_child = part_die;
15046       else if (last_die)
15047         last_die->die_sibling = part_die;
15048
15049       last_die = part_die;
15050
15051       if (first_die == NULL)
15052         first_die = part_die;
15053
15054       /* Maybe add the DIE to the hash table.  Not all DIEs that we
15055          find interesting need to be in the hash table, because we
15056          also have the parent/sibling/child chains; only those that we
15057          might refer to by offset later during partial symbol reading.
15058
15059          For now this means things that might have be the target of a
15060          DW_AT_specification, DW_AT_abstract_origin, or
15061          DW_AT_extension.  DW_AT_extension will refer only to
15062          namespaces; DW_AT_abstract_origin refers to functions (and
15063          many things under the function DIE, but we do not recurse
15064          into function DIEs during partial symbol reading) and
15065          possibly variables as well; DW_AT_specification refers to
15066          declarations.  Declarations ought to have the DW_AT_declaration
15067          flag.  It happens that GCC forgets to put it in sometimes, but
15068          only for functions, not for types.
15069
15070          Adding more things than necessary to the hash table is harmless
15071          except for the performance cost.  Adding too few will result in
15072          wasted time in find_partial_die, when we reread the compilation
15073          unit with load_all_dies set.  */
15074
15075       if (load_all
15076           || abbrev->tag == DW_TAG_constant
15077           || abbrev->tag == DW_TAG_subprogram
15078           || abbrev->tag == DW_TAG_variable
15079           || abbrev->tag == DW_TAG_namespace
15080           || part_die->is_declaration)
15081         {
15082           void **slot;
15083
15084           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
15085                                            part_die->offset.sect_off, INSERT);
15086           *slot = part_die;
15087         }
15088
15089       part_die = obstack_alloc (&cu->comp_unit_obstack,
15090                                 sizeof (struct partial_die_info));
15091
15092       /* For some DIEs we want to follow their children (if any).  For C
15093          we have no reason to follow the children of structures; for other
15094          languages we have to, so that we can get at method physnames
15095          to infer fully qualified class names, for DW_AT_specification,
15096          and for C++ template arguments.  For C++, we also look one level
15097          inside functions to find template arguments (if the name of the
15098          function does not already contain the template arguments).
15099
15100          For Ada, we need to scan the children of subprograms and lexical
15101          blocks as well because Ada allows the definition of nested
15102          entities that could be interesting for the debugger, such as
15103          nested subprograms for instance.  */
15104       if (last_die->has_children
15105           && (load_all
15106               || last_die->tag == DW_TAG_namespace
15107               || last_die->tag == DW_TAG_module
15108               || last_die->tag == DW_TAG_enumeration_type
15109               || (cu->language == language_cplus
15110                   && last_die->tag == DW_TAG_subprogram
15111                   && (last_die->name == NULL
15112                       || strchr (last_die->name, '<') == NULL))
15113               || (cu->language != language_c
15114                   && (last_die->tag == DW_TAG_class_type
15115                       || last_die->tag == DW_TAG_interface_type
15116                       || last_die->tag == DW_TAG_structure_type
15117                       || last_die->tag == DW_TAG_union_type))
15118               || (cu->language == language_ada
15119                   && (last_die->tag == DW_TAG_subprogram
15120                       || last_die->tag == DW_TAG_lexical_block))))
15121         {
15122           nesting_level++;
15123           parent_die = last_die;
15124           continue;
15125         }
15126
15127       /* Otherwise we skip to the next sibling, if any.  */
15128       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
15129
15130       /* Back to the top, do it again.  */
15131     }
15132 }
15133
15134 /* Read a minimal amount of information into the minimal die structure.  */
15135
15136 static const gdb_byte *
15137 read_partial_die (const struct die_reader_specs *reader,
15138                   struct partial_die_info *part_die,
15139                   struct abbrev_info *abbrev, unsigned int abbrev_len,
15140                   const gdb_byte *info_ptr)
15141 {
15142   struct dwarf2_cu *cu = reader->cu;
15143   struct objfile *objfile = cu->objfile;
15144   const gdb_byte *buffer = reader->buffer;
15145   unsigned int i;
15146   struct attribute attr;
15147   int has_low_pc_attr = 0;
15148   int has_high_pc_attr = 0;
15149   int high_pc_relative = 0;
15150
15151   memset (part_die, 0, sizeof (struct partial_die_info));
15152
15153   part_die->offset.sect_off = info_ptr - buffer;
15154
15155   info_ptr += abbrev_len;
15156
15157   if (abbrev == NULL)
15158     return info_ptr;
15159
15160   part_die->tag = abbrev->tag;
15161   part_die->has_children = abbrev->has_children;
15162
15163   for (i = 0; i < abbrev->num_attrs; ++i)
15164     {
15165       info_ptr = read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
15166
15167       /* Store the data if it is of an attribute we want to keep in a
15168          partial symbol table.  */
15169       switch (attr.name)
15170         {
15171         case DW_AT_name:
15172           switch (part_die->tag)
15173             {
15174             case DW_TAG_compile_unit:
15175             case DW_TAG_partial_unit:
15176             case DW_TAG_type_unit:
15177               /* Compilation units have a DW_AT_name that is a filename, not
15178                  a source language identifier.  */
15179             case DW_TAG_enumeration_type:
15180             case DW_TAG_enumerator:
15181               /* These tags always have simple identifiers already; no need
15182                  to canonicalize them.  */
15183               part_die->name = DW_STRING (&attr);
15184               break;
15185             default:
15186               part_die->name
15187                 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
15188                                             &objfile->objfile_obstack);
15189               break;
15190             }
15191           break;
15192         case DW_AT_linkage_name:
15193         case DW_AT_MIPS_linkage_name:
15194           /* Note that both forms of linkage name might appear.  We
15195              assume they will be the same, and we only store the last
15196              one we see.  */
15197           if (cu->language == language_ada)
15198             part_die->name = DW_STRING (&attr);
15199           part_die->linkage_name = DW_STRING (&attr);
15200           break;
15201         case DW_AT_low_pc:
15202           has_low_pc_attr = 1;
15203           part_die->lowpc = DW_ADDR (&attr);
15204           break;
15205         case DW_AT_high_pc:
15206           has_high_pc_attr = 1;
15207           if (attr.form == DW_FORM_addr
15208               || attr.form == DW_FORM_GNU_addr_index)
15209             part_die->highpc = DW_ADDR (&attr);
15210           else
15211             {
15212               high_pc_relative = 1;
15213               part_die->highpc = DW_UNSND (&attr);
15214             }
15215           break;
15216         case DW_AT_location:
15217           /* Support the .debug_loc offsets.  */
15218           if (attr_form_is_block (&attr))
15219             {
15220                part_die->d.locdesc = DW_BLOCK (&attr);
15221             }
15222           else if (attr_form_is_section_offset (&attr))
15223             {
15224               dwarf2_complex_location_expr_complaint ();
15225             }
15226           else
15227             {
15228               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
15229                                                      "partial symbol information");
15230             }
15231           break;
15232         case DW_AT_external:
15233           part_die->is_external = DW_UNSND (&attr);
15234           break;
15235         case DW_AT_declaration:
15236           part_die->is_declaration = DW_UNSND (&attr);
15237           break;
15238         case DW_AT_type:
15239           part_die->has_type = 1;
15240           break;
15241         case DW_AT_abstract_origin:
15242         case DW_AT_specification:
15243         case DW_AT_extension:
15244           part_die->has_specification = 1;
15245           part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
15246           part_die->spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15247                                    || cu->per_cu->is_dwz);
15248           break;
15249         case DW_AT_sibling:
15250           /* Ignore absolute siblings, they might point outside of
15251              the current compile unit.  */
15252           if (attr.form == DW_FORM_ref_addr)
15253             complaint (&symfile_complaints,
15254                        _("ignoring absolute DW_AT_sibling"));
15255           else
15256             {
15257               unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
15258               const gdb_byte *sibling_ptr = buffer + off;
15259
15260               if (sibling_ptr < info_ptr)
15261                 complaint (&symfile_complaints,
15262                            _("DW_AT_sibling points backwards"));
15263               else
15264                 part_die->sibling = sibling_ptr;
15265             }
15266           break;
15267         case DW_AT_byte_size:
15268           part_die->has_byte_size = 1;
15269           break;
15270         case DW_AT_calling_convention:
15271           /* DWARF doesn't provide a way to identify a program's source-level
15272              entry point.  DW_AT_calling_convention attributes are only meant
15273              to describe functions' calling conventions.
15274
15275              However, because it's a necessary piece of information in
15276              Fortran, and because DW_CC_program is the only piece of debugging
15277              information whose definition refers to a 'main program' at all,
15278              several compilers have begun marking Fortran main programs with
15279              DW_CC_program --- even when those functions use the standard
15280              calling conventions.
15281
15282              So until DWARF specifies a way to provide this information and
15283              compilers pick up the new representation, we'll support this
15284              practice.  */
15285           if (DW_UNSND (&attr) == DW_CC_program
15286               && cu->language == language_fortran)
15287             {
15288               set_main_name (part_die->name);
15289
15290               /* As this DIE has a static linkage the name would be difficult
15291                  to look up later.  */
15292               language_of_main = language_fortran;
15293             }
15294           break;
15295         case DW_AT_inline:
15296           if (DW_UNSND (&attr) == DW_INL_inlined
15297               || DW_UNSND (&attr) == DW_INL_declared_inlined)
15298             part_die->may_be_inlined = 1;
15299           break;
15300
15301         case DW_AT_import:
15302           if (part_die->tag == DW_TAG_imported_unit)
15303             {
15304               part_die->d.offset = dwarf2_get_ref_die_offset (&attr);
15305               part_die->is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15306                                   || cu->per_cu->is_dwz);
15307             }
15308           break;
15309
15310         default:
15311           break;
15312         }
15313     }
15314
15315   if (high_pc_relative)
15316     part_die->highpc += part_die->lowpc;
15317
15318   if (has_low_pc_attr && has_high_pc_attr)
15319     {
15320       /* When using the GNU linker, .gnu.linkonce. sections are used to
15321          eliminate duplicate copies of functions and vtables and such.
15322          The linker will arbitrarily choose one and discard the others.
15323          The AT_*_pc values for such functions refer to local labels in
15324          these sections.  If the section from that file was discarded, the
15325          labels are not in the output, so the relocs get a value of 0.
15326          If this is a discarded function, mark the pc bounds as invalid,
15327          so that GDB will ignore it.  */
15328       if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
15329         {
15330           struct gdbarch *gdbarch = get_objfile_arch (objfile);
15331
15332           complaint (&symfile_complaints,
15333                      _("DW_AT_low_pc %s is zero "
15334                        "for DIE at 0x%x [in module %s]"),
15335                      paddress (gdbarch, part_die->lowpc),
15336                      part_die->offset.sect_off, objfile_name (objfile));
15337         }
15338       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
15339       else if (part_die->lowpc >= part_die->highpc)
15340         {
15341           struct gdbarch *gdbarch = get_objfile_arch (objfile);
15342
15343           complaint (&symfile_complaints,
15344                      _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
15345                        "for DIE at 0x%x [in module %s]"),
15346                      paddress (gdbarch, part_die->lowpc),
15347                      paddress (gdbarch, part_die->highpc),
15348                      part_die->offset.sect_off, objfile_name (objfile));
15349         }
15350       else
15351         part_die->has_pc_info = 1;
15352     }
15353
15354   return info_ptr;
15355 }
15356
15357 /* Find a cached partial DIE at OFFSET in CU.  */
15358
15359 static struct partial_die_info *
15360 find_partial_die_in_comp_unit (sect_offset offset, struct dwarf2_cu *cu)
15361 {
15362   struct partial_die_info *lookup_die = NULL;
15363   struct partial_die_info part_die;
15364
15365   part_die.offset = offset;
15366   lookup_die = htab_find_with_hash (cu->partial_dies, &part_die,
15367                                     offset.sect_off);
15368
15369   return lookup_die;
15370 }
15371
15372 /* Find a partial DIE at OFFSET, which may or may not be in CU,
15373    except in the case of .debug_types DIEs which do not reference
15374    outside their CU (they do however referencing other types via
15375    DW_FORM_ref_sig8).  */
15376
15377 static struct partial_die_info *
15378 find_partial_die (sect_offset offset, int offset_in_dwz, struct dwarf2_cu *cu)
15379 {
15380   struct objfile *objfile = cu->objfile;
15381   struct dwarf2_per_cu_data *per_cu = NULL;
15382   struct partial_die_info *pd = NULL;
15383
15384   if (offset_in_dwz == cu->per_cu->is_dwz
15385       && offset_in_cu_p (&cu->header, offset))
15386     {
15387       pd = find_partial_die_in_comp_unit (offset, cu);
15388       if (pd != NULL)
15389         return pd;
15390       /* We missed recording what we needed.
15391          Load all dies and try again.  */
15392       per_cu = cu->per_cu;
15393     }
15394   else
15395     {
15396       /* TUs don't reference other CUs/TUs (except via type signatures).  */
15397       if (cu->per_cu->is_debug_types)
15398         {
15399           error (_("Dwarf Error: Type Unit at offset 0x%lx contains"
15400                    " external reference to offset 0x%lx [in module %s].\n"),
15401                  (long) cu->header.offset.sect_off, (long) offset.sect_off,
15402                  bfd_get_filename (objfile->obfd));
15403         }
15404       per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
15405                                                  objfile);
15406
15407       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
15408         load_partial_comp_unit (per_cu);
15409
15410       per_cu->cu->last_used = 0;
15411       pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
15412     }
15413
15414   /* If we didn't find it, and not all dies have been loaded,
15415      load them all and try again.  */
15416
15417   if (pd == NULL && per_cu->load_all_dies == 0)
15418     {
15419       per_cu->load_all_dies = 1;
15420
15421       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
15422          THIS_CU->cu may already be in use.  So we can't just free it and
15423          replace its DIEs with the ones we read in.  Instead, we leave those
15424          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
15425          and clobber THIS_CU->cu->partial_dies with the hash table for the new
15426          set.  */
15427       load_partial_comp_unit (per_cu);
15428
15429       pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
15430     }
15431
15432   if (pd == NULL)
15433     internal_error (__FILE__, __LINE__,
15434                     _("could not find partial DIE 0x%x "
15435                       "in cache [from module %s]\n"),
15436                     offset.sect_off, bfd_get_filename (objfile->obfd));
15437   return pd;
15438 }
15439
15440 /* See if we can figure out if the class lives in a namespace.  We do
15441    this by looking for a member function; its demangled name will
15442    contain namespace info, if there is any.  */
15443
15444 static void
15445 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
15446                                   struct dwarf2_cu *cu)
15447 {
15448   /* NOTE: carlton/2003-10-07: Getting the info this way changes
15449      what template types look like, because the demangler
15450      frequently doesn't give the same name as the debug info.  We
15451      could fix this by only using the demangled name to get the
15452      prefix (but see comment in read_structure_type).  */
15453
15454   struct partial_die_info *real_pdi;
15455   struct partial_die_info *child_pdi;
15456
15457   /* If this DIE (this DIE's specification, if any) has a parent, then
15458      we should not do this.  We'll prepend the parent's fully qualified
15459      name when we create the partial symbol.  */
15460
15461   real_pdi = struct_pdi;
15462   while (real_pdi->has_specification)
15463     real_pdi = find_partial_die (real_pdi->spec_offset,
15464                                  real_pdi->spec_is_dwz, cu);
15465
15466   if (real_pdi->die_parent != NULL)
15467     return;
15468
15469   for (child_pdi = struct_pdi->die_child;
15470        child_pdi != NULL;
15471        child_pdi = child_pdi->die_sibling)
15472     {
15473       if (child_pdi->tag == DW_TAG_subprogram
15474           && child_pdi->linkage_name != NULL)
15475         {
15476           char *actual_class_name
15477             = language_class_name_from_physname (cu->language_defn,
15478                                                  child_pdi->linkage_name);
15479           if (actual_class_name != NULL)
15480             {
15481               struct_pdi->name
15482                 = obstack_copy0 (&cu->objfile->objfile_obstack,
15483                                  actual_class_name,
15484                                  strlen (actual_class_name));
15485               xfree (actual_class_name);
15486             }
15487           break;
15488         }
15489     }
15490 }
15491
15492 /* Adjust PART_DIE before generating a symbol for it.  This function
15493    may set the is_external flag or change the DIE's name.  */
15494
15495 static void
15496 fixup_partial_die (struct partial_die_info *part_die,
15497                    struct dwarf2_cu *cu)
15498 {
15499   /* Once we've fixed up a die, there's no point in doing so again.
15500      This also avoids a memory leak if we were to call
15501      guess_partial_die_structure_name multiple times.  */
15502   if (part_die->fixup_called)
15503     return;
15504
15505   /* If we found a reference attribute and the DIE has no name, try
15506      to find a name in the referred to DIE.  */
15507
15508   if (part_die->name == NULL && part_die->has_specification)
15509     {
15510       struct partial_die_info *spec_die;
15511
15512       spec_die = find_partial_die (part_die->spec_offset,
15513                                    part_die->spec_is_dwz, cu);
15514
15515       fixup_partial_die (spec_die, cu);
15516
15517       if (spec_die->name)
15518         {
15519           part_die->name = spec_die->name;
15520
15521           /* Copy DW_AT_external attribute if it is set.  */
15522           if (spec_die->is_external)
15523             part_die->is_external = spec_die->is_external;
15524         }
15525     }
15526
15527   /* Set default names for some unnamed DIEs.  */
15528
15529   if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
15530     part_die->name = CP_ANONYMOUS_NAMESPACE_STR;
15531
15532   /* If there is no parent die to provide a namespace, and there are
15533      children, see if we can determine the namespace from their linkage
15534      name.  */
15535   if (cu->language == language_cplus
15536       && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
15537       && part_die->die_parent == NULL
15538       && part_die->has_children
15539       && (part_die->tag == DW_TAG_class_type
15540           || part_die->tag == DW_TAG_structure_type
15541           || part_die->tag == DW_TAG_union_type))
15542     guess_partial_die_structure_name (part_die, cu);
15543
15544   /* GCC might emit a nameless struct or union that has a linkage
15545      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
15546   if (part_die->name == NULL
15547       && (part_die->tag == DW_TAG_class_type
15548           || part_die->tag == DW_TAG_interface_type
15549           || part_die->tag == DW_TAG_structure_type
15550           || part_die->tag == DW_TAG_union_type)
15551       && part_die->linkage_name != NULL)
15552     {
15553       char *demangled;
15554
15555       demangled = gdb_demangle (part_die->linkage_name, DMGL_TYPES);
15556       if (demangled)
15557         {
15558           const char *base;
15559
15560           /* Strip any leading namespaces/classes, keep only the base name.
15561              DW_AT_name for named DIEs does not contain the prefixes.  */
15562           base = strrchr (demangled, ':');
15563           if (base && base > demangled && base[-1] == ':')
15564             base++;
15565           else
15566             base = demangled;
15567
15568           part_die->name = obstack_copy0 (&cu->objfile->objfile_obstack,
15569                                           base, strlen (base));
15570           xfree (demangled);
15571         }
15572     }
15573
15574   part_die->fixup_called = 1;
15575 }
15576
15577 /* Read an attribute value described by an attribute form.  */
15578
15579 static const gdb_byte *
15580 read_attribute_value (const struct die_reader_specs *reader,
15581                       struct attribute *attr, unsigned form,
15582                       const gdb_byte *info_ptr)
15583 {
15584   struct dwarf2_cu *cu = reader->cu;
15585   bfd *abfd = reader->abfd;
15586   struct comp_unit_head *cu_header = &cu->header;
15587   unsigned int bytes_read;
15588   struct dwarf_block *blk;
15589
15590   attr->form = form;
15591   switch (form)
15592     {
15593     case DW_FORM_ref_addr:
15594       if (cu->header.version == 2)
15595         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
15596       else
15597         DW_UNSND (attr) = read_offset (abfd, info_ptr,
15598                                        &cu->header, &bytes_read);
15599       info_ptr += bytes_read;
15600       break;
15601     case DW_FORM_GNU_ref_alt:
15602       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
15603       info_ptr += bytes_read;
15604       break;
15605     case DW_FORM_addr:
15606       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
15607       info_ptr += bytes_read;
15608       break;
15609     case DW_FORM_block2:
15610       blk = dwarf_alloc_block (cu);
15611       blk->size = read_2_bytes (abfd, info_ptr);
15612       info_ptr += 2;
15613       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
15614       info_ptr += blk->size;
15615       DW_BLOCK (attr) = blk;
15616       break;
15617     case DW_FORM_block4:
15618       blk = dwarf_alloc_block (cu);
15619       blk->size = read_4_bytes (abfd, info_ptr);
15620       info_ptr += 4;
15621       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
15622       info_ptr += blk->size;
15623       DW_BLOCK (attr) = blk;
15624       break;
15625     case DW_FORM_data2:
15626       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
15627       info_ptr += 2;
15628       break;
15629     case DW_FORM_data4:
15630       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
15631       info_ptr += 4;
15632       break;
15633     case DW_FORM_data8:
15634       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
15635       info_ptr += 8;
15636       break;
15637     case DW_FORM_sec_offset:
15638       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
15639       info_ptr += bytes_read;
15640       break;
15641     case DW_FORM_string:
15642       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
15643       DW_STRING_IS_CANONICAL (attr) = 0;
15644       info_ptr += bytes_read;
15645       break;
15646     case DW_FORM_strp:
15647       if (!cu->per_cu->is_dwz)
15648         {
15649           DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
15650                                                    &bytes_read);
15651           DW_STRING_IS_CANONICAL (attr) = 0;
15652           info_ptr += bytes_read;
15653           break;
15654         }
15655       /* FALLTHROUGH */
15656     case DW_FORM_GNU_strp_alt:
15657       {
15658         struct dwz_file *dwz = dwarf2_get_dwz_file ();
15659         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
15660                                           &bytes_read);
15661
15662         DW_STRING (attr) = read_indirect_string_from_dwz (dwz, str_offset);
15663         DW_STRING_IS_CANONICAL (attr) = 0;
15664         info_ptr += bytes_read;
15665       }
15666       break;
15667     case DW_FORM_exprloc:
15668     case DW_FORM_block:
15669       blk = dwarf_alloc_block (cu);
15670       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15671       info_ptr += bytes_read;
15672       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
15673       info_ptr += blk->size;
15674       DW_BLOCK (attr) = blk;
15675       break;
15676     case DW_FORM_block1:
15677       blk = dwarf_alloc_block (cu);
15678       blk->size = read_1_byte (abfd, info_ptr);
15679       info_ptr += 1;
15680       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
15681       info_ptr += blk->size;
15682       DW_BLOCK (attr) = blk;
15683       break;
15684     case DW_FORM_data1:
15685       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
15686       info_ptr += 1;
15687       break;
15688     case DW_FORM_flag:
15689       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
15690       info_ptr += 1;
15691       break;
15692     case DW_FORM_flag_present:
15693       DW_UNSND (attr) = 1;
15694       break;
15695     case DW_FORM_sdata:
15696       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
15697       info_ptr += bytes_read;
15698       break;
15699     case DW_FORM_udata:
15700       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15701       info_ptr += bytes_read;
15702       break;
15703     case DW_FORM_ref1:
15704       DW_UNSND (attr) = (cu->header.offset.sect_off
15705                          + read_1_byte (abfd, info_ptr));
15706       info_ptr += 1;
15707       break;
15708     case DW_FORM_ref2:
15709       DW_UNSND (attr) = (cu->header.offset.sect_off
15710                          + read_2_bytes (abfd, info_ptr));
15711       info_ptr += 2;
15712       break;
15713     case DW_FORM_ref4:
15714       DW_UNSND (attr) = (cu->header.offset.sect_off
15715                          + read_4_bytes (abfd, info_ptr));
15716       info_ptr += 4;
15717       break;
15718     case DW_FORM_ref8:
15719       DW_UNSND (attr) = (cu->header.offset.sect_off
15720                          + read_8_bytes (abfd, info_ptr));
15721       info_ptr += 8;
15722       break;
15723     case DW_FORM_ref_sig8:
15724       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
15725       info_ptr += 8;
15726       break;
15727     case DW_FORM_ref_udata:
15728       DW_UNSND (attr) = (cu->header.offset.sect_off
15729                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
15730       info_ptr += bytes_read;
15731       break;
15732     case DW_FORM_indirect:
15733       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15734       info_ptr += bytes_read;
15735       info_ptr = read_attribute_value (reader, attr, form, info_ptr);
15736       break;
15737     case DW_FORM_GNU_addr_index:
15738       if (reader->dwo_file == NULL)
15739         {
15740           /* For now flag a hard error.
15741              Later we can turn this into a complaint.  */
15742           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
15743                  dwarf_form_name (form),
15744                  bfd_get_filename (abfd));
15745         }
15746       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
15747       info_ptr += bytes_read;
15748       break;
15749     case DW_FORM_GNU_str_index:
15750       if (reader->dwo_file == NULL)
15751         {
15752           /* For now flag a hard error.
15753              Later we can turn this into a complaint if warranted.  */
15754           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
15755                  dwarf_form_name (form),
15756                  bfd_get_filename (abfd));
15757         }
15758       {
15759         ULONGEST str_index =
15760           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15761
15762         DW_STRING (attr) = read_str_index (reader, cu, str_index);
15763         DW_STRING_IS_CANONICAL (attr) = 0;
15764         info_ptr += bytes_read;
15765       }
15766       break;
15767     default:
15768       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
15769              dwarf_form_name (form),
15770              bfd_get_filename (abfd));
15771     }
15772
15773   /* Super hack.  */
15774   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
15775     attr->form = DW_FORM_GNU_ref_alt;
15776
15777   /* We have seen instances where the compiler tried to emit a byte
15778      size attribute of -1 which ended up being encoded as an unsigned
15779      0xffffffff.  Although 0xffffffff is technically a valid size value,
15780      an object of this size seems pretty unlikely so we can relatively
15781      safely treat these cases as if the size attribute was invalid and
15782      treat them as zero by default.  */
15783   if (attr->name == DW_AT_byte_size
15784       && form == DW_FORM_data4
15785       && DW_UNSND (attr) >= 0xffffffff)
15786     {
15787       complaint
15788         (&symfile_complaints,
15789          _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
15790          hex_string (DW_UNSND (attr)));
15791       DW_UNSND (attr) = 0;
15792     }
15793
15794   return info_ptr;
15795 }
15796
15797 /* Read an attribute described by an abbreviated attribute.  */
15798
15799 static const gdb_byte *
15800 read_attribute (const struct die_reader_specs *reader,
15801                 struct attribute *attr, struct attr_abbrev *abbrev,
15802                 const gdb_byte *info_ptr)
15803 {
15804   attr->name = abbrev->name;
15805   return read_attribute_value (reader, attr, abbrev->form, info_ptr);
15806 }
15807
15808 /* Read dwarf information from a buffer.  */
15809
15810 static unsigned int
15811 read_1_byte (bfd *abfd, const gdb_byte *buf)
15812 {
15813   return bfd_get_8 (abfd, buf);
15814 }
15815
15816 static int
15817 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
15818 {
15819   return bfd_get_signed_8 (abfd, buf);
15820 }
15821
15822 static unsigned int
15823 read_2_bytes (bfd *abfd, const gdb_byte *buf)
15824 {
15825   return bfd_get_16 (abfd, buf);
15826 }
15827
15828 static int
15829 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
15830 {
15831   return bfd_get_signed_16 (abfd, buf);
15832 }
15833
15834 static unsigned int
15835 read_4_bytes (bfd *abfd, const gdb_byte *buf)
15836 {
15837   return bfd_get_32 (abfd, buf);
15838 }
15839
15840 static int
15841 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
15842 {
15843   return bfd_get_signed_32 (abfd, buf);
15844 }
15845
15846 static ULONGEST
15847 read_8_bytes (bfd *abfd, const gdb_byte *buf)
15848 {
15849   return bfd_get_64 (abfd, buf);
15850 }
15851
15852 static CORE_ADDR
15853 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
15854               unsigned int *bytes_read)
15855 {
15856   struct comp_unit_head *cu_header = &cu->header;
15857   CORE_ADDR retval = 0;
15858
15859   if (cu_header->signed_addr_p)
15860     {
15861       switch (cu_header->addr_size)
15862         {
15863         case 2:
15864           retval = bfd_get_signed_16 (abfd, buf);
15865           break;
15866         case 4:
15867           retval = bfd_get_signed_32 (abfd, buf);
15868           break;
15869         case 8:
15870           retval = bfd_get_signed_64 (abfd, buf);
15871           break;
15872         default:
15873           internal_error (__FILE__, __LINE__,
15874                           _("read_address: bad switch, signed [in module %s]"),
15875                           bfd_get_filename (abfd));
15876         }
15877     }
15878   else
15879     {
15880       switch (cu_header->addr_size)
15881         {
15882         case 2:
15883           retval = bfd_get_16 (abfd, buf);
15884           break;
15885         case 4:
15886           retval = bfd_get_32 (abfd, buf);
15887           break;
15888         case 8:
15889           retval = bfd_get_64 (abfd, buf);
15890           break;
15891         default:
15892           internal_error (__FILE__, __LINE__,
15893                           _("read_address: bad switch, "
15894                             "unsigned [in module %s]"),
15895                           bfd_get_filename (abfd));
15896         }
15897     }
15898
15899   *bytes_read = cu_header->addr_size;
15900   return retval;
15901 }
15902
15903 /* Read the initial length from a section.  The (draft) DWARF 3
15904    specification allows the initial length to take up either 4 bytes
15905    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
15906    bytes describe the length and all offsets will be 8 bytes in length
15907    instead of 4.
15908
15909    An older, non-standard 64-bit format is also handled by this
15910    function.  The older format in question stores the initial length
15911    as an 8-byte quantity without an escape value.  Lengths greater
15912    than 2^32 aren't very common which means that the initial 4 bytes
15913    is almost always zero.  Since a length value of zero doesn't make
15914    sense for the 32-bit format, this initial zero can be considered to
15915    be an escape value which indicates the presence of the older 64-bit
15916    format.  As written, the code can't detect (old format) lengths
15917    greater than 4GB.  If it becomes necessary to handle lengths
15918    somewhat larger than 4GB, we could allow other small values (such
15919    as the non-sensical values of 1, 2, and 3) to also be used as
15920    escape values indicating the presence of the old format.
15921
15922    The value returned via bytes_read should be used to increment the
15923    relevant pointer after calling read_initial_length().
15924
15925    [ Note:  read_initial_length() and read_offset() are based on the
15926      document entitled "DWARF Debugging Information Format", revision
15927      3, draft 8, dated November 19, 2001.  This document was obtained
15928      from:
15929
15930         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
15931
15932      This document is only a draft and is subject to change.  (So beware.)
15933
15934      Details regarding the older, non-standard 64-bit format were
15935      determined empirically by examining 64-bit ELF files produced by
15936      the SGI toolchain on an IRIX 6.5 machine.
15937
15938      - Kevin, July 16, 2002
15939    ] */
15940
15941 static LONGEST
15942 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
15943 {
15944   LONGEST length = bfd_get_32 (abfd, buf);
15945
15946   if (length == 0xffffffff)
15947     {
15948       length = bfd_get_64 (abfd, buf + 4);
15949       *bytes_read = 12;
15950     }
15951   else if (length == 0)
15952     {
15953       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
15954       length = bfd_get_64 (abfd, buf);
15955       *bytes_read = 8;
15956     }
15957   else
15958     {
15959       *bytes_read = 4;
15960     }
15961
15962   return length;
15963 }
15964
15965 /* Cover function for read_initial_length.
15966    Returns the length of the object at BUF, and stores the size of the
15967    initial length in *BYTES_READ and stores the size that offsets will be in
15968    *OFFSET_SIZE.
15969    If the initial length size is not equivalent to that specified in
15970    CU_HEADER then issue a complaint.
15971    This is useful when reading non-comp-unit headers.  */
15972
15973 static LONGEST
15974 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
15975                                         const struct comp_unit_head *cu_header,
15976                                         unsigned int *bytes_read,
15977                                         unsigned int *offset_size)
15978 {
15979   LONGEST length = read_initial_length (abfd, buf, bytes_read);
15980
15981   gdb_assert (cu_header->initial_length_size == 4
15982               || cu_header->initial_length_size == 8
15983               || cu_header->initial_length_size == 12);
15984
15985   if (cu_header->initial_length_size != *bytes_read)
15986     complaint (&symfile_complaints,
15987                _("intermixed 32-bit and 64-bit DWARF sections"));
15988
15989   *offset_size = (*bytes_read == 4) ? 4 : 8;
15990   return length;
15991 }
15992
15993 /* Read an offset from the data stream.  The size of the offset is
15994    given by cu_header->offset_size.  */
15995
15996 static LONGEST
15997 read_offset (bfd *abfd, const gdb_byte *buf,
15998              const struct comp_unit_head *cu_header,
15999              unsigned int *bytes_read)
16000 {
16001   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
16002
16003   *bytes_read = cu_header->offset_size;
16004   return offset;
16005 }
16006
16007 /* Read an offset from the data stream.  */
16008
16009 static LONGEST
16010 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
16011 {
16012   LONGEST retval = 0;
16013
16014   switch (offset_size)
16015     {
16016     case 4:
16017       retval = bfd_get_32 (abfd, buf);
16018       break;
16019     case 8:
16020       retval = bfd_get_64 (abfd, buf);
16021       break;
16022     default:
16023       internal_error (__FILE__, __LINE__,
16024                       _("read_offset_1: bad switch [in module %s]"),
16025                       bfd_get_filename (abfd));
16026     }
16027
16028   return retval;
16029 }
16030
16031 static const gdb_byte *
16032 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
16033 {
16034   /* If the size of a host char is 8 bits, we can return a pointer
16035      to the buffer, otherwise we have to copy the data to a buffer
16036      allocated on the temporary obstack.  */
16037   gdb_assert (HOST_CHAR_BIT == 8);
16038   return buf;
16039 }
16040
16041 static const char *
16042 read_direct_string (bfd *abfd, const gdb_byte *buf,
16043                     unsigned int *bytes_read_ptr)
16044 {
16045   /* If the size of a host char is 8 bits, we can return a pointer
16046      to the string, otherwise we have to copy the string to a buffer
16047      allocated on the temporary obstack.  */
16048   gdb_assert (HOST_CHAR_BIT == 8);
16049   if (*buf == '\0')
16050     {
16051       *bytes_read_ptr = 1;
16052       return NULL;
16053     }
16054   *bytes_read_ptr = strlen ((const char *) buf) + 1;
16055   return (const char *) buf;
16056 }
16057
16058 static const char *
16059 read_indirect_string_at_offset (bfd *abfd, LONGEST str_offset)
16060 {
16061   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->str);
16062   if (dwarf2_per_objfile->str.buffer == NULL)
16063     error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
16064            bfd_get_filename (abfd));
16065   if (str_offset >= dwarf2_per_objfile->str.size)
16066     error (_("DW_FORM_strp pointing outside of "
16067              ".debug_str section [in module %s]"),
16068            bfd_get_filename (abfd));
16069   gdb_assert (HOST_CHAR_BIT == 8);
16070   if (dwarf2_per_objfile->str.buffer[str_offset] == '\0')
16071     return NULL;
16072   return (const char *) (dwarf2_per_objfile->str.buffer + str_offset);
16073 }
16074
16075 /* Read a string at offset STR_OFFSET in the .debug_str section from
16076    the .dwz file DWZ.  Throw an error if the offset is too large.  If
16077    the string consists of a single NUL byte, return NULL; otherwise
16078    return a pointer to the string.  */
16079
16080 static const char *
16081 read_indirect_string_from_dwz (struct dwz_file *dwz, LONGEST str_offset)
16082 {
16083   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwz->str);
16084
16085   if (dwz->str.buffer == NULL)
16086     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
16087              "section [in module %s]"),
16088            bfd_get_filename (dwz->dwz_bfd));
16089   if (str_offset >= dwz->str.size)
16090     error (_("DW_FORM_GNU_strp_alt pointing outside of "
16091              ".debug_str section [in module %s]"),
16092            bfd_get_filename (dwz->dwz_bfd));
16093   gdb_assert (HOST_CHAR_BIT == 8);
16094   if (dwz->str.buffer[str_offset] == '\0')
16095     return NULL;
16096   return (const char *) (dwz->str.buffer + str_offset);
16097 }
16098
16099 static const char *
16100 read_indirect_string (bfd *abfd, const gdb_byte *buf,
16101                       const struct comp_unit_head *cu_header,
16102                       unsigned int *bytes_read_ptr)
16103 {
16104   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
16105
16106   return read_indirect_string_at_offset (abfd, str_offset);
16107 }
16108
16109 static ULONGEST
16110 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
16111                       unsigned int *bytes_read_ptr)
16112 {
16113   ULONGEST result;
16114   unsigned int num_read;
16115   int i, shift;
16116   unsigned char byte;
16117
16118   result = 0;
16119   shift = 0;
16120   num_read = 0;
16121   i = 0;
16122   while (1)
16123     {
16124       byte = bfd_get_8 (abfd, buf);
16125       buf++;
16126       num_read++;
16127       result |= ((ULONGEST) (byte & 127) << shift);
16128       if ((byte & 128) == 0)
16129         {
16130           break;
16131         }
16132       shift += 7;
16133     }
16134   *bytes_read_ptr = num_read;
16135   return result;
16136 }
16137
16138 static LONGEST
16139 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
16140                     unsigned int *bytes_read_ptr)
16141 {
16142   LONGEST result;
16143   int i, shift, num_read;
16144   unsigned char byte;
16145
16146   result = 0;
16147   shift = 0;
16148   num_read = 0;
16149   i = 0;
16150   while (1)
16151     {
16152       byte = bfd_get_8 (abfd, buf);
16153       buf++;
16154       num_read++;
16155       result |= ((LONGEST) (byte & 127) << shift);
16156       shift += 7;
16157       if ((byte & 128) == 0)
16158         {
16159           break;
16160         }
16161     }
16162   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
16163     result |= -(((LONGEST) 1) << shift);
16164   *bytes_read_ptr = num_read;
16165   return result;
16166 }
16167
16168 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
16169    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
16170    ADDR_SIZE is the size of addresses from the CU header.  */
16171
16172 static CORE_ADDR
16173 read_addr_index_1 (unsigned int addr_index, ULONGEST addr_base, int addr_size)
16174 {
16175   struct objfile *objfile = dwarf2_per_objfile->objfile;
16176   bfd *abfd = objfile->obfd;
16177   const gdb_byte *info_ptr;
16178
16179   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
16180   if (dwarf2_per_objfile->addr.buffer == NULL)
16181     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
16182            objfile_name (objfile));
16183   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
16184     error (_("DW_FORM_addr_index pointing outside of "
16185              ".debug_addr section [in module %s]"),
16186            objfile_name (objfile));
16187   info_ptr = (dwarf2_per_objfile->addr.buffer
16188               + addr_base + addr_index * addr_size);
16189   if (addr_size == 4)
16190     return bfd_get_32 (abfd, info_ptr);
16191   else
16192     return bfd_get_64 (abfd, info_ptr);
16193 }
16194
16195 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
16196
16197 static CORE_ADDR
16198 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
16199 {
16200   return read_addr_index_1 (addr_index, cu->addr_base, cu->header.addr_size);
16201 }
16202
16203 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
16204
16205 static CORE_ADDR
16206 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
16207                              unsigned int *bytes_read)
16208 {
16209   bfd *abfd = cu->objfile->obfd;
16210   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
16211
16212   return read_addr_index (cu, addr_index);
16213 }
16214
16215 /* Data structure to pass results from dwarf2_read_addr_index_reader
16216    back to dwarf2_read_addr_index.  */
16217
16218 struct dwarf2_read_addr_index_data
16219 {
16220   ULONGEST addr_base;
16221   int addr_size;
16222 };
16223
16224 /* die_reader_func for dwarf2_read_addr_index.  */
16225
16226 static void
16227 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
16228                                const gdb_byte *info_ptr,
16229                                struct die_info *comp_unit_die,
16230                                int has_children,
16231                                void *data)
16232 {
16233   struct dwarf2_cu *cu = reader->cu;
16234   struct dwarf2_read_addr_index_data *aidata =
16235     (struct dwarf2_read_addr_index_data *) data;
16236
16237   aidata->addr_base = cu->addr_base;
16238   aidata->addr_size = cu->header.addr_size;
16239 }
16240
16241 /* Given an index in .debug_addr, fetch the value.
16242    NOTE: This can be called during dwarf expression evaluation,
16243    long after the debug information has been read, and thus per_cu->cu
16244    may no longer exist.  */
16245
16246 CORE_ADDR
16247 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
16248                         unsigned int addr_index)
16249 {
16250   struct objfile *objfile = per_cu->objfile;
16251   struct dwarf2_cu *cu = per_cu->cu;
16252   ULONGEST addr_base;
16253   int addr_size;
16254
16255   /* This is intended to be called from outside this file.  */
16256   dw2_setup (objfile);
16257
16258   /* We need addr_base and addr_size.
16259      If we don't have PER_CU->cu, we have to get it.
16260      Nasty, but the alternative is storing the needed info in PER_CU,
16261      which at this point doesn't seem justified: it's not clear how frequently
16262      it would get used and it would increase the size of every PER_CU.
16263      Entry points like dwarf2_per_cu_addr_size do a similar thing
16264      so we're not in uncharted territory here.
16265      Alas we need to be a bit more complicated as addr_base is contained
16266      in the DIE.
16267
16268      We don't need to read the entire CU(/TU).
16269      We just need the header and top level die.
16270
16271      IWBN to use the aging mechanism to let us lazily later discard the CU.
16272      For now we skip this optimization.  */
16273
16274   if (cu != NULL)
16275     {
16276       addr_base = cu->addr_base;
16277       addr_size = cu->header.addr_size;
16278     }
16279   else
16280     {
16281       struct dwarf2_read_addr_index_data aidata;
16282
16283       /* Note: We can't use init_cutu_and_read_dies_simple here,
16284          we need addr_base.  */
16285       init_cutu_and_read_dies (per_cu, NULL, 0, 0,
16286                                dwarf2_read_addr_index_reader, &aidata);
16287       addr_base = aidata.addr_base;
16288       addr_size = aidata.addr_size;
16289     }
16290
16291   return read_addr_index_1 (addr_index, addr_base, addr_size);
16292 }
16293
16294 /* Given a DW_FORM_GNU_str_index, fetch the string.
16295    This is only used by the Fission support.  */
16296
16297 static const char *
16298 read_str_index (const struct die_reader_specs *reader,
16299                 struct dwarf2_cu *cu, ULONGEST str_index)
16300 {
16301   struct objfile *objfile = dwarf2_per_objfile->objfile;
16302   const char *dwo_name = objfile_name (objfile);
16303   bfd *abfd = objfile->obfd;
16304   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
16305   struct dwarf2_section_info *str_offsets_section =
16306     &reader->dwo_file->sections.str_offsets;
16307   const gdb_byte *info_ptr;
16308   ULONGEST str_offset;
16309   static const char form_name[] = "DW_FORM_GNU_str_index";
16310
16311   dwarf2_read_section (objfile, str_section);
16312   dwarf2_read_section (objfile, str_offsets_section);
16313   if (str_section->buffer == NULL)
16314     error (_("%s used without .debug_str.dwo section"
16315              " in CU at offset 0x%lx [in module %s]"),
16316            form_name, (long) cu->header.offset.sect_off, dwo_name);
16317   if (str_offsets_section->buffer == NULL)
16318     error (_("%s used without .debug_str_offsets.dwo section"
16319              " in CU at offset 0x%lx [in module %s]"),
16320            form_name, (long) cu->header.offset.sect_off, dwo_name);
16321   if (str_index * cu->header.offset_size >= str_offsets_section->size)
16322     error (_("%s pointing outside of .debug_str_offsets.dwo"
16323              " section in CU at offset 0x%lx [in module %s]"),
16324            form_name, (long) cu->header.offset.sect_off, dwo_name);
16325   info_ptr = (str_offsets_section->buffer
16326               + str_index * cu->header.offset_size);
16327   if (cu->header.offset_size == 4)
16328     str_offset = bfd_get_32 (abfd, info_ptr);
16329   else
16330     str_offset = bfd_get_64 (abfd, info_ptr);
16331   if (str_offset >= str_section->size)
16332     error (_("Offset from %s pointing outside of"
16333              " .debug_str.dwo section in CU at offset 0x%lx [in module %s]"),
16334            form_name, (long) cu->header.offset.sect_off, dwo_name);
16335   return (const char *) (str_section->buffer + str_offset);
16336 }
16337
16338 /* Return the length of an LEB128 number in BUF.  */
16339
16340 static int
16341 leb128_size (const gdb_byte *buf)
16342 {
16343   const gdb_byte *begin = buf;
16344   gdb_byte byte;
16345
16346   while (1)
16347     {
16348       byte = *buf++;
16349       if ((byte & 128) == 0)
16350         return buf - begin;
16351     }
16352 }
16353
16354 static void
16355 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
16356 {
16357   switch (lang)
16358     {
16359     case DW_LANG_C89:
16360     case DW_LANG_C99:
16361     case DW_LANG_C:
16362     case DW_LANG_UPC:
16363       cu->language = language_c;
16364       break;
16365     case DW_LANG_C_plus_plus:
16366       cu->language = language_cplus;
16367       break;
16368     case DW_LANG_D:
16369       cu->language = language_d;
16370       break;
16371     case DW_LANG_Fortran77:
16372     case DW_LANG_Fortran90:
16373     case DW_LANG_Fortran95:
16374       cu->language = language_fortran;
16375       break;
16376     case DW_LANG_Go:
16377       cu->language = language_go;
16378       break;
16379     case DW_LANG_Mips_Assembler:
16380       cu->language = language_asm;
16381       break;
16382     case DW_LANG_Java:
16383       cu->language = language_java;
16384       break;
16385     case DW_LANG_Ada83:
16386     case DW_LANG_Ada95:
16387       cu->language = language_ada;
16388       break;
16389     case DW_LANG_Modula2:
16390       cu->language = language_m2;
16391       break;
16392     case DW_LANG_Pascal83:
16393       cu->language = language_pascal;
16394       break;
16395     case DW_LANG_ObjC:
16396       cu->language = language_objc;
16397       break;
16398     case DW_LANG_Cobol74:
16399     case DW_LANG_Cobol85:
16400     default:
16401       cu->language = language_minimal;
16402       break;
16403     }
16404   cu->language_defn = language_def (cu->language);
16405 }
16406
16407 /* Return the named attribute or NULL if not there.  */
16408
16409 static struct attribute *
16410 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
16411 {
16412   for (;;)
16413     {
16414       unsigned int i;
16415       struct attribute *spec = NULL;
16416
16417       for (i = 0; i < die->num_attrs; ++i)
16418         {
16419           if (die->attrs[i].name == name)
16420             return &die->attrs[i];
16421           if (die->attrs[i].name == DW_AT_specification
16422               || die->attrs[i].name == DW_AT_abstract_origin)
16423             spec = &die->attrs[i];
16424         }
16425
16426       if (!spec)
16427         break;
16428
16429       die = follow_die_ref (die, spec, &cu);
16430     }
16431
16432   return NULL;
16433 }
16434
16435 /* Return the named attribute or NULL if not there,
16436    but do not follow DW_AT_specification, etc.
16437    This is for use in contexts where we're reading .debug_types dies.
16438    Following DW_AT_specification, DW_AT_abstract_origin will take us
16439    back up the chain, and we want to go down.  */
16440
16441 static struct attribute *
16442 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
16443 {
16444   unsigned int i;
16445
16446   for (i = 0; i < die->num_attrs; ++i)
16447     if (die->attrs[i].name == name)
16448       return &die->attrs[i];
16449
16450   return NULL;
16451 }
16452
16453 /* Return non-zero iff the attribute NAME is defined for the given DIE,
16454    and holds a non-zero value.  This function should only be used for
16455    DW_FORM_flag or DW_FORM_flag_present attributes.  */
16456
16457 static int
16458 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
16459 {
16460   struct attribute *attr = dwarf2_attr (die, name, cu);
16461
16462   return (attr && DW_UNSND (attr));
16463 }
16464
16465 static int
16466 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
16467 {
16468   /* A DIE is a declaration if it has a DW_AT_declaration attribute
16469      which value is non-zero.  However, we have to be careful with
16470      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
16471      (via dwarf2_flag_true_p) follows this attribute.  So we may
16472      end up accidently finding a declaration attribute that belongs
16473      to a different DIE referenced by the specification attribute,
16474      even though the given DIE does not have a declaration attribute.  */
16475   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
16476           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
16477 }
16478
16479 /* Return the die giving the specification for DIE, if there is
16480    one.  *SPEC_CU is the CU containing DIE on input, and the CU
16481    containing the return value on output.  If there is no
16482    specification, but there is an abstract origin, that is
16483    returned.  */
16484
16485 static struct die_info *
16486 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
16487 {
16488   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
16489                                              *spec_cu);
16490
16491   if (spec_attr == NULL)
16492     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
16493
16494   if (spec_attr == NULL)
16495     return NULL;
16496   else
16497     return follow_die_ref (die, spec_attr, spec_cu);
16498 }
16499
16500 /* Free the line_header structure *LH, and any arrays and strings it
16501    refers to.
16502    NOTE: This is also used as a "cleanup" function.  */
16503
16504 static void
16505 free_line_header (struct line_header *lh)
16506 {
16507   if (lh->standard_opcode_lengths)
16508     xfree (lh->standard_opcode_lengths);
16509
16510   /* Remember that all the lh->file_names[i].name pointers are
16511      pointers into debug_line_buffer, and don't need to be freed.  */
16512   if (lh->file_names)
16513     xfree (lh->file_names);
16514
16515   /* Similarly for the include directory names.  */
16516   if (lh->include_dirs)
16517     xfree (lh->include_dirs);
16518
16519   xfree (lh);
16520 }
16521
16522 /* Add an entry to LH's include directory table.  */
16523
16524 static void
16525 add_include_dir (struct line_header *lh, const char *include_dir)
16526 {
16527   /* Grow the array if necessary.  */
16528   if (lh->include_dirs_size == 0)
16529     {
16530       lh->include_dirs_size = 1; /* for testing */
16531       lh->include_dirs = xmalloc (lh->include_dirs_size
16532                                   * sizeof (*lh->include_dirs));
16533     }
16534   else if (lh->num_include_dirs >= lh->include_dirs_size)
16535     {
16536       lh->include_dirs_size *= 2;
16537       lh->include_dirs = xrealloc (lh->include_dirs,
16538                                    (lh->include_dirs_size
16539                                     * sizeof (*lh->include_dirs)));
16540     }
16541
16542   lh->include_dirs[lh->num_include_dirs++] = include_dir;
16543 }
16544
16545 /* Add an entry to LH's file name table.  */
16546
16547 static void
16548 add_file_name (struct line_header *lh,
16549                const char *name,
16550                unsigned int dir_index,
16551                unsigned int mod_time,
16552                unsigned int length)
16553 {
16554   struct file_entry *fe;
16555
16556   /* Grow the array if necessary.  */
16557   if (lh->file_names_size == 0)
16558     {
16559       lh->file_names_size = 1; /* for testing */
16560       lh->file_names = xmalloc (lh->file_names_size
16561                                 * sizeof (*lh->file_names));
16562     }
16563   else if (lh->num_file_names >= lh->file_names_size)
16564     {
16565       lh->file_names_size *= 2;
16566       lh->file_names = xrealloc (lh->file_names,
16567                                  (lh->file_names_size
16568                                   * sizeof (*lh->file_names)));
16569     }
16570
16571   fe = &lh->file_names[lh->num_file_names++];
16572   fe->name = name;
16573   fe->dir_index = dir_index;
16574   fe->mod_time = mod_time;
16575   fe->length = length;
16576   fe->included_p = 0;
16577   fe->symtab = NULL;
16578 }
16579
16580 /* A convenience function to find the proper .debug_line section for a
16581    CU.  */
16582
16583 static struct dwarf2_section_info *
16584 get_debug_line_section (struct dwarf2_cu *cu)
16585 {
16586   struct dwarf2_section_info *section;
16587
16588   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
16589      DWO file.  */
16590   if (cu->dwo_unit && cu->per_cu->is_debug_types)
16591     section = &cu->dwo_unit->dwo_file->sections.line;
16592   else if (cu->per_cu->is_dwz)
16593     {
16594       struct dwz_file *dwz = dwarf2_get_dwz_file ();
16595
16596       section = &dwz->line;
16597     }
16598   else
16599     section = &dwarf2_per_objfile->line;
16600
16601   return section;
16602 }
16603
16604 /* Read the statement program header starting at OFFSET in
16605    .debug_line, or .debug_line.dwo.  Return a pointer
16606    to a struct line_header, allocated using xmalloc.
16607
16608    NOTE: the strings in the include directory and file name tables of
16609    the returned object point into the dwarf line section buffer,
16610    and must not be freed.  */
16611
16612 static struct line_header *
16613 dwarf_decode_line_header (unsigned int offset, struct dwarf2_cu *cu)
16614 {
16615   struct cleanup *back_to;
16616   struct line_header *lh;
16617   const gdb_byte *line_ptr;
16618   unsigned int bytes_read, offset_size;
16619   int i;
16620   const char *cur_dir, *cur_file;
16621   struct dwarf2_section_info *section;
16622   bfd *abfd;
16623
16624   section = get_debug_line_section (cu);
16625   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
16626   if (section->buffer == NULL)
16627     {
16628       if (cu->dwo_unit && cu->per_cu->is_debug_types)
16629         complaint (&symfile_complaints, _("missing .debug_line.dwo section"));
16630       else
16631         complaint (&symfile_complaints, _("missing .debug_line section"));
16632       return 0;
16633     }
16634
16635   /* We can't do this until we know the section is non-empty.
16636      Only then do we know we have such a section.  */
16637   abfd = get_section_bfd_owner (section);
16638
16639   /* Make sure that at least there's room for the total_length field.
16640      That could be 12 bytes long, but we're just going to fudge that.  */
16641   if (offset + 4 >= section->size)
16642     {
16643       dwarf2_statement_list_fits_in_line_number_section_complaint ();
16644       return 0;
16645     }
16646
16647   lh = xmalloc (sizeof (*lh));
16648   memset (lh, 0, sizeof (*lh));
16649   back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
16650                           (void *) lh);
16651
16652   line_ptr = section->buffer + offset;
16653
16654   /* Read in the header.  */
16655   lh->total_length =
16656     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
16657                                             &bytes_read, &offset_size);
16658   line_ptr += bytes_read;
16659   if (line_ptr + lh->total_length > (section->buffer + section->size))
16660     {
16661       dwarf2_statement_list_fits_in_line_number_section_complaint ();
16662       do_cleanups (back_to);
16663       return 0;
16664     }
16665   lh->statement_program_end = line_ptr + lh->total_length;
16666   lh->version = read_2_bytes (abfd, line_ptr);
16667   line_ptr += 2;
16668   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
16669   line_ptr += offset_size;
16670   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
16671   line_ptr += 1;
16672   if (lh->version >= 4)
16673     {
16674       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
16675       line_ptr += 1;
16676     }
16677   else
16678     lh->maximum_ops_per_instruction = 1;
16679
16680   if (lh->maximum_ops_per_instruction == 0)
16681     {
16682       lh->maximum_ops_per_instruction = 1;
16683       complaint (&symfile_complaints,
16684                  _("invalid maximum_ops_per_instruction "
16685                    "in `.debug_line' section"));
16686     }
16687
16688   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
16689   line_ptr += 1;
16690   lh->line_base = read_1_signed_byte (abfd, line_ptr);
16691   line_ptr += 1;
16692   lh->line_range = read_1_byte (abfd, line_ptr);
16693   line_ptr += 1;
16694   lh->opcode_base = read_1_byte (abfd, line_ptr);
16695   line_ptr += 1;
16696   lh->standard_opcode_lengths
16697     = xmalloc (lh->opcode_base * sizeof (lh->standard_opcode_lengths[0]));
16698
16699   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
16700   for (i = 1; i < lh->opcode_base; ++i)
16701     {
16702       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
16703       line_ptr += 1;
16704     }
16705
16706   /* Read directory table.  */
16707   while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
16708     {
16709       line_ptr += bytes_read;
16710       add_include_dir (lh, cur_dir);
16711     }
16712   line_ptr += bytes_read;
16713
16714   /* Read file name table.  */
16715   while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
16716     {
16717       unsigned int dir_index, mod_time, length;
16718
16719       line_ptr += bytes_read;
16720       dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
16721       line_ptr += bytes_read;
16722       mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
16723       line_ptr += bytes_read;
16724       length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
16725       line_ptr += bytes_read;
16726
16727       add_file_name (lh, cur_file, dir_index, mod_time, length);
16728     }
16729   line_ptr += bytes_read;
16730   lh->statement_program_start = line_ptr;
16731
16732   if (line_ptr > (section->buffer + section->size))
16733     complaint (&symfile_complaints,
16734                _("line number info header doesn't "
16735                  "fit in `.debug_line' section"));
16736
16737   discard_cleanups (back_to);
16738   return lh;
16739 }
16740
16741 /* Subroutine of dwarf_decode_lines to simplify it.
16742    Return the file name of the psymtab for included file FILE_INDEX
16743    in line header LH of PST.
16744    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
16745    If space for the result is malloc'd, it will be freed by a cleanup.
16746    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.
16747
16748    The function creates dangling cleanup registration.  */
16749
16750 static const char *
16751 psymtab_include_file_name (const struct line_header *lh, int file_index,
16752                            const struct partial_symtab *pst,
16753                            const char *comp_dir)
16754 {
16755   const struct file_entry fe = lh->file_names [file_index];
16756   const char *include_name = fe.name;
16757   const char *include_name_to_compare = include_name;
16758   const char *dir_name = NULL;
16759   const char *pst_filename;
16760   char *copied_name = NULL;
16761   int file_is_pst;
16762
16763   if (fe.dir_index)
16764     dir_name = lh->include_dirs[fe.dir_index - 1];
16765
16766   if (!IS_ABSOLUTE_PATH (include_name)
16767       && (dir_name != NULL || comp_dir != NULL))
16768     {
16769       /* Avoid creating a duplicate psymtab for PST.
16770          We do this by comparing INCLUDE_NAME and PST_FILENAME.
16771          Before we do the comparison, however, we need to account
16772          for DIR_NAME and COMP_DIR.
16773          First prepend dir_name (if non-NULL).  If we still don't
16774          have an absolute path prepend comp_dir (if non-NULL).
16775          However, the directory we record in the include-file's
16776          psymtab does not contain COMP_DIR (to match the
16777          corresponding symtab(s)).
16778
16779          Example:
16780
16781          bash$ cd /tmp
16782          bash$ gcc -g ./hello.c
16783          include_name = "hello.c"
16784          dir_name = "."
16785          DW_AT_comp_dir = comp_dir = "/tmp"
16786          DW_AT_name = "./hello.c"  */
16787
16788       if (dir_name != NULL)
16789         {
16790           char *tem = concat (dir_name, SLASH_STRING,
16791                               include_name, (char *)NULL);
16792
16793           make_cleanup (xfree, tem);
16794           include_name = tem;
16795           include_name_to_compare = include_name;
16796         }
16797       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
16798         {
16799           char *tem = concat (comp_dir, SLASH_STRING,
16800                               include_name, (char *)NULL);
16801
16802           make_cleanup (xfree, tem);
16803           include_name_to_compare = tem;
16804         }
16805     }
16806
16807   pst_filename = pst->filename;
16808   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
16809     {
16810       copied_name = concat (pst->dirname, SLASH_STRING,
16811                             pst_filename, (char *)NULL);
16812       pst_filename = copied_name;
16813     }
16814
16815   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
16816
16817   if (copied_name != NULL)
16818     xfree (copied_name);
16819
16820   if (file_is_pst)
16821     return NULL;
16822   return include_name;
16823 }
16824
16825 /* Ignore this record_line request.  */
16826
16827 static void
16828 noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
16829 {
16830   return;
16831 }
16832
16833 /* Subroutine of dwarf_decode_lines to simplify it.
16834    Process the line number information in LH.  */
16835
16836 static void
16837 dwarf_decode_lines_1 (struct line_header *lh, const char *comp_dir,
16838                       struct dwarf2_cu *cu, struct partial_symtab *pst)
16839 {
16840   const gdb_byte *line_ptr, *extended_end;
16841   const gdb_byte *line_end;
16842   unsigned int bytes_read, extended_len;
16843   unsigned char op_code, extended_op, adj_opcode;
16844   CORE_ADDR baseaddr;
16845   struct objfile *objfile = cu->objfile;
16846   bfd *abfd = objfile->obfd;
16847   struct gdbarch *gdbarch = get_objfile_arch (objfile);
16848   const int decode_for_pst_p = (pst != NULL);
16849   struct subfile *last_subfile = NULL;
16850   void (*p_record_line) (struct subfile *subfile, int line, CORE_ADDR pc)
16851     = record_line;
16852
16853   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
16854
16855   line_ptr = lh->statement_program_start;
16856   line_end = lh->statement_program_end;
16857
16858   /* Read the statement sequences until there's nothing left.  */
16859   while (line_ptr < line_end)
16860     {
16861       /* state machine registers  */
16862       CORE_ADDR address = 0;
16863       unsigned int file = 1;
16864       unsigned int line = 1;
16865       unsigned int column = 0;
16866       int is_stmt = lh->default_is_stmt;
16867       int basic_block = 0;
16868       int end_sequence = 0;
16869       CORE_ADDR addr;
16870       unsigned char op_index = 0;
16871
16872       if (!decode_for_pst_p && lh->num_file_names >= file)
16873         {
16874           /* Start a subfile for the current file of the state machine.  */
16875           /* lh->include_dirs and lh->file_names are 0-based, but the
16876              directory and file name numbers in the statement program
16877              are 1-based.  */
16878           struct file_entry *fe = &lh->file_names[file - 1];
16879           const char *dir = NULL;
16880
16881           if (fe->dir_index)
16882             dir = lh->include_dirs[fe->dir_index - 1];
16883
16884           dwarf2_start_subfile (fe->name, dir, comp_dir);
16885         }
16886
16887       /* Decode the table.  */
16888       while (!end_sequence)
16889         {
16890           op_code = read_1_byte (abfd, line_ptr);
16891           line_ptr += 1;
16892           if (line_ptr > line_end)
16893             {
16894               dwarf2_debug_line_missing_end_sequence_complaint ();
16895               break;
16896             }
16897
16898           if (op_code >= lh->opcode_base)
16899             {
16900               /* Special operand.  */
16901               adj_opcode = op_code - lh->opcode_base;
16902               address += (((op_index + (adj_opcode / lh->line_range))
16903                            / lh->maximum_ops_per_instruction)
16904                           * lh->minimum_instruction_length);
16905               op_index = ((op_index + (adj_opcode / lh->line_range))
16906                           % lh->maximum_ops_per_instruction);
16907               line += lh->line_base + (adj_opcode % lh->line_range);
16908               if (lh->num_file_names < file || file == 0)
16909                 dwarf2_debug_line_missing_file_complaint ();
16910               /* For now we ignore lines not starting on an
16911                  instruction boundary.  */
16912               else if (op_index == 0)
16913                 {
16914                   lh->file_names[file - 1].included_p = 1;
16915                   if (!decode_for_pst_p && is_stmt)
16916                     {
16917                       if (last_subfile != current_subfile)
16918                         {
16919                           addr = gdbarch_addr_bits_remove (gdbarch, address);
16920                           if (last_subfile)
16921                             (*p_record_line) (last_subfile, 0, addr);
16922                           last_subfile = current_subfile;
16923                         }
16924                       /* Append row to matrix using current values.  */
16925                       addr = gdbarch_addr_bits_remove (gdbarch, address);
16926                       (*p_record_line) (current_subfile, line, addr);
16927                     }
16928                 }
16929               basic_block = 0;
16930             }
16931           else switch (op_code)
16932             {
16933             case DW_LNS_extended_op:
16934               extended_len = read_unsigned_leb128 (abfd, line_ptr,
16935                                                    &bytes_read);
16936               line_ptr += bytes_read;
16937               extended_end = line_ptr + extended_len;
16938               extended_op = read_1_byte (abfd, line_ptr);
16939               line_ptr += 1;
16940               switch (extended_op)
16941                 {
16942                 case DW_LNE_end_sequence:
16943                   p_record_line = record_line;
16944                   end_sequence = 1;
16945                   break;
16946                 case DW_LNE_set_address:
16947                   address = read_address (abfd, line_ptr, cu, &bytes_read);
16948
16949                   if (address == 0 && !dwarf2_per_objfile->has_section_at_zero)
16950                     {
16951                       /* This line table is for a function which has been
16952                          GCd by the linker.  Ignore it.  PR gdb/12528 */
16953
16954                       long line_offset
16955                         = line_ptr - get_debug_line_section (cu)->buffer;
16956
16957                       complaint (&symfile_complaints,
16958                                  _(".debug_line address at offset 0x%lx is 0 "
16959                                    "[in module %s]"),
16960                                  line_offset, objfile_name (objfile));
16961                       p_record_line = noop_record_line;
16962                     }
16963
16964                   op_index = 0;
16965                   line_ptr += bytes_read;
16966                   address += baseaddr;
16967                   break;
16968                 case DW_LNE_define_file:
16969                   {
16970                     const char *cur_file;
16971                     unsigned int dir_index, mod_time, length;
16972
16973                     cur_file = read_direct_string (abfd, line_ptr,
16974                                                    &bytes_read);
16975                     line_ptr += bytes_read;
16976                     dir_index =
16977                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
16978                     line_ptr += bytes_read;
16979                     mod_time =
16980                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
16981                     line_ptr += bytes_read;
16982                     length =
16983                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
16984                     line_ptr += bytes_read;
16985                     add_file_name (lh, cur_file, dir_index, mod_time, length);
16986                   }
16987                   break;
16988                 case DW_LNE_set_discriminator:
16989                   /* The discriminator is not interesting to the debugger;
16990                      just ignore it.  */
16991                   line_ptr = extended_end;
16992                   break;
16993                 default:
16994                   complaint (&symfile_complaints,
16995                              _("mangled .debug_line section"));
16996                   return;
16997                 }
16998               /* Make sure that we parsed the extended op correctly.  If e.g.
16999                  we expected a different address size than the producer used,
17000                  we may have read the wrong number of bytes.  */
17001               if (line_ptr != extended_end)
17002                 {
17003                   complaint (&symfile_complaints,
17004                              _("mangled .debug_line section"));
17005                   return;
17006                 }
17007               break;
17008             case DW_LNS_copy:
17009               if (lh->num_file_names < file || file == 0)
17010                 dwarf2_debug_line_missing_file_complaint ();
17011               else
17012                 {
17013                   lh->file_names[file - 1].included_p = 1;
17014                   if (!decode_for_pst_p && is_stmt)
17015                     {
17016                       if (last_subfile != current_subfile)
17017                         {
17018                           addr = gdbarch_addr_bits_remove (gdbarch, address);
17019                           if (last_subfile)
17020                             (*p_record_line) (last_subfile, 0, addr);
17021                           last_subfile = current_subfile;
17022                         }
17023                       addr = gdbarch_addr_bits_remove (gdbarch, address);
17024                       (*p_record_line) (current_subfile, line, addr);
17025                     }
17026                 }
17027               basic_block = 0;
17028               break;
17029             case DW_LNS_advance_pc:
17030               {
17031                 CORE_ADDR adjust
17032                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17033
17034                 address += (((op_index + adjust)
17035                              / lh->maximum_ops_per_instruction)
17036                             * lh->minimum_instruction_length);
17037                 op_index = ((op_index + adjust)
17038                             % lh->maximum_ops_per_instruction);
17039                 line_ptr += bytes_read;
17040               }
17041               break;
17042             case DW_LNS_advance_line:
17043               line += read_signed_leb128 (abfd, line_ptr, &bytes_read);
17044               line_ptr += bytes_read;
17045               break;
17046             case DW_LNS_set_file:
17047               {
17048                 /* The arrays lh->include_dirs and lh->file_names are
17049                    0-based, but the directory and file name numbers in
17050                    the statement program are 1-based.  */
17051                 struct file_entry *fe;
17052                 const char *dir = NULL;
17053
17054                 file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17055                 line_ptr += bytes_read;
17056                 if (lh->num_file_names < file || file == 0)
17057                   dwarf2_debug_line_missing_file_complaint ();
17058                 else
17059                   {
17060                     fe = &lh->file_names[file - 1];
17061                     if (fe->dir_index)
17062                       dir = lh->include_dirs[fe->dir_index - 1];
17063                     if (!decode_for_pst_p)
17064                       {
17065                         last_subfile = current_subfile;
17066                         dwarf2_start_subfile (fe->name, dir, comp_dir);
17067                       }
17068                   }
17069               }
17070               break;
17071             case DW_LNS_set_column:
17072               column = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17073               line_ptr += bytes_read;
17074               break;
17075             case DW_LNS_negate_stmt:
17076               is_stmt = (!is_stmt);
17077               break;
17078             case DW_LNS_set_basic_block:
17079               basic_block = 1;
17080               break;
17081             /* Add to the address register of the state machine the
17082                address increment value corresponding to special opcode
17083                255.  I.e., this value is scaled by the minimum
17084                instruction length since special opcode 255 would have
17085                scaled the increment.  */
17086             case DW_LNS_const_add_pc:
17087               {
17088                 CORE_ADDR adjust = (255 - lh->opcode_base) / lh->line_range;
17089
17090                 address += (((op_index + adjust)
17091                              / lh->maximum_ops_per_instruction)
17092                             * lh->minimum_instruction_length);
17093                 op_index = ((op_index + adjust)
17094                             % lh->maximum_ops_per_instruction);
17095               }
17096               break;
17097             case DW_LNS_fixed_advance_pc:
17098               address += read_2_bytes (abfd, line_ptr);
17099               op_index = 0;
17100               line_ptr += 2;
17101               break;
17102             default:
17103               {
17104                 /* Unknown standard opcode, ignore it.  */
17105                 int i;
17106
17107                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
17108                   {
17109                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17110                     line_ptr += bytes_read;
17111                   }
17112               }
17113             }
17114         }
17115       if (lh->num_file_names < file || file == 0)
17116         dwarf2_debug_line_missing_file_complaint ();
17117       else
17118         {
17119           lh->file_names[file - 1].included_p = 1;
17120           if (!decode_for_pst_p)
17121             {
17122               addr = gdbarch_addr_bits_remove (gdbarch, address);
17123               (*p_record_line) (current_subfile, 0, addr);
17124             }
17125         }
17126     }
17127 }
17128
17129 /* Decode the Line Number Program (LNP) for the given line_header
17130    structure and CU.  The actual information extracted and the type
17131    of structures created from the LNP depends on the value of PST.
17132
17133    1. If PST is NULL, then this procedure uses the data from the program
17134       to create all necessary symbol tables, and their linetables.
17135
17136    2. If PST is not NULL, this procedure reads the program to determine
17137       the list of files included by the unit represented by PST, and
17138       builds all the associated partial symbol tables.
17139
17140    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
17141    It is used for relative paths in the line table.
17142    NOTE: When processing partial symtabs (pst != NULL),
17143    comp_dir == pst->dirname.
17144
17145    NOTE: It is important that psymtabs have the same file name (via strcmp)
17146    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
17147    symtab we don't use it in the name of the psymtabs we create.
17148    E.g. expand_line_sal requires this when finding psymtabs to expand.
17149    A good testcase for this is mb-inline.exp.  */
17150
17151 static void
17152 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
17153                     struct dwarf2_cu *cu, struct partial_symtab *pst,
17154                     int want_line_info)
17155 {
17156   struct objfile *objfile = cu->objfile;
17157   const int decode_for_pst_p = (pst != NULL);
17158   struct subfile *first_subfile = current_subfile;
17159
17160   if (want_line_info)
17161     dwarf_decode_lines_1 (lh, comp_dir, cu, pst);
17162
17163   if (decode_for_pst_p)
17164     {
17165       int file_index;
17166
17167       /* Now that we're done scanning the Line Header Program, we can
17168          create the psymtab of each included file.  */
17169       for (file_index = 0; file_index < lh->num_file_names; file_index++)
17170         if (lh->file_names[file_index].included_p == 1)
17171           {
17172             const char *include_name =
17173               psymtab_include_file_name (lh, file_index, pst, comp_dir);
17174             if (include_name != NULL)
17175               dwarf2_create_include_psymtab (include_name, pst, objfile);
17176           }
17177     }
17178   else
17179     {
17180       /* Make sure a symtab is created for every file, even files
17181          which contain only variables (i.e. no code with associated
17182          line numbers).  */
17183       int i;
17184
17185       for (i = 0; i < lh->num_file_names; i++)
17186         {
17187           const char *dir = NULL;
17188           struct file_entry *fe;
17189
17190           fe = &lh->file_names[i];
17191           if (fe->dir_index)
17192             dir = lh->include_dirs[fe->dir_index - 1];
17193           dwarf2_start_subfile (fe->name, dir, comp_dir);
17194
17195           /* Skip the main file; we don't need it, and it must be
17196              allocated last, so that it will show up before the
17197              non-primary symtabs in the objfile's symtab list.  */
17198           if (current_subfile == first_subfile)
17199             continue;
17200
17201           if (current_subfile->symtab == NULL)
17202             current_subfile->symtab = allocate_symtab (current_subfile->name,
17203                                                        objfile);
17204           fe->symtab = current_subfile->symtab;
17205         }
17206     }
17207 }
17208
17209 /* Start a subfile for DWARF.  FILENAME is the name of the file and
17210    DIRNAME the name of the source directory which contains FILENAME
17211    or NULL if not known.  COMP_DIR is the compilation directory for the
17212    linetable's compilation unit or NULL if not known.
17213    This routine tries to keep line numbers from identical absolute and
17214    relative file names in a common subfile.
17215
17216    Using the `list' example from the GDB testsuite, which resides in
17217    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
17218    of /srcdir/list0.c yields the following debugging information for list0.c:
17219
17220    DW_AT_name:          /srcdir/list0.c
17221    DW_AT_comp_dir:              /compdir
17222    files.files[0].name: list0.h
17223    files.files[0].dir:  /srcdir
17224    files.files[1].name: list0.c
17225    files.files[1].dir:  /srcdir
17226
17227    The line number information for list0.c has to end up in a single
17228    subfile, so that `break /srcdir/list0.c:1' works as expected.
17229    start_subfile will ensure that this happens provided that we pass the
17230    concatenation of files.files[1].dir and files.files[1].name as the
17231    subfile's name.  */
17232
17233 static void
17234 dwarf2_start_subfile (const char *filename, const char *dirname,
17235                       const char *comp_dir)
17236 {
17237   char *copy = NULL;
17238
17239   /* While reading the DIEs, we call start_symtab(DW_AT_name, DW_AT_comp_dir).
17240      `start_symtab' will always pass the contents of DW_AT_comp_dir as
17241      second argument to start_subfile.  To be consistent, we do the
17242      same here.  In order not to lose the line information directory,
17243      we concatenate it to the filename when it makes sense.
17244      Note that the Dwarf3 standard says (speaking of filenames in line
17245      information): ``The directory index is ignored for file names
17246      that represent full path names''.  Thus ignoring dirname in the
17247      `else' branch below isn't an issue.  */
17248
17249   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
17250     {
17251       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
17252       filename = copy;
17253     }
17254
17255   start_subfile (filename, comp_dir);
17256
17257   if (copy != NULL)
17258     xfree (copy);
17259 }
17260
17261 /* Start a symtab for DWARF.
17262    NAME, COMP_DIR, LOW_PC are passed to start_symtab.  */
17263
17264 static void
17265 dwarf2_start_symtab (struct dwarf2_cu *cu,
17266                      const char *name, const char *comp_dir, CORE_ADDR low_pc)
17267 {
17268   start_symtab (name, comp_dir, low_pc);
17269   record_debugformat ("DWARF 2");
17270   record_producer (cu->producer);
17271
17272   /* We assume that we're processing GCC output.  */
17273   processing_gcc_compilation = 2;
17274
17275   cu->processing_has_namespace_info = 0;
17276 }
17277
17278 static void
17279 var_decode_location (struct attribute *attr, struct symbol *sym,
17280                      struct dwarf2_cu *cu)
17281 {
17282   struct objfile *objfile = cu->objfile;
17283   struct comp_unit_head *cu_header = &cu->header;
17284
17285   /* NOTE drow/2003-01-30: There used to be a comment and some special
17286      code here to turn a symbol with DW_AT_external and a
17287      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
17288      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
17289      with some versions of binutils) where shared libraries could have
17290      relocations against symbols in their debug information - the
17291      minimal symbol would have the right address, but the debug info
17292      would not.  It's no longer necessary, because we will explicitly
17293      apply relocations when we read in the debug information now.  */
17294
17295   /* A DW_AT_location attribute with no contents indicates that a
17296      variable has been optimized away.  */
17297   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
17298     {
17299       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
17300       return;
17301     }
17302
17303   /* Handle one degenerate form of location expression specially, to
17304      preserve GDB's previous behavior when section offsets are
17305      specified.  If this is just a DW_OP_addr or DW_OP_GNU_addr_index
17306      then mark this symbol as LOC_STATIC.  */
17307
17308   if (attr_form_is_block (attr)
17309       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
17310            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
17311           || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
17312               && (DW_BLOCK (attr)->size
17313                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
17314     {
17315       unsigned int dummy;
17316
17317       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
17318         SYMBOL_VALUE_ADDRESS (sym) =
17319           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
17320       else
17321         SYMBOL_VALUE_ADDRESS (sym) =
17322           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
17323       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
17324       fixup_symbol_section (sym, objfile);
17325       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
17326                                               SYMBOL_SECTION (sym));
17327       return;
17328     }
17329
17330   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
17331      expression evaluator, and use LOC_COMPUTED only when necessary
17332      (i.e. when the value of a register or memory location is
17333      referenced, or a thread-local block, etc.).  Then again, it might
17334      not be worthwhile.  I'm assuming that it isn't unless performance
17335      or memory numbers show me otherwise.  */
17336
17337   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
17338
17339   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
17340     cu->has_loclist = 1;
17341 }
17342
17343 /* Given a pointer to a DWARF information entry, figure out if we need
17344    to make a symbol table entry for it, and if so, create a new entry
17345    and return a pointer to it.
17346    If TYPE is NULL, determine symbol type from the die, otherwise
17347    used the passed type.
17348    If SPACE is not NULL, use it to hold the new symbol.  If it is
17349    NULL, allocate a new symbol on the objfile's obstack.  */
17350
17351 static struct symbol *
17352 new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
17353                  struct symbol *space)
17354 {
17355   struct objfile *objfile = cu->objfile;
17356   struct symbol *sym = NULL;
17357   const char *name;
17358   struct attribute *attr = NULL;
17359   struct attribute *attr2 = NULL;
17360   CORE_ADDR baseaddr;
17361   struct pending **list_to_add = NULL;
17362
17363   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
17364
17365   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
17366
17367   name = dwarf2_name (die, cu);
17368   if (name)
17369     {
17370       const char *linkagename;
17371       int suppress_add = 0;
17372
17373       if (space)
17374         sym = space;
17375       else
17376         sym = allocate_symbol (objfile);
17377       OBJSTAT (objfile, n_syms++);
17378
17379       /* Cache this symbol's name and the name's demangled form (if any).  */
17380       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
17381       linkagename = dwarf2_physname (name, die, cu);
17382       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
17383
17384       /* Fortran does not have mangling standard and the mangling does differ
17385          between gfortran, iFort etc.  */
17386       if (cu->language == language_fortran
17387           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
17388         symbol_set_demangled_name (&(sym->ginfo),
17389                                    dwarf2_full_name (name, die, cu),
17390                                    NULL);
17391
17392       /* Default assumptions.
17393          Use the passed type or decode it from the die.  */
17394       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
17395       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
17396       if (type != NULL)
17397         SYMBOL_TYPE (sym) = type;
17398       else
17399         SYMBOL_TYPE (sym) = die_type (die, cu);
17400       attr = dwarf2_attr (die,
17401                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
17402                           cu);
17403       if (attr)
17404         {
17405           SYMBOL_LINE (sym) = DW_UNSND (attr);
17406         }
17407
17408       attr = dwarf2_attr (die,
17409                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
17410                           cu);
17411       if (attr)
17412         {
17413           int file_index = DW_UNSND (attr);
17414
17415           if (cu->line_header == NULL
17416               || file_index > cu->line_header->num_file_names)
17417             complaint (&symfile_complaints,
17418                        _("file index out of range"));
17419           else if (file_index > 0)
17420             {
17421               struct file_entry *fe;
17422
17423               fe = &cu->line_header->file_names[file_index - 1];
17424               SYMBOL_SYMTAB (sym) = fe->symtab;
17425             }
17426         }
17427
17428       switch (die->tag)
17429         {
17430         case DW_TAG_label:
17431           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
17432           if (attr)
17433             {
17434               SYMBOL_VALUE_ADDRESS (sym) = DW_ADDR (attr) + baseaddr;
17435             }
17436           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
17437           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
17438           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
17439           add_symbol_to_list (sym, cu->list_in_scope);
17440           break;
17441         case DW_TAG_subprogram:
17442           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
17443              finish_block.  */
17444           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
17445           attr2 = dwarf2_attr (die, DW_AT_external, cu);
17446           if ((attr2 && (DW_UNSND (attr2) != 0))
17447               || cu->language == language_ada)
17448             {
17449               /* Subprograms marked external are stored as a global symbol.
17450                  Ada subprograms, whether marked external or not, are always
17451                  stored as a global symbol, because we want to be able to
17452                  access them globally.  For instance, we want to be able
17453                  to break on a nested subprogram without having to
17454                  specify the context.  */
17455               list_to_add = &global_symbols;
17456             }
17457           else
17458             {
17459               list_to_add = cu->list_in_scope;
17460             }
17461           break;
17462         case DW_TAG_inlined_subroutine:
17463           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
17464              finish_block.  */
17465           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
17466           SYMBOL_INLINED (sym) = 1;
17467           list_to_add = cu->list_in_scope;
17468           break;
17469         case DW_TAG_template_value_param:
17470           suppress_add = 1;
17471           /* Fall through.  */
17472         case DW_TAG_constant:
17473         case DW_TAG_variable:
17474         case DW_TAG_member:
17475           /* Compilation with minimal debug info may result in
17476              variables with missing type entries.  Change the
17477              misleading `void' type to something sensible.  */
17478           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
17479             SYMBOL_TYPE (sym)
17480               = objfile_type (objfile)->nodebug_data_symbol;
17481
17482           attr = dwarf2_attr (die, DW_AT_const_value, cu);
17483           /* In the case of DW_TAG_member, we should only be called for
17484              static const members.  */
17485           if (die->tag == DW_TAG_member)
17486             {
17487               /* dwarf2_add_field uses die_is_declaration,
17488                  so we do the same.  */
17489               gdb_assert (die_is_declaration (die, cu));
17490               gdb_assert (attr);
17491             }
17492           if (attr)
17493             {
17494               dwarf2_const_value (attr, sym, cu);
17495               attr2 = dwarf2_attr (die, DW_AT_external, cu);
17496               if (!suppress_add)
17497                 {
17498                   if (attr2 && (DW_UNSND (attr2) != 0))
17499                     list_to_add = &global_symbols;
17500                   else
17501                     list_to_add = cu->list_in_scope;
17502                 }
17503               break;
17504             }
17505           attr = dwarf2_attr (die, DW_AT_location, cu);
17506           if (attr)
17507             {
17508               var_decode_location (attr, sym, cu);
17509               attr2 = dwarf2_attr (die, DW_AT_external, cu);
17510
17511               /* Fortran explicitly imports any global symbols to the local
17512                  scope by DW_TAG_common_block.  */
17513               if (cu->language == language_fortran && die->parent
17514                   && die->parent->tag == DW_TAG_common_block)
17515                 attr2 = NULL;
17516
17517               if (SYMBOL_CLASS (sym) == LOC_STATIC
17518                   && SYMBOL_VALUE_ADDRESS (sym) == 0
17519                   && !dwarf2_per_objfile->has_section_at_zero)
17520                 {
17521                   /* When a static variable is eliminated by the linker,
17522                      the corresponding debug information is not stripped
17523                      out, but the variable address is set to null;
17524                      do not add such variables into symbol table.  */
17525                 }
17526               else if (attr2 && (DW_UNSND (attr2) != 0))
17527                 {
17528                   /* Workaround gfortran PR debug/40040 - it uses
17529                      DW_AT_location for variables in -fPIC libraries which may
17530                      get overriden by other libraries/executable and get
17531                      a different address.  Resolve it by the minimal symbol
17532                      which may come from inferior's executable using copy
17533                      relocation.  Make this workaround only for gfortran as for
17534                      other compilers GDB cannot guess the minimal symbol
17535                      Fortran mangling kind.  */
17536                   if (cu->language == language_fortran && die->parent
17537                       && die->parent->tag == DW_TAG_module
17538                       && cu->producer
17539                       && strncmp (cu->producer, "GNU Fortran ", 12) == 0)
17540                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
17541
17542                   /* A variable with DW_AT_external is never static,
17543                      but it may be block-scoped.  */
17544                   list_to_add = (cu->list_in_scope == &file_symbols
17545                                  ? &global_symbols : cu->list_in_scope);
17546                 }
17547               else
17548                 list_to_add = cu->list_in_scope;
17549             }
17550           else
17551             {
17552               /* We do not know the address of this symbol.
17553                  If it is an external symbol and we have type information
17554                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
17555                  The address of the variable will then be determined from
17556                  the minimal symbol table whenever the variable is
17557                  referenced.  */
17558               attr2 = dwarf2_attr (die, DW_AT_external, cu);
17559
17560               /* Fortran explicitly imports any global symbols to the local
17561                  scope by DW_TAG_common_block.  */
17562               if (cu->language == language_fortran && die->parent
17563                   && die->parent->tag == DW_TAG_common_block)
17564                 {
17565                   /* SYMBOL_CLASS doesn't matter here because
17566                      read_common_block is going to reset it.  */
17567                   if (!suppress_add)
17568                     list_to_add = cu->list_in_scope;
17569                 }
17570               else if (attr2 && (DW_UNSND (attr2) != 0)
17571                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
17572                 {
17573                   /* A variable with DW_AT_external is never static, but it
17574                      may be block-scoped.  */
17575                   list_to_add = (cu->list_in_scope == &file_symbols
17576                                  ? &global_symbols : cu->list_in_scope);
17577
17578                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
17579                 }
17580               else if (!die_is_declaration (die, cu))
17581                 {
17582                   /* Use the default LOC_OPTIMIZED_OUT class.  */
17583                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
17584                   if (!suppress_add)
17585                     list_to_add = cu->list_in_scope;
17586                 }
17587             }
17588           break;
17589         case DW_TAG_formal_parameter:
17590           /* If we are inside a function, mark this as an argument.  If
17591              not, we might be looking at an argument to an inlined function
17592              when we do not have enough information to show inlined frames;
17593              pretend it's a local variable in that case so that the user can
17594              still see it.  */
17595           if (context_stack_depth > 0
17596               && context_stack[context_stack_depth - 1].name != NULL)
17597             SYMBOL_IS_ARGUMENT (sym) = 1;
17598           attr = dwarf2_attr (die, DW_AT_location, cu);
17599           if (attr)
17600             {
17601               var_decode_location (attr, sym, cu);
17602             }
17603           attr = dwarf2_attr (die, DW_AT_const_value, cu);
17604           if (attr)
17605             {
17606               dwarf2_const_value (attr, sym, cu);
17607             }
17608
17609           list_to_add = cu->list_in_scope;
17610           break;
17611         case DW_TAG_unspecified_parameters:
17612           /* From varargs functions; gdb doesn't seem to have any
17613              interest in this information, so just ignore it for now.
17614              (FIXME?) */
17615           break;
17616         case DW_TAG_template_type_param:
17617           suppress_add = 1;
17618           /* Fall through.  */
17619         case DW_TAG_class_type:
17620         case DW_TAG_interface_type:
17621         case DW_TAG_structure_type:
17622         case DW_TAG_union_type:
17623         case DW_TAG_set_type:
17624         case DW_TAG_enumeration_type:
17625           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
17626           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
17627
17628           {
17629             /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't
17630                really ever be static objects: otherwise, if you try
17631                to, say, break of a class's method and you're in a file
17632                which doesn't mention that class, it won't work unless
17633                the check for all static symbols in lookup_symbol_aux
17634                saves you.  See the OtherFileClass tests in
17635                gdb.c++/namespace.exp.  */
17636
17637             if (!suppress_add)
17638               {
17639                 list_to_add = (cu->list_in_scope == &file_symbols
17640                                && (cu->language == language_cplus
17641                                    || cu->language == language_java)
17642                                ? &global_symbols : cu->list_in_scope);
17643
17644                 /* The semantics of C++ state that "struct foo {
17645                    ... }" also defines a typedef for "foo".  A Java
17646                    class declaration also defines a typedef for the
17647                    class.  */
17648                 if (cu->language == language_cplus
17649                     || cu->language == language_java
17650                     || cu->language == language_ada)
17651                   {
17652                     /* The symbol's name is already allocated along
17653                        with this objfile, so we don't need to
17654                        duplicate it for the type.  */
17655                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
17656                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
17657                   }
17658               }
17659           }
17660           break;
17661         case DW_TAG_typedef:
17662           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
17663           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
17664           list_to_add = cu->list_in_scope;
17665           break;
17666         case DW_TAG_base_type:
17667         case DW_TAG_subrange_type:
17668           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
17669           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
17670           list_to_add = cu->list_in_scope;
17671           break;
17672         case DW_TAG_enumerator:
17673           attr = dwarf2_attr (die, DW_AT_const_value, cu);
17674           if (attr)
17675             {
17676               dwarf2_const_value (attr, sym, cu);
17677             }
17678           {
17679             /* NOTE: carlton/2003-11-10: See comment above in the
17680                DW_TAG_class_type, etc. block.  */
17681
17682             list_to_add = (cu->list_in_scope == &file_symbols
17683                            && (cu->language == language_cplus
17684                                || cu->language == language_java)
17685                            ? &global_symbols : cu->list_in_scope);
17686           }
17687           break;
17688         case DW_TAG_imported_declaration:
17689         case DW_TAG_namespace:
17690           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
17691           list_to_add = &global_symbols;
17692           break;
17693         case DW_TAG_common_block:
17694           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
17695           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
17696           add_symbol_to_list (sym, cu->list_in_scope);
17697           break;
17698         default:
17699           /* Not a tag we recognize.  Hopefully we aren't processing
17700              trash data, but since we must specifically ignore things
17701              we don't recognize, there is nothing else we should do at
17702              this point.  */
17703           complaint (&symfile_complaints, _("unsupported tag: '%s'"),
17704                      dwarf_tag_name (die->tag));
17705           break;
17706         }
17707
17708       if (suppress_add)
17709         {
17710           sym->hash_next = objfile->template_symbols;
17711           objfile->template_symbols = sym;
17712           list_to_add = NULL;
17713         }
17714
17715       if (list_to_add != NULL)
17716         add_symbol_to_list (sym, list_to_add);
17717
17718       /* For the benefit of old versions of GCC, check for anonymous
17719          namespaces based on the demangled name.  */
17720       if (!cu->processing_has_namespace_info
17721           && cu->language == language_cplus)
17722         cp_scan_for_anonymous_namespaces (sym, objfile);
17723     }
17724   return (sym);
17725 }
17726
17727 /* A wrapper for new_symbol_full that always allocates a new symbol.  */
17728
17729 static struct symbol *
17730 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
17731 {
17732   return new_symbol_full (die, type, cu, NULL);
17733 }
17734
17735 /* Given an attr with a DW_FORM_dataN value in host byte order,
17736    zero-extend it as appropriate for the symbol's type.  The DWARF
17737    standard (v4) is not entirely clear about the meaning of using
17738    DW_FORM_dataN for a constant with a signed type, where the type is
17739    wider than the data.  The conclusion of a discussion on the DWARF
17740    list was that this is unspecified.  We choose to always zero-extend
17741    because that is the interpretation long in use by GCC.  */
17742
17743 static gdb_byte *
17744 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
17745                          struct dwarf2_cu *cu, LONGEST *value, int bits)
17746 {
17747   struct objfile *objfile = cu->objfile;
17748   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
17749                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
17750   LONGEST l = DW_UNSND (attr);
17751
17752   if (bits < sizeof (*value) * 8)
17753     {
17754       l &= ((LONGEST) 1 << bits) - 1;
17755       *value = l;
17756     }
17757   else if (bits == sizeof (*value) * 8)
17758     *value = l;
17759   else
17760     {
17761       gdb_byte *bytes = obstack_alloc (obstack, bits / 8);
17762       store_unsigned_integer (bytes, bits / 8, byte_order, l);
17763       return bytes;
17764     }
17765
17766   return NULL;
17767 }
17768
17769 /* Read a constant value from an attribute.  Either set *VALUE, or if
17770    the value does not fit in *VALUE, set *BYTES - either already
17771    allocated on the objfile obstack, or newly allocated on OBSTACK,
17772    or, set *BATON, if we translated the constant to a location
17773    expression.  */
17774
17775 static void
17776 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
17777                          const char *name, struct obstack *obstack,
17778                          struct dwarf2_cu *cu,
17779                          LONGEST *value, const gdb_byte **bytes,
17780                          struct dwarf2_locexpr_baton **baton)
17781 {
17782   struct objfile *objfile = cu->objfile;
17783   struct comp_unit_head *cu_header = &cu->header;
17784   struct dwarf_block *blk;
17785   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
17786                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
17787
17788   *value = 0;
17789   *bytes = NULL;
17790   *baton = NULL;
17791
17792   switch (attr->form)
17793     {
17794     case DW_FORM_addr:
17795     case DW_FORM_GNU_addr_index:
17796       {
17797         gdb_byte *data;
17798
17799         if (TYPE_LENGTH (type) != cu_header->addr_size)
17800           dwarf2_const_value_length_mismatch_complaint (name,
17801                                                         cu_header->addr_size,
17802                                                         TYPE_LENGTH (type));
17803         /* Symbols of this form are reasonably rare, so we just
17804            piggyback on the existing location code rather than writing
17805            a new implementation of symbol_computed_ops.  */
17806         *baton = obstack_alloc (obstack, sizeof (struct dwarf2_locexpr_baton));
17807         (*baton)->per_cu = cu->per_cu;
17808         gdb_assert ((*baton)->per_cu);
17809
17810         (*baton)->size = 2 + cu_header->addr_size;
17811         data = obstack_alloc (obstack, (*baton)->size);
17812         (*baton)->data = data;
17813
17814         data[0] = DW_OP_addr;
17815         store_unsigned_integer (&data[1], cu_header->addr_size,
17816                                 byte_order, DW_ADDR (attr));
17817         data[cu_header->addr_size + 1] = DW_OP_stack_value;
17818       }
17819       break;
17820     case DW_FORM_string:
17821     case DW_FORM_strp:
17822     case DW_FORM_GNU_str_index:
17823     case DW_FORM_GNU_strp_alt:
17824       /* DW_STRING is already allocated on the objfile obstack, point
17825          directly to it.  */
17826       *bytes = (const gdb_byte *) DW_STRING (attr);
17827       break;
17828     case DW_FORM_block1:
17829     case DW_FORM_block2:
17830     case DW_FORM_block4:
17831     case DW_FORM_block:
17832     case DW_FORM_exprloc:
17833       blk = DW_BLOCK (attr);
17834       if (TYPE_LENGTH (type) != blk->size)
17835         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
17836                                                       TYPE_LENGTH (type));
17837       *bytes = blk->data;
17838       break;
17839
17840       /* The DW_AT_const_value attributes are supposed to carry the
17841          symbol's value "represented as it would be on the target
17842          architecture."  By the time we get here, it's already been
17843          converted to host endianness, so we just need to sign- or
17844          zero-extend it as appropriate.  */
17845     case DW_FORM_data1:
17846       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
17847       break;
17848     case DW_FORM_data2:
17849       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
17850       break;
17851     case DW_FORM_data4:
17852       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
17853       break;
17854     case DW_FORM_data8:
17855       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
17856       break;
17857
17858     case DW_FORM_sdata:
17859       *value = DW_SND (attr);
17860       break;
17861
17862     case DW_FORM_udata:
17863       *value = DW_UNSND (attr);
17864       break;
17865
17866     default:
17867       complaint (&symfile_complaints,
17868                  _("unsupported const value attribute form: '%s'"),
17869                  dwarf_form_name (attr->form));
17870       *value = 0;
17871       break;
17872     }
17873 }
17874
17875
17876 /* Copy constant value from an attribute to a symbol.  */
17877
17878 static void
17879 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
17880                     struct dwarf2_cu *cu)
17881 {
17882   struct objfile *objfile = cu->objfile;
17883   struct comp_unit_head *cu_header = &cu->header;
17884   LONGEST value;
17885   const gdb_byte *bytes;
17886   struct dwarf2_locexpr_baton *baton;
17887
17888   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
17889                            SYMBOL_PRINT_NAME (sym),
17890                            &objfile->objfile_obstack, cu,
17891                            &value, &bytes, &baton);
17892
17893   if (baton != NULL)
17894     {
17895       SYMBOL_LOCATION_BATON (sym) = baton;
17896       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
17897     }
17898   else if (bytes != NULL)
17899      {
17900       SYMBOL_VALUE_BYTES (sym) = bytes;
17901       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
17902     }
17903   else
17904     {
17905       SYMBOL_VALUE (sym) = value;
17906       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
17907     }
17908 }
17909
17910 /* Return the type of the die in question using its DW_AT_type attribute.  */
17911
17912 static struct type *
17913 die_type (struct die_info *die, struct dwarf2_cu *cu)
17914 {
17915   struct attribute *type_attr;
17916
17917   type_attr = dwarf2_attr (die, DW_AT_type, cu);
17918   if (!type_attr)
17919     {
17920       /* A missing DW_AT_type represents a void type.  */
17921       return objfile_type (cu->objfile)->builtin_void;
17922     }
17923
17924   return lookup_die_type (die, type_attr, cu);
17925 }
17926
17927 /* True iff CU's producer generates GNAT Ada auxiliary information
17928    that allows to find parallel types through that information instead
17929    of having to do expensive parallel lookups by type name.  */
17930
17931 static int
17932 need_gnat_info (struct dwarf2_cu *cu)
17933 {
17934   /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
17935      of GNAT produces this auxiliary information, without any indication
17936      that it is produced.  Part of enhancing the FSF version of GNAT
17937      to produce that information will be to put in place an indicator
17938      that we can use in order to determine whether the descriptive type
17939      info is available or not.  One suggestion that has been made is
17940      to use a new attribute, attached to the CU die.  For now, assume
17941      that the descriptive type info is not available.  */
17942   return 0;
17943 }
17944
17945 /* Return the auxiliary type of the die in question using its
17946    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
17947    attribute is not present.  */
17948
17949 static struct type *
17950 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
17951 {
17952   struct attribute *type_attr;
17953
17954   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
17955   if (!type_attr)
17956     return NULL;
17957
17958   return lookup_die_type (die, type_attr, cu);
17959 }
17960
17961 /* If DIE has a descriptive_type attribute, then set the TYPE's
17962    descriptive type accordingly.  */
17963
17964 static void
17965 set_descriptive_type (struct type *type, struct die_info *die,
17966                       struct dwarf2_cu *cu)
17967 {
17968   struct type *descriptive_type = die_descriptive_type (die, cu);
17969
17970   if (descriptive_type)
17971     {
17972       ALLOCATE_GNAT_AUX_TYPE (type);
17973       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
17974     }
17975 }
17976
17977 /* Return the containing type of the die in question using its
17978    DW_AT_containing_type attribute.  */
17979
17980 static struct type *
17981 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
17982 {
17983   struct attribute *type_attr;
17984
17985   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
17986   if (!type_attr)
17987     error (_("Dwarf Error: Problem turning containing type into gdb type "
17988              "[in module %s]"), objfile_name (cu->objfile));
17989
17990   return lookup_die_type (die, type_attr, cu);
17991 }
17992
17993 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
17994
17995 static struct type *
17996 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
17997 {
17998   struct objfile *objfile = dwarf2_per_objfile->objfile;
17999   char *message, *saved;
18000
18001   message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
18002                         objfile_name (objfile),
18003                         cu->header.offset.sect_off,
18004                         die->offset.sect_off);
18005   saved = obstack_copy0 (&objfile->objfile_obstack,
18006                          message, strlen (message));
18007   xfree (message);
18008
18009   return init_type (TYPE_CODE_ERROR, 0, 0, saved, objfile);
18010 }
18011
18012 /* Look up the type of DIE in CU using its type attribute ATTR.
18013    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
18014    DW_AT_containing_type.
18015    If there is no type substitute an error marker.  */
18016
18017 static struct type *
18018 lookup_die_type (struct die_info *die, const struct attribute *attr,
18019                  struct dwarf2_cu *cu)
18020 {
18021   struct objfile *objfile = cu->objfile;
18022   struct type *this_type;
18023
18024   gdb_assert (attr->name == DW_AT_type
18025               || attr->name == DW_AT_GNAT_descriptive_type
18026               || attr->name == DW_AT_containing_type);
18027
18028   /* First see if we have it cached.  */
18029
18030   if (attr->form == DW_FORM_GNU_ref_alt)
18031     {
18032       struct dwarf2_per_cu_data *per_cu;
18033       sect_offset offset = dwarf2_get_ref_die_offset (attr);
18034
18035       per_cu = dwarf2_find_containing_comp_unit (offset, 1, cu->objfile);
18036       this_type = get_die_type_at_offset (offset, per_cu);
18037     }
18038   else if (attr_form_is_ref (attr))
18039     {
18040       sect_offset offset = dwarf2_get_ref_die_offset (attr);
18041
18042       this_type = get_die_type_at_offset (offset, cu->per_cu);
18043     }
18044   else if (attr->form == DW_FORM_ref_sig8)
18045     {
18046       ULONGEST signature = DW_SIGNATURE (attr);
18047
18048       return get_signatured_type (die, signature, cu);
18049     }
18050   else
18051     {
18052       complaint (&symfile_complaints,
18053                  _("Dwarf Error: Bad type attribute %s in DIE"
18054                    " at 0x%x [in module %s]"),
18055                  dwarf_attr_name (attr->name), die->offset.sect_off,
18056                  objfile_name (objfile));
18057       return build_error_marker_type (cu, die);
18058     }
18059
18060   /* If not cached we need to read it in.  */
18061
18062   if (this_type == NULL)
18063     {
18064       struct die_info *type_die = NULL;
18065       struct dwarf2_cu *type_cu = cu;
18066
18067       if (attr_form_is_ref (attr))
18068         type_die = follow_die_ref (die, attr, &type_cu);
18069       if (type_die == NULL)
18070         return build_error_marker_type (cu, die);
18071       /* If we find the type now, it's probably because the type came
18072          from an inter-CU reference and the type's CU got expanded before
18073          ours.  */
18074       this_type = read_type_die (type_die, type_cu);
18075     }
18076
18077   /* If we still don't have a type use an error marker.  */
18078
18079   if (this_type == NULL)
18080     return build_error_marker_type (cu, die);
18081
18082   return this_type;
18083 }
18084
18085 /* Return the type in DIE, CU.
18086    Returns NULL for invalid types.
18087
18088    This first does a lookup in die_type_hash,
18089    and only reads the die in if necessary.
18090
18091    NOTE: This can be called when reading in partial or full symbols.  */
18092
18093 static struct type *
18094 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
18095 {
18096   struct type *this_type;
18097
18098   this_type = get_die_type (die, cu);
18099   if (this_type)
18100     return this_type;
18101
18102   return read_type_die_1 (die, cu);
18103 }
18104
18105 /* Read the type in DIE, CU.
18106    Returns NULL for invalid types.  */
18107
18108 static struct type *
18109 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
18110 {
18111   struct type *this_type = NULL;
18112
18113   switch (die->tag)
18114     {
18115     case DW_TAG_class_type:
18116     case DW_TAG_interface_type:
18117     case DW_TAG_structure_type:
18118     case DW_TAG_union_type:
18119       this_type = read_structure_type (die, cu);
18120       break;
18121     case DW_TAG_enumeration_type:
18122       this_type = read_enumeration_type (die, cu);
18123       break;
18124     case DW_TAG_subprogram:
18125     case DW_TAG_subroutine_type:
18126     case DW_TAG_inlined_subroutine:
18127       this_type = read_subroutine_type (die, cu);
18128       break;
18129     case DW_TAG_array_type:
18130       this_type = read_array_type (die, cu);
18131       break;
18132     case DW_TAG_set_type:
18133       this_type = read_set_type (die, cu);
18134       break;
18135     case DW_TAG_pointer_type:
18136       this_type = read_tag_pointer_type (die, cu);
18137       break;
18138     case DW_TAG_ptr_to_member_type:
18139       this_type = read_tag_ptr_to_member_type (die, cu);
18140       break;
18141     case DW_TAG_reference_type:
18142       this_type = read_tag_reference_type (die, cu);
18143       break;
18144     case DW_TAG_const_type:
18145       this_type = read_tag_const_type (die, cu);
18146       break;
18147     case DW_TAG_volatile_type:
18148       this_type = read_tag_volatile_type (die, cu);
18149       break;
18150     case DW_TAG_restrict_type:
18151       this_type = read_tag_restrict_type (die, cu);
18152       break;
18153     case DW_TAG_string_type:
18154       this_type = read_tag_string_type (die, cu);
18155       break;
18156     case DW_TAG_typedef:
18157       this_type = read_typedef (die, cu);
18158       break;
18159     case DW_TAG_subrange_type:
18160       this_type = read_subrange_type (die, cu);
18161       break;
18162     case DW_TAG_base_type:
18163       this_type = read_base_type (die, cu);
18164       break;
18165     case DW_TAG_unspecified_type:
18166       this_type = read_unspecified_type (die, cu);
18167       break;
18168     case DW_TAG_namespace:
18169       this_type = read_namespace_type (die, cu);
18170       break;
18171     case DW_TAG_module:
18172       this_type = read_module_type (die, cu);
18173       break;
18174     default:
18175       complaint (&symfile_complaints,
18176                  _("unexpected tag in read_type_die: '%s'"),
18177                  dwarf_tag_name (die->tag));
18178       break;
18179     }
18180
18181   return this_type;
18182 }
18183
18184 /* See if we can figure out if the class lives in a namespace.  We do
18185    this by looking for a member function; its demangled name will
18186    contain namespace info, if there is any.
18187    Return the computed name or NULL.
18188    Space for the result is allocated on the objfile's obstack.
18189    This is the full-die version of guess_partial_die_structure_name.
18190    In this case we know DIE has no useful parent.  */
18191
18192 static char *
18193 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
18194 {
18195   struct die_info *spec_die;
18196   struct dwarf2_cu *spec_cu;
18197   struct die_info *child;
18198
18199   spec_cu = cu;
18200   spec_die = die_specification (die, &spec_cu);
18201   if (spec_die != NULL)
18202     {
18203       die = spec_die;
18204       cu = spec_cu;
18205     }
18206
18207   for (child = die->child;
18208        child != NULL;
18209        child = child->sibling)
18210     {
18211       if (child->tag == DW_TAG_subprogram)
18212         {
18213           struct attribute *attr;
18214
18215           attr = dwarf2_attr (child, DW_AT_linkage_name, cu);
18216           if (attr == NULL)
18217             attr = dwarf2_attr (child, DW_AT_MIPS_linkage_name, cu);
18218           if (attr != NULL)
18219             {
18220               char *actual_name
18221                 = language_class_name_from_physname (cu->language_defn,
18222                                                      DW_STRING (attr));
18223               char *name = NULL;
18224
18225               if (actual_name != NULL)
18226                 {
18227                   const char *die_name = dwarf2_name (die, cu);
18228
18229                   if (die_name != NULL
18230                       && strcmp (die_name, actual_name) != 0)
18231                     {
18232                       /* Strip off the class name from the full name.
18233                          We want the prefix.  */
18234                       int die_name_len = strlen (die_name);
18235                       int actual_name_len = strlen (actual_name);
18236
18237                       /* Test for '::' as a sanity check.  */
18238                       if (actual_name_len > die_name_len + 2
18239                           && actual_name[actual_name_len
18240                                          - die_name_len - 1] == ':')
18241                         name =
18242                           obstack_copy0 (&cu->objfile->objfile_obstack,
18243                                          actual_name,
18244                                          actual_name_len - die_name_len - 2);
18245                     }
18246                 }
18247               xfree (actual_name);
18248               return name;
18249             }
18250         }
18251     }
18252
18253   return NULL;
18254 }
18255
18256 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
18257    prefix part in such case.  See
18258    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
18259
18260 static char *
18261 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
18262 {
18263   struct attribute *attr;
18264   char *base;
18265
18266   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
18267       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
18268     return NULL;
18269
18270   attr = dwarf2_attr (die, DW_AT_name, cu);
18271   if (attr != NULL && DW_STRING (attr) != NULL)
18272     return NULL;
18273
18274   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
18275   if (attr == NULL)
18276     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
18277   if (attr == NULL || DW_STRING (attr) == NULL)
18278     return NULL;
18279
18280   /* dwarf2_name had to be already called.  */
18281   gdb_assert (DW_STRING_IS_CANONICAL (attr));
18282
18283   /* Strip the base name, keep any leading namespaces/classes.  */
18284   base = strrchr (DW_STRING (attr), ':');
18285   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
18286     return "";
18287
18288   return obstack_copy0 (&cu->objfile->objfile_obstack,
18289                         DW_STRING (attr), &base[-1] - DW_STRING (attr));
18290 }
18291
18292 /* Return the name of the namespace/class that DIE is defined within,
18293    or "" if we can't tell.  The caller should not xfree the result.
18294
18295    For example, if we're within the method foo() in the following
18296    code:
18297
18298    namespace N {
18299      class C {
18300        void foo () {
18301        }
18302      };
18303    }
18304
18305    then determine_prefix on foo's die will return "N::C".  */
18306
18307 static const char *
18308 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
18309 {
18310   struct die_info *parent, *spec_die;
18311   struct dwarf2_cu *spec_cu;
18312   struct type *parent_type;
18313   char *retval;
18314
18315   if (cu->language != language_cplus && cu->language != language_java
18316       && cu->language != language_fortran)
18317     return "";
18318
18319   retval = anonymous_struct_prefix (die, cu);
18320   if (retval)
18321     return retval;
18322
18323   /* We have to be careful in the presence of DW_AT_specification.
18324      For example, with GCC 3.4, given the code
18325
18326      namespace N {
18327        void foo() {
18328          // Definition of N::foo.
18329        }
18330      }
18331
18332      then we'll have a tree of DIEs like this:
18333
18334      1: DW_TAG_compile_unit
18335        2: DW_TAG_namespace        // N
18336          3: DW_TAG_subprogram     // declaration of N::foo
18337        4: DW_TAG_subprogram       // definition of N::foo
18338             DW_AT_specification   // refers to die #3
18339
18340      Thus, when processing die #4, we have to pretend that we're in
18341      the context of its DW_AT_specification, namely the contex of die
18342      #3.  */
18343   spec_cu = cu;
18344   spec_die = die_specification (die, &spec_cu);
18345   if (spec_die == NULL)
18346     parent = die->parent;
18347   else
18348     {
18349       parent = spec_die->parent;
18350       cu = spec_cu;
18351     }
18352
18353   if (parent == NULL)
18354     return "";
18355   else if (parent->building_fullname)
18356     {
18357       const char *name;
18358       const char *parent_name;
18359
18360       /* It has been seen on RealView 2.2 built binaries,
18361          DW_TAG_template_type_param types actually _defined_ as
18362          children of the parent class:
18363
18364          enum E {};
18365          template class <class Enum> Class{};
18366          Class<enum E> class_e;
18367
18368          1: DW_TAG_class_type (Class)
18369            2: DW_TAG_enumeration_type (E)
18370              3: DW_TAG_enumerator (enum1:0)
18371              3: DW_TAG_enumerator (enum2:1)
18372              ...
18373            2: DW_TAG_template_type_param
18374               DW_AT_type  DW_FORM_ref_udata (E)
18375
18376          Besides being broken debug info, it can put GDB into an
18377          infinite loop.  Consider:
18378
18379          When we're building the full name for Class<E>, we'll start
18380          at Class, and go look over its template type parameters,
18381          finding E.  We'll then try to build the full name of E, and
18382          reach here.  We're now trying to build the full name of E,
18383          and look over the parent DIE for containing scope.  In the
18384          broken case, if we followed the parent DIE of E, we'd again
18385          find Class, and once again go look at its template type
18386          arguments, etc., etc.  Simply don't consider such parent die
18387          as source-level parent of this die (it can't be, the language
18388          doesn't allow it), and break the loop here.  */
18389       name = dwarf2_name (die, cu);
18390       parent_name = dwarf2_name (parent, cu);
18391       complaint (&symfile_complaints,
18392                  _("template param type '%s' defined within parent '%s'"),
18393                  name ? name : "<unknown>",
18394                  parent_name ? parent_name : "<unknown>");
18395       return "";
18396     }
18397   else
18398     switch (parent->tag)
18399       {
18400       case DW_TAG_namespace:
18401         parent_type = read_type_die (parent, cu);
18402         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
18403            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
18404            Work around this problem here.  */
18405         if (cu->language == language_cplus
18406             && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
18407           return "";
18408         /* We give a name to even anonymous namespaces.  */
18409         return TYPE_TAG_NAME (parent_type);
18410       case DW_TAG_class_type:
18411       case DW_TAG_interface_type:
18412       case DW_TAG_structure_type:
18413       case DW_TAG_union_type:
18414       case DW_TAG_module:
18415         parent_type = read_type_die (parent, cu);
18416         if (TYPE_TAG_NAME (parent_type) != NULL)
18417           return TYPE_TAG_NAME (parent_type);
18418         else
18419           /* An anonymous structure is only allowed non-static data
18420              members; no typedefs, no member functions, et cetera.
18421              So it does not need a prefix.  */
18422           return "";
18423       case DW_TAG_compile_unit:
18424       case DW_TAG_partial_unit:
18425         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
18426         if (cu->language == language_cplus
18427             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
18428             && die->child != NULL
18429             && (die->tag == DW_TAG_class_type
18430                 || die->tag == DW_TAG_structure_type
18431                 || die->tag == DW_TAG_union_type))
18432           {
18433             char *name = guess_full_die_structure_name (die, cu);
18434             if (name != NULL)
18435               return name;
18436           }
18437         return "";
18438       default:
18439         return determine_prefix (parent, cu);
18440       }
18441 }
18442
18443 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
18444    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
18445    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
18446    an obconcat, otherwise allocate storage for the result.  The CU argument is
18447    used to determine the language and hence, the appropriate separator.  */
18448
18449 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
18450
18451 static char *
18452 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
18453                  int physname, struct dwarf2_cu *cu)
18454 {
18455   const char *lead = "";
18456   const char *sep;
18457
18458   if (suffix == NULL || suffix[0] == '\0'
18459       || prefix == NULL || prefix[0] == '\0')
18460     sep = "";
18461   else if (cu->language == language_java)
18462     sep = ".";
18463   else if (cu->language == language_fortran && physname)
18464     {
18465       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
18466          DW_AT_MIPS_linkage_name is preferred and used instead.  */
18467
18468       lead = "__";
18469       sep = "_MOD_";
18470     }
18471   else
18472     sep = "::";
18473
18474   if (prefix == NULL)
18475     prefix = "";
18476   if (suffix == NULL)
18477     suffix = "";
18478
18479   if (obs == NULL)
18480     {
18481       char *retval
18482         = xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1);
18483
18484       strcpy (retval, lead);
18485       strcat (retval, prefix);
18486       strcat (retval, sep);
18487       strcat (retval, suffix);
18488       return retval;
18489     }
18490   else
18491     {
18492       /* We have an obstack.  */
18493       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
18494     }
18495 }
18496
18497 /* Return sibling of die, NULL if no sibling.  */
18498
18499 static struct die_info *
18500 sibling_die (struct die_info *die)
18501 {
18502   return die->sibling;
18503 }
18504
18505 /* Get name of a die, return NULL if not found.  */
18506
18507 static const char *
18508 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
18509                           struct obstack *obstack)
18510 {
18511   if (name && cu->language == language_cplus)
18512     {
18513       char *canon_name = cp_canonicalize_string (name);
18514
18515       if (canon_name != NULL)
18516         {
18517           if (strcmp (canon_name, name) != 0)
18518             name = obstack_copy0 (obstack, canon_name, strlen (canon_name));
18519           xfree (canon_name);
18520         }
18521     }
18522
18523   return name;
18524 }
18525
18526 /* Get name of a die, return NULL if not found.  */
18527
18528 static const char *
18529 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
18530 {
18531   struct attribute *attr;
18532
18533   attr = dwarf2_attr (die, DW_AT_name, cu);
18534   if ((!attr || !DW_STRING (attr))
18535       && die->tag != DW_TAG_class_type
18536       && die->tag != DW_TAG_interface_type
18537       && die->tag != DW_TAG_structure_type
18538       && die->tag != DW_TAG_union_type)
18539     return NULL;
18540
18541   switch (die->tag)
18542     {
18543     case DW_TAG_compile_unit:
18544     case DW_TAG_partial_unit:
18545       /* Compilation units have a DW_AT_name that is a filename, not
18546          a source language identifier.  */
18547     case DW_TAG_enumeration_type:
18548     case DW_TAG_enumerator:
18549       /* These tags always have simple identifiers already; no need
18550          to canonicalize them.  */
18551       return DW_STRING (attr);
18552
18553     case DW_TAG_subprogram:
18554       /* Java constructors will all be named "<init>", so return
18555          the class name when we see this special case.  */
18556       if (cu->language == language_java
18557           && DW_STRING (attr) != NULL
18558           && strcmp (DW_STRING (attr), "<init>") == 0)
18559         {
18560           struct dwarf2_cu *spec_cu = cu;
18561           struct die_info *spec_die;
18562
18563           /* GCJ will output '<init>' for Java constructor names.
18564              For this special case, return the name of the parent class.  */
18565
18566           /* GCJ may output suprogram DIEs with AT_specification set.
18567              If so, use the name of the specified DIE.  */
18568           spec_die = die_specification (die, &spec_cu);
18569           if (spec_die != NULL)
18570             return dwarf2_name (spec_die, spec_cu);
18571
18572           do
18573             {
18574               die = die->parent;
18575               if (die->tag == DW_TAG_class_type)
18576                 return dwarf2_name (die, cu);
18577             }
18578           while (die->tag != DW_TAG_compile_unit
18579                  && die->tag != DW_TAG_partial_unit);
18580         }
18581       break;
18582
18583     case DW_TAG_class_type:
18584     case DW_TAG_interface_type:
18585     case DW_TAG_structure_type:
18586     case DW_TAG_union_type:
18587       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
18588          structures or unions.  These were of the form "._%d" in GCC 4.1,
18589          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
18590          and GCC 4.4.  We work around this problem by ignoring these.  */
18591       if (attr && DW_STRING (attr)
18592           && (strncmp (DW_STRING (attr), "._", 2) == 0
18593               || strncmp (DW_STRING (attr), "<anonymous", 10) == 0))
18594         return NULL;
18595
18596       /* GCC might emit a nameless typedef that has a linkage name.  See
18597          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
18598       if (!attr || DW_STRING (attr) == NULL)
18599         {
18600           char *demangled = NULL;
18601
18602           attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
18603           if (attr == NULL)
18604             attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
18605
18606           if (attr == NULL || DW_STRING (attr) == NULL)
18607             return NULL;
18608
18609           /* Avoid demangling DW_STRING (attr) the second time on a second
18610              call for the same DIE.  */
18611           if (!DW_STRING_IS_CANONICAL (attr))
18612             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
18613
18614           if (demangled)
18615             {
18616               char *base;
18617
18618               /* FIXME: we already did this for the partial symbol... */
18619               DW_STRING (attr) = obstack_copy0 (&cu->objfile->objfile_obstack,
18620                                                 demangled, strlen (demangled));
18621               DW_STRING_IS_CANONICAL (attr) = 1;
18622               xfree (demangled);
18623
18624               /* Strip any leading namespaces/classes, keep only the base name.
18625                  DW_AT_name for named DIEs does not contain the prefixes.  */
18626               base = strrchr (DW_STRING (attr), ':');
18627               if (base && base > DW_STRING (attr) && base[-1] == ':')
18628                 return &base[1];
18629               else
18630                 return DW_STRING (attr);
18631             }
18632         }
18633       break;
18634
18635     default:
18636       break;
18637     }
18638
18639   if (!DW_STRING_IS_CANONICAL (attr))
18640     {
18641       DW_STRING (attr)
18642         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
18643                                     &cu->objfile->objfile_obstack);
18644       DW_STRING_IS_CANONICAL (attr) = 1;
18645     }
18646   return DW_STRING (attr);
18647 }
18648
18649 /* Return the die that this die in an extension of, or NULL if there
18650    is none.  *EXT_CU is the CU containing DIE on input, and the CU
18651    containing the return value on output.  */
18652
18653 static struct die_info *
18654 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
18655 {
18656   struct attribute *attr;
18657
18658   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
18659   if (attr == NULL)
18660     return NULL;
18661
18662   return follow_die_ref (die, attr, ext_cu);
18663 }
18664
18665 /* Convert a DIE tag into its string name.  */
18666
18667 static const char *
18668 dwarf_tag_name (unsigned tag)
18669 {
18670   const char *name = get_DW_TAG_name (tag);
18671
18672   if (name == NULL)
18673     return "DW_TAG_<unknown>";
18674
18675   return name;
18676 }
18677
18678 /* Convert a DWARF attribute code into its string name.  */
18679
18680 static const char *
18681 dwarf_attr_name (unsigned attr)
18682 {
18683   const char *name;
18684
18685 #ifdef MIPS /* collides with DW_AT_HP_block_index */
18686   if (attr == DW_AT_MIPS_fde)
18687     return "DW_AT_MIPS_fde";
18688 #else
18689   if (attr == DW_AT_HP_block_index)
18690     return "DW_AT_HP_block_index";
18691 #endif
18692
18693   name = get_DW_AT_name (attr);
18694
18695   if (name == NULL)
18696     return "DW_AT_<unknown>";
18697
18698   return name;
18699 }
18700
18701 /* Convert a DWARF value form code into its string name.  */
18702
18703 static const char *
18704 dwarf_form_name (unsigned form)
18705 {
18706   const char *name = get_DW_FORM_name (form);
18707
18708   if (name == NULL)
18709     return "DW_FORM_<unknown>";
18710
18711   return name;
18712 }
18713
18714 static char *
18715 dwarf_bool_name (unsigned mybool)
18716 {
18717   if (mybool)
18718     return "TRUE";
18719   else
18720     return "FALSE";
18721 }
18722
18723 /* Convert a DWARF type code into its string name.  */
18724
18725 static const char *
18726 dwarf_type_encoding_name (unsigned enc)
18727 {
18728   const char *name = get_DW_ATE_name (enc);
18729
18730   if (name == NULL)
18731     return "DW_ATE_<unknown>";
18732
18733   return name;
18734 }
18735
18736 static void
18737 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
18738 {
18739   unsigned int i;
18740
18741   print_spaces (indent, f);
18742   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
18743            dwarf_tag_name (die->tag), die->abbrev, die->offset.sect_off);
18744
18745   if (die->parent != NULL)
18746     {
18747       print_spaces (indent, f);
18748       fprintf_unfiltered (f, "  parent at offset: 0x%x\n",
18749                           die->parent->offset.sect_off);
18750     }
18751
18752   print_spaces (indent, f);
18753   fprintf_unfiltered (f, "  has children: %s\n",
18754            dwarf_bool_name (die->child != NULL));
18755
18756   print_spaces (indent, f);
18757   fprintf_unfiltered (f, "  attributes:\n");
18758
18759   for (i = 0; i < die->num_attrs; ++i)
18760     {
18761       print_spaces (indent, f);
18762       fprintf_unfiltered (f, "    %s (%s) ",
18763                dwarf_attr_name (die->attrs[i].name),
18764                dwarf_form_name (die->attrs[i].form));
18765
18766       switch (die->attrs[i].form)
18767         {
18768         case DW_FORM_addr:
18769         case DW_FORM_GNU_addr_index:
18770           fprintf_unfiltered (f, "address: ");
18771           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
18772           break;
18773         case DW_FORM_block2:
18774         case DW_FORM_block4:
18775         case DW_FORM_block:
18776         case DW_FORM_block1:
18777           fprintf_unfiltered (f, "block: size %s",
18778                               pulongest (DW_BLOCK (&die->attrs[i])->size));
18779           break;
18780         case DW_FORM_exprloc:
18781           fprintf_unfiltered (f, "expression: size %s",
18782                               pulongest (DW_BLOCK (&die->attrs[i])->size));
18783           break;
18784         case DW_FORM_ref_addr:
18785           fprintf_unfiltered (f, "ref address: ");
18786           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
18787           break;
18788         case DW_FORM_GNU_ref_alt:
18789           fprintf_unfiltered (f, "alt ref address: ");
18790           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
18791           break;
18792         case DW_FORM_ref1:
18793         case DW_FORM_ref2:
18794         case DW_FORM_ref4:
18795         case DW_FORM_ref8:
18796         case DW_FORM_ref_udata:
18797           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
18798                               (long) (DW_UNSND (&die->attrs[i])));
18799           break;
18800         case DW_FORM_data1:
18801         case DW_FORM_data2:
18802         case DW_FORM_data4:
18803         case DW_FORM_data8:
18804         case DW_FORM_udata:
18805         case DW_FORM_sdata:
18806           fprintf_unfiltered (f, "constant: %s",
18807                               pulongest (DW_UNSND (&die->attrs[i])));
18808           break;
18809         case DW_FORM_sec_offset:
18810           fprintf_unfiltered (f, "section offset: %s",
18811                               pulongest (DW_UNSND (&die->attrs[i])));
18812           break;
18813         case DW_FORM_ref_sig8:
18814           fprintf_unfiltered (f, "signature: %s",
18815                               hex_string (DW_SIGNATURE (&die->attrs[i])));
18816           break;
18817         case DW_FORM_string:
18818         case DW_FORM_strp:
18819         case DW_FORM_GNU_str_index:
18820         case DW_FORM_GNU_strp_alt:
18821           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
18822                    DW_STRING (&die->attrs[i])
18823                    ? DW_STRING (&die->attrs[i]) : "",
18824                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
18825           break;
18826         case DW_FORM_flag:
18827           if (DW_UNSND (&die->attrs[i]))
18828             fprintf_unfiltered (f, "flag: TRUE");
18829           else
18830             fprintf_unfiltered (f, "flag: FALSE");
18831           break;
18832         case DW_FORM_flag_present:
18833           fprintf_unfiltered (f, "flag: TRUE");
18834           break;
18835         case DW_FORM_indirect:
18836           /* The reader will have reduced the indirect form to
18837              the "base form" so this form should not occur.  */
18838           fprintf_unfiltered (f, 
18839                               "unexpected attribute form: DW_FORM_indirect");
18840           break;
18841         default:
18842           fprintf_unfiltered (f, "unsupported attribute form: %d.",
18843                    die->attrs[i].form);
18844           break;
18845         }
18846       fprintf_unfiltered (f, "\n");
18847     }
18848 }
18849
18850 static void
18851 dump_die_for_error (struct die_info *die)
18852 {
18853   dump_die_shallow (gdb_stderr, 0, die);
18854 }
18855
18856 static void
18857 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
18858 {
18859   int indent = level * 4;
18860
18861   gdb_assert (die != NULL);
18862
18863   if (level >= max_level)
18864     return;
18865
18866   dump_die_shallow (f, indent, die);
18867
18868   if (die->child != NULL)
18869     {
18870       print_spaces (indent, f);
18871       fprintf_unfiltered (f, "  Children:");
18872       if (level + 1 < max_level)
18873         {
18874           fprintf_unfiltered (f, "\n");
18875           dump_die_1 (f, level + 1, max_level, die->child);
18876         }
18877       else
18878         {
18879           fprintf_unfiltered (f,
18880                               " [not printed, max nesting level reached]\n");
18881         }
18882     }
18883
18884   if (die->sibling != NULL && level > 0)
18885     {
18886       dump_die_1 (f, level, max_level, die->sibling);
18887     }
18888 }
18889
18890 /* This is called from the pdie macro in gdbinit.in.
18891    It's not static so gcc will keep a copy callable from gdb.  */
18892
18893 void
18894 dump_die (struct die_info *die, int max_level)
18895 {
18896   dump_die_1 (gdb_stdlog, 0, max_level, die);
18897 }
18898
18899 static void
18900 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
18901 {
18902   void **slot;
18903
18904   slot = htab_find_slot_with_hash (cu->die_hash, die, die->offset.sect_off,
18905                                    INSERT);
18906
18907   *slot = die;
18908 }
18909
18910 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
18911    required kind.  */
18912
18913 static sect_offset
18914 dwarf2_get_ref_die_offset (const struct attribute *attr)
18915 {
18916   sect_offset retval = { DW_UNSND (attr) };
18917
18918   if (attr_form_is_ref (attr))
18919     return retval;
18920
18921   retval.sect_off = 0;
18922   complaint (&symfile_complaints,
18923              _("unsupported die ref attribute form: '%s'"),
18924              dwarf_form_name (attr->form));
18925   return retval;
18926 }
18927
18928 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
18929  * the value held by the attribute is not constant.  */
18930
18931 static LONGEST
18932 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
18933 {
18934   if (attr->form == DW_FORM_sdata)
18935     return DW_SND (attr);
18936   else if (attr->form == DW_FORM_udata
18937            || attr->form == DW_FORM_data1
18938            || attr->form == DW_FORM_data2
18939            || attr->form == DW_FORM_data4
18940            || attr->form == DW_FORM_data8)
18941     return DW_UNSND (attr);
18942   else
18943     {
18944       complaint (&symfile_complaints,
18945                  _("Attribute value is not a constant (%s)"),
18946                  dwarf_form_name (attr->form));
18947       return default_value;
18948     }
18949 }
18950
18951 /* Follow reference or signature attribute ATTR of SRC_DIE.
18952    On entry *REF_CU is the CU of SRC_DIE.
18953    On exit *REF_CU is the CU of the result.  */
18954
18955 static struct die_info *
18956 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
18957                        struct dwarf2_cu **ref_cu)
18958 {
18959   struct die_info *die;
18960
18961   if (attr_form_is_ref (attr))
18962     die = follow_die_ref (src_die, attr, ref_cu);
18963   else if (attr->form == DW_FORM_ref_sig8)
18964     die = follow_die_sig (src_die, attr, ref_cu);
18965   else
18966     {
18967       dump_die_for_error (src_die);
18968       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
18969              objfile_name ((*ref_cu)->objfile));
18970     }
18971
18972   return die;
18973 }
18974
18975 /* Follow reference OFFSET.
18976    On entry *REF_CU is the CU of the source die referencing OFFSET.
18977    On exit *REF_CU is the CU of the result.
18978    Returns NULL if OFFSET is invalid.  */
18979
18980 static struct die_info *
18981 follow_die_offset (sect_offset offset, int offset_in_dwz,
18982                    struct dwarf2_cu **ref_cu)
18983 {
18984   struct die_info temp_die;
18985   struct dwarf2_cu *target_cu, *cu = *ref_cu;
18986
18987   gdb_assert (cu->per_cu != NULL);
18988
18989   target_cu = cu;
18990
18991   if (cu->per_cu->is_debug_types)
18992     {
18993       /* .debug_types CUs cannot reference anything outside their CU.
18994          If they need to, they have to reference a signatured type via
18995          DW_FORM_ref_sig8.  */
18996       if (! offset_in_cu_p (&cu->header, offset))
18997         return NULL;
18998     }
18999   else if (offset_in_dwz != cu->per_cu->is_dwz
19000            || ! offset_in_cu_p (&cu->header, offset))
19001     {
19002       struct dwarf2_per_cu_data *per_cu;
19003
19004       per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
19005                                                  cu->objfile);
19006
19007       /* If necessary, add it to the queue and load its DIEs.  */
19008       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
19009         load_full_comp_unit (per_cu, cu->language);
19010
19011       target_cu = per_cu->cu;
19012     }
19013   else if (cu->dies == NULL)
19014     {
19015       /* We're loading full DIEs during partial symbol reading.  */
19016       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
19017       load_full_comp_unit (cu->per_cu, language_minimal);
19018     }
19019
19020   *ref_cu = target_cu;
19021   temp_die.offset = offset;
19022   return htab_find_with_hash (target_cu->die_hash, &temp_die, offset.sect_off);
19023 }
19024
19025 /* Follow reference attribute ATTR of SRC_DIE.
19026    On entry *REF_CU is the CU of SRC_DIE.
19027    On exit *REF_CU is the CU of the result.  */
19028
19029 static struct die_info *
19030 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
19031                 struct dwarf2_cu **ref_cu)
19032 {
19033   sect_offset offset = dwarf2_get_ref_die_offset (attr);
19034   struct dwarf2_cu *cu = *ref_cu;
19035   struct die_info *die;
19036
19037   die = follow_die_offset (offset,
19038                            (attr->form == DW_FORM_GNU_ref_alt
19039                             || cu->per_cu->is_dwz),
19040                            ref_cu);
19041   if (!die)
19042     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
19043            "at 0x%x [in module %s]"),
19044            offset.sect_off, src_die->offset.sect_off,
19045            objfile_name (cu->objfile));
19046
19047   return die;
19048 }
19049
19050 /* Return DWARF block referenced by DW_AT_location of DIE at OFFSET at PER_CU.
19051    Returned value is intended for DW_OP_call*.  Returned
19052    dwarf2_locexpr_baton->data has lifetime of PER_CU->OBJFILE.  */
19053
19054 struct dwarf2_locexpr_baton
19055 dwarf2_fetch_die_loc_sect_off (sect_offset offset,
19056                                struct dwarf2_per_cu_data *per_cu,
19057                                CORE_ADDR (*get_frame_pc) (void *baton),
19058                                void *baton)
19059 {
19060   struct dwarf2_cu *cu;
19061   struct die_info *die;
19062   struct attribute *attr;
19063   struct dwarf2_locexpr_baton retval;
19064
19065   dw2_setup (per_cu->objfile);
19066
19067   if (per_cu->cu == NULL)
19068     load_cu (per_cu);
19069   cu = per_cu->cu;
19070
19071   die = follow_die_offset (offset, per_cu->is_dwz, &cu);
19072   if (!die)
19073     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
19074            offset.sect_off, objfile_name (per_cu->objfile));
19075
19076   attr = dwarf2_attr (die, DW_AT_location, cu);
19077   if (!attr)
19078     {
19079       /* DWARF: "If there is no such attribute, then there is no effect.".
19080          DATA is ignored if SIZE is 0.  */
19081
19082       retval.data = NULL;
19083       retval.size = 0;
19084     }
19085   else if (attr_form_is_section_offset (attr))
19086     {
19087       struct dwarf2_loclist_baton loclist_baton;
19088       CORE_ADDR pc = (*get_frame_pc) (baton);
19089       size_t size;
19090
19091       fill_in_loclist_baton (cu, &loclist_baton, attr);
19092
19093       retval.data = dwarf2_find_location_expression (&loclist_baton,
19094                                                      &size, pc);
19095       retval.size = size;
19096     }
19097   else
19098     {
19099       if (!attr_form_is_block (attr))
19100         error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
19101                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
19102                offset.sect_off, objfile_name (per_cu->objfile));
19103
19104       retval.data = DW_BLOCK (attr)->data;
19105       retval.size = DW_BLOCK (attr)->size;
19106     }
19107   retval.per_cu = cu->per_cu;
19108
19109   age_cached_comp_units ();
19110
19111   return retval;
19112 }
19113
19114 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
19115    offset.  */
19116
19117 struct dwarf2_locexpr_baton
19118 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
19119                              struct dwarf2_per_cu_data *per_cu,
19120                              CORE_ADDR (*get_frame_pc) (void *baton),
19121                              void *baton)
19122 {
19123   sect_offset offset = { per_cu->offset.sect_off + offset_in_cu.cu_off };
19124
19125   return dwarf2_fetch_die_loc_sect_off (offset, per_cu, get_frame_pc, baton);
19126 }
19127
19128 /* Write a constant of a given type as target-ordered bytes into
19129    OBSTACK.  */
19130
19131 static const gdb_byte *
19132 write_constant_as_bytes (struct obstack *obstack,
19133                          enum bfd_endian byte_order,
19134                          struct type *type,
19135                          ULONGEST value,
19136                          LONGEST *len)
19137 {
19138   gdb_byte *result;
19139
19140   *len = TYPE_LENGTH (type);
19141   result = obstack_alloc (obstack, *len);
19142   store_unsigned_integer (result, *len, byte_order, value);
19143
19144   return result;
19145 }
19146
19147 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
19148    pointer to the constant bytes and set LEN to the length of the
19149    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
19150    does not have a DW_AT_const_value, return NULL.  */
19151
19152 const gdb_byte *
19153 dwarf2_fetch_constant_bytes (sect_offset offset,
19154                              struct dwarf2_per_cu_data *per_cu,
19155                              struct obstack *obstack,
19156                              LONGEST *len)
19157 {
19158   struct dwarf2_cu *cu;
19159   struct die_info *die;
19160   struct attribute *attr;
19161   const gdb_byte *result = NULL;
19162   struct type *type;
19163   LONGEST value;
19164   enum bfd_endian byte_order;
19165
19166   dw2_setup (per_cu->objfile);
19167
19168   if (per_cu->cu == NULL)
19169     load_cu (per_cu);
19170   cu = per_cu->cu;
19171
19172   die = follow_die_offset (offset, per_cu->is_dwz, &cu);
19173   if (!die)
19174     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
19175            offset.sect_off, objfile_name (per_cu->objfile));
19176
19177
19178   attr = dwarf2_attr (die, DW_AT_const_value, cu);
19179   if (attr == NULL)
19180     return NULL;
19181
19182   byte_order = (bfd_big_endian (per_cu->objfile->obfd)
19183                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
19184
19185   switch (attr->form)
19186     {
19187     case DW_FORM_addr:
19188     case DW_FORM_GNU_addr_index:
19189       {
19190         gdb_byte *tem;
19191
19192         *len = cu->header.addr_size;
19193         tem = obstack_alloc (obstack, *len);
19194         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
19195         result = tem;
19196       }
19197       break;
19198     case DW_FORM_string:
19199     case DW_FORM_strp:
19200     case DW_FORM_GNU_str_index:
19201     case DW_FORM_GNU_strp_alt:
19202       /* DW_STRING is already allocated on the objfile obstack, point
19203          directly to it.  */
19204       result = (const gdb_byte *) DW_STRING (attr);
19205       *len = strlen (DW_STRING (attr));
19206       break;
19207     case DW_FORM_block1:
19208     case DW_FORM_block2:
19209     case DW_FORM_block4:
19210     case DW_FORM_block:
19211     case DW_FORM_exprloc:
19212       result = DW_BLOCK (attr)->data;
19213       *len = DW_BLOCK (attr)->size;
19214       break;
19215
19216       /* The DW_AT_const_value attributes are supposed to carry the
19217          symbol's value "represented as it would be on the target
19218          architecture."  By the time we get here, it's already been
19219          converted to host endianness, so we just need to sign- or
19220          zero-extend it as appropriate.  */
19221     case DW_FORM_data1:
19222       type = die_type (die, cu);
19223       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
19224       if (result == NULL)
19225         result = write_constant_as_bytes (obstack, byte_order,
19226                                           type, value, len);
19227       break;
19228     case DW_FORM_data2:
19229       type = die_type (die, cu);
19230       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
19231       if (result == NULL)
19232         result = write_constant_as_bytes (obstack, byte_order,
19233                                           type, value, len);
19234       break;
19235     case DW_FORM_data4:
19236       type = die_type (die, cu);
19237       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
19238       if (result == NULL)
19239         result = write_constant_as_bytes (obstack, byte_order,
19240                                           type, value, len);
19241       break;
19242     case DW_FORM_data8:
19243       type = die_type (die, cu);
19244       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
19245       if (result == NULL)
19246         result = write_constant_as_bytes (obstack, byte_order,
19247                                           type, value, len);
19248       break;
19249
19250     case DW_FORM_sdata:
19251       type = die_type (die, cu);
19252       result = write_constant_as_bytes (obstack, byte_order,
19253                                         type, DW_SND (attr), len);
19254       break;
19255
19256     case DW_FORM_udata:
19257       type = die_type (die, cu);
19258       result = write_constant_as_bytes (obstack, byte_order,
19259                                         type, DW_UNSND (attr), len);
19260       break;
19261
19262     default:
19263       complaint (&symfile_complaints,
19264                  _("unsupported const value attribute form: '%s'"),
19265                  dwarf_form_name (attr->form));
19266       break;
19267     }
19268
19269   return result;
19270 }
19271
19272 /* Return the type of the DIE at DIE_OFFSET in the CU named by
19273    PER_CU.  */
19274
19275 struct type *
19276 dwarf2_get_die_type (cu_offset die_offset,
19277                      struct dwarf2_per_cu_data *per_cu)
19278 {
19279   sect_offset die_offset_sect;
19280
19281   dw2_setup (per_cu->objfile);
19282
19283   die_offset_sect.sect_off = per_cu->offset.sect_off + die_offset.cu_off;
19284   return get_die_type_at_offset (die_offset_sect, per_cu);
19285 }
19286
19287 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
19288    On entry *REF_CU is the CU of SRC_DIE.
19289    On exit *REF_CU is the CU of the result.
19290    Returns NULL if the referenced DIE isn't found.  */
19291
19292 static struct die_info *
19293 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
19294                   struct dwarf2_cu **ref_cu)
19295 {
19296   struct objfile *objfile = (*ref_cu)->objfile;
19297   struct die_info temp_die;
19298   struct dwarf2_cu *sig_cu;
19299   struct die_info *die;
19300
19301   /* While it might be nice to assert sig_type->type == NULL here,
19302      we can get here for DW_AT_imported_declaration where we need
19303      the DIE not the type.  */
19304
19305   /* If necessary, add it to the queue and load its DIEs.  */
19306
19307   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
19308     read_signatured_type (sig_type);
19309
19310   sig_cu = sig_type->per_cu.cu;
19311   gdb_assert (sig_cu != NULL);
19312   gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
19313   temp_die.offset = sig_type->type_offset_in_section;
19314   die = htab_find_with_hash (sig_cu->die_hash, &temp_die,
19315                              temp_die.offset.sect_off);
19316   if (die)
19317     {
19318       /* For .gdb_index version 7 keep track of included TUs.
19319          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
19320       if (dwarf2_per_objfile->index_table != NULL
19321           && dwarf2_per_objfile->index_table->version <= 7)
19322         {
19323           VEC_safe_push (dwarf2_per_cu_ptr,
19324                          (*ref_cu)->per_cu->imported_symtabs,
19325                          sig_cu->per_cu);
19326         }
19327
19328       *ref_cu = sig_cu;
19329       return die;
19330     }
19331
19332   return NULL;
19333 }
19334
19335 /* Follow signatured type referenced by ATTR in SRC_DIE.
19336    On entry *REF_CU is the CU of SRC_DIE.
19337    On exit *REF_CU is the CU of the result.
19338    The result is the DIE of the type.
19339    If the referenced type cannot be found an error is thrown.  */
19340
19341 static struct die_info *
19342 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
19343                 struct dwarf2_cu **ref_cu)
19344 {
19345   ULONGEST signature = DW_SIGNATURE (attr);
19346   struct signatured_type *sig_type;
19347   struct die_info *die;
19348
19349   gdb_assert (attr->form == DW_FORM_ref_sig8);
19350
19351   sig_type = lookup_signatured_type (*ref_cu, signature);
19352   /* sig_type will be NULL if the signatured type is missing from
19353      the debug info.  */
19354   if (sig_type == NULL)
19355     {
19356       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
19357                " from DIE at 0x%x [in module %s]"),
19358              hex_string (signature), src_die->offset.sect_off,
19359              objfile_name ((*ref_cu)->objfile));
19360     }
19361
19362   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
19363   if (die == NULL)
19364     {
19365       dump_die_for_error (src_die);
19366       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
19367                " from DIE at 0x%x [in module %s]"),
19368              hex_string (signature), src_die->offset.sect_off,
19369              objfile_name ((*ref_cu)->objfile));
19370     }
19371
19372   return die;
19373 }
19374
19375 /* Get the type specified by SIGNATURE referenced in DIE/CU,
19376    reading in and processing the type unit if necessary.  */
19377
19378 static struct type *
19379 get_signatured_type (struct die_info *die, ULONGEST signature,
19380                      struct dwarf2_cu *cu)
19381 {
19382   struct signatured_type *sig_type;
19383   struct dwarf2_cu *type_cu;
19384   struct die_info *type_die;
19385   struct type *type;
19386
19387   sig_type = lookup_signatured_type (cu, signature);
19388   /* sig_type will be NULL if the signatured type is missing from
19389      the debug info.  */
19390   if (sig_type == NULL)
19391     {
19392       complaint (&symfile_complaints,
19393                  _("Dwarf Error: Cannot find signatured DIE %s referenced"
19394                    " from DIE at 0x%x [in module %s]"),
19395                  hex_string (signature), die->offset.sect_off,
19396                  objfile_name (dwarf2_per_objfile->objfile));
19397       return build_error_marker_type (cu, die);
19398     }
19399
19400   /* If we already know the type we're done.  */
19401   if (sig_type->type != NULL)
19402     return sig_type->type;
19403
19404   type_cu = cu;
19405   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
19406   if (type_die != NULL)
19407     {
19408       /* N.B. We need to call get_die_type to ensure only one type for this DIE
19409          is created.  This is important, for example, because for c++ classes
19410          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
19411       type = read_type_die (type_die, type_cu);
19412       if (type == NULL)
19413         {
19414           complaint (&symfile_complaints,
19415                      _("Dwarf Error: Cannot build signatured type %s"
19416                        " referenced from DIE at 0x%x [in module %s]"),
19417                      hex_string (signature), die->offset.sect_off,
19418                      objfile_name (dwarf2_per_objfile->objfile));
19419           type = build_error_marker_type (cu, die);
19420         }
19421     }
19422   else
19423     {
19424       complaint (&symfile_complaints,
19425                  _("Dwarf Error: Problem reading signatured DIE %s referenced"
19426                    " from DIE at 0x%x [in module %s]"),
19427                  hex_string (signature), die->offset.sect_off,
19428                  objfile_name (dwarf2_per_objfile->objfile));
19429       type = build_error_marker_type (cu, die);
19430     }
19431   sig_type->type = type;
19432
19433   return type;
19434 }
19435
19436 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
19437    reading in and processing the type unit if necessary.  */
19438
19439 static struct type *
19440 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
19441                           struct dwarf2_cu *cu) /* ARI: editCase function */
19442 {
19443   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
19444   if (attr_form_is_ref (attr))
19445     {
19446       struct dwarf2_cu *type_cu = cu;
19447       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
19448
19449       return read_type_die (type_die, type_cu);
19450     }
19451   else if (attr->form == DW_FORM_ref_sig8)
19452     {
19453       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
19454     }
19455   else
19456     {
19457       complaint (&symfile_complaints,
19458                  _("Dwarf Error: DW_AT_signature has bad form %s in DIE"
19459                    " at 0x%x [in module %s]"),
19460                  dwarf_form_name (attr->form), die->offset.sect_off,
19461                  objfile_name (dwarf2_per_objfile->objfile));
19462       return build_error_marker_type (cu, die);
19463     }
19464 }
19465
19466 /* Load the DIEs associated with type unit PER_CU into memory.  */
19467
19468 static void
19469 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
19470 {
19471   struct signatured_type *sig_type;
19472
19473   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
19474   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
19475
19476   /* We have the per_cu, but we need the signatured_type.
19477      Fortunately this is an easy translation.  */
19478   gdb_assert (per_cu->is_debug_types);
19479   sig_type = (struct signatured_type *) per_cu;
19480
19481   gdb_assert (per_cu->cu == NULL);
19482
19483   read_signatured_type (sig_type);
19484
19485   gdb_assert (per_cu->cu != NULL);
19486 }
19487
19488 /* die_reader_func for read_signatured_type.
19489    This is identical to load_full_comp_unit_reader,
19490    but is kept separate for now.  */
19491
19492 static void
19493 read_signatured_type_reader (const struct die_reader_specs *reader,
19494                              const gdb_byte *info_ptr,
19495                              struct die_info *comp_unit_die,
19496                              int has_children,
19497                              void *data)
19498 {
19499   struct dwarf2_cu *cu = reader->cu;
19500
19501   gdb_assert (cu->die_hash == NULL);
19502   cu->die_hash =
19503     htab_create_alloc_ex (cu->header.length / 12,
19504                           die_hash,
19505                           die_eq,
19506                           NULL,
19507                           &cu->comp_unit_obstack,
19508                           hashtab_obstack_allocate,
19509                           dummy_obstack_deallocate);
19510
19511   if (has_children)
19512     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
19513                                                   &info_ptr, comp_unit_die);
19514   cu->dies = comp_unit_die;
19515   /* comp_unit_die is not stored in die_hash, no need.  */
19516
19517   /* We try not to read any attributes in this function, because not
19518      all CUs needed for references have been loaded yet, and symbol
19519      table processing isn't initialized.  But we have to set the CU language,
19520      or we won't be able to build types correctly.
19521      Similarly, if we do not read the producer, we can not apply
19522      producer-specific interpretation.  */
19523   prepare_one_comp_unit (cu, cu->dies, language_minimal);
19524 }
19525
19526 /* Read in a signatured type and build its CU and DIEs.
19527    If the type is a stub for the real type in a DWO file,
19528    read in the real type from the DWO file as well.  */
19529
19530 static void
19531 read_signatured_type (struct signatured_type *sig_type)
19532 {
19533   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
19534
19535   gdb_assert (per_cu->is_debug_types);
19536   gdb_assert (per_cu->cu == NULL);
19537
19538   init_cutu_and_read_dies (per_cu, NULL, 0, 1,
19539                            read_signatured_type_reader, NULL);
19540   sig_type->per_cu.tu_read = 1;
19541 }
19542
19543 /* Decode simple location descriptions.
19544    Given a pointer to a dwarf block that defines a location, compute
19545    the location and return the value.
19546
19547    NOTE drow/2003-11-18: This function is called in two situations
19548    now: for the address of static or global variables (partial symbols
19549    only) and for offsets into structures which are expected to be
19550    (more or less) constant.  The partial symbol case should go away,
19551    and only the constant case should remain.  That will let this
19552    function complain more accurately.  A few special modes are allowed
19553    without complaint for global variables (for instance, global
19554    register values and thread-local values).
19555
19556    A location description containing no operations indicates that the
19557    object is optimized out.  The return value is 0 for that case.
19558    FIXME drow/2003-11-16: No callers check for this case any more; soon all
19559    callers will only want a very basic result and this can become a
19560    complaint.
19561
19562    Note that stack[0] is unused except as a default error return.  */
19563
19564 static CORE_ADDR
19565 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
19566 {
19567   struct objfile *objfile = cu->objfile;
19568   size_t i;
19569   size_t size = blk->size;
19570   const gdb_byte *data = blk->data;
19571   CORE_ADDR stack[64];
19572   int stacki;
19573   unsigned int bytes_read, unsnd;
19574   gdb_byte op;
19575
19576   i = 0;
19577   stacki = 0;
19578   stack[stacki] = 0;
19579   stack[++stacki] = 0;
19580
19581   while (i < size)
19582     {
19583       op = data[i++];
19584       switch (op)
19585         {
19586         case DW_OP_lit0:
19587         case DW_OP_lit1:
19588         case DW_OP_lit2:
19589         case DW_OP_lit3:
19590         case DW_OP_lit4:
19591         case DW_OP_lit5:
19592         case DW_OP_lit6:
19593         case DW_OP_lit7:
19594         case DW_OP_lit8:
19595         case DW_OP_lit9:
19596         case DW_OP_lit10:
19597         case DW_OP_lit11:
19598         case DW_OP_lit12:
19599         case DW_OP_lit13:
19600         case DW_OP_lit14:
19601         case DW_OP_lit15:
19602         case DW_OP_lit16:
19603         case DW_OP_lit17:
19604         case DW_OP_lit18:
19605         case DW_OP_lit19:
19606         case DW_OP_lit20:
19607         case DW_OP_lit21:
19608         case DW_OP_lit22:
19609         case DW_OP_lit23:
19610         case DW_OP_lit24:
19611         case DW_OP_lit25:
19612         case DW_OP_lit26:
19613         case DW_OP_lit27:
19614         case DW_OP_lit28:
19615         case DW_OP_lit29:
19616         case DW_OP_lit30:
19617         case DW_OP_lit31:
19618           stack[++stacki] = op - DW_OP_lit0;
19619           break;
19620
19621         case DW_OP_reg0:
19622         case DW_OP_reg1:
19623         case DW_OP_reg2:
19624         case DW_OP_reg3:
19625         case DW_OP_reg4:
19626         case DW_OP_reg5:
19627         case DW_OP_reg6:
19628         case DW_OP_reg7:
19629         case DW_OP_reg8:
19630         case DW_OP_reg9:
19631         case DW_OP_reg10:
19632         case DW_OP_reg11:
19633         case DW_OP_reg12:
19634         case DW_OP_reg13:
19635         case DW_OP_reg14:
19636         case DW_OP_reg15:
19637         case DW_OP_reg16:
19638         case DW_OP_reg17:
19639         case DW_OP_reg18:
19640         case DW_OP_reg19:
19641         case DW_OP_reg20:
19642         case DW_OP_reg21:
19643         case DW_OP_reg22:
19644         case DW_OP_reg23:
19645         case DW_OP_reg24:
19646         case DW_OP_reg25:
19647         case DW_OP_reg26:
19648         case DW_OP_reg27:
19649         case DW_OP_reg28:
19650         case DW_OP_reg29:
19651         case DW_OP_reg30:
19652         case DW_OP_reg31:
19653           stack[++stacki] = op - DW_OP_reg0;
19654           if (i < size)
19655             dwarf2_complex_location_expr_complaint ();
19656           break;
19657
19658         case DW_OP_regx:
19659           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
19660           i += bytes_read;
19661           stack[++stacki] = unsnd;
19662           if (i < size)
19663             dwarf2_complex_location_expr_complaint ();
19664           break;
19665
19666         case DW_OP_addr:
19667           stack[++stacki] = read_address (objfile->obfd, &data[i],
19668                                           cu, &bytes_read);
19669           i += bytes_read;
19670           break;
19671
19672         case DW_OP_const1u:
19673           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
19674           i += 1;
19675           break;
19676
19677         case DW_OP_const1s:
19678           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
19679           i += 1;
19680           break;
19681
19682         case DW_OP_const2u:
19683           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
19684           i += 2;
19685           break;
19686
19687         case DW_OP_const2s:
19688           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
19689           i += 2;
19690           break;
19691
19692         case DW_OP_const4u:
19693           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
19694           i += 4;
19695           break;
19696
19697         case DW_OP_const4s:
19698           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
19699           i += 4;
19700           break;
19701
19702         case DW_OP_const8u:
19703           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
19704           i += 8;
19705           break;
19706
19707         case DW_OP_constu:
19708           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
19709                                                   &bytes_read);
19710           i += bytes_read;
19711           break;
19712
19713         case DW_OP_consts:
19714           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
19715           i += bytes_read;
19716           break;
19717
19718         case DW_OP_dup:
19719           stack[stacki + 1] = stack[stacki];
19720           stacki++;
19721           break;
19722
19723         case DW_OP_plus:
19724           stack[stacki - 1] += stack[stacki];
19725           stacki--;
19726           break;
19727
19728         case DW_OP_plus_uconst:
19729           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
19730                                                  &bytes_read);
19731           i += bytes_read;
19732           break;
19733
19734         case DW_OP_minus:
19735           stack[stacki - 1] -= stack[stacki];
19736           stacki--;
19737           break;
19738
19739         case DW_OP_deref:
19740           /* If we're not the last op, then we definitely can't encode
19741              this using GDB's address_class enum.  This is valid for partial
19742              global symbols, although the variable's address will be bogus
19743              in the psymtab.  */
19744           if (i < size)
19745             dwarf2_complex_location_expr_complaint ();
19746           break;
19747
19748         case DW_OP_GNU_push_tls_address:
19749           /* The top of the stack has the offset from the beginning
19750              of the thread control block at which the variable is located.  */
19751           /* Nothing should follow this operator, so the top of stack would
19752              be returned.  */
19753           /* This is valid for partial global symbols, but the variable's
19754              address will be bogus in the psymtab.  Make it always at least
19755              non-zero to not look as a variable garbage collected by linker
19756              which have DW_OP_addr 0.  */
19757           if (i < size)
19758             dwarf2_complex_location_expr_complaint ();
19759           stack[stacki]++;
19760           break;
19761
19762         case DW_OP_GNU_uninit:
19763           break;
19764
19765         case DW_OP_GNU_addr_index:
19766         case DW_OP_GNU_const_index:
19767           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
19768                                                          &bytes_read);
19769           i += bytes_read;
19770           break;
19771
19772         default:
19773           {
19774             const char *name = get_DW_OP_name (op);
19775
19776             if (name)
19777               complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
19778                          name);
19779             else
19780               complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
19781                          op);
19782           }
19783
19784           return (stack[stacki]);
19785         }
19786
19787       /* Enforce maximum stack depth of SIZE-1 to avoid writing
19788          outside of the allocated space.  Also enforce minimum>0.  */
19789       if (stacki >= ARRAY_SIZE (stack) - 1)
19790         {
19791           complaint (&symfile_complaints,
19792                      _("location description stack overflow"));
19793           return 0;
19794         }
19795
19796       if (stacki <= 0)
19797         {
19798           complaint (&symfile_complaints,
19799                      _("location description stack underflow"));
19800           return 0;
19801         }
19802     }
19803   return (stack[stacki]);
19804 }
19805
19806 /* memory allocation interface */
19807
19808 static struct dwarf_block *
19809 dwarf_alloc_block (struct dwarf2_cu *cu)
19810 {
19811   struct dwarf_block *blk;
19812
19813   blk = (struct dwarf_block *)
19814     obstack_alloc (&cu->comp_unit_obstack, sizeof (struct dwarf_block));
19815   return (blk);
19816 }
19817
19818 static struct die_info *
19819 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
19820 {
19821   struct die_info *die;
19822   size_t size = sizeof (struct die_info);
19823
19824   if (num_attrs > 1)
19825     size += (num_attrs - 1) * sizeof (struct attribute);
19826
19827   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
19828   memset (die, 0, sizeof (struct die_info));
19829   return (die);
19830 }
19831
19832 \f
19833 /* Macro support.  */
19834
19835 /* Return file name relative to the compilation directory of file number I in
19836    *LH's file name table.  The result is allocated using xmalloc; the caller is
19837    responsible for freeing it.  */
19838
19839 static char *
19840 file_file_name (int file, struct line_header *lh)
19841 {
19842   /* Is the file number a valid index into the line header's file name
19843      table?  Remember that file numbers start with one, not zero.  */
19844   if (1 <= file && file <= lh->num_file_names)
19845     {
19846       struct file_entry *fe = &lh->file_names[file - 1];
19847
19848       if (IS_ABSOLUTE_PATH (fe->name) || fe->dir_index == 0)
19849         return xstrdup (fe->name);
19850       return concat (lh->include_dirs[fe->dir_index - 1], SLASH_STRING,
19851                      fe->name, NULL);
19852     }
19853   else
19854     {
19855       /* The compiler produced a bogus file number.  We can at least
19856          record the macro definitions made in the file, even if we
19857          won't be able to find the file by name.  */
19858       char fake_name[80];
19859
19860       xsnprintf (fake_name, sizeof (fake_name),
19861                  "<bad macro file number %d>", file);
19862
19863       complaint (&symfile_complaints,
19864                  _("bad file number in macro information (%d)"),
19865                  file);
19866
19867       return xstrdup (fake_name);
19868     }
19869 }
19870
19871 /* Return the full name of file number I in *LH's file name table.
19872    Use COMP_DIR as the name of the current directory of the
19873    compilation.  The result is allocated using xmalloc; the caller is
19874    responsible for freeing it.  */
19875 static char *
19876 file_full_name (int file, struct line_header *lh, const char *comp_dir)
19877 {
19878   /* Is the file number a valid index into the line header's file name
19879      table?  Remember that file numbers start with one, not zero.  */
19880   if (1 <= file && file <= lh->num_file_names)
19881     {
19882       char *relative = file_file_name (file, lh);
19883
19884       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
19885         return relative;
19886       return reconcat (relative, comp_dir, SLASH_STRING, relative, NULL);
19887     }
19888   else
19889     return file_file_name (file, lh);
19890 }
19891
19892
19893 static struct macro_source_file *
19894 macro_start_file (int file, int line,
19895                   struct macro_source_file *current_file,
19896                   const char *comp_dir,
19897                   struct line_header *lh, struct objfile *objfile)
19898 {
19899   /* File name relative to the compilation directory of this source file.  */
19900   char *file_name = file_file_name (file, lh);
19901
19902   if (! current_file)
19903     {
19904       /* Note: We don't create a macro table for this compilation unit
19905          at all until we actually get a filename.  */
19906       struct macro_table *macro_table = get_macro_table (objfile, comp_dir);
19907
19908       /* If we have no current file, then this must be the start_file
19909          directive for the compilation unit's main source file.  */
19910       current_file = macro_set_main (macro_table, file_name);
19911       macro_define_special (macro_table);
19912     }
19913   else
19914     current_file = macro_include (current_file, line, file_name);
19915
19916   xfree (file_name);
19917
19918   return current_file;
19919 }
19920
19921
19922 /* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
19923    followed by a null byte.  */
19924 static char *
19925 copy_string (const char *buf, int len)
19926 {
19927   char *s = xmalloc (len + 1);
19928
19929   memcpy (s, buf, len);
19930   s[len] = '\0';
19931   return s;
19932 }
19933
19934
19935 static const char *
19936 consume_improper_spaces (const char *p, const char *body)
19937 {
19938   if (*p == ' ')
19939     {
19940       complaint (&symfile_complaints,
19941                  _("macro definition contains spaces "
19942                    "in formal argument list:\n`%s'"),
19943                  body);
19944
19945       while (*p == ' ')
19946         p++;
19947     }
19948
19949   return p;
19950 }
19951
19952
19953 static void
19954 parse_macro_definition (struct macro_source_file *file, int line,
19955                         const char *body)
19956 {
19957   const char *p;
19958
19959   /* The body string takes one of two forms.  For object-like macro
19960      definitions, it should be:
19961
19962         <macro name> " " <definition>
19963
19964      For function-like macro definitions, it should be:
19965
19966         <macro name> "() " <definition>
19967      or
19968         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
19969
19970      Spaces may appear only where explicitly indicated, and in the
19971      <definition>.
19972
19973      The Dwarf 2 spec says that an object-like macro's name is always
19974      followed by a space, but versions of GCC around March 2002 omit
19975      the space when the macro's definition is the empty string.
19976
19977      The Dwarf 2 spec says that there should be no spaces between the
19978      formal arguments in a function-like macro's formal argument list,
19979      but versions of GCC around March 2002 include spaces after the
19980      commas.  */
19981
19982
19983   /* Find the extent of the macro name.  The macro name is terminated
19984      by either a space or null character (for an object-like macro) or
19985      an opening paren (for a function-like macro).  */
19986   for (p = body; *p; p++)
19987     if (*p == ' ' || *p == '(')
19988       break;
19989
19990   if (*p == ' ' || *p == '\0')
19991     {
19992       /* It's an object-like macro.  */
19993       int name_len = p - body;
19994       char *name = copy_string (body, name_len);
19995       const char *replacement;
19996
19997       if (*p == ' ')
19998         replacement = body + name_len + 1;
19999       else
20000         {
20001           dwarf2_macro_malformed_definition_complaint (body);
20002           replacement = body + name_len;
20003         }
20004
20005       macro_define_object (file, line, name, replacement);
20006
20007       xfree (name);
20008     }
20009   else if (*p == '(')
20010     {
20011       /* It's a function-like macro.  */
20012       char *name = copy_string (body, p - body);
20013       int argc = 0;
20014       int argv_size = 1;
20015       char **argv = xmalloc (argv_size * sizeof (*argv));
20016
20017       p++;
20018
20019       p = consume_improper_spaces (p, body);
20020
20021       /* Parse the formal argument list.  */
20022       while (*p && *p != ')')
20023         {
20024           /* Find the extent of the current argument name.  */
20025           const char *arg_start = p;
20026
20027           while (*p && *p != ',' && *p != ')' && *p != ' ')
20028             p++;
20029
20030           if (! *p || p == arg_start)
20031             dwarf2_macro_malformed_definition_complaint (body);
20032           else
20033             {
20034               /* Make sure argv has room for the new argument.  */
20035               if (argc >= argv_size)
20036                 {
20037                   argv_size *= 2;
20038                   argv = xrealloc (argv, argv_size * sizeof (*argv));
20039                 }
20040
20041               argv[argc++] = copy_string (arg_start, p - arg_start);
20042             }
20043
20044           p = consume_improper_spaces (p, body);
20045
20046           /* Consume the comma, if present.  */
20047           if (*p == ',')
20048             {
20049               p++;
20050
20051               p = consume_improper_spaces (p, body);
20052             }
20053         }
20054
20055       if (*p == ')')
20056         {
20057           p++;
20058
20059           if (*p == ' ')
20060             /* Perfectly formed definition, no complaints.  */
20061             macro_define_function (file, line, name,
20062                                    argc, (const char **) argv,
20063                                    p + 1);
20064           else if (*p == '\0')
20065             {
20066               /* Complain, but do define it.  */
20067               dwarf2_macro_malformed_definition_complaint (body);
20068               macro_define_function (file, line, name,
20069                                      argc, (const char **) argv,
20070                                      p);
20071             }
20072           else
20073             /* Just complain.  */
20074             dwarf2_macro_malformed_definition_complaint (body);
20075         }
20076       else
20077         /* Just complain.  */
20078         dwarf2_macro_malformed_definition_complaint (body);
20079
20080       xfree (name);
20081       {
20082         int i;
20083
20084         for (i = 0; i < argc; i++)
20085           xfree (argv[i]);
20086       }
20087       xfree (argv);
20088     }
20089   else
20090     dwarf2_macro_malformed_definition_complaint (body);
20091 }
20092
20093 /* Skip some bytes from BYTES according to the form given in FORM.
20094    Returns the new pointer.  */
20095
20096 static const gdb_byte *
20097 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
20098                  enum dwarf_form form,
20099                  unsigned int offset_size,
20100                  struct dwarf2_section_info *section)
20101 {
20102   unsigned int bytes_read;
20103
20104   switch (form)
20105     {
20106     case DW_FORM_data1:
20107     case DW_FORM_flag:
20108       ++bytes;
20109       break;
20110
20111     case DW_FORM_data2:
20112       bytes += 2;
20113       break;
20114
20115     case DW_FORM_data4:
20116       bytes += 4;
20117       break;
20118
20119     case DW_FORM_data8:
20120       bytes += 8;
20121       break;
20122
20123     case DW_FORM_string:
20124       read_direct_string (abfd, bytes, &bytes_read);
20125       bytes += bytes_read;
20126       break;
20127
20128     case DW_FORM_sec_offset:
20129     case DW_FORM_strp:
20130     case DW_FORM_GNU_strp_alt:
20131       bytes += offset_size;
20132       break;
20133
20134     case DW_FORM_block:
20135       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
20136       bytes += bytes_read;
20137       break;
20138
20139     case DW_FORM_block1:
20140       bytes += 1 + read_1_byte (abfd, bytes);
20141       break;
20142     case DW_FORM_block2:
20143       bytes += 2 + read_2_bytes (abfd, bytes);
20144       break;
20145     case DW_FORM_block4:
20146       bytes += 4 + read_4_bytes (abfd, bytes);
20147       break;
20148
20149     case DW_FORM_sdata:
20150     case DW_FORM_udata:
20151     case DW_FORM_GNU_addr_index:
20152     case DW_FORM_GNU_str_index:
20153       bytes = gdb_skip_leb128 (bytes, buffer_end);
20154       if (bytes == NULL)
20155         {
20156           dwarf2_section_buffer_overflow_complaint (section);
20157           return NULL;
20158         }
20159       break;
20160
20161     default:
20162       {
20163       complain:
20164         complaint (&symfile_complaints,
20165                    _("invalid form 0x%x in `%s'"),
20166                    form, get_section_name (section));
20167         return NULL;
20168       }
20169     }
20170
20171   return bytes;
20172 }
20173
20174 /* A helper for dwarf_decode_macros that handles skipping an unknown
20175    opcode.  Returns an updated pointer to the macro data buffer; or,
20176    on error, issues a complaint and returns NULL.  */
20177
20178 static const gdb_byte *
20179 skip_unknown_opcode (unsigned int opcode,
20180                      const gdb_byte **opcode_definitions,
20181                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
20182                      bfd *abfd,
20183                      unsigned int offset_size,
20184                      struct dwarf2_section_info *section)
20185 {
20186   unsigned int bytes_read, i;
20187   unsigned long arg;
20188   const gdb_byte *defn;
20189
20190   if (opcode_definitions[opcode] == NULL)
20191     {
20192       complaint (&symfile_complaints,
20193                  _("unrecognized DW_MACFINO opcode 0x%x"),
20194                  opcode);
20195       return NULL;
20196     }
20197
20198   defn = opcode_definitions[opcode];
20199   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
20200   defn += bytes_read;
20201
20202   for (i = 0; i < arg; ++i)
20203     {
20204       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end, defn[i], offset_size,
20205                                  section);
20206       if (mac_ptr == NULL)
20207         {
20208           /* skip_form_bytes already issued the complaint.  */
20209           return NULL;
20210         }
20211     }
20212
20213   return mac_ptr;
20214 }
20215
20216 /* A helper function which parses the header of a macro section.
20217    If the macro section is the extended (for now called "GNU") type,
20218    then this updates *OFFSET_SIZE.  Returns a pointer to just after
20219    the header, or issues a complaint and returns NULL on error.  */
20220
20221 static const gdb_byte *
20222 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
20223                           bfd *abfd,
20224                           const gdb_byte *mac_ptr,
20225                           unsigned int *offset_size,
20226                           int section_is_gnu)
20227 {
20228   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
20229
20230   if (section_is_gnu)
20231     {
20232       unsigned int version, flags;
20233
20234       version = read_2_bytes (abfd, mac_ptr);
20235       if (version != 4)
20236         {
20237           complaint (&symfile_complaints,
20238                      _("unrecognized version `%d' in .debug_macro section"),
20239                      version);
20240           return NULL;
20241         }
20242       mac_ptr += 2;
20243
20244       flags = read_1_byte (abfd, mac_ptr);
20245       ++mac_ptr;
20246       *offset_size = (flags & 1) ? 8 : 4;
20247
20248       if ((flags & 2) != 0)
20249         /* We don't need the line table offset.  */
20250         mac_ptr += *offset_size;
20251
20252       /* Vendor opcode descriptions.  */
20253       if ((flags & 4) != 0)
20254         {
20255           unsigned int i, count;
20256
20257           count = read_1_byte (abfd, mac_ptr);
20258           ++mac_ptr;
20259           for (i = 0; i < count; ++i)
20260             {
20261               unsigned int opcode, bytes_read;
20262               unsigned long arg;
20263
20264               opcode = read_1_byte (abfd, mac_ptr);
20265               ++mac_ptr;
20266               opcode_definitions[opcode] = mac_ptr;
20267               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20268               mac_ptr += bytes_read;
20269               mac_ptr += arg;
20270             }
20271         }
20272     }
20273
20274   return mac_ptr;
20275 }
20276
20277 /* A helper for dwarf_decode_macros that handles the GNU extensions,
20278    including DW_MACRO_GNU_transparent_include.  */
20279
20280 static void
20281 dwarf_decode_macro_bytes (bfd *abfd,
20282                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
20283                           struct macro_source_file *current_file,
20284                           struct line_header *lh, const char *comp_dir,
20285                           struct dwarf2_section_info *section,
20286                           int section_is_gnu, int section_is_dwz,
20287                           unsigned int offset_size,
20288                           struct objfile *objfile,
20289                           htab_t include_hash)
20290 {
20291   enum dwarf_macro_record_type macinfo_type;
20292   int at_commandline;
20293   const gdb_byte *opcode_definitions[256];
20294
20295   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
20296                                       &offset_size, section_is_gnu);
20297   if (mac_ptr == NULL)
20298     {
20299       /* We already issued a complaint.  */
20300       return;
20301     }
20302
20303   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
20304      GDB is still reading the definitions from command line.  First
20305      DW_MACINFO_start_file will need to be ignored as it was already executed
20306      to create CURRENT_FILE for the main source holding also the command line
20307      definitions.  On first met DW_MACINFO_start_file this flag is reset to
20308      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
20309
20310   at_commandline = 1;
20311
20312   do
20313     {
20314       /* Do we at least have room for a macinfo type byte?  */
20315       if (mac_ptr >= mac_end)
20316         {
20317           dwarf2_section_buffer_overflow_complaint (section);
20318           break;
20319         }
20320
20321       macinfo_type = read_1_byte (abfd, mac_ptr);
20322       mac_ptr++;
20323
20324       /* Note that we rely on the fact that the corresponding GNU and
20325          DWARF constants are the same.  */
20326       switch (macinfo_type)
20327         {
20328           /* A zero macinfo type indicates the end of the macro
20329              information.  */
20330         case 0:
20331           break;
20332
20333         case DW_MACRO_GNU_define:
20334         case DW_MACRO_GNU_undef:
20335         case DW_MACRO_GNU_define_indirect:
20336         case DW_MACRO_GNU_undef_indirect:
20337         case DW_MACRO_GNU_define_indirect_alt:
20338         case DW_MACRO_GNU_undef_indirect_alt:
20339           {
20340             unsigned int bytes_read;
20341             int line;
20342             const char *body;
20343             int is_define;
20344
20345             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20346             mac_ptr += bytes_read;
20347
20348             if (macinfo_type == DW_MACRO_GNU_define
20349                 || macinfo_type == DW_MACRO_GNU_undef)
20350               {
20351                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
20352                 mac_ptr += bytes_read;
20353               }
20354             else
20355               {
20356                 LONGEST str_offset;
20357
20358                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
20359                 mac_ptr += offset_size;
20360
20361                 if (macinfo_type == DW_MACRO_GNU_define_indirect_alt
20362                     || macinfo_type == DW_MACRO_GNU_undef_indirect_alt
20363                     || section_is_dwz)
20364                   {
20365                     struct dwz_file *dwz = dwarf2_get_dwz_file ();
20366
20367                     body = read_indirect_string_from_dwz (dwz, str_offset);
20368                   }
20369                 else
20370                   body = read_indirect_string_at_offset (abfd, str_offset);
20371               }
20372
20373             is_define = (macinfo_type == DW_MACRO_GNU_define
20374                          || macinfo_type == DW_MACRO_GNU_define_indirect
20375                          || macinfo_type == DW_MACRO_GNU_define_indirect_alt);
20376             if (! current_file)
20377               {
20378                 /* DWARF violation as no main source is present.  */
20379                 complaint (&symfile_complaints,
20380                            _("debug info with no main source gives macro %s "
20381                              "on line %d: %s"),
20382                            is_define ? _("definition") : _("undefinition"),
20383                            line, body);
20384                 break;
20385               }
20386             if ((line == 0 && !at_commandline)
20387                 || (line != 0 && at_commandline))
20388               complaint (&symfile_complaints,
20389                          _("debug info gives %s macro %s with %s line %d: %s"),
20390                          at_commandline ? _("command-line") : _("in-file"),
20391                          is_define ? _("definition") : _("undefinition"),
20392                          line == 0 ? _("zero") : _("non-zero"), line, body);
20393
20394             if (is_define)
20395               parse_macro_definition (current_file, line, body);
20396             else
20397               {
20398                 gdb_assert (macinfo_type == DW_MACRO_GNU_undef
20399                             || macinfo_type == DW_MACRO_GNU_undef_indirect
20400                             || macinfo_type == DW_MACRO_GNU_undef_indirect_alt);
20401                 macro_undef (current_file, line, body);
20402               }
20403           }
20404           break;
20405
20406         case DW_MACRO_GNU_start_file:
20407           {
20408             unsigned int bytes_read;
20409             int line, file;
20410
20411             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20412             mac_ptr += bytes_read;
20413             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20414             mac_ptr += bytes_read;
20415
20416             if ((line == 0 && !at_commandline)
20417                 || (line != 0 && at_commandline))
20418               complaint (&symfile_complaints,
20419                          _("debug info gives source %d included "
20420                            "from %s at %s line %d"),
20421                          file, at_commandline ? _("command-line") : _("file"),
20422                          line == 0 ? _("zero") : _("non-zero"), line);
20423
20424             if (at_commandline)
20425               {
20426                 /* This DW_MACRO_GNU_start_file was executed in the
20427                    pass one.  */
20428                 at_commandline = 0;
20429               }
20430             else
20431               current_file = macro_start_file (file, line,
20432                                                current_file, comp_dir,
20433                                                lh, objfile);
20434           }
20435           break;
20436
20437         case DW_MACRO_GNU_end_file:
20438           if (! current_file)
20439             complaint (&symfile_complaints,
20440                        _("macro debug info has an unmatched "
20441                          "`close_file' directive"));
20442           else
20443             {
20444               current_file = current_file->included_by;
20445               if (! current_file)
20446                 {
20447                   enum dwarf_macro_record_type next_type;
20448
20449                   /* GCC circa March 2002 doesn't produce the zero
20450                      type byte marking the end of the compilation
20451                      unit.  Complain if it's not there, but exit no
20452                      matter what.  */
20453
20454                   /* Do we at least have room for a macinfo type byte?  */
20455                   if (mac_ptr >= mac_end)
20456                     {
20457                       dwarf2_section_buffer_overflow_complaint (section);
20458                       return;
20459                     }
20460
20461                   /* We don't increment mac_ptr here, so this is just
20462                      a look-ahead.  */
20463                   next_type = read_1_byte (abfd, mac_ptr);
20464                   if (next_type != 0)
20465                     complaint (&symfile_complaints,
20466                                _("no terminating 0-type entry for "
20467                                  "macros in `.debug_macinfo' section"));
20468
20469                   return;
20470                 }
20471             }
20472           break;
20473
20474         case DW_MACRO_GNU_transparent_include:
20475         case DW_MACRO_GNU_transparent_include_alt:
20476           {
20477             LONGEST offset;
20478             void **slot;
20479             bfd *include_bfd = abfd;
20480             struct dwarf2_section_info *include_section = section;
20481             struct dwarf2_section_info alt_section;
20482             const gdb_byte *include_mac_end = mac_end;
20483             int is_dwz = section_is_dwz;
20484             const gdb_byte *new_mac_ptr;
20485
20486             offset = read_offset_1 (abfd, mac_ptr, offset_size);
20487             mac_ptr += offset_size;
20488
20489             if (macinfo_type == DW_MACRO_GNU_transparent_include_alt)
20490               {
20491                 struct dwz_file *dwz = dwarf2_get_dwz_file ();
20492
20493                 dwarf2_read_section (dwarf2_per_objfile->objfile,
20494                                      &dwz->macro);
20495
20496                 include_section = &dwz->macro;
20497                 include_bfd = get_section_bfd_owner (include_section);
20498                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
20499                 is_dwz = 1;
20500               }
20501
20502             new_mac_ptr = include_section->buffer + offset;
20503             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
20504
20505             if (*slot != NULL)
20506               {
20507                 /* This has actually happened; see
20508                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
20509                 complaint (&symfile_complaints,
20510                            _("recursive DW_MACRO_GNU_transparent_include in "
20511                              ".debug_macro section"));
20512               }
20513             else
20514               {
20515                 *slot = (void *) new_mac_ptr;
20516
20517                 dwarf_decode_macro_bytes (include_bfd, new_mac_ptr,
20518                                           include_mac_end, current_file,
20519                                           lh, comp_dir,
20520                                           section, section_is_gnu, is_dwz,
20521                                           offset_size, objfile, include_hash);
20522
20523                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
20524               }
20525           }
20526           break;
20527
20528         case DW_MACINFO_vendor_ext:
20529           if (!section_is_gnu)
20530             {
20531               unsigned int bytes_read;
20532               int constant;
20533
20534               constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20535               mac_ptr += bytes_read;
20536               read_direct_string (abfd, mac_ptr, &bytes_read);
20537               mac_ptr += bytes_read;
20538
20539               /* We don't recognize any vendor extensions.  */
20540               break;
20541             }
20542           /* FALLTHROUGH */
20543
20544         default:
20545           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
20546                                          mac_ptr, mac_end, abfd, offset_size,
20547                                          section);
20548           if (mac_ptr == NULL)
20549             return;
20550           break;
20551         }
20552     } while (macinfo_type != 0);
20553 }
20554
20555 static void
20556 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
20557                      const char *comp_dir, int section_is_gnu)
20558 {
20559   struct objfile *objfile = dwarf2_per_objfile->objfile;
20560   struct line_header *lh = cu->line_header;
20561   bfd *abfd;
20562   const gdb_byte *mac_ptr, *mac_end;
20563   struct macro_source_file *current_file = 0;
20564   enum dwarf_macro_record_type macinfo_type;
20565   unsigned int offset_size = cu->header.offset_size;
20566   const gdb_byte *opcode_definitions[256];
20567   struct cleanup *cleanup;
20568   htab_t include_hash;
20569   void **slot;
20570   struct dwarf2_section_info *section;
20571   const char *section_name;
20572
20573   if (cu->dwo_unit != NULL)
20574     {
20575       if (section_is_gnu)
20576         {
20577           section = &cu->dwo_unit->dwo_file->sections.macro;
20578           section_name = ".debug_macro.dwo";
20579         }
20580       else
20581         {
20582           section = &cu->dwo_unit->dwo_file->sections.macinfo;
20583           section_name = ".debug_macinfo.dwo";
20584         }
20585     }
20586   else
20587     {
20588       if (section_is_gnu)
20589         {
20590           section = &dwarf2_per_objfile->macro;
20591           section_name = ".debug_macro";
20592         }
20593       else
20594         {
20595           section = &dwarf2_per_objfile->macinfo;
20596           section_name = ".debug_macinfo";
20597         }
20598     }
20599
20600   dwarf2_read_section (objfile, section);
20601   if (section->buffer == NULL)
20602     {
20603       complaint (&symfile_complaints, _("missing %s section"), section_name);
20604       return;
20605     }
20606   abfd = get_section_bfd_owner (section);
20607
20608   /* First pass: Find the name of the base filename.
20609      This filename is needed in order to process all macros whose definition
20610      (or undefinition) comes from the command line.  These macros are defined
20611      before the first DW_MACINFO_start_file entry, and yet still need to be
20612      associated to the base file.
20613
20614      To determine the base file name, we scan the macro definitions until we
20615      reach the first DW_MACINFO_start_file entry.  We then initialize
20616      CURRENT_FILE accordingly so that any macro definition found before the
20617      first DW_MACINFO_start_file can still be associated to the base file.  */
20618
20619   mac_ptr = section->buffer + offset;
20620   mac_end = section->buffer + section->size;
20621
20622   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
20623                                       &offset_size, section_is_gnu);
20624   if (mac_ptr == NULL)
20625     {
20626       /* We already issued a complaint.  */
20627       return;
20628     }
20629
20630   do
20631     {
20632       /* Do we at least have room for a macinfo type byte?  */
20633       if (mac_ptr >= mac_end)
20634         {
20635           /* Complaint is printed during the second pass as GDB will probably
20636              stop the first pass earlier upon finding
20637              DW_MACINFO_start_file.  */
20638           break;
20639         }
20640
20641       macinfo_type = read_1_byte (abfd, mac_ptr);
20642       mac_ptr++;
20643
20644       /* Note that we rely on the fact that the corresponding GNU and
20645          DWARF constants are the same.  */
20646       switch (macinfo_type)
20647         {
20648           /* A zero macinfo type indicates the end of the macro
20649              information.  */
20650         case 0:
20651           break;
20652
20653         case DW_MACRO_GNU_define:
20654         case DW_MACRO_GNU_undef:
20655           /* Only skip the data by MAC_PTR.  */
20656           {
20657             unsigned int bytes_read;
20658
20659             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20660             mac_ptr += bytes_read;
20661             read_direct_string (abfd, mac_ptr, &bytes_read);
20662             mac_ptr += bytes_read;
20663           }
20664           break;
20665
20666         case DW_MACRO_GNU_start_file:
20667           {
20668             unsigned int bytes_read;
20669             int line, file;
20670
20671             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20672             mac_ptr += bytes_read;
20673             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20674             mac_ptr += bytes_read;
20675
20676             current_file = macro_start_file (file, line, current_file,
20677                                              comp_dir, lh, objfile);
20678           }
20679           break;
20680
20681         case DW_MACRO_GNU_end_file:
20682           /* No data to skip by MAC_PTR.  */
20683           break;
20684
20685         case DW_MACRO_GNU_define_indirect:
20686         case DW_MACRO_GNU_undef_indirect:
20687         case DW_MACRO_GNU_define_indirect_alt:
20688         case DW_MACRO_GNU_undef_indirect_alt:
20689           {
20690             unsigned int bytes_read;
20691
20692             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20693             mac_ptr += bytes_read;
20694             mac_ptr += offset_size;
20695           }
20696           break;
20697
20698         case DW_MACRO_GNU_transparent_include:
20699         case DW_MACRO_GNU_transparent_include_alt:
20700           /* Note that, according to the spec, a transparent include
20701              chain cannot call DW_MACRO_GNU_start_file.  So, we can just
20702              skip this opcode.  */
20703           mac_ptr += offset_size;
20704           break;
20705
20706         case DW_MACINFO_vendor_ext:
20707           /* Only skip the data by MAC_PTR.  */
20708           if (!section_is_gnu)
20709             {
20710               unsigned int bytes_read;
20711
20712               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20713               mac_ptr += bytes_read;
20714               read_direct_string (abfd, mac_ptr, &bytes_read);
20715               mac_ptr += bytes_read;
20716             }
20717           /* FALLTHROUGH */
20718
20719         default:
20720           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
20721                                          mac_ptr, mac_end, abfd, offset_size,
20722                                          section);
20723           if (mac_ptr == NULL)
20724             return;
20725           break;
20726         }
20727     } while (macinfo_type != 0 && current_file == NULL);
20728
20729   /* Second pass: Process all entries.
20730
20731      Use the AT_COMMAND_LINE flag to determine whether we are still processing
20732      command-line macro definitions/undefinitions.  This flag is unset when we
20733      reach the first DW_MACINFO_start_file entry.  */
20734
20735   include_hash = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
20736                                     NULL, xcalloc, xfree);
20737   cleanup = make_cleanup_htab_delete (include_hash);
20738   mac_ptr = section->buffer + offset;
20739   slot = htab_find_slot (include_hash, mac_ptr, INSERT);
20740   *slot = (void *) mac_ptr;
20741   dwarf_decode_macro_bytes (abfd, mac_ptr, mac_end,
20742                             current_file, lh, comp_dir, section,
20743                             section_is_gnu, 0,
20744                             offset_size, objfile, include_hash);
20745   do_cleanups (cleanup);
20746 }
20747
20748 /* Check if the attribute's form is a DW_FORM_block*
20749    if so return true else false.  */
20750
20751 static int
20752 attr_form_is_block (const struct attribute *attr)
20753 {
20754   return (attr == NULL ? 0 :
20755       attr->form == DW_FORM_block1
20756       || attr->form == DW_FORM_block2
20757       || attr->form == DW_FORM_block4
20758       || attr->form == DW_FORM_block
20759       || attr->form == DW_FORM_exprloc);
20760 }
20761
20762 /* Return non-zero if ATTR's value is a section offset --- classes
20763    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
20764    You may use DW_UNSND (attr) to retrieve such offsets.
20765
20766    Section 7.5.4, "Attribute Encodings", explains that no attribute
20767    may have a value that belongs to more than one of these classes; it
20768    would be ambiguous if we did, because we use the same forms for all
20769    of them.  */
20770
20771 static int
20772 attr_form_is_section_offset (const struct attribute *attr)
20773 {
20774   return (attr->form == DW_FORM_data4
20775           || attr->form == DW_FORM_data8
20776           || attr->form == DW_FORM_sec_offset);
20777 }
20778
20779 /* Return non-zero if ATTR's value falls in the 'constant' class, or
20780    zero otherwise.  When this function returns true, you can apply
20781    dwarf2_get_attr_constant_value to it.
20782
20783    However, note that for some attributes you must check
20784    attr_form_is_section_offset before using this test.  DW_FORM_data4
20785    and DW_FORM_data8 are members of both the constant class, and of
20786    the classes that contain offsets into other debug sections
20787    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
20788    that, if an attribute's can be either a constant or one of the
20789    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
20790    taken as section offsets, not constants.  */
20791
20792 static int
20793 attr_form_is_constant (const struct attribute *attr)
20794 {
20795   switch (attr->form)
20796     {
20797     case DW_FORM_sdata:
20798     case DW_FORM_udata:
20799     case DW_FORM_data1:
20800     case DW_FORM_data2:
20801     case DW_FORM_data4:
20802     case DW_FORM_data8:
20803       return 1;
20804     default:
20805       return 0;
20806     }
20807 }
20808
20809
20810 /* DW_ADDR is always stored already as sect_offset; despite for the forms
20811    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
20812
20813 static int
20814 attr_form_is_ref (const struct attribute *attr)
20815 {
20816   switch (attr->form)
20817     {
20818     case DW_FORM_ref_addr:
20819     case DW_FORM_ref1:
20820     case DW_FORM_ref2:
20821     case DW_FORM_ref4:
20822     case DW_FORM_ref8:
20823     case DW_FORM_ref_udata:
20824     case DW_FORM_GNU_ref_alt:
20825       return 1;
20826     default:
20827       return 0;
20828     }
20829 }
20830
20831 /* Return the .debug_loc section to use for CU.
20832    For DWO files use .debug_loc.dwo.  */
20833
20834 static struct dwarf2_section_info *
20835 cu_debug_loc_section (struct dwarf2_cu *cu)
20836 {
20837   if (cu->dwo_unit)
20838     return &cu->dwo_unit->dwo_file->sections.loc;
20839   return &dwarf2_per_objfile->loc;
20840 }
20841
20842 /* A helper function that fills in a dwarf2_loclist_baton.  */
20843
20844 static void
20845 fill_in_loclist_baton (struct dwarf2_cu *cu,
20846                        struct dwarf2_loclist_baton *baton,
20847                        const struct attribute *attr)
20848 {
20849   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
20850
20851   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20852
20853   baton->per_cu = cu->per_cu;
20854   gdb_assert (baton->per_cu);
20855   /* We don't know how long the location list is, but make sure we
20856      don't run off the edge of the section.  */
20857   baton->size = section->size - DW_UNSND (attr);
20858   baton->data = section->buffer + DW_UNSND (attr);
20859   baton->base_address = cu->base_address;
20860   baton->from_dwo = cu->dwo_unit != NULL;
20861 }
20862
20863 static void
20864 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
20865                              struct dwarf2_cu *cu, int is_block)
20866 {
20867   struct objfile *objfile = dwarf2_per_objfile->objfile;
20868   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
20869
20870   if (attr_form_is_section_offset (attr)
20871       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
20872          the section.  If so, fall through to the complaint in the
20873          other branch.  */
20874       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
20875     {
20876       struct dwarf2_loclist_baton *baton;
20877
20878       baton = obstack_alloc (&objfile->objfile_obstack,
20879                              sizeof (struct dwarf2_loclist_baton));
20880
20881       fill_in_loclist_baton (cu, baton, attr);
20882
20883       if (cu->base_known == 0)
20884         complaint (&symfile_complaints,
20885                    _("Location list used without "
20886                      "specifying the CU base address."));
20887
20888       SYMBOL_ACLASS_INDEX (sym) = (is_block
20889                                    ? dwarf2_loclist_block_index
20890                                    : dwarf2_loclist_index);
20891       SYMBOL_LOCATION_BATON (sym) = baton;
20892     }
20893   else
20894     {
20895       struct dwarf2_locexpr_baton *baton;
20896
20897       baton = obstack_alloc (&objfile->objfile_obstack,
20898                              sizeof (struct dwarf2_locexpr_baton));
20899       baton->per_cu = cu->per_cu;
20900       gdb_assert (baton->per_cu);
20901
20902       if (attr_form_is_block (attr))
20903         {
20904           /* Note that we're just copying the block's data pointer
20905              here, not the actual data.  We're still pointing into the
20906              info_buffer for SYM's objfile; right now we never release
20907              that buffer, but when we do clean up properly this may
20908              need to change.  */
20909           baton->size = DW_BLOCK (attr)->size;
20910           baton->data = DW_BLOCK (attr)->data;
20911         }
20912       else
20913         {
20914           dwarf2_invalid_attrib_class_complaint ("location description",
20915                                                  SYMBOL_NATURAL_NAME (sym));
20916           baton->size = 0;
20917         }
20918
20919       SYMBOL_ACLASS_INDEX (sym) = (is_block
20920                                    ? dwarf2_locexpr_block_index
20921                                    : dwarf2_locexpr_index);
20922       SYMBOL_LOCATION_BATON (sym) = baton;
20923     }
20924 }
20925
20926 /* Return the OBJFILE associated with the compilation unit CU.  If CU
20927    came from a separate debuginfo file, then the master objfile is
20928    returned.  */
20929
20930 struct objfile *
20931 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
20932 {
20933   struct objfile *objfile = per_cu->objfile;
20934
20935   /* Return the master objfile, so that we can report and look up the
20936      correct file containing this variable.  */
20937   if (objfile->separate_debug_objfile_backlink)
20938     objfile = objfile->separate_debug_objfile_backlink;
20939
20940   return objfile;
20941 }
20942
20943 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
20944    (CU_HEADERP is unused in such case) or prepare a temporary copy at
20945    CU_HEADERP first.  */
20946
20947 static const struct comp_unit_head *
20948 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
20949                        struct dwarf2_per_cu_data *per_cu)
20950 {
20951   const gdb_byte *info_ptr;
20952
20953   if (per_cu->cu)
20954     return &per_cu->cu->header;
20955
20956   info_ptr = per_cu->section->buffer + per_cu->offset.sect_off;
20957
20958   memset (cu_headerp, 0, sizeof (*cu_headerp));
20959   read_comp_unit_head (cu_headerp, info_ptr, per_cu->objfile->obfd);
20960
20961   return cu_headerp;
20962 }
20963
20964 /* Return the address size given in the compilation unit header for CU.  */
20965
20966 int
20967 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
20968 {
20969   struct comp_unit_head cu_header_local;
20970   const struct comp_unit_head *cu_headerp;
20971
20972   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
20973
20974   return cu_headerp->addr_size;
20975 }
20976
20977 /* Return the offset size given in the compilation unit header for CU.  */
20978
20979 int
20980 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
20981 {
20982   struct comp_unit_head cu_header_local;
20983   const struct comp_unit_head *cu_headerp;
20984
20985   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
20986
20987   return cu_headerp->offset_size;
20988 }
20989
20990 /* See its dwarf2loc.h declaration.  */
20991
20992 int
20993 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
20994 {
20995   struct comp_unit_head cu_header_local;
20996   const struct comp_unit_head *cu_headerp;
20997
20998   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
20999
21000   if (cu_headerp->version == 2)
21001     return cu_headerp->addr_size;
21002   else
21003     return cu_headerp->offset_size;
21004 }
21005
21006 /* Return the text offset of the CU.  The returned offset comes from
21007    this CU's objfile.  If this objfile came from a separate debuginfo
21008    file, then the offset may be different from the corresponding
21009    offset in the parent objfile.  */
21010
21011 CORE_ADDR
21012 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
21013 {
21014   struct objfile *objfile = per_cu->objfile;
21015
21016   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21017 }
21018
21019 /* Locate the .debug_info compilation unit from CU's objfile which contains
21020    the DIE at OFFSET.  Raises an error on failure.  */
21021
21022 static struct dwarf2_per_cu_data *
21023 dwarf2_find_containing_comp_unit (sect_offset offset,
21024                                   unsigned int offset_in_dwz,
21025                                   struct objfile *objfile)
21026 {
21027   struct dwarf2_per_cu_data *this_cu;
21028   int low, high;
21029   const sect_offset *cu_off;
21030
21031   low = 0;
21032   high = dwarf2_per_objfile->n_comp_units - 1;
21033   while (high > low)
21034     {
21035       struct dwarf2_per_cu_data *mid_cu;
21036       int mid = low + (high - low) / 2;
21037
21038       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
21039       cu_off = &mid_cu->offset;
21040       if (mid_cu->is_dwz > offset_in_dwz
21041           || (mid_cu->is_dwz == offset_in_dwz
21042               && cu_off->sect_off >= offset.sect_off))
21043         high = mid;
21044       else
21045         low = mid + 1;
21046     }
21047   gdb_assert (low == high);
21048   this_cu = dwarf2_per_objfile->all_comp_units[low];
21049   cu_off = &this_cu->offset;
21050   if (this_cu->is_dwz != offset_in_dwz || cu_off->sect_off > offset.sect_off)
21051     {
21052       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
21053         error (_("Dwarf Error: could not find partial DIE containing "
21054                "offset 0x%lx [in module %s]"),
21055                (long) offset.sect_off, bfd_get_filename (objfile->obfd));
21056
21057       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset.sect_off
21058                   <= offset.sect_off);
21059       return dwarf2_per_objfile->all_comp_units[low-1];
21060     }
21061   else
21062     {
21063       this_cu = dwarf2_per_objfile->all_comp_units[low];
21064       if (low == dwarf2_per_objfile->n_comp_units - 1
21065           && offset.sect_off >= this_cu->offset.sect_off + this_cu->length)
21066         error (_("invalid dwarf2 offset %u"), offset.sect_off);
21067       gdb_assert (offset.sect_off < this_cu->offset.sect_off + this_cu->length);
21068       return this_cu;
21069     }
21070 }
21071
21072 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
21073
21074 static void
21075 init_one_comp_unit (struct dwarf2_cu *cu, struct dwarf2_per_cu_data *per_cu)
21076 {
21077   memset (cu, 0, sizeof (*cu));
21078   per_cu->cu = cu;
21079   cu->per_cu = per_cu;
21080   cu->objfile = per_cu->objfile;
21081   obstack_init (&cu->comp_unit_obstack);
21082 }
21083
21084 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
21085
21086 static void
21087 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
21088                        enum language pretend_language)
21089 {
21090   struct attribute *attr;
21091
21092   /* Set the language we're debugging.  */
21093   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
21094   if (attr)
21095     set_cu_language (DW_UNSND (attr), cu);
21096   else
21097     {
21098       cu->language = pretend_language;
21099       cu->language_defn = language_def (cu->language);
21100     }
21101
21102   attr = dwarf2_attr (comp_unit_die, DW_AT_producer, cu);
21103   if (attr)
21104     cu->producer = DW_STRING (attr);
21105 }
21106
21107 /* Release one cached compilation unit, CU.  We unlink it from the tree
21108    of compilation units, but we don't remove it from the read_in_chain;
21109    the caller is responsible for that.
21110    NOTE: DATA is a void * because this function is also used as a
21111    cleanup routine.  */
21112
21113 static void
21114 free_heap_comp_unit (void *data)
21115 {
21116   struct dwarf2_cu *cu = data;
21117
21118   gdb_assert (cu->per_cu != NULL);
21119   cu->per_cu->cu = NULL;
21120   cu->per_cu = NULL;
21121
21122   obstack_free (&cu->comp_unit_obstack, NULL);
21123
21124   xfree (cu);
21125 }
21126
21127 /* This cleanup function is passed the address of a dwarf2_cu on the stack
21128    when we're finished with it.  We can't free the pointer itself, but be
21129    sure to unlink it from the cache.  Also release any associated storage.  */
21130
21131 static void
21132 free_stack_comp_unit (void *data)
21133 {
21134   struct dwarf2_cu *cu = data;
21135
21136   gdb_assert (cu->per_cu != NULL);
21137   cu->per_cu->cu = NULL;
21138   cu->per_cu = NULL;
21139
21140   obstack_free (&cu->comp_unit_obstack, NULL);
21141   cu->partial_dies = NULL;
21142 }
21143
21144 /* Free all cached compilation units.  */
21145
21146 static void
21147 free_cached_comp_units (void *data)
21148 {
21149   struct dwarf2_per_cu_data *per_cu, **last_chain;
21150
21151   per_cu = dwarf2_per_objfile->read_in_chain;
21152   last_chain = &dwarf2_per_objfile->read_in_chain;
21153   while (per_cu != NULL)
21154     {
21155       struct dwarf2_per_cu_data *next_cu;
21156
21157       next_cu = per_cu->cu->read_in_chain;
21158
21159       free_heap_comp_unit (per_cu->cu);
21160       *last_chain = next_cu;
21161
21162       per_cu = next_cu;
21163     }
21164 }
21165
21166 /* Increase the age counter on each cached compilation unit, and free
21167    any that are too old.  */
21168
21169 static void
21170 age_cached_comp_units (void)
21171 {
21172   struct dwarf2_per_cu_data *per_cu, **last_chain;
21173
21174   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
21175   per_cu = dwarf2_per_objfile->read_in_chain;
21176   while (per_cu != NULL)
21177     {
21178       per_cu->cu->last_used ++;
21179       if (per_cu->cu->last_used <= dwarf2_max_cache_age)
21180         dwarf2_mark (per_cu->cu);
21181       per_cu = per_cu->cu->read_in_chain;
21182     }
21183
21184   per_cu = dwarf2_per_objfile->read_in_chain;
21185   last_chain = &dwarf2_per_objfile->read_in_chain;
21186   while (per_cu != NULL)
21187     {
21188       struct dwarf2_per_cu_data *next_cu;
21189
21190       next_cu = per_cu->cu->read_in_chain;
21191
21192       if (!per_cu->cu->mark)
21193         {
21194           free_heap_comp_unit (per_cu->cu);
21195           *last_chain = next_cu;
21196         }
21197       else
21198         last_chain = &per_cu->cu->read_in_chain;
21199
21200       per_cu = next_cu;
21201     }
21202 }
21203
21204 /* Remove a single compilation unit from the cache.  */
21205
21206 static void
21207 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
21208 {
21209   struct dwarf2_per_cu_data *per_cu, **last_chain;
21210
21211   per_cu = dwarf2_per_objfile->read_in_chain;
21212   last_chain = &dwarf2_per_objfile->read_in_chain;
21213   while (per_cu != NULL)
21214     {
21215       struct dwarf2_per_cu_data *next_cu;
21216
21217       next_cu = per_cu->cu->read_in_chain;
21218
21219       if (per_cu == target_per_cu)
21220         {
21221           free_heap_comp_unit (per_cu->cu);
21222           per_cu->cu = NULL;
21223           *last_chain = next_cu;
21224           break;
21225         }
21226       else
21227         last_chain = &per_cu->cu->read_in_chain;
21228
21229       per_cu = next_cu;
21230     }
21231 }
21232
21233 /* Release all extra memory associated with OBJFILE.  */
21234
21235 void
21236 dwarf2_free_objfile (struct objfile *objfile)
21237 {
21238   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
21239
21240   if (dwarf2_per_objfile == NULL)
21241     return;
21242
21243   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
21244   free_cached_comp_units (NULL);
21245
21246   if (dwarf2_per_objfile->quick_file_names_table)
21247     htab_delete (dwarf2_per_objfile->quick_file_names_table);
21248
21249   /* Everything else should be on the objfile obstack.  */
21250 }
21251
21252 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
21253    We store these in a hash table separate from the DIEs, and preserve them
21254    when the DIEs are flushed out of cache.
21255
21256    The CU "per_cu" pointer is needed because offset alone is not enough to
21257    uniquely identify the type.  A file may have multiple .debug_types sections,
21258    or the type may come from a DWO file.  Furthermore, while it's more logical
21259    to use per_cu->section+offset, with Fission the section with the data is in
21260    the DWO file but we don't know that section at the point we need it.
21261    We have to use something in dwarf2_per_cu_data (or the pointer to it)
21262    because we can enter the lookup routine, get_die_type_at_offset, from
21263    outside this file, and thus won't necessarily have PER_CU->cu.
21264    Fortunately, PER_CU is stable for the life of the objfile.  */
21265
21266 struct dwarf2_per_cu_offset_and_type
21267 {
21268   const struct dwarf2_per_cu_data *per_cu;
21269   sect_offset offset;
21270   struct type *type;
21271 };
21272
21273 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
21274
21275 static hashval_t
21276 per_cu_offset_and_type_hash (const void *item)
21277 {
21278   const struct dwarf2_per_cu_offset_and_type *ofs = item;
21279
21280   return (uintptr_t) ofs->per_cu + ofs->offset.sect_off;
21281 }
21282
21283 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
21284
21285 static int
21286 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
21287 {
21288   const struct dwarf2_per_cu_offset_and_type *ofs_lhs = item_lhs;
21289   const struct dwarf2_per_cu_offset_and_type *ofs_rhs = item_rhs;
21290
21291   return (ofs_lhs->per_cu == ofs_rhs->per_cu
21292           && ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off);
21293 }
21294
21295 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
21296    table if necessary.  For convenience, return TYPE.
21297
21298    The DIEs reading must have careful ordering to:
21299     * Not cause infite loops trying to read in DIEs as a prerequisite for
21300       reading current DIE.
21301     * Not trying to dereference contents of still incompletely read in types
21302       while reading in other DIEs.
21303     * Enable referencing still incompletely read in types just by a pointer to
21304       the type without accessing its fields.
21305
21306    Therefore caller should follow these rules:
21307      * Try to fetch any prerequisite types we may need to build this DIE type
21308        before building the type and calling set_die_type.
21309      * After building type call set_die_type for current DIE as soon as
21310        possible before fetching more types to complete the current type.
21311      * Make the type as complete as possible before fetching more types.  */
21312
21313 static struct type *
21314 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
21315 {
21316   struct dwarf2_per_cu_offset_and_type **slot, ofs;
21317   struct objfile *objfile = cu->objfile;
21318
21319   /* For Ada types, make sure that the gnat-specific data is always
21320      initialized (if not already set).  There are a few types where
21321      we should not be doing so, because the type-specific area is
21322      already used to hold some other piece of info (eg: TYPE_CODE_FLT
21323      where the type-specific area is used to store the floatformat).
21324      But this is not a problem, because the gnat-specific information
21325      is actually not needed for these types.  */
21326   if (need_gnat_info (cu)
21327       && TYPE_CODE (type) != TYPE_CODE_FUNC
21328       && TYPE_CODE (type) != TYPE_CODE_FLT
21329       && !HAVE_GNAT_AUX_INFO (type))
21330     INIT_GNAT_SPECIFIC (type);
21331
21332   if (dwarf2_per_objfile->die_type_hash == NULL)
21333     {
21334       dwarf2_per_objfile->die_type_hash =
21335         htab_create_alloc_ex (127,
21336                               per_cu_offset_and_type_hash,
21337                               per_cu_offset_and_type_eq,
21338                               NULL,
21339                               &objfile->objfile_obstack,
21340                               hashtab_obstack_allocate,
21341                               dummy_obstack_deallocate);
21342     }
21343
21344   ofs.per_cu = cu->per_cu;
21345   ofs.offset = die->offset;
21346   ofs.type = type;
21347   slot = (struct dwarf2_per_cu_offset_and_type **)
21348     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
21349   if (*slot)
21350     complaint (&symfile_complaints,
21351                _("A problem internal to GDB: DIE 0x%x has type already set"),
21352                die->offset.sect_off);
21353   *slot = obstack_alloc (&objfile->objfile_obstack, sizeof (**slot));
21354   **slot = ofs;
21355   return type;
21356 }
21357
21358 /* Look up the type for the die at OFFSET in PER_CU in die_type_hash,
21359    or return NULL if the die does not have a saved type.  */
21360
21361 static struct type *
21362 get_die_type_at_offset (sect_offset offset,
21363                         struct dwarf2_per_cu_data *per_cu)
21364 {
21365   struct dwarf2_per_cu_offset_and_type *slot, ofs;
21366
21367   if (dwarf2_per_objfile->die_type_hash == NULL)
21368     return NULL;
21369
21370   ofs.per_cu = per_cu;
21371   ofs.offset = offset;
21372   slot = htab_find (dwarf2_per_objfile->die_type_hash, &ofs);
21373   if (slot)
21374     return slot->type;
21375   else
21376     return NULL;
21377 }
21378
21379 /* Look up the type for DIE in CU in die_type_hash,
21380    or return NULL if DIE does not have a saved type.  */
21381
21382 static struct type *
21383 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
21384 {
21385   return get_die_type_at_offset (die->offset, cu->per_cu);
21386 }
21387
21388 /* Add a dependence relationship from CU to REF_PER_CU.  */
21389
21390 static void
21391 dwarf2_add_dependence (struct dwarf2_cu *cu,
21392                        struct dwarf2_per_cu_data *ref_per_cu)
21393 {
21394   void **slot;
21395
21396   if (cu->dependencies == NULL)
21397     cu->dependencies
21398       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
21399                               NULL, &cu->comp_unit_obstack,
21400                               hashtab_obstack_allocate,
21401                               dummy_obstack_deallocate);
21402
21403   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
21404   if (*slot == NULL)
21405     *slot = ref_per_cu;
21406 }
21407
21408 /* Subroutine of dwarf2_mark to pass to htab_traverse.
21409    Set the mark field in every compilation unit in the
21410    cache that we must keep because we are keeping CU.  */
21411
21412 static int
21413 dwarf2_mark_helper (void **slot, void *data)
21414 {
21415   struct dwarf2_per_cu_data *per_cu;
21416
21417   per_cu = (struct dwarf2_per_cu_data *) *slot;
21418
21419   /* cu->dependencies references may not yet have been ever read if QUIT aborts
21420      reading of the chain.  As such dependencies remain valid it is not much
21421      useful to track and undo them during QUIT cleanups.  */
21422   if (per_cu->cu == NULL)
21423     return 1;
21424
21425   if (per_cu->cu->mark)
21426     return 1;
21427   per_cu->cu->mark = 1;
21428
21429   if (per_cu->cu->dependencies != NULL)
21430     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
21431
21432   return 1;
21433 }
21434
21435 /* Set the mark field in CU and in every other compilation unit in the
21436    cache that we must keep because we are keeping CU.  */
21437
21438 static void
21439 dwarf2_mark (struct dwarf2_cu *cu)
21440 {
21441   if (cu->mark)
21442     return;
21443   cu->mark = 1;
21444   if (cu->dependencies != NULL)
21445     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
21446 }
21447
21448 static void
21449 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
21450 {
21451   while (per_cu)
21452     {
21453       per_cu->cu->mark = 0;
21454       per_cu = per_cu->cu->read_in_chain;
21455     }
21456 }
21457
21458 /* Trivial hash function for partial_die_info: the hash value of a DIE
21459    is its offset in .debug_info for this objfile.  */
21460
21461 static hashval_t
21462 partial_die_hash (const void *item)
21463 {
21464   const struct partial_die_info *part_die = item;
21465
21466   return part_die->offset.sect_off;
21467 }
21468
21469 /* Trivial comparison function for partial_die_info structures: two DIEs
21470    are equal if they have the same offset.  */
21471
21472 static int
21473 partial_die_eq (const void *item_lhs, const void *item_rhs)
21474 {
21475   const struct partial_die_info *part_die_lhs = item_lhs;
21476   const struct partial_die_info *part_die_rhs = item_rhs;
21477
21478   return part_die_lhs->offset.sect_off == part_die_rhs->offset.sect_off;
21479 }
21480
21481 static struct cmd_list_element *set_dwarf2_cmdlist;
21482 static struct cmd_list_element *show_dwarf2_cmdlist;
21483
21484 static void
21485 set_dwarf2_cmd (char *args, int from_tty)
21486 {
21487   help_list (set_dwarf2_cmdlist, "maintenance set dwarf2 ", -1, gdb_stdout);
21488 }
21489
21490 static void
21491 show_dwarf2_cmd (char *args, int from_tty)
21492 {
21493   cmd_show_list (show_dwarf2_cmdlist, from_tty, "");
21494 }
21495
21496 /* Free data associated with OBJFILE, if necessary.  */
21497
21498 static void
21499 dwarf2_per_objfile_free (struct objfile *objfile, void *d)
21500 {
21501   struct dwarf2_per_objfile *data = d;
21502   int ix;
21503
21504   /* Make sure we don't accidentally use dwarf2_per_objfile while
21505      cleaning up.  */
21506   dwarf2_per_objfile = NULL;
21507
21508   for (ix = 0; ix < data->n_comp_units; ++ix)
21509    VEC_free (dwarf2_per_cu_ptr, data->all_comp_units[ix]->imported_symtabs);
21510
21511   for (ix = 0; ix < data->n_type_units; ++ix)
21512     VEC_free (dwarf2_per_cu_ptr,
21513               data->all_type_units[ix]->per_cu.imported_symtabs);
21514   xfree (data->all_type_units);
21515
21516   VEC_free (dwarf2_section_info_def, data->types);
21517
21518   if (data->dwo_files)
21519     free_dwo_files (data->dwo_files, objfile);
21520   if (data->dwp_file)
21521     gdb_bfd_unref (data->dwp_file->dbfd);
21522
21523   if (data->dwz_file && data->dwz_file->dwz_bfd)
21524     gdb_bfd_unref (data->dwz_file->dwz_bfd);
21525 }
21526
21527 \f
21528 /* The "save gdb-index" command.  */
21529
21530 /* The contents of the hash table we create when building the string
21531    table.  */
21532 struct strtab_entry
21533 {
21534   offset_type offset;
21535   const char *str;
21536 };
21537
21538 /* Hash function for a strtab_entry.
21539
21540    Function is used only during write_hash_table so no index format backward
21541    compatibility is needed.  */
21542
21543 static hashval_t
21544 hash_strtab_entry (const void *e)
21545 {
21546   const struct strtab_entry *entry = e;
21547   return mapped_index_string_hash (INT_MAX, entry->str);
21548 }
21549
21550 /* Equality function for a strtab_entry.  */
21551
21552 static int
21553 eq_strtab_entry (const void *a, const void *b)
21554 {
21555   const struct strtab_entry *ea = a;
21556   const struct strtab_entry *eb = b;
21557   return !strcmp (ea->str, eb->str);
21558 }
21559
21560 /* Create a strtab_entry hash table.  */
21561
21562 static htab_t
21563 create_strtab (void)
21564 {
21565   return htab_create_alloc (100, hash_strtab_entry, eq_strtab_entry,
21566                             xfree, xcalloc, xfree);
21567 }
21568
21569 /* Add a string to the constant pool.  Return the string's offset in
21570    host order.  */
21571
21572 static offset_type
21573 add_string (htab_t table, struct obstack *cpool, const char *str)
21574 {
21575   void **slot;
21576   struct strtab_entry entry;
21577   struct strtab_entry *result;
21578
21579   entry.str = str;
21580   slot = htab_find_slot (table, &entry, INSERT);
21581   if (*slot)
21582     result = *slot;
21583   else
21584     {
21585       result = XNEW (struct strtab_entry);
21586       result->offset = obstack_object_size (cpool);
21587       result->str = str;
21588       obstack_grow_str0 (cpool, str);
21589       *slot = result;
21590     }
21591   return result->offset;
21592 }
21593
21594 /* An entry in the symbol table.  */
21595 struct symtab_index_entry
21596 {
21597   /* The name of the symbol.  */
21598   const char *name;
21599   /* The offset of the name in the constant pool.  */
21600   offset_type index_offset;
21601   /* A sorted vector of the indices of all the CUs that hold an object
21602      of this name.  */
21603   VEC (offset_type) *cu_indices;
21604 };
21605
21606 /* The symbol table.  This is a power-of-2-sized hash table.  */
21607 struct mapped_symtab
21608 {
21609   offset_type n_elements;
21610   offset_type size;
21611   struct symtab_index_entry **data;
21612 };
21613
21614 /* Hash function for a symtab_index_entry.  */
21615
21616 static hashval_t
21617 hash_symtab_entry (const void *e)
21618 {
21619   const struct symtab_index_entry *entry = e;
21620   return iterative_hash (VEC_address (offset_type, entry->cu_indices),
21621                          sizeof (offset_type) * VEC_length (offset_type,
21622                                                             entry->cu_indices),
21623                          0);
21624 }
21625
21626 /* Equality function for a symtab_index_entry.  */
21627
21628 static int
21629 eq_symtab_entry (const void *a, const void *b)
21630 {
21631   const struct symtab_index_entry *ea = a;
21632   const struct symtab_index_entry *eb = b;
21633   int len = VEC_length (offset_type, ea->cu_indices);
21634   if (len != VEC_length (offset_type, eb->cu_indices))
21635     return 0;
21636   return !memcmp (VEC_address (offset_type, ea->cu_indices),
21637                   VEC_address (offset_type, eb->cu_indices),
21638                   sizeof (offset_type) * len);
21639 }
21640
21641 /* Destroy a symtab_index_entry.  */
21642
21643 static void
21644 delete_symtab_entry (void *p)
21645 {
21646   struct symtab_index_entry *entry = p;
21647   VEC_free (offset_type, entry->cu_indices);
21648   xfree (entry);
21649 }
21650
21651 /* Create a hash table holding symtab_index_entry objects.  */
21652
21653 static htab_t
21654 create_symbol_hash_table (void)
21655 {
21656   return htab_create_alloc (100, hash_symtab_entry, eq_symtab_entry,
21657                             delete_symtab_entry, xcalloc, xfree);
21658 }
21659
21660 /* Create a new mapped symtab object.  */
21661
21662 static struct mapped_symtab *
21663 create_mapped_symtab (void)
21664 {
21665   struct mapped_symtab *symtab = XNEW (struct mapped_symtab);
21666   symtab->n_elements = 0;
21667   symtab->size = 1024;
21668   symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
21669   return symtab;
21670 }
21671
21672 /* Destroy a mapped_symtab.  */
21673
21674 static void
21675 cleanup_mapped_symtab (void *p)
21676 {
21677   struct mapped_symtab *symtab = p;
21678   /* The contents of the array are freed when the other hash table is
21679      destroyed.  */
21680   xfree (symtab->data);
21681   xfree (symtab);
21682 }
21683
21684 /* Find a slot in SYMTAB for the symbol NAME.  Returns a pointer to
21685    the slot.
21686    
21687    Function is used only during write_hash_table so no index format backward
21688    compatibility is needed.  */
21689
21690 static struct symtab_index_entry **
21691 find_slot (struct mapped_symtab *symtab, const char *name)
21692 {
21693   offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
21694
21695   index = hash & (symtab->size - 1);
21696   step = ((hash * 17) & (symtab->size - 1)) | 1;
21697
21698   for (;;)
21699     {
21700       if (!symtab->data[index] || !strcmp (name, symtab->data[index]->name))
21701         return &symtab->data[index];
21702       index = (index + step) & (symtab->size - 1);
21703     }
21704 }
21705
21706 /* Expand SYMTAB's hash table.  */
21707
21708 static void
21709 hash_expand (struct mapped_symtab *symtab)
21710 {
21711   offset_type old_size = symtab->size;
21712   offset_type i;
21713   struct symtab_index_entry **old_entries = symtab->data;
21714
21715   symtab->size *= 2;
21716   symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
21717
21718   for (i = 0; i < old_size; ++i)
21719     {
21720       if (old_entries[i])
21721         {
21722           struct symtab_index_entry **slot = find_slot (symtab,
21723                                                         old_entries[i]->name);
21724           *slot = old_entries[i];
21725         }
21726     }
21727
21728   xfree (old_entries);
21729 }
21730
21731 /* Add an entry to SYMTAB.  NAME is the name of the symbol.
21732    CU_INDEX is the index of the CU in which the symbol appears.
21733    IS_STATIC is one if the symbol is static, otherwise zero (global).  */
21734
21735 static void
21736 add_index_entry (struct mapped_symtab *symtab, const char *name,
21737                  int is_static, gdb_index_symbol_kind kind,
21738                  offset_type cu_index)
21739 {
21740   struct symtab_index_entry **slot;
21741   offset_type cu_index_and_attrs;
21742
21743   ++symtab->n_elements;
21744   if (4 * symtab->n_elements / 3 >= symtab->size)
21745     hash_expand (symtab);
21746
21747   slot = find_slot (symtab, name);
21748   if (!*slot)
21749     {
21750       *slot = XNEW (struct symtab_index_entry);
21751       (*slot)->name = name;
21752       /* index_offset is set later.  */
21753       (*slot)->cu_indices = NULL;
21754     }
21755
21756   cu_index_and_attrs = 0;
21757   DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
21758   DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
21759   DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
21760
21761   /* We don't want to record an index value twice as we want to avoid the
21762      duplication.
21763      We process all global symbols and then all static symbols
21764      (which would allow us to avoid the duplication by only having to check
21765      the last entry pushed), but a symbol could have multiple kinds in one CU.
21766      To keep things simple we don't worry about the duplication here and
21767      sort and uniqufy the list after we've processed all symbols.  */
21768   VEC_safe_push (offset_type, (*slot)->cu_indices, cu_index_and_attrs);
21769 }
21770
21771 /* qsort helper routine for uniquify_cu_indices.  */
21772
21773 static int
21774 offset_type_compare (const void *ap, const void *bp)
21775 {
21776   offset_type a = *(offset_type *) ap;
21777   offset_type b = *(offset_type *) bp;
21778
21779   return (a > b) - (b > a);
21780 }
21781
21782 /* Sort and remove duplicates of all symbols' cu_indices lists.  */
21783
21784 static void
21785 uniquify_cu_indices (struct mapped_symtab *symtab)
21786 {
21787   int i;
21788
21789   for (i = 0; i < symtab->size; ++i)
21790     {
21791       struct symtab_index_entry *entry = symtab->data[i];
21792
21793       if (entry
21794           && entry->cu_indices != NULL)
21795         {
21796           unsigned int next_to_insert, next_to_check;
21797           offset_type last_value;
21798
21799           qsort (VEC_address (offset_type, entry->cu_indices),
21800                  VEC_length (offset_type, entry->cu_indices),
21801                  sizeof (offset_type), offset_type_compare);
21802
21803           last_value = VEC_index (offset_type, entry->cu_indices, 0);
21804           next_to_insert = 1;
21805           for (next_to_check = 1;
21806                next_to_check < VEC_length (offset_type, entry->cu_indices);
21807                ++next_to_check)
21808             {
21809               if (VEC_index (offset_type, entry->cu_indices, next_to_check)
21810                   != last_value)
21811                 {
21812                   last_value = VEC_index (offset_type, entry->cu_indices,
21813                                           next_to_check);
21814                   VEC_replace (offset_type, entry->cu_indices, next_to_insert,
21815                                last_value);
21816                   ++next_to_insert;
21817                 }
21818             }
21819           VEC_truncate (offset_type, entry->cu_indices, next_to_insert);
21820         }
21821     }
21822 }
21823
21824 /* Add a vector of indices to the constant pool.  */
21825
21826 static offset_type
21827 add_indices_to_cpool (htab_t symbol_hash_table, struct obstack *cpool,
21828                       struct symtab_index_entry *entry)
21829 {
21830   void **slot;
21831
21832   slot = htab_find_slot (symbol_hash_table, entry, INSERT);
21833   if (!*slot)
21834     {
21835       offset_type len = VEC_length (offset_type, entry->cu_indices);
21836       offset_type val = MAYBE_SWAP (len);
21837       offset_type iter;
21838       int i;
21839
21840       *slot = entry;
21841       entry->index_offset = obstack_object_size (cpool);
21842
21843       obstack_grow (cpool, &val, sizeof (val));
21844       for (i = 0;
21845            VEC_iterate (offset_type, entry->cu_indices, i, iter);
21846            ++i)
21847         {
21848           val = MAYBE_SWAP (iter);
21849           obstack_grow (cpool, &val, sizeof (val));
21850         }
21851     }
21852   else
21853     {
21854       struct symtab_index_entry *old_entry = *slot;
21855       entry->index_offset = old_entry->index_offset;
21856       entry = old_entry;
21857     }
21858   return entry->index_offset;
21859 }
21860
21861 /* Write the mapped hash table SYMTAB to the obstack OUTPUT, with
21862    constant pool entries going into the obstack CPOOL.  */
21863
21864 static void
21865 write_hash_table (struct mapped_symtab *symtab,
21866                   struct obstack *output, struct obstack *cpool)
21867 {
21868   offset_type i;
21869   htab_t symbol_hash_table;
21870   htab_t str_table;
21871
21872   symbol_hash_table = create_symbol_hash_table ();
21873   str_table = create_strtab ();
21874
21875   /* We add all the index vectors to the constant pool first, to
21876      ensure alignment is ok.  */
21877   for (i = 0; i < symtab->size; ++i)
21878     {
21879       if (symtab->data[i])
21880         add_indices_to_cpool (symbol_hash_table, cpool, symtab->data[i]);
21881     }
21882
21883   /* Now write out the hash table.  */
21884   for (i = 0; i < symtab->size; ++i)
21885     {
21886       offset_type str_off, vec_off;
21887
21888       if (symtab->data[i])
21889         {
21890           str_off = add_string (str_table, cpool, symtab->data[i]->name);
21891           vec_off = symtab->data[i]->index_offset;
21892         }
21893       else
21894         {
21895           /* While 0 is a valid constant pool index, it is not valid
21896              to have 0 for both offsets.  */
21897           str_off = 0;
21898           vec_off = 0;
21899         }
21900
21901       str_off = MAYBE_SWAP (str_off);
21902       vec_off = MAYBE_SWAP (vec_off);
21903
21904       obstack_grow (output, &str_off, sizeof (str_off));
21905       obstack_grow (output, &vec_off, sizeof (vec_off));
21906     }
21907
21908   htab_delete (str_table);
21909   htab_delete (symbol_hash_table);
21910 }
21911
21912 /* Struct to map psymtab to CU index in the index file.  */
21913 struct psymtab_cu_index_map
21914 {
21915   struct partial_symtab *psymtab;
21916   unsigned int cu_index;
21917 };
21918
21919 static hashval_t
21920 hash_psymtab_cu_index (const void *item)
21921 {
21922   const struct psymtab_cu_index_map *map = item;
21923
21924   return htab_hash_pointer (map->psymtab);
21925 }
21926
21927 static int
21928 eq_psymtab_cu_index (const void *item_lhs, const void *item_rhs)
21929 {
21930   const struct psymtab_cu_index_map *lhs = item_lhs;
21931   const struct psymtab_cu_index_map *rhs = item_rhs;
21932
21933   return lhs->psymtab == rhs->psymtab;
21934 }
21935
21936 /* Helper struct for building the address table.  */
21937 struct addrmap_index_data
21938 {
21939   struct objfile *objfile;
21940   struct obstack *addr_obstack;
21941   htab_t cu_index_htab;
21942
21943   /* Non-zero if the previous_* fields are valid.
21944      We can't write an entry until we see the next entry (since it is only then
21945      that we know the end of the entry).  */
21946   int previous_valid;
21947   /* Index of the CU in the table of all CUs in the index file.  */
21948   unsigned int previous_cu_index;
21949   /* Start address of the CU.  */
21950   CORE_ADDR previous_cu_start;
21951 };
21952
21953 /* Write an address entry to OBSTACK.  */
21954
21955 static void
21956 add_address_entry (struct objfile *objfile, struct obstack *obstack,
21957                    CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
21958 {
21959   offset_type cu_index_to_write;
21960   gdb_byte addr[8];
21961   CORE_ADDR baseaddr;
21962
21963   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21964
21965   store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, start - baseaddr);
21966   obstack_grow (obstack, addr, 8);
21967   store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, end - baseaddr);
21968   obstack_grow (obstack, addr, 8);
21969   cu_index_to_write = MAYBE_SWAP (cu_index);
21970   obstack_grow (obstack, &cu_index_to_write, sizeof (offset_type));
21971 }
21972
21973 /* Worker function for traversing an addrmap to build the address table.  */
21974
21975 static int
21976 add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
21977 {
21978   struct addrmap_index_data *data = datap;
21979   struct partial_symtab *pst = obj;
21980
21981   if (data->previous_valid)
21982     add_address_entry (data->objfile, data->addr_obstack,
21983                        data->previous_cu_start, start_addr,
21984                        data->previous_cu_index);
21985
21986   data->previous_cu_start = start_addr;
21987   if (pst != NULL)
21988     {
21989       struct psymtab_cu_index_map find_map, *map;
21990       find_map.psymtab = pst;
21991       map = htab_find (data->cu_index_htab, &find_map);
21992       gdb_assert (map != NULL);
21993       data->previous_cu_index = map->cu_index;
21994       data->previous_valid = 1;
21995     }
21996   else
21997       data->previous_valid = 0;
21998
21999   return 0;
22000 }
22001
22002 /* Write OBJFILE's address map to OBSTACK.
22003    CU_INDEX_HTAB is used to map addrmap entries to their CU indices
22004    in the index file.  */
22005
22006 static void
22007 write_address_map (struct objfile *objfile, struct obstack *obstack,
22008                    htab_t cu_index_htab)
22009 {
22010   struct addrmap_index_data addrmap_index_data;
22011
22012   /* When writing the address table, we have to cope with the fact that
22013      the addrmap iterator only provides the start of a region; we have to
22014      wait until the next invocation to get the start of the next region.  */
22015
22016   addrmap_index_data.objfile = objfile;
22017   addrmap_index_data.addr_obstack = obstack;
22018   addrmap_index_data.cu_index_htab = cu_index_htab;
22019   addrmap_index_data.previous_valid = 0;
22020
22021   addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
22022                    &addrmap_index_data);
22023
22024   /* It's highly unlikely the last entry (end address = 0xff...ff)
22025      is valid, but we should still handle it.
22026      The end address is recorded as the start of the next region, but that
22027      doesn't work here.  To cope we pass 0xff...ff, this is a rare situation
22028      anyway.  */
22029   if (addrmap_index_data.previous_valid)
22030     add_address_entry (objfile, obstack,
22031                        addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
22032                        addrmap_index_data.previous_cu_index);
22033 }
22034
22035 /* Return the symbol kind of PSYM.  */
22036
22037 static gdb_index_symbol_kind
22038 symbol_kind (struct partial_symbol *psym)
22039 {
22040   domain_enum domain = PSYMBOL_DOMAIN (psym);
22041   enum address_class aclass = PSYMBOL_CLASS (psym);
22042
22043   switch (domain)
22044     {
22045     case VAR_DOMAIN:
22046       switch (aclass)
22047         {
22048         case LOC_BLOCK:
22049           return GDB_INDEX_SYMBOL_KIND_FUNCTION;
22050         case LOC_TYPEDEF:
22051           return GDB_INDEX_SYMBOL_KIND_TYPE;
22052         case LOC_COMPUTED:
22053         case LOC_CONST_BYTES:
22054         case LOC_OPTIMIZED_OUT:
22055         case LOC_STATIC:
22056           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
22057         case LOC_CONST:
22058           /* Note: It's currently impossible to recognize psyms as enum values
22059              short of reading the type info.  For now punt.  */
22060           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
22061         default:
22062           /* There are other LOC_FOO values that one might want to classify
22063              as variables, but dwarf2read.c doesn't currently use them.  */
22064           return GDB_INDEX_SYMBOL_KIND_OTHER;
22065         }
22066     case STRUCT_DOMAIN:
22067       return GDB_INDEX_SYMBOL_KIND_TYPE;
22068     default:
22069       return GDB_INDEX_SYMBOL_KIND_OTHER;
22070     }
22071 }
22072
22073 /* Add a list of partial symbols to SYMTAB.  */
22074
22075 static void
22076 write_psymbols (struct mapped_symtab *symtab,
22077                 htab_t psyms_seen,
22078                 struct partial_symbol **psymp,
22079                 int count,
22080                 offset_type cu_index,
22081                 int is_static)
22082 {
22083   for (; count-- > 0; ++psymp)
22084     {
22085       struct partial_symbol *psym = *psymp;
22086       void **slot;
22087
22088       if (SYMBOL_LANGUAGE (psym) == language_ada)
22089         error (_("Ada is not currently supported by the index"));
22090
22091       /* Only add a given psymbol once.  */
22092       slot = htab_find_slot (psyms_seen, psym, INSERT);
22093       if (!*slot)
22094         {
22095           gdb_index_symbol_kind kind = symbol_kind (psym);
22096
22097           *slot = psym;
22098           add_index_entry (symtab, SYMBOL_SEARCH_NAME (psym),
22099                            is_static, kind, cu_index);
22100         }
22101     }
22102 }
22103
22104 /* Write the contents of an ("unfinished") obstack to FILE.  Throw an
22105    exception if there is an error.  */
22106
22107 static void
22108 write_obstack (FILE *file, struct obstack *obstack)
22109 {
22110   if (fwrite (obstack_base (obstack), 1, obstack_object_size (obstack),
22111               file)
22112       != obstack_object_size (obstack))
22113     error (_("couldn't data write to file"));
22114 }
22115
22116 /* Unlink a file if the argument is not NULL.  */
22117
22118 static void
22119 unlink_if_set (void *p)
22120 {
22121   char **filename = p;
22122   if (*filename)
22123     unlink (*filename);
22124 }
22125
22126 /* A helper struct used when iterating over debug_types.  */
22127 struct signatured_type_index_data
22128 {
22129   struct objfile *objfile;
22130   struct mapped_symtab *symtab;
22131   struct obstack *types_list;
22132   htab_t psyms_seen;
22133   int cu_index;
22134 };
22135
22136 /* A helper function that writes a single signatured_type to an
22137    obstack.  */
22138
22139 static int
22140 write_one_signatured_type (void **slot, void *d)
22141 {
22142   struct signatured_type_index_data *info = d;
22143   struct signatured_type *entry = (struct signatured_type *) *slot;
22144   struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
22145   gdb_byte val[8];
22146
22147   write_psymbols (info->symtab,
22148                   info->psyms_seen,
22149                   info->objfile->global_psymbols.list
22150                   + psymtab->globals_offset,
22151                   psymtab->n_global_syms, info->cu_index,
22152                   0);
22153   write_psymbols (info->symtab,
22154                   info->psyms_seen,
22155                   info->objfile->static_psymbols.list
22156                   + psymtab->statics_offset,
22157                   psymtab->n_static_syms, info->cu_index,
22158                   1);
22159
22160   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
22161                           entry->per_cu.offset.sect_off);
22162   obstack_grow (info->types_list, val, 8);
22163   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
22164                           entry->type_offset_in_tu.cu_off);
22165   obstack_grow (info->types_list, val, 8);
22166   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->signature);
22167   obstack_grow (info->types_list, val, 8);
22168
22169   ++info->cu_index;
22170
22171   return 1;
22172 }
22173
22174 /* Recurse into all "included" dependencies and write their symbols as
22175    if they appeared in this psymtab.  */
22176
22177 static void
22178 recursively_write_psymbols (struct objfile *objfile,
22179                             struct partial_symtab *psymtab,
22180                             struct mapped_symtab *symtab,
22181                             htab_t psyms_seen,
22182                             offset_type cu_index)
22183 {
22184   int i;
22185
22186   for (i = 0; i < psymtab->number_of_dependencies; ++i)
22187     if (psymtab->dependencies[i]->user != NULL)
22188       recursively_write_psymbols (objfile, psymtab->dependencies[i],
22189                                   symtab, psyms_seen, cu_index);
22190
22191   write_psymbols (symtab,
22192                   psyms_seen,
22193                   objfile->global_psymbols.list + psymtab->globals_offset,
22194                   psymtab->n_global_syms, cu_index,
22195                   0);
22196   write_psymbols (symtab,
22197                   psyms_seen,
22198                   objfile->static_psymbols.list + psymtab->statics_offset,
22199                   psymtab->n_static_syms, cu_index,
22200                   1);
22201 }
22202
22203 /* Create an index file for OBJFILE in the directory DIR.  */
22204
22205 static void
22206 write_psymtabs_to_index (struct objfile *objfile, const char *dir)
22207 {
22208   struct cleanup *cleanup;
22209   char *filename, *cleanup_filename;
22210   struct obstack contents, addr_obstack, constant_pool, symtab_obstack;
22211   struct obstack cu_list, types_cu_list;
22212   int i;
22213   FILE *out_file;
22214   struct mapped_symtab *symtab;
22215   offset_type val, size_of_contents, total_len;
22216   struct stat st;
22217   htab_t psyms_seen;
22218   htab_t cu_index_htab;
22219   struct psymtab_cu_index_map *psymtab_cu_index_map;
22220
22221   if (dwarf2_per_objfile->using_index)
22222     error (_("Cannot use an index to create the index"));
22223
22224   if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) > 1)
22225     error (_("Cannot make an index when the file has multiple .debug_types sections"));
22226
22227   if (!objfile->psymtabs || !objfile->psymtabs_addrmap)
22228     return;
22229
22230   if (stat (objfile_name (objfile), &st) < 0)
22231     perror_with_name (objfile_name (objfile));
22232
22233   filename = concat (dir, SLASH_STRING, lbasename (objfile_name (objfile)),
22234                      INDEX_SUFFIX, (char *) NULL);
22235   cleanup = make_cleanup (xfree, filename);
22236
22237   out_file = gdb_fopen_cloexec (filename, "wb");
22238   if (!out_file)
22239     error (_("Can't open `%s' for writing"), filename);
22240
22241   cleanup_filename = filename;
22242   make_cleanup (unlink_if_set, &cleanup_filename);
22243
22244   symtab = create_mapped_symtab ();
22245   make_cleanup (cleanup_mapped_symtab, symtab);
22246
22247   obstack_init (&addr_obstack);
22248   make_cleanup_obstack_free (&addr_obstack);
22249
22250   obstack_init (&cu_list);
22251   make_cleanup_obstack_free (&cu_list);
22252
22253   obstack_init (&types_cu_list);
22254   make_cleanup_obstack_free (&types_cu_list);
22255
22256   psyms_seen = htab_create_alloc (100, htab_hash_pointer, htab_eq_pointer,
22257                                   NULL, xcalloc, xfree);
22258   make_cleanup_htab_delete (psyms_seen);
22259
22260   /* While we're scanning CU's create a table that maps a psymtab pointer
22261      (which is what addrmap records) to its index (which is what is recorded
22262      in the index file).  This will later be needed to write the address
22263      table.  */
22264   cu_index_htab = htab_create_alloc (100,
22265                                      hash_psymtab_cu_index,
22266                                      eq_psymtab_cu_index,
22267                                      NULL, xcalloc, xfree);
22268   make_cleanup_htab_delete (cu_index_htab);
22269   psymtab_cu_index_map = (struct psymtab_cu_index_map *)
22270     xmalloc (sizeof (struct psymtab_cu_index_map)
22271              * dwarf2_per_objfile->n_comp_units);
22272   make_cleanup (xfree, psymtab_cu_index_map);
22273
22274   /* The CU list is already sorted, so we don't need to do additional
22275      work here.  Also, the debug_types entries do not appear in
22276      all_comp_units, but only in their own hash table.  */
22277   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
22278     {
22279       struct dwarf2_per_cu_data *per_cu
22280         = dwarf2_per_objfile->all_comp_units[i];
22281       struct partial_symtab *psymtab = per_cu->v.psymtab;
22282       gdb_byte val[8];
22283       struct psymtab_cu_index_map *map;
22284       void **slot;
22285
22286       /* CU of a shared file from 'dwz -m' may be unused by this main file.
22287          It may be referenced from a local scope but in such case it does not
22288          need to be present in .gdb_index.  */
22289       if (psymtab == NULL)
22290         continue;
22291
22292       if (psymtab->user == NULL)
22293         recursively_write_psymbols (objfile, psymtab, symtab, psyms_seen, i);
22294
22295       map = &psymtab_cu_index_map[i];
22296       map->psymtab = psymtab;
22297       map->cu_index = i;
22298       slot = htab_find_slot (cu_index_htab, map, INSERT);
22299       gdb_assert (slot != NULL);
22300       gdb_assert (*slot == NULL);
22301       *slot = map;
22302
22303       store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
22304                               per_cu->offset.sect_off);
22305       obstack_grow (&cu_list, val, 8);
22306       store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, per_cu->length);
22307       obstack_grow (&cu_list, val, 8);
22308     }
22309
22310   /* Dump the address map.  */
22311   write_address_map (objfile, &addr_obstack, cu_index_htab);
22312
22313   /* Write out the .debug_type entries, if any.  */
22314   if (dwarf2_per_objfile->signatured_types)
22315     {
22316       struct signatured_type_index_data sig_data;
22317
22318       sig_data.objfile = objfile;
22319       sig_data.symtab = symtab;
22320       sig_data.types_list = &types_cu_list;
22321       sig_data.psyms_seen = psyms_seen;
22322       sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
22323       htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
22324                               write_one_signatured_type, &sig_data);
22325     }
22326
22327   /* Now that we've processed all symbols we can shrink their cu_indices
22328      lists.  */
22329   uniquify_cu_indices (symtab);
22330
22331   obstack_init (&constant_pool);
22332   make_cleanup_obstack_free (&constant_pool);
22333   obstack_init (&symtab_obstack);
22334   make_cleanup_obstack_free (&symtab_obstack);
22335   write_hash_table (symtab, &symtab_obstack, &constant_pool);
22336
22337   obstack_init (&contents);
22338   make_cleanup_obstack_free (&contents);
22339   size_of_contents = 6 * sizeof (offset_type);
22340   total_len = size_of_contents;
22341
22342   /* The version number.  */
22343   val = MAYBE_SWAP (8);
22344   obstack_grow (&contents, &val, sizeof (val));
22345
22346   /* The offset of the CU list from the start of the file.  */
22347   val = MAYBE_SWAP (total_len);
22348   obstack_grow (&contents, &val, sizeof (val));
22349   total_len += obstack_object_size (&cu_list);
22350
22351   /* The offset of the types CU list from the start of the file.  */
22352   val = MAYBE_SWAP (total_len);
22353   obstack_grow (&contents, &val, sizeof (val));
22354   total_len += obstack_object_size (&types_cu_list);
22355
22356   /* The offset of the address table from the start of the file.  */
22357   val = MAYBE_SWAP (total_len);
22358   obstack_grow (&contents, &val, sizeof (val));
22359   total_len += obstack_object_size (&addr_obstack);
22360
22361   /* The offset of the symbol table from the start of the file.  */
22362   val = MAYBE_SWAP (total_len);
22363   obstack_grow (&contents, &val, sizeof (val));
22364   total_len += obstack_object_size (&symtab_obstack);
22365
22366   /* The offset of the constant pool from the start of the file.  */
22367   val = MAYBE_SWAP (total_len);
22368   obstack_grow (&contents, &val, sizeof (val));
22369   total_len += obstack_object_size (&constant_pool);
22370
22371   gdb_assert (obstack_object_size (&contents) == size_of_contents);
22372
22373   write_obstack (out_file, &contents);
22374   write_obstack (out_file, &cu_list);
22375   write_obstack (out_file, &types_cu_list);
22376   write_obstack (out_file, &addr_obstack);
22377   write_obstack (out_file, &symtab_obstack);
22378   write_obstack (out_file, &constant_pool);
22379
22380   fclose (out_file);
22381
22382   /* We want to keep the file, so we set cleanup_filename to NULL
22383      here.  See unlink_if_set.  */
22384   cleanup_filename = NULL;
22385
22386   do_cleanups (cleanup);
22387 }
22388
22389 /* Implementation of the `save gdb-index' command.
22390    
22391    Note that the file format used by this command is documented in the
22392    GDB manual.  Any changes here must be documented there.  */
22393
22394 static void
22395 save_gdb_index_command (char *arg, int from_tty)
22396 {
22397   struct objfile *objfile;
22398
22399   if (!arg || !*arg)
22400     error (_("usage: save gdb-index DIRECTORY"));
22401
22402   ALL_OBJFILES (objfile)
22403   {
22404     struct stat st;
22405
22406     /* If the objfile does not correspond to an actual file, skip it.  */
22407     if (stat (objfile_name (objfile), &st) < 0)
22408       continue;
22409
22410     dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
22411     if (dwarf2_per_objfile)
22412       {
22413         volatile struct gdb_exception except;
22414
22415         TRY_CATCH (except, RETURN_MASK_ERROR)
22416           {
22417             write_psymtabs_to_index (objfile, arg);
22418           }
22419         if (except.reason < 0)
22420           exception_fprintf (gdb_stderr, except,
22421                              _("Error while writing index for `%s': "),
22422                              objfile_name (objfile));
22423       }
22424   }
22425 }
22426
22427 \f
22428
22429 int dwarf2_always_disassemble;
22430
22431 static void
22432 show_dwarf2_always_disassemble (struct ui_file *file, int from_tty,
22433                                 struct cmd_list_element *c, const char *value)
22434 {
22435   fprintf_filtered (file,
22436                     _("Whether to always disassemble "
22437                       "DWARF expressions is %s.\n"),
22438                     value);
22439 }
22440
22441 static void
22442 show_check_physname (struct ui_file *file, int from_tty,
22443                      struct cmd_list_element *c, const char *value)
22444 {
22445   fprintf_filtered (file,
22446                     _("Whether to check \"physname\" is %s.\n"),
22447                     value);
22448 }
22449
22450 void _initialize_dwarf2_read (void);
22451
22452 void
22453 _initialize_dwarf2_read (void)
22454 {
22455   struct cmd_list_element *c;
22456
22457   dwarf2_objfile_data_key
22458     = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
22459
22460   add_prefix_cmd ("dwarf2", class_maintenance, set_dwarf2_cmd, _("\
22461 Set DWARF 2 specific variables.\n\
22462 Configure DWARF 2 variables such as the cache size"),
22463                   &set_dwarf2_cmdlist, "maintenance set dwarf2 ",
22464                   0/*allow-unknown*/, &maintenance_set_cmdlist);
22465
22466   add_prefix_cmd ("dwarf2", class_maintenance, show_dwarf2_cmd, _("\
22467 Show DWARF 2 specific variables\n\
22468 Show DWARF 2 variables such as the cache size"),
22469                   &show_dwarf2_cmdlist, "maintenance show dwarf2 ",
22470                   0/*allow-unknown*/, &maintenance_show_cmdlist);
22471
22472   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
22473                             &dwarf2_max_cache_age, _("\
22474 Set the upper bound on the age of cached dwarf2 compilation units."), _("\
22475 Show the upper bound on the age of cached dwarf2 compilation units."), _("\
22476 A higher limit means that cached compilation units will be stored\n\
22477 in memory longer, and more total memory will be used.  Zero disables\n\
22478 caching, which can slow down startup."),
22479                             NULL,
22480                             show_dwarf2_max_cache_age,
22481                             &set_dwarf2_cmdlist,
22482                             &show_dwarf2_cmdlist);
22483
22484   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
22485                            &dwarf2_always_disassemble, _("\
22486 Set whether `info address' always disassembles DWARF expressions."), _("\
22487 Show whether `info address' always disassembles DWARF expressions."), _("\
22488 When enabled, DWARF expressions are always printed in an assembly-like\n\
22489 syntax.  When disabled, expressions will be printed in a more\n\
22490 conversational style, when possible."),
22491                            NULL,
22492                            show_dwarf2_always_disassemble,
22493                            &set_dwarf2_cmdlist,
22494                            &show_dwarf2_cmdlist);
22495
22496   add_setshow_zuinteger_cmd ("dwarf2-read", no_class, &dwarf2_read_debug, _("\
22497 Set debugging of the dwarf2 reader."), _("\
22498 Show debugging of the dwarf2 reader."), _("\
22499 When enabled (non-zero), debugging messages are printed during dwarf2\n\
22500 reading and symtab expansion.  A value of 1 (one) provides basic\n\
22501 information.  A value greater than 1 provides more verbose information."),
22502                             NULL,
22503                             NULL,
22504                             &setdebuglist, &showdebuglist);
22505
22506   add_setshow_zuinteger_cmd ("dwarf2-die", no_class, &dwarf2_die_debug, _("\
22507 Set debugging of the dwarf2 DIE reader."), _("\
22508 Show debugging of the dwarf2 DIE reader."), _("\
22509 When enabled (non-zero), DIEs are dumped after they are read in.\n\
22510 The value is the maximum depth to print."),
22511                              NULL,
22512                              NULL,
22513                              &setdebuglist, &showdebuglist);
22514
22515   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
22516 Set cross-checking of \"physname\" code against demangler."), _("\
22517 Show cross-checking of \"physname\" code against demangler."), _("\
22518 When enabled, GDB's internal \"physname\" code is checked against\n\
22519 the demangler."),
22520                            NULL, show_check_physname,
22521                            &setdebuglist, &showdebuglist);
22522
22523   add_setshow_boolean_cmd ("use-deprecated-index-sections",
22524                            no_class, &use_deprecated_index_sections, _("\
22525 Set whether to use deprecated gdb_index sections."), _("\
22526 Show whether to use deprecated gdb_index sections."), _("\
22527 When enabled, deprecated .gdb_index sections are used anyway.\n\
22528 Normally they are ignored either because of a missing feature or\n\
22529 performance issue.\n\
22530 Warning: This option must be enabled before gdb reads the file."),
22531                            NULL,
22532                            NULL,
22533                            &setlist, &showlist);
22534
22535   c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
22536                _("\
22537 Save a gdb-index file.\n\
22538 Usage: save gdb-index DIRECTORY"),
22539                &save_cmdlist);
22540   set_cmd_completer (c, filename_completer);
22541
22542   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
22543                                                         &dwarf2_locexpr_funcs);
22544   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
22545                                                         &dwarf2_loclist_funcs);
22546
22547   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
22548                                         &dwarf2_block_frame_base_locexpr_funcs);
22549   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
22550                                         &dwarf2_block_frame_base_loclist_funcs);
22551 }