ccbaeded62ec78b521de46d396ffe557b2396279
[external/binutils.git] / gdb / dwarf2read.c
1 /* DWARF 2 debugging format support for GDB.
2
3    Copyright (C) 1994-2015 Free Software Foundation, Inc.
4
5    Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
6    Inc.  with support from Florida State University (under contract
7    with the Ada Joint Program Office), and Silicon Graphics, Inc.
8    Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
9    based on Fred Fish's (Cygnus Support) implementation of DWARF 1
10    support.
11
12    This file is part of GDB.
13
14    This program is free software; you can redistribute it and/or modify
15    it under the terms of the GNU General Public License as published by
16    the Free Software Foundation; either version 3 of the License, or
17    (at your option) any later version.
18
19    This program is distributed in the hope that it will be useful,
20    but WITHOUT ANY WARRANTY; without even the implied warranty of
21    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22    GNU General Public License for more details.
23
24    You should have received a copy of the GNU General Public License
25    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
26
27 /* FIXME: Various die-reading functions need to be more careful with
28    reading off the end of the section.
29    E.g., load_partial_dies, read_partial_die.  */
30
31 #include "defs.h"
32 #include "bfd.h"
33 #include "elf-bfd.h"
34 #include "symtab.h"
35 #include "gdbtypes.h"
36 #include "objfiles.h"
37 #include "dwarf2.h"
38 #include "buildsym.h"
39 #include "demangle.h"
40 #include "gdb-demangle.h"
41 #include "expression.h"
42 #include "filenames.h"  /* for DOSish file names */
43 #include "macrotab.h"
44 #include "language.h"
45 #include "complaints.h"
46 #include "bcache.h"
47 #include "dwarf2expr.h"
48 #include "dwarf2loc.h"
49 #include "cp-support.h"
50 #include "hashtab.h"
51 #include "command.h"
52 #include "gdbcmd.h"
53 #include "block.h"
54 #include "addrmap.h"
55 #include "typeprint.h"
56 #include "jv-lang.h"
57 #include "psympriv.h"
58 #include <sys/stat.h>
59 #include "completer.h"
60 #include "vec.h"
61 #include "c-lang.h"
62 #include "go-lang.h"
63 #include "valprint.h"
64 #include "gdbcore.h" /* for gnutarget */
65 #include "gdb/gdb-index.h"
66 #include <ctype.h>
67 #include "gdb_bfd.h"
68 #include "f-lang.h"
69 #include "source.h"
70 #include "filestuff.h"
71 #include "build-id.h"
72
73 #include <fcntl.h>
74 #include <sys/types.h>
75
76 typedef struct symbol *symbolp;
77 DEF_VEC_P (symbolp);
78
79 /* When == 1, print basic high level tracing messages.
80    When > 1, be more verbose.
81    This is in contrast to the low level DIE reading of dwarf2_die_debug.  */
82 static unsigned int dwarf2_read_debug = 0;
83
84 /* When non-zero, dump DIEs after they are read in.  */
85 static unsigned int dwarf2_die_debug = 0;
86
87 /* When non-zero, cross-check physname against demangler.  */
88 static int check_physname = 0;
89
90 /* When non-zero, do not reject deprecated .gdb_index sections.  */
91 static int use_deprecated_index_sections = 0;
92
93 static const struct objfile_data *dwarf2_objfile_data_key;
94
95 /* The "aclass" indices for various kinds of computed DWARF symbols.  */
96
97 static int dwarf2_locexpr_index;
98 static int dwarf2_loclist_index;
99 static int dwarf2_locexpr_block_index;
100 static int dwarf2_loclist_block_index;
101
102 /* A descriptor for dwarf sections.
103
104    S.ASECTION, SIZE are typically initialized when the objfile is first
105    scanned.  BUFFER, READIN are filled in later when the section is read.
106    If the section contained compressed data then SIZE is updated to record
107    the uncompressed size of the section.
108
109    DWP file format V2 introduces a wrinkle that is easiest to handle by
110    creating the concept of virtual sections contained within a real section.
111    In DWP V2 the sections of the input DWO files are concatenated together
112    into one section, but section offsets are kept relative to the original
113    input section.
114    If this is a virtual dwp-v2 section, S.CONTAINING_SECTION is a backlink to
115    the real section this "virtual" section is contained in, and BUFFER,SIZE
116    describe the virtual section.  */
117
118 struct dwarf2_section_info
119 {
120   union
121   {
122     /* If this is a real section, the bfd section.  */
123     asection *asection;
124     /* If this is a virtual section, pointer to the containing ("real")
125        section.  */
126     struct dwarf2_section_info *containing_section;
127   } s;
128   /* Pointer to section data, only valid if readin.  */
129   const gdb_byte *buffer;
130   /* The size of the section, real or virtual.  */
131   bfd_size_type size;
132   /* If this is a virtual section, the offset in the real section.
133      Only valid if is_virtual.  */
134   bfd_size_type virtual_offset;
135   /* True if we have tried to read this section.  */
136   char readin;
137   /* True if this is a virtual section, False otherwise.
138      This specifies which of s.asection and s.containing_section to use.  */
139   char is_virtual;
140 };
141
142 typedef struct dwarf2_section_info dwarf2_section_info_def;
143 DEF_VEC_O (dwarf2_section_info_def);
144
145 /* All offsets in the index are of this type.  It must be
146    architecture-independent.  */
147 typedef uint32_t offset_type;
148
149 DEF_VEC_I (offset_type);
150
151 /* Ensure only legit values are used.  */
152 #define DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE(cu_index, value) \
153   do { \
154     gdb_assert ((unsigned int) (value) <= 1); \
155     GDB_INDEX_SYMBOL_STATIC_SET_VALUE((cu_index), (value)); \
156   } while (0)
157
158 /* Ensure only legit values are used.  */
159 #define DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE(cu_index, value) \
160   do { \
161     gdb_assert ((value) >= GDB_INDEX_SYMBOL_KIND_TYPE \
162                 && (value) <= GDB_INDEX_SYMBOL_KIND_OTHER); \
163     GDB_INDEX_SYMBOL_KIND_SET_VALUE((cu_index), (value)); \
164   } while (0)
165
166 /* Ensure we don't use more than the alloted nuber of bits for the CU.  */
167 #define DW2_GDB_INDEX_CU_SET_VALUE(cu_index, value) \
168   do { \
169     gdb_assert (((value) & ~GDB_INDEX_CU_MASK) == 0); \
170     GDB_INDEX_CU_SET_VALUE((cu_index), (value)); \
171   } while (0)
172
173 /* A description of the mapped index.  The file format is described in
174    a comment by the code that writes the index.  */
175 struct mapped_index
176 {
177   /* Index data format version.  */
178   int version;
179
180   /* The total length of the buffer.  */
181   off_t total_size;
182
183   /* A pointer to the address table data.  */
184   const gdb_byte *address_table;
185
186   /* Size of the address table data in bytes.  */
187   offset_type address_table_size;
188
189   /* The symbol table, implemented as a hash table.  */
190   const offset_type *symbol_table;
191
192   /* Size in slots, each slot is 2 offset_types.  */
193   offset_type symbol_table_slots;
194
195   /* A pointer to the constant pool.  */
196   const char *constant_pool;
197 };
198
199 typedef struct dwarf2_per_cu_data *dwarf2_per_cu_ptr;
200 DEF_VEC_P (dwarf2_per_cu_ptr);
201
202 /* Collection of data recorded per objfile.
203    This hangs off of dwarf2_objfile_data_key.  */
204
205 struct dwarf2_per_objfile
206 {
207   struct dwarf2_section_info info;
208   struct dwarf2_section_info abbrev;
209   struct dwarf2_section_info line;
210   struct dwarf2_section_info loc;
211   struct dwarf2_section_info macinfo;
212   struct dwarf2_section_info macro;
213   struct dwarf2_section_info str;
214   struct dwarf2_section_info ranges;
215   struct dwarf2_section_info addr;
216   struct dwarf2_section_info frame;
217   struct dwarf2_section_info eh_frame;
218   struct dwarf2_section_info gdb_index;
219
220   VEC (dwarf2_section_info_def) *types;
221
222   /* Back link.  */
223   struct objfile *objfile;
224
225   /* Table of all the compilation units.  This is used to locate
226      the target compilation unit of a particular reference.  */
227   struct dwarf2_per_cu_data **all_comp_units;
228
229   /* The number of compilation units in ALL_COMP_UNITS.  */
230   int n_comp_units;
231
232   /* The number of .debug_types-related CUs.  */
233   int n_type_units;
234
235   /* The number of elements allocated in all_type_units.
236      If there are skeleton-less TUs, we add them to all_type_units lazily.  */
237   int n_allocated_type_units;
238
239   /* The .debug_types-related CUs (TUs).
240      This is stored in malloc space because we may realloc it.  */
241   struct signatured_type **all_type_units;
242
243   /* Table of struct type_unit_group objects.
244      The hash key is the DW_AT_stmt_list value.  */
245   htab_t type_unit_groups;
246
247   /* A table mapping .debug_types signatures to its signatured_type entry.
248      This is NULL if the .debug_types section hasn't been read in yet.  */
249   htab_t signatured_types;
250
251   /* Type unit statistics, to see how well the scaling improvements
252      are doing.  */
253   struct tu_stats
254   {
255     int nr_uniq_abbrev_tables;
256     int nr_symtabs;
257     int nr_symtab_sharers;
258     int nr_stmt_less_type_units;
259     int nr_all_type_units_reallocs;
260   } tu_stats;
261
262   /* A chain of compilation units that are currently read in, so that
263      they can be freed later.  */
264   struct dwarf2_per_cu_data *read_in_chain;
265
266   /* A table mapping DW_AT_dwo_name values to struct dwo_file objects.
267      This is NULL if the table hasn't been allocated yet.  */
268   htab_t dwo_files;
269
270   /* Non-zero if we've check for whether there is a DWP file.  */
271   int dwp_checked;
272
273   /* The DWP file if there is one, or NULL.  */
274   struct dwp_file *dwp_file;
275
276   /* The shared '.dwz' file, if one exists.  This is used when the
277      original data was compressed using 'dwz -m'.  */
278   struct dwz_file *dwz_file;
279
280   /* A flag indicating wether this objfile has a section loaded at a
281      VMA of 0.  */
282   int has_section_at_zero;
283
284   /* True if we are using the mapped index,
285      or we are faking it for OBJF_READNOW's sake.  */
286   unsigned char using_index;
287
288   /* The mapped index, or NULL if .gdb_index is missing or not being used.  */
289   struct mapped_index *index_table;
290
291   /* When using index_table, this keeps track of all quick_file_names entries.
292      TUs typically share line table entries with a CU, so we maintain a
293      separate table of all line table entries to support the sharing.
294      Note that while there can be way more TUs than CUs, we've already
295      sorted all the TUs into "type unit groups", grouped by their
296      DW_AT_stmt_list value.  Therefore the only sharing done here is with a
297      CU and its associated TU group if there is one.  */
298   htab_t quick_file_names_table;
299
300   /* Set during partial symbol reading, to prevent queueing of full
301      symbols.  */
302   int reading_partial_symbols;
303
304   /* Table mapping type DIEs to their struct type *.
305      This is NULL if not allocated yet.
306      The mapping is done via (CU/TU + DIE offset) -> type.  */
307   htab_t die_type_hash;
308
309   /* The CUs we recently read.  */
310   VEC (dwarf2_per_cu_ptr) *just_read_cus;
311
312   /* Table containing line_header indexed by offset and offset_in_dwz.  */
313   htab_t line_header_hash;
314 };
315
316 static struct dwarf2_per_objfile *dwarf2_per_objfile;
317
318 /* Default names of the debugging sections.  */
319
320 /* Note that if the debugging section has been compressed, it might
321    have a name like .zdebug_info.  */
322
323 static const struct dwarf2_debug_sections dwarf2_elf_names =
324 {
325   { ".debug_info", ".zdebug_info" },
326   { ".debug_abbrev", ".zdebug_abbrev" },
327   { ".debug_line", ".zdebug_line" },
328   { ".debug_loc", ".zdebug_loc" },
329   { ".debug_macinfo", ".zdebug_macinfo" },
330   { ".debug_macro", ".zdebug_macro" },
331   { ".debug_str", ".zdebug_str" },
332   { ".debug_ranges", ".zdebug_ranges" },
333   { ".debug_types", ".zdebug_types" },
334   { ".debug_addr", ".zdebug_addr" },
335   { ".debug_frame", ".zdebug_frame" },
336   { ".eh_frame", NULL },
337   { ".gdb_index", ".zgdb_index" },
338   23
339 };
340
341 /* List of DWO/DWP sections.  */
342
343 static const struct dwop_section_names
344 {
345   struct dwarf2_section_names abbrev_dwo;
346   struct dwarf2_section_names info_dwo;
347   struct dwarf2_section_names line_dwo;
348   struct dwarf2_section_names loc_dwo;
349   struct dwarf2_section_names macinfo_dwo;
350   struct dwarf2_section_names macro_dwo;
351   struct dwarf2_section_names str_dwo;
352   struct dwarf2_section_names str_offsets_dwo;
353   struct dwarf2_section_names types_dwo;
354   struct dwarf2_section_names cu_index;
355   struct dwarf2_section_names tu_index;
356 }
357 dwop_section_names =
358 {
359   { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
360   { ".debug_info.dwo", ".zdebug_info.dwo" },
361   { ".debug_line.dwo", ".zdebug_line.dwo" },
362   { ".debug_loc.dwo", ".zdebug_loc.dwo" },
363   { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
364   { ".debug_macro.dwo", ".zdebug_macro.dwo" },
365   { ".debug_str.dwo", ".zdebug_str.dwo" },
366   { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
367   { ".debug_types.dwo", ".zdebug_types.dwo" },
368   { ".debug_cu_index", ".zdebug_cu_index" },
369   { ".debug_tu_index", ".zdebug_tu_index" },
370 };
371
372 /* local data types */
373
374 /* The data in a compilation unit header, after target2host
375    translation, looks like this.  */
376 struct comp_unit_head
377 {
378   unsigned int length;
379   short version;
380   unsigned char addr_size;
381   unsigned char signed_addr_p;
382   sect_offset abbrev_offset;
383
384   /* Size of file offsets; either 4 or 8.  */
385   unsigned int offset_size;
386
387   /* Size of the length field; either 4 or 12.  */
388   unsigned int initial_length_size;
389
390   /* Offset to the first byte of this compilation unit header in the
391      .debug_info section, for resolving relative reference dies.  */
392   sect_offset offset;
393
394   /* Offset to first die in this cu from the start of the cu.
395      This will be the first byte following the compilation unit header.  */
396   cu_offset first_die_offset;
397 };
398
399 /* Type used for delaying computation of method physnames.
400    See comments for compute_delayed_physnames.  */
401 struct delayed_method_info
402 {
403   /* The type to which the method is attached, i.e., its parent class.  */
404   struct type *type;
405
406   /* The index of the method in the type's function fieldlists.  */
407   int fnfield_index;
408
409   /* The index of the method in the fieldlist.  */
410   int index;
411
412   /* The name of the DIE.  */
413   const char *name;
414
415   /*  The DIE associated with this method.  */
416   struct die_info *die;
417 };
418
419 typedef struct delayed_method_info delayed_method_info;
420 DEF_VEC_O (delayed_method_info);
421
422 /* Internal state when decoding a particular compilation unit.  */
423 struct dwarf2_cu
424 {
425   /* The objfile containing this compilation unit.  */
426   struct objfile *objfile;
427
428   /* The header of the compilation unit.  */
429   struct comp_unit_head header;
430
431   /* Base address of this compilation unit.  */
432   CORE_ADDR base_address;
433
434   /* Non-zero if base_address has been set.  */
435   int base_known;
436
437   /* The language we are debugging.  */
438   enum language language;
439   const struct language_defn *language_defn;
440
441   const char *producer;
442
443   /* The generic symbol table building routines have separate lists for
444      file scope symbols and all all other scopes (local scopes).  So
445      we need to select the right one to pass to add_symbol_to_list().
446      We do it by keeping a pointer to the correct list in list_in_scope.
447
448      FIXME: The original dwarf code just treated the file scope as the
449      first local scope, and all other local scopes as nested local
450      scopes, and worked fine.  Check to see if we really need to
451      distinguish these in buildsym.c.  */
452   struct pending **list_in_scope;
453
454   /* The abbrev table for this CU.
455      Normally this points to the abbrev table in the objfile.
456      But if DWO_UNIT is non-NULL this is the abbrev table in the DWO file.  */
457   struct abbrev_table *abbrev_table;
458
459   /* Hash table holding all the loaded partial DIEs
460      with partial_die->offset.SECT_OFF as hash.  */
461   htab_t partial_dies;
462
463   /* Storage for things with the same lifetime as this read-in compilation
464      unit, including partial DIEs.  */
465   struct obstack comp_unit_obstack;
466
467   /* When multiple dwarf2_cu structures are living in memory, this field
468      chains them all together, so that they can be released efficiently.
469      We will probably also want a generation counter so that most-recently-used
470      compilation units are cached...  */
471   struct dwarf2_per_cu_data *read_in_chain;
472
473   /* Backlink to our per_cu entry.  */
474   struct dwarf2_per_cu_data *per_cu;
475
476   /* How many compilation units ago was this CU last referenced?  */
477   int last_used;
478
479   /* A hash table of DIE cu_offset for following references with
480      die_info->offset.sect_off as hash.  */
481   htab_t die_hash;
482
483   /* Full DIEs if read in.  */
484   struct die_info *dies;
485
486   /* A set of pointers to dwarf2_per_cu_data objects for compilation
487      units referenced by this one.  Only set during full symbol processing;
488      partial symbol tables do not have dependencies.  */
489   htab_t dependencies;
490
491   /* Header data from the line table, during full symbol processing.  */
492   struct line_header *line_header;
493
494   /* A list of methods which need to have physnames computed
495      after all type information has been read.  */
496   VEC (delayed_method_info) *method_list;
497
498   /* To be copied to symtab->call_site_htab.  */
499   htab_t call_site_htab;
500
501   /* Non-NULL if this CU came from a DWO file.
502      There is an invariant here that is important to remember:
503      Except for attributes copied from the top level DIE in the "main"
504      (or "stub") file in preparation for reading the DWO file
505      (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
506      Either there isn't a DWO file (in which case this is NULL and the point
507      is moot), or there is and either we're not going to read it (in which
508      case this is NULL) or there is and we are reading it (in which case this
509      is non-NULL).  */
510   struct dwo_unit *dwo_unit;
511
512   /* The DW_AT_addr_base attribute if present, zero otherwise
513      (zero is a valid value though).
514      Note this value comes from the Fission stub CU/TU's DIE.  */
515   ULONGEST addr_base;
516
517   /* The DW_AT_ranges_base attribute if present, zero otherwise
518      (zero is a valid value though).
519      Note this value comes from the Fission stub CU/TU's DIE.
520      Also note that the value is zero in the non-DWO case so this value can
521      be used without needing to know whether DWO files are in use or not.
522      N.B. This does not apply to DW_AT_ranges appearing in
523      DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
524      DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
525      DW_AT_ranges_base *would* have to be applied, and we'd have to care
526      whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
527   ULONGEST ranges_base;
528
529   /* Mark used when releasing cached dies.  */
530   unsigned int mark : 1;
531
532   /* This CU references .debug_loc.  See the symtab->locations_valid field.
533      This test is imperfect as there may exist optimized debug code not using
534      any location list and still facing inlining issues if handled as
535      unoptimized code.  For a future better test see GCC PR other/32998.  */
536   unsigned int has_loclist : 1;
537
538   /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is set
539      if all the producer_is_* fields are valid.  This information is cached
540      because profiling CU expansion showed excessive time spent in
541      producer_is_gxx_lt_4_6.  */
542   unsigned int checked_producer : 1;
543   unsigned int producer_is_gxx_lt_4_6 : 1;
544   unsigned int producer_is_gcc_lt_4_3 : 1;
545   unsigned int producer_is_icc : 1;
546
547   /* When set, the file that we're processing is known to have
548      debugging info for C++ namespaces.  GCC 3.3.x did not produce
549      this information, but later versions do.  */
550
551   unsigned int processing_has_namespace_info : 1;
552 };
553
554 /* Persistent data held for a compilation unit, even when not
555    processing it.  We put a pointer to this structure in the
556    read_symtab_private field of the psymtab.  */
557
558 struct dwarf2_per_cu_data
559 {
560   /* The start offset and length of this compilation unit.
561      NOTE: Unlike comp_unit_head.length, this length includes
562      initial_length_size.
563      If the DIE refers to a DWO file, this is always of the original die,
564      not the DWO file.  */
565   sect_offset offset;
566   unsigned int length;
567
568   /* Flag indicating this compilation unit will be read in before
569      any of the current compilation units are processed.  */
570   unsigned int queued : 1;
571
572   /* This flag will be set when reading partial DIEs if we need to load
573      absolutely all DIEs for this compilation unit, instead of just the ones
574      we think are interesting.  It gets set if we look for a DIE in the
575      hash table and don't find it.  */
576   unsigned int load_all_dies : 1;
577
578   /* Non-zero if this CU is from .debug_types.
579      Struct dwarf2_per_cu_data is contained in struct signatured_type iff
580      this is non-zero.  */
581   unsigned int is_debug_types : 1;
582
583   /* Non-zero if this CU is from the .dwz file.  */
584   unsigned int is_dwz : 1;
585
586   /* Non-zero if reading a TU directly from a DWO file, bypassing the stub.
587      This flag is only valid if is_debug_types is true.
588      We can't read a CU directly from a DWO file: There are required
589      attributes in the stub.  */
590   unsigned int reading_dwo_directly : 1;
591
592   /* Non-zero if the TU has been read.
593      This is used to assist the "Stay in DWO Optimization" for Fission:
594      When reading a DWO, it's faster to read TUs from the DWO instead of
595      fetching them from random other DWOs (due to comdat folding).
596      If the TU has already been read, the optimization is unnecessary
597      (and unwise - we don't want to change where gdb thinks the TU lives
598      "midflight").
599      This flag is only valid if is_debug_types is true.  */
600   unsigned int tu_read : 1;
601
602   /* The section this CU/TU lives in.
603      If the DIE refers to a DWO file, this is always the original die,
604      not the DWO file.  */
605   struct dwarf2_section_info *section;
606
607   /* Set to non-NULL iff this CU is currently loaded.  When it gets freed out
608      of the CU cache it gets reset to NULL again.  */
609   struct dwarf2_cu *cu;
610
611   /* The corresponding objfile.
612      Normally we can get the objfile from dwarf2_per_objfile.
613      However we can enter this file with just a "per_cu" handle.  */
614   struct objfile *objfile;
615
616   /* When dwarf2_per_objfile->using_index is true, the 'quick' field
617      is active.  Otherwise, the 'psymtab' field is active.  */
618   union
619   {
620     /* The partial symbol table associated with this compilation unit,
621        or NULL for unread partial units.  */
622     struct partial_symtab *psymtab;
623
624     /* Data needed by the "quick" functions.  */
625     struct dwarf2_per_cu_quick_data *quick;
626   } v;
627
628   /* The CUs we import using DW_TAG_imported_unit.  This is filled in
629      while reading psymtabs, used to compute the psymtab dependencies,
630      and then cleared.  Then it is filled in again while reading full
631      symbols, and only deleted when the objfile is destroyed.
632
633      This is also used to work around a difference between the way gold
634      generates .gdb_index version <=7 and the way gdb does.  Arguably this
635      is a gold bug.  For symbols coming from TUs, gold records in the index
636      the CU that includes the TU instead of the TU itself.  This breaks
637      dw2_lookup_symbol: It assumes that if the index says symbol X lives
638      in CU/TU Y, then one need only expand Y and a subsequent lookup in Y
639      will find X.  Alas TUs live in their own symtab, so after expanding CU Y
640      we need to look in TU Z to find X.  Fortunately, this is akin to
641      DW_TAG_imported_unit, so we just use the same mechanism: For
642      .gdb_index version <=7 this also records the TUs that the CU referred
643      to.  Concurrently with this change gdb was modified to emit version 8
644      indices so we only pay a price for gold generated indices.
645      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
646   VEC (dwarf2_per_cu_ptr) *imported_symtabs;
647 };
648
649 /* Entry in the signatured_types hash table.  */
650
651 struct signatured_type
652 {
653   /* The "per_cu" object of this type.
654      This struct is used iff per_cu.is_debug_types.
655      N.B.: This is the first member so that it's easy to convert pointers
656      between them.  */
657   struct dwarf2_per_cu_data per_cu;
658
659   /* The type's signature.  */
660   ULONGEST signature;
661
662   /* Offset in the TU of the type's DIE, as read from the TU header.
663      If this TU is a DWO stub and the definition lives in a DWO file
664      (specified by DW_AT_GNU_dwo_name), this value is unusable.  */
665   cu_offset type_offset_in_tu;
666
667   /* Offset in the section of the type's DIE.
668      If the definition lives in a DWO file, this is the offset in the
669      .debug_types.dwo section.
670      The value is zero until the actual value is known.
671      Zero is otherwise not a valid section offset.  */
672   sect_offset type_offset_in_section;
673
674   /* Type units are grouped by their DW_AT_stmt_list entry so that they
675      can share them.  This points to the containing symtab.  */
676   struct type_unit_group *type_unit_group;
677
678   /* The type.
679      The first time we encounter this type we fully read it in and install it
680      in the symbol tables.  Subsequent times we only need the type.  */
681   struct type *type;
682
683   /* Containing DWO unit.
684      This field is valid iff per_cu.reading_dwo_directly.  */
685   struct dwo_unit *dwo_unit;
686 };
687
688 typedef struct signatured_type *sig_type_ptr;
689 DEF_VEC_P (sig_type_ptr);
690
691 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
692    This includes type_unit_group and quick_file_names.  */
693
694 struct stmt_list_hash
695 {
696   /* The DWO unit this table is from or NULL if there is none.  */
697   struct dwo_unit *dwo_unit;
698
699   /* Offset in .debug_line or .debug_line.dwo.  */
700   sect_offset line_offset;
701 };
702
703 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
704    an object of this type.  */
705
706 struct type_unit_group
707 {
708   /* dwarf2read.c's main "handle" on a TU symtab.
709      To simplify things we create an artificial CU that "includes" all the
710      type units using this stmt_list so that the rest of the code still has
711      a "per_cu" handle on the symtab.
712      This PER_CU is recognized by having no section.  */
713 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
714   struct dwarf2_per_cu_data per_cu;
715
716   /* The TUs that share this DW_AT_stmt_list entry.
717      This is added to while parsing type units to build partial symtabs,
718      and is deleted afterwards and not used again.  */
719   VEC (sig_type_ptr) *tus;
720
721   /* The compunit symtab.
722      Type units in a group needn't all be defined in the same source file,
723      so we create an essentially anonymous symtab as the compunit symtab.  */
724   struct compunit_symtab *compunit_symtab;
725
726   /* The data used to construct the hash key.  */
727   struct stmt_list_hash hash;
728
729   /* The number of symtabs from the line header.
730      The value here must match line_header.num_file_names.  */
731   unsigned int num_symtabs;
732
733   /* The symbol tables for this TU (obtained from the files listed in
734      DW_AT_stmt_list).
735      WARNING: The order of entries here must match the order of entries
736      in the line header.  After the first TU using this type_unit_group, the
737      line header for the subsequent TUs is recreated from this.  This is done
738      because we need to use the same symtabs for each TU using the same
739      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
740      there's no guarantee the line header doesn't have duplicate entries.  */
741   struct symtab **symtabs;
742 };
743
744 /* These sections are what may appear in a (real or virtual) DWO file.  */
745
746 struct dwo_sections
747 {
748   struct dwarf2_section_info abbrev;
749   struct dwarf2_section_info line;
750   struct dwarf2_section_info loc;
751   struct dwarf2_section_info macinfo;
752   struct dwarf2_section_info macro;
753   struct dwarf2_section_info str;
754   struct dwarf2_section_info str_offsets;
755   /* In the case of a virtual DWO file, these two are unused.  */
756   struct dwarf2_section_info info;
757   VEC (dwarf2_section_info_def) *types;
758 };
759
760 /* CUs/TUs in DWP/DWO files.  */
761
762 struct dwo_unit
763 {
764   /* Backlink to the containing struct dwo_file.  */
765   struct dwo_file *dwo_file;
766
767   /* The "id" that distinguishes this CU/TU.
768      .debug_info calls this "dwo_id", .debug_types calls this "signature".
769      Since signatures came first, we stick with it for consistency.  */
770   ULONGEST signature;
771
772   /* The section this CU/TU lives in, in the DWO file.  */
773   struct dwarf2_section_info *section;
774
775   /* Same as dwarf2_per_cu_data:{offset,length} but in the DWO section.  */
776   sect_offset offset;
777   unsigned int length;
778
779   /* For types, offset in the type's DIE of the type defined by this TU.  */
780   cu_offset type_offset_in_tu;
781 };
782
783 /* include/dwarf2.h defines the DWP section codes.
784    It defines a max value but it doesn't define a min value, which we
785    use for error checking, so provide one.  */
786
787 enum dwp_v2_section_ids
788 {
789   DW_SECT_MIN = 1
790 };
791
792 /* Data for one DWO file.
793
794    This includes virtual DWO files (a virtual DWO file is a DWO file as it
795    appears in a DWP file).  DWP files don't really have DWO files per se -
796    comdat folding of types "loses" the DWO file they came from, and from
797    a high level view DWP files appear to contain a mass of random types.
798    However, to maintain consistency with the non-DWP case we pretend DWP
799    files contain virtual DWO files, and we assign each TU with one virtual
800    DWO file (generally based on the line and abbrev section offsets -
801    a heuristic that seems to work in practice).  */
802
803 struct dwo_file
804 {
805   /* The DW_AT_GNU_dwo_name attribute.
806      For virtual DWO files the name is constructed from the section offsets
807      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
808      from related CU+TUs.  */
809   const char *dwo_name;
810
811   /* The DW_AT_comp_dir attribute.  */
812   const char *comp_dir;
813
814   /* The bfd, when the file is open.  Otherwise this is NULL.
815      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
816   bfd *dbfd;
817
818   /* The sections that make up this DWO file.
819      Remember that for virtual DWO files in DWP V2, these are virtual
820      sections (for lack of a better name).  */
821   struct dwo_sections sections;
822
823   /* The CU in the file.
824      We only support one because having more than one requires hacking the
825      dwo_name of each to match, which is highly unlikely to happen.
826      Doing this means all TUs can share comp_dir: We also assume that
827      DW_AT_comp_dir across all TUs in a DWO file will be identical.  */
828   struct dwo_unit *cu;
829
830   /* Table of TUs in the file.
831      Each element is a struct dwo_unit.  */
832   htab_t tus;
833 };
834
835 /* These sections are what may appear in a DWP file.  */
836
837 struct dwp_sections
838 {
839   /* These are used by both DWP version 1 and 2.  */
840   struct dwarf2_section_info str;
841   struct dwarf2_section_info cu_index;
842   struct dwarf2_section_info tu_index;
843
844   /* These are only used by DWP version 2 files.
845      In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
846      sections are referenced by section number, and are not recorded here.
847      In DWP version 2 there is at most one copy of all these sections, each
848      section being (effectively) comprised of the concatenation of all of the
849      individual sections that exist in the version 1 format.
850      To keep the code simple we treat each of these concatenated pieces as a
851      section itself (a virtual section?).  */
852   struct dwarf2_section_info abbrev;
853   struct dwarf2_section_info info;
854   struct dwarf2_section_info line;
855   struct dwarf2_section_info loc;
856   struct dwarf2_section_info macinfo;
857   struct dwarf2_section_info macro;
858   struct dwarf2_section_info str_offsets;
859   struct dwarf2_section_info types;
860 };
861
862 /* These sections are what may appear in a virtual DWO file in DWP version 1.
863    A virtual DWO file is a DWO file as it appears in a DWP file.  */
864
865 struct virtual_v1_dwo_sections
866 {
867   struct dwarf2_section_info abbrev;
868   struct dwarf2_section_info line;
869   struct dwarf2_section_info loc;
870   struct dwarf2_section_info macinfo;
871   struct dwarf2_section_info macro;
872   struct dwarf2_section_info str_offsets;
873   /* Each DWP hash table entry records one CU or one TU.
874      That is recorded here, and copied to dwo_unit.section.  */
875   struct dwarf2_section_info info_or_types;
876 };
877
878 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
879    In version 2, the sections of the DWO files are concatenated together
880    and stored in one section of that name.  Thus each ELF section contains
881    several "virtual" sections.  */
882
883 struct virtual_v2_dwo_sections
884 {
885   bfd_size_type abbrev_offset;
886   bfd_size_type abbrev_size;
887
888   bfd_size_type line_offset;
889   bfd_size_type line_size;
890
891   bfd_size_type loc_offset;
892   bfd_size_type loc_size;
893
894   bfd_size_type macinfo_offset;
895   bfd_size_type macinfo_size;
896
897   bfd_size_type macro_offset;
898   bfd_size_type macro_size;
899
900   bfd_size_type str_offsets_offset;
901   bfd_size_type str_offsets_size;
902
903   /* Each DWP hash table entry records one CU or one TU.
904      That is recorded here, and copied to dwo_unit.section.  */
905   bfd_size_type info_or_types_offset;
906   bfd_size_type info_or_types_size;
907 };
908
909 /* Contents of DWP hash tables.  */
910
911 struct dwp_hash_table
912 {
913   uint32_t version, nr_columns;
914   uint32_t nr_units, nr_slots;
915   const gdb_byte *hash_table, *unit_table;
916   union
917   {
918     struct
919     {
920       const gdb_byte *indices;
921     } v1;
922     struct
923     {
924       /* This is indexed by column number and gives the id of the section
925          in that column.  */
926 #define MAX_NR_V2_DWO_SECTIONS \
927   (1 /* .debug_info or .debug_types */ \
928    + 1 /* .debug_abbrev */ \
929    + 1 /* .debug_line */ \
930    + 1 /* .debug_loc */ \
931    + 1 /* .debug_str_offsets */ \
932    + 1 /* .debug_macro or .debug_macinfo */)
933       int section_ids[MAX_NR_V2_DWO_SECTIONS];
934       const gdb_byte *offsets;
935       const gdb_byte *sizes;
936     } v2;
937   } section_pool;
938 };
939
940 /* Data for one DWP file.  */
941
942 struct dwp_file
943 {
944   /* Name of the file.  */
945   const char *name;
946
947   /* File format version.  */
948   int version;
949
950   /* The bfd.  */
951   bfd *dbfd;
952
953   /* Section info for this file.  */
954   struct dwp_sections sections;
955
956   /* Table of CUs in the file.  */
957   const struct dwp_hash_table *cus;
958
959   /* Table of TUs in the file.  */
960   const struct dwp_hash_table *tus;
961
962   /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
963   htab_t loaded_cus;
964   htab_t loaded_tus;
965
966   /* Table to map ELF section numbers to their sections.
967      This is only needed for the DWP V1 file format.  */
968   unsigned int num_sections;
969   asection **elf_sections;
970 };
971
972 /* This represents a '.dwz' file.  */
973
974 struct dwz_file
975 {
976   /* A dwz file can only contain a few sections.  */
977   struct dwarf2_section_info abbrev;
978   struct dwarf2_section_info info;
979   struct dwarf2_section_info str;
980   struct dwarf2_section_info line;
981   struct dwarf2_section_info macro;
982   struct dwarf2_section_info gdb_index;
983
984   /* The dwz's BFD.  */
985   bfd *dwz_bfd;
986 };
987
988 /* Struct used to pass misc. parameters to read_die_and_children, et
989    al.  which are used for both .debug_info and .debug_types dies.
990    All parameters here are unchanging for the life of the call.  This
991    struct exists to abstract away the constant parameters of die reading.  */
992
993 struct die_reader_specs
994 {
995   /* The bfd of die_section.  */
996   bfd* abfd;
997
998   /* The CU of the DIE we are parsing.  */
999   struct dwarf2_cu *cu;
1000
1001   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
1002   struct dwo_file *dwo_file;
1003
1004   /* The section the die comes from.
1005      This is either .debug_info or .debug_types, or the .dwo variants.  */
1006   struct dwarf2_section_info *die_section;
1007
1008   /* die_section->buffer.  */
1009   const gdb_byte *buffer;
1010
1011   /* The end of the buffer.  */
1012   const gdb_byte *buffer_end;
1013
1014   /* The value of the DW_AT_comp_dir attribute.  */
1015   const char *comp_dir;
1016 };
1017
1018 /* Type of function passed to init_cutu_and_read_dies, et.al.  */
1019 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
1020                                       const gdb_byte *info_ptr,
1021                                       struct die_info *comp_unit_die,
1022                                       int has_children,
1023                                       void *data);
1024
1025 /* The line number information for a compilation unit (found in the
1026    .debug_line section) begins with a "statement program header",
1027    which contains the following information.  */
1028 struct line_header
1029 {
1030   /* Offset of line number information in .debug_line section.  */
1031   sect_offset offset;
1032
1033   /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
1034   unsigned offset_in_dwz : 1;
1035
1036   unsigned int total_length;
1037   unsigned short version;
1038   unsigned int header_length;
1039   unsigned char minimum_instruction_length;
1040   unsigned char maximum_ops_per_instruction;
1041   unsigned char default_is_stmt;
1042   int line_base;
1043   unsigned char line_range;
1044   unsigned char opcode_base;
1045
1046   /* standard_opcode_lengths[i] is the number of operands for the
1047      standard opcode whose value is i.  This means that
1048      standard_opcode_lengths[0] is unused, and the last meaningful
1049      element is standard_opcode_lengths[opcode_base - 1].  */
1050   unsigned char *standard_opcode_lengths;
1051
1052   /* The include_directories table.  NOTE!  These strings are not
1053      allocated with xmalloc; instead, they are pointers into
1054      debug_line_buffer.  If you try to free them, `free' will get
1055      indigestion.  */
1056   unsigned int num_include_dirs, include_dirs_size;
1057   const char **include_dirs;
1058
1059   /* The file_names table.  NOTE!  These strings are not allocated
1060      with xmalloc; instead, they are pointers into debug_line_buffer.
1061      Don't try to free them directly.  */
1062   unsigned int num_file_names, file_names_size;
1063   struct file_entry
1064   {
1065     const char *name;
1066     unsigned int dir_index;
1067     unsigned int mod_time;
1068     unsigned int length;
1069     int included_p; /* Non-zero if referenced by the Line Number Program.  */
1070     struct symtab *symtab; /* The associated symbol table, if any.  */
1071   } *file_names;
1072
1073   /* The start and end of the statement program following this
1074      header.  These point into dwarf2_per_objfile->line_buffer.  */
1075   const gdb_byte *statement_program_start, *statement_program_end;
1076 };
1077
1078 /* When we construct a partial symbol table entry we only
1079    need this much information.  */
1080 struct partial_die_info
1081   {
1082     /* Offset of this DIE.  */
1083     sect_offset offset;
1084
1085     /* DWARF-2 tag for this DIE.  */
1086     ENUM_BITFIELD(dwarf_tag) tag : 16;
1087
1088     /* Assorted flags describing the data found in this DIE.  */
1089     unsigned int has_children : 1;
1090     unsigned int is_external : 1;
1091     unsigned int is_declaration : 1;
1092     unsigned int has_type : 1;
1093     unsigned int has_specification : 1;
1094     unsigned int has_pc_info : 1;
1095     unsigned int may_be_inlined : 1;
1096
1097     /* Flag set if the SCOPE field of this structure has been
1098        computed.  */
1099     unsigned int scope_set : 1;
1100
1101     /* Flag set if the DIE has a byte_size attribute.  */
1102     unsigned int has_byte_size : 1;
1103
1104     /* Flag set if any of the DIE's children are template arguments.  */
1105     unsigned int has_template_arguments : 1;
1106
1107     /* Flag set if fixup_partial_die has been called on this die.  */
1108     unsigned int fixup_called : 1;
1109
1110     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1111     unsigned int is_dwz : 1;
1112
1113     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1114     unsigned int spec_is_dwz : 1;
1115
1116     /* The name of this DIE.  Normally the value of DW_AT_name, but
1117        sometimes a default name for unnamed DIEs.  */
1118     const char *name;
1119
1120     /* The linkage name, if present.  */
1121     const char *linkage_name;
1122
1123     /* The scope to prepend to our children.  This is generally
1124        allocated on the comp_unit_obstack, so will disappear
1125        when this compilation unit leaves the cache.  */
1126     const char *scope;
1127
1128     /* Some data associated with the partial DIE.  The tag determines
1129        which field is live.  */
1130     union
1131     {
1132       /* The location description associated with this DIE, if any.  */
1133       struct dwarf_block *locdesc;
1134       /* The offset of an import, for DW_TAG_imported_unit.  */
1135       sect_offset offset;
1136     } d;
1137
1138     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1139     CORE_ADDR lowpc;
1140     CORE_ADDR highpc;
1141
1142     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1143        DW_AT_sibling, if any.  */
1144     /* NOTE: This member isn't strictly necessary, read_partial_die could
1145        return DW_AT_sibling values to its caller load_partial_dies.  */
1146     const gdb_byte *sibling;
1147
1148     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1149        DW_AT_specification (or DW_AT_abstract_origin or
1150        DW_AT_extension).  */
1151     sect_offset spec_offset;
1152
1153     /* Pointers to this DIE's parent, first child, and next sibling,
1154        if any.  */
1155     struct partial_die_info *die_parent, *die_child, *die_sibling;
1156   };
1157
1158 /* This data structure holds the information of an abbrev.  */
1159 struct abbrev_info
1160   {
1161     unsigned int number;        /* number identifying abbrev */
1162     enum dwarf_tag tag;         /* dwarf tag */
1163     unsigned short has_children;                /* boolean */
1164     unsigned short num_attrs;   /* number of attributes */
1165     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1166     struct abbrev_info *next;   /* next in chain */
1167   };
1168
1169 struct attr_abbrev
1170   {
1171     ENUM_BITFIELD(dwarf_attribute) name : 16;
1172     ENUM_BITFIELD(dwarf_form) form : 16;
1173   };
1174
1175 /* Size of abbrev_table.abbrev_hash_table.  */
1176 #define ABBREV_HASH_SIZE 121
1177
1178 /* Top level data structure to contain an abbreviation table.  */
1179
1180 struct abbrev_table
1181 {
1182   /* Where the abbrev table came from.
1183      This is used as a sanity check when the table is used.  */
1184   sect_offset offset;
1185
1186   /* Storage for the abbrev table.  */
1187   struct obstack abbrev_obstack;
1188
1189   /* Hash table of abbrevs.
1190      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1191      It could be statically allocated, but the previous code didn't so we
1192      don't either.  */
1193   struct abbrev_info **abbrevs;
1194 };
1195
1196 /* Attributes have a name and a value.  */
1197 struct attribute
1198   {
1199     ENUM_BITFIELD(dwarf_attribute) name : 16;
1200     ENUM_BITFIELD(dwarf_form) form : 15;
1201
1202     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1203        field should be in u.str (existing only for DW_STRING) but it is kept
1204        here for better struct attribute alignment.  */
1205     unsigned int string_is_canonical : 1;
1206
1207     union
1208       {
1209         const char *str;
1210         struct dwarf_block *blk;
1211         ULONGEST unsnd;
1212         LONGEST snd;
1213         CORE_ADDR addr;
1214         ULONGEST signature;
1215       }
1216     u;
1217   };
1218
1219 /* This data structure holds a complete die structure.  */
1220 struct die_info
1221   {
1222     /* DWARF-2 tag for this DIE.  */
1223     ENUM_BITFIELD(dwarf_tag) tag : 16;
1224
1225     /* Number of attributes */
1226     unsigned char num_attrs;
1227
1228     /* True if we're presently building the full type name for the
1229        type derived from this DIE.  */
1230     unsigned char building_fullname : 1;
1231
1232     /* True if this die is in process.  PR 16581.  */
1233     unsigned char in_process : 1;
1234
1235     /* Abbrev number */
1236     unsigned int abbrev;
1237
1238     /* Offset in .debug_info or .debug_types section.  */
1239     sect_offset offset;
1240
1241     /* The dies in a compilation unit form an n-ary tree.  PARENT
1242        points to this die's parent; CHILD points to the first child of
1243        this node; and all the children of a given node are chained
1244        together via their SIBLING fields.  */
1245     struct die_info *child;     /* Its first child, if any.  */
1246     struct die_info *sibling;   /* Its next sibling, if any.  */
1247     struct die_info *parent;    /* Its parent, if any.  */
1248
1249     /* An array of attributes, with NUM_ATTRS elements.  There may be
1250        zero, but it's not common and zero-sized arrays are not
1251        sufficiently portable C.  */
1252     struct attribute attrs[1];
1253   };
1254
1255 /* Get at parts of an attribute structure.  */
1256
1257 #define DW_STRING(attr)    ((attr)->u.str)
1258 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1259 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1260 #define DW_BLOCK(attr)     ((attr)->u.blk)
1261 #define DW_SND(attr)       ((attr)->u.snd)
1262 #define DW_ADDR(attr)      ((attr)->u.addr)
1263 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1264
1265 /* Blocks are a bunch of untyped bytes.  */
1266 struct dwarf_block
1267   {
1268     size_t size;
1269
1270     /* Valid only if SIZE is not zero.  */
1271     const gdb_byte *data;
1272   };
1273
1274 #ifndef ATTR_ALLOC_CHUNK
1275 #define ATTR_ALLOC_CHUNK 4
1276 #endif
1277
1278 /* Allocate fields for structs, unions and enums in this size.  */
1279 #ifndef DW_FIELD_ALLOC_CHUNK
1280 #define DW_FIELD_ALLOC_CHUNK 4
1281 #endif
1282
1283 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1284    but this would require a corresponding change in unpack_field_as_long
1285    and friends.  */
1286 static int bits_per_byte = 8;
1287
1288 /* The routines that read and process dies for a C struct or C++ class
1289    pass lists of data member fields and lists of member function fields
1290    in an instance of a field_info structure, as defined below.  */
1291 struct field_info
1292   {
1293     /* List of data member and baseclasses fields.  */
1294     struct nextfield
1295       {
1296         struct nextfield *next;
1297         int accessibility;
1298         int virtuality;
1299         struct field field;
1300       }
1301      *fields, *baseclasses;
1302
1303     /* Number of fields (including baseclasses).  */
1304     int nfields;
1305
1306     /* Number of baseclasses.  */
1307     int nbaseclasses;
1308
1309     /* Set if the accesibility of one of the fields is not public.  */
1310     int non_public_fields;
1311
1312     /* Member function fields array, entries are allocated in the order they
1313        are encountered in the object file.  */
1314     struct nextfnfield
1315       {
1316         struct nextfnfield *next;
1317         struct fn_field fnfield;
1318       }
1319      *fnfields;
1320
1321     /* Member function fieldlist array, contains name of possibly overloaded
1322        member function, number of overloaded member functions and a pointer
1323        to the head of the member function field chain.  */
1324     struct fnfieldlist
1325       {
1326         const char *name;
1327         int length;
1328         struct nextfnfield *head;
1329       }
1330      *fnfieldlists;
1331
1332     /* Number of entries in the fnfieldlists array.  */
1333     int nfnfields;
1334
1335     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1336        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1337     struct typedef_field_list
1338       {
1339         struct typedef_field field;
1340         struct typedef_field_list *next;
1341       }
1342     *typedef_field_list;
1343     unsigned typedef_field_list_count;
1344   };
1345
1346 /* One item on the queue of compilation units to read in full symbols
1347    for.  */
1348 struct dwarf2_queue_item
1349 {
1350   struct dwarf2_per_cu_data *per_cu;
1351   enum language pretend_language;
1352   struct dwarf2_queue_item *next;
1353 };
1354
1355 /* The current queue.  */
1356 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1357
1358 /* Loaded secondary compilation units are kept in memory until they
1359    have not been referenced for the processing of this many
1360    compilation units.  Set this to zero to disable caching.  Cache
1361    sizes of up to at least twenty will improve startup time for
1362    typical inter-CU-reference binaries, at an obvious memory cost.  */
1363 static int dwarf2_max_cache_age = 5;
1364 static void
1365 show_dwarf2_max_cache_age (struct ui_file *file, int from_tty,
1366                            struct cmd_list_element *c, const char *value)
1367 {
1368   fprintf_filtered (file, _("The upper bound on the age of cached "
1369                             "dwarf2 compilation units is %s.\n"),
1370                     value);
1371 }
1372 \f
1373 /* local function prototypes */
1374
1375 static const char *get_section_name (const struct dwarf2_section_info *);
1376
1377 static const char *get_section_file_name (const struct dwarf2_section_info *);
1378
1379 static void dwarf2_locate_sections (bfd *, asection *, void *);
1380
1381 static void dwarf2_find_base_address (struct die_info *die,
1382                                       struct dwarf2_cu *cu);
1383
1384 static struct partial_symtab *create_partial_symtab
1385   (struct dwarf2_per_cu_data *per_cu, const char *name);
1386
1387 static void dwarf2_build_psymtabs_hard (struct objfile *);
1388
1389 static void scan_partial_symbols (struct partial_die_info *,
1390                                   CORE_ADDR *, CORE_ADDR *,
1391                                   int, struct dwarf2_cu *);
1392
1393 static void add_partial_symbol (struct partial_die_info *,
1394                                 struct dwarf2_cu *);
1395
1396 static void add_partial_namespace (struct partial_die_info *pdi,
1397                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1398                                    int set_addrmap, struct dwarf2_cu *cu);
1399
1400 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1401                                 CORE_ADDR *highpc, int set_addrmap,
1402                                 struct dwarf2_cu *cu);
1403
1404 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1405                                      struct dwarf2_cu *cu);
1406
1407 static void add_partial_subprogram (struct partial_die_info *pdi,
1408                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1409                                     int need_pc, struct dwarf2_cu *cu);
1410
1411 static void dwarf2_read_symtab (struct partial_symtab *,
1412                                 struct objfile *);
1413
1414 static void psymtab_to_symtab_1 (struct partial_symtab *);
1415
1416 static struct abbrev_info *abbrev_table_lookup_abbrev
1417   (const struct abbrev_table *, unsigned int);
1418
1419 static struct abbrev_table *abbrev_table_read_table
1420   (struct dwarf2_section_info *, sect_offset);
1421
1422 static void abbrev_table_free (struct abbrev_table *);
1423
1424 static void abbrev_table_free_cleanup (void *);
1425
1426 static void dwarf2_read_abbrevs (struct dwarf2_cu *,
1427                                  struct dwarf2_section_info *);
1428
1429 static void dwarf2_free_abbrev_table (void *);
1430
1431 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1432
1433 static struct partial_die_info *load_partial_dies
1434   (const struct die_reader_specs *, const gdb_byte *, int);
1435
1436 static const gdb_byte *read_partial_die (const struct die_reader_specs *,
1437                                          struct partial_die_info *,
1438                                          struct abbrev_info *,
1439                                          unsigned int,
1440                                          const gdb_byte *);
1441
1442 static struct partial_die_info *find_partial_die (sect_offset, int,
1443                                                   struct dwarf2_cu *);
1444
1445 static void fixup_partial_die (struct partial_die_info *,
1446                                struct dwarf2_cu *);
1447
1448 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1449                                        struct attribute *, struct attr_abbrev *,
1450                                        const gdb_byte *);
1451
1452 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1453
1454 static int read_1_signed_byte (bfd *, const gdb_byte *);
1455
1456 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1457
1458 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1459
1460 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1461
1462 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1463                                unsigned int *);
1464
1465 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1466
1467 static LONGEST read_checked_initial_length_and_offset
1468   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1469    unsigned int *, unsigned int *);
1470
1471 static LONGEST read_offset (bfd *, const gdb_byte *,
1472                             const struct comp_unit_head *,
1473                             unsigned int *);
1474
1475 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1476
1477 static sect_offset read_abbrev_offset (struct dwarf2_section_info *,
1478                                        sect_offset);
1479
1480 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1481
1482 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1483
1484 static const char *read_indirect_string (bfd *, const gdb_byte *,
1485                                          const struct comp_unit_head *,
1486                                          unsigned int *);
1487
1488 static const char *read_indirect_string_from_dwz (struct dwz_file *, LONGEST);
1489
1490 static ULONGEST read_unsigned_leb128 (bfd *, const gdb_byte *, unsigned int *);
1491
1492 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1493
1494 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1495                                               const gdb_byte *,
1496                                               unsigned int *);
1497
1498 static const char *read_str_index (const struct die_reader_specs *reader,
1499                                    ULONGEST str_index);
1500
1501 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1502
1503 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1504                                       struct dwarf2_cu *);
1505
1506 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1507                                                 unsigned int);
1508
1509 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1510                                struct dwarf2_cu *cu);
1511
1512 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1513
1514 static struct die_info *die_specification (struct die_info *die,
1515                                            struct dwarf2_cu **);
1516
1517 static void free_line_header (struct line_header *lh);
1518
1519 static struct line_header *dwarf_decode_line_header (unsigned int offset,
1520                                                      struct dwarf2_cu *cu);
1521
1522 static void dwarf_decode_lines (struct line_header *, const char *,
1523                                 struct dwarf2_cu *, struct partial_symtab *,
1524                                 CORE_ADDR, int decode_mapping);
1525
1526 static void dwarf2_start_subfile (const char *, const char *);
1527
1528 static struct compunit_symtab *dwarf2_start_symtab (struct dwarf2_cu *,
1529                                                     const char *, const char *,
1530                                                     CORE_ADDR);
1531
1532 static struct symbol *new_symbol (struct die_info *, struct type *,
1533                                   struct dwarf2_cu *);
1534
1535 static struct symbol *new_symbol_full (struct die_info *, struct type *,
1536                                        struct dwarf2_cu *, struct symbol *);
1537
1538 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1539                                 struct dwarf2_cu *);
1540
1541 static void dwarf2_const_value_attr (const struct attribute *attr,
1542                                      struct type *type,
1543                                      const char *name,
1544                                      struct obstack *obstack,
1545                                      struct dwarf2_cu *cu, LONGEST *value,
1546                                      const gdb_byte **bytes,
1547                                      struct dwarf2_locexpr_baton **baton);
1548
1549 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1550
1551 static int need_gnat_info (struct dwarf2_cu *);
1552
1553 static struct type *die_descriptive_type (struct die_info *,
1554                                           struct dwarf2_cu *);
1555
1556 static void set_descriptive_type (struct type *, struct die_info *,
1557                                   struct dwarf2_cu *);
1558
1559 static struct type *die_containing_type (struct die_info *,
1560                                          struct dwarf2_cu *);
1561
1562 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1563                                      struct dwarf2_cu *);
1564
1565 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1566
1567 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1568
1569 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1570
1571 static char *typename_concat (struct obstack *obs, const char *prefix,
1572                               const char *suffix, int physname,
1573                               struct dwarf2_cu *cu);
1574
1575 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1576
1577 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1578
1579 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1580
1581 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1582
1583 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1584
1585 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1586                                struct dwarf2_cu *, struct partial_symtab *);
1587
1588 static int dwarf2_get_pc_bounds (struct die_info *,
1589                                  CORE_ADDR *, CORE_ADDR *, struct dwarf2_cu *,
1590                                  struct partial_symtab *);
1591
1592 static void get_scope_pc_bounds (struct die_info *,
1593                                  CORE_ADDR *, CORE_ADDR *,
1594                                  struct dwarf2_cu *);
1595
1596 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1597                                         CORE_ADDR, struct dwarf2_cu *);
1598
1599 static void dwarf2_add_field (struct field_info *, struct die_info *,
1600                               struct dwarf2_cu *);
1601
1602 static void dwarf2_attach_fields_to_type (struct field_info *,
1603                                           struct type *, struct dwarf2_cu *);
1604
1605 static void dwarf2_add_member_fn (struct field_info *,
1606                                   struct die_info *, struct type *,
1607                                   struct dwarf2_cu *);
1608
1609 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1610                                              struct type *,
1611                                              struct dwarf2_cu *);
1612
1613 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1614
1615 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1616
1617 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1618
1619 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1620
1621 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1622
1623 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1624
1625 static struct type *read_module_type (struct die_info *die,
1626                                       struct dwarf2_cu *cu);
1627
1628 static const char *namespace_name (struct die_info *die,
1629                                    int *is_anonymous, struct dwarf2_cu *);
1630
1631 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1632
1633 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1634
1635 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1636                                                        struct dwarf2_cu *);
1637
1638 static struct die_info *read_die_and_siblings_1
1639   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1640    struct die_info *);
1641
1642 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1643                                                const gdb_byte *info_ptr,
1644                                                const gdb_byte **new_info_ptr,
1645                                                struct die_info *parent);
1646
1647 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1648                                         struct die_info **, const gdb_byte *,
1649                                         int *, int);
1650
1651 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1652                                       struct die_info **, const gdb_byte *,
1653                                       int *);
1654
1655 static void process_die (struct die_info *, struct dwarf2_cu *);
1656
1657 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1658                                              struct obstack *);
1659
1660 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1661
1662 static const char *dwarf2_full_name (const char *name,
1663                                      struct die_info *die,
1664                                      struct dwarf2_cu *cu);
1665
1666 static const char *dwarf2_physname (const char *name, struct die_info *die,
1667                                     struct dwarf2_cu *cu);
1668
1669 static struct die_info *dwarf2_extension (struct die_info *die,
1670                                           struct dwarf2_cu **);
1671
1672 static const char *dwarf_tag_name (unsigned int);
1673
1674 static const char *dwarf_attr_name (unsigned int);
1675
1676 static const char *dwarf_form_name (unsigned int);
1677
1678 static char *dwarf_bool_name (unsigned int);
1679
1680 static const char *dwarf_type_encoding_name (unsigned int);
1681
1682 static struct die_info *sibling_die (struct die_info *);
1683
1684 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1685
1686 static void dump_die_for_error (struct die_info *);
1687
1688 static void dump_die_1 (struct ui_file *, int level, int max_level,
1689                         struct die_info *);
1690
1691 /*static*/ void dump_die (struct die_info *, int max_level);
1692
1693 static void store_in_ref_table (struct die_info *,
1694                                 struct dwarf2_cu *);
1695
1696 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1697
1698 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1699
1700 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1701                                                const struct attribute *,
1702                                                struct dwarf2_cu **);
1703
1704 static struct die_info *follow_die_ref (struct die_info *,
1705                                         const struct attribute *,
1706                                         struct dwarf2_cu **);
1707
1708 static struct die_info *follow_die_sig (struct die_info *,
1709                                         const struct attribute *,
1710                                         struct dwarf2_cu **);
1711
1712 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1713                                          struct dwarf2_cu *);
1714
1715 static struct type *get_DW_AT_signature_type (struct die_info *,
1716                                               const struct attribute *,
1717                                               struct dwarf2_cu *);
1718
1719 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1720
1721 static void read_signatured_type (struct signatured_type *);
1722
1723 /* memory allocation interface */
1724
1725 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1726
1727 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1728
1729 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
1730
1731 static int attr_form_is_block (const struct attribute *);
1732
1733 static int attr_form_is_section_offset (const struct attribute *);
1734
1735 static int attr_form_is_constant (const struct attribute *);
1736
1737 static int attr_form_is_ref (const struct attribute *);
1738
1739 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1740                                    struct dwarf2_loclist_baton *baton,
1741                                    const struct attribute *attr);
1742
1743 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1744                                          struct symbol *sym,
1745                                          struct dwarf2_cu *cu,
1746                                          int is_block);
1747
1748 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1749                                      const gdb_byte *info_ptr,
1750                                      struct abbrev_info *abbrev);
1751
1752 static void free_stack_comp_unit (void *);
1753
1754 static hashval_t partial_die_hash (const void *item);
1755
1756 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1757
1758 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1759   (sect_offset offset, unsigned int offset_in_dwz, struct objfile *objfile);
1760
1761 static void init_one_comp_unit (struct dwarf2_cu *cu,
1762                                 struct dwarf2_per_cu_data *per_cu);
1763
1764 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1765                                    struct die_info *comp_unit_die,
1766                                    enum language pretend_language);
1767
1768 static void free_heap_comp_unit (void *);
1769
1770 static void free_cached_comp_units (void *);
1771
1772 static void age_cached_comp_units (void);
1773
1774 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1775
1776 static struct type *set_die_type (struct die_info *, struct type *,
1777                                   struct dwarf2_cu *);
1778
1779 static void create_all_comp_units (struct objfile *);
1780
1781 static int create_all_type_units (struct objfile *);
1782
1783 static void load_full_comp_unit (struct dwarf2_per_cu_data *,
1784                                  enum language);
1785
1786 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1787                                     enum language);
1788
1789 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1790                                     enum language);
1791
1792 static void dwarf2_add_dependence (struct dwarf2_cu *,
1793                                    struct dwarf2_per_cu_data *);
1794
1795 static void dwarf2_mark (struct dwarf2_cu *);
1796
1797 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1798
1799 static struct type *get_die_type_at_offset (sect_offset,
1800                                             struct dwarf2_per_cu_data *);
1801
1802 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1803
1804 static void dwarf2_release_queue (void *dummy);
1805
1806 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1807                              enum language pretend_language);
1808
1809 static void process_queue (void);
1810
1811 static void find_file_and_directory (struct die_info *die,
1812                                      struct dwarf2_cu *cu,
1813                                      const char **name, const char **comp_dir);
1814
1815 static char *file_full_name (int file, struct line_header *lh,
1816                              const char *comp_dir);
1817
1818 static const gdb_byte *read_and_check_comp_unit_head
1819   (struct comp_unit_head *header,
1820    struct dwarf2_section_info *section,
1821    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1822    int is_debug_types_section);
1823
1824 static void init_cutu_and_read_dies
1825   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1826    int use_existing_cu, int keep,
1827    die_reader_func_ftype *die_reader_func, void *data);
1828
1829 static void init_cutu_and_read_dies_simple
1830   (struct dwarf2_per_cu_data *this_cu,
1831    die_reader_func_ftype *die_reader_func, void *data);
1832
1833 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1834
1835 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1836
1837 static struct dwo_unit *lookup_dwo_unit_in_dwp
1838   (struct dwp_file *dwp_file, const char *comp_dir,
1839    ULONGEST signature, int is_debug_types);
1840
1841 static struct dwp_file *get_dwp_file (void);
1842
1843 static struct dwo_unit *lookup_dwo_comp_unit
1844   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
1845
1846 static struct dwo_unit *lookup_dwo_type_unit
1847   (struct signatured_type *, const char *, const char *);
1848
1849 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1850
1851 static void free_dwo_file_cleanup (void *);
1852
1853 static void process_cu_includes (void);
1854
1855 static void check_producer (struct dwarf2_cu *cu);
1856
1857 static void free_line_header_voidp (void *arg);
1858 \f
1859 /* Various complaints about symbol reading that don't abort the process.  */
1860
1861 static void
1862 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
1863 {
1864   complaint (&symfile_complaints,
1865              _("statement list doesn't fit in .debug_line section"));
1866 }
1867
1868 static void
1869 dwarf2_debug_line_missing_file_complaint (void)
1870 {
1871   complaint (&symfile_complaints,
1872              _(".debug_line section has line data without a file"));
1873 }
1874
1875 static void
1876 dwarf2_debug_line_missing_end_sequence_complaint (void)
1877 {
1878   complaint (&symfile_complaints,
1879              _(".debug_line section has line "
1880                "program sequence without an end"));
1881 }
1882
1883 static void
1884 dwarf2_complex_location_expr_complaint (void)
1885 {
1886   complaint (&symfile_complaints, _("location expression too complex"));
1887 }
1888
1889 static void
1890 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
1891                                               int arg3)
1892 {
1893   complaint (&symfile_complaints,
1894              _("const value length mismatch for '%s', got %d, expected %d"),
1895              arg1, arg2, arg3);
1896 }
1897
1898 static void
1899 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
1900 {
1901   complaint (&symfile_complaints,
1902              _("debug info runs off end of %s section"
1903                " [in module %s]"),
1904              get_section_name (section),
1905              get_section_file_name (section));
1906 }
1907
1908 static void
1909 dwarf2_macro_malformed_definition_complaint (const char *arg1)
1910 {
1911   complaint (&symfile_complaints,
1912              _("macro debug info contains a "
1913                "malformed macro definition:\n`%s'"),
1914              arg1);
1915 }
1916
1917 static void
1918 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
1919 {
1920   complaint (&symfile_complaints,
1921              _("invalid attribute class or form for '%s' in '%s'"),
1922              arg1, arg2);
1923 }
1924
1925 /* Hash function for line_header_hash.  */
1926
1927 static hashval_t
1928 line_header_hash (const struct line_header *ofs)
1929 {
1930   return ofs->offset.sect_off ^ ofs->offset_in_dwz;
1931 }
1932
1933 /* Hash function for htab_create_alloc_ex for line_header_hash.  */
1934
1935 static hashval_t
1936 line_header_hash_voidp (const void *item)
1937 {
1938   const struct line_header *ofs = item;
1939
1940   return line_header_hash (ofs);
1941 }
1942
1943 /* Equality function for line_header_hash.  */
1944
1945 static int
1946 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
1947 {
1948   const struct line_header *ofs_lhs = item_lhs;
1949   const struct line_header *ofs_rhs = item_rhs;
1950
1951   return (ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off
1952           && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
1953 }
1954
1955 \f
1956 #if WORDS_BIGENDIAN
1957
1958 /* Convert VALUE between big- and little-endian.  */
1959 static offset_type
1960 byte_swap (offset_type value)
1961 {
1962   offset_type result;
1963
1964   result = (value & 0xff) << 24;
1965   result |= (value & 0xff00) << 8;
1966   result |= (value & 0xff0000) >> 8;
1967   result |= (value & 0xff000000) >> 24;
1968   return result;
1969 }
1970
1971 #define MAYBE_SWAP(V)  byte_swap (V)
1972
1973 #else
1974 #define MAYBE_SWAP(V) (V)
1975 #endif /* WORDS_BIGENDIAN */
1976
1977 /* Read the given attribute value as an address, taking the attribute's
1978    form into account.  */
1979
1980 static CORE_ADDR
1981 attr_value_as_address (struct attribute *attr)
1982 {
1983   CORE_ADDR addr;
1984
1985   if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
1986     {
1987       /* Aside from a few clearly defined exceptions, attributes that
1988          contain an address must always be in DW_FORM_addr form.
1989          Unfortunately, some compilers happen to be violating this
1990          requirement by encoding addresses using other forms, such
1991          as DW_FORM_data4 for example.  For those broken compilers,
1992          we try to do our best, without any guarantee of success,
1993          to interpret the address correctly.  It would also be nice
1994          to generate a complaint, but that would require us to maintain
1995          a list of legitimate cases where a non-address form is allowed,
1996          as well as update callers to pass in at least the CU's DWARF
1997          version.  This is more overhead than what we're willing to
1998          expand for a pretty rare case.  */
1999       addr = DW_UNSND (attr);
2000     }
2001   else
2002     addr = DW_ADDR (attr);
2003
2004   return addr;
2005 }
2006
2007 /* The suffix for an index file.  */
2008 #define INDEX_SUFFIX ".gdb-index"
2009
2010 /* Try to locate the sections we need for DWARF 2 debugging
2011    information and return true if we have enough to do something.
2012    NAMES points to the dwarf2 section names, or is NULL if the standard
2013    ELF names are used.  */
2014
2015 int
2016 dwarf2_has_info (struct objfile *objfile,
2017                  const struct dwarf2_debug_sections *names)
2018 {
2019   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
2020   if (!dwarf2_per_objfile)
2021     {
2022       /* Initialize per-objfile state.  */
2023       struct dwarf2_per_objfile *data
2024         = obstack_alloc (&objfile->objfile_obstack, sizeof (*data));
2025
2026       memset (data, 0, sizeof (*data));
2027       set_objfile_data (objfile, dwarf2_objfile_data_key, data);
2028       dwarf2_per_objfile = data;
2029
2030       bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections,
2031                              (void *) names);
2032       dwarf2_per_objfile->objfile = objfile;
2033     }
2034   return (!dwarf2_per_objfile->info.is_virtual
2035           && dwarf2_per_objfile->info.s.asection != NULL
2036           && !dwarf2_per_objfile->abbrev.is_virtual
2037           && dwarf2_per_objfile->abbrev.s.asection != NULL);
2038 }
2039
2040 /* Return the containing section of virtual section SECTION.  */
2041
2042 static struct dwarf2_section_info *
2043 get_containing_section (const struct dwarf2_section_info *section)
2044 {
2045   gdb_assert (section->is_virtual);
2046   return section->s.containing_section;
2047 }
2048
2049 /* Return the bfd owner of SECTION.  */
2050
2051 static struct bfd *
2052 get_section_bfd_owner (const struct dwarf2_section_info *section)
2053 {
2054   if (section->is_virtual)
2055     {
2056       section = get_containing_section (section);
2057       gdb_assert (!section->is_virtual);
2058     }
2059   return section->s.asection->owner;
2060 }
2061
2062 /* Return the bfd section of SECTION.
2063    Returns NULL if the section is not present.  */
2064
2065 static asection *
2066 get_section_bfd_section (const struct dwarf2_section_info *section)
2067 {
2068   if (section->is_virtual)
2069     {
2070       section = get_containing_section (section);
2071       gdb_assert (!section->is_virtual);
2072     }
2073   return section->s.asection;
2074 }
2075
2076 /* Return the name of SECTION.  */
2077
2078 static const char *
2079 get_section_name (const struct dwarf2_section_info *section)
2080 {
2081   asection *sectp = get_section_bfd_section (section);
2082
2083   gdb_assert (sectp != NULL);
2084   return bfd_section_name (get_section_bfd_owner (section), sectp);
2085 }
2086
2087 /* Return the name of the file SECTION is in.  */
2088
2089 static const char *
2090 get_section_file_name (const struct dwarf2_section_info *section)
2091 {
2092   bfd *abfd = get_section_bfd_owner (section);
2093
2094   return bfd_get_filename (abfd);
2095 }
2096
2097 /* Return the id of SECTION.
2098    Returns 0 if SECTION doesn't exist.  */
2099
2100 static int
2101 get_section_id (const struct dwarf2_section_info *section)
2102 {
2103   asection *sectp = get_section_bfd_section (section);
2104
2105   if (sectp == NULL)
2106     return 0;
2107   return sectp->id;
2108 }
2109
2110 /* Return the flags of SECTION.
2111    SECTION (or containing section if this is a virtual section) must exist.  */
2112
2113 static int
2114 get_section_flags (const struct dwarf2_section_info *section)
2115 {
2116   asection *sectp = get_section_bfd_section (section);
2117
2118   gdb_assert (sectp != NULL);
2119   return bfd_get_section_flags (sectp->owner, sectp);
2120 }
2121
2122 /* When loading sections, we look either for uncompressed section or for
2123    compressed section names.  */
2124
2125 static int
2126 section_is_p (const char *section_name,
2127               const struct dwarf2_section_names *names)
2128 {
2129   if (names->normal != NULL
2130       && strcmp (section_name, names->normal) == 0)
2131     return 1;
2132   if (names->compressed != NULL
2133       && strcmp (section_name, names->compressed) == 0)
2134     return 1;
2135   return 0;
2136 }
2137
2138 /* This function is mapped across the sections and remembers the
2139    offset and size of each of the debugging sections we are interested
2140    in.  */
2141
2142 static void
2143 dwarf2_locate_sections (bfd *abfd, asection *sectp, void *vnames)
2144 {
2145   const struct dwarf2_debug_sections *names;
2146   flagword aflag = bfd_get_section_flags (abfd, sectp);
2147
2148   if (vnames == NULL)
2149     names = &dwarf2_elf_names;
2150   else
2151     names = (const struct dwarf2_debug_sections *) vnames;
2152
2153   if ((aflag & SEC_HAS_CONTENTS) == 0)
2154     {
2155     }
2156   else if (section_is_p (sectp->name, &names->info))
2157     {
2158       dwarf2_per_objfile->info.s.asection = sectp;
2159       dwarf2_per_objfile->info.size = bfd_get_section_size (sectp);
2160     }
2161   else if (section_is_p (sectp->name, &names->abbrev))
2162     {
2163       dwarf2_per_objfile->abbrev.s.asection = sectp;
2164       dwarf2_per_objfile->abbrev.size = bfd_get_section_size (sectp);
2165     }
2166   else if (section_is_p (sectp->name, &names->line))
2167     {
2168       dwarf2_per_objfile->line.s.asection = sectp;
2169       dwarf2_per_objfile->line.size = bfd_get_section_size (sectp);
2170     }
2171   else if (section_is_p (sectp->name, &names->loc))
2172     {
2173       dwarf2_per_objfile->loc.s.asection = sectp;
2174       dwarf2_per_objfile->loc.size = bfd_get_section_size (sectp);
2175     }
2176   else if (section_is_p (sectp->name, &names->macinfo))
2177     {
2178       dwarf2_per_objfile->macinfo.s.asection = sectp;
2179       dwarf2_per_objfile->macinfo.size = bfd_get_section_size (sectp);
2180     }
2181   else if (section_is_p (sectp->name, &names->macro))
2182     {
2183       dwarf2_per_objfile->macro.s.asection = sectp;
2184       dwarf2_per_objfile->macro.size = bfd_get_section_size (sectp);
2185     }
2186   else if (section_is_p (sectp->name, &names->str))
2187     {
2188       dwarf2_per_objfile->str.s.asection = sectp;
2189       dwarf2_per_objfile->str.size = bfd_get_section_size (sectp);
2190     }
2191   else if (section_is_p (sectp->name, &names->addr))
2192     {
2193       dwarf2_per_objfile->addr.s.asection = sectp;
2194       dwarf2_per_objfile->addr.size = bfd_get_section_size (sectp);
2195     }
2196   else if (section_is_p (sectp->name, &names->frame))
2197     {
2198       dwarf2_per_objfile->frame.s.asection = sectp;
2199       dwarf2_per_objfile->frame.size = bfd_get_section_size (sectp);
2200     }
2201   else if (section_is_p (sectp->name, &names->eh_frame))
2202     {
2203       dwarf2_per_objfile->eh_frame.s.asection = sectp;
2204       dwarf2_per_objfile->eh_frame.size = bfd_get_section_size (sectp);
2205     }
2206   else if (section_is_p (sectp->name, &names->ranges))
2207     {
2208       dwarf2_per_objfile->ranges.s.asection = sectp;
2209       dwarf2_per_objfile->ranges.size = bfd_get_section_size (sectp);
2210     }
2211   else if (section_is_p (sectp->name, &names->types))
2212     {
2213       struct dwarf2_section_info type_section;
2214
2215       memset (&type_section, 0, sizeof (type_section));
2216       type_section.s.asection = sectp;
2217       type_section.size = bfd_get_section_size (sectp);
2218
2219       VEC_safe_push (dwarf2_section_info_def, dwarf2_per_objfile->types,
2220                      &type_section);
2221     }
2222   else if (section_is_p (sectp->name, &names->gdb_index))
2223     {
2224       dwarf2_per_objfile->gdb_index.s.asection = sectp;
2225       dwarf2_per_objfile->gdb_index.size = bfd_get_section_size (sectp);
2226     }
2227
2228   if ((bfd_get_section_flags (abfd, sectp) & SEC_LOAD)
2229       && bfd_section_vma (abfd, sectp) == 0)
2230     dwarf2_per_objfile->has_section_at_zero = 1;
2231 }
2232
2233 /* A helper function that decides whether a section is empty,
2234    or not present.  */
2235
2236 static int
2237 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2238 {
2239   if (section->is_virtual)
2240     return section->size == 0;
2241   return section->s.asection == NULL || section->size == 0;
2242 }
2243
2244 /* Read the contents of the section INFO.
2245    OBJFILE is the main object file, but not necessarily the file where
2246    the section comes from.  E.g., for DWO files the bfd of INFO is the bfd
2247    of the DWO file.
2248    If the section is compressed, uncompress it before returning.  */
2249
2250 static void
2251 dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info)
2252 {
2253   asection *sectp;
2254   bfd *abfd;
2255   gdb_byte *buf, *retbuf;
2256
2257   if (info->readin)
2258     return;
2259   info->buffer = NULL;
2260   info->readin = 1;
2261
2262   if (dwarf2_section_empty_p (info))
2263     return;
2264
2265   sectp = get_section_bfd_section (info);
2266
2267   /* If this is a virtual section we need to read in the real one first.  */
2268   if (info->is_virtual)
2269     {
2270       struct dwarf2_section_info *containing_section =
2271         get_containing_section (info);
2272
2273       gdb_assert (sectp != NULL);
2274       if ((sectp->flags & SEC_RELOC) != 0)
2275         {
2276           error (_("Dwarf Error: DWP format V2 with relocations is not"
2277                    " supported in section %s [in module %s]"),
2278                  get_section_name (info), get_section_file_name (info));
2279         }
2280       dwarf2_read_section (objfile, containing_section);
2281       /* Other code should have already caught virtual sections that don't
2282          fit.  */
2283       gdb_assert (info->virtual_offset + info->size
2284                   <= containing_section->size);
2285       /* If the real section is empty or there was a problem reading the
2286          section we shouldn't get here.  */
2287       gdb_assert (containing_section->buffer != NULL);
2288       info->buffer = containing_section->buffer + info->virtual_offset;
2289       return;
2290     }
2291
2292   /* If the section has relocations, we must read it ourselves.
2293      Otherwise we attach it to the BFD.  */
2294   if ((sectp->flags & SEC_RELOC) == 0)
2295     {
2296       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2297       return;
2298     }
2299
2300   buf = obstack_alloc (&objfile->objfile_obstack, info->size);
2301   info->buffer = buf;
2302
2303   /* When debugging .o files, we may need to apply relocations; see
2304      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2305      We never compress sections in .o files, so we only need to
2306      try this when the section is not compressed.  */
2307   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2308   if (retbuf != NULL)
2309     {
2310       info->buffer = retbuf;
2311       return;
2312     }
2313
2314   abfd = get_section_bfd_owner (info);
2315   gdb_assert (abfd != NULL);
2316
2317   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2318       || bfd_bread (buf, info->size, abfd) != info->size)
2319     {
2320       error (_("Dwarf Error: Can't read DWARF data"
2321                " in section %s [in module %s]"),
2322              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2323     }
2324 }
2325
2326 /* A helper function that returns the size of a section in a safe way.
2327    If you are positive that the section has been read before using the
2328    size, then it is safe to refer to the dwarf2_section_info object's
2329    "size" field directly.  In other cases, you must call this
2330    function, because for compressed sections the size field is not set
2331    correctly until the section has been read.  */
2332
2333 static bfd_size_type
2334 dwarf2_section_size (struct objfile *objfile,
2335                      struct dwarf2_section_info *info)
2336 {
2337   if (!info->readin)
2338     dwarf2_read_section (objfile, info);
2339   return info->size;
2340 }
2341
2342 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2343    SECTION_NAME.  */
2344
2345 void
2346 dwarf2_get_section_info (struct objfile *objfile,
2347                          enum dwarf2_section_enum sect,
2348                          asection **sectp, const gdb_byte **bufp,
2349                          bfd_size_type *sizep)
2350 {
2351   struct dwarf2_per_objfile *data
2352     = objfile_data (objfile, dwarf2_objfile_data_key);
2353   struct dwarf2_section_info *info;
2354
2355   /* We may see an objfile without any DWARF, in which case we just
2356      return nothing.  */
2357   if (data == NULL)
2358     {
2359       *sectp = NULL;
2360       *bufp = NULL;
2361       *sizep = 0;
2362       return;
2363     }
2364   switch (sect)
2365     {
2366     case DWARF2_DEBUG_FRAME:
2367       info = &data->frame;
2368       break;
2369     case DWARF2_EH_FRAME:
2370       info = &data->eh_frame;
2371       break;
2372     default:
2373       gdb_assert_not_reached ("unexpected section");
2374     }
2375
2376   dwarf2_read_section (objfile, info);
2377
2378   *sectp = get_section_bfd_section (info);
2379   *bufp = info->buffer;
2380   *sizep = info->size;
2381 }
2382
2383 /* A helper function to find the sections for a .dwz file.  */
2384
2385 static void
2386 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2387 {
2388   struct dwz_file *dwz_file = arg;
2389
2390   /* Note that we only support the standard ELF names, because .dwz
2391      is ELF-only (at the time of writing).  */
2392   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2393     {
2394       dwz_file->abbrev.s.asection = sectp;
2395       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2396     }
2397   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2398     {
2399       dwz_file->info.s.asection = sectp;
2400       dwz_file->info.size = bfd_get_section_size (sectp);
2401     }
2402   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2403     {
2404       dwz_file->str.s.asection = sectp;
2405       dwz_file->str.size = bfd_get_section_size (sectp);
2406     }
2407   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2408     {
2409       dwz_file->line.s.asection = sectp;
2410       dwz_file->line.size = bfd_get_section_size (sectp);
2411     }
2412   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2413     {
2414       dwz_file->macro.s.asection = sectp;
2415       dwz_file->macro.size = bfd_get_section_size (sectp);
2416     }
2417   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2418     {
2419       dwz_file->gdb_index.s.asection = sectp;
2420       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2421     }
2422 }
2423
2424 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2425    there is no .gnu_debugaltlink section in the file.  Error if there
2426    is such a section but the file cannot be found.  */
2427
2428 static struct dwz_file *
2429 dwarf2_get_dwz_file (void)
2430 {
2431   bfd *dwz_bfd;
2432   char *data;
2433   struct cleanup *cleanup;
2434   const char *filename;
2435   struct dwz_file *result;
2436   bfd_size_type buildid_len_arg;
2437   size_t buildid_len;
2438   bfd_byte *buildid;
2439
2440   if (dwarf2_per_objfile->dwz_file != NULL)
2441     return dwarf2_per_objfile->dwz_file;
2442
2443   bfd_set_error (bfd_error_no_error);
2444   data = bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2445                                       &buildid_len_arg, &buildid);
2446   if (data == NULL)
2447     {
2448       if (bfd_get_error () == bfd_error_no_error)
2449         return NULL;
2450       error (_("could not read '.gnu_debugaltlink' section: %s"),
2451              bfd_errmsg (bfd_get_error ()));
2452     }
2453   cleanup = make_cleanup (xfree, data);
2454   make_cleanup (xfree, buildid);
2455
2456   buildid_len = (size_t) buildid_len_arg;
2457
2458   filename = (const char *) data;
2459   if (!IS_ABSOLUTE_PATH (filename))
2460     {
2461       char *abs = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2462       char *rel;
2463
2464       make_cleanup (xfree, abs);
2465       abs = ldirname (abs);
2466       make_cleanup (xfree, abs);
2467
2468       rel = concat (abs, SLASH_STRING, filename, (char *) NULL);
2469       make_cleanup (xfree, rel);
2470       filename = rel;
2471     }
2472
2473   /* First try the file name given in the section.  If that doesn't
2474      work, try to use the build-id instead.  */
2475   dwz_bfd = gdb_bfd_open (filename, gnutarget, -1);
2476   if (dwz_bfd != NULL)
2477     {
2478       if (!build_id_verify (dwz_bfd, buildid_len, buildid))
2479         {
2480           gdb_bfd_unref (dwz_bfd);
2481           dwz_bfd = NULL;
2482         }
2483     }
2484
2485   if (dwz_bfd == NULL)
2486     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2487
2488   if (dwz_bfd == NULL)
2489     error (_("could not find '.gnu_debugaltlink' file for %s"),
2490            objfile_name (dwarf2_per_objfile->objfile));
2491
2492   result = OBSTACK_ZALLOC (&dwarf2_per_objfile->objfile->objfile_obstack,
2493                            struct dwz_file);
2494   result->dwz_bfd = dwz_bfd;
2495
2496   bfd_map_over_sections (dwz_bfd, locate_dwz_sections, result);
2497
2498   do_cleanups (cleanup);
2499
2500   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, dwz_bfd);
2501   dwarf2_per_objfile->dwz_file = result;
2502   return result;
2503 }
2504 \f
2505 /* DWARF quick_symbols_functions support.  */
2506
2507 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2508    unique line tables, so we maintain a separate table of all .debug_line
2509    derived entries to support the sharing.
2510    All the quick functions need is the list of file names.  We discard the
2511    line_header when we're done and don't need to record it here.  */
2512 struct quick_file_names
2513 {
2514   /* The data used to construct the hash key.  */
2515   struct stmt_list_hash hash;
2516
2517   /* The number of entries in file_names, real_names.  */
2518   unsigned int num_file_names;
2519
2520   /* The file names from the line table, after being run through
2521      file_full_name.  */
2522   const char **file_names;
2523
2524   /* The file names from the line table after being run through
2525      gdb_realpath.  These are computed lazily.  */
2526   const char **real_names;
2527 };
2528
2529 /* When using the index (and thus not using psymtabs), each CU has an
2530    object of this type.  This is used to hold information needed by
2531    the various "quick" methods.  */
2532 struct dwarf2_per_cu_quick_data
2533 {
2534   /* The file table.  This can be NULL if there was no file table
2535      or it's currently not read in.
2536      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2537   struct quick_file_names *file_names;
2538
2539   /* The corresponding symbol table.  This is NULL if symbols for this
2540      CU have not yet been read.  */
2541   struct compunit_symtab *compunit_symtab;
2542
2543   /* A temporary mark bit used when iterating over all CUs in
2544      expand_symtabs_matching.  */
2545   unsigned int mark : 1;
2546
2547   /* True if we've tried to read the file table and found there isn't one.
2548      There will be no point in trying to read it again next time.  */
2549   unsigned int no_file_data : 1;
2550 };
2551
2552 /* Utility hash function for a stmt_list_hash.  */
2553
2554 static hashval_t
2555 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2556 {
2557   hashval_t v = 0;
2558
2559   if (stmt_list_hash->dwo_unit != NULL)
2560     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2561   v += stmt_list_hash->line_offset.sect_off;
2562   return v;
2563 }
2564
2565 /* Utility equality function for a stmt_list_hash.  */
2566
2567 static int
2568 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2569                     const struct stmt_list_hash *rhs)
2570 {
2571   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2572     return 0;
2573   if (lhs->dwo_unit != NULL
2574       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2575     return 0;
2576
2577   return lhs->line_offset.sect_off == rhs->line_offset.sect_off;
2578 }
2579
2580 /* Hash function for a quick_file_names.  */
2581
2582 static hashval_t
2583 hash_file_name_entry (const void *e)
2584 {
2585   const struct quick_file_names *file_data = e;
2586
2587   return hash_stmt_list_entry (&file_data->hash);
2588 }
2589
2590 /* Equality function for a quick_file_names.  */
2591
2592 static int
2593 eq_file_name_entry (const void *a, const void *b)
2594 {
2595   const struct quick_file_names *ea = a;
2596   const struct quick_file_names *eb = b;
2597
2598   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2599 }
2600
2601 /* Delete function for a quick_file_names.  */
2602
2603 static void
2604 delete_file_name_entry (void *e)
2605 {
2606   struct quick_file_names *file_data = e;
2607   int i;
2608
2609   for (i = 0; i < file_data->num_file_names; ++i)
2610     {
2611       xfree ((void*) file_data->file_names[i]);
2612       if (file_data->real_names)
2613         xfree ((void*) file_data->real_names[i]);
2614     }
2615
2616   /* The space for the struct itself lives on objfile_obstack,
2617      so we don't free it here.  */
2618 }
2619
2620 /* Create a quick_file_names hash table.  */
2621
2622 static htab_t
2623 create_quick_file_names_table (unsigned int nr_initial_entries)
2624 {
2625   return htab_create_alloc (nr_initial_entries,
2626                             hash_file_name_entry, eq_file_name_entry,
2627                             delete_file_name_entry, xcalloc, xfree);
2628 }
2629
2630 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2631    have to be created afterwards.  You should call age_cached_comp_units after
2632    processing PER_CU->CU.  dw2_setup must have been already called.  */
2633
2634 static void
2635 load_cu (struct dwarf2_per_cu_data *per_cu)
2636 {
2637   if (per_cu->is_debug_types)
2638     load_full_type_unit (per_cu);
2639   else
2640     load_full_comp_unit (per_cu, language_minimal);
2641
2642   gdb_assert (per_cu->cu != NULL);
2643
2644   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2645 }
2646
2647 /* Read in the symbols for PER_CU.  */
2648
2649 static void
2650 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
2651 {
2652   struct cleanup *back_to;
2653
2654   /* Skip type_unit_groups, reading the type units they contain
2655      is handled elsewhere.  */
2656   if (IS_TYPE_UNIT_GROUP (per_cu))
2657     return;
2658
2659   back_to = make_cleanup (dwarf2_release_queue, NULL);
2660
2661   if (dwarf2_per_objfile->using_index
2662       ? per_cu->v.quick->compunit_symtab == NULL
2663       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2664     {
2665       queue_comp_unit (per_cu, language_minimal);
2666       load_cu (per_cu);
2667
2668       /* If we just loaded a CU from a DWO, and we're working with an index
2669          that may badly handle TUs, load all the TUs in that DWO as well.
2670          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
2671       if (!per_cu->is_debug_types
2672           && per_cu->cu->dwo_unit != NULL
2673           && dwarf2_per_objfile->index_table != NULL
2674           && dwarf2_per_objfile->index_table->version <= 7
2675           /* DWP files aren't supported yet.  */
2676           && get_dwp_file () == NULL)
2677         queue_and_load_all_dwo_tus (per_cu);
2678     }
2679
2680   process_queue ();
2681
2682   /* Age the cache, releasing compilation units that have not
2683      been used recently.  */
2684   age_cached_comp_units ();
2685
2686   do_cleanups (back_to);
2687 }
2688
2689 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2690    the objfile from which this CU came.  Returns the resulting symbol
2691    table.  */
2692
2693 static struct compunit_symtab *
2694 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
2695 {
2696   gdb_assert (dwarf2_per_objfile->using_index);
2697   if (!per_cu->v.quick->compunit_symtab)
2698     {
2699       struct cleanup *back_to = make_cleanup (free_cached_comp_units, NULL);
2700       increment_reading_symtab ();
2701       dw2_do_instantiate_symtab (per_cu);
2702       process_cu_includes ();
2703       do_cleanups (back_to);
2704     }
2705
2706   return per_cu->v.quick->compunit_symtab;
2707 }
2708
2709 /* Return the CU/TU given its index.
2710
2711    This is intended for loops like:
2712
2713    for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2714                     + dwarf2_per_objfile->n_type_units); ++i)
2715      {
2716        struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
2717
2718        ...;
2719      }
2720 */
2721
2722 static struct dwarf2_per_cu_data *
2723 dw2_get_cutu (int index)
2724 {
2725   if (index >= dwarf2_per_objfile->n_comp_units)
2726     {
2727       index -= dwarf2_per_objfile->n_comp_units;
2728       gdb_assert (index < dwarf2_per_objfile->n_type_units);
2729       return &dwarf2_per_objfile->all_type_units[index]->per_cu;
2730     }
2731
2732   return dwarf2_per_objfile->all_comp_units[index];
2733 }
2734
2735 /* Return the CU given its index.
2736    This differs from dw2_get_cutu in that it's for when you know INDEX
2737    refers to a CU.  */
2738
2739 static struct dwarf2_per_cu_data *
2740 dw2_get_cu (int index)
2741 {
2742   gdb_assert (index >= 0 && index < dwarf2_per_objfile->n_comp_units);
2743
2744   return dwarf2_per_objfile->all_comp_units[index];
2745 }
2746
2747 /* A helper for create_cus_from_index that handles a given list of
2748    CUs.  */
2749
2750 static void
2751 create_cus_from_index_list (struct objfile *objfile,
2752                             const gdb_byte *cu_list, offset_type n_elements,
2753                             struct dwarf2_section_info *section,
2754                             int is_dwz,
2755                             int base_offset)
2756 {
2757   offset_type i;
2758
2759   for (i = 0; i < n_elements; i += 2)
2760     {
2761       struct dwarf2_per_cu_data *the_cu;
2762       ULONGEST offset, length;
2763
2764       gdb_static_assert (sizeof (ULONGEST) >= 8);
2765       offset = extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2766       length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2767       cu_list += 2 * 8;
2768
2769       the_cu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2770                                struct dwarf2_per_cu_data);
2771       the_cu->offset.sect_off = offset;
2772       the_cu->length = length;
2773       the_cu->objfile = objfile;
2774       the_cu->section = section;
2775       the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2776                                         struct dwarf2_per_cu_quick_data);
2777       the_cu->is_dwz = is_dwz;
2778       dwarf2_per_objfile->all_comp_units[base_offset + i / 2] = the_cu;
2779     }
2780 }
2781
2782 /* Read the CU list from the mapped index, and use it to create all
2783    the CU objects for this objfile.  */
2784
2785 static void
2786 create_cus_from_index (struct objfile *objfile,
2787                        const gdb_byte *cu_list, offset_type cu_list_elements,
2788                        const gdb_byte *dwz_list, offset_type dwz_elements)
2789 {
2790   struct dwz_file *dwz;
2791
2792   dwarf2_per_objfile->n_comp_units = (cu_list_elements + dwz_elements) / 2;
2793   dwarf2_per_objfile->all_comp_units
2794     = obstack_alloc (&objfile->objfile_obstack,
2795                      dwarf2_per_objfile->n_comp_units
2796                      * sizeof (struct dwarf2_per_cu_data *));
2797
2798   create_cus_from_index_list (objfile, cu_list, cu_list_elements,
2799                               &dwarf2_per_objfile->info, 0, 0);
2800
2801   if (dwz_elements == 0)
2802     return;
2803
2804   dwz = dwarf2_get_dwz_file ();
2805   create_cus_from_index_list (objfile, dwz_list, dwz_elements, &dwz->info, 1,
2806                               cu_list_elements / 2);
2807 }
2808
2809 /* Create the signatured type hash table from the index.  */
2810
2811 static void
2812 create_signatured_type_table_from_index (struct objfile *objfile,
2813                                          struct dwarf2_section_info *section,
2814                                          const gdb_byte *bytes,
2815                                          offset_type elements)
2816 {
2817   offset_type i;
2818   htab_t sig_types_hash;
2819
2820   dwarf2_per_objfile->n_type_units
2821     = dwarf2_per_objfile->n_allocated_type_units
2822     = elements / 3;
2823   dwarf2_per_objfile->all_type_units
2824     = xmalloc (dwarf2_per_objfile->n_type_units
2825                * sizeof (struct signatured_type *));
2826
2827   sig_types_hash = allocate_signatured_type_table (objfile);
2828
2829   for (i = 0; i < elements; i += 3)
2830     {
2831       struct signatured_type *sig_type;
2832       ULONGEST offset, type_offset_in_tu, signature;
2833       void **slot;
2834
2835       gdb_static_assert (sizeof (ULONGEST) >= 8);
2836       offset = extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
2837       type_offset_in_tu = extract_unsigned_integer (bytes + 8, 8,
2838                                                     BFD_ENDIAN_LITTLE);
2839       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
2840       bytes += 3 * 8;
2841
2842       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2843                                  struct signatured_type);
2844       sig_type->signature = signature;
2845       sig_type->type_offset_in_tu.cu_off = type_offset_in_tu;
2846       sig_type->per_cu.is_debug_types = 1;
2847       sig_type->per_cu.section = section;
2848       sig_type->per_cu.offset.sect_off = offset;
2849       sig_type->per_cu.objfile = objfile;
2850       sig_type->per_cu.v.quick
2851         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2852                           struct dwarf2_per_cu_quick_data);
2853
2854       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
2855       *slot = sig_type;
2856
2857       dwarf2_per_objfile->all_type_units[i / 3] = sig_type;
2858     }
2859
2860   dwarf2_per_objfile->signatured_types = sig_types_hash;
2861 }
2862
2863 /* Read the address map data from the mapped index, and use it to
2864    populate the objfile's psymtabs_addrmap.  */
2865
2866 static void
2867 create_addrmap_from_index (struct objfile *objfile, struct mapped_index *index)
2868 {
2869   struct gdbarch *gdbarch = get_objfile_arch (objfile);
2870   const gdb_byte *iter, *end;
2871   struct obstack temp_obstack;
2872   struct addrmap *mutable_map;
2873   struct cleanup *cleanup;
2874   CORE_ADDR baseaddr;
2875
2876   obstack_init (&temp_obstack);
2877   cleanup = make_cleanup_obstack_free (&temp_obstack);
2878   mutable_map = addrmap_create_mutable (&temp_obstack);
2879
2880   iter = index->address_table;
2881   end = iter + index->address_table_size;
2882
2883   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
2884
2885   while (iter < end)
2886     {
2887       ULONGEST hi, lo, cu_index;
2888       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2889       iter += 8;
2890       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2891       iter += 8;
2892       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
2893       iter += 4;
2894
2895       if (lo > hi)
2896         {
2897           complaint (&symfile_complaints,
2898                      _(".gdb_index address table has invalid range (%s - %s)"),
2899                      hex_string (lo), hex_string (hi));
2900           continue;
2901         }
2902
2903       if (cu_index >= dwarf2_per_objfile->n_comp_units)
2904         {
2905           complaint (&symfile_complaints,
2906                      _(".gdb_index address table has invalid CU number %u"),
2907                      (unsigned) cu_index);
2908           continue;
2909         }
2910
2911       lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr);
2912       hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr);
2913       addrmap_set_empty (mutable_map, lo, hi - 1, dw2_get_cutu (cu_index));
2914     }
2915
2916   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
2917                                                     &objfile->objfile_obstack);
2918   do_cleanups (cleanup);
2919 }
2920
2921 /* The hash function for strings in the mapped index.  This is the same as
2922    SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
2923    implementation.  This is necessary because the hash function is tied to the
2924    format of the mapped index file.  The hash values do not have to match with
2925    SYMBOL_HASH_NEXT.
2926    
2927    Use INT_MAX for INDEX_VERSION if you generate the current index format.  */
2928
2929 static hashval_t
2930 mapped_index_string_hash (int index_version, const void *p)
2931 {
2932   const unsigned char *str = (const unsigned char *) p;
2933   hashval_t r = 0;
2934   unsigned char c;
2935
2936   while ((c = *str++) != 0)
2937     {
2938       if (index_version >= 5)
2939         c = tolower (c);
2940       r = r * 67 + c - 113;
2941     }
2942
2943   return r;
2944 }
2945
2946 /* Find a slot in the mapped index INDEX for the object named NAME.
2947    If NAME is found, set *VEC_OUT to point to the CU vector in the
2948    constant pool and return 1.  If NAME cannot be found, return 0.  */
2949
2950 static int
2951 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
2952                           offset_type **vec_out)
2953 {
2954   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2955   offset_type hash;
2956   offset_type slot, step;
2957   int (*cmp) (const char *, const char *);
2958
2959   if (current_language->la_language == language_cplus
2960       || current_language->la_language == language_java
2961       || current_language->la_language == language_fortran)
2962     {
2963       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
2964          not contain any.  */
2965
2966       if (strchr (name, '(') != NULL)
2967         {
2968           char *without_params = cp_remove_params (name);
2969
2970           if (without_params != NULL)
2971             {
2972               make_cleanup (xfree, without_params);
2973               name = without_params;
2974             }
2975         }
2976     }
2977
2978   /* Index version 4 did not support case insensitive searches.  But the
2979      indices for case insensitive languages are built in lowercase, therefore
2980      simulate our NAME being searched is also lowercased.  */
2981   hash = mapped_index_string_hash ((index->version == 4
2982                                     && case_sensitivity == case_sensitive_off
2983                                     ? 5 : index->version),
2984                                    name);
2985
2986   slot = hash & (index->symbol_table_slots - 1);
2987   step = ((hash * 17) & (index->symbol_table_slots - 1)) | 1;
2988   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
2989
2990   for (;;)
2991     {
2992       /* Convert a slot number to an offset into the table.  */
2993       offset_type i = 2 * slot;
2994       const char *str;
2995       if (index->symbol_table[i] == 0 && index->symbol_table[i + 1] == 0)
2996         {
2997           do_cleanups (back_to);
2998           return 0;
2999         }
3000
3001       str = index->constant_pool + MAYBE_SWAP (index->symbol_table[i]);
3002       if (!cmp (name, str))
3003         {
3004           *vec_out = (offset_type *) (index->constant_pool
3005                                       + MAYBE_SWAP (index->symbol_table[i + 1]));
3006           do_cleanups (back_to);
3007           return 1;
3008         }
3009
3010       slot = (slot + step) & (index->symbol_table_slots - 1);
3011     }
3012 }
3013
3014 /* A helper function that reads the .gdb_index from SECTION and fills
3015    in MAP.  FILENAME is the name of the file containing the section;
3016    it is used for error reporting.  DEPRECATED_OK is nonzero if it is
3017    ok to use deprecated sections.
3018
3019    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3020    out parameters that are filled in with information about the CU and
3021    TU lists in the section.
3022
3023    Returns 1 if all went well, 0 otherwise.  */
3024
3025 static int
3026 read_index_from_section (struct objfile *objfile,
3027                          const char *filename,
3028                          int deprecated_ok,
3029                          struct dwarf2_section_info *section,
3030                          struct mapped_index *map,
3031                          const gdb_byte **cu_list,
3032                          offset_type *cu_list_elements,
3033                          const gdb_byte **types_list,
3034                          offset_type *types_list_elements)
3035 {
3036   const gdb_byte *addr;
3037   offset_type version;
3038   offset_type *metadata;
3039   int i;
3040
3041   if (dwarf2_section_empty_p (section))
3042     return 0;
3043
3044   /* Older elfutils strip versions could keep the section in the main
3045      executable while splitting it for the separate debug info file.  */
3046   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
3047     return 0;
3048
3049   dwarf2_read_section (objfile, section);
3050
3051   addr = section->buffer;
3052   /* Version check.  */
3053   version = MAYBE_SWAP (*(offset_type *) addr);
3054   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3055      causes the index to behave very poorly for certain requests.  Version 3
3056      contained incomplete addrmap.  So, it seems better to just ignore such
3057      indices.  */
3058   if (version < 4)
3059     {
3060       static int warning_printed = 0;
3061       if (!warning_printed)
3062         {
3063           warning (_("Skipping obsolete .gdb_index section in %s."),
3064                    filename);
3065           warning_printed = 1;
3066         }
3067       return 0;
3068     }
3069   /* Index version 4 uses a different hash function than index version
3070      5 and later.
3071
3072      Versions earlier than 6 did not emit psymbols for inlined
3073      functions.  Using these files will cause GDB not to be able to
3074      set breakpoints on inlined functions by name, so we ignore these
3075      indices unless the user has done
3076      "set use-deprecated-index-sections on".  */
3077   if (version < 6 && !deprecated_ok)
3078     {
3079       static int warning_printed = 0;
3080       if (!warning_printed)
3081         {
3082           warning (_("\
3083 Skipping deprecated .gdb_index section in %s.\n\
3084 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3085 to use the section anyway."),
3086                    filename);
3087           warning_printed = 1;
3088         }
3089       return 0;
3090     }
3091   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3092      of the TU (for symbols coming from TUs),
3093      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3094      Plus gold-generated indices can have duplicate entries for global symbols,
3095      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3096      These are just performance bugs, and we can't distinguish gdb-generated
3097      indices from gold-generated ones, so issue no warning here.  */
3098
3099   /* Indexes with higher version than the one supported by GDB may be no
3100      longer backward compatible.  */
3101   if (version > 8)
3102     return 0;
3103
3104   map->version = version;
3105   map->total_size = section->size;
3106
3107   metadata = (offset_type *) (addr + sizeof (offset_type));
3108
3109   i = 0;
3110   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3111   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3112                        / 8);
3113   ++i;
3114
3115   *types_list = addr + MAYBE_SWAP (metadata[i]);
3116   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3117                            - MAYBE_SWAP (metadata[i]))
3118                           / 8);
3119   ++i;
3120
3121   map->address_table = addr + MAYBE_SWAP (metadata[i]);
3122   map->address_table_size = (MAYBE_SWAP (metadata[i + 1])
3123                              - MAYBE_SWAP (metadata[i]));
3124   ++i;
3125
3126   map->symbol_table = (offset_type *) (addr + MAYBE_SWAP (metadata[i]));
3127   map->symbol_table_slots = ((MAYBE_SWAP (metadata[i + 1])
3128                               - MAYBE_SWAP (metadata[i]))
3129                              / (2 * sizeof (offset_type)));
3130   ++i;
3131
3132   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3133
3134   return 1;
3135 }
3136
3137
3138 /* Read the index file.  If everything went ok, initialize the "quick"
3139    elements of all the CUs and return 1.  Otherwise, return 0.  */
3140
3141 static int
3142 dwarf2_read_index (struct objfile *objfile)
3143 {
3144   struct mapped_index local_map, *map;
3145   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3146   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3147   struct dwz_file *dwz;
3148
3149   if (!read_index_from_section (objfile, objfile_name (objfile),
3150                                 use_deprecated_index_sections,
3151                                 &dwarf2_per_objfile->gdb_index, &local_map,
3152                                 &cu_list, &cu_list_elements,
3153                                 &types_list, &types_list_elements))
3154     return 0;
3155
3156   /* Don't use the index if it's empty.  */
3157   if (local_map.symbol_table_slots == 0)
3158     return 0;
3159
3160   /* If there is a .dwz file, read it so we can get its CU list as
3161      well.  */
3162   dwz = dwarf2_get_dwz_file ();
3163   if (dwz != NULL)
3164     {
3165       struct mapped_index dwz_map;
3166       const gdb_byte *dwz_types_ignore;
3167       offset_type dwz_types_elements_ignore;
3168
3169       if (!read_index_from_section (objfile, bfd_get_filename (dwz->dwz_bfd),
3170                                     1,
3171                                     &dwz->gdb_index, &dwz_map,
3172                                     &dwz_list, &dwz_list_elements,
3173                                     &dwz_types_ignore,
3174                                     &dwz_types_elements_ignore))
3175         {
3176           warning (_("could not read '.gdb_index' section from %s; skipping"),
3177                    bfd_get_filename (dwz->dwz_bfd));
3178           return 0;
3179         }
3180     }
3181
3182   create_cus_from_index (objfile, cu_list, cu_list_elements, dwz_list,
3183                          dwz_list_elements);
3184
3185   if (types_list_elements)
3186     {
3187       struct dwarf2_section_info *section;
3188
3189       /* We can only handle a single .debug_types when we have an
3190          index.  */
3191       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3192         return 0;
3193
3194       section = VEC_index (dwarf2_section_info_def,
3195                            dwarf2_per_objfile->types, 0);
3196
3197       create_signatured_type_table_from_index (objfile, section, types_list,
3198                                                types_list_elements);
3199     }
3200
3201   create_addrmap_from_index (objfile, &local_map);
3202
3203   map = obstack_alloc (&objfile->objfile_obstack, sizeof (struct mapped_index));
3204   *map = local_map;
3205
3206   dwarf2_per_objfile->index_table = map;
3207   dwarf2_per_objfile->using_index = 1;
3208   dwarf2_per_objfile->quick_file_names_table =
3209     create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
3210
3211   return 1;
3212 }
3213
3214 /* A helper for the "quick" functions which sets the global
3215    dwarf2_per_objfile according to OBJFILE.  */
3216
3217 static void
3218 dw2_setup (struct objfile *objfile)
3219 {
3220   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
3221   gdb_assert (dwarf2_per_objfile);
3222 }
3223
3224 /* die_reader_func for dw2_get_file_names.  */
3225
3226 static void
3227 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3228                            const gdb_byte *info_ptr,
3229                            struct die_info *comp_unit_die,
3230                            int has_children,
3231                            void *data)
3232 {
3233   struct dwarf2_cu *cu = reader->cu;
3234   struct dwarf2_per_cu_data *this_cu = cu->per_cu;  
3235   struct objfile *objfile = dwarf2_per_objfile->objfile;
3236   struct dwarf2_per_cu_data *lh_cu;
3237   struct line_header *lh;
3238   struct attribute *attr;
3239   int i;
3240   const char *name, *comp_dir;
3241   void **slot;
3242   struct quick_file_names *qfn;
3243   unsigned int line_offset;
3244
3245   gdb_assert (! this_cu->is_debug_types);
3246
3247   /* Our callers never want to match partial units -- instead they
3248      will match the enclosing full CU.  */
3249   if (comp_unit_die->tag == DW_TAG_partial_unit)
3250     {
3251       this_cu->v.quick->no_file_data = 1;
3252       return;
3253     }
3254
3255   lh_cu = this_cu;
3256   lh = NULL;
3257   slot = NULL;
3258   line_offset = 0;
3259
3260   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3261   if (attr)
3262     {
3263       struct quick_file_names find_entry;
3264
3265       line_offset = DW_UNSND (attr);
3266
3267       /* We may have already read in this line header (TU line header sharing).
3268          If we have we're done.  */
3269       find_entry.hash.dwo_unit = cu->dwo_unit;
3270       find_entry.hash.line_offset.sect_off = line_offset;
3271       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3272                              &find_entry, INSERT);
3273       if (*slot != NULL)
3274         {
3275           lh_cu->v.quick->file_names = *slot;
3276           return;
3277         }
3278
3279       lh = dwarf_decode_line_header (line_offset, cu);
3280     }
3281   if (lh == NULL)
3282     {
3283       lh_cu->v.quick->no_file_data = 1;
3284       return;
3285     }
3286
3287   qfn = obstack_alloc (&objfile->objfile_obstack, sizeof (*qfn));
3288   qfn->hash.dwo_unit = cu->dwo_unit;
3289   qfn->hash.line_offset.sect_off = line_offset;
3290   gdb_assert (slot != NULL);
3291   *slot = qfn;
3292
3293   find_file_and_directory (comp_unit_die, cu, &name, &comp_dir);
3294
3295   qfn->num_file_names = lh->num_file_names;
3296   qfn->file_names = obstack_alloc (&objfile->objfile_obstack,
3297                                    lh->num_file_names * sizeof (char *));
3298   for (i = 0; i < lh->num_file_names; ++i)
3299     qfn->file_names[i] = file_full_name (i + 1, lh, comp_dir);
3300   qfn->real_names = NULL;
3301
3302   free_line_header (lh);
3303
3304   lh_cu->v.quick->file_names = qfn;
3305 }
3306
3307 /* A helper for the "quick" functions which attempts to read the line
3308    table for THIS_CU.  */
3309
3310 static struct quick_file_names *
3311 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3312 {
3313   /* This should never be called for TUs.  */
3314   gdb_assert (! this_cu->is_debug_types);
3315   /* Nor type unit groups.  */
3316   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3317
3318   if (this_cu->v.quick->file_names != NULL)
3319     return this_cu->v.quick->file_names;
3320   /* If we know there is no line data, no point in looking again.  */
3321   if (this_cu->v.quick->no_file_data)
3322     return NULL;
3323
3324   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3325
3326   if (this_cu->v.quick->no_file_data)
3327     return NULL;
3328   return this_cu->v.quick->file_names;
3329 }
3330
3331 /* A helper for the "quick" functions which computes and caches the
3332    real path for a given file name from the line table.  */
3333
3334 static const char *
3335 dw2_get_real_path (struct objfile *objfile,
3336                    struct quick_file_names *qfn, int index)
3337 {
3338   if (qfn->real_names == NULL)
3339     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3340                                       qfn->num_file_names, const char *);
3341
3342   if (qfn->real_names[index] == NULL)
3343     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]);
3344
3345   return qfn->real_names[index];
3346 }
3347
3348 static struct symtab *
3349 dw2_find_last_source_symtab (struct objfile *objfile)
3350 {
3351   struct compunit_symtab *cust;
3352   int index;
3353
3354   dw2_setup (objfile);
3355   index = dwarf2_per_objfile->n_comp_units - 1;
3356   cust = dw2_instantiate_symtab (dw2_get_cutu (index));
3357   if (cust == NULL)
3358     return NULL;
3359   return compunit_primary_filetab (cust);
3360 }
3361
3362 /* Traversal function for dw2_forget_cached_source_info.  */
3363
3364 static int
3365 dw2_free_cached_file_names (void **slot, void *info)
3366 {
3367   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3368
3369   if (file_data->real_names)
3370     {
3371       int i;
3372
3373       for (i = 0; i < file_data->num_file_names; ++i)
3374         {
3375           xfree ((void*) file_data->real_names[i]);
3376           file_data->real_names[i] = NULL;
3377         }
3378     }
3379
3380   return 1;
3381 }
3382
3383 static void
3384 dw2_forget_cached_source_info (struct objfile *objfile)
3385 {
3386   dw2_setup (objfile);
3387
3388   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3389                           dw2_free_cached_file_names, NULL);
3390 }
3391
3392 /* Helper function for dw2_map_symtabs_matching_filename that expands
3393    the symtabs and calls the iterator.  */
3394
3395 static int
3396 dw2_map_expand_apply (struct objfile *objfile,
3397                       struct dwarf2_per_cu_data *per_cu,
3398                       const char *name, const char *real_path,
3399                       int (*callback) (struct symtab *, void *),
3400                       void *data)
3401 {
3402   struct compunit_symtab *last_made = objfile->compunit_symtabs;
3403
3404   /* Don't visit already-expanded CUs.  */
3405   if (per_cu->v.quick->compunit_symtab)
3406     return 0;
3407
3408   /* This may expand more than one symtab, and we want to iterate over
3409      all of them.  */
3410   dw2_instantiate_symtab (per_cu);
3411
3412   return iterate_over_some_symtabs (name, real_path, callback, data,
3413                                     objfile->compunit_symtabs, last_made);
3414 }
3415
3416 /* Implementation of the map_symtabs_matching_filename method.  */
3417
3418 static int
3419 dw2_map_symtabs_matching_filename (struct objfile *objfile, const char *name,
3420                                    const char *real_path,
3421                                    int (*callback) (struct symtab *, void *),
3422                                    void *data)
3423 {
3424   int i;
3425   const char *name_basename = lbasename (name);
3426
3427   dw2_setup (objfile);
3428
3429   /* The rule is CUs specify all the files, including those used by
3430      any TU, so there's no need to scan TUs here.  */
3431
3432   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3433     {
3434       int j;
3435       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3436       struct quick_file_names *file_data;
3437
3438       /* We only need to look at symtabs not already expanded.  */
3439       if (per_cu->v.quick->compunit_symtab)
3440         continue;
3441
3442       file_data = dw2_get_file_names (per_cu);
3443       if (file_data == NULL)
3444         continue;
3445
3446       for (j = 0; j < file_data->num_file_names; ++j)
3447         {
3448           const char *this_name = file_data->file_names[j];
3449           const char *this_real_name;
3450
3451           if (compare_filenames_for_search (this_name, name))
3452             {
3453               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3454                                         callback, data))
3455                 return 1;
3456               continue;
3457             }
3458
3459           /* Before we invoke realpath, which can get expensive when many
3460              files are involved, do a quick comparison of the basenames.  */
3461           if (! basenames_may_differ
3462               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3463             continue;
3464
3465           this_real_name = dw2_get_real_path (objfile, file_data, j);
3466           if (compare_filenames_for_search (this_real_name, name))
3467             {
3468               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3469                                         callback, data))
3470                 return 1;
3471               continue;
3472             }
3473
3474           if (real_path != NULL)
3475             {
3476               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3477               gdb_assert (IS_ABSOLUTE_PATH (name));
3478               if (this_real_name != NULL
3479                   && FILENAME_CMP (real_path, this_real_name) == 0)
3480                 {
3481                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3482                                             callback, data))
3483                     return 1;
3484                   continue;
3485                 }
3486             }
3487         }
3488     }
3489
3490   return 0;
3491 }
3492
3493 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3494
3495 struct dw2_symtab_iterator
3496 {
3497   /* The internalized form of .gdb_index.  */
3498   struct mapped_index *index;
3499   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
3500   int want_specific_block;
3501   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3502      Unused if !WANT_SPECIFIC_BLOCK.  */
3503   int block_index;
3504   /* The kind of symbol we're looking for.  */
3505   domain_enum domain;
3506   /* The list of CUs from the index entry of the symbol,
3507      or NULL if not found.  */
3508   offset_type *vec;
3509   /* The next element in VEC to look at.  */
3510   int next;
3511   /* The number of elements in VEC, or zero if there is no match.  */
3512   int length;
3513   /* Have we seen a global version of the symbol?
3514      If so we can ignore all further global instances.
3515      This is to work around gold/15646, inefficient gold-generated
3516      indices.  */
3517   int global_seen;
3518 };
3519
3520 /* Initialize the index symtab iterator ITER.
3521    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3522    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
3523
3524 static void
3525 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3526                       struct mapped_index *index,
3527                       int want_specific_block,
3528                       int block_index,
3529                       domain_enum domain,
3530                       const char *name)
3531 {
3532   iter->index = index;
3533   iter->want_specific_block = want_specific_block;
3534   iter->block_index = block_index;
3535   iter->domain = domain;
3536   iter->next = 0;
3537   iter->global_seen = 0;
3538
3539   if (find_slot_in_mapped_hash (index, name, &iter->vec))
3540     iter->length = MAYBE_SWAP (*iter->vec);
3541   else
3542     {
3543       iter->vec = NULL;
3544       iter->length = 0;
3545     }
3546 }
3547
3548 /* Return the next matching CU or NULL if there are no more.  */
3549
3550 static struct dwarf2_per_cu_data *
3551 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3552 {
3553   for ( ; iter->next < iter->length; ++iter->next)
3554     {
3555       offset_type cu_index_and_attrs =
3556         MAYBE_SWAP (iter->vec[iter->next + 1]);
3557       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3558       struct dwarf2_per_cu_data *per_cu;
3559       int want_static = iter->block_index != GLOBAL_BLOCK;
3560       /* This value is only valid for index versions >= 7.  */
3561       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3562       gdb_index_symbol_kind symbol_kind =
3563         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3564       /* Only check the symbol attributes if they're present.
3565          Indices prior to version 7 don't record them,
3566          and indices >= 7 may elide them for certain symbols
3567          (gold does this).  */
3568       int attrs_valid =
3569         (iter->index->version >= 7
3570          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3571
3572       /* Don't crash on bad data.  */
3573       if (cu_index >= (dwarf2_per_objfile->n_comp_units
3574                        + dwarf2_per_objfile->n_type_units))
3575         {
3576           complaint (&symfile_complaints,
3577                      _(".gdb_index entry has bad CU index"
3578                        " [in module %s]"),
3579                      objfile_name (dwarf2_per_objfile->objfile));
3580           continue;
3581         }
3582
3583       per_cu = dw2_get_cutu (cu_index);
3584
3585       /* Skip if already read in.  */
3586       if (per_cu->v.quick->compunit_symtab)
3587         continue;
3588
3589       /* Check static vs global.  */
3590       if (attrs_valid)
3591         {
3592           if (iter->want_specific_block
3593               && want_static != is_static)
3594             continue;
3595           /* Work around gold/15646.  */
3596           if (!is_static && iter->global_seen)
3597             continue;
3598           if (!is_static)
3599             iter->global_seen = 1;
3600         }
3601
3602       /* Only check the symbol's kind if it has one.  */
3603       if (attrs_valid)
3604         {
3605           switch (iter->domain)
3606             {
3607             case VAR_DOMAIN:
3608               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
3609                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
3610                   /* Some types are also in VAR_DOMAIN.  */
3611                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3612                 continue;
3613               break;
3614             case STRUCT_DOMAIN:
3615               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3616                 continue;
3617               break;
3618             case LABEL_DOMAIN:
3619               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3620                 continue;
3621               break;
3622             default:
3623               break;
3624             }
3625         }
3626
3627       ++iter->next;
3628       return per_cu;
3629     }
3630
3631   return NULL;
3632 }
3633
3634 static struct compunit_symtab *
3635 dw2_lookup_symbol (struct objfile *objfile, int block_index,
3636                    const char *name, domain_enum domain)
3637 {
3638   struct compunit_symtab *stab_best = NULL;
3639   struct mapped_index *index;
3640
3641   dw2_setup (objfile);
3642
3643   index = dwarf2_per_objfile->index_table;
3644
3645   /* index is NULL if OBJF_READNOW.  */
3646   if (index)
3647     {
3648       struct dw2_symtab_iterator iter;
3649       struct dwarf2_per_cu_data *per_cu;
3650
3651       dw2_symtab_iter_init (&iter, index, 1, block_index, domain, name);
3652
3653       while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3654         {
3655           struct symbol *sym = NULL;
3656           struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu);
3657           const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
3658           struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
3659
3660           /* Some caution must be observed with overloaded functions
3661              and methods, since the index will not contain any overload
3662              information (but NAME might contain it).  */
3663           sym = block_lookup_symbol (block, name, domain);
3664
3665           if (sym && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
3666             {
3667               if (!TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
3668                 return stab;
3669
3670               stab_best = stab;
3671             }
3672
3673           /* Keep looking through other CUs.  */
3674         }
3675     }
3676
3677   return stab_best;
3678 }
3679
3680 static void
3681 dw2_print_stats (struct objfile *objfile)
3682 {
3683   int i, total, count;
3684
3685   dw2_setup (objfile);
3686   total = dwarf2_per_objfile->n_comp_units + dwarf2_per_objfile->n_type_units;
3687   count = 0;
3688   for (i = 0; i < total; ++i)
3689     {
3690       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
3691
3692       if (!per_cu->v.quick->compunit_symtab)
3693         ++count;
3694     }
3695   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
3696   printf_filtered (_("  Number of unread CUs: %d\n"), count);
3697 }
3698
3699 /* This dumps minimal information about the index.
3700    It is called via "mt print objfiles".
3701    One use is to verify .gdb_index has been loaded by the
3702    gdb.dwarf2/gdb-index.exp testcase.  */
3703
3704 static void
3705 dw2_dump (struct objfile *objfile)
3706 {
3707   dw2_setup (objfile);
3708   gdb_assert (dwarf2_per_objfile->using_index);
3709   printf_filtered (".gdb_index:");
3710   if (dwarf2_per_objfile->index_table != NULL)
3711     {
3712       printf_filtered (" version %d\n",
3713                        dwarf2_per_objfile->index_table->version);
3714     }
3715   else
3716     printf_filtered (" faked for \"readnow\"\n");
3717   printf_filtered ("\n");
3718 }
3719
3720 static void
3721 dw2_relocate (struct objfile *objfile,
3722               const struct section_offsets *new_offsets,
3723               const struct section_offsets *delta)
3724 {
3725   /* There's nothing to relocate here.  */
3726 }
3727
3728 static void
3729 dw2_expand_symtabs_for_function (struct objfile *objfile,
3730                                  const char *func_name)
3731 {
3732   struct mapped_index *index;
3733
3734   dw2_setup (objfile);
3735
3736   index = dwarf2_per_objfile->index_table;
3737
3738   /* index is NULL if OBJF_READNOW.  */
3739   if (index)
3740     {
3741       struct dw2_symtab_iterator iter;
3742       struct dwarf2_per_cu_data *per_cu;
3743
3744       /* Note: It doesn't matter what we pass for block_index here.  */
3745       dw2_symtab_iter_init (&iter, index, 0, GLOBAL_BLOCK, VAR_DOMAIN,
3746                             func_name);
3747
3748       while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3749         dw2_instantiate_symtab (per_cu);
3750     }
3751 }
3752
3753 static void
3754 dw2_expand_all_symtabs (struct objfile *objfile)
3755 {
3756   int i;
3757
3758   dw2_setup (objfile);
3759
3760   for (i = 0; i < (dwarf2_per_objfile->n_comp_units
3761                    + dwarf2_per_objfile->n_type_units); ++i)
3762     {
3763       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
3764
3765       dw2_instantiate_symtab (per_cu);
3766     }
3767 }
3768
3769 static void
3770 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
3771                                   const char *fullname)
3772 {
3773   int i;
3774
3775   dw2_setup (objfile);
3776
3777   /* We don't need to consider type units here.
3778      This is only called for examining code, e.g. expand_line_sal.
3779      There can be an order of magnitude (or more) more type units
3780      than comp units, and we avoid them if we can.  */
3781
3782   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3783     {
3784       int j;
3785       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
3786       struct quick_file_names *file_data;
3787
3788       /* We only need to look at symtabs not already expanded.  */
3789       if (per_cu->v.quick->compunit_symtab)
3790         continue;
3791
3792       file_data = dw2_get_file_names (per_cu);
3793       if (file_data == NULL)
3794         continue;
3795
3796       for (j = 0; j < file_data->num_file_names; ++j)
3797         {
3798           const char *this_fullname = file_data->file_names[j];
3799
3800           if (filename_cmp (this_fullname, fullname) == 0)
3801             {
3802               dw2_instantiate_symtab (per_cu);
3803               break;
3804             }
3805         }
3806     }
3807 }
3808
3809 static void
3810 dw2_map_matching_symbols (struct objfile *objfile,
3811                           const char * name, domain_enum namespace,
3812                           int global,
3813                           int (*callback) (struct block *,
3814                                            struct symbol *, void *),
3815                           void *data, symbol_compare_ftype *match,
3816                           symbol_compare_ftype *ordered_compare)
3817 {
3818   /* Currently unimplemented; used for Ada.  The function can be called if the
3819      current language is Ada for a non-Ada objfile using GNU index.  As Ada
3820      does not look for non-Ada symbols this function should just return.  */
3821 }
3822
3823 static void
3824 dw2_expand_symtabs_matching
3825   (struct objfile *objfile,
3826    expand_symtabs_file_matcher_ftype *file_matcher,
3827    expand_symtabs_symbol_matcher_ftype *symbol_matcher,
3828    enum search_domain kind,
3829    void *data)
3830 {
3831   int i;
3832   offset_type iter;
3833   struct mapped_index *index;
3834
3835   dw2_setup (objfile);
3836
3837   /* index_table is NULL if OBJF_READNOW.  */
3838   if (!dwarf2_per_objfile->index_table)
3839     return;
3840   index = dwarf2_per_objfile->index_table;
3841
3842   if (file_matcher != NULL)
3843     {
3844       struct cleanup *cleanup;
3845       htab_t visited_found, visited_not_found;
3846
3847       visited_found = htab_create_alloc (10,
3848                                          htab_hash_pointer, htab_eq_pointer,
3849                                          NULL, xcalloc, xfree);
3850       cleanup = make_cleanup_htab_delete (visited_found);
3851       visited_not_found = htab_create_alloc (10,
3852                                              htab_hash_pointer, htab_eq_pointer,
3853                                              NULL, xcalloc, xfree);
3854       make_cleanup_htab_delete (visited_not_found);
3855
3856       /* The rule is CUs specify all the files, including those used by
3857          any TU, so there's no need to scan TUs here.  */
3858
3859       for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3860         {
3861           int j;
3862           struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3863           struct quick_file_names *file_data;
3864           void **slot;
3865
3866           per_cu->v.quick->mark = 0;
3867
3868           /* We only need to look at symtabs not already expanded.  */
3869           if (per_cu->v.quick->compunit_symtab)
3870             continue;
3871
3872           file_data = dw2_get_file_names (per_cu);
3873           if (file_data == NULL)
3874             continue;
3875
3876           if (htab_find (visited_not_found, file_data) != NULL)
3877             continue;
3878           else if (htab_find (visited_found, file_data) != NULL)
3879             {
3880               per_cu->v.quick->mark = 1;
3881               continue;
3882             }
3883
3884           for (j = 0; j < file_data->num_file_names; ++j)
3885             {
3886               const char *this_real_name;
3887
3888               if (file_matcher (file_data->file_names[j], data, 0))
3889                 {
3890                   per_cu->v.quick->mark = 1;
3891                   break;
3892                 }
3893
3894               /* Before we invoke realpath, which can get expensive when many
3895                  files are involved, do a quick comparison of the basenames.  */
3896               if (!basenames_may_differ
3897                   && !file_matcher (lbasename (file_data->file_names[j]),
3898                                     data, 1))
3899                 continue;
3900
3901               this_real_name = dw2_get_real_path (objfile, file_data, j);
3902               if (file_matcher (this_real_name, data, 0))
3903                 {
3904                   per_cu->v.quick->mark = 1;
3905                   break;
3906                 }
3907             }
3908
3909           slot = htab_find_slot (per_cu->v.quick->mark
3910                                  ? visited_found
3911                                  : visited_not_found,
3912                                  file_data, INSERT);
3913           *slot = file_data;
3914         }
3915
3916       do_cleanups (cleanup);
3917     }
3918
3919   for (iter = 0; iter < index->symbol_table_slots; ++iter)
3920     {
3921       offset_type idx = 2 * iter;
3922       const char *name;
3923       offset_type *vec, vec_len, vec_idx;
3924       int global_seen = 0;
3925
3926       if (index->symbol_table[idx] == 0 && index->symbol_table[idx + 1] == 0)
3927         continue;
3928
3929       name = index->constant_pool + MAYBE_SWAP (index->symbol_table[idx]);
3930
3931       if (! (*symbol_matcher) (name, data))
3932         continue;
3933
3934       /* The name was matched, now expand corresponding CUs that were
3935          marked.  */
3936       vec = (offset_type *) (index->constant_pool
3937                              + MAYBE_SWAP (index->symbol_table[idx + 1]));
3938       vec_len = MAYBE_SWAP (vec[0]);
3939       for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
3940         {
3941           struct dwarf2_per_cu_data *per_cu;
3942           offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
3943           /* This value is only valid for index versions >= 7.  */
3944           int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3945           gdb_index_symbol_kind symbol_kind =
3946             GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3947           int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3948           /* Only check the symbol attributes if they're present.
3949              Indices prior to version 7 don't record them,
3950              and indices >= 7 may elide them for certain symbols
3951              (gold does this).  */
3952           int attrs_valid =
3953             (index->version >= 7
3954              && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3955
3956           /* Work around gold/15646.  */
3957           if (attrs_valid)
3958             {
3959               if (!is_static && global_seen)
3960                 continue;
3961               if (!is_static)
3962                 global_seen = 1;
3963             }
3964
3965           /* Only check the symbol's kind if it has one.  */
3966           if (attrs_valid)
3967             {
3968               switch (kind)
3969                 {
3970                 case VARIABLES_DOMAIN:
3971                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
3972                     continue;
3973                   break;
3974                 case FUNCTIONS_DOMAIN:
3975                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
3976                     continue;
3977                   break;
3978                 case TYPES_DOMAIN:
3979                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3980                     continue;
3981                   break;
3982                 default:
3983                   break;
3984                 }
3985             }
3986
3987           /* Don't crash on bad data.  */
3988           if (cu_index >= (dwarf2_per_objfile->n_comp_units
3989                            + dwarf2_per_objfile->n_type_units))
3990             {
3991               complaint (&symfile_complaints,
3992                          _(".gdb_index entry has bad CU index"
3993                            " [in module %s]"), objfile_name (objfile));
3994               continue;
3995             }
3996
3997           per_cu = dw2_get_cutu (cu_index);
3998           if (file_matcher == NULL || per_cu->v.quick->mark)
3999             dw2_instantiate_symtab (per_cu);
4000         }
4001     }
4002 }
4003
4004 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
4005    symtab.  */
4006
4007 static struct compunit_symtab *
4008 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
4009                                           CORE_ADDR pc)
4010 {
4011   int i;
4012
4013   if (COMPUNIT_BLOCKVECTOR (cust) != NULL
4014       && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
4015     return cust;
4016
4017   if (cust->includes == NULL)
4018     return NULL;
4019
4020   for (i = 0; cust->includes[i]; ++i)
4021     {
4022       struct compunit_symtab *s = cust->includes[i];
4023
4024       s = recursively_find_pc_sect_compunit_symtab (s, pc);
4025       if (s != NULL)
4026         return s;
4027     }
4028
4029   return NULL;
4030 }
4031
4032 static struct compunit_symtab *
4033 dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
4034                                   struct bound_minimal_symbol msymbol,
4035                                   CORE_ADDR pc,
4036                                   struct obj_section *section,
4037                                   int warn_if_readin)
4038 {
4039   struct dwarf2_per_cu_data *data;
4040   struct compunit_symtab *result;
4041
4042   dw2_setup (objfile);
4043
4044   if (!objfile->psymtabs_addrmap)
4045     return NULL;
4046
4047   data = addrmap_find (objfile->psymtabs_addrmap, pc);
4048   if (!data)
4049     return NULL;
4050
4051   if (warn_if_readin && data->v.quick->compunit_symtab)
4052     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
4053              paddress (get_objfile_arch (objfile), pc));
4054
4055   result
4056     = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data),
4057                                                 pc);
4058   gdb_assert (result != NULL);
4059   return result;
4060 }
4061
4062 static void
4063 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
4064                           void *data, int need_fullname)
4065 {
4066   int i;
4067   struct cleanup *cleanup;
4068   htab_t visited = htab_create_alloc (10, htab_hash_pointer, htab_eq_pointer,
4069                                       NULL, xcalloc, xfree);
4070
4071   cleanup = make_cleanup_htab_delete (visited);
4072   dw2_setup (objfile);
4073
4074   /* The rule is CUs specify all the files, including those used by
4075      any TU, so there's no need to scan TUs here.
4076      We can ignore file names coming from already-expanded CUs.  */
4077
4078   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
4079     {
4080       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
4081
4082       if (per_cu->v.quick->compunit_symtab)
4083         {
4084           void **slot = htab_find_slot (visited, per_cu->v.quick->file_names,
4085                                         INSERT);
4086
4087           *slot = per_cu->v.quick->file_names;
4088         }
4089     }
4090
4091   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
4092     {
4093       int j;
4094       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
4095       struct quick_file_names *file_data;
4096       void **slot;
4097
4098       /* We only need to look at symtabs not already expanded.  */
4099       if (per_cu->v.quick->compunit_symtab)
4100         continue;
4101
4102       file_data = dw2_get_file_names (per_cu);
4103       if (file_data == NULL)
4104         continue;
4105
4106       slot = htab_find_slot (visited, file_data, INSERT);
4107       if (*slot)
4108         {
4109           /* Already visited.  */
4110           continue;
4111         }
4112       *slot = file_data;
4113
4114       for (j = 0; j < file_data->num_file_names; ++j)
4115         {
4116           const char *this_real_name;
4117
4118           if (need_fullname)
4119             this_real_name = dw2_get_real_path (objfile, file_data, j);
4120           else
4121             this_real_name = NULL;
4122           (*fun) (file_data->file_names[j], this_real_name, data);
4123         }
4124     }
4125
4126   do_cleanups (cleanup);
4127 }
4128
4129 static int
4130 dw2_has_symbols (struct objfile *objfile)
4131 {
4132   return 1;
4133 }
4134
4135 const struct quick_symbol_functions dwarf2_gdb_index_functions =
4136 {
4137   dw2_has_symbols,
4138   dw2_find_last_source_symtab,
4139   dw2_forget_cached_source_info,
4140   dw2_map_symtabs_matching_filename,
4141   dw2_lookup_symbol,
4142   dw2_print_stats,
4143   dw2_dump,
4144   dw2_relocate,
4145   dw2_expand_symtabs_for_function,
4146   dw2_expand_all_symtabs,
4147   dw2_expand_symtabs_with_fullname,
4148   dw2_map_matching_symbols,
4149   dw2_expand_symtabs_matching,
4150   dw2_find_pc_sect_compunit_symtab,
4151   dw2_map_symbol_filenames
4152 };
4153
4154 /* Initialize for reading DWARF for this objfile.  Return 0 if this
4155    file will use psymtabs, or 1 if using the GNU index.  */
4156
4157 int
4158 dwarf2_initialize_objfile (struct objfile *objfile)
4159 {
4160   /* If we're about to read full symbols, don't bother with the
4161      indices.  In this case we also don't care if some other debug
4162      format is making psymtabs, because they are all about to be
4163      expanded anyway.  */
4164   if ((objfile->flags & OBJF_READNOW))
4165     {
4166       int i;
4167
4168       dwarf2_per_objfile->using_index = 1;
4169       create_all_comp_units (objfile);
4170       create_all_type_units (objfile);
4171       dwarf2_per_objfile->quick_file_names_table =
4172         create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
4173
4174       for (i = 0; i < (dwarf2_per_objfile->n_comp_units
4175                        + dwarf2_per_objfile->n_type_units); ++i)
4176         {
4177           struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
4178
4179           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4180                                             struct dwarf2_per_cu_quick_data);
4181         }
4182
4183       /* Return 1 so that gdb sees the "quick" functions.  However,
4184          these functions will be no-ops because we will have expanded
4185          all symtabs.  */
4186       return 1;
4187     }
4188
4189   if (dwarf2_read_index (objfile))
4190     return 1;
4191
4192   return 0;
4193 }
4194
4195 \f
4196
4197 /* Build a partial symbol table.  */
4198
4199 void
4200 dwarf2_build_psymtabs (struct objfile *objfile)
4201 {
4202   volatile struct gdb_exception except;
4203
4204   if (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0)
4205     {
4206       init_psymbol_list (objfile, 1024);
4207     }
4208
4209   TRY_CATCH (except, RETURN_MASK_ERROR)
4210     {
4211       /* This isn't really ideal: all the data we allocate on the
4212          objfile's obstack is still uselessly kept around.  However,
4213          freeing it seems unsafe.  */
4214       struct cleanup *cleanups = make_cleanup_discard_psymtabs (objfile);
4215
4216       dwarf2_build_psymtabs_hard (objfile);
4217       discard_cleanups (cleanups);
4218     }
4219   if (except.reason < 0)
4220     exception_print (gdb_stderr, except);
4221 }
4222
4223 /* Return the total length of the CU described by HEADER.  */
4224
4225 static unsigned int
4226 get_cu_length (const struct comp_unit_head *header)
4227 {
4228   return header->initial_length_size + header->length;
4229 }
4230
4231 /* Return TRUE if OFFSET is within CU_HEADER.  */
4232
4233 static inline int
4234 offset_in_cu_p (const struct comp_unit_head *cu_header, sect_offset offset)
4235 {
4236   sect_offset bottom = { cu_header->offset.sect_off };
4237   sect_offset top = { cu_header->offset.sect_off + get_cu_length (cu_header) };
4238
4239   return (offset.sect_off >= bottom.sect_off && offset.sect_off < top.sect_off);
4240 }
4241
4242 /* Find the base address of the compilation unit for range lists and
4243    location lists.  It will normally be specified by DW_AT_low_pc.
4244    In DWARF-3 draft 4, the base address could be overridden by
4245    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
4246    compilation units with discontinuous ranges.  */
4247
4248 static void
4249 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
4250 {
4251   struct attribute *attr;
4252
4253   cu->base_known = 0;
4254   cu->base_address = 0;
4255
4256   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
4257   if (attr)
4258     {
4259       cu->base_address = attr_value_as_address (attr);
4260       cu->base_known = 1;
4261     }
4262   else
4263     {
4264       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
4265       if (attr)
4266         {
4267           cu->base_address = attr_value_as_address (attr);
4268           cu->base_known = 1;
4269         }
4270     }
4271 }
4272
4273 /* Read in the comp unit header information from the debug_info at info_ptr.
4274    NOTE: This leaves members offset, first_die_offset to be filled in
4275    by the caller.  */
4276
4277 static const gdb_byte *
4278 read_comp_unit_head (struct comp_unit_head *cu_header,
4279                      const gdb_byte *info_ptr, bfd *abfd)
4280 {
4281   int signed_addr;
4282   unsigned int bytes_read;
4283
4284   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
4285   cu_header->initial_length_size = bytes_read;
4286   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
4287   info_ptr += bytes_read;
4288   cu_header->version = read_2_bytes (abfd, info_ptr);
4289   info_ptr += 2;
4290   cu_header->abbrev_offset.sect_off = read_offset (abfd, info_ptr, cu_header,
4291                                              &bytes_read);
4292   info_ptr += bytes_read;
4293   cu_header->addr_size = read_1_byte (abfd, info_ptr);
4294   info_ptr += 1;
4295   signed_addr = bfd_get_sign_extend_vma (abfd);
4296   if (signed_addr < 0)
4297     internal_error (__FILE__, __LINE__,
4298                     _("read_comp_unit_head: dwarf from non elf file"));
4299   cu_header->signed_addr_p = signed_addr;
4300
4301   return info_ptr;
4302 }
4303
4304 /* Helper function that returns the proper abbrev section for
4305    THIS_CU.  */
4306
4307 static struct dwarf2_section_info *
4308 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
4309 {
4310   struct dwarf2_section_info *abbrev;
4311
4312   if (this_cu->is_dwz)
4313     abbrev = &dwarf2_get_dwz_file ()->abbrev;
4314   else
4315     abbrev = &dwarf2_per_objfile->abbrev;
4316
4317   return abbrev;
4318 }
4319
4320 /* Subroutine of read_and_check_comp_unit_head and
4321    read_and_check_type_unit_head to simplify them.
4322    Perform various error checking on the header.  */
4323
4324 static void
4325 error_check_comp_unit_head (struct comp_unit_head *header,
4326                             struct dwarf2_section_info *section,
4327                             struct dwarf2_section_info *abbrev_section)
4328 {
4329   bfd *abfd = get_section_bfd_owner (section);
4330   const char *filename = get_section_file_name (section);
4331
4332   if (header->version != 2 && header->version != 3 && header->version != 4)
4333     error (_("Dwarf Error: wrong version in compilation unit header "
4334            "(is %d, should be 2, 3, or 4) [in module %s]"), header->version,
4335            filename);
4336
4337   if (header->abbrev_offset.sect_off
4338       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
4339     error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
4340            "(offset 0x%lx + 6) [in module %s]"),
4341            (long) header->abbrev_offset.sect_off, (long) header->offset.sect_off,
4342            filename);
4343
4344   /* Cast to unsigned long to use 64-bit arithmetic when possible to
4345      avoid potential 32-bit overflow.  */
4346   if (((unsigned long) header->offset.sect_off + get_cu_length (header))
4347       > section->size)
4348     error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
4349            "(offset 0x%lx + 0) [in module %s]"),
4350            (long) header->length, (long) header->offset.sect_off,
4351            filename);
4352 }
4353
4354 /* Read in a CU/TU header and perform some basic error checking.
4355    The contents of the header are stored in HEADER.
4356    The result is a pointer to the start of the first DIE.  */
4357
4358 static const gdb_byte *
4359 read_and_check_comp_unit_head (struct comp_unit_head *header,
4360                                struct dwarf2_section_info *section,
4361                                struct dwarf2_section_info *abbrev_section,
4362                                const gdb_byte *info_ptr,
4363                                int is_debug_types_section)
4364 {
4365   const gdb_byte *beg_of_comp_unit = info_ptr;
4366   bfd *abfd = get_section_bfd_owner (section);
4367
4368   header->offset.sect_off = beg_of_comp_unit - section->buffer;
4369
4370   info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4371
4372   /* If we're reading a type unit, skip over the signature and
4373      type_offset fields.  */
4374   if (is_debug_types_section)
4375     info_ptr += 8 /*signature*/ + header->offset_size;
4376
4377   header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
4378
4379   error_check_comp_unit_head (header, section, abbrev_section);
4380
4381   return info_ptr;
4382 }
4383
4384 /* Read in the types comp unit header information from .debug_types entry at
4385    types_ptr.  The result is a pointer to one past the end of the header.  */
4386
4387 static const gdb_byte *
4388 read_and_check_type_unit_head (struct comp_unit_head *header,
4389                                struct dwarf2_section_info *section,
4390                                struct dwarf2_section_info *abbrev_section,
4391                                const gdb_byte *info_ptr,
4392                                ULONGEST *signature,
4393                                cu_offset *type_offset_in_tu)
4394 {
4395   const gdb_byte *beg_of_comp_unit = info_ptr;
4396   bfd *abfd = get_section_bfd_owner (section);
4397
4398   header->offset.sect_off = beg_of_comp_unit - section->buffer;
4399
4400   info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4401
4402   /* If we're reading a type unit, skip over the signature and
4403      type_offset fields.  */
4404   if (signature != NULL)
4405     *signature = read_8_bytes (abfd, info_ptr);
4406   info_ptr += 8;
4407   if (type_offset_in_tu != NULL)
4408     type_offset_in_tu->cu_off = read_offset_1 (abfd, info_ptr,
4409                                                header->offset_size);
4410   info_ptr += header->offset_size;
4411
4412   header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
4413
4414   error_check_comp_unit_head (header, section, abbrev_section);
4415
4416   return info_ptr;
4417 }
4418
4419 /* Fetch the abbreviation table offset from a comp or type unit header.  */
4420
4421 static sect_offset
4422 read_abbrev_offset (struct dwarf2_section_info *section,
4423                     sect_offset offset)
4424 {
4425   bfd *abfd = get_section_bfd_owner (section);
4426   const gdb_byte *info_ptr;
4427   unsigned int length, initial_length_size, offset_size;
4428   sect_offset abbrev_offset;
4429
4430   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
4431   info_ptr = section->buffer + offset.sect_off;
4432   length = read_initial_length (abfd, info_ptr, &initial_length_size);
4433   offset_size = initial_length_size == 4 ? 4 : 8;
4434   info_ptr += initial_length_size + 2 /*version*/;
4435   abbrev_offset.sect_off = read_offset_1 (abfd, info_ptr, offset_size);
4436   return abbrev_offset;
4437 }
4438
4439 /* Allocate a new partial symtab for file named NAME and mark this new
4440    partial symtab as being an include of PST.  */
4441
4442 static void
4443 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
4444                                struct objfile *objfile)
4445 {
4446   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
4447
4448   if (!IS_ABSOLUTE_PATH (subpst->filename))
4449     {
4450       /* It shares objfile->objfile_obstack.  */
4451       subpst->dirname = pst->dirname;
4452     }
4453
4454   subpst->section_offsets = pst->section_offsets;
4455   subpst->textlow = 0;
4456   subpst->texthigh = 0;
4457
4458   subpst->dependencies = (struct partial_symtab **)
4459     obstack_alloc (&objfile->objfile_obstack,
4460                    sizeof (struct partial_symtab *));
4461   subpst->dependencies[0] = pst;
4462   subpst->number_of_dependencies = 1;
4463
4464   subpst->globals_offset = 0;
4465   subpst->n_global_syms = 0;
4466   subpst->statics_offset = 0;
4467   subpst->n_static_syms = 0;
4468   subpst->compunit_symtab = NULL;
4469   subpst->read_symtab = pst->read_symtab;
4470   subpst->readin = 0;
4471
4472   /* No private part is necessary for include psymtabs.  This property
4473      can be used to differentiate between such include psymtabs and
4474      the regular ones.  */
4475   subpst->read_symtab_private = NULL;
4476 }
4477
4478 /* Read the Line Number Program data and extract the list of files
4479    included by the source file represented by PST.  Build an include
4480    partial symtab for each of these included files.  */
4481
4482 static void
4483 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
4484                                struct die_info *die,
4485                                struct partial_symtab *pst)
4486 {
4487   struct line_header *lh = NULL;
4488   struct attribute *attr;
4489
4490   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
4491   if (attr)
4492     lh = dwarf_decode_line_header (DW_UNSND (attr), cu);
4493   if (lh == NULL)
4494     return;  /* No linetable, so no includes.  */
4495
4496   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  */
4497   dwarf_decode_lines (lh, pst->dirname, cu, pst, pst->textlow, 1);
4498
4499   free_line_header (lh);
4500 }
4501
4502 static hashval_t
4503 hash_signatured_type (const void *item)
4504 {
4505   const struct signatured_type *sig_type = item;
4506
4507   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
4508   return sig_type->signature;
4509 }
4510
4511 static int
4512 eq_signatured_type (const void *item_lhs, const void *item_rhs)
4513 {
4514   const struct signatured_type *lhs = item_lhs;
4515   const struct signatured_type *rhs = item_rhs;
4516
4517   return lhs->signature == rhs->signature;
4518 }
4519
4520 /* Allocate a hash table for signatured types.  */
4521
4522 static htab_t
4523 allocate_signatured_type_table (struct objfile *objfile)
4524 {
4525   return htab_create_alloc_ex (41,
4526                                hash_signatured_type,
4527                                eq_signatured_type,
4528                                NULL,
4529                                &objfile->objfile_obstack,
4530                                hashtab_obstack_allocate,
4531                                dummy_obstack_deallocate);
4532 }
4533
4534 /* A helper function to add a signatured type CU to a table.  */
4535
4536 static int
4537 add_signatured_type_cu_to_table (void **slot, void *datum)
4538 {
4539   struct signatured_type *sigt = *slot;
4540   struct signatured_type ***datap = datum;
4541
4542   **datap = sigt;
4543   ++*datap;
4544
4545   return 1;
4546 }
4547
4548 /* Create the hash table of all entries in the .debug_types
4549    (or .debug_types.dwo) section(s).
4550    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
4551    otherwise it is NULL.
4552
4553    The result is a pointer to the hash table or NULL if there are no types.
4554
4555    Note: This function processes DWO files only, not DWP files.  */
4556
4557 static htab_t
4558 create_debug_types_hash_table (struct dwo_file *dwo_file,
4559                                VEC (dwarf2_section_info_def) *types)
4560 {
4561   struct objfile *objfile = dwarf2_per_objfile->objfile;
4562   htab_t types_htab = NULL;
4563   int ix;
4564   struct dwarf2_section_info *section;
4565   struct dwarf2_section_info *abbrev_section;
4566
4567   if (VEC_empty (dwarf2_section_info_def, types))
4568     return NULL;
4569
4570   abbrev_section = (dwo_file != NULL
4571                     ? &dwo_file->sections.abbrev
4572                     : &dwarf2_per_objfile->abbrev);
4573
4574   if (dwarf2_read_debug)
4575     fprintf_unfiltered (gdb_stdlog, "Reading .debug_types%s for %s:\n",
4576                         dwo_file ? ".dwo" : "",
4577                         get_section_file_name (abbrev_section));
4578
4579   for (ix = 0;
4580        VEC_iterate (dwarf2_section_info_def, types, ix, section);
4581        ++ix)
4582     {
4583       bfd *abfd;
4584       const gdb_byte *info_ptr, *end_ptr;
4585
4586       dwarf2_read_section (objfile, section);
4587       info_ptr = section->buffer;
4588
4589       if (info_ptr == NULL)
4590         continue;
4591
4592       /* We can't set abfd until now because the section may be empty or
4593          not present, in which case the bfd is unknown.  */
4594       abfd = get_section_bfd_owner (section);
4595
4596       /* We don't use init_cutu_and_read_dies_simple, or some such, here
4597          because we don't need to read any dies: the signature is in the
4598          header.  */
4599
4600       end_ptr = info_ptr + section->size;
4601       while (info_ptr < end_ptr)
4602         {
4603           sect_offset offset;
4604           cu_offset type_offset_in_tu;
4605           ULONGEST signature;
4606           struct signatured_type *sig_type;
4607           struct dwo_unit *dwo_tu;
4608           void **slot;
4609           const gdb_byte *ptr = info_ptr;
4610           struct comp_unit_head header;
4611           unsigned int length;
4612
4613           offset.sect_off = ptr - section->buffer;
4614
4615           /* We need to read the type's signature in order to build the hash
4616              table, but we don't need anything else just yet.  */
4617
4618           ptr = read_and_check_type_unit_head (&header, section,
4619                                                abbrev_section, ptr,
4620                                                &signature, &type_offset_in_tu);
4621
4622           length = get_cu_length (&header);
4623
4624           /* Skip dummy type units.  */
4625           if (ptr >= info_ptr + length
4626               || peek_abbrev_code (abfd, ptr) == 0)
4627             {
4628               info_ptr += length;
4629               continue;
4630             }
4631
4632           if (types_htab == NULL)
4633             {
4634               if (dwo_file)
4635                 types_htab = allocate_dwo_unit_table (objfile);
4636               else
4637                 types_htab = allocate_signatured_type_table (objfile);
4638             }
4639
4640           if (dwo_file)
4641             {
4642               sig_type = NULL;
4643               dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4644                                        struct dwo_unit);
4645               dwo_tu->dwo_file = dwo_file;
4646               dwo_tu->signature = signature;
4647               dwo_tu->type_offset_in_tu = type_offset_in_tu;
4648               dwo_tu->section = section;
4649               dwo_tu->offset = offset;
4650               dwo_tu->length = length;
4651             }
4652           else
4653             {
4654               /* N.B.: type_offset is not usable if this type uses a DWO file.
4655                  The real type_offset is in the DWO file.  */
4656               dwo_tu = NULL;
4657               sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4658                                          struct signatured_type);
4659               sig_type->signature = signature;
4660               sig_type->type_offset_in_tu = type_offset_in_tu;
4661               sig_type->per_cu.objfile = objfile;
4662               sig_type->per_cu.is_debug_types = 1;
4663               sig_type->per_cu.section = section;
4664               sig_type->per_cu.offset = offset;
4665               sig_type->per_cu.length = length;
4666             }
4667
4668           slot = htab_find_slot (types_htab,
4669                                  dwo_file ? (void*) dwo_tu : (void *) sig_type,
4670                                  INSERT);
4671           gdb_assert (slot != NULL);
4672           if (*slot != NULL)
4673             {
4674               sect_offset dup_offset;
4675
4676               if (dwo_file)
4677                 {
4678                   const struct dwo_unit *dup_tu = *slot;
4679
4680                   dup_offset = dup_tu->offset;
4681                 }
4682               else
4683                 {
4684                   const struct signatured_type *dup_tu = *slot;
4685
4686                   dup_offset = dup_tu->per_cu.offset;
4687                 }
4688
4689               complaint (&symfile_complaints,
4690                          _("debug type entry at offset 0x%x is duplicate to"
4691                            " the entry at offset 0x%x, signature %s"),
4692                          offset.sect_off, dup_offset.sect_off,
4693                          hex_string (signature));
4694             }
4695           *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
4696
4697           if (dwarf2_read_debug > 1)
4698             fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, signature %s\n",
4699                                 offset.sect_off,
4700                                 hex_string (signature));
4701
4702           info_ptr += length;
4703         }
4704     }
4705
4706   return types_htab;
4707 }
4708
4709 /* Create the hash table of all entries in the .debug_types section,
4710    and initialize all_type_units.
4711    The result is zero if there is an error (e.g. missing .debug_types section),
4712    otherwise non-zero.  */
4713
4714 static int
4715 create_all_type_units (struct objfile *objfile)
4716 {
4717   htab_t types_htab;
4718   struct signatured_type **iter;
4719
4720   types_htab = create_debug_types_hash_table (NULL, dwarf2_per_objfile->types);
4721   if (types_htab == NULL)
4722     {
4723       dwarf2_per_objfile->signatured_types = NULL;
4724       return 0;
4725     }
4726
4727   dwarf2_per_objfile->signatured_types = types_htab;
4728
4729   dwarf2_per_objfile->n_type_units
4730     = dwarf2_per_objfile->n_allocated_type_units
4731     = htab_elements (types_htab);
4732   dwarf2_per_objfile->all_type_units
4733     = xmalloc (dwarf2_per_objfile->n_type_units
4734                * sizeof (struct signatured_type *));
4735   iter = &dwarf2_per_objfile->all_type_units[0];
4736   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table, &iter);
4737   gdb_assert (iter - &dwarf2_per_objfile->all_type_units[0]
4738               == dwarf2_per_objfile->n_type_units);
4739
4740   return 1;
4741 }
4742
4743 /* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
4744    If SLOT is non-NULL, it is the entry to use in the hash table.
4745    Otherwise we find one.  */
4746
4747 static struct signatured_type *
4748 add_type_unit (ULONGEST sig, void **slot)
4749 {
4750   struct objfile *objfile = dwarf2_per_objfile->objfile;
4751   int n_type_units = dwarf2_per_objfile->n_type_units;
4752   struct signatured_type *sig_type;
4753
4754   gdb_assert (n_type_units <= dwarf2_per_objfile->n_allocated_type_units);
4755   ++n_type_units;
4756   if (n_type_units > dwarf2_per_objfile->n_allocated_type_units)
4757     {
4758       if (dwarf2_per_objfile->n_allocated_type_units == 0)
4759         dwarf2_per_objfile->n_allocated_type_units = 1;
4760       dwarf2_per_objfile->n_allocated_type_units *= 2;
4761       dwarf2_per_objfile->all_type_units
4762         = xrealloc (dwarf2_per_objfile->all_type_units,
4763                     dwarf2_per_objfile->n_allocated_type_units
4764                     * sizeof (struct signatured_type *));
4765       ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
4766     }
4767   dwarf2_per_objfile->n_type_units = n_type_units;
4768
4769   sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4770                              struct signatured_type);
4771   dwarf2_per_objfile->all_type_units[n_type_units - 1] = sig_type;
4772   sig_type->signature = sig;
4773   sig_type->per_cu.is_debug_types = 1;
4774   if (dwarf2_per_objfile->using_index)
4775     {
4776       sig_type->per_cu.v.quick =
4777         OBSTACK_ZALLOC (&objfile->objfile_obstack,
4778                         struct dwarf2_per_cu_quick_data);
4779     }
4780
4781   if (slot == NULL)
4782     {
4783       slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4784                              sig_type, INSERT);
4785     }
4786   gdb_assert (*slot == NULL);
4787   *slot = sig_type;
4788   /* The rest of sig_type must be filled in by the caller.  */
4789   return sig_type;
4790 }
4791
4792 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
4793    Fill in SIG_ENTRY with DWO_ENTRY.  */
4794
4795 static void
4796 fill_in_sig_entry_from_dwo_entry (struct objfile *objfile,
4797                                   struct signatured_type *sig_entry,
4798                                   struct dwo_unit *dwo_entry)
4799 {
4800   /* Make sure we're not clobbering something we don't expect to.  */
4801   gdb_assert (! sig_entry->per_cu.queued);
4802   gdb_assert (sig_entry->per_cu.cu == NULL);
4803   if (dwarf2_per_objfile->using_index)
4804     {
4805       gdb_assert (sig_entry->per_cu.v.quick != NULL);
4806       gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
4807     }
4808   else
4809       gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
4810   gdb_assert (sig_entry->signature == dwo_entry->signature);
4811   gdb_assert (sig_entry->type_offset_in_section.sect_off == 0);
4812   gdb_assert (sig_entry->type_unit_group == NULL);
4813   gdb_assert (sig_entry->dwo_unit == NULL);
4814
4815   sig_entry->per_cu.section = dwo_entry->section;
4816   sig_entry->per_cu.offset = dwo_entry->offset;
4817   sig_entry->per_cu.length = dwo_entry->length;
4818   sig_entry->per_cu.reading_dwo_directly = 1;
4819   sig_entry->per_cu.objfile = objfile;
4820   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
4821   sig_entry->dwo_unit = dwo_entry;
4822 }
4823
4824 /* Subroutine of lookup_signatured_type.
4825    If we haven't read the TU yet, create the signatured_type data structure
4826    for a TU to be read in directly from a DWO file, bypassing the stub.
4827    This is the "Stay in DWO Optimization": When there is no DWP file and we're
4828    using .gdb_index, then when reading a CU we want to stay in the DWO file
4829    containing that CU.  Otherwise we could end up reading several other DWO
4830    files (due to comdat folding) to process the transitive closure of all the
4831    mentioned TUs, and that can be slow.  The current DWO file will have every
4832    type signature that it needs.
4833    We only do this for .gdb_index because in the psymtab case we already have
4834    to read all the DWOs to build the type unit groups.  */
4835
4836 static struct signatured_type *
4837 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4838 {
4839   struct objfile *objfile = dwarf2_per_objfile->objfile;
4840   struct dwo_file *dwo_file;
4841   struct dwo_unit find_dwo_entry, *dwo_entry;
4842   struct signatured_type find_sig_entry, *sig_entry;
4843   void **slot;
4844
4845   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4846
4847   /* If TU skeletons have been removed then we may not have read in any
4848      TUs yet.  */
4849   if (dwarf2_per_objfile->signatured_types == NULL)
4850     {
4851       dwarf2_per_objfile->signatured_types
4852         = allocate_signatured_type_table (objfile);
4853     }
4854
4855   /* We only ever need to read in one copy of a signatured type.
4856      Use the global signatured_types array to do our own comdat-folding
4857      of types.  If this is the first time we're reading this TU, and
4858      the TU has an entry in .gdb_index, replace the recorded data from
4859      .gdb_index with this TU.  */
4860
4861   find_sig_entry.signature = sig;
4862   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4863                          &find_sig_entry, INSERT);
4864   sig_entry = *slot;
4865
4866   /* We can get here with the TU already read, *or* in the process of being
4867      read.  Don't reassign the global entry to point to this DWO if that's
4868      the case.  Also note that if the TU is already being read, it may not
4869      have come from a DWO, the program may be a mix of Fission-compiled
4870      code and non-Fission-compiled code.  */
4871
4872   /* Have we already tried to read this TU?
4873      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
4874      needn't exist in the global table yet).  */
4875   if (sig_entry != NULL && sig_entry->per_cu.tu_read)
4876     return sig_entry;
4877
4878   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
4879      dwo_unit of the TU itself.  */
4880   dwo_file = cu->dwo_unit->dwo_file;
4881
4882   /* Ok, this is the first time we're reading this TU.  */
4883   if (dwo_file->tus == NULL)
4884     return NULL;
4885   find_dwo_entry.signature = sig;
4886   dwo_entry = htab_find (dwo_file->tus, &find_dwo_entry);
4887   if (dwo_entry == NULL)
4888     return NULL;
4889
4890   /* If the global table doesn't have an entry for this TU, add one.  */
4891   if (sig_entry == NULL)
4892     sig_entry = add_type_unit (sig, slot);
4893
4894   fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
4895   sig_entry->per_cu.tu_read = 1;
4896   return sig_entry;
4897 }
4898
4899 /* Subroutine of lookup_signatured_type.
4900    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
4901    then try the DWP file.  If the TU stub (skeleton) has been removed then
4902    it won't be in .gdb_index.  */
4903
4904 static struct signatured_type *
4905 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4906 {
4907   struct objfile *objfile = dwarf2_per_objfile->objfile;
4908   struct dwp_file *dwp_file = get_dwp_file ();
4909   struct dwo_unit *dwo_entry;
4910   struct signatured_type find_sig_entry, *sig_entry;
4911   void **slot;
4912
4913   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4914   gdb_assert (dwp_file != NULL);
4915
4916   /* If TU skeletons have been removed then we may not have read in any
4917      TUs yet.  */
4918   if (dwarf2_per_objfile->signatured_types == NULL)
4919     {
4920       dwarf2_per_objfile->signatured_types
4921         = allocate_signatured_type_table (objfile);
4922     }
4923
4924   find_sig_entry.signature = sig;
4925   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4926                          &find_sig_entry, INSERT);
4927   sig_entry = *slot;
4928
4929   /* Have we already tried to read this TU?
4930      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
4931      needn't exist in the global table yet).  */
4932   if (sig_entry != NULL)
4933     return sig_entry;
4934
4935   if (dwp_file->tus == NULL)
4936     return NULL;
4937   dwo_entry = lookup_dwo_unit_in_dwp (dwp_file, NULL,
4938                                       sig, 1 /* is_debug_types */);
4939   if (dwo_entry == NULL)
4940     return NULL;
4941
4942   sig_entry = add_type_unit (sig, slot);
4943   fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
4944
4945   return sig_entry;
4946 }
4947
4948 /* Lookup a signature based type for DW_FORM_ref_sig8.
4949    Returns NULL if signature SIG is not present in the table.
4950    It is up to the caller to complain about this.  */
4951
4952 static struct signatured_type *
4953 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4954 {
4955   if (cu->dwo_unit
4956       && dwarf2_per_objfile->using_index)
4957     {
4958       /* We're in a DWO/DWP file, and we're using .gdb_index.
4959          These cases require special processing.  */
4960       if (get_dwp_file () == NULL)
4961         return lookup_dwo_signatured_type (cu, sig);
4962       else
4963         return lookup_dwp_signatured_type (cu, sig);
4964     }
4965   else
4966     {
4967       struct signatured_type find_entry, *entry;
4968
4969       if (dwarf2_per_objfile->signatured_types == NULL)
4970         return NULL;
4971       find_entry.signature = sig;
4972       entry = htab_find (dwarf2_per_objfile->signatured_types, &find_entry);
4973       return entry;
4974     }
4975 }
4976 \f
4977 /* Low level DIE reading support.  */
4978
4979 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
4980
4981 static void
4982 init_cu_die_reader (struct die_reader_specs *reader,
4983                     struct dwarf2_cu *cu,
4984                     struct dwarf2_section_info *section,
4985                     struct dwo_file *dwo_file)
4986 {
4987   gdb_assert (section->readin && section->buffer != NULL);
4988   reader->abfd = get_section_bfd_owner (section);
4989   reader->cu = cu;
4990   reader->dwo_file = dwo_file;
4991   reader->die_section = section;
4992   reader->buffer = section->buffer;
4993   reader->buffer_end = section->buffer + section->size;
4994   reader->comp_dir = NULL;
4995 }
4996
4997 /* Subroutine of init_cutu_and_read_dies to simplify it.
4998    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
4999    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
5000    already.
5001
5002    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
5003    from it to the DIE in the DWO.  If NULL we are skipping the stub.
5004    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
5005    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
5006    attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
5007    STUB_COMP_DIR may be non-NULL.
5008    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
5009    are filled in with the info of the DIE from the DWO file.
5010    ABBREV_TABLE_PROVIDED is non-zero if the caller of init_cutu_and_read_dies
5011    provided an abbrev table to use.
5012    The result is non-zero if a valid (non-dummy) DIE was found.  */
5013
5014 static int
5015 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
5016                         struct dwo_unit *dwo_unit,
5017                         int abbrev_table_provided,
5018                         struct die_info *stub_comp_unit_die,
5019                         const char *stub_comp_dir,
5020                         struct die_reader_specs *result_reader,
5021                         const gdb_byte **result_info_ptr,
5022                         struct die_info **result_comp_unit_die,
5023                         int *result_has_children)
5024 {
5025   struct objfile *objfile = dwarf2_per_objfile->objfile;
5026   struct dwarf2_cu *cu = this_cu->cu;
5027   struct dwarf2_section_info *section;
5028   bfd *abfd;
5029   const gdb_byte *begin_info_ptr, *info_ptr;
5030   ULONGEST signature; /* Or dwo_id.  */
5031   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
5032   int i,num_extra_attrs;
5033   struct dwarf2_section_info *dwo_abbrev_section;
5034   struct attribute *attr;
5035   struct die_info *comp_unit_die;
5036
5037   /* At most one of these may be provided.  */
5038   gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
5039
5040   /* These attributes aren't processed until later:
5041      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
5042      DW_AT_comp_dir is used now, to find the DWO file, but it is also
5043      referenced later.  However, these attributes are found in the stub
5044      which we won't have later.  In order to not impose this complication
5045      on the rest of the code, we read them here and copy them to the
5046      DWO CU/TU die.  */
5047
5048   stmt_list = NULL;
5049   low_pc = NULL;
5050   high_pc = NULL;
5051   ranges = NULL;
5052   comp_dir = NULL;
5053
5054   if (stub_comp_unit_die != NULL)
5055     {
5056       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
5057          DWO file.  */
5058       if (! this_cu->is_debug_types)
5059         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
5060       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
5061       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
5062       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
5063       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
5064
5065       /* There should be a DW_AT_addr_base attribute here (if needed).
5066          We need the value before we can process DW_FORM_GNU_addr_index.  */
5067       cu->addr_base = 0;
5068       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
5069       if (attr)
5070         cu->addr_base = DW_UNSND (attr);
5071
5072       /* There should be a DW_AT_ranges_base attribute here (if needed).
5073          We need the value before we can process DW_AT_ranges.  */
5074       cu->ranges_base = 0;
5075       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
5076       if (attr)
5077         cu->ranges_base = DW_UNSND (attr);
5078     }
5079   else if (stub_comp_dir != NULL)
5080     {
5081       /* Reconstruct the comp_dir attribute to simplify the code below.  */
5082       comp_dir = (struct attribute *)
5083         obstack_alloc (&cu->comp_unit_obstack, sizeof (*comp_dir));
5084       comp_dir->name = DW_AT_comp_dir;
5085       comp_dir->form = DW_FORM_string;
5086       DW_STRING_IS_CANONICAL (comp_dir) = 0;
5087       DW_STRING (comp_dir) = stub_comp_dir;
5088     }
5089
5090   /* Set up for reading the DWO CU/TU.  */
5091   cu->dwo_unit = dwo_unit;
5092   section = dwo_unit->section;
5093   dwarf2_read_section (objfile, section);
5094   abfd = get_section_bfd_owner (section);
5095   begin_info_ptr = info_ptr = section->buffer + dwo_unit->offset.sect_off;
5096   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
5097   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file);
5098
5099   if (this_cu->is_debug_types)
5100     {
5101       ULONGEST header_signature;
5102       cu_offset type_offset_in_tu;
5103       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
5104
5105       info_ptr = read_and_check_type_unit_head (&cu->header, section,
5106                                                 dwo_abbrev_section,
5107                                                 info_ptr,
5108                                                 &header_signature,
5109                                                 &type_offset_in_tu);
5110       /* This is not an assert because it can be caused by bad debug info.  */
5111       if (sig_type->signature != header_signature)
5112         {
5113           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
5114                    " TU at offset 0x%x [in module %s]"),
5115                  hex_string (sig_type->signature),
5116                  hex_string (header_signature),
5117                  dwo_unit->offset.sect_off,
5118                  bfd_get_filename (abfd));
5119         }
5120       gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5121       /* For DWOs coming from DWP files, we don't know the CU length
5122          nor the type's offset in the TU until now.  */
5123       dwo_unit->length = get_cu_length (&cu->header);
5124       dwo_unit->type_offset_in_tu = type_offset_in_tu;
5125
5126       /* Establish the type offset that can be used to lookup the type.
5127          For DWO files, we don't know it until now.  */
5128       sig_type->type_offset_in_section.sect_off =
5129         dwo_unit->offset.sect_off + dwo_unit->type_offset_in_tu.cu_off;
5130     }
5131   else
5132     {
5133       info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5134                                                 dwo_abbrev_section,
5135                                                 info_ptr, 0);
5136       gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5137       /* For DWOs coming from DWP files, we don't know the CU length
5138          until now.  */
5139       dwo_unit->length = get_cu_length (&cu->header);
5140     }
5141
5142   /* Replace the CU's original abbrev table with the DWO's.
5143      Reminder: We can't read the abbrev table until we've read the header.  */
5144   if (abbrev_table_provided)
5145     {
5146       /* Don't free the provided abbrev table, the caller of
5147          init_cutu_and_read_dies owns it.  */
5148       dwarf2_read_abbrevs (cu, dwo_abbrev_section);
5149       /* Ensure the DWO abbrev table gets freed.  */
5150       make_cleanup (dwarf2_free_abbrev_table, cu);
5151     }
5152   else
5153     {
5154       dwarf2_free_abbrev_table (cu);
5155       dwarf2_read_abbrevs (cu, dwo_abbrev_section);
5156       /* Leave any existing abbrev table cleanup as is.  */
5157     }
5158
5159   /* Read in the die, but leave space to copy over the attributes
5160      from the stub.  This has the benefit of simplifying the rest of
5161      the code - all the work to maintain the illusion of a single
5162      DW_TAG_{compile,type}_unit DIE is done here.  */
5163   num_extra_attrs = ((stmt_list != NULL)
5164                      + (low_pc != NULL)
5165                      + (high_pc != NULL)
5166                      + (ranges != NULL)
5167                      + (comp_dir != NULL));
5168   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
5169                               result_has_children, num_extra_attrs);
5170
5171   /* Copy over the attributes from the stub to the DIE we just read in.  */
5172   comp_unit_die = *result_comp_unit_die;
5173   i = comp_unit_die->num_attrs;
5174   if (stmt_list != NULL)
5175     comp_unit_die->attrs[i++] = *stmt_list;
5176   if (low_pc != NULL)
5177     comp_unit_die->attrs[i++] = *low_pc;
5178   if (high_pc != NULL)
5179     comp_unit_die->attrs[i++] = *high_pc;
5180   if (ranges != NULL)
5181     comp_unit_die->attrs[i++] = *ranges;
5182   if (comp_dir != NULL)
5183     comp_unit_die->attrs[i++] = *comp_dir;
5184   comp_unit_die->num_attrs += num_extra_attrs;
5185
5186   if (dwarf2_die_debug)
5187     {
5188       fprintf_unfiltered (gdb_stdlog,
5189                           "Read die from %s@0x%x of %s:\n",
5190                           get_section_name (section),
5191                           (unsigned) (begin_info_ptr - section->buffer),
5192                           bfd_get_filename (abfd));
5193       dump_die (comp_unit_die, dwarf2_die_debug);
5194     }
5195
5196   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
5197      TUs by skipping the stub and going directly to the entry in the DWO file.
5198      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
5199      to get it via circuitous means.  Blech.  */
5200   if (comp_dir != NULL)
5201     result_reader->comp_dir = DW_STRING (comp_dir);
5202
5203   /* Skip dummy compilation units.  */
5204   if (info_ptr >= begin_info_ptr + dwo_unit->length
5205       || peek_abbrev_code (abfd, info_ptr) == 0)
5206     return 0;
5207
5208   *result_info_ptr = info_ptr;
5209   return 1;
5210 }
5211
5212 /* Subroutine of init_cutu_and_read_dies to simplify it.
5213    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
5214    Returns NULL if the specified DWO unit cannot be found.  */
5215
5216 static struct dwo_unit *
5217 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
5218                  struct die_info *comp_unit_die)
5219 {
5220   struct dwarf2_cu *cu = this_cu->cu;
5221   struct attribute *attr;
5222   ULONGEST signature;
5223   struct dwo_unit *dwo_unit;
5224   const char *comp_dir, *dwo_name;
5225
5226   gdb_assert (cu != NULL);
5227
5228   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
5229   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5230   gdb_assert (attr != NULL);
5231   dwo_name = DW_STRING (attr);
5232   comp_dir = NULL;
5233   attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
5234   if (attr)
5235     comp_dir = DW_STRING (attr);
5236
5237   if (this_cu->is_debug_types)
5238     {
5239       struct signatured_type *sig_type;
5240
5241       /* Since this_cu is the first member of struct signatured_type,
5242          we can go from a pointer to one to a pointer to the other.  */
5243       sig_type = (struct signatured_type *) this_cu;
5244       signature = sig_type->signature;
5245       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
5246     }
5247   else
5248     {
5249       struct attribute *attr;
5250
5251       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
5252       if (! attr)
5253         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
5254                  " [in module %s]"),
5255                dwo_name, objfile_name (this_cu->objfile));
5256       signature = DW_UNSND (attr);
5257       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
5258                                        signature);
5259     }
5260
5261   return dwo_unit;
5262 }
5263
5264 /* Subroutine of init_cutu_and_read_dies to simplify it.
5265    See it for a description of the parameters.
5266    Read a TU directly from a DWO file, bypassing the stub.
5267
5268    Note: This function could be a little bit simpler if we shared cleanups
5269    with our caller, init_cutu_and_read_dies.  That's generally a fragile thing
5270    to do, so we keep this function self-contained.  Or we could move this
5271    into our caller, but it's complex enough already.  */
5272
5273 static void
5274 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
5275                            int use_existing_cu, int keep,
5276                            die_reader_func_ftype *die_reader_func,
5277                            void *data)
5278 {
5279   struct dwarf2_cu *cu;
5280   struct signatured_type *sig_type;
5281   struct cleanup *cleanups, *free_cu_cleanup = NULL;
5282   struct die_reader_specs reader;
5283   const gdb_byte *info_ptr;
5284   struct die_info *comp_unit_die;
5285   int has_children;
5286
5287   /* Verify we can do the following downcast, and that we have the
5288      data we need.  */
5289   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
5290   sig_type = (struct signatured_type *) this_cu;
5291   gdb_assert (sig_type->dwo_unit != NULL);
5292
5293   cleanups = make_cleanup (null_cleanup, NULL);
5294
5295   if (use_existing_cu && this_cu->cu != NULL)
5296     {
5297       gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
5298       cu = this_cu->cu;
5299       /* There's no need to do the rereading_dwo_cu handling that
5300          init_cutu_and_read_dies does since we don't read the stub.  */
5301     }
5302   else
5303     {
5304       /* If !use_existing_cu, this_cu->cu must be NULL.  */
5305       gdb_assert (this_cu->cu == NULL);
5306       cu = xmalloc (sizeof (*cu));
5307       init_one_comp_unit (cu, this_cu);
5308       /* If an error occurs while loading, release our storage.  */
5309       free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5310     }
5311
5312   /* A future optimization, if needed, would be to use an existing
5313      abbrev table.  When reading DWOs with skeletonless TUs, all the TUs
5314      could share abbrev tables.  */
5315
5316   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
5317                               0 /* abbrev_table_provided */,
5318                               NULL /* stub_comp_unit_die */,
5319                               sig_type->dwo_unit->dwo_file->comp_dir,
5320                               &reader, &info_ptr,
5321                               &comp_unit_die, &has_children) == 0)
5322     {
5323       /* Dummy die.  */
5324       do_cleanups (cleanups);
5325       return;
5326     }
5327
5328   /* All the "real" work is done here.  */
5329   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5330
5331   /* This duplicates the code in init_cutu_and_read_dies,
5332      but the alternative is making the latter more complex.
5333      This function is only for the special case of using DWO files directly:
5334      no point in overly complicating the general case just to handle this.  */
5335   if (free_cu_cleanup != NULL)
5336     {
5337       if (keep)
5338         {
5339           /* We've successfully allocated this compilation unit.  Let our
5340              caller clean it up when finished with it.  */
5341           discard_cleanups (free_cu_cleanup);
5342
5343           /* We can only discard free_cu_cleanup and all subsequent cleanups.
5344              So we have to manually free the abbrev table.  */
5345           dwarf2_free_abbrev_table (cu);
5346
5347           /* Link this CU into read_in_chain.  */
5348           this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5349           dwarf2_per_objfile->read_in_chain = this_cu;
5350         }
5351       else
5352         do_cleanups (free_cu_cleanup);
5353     }
5354
5355   do_cleanups (cleanups);
5356 }
5357
5358 /* Initialize a CU (or TU) and read its DIEs.
5359    If the CU defers to a DWO file, read the DWO file as well.
5360
5361    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
5362    Otherwise the table specified in the comp unit header is read in and used.
5363    This is an optimization for when we already have the abbrev table.
5364
5365    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
5366    Otherwise, a new CU is allocated with xmalloc.
5367
5368    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
5369    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
5370
5371    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5372    linker) then DIE_READER_FUNC will not get called.  */
5373
5374 static void
5375 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
5376                          struct abbrev_table *abbrev_table,
5377                          int use_existing_cu, int keep,
5378                          die_reader_func_ftype *die_reader_func,
5379                          void *data)
5380 {
5381   struct objfile *objfile = dwarf2_per_objfile->objfile;
5382   struct dwarf2_section_info *section = this_cu->section;
5383   bfd *abfd = get_section_bfd_owner (section);
5384   struct dwarf2_cu *cu;
5385   const gdb_byte *begin_info_ptr, *info_ptr;
5386   struct die_reader_specs reader;
5387   struct die_info *comp_unit_die;
5388   int has_children;
5389   struct attribute *attr;
5390   struct cleanup *cleanups, *free_cu_cleanup = NULL;
5391   struct signatured_type *sig_type = NULL;
5392   struct dwarf2_section_info *abbrev_section;
5393   /* Non-zero if CU currently points to a DWO file and we need to
5394      reread it.  When this happens we need to reread the skeleton die
5395      before we can reread the DWO file (this only applies to CUs, not TUs).  */
5396   int rereading_dwo_cu = 0;
5397
5398   if (dwarf2_die_debug)
5399     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5400                         this_cu->is_debug_types ? "type" : "comp",
5401                         this_cu->offset.sect_off);
5402
5403   if (use_existing_cu)
5404     gdb_assert (keep);
5405
5406   /* If we're reading a TU directly from a DWO file, including a virtual DWO
5407      file (instead of going through the stub), short-circuit all of this.  */
5408   if (this_cu->reading_dwo_directly)
5409     {
5410       /* Narrow down the scope of possibilities to have to understand.  */
5411       gdb_assert (this_cu->is_debug_types);
5412       gdb_assert (abbrev_table == NULL);
5413       init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
5414                                  die_reader_func, data);
5415       return;
5416     }
5417
5418   cleanups = make_cleanup (null_cleanup, NULL);
5419
5420   /* This is cheap if the section is already read in.  */
5421   dwarf2_read_section (objfile, section);
5422
5423   begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
5424
5425   abbrev_section = get_abbrev_section_for_cu (this_cu);
5426
5427   if (use_existing_cu && this_cu->cu != NULL)
5428     {
5429       cu = this_cu->cu;
5430       /* If this CU is from a DWO file we need to start over, we need to
5431          refetch the attributes from the skeleton CU.
5432          This could be optimized by retrieving those attributes from when we
5433          were here the first time: the previous comp_unit_die was stored in
5434          comp_unit_obstack.  But there's no data yet that we need this
5435          optimization.  */
5436       if (cu->dwo_unit != NULL)
5437         rereading_dwo_cu = 1;
5438     }
5439   else
5440     {
5441       /* If !use_existing_cu, this_cu->cu must be NULL.  */
5442       gdb_assert (this_cu->cu == NULL);
5443       cu = xmalloc (sizeof (*cu));
5444       init_one_comp_unit (cu, this_cu);
5445       /* If an error occurs while loading, release our storage.  */
5446       free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5447     }
5448
5449   /* Get the header.  */
5450   if (cu->header.first_die_offset.cu_off != 0 && ! rereading_dwo_cu)
5451     {
5452       /* We already have the header, there's no need to read it in again.  */
5453       info_ptr += cu->header.first_die_offset.cu_off;
5454     }
5455   else
5456     {
5457       if (this_cu->is_debug_types)
5458         {
5459           ULONGEST signature;
5460           cu_offset type_offset_in_tu;
5461
5462           info_ptr = read_and_check_type_unit_head (&cu->header, section,
5463                                                     abbrev_section, info_ptr,
5464                                                     &signature,
5465                                                     &type_offset_in_tu);
5466
5467           /* Since per_cu is the first member of struct signatured_type,
5468              we can go from a pointer to one to a pointer to the other.  */
5469           sig_type = (struct signatured_type *) this_cu;
5470           gdb_assert (sig_type->signature == signature);
5471           gdb_assert (sig_type->type_offset_in_tu.cu_off
5472                       == type_offset_in_tu.cu_off);
5473           gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5474
5475           /* LENGTH has not been set yet for type units if we're
5476              using .gdb_index.  */
5477           this_cu->length = get_cu_length (&cu->header);
5478
5479           /* Establish the type offset that can be used to lookup the type.  */
5480           sig_type->type_offset_in_section.sect_off =
5481             this_cu->offset.sect_off + sig_type->type_offset_in_tu.cu_off;
5482         }
5483       else
5484         {
5485           info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5486                                                     abbrev_section,
5487                                                     info_ptr, 0);
5488
5489           gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5490           gdb_assert (this_cu->length == get_cu_length (&cu->header));
5491         }
5492     }
5493
5494   /* Skip dummy compilation units.  */
5495   if (info_ptr >= begin_info_ptr + this_cu->length
5496       || peek_abbrev_code (abfd, info_ptr) == 0)
5497     {
5498       do_cleanups (cleanups);
5499       return;
5500     }
5501
5502   /* If we don't have them yet, read the abbrevs for this compilation unit.
5503      And if we need to read them now, make sure they're freed when we're
5504      done.  Note that it's important that if the CU had an abbrev table
5505      on entry we don't free it when we're done: Somewhere up the call stack
5506      it may be in use.  */
5507   if (abbrev_table != NULL)
5508     {
5509       gdb_assert (cu->abbrev_table == NULL);
5510       gdb_assert (cu->header.abbrev_offset.sect_off
5511                   == abbrev_table->offset.sect_off);
5512       cu->abbrev_table = abbrev_table;
5513     }
5514   else if (cu->abbrev_table == NULL)
5515     {
5516       dwarf2_read_abbrevs (cu, abbrev_section);
5517       make_cleanup (dwarf2_free_abbrev_table, cu);
5518     }
5519   else if (rereading_dwo_cu)
5520     {
5521       dwarf2_free_abbrev_table (cu);
5522       dwarf2_read_abbrevs (cu, abbrev_section);
5523     }
5524
5525   /* Read the top level CU/TU die.  */
5526   init_cu_die_reader (&reader, cu, section, NULL);
5527   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5528
5529   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
5530      from the DWO file.
5531      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
5532      DWO CU, that this test will fail (the attribute will not be present).  */
5533   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5534   if (attr)
5535     {
5536       struct dwo_unit *dwo_unit;
5537       struct die_info *dwo_comp_unit_die;
5538
5539       if (has_children)
5540         {
5541           complaint (&symfile_complaints,
5542                      _("compilation unit with DW_AT_GNU_dwo_name"
5543                        " has children (offset 0x%x) [in module %s]"),
5544                      this_cu->offset.sect_off, bfd_get_filename (abfd));
5545         }
5546       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
5547       if (dwo_unit != NULL)
5548         {
5549           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
5550                                       abbrev_table != NULL,
5551                                       comp_unit_die, NULL,
5552                                       &reader, &info_ptr,
5553                                       &dwo_comp_unit_die, &has_children) == 0)
5554             {
5555               /* Dummy die.  */
5556               do_cleanups (cleanups);
5557               return;
5558             }
5559           comp_unit_die = dwo_comp_unit_die;
5560         }
5561       else
5562         {
5563           /* Yikes, we couldn't find the rest of the DIE, we only have
5564              the stub.  A complaint has already been logged.  There's
5565              not much more we can do except pass on the stub DIE to
5566              die_reader_func.  We don't want to throw an error on bad
5567              debug info.  */
5568         }
5569     }
5570
5571   /* All of the above is setup for this call.  Yikes.  */
5572   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5573
5574   /* Done, clean up.  */
5575   if (free_cu_cleanup != NULL)
5576     {
5577       if (keep)
5578         {
5579           /* We've successfully allocated this compilation unit.  Let our
5580              caller clean it up when finished with it.  */
5581           discard_cleanups (free_cu_cleanup);
5582
5583           /* We can only discard free_cu_cleanup and all subsequent cleanups.
5584              So we have to manually free the abbrev table.  */
5585           dwarf2_free_abbrev_table (cu);
5586
5587           /* Link this CU into read_in_chain.  */
5588           this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5589           dwarf2_per_objfile->read_in_chain = this_cu;
5590         }
5591       else
5592         do_cleanups (free_cu_cleanup);
5593     }
5594
5595   do_cleanups (cleanups);
5596 }
5597
5598 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
5599    DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
5600    to have already done the lookup to find the DWO file).
5601
5602    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
5603    THIS_CU->is_debug_types, but nothing else.
5604
5605    We fill in THIS_CU->length.
5606
5607    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5608    linker) then DIE_READER_FUNC will not get called.
5609
5610    THIS_CU->cu is always freed when done.
5611    This is done in order to not leave THIS_CU->cu in a state where we have
5612    to care whether it refers to the "main" CU or the DWO CU.  */
5613
5614 static void
5615 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
5616                                    struct dwo_file *dwo_file,
5617                                    die_reader_func_ftype *die_reader_func,
5618                                    void *data)
5619 {
5620   struct objfile *objfile = dwarf2_per_objfile->objfile;
5621   struct dwarf2_section_info *section = this_cu->section;
5622   bfd *abfd = get_section_bfd_owner (section);
5623   struct dwarf2_section_info *abbrev_section;
5624   struct dwarf2_cu cu;
5625   const gdb_byte *begin_info_ptr, *info_ptr;
5626   struct die_reader_specs reader;
5627   struct cleanup *cleanups;
5628   struct die_info *comp_unit_die;
5629   int has_children;
5630
5631   if (dwarf2_die_debug)
5632     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5633                         this_cu->is_debug_types ? "type" : "comp",
5634                         this_cu->offset.sect_off);
5635
5636   gdb_assert (this_cu->cu == NULL);
5637
5638   abbrev_section = (dwo_file != NULL
5639                     ? &dwo_file->sections.abbrev
5640                     : get_abbrev_section_for_cu (this_cu));
5641
5642   /* This is cheap if the section is already read in.  */
5643   dwarf2_read_section (objfile, section);
5644
5645   init_one_comp_unit (&cu, this_cu);
5646
5647   cleanups = make_cleanup (free_stack_comp_unit, &cu);
5648
5649   begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
5650   info_ptr = read_and_check_comp_unit_head (&cu.header, section,
5651                                             abbrev_section, info_ptr,
5652                                             this_cu->is_debug_types);
5653
5654   this_cu->length = get_cu_length (&cu.header);
5655
5656   /* Skip dummy compilation units.  */
5657   if (info_ptr >= begin_info_ptr + this_cu->length
5658       || peek_abbrev_code (abfd, info_ptr) == 0)
5659     {
5660       do_cleanups (cleanups);
5661       return;
5662     }
5663
5664   dwarf2_read_abbrevs (&cu, abbrev_section);
5665   make_cleanup (dwarf2_free_abbrev_table, &cu);
5666
5667   init_cu_die_reader (&reader, &cu, section, dwo_file);
5668   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5669
5670   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5671
5672   do_cleanups (cleanups);
5673 }
5674
5675 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
5676    does not lookup the specified DWO file.
5677    This cannot be used to read DWO files.
5678
5679    THIS_CU->cu is always freed when done.
5680    This is done in order to not leave THIS_CU->cu in a state where we have
5681    to care whether it refers to the "main" CU or the DWO CU.
5682    We can revisit this if the data shows there's a performance issue.  */
5683
5684 static void
5685 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
5686                                 die_reader_func_ftype *die_reader_func,
5687                                 void *data)
5688 {
5689   init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
5690 }
5691 \f
5692 /* Type Unit Groups.
5693
5694    Type Unit Groups are a way to collapse the set of all TUs (type units) into
5695    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
5696    so that all types coming from the same compilation (.o file) are grouped
5697    together.  A future step could be to put the types in the same symtab as
5698    the CU the types ultimately came from.  */
5699
5700 static hashval_t
5701 hash_type_unit_group (const void *item)
5702 {
5703   const struct type_unit_group *tu_group = item;
5704
5705   return hash_stmt_list_entry (&tu_group->hash);
5706 }
5707
5708 static int
5709 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
5710 {
5711   const struct type_unit_group *lhs = item_lhs;
5712   const struct type_unit_group *rhs = item_rhs;
5713
5714   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
5715 }
5716
5717 /* Allocate a hash table for type unit groups.  */
5718
5719 static htab_t
5720 allocate_type_unit_groups_table (void)
5721 {
5722   return htab_create_alloc_ex (3,
5723                                hash_type_unit_group,
5724                                eq_type_unit_group,
5725                                NULL,
5726                                &dwarf2_per_objfile->objfile->objfile_obstack,
5727                                hashtab_obstack_allocate,
5728                                dummy_obstack_deallocate);
5729 }
5730
5731 /* Type units that don't have DW_AT_stmt_list are grouped into their own
5732    partial symtabs.  We combine several TUs per psymtab to not let the size
5733    of any one psymtab grow too big.  */
5734 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
5735 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
5736
5737 /* Helper routine for get_type_unit_group.
5738    Create the type_unit_group object used to hold one or more TUs.  */
5739
5740 static struct type_unit_group *
5741 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
5742 {
5743   struct objfile *objfile = dwarf2_per_objfile->objfile;
5744   struct dwarf2_per_cu_data *per_cu;
5745   struct type_unit_group *tu_group;
5746
5747   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5748                              struct type_unit_group);
5749   per_cu = &tu_group->per_cu;
5750   per_cu->objfile = objfile;
5751
5752   if (dwarf2_per_objfile->using_index)
5753     {
5754       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5755                                         struct dwarf2_per_cu_quick_data);
5756     }
5757   else
5758     {
5759       unsigned int line_offset = line_offset_struct.sect_off;
5760       struct partial_symtab *pst;
5761       char *name;
5762
5763       /* Give the symtab a useful name for debug purposes.  */
5764       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
5765         name = xstrprintf ("<type_units_%d>",
5766                            (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
5767       else
5768         name = xstrprintf ("<type_units_at_0x%x>", line_offset);
5769
5770       pst = create_partial_symtab (per_cu, name);
5771       pst->anonymous = 1;
5772
5773       xfree (name);
5774     }
5775
5776   tu_group->hash.dwo_unit = cu->dwo_unit;
5777   tu_group->hash.line_offset = line_offset_struct;
5778
5779   return tu_group;
5780 }
5781
5782 /* Look up the type_unit_group for type unit CU, and create it if necessary.
5783    STMT_LIST is a DW_AT_stmt_list attribute.  */
5784
5785 static struct type_unit_group *
5786 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
5787 {
5788   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
5789   struct type_unit_group *tu_group;
5790   void **slot;
5791   unsigned int line_offset;
5792   struct type_unit_group type_unit_group_for_lookup;
5793
5794   if (dwarf2_per_objfile->type_unit_groups == NULL)
5795     {
5796       dwarf2_per_objfile->type_unit_groups =
5797         allocate_type_unit_groups_table ();
5798     }
5799
5800   /* Do we need to create a new group, or can we use an existing one?  */
5801
5802   if (stmt_list)
5803     {
5804       line_offset = DW_UNSND (stmt_list);
5805       ++tu_stats->nr_symtab_sharers;
5806     }
5807   else
5808     {
5809       /* Ugh, no stmt_list.  Rare, but we have to handle it.
5810          We can do various things here like create one group per TU or
5811          spread them over multiple groups to split up the expansion work.
5812          To avoid worst case scenarios (too many groups or too large groups)
5813          we, umm, group them in bunches.  */
5814       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
5815                      | (tu_stats->nr_stmt_less_type_units
5816                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
5817       ++tu_stats->nr_stmt_less_type_units;
5818     }
5819
5820   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
5821   type_unit_group_for_lookup.hash.line_offset.sect_off = line_offset;
5822   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
5823                          &type_unit_group_for_lookup, INSERT);
5824   if (*slot != NULL)
5825     {
5826       tu_group = *slot;
5827       gdb_assert (tu_group != NULL);
5828     }
5829   else
5830     {
5831       sect_offset line_offset_struct;
5832
5833       line_offset_struct.sect_off = line_offset;
5834       tu_group = create_type_unit_group (cu, line_offset_struct);
5835       *slot = tu_group;
5836       ++tu_stats->nr_symtabs;
5837     }
5838
5839   return tu_group;
5840 }
5841 \f
5842 /* Partial symbol tables.  */
5843
5844 /* Create a psymtab named NAME and assign it to PER_CU.
5845
5846    The caller must fill in the following details:
5847    dirname, textlow, texthigh.  */
5848
5849 static struct partial_symtab *
5850 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
5851 {
5852   struct objfile *objfile = per_cu->objfile;
5853   struct partial_symtab *pst;
5854
5855   pst = start_psymtab_common (objfile, objfile->section_offsets,
5856                               name, 0,
5857                               objfile->global_psymbols.next,
5858                               objfile->static_psymbols.next);
5859
5860   pst->psymtabs_addrmap_supported = 1;
5861
5862   /* This is the glue that links PST into GDB's symbol API.  */
5863   pst->read_symtab_private = per_cu;
5864   pst->read_symtab = dwarf2_read_symtab;
5865   per_cu->v.psymtab = pst;
5866
5867   return pst;
5868 }
5869
5870 /* The DATA object passed to process_psymtab_comp_unit_reader has this
5871    type.  */
5872
5873 struct process_psymtab_comp_unit_data
5874 {
5875   /* True if we are reading a DW_TAG_partial_unit.  */
5876
5877   int want_partial_unit;
5878
5879   /* The "pretend" language that is used if the CU doesn't declare a
5880      language.  */
5881
5882   enum language pretend_language;
5883 };
5884
5885 /* die_reader_func for process_psymtab_comp_unit.  */
5886
5887 static void
5888 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
5889                                   const gdb_byte *info_ptr,
5890                                   struct die_info *comp_unit_die,
5891                                   int has_children,
5892                                   void *data)
5893 {
5894   struct dwarf2_cu *cu = reader->cu;
5895   struct objfile *objfile = cu->objfile;
5896   struct gdbarch *gdbarch = get_objfile_arch (objfile);
5897   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
5898   struct attribute *attr;
5899   CORE_ADDR baseaddr;
5900   CORE_ADDR best_lowpc = 0, best_highpc = 0;
5901   struct partial_symtab *pst;
5902   int has_pc_info;
5903   const char *filename;
5904   struct process_psymtab_comp_unit_data *info = data;
5905
5906   if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
5907     return;
5908
5909   gdb_assert (! per_cu->is_debug_types);
5910
5911   prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
5912
5913   cu->list_in_scope = &file_symbols;
5914
5915   /* Allocate a new partial symbol table structure.  */
5916   attr = dwarf2_attr (comp_unit_die, DW_AT_name, cu);
5917   if (attr == NULL || !DW_STRING (attr))
5918     filename = "";
5919   else
5920     filename = DW_STRING (attr);
5921
5922   pst = create_partial_symtab (per_cu, filename);
5923
5924   /* This must be done before calling dwarf2_build_include_psymtabs.  */
5925   attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
5926   if (attr != NULL)
5927     pst->dirname = DW_STRING (attr);
5928
5929   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5930
5931   dwarf2_find_base_address (comp_unit_die, cu);
5932
5933   /* Possibly set the default values of LOWPC and HIGHPC from
5934      `DW_AT_ranges'.  */
5935   has_pc_info = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
5936                                       &best_highpc, cu, pst);
5937   if (has_pc_info == 1 && best_lowpc < best_highpc)
5938     /* Store the contiguous range if it is not empty; it can be empty for
5939        CUs with no code.  */
5940     addrmap_set_empty (objfile->psymtabs_addrmap,
5941                        gdbarch_adjust_dwarf2_addr (gdbarch,
5942                                                    best_lowpc + baseaddr),
5943                        gdbarch_adjust_dwarf2_addr (gdbarch,
5944                                                    best_highpc + baseaddr) - 1,
5945                        pst);
5946
5947   /* Check if comp unit has_children.
5948      If so, read the rest of the partial symbols from this comp unit.
5949      If not, there's no more debug_info for this comp unit.  */
5950   if (has_children)
5951     {
5952       struct partial_die_info *first_die;
5953       CORE_ADDR lowpc, highpc;
5954
5955       lowpc = ((CORE_ADDR) -1);
5956       highpc = ((CORE_ADDR) 0);
5957
5958       first_die = load_partial_dies (reader, info_ptr, 1);
5959
5960       scan_partial_symbols (first_die, &lowpc, &highpc,
5961                             ! has_pc_info, cu);
5962
5963       /* If we didn't find a lowpc, set it to highpc to avoid
5964          complaints from `maint check'.  */
5965       if (lowpc == ((CORE_ADDR) -1))
5966         lowpc = highpc;
5967
5968       /* If the compilation unit didn't have an explicit address range,
5969          then use the information extracted from its child dies.  */
5970       if (! has_pc_info)
5971         {
5972           best_lowpc = lowpc;
5973           best_highpc = highpc;
5974         }
5975     }
5976   pst->textlow = gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr);
5977   pst->texthigh = gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr);
5978
5979   pst->n_global_syms = objfile->global_psymbols.next -
5980     (objfile->global_psymbols.list + pst->globals_offset);
5981   pst->n_static_syms = objfile->static_psymbols.next -
5982     (objfile->static_psymbols.list + pst->statics_offset);
5983   sort_pst_symbols (objfile, pst);
5984
5985   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
5986     {
5987       int i;
5988       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
5989       struct dwarf2_per_cu_data *iter;
5990
5991       /* Fill in 'dependencies' here; we fill in 'users' in a
5992          post-pass.  */
5993       pst->number_of_dependencies = len;
5994       pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
5995                                          len * sizeof (struct symtab *));
5996       for (i = 0;
5997            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
5998                         i, iter);
5999            ++i)
6000         pst->dependencies[i] = iter->v.psymtab;
6001
6002       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6003     }
6004
6005   /* Get the list of files included in the current compilation unit,
6006      and build a psymtab for each of them.  */
6007   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
6008
6009   if (dwarf2_read_debug)
6010     {
6011       struct gdbarch *gdbarch = get_objfile_arch (objfile);
6012
6013       fprintf_unfiltered (gdb_stdlog,
6014                           "Psymtab for %s unit @0x%x: %s - %s"
6015                           ", %d global, %d static syms\n",
6016                           per_cu->is_debug_types ? "type" : "comp",
6017                           per_cu->offset.sect_off,
6018                           paddress (gdbarch, pst->textlow),
6019                           paddress (gdbarch, pst->texthigh),
6020                           pst->n_global_syms, pst->n_static_syms);
6021     }
6022 }
6023
6024 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6025    Process compilation unit THIS_CU for a psymtab.  */
6026
6027 static void
6028 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
6029                            int want_partial_unit,
6030                            enum language pretend_language)
6031 {
6032   struct process_psymtab_comp_unit_data info;
6033
6034   /* If this compilation unit was already read in, free the
6035      cached copy in order to read it in again.  This is
6036      necessary because we skipped some symbols when we first
6037      read in the compilation unit (see load_partial_dies).
6038      This problem could be avoided, but the benefit is unclear.  */
6039   if (this_cu->cu != NULL)
6040     free_one_cached_comp_unit (this_cu);
6041
6042   gdb_assert (! this_cu->is_debug_types);
6043   info.want_partial_unit = want_partial_unit;
6044   info.pretend_language = pretend_language;
6045   init_cutu_and_read_dies (this_cu, NULL, 0, 0,
6046                            process_psymtab_comp_unit_reader,
6047                            &info);
6048
6049   /* Age out any secondary CUs.  */
6050   age_cached_comp_units ();
6051 }
6052
6053 /* Reader function for build_type_psymtabs.  */
6054
6055 static void
6056 build_type_psymtabs_reader (const struct die_reader_specs *reader,
6057                             const gdb_byte *info_ptr,
6058                             struct die_info *type_unit_die,
6059                             int has_children,
6060                             void *data)
6061 {
6062   struct objfile *objfile = dwarf2_per_objfile->objfile;
6063   struct dwarf2_cu *cu = reader->cu;
6064   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
6065   struct signatured_type *sig_type;
6066   struct type_unit_group *tu_group;
6067   struct attribute *attr;
6068   struct partial_die_info *first_die;
6069   CORE_ADDR lowpc, highpc;
6070   struct partial_symtab *pst;
6071
6072   gdb_assert (data == NULL);
6073   gdb_assert (per_cu->is_debug_types);
6074   sig_type = (struct signatured_type *) per_cu;
6075
6076   if (! has_children)
6077     return;
6078
6079   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
6080   tu_group = get_type_unit_group (cu, attr);
6081
6082   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
6083
6084   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
6085   cu->list_in_scope = &file_symbols;
6086   pst = create_partial_symtab (per_cu, "");
6087   pst->anonymous = 1;
6088
6089   first_die = load_partial_dies (reader, info_ptr, 1);
6090
6091   lowpc = (CORE_ADDR) -1;
6092   highpc = (CORE_ADDR) 0;
6093   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
6094
6095   pst->n_global_syms = objfile->global_psymbols.next -
6096     (objfile->global_psymbols.list + pst->globals_offset);
6097   pst->n_static_syms = objfile->static_psymbols.next -
6098     (objfile->static_psymbols.list + pst->statics_offset);
6099   sort_pst_symbols (objfile, pst);
6100 }
6101
6102 /* Struct used to sort TUs by their abbreviation table offset.  */
6103
6104 struct tu_abbrev_offset
6105 {
6106   struct signatured_type *sig_type;
6107   sect_offset abbrev_offset;
6108 };
6109
6110 /* Helper routine for build_type_psymtabs_1, passed to qsort.  */
6111
6112 static int
6113 sort_tu_by_abbrev_offset (const void *ap, const void *bp)
6114 {
6115   const struct tu_abbrev_offset * const *a = ap;
6116   const struct tu_abbrev_offset * const *b = bp;
6117   unsigned int aoff = (*a)->abbrev_offset.sect_off;
6118   unsigned int boff = (*b)->abbrev_offset.sect_off;
6119
6120   return (aoff > boff) - (aoff < boff);
6121 }
6122
6123 /* Efficiently read all the type units.
6124    This does the bulk of the work for build_type_psymtabs.
6125
6126    The efficiency is because we sort TUs by the abbrev table they use and
6127    only read each abbrev table once.  In one program there are 200K TUs
6128    sharing 8K abbrev tables.
6129
6130    The main purpose of this function is to support building the
6131    dwarf2_per_objfile->type_unit_groups table.
6132    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
6133    can collapse the search space by grouping them by stmt_list.
6134    The savings can be significant, in the same program from above the 200K TUs
6135    share 8K stmt_list tables.
6136
6137    FUNC is expected to call get_type_unit_group, which will create the
6138    struct type_unit_group if necessary and add it to
6139    dwarf2_per_objfile->type_unit_groups.  */
6140
6141 static void
6142 build_type_psymtabs_1 (void)
6143 {
6144   struct objfile *objfile = dwarf2_per_objfile->objfile;
6145   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6146   struct cleanup *cleanups;
6147   struct abbrev_table *abbrev_table;
6148   sect_offset abbrev_offset;
6149   struct tu_abbrev_offset *sorted_by_abbrev;
6150   struct type_unit_group **iter;
6151   int i;
6152
6153   /* It's up to the caller to not call us multiple times.  */
6154   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
6155
6156   if (dwarf2_per_objfile->n_type_units == 0)
6157     return;
6158
6159   /* TUs typically share abbrev tables, and there can be way more TUs than
6160      abbrev tables.  Sort by abbrev table to reduce the number of times we
6161      read each abbrev table in.
6162      Alternatives are to punt or to maintain a cache of abbrev tables.
6163      This is simpler and efficient enough for now.
6164
6165      Later we group TUs by their DW_AT_stmt_list value (as this defines the
6166      symtab to use).  Typically TUs with the same abbrev offset have the same
6167      stmt_list value too so in practice this should work well.
6168
6169      The basic algorithm here is:
6170
6171       sort TUs by abbrev table
6172       for each TU with same abbrev table:
6173         read abbrev table if first user
6174         read TU top level DIE
6175           [IWBN if DWO skeletons had DW_AT_stmt_list]
6176         call FUNC  */
6177
6178   if (dwarf2_read_debug)
6179     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
6180
6181   /* Sort in a separate table to maintain the order of all_type_units
6182      for .gdb_index: TU indices directly index all_type_units.  */
6183   sorted_by_abbrev = XNEWVEC (struct tu_abbrev_offset,
6184                               dwarf2_per_objfile->n_type_units);
6185   for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6186     {
6187       struct signatured_type *sig_type = dwarf2_per_objfile->all_type_units[i];
6188
6189       sorted_by_abbrev[i].sig_type = sig_type;
6190       sorted_by_abbrev[i].abbrev_offset =
6191         read_abbrev_offset (sig_type->per_cu.section,
6192                             sig_type->per_cu.offset);
6193     }
6194   cleanups = make_cleanup (xfree, sorted_by_abbrev);
6195   qsort (sorted_by_abbrev, dwarf2_per_objfile->n_type_units,
6196          sizeof (struct tu_abbrev_offset), sort_tu_by_abbrev_offset);
6197
6198   abbrev_offset.sect_off = ~(unsigned) 0;
6199   abbrev_table = NULL;
6200   make_cleanup (abbrev_table_free_cleanup, &abbrev_table);
6201
6202   for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6203     {
6204       const struct tu_abbrev_offset *tu = &sorted_by_abbrev[i];
6205
6206       /* Switch to the next abbrev table if necessary.  */
6207       if (abbrev_table == NULL
6208           || tu->abbrev_offset.sect_off != abbrev_offset.sect_off)
6209         {
6210           if (abbrev_table != NULL)
6211             {
6212               abbrev_table_free (abbrev_table);
6213               /* Reset to NULL in case abbrev_table_read_table throws
6214                  an error: abbrev_table_free_cleanup will get called.  */
6215               abbrev_table = NULL;
6216             }
6217           abbrev_offset = tu->abbrev_offset;
6218           abbrev_table =
6219             abbrev_table_read_table (&dwarf2_per_objfile->abbrev,
6220                                      abbrev_offset);
6221           ++tu_stats->nr_uniq_abbrev_tables;
6222         }
6223
6224       init_cutu_and_read_dies (&tu->sig_type->per_cu, abbrev_table, 0, 0,
6225                                build_type_psymtabs_reader, NULL);
6226     }
6227
6228   do_cleanups (cleanups);
6229 }
6230
6231 /* Print collected type unit statistics.  */
6232
6233 static void
6234 print_tu_stats (void)
6235 {
6236   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6237
6238   fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
6239   fprintf_unfiltered (gdb_stdlog, "  %d TUs\n",
6240                       dwarf2_per_objfile->n_type_units);
6241   fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
6242                       tu_stats->nr_uniq_abbrev_tables);
6243   fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
6244                       tu_stats->nr_symtabs);
6245   fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
6246                       tu_stats->nr_symtab_sharers);
6247   fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
6248                       tu_stats->nr_stmt_less_type_units);
6249   fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
6250                       tu_stats->nr_all_type_units_reallocs);
6251 }
6252
6253 /* Traversal function for build_type_psymtabs.  */
6254
6255 static int
6256 build_type_psymtab_dependencies (void **slot, void *info)
6257 {
6258   struct objfile *objfile = dwarf2_per_objfile->objfile;
6259   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
6260   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
6261   struct partial_symtab *pst = per_cu->v.psymtab;
6262   int len = VEC_length (sig_type_ptr, tu_group->tus);
6263   struct signatured_type *iter;
6264   int i;
6265
6266   gdb_assert (len > 0);
6267   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
6268
6269   pst->number_of_dependencies = len;
6270   pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
6271                                      len * sizeof (struct psymtab *));
6272   for (i = 0;
6273        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
6274        ++i)
6275     {
6276       gdb_assert (iter->per_cu.is_debug_types);
6277       pst->dependencies[i] = iter->per_cu.v.psymtab;
6278       iter->type_unit_group = tu_group;
6279     }
6280
6281   VEC_free (sig_type_ptr, tu_group->tus);
6282
6283   return 1;
6284 }
6285
6286 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6287    Build partial symbol tables for the .debug_types comp-units.  */
6288
6289 static void
6290 build_type_psymtabs (struct objfile *objfile)
6291 {
6292   if (! create_all_type_units (objfile))
6293     return;
6294
6295   build_type_psymtabs_1 ();
6296 }
6297
6298 /* Traversal function for process_skeletonless_type_unit.
6299    Read a TU in a DWO file and build partial symbols for it.  */
6300
6301 static int
6302 process_skeletonless_type_unit (void **slot, void *info)
6303 {
6304   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
6305   struct objfile *objfile = info;
6306   struct signatured_type find_entry, *entry;
6307
6308   /* If this TU doesn't exist in the global table, add it and read it in.  */
6309
6310   if (dwarf2_per_objfile->signatured_types == NULL)
6311     {
6312       dwarf2_per_objfile->signatured_types
6313         = allocate_signatured_type_table (objfile);
6314     }
6315
6316   find_entry.signature = dwo_unit->signature;
6317   slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
6318                          INSERT);
6319   /* If we've already seen this type there's nothing to do.  What's happening
6320      is we're doing our own version of comdat-folding here.  */
6321   if (*slot != NULL)
6322     return 1;
6323
6324   /* This does the job that create_all_type_units would have done for
6325      this TU.  */
6326   entry = add_type_unit (dwo_unit->signature, slot);
6327   fill_in_sig_entry_from_dwo_entry (objfile, entry, dwo_unit);
6328   *slot = entry;
6329
6330   /* This does the job that build_type_psymtabs_1 would have done.  */
6331   init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0,
6332                            build_type_psymtabs_reader, NULL);
6333
6334   return 1;
6335 }
6336
6337 /* Traversal function for process_skeletonless_type_units.  */
6338
6339 static int
6340 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
6341 {
6342   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
6343
6344   if (dwo_file->tus != NULL)
6345     {
6346       htab_traverse_noresize (dwo_file->tus,
6347                               process_skeletonless_type_unit, info);
6348     }
6349
6350   return 1;
6351 }
6352
6353 /* Scan all TUs of DWO files, verifying we've processed them.
6354    This is needed in case a TU was emitted without its skeleton.
6355    Note: This can't be done until we know what all the DWO files are.  */
6356
6357 static void
6358 process_skeletonless_type_units (struct objfile *objfile)
6359 {
6360   /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
6361   if (get_dwp_file () == NULL
6362       && dwarf2_per_objfile->dwo_files != NULL)
6363     {
6364       htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
6365                               process_dwo_file_for_skeletonless_type_units,
6366                               objfile);
6367     }
6368 }
6369
6370 /* A cleanup function that clears objfile's psymtabs_addrmap field.  */
6371
6372 static void
6373 psymtabs_addrmap_cleanup (void *o)
6374 {
6375   struct objfile *objfile = o;
6376
6377   objfile->psymtabs_addrmap = NULL;
6378 }
6379
6380 /* Compute the 'user' field for each psymtab in OBJFILE.  */
6381
6382 static void
6383 set_partial_user (struct objfile *objfile)
6384 {
6385   int i;
6386
6387   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6388     {
6389       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
6390       struct partial_symtab *pst = per_cu->v.psymtab;
6391       int j;
6392
6393       if (pst == NULL)
6394         continue;
6395
6396       for (j = 0; j < pst->number_of_dependencies; ++j)
6397         {
6398           /* Set the 'user' field only if it is not already set.  */
6399           if (pst->dependencies[j]->user == NULL)
6400             pst->dependencies[j]->user = pst;
6401         }
6402     }
6403 }
6404
6405 /* Build the partial symbol table by doing a quick pass through the
6406    .debug_info and .debug_abbrev sections.  */
6407
6408 static void
6409 dwarf2_build_psymtabs_hard (struct objfile *objfile)
6410 {
6411   struct cleanup *back_to, *addrmap_cleanup;
6412   struct obstack temp_obstack;
6413   int i;
6414
6415   if (dwarf2_read_debug)
6416     {
6417       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
6418                           objfile_name (objfile));
6419     }
6420
6421   dwarf2_per_objfile->reading_partial_symbols = 1;
6422
6423   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
6424
6425   /* Any cached compilation units will be linked by the per-objfile
6426      read_in_chain.  Make sure to free them when we're done.  */
6427   back_to = make_cleanup (free_cached_comp_units, NULL);
6428
6429   build_type_psymtabs (objfile);
6430
6431   create_all_comp_units (objfile);
6432
6433   /* Create a temporary address map on a temporary obstack.  We later
6434      copy this to the final obstack.  */
6435   obstack_init (&temp_obstack);
6436   make_cleanup_obstack_free (&temp_obstack);
6437   objfile->psymtabs_addrmap = addrmap_create_mutable (&temp_obstack);
6438   addrmap_cleanup = make_cleanup (psymtabs_addrmap_cleanup, objfile);
6439
6440   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6441     {
6442       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
6443
6444       process_psymtab_comp_unit (per_cu, 0, language_minimal);
6445     }
6446
6447   /* This has to wait until we read the CUs, we need the list of DWOs.  */
6448   process_skeletonless_type_units (objfile);
6449
6450   /* Now that all TUs have been processed we can fill in the dependencies.  */
6451   if (dwarf2_per_objfile->type_unit_groups != NULL)
6452     {
6453       htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
6454                               build_type_psymtab_dependencies, NULL);
6455     }
6456
6457   if (dwarf2_read_debug)
6458     print_tu_stats ();
6459
6460   set_partial_user (objfile);
6461
6462   objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
6463                                                     &objfile->objfile_obstack);
6464   discard_cleanups (addrmap_cleanup);
6465
6466   do_cleanups (back_to);
6467
6468   if (dwarf2_read_debug)
6469     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
6470                         objfile_name (objfile));
6471 }
6472
6473 /* die_reader_func for load_partial_comp_unit.  */
6474
6475 static void
6476 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
6477                                const gdb_byte *info_ptr,
6478                                struct die_info *comp_unit_die,
6479                                int has_children,
6480                                void *data)
6481 {
6482   struct dwarf2_cu *cu = reader->cu;
6483
6484   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
6485
6486   /* Check if comp unit has_children.
6487      If so, read the rest of the partial symbols from this comp unit.
6488      If not, there's no more debug_info for this comp unit.  */
6489   if (has_children)
6490     load_partial_dies (reader, info_ptr, 0);
6491 }
6492
6493 /* Load the partial DIEs for a secondary CU into memory.
6494    This is also used when rereading a primary CU with load_all_dies.  */
6495
6496 static void
6497 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
6498 {
6499   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
6500                            load_partial_comp_unit_reader, NULL);
6501 }
6502
6503 static void
6504 read_comp_units_from_section (struct objfile *objfile,
6505                               struct dwarf2_section_info *section,
6506                               unsigned int is_dwz,
6507                               int *n_allocated,
6508                               int *n_comp_units,
6509                               struct dwarf2_per_cu_data ***all_comp_units)
6510 {
6511   const gdb_byte *info_ptr;
6512   bfd *abfd = get_section_bfd_owner (section);
6513
6514   if (dwarf2_read_debug)
6515     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
6516                         get_section_name (section),
6517                         get_section_file_name (section));
6518
6519   dwarf2_read_section (objfile, section);
6520
6521   info_ptr = section->buffer;
6522
6523   while (info_ptr < section->buffer + section->size)
6524     {
6525       unsigned int length, initial_length_size;
6526       struct dwarf2_per_cu_data *this_cu;
6527       sect_offset offset;
6528
6529       offset.sect_off = info_ptr - section->buffer;
6530
6531       /* Read just enough information to find out where the next
6532          compilation unit is.  */
6533       length = read_initial_length (abfd, info_ptr, &initial_length_size);
6534
6535       /* Save the compilation unit for later lookup.  */
6536       this_cu = obstack_alloc (&objfile->objfile_obstack,
6537                                sizeof (struct dwarf2_per_cu_data));
6538       memset (this_cu, 0, sizeof (*this_cu));
6539       this_cu->offset = offset;
6540       this_cu->length = length + initial_length_size;
6541       this_cu->is_dwz = is_dwz;
6542       this_cu->objfile = objfile;
6543       this_cu->section = section;
6544
6545       if (*n_comp_units == *n_allocated)
6546         {
6547           *n_allocated *= 2;
6548           *all_comp_units = xrealloc (*all_comp_units,
6549                                       *n_allocated
6550                                       * sizeof (struct dwarf2_per_cu_data *));
6551         }
6552       (*all_comp_units)[*n_comp_units] = this_cu;
6553       ++*n_comp_units;
6554
6555       info_ptr = info_ptr + this_cu->length;
6556     }
6557 }
6558
6559 /* Create a list of all compilation units in OBJFILE.
6560    This is only done for -readnow and building partial symtabs.  */
6561
6562 static void
6563 create_all_comp_units (struct objfile *objfile)
6564 {
6565   int n_allocated;
6566   int n_comp_units;
6567   struct dwarf2_per_cu_data **all_comp_units;
6568   struct dwz_file *dwz;
6569
6570   n_comp_units = 0;
6571   n_allocated = 10;
6572   all_comp_units = xmalloc (n_allocated
6573                             * sizeof (struct dwarf2_per_cu_data *));
6574
6575   read_comp_units_from_section (objfile, &dwarf2_per_objfile->info, 0,
6576                                 &n_allocated, &n_comp_units, &all_comp_units);
6577
6578   dwz = dwarf2_get_dwz_file ();
6579   if (dwz != NULL)
6580     read_comp_units_from_section (objfile, &dwz->info, 1,
6581                                   &n_allocated, &n_comp_units,
6582                                   &all_comp_units);
6583
6584   dwarf2_per_objfile->all_comp_units
6585     = obstack_alloc (&objfile->objfile_obstack,
6586                      n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6587   memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
6588           n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6589   xfree (all_comp_units);
6590   dwarf2_per_objfile->n_comp_units = n_comp_units;
6591 }
6592
6593 /* Process all loaded DIEs for compilation unit CU, starting at
6594    FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
6595    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
6596    DW_AT_ranges).  See the comments of add_partial_subprogram on how
6597    SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
6598
6599 static void
6600 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
6601                       CORE_ADDR *highpc, int set_addrmap,
6602                       struct dwarf2_cu *cu)
6603 {
6604   struct partial_die_info *pdi;
6605
6606   /* Now, march along the PDI's, descending into ones which have
6607      interesting children but skipping the children of the other ones,
6608      until we reach the end of the compilation unit.  */
6609
6610   pdi = first_die;
6611
6612   while (pdi != NULL)
6613     {
6614       fixup_partial_die (pdi, cu);
6615
6616       /* Anonymous namespaces or modules have no name but have interesting
6617          children, so we need to look at them.  Ditto for anonymous
6618          enums.  */
6619
6620       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
6621           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
6622           || pdi->tag == DW_TAG_imported_unit)
6623         {
6624           switch (pdi->tag)
6625             {
6626             case DW_TAG_subprogram:
6627               add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
6628               break;
6629             case DW_TAG_constant:
6630             case DW_TAG_variable:
6631             case DW_TAG_typedef:
6632             case DW_TAG_union_type:
6633               if (!pdi->is_declaration)
6634                 {
6635                   add_partial_symbol (pdi, cu);
6636                 }
6637               break;
6638             case DW_TAG_class_type:
6639             case DW_TAG_interface_type:
6640             case DW_TAG_structure_type:
6641               if (!pdi->is_declaration)
6642                 {
6643                   add_partial_symbol (pdi, cu);
6644                 }
6645               break;
6646             case DW_TAG_enumeration_type:
6647               if (!pdi->is_declaration)
6648                 add_partial_enumeration (pdi, cu);
6649               break;
6650             case DW_TAG_base_type:
6651             case DW_TAG_subrange_type:
6652               /* File scope base type definitions are added to the partial
6653                  symbol table.  */
6654               add_partial_symbol (pdi, cu);
6655               break;
6656             case DW_TAG_namespace:
6657               add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
6658               break;
6659             case DW_TAG_module:
6660               add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
6661               break;
6662             case DW_TAG_imported_unit:
6663               {
6664                 struct dwarf2_per_cu_data *per_cu;
6665
6666                 /* For now we don't handle imported units in type units.  */
6667                 if (cu->per_cu->is_debug_types)
6668                   {
6669                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
6670                              " supported in type units [in module %s]"),
6671                            objfile_name (cu->objfile));
6672                   }
6673
6674                 per_cu = dwarf2_find_containing_comp_unit (pdi->d.offset,
6675                                                            pdi->is_dwz,
6676                                                            cu->objfile);
6677
6678                 /* Go read the partial unit, if needed.  */
6679                 if (per_cu->v.psymtab == NULL)
6680                   process_psymtab_comp_unit (per_cu, 1, cu->language);
6681
6682                 VEC_safe_push (dwarf2_per_cu_ptr,
6683                                cu->per_cu->imported_symtabs, per_cu);
6684               }
6685               break;
6686             case DW_TAG_imported_declaration:
6687               add_partial_symbol (pdi, cu);
6688               break;
6689             default:
6690               break;
6691             }
6692         }
6693
6694       /* If the die has a sibling, skip to the sibling.  */
6695
6696       pdi = pdi->die_sibling;
6697     }
6698 }
6699
6700 /* Functions used to compute the fully scoped name of a partial DIE.
6701
6702    Normally, this is simple.  For C++, the parent DIE's fully scoped
6703    name is concatenated with "::" and the partial DIE's name.  For
6704    Java, the same thing occurs except that "." is used instead of "::".
6705    Enumerators are an exception; they use the scope of their parent
6706    enumeration type, i.e. the name of the enumeration type is not
6707    prepended to the enumerator.
6708
6709    There are two complexities.  One is DW_AT_specification; in this
6710    case "parent" means the parent of the target of the specification,
6711    instead of the direct parent of the DIE.  The other is compilers
6712    which do not emit DW_TAG_namespace; in this case we try to guess
6713    the fully qualified name of structure types from their members'
6714    linkage names.  This must be done using the DIE's children rather
6715    than the children of any DW_AT_specification target.  We only need
6716    to do this for structures at the top level, i.e. if the target of
6717    any DW_AT_specification (if any; otherwise the DIE itself) does not
6718    have a parent.  */
6719
6720 /* Compute the scope prefix associated with PDI's parent, in
6721    compilation unit CU.  The result will be allocated on CU's
6722    comp_unit_obstack, or a copy of the already allocated PDI->NAME
6723    field.  NULL is returned if no prefix is necessary.  */
6724 static const char *
6725 partial_die_parent_scope (struct partial_die_info *pdi,
6726                           struct dwarf2_cu *cu)
6727 {
6728   const char *grandparent_scope;
6729   struct partial_die_info *parent, *real_pdi;
6730
6731   /* We need to look at our parent DIE; if we have a DW_AT_specification,
6732      then this means the parent of the specification DIE.  */
6733
6734   real_pdi = pdi;
6735   while (real_pdi->has_specification)
6736     real_pdi = find_partial_die (real_pdi->spec_offset,
6737                                  real_pdi->spec_is_dwz, cu);
6738
6739   parent = real_pdi->die_parent;
6740   if (parent == NULL)
6741     return NULL;
6742
6743   if (parent->scope_set)
6744     return parent->scope;
6745
6746   fixup_partial_die (parent, cu);
6747
6748   grandparent_scope = partial_die_parent_scope (parent, cu);
6749
6750   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
6751      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
6752      Work around this problem here.  */
6753   if (cu->language == language_cplus
6754       && parent->tag == DW_TAG_namespace
6755       && strcmp (parent->name, "::") == 0
6756       && grandparent_scope == NULL)
6757     {
6758       parent->scope = NULL;
6759       parent->scope_set = 1;
6760       return NULL;
6761     }
6762
6763   if (pdi->tag == DW_TAG_enumerator)
6764     /* Enumerators should not get the name of the enumeration as a prefix.  */
6765     parent->scope = grandparent_scope;
6766   else if (parent->tag == DW_TAG_namespace
6767       || parent->tag == DW_TAG_module
6768       || parent->tag == DW_TAG_structure_type
6769       || parent->tag == DW_TAG_class_type
6770       || parent->tag == DW_TAG_interface_type
6771       || parent->tag == DW_TAG_union_type
6772       || parent->tag == DW_TAG_enumeration_type)
6773     {
6774       if (grandparent_scope == NULL)
6775         parent->scope = parent->name;
6776       else
6777         parent->scope = typename_concat (&cu->comp_unit_obstack,
6778                                          grandparent_scope,
6779                                          parent->name, 0, cu);
6780     }
6781   else
6782     {
6783       /* FIXME drow/2004-04-01: What should we be doing with
6784          function-local names?  For partial symbols, we should probably be
6785          ignoring them.  */
6786       complaint (&symfile_complaints,
6787                  _("unhandled containing DIE tag %d for DIE at %d"),
6788                  parent->tag, pdi->offset.sect_off);
6789       parent->scope = grandparent_scope;
6790     }
6791
6792   parent->scope_set = 1;
6793   return parent->scope;
6794 }
6795
6796 /* Return the fully scoped name associated with PDI, from compilation unit
6797    CU.  The result will be allocated with malloc.  */
6798
6799 static char *
6800 partial_die_full_name (struct partial_die_info *pdi,
6801                        struct dwarf2_cu *cu)
6802 {
6803   const char *parent_scope;
6804
6805   /* If this is a template instantiation, we can not work out the
6806      template arguments from partial DIEs.  So, unfortunately, we have
6807      to go through the full DIEs.  At least any work we do building
6808      types here will be reused if full symbols are loaded later.  */
6809   if (pdi->has_template_arguments)
6810     {
6811       fixup_partial_die (pdi, cu);
6812
6813       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
6814         {
6815           struct die_info *die;
6816           struct attribute attr;
6817           struct dwarf2_cu *ref_cu = cu;
6818
6819           /* DW_FORM_ref_addr is using section offset.  */
6820           attr.name = 0;
6821           attr.form = DW_FORM_ref_addr;
6822           attr.u.unsnd = pdi->offset.sect_off;
6823           die = follow_die_ref (NULL, &attr, &ref_cu);
6824
6825           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
6826         }
6827     }
6828
6829   parent_scope = partial_die_parent_scope (pdi, cu);
6830   if (parent_scope == NULL)
6831     return NULL;
6832   else
6833     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
6834 }
6835
6836 static void
6837 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
6838 {
6839   struct objfile *objfile = cu->objfile;
6840   struct gdbarch *gdbarch = get_objfile_arch (objfile);
6841   CORE_ADDR addr = 0;
6842   const char *actual_name = NULL;
6843   CORE_ADDR baseaddr;
6844   char *built_actual_name;
6845
6846   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
6847
6848   built_actual_name = partial_die_full_name (pdi, cu);
6849   if (built_actual_name != NULL)
6850     actual_name = built_actual_name;
6851
6852   if (actual_name == NULL)
6853     actual_name = pdi->name;
6854
6855   switch (pdi->tag)
6856     {
6857     case DW_TAG_subprogram:
6858       addr = gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr);
6859       if (pdi->is_external || cu->language == language_ada)
6860         {
6861           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
6862              of the global scope.  But in Ada, we want to be able to access
6863              nested procedures globally.  So all Ada subprograms are stored
6864              in the global scope.  */
6865           /* prim_record_minimal_symbol (actual_name, addr, mst_text,
6866              objfile); */
6867           add_psymbol_to_list (actual_name, strlen (actual_name),
6868                                built_actual_name != NULL,
6869                                VAR_DOMAIN, LOC_BLOCK,
6870                                &objfile->global_psymbols,
6871                                0, addr, cu->language, objfile);
6872         }
6873       else
6874         {
6875           /* prim_record_minimal_symbol (actual_name, addr, mst_file_text,
6876              objfile); */
6877           add_psymbol_to_list (actual_name, strlen (actual_name),
6878                                built_actual_name != NULL,
6879                                VAR_DOMAIN, LOC_BLOCK,
6880                                &objfile->static_psymbols,
6881                                0, addr, cu->language, objfile);
6882         }
6883       break;
6884     case DW_TAG_constant:
6885       {
6886         struct psymbol_allocation_list *list;
6887
6888         if (pdi->is_external)
6889           list = &objfile->global_psymbols;
6890         else
6891           list = &objfile->static_psymbols;
6892         add_psymbol_to_list (actual_name, strlen (actual_name),
6893                              built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
6894                              list, 0, 0, cu->language, objfile);
6895       }
6896       break;
6897     case DW_TAG_variable:
6898       if (pdi->d.locdesc)
6899         addr = decode_locdesc (pdi->d.locdesc, cu);
6900
6901       if (pdi->d.locdesc
6902           && addr == 0
6903           && !dwarf2_per_objfile->has_section_at_zero)
6904         {
6905           /* A global or static variable may also have been stripped
6906              out by the linker if unused, in which case its address
6907              will be nullified; do not add such variables into partial
6908              symbol table then.  */
6909         }
6910       else if (pdi->is_external)
6911         {
6912           /* Global Variable.
6913              Don't enter into the minimal symbol tables as there is
6914              a minimal symbol table entry from the ELF symbols already.
6915              Enter into partial symbol table if it has a location
6916              descriptor or a type.
6917              If the location descriptor is missing, new_symbol will create
6918              a LOC_UNRESOLVED symbol, the address of the variable will then
6919              be determined from the minimal symbol table whenever the variable
6920              is referenced.
6921              The address for the partial symbol table entry is not
6922              used by GDB, but it comes in handy for debugging partial symbol
6923              table building.  */
6924
6925           if (pdi->d.locdesc || pdi->has_type)
6926             add_psymbol_to_list (actual_name, strlen (actual_name),
6927                                  built_actual_name != NULL,
6928                                  VAR_DOMAIN, LOC_STATIC,
6929                                  &objfile->global_psymbols,
6930                                  0, addr + baseaddr,
6931                                  cu->language, objfile);
6932         }
6933       else
6934         {
6935           /* Static Variable.  Skip symbols without location descriptors.  */
6936           if (pdi->d.locdesc == NULL)
6937             {
6938               xfree (built_actual_name);
6939               return;
6940             }
6941           /* prim_record_minimal_symbol (actual_name, addr + baseaddr,
6942              mst_file_data, objfile); */
6943           add_psymbol_to_list (actual_name, strlen (actual_name),
6944                                built_actual_name != NULL,
6945                                VAR_DOMAIN, LOC_STATIC,
6946                                &objfile->static_psymbols,
6947                                0, addr + baseaddr,
6948                                cu->language, objfile);
6949         }
6950       break;
6951     case DW_TAG_typedef:
6952     case DW_TAG_base_type:
6953     case DW_TAG_subrange_type:
6954       add_psymbol_to_list (actual_name, strlen (actual_name),
6955                            built_actual_name != NULL,
6956                            VAR_DOMAIN, LOC_TYPEDEF,
6957                            &objfile->static_psymbols,
6958                            0, (CORE_ADDR) 0, cu->language, objfile);
6959       break;
6960     case DW_TAG_imported_declaration:
6961     case DW_TAG_namespace:
6962       add_psymbol_to_list (actual_name, strlen (actual_name),
6963                            built_actual_name != NULL,
6964                            VAR_DOMAIN, LOC_TYPEDEF,
6965                            &objfile->global_psymbols,
6966                            0, (CORE_ADDR) 0, cu->language, objfile);
6967       break;
6968     case DW_TAG_module:
6969       add_psymbol_to_list (actual_name, strlen (actual_name),
6970                            built_actual_name != NULL,
6971                            MODULE_DOMAIN, LOC_TYPEDEF,
6972                            &objfile->global_psymbols,
6973                            0, (CORE_ADDR) 0, cu->language, objfile);
6974       break;
6975     case DW_TAG_class_type:
6976     case DW_TAG_interface_type:
6977     case DW_TAG_structure_type:
6978     case DW_TAG_union_type:
6979     case DW_TAG_enumeration_type:
6980       /* Skip external references.  The DWARF standard says in the section
6981          about "Structure, Union, and Class Type Entries": "An incomplete
6982          structure, union or class type is represented by a structure,
6983          union or class entry that does not have a byte size attribute
6984          and that has a DW_AT_declaration attribute."  */
6985       if (!pdi->has_byte_size && pdi->is_declaration)
6986         {
6987           xfree (built_actual_name);
6988           return;
6989         }
6990
6991       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
6992          static vs. global.  */
6993       add_psymbol_to_list (actual_name, strlen (actual_name),
6994                            built_actual_name != NULL,
6995                            STRUCT_DOMAIN, LOC_TYPEDEF,
6996                            (cu->language == language_cplus
6997                             || cu->language == language_java)
6998                            ? &objfile->global_psymbols
6999                            : &objfile->static_psymbols,
7000                            0, (CORE_ADDR) 0, cu->language, objfile);
7001
7002       break;
7003     case DW_TAG_enumerator:
7004       add_psymbol_to_list (actual_name, strlen (actual_name),
7005                            built_actual_name != NULL,
7006                            VAR_DOMAIN, LOC_CONST,
7007                            (cu->language == language_cplus
7008                             || cu->language == language_java)
7009                            ? &objfile->global_psymbols
7010                            : &objfile->static_psymbols,
7011                            0, (CORE_ADDR) 0, cu->language, objfile);
7012       break;
7013     default:
7014       break;
7015     }
7016
7017   xfree (built_actual_name);
7018 }
7019
7020 /* Read a partial die corresponding to a namespace; also, add a symbol
7021    corresponding to that namespace to the symbol table.  NAMESPACE is
7022    the name of the enclosing namespace.  */
7023
7024 static void
7025 add_partial_namespace (struct partial_die_info *pdi,
7026                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
7027                        int set_addrmap, struct dwarf2_cu *cu)
7028 {
7029   /* Add a symbol for the namespace.  */
7030
7031   add_partial_symbol (pdi, cu);
7032
7033   /* Now scan partial symbols in that namespace.  */
7034
7035   if (pdi->has_children)
7036     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
7037 }
7038
7039 /* Read a partial die corresponding to a Fortran module.  */
7040
7041 static void
7042 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
7043                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
7044 {
7045   /* Add a symbol for the namespace.  */
7046
7047   add_partial_symbol (pdi, cu);
7048
7049   /* Now scan partial symbols in that module.  */
7050
7051   if (pdi->has_children)
7052     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
7053 }
7054
7055 /* Read a partial die corresponding to a subprogram and create a partial
7056    symbol for that subprogram.  When the CU language allows it, this
7057    routine also defines a partial symbol for each nested subprogram
7058    that this subprogram contains.  If SET_ADDRMAP is true, record the
7059    covered ranges in the addrmap.  Set *LOWPC and *HIGHPC to the lowest
7060    and highest PC values found in PDI.
7061
7062    PDI may also be a lexical block, in which case we simply search
7063    recursively for subprograms defined inside that lexical block.
7064    Again, this is only performed when the CU language allows this
7065    type of definitions.  */
7066
7067 static void
7068 add_partial_subprogram (struct partial_die_info *pdi,
7069                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
7070                         int set_addrmap, struct dwarf2_cu *cu)
7071 {
7072   if (pdi->tag == DW_TAG_subprogram)
7073     {
7074       if (pdi->has_pc_info)
7075         {
7076           if (pdi->lowpc < *lowpc)
7077             *lowpc = pdi->lowpc;
7078           if (pdi->highpc > *highpc)
7079             *highpc = pdi->highpc;
7080           if (set_addrmap)
7081             {
7082               struct objfile *objfile = cu->objfile;
7083               struct gdbarch *gdbarch = get_objfile_arch (objfile);
7084               CORE_ADDR baseaddr;
7085               CORE_ADDR highpc;
7086               CORE_ADDR lowpc;
7087
7088               baseaddr = ANOFFSET (objfile->section_offsets,
7089                                    SECT_OFF_TEXT (objfile));
7090               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7091                                                   pdi->lowpc + baseaddr);
7092               highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7093                                                    pdi->highpc + baseaddr);
7094               addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
7095                                  cu->per_cu->v.psymtab);
7096             }
7097         }
7098
7099       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
7100         {
7101           if (!pdi->is_declaration)
7102             /* Ignore subprogram DIEs that do not have a name, they are
7103                illegal.  Do not emit a complaint at this point, we will
7104                do so when we convert this psymtab into a symtab.  */
7105             if (pdi->name)
7106               add_partial_symbol (pdi, cu);
7107         }
7108     }
7109
7110   if (! pdi->has_children)
7111     return;
7112
7113   if (cu->language == language_ada)
7114     {
7115       pdi = pdi->die_child;
7116       while (pdi != NULL)
7117         {
7118           fixup_partial_die (pdi, cu);
7119           if (pdi->tag == DW_TAG_subprogram
7120               || pdi->tag == DW_TAG_lexical_block)
7121             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
7122           pdi = pdi->die_sibling;
7123         }
7124     }
7125 }
7126
7127 /* Read a partial die corresponding to an enumeration type.  */
7128
7129 static void
7130 add_partial_enumeration (struct partial_die_info *enum_pdi,
7131                          struct dwarf2_cu *cu)
7132 {
7133   struct partial_die_info *pdi;
7134
7135   if (enum_pdi->name != NULL)
7136     add_partial_symbol (enum_pdi, cu);
7137
7138   pdi = enum_pdi->die_child;
7139   while (pdi)
7140     {
7141       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
7142         complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
7143       else
7144         add_partial_symbol (pdi, cu);
7145       pdi = pdi->die_sibling;
7146     }
7147 }
7148
7149 /* Return the initial uleb128 in the die at INFO_PTR.  */
7150
7151 static unsigned int
7152 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
7153 {
7154   unsigned int bytes_read;
7155
7156   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7157 }
7158
7159 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
7160    Return the corresponding abbrev, or NULL if the number is zero (indicating
7161    an empty DIE).  In either case *BYTES_READ will be set to the length of
7162    the initial number.  */
7163
7164 static struct abbrev_info *
7165 peek_die_abbrev (const gdb_byte *info_ptr, unsigned int *bytes_read,
7166                  struct dwarf2_cu *cu)
7167 {
7168   bfd *abfd = cu->objfile->obfd;
7169   unsigned int abbrev_number;
7170   struct abbrev_info *abbrev;
7171
7172   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
7173
7174   if (abbrev_number == 0)
7175     return NULL;
7176
7177   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
7178   if (!abbrev)
7179     {
7180       error (_("Dwarf Error: Could not find abbrev number %d in %s"
7181                " at offset 0x%x [in module %s]"),
7182              abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
7183              cu->header.offset.sect_off, bfd_get_filename (abfd));
7184     }
7185
7186   return abbrev;
7187 }
7188
7189 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7190    Returns a pointer to the end of a series of DIEs, terminated by an empty
7191    DIE.  Any children of the skipped DIEs will also be skipped.  */
7192
7193 static const gdb_byte *
7194 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
7195 {
7196   struct dwarf2_cu *cu = reader->cu;
7197   struct abbrev_info *abbrev;
7198   unsigned int bytes_read;
7199
7200   while (1)
7201     {
7202       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
7203       if (abbrev == NULL)
7204         return info_ptr + bytes_read;
7205       else
7206         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
7207     }
7208 }
7209
7210 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7211    INFO_PTR should point just after the initial uleb128 of a DIE, and the
7212    abbrev corresponding to that skipped uleb128 should be passed in
7213    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
7214    children.  */
7215
7216 static const gdb_byte *
7217 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
7218               struct abbrev_info *abbrev)
7219 {
7220   unsigned int bytes_read;
7221   struct attribute attr;
7222   bfd *abfd = reader->abfd;
7223   struct dwarf2_cu *cu = reader->cu;
7224   const gdb_byte *buffer = reader->buffer;
7225   const gdb_byte *buffer_end = reader->buffer_end;
7226   const gdb_byte *start_info_ptr = info_ptr;
7227   unsigned int form, i;
7228
7229   for (i = 0; i < abbrev->num_attrs; i++)
7230     {
7231       /* The only abbrev we care about is DW_AT_sibling.  */
7232       if (abbrev->attrs[i].name == DW_AT_sibling)
7233         {
7234           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
7235           if (attr.form == DW_FORM_ref_addr)
7236             complaint (&symfile_complaints,
7237                        _("ignoring absolute DW_AT_sibling"));
7238           else
7239             {
7240               unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
7241               const gdb_byte *sibling_ptr = buffer + off;
7242
7243               if (sibling_ptr < info_ptr)
7244                 complaint (&symfile_complaints,
7245                            _("DW_AT_sibling points backwards"));
7246               else if (sibling_ptr > reader->buffer_end)
7247                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
7248               else
7249                 return sibling_ptr;
7250             }
7251         }
7252
7253       /* If it isn't DW_AT_sibling, skip this attribute.  */
7254       form = abbrev->attrs[i].form;
7255     skip_attribute:
7256       switch (form)
7257         {
7258         case DW_FORM_ref_addr:
7259           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
7260              and later it is offset sized.  */
7261           if (cu->header.version == 2)
7262             info_ptr += cu->header.addr_size;
7263           else
7264             info_ptr += cu->header.offset_size;
7265           break;
7266         case DW_FORM_GNU_ref_alt:
7267           info_ptr += cu->header.offset_size;
7268           break;
7269         case DW_FORM_addr:
7270           info_ptr += cu->header.addr_size;
7271           break;
7272         case DW_FORM_data1:
7273         case DW_FORM_ref1:
7274         case DW_FORM_flag:
7275           info_ptr += 1;
7276           break;
7277         case DW_FORM_flag_present:
7278           break;
7279         case DW_FORM_data2:
7280         case DW_FORM_ref2:
7281           info_ptr += 2;
7282           break;
7283         case DW_FORM_data4:
7284         case DW_FORM_ref4:
7285           info_ptr += 4;
7286           break;
7287         case DW_FORM_data8:
7288         case DW_FORM_ref8:
7289         case DW_FORM_ref_sig8:
7290           info_ptr += 8;
7291           break;
7292         case DW_FORM_string:
7293           read_direct_string (abfd, info_ptr, &bytes_read);
7294           info_ptr += bytes_read;
7295           break;
7296         case DW_FORM_sec_offset:
7297         case DW_FORM_strp:
7298         case DW_FORM_GNU_strp_alt:
7299           info_ptr += cu->header.offset_size;
7300           break;
7301         case DW_FORM_exprloc:
7302         case DW_FORM_block:
7303           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7304           info_ptr += bytes_read;
7305           break;
7306         case DW_FORM_block1:
7307           info_ptr += 1 + read_1_byte (abfd, info_ptr);
7308           break;
7309         case DW_FORM_block2:
7310           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
7311           break;
7312         case DW_FORM_block4:
7313           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
7314           break;
7315         case DW_FORM_sdata:
7316         case DW_FORM_udata:
7317         case DW_FORM_ref_udata:
7318         case DW_FORM_GNU_addr_index:
7319         case DW_FORM_GNU_str_index:
7320           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
7321           break;
7322         case DW_FORM_indirect:
7323           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7324           info_ptr += bytes_read;
7325           /* We need to continue parsing from here, so just go back to
7326              the top.  */
7327           goto skip_attribute;
7328
7329         default:
7330           error (_("Dwarf Error: Cannot handle %s "
7331                    "in DWARF reader [in module %s]"),
7332                  dwarf_form_name (form),
7333                  bfd_get_filename (abfd));
7334         }
7335     }
7336
7337   if (abbrev->has_children)
7338     return skip_children (reader, info_ptr);
7339   else
7340     return info_ptr;
7341 }
7342
7343 /* Locate ORIG_PDI's sibling.
7344    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
7345
7346 static const gdb_byte *
7347 locate_pdi_sibling (const struct die_reader_specs *reader,
7348                     struct partial_die_info *orig_pdi,
7349                     const gdb_byte *info_ptr)
7350 {
7351   /* Do we know the sibling already?  */
7352
7353   if (orig_pdi->sibling)
7354     return orig_pdi->sibling;
7355
7356   /* Are there any children to deal with?  */
7357
7358   if (!orig_pdi->has_children)
7359     return info_ptr;
7360
7361   /* Skip the children the long way.  */
7362
7363   return skip_children (reader, info_ptr);
7364 }
7365
7366 /* Expand this partial symbol table into a full symbol table.  SELF is
7367    not NULL.  */
7368
7369 static void
7370 dwarf2_read_symtab (struct partial_symtab *self,
7371                     struct objfile *objfile)
7372 {
7373   if (self->readin)
7374     {
7375       warning (_("bug: psymtab for %s is already read in."),
7376                self->filename);
7377     }
7378   else
7379     {
7380       if (info_verbose)
7381         {
7382           printf_filtered (_("Reading in symbols for %s..."),
7383                            self->filename);
7384           gdb_flush (gdb_stdout);
7385         }
7386
7387       /* Restore our global data.  */
7388       dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
7389
7390       /* If this psymtab is constructed from a debug-only objfile, the
7391          has_section_at_zero flag will not necessarily be correct.  We
7392          can get the correct value for this flag by looking at the data
7393          associated with the (presumably stripped) associated objfile.  */
7394       if (objfile->separate_debug_objfile_backlink)
7395         {
7396           struct dwarf2_per_objfile *dpo_backlink
7397             = objfile_data (objfile->separate_debug_objfile_backlink,
7398                             dwarf2_objfile_data_key);
7399
7400           dwarf2_per_objfile->has_section_at_zero
7401             = dpo_backlink->has_section_at_zero;
7402         }
7403
7404       dwarf2_per_objfile->reading_partial_symbols = 0;
7405
7406       psymtab_to_symtab_1 (self);
7407
7408       /* Finish up the debug error message.  */
7409       if (info_verbose)
7410         printf_filtered (_("done.\n"));
7411     }
7412
7413   process_cu_includes ();
7414 }
7415 \f
7416 /* Reading in full CUs.  */
7417
7418 /* Add PER_CU to the queue.  */
7419
7420 static void
7421 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
7422                  enum language pretend_language)
7423 {
7424   struct dwarf2_queue_item *item;
7425
7426   per_cu->queued = 1;
7427   item = xmalloc (sizeof (*item));
7428   item->per_cu = per_cu;
7429   item->pretend_language = pretend_language;
7430   item->next = NULL;
7431
7432   if (dwarf2_queue == NULL)
7433     dwarf2_queue = item;
7434   else
7435     dwarf2_queue_tail->next = item;
7436
7437   dwarf2_queue_tail = item;
7438 }
7439
7440 /* If PER_CU is not yet queued, add it to the queue.
7441    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
7442    dependency.
7443    The result is non-zero if PER_CU was queued, otherwise the result is zero
7444    meaning either PER_CU is already queued or it is already loaded.
7445
7446    N.B. There is an invariant here that if a CU is queued then it is loaded.
7447    The caller is required to load PER_CU if we return non-zero.  */
7448
7449 static int
7450 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
7451                        struct dwarf2_per_cu_data *per_cu,
7452                        enum language pretend_language)
7453 {
7454   /* We may arrive here during partial symbol reading, if we need full
7455      DIEs to process an unusual case (e.g. template arguments).  Do
7456      not queue PER_CU, just tell our caller to load its DIEs.  */
7457   if (dwarf2_per_objfile->reading_partial_symbols)
7458     {
7459       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
7460         return 1;
7461       return 0;
7462     }
7463
7464   /* Mark the dependence relation so that we don't flush PER_CU
7465      too early.  */
7466   if (dependent_cu != NULL)
7467     dwarf2_add_dependence (dependent_cu, per_cu);
7468
7469   /* If it's already on the queue, we have nothing to do.  */
7470   if (per_cu->queued)
7471     return 0;
7472
7473   /* If the compilation unit is already loaded, just mark it as
7474      used.  */
7475   if (per_cu->cu != NULL)
7476     {
7477       per_cu->cu->last_used = 0;
7478       return 0;
7479     }
7480
7481   /* Add it to the queue.  */
7482   queue_comp_unit (per_cu, pretend_language);
7483
7484   return 1;
7485 }
7486
7487 /* Process the queue.  */
7488
7489 static void
7490 process_queue (void)
7491 {
7492   struct dwarf2_queue_item *item, *next_item;
7493
7494   if (dwarf2_read_debug)
7495     {
7496       fprintf_unfiltered (gdb_stdlog,
7497                           "Expanding one or more symtabs of objfile %s ...\n",
7498                           objfile_name (dwarf2_per_objfile->objfile));
7499     }
7500
7501   /* The queue starts out with one item, but following a DIE reference
7502      may load a new CU, adding it to the end of the queue.  */
7503   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
7504     {
7505       if (dwarf2_per_objfile->using_index
7506           ? !item->per_cu->v.quick->compunit_symtab
7507           : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
7508         {
7509           struct dwarf2_per_cu_data *per_cu = item->per_cu;
7510           unsigned int debug_print_threshold;
7511           char buf[100];
7512
7513           if (per_cu->is_debug_types)
7514             {
7515               struct signatured_type *sig_type =
7516                 (struct signatured_type *) per_cu;
7517
7518               sprintf (buf, "TU %s at offset 0x%x",
7519                        hex_string (sig_type->signature),
7520                        per_cu->offset.sect_off);
7521               /* There can be 100s of TUs.
7522                  Only print them in verbose mode.  */
7523               debug_print_threshold = 2;
7524             }
7525           else
7526             {
7527               sprintf (buf, "CU at offset 0x%x", per_cu->offset.sect_off);
7528               debug_print_threshold = 1;
7529             }
7530
7531           if (dwarf2_read_debug >= debug_print_threshold)
7532             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
7533
7534           if (per_cu->is_debug_types)
7535             process_full_type_unit (per_cu, item->pretend_language);
7536           else
7537             process_full_comp_unit (per_cu, item->pretend_language);
7538
7539           if (dwarf2_read_debug >= debug_print_threshold)
7540             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
7541         }
7542
7543       item->per_cu->queued = 0;
7544       next_item = item->next;
7545       xfree (item);
7546     }
7547
7548   dwarf2_queue_tail = NULL;
7549
7550   if (dwarf2_read_debug)
7551     {
7552       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
7553                           objfile_name (dwarf2_per_objfile->objfile));
7554     }
7555 }
7556
7557 /* Free all allocated queue entries.  This function only releases anything if
7558    an error was thrown; if the queue was processed then it would have been
7559    freed as we went along.  */
7560
7561 static void
7562 dwarf2_release_queue (void *dummy)
7563 {
7564   struct dwarf2_queue_item *item, *last;
7565
7566   item = dwarf2_queue;
7567   while (item)
7568     {
7569       /* Anything still marked queued is likely to be in an
7570          inconsistent state, so discard it.  */
7571       if (item->per_cu->queued)
7572         {
7573           if (item->per_cu->cu != NULL)
7574             free_one_cached_comp_unit (item->per_cu);
7575           item->per_cu->queued = 0;
7576         }
7577
7578       last = item;
7579       item = item->next;
7580       xfree (last);
7581     }
7582
7583   dwarf2_queue = dwarf2_queue_tail = NULL;
7584 }
7585
7586 /* Read in full symbols for PST, and anything it depends on.  */
7587
7588 static void
7589 psymtab_to_symtab_1 (struct partial_symtab *pst)
7590 {
7591   struct dwarf2_per_cu_data *per_cu;
7592   int i;
7593
7594   if (pst->readin)
7595     return;
7596
7597   for (i = 0; i < pst->number_of_dependencies; i++)
7598     if (!pst->dependencies[i]->readin
7599         && pst->dependencies[i]->user == NULL)
7600       {
7601         /* Inform about additional files that need to be read in.  */
7602         if (info_verbose)
7603           {
7604             /* FIXME: i18n: Need to make this a single string.  */
7605             fputs_filtered (" ", gdb_stdout);
7606             wrap_here ("");
7607             fputs_filtered ("and ", gdb_stdout);
7608             wrap_here ("");
7609             printf_filtered ("%s...", pst->dependencies[i]->filename);
7610             wrap_here ("");     /* Flush output.  */
7611             gdb_flush (gdb_stdout);
7612           }
7613         psymtab_to_symtab_1 (pst->dependencies[i]);
7614       }
7615
7616   per_cu = pst->read_symtab_private;
7617
7618   if (per_cu == NULL)
7619     {
7620       /* It's an include file, no symbols to read for it.
7621          Everything is in the parent symtab.  */
7622       pst->readin = 1;
7623       return;
7624     }
7625
7626   dw2_do_instantiate_symtab (per_cu);
7627 }
7628
7629 /* Trivial hash function for die_info: the hash value of a DIE
7630    is its offset in .debug_info for this objfile.  */
7631
7632 static hashval_t
7633 die_hash (const void *item)
7634 {
7635   const struct die_info *die = item;
7636
7637   return die->offset.sect_off;
7638 }
7639
7640 /* Trivial comparison function for die_info structures: two DIEs
7641    are equal if they have the same offset.  */
7642
7643 static int
7644 die_eq (const void *item_lhs, const void *item_rhs)
7645 {
7646   const struct die_info *die_lhs = item_lhs;
7647   const struct die_info *die_rhs = item_rhs;
7648
7649   return die_lhs->offset.sect_off == die_rhs->offset.sect_off;
7650 }
7651
7652 /* die_reader_func for load_full_comp_unit.
7653    This is identical to read_signatured_type_reader,
7654    but is kept separate for now.  */
7655
7656 static void
7657 load_full_comp_unit_reader (const struct die_reader_specs *reader,
7658                             const gdb_byte *info_ptr,
7659                             struct die_info *comp_unit_die,
7660                             int has_children,
7661                             void *data)
7662 {
7663   struct dwarf2_cu *cu = reader->cu;
7664   enum language *language_ptr = data;
7665
7666   gdb_assert (cu->die_hash == NULL);
7667   cu->die_hash =
7668     htab_create_alloc_ex (cu->header.length / 12,
7669                           die_hash,
7670                           die_eq,
7671                           NULL,
7672                           &cu->comp_unit_obstack,
7673                           hashtab_obstack_allocate,
7674                           dummy_obstack_deallocate);
7675
7676   if (has_children)
7677     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
7678                                                   &info_ptr, comp_unit_die);
7679   cu->dies = comp_unit_die;
7680   /* comp_unit_die is not stored in die_hash, no need.  */
7681
7682   /* We try not to read any attributes in this function, because not
7683      all CUs needed for references have been loaded yet, and symbol
7684      table processing isn't initialized.  But we have to set the CU language,
7685      or we won't be able to build types correctly.
7686      Similarly, if we do not read the producer, we can not apply
7687      producer-specific interpretation.  */
7688   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
7689 }
7690
7691 /* Load the DIEs associated with PER_CU into memory.  */
7692
7693 static void
7694 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
7695                      enum language pretend_language)
7696 {
7697   gdb_assert (! this_cu->is_debug_types);
7698
7699   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
7700                            load_full_comp_unit_reader, &pretend_language);
7701 }
7702
7703 /* Add a DIE to the delayed physname list.  */
7704
7705 static void
7706 add_to_method_list (struct type *type, int fnfield_index, int index,
7707                     const char *name, struct die_info *die,
7708                     struct dwarf2_cu *cu)
7709 {
7710   struct delayed_method_info mi;
7711   mi.type = type;
7712   mi.fnfield_index = fnfield_index;
7713   mi.index = index;
7714   mi.name = name;
7715   mi.die = die;
7716   VEC_safe_push (delayed_method_info, cu->method_list, &mi);
7717 }
7718
7719 /* A cleanup for freeing the delayed method list.  */
7720
7721 static void
7722 free_delayed_list (void *ptr)
7723 {
7724   struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
7725   if (cu->method_list != NULL)
7726     {
7727       VEC_free (delayed_method_info, cu->method_list);
7728       cu->method_list = NULL;
7729     }
7730 }
7731
7732 /* Compute the physnames of any methods on the CU's method list.
7733
7734    The computation of method physnames is delayed in order to avoid the
7735    (bad) condition that one of the method's formal parameters is of an as yet
7736    incomplete type.  */
7737
7738 static void
7739 compute_delayed_physnames (struct dwarf2_cu *cu)
7740 {
7741   int i;
7742   struct delayed_method_info *mi;
7743   for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
7744     {
7745       const char *physname;
7746       struct fn_fieldlist *fn_flp
7747         = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
7748       physname = dwarf2_physname (mi->name, mi->die, cu);
7749       TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi->index)
7750         = physname ? physname : "";
7751     }
7752 }
7753
7754 /* Go objects should be embedded in a DW_TAG_module DIE,
7755    and it's not clear if/how imported objects will appear.
7756    To keep Go support simple until that's worked out,
7757    go back through what we've read and create something usable.
7758    We could do this while processing each DIE, and feels kinda cleaner,
7759    but that way is more invasive.
7760    This is to, for example, allow the user to type "p var" or "b main"
7761    without having to specify the package name, and allow lookups
7762    of module.object to work in contexts that use the expression
7763    parser.  */
7764
7765 static void
7766 fixup_go_packaging (struct dwarf2_cu *cu)
7767 {
7768   char *package_name = NULL;
7769   struct pending *list;
7770   int i;
7771
7772   for (list = global_symbols; list != NULL; list = list->next)
7773     {
7774       for (i = 0; i < list->nsyms; ++i)
7775         {
7776           struct symbol *sym = list->symbol[i];
7777
7778           if (SYMBOL_LANGUAGE (sym) == language_go
7779               && SYMBOL_CLASS (sym) == LOC_BLOCK)
7780             {
7781               char *this_package_name = go_symbol_package_name (sym);
7782
7783               if (this_package_name == NULL)
7784                 continue;
7785               if (package_name == NULL)
7786                 package_name = this_package_name;
7787               else
7788                 {
7789                   if (strcmp (package_name, this_package_name) != 0)
7790                     complaint (&symfile_complaints,
7791                                _("Symtab %s has objects from two different Go packages: %s and %s"),
7792                                (symbol_symtab (sym) != NULL
7793                                 ? symtab_to_filename_for_display
7794                                     (symbol_symtab (sym))
7795                                 : objfile_name (cu->objfile)),
7796                                this_package_name, package_name);
7797                   xfree (this_package_name);
7798                 }
7799             }
7800         }
7801     }
7802
7803   if (package_name != NULL)
7804     {
7805       struct objfile *objfile = cu->objfile;
7806       const char *saved_package_name
7807         = obstack_copy0 (&objfile->per_bfd->storage_obstack,
7808                          package_name,
7809                          strlen (package_name));
7810       struct type *type = init_type (TYPE_CODE_MODULE, 0, 0,
7811                                      saved_package_name, objfile);
7812       struct symbol *sym;
7813
7814       TYPE_TAG_NAME (type) = TYPE_NAME (type);
7815
7816       sym = allocate_symbol (objfile);
7817       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
7818       SYMBOL_SET_NAMES (sym, saved_package_name,
7819                         strlen (saved_package_name), 0, objfile);
7820       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
7821          e.g., "main" finds the "main" module and not C's main().  */
7822       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
7823       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
7824       SYMBOL_TYPE (sym) = type;
7825
7826       add_symbol_to_list (sym, &global_symbols);
7827
7828       xfree (package_name);
7829     }
7830 }
7831
7832 /* Return the symtab for PER_CU.  This works properly regardless of
7833    whether we're using the index or psymtabs.  */
7834
7835 static struct compunit_symtab *
7836 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
7837 {
7838   return (dwarf2_per_objfile->using_index
7839           ? per_cu->v.quick->compunit_symtab
7840           : per_cu->v.psymtab->compunit_symtab);
7841 }
7842
7843 /* A helper function for computing the list of all symbol tables
7844    included by PER_CU.  */
7845
7846 static void
7847 recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
7848                                 htab_t all_children, htab_t all_type_symtabs,
7849                                 struct dwarf2_per_cu_data *per_cu,
7850                                 struct compunit_symtab *immediate_parent)
7851 {
7852   void **slot;
7853   int ix;
7854   struct compunit_symtab *cust;
7855   struct dwarf2_per_cu_data *iter;
7856
7857   slot = htab_find_slot (all_children, per_cu, INSERT);
7858   if (*slot != NULL)
7859     {
7860       /* This inclusion and its children have been processed.  */
7861       return;
7862     }
7863
7864   *slot = per_cu;
7865   /* Only add a CU if it has a symbol table.  */
7866   cust = get_compunit_symtab (per_cu);
7867   if (cust != NULL)
7868     {
7869       /* If this is a type unit only add its symbol table if we haven't
7870          seen it yet (type unit per_cu's can share symtabs).  */
7871       if (per_cu->is_debug_types)
7872         {
7873           slot = htab_find_slot (all_type_symtabs, cust, INSERT);
7874           if (*slot == NULL)
7875             {
7876               *slot = cust;
7877               VEC_safe_push (compunit_symtab_ptr, *result, cust);
7878               if (cust->user == NULL)
7879                 cust->user = immediate_parent;
7880             }
7881         }
7882       else
7883         {
7884           VEC_safe_push (compunit_symtab_ptr, *result, cust);
7885           if (cust->user == NULL)
7886             cust->user = immediate_parent;
7887         }
7888     }
7889
7890   for (ix = 0;
7891        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
7892        ++ix)
7893     {
7894       recursively_compute_inclusions (result, all_children,
7895                                       all_type_symtabs, iter, cust);
7896     }
7897 }
7898
7899 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
7900    PER_CU.  */
7901
7902 static void
7903 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
7904 {
7905   gdb_assert (! per_cu->is_debug_types);
7906
7907   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
7908     {
7909       int ix, len;
7910       struct dwarf2_per_cu_data *per_cu_iter;
7911       struct compunit_symtab *compunit_symtab_iter;
7912       VEC (compunit_symtab_ptr) *result_symtabs = NULL;
7913       htab_t all_children, all_type_symtabs;
7914       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
7915
7916       /* If we don't have a symtab, we can just skip this case.  */
7917       if (cust == NULL)
7918         return;
7919
7920       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7921                                         NULL, xcalloc, xfree);
7922       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7923                                             NULL, xcalloc, xfree);
7924
7925       for (ix = 0;
7926            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
7927                         ix, per_cu_iter);
7928            ++ix)
7929         {
7930           recursively_compute_inclusions (&result_symtabs, all_children,
7931                                           all_type_symtabs, per_cu_iter,
7932                                           cust);
7933         }
7934
7935       /* Now we have a transitive closure of all the included symtabs.  */
7936       len = VEC_length (compunit_symtab_ptr, result_symtabs);
7937       cust->includes
7938         = obstack_alloc (&dwarf2_per_objfile->objfile->objfile_obstack,
7939                          (len + 1) * sizeof (struct symtab *));
7940       for (ix = 0;
7941            VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
7942                         compunit_symtab_iter);
7943            ++ix)
7944         cust->includes[ix] = compunit_symtab_iter;
7945       cust->includes[len] = NULL;
7946
7947       VEC_free (compunit_symtab_ptr, result_symtabs);
7948       htab_delete (all_children);
7949       htab_delete (all_type_symtabs);
7950     }
7951 }
7952
7953 /* Compute the 'includes' field for the symtabs of all the CUs we just
7954    read.  */
7955
7956 static void
7957 process_cu_includes (void)
7958 {
7959   int ix;
7960   struct dwarf2_per_cu_data *iter;
7961
7962   for (ix = 0;
7963        VEC_iterate (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus,
7964                     ix, iter);
7965        ++ix)
7966     {
7967       if (! iter->is_debug_types)
7968         compute_compunit_symtab_includes (iter);
7969     }
7970
7971   VEC_free (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus);
7972 }
7973
7974 /* Generate full symbol information for PER_CU, whose DIEs have
7975    already been loaded into memory.  */
7976
7977 static void
7978 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
7979                         enum language pretend_language)
7980 {
7981   struct dwarf2_cu *cu = per_cu->cu;
7982   struct objfile *objfile = per_cu->objfile;
7983   struct gdbarch *gdbarch = get_objfile_arch (objfile);
7984   CORE_ADDR lowpc, highpc;
7985   struct compunit_symtab *cust;
7986   struct cleanup *back_to, *delayed_list_cleanup;
7987   CORE_ADDR baseaddr;
7988   struct block *static_block;
7989   CORE_ADDR addr;
7990
7991   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
7992
7993   buildsym_init ();
7994   back_to = make_cleanup (really_free_pendings, NULL);
7995   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
7996
7997   cu->list_in_scope = &file_symbols;
7998
7999   cu->language = pretend_language;
8000   cu->language_defn = language_def (cu->language);
8001
8002   /* Do line number decoding in read_file_scope () */
8003   process_die (cu->dies, cu);
8004
8005   /* For now fudge the Go package.  */
8006   if (cu->language == language_go)
8007     fixup_go_packaging (cu);
8008
8009   /* Now that we have processed all the DIEs in the CU, all the types 
8010      should be complete, and it should now be safe to compute all of the
8011      physnames.  */
8012   compute_delayed_physnames (cu);
8013   do_cleanups (delayed_list_cleanup);
8014
8015   /* Some compilers don't define a DW_AT_high_pc attribute for the
8016      compilation unit.  If the DW_AT_high_pc is missing, synthesize
8017      it, by scanning the DIE's below the compilation unit.  */
8018   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
8019
8020   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
8021   static_block = end_symtab_get_static_block (addr, 0, 1);
8022
8023   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
8024      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
8025      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
8026      addrmap to help ensure it has an accurate map of pc values belonging to
8027      this comp unit.  */
8028   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
8029
8030   cust = end_symtab_from_static_block (static_block,
8031                                        SECT_OFF_TEXT (objfile), 0);
8032
8033   if (cust != NULL)
8034     {
8035       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
8036
8037       /* Set symtab language to language from DW_AT_language.  If the
8038          compilation is from a C file generated by language preprocessors, do
8039          not set the language if it was already deduced by start_subfile.  */
8040       if (!(cu->language == language_c
8041             && COMPUNIT_FILETABS (cust)->language != language_c))
8042         COMPUNIT_FILETABS (cust)->language = cu->language;
8043
8044       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
8045          produce DW_AT_location with location lists but it can be possibly
8046          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
8047          there were bugs in prologue debug info, fixed later in GCC-4.5
8048          by "unwind info for epilogues" patch (which is not directly related).
8049
8050          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
8051          needed, it would be wrong due to missing DW_AT_producer there.
8052
8053          Still one can confuse GDB by using non-standard GCC compilation
8054          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
8055          */ 
8056       if (cu->has_loclist && gcc_4_minor >= 5)
8057         cust->locations_valid = 1;
8058
8059       if (gcc_4_minor >= 5)
8060         cust->epilogue_unwind_valid = 1;
8061
8062       cust->call_site_htab = cu->call_site_htab;
8063     }
8064
8065   if (dwarf2_per_objfile->using_index)
8066     per_cu->v.quick->compunit_symtab = cust;
8067   else
8068     {
8069       struct partial_symtab *pst = per_cu->v.psymtab;
8070       pst->compunit_symtab = cust;
8071       pst->readin = 1;
8072     }
8073
8074   /* Push it for inclusion processing later.  */
8075   VEC_safe_push (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus, per_cu);
8076
8077   do_cleanups (back_to);
8078 }
8079
8080 /* Generate full symbol information for type unit PER_CU, whose DIEs have
8081    already been loaded into memory.  */
8082
8083 static void
8084 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
8085                         enum language pretend_language)
8086 {
8087   struct dwarf2_cu *cu = per_cu->cu;
8088   struct objfile *objfile = per_cu->objfile;
8089   struct compunit_symtab *cust;
8090   struct cleanup *back_to, *delayed_list_cleanup;
8091   struct signatured_type *sig_type;
8092
8093   gdb_assert (per_cu->is_debug_types);
8094   sig_type = (struct signatured_type *) per_cu;
8095
8096   buildsym_init ();
8097   back_to = make_cleanup (really_free_pendings, NULL);
8098   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
8099
8100   cu->list_in_scope = &file_symbols;
8101
8102   cu->language = pretend_language;
8103   cu->language_defn = language_def (cu->language);
8104
8105   /* The symbol tables are set up in read_type_unit_scope.  */
8106   process_die (cu->dies, cu);
8107
8108   /* For now fudge the Go package.  */
8109   if (cu->language == language_go)
8110     fixup_go_packaging (cu);
8111
8112   /* Now that we have processed all the DIEs in the CU, all the types 
8113      should be complete, and it should now be safe to compute all of the
8114      physnames.  */
8115   compute_delayed_physnames (cu);
8116   do_cleanups (delayed_list_cleanup);
8117
8118   /* TUs share symbol tables.
8119      If this is the first TU to use this symtab, complete the construction
8120      of it with end_expandable_symtab.  Otherwise, complete the addition of
8121      this TU's symbols to the existing symtab.  */
8122   if (sig_type->type_unit_group->compunit_symtab == NULL)
8123     {
8124       cust = end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
8125       sig_type->type_unit_group->compunit_symtab = cust;
8126
8127       if (cust != NULL)
8128         {
8129           /* Set symtab language to language from DW_AT_language.  If the
8130              compilation is from a C file generated by language preprocessors,
8131              do not set the language if it was already deduced by
8132              start_subfile.  */
8133           if (!(cu->language == language_c
8134                 && COMPUNIT_FILETABS (cust)->language != language_c))
8135             COMPUNIT_FILETABS (cust)->language = cu->language;
8136         }
8137     }
8138   else
8139     {
8140       augment_type_symtab ();
8141       cust = sig_type->type_unit_group->compunit_symtab;
8142     }
8143
8144   if (dwarf2_per_objfile->using_index)
8145     per_cu->v.quick->compunit_symtab = cust;
8146   else
8147     {
8148       struct partial_symtab *pst = per_cu->v.psymtab;
8149       pst->compunit_symtab = cust;
8150       pst->readin = 1;
8151     }
8152
8153   do_cleanups (back_to);
8154 }
8155
8156 /* Process an imported unit DIE.  */
8157
8158 static void
8159 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
8160 {
8161   struct attribute *attr;
8162
8163   /* For now we don't handle imported units in type units.  */
8164   if (cu->per_cu->is_debug_types)
8165     {
8166       error (_("Dwarf Error: DW_TAG_imported_unit is not"
8167                " supported in type units [in module %s]"),
8168              objfile_name (cu->objfile));
8169     }
8170
8171   attr = dwarf2_attr (die, DW_AT_import, cu);
8172   if (attr != NULL)
8173     {
8174       struct dwarf2_per_cu_data *per_cu;
8175       struct symtab *imported_symtab;
8176       sect_offset offset;
8177       int is_dwz;
8178
8179       offset = dwarf2_get_ref_die_offset (attr);
8180       is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
8181       per_cu = dwarf2_find_containing_comp_unit (offset, is_dwz, cu->objfile);
8182
8183       /* If necessary, add it to the queue and load its DIEs.  */
8184       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
8185         load_full_comp_unit (per_cu, cu->language);
8186
8187       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
8188                      per_cu);
8189     }
8190 }
8191
8192 /* Reset the in_process bit of a die.  */
8193
8194 static void
8195 reset_die_in_process (void *arg)
8196 {
8197   struct die_info *die = arg;
8198
8199   die->in_process = 0;
8200 }
8201
8202 /* Process a die and its children.  */
8203
8204 static void
8205 process_die (struct die_info *die, struct dwarf2_cu *cu)
8206 {
8207   struct cleanup *in_process;
8208
8209   /* We should only be processing those not already in process.  */
8210   gdb_assert (!die->in_process);
8211
8212   die->in_process = 1;
8213   in_process = make_cleanup (reset_die_in_process,die);
8214
8215   switch (die->tag)
8216     {
8217     case DW_TAG_padding:
8218       break;
8219     case DW_TAG_compile_unit:
8220     case DW_TAG_partial_unit:
8221       read_file_scope (die, cu);
8222       break;
8223     case DW_TAG_type_unit:
8224       read_type_unit_scope (die, cu);
8225       break;
8226     case DW_TAG_subprogram:
8227     case DW_TAG_inlined_subroutine:
8228       read_func_scope (die, cu);
8229       break;
8230     case DW_TAG_lexical_block:
8231     case DW_TAG_try_block:
8232     case DW_TAG_catch_block:
8233       read_lexical_block_scope (die, cu);
8234       break;
8235     case DW_TAG_GNU_call_site:
8236       read_call_site_scope (die, cu);
8237       break;
8238     case DW_TAG_class_type:
8239     case DW_TAG_interface_type:
8240     case DW_TAG_structure_type:
8241     case DW_TAG_union_type:
8242       process_structure_scope (die, cu);
8243       break;
8244     case DW_TAG_enumeration_type:
8245       process_enumeration_scope (die, cu);
8246       break;
8247
8248     /* These dies have a type, but processing them does not create
8249        a symbol or recurse to process the children.  Therefore we can
8250        read them on-demand through read_type_die.  */
8251     case DW_TAG_subroutine_type:
8252     case DW_TAG_set_type:
8253     case DW_TAG_array_type:
8254     case DW_TAG_pointer_type:
8255     case DW_TAG_ptr_to_member_type:
8256     case DW_TAG_reference_type:
8257     case DW_TAG_string_type:
8258       break;
8259
8260     case DW_TAG_base_type:
8261     case DW_TAG_subrange_type:
8262     case DW_TAG_typedef:
8263       /* Add a typedef symbol for the type definition, if it has a
8264          DW_AT_name.  */
8265       new_symbol (die, read_type_die (die, cu), cu);
8266       break;
8267     case DW_TAG_common_block:
8268       read_common_block (die, cu);
8269       break;
8270     case DW_TAG_common_inclusion:
8271       break;
8272     case DW_TAG_namespace:
8273       cu->processing_has_namespace_info = 1;
8274       read_namespace (die, cu);
8275       break;
8276     case DW_TAG_module:
8277       cu->processing_has_namespace_info = 1;
8278       read_module (die, cu);
8279       break;
8280     case DW_TAG_imported_declaration:
8281       cu->processing_has_namespace_info = 1;
8282       if (read_namespace_alias (die, cu))
8283         break;
8284       /* The declaration is not a global namespace alias: fall through.  */
8285     case DW_TAG_imported_module:
8286       cu->processing_has_namespace_info = 1;
8287       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
8288                                  || cu->language != language_fortran))
8289         complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
8290                    dwarf_tag_name (die->tag));
8291       read_import_statement (die, cu);
8292       break;
8293
8294     case DW_TAG_imported_unit:
8295       process_imported_unit_die (die, cu);
8296       break;
8297
8298     default:
8299       new_symbol (die, NULL, cu);
8300       break;
8301     }
8302
8303   do_cleanups (in_process);
8304 }
8305 \f
8306 /* DWARF name computation.  */
8307
8308 /* A helper function for dwarf2_compute_name which determines whether DIE
8309    needs to have the name of the scope prepended to the name listed in the
8310    die.  */
8311
8312 static int
8313 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
8314 {
8315   struct attribute *attr;
8316
8317   switch (die->tag)
8318     {
8319     case DW_TAG_namespace:
8320     case DW_TAG_typedef:
8321     case DW_TAG_class_type:
8322     case DW_TAG_interface_type:
8323     case DW_TAG_structure_type:
8324     case DW_TAG_union_type:
8325     case DW_TAG_enumeration_type:
8326     case DW_TAG_enumerator:
8327     case DW_TAG_subprogram:
8328     case DW_TAG_member:
8329     case DW_TAG_imported_declaration:
8330       return 1;
8331
8332     case DW_TAG_variable:
8333     case DW_TAG_constant:
8334       /* We only need to prefix "globally" visible variables.  These include
8335          any variable marked with DW_AT_external or any variable that
8336          lives in a namespace.  [Variables in anonymous namespaces
8337          require prefixing, but they are not DW_AT_external.]  */
8338
8339       if (dwarf2_attr (die, DW_AT_specification, cu))
8340         {
8341           struct dwarf2_cu *spec_cu = cu;
8342
8343           return die_needs_namespace (die_specification (die, &spec_cu),
8344                                       spec_cu);
8345         }
8346
8347       attr = dwarf2_attr (die, DW_AT_external, cu);
8348       if (attr == NULL && die->parent->tag != DW_TAG_namespace
8349           && die->parent->tag != DW_TAG_module)
8350         return 0;
8351       /* A variable in a lexical block of some kind does not need a
8352          namespace, even though in C++ such variables may be external
8353          and have a mangled name.  */
8354       if (die->parent->tag ==  DW_TAG_lexical_block
8355           || die->parent->tag ==  DW_TAG_try_block
8356           || die->parent->tag ==  DW_TAG_catch_block
8357           || die->parent->tag == DW_TAG_subprogram)
8358         return 0;
8359       return 1;
8360
8361     default:
8362       return 0;
8363     }
8364 }
8365
8366 /* Retrieve the last character from a mem_file.  */
8367
8368 static void
8369 do_ui_file_peek_last (void *object, const char *buffer, long length)
8370 {
8371   char *last_char_p = (char *) object;
8372
8373   if (length > 0)
8374     *last_char_p = buffer[length - 1];
8375 }
8376
8377 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
8378    compute the physname for the object, which include a method's:
8379    - formal parameters (C++/Java),
8380    - receiver type (Go),
8381    - return type (Java).
8382
8383    The term "physname" is a bit confusing.
8384    For C++, for example, it is the demangled name.
8385    For Go, for example, it's the mangled name.
8386
8387    For Ada, return the DIE's linkage name rather than the fully qualified
8388    name.  PHYSNAME is ignored..
8389
8390    The result is allocated on the objfile_obstack and canonicalized.  */
8391
8392 static const char *
8393 dwarf2_compute_name (const char *name,
8394                      struct die_info *die, struct dwarf2_cu *cu,
8395                      int physname)
8396 {
8397   struct objfile *objfile = cu->objfile;
8398
8399   if (name == NULL)
8400     name = dwarf2_name (die, cu);
8401
8402   /* For Fortran GDB prefers DW_AT_*linkage_name if present but otherwise
8403      compute it by typename_concat inside GDB.  */
8404   if (cu->language == language_ada
8405       || (cu->language == language_fortran && physname))
8406     {
8407       /* For Ada unit, we prefer the linkage name over the name, as
8408          the former contains the exported name, which the user expects
8409          to be able to reference.  Ideally, we want the user to be able
8410          to reference this entity using either natural or linkage name,
8411          but we haven't started looking at this enhancement yet.  */
8412       struct attribute *attr;
8413
8414       attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8415       if (attr == NULL)
8416         attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8417       if (attr && DW_STRING (attr))
8418         return DW_STRING (attr);
8419     }
8420
8421   /* These are the only languages we know how to qualify names in.  */
8422   if (name != NULL
8423       && (cu->language == language_cplus || cu->language == language_java
8424           || cu->language == language_fortran))
8425     {
8426       if (die_needs_namespace (die, cu))
8427         {
8428           long length;
8429           const char *prefix;
8430           struct ui_file *buf;
8431           char *intermediate_name;
8432           const char *canonical_name = NULL;
8433
8434           prefix = determine_prefix (die, cu);
8435           buf = mem_fileopen ();
8436           if (*prefix != '\0')
8437             {
8438               char *prefixed_name = typename_concat (NULL, prefix, name,
8439                                                      physname, cu);
8440
8441               fputs_unfiltered (prefixed_name, buf);
8442               xfree (prefixed_name);
8443             }
8444           else
8445             fputs_unfiltered (name, buf);
8446
8447           /* Template parameters may be specified in the DIE's DW_AT_name, or
8448              as children with DW_TAG_template_type_param or
8449              DW_TAG_value_type_param.  If the latter, add them to the name
8450              here.  If the name already has template parameters, then
8451              skip this step; some versions of GCC emit both, and
8452              it is more efficient to use the pre-computed name.
8453
8454              Something to keep in mind about this process: it is very
8455              unlikely, or in some cases downright impossible, to produce
8456              something that will match the mangled name of a function.
8457              If the definition of the function has the same debug info,
8458              we should be able to match up with it anyway.  But fallbacks
8459              using the minimal symbol, for instance to find a method
8460              implemented in a stripped copy of libstdc++, will not work.
8461              If we do not have debug info for the definition, we will have to
8462              match them up some other way.
8463
8464              When we do name matching there is a related problem with function
8465              templates; two instantiated function templates are allowed to
8466              differ only by their return types, which we do not add here.  */
8467
8468           if (cu->language == language_cplus && strchr (name, '<') == NULL)
8469             {
8470               struct attribute *attr;
8471               struct die_info *child;
8472               int first = 1;
8473
8474               die->building_fullname = 1;
8475
8476               for (child = die->child; child != NULL; child = child->sibling)
8477                 {
8478                   struct type *type;
8479                   LONGEST value;
8480                   const gdb_byte *bytes;
8481                   struct dwarf2_locexpr_baton *baton;
8482                   struct value *v;
8483
8484                   if (child->tag != DW_TAG_template_type_param
8485                       && child->tag != DW_TAG_template_value_param)
8486                     continue;
8487
8488                   if (first)
8489                     {
8490                       fputs_unfiltered ("<", buf);
8491                       first = 0;
8492                     }
8493                   else
8494                     fputs_unfiltered (", ", buf);
8495
8496                   attr = dwarf2_attr (child, DW_AT_type, cu);
8497                   if (attr == NULL)
8498                     {
8499                       complaint (&symfile_complaints,
8500                                  _("template parameter missing DW_AT_type"));
8501                       fputs_unfiltered ("UNKNOWN_TYPE", buf);
8502                       continue;
8503                     }
8504                   type = die_type (child, cu);
8505
8506                   if (child->tag == DW_TAG_template_type_param)
8507                     {
8508                       c_print_type (type, "", buf, -1, 0, &type_print_raw_options);
8509                       continue;
8510                     }
8511
8512                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
8513                   if (attr == NULL)
8514                     {
8515                       complaint (&symfile_complaints,
8516                                  _("template parameter missing "
8517                                    "DW_AT_const_value"));
8518                       fputs_unfiltered ("UNKNOWN_VALUE", buf);
8519                       continue;
8520                     }
8521
8522                   dwarf2_const_value_attr (attr, type, name,
8523                                            &cu->comp_unit_obstack, cu,
8524                                            &value, &bytes, &baton);
8525
8526                   if (TYPE_NOSIGN (type))
8527                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
8528                        changed, this can use value_print instead.  */
8529                     c_printchar (value, type, buf);
8530                   else
8531                     {
8532                       struct value_print_options opts;
8533
8534                       if (baton != NULL)
8535                         v = dwarf2_evaluate_loc_desc (type, NULL,
8536                                                       baton->data,
8537                                                       baton->size,
8538                                                       baton->per_cu);
8539                       else if (bytes != NULL)
8540                         {
8541                           v = allocate_value (type);
8542                           memcpy (value_contents_writeable (v), bytes,
8543                                   TYPE_LENGTH (type));
8544                         }
8545                       else
8546                         v = value_from_longest (type, value);
8547
8548                       /* Specify decimal so that we do not depend on
8549                          the radix.  */
8550                       get_formatted_print_options (&opts, 'd');
8551                       opts.raw = 1;
8552                       value_print (v, buf, &opts);
8553                       release_value (v);
8554                       value_free (v);
8555                     }
8556                 }
8557
8558               die->building_fullname = 0;
8559
8560               if (!first)
8561                 {
8562                   /* Close the argument list, with a space if necessary
8563                      (nested templates).  */
8564                   char last_char = '\0';
8565                   ui_file_put (buf, do_ui_file_peek_last, &last_char);
8566                   if (last_char == '>')
8567                     fputs_unfiltered (" >", buf);
8568                   else
8569                     fputs_unfiltered (">", buf);
8570                 }
8571             }
8572
8573           /* For Java and C++ methods, append formal parameter type
8574              information, if PHYSNAME.  */
8575
8576           if (physname && die->tag == DW_TAG_subprogram
8577               && (cu->language == language_cplus
8578                   || cu->language == language_java))
8579             {
8580               struct type *type = read_type_die (die, cu);
8581
8582               c_type_print_args (type, buf, 1, cu->language,
8583                                  &type_print_raw_options);
8584
8585               if (cu->language == language_java)
8586                 {
8587                   /* For java, we must append the return type to method
8588                      names.  */
8589                   if (die->tag == DW_TAG_subprogram)
8590                     java_print_type (TYPE_TARGET_TYPE (type), "", buf,
8591                                      0, 0, &type_print_raw_options);
8592                 }
8593               else if (cu->language == language_cplus)
8594                 {
8595                   /* Assume that an artificial first parameter is
8596                      "this", but do not crash if it is not.  RealView
8597                      marks unnamed (and thus unused) parameters as
8598                      artificial; there is no way to differentiate
8599                      the two cases.  */
8600                   if (TYPE_NFIELDS (type) > 0
8601                       && TYPE_FIELD_ARTIFICIAL (type, 0)
8602                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
8603                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
8604                                                                         0))))
8605                     fputs_unfiltered (" const", buf);
8606                 }
8607             }
8608
8609           intermediate_name = ui_file_xstrdup (buf, &length);
8610           ui_file_delete (buf);
8611
8612           if (cu->language == language_cplus)
8613             canonical_name
8614               = dwarf2_canonicalize_name (intermediate_name, cu,
8615                                           &objfile->per_bfd->storage_obstack);
8616
8617           /* If we only computed INTERMEDIATE_NAME, or if
8618              INTERMEDIATE_NAME is already canonical, then we need to
8619              copy it to the appropriate obstack.  */
8620           if (canonical_name == NULL || canonical_name == intermediate_name)
8621             name = obstack_copy0 (&objfile->per_bfd->storage_obstack,
8622                                   intermediate_name,
8623                                   strlen (intermediate_name));
8624           else
8625             name = canonical_name;
8626
8627           xfree (intermediate_name);
8628         }
8629     }
8630
8631   return name;
8632 }
8633
8634 /* Return the fully qualified name of DIE, based on its DW_AT_name.
8635    If scope qualifiers are appropriate they will be added.  The result
8636    will be allocated on the storage_obstack, or NULL if the DIE does
8637    not have a name.  NAME may either be from a previous call to
8638    dwarf2_name or NULL.
8639
8640    The output string will be canonicalized (if C++/Java).  */
8641
8642 static const char *
8643 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
8644 {
8645   return dwarf2_compute_name (name, die, cu, 0);
8646 }
8647
8648 /* Construct a physname for the given DIE in CU.  NAME may either be
8649    from a previous call to dwarf2_name or NULL.  The result will be
8650    allocated on the objfile_objstack or NULL if the DIE does not have a
8651    name.
8652
8653    The output string will be canonicalized (if C++/Java).  */
8654
8655 static const char *
8656 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
8657 {
8658   struct objfile *objfile = cu->objfile;
8659   struct attribute *attr;
8660   const char *retval, *mangled = NULL, *canon = NULL;
8661   struct cleanup *back_to;
8662   int need_copy = 1;
8663
8664   /* In this case dwarf2_compute_name is just a shortcut not building anything
8665      on its own.  */
8666   if (!die_needs_namespace (die, cu))
8667     return dwarf2_compute_name (name, die, cu, 1);
8668
8669   back_to = make_cleanup (null_cleanup, NULL);
8670
8671   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8672   if (!attr)
8673     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8674
8675   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
8676      has computed.  */
8677   if (attr && DW_STRING (attr))
8678     {
8679       char *demangled;
8680
8681       mangled = DW_STRING (attr);
8682
8683       /* Use DMGL_RET_DROP for C++ template functions to suppress their return
8684          type.  It is easier for GDB users to search for such functions as
8685          `name(params)' than `long name(params)'.  In such case the minimal
8686          symbol names do not match the full symbol names but for template
8687          functions there is never a need to look up their definition from their
8688          declaration so the only disadvantage remains the minimal symbol
8689          variant `long name(params)' does not have the proper inferior type.
8690          */
8691
8692       if (cu->language == language_go)
8693         {
8694           /* This is a lie, but we already lie to the caller new_symbol_full.
8695              new_symbol_full assumes we return the mangled name.
8696              This just undoes that lie until things are cleaned up.  */
8697           demangled = NULL;
8698         }
8699       else
8700         {
8701           demangled = gdb_demangle (mangled,
8702                                     (DMGL_PARAMS | DMGL_ANSI
8703                                      | (cu->language == language_java
8704                                         ? DMGL_JAVA | DMGL_RET_POSTFIX
8705                                         : DMGL_RET_DROP)));
8706         }
8707       if (demangled)
8708         {
8709           make_cleanup (xfree, demangled);
8710           canon = demangled;
8711         }
8712       else
8713         {
8714           canon = mangled;
8715           need_copy = 0;
8716         }
8717     }
8718
8719   if (canon == NULL || check_physname)
8720     {
8721       const char *physname = dwarf2_compute_name (name, die, cu, 1);
8722
8723       if (canon != NULL && strcmp (physname, canon) != 0)
8724         {
8725           /* It may not mean a bug in GDB.  The compiler could also
8726              compute DW_AT_linkage_name incorrectly.  But in such case
8727              GDB would need to be bug-to-bug compatible.  */
8728
8729           complaint (&symfile_complaints,
8730                      _("Computed physname <%s> does not match demangled <%s> "
8731                        "(from linkage <%s>) - DIE at 0x%x [in module %s]"),
8732                      physname, canon, mangled, die->offset.sect_off,
8733                      objfile_name (objfile));
8734
8735           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
8736              is available here - over computed PHYSNAME.  It is safer
8737              against both buggy GDB and buggy compilers.  */
8738
8739           retval = canon;
8740         }
8741       else
8742         {
8743           retval = physname;
8744           need_copy = 0;
8745         }
8746     }
8747   else
8748     retval = canon;
8749
8750   if (need_copy)
8751     retval = obstack_copy0 (&objfile->per_bfd->storage_obstack,
8752                             retval, strlen (retval));
8753
8754   do_cleanups (back_to);
8755   return retval;
8756 }
8757
8758 /* Inspect DIE in CU for a namespace alias.  If one exists, record
8759    a new symbol for it.
8760
8761    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
8762
8763 static int
8764 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
8765 {
8766   struct attribute *attr;
8767
8768   /* If the die does not have a name, this is not a namespace
8769      alias.  */
8770   attr = dwarf2_attr (die, DW_AT_name, cu);
8771   if (attr != NULL)
8772     {
8773       int num;
8774       struct die_info *d = die;
8775       struct dwarf2_cu *imported_cu = cu;
8776
8777       /* If the compiler has nested DW_AT_imported_declaration DIEs,
8778          keep inspecting DIEs until we hit the underlying import.  */
8779 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
8780       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
8781         {
8782           attr = dwarf2_attr (d, DW_AT_import, cu);
8783           if (attr == NULL)
8784             break;
8785
8786           d = follow_die_ref (d, attr, &imported_cu);
8787           if (d->tag != DW_TAG_imported_declaration)
8788             break;
8789         }
8790
8791       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
8792         {
8793           complaint (&symfile_complaints,
8794                      _("DIE at 0x%x has too many recursively imported "
8795                        "declarations"), d->offset.sect_off);
8796           return 0;
8797         }
8798
8799       if (attr != NULL)
8800         {
8801           struct type *type;
8802           sect_offset offset = dwarf2_get_ref_die_offset (attr);
8803
8804           type = get_die_type_at_offset (offset, cu->per_cu);
8805           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
8806             {
8807               /* This declaration is a global namespace alias.  Add
8808                  a symbol for it whose type is the aliased namespace.  */
8809               new_symbol (die, type, cu);
8810               return 1;
8811             }
8812         }
8813     }
8814
8815   return 0;
8816 }
8817
8818 /* Read the import statement specified by the given die and record it.  */
8819
8820 static void
8821 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
8822 {
8823   struct objfile *objfile = cu->objfile;
8824   struct attribute *import_attr;
8825   struct die_info *imported_die, *child_die;
8826   struct dwarf2_cu *imported_cu;
8827   const char *imported_name;
8828   const char *imported_name_prefix;
8829   const char *canonical_name;
8830   const char *import_alias;
8831   const char *imported_declaration = NULL;
8832   const char *import_prefix;
8833   VEC (const_char_ptr) *excludes = NULL;
8834   struct cleanup *cleanups;
8835
8836   import_attr = dwarf2_attr (die, DW_AT_import, cu);
8837   if (import_attr == NULL)
8838     {
8839       complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8840                  dwarf_tag_name (die->tag));
8841       return;
8842     }
8843
8844   imported_cu = cu;
8845   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
8846   imported_name = dwarf2_name (imported_die, imported_cu);
8847   if (imported_name == NULL)
8848     {
8849       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
8850
8851         The import in the following code:
8852         namespace A
8853           {
8854             typedef int B;
8855           }
8856
8857         int main ()
8858           {
8859             using A::B;
8860             B b;
8861             return b;
8862           }
8863
8864         ...
8865          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
8866             <52>   DW_AT_decl_file   : 1
8867             <53>   DW_AT_decl_line   : 6
8868             <54>   DW_AT_import      : <0x75>
8869          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
8870             <59>   DW_AT_name        : B
8871             <5b>   DW_AT_decl_file   : 1
8872             <5c>   DW_AT_decl_line   : 2
8873             <5d>   DW_AT_type        : <0x6e>
8874         ...
8875          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
8876             <76>   DW_AT_byte_size   : 4
8877             <77>   DW_AT_encoding    : 5        (signed)
8878
8879         imports the wrong die ( 0x75 instead of 0x58 ).
8880         This case will be ignored until the gcc bug is fixed.  */
8881       return;
8882     }
8883
8884   /* Figure out the local name after import.  */
8885   import_alias = dwarf2_name (die, cu);
8886
8887   /* Figure out where the statement is being imported to.  */
8888   import_prefix = determine_prefix (die, cu);
8889
8890   /* Figure out what the scope of the imported die is and prepend it
8891      to the name of the imported die.  */
8892   imported_name_prefix = determine_prefix (imported_die, imported_cu);
8893
8894   if (imported_die->tag != DW_TAG_namespace
8895       && imported_die->tag != DW_TAG_module)
8896     {
8897       imported_declaration = imported_name;
8898       canonical_name = imported_name_prefix;
8899     }
8900   else if (strlen (imported_name_prefix) > 0)
8901     canonical_name = obconcat (&objfile->objfile_obstack,
8902                                imported_name_prefix, "::", imported_name,
8903                                (char *) NULL);
8904   else
8905     canonical_name = imported_name;
8906
8907   cleanups = make_cleanup (VEC_cleanup (const_char_ptr), &excludes);
8908
8909   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
8910     for (child_die = die->child; child_die && child_die->tag;
8911          child_die = sibling_die (child_die))
8912       {
8913         /* DWARF-4: A Fortran use statement with a “rename list” may be
8914            represented by an imported module entry with an import attribute
8915            referring to the module and owned entries corresponding to those
8916            entities that are renamed as part of being imported.  */
8917
8918         if (child_die->tag != DW_TAG_imported_declaration)
8919           {
8920             complaint (&symfile_complaints,
8921                        _("child DW_TAG_imported_declaration expected "
8922                          "- DIE at 0x%x [in module %s]"),
8923                        child_die->offset.sect_off, objfile_name (objfile));
8924             continue;
8925           }
8926
8927         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
8928         if (import_attr == NULL)
8929           {
8930             complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8931                        dwarf_tag_name (child_die->tag));
8932             continue;
8933           }
8934
8935         imported_cu = cu;
8936         imported_die = follow_die_ref_or_sig (child_die, import_attr,
8937                                               &imported_cu);
8938         imported_name = dwarf2_name (imported_die, imported_cu);
8939         if (imported_name == NULL)
8940           {
8941             complaint (&symfile_complaints,
8942                        _("child DW_TAG_imported_declaration has unknown "
8943                          "imported name - DIE at 0x%x [in module %s]"),
8944                        child_die->offset.sect_off, objfile_name (objfile));
8945             continue;
8946           }
8947
8948         VEC_safe_push (const_char_ptr, excludes, imported_name);
8949
8950         process_die (child_die, cu);
8951       }
8952
8953   cp_add_using_directive (import_prefix,
8954                           canonical_name,
8955                           import_alias,
8956                           imported_declaration,
8957                           excludes,
8958                           0,
8959                           &objfile->objfile_obstack);
8960
8961   do_cleanups (cleanups);
8962 }
8963
8964 /* Cleanup function for handle_DW_AT_stmt_list.  */
8965
8966 static void
8967 free_cu_line_header (void *arg)
8968 {
8969   struct dwarf2_cu *cu = arg;
8970
8971   free_line_header (cu->line_header);
8972   cu->line_header = NULL;
8973 }
8974
8975 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
8976    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
8977    this, it was first present in GCC release 4.3.0.  */
8978
8979 static int
8980 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
8981 {
8982   if (!cu->checked_producer)
8983     check_producer (cu);
8984
8985   return cu->producer_is_gcc_lt_4_3;
8986 }
8987
8988 static void
8989 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu,
8990                          const char **name, const char **comp_dir)
8991 {
8992   struct attribute *attr;
8993
8994   *name = NULL;
8995   *comp_dir = NULL;
8996
8997   /* Find the filename.  Do not use dwarf2_name here, since the filename
8998      is not a source language identifier.  */
8999   attr = dwarf2_attr (die, DW_AT_name, cu);
9000   if (attr)
9001     {
9002       *name = DW_STRING (attr);
9003     }
9004
9005   attr = dwarf2_attr (die, DW_AT_comp_dir, cu);
9006   if (attr)
9007     *comp_dir = DW_STRING (attr);
9008   else if (producer_is_gcc_lt_4_3 (cu) && *name != NULL
9009            && IS_ABSOLUTE_PATH (*name))
9010     {
9011       char *d = ldirname (*name);
9012
9013       *comp_dir = d;
9014       if (d != NULL)
9015         make_cleanup (xfree, d);
9016     }
9017   if (*comp_dir != NULL)
9018     {
9019       /* Irix 6.2 native cc prepends <machine>.: to the compilation
9020          directory, get rid of it.  */
9021       char *cp = strchr (*comp_dir, ':');
9022
9023       if (cp && cp != *comp_dir && cp[-1] == '.' && cp[1] == '/')
9024         *comp_dir = cp + 1;
9025     }
9026
9027   if (*name == NULL)
9028     *name = "<unknown>";
9029 }
9030
9031 /* Handle DW_AT_stmt_list for a compilation unit.
9032    DIE is the DW_TAG_compile_unit die for CU.
9033    COMP_DIR is the compilation directory.  LOWPC is passed to
9034    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
9035
9036 static void
9037 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
9038                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
9039 {
9040   struct objfile *objfile = dwarf2_per_objfile->objfile;
9041   struct attribute *attr;
9042   unsigned int line_offset;
9043   struct line_header line_header_local;
9044   hashval_t line_header_local_hash;
9045   unsigned u;
9046   void **slot;
9047   int decode_mapping;
9048
9049   gdb_assert (! cu->per_cu->is_debug_types);
9050
9051   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
9052   if (attr == NULL)
9053     return;
9054
9055   line_offset = DW_UNSND (attr);
9056
9057   /* The line header hash table is only created if needed (it exists to
9058      prevent redundant reading of the line table for partial_units).
9059      If we're given a partial_unit, we'll need it.  If we're given a
9060      compile_unit, then use the line header hash table if it's already
9061      created, but don't create one just yet.  */
9062
9063   if (dwarf2_per_objfile->line_header_hash == NULL
9064       && die->tag == DW_TAG_partial_unit)
9065     {
9066       dwarf2_per_objfile->line_header_hash
9067         = htab_create_alloc_ex (127, line_header_hash_voidp,
9068                                 line_header_eq_voidp,
9069                                 free_line_header_voidp,
9070                                 &objfile->objfile_obstack,
9071                                 hashtab_obstack_allocate,
9072                                 dummy_obstack_deallocate);
9073     }
9074
9075   line_header_local.offset.sect_off = line_offset;
9076   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
9077   line_header_local_hash = line_header_hash (&line_header_local);
9078   if (dwarf2_per_objfile->line_header_hash != NULL)
9079     {
9080       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
9081                                        &line_header_local,
9082                                        line_header_local_hash, NO_INSERT);
9083
9084       /* For DW_TAG_compile_unit we need info like symtab::linetable which
9085          is not present in *SLOT (since if there is something in *SLOT then
9086          it will be for a partial_unit).  */
9087       if (die->tag == DW_TAG_partial_unit && slot != NULL)
9088         {
9089           gdb_assert (*slot != NULL);
9090           cu->line_header = *slot;
9091           return;
9092         }
9093     }
9094
9095   /* dwarf_decode_line_header does not yet provide sufficient information.
9096      We always have to call also dwarf_decode_lines for it.  */
9097   cu->line_header = dwarf_decode_line_header (line_offset, cu);
9098   if (cu->line_header == NULL)
9099     return;
9100
9101   if (dwarf2_per_objfile->line_header_hash == NULL)
9102     slot = NULL;
9103   else
9104     {
9105       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
9106                                        &line_header_local,
9107                                        line_header_local_hash, INSERT);
9108       gdb_assert (slot != NULL);
9109     }
9110   if (slot != NULL && *slot == NULL)
9111     {
9112       /* This newly decoded line number information unit will be owned
9113          by line_header_hash hash table.  */
9114       *slot = cu->line_header;
9115     }
9116   else
9117     {
9118       /* We cannot free any current entry in (*slot) as that struct line_header
9119          may be already used by multiple CUs.  Create only temporary decoded
9120          line_header for this CU - it may happen at most once for each line
9121          number information unit.  And if we're not using line_header_hash
9122          then this is what we want as well.  */
9123       gdb_assert (die->tag != DW_TAG_partial_unit);
9124       make_cleanup (free_cu_line_header, cu);
9125     }
9126   decode_mapping = (die->tag != DW_TAG_partial_unit);
9127   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
9128                       decode_mapping);
9129 }
9130
9131 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
9132
9133 static void
9134 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
9135 {
9136   struct objfile *objfile = dwarf2_per_objfile->objfile;
9137   struct gdbarch *gdbarch = get_objfile_arch (objfile);
9138   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
9139   CORE_ADDR lowpc = ((CORE_ADDR) -1);
9140   CORE_ADDR highpc = ((CORE_ADDR) 0);
9141   struct attribute *attr;
9142   const char *name = NULL;
9143   const char *comp_dir = NULL;
9144   struct die_info *child_die;
9145   bfd *abfd = objfile->obfd;
9146   CORE_ADDR baseaddr;
9147
9148   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
9149
9150   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
9151
9152   /* If we didn't find a lowpc, set it to highpc to avoid complaints
9153      from finish_block.  */
9154   if (lowpc == ((CORE_ADDR) -1))
9155     lowpc = highpc;
9156   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
9157
9158   find_file_and_directory (die, cu, &name, &comp_dir);
9159
9160   prepare_one_comp_unit (cu, die, cu->language);
9161
9162   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
9163      standardised yet.  As a workaround for the language detection we fall
9164      back to the DW_AT_producer string.  */
9165   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
9166     cu->language = language_opencl;
9167
9168   /* Similar hack for Go.  */
9169   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
9170     set_cu_language (DW_LANG_Go, cu);
9171
9172   dwarf2_start_symtab (cu, name, comp_dir, lowpc);
9173
9174   /* Decode line number information if present.  We do this before
9175      processing child DIEs, so that the line header table is available
9176      for DW_AT_decl_file.  */
9177   handle_DW_AT_stmt_list (die, cu, comp_dir, lowpc);
9178
9179   /* Process all dies in compilation unit.  */
9180   if (die->child != NULL)
9181     {
9182       child_die = die->child;
9183       while (child_die && child_die->tag)
9184         {
9185           process_die (child_die, cu);
9186           child_die = sibling_die (child_die);
9187         }
9188     }
9189
9190   /* Decode macro information, if present.  Dwarf 2 macro information
9191      refers to information in the line number info statement program
9192      header, so we can only read it if we've read the header
9193      successfully.  */
9194   attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
9195   if (attr && cu->line_header)
9196     {
9197       if (dwarf2_attr (die, DW_AT_macro_info, cu))
9198         complaint (&symfile_complaints,
9199                    _("CU refers to both DW_AT_GNU_macros and DW_AT_macro_info"));
9200
9201       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
9202     }
9203   else
9204     {
9205       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
9206       if (attr && cu->line_header)
9207         {
9208           unsigned int macro_offset = DW_UNSND (attr);
9209
9210           dwarf_decode_macros (cu, macro_offset, 0);
9211         }
9212     }
9213
9214   do_cleanups (back_to);
9215 }
9216
9217 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
9218    Create the set of symtabs used by this TU, or if this TU is sharing
9219    symtabs with another TU and the symtabs have already been created
9220    then restore those symtabs in the line header.
9221    We don't need the pc/line-number mapping for type units.  */
9222
9223 static void
9224 setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
9225 {
9226   struct objfile *objfile = dwarf2_per_objfile->objfile;
9227   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
9228   struct type_unit_group *tu_group;
9229   int first_time;
9230   struct line_header *lh;
9231   struct attribute *attr;
9232   unsigned int i, line_offset;
9233   struct signatured_type *sig_type;
9234
9235   gdb_assert (per_cu->is_debug_types);
9236   sig_type = (struct signatured_type *) per_cu;
9237
9238   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
9239
9240   /* If we're using .gdb_index (includes -readnow) then
9241      per_cu->type_unit_group may not have been set up yet.  */
9242   if (sig_type->type_unit_group == NULL)
9243     sig_type->type_unit_group = get_type_unit_group (cu, attr);
9244   tu_group = sig_type->type_unit_group;
9245
9246   /* If we've already processed this stmt_list there's no real need to
9247      do it again, we could fake it and just recreate the part we need
9248      (file name,index -> symtab mapping).  If data shows this optimization
9249      is useful we can do it then.  */
9250   first_time = tu_group->compunit_symtab == NULL;
9251
9252   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
9253      debug info.  */
9254   lh = NULL;
9255   if (attr != NULL)
9256     {
9257       line_offset = DW_UNSND (attr);
9258       lh = dwarf_decode_line_header (line_offset, cu);
9259     }
9260   if (lh == NULL)
9261     {
9262       if (first_time)
9263         dwarf2_start_symtab (cu, "", NULL, 0);
9264       else
9265         {
9266           gdb_assert (tu_group->symtabs == NULL);
9267           restart_symtab (tu_group->compunit_symtab, "", 0);
9268         }
9269       return;
9270     }
9271
9272   cu->line_header = lh;
9273   make_cleanup (free_cu_line_header, cu);
9274
9275   if (first_time)
9276     {
9277       struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
9278
9279       tu_group->num_symtabs = lh->num_file_names;
9280       tu_group->symtabs = XNEWVEC (struct symtab *, lh->num_file_names);
9281
9282       for (i = 0; i < lh->num_file_names; ++i)
9283         {
9284           const char *dir = NULL;
9285           struct file_entry *fe = &lh->file_names[i];
9286
9287           if (fe->dir_index)
9288             dir = lh->include_dirs[fe->dir_index - 1];
9289           dwarf2_start_subfile (fe->name, dir);
9290
9291           if (current_subfile->symtab == NULL)
9292             {
9293               /* NOTE: start_subfile will recognize when it's been passed
9294                  a file it has already seen.  So we can't assume there's a
9295                  simple mapping from lh->file_names to subfiles, plus
9296                  lh->file_names may contain dups.  */
9297               current_subfile->symtab
9298                 = allocate_symtab (cust, current_subfile->name);
9299             }
9300
9301           fe->symtab = current_subfile->symtab;
9302           tu_group->symtabs[i] = fe->symtab;
9303         }
9304     }
9305   else
9306     {
9307       restart_symtab (tu_group->compunit_symtab, "", 0);
9308
9309       for (i = 0; i < lh->num_file_names; ++i)
9310         {
9311           struct file_entry *fe = &lh->file_names[i];
9312
9313           fe->symtab = tu_group->symtabs[i];
9314         }
9315     }
9316
9317   /* The main symtab is allocated last.  Type units don't have DW_AT_name
9318      so they don't have a "real" (so to speak) symtab anyway.
9319      There is later code that will assign the main symtab to all symbols
9320      that don't have one.  We need to handle the case of a symbol with a
9321      missing symtab (DW_AT_decl_file) anyway.  */
9322 }
9323
9324 /* Process DW_TAG_type_unit.
9325    For TUs we want to skip the first top level sibling if it's not the
9326    actual type being defined by this TU.  In this case the first top
9327    level sibling is there to provide context only.  */
9328
9329 static void
9330 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
9331 {
9332   struct die_info *child_die;
9333
9334   prepare_one_comp_unit (cu, die, language_minimal);
9335
9336   /* Initialize (or reinitialize) the machinery for building symtabs.
9337      We do this before processing child DIEs, so that the line header table
9338      is available for DW_AT_decl_file.  */
9339   setup_type_unit_groups (die, cu);
9340
9341   if (die->child != NULL)
9342     {
9343       child_die = die->child;
9344       while (child_die && child_die->tag)
9345         {
9346           process_die (child_die, cu);
9347           child_die = sibling_die (child_die);
9348         }
9349     }
9350 }
9351 \f
9352 /* DWO/DWP files.
9353
9354    http://gcc.gnu.org/wiki/DebugFission
9355    http://gcc.gnu.org/wiki/DebugFissionDWP
9356
9357    To simplify handling of both DWO files ("object" files with the DWARF info)
9358    and DWP files (a file with the DWOs packaged up into one file), we treat
9359    DWP files as having a collection of virtual DWO files.  */
9360
9361 static hashval_t
9362 hash_dwo_file (const void *item)
9363 {
9364   const struct dwo_file *dwo_file = item;
9365   hashval_t hash;
9366
9367   hash = htab_hash_string (dwo_file->dwo_name);
9368   if (dwo_file->comp_dir != NULL)
9369     hash += htab_hash_string (dwo_file->comp_dir);
9370   return hash;
9371 }
9372
9373 static int
9374 eq_dwo_file (const void *item_lhs, const void *item_rhs)
9375 {
9376   const struct dwo_file *lhs = item_lhs;
9377   const struct dwo_file *rhs = item_rhs;
9378
9379   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
9380     return 0;
9381   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
9382     return lhs->comp_dir == rhs->comp_dir;
9383   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
9384 }
9385
9386 /* Allocate a hash table for DWO files.  */
9387
9388 static htab_t
9389 allocate_dwo_file_hash_table (void)
9390 {
9391   struct objfile *objfile = dwarf2_per_objfile->objfile;
9392
9393   return htab_create_alloc_ex (41,
9394                                hash_dwo_file,
9395                                eq_dwo_file,
9396                                NULL,
9397                                &objfile->objfile_obstack,
9398                                hashtab_obstack_allocate,
9399                                dummy_obstack_deallocate);
9400 }
9401
9402 /* Lookup DWO file DWO_NAME.  */
9403
9404 static void **
9405 lookup_dwo_file_slot (const char *dwo_name, const char *comp_dir)
9406 {
9407   struct dwo_file find_entry;
9408   void **slot;
9409
9410   if (dwarf2_per_objfile->dwo_files == NULL)
9411     dwarf2_per_objfile->dwo_files = allocate_dwo_file_hash_table ();
9412
9413   memset (&find_entry, 0, sizeof (find_entry));
9414   find_entry.dwo_name = dwo_name;
9415   find_entry.comp_dir = comp_dir;
9416   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
9417
9418   return slot;
9419 }
9420
9421 static hashval_t
9422 hash_dwo_unit (const void *item)
9423 {
9424   const struct dwo_unit *dwo_unit = item;
9425
9426   /* This drops the top 32 bits of the id, but is ok for a hash.  */
9427   return dwo_unit->signature;
9428 }
9429
9430 static int
9431 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
9432 {
9433   const struct dwo_unit *lhs = item_lhs;
9434   const struct dwo_unit *rhs = item_rhs;
9435
9436   /* The signature is assumed to be unique within the DWO file.
9437      So while object file CU dwo_id's always have the value zero,
9438      that's OK, assuming each object file DWO file has only one CU,
9439      and that's the rule for now.  */
9440   return lhs->signature == rhs->signature;
9441 }
9442
9443 /* Allocate a hash table for DWO CUs,TUs.
9444    There is one of these tables for each of CUs,TUs for each DWO file.  */
9445
9446 static htab_t
9447 allocate_dwo_unit_table (struct objfile *objfile)
9448 {
9449   /* Start out with a pretty small number.
9450      Generally DWO files contain only one CU and maybe some TUs.  */
9451   return htab_create_alloc_ex (3,
9452                                hash_dwo_unit,
9453                                eq_dwo_unit,
9454                                NULL,
9455                                &objfile->objfile_obstack,
9456                                hashtab_obstack_allocate,
9457                                dummy_obstack_deallocate);
9458 }
9459
9460 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
9461
9462 struct create_dwo_cu_data
9463 {
9464   struct dwo_file *dwo_file;
9465   struct dwo_unit dwo_unit;
9466 };
9467
9468 /* die_reader_func for create_dwo_cu.  */
9469
9470 static void
9471 create_dwo_cu_reader (const struct die_reader_specs *reader,
9472                       const gdb_byte *info_ptr,
9473                       struct die_info *comp_unit_die,
9474                       int has_children,
9475                       void *datap)
9476 {
9477   struct dwarf2_cu *cu = reader->cu;
9478   struct objfile *objfile = dwarf2_per_objfile->objfile;
9479   sect_offset offset = cu->per_cu->offset;
9480   struct dwarf2_section_info *section = cu->per_cu->section;
9481   struct create_dwo_cu_data *data = datap;
9482   struct dwo_file *dwo_file = data->dwo_file;
9483   struct dwo_unit *dwo_unit = &data->dwo_unit;
9484   struct attribute *attr;
9485
9486   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
9487   if (attr == NULL)
9488     {
9489       complaint (&symfile_complaints,
9490                  _("Dwarf Error: debug entry at offset 0x%x is missing"
9491                    " its dwo_id [in module %s]"),
9492                  offset.sect_off, dwo_file->dwo_name);
9493       return;
9494     }
9495
9496   dwo_unit->dwo_file = dwo_file;
9497   dwo_unit->signature = DW_UNSND (attr);
9498   dwo_unit->section = section;
9499   dwo_unit->offset = offset;
9500   dwo_unit->length = cu->per_cu->length;
9501
9502   if (dwarf2_read_debug)
9503     fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, dwo_id %s\n",
9504                         offset.sect_off, hex_string (dwo_unit->signature));
9505 }
9506
9507 /* Create the dwo_unit for the lone CU in DWO_FILE.
9508    Note: This function processes DWO files only, not DWP files.  */
9509
9510 static struct dwo_unit *
9511 create_dwo_cu (struct dwo_file *dwo_file)
9512 {
9513   struct objfile *objfile = dwarf2_per_objfile->objfile;
9514   struct dwarf2_section_info *section = &dwo_file->sections.info;
9515   bfd *abfd;
9516   htab_t cu_htab;
9517   const gdb_byte *info_ptr, *end_ptr;
9518   struct create_dwo_cu_data create_dwo_cu_data;
9519   struct dwo_unit *dwo_unit;
9520
9521   dwarf2_read_section (objfile, section);
9522   info_ptr = section->buffer;
9523
9524   if (info_ptr == NULL)
9525     return NULL;
9526
9527   /* We can't set abfd until now because the section may be empty or
9528      not present, in which case section->asection will be NULL.  */
9529   abfd = get_section_bfd_owner (section);
9530
9531   if (dwarf2_read_debug)
9532     {
9533       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
9534                           get_section_name (section),
9535                           get_section_file_name (section));
9536     }
9537
9538   create_dwo_cu_data.dwo_file = dwo_file;
9539   dwo_unit = NULL;
9540
9541   end_ptr = info_ptr + section->size;
9542   while (info_ptr < end_ptr)
9543     {
9544       struct dwarf2_per_cu_data per_cu;
9545
9546       memset (&create_dwo_cu_data.dwo_unit, 0,
9547               sizeof (create_dwo_cu_data.dwo_unit));
9548       memset (&per_cu, 0, sizeof (per_cu));
9549       per_cu.objfile = objfile;
9550       per_cu.is_debug_types = 0;
9551       per_cu.offset.sect_off = info_ptr - section->buffer;
9552       per_cu.section = section;
9553
9554       init_cutu_and_read_dies_no_follow (&per_cu, dwo_file,
9555                                          create_dwo_cu_reader,
9556                                          &create_dwo_cu_data);
9557
9558       if (create_dwo_cu_data.dwo_unit.dwo_file != NULL)
9559         {
9560           /* If we've already found one, complain.  We only support one
9561              because having more than one requires hacking the dwo_name of
9562              each to match, which is highly unlikely to happen.  */
9563           if (dwo_unit != NULL)
9564             {
9565               complaint (&symfile_complaints,
9566                          _("Multiple CUs in DWO file %s [in module %s]"),
9567                          dwo_file->dwo_name, objfile_name (objfile));
9568               break;
9569             }
9570
9571           dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
9572           *dwo_unit = create_dwo_cu_data.dwo_unit;
9573         }
9574
9575       info_ptr += per_cu.length;
9576     }
9577
9578   return dwo_unit;
9579 }
9580
9581 /* DWP file .debug_{cu,tu}_index section format:
9582    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
9583
9584    DWP Version 1:
9585
9586    Both index sections have the same format, and serve to map a 64-bit
9587    signature to a set of section numbers.  Each section begins with a header,
9588    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
9589    indexes, and a pool of 32-bit section numbers.  The index sections will be
9590    aligned at 8-byte boundaries in the file.
9591
9592    The index section header consists of:
9593
9594     V, 32 bit version number
9595     -, 32 bits unused
9596     N, 32 bit number of compilation units or type units in the index
9597     M, 32 bit number of slots in the hash table
9598
9599    Numbers are recorded using the byte order of the application binary.
9600
9601    The hash table begins at offset 16 in the section, and consists of an array
9602    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
9603    order of the application binary).  Unused slots in the hash table are 0.
9604    (We rely on the extreme unlikeliness of a signature being exactly 0.)
9605
9606    The parallel table begins immediately after the hash table
9607    (at offset 16 + 8 * M from the beginning of the section), and consists of an
9608    array of 32-bit indexes (using the byte order of the application binary),
9609    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
9610    table contains a 32-bit index into the pool of section numbers.  For unused
9611    hash table slots, the corresponding entry in the parallel table will be 0.
9612
9613    The pool of section numbers begins immediately following the hash table
9614    (at offset 16 + 12 * M from the beginning of the section).  The pool of
9615    section numbers consists of an array of 32-bit words (using the byte order
9616    of the application binary).  Each item in the array is indexed starting
9617    from 0.  The hash table entry provides the index of the first section
9618    number in the set.  Additional section numbers in the set follow, and the
9619    set is terminated by a 0 entry (section number 0 is not used in ELF).
9620
9621    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
9622    section must be the first entry in the set, and the .debug_abbrev.dwo must
9623    be the second entry. Other members of the set may follow in any order.
9624
9625    ---
9626
9627    DWP Version 2:
9628
9629    DWP Version 2 combines all the .debug_info, etc. sections into one,
9630    and the entries in the index tables are now offsets into these sections.
9631    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
9632    section.
9633
9634    Index Section Contents:
9635     Header
9636     Hash Table of Signatures   dwp_hash_table.hash_table
9637     Parallel Table of Indices  dwp_hash_table.unit_table
9638     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
9639     Table of Section Sizes     dwp_hash_table.v2.sizes
9640
9641    The index section header consists of:
9642
9643     V, 32 bit version number
9644     L, 32 bit number of columns in the table of section offsets
9645     N, 32 bit number of compilation units or type units in the index
9646     M, 32 bit number of slots in the hash table
9647
9648    Numbers are recorded using the byte order of the application binary.
9649
9650    The hash table has the same format as version 1.
9651    The parallel table of indices has the same format as version 1,
9652    except that the entries are origin-1 indices into the table of sections
9653    offsets and the table of section sizes.
9654
9655    The table of offsets begins immediately following the parallel table
9656    (at offset 16 + 12 * M from the beginning of the section).  The table is
9657    a two-dimensional array of 32-bit words (using the byte order of the
9658    application binary), with L columns and N+1 rows, in row-major order.
9659    Each row in the array is indexed starting from 0.  The first row provides
9660    a key to the remaining rows: each column in this row provides an identifier
9661    for a debug section, and the offsets in the same column of subsequent rows
9662    refer to that section.  The section identifiers are:
9663
9664     DW_SECT_INFO         1  .debug_info.dwo
9665     DW_SECT_TYPES        2  .debug_types.dwo
9666     DW_SECT_ABBREV       3  .debug_abbrev.dwo
9667     DW_SECT_LINE         4  .debug_line.dwo
9668     DW_SECT_LOC          5  .debug_loc.dwo
9669     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
9670     DW_SECT_MACINFO      7  .debug_macinfo.dwo
9671     DW_SECT_MACRO        8  .debug_macro.dwo
9672
9673    The offsets provided by the CU and TU index sections are the base offsets
9674    for the contributions made by each CU or TU to the corresponding section
9675    in the package file.  Each CU and TU header contains an abbrev_offset
9676    field, used to find the abbreviations table for that CU or TU within the
9677    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
9678    be interpreted as relative to the base offset given in the index section.
9679    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
9680    should be interpreted as relative to the base offset for .debug_line.dwo,
9681    and offsets into other debug sections obtained from DWARF attributes should
9682    also be interpreted as relative to the corresponding base offset.
9683
9684    The table of sizes begins immediately following the table of offsets.
9685    Like the table of offsets, it is a two-dimensional array of 32-bit words,
9686    with L columns and N rows, in row-major order.  Each row in the array is
9687    indexed starting from 1 (row 0 is shared by the two tables).
9688
9689    ---
9690
9691    Hash table lookup is handled the same in version 1 and 2:
9692
9693    We assume that N and M will not exceed 2^32 - 1.
9694    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
9695
9696    Given a 64-bit compilation unit signature or a type signature S, an entry
9697    in the hash table is located as follows:
9698
9699    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
9700       the low-order k bits all set to 1.
9701
9702    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
9703
9704    3) If the hash table entry at index H matches the signature, use that
9705       entry.  If the hash table entry at index H is unused (all zeroes),
9706       terminate the search: the signature is not present in the table.
9707
9708    4) Let H = (H + H') modulo M. Repeat at Step 3.
9709
9710    Because M > N and H' and M are relatively prime, the search is guaranteed
9711    to stop at an unused slot or find the match.  */
9712
9713 /* Create a hash table to map DWO IDs to their CU/TU entry in
9714    .debug_{info,types}.dwo in DWP_FILE.
9715    Returns NULL if there isn't one.
9716    Note: This function processes DWP files only, not DWO files.  */
9717
9718 static struct dwp_hash_table *
9719 create_dwp_hash_table (struct dwp_file *dwp_file, int is_debug_types)
9720 {
9721   struct objfile *objfile = dwarf2_per_objfile->objfile;
9722   bfd *dbfd = dwp_file->dbfd;
9723   const gdb_byte *index_ptr, *index_end;
9724   struct dwarf2_section_info *index;
9725   uint32_t version, nr_columns, nr_units, nr_slots;
9726   struct dwp_hash_table *htab;
9727
9728   if (is_debug_types)
9729     index = &dwp_file->sections.tu_index;
9730   else
9731     index = &dwp_file->sections.cu_index;
9732
9733   if (dwarf2_section_empty_p (index))
9734     return NULL;
9735   dwarf2_read_section (objfile, index);
9736
9737   index_ptr = index->buffer;
9738   index_end = index_ptr + index->size;
9739
9740   version = read_4_bytes (dbfd, index_ptr);
9741   index_ptr += 4;
9742   if (version == 2)
9743     nr_columns = read_4_bytes (dbfd, index_ptr);
9744   else
9745     nr_columns = 0;
9746   index_ptr += 4;
9747   nr_units = read_4_bytes (dbfd, index_ptr);
9748   index_ptr += 4;
9749   nr_slots = read_4_bytes (dbfd, index_ptr);
9750   index_ptr += 4;
9751
9752   if (version != 1 && version != 2)
9753     {
9754       error (_("Dwarf Error: unsupported DWP file version (%s)"
9755                " [in module %s]"),
9756              pulongest (version), dwp_file->name);
9757     }
9758   if (nr_slots != (nr_slots & -nr_slots))
9759     {
9760       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
9761                " is not power of 2 [in module %s]"),
9762              pulongest (nr_slots), dwp_file->name);
9763     }
9764
9765   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
9766   htab->version = version;
9767   htab->nr_columns = nr_columns;
9768   htab->nr_units = nr_units;
9769   htab->nr_slots = nr_slots;
9770   htab->hash_table = index_ptr;
9771   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
9772
9773   /* Exit early if the table is empty.  */
9774   if (nr_slots == 0 || nr_units == 0
9775       || (version == 2 && nr_columns == 0))
9776     {
9777       /* All must be zero.  */
9778       if (nr_slots != 0 || nr_units != 0
9779           || (version == 2 && nr_columns != 0))
9780         {
9781           complaint (&symfile_complaints,
9782                      _("Empty DWP but nr_slots,nr_units,nr_columns not"
9783                        " all zero [in modules %s]"),
9784                      dwp_file->name);
9785         }
9786       return htab;
9787     }
9788
9789   if (version == 1)
9790     {
9791       htab->section_pool.v1.indices =
9792         htab->unit_table + sizeof (uint32_t) * nr_slots;
9793       /* It's harder to decide whether the section is too small in v1.
9794          V1 is deprecated anyway so we punt.  */
9795     }
9796   else
9797     {
9798       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
9799       int *ids = htab->section_pool.v2.section_ids;
9800       /* Reverse map for error checking.  */
9801       int ids_seen[DW_SECT_MAX + 1];
9802       int i;
9803
9804       if (nr_columns < 2)
9805         {
9806           error (_("Dwarf Error: bad DWP hash table, too few columns"
9807                    " in section table [in module %s]"),
9808                  dwp_file->name);
9809         }
9810       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
9811         {
9812           error (_("Dwarf Error: bad DWP hash table, too many columns"
9813                    " in section table [in module %s]"),
9814                  dwp_file->name);
9815         }
9816       memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9817       memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9818       for (i = 0; i < nr_columns; ++i)
9819         {
9820           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
9821
9822           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
9823             {
9824               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
9825                        " in section table [in module %s]"),
9826                      id, dwp_file->name);
9827             }
9828           if (ids_seen[id] != -1)
9829             {
9830               error (_("Dwarf Error: bad DWP hash table, duplicate section"
9831                        " id %d in section table [in module %s]"),
9832                      id, dwp_file->name);
9833             }
9834           ids_seen[id] = i;
9835           ids[i] = id;
9836         }
9837       /* Must have exactly one info or types section.  */
9838       if (((ids_seen[DW_SECT_INFO] != -1)
9839            + (ids_seen[DW_SECT_TYPES] != -1))
9840           != 1)
9841         {
9842           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
9843                    " DWO info/types section [in module %s]"),
9844                  dwp_file->name);
9845         }
9846       /* Must have an abbrev section.  */
9847       if (ids_seen[DW_SECT_ABBREV] == -1)
9848         {
9849           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
9850                    " section [in module %s]"),
9851                  dwp_file->name);
9852         }
9853       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
9854       htab->section_pool.v2.sizes =
9855         htab->section_pool.v2.offsets + (sizeof (uint32_t)
9856                                          * nr_units * nr_columns);
9857       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
9858                                           * nr_units * nr_columns))
9859           > index_end)
9860         {
9861           error (_("Dwarf Error: DWP index section is corrupt (too small)"
9862                    " [in module %s]"),
9863                  dwp_file->name);
9864         }
9865     }
9866
9867   return htab;
9868 }
9869
9870 /* Update SECTIONS with the data from SECTP.
9871
9872    This function is like the other "locate" section routines that are
9873    passed to bfd_map_over_sections, but in this context the sections to
9874    read comes from the DWP V1 hash table, not the full ELF section table.
9875
9876    The result is non-zero for success, or zero if an error was found.  */
9877
9878 static int
9879 locate_v1_virtual_dwo_sections (asection *sectp,
9880                                 struct virtual_v1_dwo_sections *sections)
9881 {
9882   const struct dwop_section_names *names = &dwop_section_names;
9883
9884   if (section_is_p (sectp->name, &names->abbrev_dwo))
9885     {
9886       /* There can be only one.  */
9887       if (sections->abbrev.s.asection != NULL)
9888         return 0;
9889       sections->abbrev.s.asection = sectp;
9890       sections->abbrev.size = bfd_get_section_size (sectp);
9891     }
9892   else if (section_is_p (sectp->name, &names->info_dwo)
9893            || section_is_p (sectp->name, &names->types_dwo))
9894     {
9895       /* There can be only one.  */
9896       if (sections->info_or_types.s.asection != NULL)
9897         return 0;
9898       sections->info_or_types.s.asection = sectp;
9899       sections->info_or_types.size = bfd_get_section_size (sectp);
9900     }
9901   else if (section_is_p (sectp->name, &names->line_dwo))
9902     {
9903       /* There can be only one.  */
9904       if (sections->line.s.asection != NULL)
9905         return 0;
9906       sections->line.s.asection = sectp;
9907       sections->line.size = bfd_get_section_size (sectp);
9908     }
9909   else if (section_is_p (sectp->name, &names->loc_dwo))
9910     {
9911       /* There can be only one.  */
9912       if (sections->loc.s.asection != NULL)
9913         return 0;
9914       sections->loc.s.asection = sectp;
9915       sections->loc.size = bfd_get_section_size (sectp);
9916     }
9917   else if (section_is_p (sectp->name, &names->macinfo_dwo))
9918     {
9919       /* There can be only one.  */
9920       if (sections->macinfo.s.asection != NULL)
9921         return 0;
9922       sections->macinfo.s.asection = sectp;
9923       sections->macinfo.size = bfd_get_section_size (sectp);
9924     }
9925   else if (section_is_p (sectp->name, &names->macro_dwo))
9926     {
9927       /* There can be only one.  */
9928       if (sections->macro.s.asection != NULL)
9929         return 0;
9930       sections->macro.s.asection = sectp;
9931       sections->macro.size = bfd_get_section_size (sectp);
9932     }
9933   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
9934     {
9935       /* There can be only one.  */
9936       if (sections->str_offsets.s.asection != NULL)
9937         return 0;
9938       sections->str_offsets.s.asection = sectp;
9939       sections->str_offsets.size = bfd_get_section_size (sectp);
9940     }
9941   else
9942     {
9943       /* No other kind of section is valid.  */
9944       return 0;
9945     }
9946
9947   return 1;
9948 }
9949
9950 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
9951    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
9952    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
9953    This is for DWP version 1 files.  */
9954
9955 static struct dwo_unit *
9956 create_dwo_unit_in_dwp_v1 (struct dwp_file *dwp_file,
9957                            uint32_t unit_index,
9958                            const char *comp_dir,
9959                            ULONGEST signature, int is_debug_types)
9960 {
9961   struct objfile *objfile = dwarf2_per_objfile->objfile;
9962   const struct dwp_hash_table *dwp_htab =
9963     is_debug_types ? dwp_file->tus : dwp_file->cus;
9964   bfd *dbfd = dwp_file->dbfd;
9965   const char *kind = is_debug_types ? "TU" : "CU";
9966   struct dwo_file *dwo_file;
9967   struct dwo_unit *dwo_unit;
9968   struct virtual_v1_dwo_sections sections;
9969   void **dwo_file_slot;
9970   char *virtual_dwo_name;
9971   struct dwarf2_section_info *cutu;
9972   struct cleanup *cleanups;
9973   int i;
9974
9975   gdb_assert (dwp_file->version == 1);
9976
9977   if (dwarf2_read_debug)
9978     {
9979       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
9980                           kind,
9981                           pulongest (unit_index), hex_string (signature),
9982                           dwp_file->name);
9983     }
9984
9985   /* Fetch the sections of this DWO unit.
9986      Put a limit on the number of sections we look for so that bad data
9987      doesn't cause us to loop forever.  */
9988
9989 #define MAX_NR_V1_DWO_SECTIONS \
9990   (1 /* .debug_info or .debug_types */ \
9991    + 1 /* .debug_abbrev */ \
9992    + 1 /* .debug_line */ \
9993    + 1 /* .debug_loc */ \
9994    + 1 /* .debug_str_offsets */ \
9995    + 1 /* .debug_macro or .debug_macinfo */ \
9996    + 1 /* trailing zero */)
9997
9998   memset (&sections, 0, sizeof (sections));
9999   cleanups = make_cleanup (null_cleanup, 0);
10000
10001   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
10002     {
10003       asection *sectp;
10004       uint32_t section_nr =
10005         read_4_bytes (dbfd,
10006                       dwp_htab->section_pool.v1.indices
10007                       + (unit_index + i) * sizeof (uint32_t));
10008
10009       if (section_nr == 0)
10010         break;
10011       if (section_nr >= dwp_file->num_sections)
10012         {
10013           error (_("Dwarf Error: bad DWP hash table, section number too large"
10014                    " [in module %s]"),
10015                  dwp_file->name);
10016         }
10017
10018       sectp = dwp_file->elf_sections[section_nr];
10019       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
10020         {
10021           error (_("Dwarf Error: bad DWP hash table, invalid section found"
10022                    " [in module %s]"),
10023                  dwp_file->name);
10024         }
10025     }
10026
10027   if (i < 2
10028       || dwarf2_section_empty_p (&sections.info_or_types)
10029       || dwarf2_section_empty_p (&sections.abbrev))
10030     {
10031       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
10032                " [in module %s]"),
10033              dwp_file->name);
10034     }
10035   if (i == MAX_NR_V1_DWO_SECTIONS)
10036     {
10037       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
10038                " [in module %s]"),
10039              dwp_file->name);
10040     }
10041
10042   /* It's easier for the rest of the code if we fake a struct dwo_file and
10043      have dwo_unit "live" in that.  At least for now.
10044
10045      The DWP file can be made up of a random collection of CUs and TUs.
10046      However, for each CU + set of TUs that came from the same original DWO
10047      file, we can combine them back into a virtual DWO file to save space
10048      (fewer struct dwo_file objects to allocate).  Remember that for really
10049      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
10050
10051   virtual_dwo_name =
10052     xstrprintf ("virtual-dwo/%d-%d-%d-%d",
10053                 get_section_id (&sections.abbrev),
10054                 get_section_id (&sections.line),
10055                 get_section_id (&sections.loc),
10056                 get_section_id (&sections.str_offsets));
10057   make_cleanup (xfree, virtual_dwo_name);
10058   /* Can we use an existing virtual DWO file?  */
10059   dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
10060   /* Create one if necessary.  */
10061   if (*dwo_file_slot == NULL)
10062     {
10063       if (dwarf2_read_debug)
10064         {
10065           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
10066                               virtual_dwo_name);
10067         }
10068       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
10069       dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
10070                                           virtual_dwo_name,
10071                                           strlen (virtual_dwo_name));
10072       dwo_file->comp_dir = comp_dir;
10073       dwo_file->sections.abbrev = sections.abbrev;
10074       dwo_file->sections.line = sections.line;
10075       dwo_file->sections.loc = sections.loc;
10076       dwo_file->sections.macinfo = sections.macinfo;
10077       dwo_file->sections.macro = sections.macro;
10078       dwo_file->sections.str_offsets = sections.str_offsets;
10079       /* The "str" section is global to the entire DWP file.  */
10080       dwo_file->sections.str = dwp_file->sections.str;
10081       /* The info or types section is assigned below to dwo_unit,
10082          there's no need to record it in dwo_file.
10083          Also, we can't simply record type sections in dwo_file because
10084          we record a pointer into the vector in dwo_unit.  As we collect more
10085          types we'll grow the vector and eventually have to reallocate space
10086          for it, invalidating all copies of pointers into the previous
10087          contents.  */
10088       *dwo_file_slot = dwo_file;
10089     }
10090   else
10091     {
10092       if (dwarf2_read_debug)
10093         {
10094           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10095                               virtual_dwo_name);
10096         }
10097       dwo_file = *dwo_file_slot;
10098     }
10099   do_cleanups (cleanups);
10100
10101   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10102   dwo_unit->dwo_file = dwo_file;
10103   dwo_unit->signature = signature;
10104   dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
10105                                      sizeof (struct dwarf2_section_info));
10106   *dwo_unit->section = sections.info_or_types;
10107   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
10108
10109   return dwo_unit;
10110 }
10111
10112 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
10113    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
10114    piece within that section used by a TU/CU, return a virtual section
10115    of just that piece.  */
10116
10117 static struct dwarf2_section_info
10118 create_dwp_v2_section (struct dwarf2_section_info *section,
10119                        bfd_size_type offset, bfd_size_type size)
10120 {
10121   struct dwarf2_section_info result;
10122   asection *sectp;
10123
10124   gdb_assert (section != NULL);
10125   gdb_assert (!section->is_virtual);
10126
10127   memset (&result, 0, sizeof (result));
10128   result.s.containing_section = section;
10129   result.is_virtual = 1;
10130
10131   if (size == 0)
10132     return result;
10133
10134   sectp = get_section_bfd_section (section);
10135
10136   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
10137      bounds of the real section.  This is a pretty-rare event, so just
10138      flag an error (easier) instead of a warning and trying to cope.  */
10139   if (sectp == NULL
10140       || offset + size > bfd_get_section_size (sectp))
10141     {
10142       bfd *abfd = sectp->owner;
10143
10144       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
10145                " in section %s [in module %s]"),
10146              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
10147              objfile_name (dwarf2_per_objfile->objfile));
10148     }
10149
10150   result.virtual_offset = offset;
10151   result.size = size;
10152   return result;
10153 }
10154
10155 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
10156    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
10157    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
10158    This is for DWP version 2 files.  */
10159
10160 static struct dwo_unit *
10161 create_dwo_unit_in_dwp_v2 (struct dwp_file *dwp_file,
10162                            uint32_t unit_index,
10163                            const char *comp_dir,
10164                            ULONGEST signature, int is_debug_types)
10165 {
10166   struct objfile *objfile = dwarf2_per_objfile->objfile;
10167   const struct dwp_hash_table *dwp_htab =
10168     is_debug_types ? dwp_file->tus : dwp_file->cus;
10169   bfd *dbfd = dwp_file->dbfd;
10170   const char *kind = is_debug_types ? "TU" : "CU";
10171   struct dwo_file *dwo_file;
10172   struct dwo_unit *dwo_unit;
10173   struct virtual_v2_dwo_sections sections;
10174   void **dwo_file_slot;
10175   char *virtual_dwo_name;
10176   struct dwarf2_section_info *cutu;
10177   struct cleanup *cleanups;
10178   int i;
10179
10180   gdb_assert (dwp_file->version == 2);
10181
10182   if (dwarf2_read_debug)
10183     {
10184       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
10185                           kind,
10186                           pulongest (unit_index), hex_string (signature),
10187                           dwp_file->name);
10188     }
10189
10190   /* Fetch the section offsets of this DWO unit.  */
10191
10192   memset (&sections, 0, sizeof (sections));
10193   cleanups = make_cleanup (null_cleanup, 0);
10194
10195   for (i = 0; i < dwp_htab->nr_columns; ++i)
10196     {
10197       uint32_t offset = read_4_bytes (dbfd,
10198                                       dwp_htab->section_pool.v2.offsets
10199                                       + (((unit_index - 1) * dwp_htab->nr_columns
10200                                           + i)
10201                                          * sizeof (uint32_t)));
10202       uint32_t size = read_4_bytes (dbfd,
10203                                     dwp_htab->section_pool.v2.sizes
10204                                     + (((unit_index - 1) * dwp_htab->nr_columns
10205                                         + i)
10206                                        * sizeof (uint32_t)));
10207
10208       switch (dwp_htab->section_pool.v2.section_ids[i])
10209         {
10210         case DW_SECT_INFO:
10211         case DW_SECT_TYPES:
10212           sections.info_or_types_offset = offset;
10213           sections.info_or_types_size = size;
10214           break;
10215         case DW_SECT_ABBREV:
10216           sections.abbrev_offset = offset;
10217           sections.abbrev_size = size;
10218           break;
10219         case DW_SECT_LINE:
10220           sections.line_offset = offset;
10221           sections.line_size = size;
10222           break;
10223         case DW_SECT_LOC:
10224           sections.loc_offset = offset;
10225           sections.loc_size = size;
10226           break;
10227         case DW_SECT_STR_OFFSETS:
10228           sections.str_offsets_offset = offset;
10229           sections.str_offsets_size = size;
10230           break;
10231         case DW_SECT_MACINFO:
10232           sections.macinfo_offset = offset;
10233           sections.macinfo_size = size;
10234           break;
10235         case DW_SECT_MACRO:
10236           sections.macro_offset = offset;
10237           sections.macro_size = size;
10238           break;
10239         }
10240     }
10241
10242   /* It's easier for the rest of the code if we fake a struct dwo_file and
10243      have dwo_unit "live" in that.  At least for now.
10244
10245      The DWP file can be made up of a random collection of CUs and TUs.
10246      However, for each CU + set of TUs that came from the same original DWO
10247      file, we can combine them back into a virtual DWO file to save space
10248      (fewer struct dwo_file objects to allocate).  Remember that for really
10249      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
10250
10251   virtual_dwo_name =
10252     xstrprintf ("virtual-dwo/%ld-%ld-%ld-%ld",
10253                 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
10254                 (long) (sections.line_size ? sections.line_offset : 0),
10255                 (long) (sections.loc_size ? sections.loc_offset : 0),
10256                 (long) (sections.str_offsets_size
10257                         ? sections.str_offsets_offset : 0));
10258   make_cleanup (xfree, virtual_dwo_name);
10259   /* Can we use an existing virtual DWO file?  */
10260   dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
10261   /* Create one if necessary.  */
10262   if (*dwo_file_slot == NULL)
10263     {
10264       if (dwarf2_read_debug)
10265         {
10266           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
10267                               virtual_dwo_name);
10268         }
10269       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
10270       dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
10271                                           virtual_dwo_name,
10272                                           strlen (virtual_dwo_name));
10273       dwo_file->comp_dir = comp_dir;
10274       dwo_file->sections.abbrev =
10275         create_dwp_v2_section (&dwp_file->sections.abbrev,
10276                                sections.abbrev_offset, sections.abbrev_size);
10277       dwo_file->sections.line =
10278         create_dwp_v2_section (&dwp_file->sections.line,
10279                                sections.line_offset, sections.line_size);
10280       dwo_file->sections.loc =
10281         create_dwp_v2_section (&dwp_file->sections.loc,
10282                                sections.loc_offset, sections.loc_size);
10283       dwo_file->sections.macinfo =
10284         create_dwp_v2_section (&dwp_file->sections.macinfo,
10285                                sections.macinfo_offset, sections.macinfo_size);
10286       dwo_file->sections.macro =
10287         create_dwp_v2_section (&dwp_file->sections.macro,
10288                                sections.macro_offset, sections.macro_size);
10289       dwo_file->sections.str_offsets =
10290         create_dwp_v2_section (&dwp_file->sections.str_offsets,
10291                                sections.str_offsets_offset,
10292                                sections.str_offsets_size);
10293       /* The "str" section is global to the entire DWP file.  */
10294       dwo_file->sections.str = dwp_file->sections.str;
10295       /* The info or types section is assigned below to dwo_unit,
10296          there's no need to record it in dwo_file.
10297          Also, we can't simply record type sections in dwo_file because
10298          we record a pointer into the vector in dwo_unit.  As we collect more
10299          types we'll grow the vector and eventually have to reallocate space
10300          for it, invalidating all copies of pointers into the previous
10301          contents.  */
10302       *dwo_file_slot = dwo_file;
10303     }
10304   else
10305     {
10306       if (dwarf2_read_debug)
10307         {
10308           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10309                               virtual_dwo_name);
10310         }
10311       dwo_file = *dwo_file_slot;
10312     }
10313   do_cleanups (cleanups);
10314
10315   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10316   dwo_unit->dwo_file = dwo_file;
10317   dwo_unit->signature = signature;
10318   dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
10319                                      sizeof (struct dwarf2_section_info));
10320   *dwo_unit->section = create_dwp_v2_section (is_debug_types
10321                                               ? &dwp_file->sections.types
10322                                               : &dwp_file->sections.info,
10323                                               sections.info_or_types_offset,
10324                                               sections.info_or_types_size);
10325   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
10326
10327   return dwo_unit;
10328 }
10329
10330 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
10331    Returns NULL if the signature isn't found.  */
10332
10333 static struct dwo_unit *
10334 lookup_dwo_unit_in_dwp (struct dwp_file *dwp_file, const char *comp_dir,
10335                         ULONGEST signature, int is_debug_types)
10336 {
10337   const struct dwp_hash_table *dwp_htab =
10338     is_debug_types ? dwp_file->tus : dwp_file->cus;
10339   bfd *dbfd = dwp_file->dbfd;
10340   uint32_t mask = dwp_htab->nr_slots - 1;
10341   uint32_t hash = signature & mask;
10342   uint32_t hash2 = ((signature >> 32) & mask) | 1;
10343   unsigned int i;
10344   void **slot;
10345   struct dwo_unit find_dwo_cu, *dwo_cu;
10346
10347   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
10348   find_dwo_cu.signature = signature;
10349   slot = htab_find_slot (is_debug_types
10350                          ? dwp_file->loaded_tus
10351                          : dwp_file->loaded_cus,
10352                          &find_dwo_cu, INSERT);
10353
10354   if (*slot != NULL)
10355     return *slot;
10356
10357   /* Use a for loop so that we don't loop forever on bad debug info.  */
10358   for (i = 0; i < dwp_htab->nr_slots; ++i)
10359     {
10360       ULONGEST signature_in_table;
10361
10362       signature_in_table =
10363         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
10364       if (signature_in_table == signature)
10365         {
10366           uint32_t unit_index =
10367             read_4_bytes (dbfd,
10368                           dwp_htab->unit_table + hash * sizeof (uint32_t));
10369
10370           if (dwp_file->version == 1)
10371             {
10372               *slot = create_dwo_unit_in_dwp_v1 (dwp_file, unit_index,
10373                                                  comp_dir, signature,
10374                                                  is_debug_types);
10375             }
10376           else
10377             {
10378               *slot = create_dwo_unit_in_dwp_v2 (dwp_file, unit_index,
10379                                                  comp_dir, signature,
10380                                                  is_debug_types);
10381             }
10382           return *slot;
10383         }
10384       if (signature_in_table == 0)
10385         return NULL;
10386       hash = (hash + hash2) & mask;
10387     }
10388
10389   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
10390            " [in module %s]"),
10391          dwp_file->name);
10392 }
10393
10394 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
10395    Open the file specified by FILE_NAME and hand it off to BFD for
10396    preliminary analysis.  Return a newly initialized bfd *, which
10397    includes a canonicalized copy of FILE_NAME.
10398    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
10399    SEARCH_CWD is true if the current directory is to be searched.
10400    It will be searched before debug-file-directory.
10401    If successful, the file is added to the bfd include table of the
10402    objfile's bfd (see gdb_bfd_record_inclusion).
10403    If unable to find/open the file, return NULL.
10404    NOTE: This function is derived from symfile_bfd_open.  */
10405
10406 static bfd *
10407 try_open_dwop_file (const char *file_name, int is_dwp, int search_cwd)
10408 {
10409   bfd *sym_bfd;
10410   int desc, flags;
10411   char *absolute_name;
10412   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
10413      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
10414      to debug_file_directory.  */
10415   char *search_path;
10416   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
10417
10418   if (search_cwd)
10419     {
10420       if (*debug_file_directory != '\0')
10421         search_path = concat (".", dirname_separator_string,
10422                               debug_file_directory, NULL);
10423       else
10424         search_path = xstrdup (".");
10425     }
10426   else
10427     search_path = xstrdup (debug_file_directory);
10428
10429   flags = OPF_RETURN_REALPATH;
10430   if (is_dwp)
10431     flags |= OPF_SEARCH_IN_PATH;
10432   desc = openp (search_path, flags, file_name,
10433                 O_RDONLY | O_BINARY, &absolute_name);
10434   xfree (search_path);
10435   if (desc < 0)
10436     return NULL;
10437
10438   sym_bfd = gdb_bfd_open (absolute_name, gnutarget, desc);
10439   xfree (absolute_name);
10440   if (sym_bfd == NULL)
10441     return NULL;
10442   bfd_set_cacheable (sym_bfd, 1);
10443
10444   if (!bfd_check_format (sym_bfd, bfd_object))
10445     {
10446       gdb_bfd_unref (sym_bfd); /* This also closes desc.  */
10447       return NULL;
10448     }
10449
10450   /* Success.  Record the bfd as having been included by the objfile's bfd.
10451      This is important because things like demangled_names_hash lives in the
10452      objfile's per_bfd space and may have references to things like symbol
10453      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
10454   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd);
10455
10456   return sym_bfd;
10457 }
10458
10459 /* Try to open DWO file FILE_NAME.
10460    COMP_DIR is the DW_AT_comp_dir attribute.
10461    The result is the bfd handle of the file.
10462    If there is a problem finding or opening the file, return NULL.
10463    Upon success, the canonicalized path of the file is stored in the bfd,
10464    same as symfile_bfd_open.  */
10465
10466 static bfd *
10467 open_dwo_file (const char *file_name, const char *comp_dir)
10468 {
10469   bfd *abfd;
10470
10471   if (IS_ABSOLUTE_PATH (file_name))
10472     return try_open_dwop_file (file_name, 0 /*is_dwp*/, 0 /*search_cwd*/);
10473
10474   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
10475
10476   if (comp_dir != NULL)
10477     {
10478       char *path_to_try = concat (comp_dir, SLASH_STRING, file_name, NULL);
10479
10480       /* NOTE: If comp_dir is a relative path, this will also try the
10481          search path, which seems useful.  */
10482       abfd = try_open_dwop_file (path_to_try, 0 /*is_dwp*/, 1 /*search_cwd*/);
10483       xfree (path_to_try);
10484       if (abfd != NULL)
10485         return abfd;
10486     }
10487
10488   /* That didn't work, try debug-file-directory, which, despite its name,
10489      is a list of paths.  */
10490
10491   if (*debug_file_directory == '\0')
10492     return NULL;
10493
10494   return try_open_dwop_file (file_name, 0 /*is_dwp*/, 1 /*search_cwd*/);
10495 }
10496
10497 /* This function is mapped across the sections and remembers the offset and
10498    size of each of the DWO debugging sections we are interested in.  */
10499
10500 static void
10501 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
10502 {
10503   struct dwo_sections *dwo_sections = dwo_sections_ptr;
10504   const struct dwop_section_names *names = &dwop_section_names;
10505
10506   if (section_is_p (sectp->name, &names->abbrev_dwo))
10507     {
10508       dwo_sections->abbrev.s.asection = sectp;
10509       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
10510     }
10511   else if (section_is_p (sectp->name, &names->info_dwo))
10512     {
10513       dwo_sections->info.s.asection = sectp;
10514       dwo_sections->info.size = bfd_get_section_size (sectp);
10515     }
10516   else if (section_is_p (sectp->name, &names->line_dwo))
10517     {
10518       dwo_sections->line.s.asection = sectp;
10519       dwo_sections->line.size = bfd_get_section_size (sectp);
10520     }
10521   else if (section_is_p (sectp->name, &names->loc_dwo))
10522     {
10523       dwo_sections->loc.s.asection = sectp;
10524       dwo_sections->loc.size = bfd_get_section_size (sectp);
10525     }
10526   else if (section_is_p (sectp->name, &names->macinfo_dwo))
10527     {
10528       dwo_sections->macinfo.s.asection = sectp;
10529       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
10530     }
10531   else if (section_is_p (sectp->name, &names->macro_dwo))
10532     {
10533       dwo_sections->macro.s.asection = sectp;
10534       dwo_sections->macro.size = bfd_get_section_size (sectp);
10535     }
10536   else if (section_is_p (sectp->name, &names->str_dwo))
10537     {
10538       dwo_sections->str.s.asection = sectp;
10539       dwo_sections->str.size = bfd_get_section_size (sectp);
10540     }
10541   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10542     {
10543       dwo_sections->str_offsets.s.asection = sectp;
10544       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
10545     }
10546   else if (section_is_p (sectp->name, &names->types_dwo))
10547     {
10548       struct dwarf2_section_info type_section;
10549
10550       memset (&type_section, 0, sizeof (type_section));
10551       type_section.s.asection = sectp;
10552       type_section.size = bfd_get_section_size (sectp);
10553       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
10554                      &type_section);
10555     }
10556 }
10557
10558 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
10559    by PER_CU.  This is for the non-DWP case.
10560    The result is NULL if DWO_NAME can't be found.  */
10561
10562 static struct dwo_file *
10563 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
10564                         const char *dwo_name, const char *comp_dir)
10565 {
10566   struct objfile *objfile = dwarf2_per_objfile->objfile;
10567   struct dwo_file *dwo_file;
10568   bfd *dbfd;
10569   struct cleanup *cleanups;
10570
10571   dbfd = open_dwo_file (dwo_name, comp_dir);
10572   if (dbfd == NULL)
10573     {
10574       if (dwarf2_read_debug)
10575         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
10576       return NULL;
10577     }
10578   dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
10579   dwo_file->dwo_name = dwo_name;
10580   dwo_file->comp_dir = comp_dir;
10581   dwo_file->dbfd = dbfd;
10582
10583   cleanups = make_cleanup (free_dwo_file_cleanup, dwo_file);
10584
10585   bfd_map_over_sections (dbfd, dwarf2_locate_dwo_sections, &dwo_file->sections);
10586
10587   dwo_file->cu = create_dwo_cu (dwo_file);
10588
10589   dwo_file->tus = create_debug_types_hash_table (dwo_file,
10590                                                  dwo_file->sections.types);
10591
10592   discard_cleanups (cleanups);
10593
10594   if (dwarf2_read_debug)
10595     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
10596
10597   return dwo_file;
10598 }
10599
10600 /* This function is mapped across the sections and remembers the offset and
10601    size of each of the DWP debugging sections common to version 1 and 2 that
10602    we are interested in.  */
10603
10604 static void
10605 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
10606                                    void *dwp_file_ptr)
10607 {
10608   struct dwp_file *dwp_file = dwp_file_ptr;
10609   const struct dwop_section_names *names = &dwop_section_names;
10610   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10611
10612   /* Record the ELF section number for later lookup: this is what the
10613      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
10614   gdb_assert (elf_section_nr < dwp_file->num_sections);
10615   dwp_file->elf_sections[elf_section_nr] = sectp;
10616
10617   /* Look for specific sections that we need.  */
10618   if (section_is_p (sectp->name, &names->str_dwo))
10619     {
10620       dwp_file->sections.str.s.asection = sectp;
10621       dwp_file->sections.str.size = bfd_get_section_size (sectp);
10622     }
10623   else if (section_is_p (sectp->name, &names->cu_index))
10624     {
10625       dwp_file->sections.cu_index.s.asection = sectp;
10626       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
10627     }
10628   else if (section_is_p (sectp->name, &names->tu_index))
10629     {
10630       dwp_file->sections.tu_index.s.asection = sectp;
10631       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
10632     }
10633 }
10634
10635 /* This function is mapped across the sections and remembers the offset and
10636    size of each of the DWP version 2 debugging sections that we are interested
10637    in.  This is split into a separate function because we don't know if we
10638    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
10639
10640 static void
10641 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
10642 {
10643   struct dwp_file *dwp_file = dwp_file_ptr;
10644   const struct dwop_section_names *names = &dwop_section_names;
10645   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10646
10647   /* Record the ELF section number for later lookup: this is what the
10648      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
10649   gdb_assert (elf_section_nr < dwp_file->num_sections);
10650   dwp_file->elf_sections[elf_section_nr] = sectp;
10651
10652   /* Look for specific sections that we need.  */
10653   if (section_is_p (sectp->name, &names->abbrev_dwo))
10654     {
10655       dwp_file->sections.abbrev.s.asection = sectp;
10656       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
10657     }
10658   else if (section_is_p (sectp->name, &names->info_dwo))
10659     {
10660       dwp_file->sections.info.s.asection = sectp;
10661       dwp_file->sections.info.size = bfd_get_section_size (sectp);
10662     }
10663   else if (section_is_p (sectp->name, &names->line_dwo))
10664     {
10665       dwp_file->sections.line.s.asection = sectp;
10666       dwp_file->sections.line.size = bfd_get_section_size (sectp);
10667     }
10668   else if (section_is_p (sectp->name, &names->loc_dwo))
10669     {
10670       dwp_file->sections.loc.s.asection = sectp;
10671       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
10672     }
10673   else if (section_is_p (sectp->name, &names->macinfo_dwo))
10674     {
10675       dwp_file->sections.macinfo.s.asection = sectp;
10676       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
10677     }
10678   else if (section_is_p (sectp->name, &names->macro_dwo))
10679     {
10680       dwp_file->sections.macro.s.asection = sectp;
10681       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
10682     }
10683   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10684     {
10685       dwp_file->sections.str_offsets.s.asection = sectp;
10686       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
10687     }
10688   else if (section_is_p (sectp->name, &names->types_dwo))
10689     {
10690       dwp_file->sections.types.s.asection = sectp;
10691       dwp_file->sections.types.size = bfd_get_section_size (sectp);
10692     }
10693 }
10694
10695 /* Hash function for dwp_file loaded CUs/TUs.  */
10696
10697 static hashval_t
10698 hash_dwp_loaded_cutus (const void *item)
10699 {
10700   const struct dwo_unit *dwo_unit = item;
10701
10702   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
10703   return dwo_unit->signature;
10704 }
10705
10706 /* Equality function for dwp_file loaded CUs/TUs.  */
10707
10708 static int
10709 eq_dwp_loaded_cutus (const void *a, const void *b)
10710 {
10711   const struct dwo_unit *dua = a;
10712   const struct dwo_unit *dub = b;
10713
10714   return dua->signature == dub->signature;
10715 }
10716
10717 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
10718
10719 static htab_t
10720 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
10721 {
10722   return htab_create_alloc_ex (3,
10723                                hash_dwp_loaded_cutus,
10724                                eq_dwp_loaded_cutus,
10725                                NULL,
10726                                &objfile->objfile_obstack,
10727                                hashtab_obstack_allocate,
10728                                dummy_obstack_deallocate);
10729 }
10730
10731 /* Try to open DWP file FILE_NAME.
10732    The result is the bfd handle of the file.
10733    If there is a problem finding or opening the file, return NULL.
10734    Upon success, the canonicalized path of the file is stored in the bfd,
10735    same as symfile_bfd_open.  */
10736
10737 static bfd *
10738 open_dwp_file (const char *file_name)
10739 {
10740   bfd *abfd;
10741
10742   abfd = try_open_dwop_file (file_name, 1 /*is_dwp*/, 1 /*search_cwd*/);
10743   if (abfd != NULL)
10744     return abfd;
10745
10746   /* Work around upstream bug 15652.
10747      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
10748      [Whether that's a "bug" is debatable, but it is getting in our way.]
10749      We have no real idea where the dwp file is, because gdb's realpath-ing
10750      of the executable's path may have discarded the needed info.
10751      [IWBN if the dwp file name was recorded in the executable, akin to
10752      .gnu_debuglink, but that doesn't exist yet.]
10753      Strip the directory from FILE_NAME and search again.  */
10754   if (*debug_file_directory != '\0')
10755     {
10756       /* Don't implicitly search the current directory here.
10757          If the user wants to search "." to handle this case,
10758          it must be added to debug-file-directory.  */
10759       return try_open_dwop_file (lbasename (file_name), 1 /*is_dwp*/,
10760                                  0 /*search_cwd*/);
10761     }
10762
10763   return NULL;
10764 }
10765
10766 /* Initialize the use of the DWP file for the current objfile.
10767    By convention the name of the DWP file is ${objfile}.dwp.
10768    The result is NULL if it can't be found.  */
10769
10770 static struct dwp_file *
10771 open_and_init_dwp_file (void)
10772 {
10773   struct objfile *objfile = dwarf2_per_objfile->objfile;
10774   struct dwp_file *dwp_file;
10775   char *dwp_name;
10776   bfd *dbfd;
10777   struct cleanup *cleanups;
10778
10779   /* Try to find first .dwp for the binary file before any symbolic links
10780      resolving.  */
10781   dwp_name = xstrprintf ("%s.dwp", objfile->original_name);
10782   cleanups = make_cleanup (xfree, dwp_name);
10783
10784   dbfd = open_dwp_file (dwp_name);
10785   if (dbfd == NULL
10786       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
10787     {
10788       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
10789       dwp_name = xstrprintf ("%s.dwp", objfile_name (objfile));
10790       make_cleanup (xfree, dwp_name);
10791       dbfd = open_dwp_file (dwp_name);
10792     }
10793
10794   if (dbfd == NULL)
10795     {
10796       if (dwarf2_read_debug)
10797         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name);
10798       do_cleanups (cleanups);
10799       return NULL;
10800     }
10801   dwp_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_file);
10802   dwp_file->name = bfd_get_filename (dbfd);
10803   dwp_file->dbfd = dbfd;
10804   do_cleanups (cleanups);
10805
10806   /* +1: section 0 is unused */
10807   dwp_file->num_sections = bfd_count_sections (dbfd) + 1;
10808   dwp_file->elf_sections =
10809     OBSTACK_CALLOC (&objfile->objfile_obstack,
10810                     dwp_file->num_sections, asection *);
10811
10812   bfd_map_over_sections (dbfd, dwarf2_locate_common_dwp_sections, dwp_file);
10813
10814   dwp_file->cus = create_dwp_hash_table (dwp_file, 0);
10815
10816   dwp_file->tus = create_dwp_hash_table (dwp_file, 1);
10817
10818   /* The DWP file version is stored in the hash table.  Oh well.  */
10819   if (dwp_file->cus->version != dwp_file->tus->version)
10820     {
10821       /* Technically speaking, we should try to limp along, but this is
10822          pretty bizarre.  We use pulongest here because that's the established
10823          portability solution (e.g, we cannot use %u for uint32_t).  */
10824       error (_("Dwarf Error: DWP file CU version %s doesn't match"
10825                " TU version %s [in DWP file %s]"),
10826              pulongest (dwp_file->cus->version),
10827              pulongest (dwp_file->tus->version), dwp_name);
10828     }
10829   dwp_file->version = dwp_file->cus->version;
10830
10831   if (dwp_file->version == 2)
10832     bfd_map_over_sections (dbfd, dwarf2_locate_v2_dwp_sections, dwp_file);
10833
10834   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
10835   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
10836
10837   if (dwarf2_read_debug)
10838     {
10839       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
10840       fprintf_unfiltered (gdb_stdlog,
10841                           "    %s CUs, %s TUs\n",
10842                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
10843                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
10844     }
10845
10846   return dwp_file;
10847 }
10848
10849 /* Wrapper around open_and_init_dwp_file, only open it once.  */
10850
10851 static struct dwp_file *
10852 get_dwp_file (void)
10853 {
10854   if (! dwarf2_per_objfile->dwp_checked)
10855     {
10856       dwarf2_per_objfile->dwp_file = open_and_init_dwp_file ();
10857       dwarf2_per_objfile->dwp_checked = 1;
10858     }
10859   return dwarf2_per_objfile->dwp_file;
10860 }
10861
10862 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
10863    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
10864    or in the DWP file for the objfile, referenced by THIS_UNIT.
10865    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
10866    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
10867
10868    This is called, for example, when wanting to read a variable with a
10869    complex location.  Therefore we don't want to do file i/o for every call.
10870    Therefore we don't want to look for a DWO file on every call.
10871    Therefore we first see if we've already seen SIGNATURE in a DWP file,
10872    then we check if we've already seen DWO_NAME, and only THEN do we check
10873    for a DWO file.
10874
10875    The result is a pointer to the dwo_unit object or NULL if we didn't find it
10876    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
10877
10878 static struct dwo_unit *
10879 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
10880                  const char *dwo_name, const char *comp_dir,
10881                  ULONGEST signature, int is_debug_types)
10882 {
10883   struct objfile *objfile = dwarf2_per_objfile->objfile;
10884   const char *kind = is_debug_types ? "TU" : "CU";
10885   void **dwo_file_slot;
10886   struct dwo_file *dwo_file;
10887   struct dwp_file *dwp_file;
10888
10889   /* First see if there's a DWP file.
10890      If we have a DWP file but didn't find the DWO inside it, don't
10891      look for the original DWO file.  It makes gdb behave differently
10892      depending on whether one is debugging in the build tree.  */
10893
10894   dwp_file = get_dwp_file ();
10895   if (dwp_file != NULL)
10896     {
10897       const struct dwp_hash_table *dwp_htab =
10898         is_debug_types ? dwp_file->tus : dwp_file->cus;
10899
10900       if (dwp_htab != NULL)
10901         {
10902           struct dwo_unit *dwo_cutu =
10903             lookup_dwo_unit_in_dwp (dwp_file, comp_dir,
10904                                     signature, is_debug_types);
10905
10906           if (dwo_cutu != NULL)
10907             {
10908               if (dwarf2_read_debug)
10909                 {
10910                   fprintf_unfiltered (gdb_stdlog,
10911                                       "Virtual DWO %s %s found: @%s\n",
10912                                       kind, hex_string (signature),
10913                                       host_address_to_string (dwo_cutu));
10914                 }
10915               return dwo_cutu;
10916             }
10917         }
10918     }
10919   else
10920     {
10921       /* No DWP file, look for the DWO file.  */
10922
10923       dwo_file_slot = lookup_dwo_file_slot (dwo_name, comp_dir);
10924       if (*dwo_file_slot == NULL)
10925         {
10926           /* Read in the file and build a table of the CUs/TUs it contains.  */
10927           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
10928         }
10929       /* NOTE: This will be NULL if unable to open the file.  */
10930       dwo_file = *dwo_file_slot;
10931
10932       if (dwo_file != NULL)
10933         {
10934           struct dwo_unit *dwo_cutu = NULL;
10935
10936           if (is_debug_types && dwo_file->tus)
10937             {
10938               struct dwo_unit find_dwo_cutu;
10939
10940               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
10941               find_dwo_cutu.signature = signature;
10942               dwo_cutu = htab_find (dwo_file->tus, &find_dwo_cutu);
10943             }
10944           else if (!is_debug_types && dwo_file->cu)
10945             {
10946               if (signature == dwo_file->cu->signature)
10947                 dwo_cutu = dwo_file->cu;
10948             }
10949
10950           if (dwo_cutu != NULL)
10951             {
10952               if (dwarf2_read_debug)
10953                 {
10954                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
10955                                       kind, dwo_name, hex_string (signature),
10956                                       host_address_to_string (dwo_cutu));
10957                 }
10958               return dwo_cutu;
10959             }
10960         }
10961     }
10962
10963   /* We didn't find it.  This could mean a dwo_id mismatch, or
10964      someone deleted the DWO/DWP file, or the search path isn't set up
10965      correctly to find the file.  */
10966
10967   if (dwarf2_read_debug)
10968     {
10969       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
10970                           kind, dwo_name, hex_string (signature));
10971     }
10972
10973   /* This is a warning and not a complaint because it can be caused by
10974      pilot error (e.g., user accidentally deleting the DWO).  */
10975   {
10976     /* Print the name of the DWP file if we looked there, helps the user
10977        better diagnose the problem.  */
10978     char *dwp_text = NULL;
10979     struct cleanup *cleanups;
10980
10981     if (dwp_file != NULL)
10982       dwp_text = xstrprintf (" [in DWP file %s]", lbasename (dwp_file->name));
10983     cleanups = make_cleanup (xfree, dwp_text);
10984
10985     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset 0x%x"
10986                " [in module %s]"),
10987              kind, dwo_name, hex_string (signature),
10988              dwp_text != NULL ? dwp_text : "",
10989              this_unit->is_debug_types ? "TU" : "CU",
10990              this_unit->offset.sect_off, objfile_name (objfile));
10991
10992     do_cleanups (cleanups);
10993   }
10994   return NULL;
10995 }
10996
10997 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
10998    See lookup_dwo_cutu_unit for details.  */
10999
11000 static struct dwo_unit *
11001 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
11002                       const char *dwo_name, const char *comp_dir,
11003                       ULONGEST signature)
11004 {
11005   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
11006 }
11007
11008 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
11009    See lookup_dwo_cutu_unit for details.  */
11010
11011 static struct dwo_unit *
11012 lookup_dwo_type_unit (struct signatured_type *this_tu,
11013                       const char *dwo_name, const char *comp_dir)
11014 {
11015   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
11016 }
11017
11018 /* Traversal function for queue_and_load_all_dwo_tus.  */
11019
11020 static int
11021 queue_and_load_dwo_tu (void **slot, void *info)
11022 {
11023   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
11024   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
11025   ULONGEST signature = dwo_unit->signature;
11026   struct signatured_type *sig_type =
11027     lookup_dwo_signatured_type (per_cu->cu, signature);
11028
11029   if (sig_type != NULL)
11030     {
11031       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
11032
11033       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
11034          a real dependency of PER_CU on SIG_TYPE.  That is detected later
11035          while processing PER_CU.  */
11036       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
11037         load_full_type_unit (sig_cu);
11038       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
11039     }
11040
11041   return 1;
11042 }
11043
11044 /* Queue all TUs contained in the DWO of PER_CU to be read in.
11045    The DWO may have the only definition of the type, though it may not be
11046    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
11047    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
11048
11049 static void
11050 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
11051 {
11052   struct dwo_unit *dwo_unit;
11053   struct dwo_file *dwo_file;
11054
11055   gdb_assert (!per_cu->is_debug_types);
11056   gdb_assert (get_dwp_file () == NULL);
11057   gdb_assert (per_cu->cu != NULL);
11058
11059   dwo_unit = per_cu->cu->dwo_unit;
11060   gdb_assert (dwo_unit != NULL);
11061
11062   dwo_file = dwo_unit->dwo_file;
11063   if (dwo_file->tus != NULL)
11064     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
11065 }
11066
11067 /* Free all resources associated with DWO_FILE.
11068    Close the DWO file and munmap the sections.
11069    All memory should be on the objfile obstack.  */
11070
11071 static void
11072 free_dwo_file (struct dwo_file *dwo_file, struct objfile *objfile)
11073 {
11074   int ix;
11075   struct dwarf2_section_info *section;
11076
11077   /* Note: dbfd is NULL for virtual DWO files.  */
11078   gdb_bfd_unref (dwo_file->dbfd);
11079
11080   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
11081 }
11082
11083 /* Wrapper for free_dwo_file for use in cleanups.  */
11084
11085 static void
11086 free_dwo_file_cleanup (void *arg)
11087 {
11088   struct dwo_file *dwo_file = (struct dwo_file *) arg;
11089   struct objfile *objfile = dwarf2_per_objfile->objfile;
11090
11091   free_dwo_file (dwo_file, objfile);
11092 }
11093
11094 /* Traversal function for free_dwo_files.  */
11095
11096 static int
11097 free_dwo_file_from_slot (void **slot, void *info)
11098 {
11099   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
11100   struct objfile *objfile = (struct objfile *) info;
11101
11102   free_dwo_file (dwo_file, objfile);
11103
11104   return 1;
11105 }
11106
11107 /* Free all resources associated with DWO_FILES.  */
11108
11109 static void
11110 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
11111 {
11112   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
11113 }
11114 \f
11115 /* Read in various DIEs.  */
11116
11117 /* qsort helper for inherit_abstract_dies.  */
11118
11119 static int
11120 unsigned_int_compar (const void *ap, const void *bp)
11121 {
11122   unsigned int a = *(unsigned int *) ap;
11123   unsigned int b = *(unsigned int *) bp;
11124
11125   return (a > b) - (b > a);
11126 }
11127
11128 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
11129    Inherit only the children of the DW_AT_abstract_origin DIE not being
11130    already referenced by DW_AT_abstract_origin from the children of the
11131    current DIE.  */
11132
11133 static void
11134 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
11135 {
11136   struct die_info *child_die;
11137   unsigned die_children_count;
11138   /* CU offsets which were referenced by children of the current DIE.  */
11139   sect_offset *offsets;
11140   sect_offset *offsets_end, *offsetp;
11141   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
11142   struct die_info *origin_die;
11143   /* Iterator of the ORIGIN_DIE children.  */
11144   struct die_info *origin_child_die;
11145   struct cleanup *cleanups;
11146   struct attribute *attr;
11147   struct dwarf2_cu *origin_cu;
11148   struct pending **origin_previous_list_in_scope;
11149
11150   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11151   if (!attr)
11152     return;
11153
11154   /* Note that following die references may follow to a die in a
11155      different cu.  */
11156
11157   origin_cu = cu;
11158   origin_die = follow_die_ref (die, attr, &origin_cu);
11159
11160   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
11161      symbols in.  */
11162   origin_previous_list_in_scope = origin_cu->list_in_scope;
11163   origin_cu->list_in_scope = cu->list_in_scope;
11164
11165   if (die->tag != origin_die->tag
11166       && !(die->tag == DW_TAG_inlined_subroutine
11167            && origin_die->tag == DW_TAG_subprogram))
11168     complaint (&symfile_complaints,
11169                _("DIE 0x%x and its abstract origin 0x%x have different tags"),
11170                die->offset.sect_off, origin_die->offset.sect_off);
11171
11172   child_die = die->child;
11173   die_children_count = 0;
11174   while (child_die && child_die->tag)
11175     {
11176       child_die = sibling_die (child_die);
11177       die_children_count++;
11178     }
11179   offsets = xmalloc (sizeof (*offsets) * die_children_count);
11180   cleanups = make_cleanup (xfree, offsets);
11181
11182   offsets_end = offsets;
11183   child_die = die->child;
11184   while (child_die && child_die->tag)
11185     {
11186       /* For each CHILD_DIE, find the corresponding child of
11187          ORIGIN_DIE.  If there is more than one layer of
11188          DW_AT_abstract_origin, follow them all; there shouldn't be,
11189          but GCC versions at least through 4.4 generate this (GCC PR
11190          40573).  */
11191       struct die_info *child_origin_die = child_die;
11192       struct dwarf2_cu *child_origin_cu = cu;
11193
11194       while (1)
11195         {
11196           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
11197                               child_origin_cu);
11198           if (attr == NULL)
11199             break;
11200           child_origin_die = follow_die_ref (child_origin_die, attr,
11201                                              &child_origin_cu);
11202         }
11203
11204       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
11205          counterpart may exist.  */
11206       if (child_origin_die != child_die)
11207         {
11208           if (child_die->tag != child_origin_die->tag
11209               && !(child_die->tag == DW_TAG_inlined_subroutine
11210                    && child_origin_die->tag == DW_TAG_subprogram))
11211             complaint (&symfile_complaints,
11212                        _("Child DIE 0x%x and its abstract origin 0x%x have "
11213                          "different tags"), child_die->offset.sect_off,
11214                        child_origin_die->offset.sect_off);
11215           if (child_origin_die->parent != origin_die)
11216             complaint (&symfile_complaints,
11217                        _("Child DIE 0x%x and its abstract origin 0x%x have "
11218                          "different parents"), child_die->offset.sect_off,
11219                        child_origin_die->offset.sect_off);
11220           else
11221             *offsets_end++ = child_origin_die->offset;
11222         }
11223       child_die = sibling_die (child_die);
11224     }
11225   qsort (offsets, offsets_end - offsets, sizeof (*offsets),
11226          unsigned_int_compar);
11227   for (offsetp = offsets + 1; offsetp < offsets_end; offsetp++)
11228     if (offsetp[-1].sect_off == offsetp->sect_off)
11229       complaint (&symfile_complaints,
11230                  _("Multiple children of DIE 0x%x refer "
11231                    "to DIE 0x%x as their abstract origin"),
11232                  die->offset.sect_off, offsetp->sect_off);
11233
11234   offsetp = offsets;
11235   origin_child_die = origin_die->child;
11236   while (origin_child_die && origin_child_die->tag)
11237     {
11238       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
11239       while (offsetp < offsets_end
11240              && offsetp->sect_off < origin_child_die->offset.sect_off)
11241         offsetp++;
11242       if (offsetp >= offsets_end
11243           || offsetp->sect_off > origin_child_die->offset.sect_off)
11244         {
11245           /* Found that ORIGIN_CHILD_DIE is really not referenced.
11246              Check whether we're already processing ORIGIN_CHILD_DIE.
11247              This can happen with mutually referenced abstract_origins.
11248              PR 16581.  */
11249           if (!origin_child_die->in_process)
11250             process_die (origin_child_die, origin_cu);
11251         }
11252       origin_child_die = sibling_die (origin_child_die);
11253     }
11254   origin_cu->list_in_scope = origin_previous_list_in_scope;
11255
11256   do_cleanups (cleanups);
11257 }
11258
11259 static void
11260 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
11261 {
11262   struct objfile *objfile = cu->objfile;
11263   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11264   struct context_stack *new;
11265   CORE_ADDR lowpc;
11266   CORE_ADDR highpc;
11267   struct die_info *child_die;
11268   struct attribute *attr, *call_line, *call_file;
11269   const char *name;
11270   CORE_ADDR baseaddr;
11271   struct block *block;
11272   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
11273   VEC (symbolp) *template_args = NULL;
11274   struct template_symbol *templ_func = NULL;
11275
11276   if (inlined_func)
11277     {
11278       /* If we do not have call site information, we can't show the
11279          caller of this inlined function.  That's too confusing, so
11280          only use the scope for local variables.  */
11281       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
11282       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
11283       if (call_line == NULL || call_file == NULL)
11284         {
11285           read_lexical_block_scope (die, cu);
11286           return;
11287         }
11288     }
11289
11290   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11291
11292   name = dwarf2_name (die, cu);
11293
11294   /* Ignore functions with missing or empty names.  These are actually
11295      illegal according to the DWARF standard.  */
11296   if (name == NULL)
11297     {
11298       complaint (&symfile_complaints,
11299                  _("missing name for subprogram DIE at %d"),
11300                  die->offset.sect_off);
11301       return;
11302     }
11303
11304   /* Ignore functions with missing or invalid low and high pc attributes.  */
11305   if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
11306     {
11307       attr = dwarf2_attr (die, DW_AT_external, cu);
11308       if (!attr || !DW_UNSND (attr))
11309         complaint (&symfile_complaints,
11310                    _("cannot get low and high bounds "
11311                      "for subprogram DIE at %d"),
11312                    die->offset.sect_off);
11313       return;
11314     }
11315
11316   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11317   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
11318
11319   /* If we have any template arguments, then we must allocate a
11320      different sort of symbol.  */
11321   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
11322     {
11323       if (child_die->tag == DW_TAG_template_type_param
11324           || child_die->tag == DW_TAG_template_value_param)
11325         {
11326           templ_func = allocate_template_symbol (objfile);
11327           templ_func->base.is_cplus_template_function = 1;
11328           break;
11329         }
11330     }
11331
11332   new = push_context (0, lowpc);
11333   new->name = new_symbol_full (die, read_type_die (die, cu), cu,
11334                                (struct symbol *) templ_func);
11335
11336   /* If there is a location expression for DW_AT_frame_base, record
11337      it.  */
11338   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
11339   if (attr)
11340     dwarf2_symbol_mark_computed (attr, new->name, cu, 1);
11341
11342   cu->list_in_scope = &local_symbols;
11343
11344   if (die->child != NULL)
11345     {
11346       child_die = die->child;
11347       while (child_die && child_die->tag)
11348         {
11349           if (child_die->tag == DW_TAG_template_type_param
11350               || child_die->tag == DW_TAG_template_value_param)
11351             {
11352               struct symbol *arg = new_symbol (child_die, NULL, cu);
11353
11354               if (arg != NULL)
11355                 VEC_safe_push (symbolp, template_args, arg);
11356             }
11357           else
11358             process_die (child_die, cu);
11359           child_die = sibling_die (child_die);
11360         }
11361     }
11362
11363   inherit_abstract_dies (die, cu);
11364
11365   /* If we have a DW_AT_specification, we might need to import using
11366      directives from the context of the specification DIE.  See the
11367      comment in determine_prefix.  */
11368   if (cu->language == language_cplus
11369       && dwarf2_attr (die, DW_AT_specification, cu))
11370     {
11371       struct dwarf2_cu *spec_cu = cu;
11372       struct die_info *spec_die = die_specification (die, &spec_cu);
11373
11374       while (spec_die)
11375         {
11376           child_die = spec_die->child;
11377           while (child_die && child_die->tag)
11378             {
11379               if (child_die->tag == DW_TAG_imported_module)
11380                 process_die (child_die, spec_cu);
11381               child_die = sibling_die (child_die);
11382             }
11383
11384           /* In some cases, GCC generates specification DIEs that
11385              themselves contain DW_AT_specification attributes.  */
11386           spec_die = die_specification (spec_die, &spec_cu);
11387         }
11388     }
11389
11390   new = pop_context ();
11391   /* Make a block for the local symbols within.  */
11392   block = finish_block (new->name, &local_symbols, new->old_blocks,
11393                         lowpc, highpc);
11394
11395   /* For C++, set the block's scope.  */
11396   if ((cu->language == language_cplus || cu->language == language_fortran)
11397       && cu->processing_has_namespace_info)
11398     block_set_scope (block, determine_prefix (die, cu),
11399                      &objfile->objfile_obstack);
11400
11401   /* If we have address ranges, record them.  */
11402   dwarf2_record_block_ranges (die, block, baseaddr, cu);
11403
11404   gdbarch_make_symbol_special (gdbarch, new->name, objfile);
11405
11406   /* Attach template arguments to function.  */
11407   if (! VEC_empty (symbolp, template_args))
11408     {
11409       gdb_assert (templ_func != NULL);
11410
11411       templ_func->n_template_arguments = VEC_length (symbolp, template_args);
11412       templ_func->template_arguments
11413         = obstack_alloc (&objfile->objfile_obstack,
11414                          (templ_func->n_template_arguments
11415                           * sizeof (struct symbol *)));
11416       memcpy (templ_func->template_arguments,
11417               VEC_address (symbolp, template_args),
11418               (templ_func->n_template_arguments * sizeof (struct symbol *)));
11419       VEC_free (symbolp, template_args);
11420     }
11421
11422   /* In C++, we can have functions nested inside functions (e.g., when
11423      a function declares a class that has methods).  This means that
11424      when we finish processing a function scope, we may need to go
11425      back to building a containing block's symbol lists.  */
11426   local_symbols = new->locals;
11427   using_directives = new->using_directives;
11428
11429   /* If we've finished processing a top-level function, subsequent
11430      symbols go in the file symbol list.  */
11431   if (outermost_context_p ())
11432     cu->list_in_scope = &file_symbols;
11433 }
11434
11435 /* Process all the DIES contained within a lexical block scope.  Start
11436    a new scope, process the dies, and then close the scope.  */
11437
11438 static void
11439 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
11440 {
11441   struct objfile *objfile = cu->objfile;
11442   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11443   struct context_stack *new;
11444   CORE_ADDR lowpc, highpc;
11445   struct die_info *child_die;
11446   CORE_ADDR baseaddr;
11447
11448   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11449
11450   /* Ignore blocks with missing or invalid low and high pc attributes.  */
11451   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
11452      as multiple lexical blocks?  Handling children in a sane way would
11453      be nasty.  Might be easier to properly extend generic blocks to
11454      describe ranges.  */
11455   if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
11456     return;
11457   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11458   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
11459
11460   push_context (0, lowpc);
11461   if (die->child != NULL)
11462     {
11463       child_die = die->child;
11464       while (child_die && child_die->tag)
11465         {
11466           process_die (child_die, cu);
11467           child_die = sibling_die (child_die);
11468         }
11469     }
11470   new = pop_context ();
11471
11472   if (local_symbols != NULL || using_directives != NULL)
11473     {
11474       struct block *block
11475         = finish_block (0, &local_symbols, new->old_blocks, new->start_addr,
11476                         highpc);
11477
11478       /* Note that recording ranges after traversing children, as we
11479          do here, means that recording a parent's ranges entails
11480          walking across all its children's ranges as they appear in
11481          the address map, which is quadratic behavior.
11482
11483          It would be nicer to record the parent's ranges before
11484          traversing its children, simply overriding whatever you find
11485          there.  But since we don't even decide whether to create a
11486          block until after we've traversed its children, that's hard
11487          to do.  */
11488       dwarf2_record_block_ranges (die, block, baseaddr, cu);
11489     }
11490   local_symbols = new->locals;
11491   using_directives = new->using_directives;
11492 }
11493
11494 /* Read in DW_TAG_GNU_call_site and insert it to CU->call_site_htab.  */
11495
11496 static void
11497 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
11498 {
11499   struct objfile *objfile = cu->objfile;
11500   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11501   CORE_ADDR pc, baseaddr;
11502   struct attribute *attr;
11503   struct call_site *call_site, call_site_local;
11504   void **slot;
11505   int nparams;
11506   struct die_info *child_die;
11507
11508   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11509
11510   attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11511   if (!attr)
11512     {
11513       complaint (&symfile_complaints,
11514                  _("missing DW_AT_low_pc for DW_TAG_GNU_call_site "
11515                    "DIE 0x%x [in module %s]"),
11516                  die->offset.sect_off, objfile_name (objfile));
11517       return;
11518     }
11519   pc = attr_value_as_address (attr) + baseaddr;
11520   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
11521
11522   if (cu->call_site_htab == NULL)
11523     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
11524                                                NULL, &objfile->objfile_obstack,
11525                                                hashtab_obstack_allocate, NULL);
11526   call_site_local.pc = pc;
11527   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
11528   if (*slot != NULL)
11529     {
11530       complaint (&symfile_complaints,
11531                  _("Duplicate PC %s for DW_TAG_GNU_call_site "
11532                    "DIE 0x%x [in module %s]"),
11533                  paddress (gdbarch, pc), die->offset.sect_off,
11534                  objfile_name (objfile));
11535       return;
11536     }
11537
11538   /* Count parameters at the caller.  */
11539
11540   nparams = 0;
11541   for (child_die = die->child; child_die && child_die->tag;
11542        child_die = sibling_die (child_die))
11543     {
11544       if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11545         {
11546           complaint (&symfile_complaints,
11547                      _("Tag %d is not DW_TAG_GNU_call_site_parameter in "
11548                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11549                      child_die->tag, child_die->offset.sect_off,
11550                      objfile_name (objfile));
11551           continue;
11552         }
11553
11554       nparams++;
11555     }
11556
11557   call_site = obstack_alloc (&objfile->objfile_obstack,
11558                              (sizeof (*call_site)
11559                               + (sizeof (*call_site->parameter)
11560                                  * (nparams - 1))));
11561   *slot = call_site;
11562   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
11563   call_site->pc = pc;
11564
11565   if (dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
11566     {
11567       struct die_info *func_die;
11568
11569       /* Skip also over DW_TAG_inlined_subroutine.  */
11570       for (func_die = die->parent;
11571            func_die && func_die->tag != DW_TAG_subprogram
11572            && func_die->tag != DW_TAG_subroutine_type;
11573            func_die = func_die->parent);
11574
11575       /* DW_AT_GNU_all_call_sites is a superset
11576          of DW_AT_GNU_all_tail_call_sites.  */
11577       if (func_die
11578           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
11579           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
11580         {
11581           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
11582              not complete.  But keep CALL_SITE for look ups via call_site_htab,
11583              both the initial caller containing the real return address PC and
11584              the final callee containing the current PC of a chain of tail
11585              calls do not need to have the tail call list complete.  But any
11586              function candidate for a virtual tail call frame searched via
11587              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
11588              determined unambiguously.  */
11589         }
11590       else
11591         {
11592           struct type *func_type = NULL;
11593
11594           if (func_die)
11595             func_type = get_die_type (func_die, cu);
11596           if (func_type != NULL)
11597             {
11598               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
11599
11600               /* Enlist this call site to the function.  */
11601               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
11602               TYPE_TAIL_CALL_LIST (func_type) = call_site;
11603             }
11604           else
11605             complaint (&symfile_complaints,
11606                        _("Cannot find function owning DW_TAG_GNU_call_site "
11607                          "DIE 0x%x [in module %s]"),
11608                        die->offset.sect_off, objfile_name (objfile));
11609         }
11610     }
11611
11612   attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
11613   if (attr == NULL)
11614     attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11615   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
11616   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
11617     /* Keep NULL DWARF_BLOCK.  */;
11618   else if (attr_form_is_block (attr))
11619     {
11620       struct dwarf2_locexpr_baton *dlbaton;
11621
11622       dlbaton = obstack_alloc (&objfile->objfile_obstack, sizeof (*dlbaton));
11623       dlbaton->data = DW_BLOCK (attr)->data;
11624       dlbaton->size = DW_BLOCK (attr)->size;
11625       dlbaton->per_cu = cu->per_cu;
11626
11627       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
11628     }
11629   else if (attr_form_is_ref (attr))
11630     {
11631       struct dwarf2_cu *target_cu = cu;
11632       struct die_info *target_die;
11633
11634       target_die = follow_die_ref (die, attr, &target_cu);
11635       gdb_assert (target_cu->objfile == objfile);
11636       if (die_is_declaration (target_die, target_cu))
11637         {
11638           const char *target_physname = NULL;
11639           struct attribute *target_attr;
11640
11641           /* Prefer the mangled name; otherwise compute the demangled one.  */
11642           target_attr = dwarf2_attr (target_die, DW_AT_linkage_name, target_cu);
11643           if (target_attr == NULL)
11644             target_attr = dwarf2_attr (target_die, DW_AT_MIPS_linkage_name,
11645                                        target_cu);
11646           if (target_attr != NULL && DW_STRING (target_attr) != NULL)
11647             target_physname = DW_STRING (target_attr);
11648           else
11649             target_physname = dwarf2_physname (NULL, target_die, target_cu);
11650           if (target_physname == NULL)
11651             complaint (&symfile_complaints,
11652                        _("DW_AT_GNU_call_site_target target DIE has invalid "
11653                          "physname, for referencing DIE 0x%x [in module %s]"),
11654                        die->offset.sect_off, objfile_name (objfile));
11655           else
11656             SET_FIELD_PHYSNAME (call_site->target, target_physname);
11657         }
11658       else
11659         {
11660           CORE_ADDR lowpc;
11661
11662           /* DW_AT_entry_pc should be preferred.  */
11663           if (!dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL))
11664             complaint (&symfile_complaints,
11665                        _("DW_AT_GNU_call_site_target target DIE has invalid "
11666                          "low pc, for referencing DIE 0x%x [in module %s]"),
11667                        die->offset.sect_off, objfile_name (objfile));
11668           else
11669             {
11670               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11671               SET_FIELD_PHYSADDR (call_site->target, lowpc);
11672             }
11673         }
11674     }
11675   else
11676     complaint (&symfile_complaints,
11677                _("DW_TAG_GNU_call_site DW_AT_GNU_call_site_target is neither "
11678                  "block nor reference, for DIE 0x%x [in module %s]"),
11679                die->offset.sect_off, objfile_name (objfile));
11680
11681   call_site->per_cu = cu->per_cu;
11682
11683   for (child_die = die->child;
11684        child_die && child_die->tag;
11685        child_die = sibling_die (child_die))
11686     {
11687       struct call_site_parameter *parameter;
11688       struct attribute *loc, *origin;
11689
11690       if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11691         {
11692           /* Already printed the complaint above.  */
11693           continue;
11694         }
11695
11696       gdb_assert (call_site->parameter_count < nparams);
11697       parameter = &call_site->parameter[call_site->parameter_count];
11698
11699       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
11700          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
11701          register is contained in DW_AT_GNU_call_site_value.  */
11702
11703       loc = dwarf2_attr (child_die, DW_AT_location, cu);
11704       origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
11705       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
11706         {
11707           sect_offset offset;
11708
11709           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
11710           offset = dwarf2_get_ref_die_offset (origin);
11711           if (!offset_in_cu_p (&cu->header, offset))
11712             {
11713               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
11714                  binding can be done only inside one CU.  Such referenced DIE
11715                  therefore cannot be even moved to DW_TAG_partial_unit.  */
11716               complaint (&symfile_complaints,
11717                          _("DW_AT_abstract_origin offset is not in CU for "
11718                            "DW_TAG_GNU_call_site child DIE 0x%x "
11719                            "[in module %s]"),
11720                          child_die->offset.sect_off, objfile_name (objfile));
11721               continue;
11722             }
11723           parameter->u.param_offset.cu_off = (offset.sect_off
11724                                               - cu->header.offset.sect_off);
11725         }
11726       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
11727         {
11728           complaint (&symfile_complaints,
11729                      _("No DW_FORM_block* DW_AT_location for "
11730                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11731                      child_die->offset.sect_off, objfile_name (objfile));
11732           continue;
11733         }
11734       else
11735         {
11736           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
11737             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
11738           if (parameter->u.dwarf_reg != -1)
11739             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
11740           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
11741                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
11742                                              &parameter->u.fb_offset))
11743             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
11744           else
11745             {
11746               complaint (&symfile_complaints,
11747                          _("Only single DW_OP_reg or DW_OP_fbreg is supported "
11748                            "for DW_FORM_block* DW_AT_location is supported for "
11749                            "DW_TAG_GNU_call_site child DIE 0x%x "
11750                            "[in module %s]"),
11751                          child_die->offset.sect_off, objfile_name (objfile));
11752               continue;
11753             }
11754         }
11755
11756       attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
11757       if (!attr_form_is_block (attr))
11758         {
11759           complaint (&symfile_complaints,
11760                      _("No DW_FORM_block* DW_AT_GNU_call_site_value for "
11761                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11762                      child_die->offset.sect_off, objfile_name (objfile));
11763           continue;
11764         }
11765       parameter->value = DW_BLOCK (attr)->data;
11766       parameter->value_size = DW_BLOCK (attr)->size;
11767
11768       /* Parameters are not pre-cleared by memset above.  */
11769       parameter->data_value = NULL;
11770       parameter->data_value_size = 0;
11771       call_site->parameter_count++;
11772
11773       attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
11774       if (attr)
11775         {
11776           if (!attr_form_is_block (attr))
11777             complaint (&symfile_complaints,
11778                        _("No DW_FORM_block* DW_AT_GNU_call_site_data_value for "
11779                          "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11780                        child_die->offset.sect_off, objfile_name (objfile));
11781           else
11782             {
11783               parameter->data_value = DW_BLOCK (attr)->data;
11784               parameter->data_value_size = DW_BLOCK (attr)->size;
11785             }
11786         }
11787     }
11788 }
11789
11790 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
11791    Return 1 if the attributes are present and valid, otherwise, return 0.
11792    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
11793
11794 static int
11795 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
11796                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
11797                     struct partial_symtab *ranges_pst)
11798 {
11799   struct objfile *objfile = cu->objfile;
11800   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11801   struct comp_unit_head *cu_header = &cu->header;
11802   bfd *obfd = objfile->obfd;
11803   unsigned int addr_size = cu_header->addr_size;
11804   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
11805   /* Base address selection entry.  */
11806   CORE_ADDR base;
11807   int found_base;
11808   unsigned int dummy;
11809   const gdb_byte *buffer;
11810   CORE_ADDR marker;
11811   int low_set;
11812   CORE_ADDR low = 0;
11813   CORE_ADDR high = 0;
11814   CORE_ADDR baseaddr;
11815
11816   found_base = cu->base_known;
11817   base = cu->base_address;
11818
11819   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
11820   if (offset >= dwarf2_per_objfile->ranges.size)
11821     {
11822       complaint (&symfile_complaints,
11823                  _("Offset %d out of bounds for DW_AT_ranges attribute"),
11824                  offset);
11825       return 0;
11826     }
11827   buffer = dwarf2_per_objfile->ranges.buffer + offset;
11828
11829   /* Read in the largest possible address.  */
11830   marker = read_address (obfd, buffer, cu, &dummy);
11831   if ((marker & mask) == mask)
11832     {
11833       /* If we found the largest possible address, then
11834          read the base address.  */
11835       base = read_address (obfd, buffer + addr_size, cu, &dummy);
11836       buffer += 2 * addr_size;
11837       offset += 2 * addr_size;
11838       found_base = 1;
11839     }
11840
11841   low_set = 0;
11842
11843   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11844
11845   while (1)
11846     {
11847       CORE_ADDR range_beginning, range_end;
11848
11849       range_beginning = read_address (obfd, buffer, cu, &dummy);
11850       buffer += addr_size;
11851       range_end = read_address (obfd, buffer, cu, &dummy);
11852       buffer += addr_size;
11853       offset += 2 * addr_size;
11854
11855       /* An end of list marker is a pair of zero addresses.  */
11856       if (range_beginning == 0 && range_end == 0)
11857         /* Found the end of list entry.  */
11858         break;
11859
11860       /* Each base address selection entry is a pair of 2 values.
11861          The first is the largest possible address, the second is
11862          the base address.  Check for a base address here.  */
11863       if ((range_beginning & mask) == mask)
11864         {
11865           /* If we found the largest possible address, then
11866              read the base address.  */
11867           base = read_address (obfd, buffer + addr_size, cu, &dummy);
11868           found_base = 1;
11869           continue;
11870         }
11871
11872       if (!found_base)
11873         {
11874           /* We have no valid base address for the ranges
11875              data.  */
11876           complaint (&symfile_complaints,
11877                      _("Invalid .debug_ranges data (no base address)"));
11878           return 0;
11879         }
11880
11881       if (range_beginning > range_end)
11882         {
11883           /* Inverted range entries are invalid.  */
11884           complaint (&symfile_complaints,
11885                      _("Invalid .debug_ranges data (inverted range)"));
11886           return 0;
11887         }
11888
11889       /* Empty range entries have no effect.  */
11890       if (range_beginning == range_end)
11891         continue;
11892
11893       range_beginning += base;
11894       range_end += base;
11895
11896       /* A not-uncommon case of bad debug info.
11897          Don't pollute the addrmap with bad data.  */
11898       if (range_beginning + baseaddr == 0
11899           && !dwarf2_per_objfile->has_section_at_zero)
11900         {
11901           complaint (&symfile_complaints,
11902                      _(".debug_ranges entry has start address of zero"
11903                        " [in module %s]"), objfile_name (objfile));
11904           continue;
11905         }
11906
11907       if (ranges_pst != NULL)
11908         {
11909           CORE_ADDR lowpc;
11910           CORE_ADDR highpc;
11911
11912           lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
11913                                               range_beginning + baseaddr);
11914           highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
11915                                                range_end + baseaddr);
11916           addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
11917                              ranges_pst);
11918         }
11919
11920       /* FIXME: This is recording everything as a low-high
11921          segment of consecutive addresses.  We should have a
11922          data structure for discontiguous block ranges
11923          instead.  */
11924       if (! low_set)
11925         {
11926           low = range_beginning;
11927           high = range_end;
11928           low_set = 1;
11929         }
11930       else
11931         {
11932           if (range_beginning < low)
11933             low = range_beginning;
11934           if (range_end > high)
11935             high = range_end;
11936         }
11937     }
11938
11939   if (! low_set)
11940     /* If the first entry is an end-of-list marker, the range
11941        describes an empty scope, i.e. no instructions.  */
11942     return 0;
11943
11944   if (low_return)
11945     *low_return = low;
11946   if (high_return)
11947     *high_return = high;
11948   return 1;
11949 }
11950
11951 /* Get low and high pc attributes from a die.  Return 1 if the attributes
11952    are present and valid, otherwise, return 0.  Return -1 if the range is
11953    discontinuous, i.e. derived from DW_AT_ranges information.  */
11954
11955 static int
11956 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
11957                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
11958                       struct partial_symtab *pst)
11959 {
11960   struct attribute *attr;
11961   struct attribute *attr_high;
11962   CORE_ADDR low = 0;
11963   CORE_ADDR high = 0;
11964   int ret = 0;
11965
11966   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
11967   if (attr_high)
11968     {
11969       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11970       if (attr)
11971         {
11972           low = attr_value_as_address (attr);
11973           high = attr_value_as_address (attr_high);
11974           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
11975             high += low;
11976         }
11977       else
11978         /* Found high w/o low attribute.  */
11979         return 0;
11980
11981       /* Found consecutive range of addresses.  */
11982       ret = 1;
11983     }
11984   else
11985     {
11986       attr = dwarf2_attr (die, DW_AT_ranges, cu);
11987       if (attr != NULL)
11988         {
11989           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
11990              We take advantage of the fact that DW_AT_ranges does not appear
11991              in DW_TAG_compile_unit of DWO files.  */
11992           int need_ranges_base = die->tag != DW_TAG_compile_unit;
11993           unsigned int ranges_offset = (DW_UNSND (attr)
11994                                         + (need_ranges_base
11995                                            ? cu->ranges_base
11996                                            : 0));
11997
11998           /* Value of the DW_AT_ranges attribute is the offset in the
11999              .debug_ranges section.  */
12000           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
12001             return 0;
12002           /* Found discontinuous range of addresses.  */
12003           ret = -1;
12004         }
12005     }
12006
12007   /* read_partial_die has also the strict LOW < HIGH requirement.  */
12008   if (high <= low)
12009     return 0;
12010
12011   /* When using the GNU linker, .gnu.linkonce. sections are used to
12012      eliminate duplicate copies of functions and vtables and such.
12013      The linker will arbitrarily choose one and discard the others.
12014      The AT_*_pc values for such functions refer to local labels in
12015      these sections.  If the section from that file was discarded, the
12016      labels are not in the output, so the relocs get a value of 0.
12017      If this is a discarded function, mark the pc bounds as invalid,
12018      so that GDB will ignore it.  */
12019   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
12020     return 0;
12021
12022   *lowpc = low;
12023   if (highpc)
12024     *highpc = high;
12025   return ret;
12026 }
12027
12028 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
12029    its low and high PC addresses.  Do nothing if these addresses could not
12030    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
12031    and HIGHPC to the high address if greater than HIGHPC.  */
12032
12033 static void
12034 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
12035                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
12036                                  struct dwarf2_cu *cu)
12037 {
12038   CORE_ADDR low, high;
12039   struct die_info *child = die->child;
12040
12041   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL))
12042     {
12043       *lowpc = min (*lowpc, low);
12044       *highpc = max (*highpc, high);
12045     }
12046
12047   /* If the language does not allow nested subprograms (either inside
12048      subprograms or lexical blocks), we're done.  */
12049   if (cu->language != language_ada)
12050     return;
12051
12052   /* Check all the children of the given DIE.  If it contains nested
12053      subprograms, then check their pc bounds.  Likewise, we need to
12054      check lexical blocks as well, as they may also contain subprogram
12055      definitions.  */
12056   while (child && child->tag)
12057     {
12058       if (child->tag == DW_TAG_subprogram
12059           || child->tag == DW_TAG_lexical_block)
12060         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
12061       child = sibling_die (child);
12062     }
12063 }
12064
12065 /* Get the low and high pc's represented by the scope DIE, and store
12066    them in *LOWPC and *HIGHPC.  If the correct values can't be
12067    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
12068
12069 static void
12070 get_scope_pc_bounds (struct die_info *die,
12071                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
12072                      struct dwarf2_cu *cu)
12073 {
12074   CORE_ADDR best_low = (CORE_ADDR) -1;
12075   CORE_ADDR best_high = (CORE_ADDR) 0;
12076   CORE_ADDR current_low, current_high;
12077
12078   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL))
12079     {
12080       best_low = current_low;
12081       best_high = current_high;
12082     }
12083   else
12084     {
12085       struct die_info *child = die->child;
12086
12087       while (child && child->tag)
12088         {
12089           switch (child->tag) {
12090           case DW_TAG_subprogram:
12091             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
12092             break;
12093           case DW_TAG_namespace:
12094           case DW_TAG_module:
12095             /* FIXME: carlton/2004-01-16: Should we do this for
12096                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
12097                that current GCC's always emit the DIEs corresponding
12098                to definitions of methods of classes as children of a
12099                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
12100                the DIEs giving the declarations, which could be
12101                anywhere).  But I don't see any reason why the
12102                standards says that they have to be there.  */
12103             get_scope_pc_bounds (child, &current_low, &current_high, cu);
12104
12105             if (current_low != ((CORE_ADDR) -1))
12106               {
12107                 best_low = min (best_low, current_low);
12108                 best_high = max (best_high, current_high);
12109               }
12110             break;
12111           default:
12112             /* Ignore.  */
12113             break;
12114           }
12115
12116           child = sibling_die (child);
12117         }
12118     }
12119
12120   *lowpc = best_low;
12121   *highpc = best_high;
12122 }
12123
12124 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
12125    in DIE.  */
12126
12127 static void
12128 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
12129                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
12130 {
12131   struct objfile *objfile = cu->objfile;
12132   struct gdbarch *gdbarch = get_objfile_arch (objfile);
12133   struct attribute *attr;
12134   struct attribute *attr_high;
12135
12136   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
12137   if (attr_high)
12138     {
12139       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
12140       if (attr)
12141         {
12142           CORE_ADDR low = attr_value_as_address (attr);
12143           CORE_ADDR high = attr_value_as_address (attr_high);
12144
12145           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12146             high += low;
12147
12148           low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
12149           high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
12150           record_block_range (block, low, high - 1);
12151         }
12152     }
12153
12154   attr = dwarf2_attr (die, DW_AT_ranges, cu);
12155   if (attr)
12156     {
12157       bfd *obfd = objfile->obfd;
12158       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12159          We take advantage of the fact that DW_AT_ranges does not appear
12160          in DW_TAG_compile_unit of DWO files.  */
12161       int need_ranges_base = die->tag != DW_TAG_compile_unit;
12162
12163       /* The value of the DW_AT_ranges attribute is the offset of the
12164          address range list in the .debug_ranges section.  */
12165       unsigned long offset = (DW_UNSND (attr)
12166                               + (need_ranges_base ? cu->ranges_base : 0));
12167       const gdb_byte *buffer;
12168
12169       /* For some target architectures, but not others, the
12170          read_address function sign-extends the addresses it returns.
12171          To recognize base address selection entries, we need a
12172          mask.  */
12173       unsigned int addr_size = cu->header.addr_size;
12174       CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
12175
12176       /* The base address, to which the next pair is relative.  Note
12177          that this 'base' is a DWARF concept: most entries in a range
12178          list are relative, to reduce the number of relocs against the
12179          debugging information.  This is separate from this function's
12180          'baseaddr' argument, which GDB uses to relocate debugging
12181          information from a shared library based on the address at
12182          which the library was loaded.  */
12183       CORE_ADDR base = cu->base_address;
12184       int base_known = cu->base_known;
12185
12186       dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
12187       if (offset >= dwarf2_per_objfile->ranges.size)
12188         {
12189           complaint (&symfile_complaints,
12190                      _("Offset %lu out of bounds for DW_AT_ranges attribute"),
12191                      offset);
12192           return;
12193         }
12194       buffer = dwarf2_per_objfile->ranges.buffer + offset;
12195
12196       for (;;)
12197         {
12198           unsigned int bytes_read;
12199           CORE_ADDR start, end;
12200
12201           start = read_address (obfd, buffer, cu, &bytes_read);
12202           buffer += bytes_read;
12203           end = read_address (obfd, buffer, cu, &bytes_read);
12204           buffer += bytes_read;
12205
12206           /* Did we find the end of the range list?  */
12207           if (start == 0 && end == 0)
12208             break;
12209
12210           /* Did we find a base address selection entry?  */
12211           else if ((start & base_select_mask) == base_select_mask)
12212             {
12213               base = end;
12214               base_known = 1;
12215             }
12216
12217           /* We found an ordinary address range.  */
12218           else
12219             {
12220               if (!base_known)
12221                 {
12222                   complaint (&symfile_complaints,
12223                              _("Invalid .debug_ranges data "
12224                                "(no base address)"));
12225                   return;
12226                 }
12227
12228               if (start > end)
12229                 {
12230                   /* Inverted range entries are invalid.  */
12231                   complaint (&symfile_complaints,
12232                              _("Invalid .debug_ranges data "
12233                                "(inverted range)"));
12234                   return;
12235                 }
12236
12237               /* Empty range entries have no effect.  */
12238               if (start == end)
12239                 continue;
12240
12241               start += base + baseaddr;
12242               end += base + baseaddr;
12243
12244               /* A not-uncommon case of bad debug info.
12245                  Don't pollute the addrmap with bad data.  */
12246               if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
12247                 {
12248                   complaint (&symfile_complaints,
12249                              _(".debug_ranges entry has start address of zero"
12250                                " [in module %s]"), objfile_name (objfile));
12251                   continue;
12252                 }
12253
12254               start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
12255               end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
12256               record_block_range (block, start, end - 1);
12257             }
12258         }
12259     }
12260 }
12261
12262 /* Check whether the producer field indicates either of GCC < 4.6, or the
12263    Intel C/C++ compiler, and cache the result in CU.  */
12264
12265 static void
12266 check_producer (struct dwarf2_cu *cu)
12267 {
12268   const char *cs;
12269   int major, minor, release;
12270
12271   if (cu->producer == NULL)
12272     {
12273       /* For unknown compilers expect their behavior is DWARF version
12274          compliant.
12275
12276          GCC started to support .debug_types sections by -gdwarf-4 since
12277          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
12278          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
12279          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
12280          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
12281     }
12282   else if (strncmp (cu->producer, "GNU ", strlen ("GNU ")) == 0)
12283     {
12284       /* Skip any identifier after "GNU " - such as "C++" or "Java".  */
12285
12286       cs = &cu->producer[strlen ("GNU ")];
12287       while (*cs && !isdigit (*cs))
12288         cs++;
12289       if (sscanf (cs, "%d.%d.%d", &major, &minor, &release) != 3)
12290         {
12291           /* Not recognized as GCC.  */
12292         }
12293       else
12294         {
12295           cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
12296           cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
12297         }
12298     }
12299   else if (strncmp (cu->producer, "Intel(R) C", strlen ("Intel(R) C")) == 0)
12300     cu->producer_is_icc = 1;
12301   else
12302     {
12303       /* For other non-GCC compilers, expect their behavior is DWARF version
12304          compliant.  */
12305     }
12306
12307   cu->checked_producer = 1;
12308 }
12309
12310 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
12311    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
12312    during 4.6.0 experimental.  */
12313
12314 static int
12315 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
12316 {
12317   if (!cu->checked_producer)
12318     check_producer (cu);
12319
12320   return cu->producer_is_gxx_lt_4_6;
12321 }
12322
12323 /* Return the default accessibility type if it is not overriden by
12324    DW_AT_accessibility.  */
12325
12326 static enum dwarf_access_attribute
12327 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
12328 {
12329   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
12330     {
12331       /* The default DWARF 2 accessibility for members is public, the default
12332          accessibility for inheritance is private.  */
12333
12334       if (die->tag != DW_TAG_inheritance)
12335         return DW_ACCESS_public;
12336       else
12337         return DW_ACCESS_private;
12338     }
12339   else
12340     {
12341       /* DWARF 3+ defines the default accessibility a different way.  The same
12342          rules apply now for DW_TAG_inheritance as for the members and it only
12343          depends on the container kind.  */
12344
12345       if (die->parent->tag == DW_TAG_class_type)
12346         return DW_ACCESS_private;
12347       else
12348         return DW_ACCESS_public;
12349     }
12350 }
12351
12352 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
12353    offset.  If the attribute was not found return 0, otherwise return
12354    1.  If it was found but could not properly be handled, set *OFFSET
12355    to 0.  */
12356
12357 static int
12358 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
12359                              LONGEST *offset)
12360 {
12361   struct attribute *attr;
12362
12363   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
12364   if (attr != NULL)
12365     {
12366       *offset = 0;
12367
12368       /* Note that we do not check for a section offset first here.
12369          This is because DW_AT_data_member_location is new in DWARF 4,
12370          so if we see it, we can assume that a constant form is really
12371          a constant and not a section offset.  */
12372       if (attr_form_is_constant (attr))
12373         *offset = dwarf2_get_attr_constant_value (attr, 0);
12374       else if (attr_form_is_section_offset (attr))
12375         dwarf2_complex_location_expr_complaint ();
12376       else if (attr_form_is_block (attr))
12377         *offset = decode_locdesc (DW_BLOCK (attr), cu);
12378       else
12379         dwarf2_complex_location_expr_complaint ();
12380
12381       return 1;
12382     }
12383
12384   return 0;
12385 }
12386
12387 /* Add an aggregate field to the field list.  */
12388
12389 static void
12390 dwarf2_add_field (struct field_info *fip, struct die_info *die,
12391                   struct dwarf2_cu *cu)
12392 {
12393   struct objfile *objfile = cu->objfile;
12394   struct gdbarch *gdbarch = get_objfile_arch (objfile);
12395   struct nextfield *new_field;
12396   struct attribute *attr;
12397   struct field *fp;
12398   const char *fieldname = "";
12399
12400   /* Allocate a new field list entry and link it in.  */
12401   new_field = (struct nextfield *) xmalloc (sizeof (struct nextfield));
12402   make_cleanup (xfree, new_field);
12403   memset (new_field, 0, sizeof (struct nextfield));
12404
12405   if (die->tag == DW_TAG_inheritance)
12406     {
12407       new_field->next = fip->baseclasses;
12408       fip->baseclasses = new_field;
12409     }
12410   else
12411     {
12412       new_field->next = fip->fields;
12413       fip->fields = new_field;
12414     }
12415   fip->nfields++;
12416
12417   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
12418   if (attr)
12419     new_field->accessibility = DW_UNSND (attr);
12420   else
12421     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
12422   if (new_field->accessibility != DW_ACCESS_public)
12423     fip->non_public_fields = 1;
12424
12425   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
12426   if (attr)
12427     new_field->virtuality = DW_UNSND (attr);
12428   else
12429     new_field->virtuality = DW_VIRTUALITY_none;
12430
12431   fp = &new_field->field;
12432
12433   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
12434     {
12435       LONGEST offset;
12436
12437       /* Data member other than a C++ static data member.  */
12438
12439       /* Get type of field.  */
12440       fp->type = die_type (die, cu);
12441
12442       SET_FIELD_BITPOS (*fp, 0);
12443
12444       /* Get bit size of field (zero if none).  */
12445       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
12446       if (attr)
12447         {
12448           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
12449         }
12450       else
12451         {
12452           FIELD_BITSIZE (*fp) = 0;
12453         }
12454
12455       /* Get bit offset of field.  */
12456       if (handle_data_member_location (die, cu, &offset))
12457         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
12458       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
12459       if (attr)
12460         {
12461           if (gdbarch_bits_big_endian (gdbarch))
12462             {
12463               /* For big endian bits, the DW_AT_bit_offset gives the
12464                  additional bit offset from the MSB of the containing
12465                  anonymous object to the MSB of the field.  We don't
12466                  have to do anything special since we don't need to
12467                  know the size of the anonymous object.  */
12468               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
12469             }
12470           else
12471             {
12472               /* For little endian bits, compute the bit offset to the
12473                  MSB of the anonymous object, subtract off the number of
12474                  bits from the MSB of the field to the MSB of the
12475                  object, and then subtract off the number of bits of
12476                  the field itself.  The result is the bit offset of
12477                  the LSB of the field.  */
12478               int anonymous_size;
12479               int bit_offset = DW_UNSND (attr);
12480
12481               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
12482               if (attr)
12483                 {
12484                   /* The size of the anonymous object containing
12485                      the bit field is explicit, so use the
12486                      indicated size (in bytes).  */
12487                   anonymous_size = DW_UNSND (attr);
12488                 }
12489               else
12490                 {
12491                   /* The size of the anonymous object containing
12492                      the bit field must be inferred from the type
12493                      attribute of the data member containing the
12494                      bit field.  */
12495                   anonymous_size = TYPE_LENGTH (fp->type);
12496                 }
12497               SET_FIELD_BITPOS (*fp,
12498                                 (FIELD_BITPOS (*fp)
12499                                  + anonymous_size * bits_per_byte
12500                                  - bit_offset - FIELD_BITSIZE (*fp)));
12501             }
12502         }
12503
12504       /* Get name of field.  */
12505       fieldname = dwarf2_name (die, cu);
12506       if (fieldname == NULL)
12507         fieldname = "";
12508
12509       /* The name is already allocated along with this objfile, so we don't
12510          need to duplicate it for the type.  */
12511       fp->name = fieldname;
12512
12513       /* Change accessibility for artificial fields (e.g. virtual table
12514          pointer or virtual base class pointer) to private.  */
12515       if (dwarf2_attr (die, DW_AT_artificial, cu))
12516         {
12517           FIELD_ARTIFICIAL (*fp) = 1;
12518           new_field->accessibility = DW_ACCESS_private;
12519           fip->non_public_fields = 1;
12520         }
12521     }
12522   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
12523     {
12524       /* C++ static member.  */
12525
12526       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
12527          is a declaration, but all versions of G++ as of this writing
12528          (so through at least 3.2.1) incorrectly generate
12529          DW_TAG_variable tags.  */
12530
12531       const char *physname;
12532
12533       /* Get name of field.  */
12534       fieldname = dwarf2_name (die, cu);
12535       if (fieldname == NULL)
12536         return;
12537
12538       attr = dwarf2_attr (die, DW_AT_const_value, cu);
12539       if (attr
12540           /* Only create a symbol if this is an external value.
12541              new_symbol checks this and puts the value in the global symbol
12542              table, which we want.  If it is not external, new_symbol
12543              will try to put the value in cu->list_in_scope which is wrong.  */
12544           && dwarf2_flag_true_p (die, DW_AT_external, cu))
12545         {
12546           /* A static const member, not much different than an enum as far as
12547              we're concerned, except that we can support more types.  */
12548           new_symbol (die, NULL, cu);
12549         }
12550
12551       /* Get physical name.  */
12552       physname = dwarf2_physname (fieldname, die, cu);
12553
12554       /* The name is already allocated along with this objfile, so we don't
12555          need to duplicate it for the type.  */
12556       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
12557       FIELD_TYPE (*fp) = die_type (die, cu);
12558       FIELD_NAME (*fp) = fieldname;
12559     }
12560   else if (die->tag == DW_TAG_inheritance)
12561     {
12562       LONGEST offset;
12563
12564       /* C++ base class field.  */
12565       if (handle_data_member_location (die, cu, &offset))
12566         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
12567       FIELD_BITSIZE (*fp) = 0;
12568       FIELD_TYPE (*fp) = die_type (die, cu);
12569       FIELD_NAME (*fp) = type_name_no_tag (fp->type);
12570       fip->nbaseclasses++;
12571     }
12572 }
12573
12574 /* Add a typedef defined in the scope of the FIP's class.  */
12575
12576 static void
12577 dwarf2_add_typedef (struct field_info *fip, struct die_info *die,
12578                     struct dwarf2_cu *cu)
12579 {
12580   struct objfile *objfile = cu->objfile;
12581   struct typedef_field_list *new_field;
12582   struct attribute *attr;
12583   struct typedef_field *fp;
12584   char *fieldname = "";
12585
12586   /* Allocate a new field list entry and link it in.  */
12587   new_field = xzalloc (sizeof (*new_field));
12588   make_cleanup (xfree, new_field);
12589
12590   gdb_assert (die->tag == DW_TAG_typedef);
12591
12592   fp = &new_field->field;
12593
12594   /* Get name of field.  */
12595   fp->name = dwarf2_name (die, cu);
12596   if (fp->name == NULL)
12597     return;
12598
12599   fp->type = read_type_die (die, cu);
12600
12601   new_field->next = fip->typedef_field_list;
12602   fip->typedef_field_list = new_field;
12603   fip->typedef_field_list_count++;
12604 }
12605
12606 /* Create the vector of fields, and attach it to the type.  */
12607
12608 static void
12609 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
12610                               struct dwarf2_cu *cu)
12611 {
12612   int nfields = fip->nfields;
12613
12614   /* Record the field count, allocate space for the array of fields,
12615      and create blank accessibility bitfields if necessary.  */
12616   TYPE_NFIELDS (type) = nfields;
12617   TYPE_FIELDS (type) = (struct field *)
12618     TYPE_ALLOC (type, sizeof (struct field) * nfields);
12619   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
12620
12621   if (fip->non_public_fields && cu->language != language_ada)
12622     {
12623       ALLOCATE_CPLUS_STRUCT_TYPE (type);
12624
12625       TYPE_FIELD_PRIVATE_BITS (type) =
12626         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12627       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
12628
12629       TYPE_FIELD_PROTECTED_BITS (type) =
12630         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12631       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
12632
12633       TYPE_FIELD_IGNORE_BITS (type) =
12634         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12635       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
12636     }
12637
12638   /* If the type has baseclasses, allocate and clear a bit vector for
12639      TYPE_FIELD_VIRTUAL_BITS.  */
12640   if (fip->nbaseclasses && cu->language != language_ada)
12641     {
12642       int num_bytes = B_BYTES (fip->nbaseclasses);
12643       unsigned char *pointer;
12644
12645       ALLOCATE_CPLUS_STRUCT_TYPE (type);
12646       pointer = TYPE_ALLOC (type, num_bytes);
12647       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
12648       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
12649       TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
12650     }
12651
12652   /* Copy the saved-up fields into the field vector.  Start from the head of
12653      the list, adding to the tail of the field array, so that they end up in
12654      the same order in the array in which they were added to the list.  */
12655   while (nfields-- > 0)
12656     {
12657       struct nextfield *fieldp;
12658
12659       if (fip->fields)
12660         {
12661           fieldp = fip->fields;
12662           fip->fields = fieldp->next;
12663         }
12664       else
12665         {
12666           fieldp = fip->baseclasses;
12667           fip->baseclasses = fieldp->next;
12668         }
12669
12670       TYPE_FIELD (type, nfields) = fieldp->field;
12671       switch (fieldp->accessibility)
12672         {
12673         case DW_ACCESS_private:
12674           if (cu->language != language_ada)
12675             SET_TYPE_FIELD_PRIVATE (type, nfields);
12676           break;
12677
12678         case DW_ACCESS_protected:
12679           if (cu->language != language_ada)
12680             SET_TYPE_FIELD_PROTECTED (type, nfields);
12681           break;
12682
12683         case DW_ACCESS_public:
12684           break;
12685
12686         default:
12687           /* Unknown accessibility.  Complain and treat it as public.  */
12688           {
12689             complaint (&symfile_complaints, _("unsupported accessibility %d"),
12690                        fieldp->accessibility);
12691           }
12692           break;
12693         }
12694       if (nfields < fip->nbaseclasses)
12695         {
12696           switch (fieldp->virtuality)
12697             {
12698             case DW_VIRTUALITY_virtual:
12699             case DW_VIRTUALITY_pure_virtual:
12700               if (cu->language == language_ada)
12701                 error (_("unexpected virtuality in component of Ada type"));
12702               SET_TYPE_FIELD_VIRTUAL (type, nfields);
12703               break;
12704             }
12705         }
12706     }
12707 }
12708
12709 /* Return true if this member function is a constructor, false
12710    otherwise.  */
12711
12712 static int
12713 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
12714 {
12715   const char *fieldname;
12716   const char *typename;
12717   int len;
12718
12719   if (die->parent == NULL)
12720     return 0;
12721
12722   if (die->parent->tag != DW_TAG_structure_type
12723       && die->parent->tag != DW_TAG_union_type
12724       && die->parent->tag != DW_TAG_class_type)
12725     return 0;
12726
12727   fieldname = dwarf2_name (die, cu);
12728   typename = dwarf2_name (die->parent, cu);
12729   if (fieldname == NULL || typename == NULL)
12730     return 0;
12731
12732   len = strlen (fieldname);
12733   return (strncmp (fieldname, typename, len) == 0
12734           && (typename[len] == '\0' || typename[len] == '<'));
12735 }
12736
12737 /* Add a member function to the proper fieldlist.  */
12738
12739 static void
12740 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
12741                       struct type *type, struct dwarf2_cu *cu)
12742 {
12743   struct objfile *objfile = cu->objfile;
12744   struct attribute *attr;
12745   struct fnfieldlist *flp;
12746   int i;
12747   struct fn_field *fnp;
12748   const char *fieldname;
12749   struct nextfnfield *new_fnfield;
12750   struct type *this_type;
12751   enum dwarf_access_attribute accessibility;
12752
12753   if (cu->language == language_ada)
12754     error (_("unexpected member function in Ada type"));
12755
12756   /* Get name of member function.  */
12757   fieldname = dwarf2_name (die, cu);
12758   if (fieldname == NULL)
12759     return;
12760
12761   /* Look up member function name in fieldlist.  */
12762   for (i = 0; i < fip->nfnfields; i++)
12763     {
12764       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
12765         break;
12766     }
12767
12768   /* Create new list element if necessary.  */
12769   if (i < fip->nfnfields)
12770     flp = &fip->fnfieldlists[i];
12771   else
12772     {
12773       if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
12774         {
12775           fip->fnfieldlists = (struct fnfieldlist *)
12776             xrealloc (fip->fnfieldlists,
12777                       (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
12778                       * sizeof (struct fnfieldlist));
12779           if (fip->nfnfields == 0)
12780             make_cleanup (free_current_contents, &fip->fnfieldlists);
12781         }
12782       flp = &fip->fnfieldlists[fip->nfnfields];
12783       flp->name = fieldname;
12784       flp->length = 0;
12785       flp->head = NULL;
12786       i = fip->nfnfields++;
12787     }
12788
12789   /* Create a new member function field and chain it to the field list
12790      entry.  */
12791   new_fnfield = (struct nextfnfield *) xmalloc (sizeof (struct nextfnfield));
12792   make_cleanup (xfree, new_fnfield);
12793   memset (new_fnfield, 0, sizeof (struct nextfnfield));
12794   new_fnfield->next = flp->head;
12795   flp->head = new_fnfield;
12796   flp->length++;
12797
12798   /* Fill in the member function field info.  */
12799   fnp = &new_fnfield->fnfield;
12800
12801   /* Delay processing of the physname until later.  */
12802   if (cu->language == language_cplus || cu->language == language_java)
12803     {
12804       add_to_method_list (type, i, flp->length - 1, fieldname,
12805                           die, cu);
12806     }
12807   else
12808     {
12809       const char *physname = dwarf2_physname (fieldname, die, cu);
12810       fnp->physname = physname ? physname : "";
12811     }
12812
12813   fnp->type = alloc_type (objfile);
12814   this_type = read_type_die (die, cu);
12815   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
12816     {
12817       int nparams = TYPE_NFIELDS (this_type);
12818
12819       /* TYPE is the domain of this method, and THIS_TYPE is the type
12820            of the method itself (TYPE_CODE_METHOD).  */
12821       smash_to_method_type (fnp->type, type,
12822                             TYPE_TARGET_TYPE (this_type),
12823                             TYPE_FIELDS (this_type),
12824                             TYPE_NFIELDS (this_type),
12825                             TYPE_VARARGS (this_type));
12826
12827       /* Handle static member functions.
12828          Dwarf2 has no clean way to discern C++ static and non-static
12829          member functions.  G++ helps GDB by marking the first
12830          parameter for non-static member functions (which is the this
12831          pointer) as artificial.  We obtain this information from
12832          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
12833       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
12834         fnp->voffset = VOFFSET_STATIC;
12835     }
12836   else
12837     complaint (&symfile_complaints, _("member function type missing for '%s'"),
12838                dwarf2_full_name (fieldname, die, cu));
12839
12840   /* Get fcontext from DW_AT_containing_type if present.  */
12841   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
12842     fnp->fcontext = die_containing_type (die, cu);
12843
12844   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
12845      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
12846
12847   /* Get accessibility.  */
12848   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
12849   if (attr)
12850     accessibility = DW_UNSND (attr);
12851   else
12852     accessibility = dwarf2_default_access_attribute (die, cu);
12853   switch (accessibility)
12854     {
12855     case DW_ACCESS_private:
12856       fnp->is_private = 1;
12857       break;
12858     case DW_ACCESS_protected:
12859       fnp->is_protected = 1;
12860       break;
12861     }
12862
12863   /* Check for artificial methods.  */
12864   attr = dwarf2_attr (die, DW_AT_artificial, cu);
12865   if (attr && DW_UNSND (attr) != 0)
12866     fnp->is_artificial = 1;
12867
12868   fnp->is_constructor = dwarf2_is_constructor (die, cu);
12869
12870   /* Get index in virtual function table if it is a virtual member
12871      function.  For older versions of GCC, this is an offset in the
12872      appropriate virtual table, as specified by DW_AT_containing_type.
12873      For everyone else, it is an expression to be evaluated relative
12874      to the object address.  */
12875
12876   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
12877   if (attr)
12878     {
12879       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
12880         {
12881           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
12882             {
12883               /* Old-style GCC.  */
12884               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
12885             }
12886           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
12887                    || (DW_BLOCK (attr)->size > 1
12888                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
12889                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
12890             {
12891               struct dwarf_block blk;
12892               int offset;
12893
12894               offset = (DW_BLOCK (attr)->data[0] == DW_OP_deref
12895                         ? 1 : 2);
12896               blk.size = DW_BLOCK (attr)->size - offset;
12897               blk.data = DW_BLOCK (attr)->data + offset;
12898               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
12899               if ((fnp->voffset % cu->header.addr_size) != 0)
12900                 dwarf2_complex_location_expr_complaint ();
12901               else
12902                 fnp->voffset /= cu->header.addr_size;
12903               fnp->voffset += 2;
12904             }
12905           else
12906             dwarf2_complex_location_expr_complaint ();
12907
12908           if (!fnp->fcontext)
12909             fnp->fcontext = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
12910         }
12911       else if (attr_form_is_section_offset (attr))
12912         {
12913           dwarf2_complex_location_expr_complaint ();
12914         }
12915       else
12916         {
12917           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
12918                                                  fieldname);
12919         }
12920     }
12921   else
12922     {
12923       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
12924       if (attr && DW_UNSND (attr))
12925         {
12926           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
12927           complaint (&symfile_complaints,
12928                      _("Member function \"%s\" (offset %d) is virtual "
12929                        "but the vtable offset is not specified"),
12930                      fieldname, die->offset.sect_off);
12931           ALLOCATE_CPLUS_STRUCT_TYPE (type);
12932           TYPE_CPLUS_DYNAMIC (type) = 1;
12933         }
12934     }
12935 }
12936
12937 /* Create the vector of member function fields, and attach it to the type.  */
12938
12939 static void
12940 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
12941                                  struct dwarf2_cu *cu)
12942 {
12943   struct fnfieldlist *flp;
12944   int i;
12945
12946   if (cu->language == language_ada)
12947     error (_("unexpected member functions in Ada type"));
12948
12949   ALLOCATE_CPLUS_STRUCT_TYPE (type);
12950   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
12951     TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
12952
12953   for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
12954     {
12955       struct nextfnfield *nfp = flp->head;
12956       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
12957       int k;
12958
12959       TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
12960       TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
12961       fn_flp->fn_fields = (struct fn_field *)
12962         TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
12963       for (k = flp->length; (k--, nfp); nfp = nfp->next)
12964         fn_flp->fn_fields[k] = nfp->fnfield;
12965     }
12966
12967   TYPE_NFN_FIELDS (type) = fip->nfnfields;
12968 }
12969
12970 /* Returns non-zero if NAME is the name of a vtable member in CU's
12971    language, zero otherwise.  */
12972 static int
12973 is_vtable_name (const char *name, struct dwarf2_cu *cu)
12974 {
12975   static const char vptr[] = "_vptr";
12976   static const char vtable[] = "vtable";
12977
12978   /* Look for the C++ and Java forms of the vtable.  */
12979   if ((cu->language == language_java
12980        && strncmp (name, vtable, sizeof (vtable) - 1) == 0)
12981        || (strncmp (name, vptr, sizeof (vptr) - 1) == 0
12982        && is_cplus_marker (name[sizeof (vptr) - 1])))
12983     return 1;
12984
12985   return 0;
12986 }
12987
12988 /* GCC outputs unnamed structures that are really pointers to member
12989    functions, with the ABI-specified layout.  If TYPE describes
12990    such a structure, smash it into a member function type.
12991
12992    GCC shouldn't do this; it should just output pointer to member DIEs.
12993    This is GCC PR debug/28767.  */
12994
12995 static void
12996 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
12997 {
12998   struct type *pfn_type, *domain_type, *new_type;
12999
13000   /* Check for a structure with no name and two children.  */
13001   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
13002     return;
13003
13004   /* Check for __pfn and __delta members.  */
13005   if (TYPE_FIELD_NAME (type, 0) == NULL
13006       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
13007       || TYPE_FIELD_NAME (type, 1) == NULL
13008       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
13009     return;
13010
13011   /* Find the type of the method.  */
13012   pfn_type = TYPE_FIELD_TYPE (type, 0);
13013   if (pfn_type == NULL
13014       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
13015       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
13016     return;
13017
13018   /* Look for the "this" argument.  */
13019   pfn_type = TYPE_TARGET_TYPE (pfn_type);
13020   if (TYPE_NFIELDS (pfn_type) == 0
13021       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
13022       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
13023     return;
13024
13025   domain_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
13026   new_type = alloc_type (objfile);
13027   smash_to_method_type (new_type, domain_type, TYPE_TARGET_TYPE (pfn_type),
13028                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
13029                         TYPE_VARARGS (pfn_type));
13030   smash_to_methodptr_type (type, new_type);
13031 }
13032
13033 /* Return non-zero if the CU's PRODUCER string matches the Intel C/C++ compiler
13034    (icc).  */
13035
13036 static int
13037 producer_is_icc (struct dwarf2_cu *cu)
13038 {
13039   if (!cu->checked_producer)
13040     check_producer (cu);
13041
13042   return cu->producer_is_icc;
13043 }
13044
13045 /* Called when we find the DIE that starts a structure or union scope
13046    (definition) to create a type for the structure or union.  Fill in
13047    the type's name and general properties; the members will not be
13048    processed until process_structure_scope.  A symbol table entry for
13049    the type will also not be done until process_structure_scope (assuming
13050    the type has a name).
13051
13052    NOTE: we need to call these functions regardless of whether or not the
13053    DIE has a DW_AT_name attribute, since it might be an anonymous
13054    structure or union.  This gets the type entered into our set of
13055    user defined types.  */
13056
13057 static struct type *
13058 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
13059 {
13060   struct objfile *objfile = cu->objfile;
13061   struct type *type;
13062   struct attribute *attr;
13063   const char *name;
13064
13065   /* If the definition of this type lives in .debug_types, read that type.
13066      Don't follow DW_AT_specification though, that will take us back up
13067      the chain and we want to go down.  */
13068   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
13069   if (attr)
13070     {
13071       type = get_DW_AT_signature_type (die, attr, cu);
13072
13073       /* The type's CU may not be the same as CU.
13074          Ensure TYPE is recorded with CU in die_type_hash.  */
13075       return set_die_type (die, type, cu);
13076     }
13077
13078   type = alloc_type (objfile);
13079   INIT_CPLUS_SPECIFIC (type);
13080
13081   name = dwarf2_name (die, cu);
13082   if (name != NULL)
13083     {
13084       if (cu->language == language_cplus
13085           || cu->language == language_java)
13086         {
13087           const char *full_name = dwarf2_full_name (name, die, cu);
13088
13089           /* dwarf2_full_name might have already finished building the DIE's
13090              type.  If so, there is no need to continue.  */
13091           if (get_die_type (die, cu) != NULL)
13092             return get_die_type (die, cu);
13093
13094           TYPE_TAG_NAME (type) = full_name;
13095           if (die->tag == DW_TAG_structure_type
13096               || die->tag == DW_TAG_class_type)
13097             TYPE_NAME (type) = TYPE_TAG_NAME (type);
13098         }
13099       else
13100         {
13101           /* The name is already allocated along with this objfile, so
13102              we don't need to duplicate it for the type.  */
13103           TYPE_TAG_NAME (type) = name;
13104           if (die->tag == DW_TAG_class_type)
13105             TYPE_NAME (type) = TYPE_TAG_NAME (type);
13106         }
13107     }
13108
13109   if (die->tag == DW_TAG_structure_type)
13110     {
13111       TYPE_CODE (type) = TYPE_CODE_STRUCT;
13112     }
13113   else if (die->tag == DW_TAG_union_type)
13114     {
13115       TYPE_CODE (type) = TYPE_CODE_UNION;
13116     }
13117   else
13118     {
13119       TYPE_CODE (type) = TYPE_CODE_STRUCT;
13120     }
13121
13122   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
13123     TYPE_DECLARED_CLASS (type) = 1;
13124
13125   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13126   if (attr)
13127     {
13128       TYPE_LENGTH (type) = DW_UNSND (attr);
13129     }
13130   else
13131     {
13132       TYPE_LENGTH (type) = 0;
13133     }
13134
13135   if (producer_is_icc (cu) && (TYPE_LENGTH (type) == 0))
13136     {
13137       /* ICC does not output the required DW_AT_declaration
13138          on incomplete types, but gives them a size of zero.  */
13139       TYPE_STUB (type) = 1;
13140     }
13141   else
13142     TYPE_STUB_SUPPORTED (type) = 1;
13143
13144   if (die_is_declaration (die, cu))
13145     TYPE_STUB (type) = 1;
13146   else if (attr == NULL && die->child == NULL
13147            && producer_is_realview (cu->producer))
13148     /* RealView does not output the required DW_AT_declaration
13149        on incomplete types.  */
13150     TYPE_STUB (type) = 1;
13151
13152   /* We need to add the type field to the die immediately so we don't
13153      infinitely recurse when dealing with pointers to the structure
13154      type within the structure itself.  */
13155   set_die_type (die, type, cu);
13156
13157   /* set_die_type should be already done.  */
13158   set_descriptive_type (type, die, cu);
13159
13160   return type;
13161 }
13162
13163 /* Finish creating a structure or union type, including filling in
13164    its members and creating a symbol for it.  */
13165
13166 static void
13167 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
13168 {
13169   struct objfile *objfile = cu->objfile;
13170   struct die_info *child_die;
13171   struct type *type;
13172
13173   type = get_die_type (die, cu);
13174   if (type == NULL)
13175     type = read_structure_type (die, cu);
13176
13177   if (die->child != NULL && ! die_is_declaration (die, cu))
13178     {
13179       struct field_info fi;
13180       VEC (symbolp) *template_args = NULL;
13181       struct cleanup *back_to = make_cleanup (null_cleanup, 0);
13182
13183       memset (&fi, 0, sizeof (struct field_info));
13184
13185       child_die = die->child;
13186
13187       while (child_die && child_die->tag)
13188         {
13189           if (child_die->tag == DW_TAG_member
13190               || child_die->tag == DW_TAG_variable)
13191             {
13192               /* NOTE: carlton/2002-11-05: A C++ static data member
13193                  should be a DW_TAG_member that is a declaration, but
13194                  all versions of G++ as of this writing (so through at
13195                  least 3.2.1) incorrectly generate DW_TAG_variable
13196                  tags for them instead.  */
13197               dwarf2_add_field (&fi, child_die, cu);
13198             }
13199           else if (child_die->tag == DW_TAG_subprogram)
13200             {
13201               /* C++ member function.  */
13202               dwarf2_add_member_fn (&fi, child_die, type, cu);
13203             }
13204           else if (child_die->tag == DW_TAG_inheritance)
13205             {
13206               /* C++ base class field.  */
13207               dwarf2_add_field (&fi, child_die, cu);
13208             }
13209           else if (child_die->tag == DW_TAG_typedef)
13210             dwarf2_add_typedef (&fi, child_die, cu);
13211           else if (child_die->tag == DW_TAG_template_type_param
13212                    || child_die->tag == DW_TAG_template_value_param)
13213             {
13214               struct symbol *arg = new_symbol (child_die, NULL, cu);
13215
13216               if (arg != NULL)
13217                 VEC_safe_push (symbolp, template_args, arg);
13218             }
13219
13220           child_die = sibling_die (child_die);
13221         }
13222
13223       /* Attach template arguments to type.  */
13224       if (! VEC_empty (symbolp, template_args))
13225         {
13226           ALLOCATE_CPLUS_STRUCT_TYPE (type);
13227           TYPE_N_TEMPLATE_ARGUMENTS (type)
13228             = VEC_length (symbolp, template_args);
13229           TYPE_TEMPLATE_ARGUMENTS (type)
13230             = obstack_alloc (&objfile->objfile_obstack,
13231                              (TYPE_N_TEMPLATE_ARGUMENTS (type)
13232                               * sizeof (struct symbol *)));
13233           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
13234                   VEC_address (symbolp, template_args),
13235                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
13236                    * sizeof (struct symbol *)));
13237           VEC_free (symbolp, template_args);
13238         }
13239
13240       /* Attach fields and member functions to the type.  */
13241       if (fi.nfields)
13242         dwarf2_attach_fields_to_type (&fi, type, cu);
13243       if (fi.nfnfields)
13244         {
13245           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
13246
13247           /* Get the type which refers to the base class (possibly this
13248              class itself) which contains the vtable pointer for the current
13249              class from the DW_AT_containing_type attribute.  This use of
13250              DW_AT_containing_type is a GNU extension.  */
13251
13252           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
13253             {
13254               struct type *t = die_containing_type (die, cu);
13255
13256               TYPE_VPTR_BASETYPE (type) = t;
13257               if (type == t)
13258                 {
13259                   int i;
13260
13261                   /* Our own class provides vtbl ptr.  */
13262                   for (i = TYPE_NFIELDS (t) - 1;
13263                        i >= TYPE_N_BASECLASSES (t);
13264                        --i)
13265                     {
13266                       const char *fieldname = TYPE_FIELD_NAME (t, i);
13267
13268                       if (is_vtable_name (fieldname, cu))
13269                         {
13270                           TYPE_VPTR_FIELDNO (type) = i;
13271                           break;
13272                         }
13273                     }
13274
13275                   /* Complain if virtual function table field not found.  */
13276                   if (i < TYPE_N_BASECLASSES (t))
13277                     complaint (&symfile_complaints,
13278                                _("virtual function table pointer "
13279                                  "not found when defining class '%s'"),
13280                                TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
13281                                "");
13282                 }
13283               else
13284                 {
13285                   TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
13286                 }
13287             }
13288           else if (cu->producer
13289                    && strncmp (cu->producer,
13290                                "IBM(R) XL C/C++ Advanced Edition", 32) == 0)
13291             {
13292               /* The IBM XLC compiler does not provide direct indication
13293                  of the containing type, but the vtable pointer is
13294                  always named __vfp.  */
13295
13296               int i;
13297
13298               for (i = TYPE_NFIELDS (type) - 1;
13299                    i >= TYPE_N_BASECLASSES (type);
13300                    --i)
13301                 {
13302                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
13303                     {
13304                       TYPE_VPTR_FIELDNO (type) = i;
13305                       TYPE_VPTR_BASETYPE (type) = type;
13306                       break;
13307                     }
13308                 }
13309             }
13310         }
13311
13312       /* Copy fi.typedef_field_list linked list elements content into the
13313          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
13314       if (fi.typedef_field_list)
13315         {
13316           int i = fi.typedef_field_list_count;
13317
13318           ALLOCATE_CPLUS_STRUCT_TYPE (type);
13319           TYPE_TYPEDEF_FIELD_ARRAY (type)
13320             = TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i);
13321           TYPE_TYPEDEF_FIELD_COUNT (type) = i;
13322
13323           /* Reverse the list order to keep the debug info elements order.  */
13324           while (--i >= 0)
13325             {
13326               struct typedef_field *dest, *src;
13327
13328               dest = &TYPE_TYPEDEF_FIELD (type, i);
13329               src = &fi.typedef_field_list->field;
13330               fi.typedef_field_list = fi.typedef_field_list->next;
13331               *dest = *src;
13332             }
13333         }
13334
13335       do_cleanups (back_to);
13336
13337       if (HAVE_CPLUS_STRUCT (type))
13338         TYPE_CPLUS_REALLY_JAVA (type) = cu->language == language_java;
13339     }
13340
13341   quirk_gcc_member_function_pointer (type, objfile);
13342
13343   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
13344      snapshots) has been known to create a die giving a declaration
13345      for a class that has, as a child, a die giving a definition for a
13346      nested class.  So we have to process our children even if the
13347      current die is a declaration.  Normally, of course, a declaration
13348      won't have any children at all.  */
13349
13350   child_die = die->child;
13351
13352   while (child_die != NULL && child_die->tag)
13353     {
13354       if (child_die->tag == DW_TAG_member
13355           || child_die->tag == DW_TAG_variable
13356           || child_die->tag == DW_TAG_inheritance
13357           || child_die->tag == DW_TAG_template_value_param
13358           || child_die->tag == DW_TAG_template_type_param)
13359         {
13360           /* Do nothing.  */
13361         }
13362       else
13363         process_die (child_die, cu);
13364
13365       child_die = sibling_die (child_die);
13366     }
13367
13368   /* Do not consider external references.  According to the DWARF standard,
13369      these DIEs are identified by the fact that they have no byte_size
13370      attribute, and a declaration attribute.  */
13371   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
13372       || !die_is_declaration (die, cu))
13373     new_symbol (die, type, cu);
13374 }
13375
13376 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
13377    update TYPE using some information only available in DIE's children.  */
13378
13379 static void
13380 update_enumeration_type_from_children (struct die_info *die,
13381                                        struct type *type,
13382                                        struct dwarf2_cu *cu)
13383 {
13384   struct obstack obstack;
13385   struct die_info *child_die;
13386   int unsigned_enum = 1;
13387   int flag_enum = 1;
13388   ULONGEST mask = 0;
13389   struct cleanup *old_chain;
13390
13391   obstack_init (&obstack);
13392   old_chain = make_cleanup_obstack_free (&obstack);
13393
13394   for (child_die = die->child;
13395        child_die != NULL && child_die->tag;
13396        child_die = sibling_die (child_die))
13397     {
13398       struct attribute *attr;
13399       LONGEST value;
13400       const gdb_byte *bytes;
13401       struct dwarf2_locexpr_baton *baton;
13402       const char *name;
13403
13404       if (child_die->tag != DW_TAG_enumerator)
13405         continue;
13406
13407       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
13408       if (attr == NULL)
13409         continue;
13410
13411       name = dwarf2_name (child_die, cu);
13412       if (name == NULL)
13413         name = "<anonymous enumerator>";
13414
13415       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
13416                                &value, &bytes, &baton);
13417       if (value < 0)
13418         {
13419           unsigned_enum = 0;
13420           flag_enum = 0;
13421         }
13422       else if ((mask & value) != 0)
13423         flag_enum = 0;
13424       else
13425         mask |= value;
13426
13427       /* If we already know that the enum type is neither unsigned, nor
13428          a flag type, no need to look at the rest of the enumerates.  */
13429       if (!unsigned_enum && !flag_enum)
13430         break;
13431     }
13432
13433   if (unsigned_enum)
13434     TYPE_UNSIGNED (type) = 1;
13435   if (flag_enum)
13436     TYPE_FLAG_ENUM (type) = 1;
13437
13438   do_cleanups (old_chain);
13439 }
13440
13441 /* Given a DW_AT_enumeration_type die, set its type.  We do not
13442    complete the type's fields yet, or create any symbols.  */
13443
13444 static struct type *
13445 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
13446 {
13447   struct objfile *objfile = cu->objfile;
13448   struct type *type;
13449   struct attribute *attr;
13450   const char *name;
13451
13452   /* If the definition of this type lives in .debug_types, read that type.
13453      Don't follow DW_AT_specification though, that will take us back up
13454      the chain and we want to go down.  */
13455   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
13456   if (attr)
13457     {
13458       type = get_DW_AT_signature_type (die, attr, cu);
13459
13460       /* The type's CU may not be the same as CU.
13461          Ensure TYPE is recorded with CU in die_type_hash.  */
13462       return set_die_type (die, type, cu);
13463     }
13464
13465   type = alloc_type (objfile);
13466
13467   TYPE_CODE (type) = TYPE_CODE_ENUM;
13468   name = dwarf2_full_name (NULL, die, cu);
13469   if (name != NULL)
13470     TYPE_TAG_NAME (type) = name;
13471
13472   attr = dwarf2_attr (die, DW_AT_type, cu);
13473   if (attr != NULL)
13474     {
13475       struct type *underlying_type = die_type (die, cu);
13476
13477       TYPE_TARGET_TYPE (type) = underlying_type;
13478     }
13479
13480   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13481   if (attr)
13482     {
13483       TYPE_LENGTH (type) = DW_UNSND (attr);
13484     }
13485   else
13486     {
13487       TYPE_LENGTH (type) = 0;
13488     }
13489
13490   /* The enumeration DIE can be incomplete.  In Ada, any type can be
13491      declared as private in the package spec, and then defined only
13492      inside the package body.  Such types are known as Taft Amendment
13493      Types.  When another package uses such a type, an incomplete DIE
13494      may be generated by the compiler.  */
13495   if (die_is_declaration (die, cu))
13496     TYPE_STUB (type) = 1;
13497
13498   /* Finish the creation of this type by using the enum's children.
13499      We must call this even when the underlying type has been provided
13500      so that we can determine if we're looking at a "flag" enum.  */
13501   update_enumeration_type_from_children (die, type, cu);
13502
13503   /* If this type has an underlying type that is not a stub, then we
13504      may use its attributes.  We always use the "unsigned" attribute
13505      in this situation, because ordinarily we guess whether the type
13506      is unsigned -- but the guess can be wrong and the underlying type
13507      can tell us the reality.  However, we defer to a local size
13508      attribute if one exists, because this lets the compiler override
13509      the underlying type if needed.  */
13510   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
13511     {
13512       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
13513       if (TYPE_LENGTH (type) == 0)
13514         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
13515     }
13516
13517   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
13518
13519   return set_die_type (die, type, cu);
13520 }
13521
13522 /* Given a pointer to a die which begins an enumeration, process all
13523    the dies that define the members of the enumeration, and create the
13524    symbol for the enumeration type.
13525
13526    NOTE: We reverse the order of the element list.  */
13527
13528 static void
13529 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
13530 {
13531   struct type *this_type;
13532
13533   this_type = get_die_type (die, cu);
13534   if (this_type == NULL)
13535     this_type = read_enumeration_type (die, cu);
13536
13537   if (die->child != NULL)
13538     {
13539       struct die_info *child_die;
13540       struct symbol *sym;
13541       struct field *fields = NULL;
13542       int num_fields = 0;
13543       const char *name;
13544
13545       child_die = die->child;
13546       while (child_die && child_die->tag)
13547         {
13548           if (child_die->tag != DW_TAG_enumerator)
13549             {
13550               process_die (child_die, cu);
13551             }
13552           else
13553             {
13554               name = dwarf2_name (child_die, cu);
13555               if (name)
13556                 {
13557                   sym = new_symbol (child_die, this_type, cu);
13558
13559                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
13560                     {
13561                       fields = (struct field *)
13562                         xrealloc (fields,
13563                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
13564                                   * sizeof (struct field));
13565                     }
13566
13567                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
13568                   FIELD_TYPE (fields[num_fields]) = NULL;
13569                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
13570                   FIELD_BITSIZE (fields[num_fields]) = 0;
13571
13572                   num_fields++;
13573                 }
13574             }
13575
13576           child_die = sibling_die (child_die);
13577         }
13578
13579       if (num_fields)
13580         {
13581           TYPE_NFIELDS (this_type) = num_fields;
13582           TYPE_FIELDS (this_type) = (struct field *)
13583             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
13584           memcpy (TYPE_FIELDS (this_type), fields,
13585                   sizeof (struct field) * num_fields);
13586           xfree (fields);
13587         }
13588     }
13589
13590   /* If we are reading an enum from a .debug_types unit, and the enum
13591      is a declaration, and the enum is not the signatured type in the
13592      unit, then we do not want to add a symbol for it.  Adding a
13593      symbol would in some cases obscure the true definition of the
13594      enum, giving users an incomplete type when the definition is
13595      actually available.  Note that we do not want to do this for all
13596      enums which are just declarations, because C++0x allows forward
13597      enum declarations.  */
13598   if (cu->per_cu->is_debug_types
13599       && die_is_declaration (die, cu))
13600     {
13601       struct signatured_type *sig_type;
13602
13603       sig_type = (struct signatured_type *) cu->per_cu;
13604       gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
13605       if (sig_type->type_offset_in_section.sect_off != die->offset.sect_off)
13606         return;
13607     }
13608
13609   new_symbol (die, this_type, cu);
13610 }
13611
13612 /* Extract all information from a DW_TAG_array_type DIE and put it in
13613    the DIE's type field.  For now, this only handles one dimensional
13614    arrays.  */
13615
13616 static struct type *
13617 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
13618 {
13619   struct objfile *objfile = cu->objfile;
13620   struct die_info *child_die;
13621   struct type *type;
13622   struct type *element_type, *range_type, *index_type;
13623   struct type **range_types = NULL;
13624   struct attribute *attr;
13625   int ndim = 0;
13626   struct cleanup *back_to;
13627   const char *name;
13628   unsigned int bit_stride = 0;
13629
13630   element_type = die_type (die, cu);
13631
13632   /* The die_type call above may have already set the type for this DIE.  */
13633   type = get_die_type (die, cu);
13634   if (type)
13635     return type;
13636
13637   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
13638   if (attr != NULL)
13639     bit_stride = DW_UNSND (attr) * 8;
13640
13641   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
13642   if (attr != NULL)
13643     bit_stride = DW_UNSND (attr);
13644
13645   /* Irix 6.2 native cc creates array types without children for
13646      arrays with unspecified length.  */
13647   if (die->child == NULL)
13648     {
13649       index_type = objfile_type (objfile)->builtin_int;
13650       range_type = create_static_range_type (NULL, index_type, 0, -1);
13651       type = create_array_type_with_stride (NULL, element_type, range_type,
13652                                             bit_stride);
13653       return set_die_type (die, type, cu);
13654     }
13655
13656   back_to = make_cleanup (null_cleanup, NULL);
13657   child_die = die->child;
13658   while (child_die && child_die->tag)
13659     {
13660       if (child_die->tag == DW_TAG_subrange_type)
13661         {
13662           struct type *child_type = read_type_die (child_die, cu);
13663
13664           if (child_type != NULL)
13665             {
13666               /* The range type was succesfully read.  Save it for the
13667                  array type creation.  */
13668               if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
13669                 {
13670                   range_types = (struct type **)
13671                     xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
13672                               * sizeof (struct type *));
13673                   if (ndim == 0)
13674                     make_cleanup (free_current_contents, &range_types);
13675                 }
13676               range_types[ndim++] = child_type;
13677             }
13678         }
13679       child_die = sibling_die (child_die);
13680     }
13681
13682   /* Dwarf2 dimensions are output from left to right, create the
13683      necessary array types in backwards order.  */
13684
13685   type = element_type;
13686
13687   if (read_array_order (die, cu) == DW_ORD_col_major)
13688     {
13689       int i = 0;
13690
13691       while (i < ndim)
13692         type = create_array_type_with_stride (NULL, type, range_types[i++],
13693                                               bit_stride);
13694     }
13695   else
13696     {
13697       while (ndim-- > 0)
13698         type = create_array_type_with_stride (NULL, type, range_types[ndim],
13699                                               bit_stride);
13700     }
13701
13702   /* Understand Dwarf2 support for vector types (like they occur on
13703      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
13704      array type.  This is not part of the Dwarf2/3 standard yet, but a
13705      custom vendor extension.  The main difference between a regular
13706      array and the vector variant is that vectors are passed by value
13707      to functions.  */
13708   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
13709   if (attr)
13710     make_vector_type (type);
13711
13712   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
13713      implementation may choose to implement triple vectors using this
13714      attribute.  */
13715   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13716   if (attr)
13717     {
13718       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
13719         TYPE_LENGTH (type) = DW_UNSND (attr);
13720       else
13721         complaint (&symfile_complaints,
13722                    _("DW_AT_byte_size for array type smaller "
13723                      "than the total size of elements"));
13724     }
13725
13726   name = dwarf2_name (die, cu);
13727   if (name)
13728     TYPE_NAME (type) = name;
13729
13730   /* Install the type in the die.  */
13731   set_die_type (die, type, cu);
13732
13733   /* set_die_type should be already done.  */
13734   set_descriptive_type (type, die, cu);
13735
13736   do_cleanups (back_to);
13737
13738   return type;
13739 }
13740
13741 static enum dwarf_array_dim_ordering
13742 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
13743 {
13744   struct attribute *attr;
13745
13746   attr = dwarf2_attr (die, DW_AT_ordering, cu);
13747
13748   if (attr) return DW_SND (attr);
13749
13750   /* GNU F77 is a special case, as at 08/2004 array type info is the
13751      opposite order to the dwarf2 specification, but data is still
13752      laid out as per normal fortran.
13753
13754      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
13755      version checking.  */
13756
13757   if (cu->language == language_fortran
13758       && cu->producer && strstr (cu->producer, "GNU F77"))
13759     {
13760       return DW_ORD_row_major;
13761     }
13762
13763   switch (cu->language_defn->la_array_ordering)
13764     {
13765     case array_column_major:
13766       return DW_ORD_col_major;
13767     case array_row_major:
13768     default:
13769       return DW_ORD_row_major;
13770     };
13771 }
13772
13773 /* Extract all information from a DW_TAG_set_type DIE and put it in
13774    the DIE's type field.  */
13775
13776 static struct type *
13777 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
13778 {
13779   struct type *domain_type, *set_type;
13780   struct attribute *attr;
13781
13782   domain_type = die_type (die, cu);
13783
13784   /* The die_type call above may have already set the type for this DIE.  */
13785   set_type = get_die_type (die, cu);
13786   if (set_type)
13787     return set_type;
13788
13789   set_type = create_set_type (NULL, domain_type);
13790
13791   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13792   if (attr)
13793     TYPE_LENGTH (set_type) = DW_UNSND (attr);
13794
13795   return set_die_type (die, set_type, cu);
13796 }
13797
13798 /* A helper for read_common_block that creates a locexpr baton.
13799    SYM is the symbol which we are marking as computed.
13800    COMMON_DIE is the DIE for the common block.
13801    COMMON_LOC is the location expression attribute for the common
13802    block itself.
13803    MEMBER_LOC is the location expression attribute for the particular
13804    member of the common block that we are processing.
13805    CU is the CU from which the above come.  */
13806
13807 static void
13808 mark_common_block_symbol_computed (struct symbol *sym,
13809                                    struct die_info *common_die,
13810                                    struct attribute *common_loc,
13811                                    struct attribute *member_loc,
13812                                    struct dwarf2_cu *cu)
13813 {
13814   struct objfile *objfile = dwarf2_per_objfile->objfile;
13815   struct dwarf2_locexpr_baton *baton;
13816   gdb_byte *ptr;
13817   unsigned int cu_off;
13818   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
13819   LONGEST offset = 0;
13820
13821   gdb_assert (common_loc && member_loc);
13822   gdb_assert (attr_form_is_block (common_loc));
13823   gdb_assert (attr_form_is_block (member_loc)
13824               || attr_form_is_constant (member_loc));
13825
13826   baton = obstack_alloc (&objfile->objfile_obstack,
13827                          sizeof (struct dwarf2_locexpr_baton));
13828   baton->per_cu = cu->per_cu;
13829   gdb_assert (baton->per_cu);
13830
13831   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
13832
13833   if (attr_form_is_constant (member_loc))
13834     {
13835       offset = dwarf2_get_attr_constant_value (member_loc, 0);
13836       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
13837     }
13838   else
13839     baton->size += DW_BLOCK (member_loc)->size;
13840
13841   ptr = obstack_alloc (&objfile->objfile_obstack, baton->size);
13842   baton->data = ptr;
13843
13844   *ptr++ = DW_OP_call4;
13845   cu_off = common_die->offset.sect_off - cu->per_cu->offset.sect_off;
13846   store_unsigned_integer (ptr, 4, byte_order, cu_off);
13847   ptr += 4;
13848
13849   if (attr_form_is_constant (member_loc))
13850     {
13851       *ptr++ = DW_OP_addr;
13852       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
13853       ptr += cu->header.addr_size;
13854     }
13855   else
13856     {
13857       /* We have to copy the data here, because DW_OP_call4 will only
13858          use a DW_AT_location attribute.  */
13859       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
13860       ptr += DW_BLOCK (member_loc)->size;
13861     }
13862
13863   *ptr++ = DW_OP_plus;
13864   gdb_assert (ptr - baton->data == baton->size);
13865
13866   SYMBOL_LOCATION_BATON (sym) = baton;
13867   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
13868 }
13869
13870 /* Create appropriate locally-scoped variables for all the
13871    DW_TAG_common_block entries.  Also create a struct common_block
13872    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
13873    is used to sepate the common blocks name namespace from regular
13874    variable names.  */
13875
13876 static void
13877 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
13878 {
13879   struct attribute *attr;
13880
13881   attr = dwarf2_attr (die, DW_AT_location, cu);
13882   if (attr)
13883     {
13884       /* Support the .debug_loc offsets.  */
13885       if (attr_form_is_block (attr))
13886         {
13887           /* Ok.  */
13888         }
13889       else if (attr_form_is_section_offset (attr))
13890         {
13891           dwarf2_complex_location_expr_complaint ();
13892           attr = NULL;
13893         }
13894       else
13895         {
13896           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
13897                                                  "common block member");
13898           attr = NULL;
13899         }
13900     }
13901
13902   if (die->child != NULL)
13903     {
13904       struct objfile *objfile = cu->objfile;
13905       struct die_info *child_die;
13906       size_t n_entries = 0, size;
13907       struct common_block *common_block;
13908       struct symbol *sym;
13909
13910       for (child_die = die->child;
13911            child_die && child_die->tag;
13912            child_die = sibling_die (child_die))
13913         ++n_entries;
13914
13915       size = (sizeof (struct common_block)
13916               + (n_entries - 1) * sizeof (struct symbol *));
13917       common_block = obstack_alloc (&objfile->objfile_obstack, size);
13918       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
13919       common_block->n_entries = 0;
13920
13921       for (child_die = die->child;
13922            child_die && child_die->tag;
13923            child_die = sibling_die (child_die))
13924         {
13925           /* Create the symbol in the DW_TAG_common_block block in the current
13926              symbol scope.  */
13927           sym = new_symbol (child_die, NULL, cu);
13928           if (sym != NULL)
13929             {
13930               struct attribute *member_loc;
13931
13932               common_block->contents[common_block->n_entries++] = sym;
13933
13934               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
13935                                         cu);
13936               if (member_loc)
13937                 {
13938                   /* GDB has handled this for a long time, but it is
13939                      not specified by DWARF.  It seems to have been
13940                      emitted by gfortran at least as recently as:
13941                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
13942                   complaint (&symfile_complaints,
13943                              _("Variable in common block has "
13944                                "DW_AT_data_member_location "
13945                                "- DIE at 0x%x [in module %s]"),
13946                              child_die->offset.sect_off,
13947                              objfile_name (cu->objfile));
13948
13949                   if (attr_form_is_section_offset (member_loc))
13950                     dwarf2_complex_location_expr_complaint ();
13951                   else if (attr_form_is_constant (member_loc)
13952                            || attr_form_is_block (member_loc))
13953                     {
13954                       if (attr)
13955                         mark_common_block_symbol_computed (sym, die, attr,
13956                                                            member_loc, cu);
13957                     }
13958                   else
13959                     dwarf2_complex_location_expr_complaint ();
13960                 }
13961             }
13962         }
13963
13964       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
13965       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
13966     }
13967 }
13968
13969 /* Create a type for a C++ namespace.  */
13970
13971 static struct type *
13972 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
13973 {
13974   struct objfile *objfile = cu->objfile;
13975   const char *previous_prefix, *name;
13976   int is_anonymous;
13977   struct type *type;
13978
13979   /* For extensions, reuse the type of the original namespace.  */
13980   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
13981     {
13982       struct die_info *ext_die;
13983       struct dwarf2_cu *ext_cu = cu;
13984
13985       ext_die = dwarf2_extension (die, &ext_cu);
13986       type = read_type_die (ext_die, ext_cu);
13987
13988       /* EXT_CU may not be the same as CU.
13989          Ensure TYPE is recorded with CU in die_type_hash.  */
13990       return set_die_type (die, type, cu);
13991     }
13992
13993   name = namespace_name (die, &is_anonymous, cu);
13994
13995   /* Now build the name of the current namespace.  */
13996
13997   previous_prefix = determine_prefix (die, cu);
13998   if (previous_prefix[0] != '\0')
13999     name = typename_concat (&objfile->objfile_obstack,
14000                             previous_prefix, name, 0, cu);
14001
14002   /* Create the type.  */
14003   type = init_type (TYPE_CODE_NAMESPACE, 0, 0, NULL,
14004                     objfile);
14005   TYPE_NAME (type) = name;
14006   TYPE_TAG_NAME (type) = TYPE_NAME (type);
14007
14008   return set_die_type (die, type, cu);
14009 }
14010
14011 /* Read a C++ namespace.  */
14012
14013 static void
14014 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
14015 {
14016   struct objfile *objfile = cu->objfile;
14017   int is_anonymous;
14018
14019   /* Add a symbol associated to this if we haven't seen the namespace
14020      before.  Also, add a using directive if it's an anonymous
14021      namespace.  */
14022
14023   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
14024     {
14025       struct type *type;
14026
14027       type = read_type_die (die, cu);
14028       new_symbol (die, type, cu);
14029
14030       namespace_name (die, &is_anonymous, cu);
14031       if (is_anonymous)
14032         {
14033           const char *previous_prefix = determine_prefix (die, cu);
14034
14035           cp_add_using_directive (previous_prefix, TYPE_NAME (type), NULL,
14036                                   NULL, NULL, 0, &objfile->objfile_obstack);
14037         }
14038     }
14039
14040   if (die->child != NULL)
14041     {
14042       struct die_info *child_die = die->child;
14043
14044       while (child_die && child_die->tag)
14045         {
14046           process_die (child_die, cu);
14047           child_die = sibling_die (child_die);
14048         }
14049     }
14050 }
14051
14052 /* Read a Fortran module as type.  This DIE can be only a declaration used for
14053    imported module.  Still we need that type as local Fortran "use ... only"
14054    declaration imports depend on the created type in determine_prefix.  */
14055
14056 static struct type *
14057 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
14058 {
14059   struct objfile *objfile = cu->objfile;
14060   const char *module_name;
14061   struct type *type;
14062
14063   module_name = dwarf2_name (die, cu);
14064   if (!module_name)
14065     complaint (&symfile_complaints,
14066                _("DW_TAG_module has no name, offset 0x%x"),
14067                die->offset.sect_off);
14068   type = init_type (TYPE_CODE_MODULE, 0, 0, module_name, objfile);
14069
14070   /* determine_prefix uses TYPE_TAG_NAME.  */
14071   TYPE_TAG_NAME (type) = TYPE_NAME (type);
14072
14073   return set_die_type (die, type, cu);
14074 }
14075
14076 /* Read a Fortran module.  */
14077
14078 static void
14079 read_module (struct die_info *die, struct dwarf2_cu *cu)
14080 {
14081   struct die_info *child_die = die->child;
14082   struct type *type;
14083
14084   type = read_type_die (die, cu);
14085   new_symbol (die, type, cu);
14086
14087   while (child_die && child_die->tag)
14088     {
14089       process_die (child_die, cu);
14090       child_die = sibling_die (child_die);
14091     }
14092 }
14093
14094 /* Return the name of the namespace represented by DIE.  Set
14095    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
14096    namespace.  */
14097
14098 static const char *
14099 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
14100 {
14101   struct die_info *current_die;
14102   const char *name = NULL;
14103
14104   /* Loop through the extensions until we find a name.  */
14105
14106   for (current_die = die;
14107        current_die != NULL;
14108        current_die = dwarf2_extension (die, &cu))
14109     {
14110       name = dwarf2_name (current_die, cu);
14111       if (name != NULL)
14112         break;
14113     }
14114
14115   /* Is it an anonymous namespace?  */
14116
14117   *is_anonymous = (name == NULL);
14118   if (*is_anonymous)
14119     name = CP_ANONYMOUS_NAMESPACE_STR;
14120
14121   return name;
14122 }
14123
14124 /* Extract all information from a DW_TAG_pointer_type DIE and add to
14125    the user defined type vector.  */
14126
14127 static struct type *
14128 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
14129 {
14130   struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
14131   struct comp_unit_head *cu_header = &cu->header;
14132   struct type *type;
14133   struct attribute *attr_byte_size;
14134   struct attribute *attr_address_class;
14135   int byte_size, addr_class;
14136   struct type *target_type;
14137
14138   target_type = die_type (die, cu);
14139
14140   /* The die_type call above may have already set the type for this DIE.  */
14141   type = get_die_type (die, cu);
14142   if (type)
14143     return type;
14144
14145   type = lookup_pointer_type (target_type);
14146
14147   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
14148   if (attr_byte_size)
14149     byte_size = DW_UNSND (attr_byte_size);
14150   else
14151     byte_size = cu_header->addr_size;
14152
14153   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
14154   if (attr_address_class)
14155     addr_class = DW_UNSND (attr_address_class);
14156   else
14157     addr_class = DW_ADDR_none;
14158
14159   /* If the pointer size or address class is different than the
14160      default, create a type variant marked as such and set the
14161      length accordingly.  */
14162   if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
14163     {
14164       if (gdbarch_address_class_type_flags_p (gdbarch))
14165         {
14166           int type_flags;
14167
14168           type_flags = gdbarch_address_class_type_flags
14169                          (gdbarch, byte_size, addr_class);
14170           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
14171                       == 0);
14172           type = make_type_with_address_space (type, type_flags);
14173         }
14174       else if (TYPE_LENGTH (type) != byte_size)
14175         {
14176           complaint (&symfile_complaints,
14177                      _("invalid pointer size %d"), byte_size);
14178         }
14179       else
14180         {
14181           /* Should we also complain about unhandled address classes?  */
14182         }
14183     }
14184
14185   TYPE_LENGTH (type) = byte_size;
14186   return set_die_type (die, type, cu);
14187 }
14188
14189 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
14190    the user defined type vector.  */
14191
14192 static struct type *
14193 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
14194 {
14195   struct type *type;
14196   struct type *to_type;
14197   struct type *domain;
14198
14199   to_type = die_type (die, cu);
14200   domain = die_containing_type (die, cu);
14201
14202   /* The calls above may have already set the type for this DIE.  */
14203   type = get_die_type (die, cu);
14204   if (type)
14205     return type;
14206
14207   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
14208     type = lookup_methodptr_type (to_type);
14209   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
14210     {
14211       struct type *new_type = alloc_type (cu->objfile);
14212
14213       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
14214                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
14215                             TYPE_VARARGS (to_type));
14216       type = lookup_methodptr_type (new_type);
14217     }
14218   else
14219     type = lookup_memberptr_type (to_type, domain);
14220
14221   return set_die_type (die, type, cu);
14222 }
14223
14224 /* Extract all information from a DW_TAG_reference_type DIE and add to
14225    the user defined type vector.  */
14226
14227 static struct type *
14228 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
14229 {
14230   struct comp_unit_head *cu_header = &cu->header;
14231   struct type *type, *target_type;
14232   struct attribute *attr;
14233
14234   target_type = die_type (die, cu);
14235
14236   /* The die_type call above may have already set the type for this DIE.  */
14237   type = get_die_type (die, cu);
14238   if (type)
14239     return type;
14240
14241   type = lookup_reference_type (target_type);
14242   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14243   if (attr)
14244     {
14245       TYPE_LENGTH (type) = DW_UNSND (attr);
14246     }
14247   else
14248     {
14249       TYPE_LENGTH (type) = cu_header->addr_size;
14250     }
14251   return set_die_type (die, type, cu);
14252 }
14253
14254 /* Add the given cv-qualifiers to the element type of the array.  GCC
14255    outputs DWARF type qualifiers that apply to an array, not the
14256    element type.  But GDB relies on the array element type to carry
14257    the cv-qualifiers.  This mimics section 6.7.3 of the C99
14258    specification.  */
14259
14260 static struct type *
14261 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
14262                    struct type *base_type, int cnst, int voltl)
14263 {
14264   struct type *el_type, *inner_array;
14265
14266   base_type = copy_type (base_type);
14267   inner_array = base_type;
14268
14269   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
14270     {
14271       TYPE_TARGET_TYPE (inner_array) =
14272         copy_type (TYPE_TARGET_TYPE (inner_array));
14273       inner_array = TYPE_TARGET_TYPE (inner_array);
14274     }
14275
14276   el_type = TYPE_TARGET_TYPE (inner_array);
14277   cnst |= TYPE_CONST (el_type);
14278   voltl |= TYPE_VOLATILE (el_type);
14279   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
14280
14281   return set_die_type (die, base_type, cu);
14282 }
14283
14284 static struct type *
14285 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
14286 {
14287   struct type *base_type, *cv_type;
14288
14289   base_type = die_type (die, cu);
14290
14291   /* The die_type call above may have already set the type for this DIE.  */
14292   cv_type = get_die_type (die, cu);
14293   if (cv_type)
14294     return cv_type;
14295
14296   /* In case the const qualifier is applied to an array type, the element type
14297      is so qualified, not the array type (section 6.7.3 of C99).  */
14298   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
14299     return add_array_cv_type (die, cu, base_type, 1, 0);
14300
14301   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
14302   return set_die_type (die, cv_type, cu);
14303 }
14304
14305 static struct type *
14306 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
14307 {
14308   struct type *base_type, *cv_type;
14309
14310   base_type = die_type (die, cu);
14311
14312   /* The die_type call above may have already set the type for this DIE.  */
14313   cv_type = get_die_type (die, cu);
14314   if (cv_type)
14315     return cv_type;
14316
14317   /* In case the volatile qualifier is applied to an array type, the
14318      element type is so qualified, not the array type (section 6.7.3
14319      of C99).  */
14320   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
14321     return add_array_cv_type (die, cu, base_type, 0, 1);
14322
14323   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
14324   return set_die_type (die, cv_type, cu);
14325 }
14326
14327 /* Handle DW_TAG_restrict_type.  */
14328
14329 static struct type *
14330 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
14331 {
14332   struct type *base_type, *cv_type;
14333
14334   base_type = die_type (die, cu);
14335
14336   /* The die_type call above may have already set the type for this DIE.  */
14337   cv_type = get_die_type (die, cu);
14338   if (cv_type)
14339     return cv_type;
14340
14341   cv_type = make_restrict_type (base_type);
14342   return set_die_type (die, cv_type, cu);
14343 }
14344
14345 /* Extract all information from a DW_TAG_string_type DIE and add to
14346    the user defined type vector.  It isn't really a user defined type,
14347    but it behaves like one, with other DIE's using an AT_user_def_type
14348    attribute to reference it.  */
14349
14350 static struct type *
14351 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
14352 {
14353   struct objfile *objfile = cu->objfile;
14354   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14355   struct type *type, *range_type, *index_type, *char_type;
14356   struct attribute *attr;
14357   unsigned int length;
14358
14359   attr = dwarf2_attr (die, DW_AT_string_length, cu);
14360   if (attr)
14361     {
14362       length = DW_UNSND (attr);
14363     }
14364   else
14365     {
14366       /* Check for the DW_AT_byte_size attribute.  */
14367       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14368       if (attr)
14369         {
14370           length = DW_UNSND (attr);
14371         }
14372       else
14373         {
14374           length = 1;
14375         }
14376     }
14377
14378   index_type = objfile_type (objfile)->builtin_int;
14379   range_type = create_static_range_type (NULL, index_type, 1, length);
14380   char_type = language_string_char_type (cu->language_defn, gdbarch);
14381   type = create_string_type (NULL, char_type, range_type);
14382
14383   return set_die_type (die, type, cu);
14384 }
14385
14386 /* Assuming that DIE corresponds to a function, returns nonzero
14387    if the function is prototyped.  */
14388
14389 static int
14390 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
14391 {
14392   struct attribute *attr;
14393
14394   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
14395   if (attr && (DW_UNSND (attr) != 0))
14396     return 1;
14397
14398   /* The DWARF standard implies that the DW_AT_prototyped attribute
14399      is only meaninful for C, but the concept also extends to other
14400      languages that allow unprototyped functions (Eg: Objective C).
14401      For all other languages, assume that functions are always
14402      prototyped.  */
14403   if (cu->language != language_c
14404       && cu->language != language_objc
14405       && cu->language != language_opencl)
14406     return 1;
14407
14408   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
14409      prototyped and unprototyped functions; default to prototyped,
14410      since that is more common in modern code (and RealView warns
14411      about unprototyped functions).  */
14412   if (producer_is_realview (cu->producer))
14413     return 1;
14414
14415   return 0;
14416 }
14417
14418 /* Handle DIES due to C code like:
14419
14420    struct foo
14421    {
14422    int (*funcp)(int a, long l);
14423    int b;
14424    };
14425
14426    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
14427
14428 static struct type *
14429 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
14430 {
14431   struct objfile *objfile = cu->objfile;
14432   struct type *type;            /* Type that this function returns.  */
14433   struct type *ftype;           /* Function that returns above type.  */
14434   struct attribute *attr;
14435
14436   type = die_type (die, cu);
14437
14438   /* The die_type call above may have already set the type for this DIE.  */
14439   ftype = get_die_type (die, cu);
14440   if (ftype)
14441     return ftype;
14442
14443   ftype = lookup_function_type (type);
14444
14445   if (prototyped_function_p (die, cu))
14446     TYPE_PROTOTYPED (ftype) = 1;
14447
14448   /* Store the calling convention in the type if it's available in
14449      the subroutine die.  Otherwise set the calling convention to
14450      the default value DW_CC_normal.  */
14451   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
14452   if (attr)
14453     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
14454   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
14455     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
14456   else
14457     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
14458
14459   /* Record whether the function returns normally to its caller or not
14460      if the DWARF producer set that information.  */
14461   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
14462   if (attr && (DW_UNSND (attr) != 0))
14463     TYPE_NO_RETURN (ftype) = 1;
14464
14465   /* We need to add the subroutine type to the die immediately so
14466      we don't infinitely recurse when dealing with parameters
14467      declared as the same subroutine type.  */
14468   set_die_type (die, ftype, cu);
14469
14470   if (die->child != NULL)
14471     {
14472       struct type *void_type = objfile_type (objfile)->builtin_void;
14473       struct die_info *child_die;
14474       int nparams, iparams;
14475
14476       /* Count the number of parameters.
14477          FIXME: GDB currently ignores vararg functions, but knows about
14478          vararg member functions.  */
14479       nparams = 0;
14480       child_die = die->child;
14481       while (child_die && child_die->tag)
14482         {
14483           if (child_die->tag == DW_TAG_formal_parameter)
14484             nparams++;
14485           else if (child_die->tag == DW_TAG_unspecified_parameters)
14486             TYPE_VARARGS (ftype) = 1;
14487           child_die = sibling_die (child_die);
14488         }
14489
14490       /* Allocate storage for parameters and fill them in.  */
14491       TYPE_NFIELDS (ftype) = nparams;
14492       TYPE_FIELDS (ftype) = (struct field *)
14493         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
14494
14495       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
14496          even if we error out during the parameters reading below.  */
14497       for (iparams = 0; iparams < nparams; iparams++)
14498         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
14499
14500       iparams = 0;
14501       child_die = die->child;
14502       while (child_die && child_die->tag)
14503         {
14504           if (child_die->tag == DW_TAG_formal_parameter)
14505             {
14506               struct type *arg_type;
14507
14508               /* DWARF version 2 has no clean way to discern C++
14509                  static and non-static member functions.  G++ helps
14510                  GDB by marking the first parameter for non-static
14511                  member functions (which is the this pointer) as
14512                  artificial.  We pass this information to
14513                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
14514
14515                  DWARF version 3 added DW_AT_object_pointer, which GCC
14516                  4.5 does not yet generate.  */
14517               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
14518               if (attr)
14519                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
14520               else
14521                 {
14522                   TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
14523
14524                   /* GCC/43521: In java, the formal parameter
14525                      "this" is sometimes not marked with DW_AT_artificial.  */
14526                   if (cu->language == language_java)
14527                     {
14528                       const char *name = dwarf2_name (child_die, cu);
14529
14530                       if (name && !strcmp (name, "this"))
14531                         TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 1;
14532                     }
14533                 }
14534               arg_type = die_type (child_die, cu);
14535
14536               /* RealView does not mark THIS as const, which the testsuite
14537                  expects.  GCC marks THIS as const in method definitions,
14538                  but not in the class specifications (GCC PR 43053).  */
14539               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
14540                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
14541                 {
14542                   int is_this = 0;
14543                   struct dwarf2_cu *arg_cu = cu;
14544                   const char *name = dwarf2_name (child_die, cu);
14545
14546                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
14547                   if (attr)
14548                     {
14549                       /* If the compiler emits this, use it.  */
14550                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
14551                         is_this = 1;
14552                     }
14553                   else if (name && strcmp (name, "this") == 0)
14554                     /* Function definitions will have the argument names.  */
14555                     is_this = 1;
14556                   else if (name == NULL && iparams == 0)
14557                     /* Declarations may not have the names, so like
14558                        elsewhere in GDB, assume an artificial first
14559                        argument is "this".  */
14560                     is_this = 1;
14561
14562                   if (is_this)
14563                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
14564                                              arg_type, 0);
14565                 }
14566
14567               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
14568               iparams++;
14569             }
14570           child_die = sibling_die (child_die);
14571         }
14572     }
14573
14574   return ftype;
14575 }
14576
14577 static struct type *
14578 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
14579 {
14580   struct objfile *objfile = cu->objfile;
14581   const char *name = NULL;
14582   struct type *this_type, *target_type;
14583
14584   name = dwarf2_full_name (NULL, die, cu);
14585   this_type = init_type (TYPE_CODE_TYPEDEF, 0,
14586                          TYPE_FLAG_TARGET_STUB, NULL, objfile);
14587   TYPE_NAME (this_type) = name;
14588   set_die_type (die, this_type, cu);
14589   target_type = die_type (die, cu);
14590   if (target_type != this_type)
14591     TYPE_TARGET_TYPE (this_type) = target_type;
14592   else
14593     {
14594       /* Self-referential typedefs are, it seems, not allowed by the DWARF
14595          spec and cause infinite loops in GDB.  */
14596       complaint (&symfile_complaints,
14597                  _("Self-referential DW_TAG_typedef "
14598                    "- DIE at 0x%x [in module %s]"),
14599                  die->offset.sect_off, objfile_name (objfile));
14600       TYPE_TARGET_TYPE (this_type) = NULL;
14601     }
14602   return this_type;
14603 }
14604
14605 /* Find a representation of a given base type and install
14606    it in the TYPE field of the die.  */
14607
14608 static struct type *
14609 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
14610 {
14611   struct objfile *objfile = cu->objfile;
14612   struct type *type;
14613   struct attribute *attr;
14614   int encoding = 0, size = 0;
14615   const char *name;
14616   enum type_code code = TYPE_CODE_INT;
14617   int type_flags = 0;
14618   struct type *target_type = NULL;
14619
14620   attr = dwarf2_attr (die, DW_AT_encoding, cu);
14621   if (attr)
14622     {
14623       encoding = DW_UNSND (attr);
14624     }
14625   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14626   if (attr)
14627     {
14628       size = DW_UNSND (attr);
14629     }
14630   name = dwarf2_name (die, cu);
14631   if (!name)
14632     {
14633       complaint (&symfile_complaints,
14634                  _("DW_AT_name missing from DW_TAG_base_type"));
14635     }
14636
14637   switch (encoding)
14638     {
14639       case DW_ATE_address:
14640         /* Turn DW_ATE_address into a void * pointer.  */
14641         code = TYPE_CODE_PTR;
14642         type_flags |= TYPE_FLAG_UNSIGNED;
14643         target_type = init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
14644         break;
14645       case DW_ATE_boolean:
14646         code = TYPE_CODE_BOOL;
14647         type_flags |= TYPE_FLAG_UNSIGNED;
14648         break;
14649       case DW_ATE_complex_float:
14650         code = TYPE_CODE_COMPLEX;
14651         target_type = init_type (TYPE_CODE_FLT, size / 2, 0, NULL, objfile);
14652         break;
14653       case DW_ATE_decimal_float:
14654         code = TYPE_CODE_DECFLOAT;
14655         break;
14656       case DW_ATE_float:
14657         code = TYPE_CODE_FLT;
14658         break;
14659       case DW_ATE_signed:
14660         break;
14661       case DW_ATE_unsigned:
14662         type_flags |= TYPE_FLAG_UNSIGNED;
14663         if (cu->language == language_fortran
14664             && name
14665             && strncmp (name, "character(", sizeof ("character(") - 1) == 0)
14666           code = TYPE_CODE_CHAR;
14667         break;
14668       case DW_ATE_signed_char:
14669         if (cu->language == language_ada || cu->language == language_m2
14670             || cu->language == language_pascal
14671             || cu->language == language_fortran)
14672           code = TYPE_CODE_CHAR;
14673         break;
14674       case DW_ATE_unsigned_char:
14675         if (cu->language == language_ada || cu->language == language_m2
14676             || cu->language == language_pascal
14677             || cu->language == language_fortran)
14678           code = TYPE_CODE_CHAR;
14679         type_flags |= TYPE_FLAG_UNSIGNED;
14680         break;
14681       case DW_ATE_UTF:
14682         /* We just treat this as an integer and then recognize the
14683            type by name elsewhere.  */
14684         break;
14685
14686       default:
14687         complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
14688                    dwarf_type_encoding_name (encoding));
14689         break;
14690     }
14691
14692   type = init_type (code, size, type_flags, NULL, objfile);
14693   TYPE_NAME (type) = name;
14694   TYPE_TARGET_TYPE (type) = target_type;
14695
14696   if (name && strcmp (name, "char") == 0)
14697     TYPE_NOSIGN (type) = 1;
14698
14699   return set_die_type (die, type, cu);
14700 }
14701
14702 /* Parse dwarf attribute if it's a block, reference or constant and put the
14703    resulting value of the attribute into struct bound_prop.
14704    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
14705
14706 static int
14707 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
14708                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
14709 {
14710   struct dwarf2_property_baton *baton;
14711   struct obstack *obstack = &cu->objfile->objfile_obstack;
14712
14713   if (attr == NULL || prop == NULL)
14714     return 0;
14715
14716   if (attr_form_is_block (attr))
14717     {
14718       baton = obstack_alloc (obstack, sizeof (*baton));
14719       baton->referenced_type = NULL;
14720       baton->locexpr.per_cu = cu->per_cu;
14721       baton->locexpr.size = DW_BLOCK (attr)->size;
14722       baton->locexpr.data = DW_BLOCK (attr)->data;
14723       prop->data.baton = baton;
14724       prop->kind = PROP_LOCEXPR;
14725       gdb_assert (prop->data.baton != NULL);
14726     }
14727   else if (attr_form_is_ref (attr))
14728     {
14729       struct dwarf2_cu *target_cu = cu;
14730       struct die_info *target_die;
14731       struct attribute *target_attr;
14732
14733       target_die = follow_die_ref (die, attr, &target_cu);
14734       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
14735       if (target_attr == NULL)
14736         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
14737                                    target_cu);
14738       if (target_attr == NULL)
14739         return 0;
14740
14741       switch (target_attr->name)
14742         {
14743           case DW_AT_location:
14744             if (attr_form_is_section_offset (target_attr))
14745               {
14746                 baton = obstack_alloc (obstack, sizeof (*baton));
14747                 baton->referenced_type = die_type (target_die, target_cu);
14748                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
14749                 prop->data.baton = baton;
14750                 prop->kind = PROP_LOCLIST;
14751                 gdb_assert (prop->data.baton != NULL);
14752               }
14753             else if (attr_form_is_block (target_attr))
14754               {
14755                 baton = obstack_alloc (obstack, sizeof (*baton));
14756                 baton->referenced_type = die_type (target_die, target_cu);
14757                 baton->locexpr.per_cu = cu->per_cu;
14758                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
14759                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
14760                 prop->data.baton = baton;
14761                 prop->kind = PROP_LOCEXPR;
14762                 gdb_assert (prop->data.baton != NULL);
14763               }
14764             else
14765               {
14766                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
14767                                                        "dynamic property");
14768                 return 0;
14769               }
14770             break;
14771           case DW_AT_data_member_location:
14772             {
14773               LONGEST offset;
14774
14775               if (!handle_data_member_location (target_die, target_cu,
14776                                                 &offset))
14777                 return 0;
14778
14779               baton = obstack_alloc (obstack, sizeof (*baton));
14780               baton->referenced_type = get_die_type (target_die->parent,
14781                                                      target_cu);
14782               baton->offset_info.offset = offset;
14783               baton->offset_info.type = die_type (target_die, target_cu);
14784               prop->data.baton = baton;
14785               prop->kind = PROP_ADDR_OFFSET;
14786               break;
14787             }
14788         }
14789     }
14790   else if (attr_form_is_constant (attr))
14791     {
14792       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
14793       prop->kind = PROP_CONST;
14794     }
14795   else
14796     {
14797       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
14798                                              dwarf2_name (die, cu));
14799       return 0;
14800     }
14801
14802   return 1;
14803 }
14804
14805 /* Read the given DW_AT_subrange DIE.  */
14806
14807 static struct type *
14808 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
14809 {
14810   struct type *base_type, *orig_base_type;
14811   struct type *range_type;
14812   struct attribute *attr;
14813   struct dynamic_prop low, high;
14814   int low_default_is_valid;
14815   int high_bound_is_count = 0;
14816   const char *name;
14817   LONGEST negative_mask;
14818
14819   orig_base_type = die_type (die, cu);
14820   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
14821      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
14822      creating the range type, but we use the result of check_typedef
14823      when examining properties of the type.  */
14824   base_type = check_typedef (orig_base_type);
14825
14826   /* The die_type call above may have already set the type for this DIE.  */
14827   range_type = get_die_type (die, cu);
14828   if (range_type)
14829     return range_type;
14830
14831   low.kind = PROP_CONST;
14832   high.kind = PROP_CONST;
14833   high.data.const_val = 0;
14834
14835   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
14836      omitting DW_AT_lower_bound.  */
14837   switch (cu->language)
14838     {
14839     case language_c:
14840     case language_cplus:
14841       low.data.const_val = 0;
14842       low_default_is_valid = 1;
14843       break;
14844     case language_fortran:
14845       low.data.const_val = 1;
14846       low_default_is_valid = 1;
14847       break;
14848     case language_d:
14849     case language_java:
14850     case language_objc:
14851       low.data.const_val = 0;
14852       low_default_is_valid = (cu->header.version >= 4);
14853       break;
14854     case language_ada:
14855     case language_m2:
14856     case language_pascal:
14857       low.data.const_val = 1;
14858       low_default_is_valid = (cu->header.version >= 4);
14859       break;
14860     default:
14861       low.data.const_val = 0;
14862       low_default_is_valid = 0;
14863       break;
14864     }
14865
14866   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
14867   if (attr)
14868     attr_to_dynamic_prop (attr, die, cu, &low);
14869   else if (!low_default_is_valid)
14870     complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
14871                                       "- DIE at 0x%x [in module %s]"),
14872                die->offset.sect_off, objfile_name (cu->objfile));
14873
14874   attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
14875   if (!attr_to_dynamic_prop (attr, die, cu, &high))
14876     {
14877       attr = dwarf2_attr (die, DW_AT_count, cu);
14878       if (attr_to_dynamic_prop (attr, die, cu, &high))
14879         {
14880           /* If bounds are constant do the final calculation here.  */
14881           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
14882             high.data.const_val = low.data.const_val + high.data.const_val - 1;
14883           else
14884             high_bound_is_count = 1;
14885         }
14886     }
14887
14888   /* Dwarf-2 specifications explicitly allows to create subrange types
14889      without specifying a base type.
14890      In that case, the base type must be set to the type of
14891      the lower bound, upper bound or count, in that order, if any of these
14892      three attributes references an object that has a type.
14893      If no base type is found, the Dwarf-2 specifications say that
14894      a signed integer type of size equal to the size of an address should
14895      be used.
14896      For the following C code: `extern char gdb_int [];'
14897      GCC produces an empty range DIE.
14898      FIXME: muller/2010-05-28: Possible references to object for low bound,
14899      high bound or count are not yet handled by this code.  */
14900   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
14901     {
14902       struct objfile *objfile = cu->objfile;
14903       struct gdbarch *gdbarch = get_objfile_arch (objfile);
14904       int addr_size = gdbarch_addr_bit (gdbarch) /8;
14905       struct type *int_type = objfile_type (objfile)->builtin_int;
14906
14907       /* Test "int", "long int", and "long long int" objfile types,
14908          and select the first one having a size above or equal to the
14909          architecture address size.  */
14910       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14911         base_type = int_type;
14912       else
14913         {
14914           int_type = objfile_type (objfile)->builtin_long;
14915           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14916             base_type = int_type;
14917           else
14918             {
14919               int_type = objfile_type (objfile)->builtin_long_long;
14920               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14921                 base_type = int_type;
14922             }
14923         }
14924     }
14925
14926   /* Normally, the DWARF producers are expected to use a signed
14927      constant form (Eg. DW_FORM_sdata) to express negative bounds.
14928      But this is unfortunately not always the case, as witnessed
14929      with GCC, for instance, where the ambiguous DW_FORM_dataN form
14930      is used instead.  To work around that ambiguity, we treat
14931      the bounds as signed, and thus sign-extend their values, when
14932      the base type is signed.  */
14933   negative_mask =
14934     (LONGEST) -1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1);
14935   if (low.kind == PROP_CONST
14936       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
14937     low.data.const_val |= negative_mask;
14938   if (high.kind == PROP_CONST
14939       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
14940     high.data.const_val |= negative_mask;
14941
14942   range_type = create_range_type (NULL, orig_base_type, &low, &high);
14943
14944   if (high_bound_is_count)
14945     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
14946
14947   /* Ada expects an empty array on no boundary attributes.  */
14948   if (attr == NULL && cu->language != language_ada)
14949     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
14950
14951   name = dwarf2_name (die, cu);
14952   if (name)
14953     TYPE_NAME (range_type) = name;
14954
14955   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14956   if (attr)
14957     TYPE_LENGTH (range_type) = DW_UNSND (attr);
14958
14959   set_die_type (die, range_type, cu);
14960
14961   /* set_die_type should be already done.  */
14962   set_descriptive_type (range_type, die, cu);
14963
14964   return range_type;
14965 }
14966
14967 static struct type *
14968 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
14969 {
14970   struct type *type;
14971
14972   /* For now, we only support the C meaning of an unspecified type: void.  */
14973
14974   type = init_type (TYPE_CODE_VOID, 0, 0, NULL, cu->objfile);
14975   TYPE_NAME (type) = dwarf2_name (die, cu);
14976
14977   return set_die_type (die, type, cu);
14978 }
14979
14980 /* Read a single die and all its descendents.  Set the die's sibling
14981    field to NULL; set other fields in the die correctly, and set all
14982    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
14983    location of the info_ptr after reading all of those dies.  PARENT
14984    is the parent of the die in question.  */
14985
14986 static struct die_info *
14987 read_die_and_children (const struct die_reader_specs *reader,
14988                        const gdb_byte *info_ptr,
14989                        const gdb_byte **new_info_ptr,
14990                        struct die_info *parent)
14991 {
14992   struct die_info *die;
14993   const gdb_byte *cur_ptr;
14994   int has_children;
14995
14996   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
14997   if (die == NULL)
14998     {
14999       *new_info_ptr = cur_ptr;
15000       return NULL;
15001     }
15002   store_in_ref_table (die, reader->cu);
15003
15004   if (has_children)
15005     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
15006   else
15007     {
15008       die->child = NULL;
15009       *new_info_ptr = cur_ptr;
15010     }
15011
15012   die->sibling = NULL;
15013   die->parent = parent;
15014   return die;
15015 }
15016
15017 /* Read a die, all of its descendents, and all of its siblings; set
15018    all of the fields of all of the dies correctly.  Arguments are as
15019    in read_die_and_children.  */
15020
15021 static struct die_info *
15022 read_die_and_siblings_1 (const struct die_reader_specs *reader,
15023                          const gdb_byte *info_ptr,
15024                          const gdb_byte **new_info_ptr,
15025                          struct die_info *parent)
15026 {
15027   struct die_info *first_die, *last_sibling;
15028   const gdb_byte *cur_ptr;
15029
15030   cur_ptr = info_ptr;
15031   first_die = last_sibling = NULL;
15032
15033   while (1)
15034     {
15035       struct die_info *die
15036         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
15037
15038       if (die == NULL)
15039         {
15040           *new_info_ptr = cur_ptr;
15041           return first_die;
15042         }
15043
15044       if (!first_die)
15045         first_die = die;
15046       else
15047         last_sibling->sibling = die;
15048
15049       last_sibling = die;
15050     }
15051 }
15052
15053 /* Read a die, all of its descendents, and all of its siblings; set
15054    all of the fields of all of the dies correctly.  Arguments are as
15055    in read_die_and_children.
15056    This the main entry point for reading a DIE and all its children.  */
15057
15058 static struct die_info *
15059 read_die_and_siblings (const struct die_reader_specs *reader,
15060                        const gdb_byte *info_ptr,
15061                        const gdb_byte **new_info_ptr,
15062                        struct die_info *parent)
15063 {
15064   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
15065                                                   new_info_ptr, parent);
15066
15067   if (dwarf2_die_debug)
15068     {
15069       fprintf_unfiltered (gdb_stdlog,
15070                           "Read die from %s@0x%x of %s:\n",
15071                           get_section_name (reader->die_section),
15072                           (unsigned) (info_ptr - reader->die_section->buffer),
15073                           bfd_get_filename (reader->abfd));
15074       dump_die (die, dwarf2_die_debug);
15075     }
15076
15077   return die;
15078 }
15079
15080 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
15081    attributes.
15082    The caller is responsible for filling in the extra attributes
15083    and updating (*DIEP)->num_attrs.
15084    Set DIEP to point to a newly allocated die with its information,
15085    except for its child, sibling, and parent fields.
15086    Set HAS_CHILDREN to tell whether the die has children or not.  */
15087
15088 static const gdb_byte *
15089 read_full_die_1 (const struct die_reader_specs *reader,
15090                  struct die_info **diep, const gdb_byte *info_ptr,
15091                  int *has_children, int num_extra_attrs)
15092 {
15093   unsigned int abbrev_number, bytes_read, i;
15094   sect_offset offset;
15095   struct abbrev_info *abbrev;
15096   struct die_info *die;
15097   struct dwarf2_cu *cu = reader->cu;
15098   bfd *abfd = reader->abfd;
15099
15100   offset.sect_off = info_ptr - reader->buffer;
15101   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15102   info_ptr += bytes_read;
15103   if (!abbrev_number)
15104     {
15105       *diep = NULL;
15106       *has_children = 0;
15107       return info_ptr;
15108     }
15109
15110   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
15111   if (!abbrev)
15112     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
15113            abbrev_number,
15114            bfd_get_filename (abfd));
15115
15116   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
15117   die->offset = offset;
15118   die->tag = abbrev->tag;
15119   die->abbrev = abbrev_number;
15120
15121   /* Make the result usable.
15122      The caller needs to update num_attrs after adding the extra
15123      attributes.  */
15124   die->num_attrs = abbrev->num_attrs;
15125
15126   for (i = 0; i < abbrev->num_attrs; ++i)
15127     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
15128                                info_ptr);
15129
15130   *diep = die;
15131   *has_children = abbrev->has_children;
15132   return info_ptr;
15133 }
15134
15135 /* Read a die and all its attributes.
15136    Set DIEP to point to a newly allocated die with its information,
15137    except for its child, sibling, and parent fields.
15138    Set HAS_CHILDREN to tell whether the die has children or not.  */
15139
15140 static const gdb_byte *
15141 read_full_die (const struct die_reader_specs *reader,
15142                struct die_info **diep, const gdb_byte *info_ptr,
15143                int *has_children)
15144 {
15145   const gdb_byte *result;
15146
15147   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
15148
15149   if (dwarf2_die_debug)
15150     {
15151       fprintf_unfiltered (gdb_stdlog,
15152                           "Read die from %s@0x%x of %s:\n",
15153                           get_section_name (reader->die_section),
15154                           (unsigned) (info_ptr - reader->die_section->buffer),
15155                           bfd_get_filename (reader->abfd));
15156       dump_die (*diep, dwarf2_die_debug);
15157     }
15158
15159   return result;
15160 }
15161 \f
15162 /* Abbreviation tables.
15163
15164    In DWARF version 2, the description of the debugging information is
15165    stored in a separate .debug_abbrev section.  Before we read any
15166    dies from a section we read in all abbreviations and install them
15167    in a hash table.  */
15168
15169 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
15170
15171 static struct abbrev_info *
15172 abbrev_table_alloc_abbrev (struct abbrev_table *abbrev_table)
15173 {
15174   struct abbrev_info *abbrev;
15175
15176   abbrev = (struct abbrev_info *)
15177     obstack_alloc (&abbrev_table->abbrev_obstack, sizeof (struct abbrev_info));
15178   memset (abbrev, 0, sizeof (struct abbrev_info));
15179   return abbrev;
15180 }
15181
15182 /* Add an abbreviation to the table.  */
15183
15184 static void
15185 abbrev_table_add_abbrev (struct abbrev_table *abbrev_table,
15186                          unsigned int abbrev_number,
15187                          struct abbrev_info *abbrev)
15188 {
15189   unsigned int hash_number;
15190
15191   hash_number = abbrev_number % ABBREV_HASH_SIZE;
15192   abbrev->next = abbrev_table->abbrevs[hash_number];
15193   abbrev_table->abbrevs[hash_number] = abbrev;
15194 }
15195
15196 /* Look up an abbrev in the table.
15197    Returns NULL if the abbrev is not found.  */
15198
15199 static struct abbrev_info *
15200 abbrev_table_lookup_abbrev (const struct abbrev_table *abbrev_table,
15201                             unsigned int abbrev_number)
15202 {
15203   unsigned int hash_number;
15204   struct abbrev_info *abbrev;
15205
15206   hash_number = abbrev_number % ABBREV_HASH_SIZE;
15207   abbrev = abbrev_table->abbrevs[hash_number];
15208
15209   while (abbrev)
15210     {
15211       if (abbrev->number == abbrev_number)
15212         return abbrev;
15213       abbrev = abbrev->next;
15214     }
15215   return NULL;
15216 }
15217
15218 /* Read in an abbrev table.  */
15219
15220 static struct abbrev_table *
15221 abbrev_table_read_table (struct dwarf2_section_info *section,
15222                          sect_offset offset)
15223 {
15224   struct objfile *objfile = dwarf2_per_objfile->objfile;
15225   bfd *abfd = get_section_bfd_owner (section);
15226   struct abbrev_table *abbrev_table;
15227   const gdb_byte *abbrev_ptr;
15228   struct abbrev_info *cur_abbrev;
15229   unsigned int abbrev_number, bytes_read, abbrev_name;
15230   unsigned int abbrev_form;
15231   struct attr_abbrev *cur_attrs;
15232   unsigned int allocated_attrs;
15233
15234   abbrev_table = XNEW (struct abbrev_table);
15235   abbrev_table->offset = offset;
15236   obstack_init (&abbrev_table->abbrev_obstack);
15237   abbrev_table->abbrevs = obstack_alloc (&abbrev_table->abbrev_obstack,
15238                                          (ABBREV_HASH_SIZE
15239                                           * sizeof (struct abbrev_info *)));
15240   memset (abbrev_table->abbrevs, 0,
15241           ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
15242
15243   dwarf2_read_section (objfile, section);
15244   abbrev_ptr = section->buffer + offset.sect_off;
15245   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15246   abbrev_ptr += bytes_read;
15247
15248   allocated_attrs = ATTR_ALLOC_CHUNK;
15249   cur_attrs = xmalloc (allocated_attrs * sizeof (struct attr_abbrev));
15250
15251   /* Loop until we reach an abbrev number of 0.  */
15252   while (abbrev_number)
15253     {
15254       cur_abbrev = abbrev_table_alloc_abbrev (abbrev_table);
15255
15256       /* read in abbrev header */
15257       cur_abbrev->number = abbrev_number;
15258       cur_abbrev->tag = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15259       abbrev_ptr += bytes_read;
15260       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
15261       abbrev_ptr += 1;
15262
15263       /* now read in declarations */
15264       abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15265       abbrev_ptr += bytes_read;
15266       abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15267       abbrev_ptr += bytes_read;
15268       while (abbrev_name)
15269         {
15270           if (cur_abbrev->num_attrs == allocated_attrs)
15271             {
15272               allocated_attrs += ATTR_ALLOC_CHUNK;
15273               cur_attrs
15274                 = xrealloc (cur_attrs, (allocated_attrs
15275                                         * sizeof (struct attr_abbrev)));
15276             }
15277
15278           cur_attrs[cur_abbrev->num_attrs].name = abbrev_name;
15279           cur_attrs[cur_abbrev->num_attrs++].form = abbrev_form;
15280           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15281           abbrev_ptr += bytes_read;
15282           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15283           abbrev_ptr += bytes_read;
15284         }
15285
15286       cur_abbrev->attrs = obstack_alloc (&abbrev_table->abbrev_obstack,
15287                                          (cur_abbrev->num_attrs
15288                                           * sizeof (struct attr_abbrev)));
15289       memcpy (cur_abbrev->attrs, cur_attrs,
15290               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
15291
15292       abbrev_table_add_abbrev (abbrev_table, abbrev_number, cur_abbrev);
15293
15294       /* Get next abbreviation.
15295          Under Irix6 the abbreviations for a compilation unit are not
15296          always properly terminated with an abbrev number of 0.
15297          Exit loop if we encounter an abbreviation which we have
15298          already read (which means we are about to read the abbreviations
15299          for the next compile unit) or if the end of the abbreviation
15300          table is reached.  */
15301       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
15302         break;
15303       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15304       abbrev_ptr += bytes_read;
15305       if (abbrev_table_lookup_abbrev (abbrev_table, abbrev_number) != NULL)
15306         break;
15307     }
15308
15309   xfree (cur_attrs);
15310   return abbrev_table;
15311 }
15312
15313 /* Free the resources held by ABBREV_TABLE.  */
15314
15315 static void
15316 abbrev_table_free (struct abbrev_table *abbrev_table)
15317 {
15318   obstack_free (&abbrev_table->abbrev_obstack, NULL);
15319   xfree (abbrev_table);
15320 }
15321
15322 /* Same as abbrev_table_free but as a cleanup.
15323    We pass in a pointer to the pointer to the table so that we can
15324    set the pointer to NULL when we're done.  It also simplifies
15325    build_type_psymtabs_1.  */
15326
15327 static void
15328 abbrev_table_free_cleanup (void *table_ptr)
15329 {
15330   struct abbrev_table **abbrev_table_ptr = table_ptr;
15331
15332   if (*abbrev_table_ptr != NULL)
15333     abbrev_table_free (*abbrev_table_ptr);
15334   *abbrev_table_ptr = NULL;
15335 }
15336
15337 /* Read the abbrev table for CU from ABBREV_SECTION.  */
15338
15339 static void
15340 dwarf2_read_abbrevs (struct dwarf2_cu *cu,
15341                      struct dwarf2_section_info *abbrev_section)
15342 {
15343   cu->abbrev_table =
15344     abbrev_table_read_table (abbrev_section, cu->header.abbrev_offset);
15345 }
15346
15347 /* Release the memory used by the abbrev table for a compilation unit.  */
15348
15349 static void
15350 dwarf2_free_abbrev_table (void *ptr_to_cu)
15351 {
15352   struct dwarf2_cu *cu = ptr_to_cu;
15353
15354   if (cu->abbrev_table != NULL)
15355     abbrev_table_free (cu->abbrev_table);
15356   /* Set this to NULL so that we SEGV if we try to read it later,
15357      and also because free_comp_unit verifies this is NULL.  */
15358   cu->abbrev_table = NULL;
15359 }
15360 \f
15361 /* Returns nonzero if TAG represents a type that we might generate a partial
15362    symbol for.  */
15363
15364 static int
15365 is_type_tag_for_partial (int tag)
15366 {
15367   switch (tag)
15368     {
15369 #if 0
15370     /* Some types that would be reasonable to generate partial symbols for,
15371        that we don't at present.  */
15372     case DW_TAG_array_type:
15373     case DW_TAG_file_type:
15374     case DW_TAG_ptr_to_member_type:
15375     case DW_TAG_set_type:
15376     case DW_TAG_string_type:
15377     case DW_TAG_subroutine_type:
15378 #endif
15379     case DW_TAG_base_type:
15380     case DW_TAG_class_type:
15381     case DW_TAG_interface_type:
15382     case DW_TAG_enumeration_type:
15383     case DW_TAG_structure_type:
15384     case DW_TAG_subrange_type:
15385     case DW_TAG_typedef:
15386     case DW_TAG_union_type:
15387       return 1;
15388     default:
15389       return 0;
15390     }
15391 }
15392
15393 /* Load all DIEs that are interesting for partial symbols into memory.  */
15394
15395 static struct partial_die_info *
15396 load_partial_dies (const struct die_reader_specs *reader,
15397                    const gdb_byte *info_ptr, int building_psymtab)
15398 {
15399   struct dwarf2_cu *cu = reader->cu;
15400   struct objfile *objfile = cu->objfile;
15401   struct partial_die_info *part_die;
15402   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
15403   struct abbrev_info *abbrev;
15404   unsigned int bytes_read;
15405   unsigned int load_all = 0;
15406   int nesting_level = 1;
15407
15408   parent_die = NULL;
15409   last_die = NULL;
15410
15411   gdb_assert (cu->per_cu != NULL);
15412   if (cu->per_cu->load_all_dies)
15413     load_all = 1;
15414
15415   cu->partial_dies
15416     = htab_create_alloc_ex (cu->header.length / 12,
15417                             partial_die_hash,
15418                             partial_die_eq,
15419                             NULL,
15420                             &cu->comp_unit_obstack,
15421                             hashtab_obstack_allocate,
15422                             dummy_obstack_deallocate);
15423
15424   part_die = obstack_alloc (&cu->comp_unit_obstack,
15425                             sizeof (struct partial_die_info));
15426
15427   while (1)
15428     {
15429       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
15430
15431       /* A NULL abbrev means the end of a series of children.  */
15432       if (abbrev == NULL)
15433         {
15434           if (--nesting_level == 0)
15435             {
15436               /* PART_DIE was probably the last thing allocated on the
15437                  comp_unit_obstack, so we could call obstack_free
15438                  here.  We don't do that because the waste is small,
15439                  and will be cleaned up when we're done with this
15440                  compilation unit.  This way, we're also more robust
15441                  against other users of the comp_unit_obstack.  */
15442               return first_die;
15443             }
15444           info_ptr += bytes_read;
15445           last_die = parent_die;
15446           parent_die = parent_die->die_parent;
15447           continue;
15448         }
15449
15450       /* Check for template arguments.  We never save these; if
15451          they're seen, we just mark the parent, and go on our way.  */
15452       if (parent_die != NULL
15453           && cu->language == language_cplus
15454           && (abbrev->tag == DW_TAG_template_type_param
15455               || abbrev->tag == DW_TAG_template_value_param))
15456         {
15457           parent_die->has_template_arguments = 1;
15458
15459           if (!load_all)
15460             {
15461               /* We don't need a partial DIE for the template argument.  */
15462               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
15463               continue;
15464             }
15465         }
15466
15467       /* We only recurse into c++ subprograms looking for template arguments.
15468          Skip their other children.  */
15469       if (!load_all
15470           && cu->language == language_cplus
15471           && parent_die != NULL
15472           && parent_die->tag == DW_TAG_subprogram)
15473         {
15474           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
15475           continue;
15476         }
15477
15478       /* Check whether this DIE is interesting enough to save.  Normally
15479          we would not be interested in members here, but there may be
15480          later variables referencing them via DW_AT_specification (for
15481          static members).  */
15482       if (!load_all
15483           && !is_type_tag_for_partial (abbrev->tag)
15484           && abbrev->tag != DW_TAG_constant
15485           && abbrev->tag != DW_TAG_enumerator
15486           && abbrev->tag != DW_TAG_subprogram
15487           && abbrev->tag != DW_TAG_lexical_block
15488           && abbrev->tag != DW_TAG_variable
15489           && abbrev->tag != DW_TAG_namespace
15490           && abbrev->tag != DW_TAG_module
15491           && abbrev->tag != DW_TAG_member
15492           && abbrev->tag != DW_TAG_imported_unit
15493           && abbrev->tag != DW_TAG_imported_declaration)
15494         {
15495           /* Otherwise we skip to the next sibling, if any.  */
15496           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
15497           continue;
15498         }
15499
15500       info_ptr = read_partial_die (reader, part_die, abbrev, bytes_read,
15501                                    info_ptr);
15502
15503       /* This two-pass algorithm for processing partial symbols has a
15504          high cost in cache pressure.  Thus, handle some simple cases
15505          here which cover the majority of C partial symbols.  DIEs
15506          which neither have specification tags in them, nor could have
15507          specification tags elsewhere pointing at them, can simply be
15508          processed and discarded.
15509
15510          This segment is also optional; scan_partial_symbols and
15511          add_partial_symbol will handle these DIEs if we chain
15512          them in normally.  When compilers which do not emit large
15513          quantities of duplicate debug information are more common,
15514          this code can probably be removed.  */
15515
15516       /* Any complete simple types at the top level (pretty much all
15517          of them, for a language without namespaces), can be processed
15518          directly.  */
15519       if (parent_die == NULL
15520           && part_die->has_specification == 0
15521           && part_die->is_declaration == 0
15522           && ((part_die->tag == DW_TAG_typedef && !part_die->has_children)
15523               || part_die->tag == DW_TAG_base_type
15524               || part_die->tag == DW_TAG_subrange_type))
15525         {
15526           if (building_psymtab && part_die->name != NULL)
15527             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
15528                                  VAR_DOMAIN, LOC_TYPEDEF,
15529                                  &objfile->static_psymbols,
15530                                  0, (CORE_ADDR) 0, cu->language, objfile);
15531           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
15532           continue;
15533         }
15534
15535       /* The exception for DW_TAG_typedef with has_children above is
15536          a workaround of GCC PR debug/47510.  In the case of this complaint
15537          type_name_no_tag_or_error will error on such types later.
15538
15539          GDB skipped children of DW_TAG_typedef by the shortcut above and then
15540          it could not find the child DIEs referenced later, this is checked
15541          above.  In correct DWARF DW_TAG_typedef should have no children.  */
15542
15543       if (part_die->tag == DW_TAG_typedef && part_die->has_children)
15544         complaint (&symfile_complaints,
15545                    _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
15546                      "- DIE at 0x%x [in module %s]"),
15547                    part_die->offset.sect_off, objfile_name (objfile));
15548
15549       /* If we're at the second level, and we're an enumerator, and
15550          our parent has no specification (meaning possibly lives in a
15551          namespace elsewhere), then we can add the partial symbol now
15552          instead of queueing it.  */
15553       if (part_die->tag == DW_TAG_enumerator
15554           && parent_die != NULL
15555           && parent_die->die_parent == NULL
15556           && parent_die->tag == DW_TAG_enumeration_type
15557           && parent_die->has_specification == 0)
15558         {
15559           if (part_die->name == NULL)
15560             complaint (&symfile_complaints,
15561                        _("malformed enumerator DIE ignored"));
15562           else if (building_psymtab)
15563             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
15564                                  VAR_DOMAIN, LOC_CONST,
15565                                  (cu->language == language_cplus
15566                                   || cu->language == language_java)
15567                                  ? &objfile->global_psymbols
15568                                  : &objfile->static_psymbols,
15569                                  0, (CORE_ADDR) 0, cu->language, objfile);
15570
15571           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
15572           continue;
15573         }
15574
15575       /* We'll save this DIE so link it in.  */
15576       part_die->die_parent = parent_die;
15577       part_die->die_sibling = NULL;
15578       part_die->die_child = NULL;
15579
15580       if (last_die && last_die == parent_die)
15581         last_die->die_child = part_die;
15582       else if (last_die)
15583         last_die->die_sibling = part_die;
15584
15585       last_die = part_die;
15586
15587       if (first_die == NULL)
15588         first_die = part_die;
15589
15590       /* Maybe add the DIE to the hash table.  Not all DIEs that we
15591          find interesting need to be in the hash table, because we
15592          also have the parent/sibling/child chains; only those that we
15593          might refer to by offset later during partial symbol reading.
15594
15595          For now this means things that might have be the target of a
15596          DW_AT_specification, DW_AT_abstract_origin, or
15597          DW_AT_extension.  DW_AT_extension will refer only to
15598          namespaces; DW_AT_abstract_origin refers to functions (and
15599          many things under the function DIE, but we do not recurse
15600          into function DIEs during partial symbol reading) and
15601          possibly variables as well; DW_AT_specification refers to
15602          declarations.  Declarations ought to have the DW_AT_declaration
15603          flag.  It happens that GCC forgets to put it in sometimes, but
15604          only for functions, not for types.
15605
15606          Adding more things than necessary to the hash table is harmless
15607          except for the performance cost.  Adding too few will result in
15608          wasted time in find_partial_die, when we reread the compilation
15609          unit with load_all_dies set.  */
15610
15611       if (load_all
15612           || abbrev->tag == DW_TAG_constant
15613           || abbrev->tag == DW_TAG_subprogram
15614           || abbrev->tag == DW_TAG_variable
15615           || abbrev->tag == DW_TAG_namespace
15616           || part_die->is_declaration)
15617         {
15618           void **slot;
15619
15620           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
15621                                            part_die->offset.sect_off, INSERT);
15622           *slot = part_die;
15623         }
15624
15625       part_die = obstack_alloc (&cu->comp_unit_obstack,
15626                                 sizeof (struct partial_die_info));
15627
15628       /* For some DIEs we want to follow their children (if any).  For C
15629          we have no reason to follow the children of structures; for other
15630          languages we have to, so that we can get at method physnames
15631          to infer fully qualified class names, for DW_AT_specification,
15632          and for C++ template arguments.  For C++, we also look one level
15633          inside functions to find template arguments (if the name of the
15634          function does not already contain the template arguments).
15635
15636          For Ada, we need to scan the children of subprograms and lexical
15637          blocks as well because Ada allows the definition of nested
15638          entities that could be interesting for the debugger, such as
15639          nested subprograms for instance.  */
15640       if (last_die->has_children
15641           && (load_all
15642               || last_die->tag == DW_TAG_namespace
15643               || last_die->tag == DW_TAG_module
15644               || last_die->tag == DW_TAG_enumeration_type
15645               || (cu->language == language_cplus
15646                   && last_die->tag == DW_TAG_subprogram
15647                   && (last_die->name == NULL
15648                       || strchr (last_die->name, '<') == NULL))
15649               || (cu->language != language_c
15650                   && (last_die->tag == DW_TAG_class_type
15651                       || last_die->tag == DW_TAG_interface_type
15652                       || last_die->tag == DW_TAG_structure_type
15653                       || last_die->tag == DW_TAG_union_type))
15654               || (cu->language == language_ada
15655                   && (last_die->tag == DW_TAG_subprogram
15656                       || last_die->tag == DW_TAG_lexical_block))))
15657         {
15658           nesting_level++;
15659           parent_die = last_die;
15660           continue;
15661         }
15662
15663       /* Otherwise we skip to the next sibling, if any.  */
15664       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
15665
15666       /* Back to the top, do it again.  */
15667     }
15668 }
15669
15670 /* Read a minimal amount of information into the minimal die structure.  */
15671
15672 static const gdb_byte *
15673 read_partial_die (const struct die_reader_specs *reader,
15674                   struct partial_die_info *part_die,
15675                   struct abbrev_info *abbrev, unsigned int abbrev_len,
15676                   const gdb_byte *info_ptr)
15677 {
15678   struct dwarf2_cu *cu = reader->cu;
15679   struct objfile *objfile = cu->objfile;
15680   const gdb_byte *buffer = reader->buffer;
15681   unsigned int i;
15682   struct attribute attr;
15683   int has_low_pc_attr = 0;
15684   int has_high_pc_attr = 0;
15685   int high_pc_relative = 0;
15686
15687   memset (part_die, 0, sizeof (struct partial_die_info));
15688
15689   part_die->offset.sect_off = info_ptr - buffer;
15690
15691   info_ptr += abbrev_len;
15692
15693   if (abbrev == NULL)
15694     return info_ptr;
15695
15696   part_die->tag = abbrev->tag;
15697   part_die->has_children = abbrev->has_children;
15698
15699   for (i = 0; i < abbrev->num_attrs; ++i)
15700     {
15701       info_ptr = read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
15702
15703       /* Store the data if it is of an attribute we want to keep in a
15704          partial symbol table.  */
15705       switch (attr.name)
15706         {
15707         case DW_AT_name:
15708           switch (part_die->tag)
15709             {
15710             case DW_TAG_compile_unit:
15711             case DW_TAG_partial_unit:
15712             case DW_TAG_type_unit:
15713               /* Compilation units have a DW_AT_name that is a filename, not
15714                  a source language identifier.  */
15715             case DW_TAG_enumeration_type:
15716             case DW_TAG_enumerator:
15717               /* These tags always have simple identifiers already; no need
15718                  to canonicalize them.  */
15719               part_die->name = DW_STRING (&attr);
15720               break;
15721             default:
15722               part_die->name
15723                 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
15724                                             &objfile->per_bfd->storage_obstack);
15725               break;
15726             }
15727           break;
15728         case DW_AT_linkage_name:
15729         case DW_AT_MIPS_linkage_name:
15730           /* Note that both forms of linkage name might appear.  We
15731              assume they will be the same, and we only store the last
15732              one we see.  */
15733           if (cu->language == language_ada)
15734             part_die->name = DW_STRING (&attr);
15735           part_die->linkage_name = DW_STRING (&attr);
15736           break;
15737         case DW_AT_low_pc:
15738           has_low_pc_attr = 1;
15739           part_die->lowpc = attr_value_as_address (&attr);
15740           break;
15741         case DW_AT_high_pc:
15742           has_high_pc_attr = 1;
15743           part_die->highpc = attr_value_as_address (&attr);
15744           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
15745                 high_pc_relative = 1;
15746           break;
15747         case DW_AT_location:
15748           /* Support the .debug_loc offsets.  */
15749           if (attr_form_is_block (&attr))
15750             {
15751                part_die->d.locdesc = DW_BLOCK (&attr);
15752             }
15753           else if (attr_form_is_section_offset (&attr))
15754             {
15755               dwarf2_complex_location_expr_complaint ();
15756             }
15757           else
15758             {
15759               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
15760                                                      "partial symbol information");
15761             }
15762           break;
15763         case DW_AT_external:
15764           part_die->is_external = DW_UNSND (&attr);
15765           break;
15766         case DW_AT_declaration:
15767           part_die->is_declaration = DW_UNSND (&attr);
15768           break;
15769         case DW_AT_type:
15770           part_die->has_type = 1;
15771           break;
15772         case DW_AT_abstract_origin:
15773         case DW_AT_specification:
15774         case DW_AT_extension:
15775           part_die->has_specification = 1;
15776           part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
15777           part_die->spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15778                                    || cu->per_cu->is_dwz);
15779           break;
15780         case DW_AT_sibling:
15781           /* Ignore absolute siblings, they might point outside of
15782              the current compile unit.  */
15783           if (attr.form == DW_FORM_ref_addr)
15784             complaint (&symfile_complaints,
15785                        _("ignoring absolute DW_AT_sibling"));
15786           else
15787             {
15788               unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
15789               const gdb_byte *sibling_ptr = buffer + off;
15790
15791               if (sibling_ptr < info_ptr)
15792                 complaint (&symfile_complaints,
15793                            _("DW_AT_sibling points backwards"));
15794               else if (sibling_ptr > reader->buffer_end)
15795                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
15796               else
15797                 part_die->sibling = sibling_ptr;
15798             }
15799           break;
15800         case DW_AT_byte_size:
15801           part_die->has_byte_size = 1;
15802           break;
15803         case DW_AT_calling_convention:
15804           /* DWARF doesn't provide a way to identify a program's source-level
15805              entry point.  DW_AT_calling_convention attributes are only meant
15806              to describe functions' calling conventions.
15807
15808              However, because it's a necessary piece of information in
15809              Fortran, and because DW_CC_program is the only piece of debugging
15810              information whose definition refers to a 'main program' at all,
15811              several compilers have begun marking Fortran main programs with
15812              DW_CC_program --- even when those functions use the standard
15813              calling conventions.
15814
15815              So until DWARF specifies a way to provide this information and
15816              compilers pick up the new representation, we'll support this
15817              practice.  */
15818           if (DW_UNSND (&attr) == DW_CC_program
15819               && cu->language == language_fortran)
15820             set_objfile_main_name (objfile, part_die->name, language_fortran);
15821           break;
15822         case DW_AT_inline:
15823           if (DW_UNSND (&attr) == DW_INL_inlined
15824               || DW_UNSND (&attr) == DW_INL_declared_inlined)
15825             part_die->may_be_inlined = 1;
15826           break;
15827
15828         case DW_AT_import:
15829           if (part_die->tag == DW_TAG_imported_unit)
15830             {
15831               part_die->d.offset = dwarf2_get_ref_die_offset (&attr);
15832               part_die->is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15833                                   || cu->per_cu->is_dwz);
15834             }
15835           break;
15836
15837         default:
15838           break;
15839         }
15840     }
15841
15842   if (high_pc_relative)
15843     part_die->highpc += part_die->lowpc;
15844
15845   if (has_low_pc_attr && has_high_pc_attr)
15846     {
15847       /* When using the GNU linker, .gnu.linkonce. sections are used to
15848          eliminate duplicate copies of functions and vtables and such.
15849          The linker will arbitrarily choose one and discard the others.
15850          The AT_*_pc values for such functions refer to local labels in
15851          these sections.  If the section from that file was discarded, the
15852          labels are not in the output, so the relocs get a value of 0.
15853          If this is a discarded function, mark the pc bounds as invalid,
15854          so that GDB will ignore it.  */
15855       if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
15856         {
15857           struct gdbarch *gdbarch = get_objfile_arch (objfile);
15858
15859           complaint (&symfile_complaints,
15860                      _("DW_AT_low_pc %s is zero "
15861                        "for DIE at 0x%x [in module %s]"),
15862                      paddress (gdbarch, part_die->lowpc),
15863                      part_die->offset.sect_off, objfile_name (objfile));
15864         }
15865       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
15866       else if (part_die->lowpc >= part_die->highpc)
15867         {
15868           struct gdbarch *gdbarch = get_objfile_arch (objfile);
15869
15870           complaint (&symfile_complaints,
15871                      _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
15872                        "for DIE at 0x%x [in module %s]"),
15873                      paddress (gdbarch, part_die->lowpc),
15874                      paddress (gdbarch, part_die->highpc),
15875                      part_die->offset.sect_off, objfile_name (objfile));
15876         }
15877       else
15878         part_die->has_pc_info = 1;
15879     }
15880
15881   return info_ptr;
15882 }
15883
15884 /* Find a cached partial DIE at OFFSET in CU.  */
15885
15886 static struct partial_die_info *
15887 find_partial_die_in_comp_unit (sect_offset offset, struct dwarf2_cu *cu)
15888 {
15889   struct partial_die_info *lookup_die = NULL;
15890   struct partial_die_info part_die;
15891
15892   part_die.offset = offset;
15893   lookup_die = htab_find_with_hash (cu->partial_dies, &part_die,
15894                                     offset.sect_off);
15895
15896   return lookup_die;
15897 }
15898
15899 /* Find a partial DIE at OFFSET, which may or may not be in CU,
15900    except in the case of .debug_types DIEs which do not reference
15901    outside their CU (they do however referencing other types via
15902    DW_FORM_ref_sig8).  */
15903
15904 static struct partial_die_info *
15905 find_partial_die (sect_offset offset, int offset_in_dwz, struct dwarf2_cu *cu)
15906 {
15907   struct objfile *objfile = cu->objfile;
15908   struct dwarf2_per_cu_data *per_cu = NULL;
15909   struct partial_die_info *pd = NULL;
15910
15911   if (offset_in_dwz == cu->per_cu->is_dwz
15912       && offset_in_cu_p (&cu->header, offset))
15913     {
15914       pd = find_partial_die_in_comp_unit (offset, cu);
15915       if (pd != NULL)
15916         return pd;
15917       /* We missed recording what we needed.
15918          Load all dies and try again.  */
15919       per_cu = cu->per_cu;
15920     }
15921   else
15922     {
15923       /* TUs don't reference other CUs/TUs (except via type signatures).  */
15924       if (cu->per_cu->is_debug_types)
15925         {
15926           error (_("Dwarf Error: Type Unit at offset 0x%lx contains"
15927                    " external reference to offset 0x%lx [in module %s].\n"),
15928                  (long) cu->header.offset.sect_off, (long) offset.sect_off,
15929                  bfd_get_filename (objfile->obfd));
15930         }
15931       per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
15932                                                  objfile);
15933
15934       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
15935         load_partial_comp_unit (per_cu);
15936
15937       per_cu->cu->last_used = 0;
15938       pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
15939     }
15940
15941   /* If we didn't find it, and not all dies have been loaded,
15942      load them all and try again.  */
15943
15944   if (pd == NULL && per_cu->load_all_dies == 0)
15945     {
15946       per_cu->load_all_dies = 1;
15947
15948       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
15949          THIS_CU->cu may already be in use.  So we can't just free it and
15950          replace its DIEs with the ones we read in.  Instead, we leave those
15951          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
15952          and clobber THIS_CU->cu->partial_dies with the hash table for the new
15953          set.  */
15954       load_partial_comp_unit (per_cu);
15955
15956       pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
15957     }
15958
15959   if (pd == NULL)
15960     internal_error (__FILE__, __LINE__,
15961                     _("could not find partial DIE 0x%x "
15962                       "in cache [from module %s]\n"),
15963                     offset.sect_off, bfd_get_filename (objfile->obfd));
15964   return pd;
15965 }
15966
15967 /* See if we can figure out if the class lives in a namespace.  We do
15968    this by looking for a member function; its demangled name will
15969    contain namespace info, if there is any.  */
15970
15971 static void
15972 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
15973                                   struct dwarf2_cu *cu)
15974 {
15975   /* NOTE: carlton/2003-10-07: Getting the info this way changes
15976      what template types look like, because the demangler
15977      frequently doesn't give the same name as the debug info.  We
15978      could fix this by only using the demangled name to get the
15979      prefix (but see comment in read_structure_type).  */
15980
15981   struct partial_die_info *real_pdi;
15982   struct partial_die_info *child_pdi;
15983
15984   /* If this DIE (this DIE's specification, if any) has a parent, then
15985      we should not do this.  We'll prepend the parent's fully qualified
15986      name when we create the partial symbol.  */
15987
15988   real_pdi = struct_pdi;
15989   while (real_pdi->has_specification)
15990     real_pdi = find_partial_die (real_pdi->spec_offset,
15991                                  real_pdi->spec_is_dwz, cu);
15992
15993   if (real_pdi->die_parent != NULL)
15994     return;
15995
15996   for (child_pdi = struct_pdi->die_child;
15997        child_pdi != NULL;
15998        child_pdi = child_pdi->die_sibling)
15999     {
16000       if (child_pdi->tag == DW_TAG_subprogram
16001           && child_pdi->linkage_name != NULL)
16002         {
16003           char *actual_class_name
16004             = language_class_name_from_physname (cu->language_defn,
16005                                                  child_pdi->linkage_name);
16006           if (actual_class_name != NULL)
16007             {
16008               struct_pdi->name
16009                 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
16010                                  actual_class_name,
16011                                  strlen (actual_class_name));
16012               xfree (actual_class_name);
16013             }
16014           break;
16015         }
16016     }
16017 }
16018
16019 /* Adjust PART_DIE before generating a symbol for it.  This function
16020    may set the is_external flag or change the DIE's name.  */
16021
16022 static void
16023 fixup_partial_die (struct partial_die_info *part_die,
16024                    struct dwarf2_cu *cu)
16025 {
16026   /* Once we've fixed up a die, there's no point in doing so again.
16027      This also avoids a memory leak if we were to call
16028      guess_partial_die_structure_name multiple times.  */
16029   if (part_die->fixup_called)
16030     return;
16031
16032   /* If we found a reference attribute and the DIE has no name, try
16033      to find a name in the referred to DIE.  */
16034
16035   if (part_die->name == NULL && part_die->has_specification)
16036     {
16037       struct partial_die_info *spec_die;
16038
16039       spec_die = find_partial_die (part_die->spec_offset,
16040                                    part_die->spec_is_dwz, cu);
16041
16042       fixup_partial_die (spec_die, cu);
16043
16044       if (spec_die->name)
16045         {
16046           part_die->name = spec_die->name;
16047
16048           /* Copy DW_AT_external attribute if it is set.  */
16049           if (spec_die->is_external)
16050             part_die->is_external = spec_die->is_external;
16051         }
16052     }
16053
16054   /* Set default names for some unnamed DIEs.  */
16055
16056   if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
16057     part_die->name = CP_ANONYMOUS_NAMESPACE_STR;
16058
16059   /* If there is no parent die to provide a namespace, and there are
16060      children, see if we can determine the namespace from their linkage
16061      name.  */
16062   if (cu->language == language_cplus
16063       && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
16064       && part_die->die_parent == NULL
16065       && part_die->has_children
16066       && (part_die->tag == DW_TAG_class_type
16067           || part_die->tag == DW_TAG_structure_type
16068           || part_die->tag == DW_TAG_union_type))
16069     guess_partial_die_structure_name (part_die, cu);
16070
16071   /* GCC might emit a nameless struct or union that has a linkage
16072      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
16073   if (part_die->name == NULL
16074       && (part_die->tag == DW_TAG_class_type
16075           || part_die->tag == DW_TAG_interface_type
16076           || part_die->tag == DW_TAG_structure_type
16077           || part_die->tag == DW_TAG_union_type)
16078       && part_die->linkage_name != NULL)
16079     {
16080       char *demangled;
16081
16082       demangled = gdb_demangle (part_die->linkage_name, DMGL_TYPES);
16083       if (demangled)
16084         {
16085           const char *base;
16086
16087           /* Strip any leading namespaces/classes, keep only the base name.
16088              DW_AT_name for named DIEs does not contain the prefixes.  */
16089           base = strrchr (demangled, ':');
16090           if (base && base > demangled && base[-1] == ':')
16091             base++;
16092           else
16093             base = demangled;
16094
16095           part_die->name
16096             = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
16097                              base, strlen (base));
16098           xfree (demangled);
16099         }
16100     }
16101
16102   part_die->fixup_called = 1;
16103 }
16104
16105 /* Read an attribute value described by an attribute form.  */
16106
16107 static const gdb_byte *
16108 read_attribute_value (const struct die_reader_specs *reader,
16109                       struct attribute *attr, unsigned form,
16110                       const gdb_byte *info_ptr)
16111 {
16112   struct dwarf2_cu *cu = reader->cu;
16113   struct objfile *objfile = cu->objfile;
16114   struct gdbarch *gdbarch = get_objfile_arch (objfile);
16115   bfd *abfd = reader->abfd;
16116   struct comp_unit_head *cu_header = &cu->header;
16117   unsigned int bytes_read;
16118   struct dwarf_block *blk;
16119
16120   attr->form = form;
16121   switch (form)
16122     {
16123     case DW_FORM_ref_addr:
16124       if (cu->header.version == 2)
16125         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
16126       else
16127         DW_UNSND (attr) = read_offset (abfd, info_ptr,
16128                                        &cu->header, &bytes_read);
16129       info_ptr += bytes_read;
16130       break;
16131     case DW_FORM_GNU_ref_alt:
16132       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16133       info_ptr += bytes_read;
16134       break;
16135     case DW_FORM_addr:
16136       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
16137       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
16138       info_ptr += bytes_read;
16139       break;
16140     case DW_FORM_block2:
16141       blk = dwarf_alloc_block (cu);
16142       blk->size = read_2_bytes (abfd, info_ptr);
16143       info_ptr += 2;
16144       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16145       info_ptr += blk->size;
16146       DW_BLOCK (attr) = blk;
16147       break;
16148     case DW_FORM_block4:
16149       blk = dwarf_alloc_block (cu);
16150       blk->size = read_4_bytes (abfd, info_ptr);
16151       info_ptr += 4;
16152       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16153       info_ptr += blk->size;
16154       DW_BLOCK (attr) = blk;
16155       break;
16156     case DW_FORM_data2:
16157       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
16158       info_ptr += 2;
16159       break;
16160     case DW_FORM_data4:
16161       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
16162       info_ptr += 4;
16163       break;
16164     case DW_FORM_data8:
16165       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
16166       info_ptr += 8;
16167       break;
16168     case DW_FORM_sec_offset:
16169       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16170       info_ptr += bytes_read;
16171       break;
16172     case DW_FORM_string:
16173       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
16174       DW_STRING_IS_CANONICAL (attr) = 0;
16175       info_ptr += bytes_read;
16176       break;
16177     case DW_FORM_strp:
16178       if (!cu->per_cu->is_dwz)
16179         {
16180           DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
16181                                                    &bytes_read);
16182           DW_STRING_IS_CANONICAL (attr) = 0;
16183           info_ptr += bytes_read;
16184           break;
16185         }
16186       /* FALLTHROUGH */
16187     case DW_FORM_GNU_strp_alt:
16188       {
16189         struct dwz_file *dwz = dwarf2_get_dwz_file ();
16190         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
16191                                           &bytes_read);
16192
16193         DW_STRING (attr) = read_indirect_string_from_dwz (dwz, str_offset);
16194         DW_STRING_IS_CANONICAL (attr) = 0;
16195         info_ptr += bytes_read;
16196       }
16197       break;
16198     case DW_FORM_exprloc:
16199     case DW_FORM_block:
16200       blk = dwarf_alloc_block (cu);
16201       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16202       info_ptr += bytes_read;
16203       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16204       info_ptr += blk->size;
16205       DW_BLOCK (attr) = blk;
16206       break;
16207     case DW_FORM_block1:
16208       blk = dwarf_alloc_block (cu);
16209       blk->size = read_1_byte (abfd, info_ptr);
16210       info_ptr += 1;
16211       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16212       info_ptr += blk->size;
16213       DW_BLOCK (attr) = blk;
16214       break;
16215     case DW_FORM_data1:
16216       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16217       info_ptr += 1;
16218       break;
16219     case DW_FORM_flag:
16220       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16221       info_ptr += 1;
16222       break;
16223     case DW_FORM_flag_present:
16224       DW_UNSND (attr) = 1;
16225       break;
16226     case DW_FORM_sdata:
16227       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
16228       info_ptr += bytes_read;
16229       break;
16230     case DW_FORM_udata:
16231       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16232       info_ptr += bytes_read;
16233       break;
16234     case DW_FORM_ref1:
16235       DW_UNSND (attr) = (cu->header.offset.sect_off
16236                          + read_1_byte (abfd, info_ptr));
16237       info_ptr += 1;
16238       break;
16239     case DW_FORM_ref2:
16240       DW_UNSND (attr) = (cu->header.offset.sect_off
16241                          + read_2_bytes (abfd, info_ptr));
16242       info_ptr += 2;
16243       break;
16244     case DW_FORM_ref4:
16245       DW_UNSND (attr) = (cu->header.offset.sect_off
16246                          + read_4_bytes (abfd, info_ptr));
16247       info_ptr += 4;
16248       break;
16249     case DW_FORM_ref8:
16250       DW_UNSND (attr) = (cu->header.offset.sect_off
16251                          + read_8_bytes (abfd, info_ptr));
16252       info_ptr += 8;
16253       break;
16254     case DW_FORM_ref_sig8:
16255       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
16256       info_ptr += 8;
16257       break;
16258     case DW_FORM_ref_udata:
16259       DW_UNSND (attr) = (cu->header.offset.sect_off
16260                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
16261       info_ptr += bytes_read;
16262       break;
16263     case DW_FORM_indirect:
16264       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16265       info_ptr += bytes_read;
16266       info_ptr = read_attribute_value (reader, attr, form, info_ptr);
16267       break;
16268     case DW_FORM_GNU_addr_index:
16269       if (reader->dwo_file == NULL)
16270         {
16271           /* For now flag a hard error.
16272              Later we can turn this into a complaint.  */
16273           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16274                  dwarf_form_name (form),
16275                  bfd_get_filename (abfd));
16276         }
16277       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
16278       info_ptr += bytes_read;
16279       break;
16280     case DW_FORM_GNU_str_index:
16281       if (reader->dwo_file == NULL)
16282         {
16283           /* For now flag a hard error.
16284              Later we can turn this into a complaint if warranted.  */
16285           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16286                  dwarf_form_name (form),
16287                  bfd_get_filename (abfd));
16288         }
16289       {
16290         ULONGEST str_index =
16291           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16292
16293         DW_STRING (attr) = read_str_index (reader, str_index);
16294         DW_STRING_IS_CANONICAL (attr) = 0;
16295         info_ptr += bytes_read;
16296       }
16297       break;
16298     default:
16299       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
16300              dwarf_form_name (form),
16301              bfd_get_filename (abfd));
16302     }
16303
16304   /* Super hack.  */
16305   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
16306     attr->form = DW_FORM_GNU_ref_alt;
16307
16308   /* We have seen instances where the compiler tried to emit a byte
16309      size attribute of -1 which ended up being encoded as an unsigned
16310      0xffffffff.  Although 0xffffffff is technically a valid size value,
16311      an object of this size seems pretty unlikely so we can relatively
16312      safely treat these cases as if the size attribute was invalid and
16313      treat them as zero by default.  */
16314   if (attr->name == DW_AT_byte_size
16315       && form == DW_FORM_data4
16316       && DW_UNSND (attr) >= 0xffffffff)
16317     {
16318       complaint
16319         (&symfile_complaints,
16320          _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
16321          hex_string (DW_UNSND (attr)));
16322       DW_UNSND (attr) = 0;
16323     }
16324
16325   return info_ptr;
16326 }
16327
16328 /* Read an attribute described by an abbreviated attribute.  */
16329
16330 static const gdb_byte *
16331 read_attribute (const struct die_reader_specs *reader,
16332                 struct attribute *attr, struct attr_abbrev *abbrev,
16333                 const gdb_byte *info_ptr)
16334 {
16335   attr->name = abbrev->name;
16336   return read_attribute_value (reader, attr, abbrev->form, info_ptr);
16337 }
16338
16339 /* Read dwarf information from a buffer.  */
16340
16341 static unsigned int
16342 read_1_byte (bfd *abfd, const gdb_byte *buf)
16343 {
16344   return bfd_get_8 (abfd, buf);
16345 }
16346
16347 static int
16348 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
16349 {
16350   return bfd_get_signed_8 (abfd, buf);
16351 }
16352
16353 static unsigned int
16354 read_2_bytes (bfd *abfd, const gdb_byte *buf)
16355 {
16356   return bfd_get_16 (abfd, buf);
16357 }
16358
16359 static int
16360 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
16361 {
16362   return bfd_get_signed_16 (abfd, buf);
16363 }
16364
16365 static unsigned int
16366 read_4_bytes (bfd *abfd, const gdb_byte *buf)
16367 {
16368   return bfd_get_32 (abfd, buf);
16369 }
16370
16371 static int
16372 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
16373 {
16374   return bfd_get_signed_32 (abfd, buf);
16375 }
16376
16377 static ULONGEST
16378 read_8_bytes (bfd *abfd, const gdb_byte *buf)
16379 {
16380   return bfd_get_64 (abfd, buf);
16381 }
16382
16383 static CORE_ADDR
16384 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
16385               unsigned int *bytes_read)
16386 {
16387   struct comp_unit_head *cu_header = &cu->header;
16388   CORE_ADDR retval = 0;
16389
16390   if (cu_header->signed_addr_p)
16391     {
16392       switch (cu_header->addr_size)
16393         {
16394         case 2:
16395           retval = bfd_get_signed_16 (abfd, buf);
16396           break;
16397         case 4:
16398           retval = bfd_get_signed_32 (abfd, buf);
16399           break;
16400         case 8:
16401           retval = bfd_get_signed_64 (abfd, buf);
16402           break;
16403         default:
16404           internal_error (__FILE__, __LINE__,
16405                           _("read_address: bad switch, signed [in module %s]"),
16406                           bfd_get_filename (abfd));
16407         }
16408     }
16409   else
16410     {
16411       switch (cu_header->addr_size)
16412         {
16413         case 2:
16414           retval = bfd_get_16 (abfd, buf);
16415           break;
16416         case 4:
16417           retval = bfd_get_32 (abfd, buf);
16418           break;
16419         case 8:
16420           retval = bfd_get_64 (abfd, buf);
16421           break;
16422         default:
16423           internal_error (__FILE__, __LINE__,
16424                           _("read_address: bad switch, "
16425                             "unsigned [in module %s]"),
16426                           bfd_get_filename (abfd));
16427         }
16428     }
16429
16430   *bytes_read = cu_header->addr_size;
16431   return retval;
16432 }
16433
16434 /* Read the initial length from a section.  The (draft) DWARF 3
16435    specification allows the initial length to take up either 4 bytes
16436    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
16437    bytes describe the length and all offsets will be 8 bytes in length
16438    instead of 4.
16439
16440    An older, non-standard 64-bit format is also handled by this
16441    function.  The older format in question stores the initial length
16442    as an 8-byte quantity without an escape value.  Lengths greater
16443    than 2^32 aren't very common which means that the initial 4 bytes
16444    is almost always zero.  Since a length value of zero doesn't make
16445    sense for the 32-bit format, this initial zero can be considered to
16446    be an escape value which indicates the presence of the older 64-bit
16447    format.  As written, the code can't detect (old format) lengths
16448    greater than 4GB.  If it becomes necessary to handle lengths
16449    somewhat larger than 4GB, we could allow other small values (such
16450    as the non-sensical values of 1, 2, and 3) to also be used as
16451    escape values indicating the presence of the old format.
16452
16453    The value returned via bytes_read should be used to increment the
16454    relevant pointer after calling read_initial_length().
16455
16456    [ Note:  read_initial_length() and read_offset() are based on the
16457      document entitled "DWARF Debugging Information Format", revision
16458      3, draft 8, dated November 19, 2001.  This document was obtained
16459      from:
16460
16461         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
16462
16463      This document is only a draft and is subject to change.  (So beware.)
16464
16465      Details regarding the older, non-standard 64-bit format were
16466      determined empirically by examining 64-bit ELF files produced by
16467      the SGI toolchain on an IRIX 6.5 machine.
16468
16469      - Kevin, July 16, 2002
16470    ] */
16471
16472 static LONGEST
16473 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
16474 {
16475   LONGEST length = bfd_get_32 (abfd, buf);
16476
16477   if (length == 0xffffffff)
16478     {
16479       length = bfd_get_64 (abfd, buf + 4);
16480       *bytes_read = 12;
16481     }
16482   else if (length == 0)
16483     {
16484       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
16485       length = bfd_get_64 (abfd, buf);
16486       *bytes_read = 8;
16487     }
16488   else
16489     {
16490       *bytes_read = 4;
16491     }
16492
16493   return length;
16494 }
16495
16496 /* Cover function for read_initial_length.
16497    Returns the length of the object at BUF, and stores the size of the
16498    initial length in *BYTES_READ and stores the size that offsets will be in
16499    *OFFSET_SIZE.
16500    If the initial length size is not equivalent to that specified in
16501    CU_HEADER then issue a complaint.
16502    This is useful when reading non-comp-unit headers.  */
16503
16504 static LONGEST
16505 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
16506                                         const struct comp_unit_head *cu_header,
16507                                         unsigned int *bytes_read,
16508                                         unsigned int *offset_size)
16509 {
16510   LONGEST length = read_initial_length (abfd, buf, bytes_read);
16511
16512   gdb_assert (cu_header->initial_length_size == 4
16513               || cu_header->initial_length_size == 8
16514               || cu_header->initial_length_size == 12);
16515
16516   if (cu_header->initial_length_size != *bytes_read)
16517     complaint (&symfile_complaints,
16518                _("intermixed 32-bit and 64-bit DWARF sections"));
16519
16520   *offset_size = (*bytes_read == 4) ? 4 : 8;
16521   return length;
16522 }
16523
16524 /* Read an offset from the data stream.  The size of the offset is
16525    given by cu_header->offset_size.  */
16526
16527 static LONGEST
16528 read_offset (bfd *abfd, const gdb_byte *buf,
16529              const struct comp_unit_head *cu_header,
16530              unsigned int *bytes_read)
16531 {
16532   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
16533
16534   *bytes_read = cu_header->offset_size;
16535   return offset;
16536 }
16537
16538 /* Read an offset from the data stream.  */
16539
16540 static LONGEST
16541 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
16542 {
16543   LONGEST retval = 0;
16544
16545   switch (offset_size)
16546     {
16547     case 4:
16548       retval = bfd_get_32 (abfd, buf);
16549       break;
16550     case 8:
16551       retval = bfd_get_64 (abfd, buf);
16552       break;
16553     default:
16554       internal_error (__FILE__, __LINE__,
16555                       _("read_offset_1: bad switch [in module %s]"),
16556                       bfd_get_filename (abfd));
16557     }
16558
16559   return retval;
16560 }
16561
16562 static const gdb_byte *
16563 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
16564 {
16565   /* If the size of a host char is 8 bits, we can return a pointer
16566      to the buffer, otherwise we have to copy the data to a buffer
16567      allocated on the temporary obstack.  */
16568   gdb_assert (HOST_CHAR_BIT == 8);
16569   return buf;
16570 }
16571
16572 static const char *
16573 read_direct_string (bfd *abfd, const gdb_byte *buf,
16574                     unsigned int *bytes_read_ptr)
16575 {
16576   /* If the size of a host char is 8 bits, we can return a pointer
16577      to the string, otherwise we have to copy the string to a buffer
16578      allocated on the temporary obstack.  */
16579   gdb_assert (HOST_CHAR_BIT == 8);
16580   if (*buf == '\0')
16581     {
16582       *bytes_read_ptr = 1;
16583       return NULL;
16584     }
16585   *bytes_read_ptr = strlen ((const char *) buf) + 1;
16586   return (const char *) buf;
16587 }
16588
16589 static const char *
16590 read_indirect_string_at_offset (bfd *abfd, LONGEST str_offset)
16591 {
16592   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->str);
16593   if (dwarf2_per_objfile->str.buffer == NULL)
16594     error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
16595            bfd_get_filename (abfd));
16596   if (str_offset >= dwarf2_per_objfile->str.size)
16597     error (_("DW_FORM_strp pointing outside of "
16598              ".debug_str section [in module %s]"),
16599            bfd_get_filename (abfd));
16600   gdb_assert (HOST_CHAR_BIT == 8);
16601   if (dwarf2_per_objfile->str.buffer[str_offset] == '\0')
16602     return NULL;
16603   return (const char *) (dwarf2_per_objfile->str.buffer + str_offset);
16604 }
16605
16606 /* Read a string at offset STR_OFFSET in the .debug_str section from
16607    the .dwz file DWZ.  Throw an error if the offset is too large.  If
16608    the string consists of a single NUL byte, return NULL; otherwise
16609    return a pointer to the string.  */
16610
16611 static const char *
16612 read_indirect_string_from_dwz (struct dwz_file *dwz, LONGEST str_offset)
16613 {
16614   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwz->str);
16615
16616   if (dwz->str.buffer == NULL)
16617     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
16618              "section [in module %s]"),
16619            bfd_get_filename (dwz->dwz_bfd));
16620   if (str_offset >= dwz->str.size)
16621     error (_("DW_FORM_GNU_strp_alt pointing outside of "
16622              ".debug_str section [in module %s]"),
16623            bfd_get_filename (dwz->dwz_bfd));
16624   gdb_assert (HOST_CHAR_BIT == 8);
16625   if (dwz->str.buffer[str_offset] == '\0')
16626     return NULL;
16627   return (const char *) (dwz->str.buffer + str_offset);
16628 }
16629
16630 static const char *
16631 read_indirect_string (bfd *abfd, const gdb_byte *buf,
16632                       const struct comp_unit_head *cu_header,
16633                       unsigned int *bytes_read_ptr)
16634 {
16635   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
16636
16637   return read_indirect_string_at_offset (abfd, str_offset);
16638 }
16639
16640 static ULONGEST
16641 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
16642                       unsigned int *bytes_read_ptr)
16643 {
16644   ULONGEST result;
16645   unsigned int num_read;
16646   int i, shift;
16647   unsigned char byte;
16648
16649   result = 0;
16650   shift = 0;
16651   num_read = 0;
16652   i = 0;
16653   while (1)
16654     {
16655       byte = bfd_get_8 (abfd, buf);
16656       buf++;
16657       num_read++;
16658       result |= ((ULONGEST) (byte & 127) << shift);
16659       if ((byte & 128) == 0)
16660         {
16661           break;
16662         }
16663       shift += 7;
16664     }
16665   *bytes_read_ptr = num_read;
16666   return result;
16667 }
16668
16669 static LONGEST
16670 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
16671                     unsigned int *bytes_read_ptr)
16672 {
16673   LONGEST result;
16674   int i, shift, num_read;
16675   unsigned char byte;
16676
16677   result = 0;
16678   shift = 0;
16679   num_read = 0;
16680   i = 0;
16681   while (1)
16682     {
16683       byte = bfd_get_8 (abfd, buf);
16684       buf++;
16685       num_read++;
16686       result |= ((LONGEST) (byte & 127) << shift);
16687       shift += 7;
16688       if ((byte & 128) == 0)
16689         {
16690           break;
16691         }
16692     }
16693   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
16694     result |= -(((LONGEST) 1) << shift);
16695   *bytes_read_ptr = num_read;
16696   return result;
16697 }
16698
16699 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
16700    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
16701    ADDR_SIZE is the size of addresses from the CU header.  */
16702
16703 static CORE_ADDR
16704 read_addr_index_1 (unsigned int addr_index, ULONGEST addr_base, int addr_size)
16705 {
16706   struct objfile *objfile = dwarf2_per_objfile->objfile;
16707   bfd *abfd = objfile->obfd;
16708   const gdb_byte *info_ptr;
16709
16710   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
16711   if (dwarf2_per_objfile->addr.buffer == NULL)
16712     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
16713            objfile_name (objfile));
16714   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
16715     error (_("DW_FORM_addr_index pointing outside of "
16716              ".debug_addr section [in module %s]"),
16717            objfile_name (objfile));
16718   info_ptr = (dwarf2_per_objfile->addr.buffer
16719               + addr_base + addr_index * addr_size);
16720   if (addr_size == 4)
16721     return bfd_get_32 (abfd, info_ptr);
16722   else
16723     return bfd_get_64 (abfd, info_ptr);
16724 }
16725
16726 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
16727
16728 static CORE_ADDR
16729 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
16730 {
16731   return read_addr_index_1 (addr_index, cu->addr_base, cu->header.addr_size);
16732 }
16733
16734 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
16735
16736 static CORE_ADDR
16737 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
16738                              unsigned int *bytes_read)
16739 {
16740   bfd *abfd = cu->objfile->obfd;
16741   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
16742
16743   return read_addr_index (cu, addr_index);
16744 }
16745
16746 /* Data structure to pass results from dwarf2_read_addr_index_reader
16747    back to dwarf2_read_addr_index.  */
16748
16749 struct dwarf2_read_addr_index_data
16750 {
16751   ULONGEST addr_base;
16752   int addr_size;
16753 };
16754
16755 /* die_reader_func for dwarf2_read_addr_index.  */
16756
16757 static void
16758 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
16759                                const gdb_byte *info_ptr,
16760                                struct die_info *comp_unit_die,
16761                                int has_children,
16762                                void *data)
16763 {
16764   struct dwarf2_cu *cu = reader->cu;
16765   struct dwarf2_read_addr_index_data *aidata =
16766     (struct dwarf2_read_addr_index_data *) data;
16767
16768   aidata->addr_base = cu->addr_base;
16769   aidata->addr_size = cu->header.addr_size;
16770 }
16771
16772 /* Given an index in .debug_addr, fetch the value.
16773    NOTE: This can be called during dwarf expression evaluation,
16774    long after the debug information has been read, and thus per_cu->cu
16775    may no longer exist.  */
16776
16777 CORE_ADDR
16778 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
16779                         unsigned int addr_index)
16780 {
16781   struct objfile *objfile = per_cu->objfile;
16782   struct dwarf2_cu *cu = per_cu->cu;
16783   ULONGEST addr_base;
16784   int addr_size;
16785
16786   /* This is intended to be called from outside this file.  */
16787   dw2_setup (objfile);
16788
16789   /* We need addr_base and addr_size.
16790      If we don't have PER_CU->cu, we have to get it.
16791      Nasty, but the alternative is storing the needed info in PER_CU,
16792      which at this point doesn't seem justified: it's not clear how frequently
16793      it would get used and it would increase the size of every PER_CU.
16794      Entry points like dwarf2_per_cu_addr_size do a similar thing
16795      so we're not in uncharted territory here.
16796      Alas we need to be a bit more complicated as addr_base is contained
16797      in the DIE.
16798
16799      We don't need to read the entire CU(/TU).
16800      We just need the header and top level die.
16801
16802      IWBN to use the aging mechanism to let us lazily later discard the CU.
16803      For now we skip this optimization.  */
16804
16805   if (cu != NULL)
16806     {
16807       addr_base = cu->addr_base;
16808       addr_size = cu->header.addr_size;
16809     }
16810   else
16811     {
16812       struct dwarf2_read_addr_index_data aidata;
16813
16814       /* Note: We can't use init_cutu_and_read_dies_simple here,
16815          we need addr_base.  */
16816       init_cutu_and_read_dies (per_cu, NULL, 0, 0,
16817                                dwarf2_read_addr_index_reader, &aidata);
16818       addr_base = aidata.addr_base;
16819       addr_size = aidata.addr_size;
16820     }
16821
16822   return read_addr_index_1 (addr_index, addr_base, addr_size);
16823 }
16824
16825 /* Given a DW_FORM_GNU_str_index, fetch the string.
16826    This is only used by the Fission support.  */
16827
16828 static const char *
16829 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
16830 {
16831   struct objfile *objfile = dwarf2_per_objfile->objfile;
16832   const char *objf_name = objfile_name (objfile);
16833   bfd *abfd = objfile->obfd;
16834   struct dwarf2_cu *cu = reader->cu;
16835   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
16836   struct dwarf2_section_info *str_offsets_section =
16837     &reader->dwo_file->sections.str_offsets;
16838   const gdb_byte *info_ptr;
16839   ULONGEST str_offset;
16840   static const char form_name[] = "DW_FORM_GNU_str_index";
16841
16842   dwarf2_read_section (objfile, str_section);
16843   dwarf2_read_section (objfile, str_offsets_section);
16844   if (str_section->buffer == NULL)
16845     error (_("%s used without .debug_str.dwo section"
16846              " in CU at offset 0x%lx [in module %s]"),
16847            form_name, (long) cu->header.offset.sect_off, objf_name);
16848   if (str_offsets_section->buffer == NULL)
16849     error (_("%s used without .debug_str_offsets.dwo section"
16850              " in CU at offset 0x%lx [in module %s]"),
16851            form_name, (long) cu->header.offset.sect_off, objf_name);
16852   if (str_index * cu->header.offset_size >= str_offsets_section->size)
16853     error (_("%s pointing outside of .debug_str_offsets.dwo"
16854              " section in CU at offset 0x%lx [in module %s]"),
16855            form_name, (long) cu->header.offset.sect_off, objf_name);
16856   info_ptr = (str_offsets_section->buffer
16857               + str_index * cu->header.offset_size);
16858   if (cu->header.offset_size == 4)
16859     str_offset = bfd_get_32 (abfd, info_ptr);
16860   else
16861     str_offset = bfd_get_64 (abfd, info_ptr);
16862   if (str_offset >= str_section->size)
16863     error (_("Offset from %s pointing outside of"
16864              " .debug_str.dwo section in CU at offset 0x%lx [in module %s]"),
16865            form_name, (long) cu->header.offset.sect_off, objf_name);
16866   return (const char *) (str_section->buffer + str_offset);
16867 }
16868
16869 /* Return the length of an LEB128 number in BUF.  */
16870
16871 static int
16872 leb128_size (const gdb_byte *buf)
16873 {
16874   const gdb_byte *begin = buf;
16875   gdb_byte byte;
16876
16877   while (1)
16878     {
16879       byte = *buf++;
16880       if ((byte & 128) == 0)
16881         return buf - begin;
16882     }
16883 }
16884
16885 static void
16886 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
16887 {
16888   switch (lang)
16889     {
16890     case DW_LANG_C89:
16891     case DW_LANG_C99:
16892     case DW_LANG_C11:
16893     case DW_LANG_C:
16894     case DW_LANG_UPC:
16895       cu->language = language_c;
16896       break;
16897     case DW_LANG_C_plus_plus:
16898     case DW_LANG_C_plus_plus_11:
16899     case DW_LANG_C_plus_plus_14:
16900       cu->language = language_cplus;
16901       break;
16902     case DW_LANG_D:
16903       cu->language = language_d;
16904       break;
16905     case DW_LANG_Fortran77:
16906     case DW_LANG_Fortran90:
16907     case DW_LANG_Fortran95:
16908       cu->language = language_fortran;
16909       break;
16910     case DW_LANG_Go:
16911       cu->language = language_go;
16912       break;
16913     case DW_LANG_Mips_Assembler:
16914       cu->language = language_asm;
16915       break;
16916     case DW_LANG_Java:
16917       cu->language = language_java;
16918       break;
16919     case DW_LANG_Ada83:
16920     case DW_LANG_Ada95:
16921       cu->language = language_ada;
16922       break;
16923     case DW_LANG_Modula2:
16924       cu->language = language_m2;
16925       break;
16926     case DW_LANG_Pascal83:
16927       cu->language = language_pascal;
16928       break;
16929     case DW_LANG_ObjC:
16930       cu->language = language_objc;
16931       break;
16932     case DW_LANG_Cobol74:
16933     case DW_LANG_Cobol85:
16934     default:
16935       cu->language = language_minimal;
16936       break;
16937     }
16938   cu->language_defn = language_def (cu->language);
16939 }
16940
16941 /* Return the named attribute or NULL if not there.  */
16942
16943 static struct attribute *
16944 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
16945 {
16946   for (;;)
16947     {
16948       unsigned int i;
16949       struct attribute *spec = NULL;
16950
16951       for (i = 0; i < die->num_attrs; ++i)
16952         {
16953           if (die->attrs[i].name == name)
16954             return &die->attrs[i];
16955           if (die->attrs[i].name == DW_AT_specification
16956               || die->attrs[i].name == DW_AT_abstract_origin)
16957             spec = &die->attrs[i];
16958         }
16959
16960       if (!spec)
16961         break;
16962
16963       die = follow_die_ref (die, spec, &cu);
16964     }
16965
16966   return NULL;
16967 }
16968
16969 /* Return the named attribute or NULL if not there,
16970    but do not follow DW_AT_specification, etc.
16971    This is for use in contexts where we're reading .debug_types dies.
16972    Following DW_AT_specification, DW_AT_abstract_origin will take us
16973    back up the chain, and we want to go down.  */
16974
16975 static struct attribute *
16976 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
16977 {
16978   unsigned int i;
16979
16980   for (i = 0; i < die->num_attrs; ++i)
16981     if (die->attrs[i].name == name)
16982       return &die->attrs[i];
16983
16984   return NULL;
16985 }
16986
16987 /* Return non-zero iff the attribute NAME is defined for the given DIE,
16988    and holds a non-zero value.  This function should only be used for
16989    DW_FORM_flag or DW_FORM_flag_present attributes.  */
16990
16991 static int
16992 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
16993 {
16994   struct attribute *attr = dwarf2_attr (die, name, cu);
16995
16996   return (attr && DW_UNSND (attr));
16997 }
16998
16999 static int
17000 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
17001 {
17002   /* A DIE is a declaration if it has a DW_AT_declaration attribute
17003      which value is non-zero.  However, we have to be careful with
17004      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
17005      (via dwarf2_flag_true_p) follows this attribute.  So we may
17006      end up accidently finding a declaration attribute that belongs
17007      to a different DIE referenced by the specification attribute,
17008      even though the given DIE does not have a declaration attribute.  */
17009   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
17010           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
17011 }
17012
17013 /* Return the die giving the specification for DIE, if there is
17014    one.  *SPEC_CU is the CU containing DIE on input, and the CU
17015    containing the return value on output.  If there is no
17016    specification, but there is an abstract origin, that is
17017    returned.  */
17018
17019 static struct die_info *
17020 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
17021 {
17022   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
17023                                              *spec_cu);
17024
17025   if (spec_attr == NULL)
17026     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
17027
17028   if (spec_attr == NULL)
17029     return NULL;
17030   else
17031     return follow_die_ref (die, spec_attr, spec_cu);
17032 }
17033
17034 /* Free the line_header structure *LH, and any arrays and strings it
17035    refers to.
17036    NOTE: This is also used as a "cleanup" function.  */
17037
17038 static void
17039 free_line_header (struct line_header *lh)
17040 {
17041   if (lh->standard_opcode_lengths)
17042     xfree (lh->standard_opcode_lengths);
17043
17044   /* Remember that all the lh->file_names[i].name pointers are
17045      pointers into debug_line_buffer, and don't need to be freed.  */
17046   if (lh->file_names)
17047     xfree (lh->file_names);
17048
17049   /* Similarly for the include directory names.  */
17050   if (lh->include_dirs)
17051     xfree (lh->include_dirs);
17052
17053   xfree (lh);
17054 }
17055
17056 /* Stub for free_line_header to match void * callback types.  */
17057
17058 static void
17059 free_line_header_voidp (void *arg)
17060 {
17061   struct line_header *lh = arg;
17062
17063   free_line_header (lh);
17064 }
17065
17066 /* Add an entry to LH's include directory table.  */
17067
17068 static void
17069 add_include_dir (struct line_header *lh, const char *include_dir)
17070 {
17071   /* Grow the array if necessary.  */
17072   if (lh->include_dirs_size == 0)
17073     {
17074       lh->include_dirs_size = 1; /* for testing */
17075       lh->include_dirs = xmalloc (lh->include_dirs_size
17076                                   * sizeof (*lh->include_dirs));
17077     }
17078   else if (lh->num_include_dirs >= lh->include_dirs_size)
17079     {
17080       lh->include_dirs_size *= 2;
17081       lh->include_dirs = xrealloc (lh->include_dirs,
17082                                    (lh->include_dirs_size
17083                                     * sizeof (*lh->include_dirs)));
17084     }
17085
17086   lh->include_dirs[lh->num_include_dirs++] = include_dir;
17087 }
17088
17089 /* Add an entry to LH's file name table.  */
17090
17091 static void
17092 add_file_name (struct line_header *lh,
17093                const char *name,
17094                unsigned int dir_index,
17095                unsigned int mod_time,
17096                unsigned int length)
17097 {
17098   struct file_entry *fe;
17099
17100   /* Grow the array if necessary.  */
17101   if (lh->file_names_size == 0)
17102     {
17103       lh->file_names_size = 1; /* for testing */
17104       lh->file_names = xmalloc (lh->file_names_size
17105                                 * sizeof (*lh->file_names));
17106     }
17107   else if (lh->num_file_names >= lh->file_names_size)
17108     {
17109       lh->file_names_size *= 2;
17110       lh->file_names = xrealloc (lh->file_names,
17111                                  (lh->file_names_size
17112                                   * sizeof (*lh->file_names)));
17113     }
17114
17115   fe = &lh->file_names[lh->num_file_names++];
17116   fe->name = name;
17117   fe->dir_index = dir_index;
17118   fe->mod_time = mod_time;
17119   fe->length = length;
17120   fe->included_p = 0;
17121   fe->symtab = NULL;
17122 }
17123
17124 /* A convenience function to find the proper .debug_line section for a
17125    CU.  */
17126
17127 static struct dwarf2_section_info *
17128 get_debug_line_section (struct dwarf2_cu *cu)
17129 {
17130   struct dwarf2_section_info *section;
17131
17132   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
17133      DWO file.  */
17134   if (cu->dwo_unit && cu->per_cu->is_debug_types)
17135     section = &cu->dwo_unit->dwo_file->sections.line;
17136   else if (cu->per_cu->is_dwz)
17137     {
17138       struct dwz_file *dwz = dwarf2_get_dwz_file ();
17139
17140       section = &dwz->line;
17141     }
17142   else
17143     section = &dwarf2_per_objfile->line;
17144
17145   return section;
17146 }
17147
17148 /* Read the statement program header starting at OFFSET in
17149    .debug_line, or .debug_line.dwo.  Return a pointer
17150    to a struct line_header, allocated using xmalloc.
17151
17152    NOTE: the strings in the include directory and file name tables of
17153    the returned object point into the dwarf line section buffer,
17154    and must not be freed.  */
17155
17156 static struct line_header *
17157 dwarf_decode_line_header (unsigned int offset, struct dwarf2_cu *cu)
17158 {
17159   struct cleanup *back_to;
17160   struct line_header *lh;
17161   const gdb_byte *line_ptr;
17162   unsigned int bytes_read, offset_size;
17163   int i;
17164   const char *cur_dir, *cur_file;
17165   struct dwarf2_section_info *section;
17166   bfd *abfd;
17167
17168   section = get_debug_line_section (cu);
17169   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
17170   if (section->buffer == NULL)
17171     {
17172       if (cu->dwo_unit && cu->per_cu->is_debug_types)
17173         complaint (&symfile_complaints, _("missing .debug_line.dwo section"));
17174       else
17175         complaint (&symfile_complaints, _("missing .debug_line section"));
17176       return 0;
17177     }
17178
17179   /* We can't do this until we know the section is non-empty.
17180      Only then do we know we have such a section.  */
17181   abfd = get_section_bfd_owner (section);
17182
17183   /* Make sure that at least there's room for the total_length field.
17184      That could be 12 bytes long, but we're just going to fudge that.  */
17185   if (offset + 4 >= section->size)
17186     {
17187       dwarf2_statement_list_fits_in_line_number_section_complaint ();
17188       return 0;
17189     }
17190
17191   lh = xmalloc (sizeof (*lh));
17192   memset (lh, 0, sizeof (*lh));
17193   back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
17194                           (void *) lh);
17195
17196   lh->offset.sect_off = offset;
17197   lh->offset_in_dwz = cu->per_cu->is_dwz;
17198
17199   line_ptr = section->buffer + offset;
17200
17201   /* Read in the header.  */
17202   lh->total_length =
17203     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
17204                                             &bytes_read, &offset_size);
17205   line_ptr += bytes_read;
17206   if (line_ptr + lh->total_length > (section->buffer + section->size))
17207     {
17208       dwarf2_statement_list_fits_in_line_number_section_complaint ();
17209       do_cleanups (back_to);
17210       return 0;
17211     }
17212   lh->statement_program_end = line_ptr + lh->total_length;
17213   lh->version = read_2_bytes (abfd, line_ptr);
17214   line_ptr += 2;
17215   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
17216   line_ptr += offset_size;
17217   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
17218   line_ptr += 1;
17219   if (lh->version >= 4)
17220     {
17221       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
17222       line_ptr += 1;
17223     }
17224   else
17225     lh->maximum_ops_per_instruction = 1;
17226
17227   if (lh->maximum_ops_per_instruction == 0)
17228     {
17229       lh->maximum_ops_per_instruction = 1;
17230       complaint (&symfile_complaints,
17231                  _("invalid maximum_ops_per_instruction "
17232                    "in `.debug_line' section"));
17233     }
17234
17235   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
17236   line_ptr += 1;
17237   lh->line_base = read_1_signed_byte (abfd, line_ptr);
17238   line_ptr += 1;
17239   lh->line_range = read_1_byte (abfd, line_ptr);
17240   line_ptr += 1;
17241   lh->opcode_base = read_1_byte (abfd, line_ptr);
17242   line_ptr += 1;
17243   lh->standard_opcode_lengths
17244     = xmalloc (lh->opcode_base * sizeof (lh->standard_opcode_lengths[0]));
17245
17246   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
17247   for (i = 1; i < lh->opcode_base; ++i)
17248     {
17249       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
17250       line_ptr += 1;
17251     }
17252
17253   /* Read directory table.  */
17254   while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
17255     {
17256       line_ptr += bytes_read;
17257       add_include_dir (lh, cur_dir);
17258     }
17259   line_ptr += bytes_read;
17260
17261   /* Read file name table.  */
17262   while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
17263     {
17264       unsigned int dir_index, mod_time, length;
17265
17266       line_ptr += bytes_read;
17267       dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17268       line_ptr += bytes_read;
17269       mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17270       line_ptr += bytes_read;
17271       length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17272       line_ptr += bytes_read;
17273
17274       add_file_name (lh, cur_file, dir_index, mod_time, length);
17275     }
17276   line_ptr += bytes_read;
17277   lh->statement_program_start = line_ptr;
17278
17279   if (line_ptr > (section->buffer + section->size))
17280     complaint (&symfile_complaints,
17281                _("line number info header doesn't "
17282                  "fit in `.debug_line' section"));
17283
17284   discard_cleanups (back_to);
17285   return lh;
17286 }
17287
17288 /* Subroutine of dwarf_decode_lines to simplify it.
17289    Return the file name of the psymtab for included file FILE_INDEX
17290    in line header LH of PST.
17291    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
17292    If space for the result is malloc'd, it will be freed by a cleanup.
17293    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.
17294
17295    The function creates dangling cleanup registration.  */
17296
17297 static const char *
17298 psymtab_include_file_name (const struct line_header *lh, int file_index,
17299                            const struct partial_symtab *pst,
17300                            const char *comp_dir)
17301 {
17302   const struct file_entry fe = lh->file_names [file_index];
17303   const char *include_name = fe.name;
17304   const char *include_name_to_compare = include_name;
17305   const char *dir_name = NULL;
17306   const char *pst_filename;
17307   char *copied_name = NULL;
17308   int file_is_pst;
17309
17310   if (fe.dir_index)
17311     dir_name = lh->include_dirs[fe.dir_index - 1];
17312
17313   if (!IS_ABSOLUTE_PATH (include_name)
17314       && (dir_name != NULL || comp_dir != NULL))
17315     {
17316       /* Avoid creating a duplicate psymtab for PST.
17317          We do this by comparing INCLUDE_NAME and PST_FILENAME.
17318          Before we do the comparison, however, we need to account
17319          for DIR_NAME and COMP_DIR.
17320          First prepend dir_name (if non-NULL).  If we still don't
17321          have an absolute path prepend comp_dir (if non-NULL).
17322          However, the directory we record in the include-file's
17323          psymtab does not contain COMP_DIR (to match the
17324          corresponding symtab(s)).
17325
17326          Example:
17327
17328          bash$ cd /tmp
17329          bash$ gcc -g ./hello.c
17330          include_name = "hello.c"
17331          dir_name = "."
17332          DW_AT_comp_dir = comp_dir = "/tmp"
17333          DW_AT_name = "./hello.c"
17334
17335       */
17336
17337       if (dir_name != NULL)
17338         {
17339           char *tem = concat (dir_name, SLASH_STRING,
17340                               include_name, (char *)NULL);
17341
17342           make_cleanup (xfree, tem);
17343           include_name = tem;
17344           include_name_to_compare = include_name;
17345         }
17346       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
17347         {
17348           char *tem = concat (comp_dir, SLASH_STRING,
17349                               include_name, (char *)NULL);
17350
17351           make_cleanup (xfree, tem);
17352           include_name_to_compare = tem;
17353         }
17354     }
17355
17356   pst_filename = pst->filename;
17357   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
17358     {
17359       copied_name = concat (pst->dirname, SLASH_STRING,
17360                             pst_filename, (char *)NULL);
17361       pst_filename = copied_name;
17362     }
17363
17364   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
17365
17366   if (copied_name != NULL)
17367     xfree (copied_name);
17368
17369   if (file_is_pst)
17370     return NULL;
17371   return include_name;
17372 }
17373
17374 /* Ignore this record_line request.  */
17375
17376 static void
17377 noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
17378 {
17379   return;
17380 }
17381
17382 /* Return non-zero if we should add LINE to the line number table.
17383    LINE is the line to add, LAST_LINE is the last line that was added,
17384    LAST_SUBFILE is the subfile for LAST_LINE.
17385    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
17386    had a non-zero discriminator.
17387
17388    We have to be careful in the presence of discriminators.
17389    E.g., for this line:
17390
17391      for (i = 0; i < 100000; i++);
17392
17393    clang can emit four line number entries for that one line,
17394    each with a different discriminator.
17395    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
17396
17397    However, we want gdb to coalesce all four entries into one.
17398    Otherwise the user could stepi into the middle of the line and
17399    gdb would get confused about whether the pc really was in the
17400    middle of the line.
17401
17402    Things are further complicated by the fact that two consecutive
17403    line number entries for the same line is a heuristic used by gcc
17404    to denote the end of the prologue.  So we can't just discard duplicate
17405    entries, we have to be selective about it.  The heuristic we use is
17406    that we only collapse consecutive entries for the same line if at least
17407    one of those entries has a non-zero discriminator.  PR 17276.
17408
17409    Note: Addresses in the line number state machine can never go backwards
17410    within one sequence, thus this coalescing is ok.  */
17411
17412 static int
17413 dwarf_record_line_p (unsigned int line, unsigned int last_line,
17414                      int line_has_non_zero_discriminator,
17415                      struct subfile *last_subfile)
17416 {
17417   if (current_subfile != last_subfile)
17418     return 1;
17419   if (line != last_line)
17420     return 1;
17421   /* Same line for the same file that we've seen already.
17422      As a last check, for pr 17276, only record the line if the line
17423      has never had a non-zero discriminator.  */
17424   if (!line_has_non_zero_discriminator)
17425     return 1;
17426   return 0;
17427 }
17428
17429 /* Use P_RECORD_LINE to record line number LINE beginning at address ADDRESS
17430    in the line table of subfile SUBFILE.  */
17431
17432 static void
17433 dwarf_record_line (struct gdbarch *gdbarch, struct subfile *subfile,
17434                    unsigned int line, CORE_ADDR address,
17435                    record_line_ftype p_record_line)
17436 {
17437   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
17438
17439   (*p_record_line) (subfile, line, addr);
17440 }
17441
17442 /* Subroutine of dwarf_decode_lines_1 to simplify it.
17443    Mark the end of a set of line number records.
17444    The arguments are the same as for dwarf_record_line.
17445    If SUBFILE is NULL the request is ignored.  */
17446
17447 static void
17448 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
17449                    CORE_ADDR address, record_line_ftype p_record_line)
17450 {
17451   if (subfile != NULL)
17452     dwarf_record_line (gdbarch, subfile, 0, address, p_record_line);
17453 }
17454
17455 /* Subroutine of dwarf_decode_lines to simplify it.
17456    Process the line number information in LH.  */
17457
17458 static void
17459 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
17460                       const int decode_for_pst_p, CORE_ADDR lowpc)
17461 {
17462   const gdb_byte *line_ptr, *extended_end;
17463   const gdb_byte *line_end;
17464   unsigned int bytes_read, extended_len;
17465   unsigned char op_code, extended_op;
17466   CORE_ADDR baseaddr;
17467   struct objfile *objfile = cu->objfile;
17468   bfd *abfd = objfile->obfd;
17469   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17470   struct subfile *last_subfile = NULL;
17471   void (*p_record_line) (struct subfile *subfile, int line, CORE_ADDR pc)
17472     = record_line;
17473
17474   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
17475
17476   line_ptr = lh->statement_program_start;
17477   line_end = lh->statement_program_end;
17478
17479   /* Read the statement sequences until there's nothing left.  */
17480   while (line_ptr < line_end)
17481     {
17482       /* State machine registers.  Call `gdbarch_adjust_dwarf2_line'
17483          on the initial 0 address as if there was a line entry for it
17484          so that the backend has a chance to adjust it and also record
17485          it in case it needs it.  This is currently used by MIPS code,
17486          cf. `mips_adjust_dwarf2_line'.  */
17487       CORE_ADDR address = gdbarch_adjust_dwarf2_line (gdbarch, 0, 0);
17488       unsigned int file = 1;
17489       unsigned int line = 1;
17490       int is_stmt = lh->default_is_stmt;
17491       int end_sequence = 0;
17492       unsigned char op_index = 0;
17493       unsigned int discriminator = 0;
17494       /* The last line number that was recorded, used to coalesce
17495          consecutive entries for the same line.  This can happen, for
17496          example, when discriminators are present.  PR 17276.  */
17497       unsigned int last_line = 0;
17498       int line_has_non_zero_discriminator = 0;
17499
17500       if (!decode_for_pst_p && lh->num_file_names >= file)
17501         {
17502           /* Start a subfile for the current file of the state machine.  */
17503           /* lh->include_dirs and lh->file_names are 0-based, but the
17504              directory and file name numbers in the statement program
17505              are 1-based.  */
17506           struct file_entry *fe = &lh->file_names[file - 1];
17507           const char *dir = NULL;
17508
17509           if (fe->dir_index)
17510             dir = lh->include_dirs[fe->dir_index - 1];
17511
17512           dwarf2_start_subfile (fe->name, dir);
17513         }
17514
17515       /* Decode the table.  */
17516       while (!end_sequence)
17517         {
17518           op_code = read_1_byte (abfd, line_ptr);
17519           line_ptr += 1;
17520           if (line_ptr > line_end)
17521             {
17522               dwarf2_debug_line_missing_end_sequence_complaint ();
17523               break;
17524             }
17525
17526           if (op_code >= lh->opcode_base)
17527             {
17528               /* Special opcode.  */
17529               unsigned char adj_opcode;
17530               CORE_ADDR addr_adj;
17531               int line_delta;
17532
17533               adj_opcode = op_code - lh->opcode_base;
17534               addr_adj = (((op_index + (adj_opcode / lh->line_range))
17535                            / lh->maximum_ops_per_instruction)
17536                           * lh->minimum_instruction_length);
17537               address += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17538               op_index = ((op_index + (adj_opcode / lh->line_range))
17539                           % lh->maximum_ops_per_instruction);
17540               line_delta = lh->line_base + (adj_opcode % lh->line_range);
17541               line += line_delta;
17542               if (line_delta != 0)
17543                 line_has_non_zero_discriminator = discriminator != 0;
17544               if (lh->num_file_names < file || file == 0)
17545                 dwarf2_debug_line_missing_file_complaint ();
17546               /* For now we ignore lines not starting on an
17547                  instruction boundary.  */
17548               else if (op_index == 0)
17549                 {
17550                   lh->file_names[file - 1].included_p = 1;
17551                   if (!decode_for_pst_p && is_stmt)
17552                     {
17553                       if (last_subfile != current_subfile)
17554                         {
17555                           dwarf_finish_line (gdbarch, last_subfile,
17556                                              address, p_record_line);
17557                         }
17558                       if (dwarf_record_line_p (line, last_line,
17559                                                line_has_non_zero_discriminator,
17560                                                last_subfile))
17561                         {
17562                           dwarf_record_line (gdbarch, current_subfile,
17563                                              line, address, p_record_line);
17564                         }
17565                       last_subfile = current_subfile;
17566                       last_line = line;
17567                     }
17568                 }
17569               discriminator = 0;
17570             }
17571           else switch (op_code)
17572             {
17573             case DW_LNS_extended_op:
17574               extended_len = read_unsigned_leb128 (abfd, line_ptr,
17575                                                    &bytes_read);
17576               line_ptr += bytes_read;
17577               extended_end = line_ptr + extended_len;
17578               extended_op = read_1_byte (abfd, line_ptr);
17579               line_ptr += 1;
17580               switch (extended_op)
17581                 {
17582                 case DW_LNE_end_sequence:
17583                   p_record_line = record_line;
17584                   end_sequence = 1;
17585                   break;
17586                 case DW_LNE_set_address:
17587                   address = read_address (abfd, line_ptr, cu, &bytes_read);
17588
17589                   /* If address < lowpc then it's not a usable value, it's
17590                      outside the pc range of the CU.  However, we restrict
17591                      the test to only address values of zero to preserve
17592                      GDB's previous behaviour which is to handle the specific
17593                      case of a function being GC'd by the linker.  */
17594                   if (address == 0 && address < lowpc)
17595                     {
17596                       /* This line table is for a function which has been
17597                          GCd by the linker.  Ignore it.  PR gdb/12528 */
17598
17599                       long line_offset
17600                         = line_ptr - get_debug_line_section (cu)->buffer;
17601
17602                       complaint (&symfile_complaints,
17603                                  _(".debug_line address at offset 0x%lx is 0 "
17604                                    "[in module %s]"),
17605                                  line_offset, objfile_name (objfile));
17606                       p_record_line = noop_record_line;
17607                       /* Note: p_record_line is left as noop_record_line
17608                          until we see DW_LNE_end_sequence.  */
17609                     }
17610
17611                   op_index = 0;
17612                   line_ptr += bytes_read;
17613                   address += baseaddr;
17614                   address = gdbarch_adjust_dwarf2_line (gdbarch, address, 0);
17615                   break;
17616                 case DW_LNE_define_file:
17617                   {
17618                     const char *cur_file;
17619                     unsigned int dir_index, mod_time, length;
17620
17621                     cur_file = read_direct_string (abfd, line_ptr,
17622                                                    &bytes_read);
17623                     line_ptr += bytes_read;
17624                     dir_index =
17625                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17626                     line_ptr += bytes_read;
17627                     mod_time =
17628                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17629                     line_ptr += bytes_read;
17630                     length =
17631                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17632                     line_ptr += bytes_read;
17633                     add_file_name (lh, cur_file, dir_index, mod_time, length);
17634                   }
17635                   break;
17636                 case DW_LNE_set_discriminator:
17637                   /* The discriminator is not interesting to the debugger;
17638                      just ignore it.  We still need to check its value though:
17639                      if there are consecutive entries for the same
17640                      (non-prologue) line we want to coalesce them.
17641                      PR 17276.  */
17642                   discriminator = read_unsigned_leb128 (abfd, line_ptr,
17643                                                         &bytes_read);
17644                   line_has_non_zero_discriminator |= discriminator != 0;
17645                   line_ptr += bytes_read;
17646                   break;
17647                 default:
17648                   complaint (&symfile_complaints,
17649                              _("mangled .debug_line section"));
17650                   return;
17651                 }
17652               /* Make sure that we parsed the extended op correctly.  If e.g.
17653                  we expected a different address size than the producer used,
17654                  we may have read the wrong number of bytes.  */
17655               if (line_ptr != extended_end)
17656                 {
17657                   complaint (&symfile_complaints,
17658                              _("mangled .debug_line section"));
17659                   return;
17660                 }
17661               break;
17662             case DW_LNS_copy:
17663               if (lh->num_file_names < file || file == 0)
17664                 dwarf2_debug_line_missing_file_complaint ();
17665               else
17666                 {
17667                   lh->file_names[file - 1].included_p = 1;
17668                   if (!decode_for_pst_p && is_stmt)
17669                     {
17670                       if (last_subfile != current_subfile)
17671                         {
17672                           dwarf_finish_line (gdbarch, last_subfile,
17673                                              address, p_record_line);
17674                         }
17675                       if (dwarf_record_line_p (line, last_line,
17676                                                line_has_non_zero_discriminator,
17677                                                last_subfile))
17678                         {
17679                           dwarf_record_line (gdbarch, current_subfile,
17680                                              line, address, p_record_line);
17681                         }
17682                       last_subfile = current_subfile;
17683                       last_line = line;
17684                     }
17685                 }
17686               discriminator = 0;
17687               break;
17688             case DW_LNS_advance_pc:
17689               {
17690                 CORE_ADDR adjust
17691                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17692                 CORE_ADDR addr_adj;
17693
17694                 addr_adj = (((op_index + adjust)
17695                              / lh->maximum_ops_per_instruction)
17696                             * lh->minimum_instruction_length);
17697                 address += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17698                 op_index = ((op_index + adjust)
17699                             % lh->maximum_ops_per_instruction);
17700                 line_ptr += bytes_read;
17701               }
17702               break;
17703             case DW_LNS_advance_line:
17704               {
17705                 int line_delta
17706                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
17707
17708                 line += line_delta;
17709                 if (line_delta != 0)
17710                   line_has_non_zero_discriminator = discriminator != 0;
17711                 line_ptr += bytes_read;
17712               }
17713               break;
17714             case DW_LNS_set_file:
17715               {
17716                 /* The arrays lh->include_dirs and lh->file_names are
17717                    0-based, but the directory and file name numbers in
17718                    the statement program are 1-based.  */
17719                 struct file_entry *fe;
17720                 const char *dir = NULL;
17721
17722                 file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17723                 line_ptr += bytes_read;
17724                 if (lh->num_file_names < file || file == 0)
17725                   dwarf2_debug_line_missing_file_complaint ();
17726                 else
17727                   {
17728                     fe = &lh->file_names[file - 1];
17729                     if (fe->dir_index)
17730                       dir = lh->include_dirs[fe->dir_index - 1];
17731                     if (!decode_for_pst_p)
17732                       {
17733                         last_subfile = current_subfile;
17734                         line_has_non_zero_discriminator = discriminator != 0;
17735                         dwarf2_start_subfile (fe->name, dir);
17736                       }
17737                   }
17738               }
17739               break;
17740             case DW_LNS_set_column:
17741               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17742               line_ptr += bytes_read;
17743               break;
17744             case DW_LNS_negate_stmt:
17745               is_stmt = (!is_stmt);
17746               break;
17747             case DW_LNS_set_basic_block:
17748               break;
17749             /* Add to the address register of the state machine the
17750                address increment value corresponding to special opcode
17751                255.  I.e., this value is scaled by the minimum
17752                instruction length since special opcode 255 would have
17753                scaled the increment.  */
17754             case DW_LNS_const_add_pc:
17755               {
17756                 CORE_ADDR adjust = (255 - lh->opcode_base) / lh->line_range;
17757                 CORE_ADDR addr_adj;
17758
17759                 addr_adj = (((op_index + adjust)
17760                              / lh->maximum_ops_per_instruction)
17761                             * lh->minimum_instruction_length);
17762                 address += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17763                 op_index = ((op_index + adjust)
17764                             % lh->maximum_ops_per_instruction);
17765               }
17766               break;
17767             case DW_LNS_fixed_advance_pc:
17768               {
17769                 CORE_ADDR addr_adj;
17770
17771                 addr_adj = read_2_bytes (abfd, line_ptr);
17772                 address += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17773                 op_index = 0;
17774                 line_ptr += 2;
17775               }
17776               break;
17777             default:
17778               {
17779                 /* Unknown standard opcode, ignore it.  */
17780                 int i;
17781
17782                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
17783                   {
17784                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17785                     line_ptr += bytes_read;
17786                   }
17787               }
17788             }
17789         }
17790       if (lh->num_file_names < file || file == 0)
17791         dwarf2_debug_line_missing_file_complaint ();
17792       else
17793         {
17794           lh->file_names[file - 1].included_p = 1;
17795           if (!decode_for_pst_p)
17796             {
17797               dwarf_finish_line (gdbarch, current_subfile, address,
17798                                  p_record_line);
17799             }
17800         }
17801     }
17802 }
17803
17804 /* Decode the Line Number Program (LNP) for the given line_header
17805    structure and CU.  The actual information extracted and the type
17806    of structures created from the LNP depends on the value of PST.
17807
17808    1. If PST is NULL, then this procedure uses the data from the program
17809       to create all necessary symbol tables, and their linetables.
17810
17811    2. If PST is not NULL, this procedure reads the program to determine
17812       the list of files included by the unit represented by PST, and
17813       builds all the associated partial symbol tables.
17814
17815    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
17816    It is used for relative paths in the line table.
17817    NOTE: When processing partial symtabs (pst != NULL),
17818    comp_dir == pst->dirname.
17819
17820    NOTE: It is important that psymtabs have the same file name (via strcmp)
17821    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
17822    symtab we don't use it in the name of the psymtabs we create.
17823    E.g. expand_line_sal requires this when finding psymtabs to expand.
17824    A good testcase for this is mb-inline.exp.
17825
17826    LOWPC is the lowest address in CU (or 0 if not known).
17827
17828    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
17829    for its PC<->lines mapping information.  Otherwise only the filename
17830    table is read in.  */
17831
17832 static void
17833 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
17834                     struct dwarf2_cu *cu, struct partial_symtab *pst,
17835                     CORE_ADDR lowpc, int decode_mapping)
17836 {
17837   struct objfile *objfile = cu->objfile;
17838   const int decode_for_pst_p = (pst != NULL);
17839
17840   if (decode_mapping)
17841     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
17842
17843   if (decode_for_pst_p)
17844     {
17845       int file_index;
17846
17847       /* Now that we're done scanning the Line Header Program, we can
17848          create the psymtab of each included file.  */
17849       for (file_index = 0; file_index < lh->num_file_names; file_index++)
17850         if (lh->file_names[file_index].included_p == 1)
17851           {
17852             const char *include_name =
17853               psymtab_include_file_name (lh, file_index, pst, comp_dir);
17854             if (include_name != NULL)
17855               dwarf2_create_include_psymtab (include_name, pst, objfile);
17856           }
17857     }
17858   else
17859     {
17860       /* Make sure a symtab is created for every file, even files
17861          which contain only variables (i.e. no code with associated
17862          line numbers).  */
17863       struct compunit_symtab *cust = buildsym_compunit_symtab ();
17864       int i;
17865
17866       for (i = 0; i < lh->num_file_names; i++)
17867         {
17868           const char *dir = NULL;
17869           struct file_entry *fe;
17870
17871           fe = &lh->file_names[i];
17872           if (fe->dir_index)
17873             dir = lh->include_dirs[fe->dir_index - 1];
17874           dwarf2_start_subfile (fe->name, dir);
17875
17876           if (current_subfile->symtab == NULL)
17877             {
17878               current_subfile->symtab
17879                 = allocate_symtab (cust, current_subfile->name);
17880             }
17881           fe->symtab = current_subfile->symtab;
17882         }
17883     }
17884 }
17885
17886 /* Start a subfile for DWARF.  FILENAME is the name of the file and
17887    DIRNAME the name of the source directory which contains FILENAME
17888    or NULL if not known.
17889    This routine tries to keep line numbers from identical absolute and
17890    relative file names in a common subfile.
17891
17892    Using the `list' example from the GDB testsuite, which resides in
17893    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
17894    of /srcdir/list0.c yields the following debugging information for list0.c:
17895
17896    DW_AT_name:          /srcdir/list0.c
17897    DW_AT_comp_dir:      /compdir
17898    files.files[0].name: list0.h
17899    files.files[0].dir:  /srcdir
17900    files.files[1].name: list0.c
17901    files.files[1].dir:  /srcdir
17902
17903    The line number information for list0.c has to end up in a single
17904    subfile, so that `break /srcdir/list0.c:1' works as expected.
17905    start_subfile will ensure that this happens provided that we pass the
17906    concatenation of files.files[1].dir and files.files[1].name as the
17907    subfile's name.  */
17908
17909 static void
17910 dwarf2_start_subfile (const char *filename, const char *dirname)
17911 {
17912   char *copy = NULL;
17913
17914   /* In order not to lose the line information directory,
17915      we concatenate it to the filename when it makes sense.
17916      Note that the Dwarf3 standard says (speaking of filenames in line
17917      information): ``The directory index is ignored for file names
17918      that represent full path names''.  Thus ignoring dirname in the
17919      `else' branch below isn't an issue.  */
17920
17921   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
17922     {
17923       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
17924       filename = copy;
17925     }
17926
17927   start_subfile (filename);
17928
17929   if (copy != NULL)
17930     xfree (copy);
17931 }
17932
17933 /* Start a symtab for DWARF.
17934    NAME, COMP_DIR, LOW_PC are passed to start_symtab.  */
17935
17936 static struct compunit_symtab *
17937 dwarf2_start_symtab (struct dwarf2_cu *cu,
17938                      const char *name, const char *comp_dir, CORE_ADDR low_pc)
17939 {
17940   struct compunit_symtab *cust
17941     = start_symtab (cu->objfile, name, comp_dir, low_pc);
17942
17943   record_debugformat ("DWARF 2");
17944   record_producer (cu->producer);
17945
17946   /* We assume that we're processing GCC output.  */
17947   processing_gcc_compilation = 2;
17948
17949   cu->processing_has_namespace_info = 0;
17950
17951   return cust;
17952 }
17953
17954 static void
17955 var_decode_location (struct attribute *attr, struct symbol *sym,
17956                      struct dwarf2_cu *cu)
17957 {
17958   struct objfile *objfile = cu->objfile;
17959   struct comp_unit_head *cu_header = &cu->header;
17960
17961   /* NOTE drow/2003-01-30: There used to be a comment and some special
17962      code here to turn a symbol with DW_AT_external and a
17963      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
17964      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
17965      with some versions of binutils) where shared libraries could have
17966      relocations against symbols in their debug information - the
17967      minimal symbol would have the right address, but the debug info
17968      would not.  It's no longer necessary, because we will explicitly
17969      apply relocations when we read in the debug information now.  */
17970
17971   /* A DW_AT_location attribute with no contents indicates that a
17972      variable has been optimized away.  */
17973   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
17974     {
17975       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
17976       return;
17977     }
17978
17979   /* Handle one degenerate form of location expression specially, to
17980      preserve GDB's previous behavior when section offsets are
17981      specified.  If this is just a DW_OP_addr or DW_OP_GNU_addr_index
17982      then mark this symbol as LOC_STATIC.  */
17983
17984   if (attr_form_is_block (attr)
17985       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
17986            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
17987           || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
17988               && (DW_BLOCK (attr)->size
17989                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
17990     {
17991       unsigned int dummy;
17992
17993       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
17994         SYMBOL_VALUE_ADDRESS (sym) =
17995           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
17996       else
17997         SYMBOL_VALUE_ADDRESS (sym) =
17998           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
17999       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
18000       fixup_symbol_section (sym, objfile);
18001       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
18002                                               SYMBOL_SECTION (sym));
18003       return;
18004     }
18005
18006   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
18007      expression evaluator, and use LOC_COMPUTED only when necessary
18008      (i.e. when the value of a register or memory location is
18009      referenced, or a thread-local block, etc.).  Then again, it might
18010      not be worthwhile.  I'm assuming that it isn't unless performance
18011      or memory numbers show me otherwise.  */
18012
18013   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
18014
18015   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
18016     cu->has_loclist = 1;
18017 }
18018
18019 /* Given a pointer to a DWARF information entry, figure out if we need
18020    to make a symbol table entry for it, and if so, create a new entry
18021    and return a pointer to it.
18022    If TYPE is NULL, determine symbol type from the die, otherwise
18023    used the passed type.
18024    If SPACE is not NULL, use it to hold the new symbol.  If it is
18025    NULL, allocate a new symbol on the objfile's obstack.  */
18026
18027 static struct symbol *
18028 new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
18029                  struct symbol *space)
18030 {
18031   struct objfile *objfile = cu->objfile;
18032   struct gdbarch *gdbarch = get_objfile_arch (objfile);
18033   struct symbol *sym = NULL;
18034   const char *name;
18035   struct attribute *attr = NULL;
18036   struct attribute *attr2 = NULL;
18037   CORE_ADDR baseaddr;
18038   struct pending **list_to_add = NULL;
18039
18040   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
18041
18042   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
18043
18044   name = dwarf2_name (die, cu);
18045   if (name)
18046     {
18047       const char *linkagename;
18048       int suppress_add = 0;
18049
18050       if (space)
18051         sym = space;
18052       else
18053         sym = allocate_symbol (objfile);
18054       OBJSTAT (objfile, n_syms++);
18055
18056       /* Cache this symbol's name and the name's demangled form (if any).  */
18057       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
18058       linkagename = dwarf2_physname (name, die, cu);
18059       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
18060
18061       /* Fortran does not have mangling standard and the mangling does differ
18062          between gfortran, iFort etc.  */
18063       if (cu->language == language_fortran
18064           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
18065         symbol_set_demangled_name (&(sym->ginfo),
18066                                    dwarf2_full_name (name, die, cu),
18067                                    NULL);
18068
18069       /* Default assumptions.
18070          Use the passed type or decode it from the die.  */
18071       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
18072       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
18073       if (type != NULL)
18074         SYMBOL_TYPE (sym) = type;
18075       else
18076         SYMBOL_TYPE (sym) = die_type (die, cu);
18077       attr = dwarf2_attr (die,
18078                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
18079                           cu);
18080       if (attr)
18081         {
18082           SYMBOL_LINE (sym) = DW_UNSND (attr);
18083         }
18084
18085       attr = dwarf2_attr (die,
18086                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
18087                           cu);
18088       if (attr)
18089         {
18090           int file_index = DW_UNSND (attr);
18091
18092           if (cu->line_header == NULL
18093               || file_index > cu->line_header->num_file_names)
18094             complaint (&symfile_complaints,
18095                        _("file index out of range"));
18096           else if (file_index > 0)
18097             {
18098               struct file_entry *fe;
18099
18100               fe = &cu->line_header->file_names[file_index - 1];
18101               symbol_set_symtab (sym, fe->symtab);
18102             }
18103         }
18104
18105       switch (die->tag)
18106         {
18107         case DW_TAG_label:
18108           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
18109           if (attr)
18110             {
18111               CORE_ADDR addr;
18112
18113               addr = attr_value_as_address (attr);
18114               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
18115               SYMBOL_VALUE_ADDRESS (sym) = addr;
18116             }
18117           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
18118           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
18119           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
18120           add_symbol_to_list (sym, cu->list_in_scope);
18121           break;
18122         case DW_TAG_subprogram:
18123           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18124              finish_block.  */
18125           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
18126           attr2 = dwarf2_attr (die, DW_AT_external, cu);
18127           if ((attr2 && (DW_UNSND (attr2) != 0))
18128               || cu->language == language_ada)
18129             {
18130               /* Subprograms marked external are stored as a global symbol.
18131                  Ada subprograms, whether marked external or not, are always
18132                  stored as a global symbol, because we want to be able to
18133                  access them globally.  For instance, we want to be able
18134                  to break on a nested subprogram without having to
18135                  specify the context.  */
18136               list_to_add = &global_symbols;
18137             }
18138           else
18139             {
18140               list_to_add = cu->list_in_scope;
18141             }
18142           break;
18143         case DW_TAG_inlined_subroutine:
18144           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18145              finish_block.  */
18146           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
18147           SYMBOL_INLINED (sym) = 1;
18148           list_to_add = cu->list_in_scope;
18149           break;
18150         case DW_TAG_template_value_param:
18151           suppress_add = 1;
18152           /* Fall through.  */
18153         case DW_TAG_constant:
18154         case DW_TAG_variable:
18155         case DW_TAG_member:
18156           /* Compilation with minimal debug info may result in
18157              variables with missing type entries.  Change the
18158              misleading `void' type to something sensible.  */
18159           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
18160             SYMBOL_TYPE (sym)
18161               = objfile_type (objfile)->nodebug_data_symbol;
18162
18163           attr = dwarf2_attr (die, DW_AT_const_value, cu);
18164           /* In the case of DW_TAG_member, we should only be called for
18165              static const members.  */
18166           if (die->tag == DW_TAG_member)
18167             {
18168               /* dwarf2_add_field uses die_is_declaration,
18169                  so we do the same.  */
18170               gdb_assert (die_is_declaration (die, cu));
18171               gdb_assert (attr);
18172             }
18173           if (attr)
18174             {
18175               dwarf2_const_value (attr, sym, cu);
18176               attr2 = dwarf2_attr (die, DW_AT_external, cu);
18177               if (!suppress_add)
18178                 {
18179                   if (attr2 && (DW_UNSND (attr2) != 0))
18180                     list_to_add = &global_symbols;
18181                   else
18182                     list_to_add = cu->list_in_scope;
18183                 }
18184               break;
18185             }
18186           attr = dwarf2_attr (die, DW_AT_location, cu);
18187           if (attr)
18188             {
18189               var_decode_location (attr, sym, cu);
18190               attr2 = dwarf2_attr (die, DW_AT_external, cu);
18191
18192               /* Fortran explicitly imports any global symbols to the local
18193                  scope by DW_TAG_common_block.  */
18194               if (cu->language == language_fortran && die->parent
18195                   && die->parent->tag == DW_TAG_common_block)
18196                 attr2 = NULL;
18197
18198               if (SYMBOL_CLASS (sym) == LOC_STATIC
18199                   && SYMBOL_VALUE_ADDRESS (sym) == 0
18200                   && !dwarf2_per_objfile->has_section_at_zero)
18201                 {
18202                   /* When a static variable is eliminated by the linker,
18203                      the corresponding debug information is not stripped
18204                      out, but the variable address is set to null;
18205                      do not add such variables into symbol table.  */
18206                 }
18207               else if (attr2 && (DW_UNSND (attr2) != 0))
18208                 {
18209                   /* Workaround gfortran PR debug/40040 - it uses
18210                      DW_AT_location for variables in -fPIC libraries which may
18211                      get overriden by other libraries/executable and get
18212                      a different address.  Resolve it by the minimal symbol
18213                      which may come from inferior's executable using copy
18214                      relocation.  Make this workaround only for gfortran as for
18215                      other compilers GDB cannot guess the minimal symbol
18216                      Fortran mangling kind.  */
18217                   if (cu->language == language_fortran && die->parent
18218                       && die->parent->tag == DW_TAG_module
18219                       && cu->producer
18220                       && strncmp (cu->producer, "GNU Fortran ", 12) == 0)
18221                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
18222
18223                   /* A variable with DW_AT_external is never static,
18224                      but it may be block-scoped.  */
18225                   list_to_add = (cu->list_in_scope == &file_symbols
18226                                  ? &global_symbols : cu->list_in_scope);
18227                 }
18228               else
18229                 list_to_add = cu->list_in_scope;
18230             }
18231           else
18232             {
18233               /* We do not know the address of this symbol.
18234                  If it is an external symbol and we have type information
18235                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
18236                  The address of the variable will then be determined from
18237                  the minimal symbol table whenever the variable is
18238                  referenced.  */
18239               attr2 = dwarf2_attr (die, DW_AT_external, cu);
18240
18241               /* Fortran explicitly imports any global symbols to the local
18242                  scope by DW_TAG_common_block.  */
18243               if (cu->language == language_fortran && die->parent
18244                   && die->parent->tag == DW_TAG_common_block)
18245                 {
18246                   /* SYMBOL_CLASS doesn't matter here because
18247                      read_common_block is going to reset it.  */
18248                   if (!suppress_add)
18249                     list_to_add = cu->list_in_scope;
18250                 }
18251               else if (attr2 && (DW_UNSND (attr2) != 0)
18252                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
18253                 {
18254                   /* A variable with DW_AT_external is never static, but it
18255                      may be block-scoped.  */
18256                   list_to_add = (cu->list_in_scope == &file_symbols
18257                                  ? &global_symbols : cu->list_in_scope);
18258
18259                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
18260                 }
18261               else if (!die_is_declaration (die, cu))
18262                 {
18263                   /* Use the default LOC_OPTIMIZED_OUT class.  */
18264                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
18265                   if (!suppress_add)
18266                     list_to_add = cu->list_in_scope;
18267                 }
18268             }
18269           break;
18270         case DW_TAG_formal_parameter:
18271           /* If we are inside a function, mark this as an argument.  If
18272              not, we might be looking at an argument to an inlined function
18273              when we do not have enough information to show inlined frames;
18274              pretend it's a local variable in that case so that the user can
18275              still see it.  */
18276           if (context_stack_depth > 0
18277               && context_stack[context_stack_depth - 1].name != NULL)
18278             SYMBOL_IS_ARGUMENT (sym) = 1;
18279           attr = dwarf2_attr (die, DW_AT_location, cu);
18280           if (attr)
18281             {
18282               var_decode_location (attr, sym, cu);
18283             }
18284           attr = dwarf2_attr (die, DW_AT_const_value, cu);
18285           if (attr)
18286             {
18287               dwarf2_const_value (attr, sym, cu);
18288             }
18289
18290           list_to_add = cu->list_in_scope;
18291           break;
18292         case DW_TAG_unspecified_parameters:
18293           /* From varargs functions; gdb doesn't seem to have any
18294              interest in this information, so just ignore it for now.
18295              (FIXME?) */
18296           break;
18297         case DW_TAG_template_type_param:
18298           suppress_add = 1;
18299           /* Fall through.  */
18300         case DW_TAG_class_type:
18301         case DW_TAG_interface_type:
18302         case DW_TAG_structure_type:
18303         case DW_TAG_union_type:
18304         case DW_TAG_set_type:
18305         case DW_TAG_enumeration_type:
18306           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18307           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
18308
18309           {
18310             /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't
18311                really ever be static objects: otherwise, if you try
18312                to, say, break of a class's method and you're in a file
18313                which doesn't mention that class, it won't work unless
18314                the check for all static symbols in lookup_symbol_aux
18315                saves you.  See the OtherFileClass tests in
18316                gdb.c++/namespace.exp.  */
18317
18318             if (!suppress_add)
18319               {
18320                 list_to_add = (cu->list_in_scope == &file_symbols
18321                                && (cu->language == language_cplus
18322                                    || cu->language == language_java)
18323                                ? &global_symbols : cu->list_in_scope);
18324
18325                 /* The semantics of C++ state that "struct foo {
18326                    ... }" also defines a typedef for "foo".  A Java
18327                    class declaration also defines a typedef for the
18328                    class.  */
18329                 if (cu->language == language_cplus
18330                     || cu->language == language_java
18331                     || cu->language == language_ada)
18332                   {
18333                     /* The symbol's name is already allocated along
18334                        with this objfile, so we don't need to
18335                        duplicate it for the type.  */
18336                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
18337                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
18338                   }
18339               }
18340           }
18341           break;
18342         case DW_TAG_typedef:
18343           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18344           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
18345           list_to_add = cu->list_in_scope;
18346           break;
18347         case DW_TAG_base_type:
18348         case DW_TAG_subrange_type:
18349           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18350           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
18351           list_to_add = cu->list_in_scope;
18352           break;
18353         case DW_TAG_enumerator:
18354           attr = dwarf2_attr (die, DW_AT_const_value, cu);
18355           if (attr)
18356             {
18357               dwarf2_const_value (attr, sym, cu);
18358             }
18359           {
18360             /* NOTE: carlton/2003-11-10: See comment above in the
18361                DW_TAG_class_type, etc. block.  */
18362
18363             list_to_add = (cu->list_in_scope == &file_symbols
18364                            && (cu->language == language_cplus
18365                                || cu->language == language_java)
18366                            ? &global_symbols : cu->list_in_scope);
18367           }
18368           break;
18369         case DW_TAG_imported_declaration:
18370         case DW_TAG_namespace:
18371           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18372           list_to_add = &global_symbols;
18373           break;
18374         case DW_TAG_module:
18375           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18376           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
18377           list_to_add = &global_symbols;
18378           break;
18379         case DW_TAG_common_block:
18380           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
18381           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
18382           add_symbol_to_list (sym, cu->list_in_scope);
18383           break;
18384         default:
18385           /* Not a tag we recognize.  Hopefully we aren't processing
18386              trash data, but since we must specifically ignore things
18387              we don't recognize, there is nothing else we should do at
18388              this point.  */
18389           complaint (&symfile_complaints, _("unsupported tag: '%s'"),
18390                      dwarf_tag_name (die->tag));
18391           break;
18392         }
18393
18394       if (suppress_add)
18395         {
18396           sym->hash_next = objfile->template_symbols;
18397           objfile->template_symbols = sym;
18398           list_to_add = NULL;
18399         }
18400
18401       if (list_to_add != NULL)
18402         add_symbol_to_list (sym, list_to_add);
18403
18404       /* For the benefit of old versions of GCC, check for anonymous
18405          namespaces based on the demangled name.  */
18406       if (!cu->processing_has_namespace_info
18407           && cu->language == language_cplus)
18408         cp_scan_for_anonymous_namespaces (sym, objfile);
18409     }
18410   return (sym);
18411 }
18412
18413 /* A wrapper for new_symbol_full that always allocates a new symbol.  */
18414
18415 static struct symbol *
18416 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
18417 {
18418   return new_symbol_full (die, type, cu, NULL);
18419 }
18420
18421 /* Given an attr with a DW_FORM_dataN value in host byte order,
18422    zero-extend it as appropriate for the symbol's type.  The DWARF
18423    standard (v4) is not entirely clear about the meaning of using
18424    DW_FORM_dataN for a constant with a signed type, where the type is
18425    wider than the data.  The conclusion of a discussion on the DWARF
18426    list was that this is unspecified.  We choose to always zero-extend
18427    because that is the interpretation long in use by GCC.  */
18428
18429 static gdb_byte *
18430 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
18431                          struct dwarf2_cu *cu, LONGEST *value, int bits)
18432 {
18433   struct objfile *objfile = cu->objfile;
18434   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
18435                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
18436   LONGEST l = DW_UNSND (attr);
18437
18438   if (bits < sizeof (*value) * 8)
18439     {
18440       l &= ((LONGEST) 1 << bits) - 1;
18441       *value = l;
18442     }
18443   else if (bits == sizeof (*value) * 8)
18444     *value = l;
18445   else
18446     {
18447       gdb_byte *bytes = obstack_alloc (obstack, bits / 8);
18448       store_unsigned_integer (bytes, bits / 8, byte_order, l);
18449       return bytes;
18450     }
18451
18452   return NULL;
18453 }
18454
18455 /* Read a constant value from an attribute.  Either set *VALUE, or if
18456    the value does not fit in *VALUE, set *BYTES - either already
18457    allocated on the objfile obstack, or newly allocated on OBSTACK,
18458    or, set *BATON, if we translated the constant to a location
18459    expression.  */
18460
18461 static void
18462 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
18463                          const char *name, struct obstack *obstack,
18464                          struct dwarf2_cu *cu,
18465                          LONGEST *value, const gdb_byte **bytes,
18466                          struct dwarf2_locexpr_baton **baton)
18467 {
18468   struct objfile *objfile = cu->objfile;
18469   struct comp_unit_head *cu_header = &cu->header;
18470   struct dwarf_block *blk;
18471   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
18472                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
18473
18474   *value = 0;
18475   *bytes = NULL;
18476   *baton = NULL;
18477
18478   switch (attr->form)
18479     {
18480     case DW_FORM_addr:
18481     case DW_FORM_GNU_addr_index:
18482       {
18483         gdb_byte *data;
18484
18485         if (TYPE_LENGTH (type) != cu_header->addr_size)
18486           dwarf2_const_value_length_mismatch_complaint (name,
18487                                                         cu_header->addr_size,
18488                                                         TYPE_LENGTH (type));
18489         /* Symbols of this form are reasonably rare, so we just
18490            piggyback on the existing location code rather than writing
18491            a new implementation of symbol_computed_ops.  */
18492         *baton = obstack_alloc (obstack, sizeof (struct dwarf2_locexpr_baton));
18493         (*baton)->per_cu = cu->per_cu;
18494         gdb_assert ((*baton)->per_cu);
18495
18496         (*baton)->size = 2 + cu_header->addr_size;
18497         data = obstack_alloc (obstack, (*baton)->size);
18498         (*baton)->data = data;
18499
18500         data[0] = DW_OP_addr;
18501         store_unsigned_integer (&data[1], cu_header->addr_size,
18502                                 byte_order, DW_ADDR (attr));
18503         data[cu_header->addr_size + 1] = DW_OP_stack_value;
18504       }
18505       break;
18506     case DW_FORM_string:
18507     case DW_FORM_strp:
18508     case DW_FORM_GNU_str_index:
18509     case DW_FORM_GNU_strp_alt:
18510       /* DW_STRING is already allocated on the objfile obstack, point
18511          directly to it.  */
18512       *bytes = (const gdb_byte *) DW_STRING (attr);
18513       break;
18514     case DW_FORM_block1:
18515     case DW_FORM_block2:
18516     case DW_FORM_block4:
18517     case DW_FORM_block:
18518     case DW_FORM_exprloc:
18519       blk = DW_BLOCK (attr);
18520       if (TYPE_LENGTH (type) != blk->size)
18521         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
18522                                                       TYPE_LENGTH (type));
18523       *bytes = blk->data;
18524       break;
18525
18526       /* The DW_AT_const_value attributes are supposed to carry the
18527          symbol's value "represented as it would be on the target
18528          architecture."  By the time we get here, it's already been
18529          converted to host endianness, so we just need to sign- or
18530          zero-extend it as appropriate.  */
18531     case DW_FORM_data1:
18532       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
18533       break;
18534     case DW_FORM_data2:
18535       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
18536       break;
18537     case DW_FORM_data4:
18538       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
18539       break;
18540     case DW_FORM_data8:
18541       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
18542       break;
18543
18544     case DW_FORM_sdata:
18545       *value = DW_SND (attr);
18546       break;
18547
18548     case DW_FORM_udata:
18549       *value = DW_UNSND (attr);
18550       break;
18551
18552     default:
18553       complaint (&symfile_complaints,
18554                  _("unsupported const value attribute form: '%s'"),
18555                  dwarf_form_name (attr->form));
18556       *value = 0;
18557       break;
18558     }
18559 }
18560
18561
18562 /* Copy constant value from an attribute to a symbol.  */
18563
18564 static void
18565 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
18566                     struct dwarf2_cu *cu)
18567 {
18568   struct objfile *objfile = cu->objfile;
18569   struct comp_unit_head *cu_header = &cu->header;
18570   LONGEST value;
18571   const gdb_byte *bytes;
18572   struct dwarf2_locexpr_baton *baton;
18573
18574   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
18575                            SYMBOL_PRINT_NAME (sym),
18576                            &objfile->objfile_obstack, cu,
18577                            &value, &bytes, &baton);
18578
18579   if (baton != NULL)
18580     {
18581       SYMBOL_LOCATION_BATON (sym) = baton;
18582       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
18583     }
18584   else if (bytes != NULL)
18585      {
18586       SYMBOL_VALUE_BYTES (sym) = bytes;
18587       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
18588     }
18589   else
18590     {
18591       SYMBOL_VALUE (sym) = value;
18592       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
18593     }
18594 }
18595
18596 /* Return the type of the die in question using its DW_AT_type attribute.  */
18597
18598 static struct type *
18599 die_type (struct die_info *die, struct dwarf2_cu *cu)
18600 {
18601   struct attribute *type_attr;
18602
18603   type_attr = dwarf2_attr (die, DW_AT_type, cu);
18604   if (!type_attr)
18605     {
18606       /* A missing DW_AT_type represents a void type.  */
18607       return objfile_type (cu->objfile)->builtin_void;
18608     }
18609
18610   return lookup_die_type (die, type_attr, cu);
18611 }
18612
18613 /* True iff CU's producer generates GNAT Ada auxiliary information
18614    that allows to find parallel types through that information instead
18615    of having to do expensive parallel lookups by type name.  */
18616
18617 static int
18618 need_gnat_info (struct dwarf2_cu *cu)
18619 {
18620   /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
18621      of GNAT produces this auxiliary information, without any indication
18622      that it is produced.  Part of enhancing the FSF version of GNAT
18623      to produce that information will be to put in place an indicator
18624      that we can use in order to determine whether the descriptive type
18625      info is available or not.  One suggestion that has been made is
18626      to use a new attribute, attached to the CU die.  For now, assume
18627      that the descriptive type info is not available.  */
18628   return 0;
18629 }
18630
18631 /* Return the auxiliary type of the die in question using its
18632    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
18633    attribute is not present.  */
18634
18635 static struct type *
18636 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
18637 {
18638   struct attribute *type_attr;
18639
18640   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
18641   if (!type_attr)
18642     return NULL;
18643
18644   return lookup_die_type (die, type_attr, cu);
18645 }
18646
18647 /* If DIE has a descriptive_type attribute, then set the TYPE's
18648    descriptive type accordingly.  */
18649
18650 static void
18651 set_descriptive_type (struct type *type, struct die_info *die,
18652                       struct dwarf2_cu *cu)
18653 {
18654   struct type *descriptive_type = die_descriptive_type (die, cu);
18655
18656   if (descriptive_type)
18657     {
18658       ALLOCATE_GNAT_AUX_TYPE (type);
18659       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
18660     }
18661 }
18662
18663 /* Return the containing type of the die in question using its
18664    DW_AT_containing_type attribute.  */
18665
18666 static struct type *
18667 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
18668 {
18669   struct attribute *type_attr;
18670
18671   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
18672   if (!type_attr)
18673     error (_("Dwarf Error: Problem turning containing type into gdb type "
18674              "[in module %s]"), objfile_name (cu->objfile));
18675
18676   return lookup_die_type (die, type_attr, cu);
18677 }
18678
18679 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
18680
18681 static struct type *
18682 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
18683 {
18684   struct objfile *objfile = dwarf2_per_objfile->objfile;
18685   char *message, *saved;
18686
18687   message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
18688                         objfile_name (objfile),
18689                         cu->header.offset.sect_off,
18690                         die->offset.sect_off);
18691   saved = obstack_copy0 (&objfile->objfile_obstack,
18692                          message, strlen (message));
18693   xfree (message);
18694
18695   return init_type (TYPE_CODE_ERROR, 0, 0, saved, objfile);
18696 }
18697
18698 /* Look up the type of DIE in CU using its type attribute ATTR.
18699    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
18700    DW_AT_containing_type.
18701    If there is no type substitute an error marker.  */
18702
18703 static struct type *
18704 lookup_die_type (struct die_info *die, const struct attribute *attr,
18705                  struct dwarf2_cu *cu)
18706 {
18707   struct objfile *objfile = cu->objfile;
18708   struct type *this_type;
18709
18710   gdb_assert (attr->name == DW_AT_type
18711               || attr->name == DW_AT_GNAT_descriptive_type
18712               || attr->name == DW_AT_containing_type);
18713
18714   /* First see if we have it cached.  */
18715
18716   if (attr->form == DW_FORM_GNU_ref_alt)
18717     {
18718       struct dwarf2_per_cu_data *per_cu;
18719       sect_offset offset = dwarf2_get_ref_die_offset (attr);
18720
18721       per_cu = dwarf2_find_containing_comp_unit (offset, 1, cu->objfile);
18722       this_type = get_die_type_at_offset (offset, per_cu);
18723     }
18724   else if (attr_form_is_ref (attr))
18725     {
18726       sect_offset offset = dwarf2_get_ref_die_offset (attr);
18727
18728       this_type = get_die_type_at_offset (offset, cu->per_cu);
18729     }
18730   else if (attr->form == DW_FORM_ref_sig8)
18731     {
18732       ULONGEST signature = DW_SIGNATURE (attr);
18733
18734       return get_signatured_type (die, signature, cu);
18735     }
18736   else
18737     {
18738       complaint (&symfile_complaints,
18739                  _("Dwarf Error: Bad type attribute %s in DIE"
18740                    " at 0x%x [in module %s]"),
18741                  dwarf_attr_name (attr->name), die->offset.sect_off,
18742                  objfile_name (objfile));
18743       return build_error_marker_type (cu, die);
18744     }
18745
18746   /* If not cached we need to read it in.  */
18747
18748   if (this_type == NULL)
18749     {
18750       struct die_info *type_die = NULL;
18751       struct dwarf2_cu *type_cu = cu;
18752
18753       if (attr_form_is_ref (attr))
18754         type_die = follow_die_ref (die, attr, &type_cu);
18755       if (type_die == NULL)
18756         return build_error_marker_type (cu, die);
18757       /* If we find the type now, it's probably because the type came
18758          from an inter-CU reference and the type's CU got expanded before
18759          ours.  */
18760       this_type = read_type_die (type_die, type_cu);
18761     }
18762
18763   /* If we still don't have a type use an error marker.  */
18764
18765   if (this_type == NULL)
18766     return build_error_marker_type (cu, die);
18767
18768   return this_type;
18769 }
18770
18771 /* Return the type in DIE, CU.
18772    Returns NULL for invalid types.
18773
18774    This first does a lookup in die_type_hash,
18775    and only reads the die in if necessary.
18776
18777    NOTE: This can be called when reading in partial or full symbols.  */
18778
18779 static struct type *
18780 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
18781 {
18782   struct type *this_type;
18783
18784   this_type = get_die_type (die, cu);
18785   if (this_type)
18786     return this_type;
18787
18788   return read_type_die_1 (die, cu);
18789 }
18790
18791 /* Read the type in DIE, CU.
18792    Returns NULL for invalid types.  */
18793
18794 static struct type *
18795 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
18796 {
18797   struct type *this_type = NULL;
18798
18799   switch (die->tag)
18800     {
18801     case DW_TAG_class_type:
18802     case DW_TAG_interface_type:
18803     case DW_TAG_structure_type:
18804     case DW_TAG_union_type:
18805       this_type = read_structure_type (die, cu);
18806       break;
18807     case DW_TAG_enumeration_type:
18808       this_type = read_enumeration_type (die, cu);
18809       break;
18810     case DW_TAG_subprogram:
18811     case DW_TAG_subroutine_type:
18812     case DW_TAG_inlined_subroutine:
18813       this_type = read_subroutine_type (die, cu);
18814       break;
18815     case DW_TAG_array_type:
18816       this_type = read_array_type (die, cu);
18817       break;
18818     case DW_TAG_set_type:
18819       this_type = read_set_type (die, cu);
18820       break;
18821     case DW_TAG_pointer_type:
18822       this_type = read_tag_pointer_type (die, cu);
18823       break;
18824     case DW_TAG_ptr_to_member_type:
18825       this_type = read_tag_ptr_to_member_type (die, cu);
18826       break;
18827     case DW_TAG_reference_type:
18828       this_type = read_tag_reference_type (die, cu);
18829       break;
18830     case DW_TAG_const_type:
18831       this_type = read_tag_const_type (die, cu);
18832       break;
18833     case DW_TAG_volatile_type:
18834       this_type = read_tag_volatile_type (die, cu);
18835       break;
18836     case DW_TAG_restrict_type:
18837       this_type = read_tag_restrict_type (die, cu);
18838       break;
18839     case DW_TAG_string_type:
18840       this_type = read_tag_string_type (die, cu);
18841       break;
18842     case DW_TAG_typedef:
18843       this_type = read_typedef (die, cu);
18844       break;
18845     case DW_TAG_subrange_type:
18846       this_type = read_subrange_type (die, cu);
18847       break;
18848     case DW_TAG_base_type:
18849       this_type = read_base_type (die, cu);
18850       break;
18851     case DW_TAG_unspecified_type:
18852       this_type = read_unspecified_type (die, cu);
18853       break;
18854     case DW_TAG_namespace:
18855       this_type = read_namespace_type (die, cu);
18856       break;
18857     case DW_TAG_module:
18858       this_type = read_module_type (die, cu);
18859       break;
18860     default:
18861       complaint (&symfile_complaints,
18862                  _("unexpected tag in read_type_die: '%s'"),
18863                  dwarf_tag_name (die->tag));
18864       break;
18865     }
18866
18867   return this_type;
18868 }
18869
18870 /* See if we can figure out if the class lives in a namespace.  We do
18871    this by looking for a member function; its demangled name will
18872    contain namespace info, if there is any.
18873    Return the computed name or NULL.
18874    Space for the result is allocated on the objfile's obstack.
18875    This is the full-die version of guess_partial_die_structure_name.
18876    In this case we know DIE has no useful parent.  */
18877
18878 static char *
18879 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
18880 {
18881   struct die_info *spec_die;
18882   struct dwarf2_cu *spec_cu;
18883   struct die_info *child;
18884
18885   spec_cu = cu;
18886   spec_die = die_specification (die, &spec_cu);
18887   if (spec_die != NULL)
18888     {
18889       die = spec_die;
18890       cu = spec_cu;
18891     }
18892
18893   for (child = die->child;
18894        child != NULL;
18895        child = child->sibling)
18896     {
18897       if (child->tag == DW_TAG_subprogram)
18898         {
18899           struct attribute *attr;
18900
18901           attr = dwarf2_attr (child, DW_AT_linkage_name, cu);
18902           if (attr == NULL)
18903             attr = dwarf2_attr (child, DW_AT_MIPS_linkage_name, cu);
18904           if (attr != NULL)
18905             {
18906               char *actual_name
18907                 = language_class_name_from_physname (cu->language_defn,
18908                                                      DW_STRING (attr));
18909               char *name = NULL;
18910
18911               if (actual_name != NULL)
18912                 {
18913                   const char *die_name = dwarf2_name (die, cu);
18914
18915                   if (die_name != NULL
18916                       && strcmp (die_name, actual_name) != 0)
18917                     {
18918                       /* Strip off the class name from the full name.
18919                          We want the prefix.  */
18920                       int die_name_len = strlen (die_name);
18921                       int actual_name_len = strlen (actual_name);
18922
18923                       /* Test for '::' as a sanity check.  */
18924                       if (actual_name_len > die_name_len + 2
18925                           && actual_name[actual_name_len
18926                                          - die_name_len - 1] == ':')
18927                         name =
18928                           obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
18929                                          actual_name,
18930                                          actual_name_len - die_name_len - 2);
18931                     }
18932                 }
18933               xfree (actual_name);
18934               return name;
18935             }
18936         }
18937     }
18938
18939   return NULL;
18940 }
18941
18942 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
18943    prefix part in such case.  See
18944    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
18945
18946 static char *
18947 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
18948 {
18949   struct attribute *attr;
18950   char *base;
18951
18952   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
18953       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
18954     return NULL;
18955
18956   attr = dwarf2_attr (die, DW_AT_name, cu);
18957   if (attr != NULL && DW_STRING (attr) != NULL)
18958     return NULL;
18959
18960   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
18961   if (attr == NULL)
18962     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
18963   if (attr == NULL || DW_STRING (attr) == NULL)
18964     return NULL;
18965
18966   /* dwarf2_name had to be already called.  */
18967   gdb_assert (DW_STRING_IS_CANONICAL (attr));
18968
18969   /* Strip the base name, keep any leading namespaces/classes.  */
18970   base = strrchr (DW_STRING (attr), ':');
18971   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
18972     return "";
18973
18974   return obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
18975                         DW_STRING (attr), &base[-1] - DW_STRING (attr));
18976 }
18977
18978 /* Return the name of the namespace/class that DIE is defined within,
18979    or "" if we can't tell.  The caller should not xfree the result.
18980
18981    For example, if we're within the method foo() in the following
18982    code:
18983
18984    namespace N {
18985      class C {
18986        void foo () {
18987        }
18988      };
18989    }
18990
18991    then determine_prefix on foo's die will return "N::C".  */
18992
18993 static const char *
18994 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
18995 {
18996   struct die_info *parent, *spec_die;
18997   struct dwarf2_cu *spec_cu;
18998   struct type *parent_type;
18999   char *retval;
19000
19001   if (cu->language != language_cplus && cu->language != language_java
19002       && cu->language != language_fortran)
19003     return "";
19004
19005   retval = anonymous_struct_prefix (die, cu);
19006   if (retval)
19007     return retval;
19008
19009   /* We have to be careful in the presence of DW_AT_specification.
19010      For example, with GCC 3.4, given the code
19011
19012      namespace N {
19013        void foo() {
19014          // Definition of N::foo.
19015        }
19016      }
19017
19018      then we'll have a tree of DIEs like this:
19019
19020      1: DW_TAG_compile_unit
19021        2: DW_TAG_namespace        // N
19022          3: DW_TAG_subprogram     // declaration of N::foo
19023        4: DW_TAG_subprogram       // definition of N::foo
19024             DW_AT_specification   // refers to die #3
19025
19026      Thus, when processing die #4, we have to pretend that we're in
19027      the context of its DW_AT_specification, namely the contex of die
19028      #3.  */
19029   spec_cu = cu;
19030   spec_die = die_specification (die, &spec_cu);
19031   if (spec_die == NULL)
19032     parent = die->parent;
19033   else
19034     {
19035       parent = spec_die->parent;
19036       cu = spec_cu;
19037     }
19038
19039   if (parent == NULL)
19040     return "";
19041   else if (parent->building_fullname)
19042     {
19043       const char *name;
19044       const char *parent_name;
19045
19046       /* It has been seen on RealView 2.2 built binaries,
19047          DW_TAG_template_type_param types actually _defined_ as
19048          children of the parent class:
19049
19050          enum E {};
19051          template class <class Enum> Class{};
19052          Class<enum E> class_e;
19053
19054          1: DW_TAG_class_type (Class)
19055            2: DW_TAG_enumeration_type (E)
19056              3: DW_TAG_enumerator (enum1:0)
19057              3: DW_TAG_enumerator (enum2:1)
19058              ...
19059            2: DW_TAG_template_type_param
19060               DW_AT_type  DW_FORM_ref_udata (E)
19061
19062          Besides being broken debug info, it can put GDB into an
19063          infinite loop.  Consider:
19064
19065          When we're building the full name for Class<E>, we'll start
19066          at Class, and go look over its template type parameters,
19067          finding E.  We'll then try to build the full name of E, and
19068          reach here.  We're now trying to build the full name of E,
19069          and look over the parent DIE for containing scope.  In the
19070          broken case, if we followed the parent DIE of E, we'd again
19071          find Class, and once again go look at its template type
19072          arguments, etc., etc.  Simply don't consider such parent die
19073          as source-level parent of this die (it can't be, the language
19074          doesn't allow it), and break the loop here.  */
19075       name = dwarf2_name (die, cu);
19076       parent_name = dwarf2_name (parent, cu);
19077       complaint (&symfile_complaints,
19078                  _("template param type '%s' defined within parent '%s'"),
19079                  name ? name : "<unknown>",
19080                  parent_name ? parent_name : "<unknown>");
19081       return "";
19082     }
19083   else
19084     switch (parent->tag)
19085       {
19086       case DW_TAG_namespace:
19087         parent_type = read_type_die (parent, cu);
19088         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
19089            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
19090            Work around this problem here.  */
19091         if (cu->language == language_cplus
19092             && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
19093           return "";
19094         /* We give a name to even anonymous namespaces.  */
19095         return TYPE_TAG_NAME (parent_type);
19096       case DW_TAG_class_type:
19097       case DW_TAG_interface_type:
19098       case DW_TAG_structure_type:
19099       case DW_TAG_union_type:
19100       case DW_TAG_module:
19101         parent_type = read_type_die (parent, cu);
19102         if (TYPE_TAG_NAME (parent_type) != NULL)
19103           return TYPE_TAG_NAME (parent_type);
19104         else
19105           /* An anonymous structure is only allowed non-static data
19106              members; no typedefs, no member functions, et cetera.
19107              So it does not need a prefix.  */
19108           return "";
19109       case DW_TAG_compile_unit:
19110       case DW_TAG_partial_unit:
19111         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
19112         if (cu->language == language_cplus
19113             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
19114             && die->child != NULL
19115             && (die->tag == DW_TAG_class_type
19116                 || die->tag == DW_TAG_structure_type
19117                 || die->tag == DW_TAG_union_type))
19118           {
19119             char *name = guess_full_die_structure_name (die, cu);
19120             if (name != NULL)
19121               return name;
19122           }
19123         return "";
19124       case DW_TAG_enumeration_type:
19125         parent_type = read_type_die (parent, cu);
19126         if (TYPE_DECLARED_CLASS (parent_type))
19127           {
19128             if (TYPE_TAG_NAME (parent_type) != NULL)
19129               return TYPE_TAG_NAME (parent_type);
19130             return "";
19131           }
19132         /* Fall through.  */
19133       default:
19134         return determine_prefix (parent, cu);
19135       }
19136 }
19137
19138 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
19139    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
19140    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
19141    an obconcat, otherwise allocate storage for the result.  The CU argument is
19142    used to determine the language and hence, the appropriate separator.  */
19143
19144 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
19145
19146 static char *
19147 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
19148                  int physname, struct dwarf2_cu *cu)
19149 {
19150   const char *lead = "";
19151   const char *sep;
19152
19153   if (suffix == NULL || suffix[0] == '\0'
19154       || prefix == NULL || prefix[0] == '\0')
19155     sep = "";
19156   else if (cu->language == language_java)
19157     sep = ".";
19158   else if (cu->language == language_fortran && physname)
19159     {
19160       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
19161          DW_AT_MIPS_linkage_name is preferred and used instead.  */
19162
19163       lead = "__";
19164       sep = "_MOD_";
19165     }
19166   else
19167     sep = "::";
19168
19169   if (prefix == NULL)
19170     prefix = "";
19171   if (suffix == NULL)
19172     suffix = "";
19173
19174   if (obs == NULL)
19175     {
19176       char *retval
19177         = xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1);
19178
19179       strcpy (retval, lead);
19180       strcat (retval, prefix);
19181       strcat (retval, sep);
19182       strcat (retval, suffix);
19183       return retval;
19184     }
19185   else
19186     {
19187       /* We have an obstack.  */
19188       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
19189     }
19190 }
19191
19192 /* Return sibling of die, NULL if no sibling.  */
19193
19194 static struct die_info *
19195 sibling_die (struct die_info *die)
19196 {
19197   return die->sibling;
19198 }
19199
19200 /* Get name of a die, return NULL if not found.  */
19201
19202 static const char *
19203 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
19204                           struct obstack *obstack)
19205 {
19206   if (name && cu->language == language_cplus)
19207     {
19208       char *canon_name = cp_canonicalize_string (name);
19209
19210       if (canon_name != NULL)
19211         {
19212           if (strcmp (canon_name, name) != 0)
19213             name = obstack_copy0 (obstack, canon_name, strlen (canon_name));
19214           xfree (canon_name);
19215         }
19216     }
19217
19218   return name;
19219 }
19220
19221 /* Get name of a die, return NULL if not found.  */
19222
19223 static const char *
19224 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
19225 {
19226   struct attribute *attr;
19227
19228   attr = dwarf2_attr (die, DW_AT_name, cu);
19229   if ((!attr || !DW_STRING (attr))
19230       && die->tag != DW_TAG_class_type
19231       && die->tag != DW_TAG_interface_type
19232       && die->tag != DW_TAG_structure_type
19233       && die->tag != DW_TAG_union_type)
19234     return NULL;
19235
19236   switch (die->tag)
19237     {
19238     case DW_TAG_compile_unit:
19239     case DW_TAG_partial_unit:
19240       /* Compilation units have a DW_AT_name that is a filename, not
19241          a source language identifier.  */
19242     case DW_TAG_enumeration_type:
19243     case DW_TAG_enumerator:
19244       /* These tags always have simple identifiers already; no need
19245          to canonicalize them.  */
19246       return DW_STRING (attr);
19247
19248     case DW_TAG_subprogram:
19249       /* Java constructors will all be named "<init>", so return
19250          the class name when we see this special case.  */
19251       if (cu->language == language_java
19252           && DW_STRING (attr) != NULL
19253           && strcmp (DW_STRING (attr), "<init>") == 0)
19254         {
19255           struct dwarf2_cu *spec_cu = cu;
19256           struct die_info *spec_die;
19257
19258           /* GCJ will output '<init>' for Java constructor names.
19259              For this special case, return the name of the parent class.  */
19260
19261           /* GCJ may output subprogram DIEs with AT_specification set.
19262              If so, use the name of the specified DIE.  */
19263           spec_die = die_specification (die, &spec_cu);
19264           if (spec_die != NULL)
19265             return dwarf2_name (spec_die, spec_cu);
19266
19267           do
19268             {
19269               die = die->parent;
19270               if (die->tag == DW_TAG_class_type)
19271                 return dwarf2_name (die, cu);
19272             }
19273           while (die->tag != DW_TAG_compile_unit
19274                  && die->tag != DW_TAG_partial_unit);
19275         }
19276       break;
19277
19278     case DW_TAG_class_type:
19279     case DW_TAG_interface_type:
19280     case DW_TAG_structure_type:
19281     case DW_TAG_union_type:
19282       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
19283          structures or unions.  These were of the form "._%d" in GCC 4.1,
19284          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
19285          and GCC 4.4.  We work around this problem by ignoring these.  */
19286       if (attr && DW_STRING (attr)
19287           && (strncmp (DW_STRING (attr), "._", 2) == 0
19288               || strncmp (DW_STRING (attr), "<anonymous", 10) == 0))
19289         return NULL;
19290
19291       /* GCC might emit a nameless typedef that has a linkage name.  See
19292          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
19293       if (!attr || DW_STRING (attr) == NULL)
19294         {
19295           char *demangled = NULL;
19296
19297           attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19298           if (attr == NULL)
19299             attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19300
19301           if (attr == NULL || DW_STRING (attr) == NULL)
19302             return NULL;
19303
19304           /* Avoid demangling DW_STRING (attr) the second time on a second
19305              call for the same DIE.  */
19306           if (!DW_STRING_IS_CANONICAL (attr))
19307             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
19308
19309           if (demangled)
19310             {
19311               char *base;
19312
19313               /* FIXME: we already did this for the partial symbol... */
19314               DW_STRING (attr)
19315                 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
19316                                  demangled, strlen (demangled));
19317               DW_STRING_IS_CANONICAL (attr) = 1;
19318               xfree (demangled);
19319
19320               /* Strip any leading namespaces/classes, keep only the base name.
19321                  DW_AT_name for named DIEs does not contain the prefixes.  */
19322               base = strrchr (DW_STRING (attr), ':');
19323               if (base && base > DW_STRING (attr) && base[-1] == ':')
19324                 return &base[1];
19325               else
19326                 return DW_STRING (attr);
19327             }
19328         }
19329       break;
19330
19331     default:
19332       break;
19333     }
19334
19335   if (!DW_STRING_IS_CANONICAL (attr))
19336     {
19337       DW_STRING (attr)
19338         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
19339                                     &cu->objfile->per_bfd->storage_obstack);
19340       DW_STRING_IS_CANONICAL (attr) = 1;
19341     }
19342   return DW_STRING (attr);
19343 }
19344
19345 /* Return the die that this die in an extension of, or NULL if there
19346    is none.  *EXT_CU is the CU containing DIE on input, and the CU
19347    containing the return value on output.  */
19348
19349 static struct die_info *
19350 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
19351 {
19352   struct attribute *attr;
19353
19354   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
19355   if (attr == NULL)
19356     return NULL;
19357
19358   return follow_die_ref (die, attr, ext_cu);
19359 }
19360
19361 /* Convert a DIE tag into its string name.  */
19362
19363 static const char *
19364 dwarf_tag_name (unsigned tag)
19365 {
19366   const char *name = get_DW_TAG_name (tag);
19367
19368   if (name == NULL)
19369     return "DW_TAG_<unknown>";
19370
19371   return name;
19372 }
19373
19374 /* Convert a DWARF attribute code into its string name.  */
19375
19376 static const char *
19377 dwarf_attr_name (unsigned attr)
19378 {
19379   const char *name;
19380
19381 #ifdef MIPS /* collides with DW_AT_HP_block_index */
19382   if (attr == DW_AT_MIPS_fde)
19383     return "DW_AT_MIPS_fde";
19384 #else
19385   if (attr == DW_AT_HP_block_index)
19386     return "DW_AT_HP_block_index";
19387 #endif
19388
19389   name = get_DW_AT_name (attr);
19390
19391   if (name == NULL)
19392     return "DW_AT_<unknown>";
19393
19394   return name;
19395 }
19396
19397 /* Convert a DWARF value form code into its string name.  */
19398
19399 static const char *
19400 dwarf_form_name (unsigned form)
19401 {
19402   const char *name = get_DW_FORM_name (form);
19403
19404   if (name == NULL)
19405     return "DW_FORM_<unknown>";
19406
19407   return name;
19408 }
19409
19410 static char *
19411 dwarf_bool_name (unsigned mybool)
19412 {
19413   if (mybool)
19414     return "TRUE";
19415   else
19416     return "FALSE";
19417 }
19418
19419 /* Convert a DWARF type code into its string name.  */
19420
19421 static const char *
19422 dwarf_type_encoding_name (unsigned enc)
19423 {
19424   const char *name = get_DW_ATE_name (enc);
19425
19426   if (name == NULL)
19427     return "DW_ATE_<unknown>";
19428
19429   return name;
19430 }
19431
19432 static void
19433 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
19434 {
19435   unsigned int i;
19436
19437   print_spaces (indent, f);
19438   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
19439            dwarf_tag_name (die->tag), die->abbrev, die->offset.sect_off);
19440
19441   if (die->parent != NULL)
19442     {
19443       print_spaces (indent, f);
19444       fprintf_unfiltered (f, "  parent at offset: 0x%x\n",
19445                           die->parent->offset.sect_off);
19446     }
19447
19448   print_spaces (indent, f);
19449   fprintf_unfiltered (f, "  has children: %s\n",
19450            dwarf_bool_name (die->child != NULL));
19451
19452   print_spaces (indent, f);
19453   fprintf_unfiltered (f, "  attributes:\n");
19454
19455   for (i = 0; i < die->num_attrs; ++i)
19456     {
19457       print_spaces (indent, f);
19458       fprintf_unfiltered (f, "    %s (%s) ",
19459                dwarf_attr_name (die->attrs[i].name),
19460                dwarf_form_name (die->attrs[i].form));
19461
19462       switch (die->attrs[i].form)
19463         {
19464         case DW_FORM_addr:
19465         case DW_FORM_GNU_addr_index:
19466           fprintf_unfiltered (f, "address: ");
19467           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
19468           break;
19469         case DW_FORM_block2:
19470         case DW_FORM_block4:
19471         case DW_FORM_block:
19472         case DW_FORM_block1:
19473           fprintf_unfiltered (f, "block: size %s",
19474                               pulongest (DW_BLOCK (&die->attrs[i])->size));
19475           break;
19476         case DW_FORM_exprloc:
19477           fprintf_unfiltered (f, "expression: size %s",
19478                               pulongest (DW_BLOCK (&die->attrs[i])->size));
19479           break;
19480         case DW_FORM_ref_addr:
19481           fprintf_unfiltered (f, "ref address: ");
19482           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19483           break;
19484         case DW_FORM_GNU_ref_alt:
19485           fprintf_unfiltered (f, "alt ref address: ");
19486           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19487           break;
19488         case DW_FORM_ref1:
19489         case DW_FORM_ref2:
19490         case DW_FORM_ref4:
19491         case DW_FORM_ref8:
19492         case DW_FORM_ref_udata:
19493           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
19494                               (long) (DW_UNSND (&die->attrs[i])));
19495           break;
19496         case DW_FORM_data1:
19497         case DW_FORM_data2:
19498         case DW_FORM_data4:
19499         case DW_FORM_data8:
19500         case DW_FORM_udata:
19501         case DW_FORM_sdata:
19502           fprintf_unfiltered (f, "constant: %s",
19503                               pulongest (DW_UNSND (&die->attrs[i])));
19504           break;
19505         case DW_FORM_sec_offset:
19506           fprintf_unfiltered (f, "section offset: %s",
19507                               pulongest (DW_UNSND (&die->attrs[i])));
19508           break;
19509         case DW_FORM_ref_sig8:
19510           fprintf_unfiltered (f, "signature: %s",
19511                               hex_string (DW_SIGNATURE (&die->attrs[i])));
19512           break;
19513         case DW_FORM_string:
19514         case DW_FORM_strp:
19515         case DW_FORM_GNU_str_index:
19516         case DW_FORM_GNU_strp_alt:
19517           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
19518                    DW_STRING (&die->attrs[i])
19519                    ? DW_STRING (&die->attrs[i]) : "",
19520                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
19521           break;
19522         case DW_FORM_flag:
19523           if (DW_UNSND (&die->attrs[i]))
19524             fprintf_unfiltered (f, "flag: TRUE");
19525           else
19526             fprintf_unfiltered (f, "flag: FALSE");
19527           break;
19528         case DW_FORM_flag_present:
19529           fprintf_unfiltered (f, "flag: TRUE");
19530           break;
19531         case DW_FORM_indirect:
19532           /* The reader will have reduced the indirect form to
19533              the "base form" so this form should not occur.  */
19534           fprintf_unfiltered (f, 
19535                               "unexpected attribute form: DW_FORM_indirect");
19536           break;
19537         default:
19538           fprintf_unfiltered (f, "unsupported attribute form: %d.",
19539                    die->attrs[i].form);
19540           break;
19541         }
19542       fprintf_unfiltered (f, "\n");
19543     }
19544 }
19545
19546 static void
19547 dump_die_for_error (struct die_info *die)
19548 {
19549   dump_die_shallow (gdb_stderr, 0, die);
19550 }
19551
19552 static void
19553 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
19554 {
19555   int indent = level * 4;
19556
19557   gdb_assert (die != NULL);
19558
19559   if (level >= max_level)
19560     return;
19561
19562   dump_die_shallow (f, indent, die);
19563
19564   if (die->child != NULL)
19565     {
19566       print_spaces (indent, f);
19567       fprintf_unfiltered (f, "  Children:");
19568       if (level + 1 < max_level)
19569         {
19570           fprintf_unfiltered (f, "\n");
19571           dump_die_1 (f, level + 1, max_level, die->child);
19572         }
19573       else
19574         {
19575           fprintf_unfiltered (f,
19576                               " [not printed, max nesting level reached]\n");
19577         }
19578     }
19579
19580   if (die->sibling != NULL && level > 0)
19581     {
19582       dump_die_1 (f, level, max_level, die->sibling);
19583     }
19584 }
19585
19586 /* This is called from the pdie macro in gdbinit.in.
19587    It's not static so gcc will keep a copy callable from gdb.  */
19588
19589 void
19590 dump_die (struct die_info *die, int max_level)
19591 {
19592   dump_die_1 (gdb_stdlog, 0, max_level, die);
19593 }
19594
19595 static void
19596 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
19597 {
19598   void **slot;
19599
19600   slot = htab_find_slot_with_hash (cu->die_hash, die, die->offset.sect_off,
19601                                    INSERT);
19602
19603   *slot = die;
19604 }
19605
19606 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
19607    required kind.  */
19608
19609 static sect_offset
19610 dwarf2_get_ref_die_offset (const struct attribute *attr)
19611 {
19612   sect_offset retval = { DW_UNSND (attr) };
19613
19614   if (attr_form_is_ref (attr))
19615     return retval;
19616
19617   retval.sect_off = 0;
19618   complaint (&symfile_complaints,
19619              _("unsupported die ref attribute form: '%s'"),
19620              dwarf_form_name (attr->form));
19621   return retval;
19622 }
19623
19624 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
19625  * the value held by the attribute is not constant.  */
19626
19627 static LONGEST
19628 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
19629 {
19630   if (attr->form == DW_FORM_sdata)
19631     return DW_SND (attr);
19632   else if (attr->form == DW_FORM_udata
19633            || attr->form == DW_FORM_data1
19634            || attr->form == DW_FORM_data2
19635            || attr->form == DW_FORM_data4
19636            || attr->form == DW_FORM_data8)
19637     return DW_UNSND (attr);
19638   else
19639     {
19640       complaint (&symfile_complaints,
19641                  _("Attribute value is not a constant (%s)"),
19642                  dwarf_form_name (attr->form));
19643       return default_value;
19644     }
19645 }
19646
19647 /* Follow reference or signature attribute ATTR of SRC_DIE.
19648    On entry *REF_CU is the CU of SRC_DIE.
19649    On exit *REF_CU is the CU of the result.  */
19650
19651 static struct die_info *
19652 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
19653                        struct dwarf2_cu **ref_cu)
19654 {
19655   struct die_info *die;
19656
19657   if (attr_form_is_ref (attr))
19658     die = follow_die_ref (src_die, attr, ref_cu);
19659   else if (attr->form == DW_FORM_ref_sig8)
19660     die = follow_die_sig (src_die, attr, ref_cu);
19661   else
19662     {
19663       dump_die_for_error (src_die);
19664       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
19665              objfile_name ((*ref_cu)->objfile));
19666     }
19667
19668   return die;
19669 }
19670
19671 /* Follow reference OFFSET.
19672    On entry *REF_CU is the CU of the source die referencing OFFSET.
19673    On exit *REF_CU is the CU of the result.
19674    Returns NULL if OFFSET is invalid.  */
19675
19676 static struct die_info *
19677 follow_die_offset (sect_offset offset, int offset_in_dwz,
19678                    struct dwarf2_cu **ref_cu)
19679 {
19680   struct die_info temp_die;
19681   struct dwarf2_cu *target_cu, *cu = *ref_cu;
19682
19683   gdb_assert (cu->per_cu != NULL);
19684
19685   target_cu = cu;
19686
19687   if (cu->per_cu->is_debug_types)
19688     {
19689       /* .debug_types CUs cannot reference anything outside their CU.
19690          If they need to, they have to reference a signatured type via
19691          DW_FORM_ref_sig8.  */
19692       if (! offset_in_cu_p (&cu->header, offset))
19693         return NULL;
19694     }
19695   else if (offset_in_dwz != cu->per_cu->is_dwz
19696            || ! offset_in_cu_p (&cu->header, offset))
19697     {
19698       struct dwarf2_per_cu_data *per_cu;
19699
19700       per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
19701                                                  cu->objfile);
19702
19703       /* If necessary, add it to the queue and load its DIEs.  */
19704       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
19705         load_full_comp_unit (per_cu, cu->language);
19706
19707       target_cu = per_cu->cu;
19708     }
19709   else if (cu->dies == NULL)
19710     {
19711       /* We're loading full DIEs during partial symbol reading.  */
19712       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
19713       load_full_comp_unit (cu->per_cu, language_minimal);
19714     }
19715
19716   *ref_cu = target_cu;
19717   temp_die.offset = offset;
19718   return htab_find_with_hash (target_cu->die_hash, &temp_die, offset.sect_off);
19719 }
19720
19721 /* Follow reference attribute ATTR of SRC_DIE.
19722    On entry *REF_CU is the CU of SRC_DIE.
19723    On exit *REF_CU is the CU of the result.  */
19724
19725 static struct die_info *
19726 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
19727                 struct dwarf2_cu **ref_cu)
19728 {
19729   sect_offset offset = dwarf2_get_ref_die_offset (attr);
19730   struct dwarf2_cu *cu = *ref_cu;
19731   struct die_info *die;
19732
19733   die = follow_die_offset (offset,
19734                            (attr->form == DW_FORM_GNU_ref_alt
19735                             || cu->per_cu->is_dwz),
19736                            ref_cu);
19737   if (!die)
19738     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
19739            "at 0x%x [in module %s]"),
19740            offset.sect_off, src_die->offset.sect_off,
19741            objfile_name (cu->objfile));
19742
19743   return die;
19744 }
19745
19746 /* Return DWARF block referenced by DW_AT_location of DIE at OFFSET at PER_CU.
19747    Returned value is intended for DW_OP_call*.  Returned
19748    dwarf2_locexpr_baton->data has lifetime of PER_CU->OBJFILE.  */
19749
19750 struct dwarf2_locexpr_baton
19751 dwarf2_fetch_die_loc_sect_off (sect_offset offset,
19752                                struct dwarf2_per_cu_data *per_cu,
19753                                CORE_ADDR (*get_frame_pc) (void *baton),
19754                                void *baton)
19755 {
19756   struct dwarf2_cu *cu;
19757   struct die_info *die;
19758   struct attribute *attr;
19759   struct dwarf2_locexpr_baton retval;
19760
19761   dw2_setup (per_cu->objfile);
19762
19763   if (per_cu->cu == NULL)
19764     load_cu (per_cu);
19765   cu = per_cu->cu;
19766
19767   die = follow_die_offset (offset, per_cu->is_dwz, &cu);
19768   if (!die)
19769     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
19770            offset.sect_off, objfile_name (per_cu->objfile));
19771
19772   attr = dwarf2_attr (die, DW_AT_location, cu);
19773   if (!attr)
19774     {
19775       /* DWARF: "If there is no such attribute, then there is no effect.".
19776          DATA is ignored if SIZE is 0.  */
19777
19778       retval.data = NULL;
19779       retval.size = 0;
19780     }
19781   else if (attr_form_is_section_offset (attr))
19782     {
19783       struct dwarf2_loclist_baton loclist_baton;
19784       CORE_ADDR pc = (*get_frame_pc) (baton);
19785       size_t size;
19786
19787       fill_in_loclist_baton (cu, &loclist_baton, attr);
19788
19789       retval.data = dwarf2_find_location_expression (&loclist_baton,
19790                                                      &size, pc);
19791       retval.size = size;
19792     }
19793   else
19794     {
19795       if (!attr_form_is_block (attr))
19796         error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
19797                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
19798                offset.sect_off, objfile_name (per_cu->objfile));
19799
19800       retval.data = DW_BLOCK (attr)->data;
19801       retval.size = DW_BLOCK (attr)->size;
19802     }
19803   retval.per_cu = cu->per_cu;
19804
19805   age_cached_comp_units ();
19806
19807   return retval;
19808 }
19809
19810 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
19811    offset.  */
19812
19813 struct dwarf2_locexpr_baton
19814 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
19815                              struct dwarf2_per_cu_data *per_cu,
19816                              CORE_ADDR (*get_frame_pc) (void *baton),
19817                              void *baton)
19818 {
19819   sect_offset offset = { per_cu->offset.sect_off + offset_in_cu.cu_off };
19820
19821   return dwarf2_fetch_die_loc_sect_off (offset, per_cu, get_frame_pc, baton);
19822 }
19823
19824 /* Write a constant of a given type as target-ordered bytes into
19825    OBSTACK.  */
19826
19827 static const gdb_byte *
19828 write_constant_as_bytes (struct obstack *obstack,
19829                          enum bfd_endian byte_order,
19830                          struct type *type,
19831                          ULONGEST value,
19832                          LONGEST *len)
19833 {
19834   gdb_byte *result;
19835
19836   *len = TYPE_LENGTH (type);
19837   result = obstack_alloc (obstack, *len);
19838   store_unsigned_integer (result, *len, byte_order, value);
19839
19840   return result;
19841 }
19842
19843 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
19844    pointer to the constant bytes and set LEN to the length of the
19845    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
19846    does not have a DW_AT_const_value, return NULL.  */
19847
19848 const gdb_byte *
19849 dwarf2_fetch_constant_bytes (sect_offset offset,
19850                              struct dwarf2_per_cu_data *per_cu,
19851                              struct obstack *obstack,
19852                              LONGEST *len)
19853 {
19854   struct dwarf2_cu *cu;
19855   struct die_info *die;
19856   struct attribute *attr;
19857   const gdb_byte *result = NULL;
19858   struct type *type;
19859   LONGEST value;
19860   enum bfd_endian byte_order;
19861
19862   dw2_setup (per_cu->objfile);
19863
19864   if (per_cu->cu == NULL)
19865     load_cu (per_cu);
19866   cu = per_cu->cu;
19867
19868   die = follow_die_offset (offset, per_cu->is_dwz, &cu);
19869   if (!die)
19870     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
19871            offset.sect_off, objfile_name (per_cu->objfile));
19872
19873
19874   attr = dwarf2_attr (die, DW_AT_const_value, cu);
19875   if (attr == NULL)
19876     return NULL;
19877
19878   byte_order = (bfd_big_endian (per_cu->objfile->obfd)
19879                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
19880
19881   switch (attr->form)
19882     {
19883     case DW_FORM_addr:
19884     case DW_FORM_GNU_addr_index:
19885       {
19886         gdb_byte *tem;
19887
19888         *len = cu->header.addr_size;
19889         tem = obstack_alloc (obstack, *len);
19890         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
19891         result = tem;
19892       }
19893       break;
19894     case DW_FORM_string:
19895     case DW_FORM_strp:
19896     case DW_FORM_GNU_str_index:
19897     case DW_FORM_GNU_strp_alt:
19898       /* DW_STRING is already allocated on the objfile obstack, point
19899          directly to it.  */
19900       result = (const gdb_byte *) DW_STRING (attr);
19901       *len = strlen (DW_STRING (attr));
19902       break;
19903     case DW_FORM_block1:
19904     case DW_FORM_block2:
19905     case DW_FORM_block4:
19906     case DW_FORM_block:
19907     case DW_FORM_exprloc:
19908       result = DW_BLOCK (attr)->data;
19909       *len = DW_BLOCK (attr)->size;
19910       break;
19911
19912       /* The DW_AT_const_value attributes are supposed to carry the
19913          symbol's value "represented as it would be on the target
19914          architecture."  By the time we get here, it's already been
19915          converted to host endianness, so we just need to sign- or
19916          zero-extend it as appropriate.  */
19917     case DW_FORM_data1:
19918       type = die_type (die, cu);
19919       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
19920       if (result == NULL)
19921         result = write_constant_as_bytes (obstack, byte_order,
19922                                           type, value, len);
19923       break;
19924     case DW_FORM_data2:
19925       type = die_type (die, cu);
19926       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
19927       if (result == NULL)
19928         result = write_constant_as_bytes (obstack, byte_order,
19929                                           type, value, len);
19930       break;
19931     case DW_FORM_data4:
19932       type = die_type (die, cu);
19933       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
19934       if (result == NULL)
19935         result = write_constant_as_bytes (obstack, byte_order,
19936                                           type, value, len);
19937       break;
19938     case DW_FORM_data8:
19939       type = die_type (die, cu);
19940       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
19941       if (result == NULL)
19942         result = write_constant_as_bytes (obstack, byte_order,
19943                                           type, value, len);
19944       break;
19945
19946     case DW_FORM_sdata:
19947       type = die_type (die, cu);
19948       result = write_constant_as_bytes (obstack, byte_order,
19949                                         type, DW_SND (attr), len);
19950       break;
19951
19952     case DW_FORM_udata:
19953       type = die_type (die, cu);
19954       result = write_constant_as_bytes (obstack, byte_order,
19955                                         type, DW_UNSND (attr), len);
19956       break;
19957
19958     default:
19959       complaint (&symfile_complaints,
19960                  _("unsupported const value attribute form: '%s'"),
19961                  dwarf_form_name (attr->form));
19962       break;
19963     }
19964
19965   return result;
19966 }
19967
19968 /* Return the type of the DIE at DIE_OFFSET in the CU named by
19969    PER_CU.  */
19970
19971 struct type *
19972 dwarf2_get_die_type (cu_offset die_offset,
19973                      struct dwarf2_per_cu_data *per_cu)
19974 {
19975   sect_offset die_offset_sect;
19976
19977   dw2_setup (per_cu->objfile);
19978
19979   die_offset_sect.sect_off = per_cu->offset.sect_off + die_offset.cu_off;
19980   return get_die_type_at_offset (die_offset_sect, per_cu);
19981 }
19982
19983 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
19984    On entry *REF_CU is the CU of SRC_DIE.
19985    On exit *REF_CU is the CU of the result.
19986    Returns NULL if the referenced DIE isn't found.  */
19987
19988 static struct die_info *
19989 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
19990                   struct dwarf2_cu **ref_cu)
19991 {
19992   struct objfile *objfile = (*ref_cu)->objfile;
19993   struct die_info temp_die;
19994   struct dwarf2_cu *sig_cu;
19995   struct die_info *die;
19996
19997   /* While it might be nice to assert sig_type->type == NULL here,
19998      we can get here for DW_AT_imported_declaration where we need
19999      the DIE not the type.  */
20000
20001   /* If necessary, add it to the queue and load its DIEs.  */
20002
20003   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
20004     read_signatured_type (sig_type);
20005
20006   sig_cu = sig_type->per_cu.cu;
20007   gdb_assert (sig_cu != NULL);
20008   gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
20009   temp_die.offset = sig_type->type_offset_in_section;
20010   die = htab_find_with_hash (sig_cu->die_hash, &temp_die,
20011                              temp_die.offset.sect_off);
20012   if (die)
20013     {
20014       /* For .gdb_index version 7 keep track of included TUs.
20015          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
20016       if (dwarf2_per_objfile->index_table != NULL
20017           && dwarf2_per_objfile->index_table->version <= 7)
20018         {
20019           VEC_safe_push (dwarf2_per_cu_ptr,
20020                          (*ref_cu)->per_cu->imported_symtabs,
20021                          sig_cu->per_cu);
20022         }
20023
20024       *ref_cu = sig_cu;
20025       return die;
20026     }
20027
20028   return NULL;
20029 }
20030
20031 /* Follow signatured type referenced by ATTR in SRC_DIE.
20032    On entry *REF_CU is the CU of SRC_DIE.
20033    On exit *REF_CU is the CU of the result.
20034    The result is the DIE of the type.
20035    If the referenced type cannot be found an error is thrown.  */
20036
20037 static struct die_info *
20038 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
20039                 struct dwarf2_cu **ref_cu)
20040 {
20041   ULONGEST signature = DW_SIGNATURE (attr);
20042   struct signatured_type *sig_type;
20043   struct die_info *die;
20044
20045   gdb_assert (attr->form == DW_FORM_ref_sig8);
20046
20047   sig_type = lookup_signatured_type (*ref_cu, signature);
20048   /* sig_type will be NULL if the signatured type is missing from
20049      the debug info.  */
20050   if (sig_type == NULL)
20051     {
20052       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
20053                " from DIE at 0x%x [in module %s]"),
20054              hex_string (signature), src_die->offset.sect_off,
20055              objfile_name ((*ref_cu)->objfile));
20056     }
20057
20058   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
20059   if (die == NULL)
20060     {
20061       dump_die_for_error (src_die);
20062       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
20063                " from DIE at 0x%x [in module %s]"),
20064              hex_string (signature), src_die->offset.sect_off,
20065              objfile_name ((*ref_cu)->objfile));
20066     }
20067
20068   return die;
20069 }
20070
20071 /* Get the type specified by SIGNATURE referenced in DIE/CU,
20072    reading in and processing the type unit if necessary.  */
20073
20074 static struct type *
20075 get_signatured_type (struct die_info *die, ULONGEST signature,
20076                      struct dwarf2_cu *cu)
20077 {
20078   struct signatured_type *sig_type;
20079   struct dwarf2_cu *type_cu;
20080   struct die_info *type_die;
20081   struct type *type;
20082
20083   sig_type = lookup_signatured_type (cu, signature);
20084   /* sig_type will be NULL if the signatured type is missing from
20085      the debug info.  */
20086   if (sig_type == NULL)
20087     {
20088       complaint (&symfile_complaints,
20089                  _("Dwarf Error: Cannot find signatured DIE %s referenced"
20090                    " from DIE at 0x%x [in module %s]"),
20091                  hex_string (signature), die->offset.sect_off,
20092                  objfile_name (dwarf2_per_objfile->objfile));
20093       return build_error_marker_type (cu, die);
20094     }
20095
20096   /* If we already know the type we're done.  */
20097   if (sig_type->type != NULL)
20098     return sig_type->type;
20099
20100   type_cu = cu;
20101   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
20102   if (type_die != NULL)
20103     {
20104       /* N.B. We need to call get_die_type to ensure only one type for this DIE
20105          is created.  This is important, for example, because for c++ classes
20106          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
20107       type = read_type_die (type_die, type_cu);
20108       if (type == NULL)
20109         {
20110           complaint (&symfile_complaints,
20111                      _("Dwarf Error: Cannot build signatured type %s"
20112                        " referenced from DIE at 0x%x [in module %s]"),
20113                      hex_string (signature), die->offset.sect_off,
20114                      objfile_name (dwarf2_per_objfile->objfile));
20115           type = build_error_marker_type (cu, die);
20116         }
20117     }
20118   else
20119     {
20120       complaint (&symfile_complaints,
20121                  _("Dwarf Error: Problem reading signatured DIE %s referenced"
20122                    " from DIE at 0x%x [in module %s]"),
20123                  hex_string (signature), die->offset.sect_off,
20124                  objfile_name (dwarf2_per_objfile->objfile));
20125       type = build_error_marker_type (cu, die);
20126     }
20127   sig_type->type = type;
20128
20129   return type;
20130 }
20131
20132 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
20133    reading in and processing the type unit if necessary.  */
20134
20135 static struct type *
20136 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
20137                           struct dwarf2_cu *cu) /* ARI: editCase function */
20138 {
20139   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
20140   if (attr_form_is_ref (attr))
20141     {
20142       struct dwarf2_cu *type_cu = cu;
20143       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
20144
20145       return read_type_die (type_die, type_cu);
20146     }
20147   else if (attr->form == DW_FORM_ref_sig8)
20148     {
20149       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
20150     }
20151   else
20152     {
20153       complaint (&symfile_complaints,
20154                  _("Dwarf Error: DW_AT_signature has bad form %s in DIE"
20155                    " at 0x%x [in module %s]"),
20156                  dwarf_form_name (attr->form), die->offset.sect_off,
20157                  objfile_name (dwarf2_per_objfile->objfile));
20158       return build_error_marker_type (cu, die);
20159     }
20160 }
20161
20162 /* Load the DIEs associated with type unit PER_CU into memory.  */
20163
20164 static void
20165 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
20166 {
20167   struct signatured_type *sig_type;
20168
20169   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
20170   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
20171
20172   /* We have the per_cu, but we need the signatured_type.
20173      Fortunately this is an easy translation.  */
20174   gdb_assert (per_cu->is_debug_types);
20175   sig_type = (struct signatured_type *) per_cu;
20176
20177   gdb_assert (per_cu->cu == NULL);
20178
20179   read_signatured_type (sig_type);
20180
20181   gdb_assert (per_cu->cu != NULL);
20182 }
20183
20184 /* die_reader_func for read_signatured_type.
20185    This is identical to load_full_comp_unit_reader,
20186    but is kept separate for now.  */
20187
20188 static void
20189 read_signatured_type_reader (const struct die_reader_specs *reader,
20190                              const gdb_byte *info_ptr,
20191                              struct die_info *comp_unit_die,
20192                              int has_children,
20193                              void *data)
20194 {
20195   struct dwarf2_cu *cu = reader->cu;
20196
20197   gdb_assert (cu->die_hash == NULL);
20198   cu->die_hash =
20199     htab_create_alloc_ex (cu->header.length / 12,
20200                           die_hash,
20201                           die_eq,
20202                           NULL,
20203                           &cu->comp_unit_obstack,
20204                           hashtab_obstack_allocate,
20205                           dummy_obstack_deallocate);
20206
20207   if (has_children)
20208     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
20209                                                   &info_ptr, comp_unit_die);
20210   cu->dies = comp_unit_die;
20211   /* comp_unit_die is not stored in die_hash, no need.  */
20212
20213   /* We try not to read any attributes in this function, because not
20214      all CUs needed for references have been loaded yet, and symbol
20215      table processing isn't initialized.  But we have to set the CU language,
20216      or we won't be able to build types correctly.
20217      Similarly, if we do not read the producer, we can not apply
20218      producer-specific interpretation.  */
20219   prepare_one_comp_unit (cu, cu->dies, language_minimal);
20220 }
20221
20222 /* Read in a signatured type and build its CU and DIEs.
20223    If the type is a stub for the real type in a DWO file,
20224    read in the real type from the DWO file as well.  */
20225
20226 static void
20227 read_signatured_type (struct signatured_type *sig_type)
20228 {
20229   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
20230
20231   gdb_assert (per_cu->is_debug_types);
20232   gdb_assert (per_cu->cu == NULL);
20233
20234   init_cutu_and_read_dies (per_cu, NULL, 0, 1,
20235                            read_signatured_type_reader, NULL);
20236   sig_type->per_cu.tu_read = 1;
20237 }
20238
20239 /* Decode simple location descriptions.
20240    Given a pointer to a dwarf block that defines a location, compute
20241    the location and return the value.
20242
20243    NOTE drow/2003-11-18: This function is called in two situations
20244    now: for the address of static or global variables (partial symbols
20245    only) and for offsets into structures which are expected to be
20246    (more or less) constant.  The partial symbol case should go away,
20247    and only the constant case should remain.  That will let this
20248    function complain more accurately.  A few special modes are allowed
20249    without complaint for global variables (for instance, global
20250    register values and thread-local values).
20251
20252    A location description containing no operations indicates that the
20253    object is optimized out.  The return value is 0 for that case.
20254    FIXME drow/2003-11-16: No callers check for this case any more; soon all
20255    callers will only want a very basic result and this can become a
20256    complaint.
20257
20258    Note that stack[0] is unused except as a default error return.  */
20259
20260 static CORE_ADDR
20261 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
20262 {
20263   struct objfile *objfile = cu->objfile;
20264   size_t i;
20265   size_t size = blk->size;
20266   const gdb_byte *data = blk->data;
20267   CORE_ADDR stack[64];
20268   int stacki;
20269   unsigned int bytes_read, unsnd;
20270   gdb_byte op;
20271
20272   i = 0;
20273   stacki = 0;
20274   stack[stacki] = 0;
20275   stack[++stacki] = 0;
20276
20277   while (i < size)
20278     {
20279       op = data[i++];
20280       switch (op)
20281         {
20282         case DW_OP_lit0:
20283         case DW_OP_lit1:
20284         case DW_OP_lit2:
20285         case DW_OP_lit3:
20286         case DW_OP_lit4:
20287         case DW_OP_lit5:
20288         case DW_OP_lit6:
20289         case DW_OP_lit7:
20290         case DW_OP_lit8:
20291         case DW_OP_lit9:
20292         case DW_OP_lit10:
20293         case DW_OP_lit11:
20294         case DW_OP_lit12:
20295         case DW_OP_lit13:
20296         case DW_OP_lit14:
20297         case DW_OP_lit15:
20298         case DW_OP_lit16:
20299         case DW_OP_lit17:
20300         case DW_OP_lit18:
20301         case DW_OP_lit19:
20302         case DW_OP_lit20:
20303         case DW_OP_lit21:
20304         case DW_OP_lit22:
20305         case DW_OP_lit23:
20306         case DW_OP_lit24:
20307         case DW_OP_lit25:
20308         case DW_OP_lit26:
20309         case DW_OP_lit27:
20310         case DW_OP_lit28:
20311         case DW_OP_lit29:
20312         case DW_OP_lit30:
20313         case DW_OP_lit31:
20314           stack[++stacki] = op - DW_OP_lit0;
20315           break;
20316
20317         case DW_OP_reg0:
20318         case DW_OP_reg1:
20319         case DW_OP_reg2:
20320         case DW_OP_reg3:
20321         case DW_OP_reg4:
20322         case DW_OP_reg5:
20323         case DW_OP_reg6:
20324         case DW_OP_reg7:
20325         case DW_OP_reg8:
20326         case DW_OP_reg9:
20327         case DW_OP_reg10:
20328         case DW_OP_reg11:
20329         case DW_OP_reg12:
20330         case DW_OP_reg13:
20331         case DW_OP_reg14:
20332         case DW_OP_reg15:
20333         case DW_OP_reg16:
20334         case DW_OP_reg17:
20335         case DW_OP_reg18:
20336         case DW_OP_reg19:
20337         case DW_OP_reg20:
20338         case DW_OP_reg21:
20339         case DW_OP_reg22:
20340         case DW_OP_reg23:
20341         case DW_OP_reg24:
20342         case DW_OP_reg25:
20343         case DW_OP_reg26:
20344         case DW_OP_reg27:
20345         case DW_OP_reg28:
20346         case DW_OP_reg29:
20347         case DW_OP_reg30:
20348         case DW_OP_reg31:
20349           stack[++stacki] = op - DW_OP_reg0;
20350           if (i < size)
20351             dwarf2_complex_location_expr_complaint ();
20352           break;
20353
20354         case DW_OP_regx:
20355           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
20356           i += bytes_read;
20357           stack[++stacki] = unsnd;
20358           if (i < size)
20359             dwarf2_complex_location_expr_complaint ();
20360           break;
20361
20362         case DW_OP_addr:
20363           stack[++stacki] = read_address (objfile->obfd, &data[i],
20364                                           cu, &bytes_read);
20365           i += bytes_read;
20366           break;
20367
20368         case DW_OP_const1u:
20369           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
20370           i += 1;
20371           break;
20372
20373         case DW_OP_const1s:
20374           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
20375           i += 1;
20376           break;
20377
20378         case DW_OP_const2u:
20379           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
20380           i += 2;
20381           break;
20382
20383         case DW_OP_const2s:
20384           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
20385           i += 2;
20386           break;
20387
20388         case DW_OP_const4u:
20389           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
20390           i += 4;
20391           break;
20392
20393         case DW_OP_const4s:
20394           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
20395           i += 4;
20396           break;
20397
20398         case DW_OP_const8u:
20399           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
20400           i += 8;
20401           break;
20402
20403         case DW_OP_constu:
20404           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
20405                                                   &bytes_read);
20406           i += bytes_read;
20407           break;
20408
20409         case DW_OP_consts:
20410           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
20411           i += bytes_read;
20412           break;
20413
20414         case DW_OP_dup:
20415           stack[stacki + 1] = stack[stacki];
20416           stacki++;
20417           break;
20418
20419         case DW_OP_plus:
20420           stack[stacki - 1] += stack[stacki];
20421           stacki--;
20422           break;
20423
20424         case DW_OP_plus_uconst:
20425           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
20426                                                  &bytes_read);
20427           i += bytes_read;
20428           break;
20429
20430         case DW_OP_minus:
20431           stack[stacki - 1] -= stack[stacki];
20432           stacki--;
20433           break;
20434
20435         case DW_OP_deref:
20436           /* If we're not the last op, then we definitely can't encode
20437              this using GDB's address_class enum.  This is valid for partial
20438              global symbols, although the variable's address will be bogus
20439              in the psymtab.  */
20440           if (i < size)
20441             dwarf2_complex_location_expr_complaint ();
20442           break;
20443
20444         case DW_OP_GNU_push_tls_address:
20445           /* The top of the stack has the offset from the beginning
20446              of the thread control block at which the variable is located.  */
20447           /* Nothing should follow this operator, so the top of stack would
20448              be returned.  */
20449           /* This is valid for partial global symbols, but the variable's
20450              address will be bogus in the psymtab.  Make it always at least
20451              non-zero to not look as a variable garbage collected by linker
20452              which have DW_OP_addr 0.  */
20453           if (i < size)
20454             dwarf2_complex_location_expr_complaint ();
20455           stack[stacki]++;
20456           break;
20457
20458         case DW_OP_GNU_uninit:
20459           break;
20460
20461         case DW_OP_GNU_addr_index:
20462         case DW_OP_GNU_const_index:
20463           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
20464                                                          &bytes_read);
20465           i += bytes_read;
20466           break;
20467
20468         default:
20469           {
20470             const char *name = get_DW_OP_name (op);
20471
20472             if (name)
20473               complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
20474                          name);
20475             else
20476               complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
20477                          op);
20478           }
20479
20480           return (stack[stacki]);
20481         }
20482
20483       /* Enforce maximum stack depth of SIZE-1 to avoid writing
20484          outside of the allocated space.  Also enforce minimum>0.  */
20485       if (stacki >= ARRAY_SIZE (stack) - 1)
20486         {
20487           complaint (&symfile_complaints,
20488                      _("location description stack overflow"));
20489           return 0;
20490         }
20491
20492       if (stacki <= 0)
20493         {
20494           complaint (&symfile_complaints,
20495                      _("location description stack underflow"));
20496           return 0;
20497         }
20498     }
20499   return (stack[stacki]);
20500 }
20501
20502 /* memory allocation interface */
20503
20504 static struct dwarf_block *
20505 dwarf_alloc_block (struct dwarf2_cu *cu)
20506 {
20507   struct dwarf_block *blk;
20508
20509   blk = (struct dwarf_block *)
20510     obstack_alloc (&cu->comp_unit_obstack, sizeof (struct dwarf_block));
20511   return (blk);
20512 }
20513
20514 static struct die_info *
20515 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
20516 {
20517   struct die_info *die;
20518   size_t size = sizeof (struct die_info);
20519
20520   if (num_attrs > 1)
20521     size += (num_attrs - 1) * sizeof (struct attribute);
20522
20523   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
20524   memset (die, 0, sizeof (struct die_info));
20525   return (die);
20526 }
20527
20528 \f
20529 /* Macro support.  */
20530
20531 /* Return file name relative to the compilation directory of file number I in
20532    *LH's file name table.  The result is allocated using xmalloc; the caller is
20533    responsible for freeing it.  */
20534
20535 static char *
20536 file_file_name (int file, struct line_header *lh)
20537 {
20538   /* Is the file number a valid index into the line header's file name
20539      table?  Remember that file numbers start with one, not zero.  */
20540   if (1 <= file && file <= lh->num_file_names)
20541     {
20542       struct file_entry *fe = &lh->file_names[file - 1];
20543
20544       if (IS_ABSOLUTE_PATH (fe->name) || fe->dir_index == 0)
20545         return xstrdup (fe->name);
20546       return concat (lh->include_dirs[fe->dir_index - 1], SLASH_STRING,
20547                      fe->name, NULL);
20548     }
20549   else
20550     {
20551       /* The compiler produced a bogus file number.  We can at least
20552          record the macro definitions made in the file, even if we
20553          won't be able to find the file by name.  */
20554       char fake_name[80];
20555
20556       xsnprintf (fake_name, sizeof (fake_name),
20557                  "<bad macro file number %d>", file);
20558
20559       complaint (&symfile_complaints,
20560                  _("bad file number in macro information (%d)"),
20561                  file);
20562
20563       return xstrdup (fake_name);
20564     }
20565 }
20566
20567 /* Return the full name of file number I in *LH's file name table.
20568    Use COMP_DIR as the name of the current directory of the
20569    compilation.  The result is allocated using xmalloc; the caller is
20570    responsible for freeing it.  */
20571 static char *
20572 file_full_name (int file, struct line_header *lh, const char *comp_dir)
20573 {
20574   /* Is the file number a valid index into the line header's file name
20575      table?  Remember that file numbers start with one, not zero.  */
20576   if (1 <= file && file <= lh->num_file_names)
20577     {
20578       char *relative = file_file_name (file, lh);
20579
20580       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
20581         return relative;
20582       return reconcat (relative, comp_dir, SLASH_STRING, relative, NULL);
20583     }
20584   else
20585     return file_file_name (file, lh);
20586 }
20587
20588
20589 static struct macro_source_file *
20590 macro_start_file (int file, int line,
20591                   struct macro_source_file *current_file,
20592                   struct line_header *lh)
20593 {
20594   /* File name relative to the compilation directory of this source file.  */
20595   char *file_name = file_file_name (file, lh);
20596
20597   if (! current_file)
20598     {
20599       /* Note: We don't create a macro table for this compilation unit
20600          at all until we actually get a filename.  */
20601       struct macro_table *macro_table = get_macro_table ();
20602
20603       /* If we have no current file, then this must be the start_file
20604          directive for the compilation unit's main source file.  */
20605       current_file = macro_set_main (macro_table, file_name);
20606       macro_define_special (macro_table);
20607     }
20608   else
20609     current_file = macro_include (current_file, line, file_name);
20610
20611   xfree (file_name);
20612
20613   return current_file;
20614 }
20615
20616
20617 /* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
20618    followed by a null byte.  */
20619 static char *
20620 copy_string (const char *buf, int len)
20621 {
20622   char *s = xmalloc (len + 1);
20623
20624   memcpy (s, buf, len);
20625   s[len] = '\0';
20626   return s;
20627 }
20628
20629
20630 static const char *
20631 consume_improper_spaces (const char *p, const char *body)
20632 {
20633   if (*p == ' ')
20634     {
20635       complaint (&symfile_complaints,
20636                  _("macro definition contains spaces "
20637                    "in formal argument list:\n`%s'"),
20638                  body);
20639
20640       while (*p == ' ')
20641         p++;
20642     }
20643
20644   return p;
20645 }
20646
20647
20648 static void
20649 parse_macro_definition (struct macro_source_file *file, int line,
20650                         const char *body)
20651 {
20652   const char *p;
20653
20654   /* The body string takes one of two forms.  For object-like macro
20655      definitions, it should be:
20656
20657         <macro name> " " <definition>
20658
20659      For function-like macro definitions, it should be:
20660
20661         <macro name> "() " <definition>
20662      or
20663         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
20664
20665      Spaces may appear only where explicitly indicated, and in the
20666      <definition>.
20667
20668      The Dwarf 2 spec says that an object-like macro's name is always
20669      followed by a space, but versions of GCC around March 2002 omit
20670      the space when the macro's definition is the empty string.
20671
20672      The Dwarf 2 spec says that there should be no spaces between the
20673      formal arguments in a function-like macro's formal argument list,
20674      but versions of GCC around March 2002 include spaces after the
20675      commas.  */
20676
20677
20678   /* Find the extent of the macro name.  The macro name is terminated
20679      by either a space or null character (for an object-like macro) or
20680      an opening paren (for a function-like macro).  */
20681   for (p = body; *p; p++)
20682     if (*p == ' ' || *p == '(')
20683       break;
20684
20685   if (*p == ' ' || *p == '\0')
20686     {
20687       /* It's an object-like macro.  */
20688       int name_len = p - body;
20689       char *name = copy_string (body, name_len);
20690       const char *replacement;
20691
20692       if (*p == ' ')
20693         replacement = body + name_len + 1;
20694       else
20695         {
20696           dwarf2_macro_malformed_definition_complaint (body);
20697           replacement = body + name_len;
20698         }
20699
20700       macro_define_object (file, line, name, replacement);
20701
20702       xfree (name);
20703     }
20704   else if (*p == '(')
20705     {
20706       /* It's a function-like macro.  */
20707       char *name = copy_string (body, p - body);
20708       int argc = 0;
20709       int argv_size = 1;
20710       char **argv = xmalloc (argv_size * sizeof (*argv));
20711
20712       p++;
20713
20714       p = consume_improper_spaces (p, body);
20715
20716       /* Parse the formal argument list.  */
20717       while (*p && *p != ')')
20718         {
20719           /* Find the extent of the current argument name.  */
20720           const char *arg_start = p;
20721
20722           while (*p && *p != ',' && *p != ')' && *p != ' ')
20723             p++;
20724
20725           if (! *p || p == arg_start)
20726             dwarf2_macro_malformed_definition_complaint (body);
20727           else
20728             {
20729               /* Make sure argv has room for the new argument.  */
20730               if (argc >= argv_size)
20731                 {
20732                   argv_size *= 2;
20733                   argv = xrealloc (argv, argv_size * sizeof (*argv));
20734                 }
20735
20736               argv[argc++] = copy_string (arg_start, p - arg_start);
20737             }
20738
20739           p = consume_improper_spaces (p, body);
20740
20741           /* Consume the comma, if present.  */
20742           if (*p == ',')
20743             {
20744               p++;
20745
20746               p = consume_improper_spaces (p, body);
20747             }
20748         }
20749
20750       if (*p == ')')
20751         {
20752           p++;
20753
20754           if (*p == ' ')
20755             /* Perfectly formed definition, no complaints.  */
20756             macro_define_function (file, line, name,
20757                                    argc, (const char **) argv,
20758                                    p + 1);
20759           else if (*p == '\0')
20760             {
20761               /* Complain, but do define it.  */
20762               dwarf2_macro_malformed_definition_complaint (body);
20763               macro_define_function (file, line, name,
20764                                      argc, (const char **) argv,
20765                                      p);
20766             }
20767           else
20768             /* Just complain.  */
20769             dwarf2_macro_malformed_definition_complaint (body);
20770         }
20771       else
20772         /* Just complain.  */
20773         dwarf2_macro_malformed_definition_complaint (body);
20774
20775       xfree (name);
20776       {
20777         int i;
20778
20779         for (i = 0; i < argc; i++)
20780           xfree (argv[i]);
20781       }
20782       xfree (argv);
20783     }
20784   else
20785     dwarf2_macro_malformed_definition_complaint (body);
20786 }
20787
20788 /* Skip some bytes from BYTES according to the form given in FORM.
20789    Returns the new pointer.  */
20790
20791 static const gdb_byte *
20792 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
20793                  enum dwarf_form form,
20794                  unsigned int offset_size,
20795                  struct dwarf2_section_info *section)
20796 {
20797   unsigned int bytes_read;
20798
20799   switch (form)
20800     {
20801     case DW_FORM_data1:
20802     case DW_FORM_flag:
20803       ++bytes;
20804       break;
20805
20806     case DW_FORM_data2:
20807       bytes += 2;
20808       break;
20809
20810     case DW_FORM_data4:
20811       bytes += 4;
20812       break;
20813
20814     case DW_FORM_data8:
20815       bytes += 8;
20816       break;
20817
20818     case DW_FORM_string:
20819       read_direct_string (abfd, bytes, &bytes_read);
20820       bytes += bytes_read;
20821       break;
20822
20823     case DW_FORM_sec_offset:
20824     case DW_FORM_strp:
20825     case DW_FORM_GNU_strp_alt:
20826       bytes += offset_size;
20827       break;
20828
20829     case DW_FORM_block:
20830       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
20831       bytes += bytes_read;
20832       break;
20833
20834     case DW_FORM_block1:
20835       bytes += 1 + read_1_byte (abfd, bytes);
20836       break;
20837     case DW_FORM_block2:
20838       bytes += 2 + read_2_bytes (abfd, bytes);
20839       break;
20840     case DW_FORM_block4:
20841       bytes += 4 + read_4_bytes (abfd, bytes);
20842       break;
20843
20844     case DW_FORM_sdata:
20845     case DW_FORM_udata:
20846     case DW_FORM_GNU_addr_index:
20847     case DW_FORM_GNU_str_index:
20848       bytes = gdb_skip_leb128 (bytes, buffer_end);
20849       if (bytes == NULL)
20850         {
20851           dwarf2_section_buffer_overflow_complaint (section);
20852           return NULL;
20853         }
20854       break;
20855
20856     default:
20857       {
20858       complain:
20859         complaint (&symfile_complaints,
20860                    _("invalid form 0x%x in `%s'"),
20861                    form, get_section_name (section));
20862         return NULL;
20863       }
20864     }
20865
20866   return bytes;
20867 }
20868
20869 /* A helper for dwarf_decode_macros that handles skipping an unknown
20870    opcode.  Returns an updated pointer to the macro data buffer; or,
20871    on error, issues a complaint and returns NULL.  */
20872
20873 static const gdb_byte *
20874 skip_unknown_opcode (unsigned int opcode,
20875                      const gdb_byte **opcode_definitions,
20876                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
20877                      bfd *abfd,
20878                      unsigned int offset_size,
20879                      struct dwarf2_section_info *section)
20880 {
20881   unsigned int bytes_read, i;
20882   unsigned long arg;
20883   const gdb_byte *defn;
20884
20885   if (opcode_definitions[opcode] == NULL)
20886     {
20887       complaint (&symfile_complaints,
20888                  _("unrecognized DW_MACFINO opcode 0x%x"),
20889                  opcode);
20890       return NULL;
20891     }
20892
20893   defn = opcode_definitions[opcode];
20894   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
20895   defn += bytes_read;
20896
20897   for (i = 0; i < arg; ++i)
20898     {
20899       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end, defn[i], offset_size,
20900                                  section);
20901       if (mac_ptr == NULL)
20902         {
20903           /* skip_form_bytes already issued the complaint.  */
20904           return NULL;
20905         }
20906     }
20907
20908   return mac_ptr;
20909 }
20910
20911 /* A helper function which parses the header of a macro section.
20912    If the macro section is the extended (for now called "GNU") type,
20913    then this updates *OFFSET_SIZE.  Returns a pointer to just after
20914    the header, or issues a complaint and returns NULL on error.  */
20915
20916 static const gdb_byte *
20917 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
20918                           bfd *abfd,
20919                           const gdb_byte *mac_ptr,
20920                           unsigned int *offset_size,
20921                           int section_is_gnu)
20922 {
20923   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
20924
20925   if (section_is_gnu)
20926     {
20927       unsigned int version, flags;
20928
20929       version = read_2_bytes (abfd, mac_ptr);
20930       if (version != 4)
20931         {
20932           complaint (&symfile_complaints,
20933                      _("unrecognized version `%d' in .debug_macro section"),
20934                      version);
20935           return NULL;
20936         }
20937       mac_ptr += 2;
20938
20939       flags = read_1_byte (abfd, mac_ptr);
20940       ++mac_ptr;
20941       *offset_size = (flags & 1) ? 8 : 4;
20942
20943       if ((flags & 2) != 0)
20944         /* We don't need the line table offset.  */
20945         mac_ptr += *offset_size;
20946
20947       /* Vendor opcode descriptions.  */
20948       if ((flags & 4) != 0)
20949         {
20950           unsigned int i, count;
20951
20952           count = read_1_byte (abfd, mac_ptr);
20953           ++mac_ptr;
20954           for (i = 0; i < count; ++i)
20955             {
20956               unsigned int opcode, bytes_read;
20957               unsigned long arg;
20958
20959               opcode = read_1_byte (abfd, mac_ptr);
20960               ++mac_ptr;
20961               opcode_definitions[opcode] = mac_ptr;
20962               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20963               mac_ptr += bytes_read;
20964               mac_ptr += arg;
20965             }
20966         }
20967     }
20968
20969   return mac_ptr;
20970 }
20971
20972 /* A helper for dwarf_decode_macros that handles the GNU extensions,
20973    including DW_MACRO_GNU_transparent_include.  */
20974
20975 static void
20976 dwarf_decode_macro_bytes (bfd *abfd,
20977                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
20978                           struct macro_source_file *current_file,
20979                           struct line_header *lh,
20980                           struct dwarf2_section_info *section,
20981                           int section_is_gnu, int section_is_dwz,
20982                           unsigned int offset_size,
20983                           htab_t include_hash)
20984 {
20985   struct objfile *objfile = dwarf2_per_objfile->objfile;
20986   enum dwarf_macro_record_type macinfo_type;
20987   int at_commandline;
20988   const gdb_byte *opcode_definitions[256];
20989
20990   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
20991                                       &offset_size, section_is_gnu);
20992   if (mac_ptr == NULL)
20993     {
20994       /* We already issued a complaint.  */
20995       return;
20996     }
20997
20998   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
20999      GDB is still reading the definitions from command line.  First
21000      DW_MACINFO_start_file will need to be ignored as it was already executed
21001      to create CURRENT_FILE for the main source holding also the command line
21002      definitions.  On first met DW_MACINFO_start_file this flag is reset to
21003      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
21004
21005   at_commandline = 1;
21006
21007   do
21008     {
21009       /* Do we at least have room for a macinfo type byte?  */
21010       if (mac_ptr >= mac_end)
21011         {
21012           dwarf2_section_buffer_overflow_complaint (section);
21013           break;
21014         }
21015
21016       macinfo_type = read_1_byte (abfd, mac_ptr);
21017       mac_ptr++;
21018
21019       /* Note that we rely on the fact that the corresponding GNU and
21020          DWARF constants are the same.  */
21021       switch (macinfo_type)
21022         {
21023           /* A zero macinfo type indicates the end of the macro
21024              information.  */
21025         case 0:
21026           break;
21027
21028         case DW_MACRO_GNU_define:
21029         case DW_MACRO_GNU_undef:
21030         case DW_MACRO_GNU_define_indirect:
21031         case DW_MACRO_GNU_undef_indirect:
21032         case DW_MACRO_GNU_define_indirect_alt:
21033         case DW_MACRO_GNU_undef_indirect_alt:
21034           {
21035             unsigned int bytes_read;
21036             int line;
21037             const char *body;
21038             int is_define;
21039
21040             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21041             mac_ptr += bytes_read;
21042
21043             if (macinfo_type == DW_MACRO_GNU_define
21044                 || macinfo_type == DW_MACRO_GNU_undef)
21045               {
21046                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
21047                 mac_ptr += bytes_read;
21048               }
21049             else
21050               {
21051                 LONGEST str_offset;
21052
21053                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
21054                 mac_ptr += offset_size;
21055
21056                 if (macinfo_type == DW_MACRO_GNU_define_indirect_alt
21057                     || macinfo_type == DW_MACRO_GNU_undef_indirect_alt
21058                     || section_is_dwz)
21059                   {
21060                     struct dwz_file *dwz = dwarf2_get_dwz_file ();
21061
21062                     body = read_indirect_string_from_dwz (dwz, str_offset);
21063                   }
21064                 else
21065                   body = read_indirect_string_at_offset (abfd, str_offset);
21066               }
21067
21068             is_define = (macinfo_type == DW_MACRO_GNU_define
21069                          || macinfo_type == DW_MACRO_GNU_define_indirect
21070                          || macinfo_type == DW_MACRO_GNU_define_indirect_alt);
21071             if (! current_file)
21072               {
21073                 /* DWARF violation as no main source is present.  */
21074                 complaint (&symfile_complaints,
21075                            _("debug info with no main source gives macro %s "
21076                              "on line %d: %s"),
21077                            is_define ? _("definition") : _("undefinition"),
21078                            line, body);
21079                 break;
21080               }
21081             if ((line == 0 && !at_commandline)
21082                 || (line != 0 && at_commandline))
21083               complaint (&symfile_complaints,
21084                          _("debug info gives %s macro %s with %s line %d: %s"),
21085                          at_commandline ? _("command-line") : _("in-file"),
21086                          is_define ? _("definition") : _("undefinition"),
21087                          line == 0 ? _("zero") : _("non-zero"), line, body);
21088
21089             if (is_define)
21090               parse_macro_definition (current_file, line, body);
21091             else
21092               {
21093                 gdb_assert (macinfo_type == DW_MACRO_GNU_undef
21094                             || macinfo_type == DW_MACRO_GNU_undef_indirect
21095                             || macinfo_type == DW_MACRO_GNU_undef_indirect_alt);
21096                 macro_undef (current_file, line, body);
21097               }
21098           }
21099           break;
21100
21101         case DW_MACRO_GNU_start_file:
21102           {
21103             unsigned int bytes_read;
21104             int line, file;
21105
21106             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21107             mac_ptr += bytes_read;
21108             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21109             mac_ptr += bytes_read;
21110
21111             if ((line == 0 && !at_commandline)
21112                 || (line != 0 && at_commandline))
21113               complaint (&symfile_complaints,
21114                          _("debug info gives source %d included "
21115                            "from %s at %s line %d"),
21116                          file, at_commandline ? _("command-line") : _("file"),
21117                          line == 0 ? _("zero") : _("non-zero"), line);
21118
21119             if (at_commandline)
21120               {
21121                 /* This DW_MACRO_GNU_start_file was executed in the
21122                    pass one.  */
21123                 at_commandline = 0;
21124               }
21125             else
21126               current_file = macro_start_file (file, line, current_file, lh);
21127           }
21128           break;
21129
21130         case DW_MACRO_GNU_end_file:
21131           if (! current_file)
21132             complaint (&symfile_complaints,
21133                        _("macro debug info has an unmatched "
21134                          "`close_file' directive"));
21135           else
21136             {
21137               current_file = current_file->included_by;
21138               if (! current_file)
21139                 {
21140                   enum dwarf_macro_record_type next_type;
21141
21142                   /* GCC circa March 2002 doesn't produce the zero
21143                      type byte marking the end of the compilation
21144                      unit.  Complain if it's not there, but exit no
21145                      matter what.  */
21146
21147                   /* Do we at least have room for a macinfo type byte?  */
21148                   if (mac_ptr >= mac_end)
21149                     {
21150                       dwarf2_section_buffer_overflow_complaint (section);
21151                       return;
21152                     }
21153
21154                   /* We don't increment mac_ptr here, so this is just
21155                      a look-ahead.  */
21156                   next_type = read_1_byte (abfd, mac_ptr);
21157                   if (next_type != 0)
21158                     complaint (&symfile_complaints,
21159                                _("no terminating 0-type entry for "
21160                                  "macros in `.debug_macinfo' section"));
21161
21162                   return;
21163                 }
21164             }
21165           break;
21166
21167         case DW_MACRO_GNU_transparent_include:
21168         case DW_MACRO_GNU_transparent_include_alt:
21169           {
21170             LONGEST offset;
21171             void **slot;
21172             bfd *include_bfd = abfd;
21173             struct dwarf2_section_info *include_section = section;
21174             struct dwarf2_section_info alt_section;
21175             const gdb_byte *include_mac_end = mac_end;
21176             int is_dwz = section_is_dwz;
21177             const gdb_byte *new_mac_ptr;
21178
21179             offset = read_offset_1 (abfd, mac_ptr, offset_size);
21180             mac_ptr += offset_size;
21181
21182             if (macinfo_type == DW_MACRO_GNU_transparent_include_alt)
21183               {
21184                 struct dwz_file *dwz = dwarf2_get_dwz_file ();
21185
21186                 dwarf2_read_section (objfile, &dwz->macro);
21187
21188                 include_section = &dwz->macro;
21189                 include_bfd = get_section_bfd_owner (include_section);
21190                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
21191                 is_dwz = 1;
21192               }
21193
21194             new_mac_ptr = include_section->buffer + offset;
21195             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
21196
21197             if (*slot != NULL)
21198               {
21199                 /* This has actually happened; see
21200                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
21201                 complaint (&symfile_complaints,
21202                            _("recursive DW_MACRO_GNU_transparent_include in "
21203                              ".debug_macro section"));
21204               }
21205             else
21206               {
21207                 *slot = (void *) new_mac_ptr;
21208
21209                 dwarf_decode_macro_bytes (include_bfd, new_mac_ptr,
21210                                           include_mac_end, current_file, lh,
21211                                           section, section_is_gnu, is_dwz,
21212                                           offset_size, include_hash);
21213
21214                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
21215               }
21216           }
21217           break;
21218
21219         case DW_MACINFO_vendor_ext:
21220           if (!section_is_gnu)
21221             {
21222               unsigned int bytes_read;
21223               int constant;
21224
21225               constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21226               mac_ptr += bytes_read;
21227               read_direct_string (abfd, mac_ptr, &bytes_read);
21228               mac_ptr += bytes_read;
21229
21230               /* We don't recognize any vendor extensions.  */
21231               break;
21232             }
21233           /* FALLTHROUGH */
21234
21235         default:
21236           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
21237                                          mac_ptr, mac_end, abfd, offset_size,
21238                                          section);
21239           if (mac_ptr == NULL)
21240             return;
21241           break;
21242         }
21243     } while (macinfo_type != 0);
21244 }
21245
21246 static void
21247 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
21248                      int section_is_gnu)
21249 {
21250   struct objfile *objfile = dwarf2_per_objfile->objfile;
21251   struct line_header *lh = cu->line_header;
21252   bfd *abfd;
21253   const gdb_byte *mac_ptr, *mac_end;
21254   struct macro_source_file *current_file = 0;
21255   enum dwarf_macro_record_type macinfo_type;
21256   unsigned int offset_size = cu->header.offset_size;
21257   const gdb_byte *opcode_definitions[256];
21258   struct cleanup *cleanup;
21259   htab_t include_hash;
21260   void **slot;
21261   struct dwarf2_section_info *section;
21262   const char *section_name;
21263
21264   if (cu->dwo_unit != NULL)
21265     {
21266       if (section_is_gnu)
21267         {
21268           section = &cu->dwo_unit->dwo_file->sections.macro;
21269           section_name = ".debug_macro.dwo";
21270         }
21271       else
21272         {
21273           section = &cu->dwo_unit->dwo_file->sections.macinfo;
21274           section_name = ".debug_macinfo.dwo";
21275         }
21276     }
21277   else
21278     {
21279       if (section_is_gnu)
21280         {
21281           section = &dwarf2_per_objfile->macro;
21282           section_name = ".debug_macro";
21283         }
21284       else
21285         {
21286           section = &dwarf2_per_objfile->macinfo;
21287           section_name = ".debug_macinfo";
21288         }
21289     }
21290
21291   dwarf2_read_section (objfile, section);
21292   if (section->buffer == NULL)
21293     {
21294       complaint (&symfile_complaints, _("missing %s section"), section_name);
21295       return;
21296     }
21297   abfd = get_section_bfd_owner (section);
21298
21299   /* First pass: Find the name of the base filename.
21300      This filename is needed in order to process all macros whose definition
21301      (or undefinition) comes from the command line.  These macros are defined
21302      before the first DW_MACINFO_start_file entry, and yet still need to be
21303      associated to the base file.
21304
21305      To determine the base file name, we scan the macro definitions until we
21306      reach the first DW_MACINFO_start_file entry.  We then initialize
21307      CURRENT_FILE accordingly so that any macro definition found before the
21308      first DW_MACINFO_start_file can still be associated to the base file.  */
21309
21310   mac_ptr = section->buffer + offset;
21311   mac_end = section->buffer + section->size;
21312
21313   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21314                                       &offset_size, section_is_gnu);
21315   if (mac_ptr == NULL)
21316     {
21317       /* We already issued a complaint.  */
21318       return;
21319     }
21320
21321   do
21322     {
21323       /* Do we at least have room for a macinfo type byte?  */
21324       if (mac_ptr >= mac_end)
21325         {
21326           /* Complaint is printed during the second pass as GDB will probably
21327              stop the first pass earlier upon finding
21328              DW_MACINFO_start_file.  */
21329           break;
21330         }
21331
21332       macinfo_type = read_1_byte (abfd, mac_ptr);
21333       mac_ptr++;
21334
21335       /* Note that we rely on the fact that the corresponding GNU and
21336          DWARF constants are the same.  */
21337       switch (macinfo_type)
21338         {
21339           /* A zero macinfo type indicates the end of the macro
21340              information.  */
21341         case 0:
21342           break;
21343
21344         case DW_MACRO_GNU_define:
21345         case DW_MACRO_GNU_undef:
21346           /* Only skip the data by MAC_PTR.  */
21347           {
21348             unsigned int bytes_read;
21349
21350             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21351             mac_ptr += bytes_read;
21352             read_direct_string (abfd, mac_ptr, &bytes_read);
21353             mac_ptr += bytes_read;
21354           }
21355           break;
21356
21357         case DW_MACRO_GNU_start_file:
21358           {
21359             unsigned int bytes_read;
21360             int line, file;
21361
21362             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21363             mac_ptr += bytes_read;
21364             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21365             mac_ptr += bytes_read;
21366
21367             current_file = macro_start_file (file, line, current_file, lh);
21368           }
21369           break;
21370
21371         case DW_MACRO_GNU_end_file:
21372           /* No data to skip by MAC_PTR.  */
21373           break;
21374
21375         case DW_MACRO_GNU_define_indirect:
21376         case DW_MACRO_GNU_undef_indirect:
21377         case DW_MACRO_GNU_define_indirect_alt:
21378         case DW_MACRO_GNU_undef_indirect_alt:
21379           {
21380             unsigned int bytes_read;
21381
21382             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21383             mac_ptr += bytes_read;
21384             mac_ptr += offset_size;
21385           }
21386           break;
21387
21388         case DW_MACRO_GNU_transparent_include:
21389         case DW_MACRO_GNU_transparent_include_alt:
21390           /* Note that, according to the spec, a transparent include
21391              chain cannot call DW_MACRO_GNU_start_file.  So, we can just
21392              skip this opcode.  */
21393           mac_ptr += offset_size;
21394           break;
21395
21396         case DW_MACINFO_vendor_ext:
21397           /* Only skip the data by MAC_PTR.  */
21398           if (!section_is_gnu)
21399             {
21400               unsigned int bytes_read;
21401
21402               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21403               mac_ptr += bytes_read;
21404               read_direct_string (abfd, mac_ptr, &bytes_read);
21405               mac_ptr += bytes_read;
21406             }
21407           /* FALLTHROUGH */
21408
21409         default:
21410           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
21411                                          mac_ptr, mac_end, abfd, offset_size,
21412                                          section);
21413           if (mac_ptr == NULL)
21414             return;
21415           break;
21416         }
21417     } while (macinfo_type != 0 && current_file == NULL);
21418
21419   /* Second pass: Process all entries.
21420
21421      Use the AT_COMMAND_LINE flag to determine whether we are still processing
21422      command-line macro definitions/undefinitions.  This flag is unset when we
21423      reach the first DW_MACINFO_start_file entry.  */
21424
21425   include_hash = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
21426                                     NULL, xcalloc, xfree);
21427   cleanup = make_cleanup_htab_delete (include_hash);
21428   mac_ptr = section->buffer + offset;
21429   slot = htab_find_slot (include_hash, mac_ptr, INSERT);
21430   *slot = (void *) mac_ptr;
21431   dwarf_decode_macro_bytes (abfd, mac_ptr, mac_end,
21432                             current_file, lh, section,
21433                             section_is_gnu, 0, offset_size, include_hash);
21434   do_cleanups (cleanup);
21435 }
21436
21437 /* Check if the attribute's form is a DW_FORM_block*
21438    if so return true else false.  */
21439
21440 static int
21441 attr_form_is_block (const struct attribute *attr)
21442 {
21443   return (attr == NULL ? 0 :
21444       attr->form == DW_FORM_block1
21445       || attr->form == DW_FORM_block2
21446       || attr->form == DW_FORM_block4
21447       || attr->form == DW_FORM_block
21448       || attr->form == DW_FORM_exprloc);
21449 }
21450
21451 /* Return non-zero if ATTR's value is a section offset --- classes
21452    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
21453    You may use DW_UNSND (attr) to retrieve such offsets.
21454
21455    Section 7.5.4, "Attribute Encodings", explains that no attribute
21456    may have a value that belongs to more than one of these classes; it
21457    would be ambiguous if we did, because we use the same forms for all
21458    of them.  */
21459
21460 static int
21461 attr_form_is_section_offset (const struct attribute *attr)
21462 {
21463   return (attr->form == DW_FORM_data4
21464           || attr->form == DW_FORM_data8
21465           || attr->form == DW_FORM_sec_offset);
21466 }
21467
21468 /* Return non-zero if ATTR's value falls in the 'constant' class, or
21469    zero otherwise.  When this function returns true, you can apply
21470    dwarf2_get_attr_constant_value to it.
21471
21472    However, note that for some attributes you must check
21473    attr_form_is_section_offset before using this test.  DW_FORM_data4
21474    and DW_FORM_data8 are members of both the constant class, and of
21475    the classes that contain offsets into other debug sections
21476    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
21477    that, if an attribute's can be either a constant or one of the
21478    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
21479    taken as section offsets, not constants.  */
21480
21481 static int
21482 attr_form_is_constant (const struct attribute *attr)
21483 {
21484   switch (attr->form)
21485     {
21486     case DW_FORM_sdata:
21487     case DW_FORM_udata:
21488     case DW_FORM_data1:
21489     case DW_FORM_data2:
21490     case DW_FORM_data4:
21491     case DW_FORM_data8:
21492       return 1;
21493     default:
21494       return 0;
21495     }
21496 }
21497
21498
21499 /* DW_ADDR is always stored already as sect_offset; despite for the forms
21500    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
21501
21502 static int
21503 attr_form_is_ref (const struct attribute *attr)
21504 {
21505   switch (attr->form)
21506     {
21507     case DW_FORM_ref_addr:
21508     case DW_FORM_ref1:
21509     case DW_FORM_ref2:
21510     case DW_FORM_ref4:
21511     case DW_FORM_ref8:
21512     case DW_FORM_ref_udata:
21513     case DW_FORM_GNU_ref_alt:
21514       return 1;
21515     default:
21516       return 0;
21517     }
21518 }
21519
21520 /* Return the .debug_loc section to use for CU.
21521    For DWO files use .debug_loc.dwo.  */
21522
21523 static struct dwarf2_section_info *
21524 cu_debug_loc_section (struct dwarf2_cu *cu)
21525 {
21526   if (cu->dwo_unit)
21527     return &cu->dwo_unit->dwo_file->sections.loc;
21528   return &dwarf2_per_objfile->loc;
21529 }
21530
21531 /* A helper function that fills in a dwarf2_loclist_baton.  */
21532
21533 static void
21534 fill_in_loclist_baton (struct dwarf2_cu *cu,
21535                        struct dwarf2_loclist_baton *baton,
21536                        const struct attribute *attr)
21537 {
21538   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
21539
21540   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
21541
21542   baton->per_cu = cu->per_cu;
21543   gdb_assert (baton->per_cu);
21544   /* We don't know how long the location list is, but make sure we
21545      don't run off the edge of the section.  */
21546   baton->size = section->size - DW_UNSND (attr);
21547   baton->data = section->buffer + DW_UNSND (attr);
21548   baton->base_address = cu->base_address;
21549   baton->from_dwo = cu->dwo_unit != NULL;
21550 }
21551
21552 static void
21553 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
21554                              struct dwarf2_cu *cu, int is_block)
21555 {
21556   struct objfile *objfile = dwarf2_per_objfile->objfile;
21557   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
21558
21559   if (attr_form_is_section_offset (attr)
21560       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
21561          the section.  If so, fall through to the complaint in the
21562          other branch.  */
21563       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
21564     {
21565       struct dwarf2_loclist_baton *baton;
21566
21567       baton = obstack_alloc (&objfile->objfile_obstack,
21568                              sizeof (struct dwarf2_loclist_baton));
21569
21570       fill_in_loclist_baton (cu, baton, attr);
21571
21572       if (cu->base_known == 0)
21573         complaint (&symfile_complaints,
21574                    _("Location list used without "
21575                      "specifying the CU base address."));
21576
21577       SYMBOL_ACLASS_INDEX (sym) = (is_block
21578                                    ? dwarf2_loclist_block_index
21579                                    : dwarf2_loclist_index);
21580       SYMBOL_LOCATION_BATON (sym) = baton;
21581     }
21582   else
21583     {
21584       struct dwarf2_locexpr_baton *baton;
21585
21586       baton = obstack_alloc (&objfile->objfile_obstack,
21587                              sizeof (struct dwarf2_locexpr_baton));
21588       baton->per_cu = cu->per_cu;
21589       gdb_assert (baton->per_cu);
21590
21591       if (attr_form_is_block (attr))
21592         {
21593           /* Note that we're just copying the block's data pointer
21594              here, not the actual data.  We're still pointing into the
21595              info_buffer for SYM's objfile; right now we never release
21596              that buffer, but when we do clean up properly this may
21597              need to change.  */
21598           baton->size = DW_BLOCK (attr)->size;
21599           baton->data = DW_BLOCK (attr)->data;
21600         }
21601       else
21602         {
21603           dwarf2_invalid_attrib_class_complaint ("location description",
21604                                                  SYMBOL_NATURAL_NAME (sym));
21605           baton->size = 0;
21606         }
21607
21608       SYMBOL_ACLASS_INDEX (sym) = (is_block
21609                                    ? dwarf2_locexpr_block_index
21610                                    : dwarf2_locexpr_index);
21611       SYMBOL_LOCATION_BATON (sym) = baton;
21612     }
21613 }
21614
21615 /* Return the OBJFILE associated with the compilation unit CU.  If CU
21616    came from a separate debuginfo file, then the master objfile is
21617    returned.  */
21618
21619 struct objfile *
21620 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
21621 {
21622   struct objfile *objfile = per_cu->objfile;
21623
21624   /* Return the master objfile, so that we can report and look up the
21625      correct file containing this variable.  */
21626   if (objfile->separate_debug_objfile_backlink)
21627     objfile = objfile->separate_debug_objfile_backlink;
21628
21629   return objfile;
21630 }
21631
21632 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
21633    (CU_HEADERP is unused in such case) or prepare a temporary copy at
21634    CU_HEADERP first.  */
21635
21636 static const struct comp_unit_head *
21637 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
21638                        struct dwarf2_per_cu_data *per_cu)
21639 {
21640   const gdb_byte *info_ptr;
21641
21642   if (per_cu->cu)
21643     return &per_cu->cu->header;
21644
21645   info_ptr = per_cu->section->buffer + per_cu->offset.sect_off;
21646
21647   memset (cu_headerp, 0, sizeof (*cu_headerp));
21648   read_comp_unit_head (cu_headerp, info_ptr, per_cu->objfile->obfd);
21649
21650   return cu_headerp;
21651 }
21652
21653 /* Return the address size given in the compilation unit header for CU.  */
21654
21655 int
21656 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
21657 {
21658   struct comp_unit_head cu_header_local;
21659   const struct comp_unit_head *cu_headerp;
21660
21661   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21662
21663   return cu_headerp->addr_size;
21664 }
21665
21666 /* Return the offset size given in the compilation unit header for CU.  */
21667
21668 int
21669 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
21670 {
21671   struct comp_unit_head cu_header_local;
21672   const struct comp_unit_head *cu_headerp;
21673
21674   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21675
21676   return cu_headerp->offset_size;
21677 }
21678
21679 /* See its dwarf2loc.h declaration.  */
21680
21681 int
21682 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
21683 {
21684   struct comp_unit_head cu_header_local;
21685   const struct comp_unit_head *cu_headerp;
21686
21687   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21688
21689   if (cu_headerp->version == 2)
21690     return cu_headerp->addr_size;
21691   else
21692     return cu_headerp->offset_size;
21693 }
21694
21695 /* Return the text offset of the CU.  The returned offset comes from
21696    this CU's objfile.  If this objfile came from a separate debuginfo
21697    file, then the offset may be different from the corresponding
21698    offset in the parent objfile.  */
21699
21700 CORE_ADDR
21701 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
21702 {
21703   struct objfile *objfile = per_cu->objfile;
21704
21705   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21706 }
21707
21708 /* Locate the .debug_info compilation unit from CU's objfile which contains
21709    the DIE at OFFSET.  Raises an error on failure.  */
21710
21711 static struct dwarf2_per_cu_data *
21712 dwarf2_find_containing_comp_unit (sect_offset offset,
21713                                   unsigned int offset_in_dwz,
21714                                   struct objfile *objfile)
21715 {
21716   struct dwarf2_per_cu_data *this_cu;
21717   int low, high;
21718   const sect_offset *cu_off;
21719
21720   low = 0;
21721   high = dwarf2_per_objfile->n_comp_units - 1;
21722   while (high > low)
21723     {
21724       struct dwarf2_per_cu_data *mid_cu;
21725       int mid = low + (high - low) / 2;
21726
21727       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
21728       cu_off = &mid_cu->offset;
21729       if (mid_cu->is_dwz > offset_in_dwz
21730           || (mid_cu->is_dwz == offset_in_dwz
21731               && cu_off->sect_off >= offset.sect_off))
21732         high = mid;
21733       else
21734         low = mid + 1;
21735     }
21736   gdb_assert (low == high);
21737   this_cu = dwarf2_per_objfile->all_comp_units[low];
21738   cu_off = &this_cu->offset;
21739   if (this_cu->is_dwz != offset_in_dwz || cu_off->sect_off > offset.sect_off)
21740     {
21741       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
21742         error (_("Dwarf Error: could not find partial DIE containing "
21743                "offset 0x%lx [in module %s]"),
21744                (long) offset.sect_off, bfd_get_filename (objfile->obfd));
21745
21746       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset.sect_off
21747                   <= offset.sect_off);
21748       return dwarf2_per_objfile->all_comp_units[low-1];
21749     }
21750   else
21751     {
21752       this_cu = dwarf2_per_objfile->all_comp_units[low];
21753       if (low == dwarf2_per_objfile->n_comp_units - 1
21754           && offset.sect_off >= this_cu->offset.sect_off + this_cu->length)
21755         error (_("invalid dwarf2 offset %u"), offset.sect_off);
21756       gdb_assert (offset.sect_off < this_cu->offset.sect_off + this_cu->length);
21757       return this_cu;
21758     }
21759 }
21760
21761 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
21762
21763 static void
21764 init_one_comp_unit (struct dwarf2_cu *cu, struct dwarf2_per_cu_data *per_cu)
21765 {
21766   memset (cu, 0, sizeof (*cu));
21767   per_cu->cu = cu;
21768   cu->per_cu = per_cu;
21769   cu->objfile = per_cu->objfile;
21770   obstack_init (&cu->comp_unit_obstack);
21771 }
21772
21773 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
21774
21775 static void
21776 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
21777                        enum language pretend_language)
21778 {
21779   struct attribute *attr;
21780
21781   /* Set the language we're debugging.  */
21782   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
21783   if (attr)
21784     set_cu_language (DW_UNSND (attr), cu);
21785   else
21786     {
21787       cu->language = pretend_language;
21788       cu->language_defn = language_def (cu->language);
21789     }
21790
21791   attr = dwarf2_attr (comp_unit_die, DW_AT_producer, cu);
21792   if (attr)
21793     cu->producer = DW_STRING (attr);
21794 }
21795
21796 /* Release one cached compilation unit, CU.  We unlink it from the tree
21797    of compilation units, but we don't remove it from the read_in_chain;
21798    the caller is responsible for that.
21799    NOTE: DATA is a void * because this function is also used as a
21800    cleanup routine.  */
21801
21802 static void
21803 free_heap_comp_unit (void *data)
21804 {
21805   struct dwarf2_cu *cu = data;
21806
21807   gdb_assert (cu->per_cu != NULL);
21808   cu->per_cu->cu = NULL;
21809   cu->per_cu = NULL;
21810
21811   obstack_free (&cu->comp_unit_obstack, NULL);
21812
21813   xfree (cu);
21814 }
21815
21816 /* This cleanup function is passed the address of a dwarf2_cu on the stack
21817    when we're finished with it.  We can't free the pointer itself, but be
21818    sure to unlink it from the cache.  Also release any associated storage.  */
21819
21820 static void
21821 free_stack_comp_unit (void *data)
21822 {
21823   struct dwarf2_cu *cu = data;
21824
21825   gdb_assert (cu->per_cu != NULL);
21826   cu->per_cu->cu = NULL;
21827   cu->per_cu = NULL;
21828
21829   obstack_free (&cu->comp_unit_obstack, NULL);
21830   cu->partial_dies = NULL;
21831 }
21832
21833 /* Free all cached compilation units.  */
21834
21835 static void
21836 free_cached_comp_units (void *data)
21837 {
21838   struct dwarf2_per_cu_data *per_cu, **last_chain;
21839
21840   per_cu = dwarf2_per_objfile->read_in_chain;
21841   last_chain = &dwarf2_per_objfile->read_in_chain;
21842   while (per_cu != NULL)
21843     {
21844       struct dwarf2_per_cu_data *next_cu;
21845
21846       next_cu = per_cu->cu->read_in_chain;
21847
21848       free_heap_comp_unit (per_cu->cu);
21849       *last_chain = next_cu;
21850
21851       per_cu = next_cu;
21852     }
21853 }
21854
21855 /* Increase the age counter on each cached compilation unit, and free
21856    any that are too old.  */
21857
21858 static void
21859 age_cached_comp_units (void)
21860 {
21861   struct dwarf2_per_cu_data *per_cu, **last_chain;
21862
21863   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
21864   per_cu = dwarf2_per_objfile->read_in_chain;
21865   while (per_cu != NULL)
21866     {
21867       per_cu->cu->last_used ++;
21868       if (per_cu->cu->last_used <= dwarf2_max_cache_age)
21869         dwarf2_mark (per_cu->cu);
21870       per_cu = per_cu->cu->read_in_chain;
21871     }
21872
21873   per_cu = dwarf2_per_objfile->read_in_chain;
21874   last_chain = &dwarf2_per_objfile->read_in_chain;
21875   while (per_cu != NULL)
21876     {
21877       struct dwarf2_per_cu_data *next_cu;
21878
21879       next_cu = per_cu->cu->read_in_chain;
21880
21881       if (!per_cu->cu->mark)
21882         {
21883           free_heap_comp_unit (per_cu->cu);
21884           *last_chain = next_cu;
21885         }
21886       else
21887         last_chain = &per_cu->cu->read_in_chain;
21888
21889       per_cu = next_cu;
21890     }
21891 }
21892
21893 /* Remove a single compilation unit from the cache.  */
21894
21895 static void
21896 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
21897 {
21898   struct dwarf2_per_cu_data *per_cu, **last_chain;
21899
21900   per_cu = dwarf2_per_objfile->read_in_chain;
21901   last_chain = &dwarf2_per_objfile->read_in_chain;
21902   while (per_cu != NULL)
21903     {
21904       struct dwarf2_per_cu_data *next_cu;
21905
21906       next_cu = per_cu->cu->read_in_chain;
21907
21908       if (per_cu == target_per_cu)
21909         {
21910           free_heap_comp_unit (per_cu->cu);
21911           per_cu->cu = NULL;
21912           *last_chain = next_cu;
21913           break;
21914         }
21915       else
21916         last_chain = &per_cu->cu->read_in_chain;
21917
21918       per_cu = next_cu;
21919     }
21920 }
21921
21922 /* Release all extra memory associated with OBJFILE.  */
21923
21924 void
21925 dwarf2_free_objfile (struct objfile *objfile)
21926 {
21927   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
21928
21929   if (dwarf2_per_objfile == NULL)
21930     return;
21931
21932   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
21933   free_cached_comp_units (NULL);
21934
21935   if (dwarf2_per_objfile->quick_file_names_table)
21936     htab_delete (dwarf2_per_objfile->quick_file_names_table);
21937
21938   if (dwarf2_per_objfile->line_header_hash)
21939     htab_delete (dwarf2_per_objfile->line_header_hash);
21940
21941   /* Everything else should be on the objfile obstack.  */
21942 }
21943
21944 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
21945    We store these in a hash table separate from the DIEs, and preserve them
21946    when the DIEs are flushed out of cache.
21947
21948    The CU "per_cu" pointer is needed because offset alone is not enough to
21949    uniquely identify the type.  A file may have multiple .debug_types sections,
21950    or the type may come from a DWO file.  Furthermore, while it's more logical
21951    to use per_cu->section+offset, with Fission the section with the data is in
21952    the DWO file but we don't know that section at the point we need it.
21953    We have to use something in dwarf2_per_cu_data (or the pointer to it)
21954    because we can enter the lookup routine, get_die_type_at_offset, from
21955    outside this file, and thus won't necessarily have PER_CU->cu.
21956    Fortunately, PER_CU is stable for the life of the objfile.  */
21957
21958 struct dwarf2_per_cu_offset_and_type
21959 {
21960   const struct dwarf2_per_cu_data *per_cu;
21961   sect_offset offset;
21962   struct type *type;
21963 };
21964
21965 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
21966
21967 static hashval_t
21968 per_cu_offset_and_type_hash (const void *item)
21969 {
21970   const struct dwarf2_per_cu_offset_and_type *ofs = item;
21971
21972   return (uintptr_t) ofs->per_cu + ofs->offset.sect_off;
21973 }
21974
21975 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
21976
21977 static int
21978 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
21979 {
21980   const struct dwarf2_per_cu_offset_and_type *ofs_lhs = item_lhs;
21981   const struct dwarf2_per_cu_offset_and_type *ofs_rhs = item_rhs;
21982
21983   return (ofs_lhs->per_cu == ofs_rhs->per_cu
21984           && ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off);
21985 }
21986
21987 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
21988    table if necessary.  For convenience, return TYPE.
21989
21990    The DIEs reading must have careful ordering to:
21991     * Not cause infite loops trying to read in DIEs as a prerequisite for
21992       reading current DIE.
21993     * Not trying to dereference contents of still incompletely read in types
21994       while reading in other DIEs.
21995     * Enable referencing still incompletely read in types just by a pointer to
21996       the type without accessing its fields.
21997
21998    Therefore caller should follow these rules:
21999      * Try to fetch any prerequisite types we may need to build this DIE type
22000        before building the type and calling set_die_type.
22001      * After building type call set_die_type for current DIE as soon as
22002        possible before fetching more types to complete the current type.
22003      * Make the type as complete as possible before fetching more types.  */
22004
22005 static struct type *
22006 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
22007 {
22008   struct dwarf2_per_cu_offset_and_type **slot, ofs;
22009   struct objfile *objfile = cu->objfile;
22010   struct attribute *attr;
22011   struct dynamic_prop prop;
22012
22013   /* For Ada types, make sure that the gnat-specific data is always
22014      initialized (if not already set).  There are a few types where
22015      we should not be doing so, because the type-specific area is
22016      already used to hold some other piece of info (eg: TYPE_CODE_FLT
22017      where the type-specific area is used to store the floatformat).
22018      But this is not a problem, because the gnat-specific information
22019      is actually not needed for these types.  */
22020   if (need_gnat_info (cu)
22021       && TYPE_CODE (type) != TYPE_CODE_FUNC
22022       && TYPE_CODE (type) != TYPE_CODE_FLT
22023       && !HAVE_GNAT_AUX_INFO (type))
22024     INIT_GNAT_SPECIFIC (type);
22025
22026   /* Read DW_AT_data_location and set in type.  */
22027   attr = dwarf2_attr (die, DW_AT_data_location, cu);
22028   if (attr_to_dynamic_prop (attr, die, cu, &prop))
22029     {
22030       TYPE_DATA_LOCATION (type)
22031         = obstack_alloc (&objfile->objfile_obstack, sizeof (prop));
22032       *TYPE_DATA_LOCATION (type) = prop;
22033     }
22034
22035   if (dwarf2_per_objfile->die_type_hash == NULL)
22036     {
22037       dwarf2_per_objfile->die_type_hash =
22038         htab_create_alloc_ex (127,
22039                               per_cu_offset_and_type_hash,
22040                               per_cu_offset_and_type_eq,
22041                               NULL,
22042                               &objfile->objfile_obstack,
22043                               hashtab_obstack_allocate,
22044                               dummy_obstack_deallocate);
22045     }
22046
22047   ofs.per_cu = cu->per_cu;
22048   ofs.offset = die->offset;
22049   ofs.type = type;
22050   slot = (struct dwarf2_per_cu_offset_and_type **)
22051     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
22052   if (*slot)
22053     complaint (&symfile_complaints,
22054                _("A problem internal to GDB: DIE 0x%x has type already set"),
22055                die->offset.sect_off);
22056   *slot = obstack_alloc (&objfile->objfile_obstack, sizeof (**slot));
22057   **slot = ofs;
22058   return type;
22059 }
22060
22061 /* Look up the type for the die at OFFSET in PER_CU in die_type_hash,
22062    or return NULL if the die does not have a saved type.  */
22063
22064 static struct type *
22065 get_die_type_at_offset (sect_offset offset,
22066                         struct dwarf2_per_cu_data *per_cu)
22067 {
22068   struct dwarf2_per_cu_offset_and_type *slot, ofs;
22069
22070   if (dwarf2_per_objfile->die_type_hash == NULL)
22071     return NULL;
22072
22073   ofs.per_cu = per_cu;
22074   ofs.offset = offset;
22075   slot = htab_find (dwarf2_per_objfile->die_type_hash, &ofs);
22076   if (slot)
22077     return slot->type;
22078   else
22079     return NULL;
22080 }
22081
22082 /* Look up the type for DIE in CU in die_type_hash,
22083    or return NULL if DIE does not have a saved type.  */
22084
22085 static struct type *
22086 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
22087 {
22088   return get_die_type_at_offset (die->offset, cu->per_cu);
22089 }
22090
22091 /* Add a dependence relationship from CU to REF_PER_CU.  */
22092
22093 static void
22094 dwarf2_add_dependence (struct dwarf2_cu *cu,
22095                        struct dwarf2_per_cu_data *ref_per_cu)
22096 {
22097   void **slot;
22098
22099   if (cu->dependencies == NULL)
22100     cu->dependencies
22101       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
22102                               NULL, &cu->comp_unit_obstack,
22103                               hashtab_obstack_allocate,
22104                               dummy_obstack_deallocate);
22105
22106   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
22107   if (*slot == NULL)
22108     *slot = ref_per_cu;
22109 }
22110
22111 /* Subroutine of dwarf2_mark to pass to htab_traverse.
22112    Set the mark field in every compilation unit in the
22113    cache that we must keep because we are keeping CU.  */
22114
22115 static int
22116 dwarf2_mark_helper (void **slot, void *data)
22117 {
22118   struct dwarf2_per_cu_data *per_cu;
22119
22120   per_cu = (struct dwarf2_per_cu_data *) *slot;
22121
22122   /* cu->dependencies references may not yet have been ever read if QUIT aborts
22123      reading of the chain.  As such dependencies remain valid it is not much
22124      useful to track and undo them during QUIT cleanups.  */
22125   if (per_cu->cu == NULL)
22126     return 1;
22127
22128   if (per_cu->cu->mark)
22129     return 1;
22130   per_cu->cu->mark = 1;
22131
22132   if (per_cu->cu->dependencies != NULL)
22133     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
22134
22135   return 1;
22136 }
22137
22138 /* Set the mark field in CU and in every other compilation unit in the
22139    cache that we must keep because we are keeping CU.  */
22140
22141 static void
22142 dwarf2_mark (struct dwarf2_cu *cu)
22143 {
22144   if (cu->mark)
22145     return;
22146   cu->mark = 1;
22147   if (cu->dependencies != NULL)
22148     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
22149 }
22150
22151 static void
22152 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
22153 {
22154   while (per_cu)
22155     {
22156       per_cu->cu->mark = 0;
22157       per_cu = per_cu->cu->read_in_chain;
22158     }
22159 }
22160
22161 /* Trivial hash function for partial_die_info: the hash value of a DIE
22162    is its offset in .debug_info for this objfile.  */
22163
22164 static hashval_t
22165 partial_die_hash (const void *item)
22166 {
22167   const struct partial_die_info *part_die = item;
22168
22169   return part_die->offset.sect_off;
22170 }
22171
22172 /* Trivial comparison function for partial_die_info structures: two DIEs
22173    are equal if they have the same offset.  */
22174
22175 static int
22176 partial_die_eq (const void *item_lhs, const void *item_rhs)
22177 {
22178   const struct partial_die_info *part_die_lhs = item_lhs;
22179   const struct partial_die_info *part_die_rhs = item_rhs;
22180
22181   return part_die_lhs->offset.sect_off == part_die_rhs->offset.sect_off;
22182 }
22183
22184 static struct cmd_list_element *set_dwarf2_cmdlist;
22185 static struct cmd_list_element *show_dwarf2_cmdlist;
22186
22187 static void
22188 set_dwarf2_cmd (char *args, int from_tty)
22189 {
22190   help_list (set_dwarf2_cmdlist, "maintenance set dwarf2 ", all_commands,
22191              gdb_stdout);
22192 }
22193
22194 static void
22195 show_dwarf2_cmd (char *args, int from_tty)
22196 {
22197   cmd_show_list (show_dwarf2_cmdlist, from_tty, "");
22198 }
22199
22200 /* Free data associated with OBJFILE, if necessary.  */
22201
22202 static void
22203 dwarf2_per_objfile_free (struct objfile *objfile, void *d)
22204 {
22205   struct dwarf2_per_objfile *data = d;
22206   int ix;
22207
22208   /* Make sure we don't accidentally use dwarf2_per_objfile while
22209      cleaning up.  */
22210   dwarf2_per_objfile = NULL;
22211
22212   for (ix = 0; ix < data->n_comp_units; ++ix)
22213    VEC_free (dwarf2_per_cu_ptr, data->all_comp_units[ix]->imported_symtabs);
22214
22215   for (ix = 0; ix < data->n_type_units; ++ix)
22216     VEC_free (dwarf2_per_cu_ptr,
22217               data->all_type_units[ix]->per_cu.imported_symtabs);
22218   xfree (data->all_type_units);
22219
22220   VEC_free (dwarf2_section_info_def, data->types);
22221
22222   if (data->dwo_files)
22223     free_dwo_files (data->dwo_files, objfile);
22224   if (data->dwp_file)
22225     gdb_bfd_unref (data->dwp_file->dbfd);
22226
22227   if (data->dwz_file && data->dwz_file->dwz_bfd)
22228     gdb_bfd_unref (data->dwz_file->dwz_bfd);
22229 }
22230
22231 \f
22232 /* The "save gdb-index" command.  */
22233
22234 /* The contents of the hash table we create when building the string
22235    table.  */
22236 struct strtab_entry
22237 {
22238   offset_type offset;
22239   const char *str;
22240 };
22241
22242 /* Hash function for a strtab_entry.
22243
22244    Function is used only during write_hash_table so no index format backward
22245    compatibility is needed.  */
22246
22247 static hashval_t
22248 hash_strtab_entry (const void *e)
22249 {
22250   const struct strtab_entry *entry = e;
22251   return mapped_index_string_hash (INT_MAX, entry->str);
22252 }
22253
22254 /* Equality function for a strtab_entry.  */
22255
22256 static int
22257 eq_strtab_entry (const void *a, const void *b)
22258 {
22259   const struct strtab_entry *ea = a;
22260   const struct strtab_entry *eb = b;
22261   return !strcmp (ea->str, eb->str);
22262 }
22263
22264 /* Create a strtab_entry hash table.  */
22265
22266 static htab_t
22267 create_strtab (void)
22268 {
22269   return htab_create_alloc (100, hash_strtab_entry, eq_strtab_entry,
22270                             xfree, xcalloc, xfree);
22271 }
22272
22273 /* Add a string to the constant pool.  Return the string's offset in
22274    host order.  */
22275
22276 static offset_type
22277 add_string (htab_t table, struct obstack *cpool, const char *str)
22278 {
22279   void **slot;
22280   struct strtab_entry entry;
22281   struct strtab_entry *result;
22282
22283   entry.str = str;
22284   slot = htab_find_slot (table, &entry, INSERT);
22285   if (*slot)
22286     result = *slot;
22287   else
22288     {
22289       result = XNEW (struct strtab_entry);
22290       result->offset = obstack_object_size (cpool);
22291       result->str = str;
22292       obstack_grow_str0 (cpool, str);
22293       *slot = result;
22294     }
22295   return result->offset;
22296 }
22297
22298 /* An entry in the symbol table.  */
22299 struct symtab_index_entry
22300 {
22301   /* The name of the symbol.  */
22302   const char *name;
22303   /* The offset of the name in the constant pool.  */
22304   offset_type index_offset;
22305   /* A sorted vector of the indices of all the CUs that hold an object
22306      of this name.  */
22307   VEC (offset_type) *cu_indices;
22308 };
22309
22310 /* The symbol table.  This is a power-of-2-sized hash table.  */
22311 struct mapped_symtab
22312 {
22313   offset_type n_elements;
22314   offset_type size;
22315   struct symtab_index_entry **data;
22316 };
22317
22318 /* Hash function for a symtab_index_entry.  */
22319
22320 static hashval_t
22321 hash_symtab_entry (const void *e)
22322 {
22323   const struct symtab_index_entry *entry = e;
22324   return iterative_hash (VEC_address (offset_type, entry->cu_indices),
22325                          sizeof (offset_type) * VEC_length (offset_type,
22326                                                             entry->cu_indices),
22327                          0);
22328 }
22329
22330 /* Equality function for a symtab_index_entry.  */
22331
22332 static int
22333 eq_symtab_entry (const void *a, const void *b)
22334 {
22335   const struct symtab_index_entry *ea = a;
22336   const struct symtab_index_entry *eb = b;
22337   int len = VEC_length (offset_type, ea->cu_indices);
22338   if (len != VEC_length (offset_type, eb->cu_indices))
22339     return 0;
22340   return !memcmp (VEC_address (offset_type, ea->cu_indices),
22341                   VEC_address (offset_type, eb->cu_indices),
22342                   sizeof (offset_type) * len);
22343 }
22344
22345 /* Destroy a symtab_index_entry.  */
22346
22347 static void
22348 delete_symtab_entry (void *p)
22349 {
22350   struct symtab_index_entry *entry = p;
22351   VEC_free (offset_type, entry->cu_indices);
22352   xfree (entry);
22353 }
22354
22355 /* Create a hash table holding symtab_index_entry objects.  */
22356
22357 static htab_t
22358 create_symbol_hash_table (void)
22359 {
22360   return htab_create_alloc (100, hash_symtab_entry, eq_symtab_entry,
22361                             delete_symtab_entry, xcalloc, xfree);
22362 }
22363
22364 /* Create a new mapped symtab object.  */
22365
22366 static struct mapped_symtab *
22367 create_mapped_symtab (void)
22368 {
22369   struct mapped_symtab *symtab = XNEW (struct mapped_symtab);
22370   symtab->n_elements = 0;
22371   symtab->size = 1024;
22372   symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22373   return symtab;
22374 }
22375
22376 /* Destroy a mapped_symtab.  */
22377
22378 static void
22379 cleanup_mapped_symtab (void *p)
22380 {
22381   struct mapped_symtab *symtab = p;
22382   /* The contents of the array are freed when the other hash table is
22383      destroyed.  */
22384   xfree (symtab->data);
22385   xfree (symtab);
22386 }
22387
22388 /* Find a slot in SYMTAB for the symbol NAME.  Returns a pointer to
22389    the slot.
22390    
22391    Function is used only during write_hash_table so no index format backward
22392    compatibility is needed.  */
22393
22394 static struct symtab_index_entry **
22395 find_slot (struct mapped_symtab *symtab, const char *name)
22396 {
22397   offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
22398
22399   index = hash & (symtab->size - 1);
22400   step = ((hash * 17) & (symtab->size - 1)) | 1;
22401
22402   for (;;)
22403     {
22404       if (!symtab->data[index] || !strcmp (name, symtab->data[index]->name))
22405         return &symtab->data[index];
22406       index = (index + step) & (symtab->size - 1);
22407     }
22408 }
22409
22410 /* Expand SYMTAB's hash table.  */
22411
22412 static void
22413 hash_expand (struct mapped_symtab *symtab)
22414 {
22415   offset_type old_size = symtab->size;
22416   offset_type i;
22417   struct symtab_index_entry **old_entries = symtab->data;
22418
22419   symtab->size *= 2;
22420   symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22421
22422   for (i = 0; i < old_size; ++i)
22423     {
22424       if (old_entries[i])
22425         {
22426           struct symtab_index_entry **slot = find_slot (symtab,
22427                                                         old_entries[i]->name);
22428           *slot = old_entries[i];
22429         }
22430     }
22431
22432   xfree (old_entries);
22433 }
22434
22435 /* Add an entry to SYMTAB.  NAME is the name of the symbol.
22436    CU_INDEX is the index of the CU in which the symbol appears.
22437    IS_STATIC is one if the symbol is static, otherwise zero (global).  */
22438
22439 static void
22440 add_index_entry (struct mapped_symtab *symtab, const char *name,
22441                  int is_static, gdb_index_symbol_kind kind,
22442                  offset_type cu_index)
22443 {
22444   struct symtab_index_entry **slot;
22445   offset_type cu_index_and_attrs;
22446
22447   ++symtab->n_elements;
22448   if (4 * symtab->n_elements / 3 >= symtab->size)
22449     hash_expand (symtab);
22450
22451   slot = find_slot (symtab, name);
22452   if (!*slot)
22453     {
22454       *slot = XNEW (struct symtab_index_entry);
22455       (*slot)->name = name;
22456       /* index_offset is set later.  */
22457       (*slot)->cu_indices = NULL;
22458     }
22459
22460   cu_index_and_attrs = 0;
22461   DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
22462   DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
22463   DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
22464
22465   /* We don't want to record an index value twice as we want to avoid the
22466      duplication.
22467      We process all global symbols and then all static symbols
22468      (which would allow us to avoid the duplication by only having to check
22469      the last entry pushed), but a symbol could have multiple kinds in one CU.
22470      To keep things simple we don't worry about the duplication here and
22471      sort and uniqufy the list after we've processed all symbols.  */
22472   VEC_safe_push (offset_type, (*slot)->cu_indices, cu_index_and_attrs);
22473 }
22474
22475 /* qsort helper routine for uniquify_cu_indices.  */
22476
22477 static int
22478 offset_type_compare (const void *ap, const void *bp)
22479 {
22480   offset_type a = *(offset_type *) ap;
22481   offset_type b = *(offset_type *) bp;
22482
22483   return (a > b) - (b > a);
22484 }
22485
22486 /* Sort and remove duplicates of all symbols' cu_indices lists.  */
22487
22488 static void
22489 uniquify_cu_indices (struct mapped_symtab *symtab)
22490 {
22491   int i;
22492
22493   for (i = 0; i < symtab->size; ++i)
22494     {
22495       struct symtab_index_entry *entry = symtab->data[i];
22496
22497       if (entry
22498           && entry->cu_indices != NULL)
22499         {
22500           unsigned int next_to_insert, next_to_check;
22501           offset_type last_value;
22502
22503           qsort (VEC_address (offset_type, entry->cu_indices),
22504                  VEC_length (offset_type, entry->cu_indices),
22505                  sizeof (offset_type), offset_type_compare);
22506
22507           last_value = VEC_index (offset_type, entry->cu_indices, 0);
22508           next_to_insert = 1;
22509           for (next_to_check = 1;
22510                next_to_check < VEC_length (offset_type, entry->cu_indices);
22511                ++next_to_check)
22512             {
22513               if (VEC_index (offset_type, entry->cu_indices, next_to_check)
22514                   != last_value)
22515                 {
22516                   last_value = VEC_index (offset_type, entry->cu_indices,
22517                                           next_to_check);
22518                   VEC_replace (offset_type, entry->cu_indices, next_to_insert,
22519                                last_value);
22520                   ++next_to_insert;
22521                 }
22522             }
22523           VEC_truncate (offset_type, entry->cu_indices, next_to_insert);
22524         }
22525     }
22526 }
22527
22528 /* Add a vector of indices to the constant pool.  */
22529
22530 static offset_type
22531 add_indices_to_cpool (htab_t symbol_hash_table, struct obstack *cpool,
22532                       struct symtab_index_entry *entry)
22533 {
22534   void **slot;
22535
22536   slot = htab_find_slot (symbol_hash_table, entry, INSERT);
22537   if (!*slot)
22538     {
22539       offset_type len = VEC_length (offset_type, entry->cu_indices);
22540       offset_type val = MAYBE_SWAP (len);
22541       offset_type iter;
22542       int i;
22543
22544       *slot = entry;
22545       entry->index_offset = obstack_object_size (cpool);
22546
22547       obstack_grow (cpool, &val, sizeof (val));
22548       for (i = 0;
22549            VEC_iterate (offset_type, entry->cu_indices, i, iter);
22550            ++i)
22551         {
22552           val = MAYBE_SWAP (iter);
22553           obstack_grow (cpool, &val, sizeof (val));
22554         }
22555     }
22556   else
22557     {
22558       struct symtab_index_entry *old_entry = *slot;
22559       entry->index_offset = old_entry->index_offset;
22560       entry = old_entry;
22561     }
22562   return entry->index_offset;
22563 }
22564
22565 /* Write the mapped hash table SYMTAB to the obstack OUTPUT, with
22566    constant pool entries going into the obstack CPOOL.  */
22567
22568 static void
22569 write_hash_table (struct mapped_symtab *symtab,
22570                   struct obstack *output, struct obstack *cpool)
22571 {
22572   offset_type i;
22573   htab_t symbol_hash_table;
22574   htab_t str_table;
22575
22576   symbol_hash_table = create_symbol_hash_table ();
22577   str_table = create_strtab ();
22578
22579   /* We add all the index vectors to the constant pool first, to
22580      ensure alignment is ok.  */
22581   for (i = 0; i < symtab->size; ++i)
22582     {
22583       if (symtab->data[i])
22584         add_indices_to_cpool (symbol_hash_table, cpool, symtab->data[i]);
22585     }
22586
22587   /* Now write out the hash table.  */
22588   for (i = 0; i < symtab->size; ++i)
22589     {
22590       offset_type str_off, vec_off;
22591
22592       if (symtab->data[i])
22593         {
22594           str_off = add_string (str_table, cpool, symtab->data[i]->name);
22595           vec_off = symtab->data[i]->index_offset;
22596         }
22597       else
22598         {
22599           /* While 0 is a valid constant pool index, it is not valid
22600              to have 0 for both offsets.  */
22601           str_off = 0;
22602           vec_off = 0;
22603         }
22604
22605       str_off = MAYBE_SWAP (str_off);
22606       vec_off = MAYBE_SWAP (vec_off);
22607
22608       obstack_grow (output, &str_off, sizeof (str_off));
22609       obstack_grow (output, &vec_off, sizeof (vec_off));
22610     }
22611
22612   htab_delete (str_table);
22613   htab_delete (symbol_hash_table);
22614 }
22615
22616 /* Struct to map psymtab to CU index in the index file.  */
22617 struct psymtab_cu_index_map
22618 {
22619   struct partial_symtab *psymtab;
22620   unsigned int cu_index;
22621 };
22622
22623 static hashval_t
22624 hash_psymtab_cu_index (const void *item)
22625 {
22626   const struct psymtab_cu_index_map *map = item;
22627
22628   return htab_hash_pointer (map->psymtab);
22629 }
22630
22631 static int
22632 eq_psymtab_cu_index (const void *item_lhs, const void *item_rhs)
22633 {
22634   const struct psymtab_cu_index_map *lhs = item_lhs;
22635   const struct psymtab_cu_index_map *rhs = item_rhs;
22636
22637   return lhs->psymtab == rhs->psymtab;
22638 }
22639
22640 /* Helper struct for building the address table.  */
22641 struct addrmap_index_data
22642 {
22643   struct objfile *objfile;
22644   struct obstack *addr_obstack;
22645   htab_t cu_index_htab;
22646
22647   /* Non-zero if the previous_* fields are valid.
22648      We can't write an entry until we see the next entry (since it is only then
22649      that we know the end of the entry).  */
22650   int previous_valid;
22651   /* Index of the CU in the table of all CUs in the index file.  */
22652   unsigned int previous_cu_index;
22653   /* Start address of the CU.  */
22654   CORE_ADDR previous_cu_start;
22655 };
22656
22657 /* Write an address entry to OBSTACK.  */
22658
22659 static void
22660 add_address_entry (struct objfile *objfile, struct obstack *obstack,
22661                    CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
22662 {
22663   offset_type cu_index_to_write;
22664   gdb_byte addr[8];
22665   CORE_ADDR baseaddr;
22666
22667   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
22668
22669   store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, start - baseaddr);
22670   obstack_grow (obstack, addr, 8);
22671   store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, end - baseaddr);
22672   obstack_grow (obstack, addr, 8);
22673   cu_index_to_write = MAYBE_SWAP (cu_index);
22674   obstack_grow (obstack, &cu_index_to_write, sizeof (offset_type));
22675 }
22676
22677 /* Worker function for traversing an addrmap to build the address table.  */
22678
22679 static int
22680 add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
22681 {
22682   struct addrmap_index_data *data = datap;
22683   struct partial_symtab *pst = obj;
22684
22685   if (data->previous_valid)
22686     add_address_entry (data->objfile, data->addr_obstack,
22687                        data->previous_cu_start, start_addr,
22688                        data->previous_cu_index);
22689
22690   data->previous_cu_start = start_addr;
22691   if (pst != NULL)
22692     {
22693       struct psymtab_cu_index_map find_map, *map;
22694       find_map.psymtab = pst;
22695       map = htab_find (data->cu_index_htab, &find_map);
22696       gdb_assert (map != NULL);
22697       data->previous_cu_index = map->cu_index;
22698       data->previous_valid = 1;
22699     }
22700   else
22701       data->previous_valid = 0;
22702
22703   return 0;
22704 }
22705
22706 /* Write OBJFILE's address map to OBSTACK.
22707    CU_INDEX_HTAB is used to map addrmap entries to their CU indices
22708    in the index file.  */
22709
22710 static void
22711 write_address_map (struct objfile *objfile, struct obstack *obstack,
22712                    htab_t cu_index_htab)
22713 {
22714   struct addrmap_index_data addrmap_index_data;
22715
22716   /* When writing the address table, we have to cope with the fact that
22717      the addrmap iterator only provides the start of a region; we have to
22718      wait until the next invocation to get the start of the next region.  */
22719
22720   addrmap_index_data.objfile = objfile;
22721   addrmap_index_data.addr_obstack = obstack;
22722   addrmap_index_data.cu_index_htab = cu_index_htab;
22723   addrmap_index_data.previous_valid = 0;
22724
22725   addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
22726                    &addrmap_index_data);
22727
22728   /* It's highly unlikely the last entry (end address = 0xff...ff)
22729      is valid, but we should still handle it.
22730      The end address is recorded as the start of the next region, but that
22731      doesn't work here.  To cope we pass 0xff...ff, this is a rare situation
22732      anyway.  */
22733   if (addrmap_index_data.previous_valid)
22734     add_address_entry (objfile, obstack,
22735                        addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
22736                        addrmap_index_data.previous_cu_index);
22737 }
22738
22739 /* Return the symbol kind of PSYM.  */
22740
22741 static gdb_index_symbol_kind
22742 symbol_kind (struct partial_symbol *psym)
22743 {
22744   domain_enum domain = PSYMBOL_DOMAIN (psym);
22745   enum address_class aclass = PSYMBOL_CLASS (psym);
22746
22747   switch (domain)
22748     {
22749     case VAR_DOMAIN:
22750       switch (aclass)
22751         {
22752         case LOC_BLOCK:
22753           return GDB_INDEX_SYMBOL_KIND_FUNCTION;
22754         case LOC_TYPEDEF:
22755           return GDB_INDEX_SYMBOL_KIND_TYPE;
22756         case LOC_COMPUTED:
22757         case LOC_CONST_BYTES:
22758         case LOC_OPTIMIZED_OUT:
22759         case LOC_STATIC:
22760           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
22761         case LOC_CONST:
22762           /* Note: It's currently impossible to recognize psyms as enum values
22763              short of reading the type info.  For now punt.  */
22764           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
22765         default:
22766           /* There are other LOC_FOO values that one might want to classify
22767              as variables, but dwarf2read.c doesn't currently use them.  */
22768           return GDB_INDEX_SYMBOL_KIND_OTHER;
22769         }
22770     case STRUCT_DOMAIN:
22771       return GDB_INDEX_SYMBOL_KIND_TYPE;
22772     default:
22773       return GDB_INDEX_SYMBOL_KIND_OTHER;
22774     }
22775 }
22776
22777 /* Add a list of partial symbols to SYMTAB.  */
22778
22779 static void
22780 write_psymbols (struct mapped_symtab *symtab,
22781                 htab_t psyms_seen,
22782                 struct partial_symbol **psymp,
22783                 int count,
22784                 offset_type cu_index,
22785                 int is_static)
22786 {
22787   for (; count-- > 0; ++psymp)
22788     {
22789       struct partial_symbol *psym = *psymp;
22790       void **slot;
22791
22792       if (SYMBOL_LANGUAGE (psym) == language_ada)
22793         error (_("Ada is not currently supported by the index"));
22794
22795       /* Only add a given psymbol once.  */
22796       slot = htab_find_slot (psyms_seen, psym, INSERT);
22797       if (!*slot)
22798         {
22799           gdb_index_symbol_kind kind = symbol_kind (psym);
22800
22801           *slot = psym;
22802           add_index_entry (symtab, SYMBOL_SEARCH_NAME (psym),
22803                            is_static, kind, cu_index);
22804         }
22805     }
22806 }
22807
22808 /* Write the contents of an ("unfinished") obstack to FILE.  Throw an
22809    exception if there is an error.  */
22810
22811 static void
22812 write_obstack (FILE *file, struct obstack *obstack)
22813 {
22814   if (fwrite (obstack_base (obstack), 1, obstack_object_size (obstack),
22815               file)
22816       != obstack_object_size (obstack))
22817     error (_("couldn't data write to file"));
22818 }
22819
22820 /* Unlink a file if the argument is not NULL.  */
22821
22822 static void
22823 unlink_if_set (void *p)
22824 {
22825   char **filename = p;
22826   if (*filename)
22827     unlink (*filename);
22828 }
22829
22830 /* A helper struct used when iterating over debug_types.  */
22831 struct signatured_type_index_data
22832 {
22833   struct objfile *objfile;
22834   struct mapped_symtab *symtab;
22835   struct obstack *types_list;
22836   htab_t psyms_seen;
22837   int cu_index;
22838 };
22839
22840 /* A helper function that writes a single signatured_type to an
22841    obstack.  */
22842
22843 static int
22844 write_one_signatured_type (void **slot, void *d)
22845 {
22846   struct signatured_type_index_data *info = d;
22847   struct signatured_type *entry = (struct signatured_type *) *slot;
22848   struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
22849   gdb_byte val[8];
22850
22851   write_psymbols (info->symtab,
22852                   info->psyms_seen,
22853                   info->objfile->global_psymbols.list
22854                   + psymtab->globals_offset,
22855                   psymtab->n_global_syms, info->cu_index,
22856                   0);
22857   write_psymbols (info->symtab,
22858                   info->psyms_seen,
22859                   info->objfile->static_psymbols.list
22860                   + psymtab->statics_offset,
22861                   psymtab->n_static_syms, info->cu_index,
22862                   1);
22863
22864   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
22865                           entry->per_cu.offset.sect_off);
22866   obstack_grow (info->types_list, val, 8);
22867   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
22868                           entry->type_offset_in_tu.cu_off);
22869   obstack_grow (info->types_list, val, 8);
22870   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->signature);
22871   obstack_grow (info->types_list, val, 8);
22872
22873   ++info->cu_index;
22874
22875   return 1;
22876 }
22877
22878 /* Recurse into all "included" dependencies and write their symbols as
22879    if they appeared in this psymtab.  */
22880
22881 static void
22882 recursively_write_psymbols (struct objfile *objfile,
22883                             struct partial_symtab *psymtab,
22884                             struct mapped_symtab *symtab,
22885                             htab_t psyms_seen,
22886                             offset_type cu_index)
22887 {
22888   int i;
22889
22890   for (i = 0; i < psymtab->number_of_dependencies; ++i)
22891     if (psymtab->dependencies[i]->user != NULL)
22892       recursively_write_psymbols (objfile, psymtab->dependencies[i],
22893                                   symtab, psyms_seen, cu_index);
22894
22895   write_psymbols (symtab,
22896                   psyms_seen,
22897                   objfile->global_psymbols.list + psymtab->globals_offset,
22898                   psymtab->n_global_syms, cu_index,
22899                   0);
22900   write_psymbols (symtab,
22901                   psyms_seen,
22902                   objfile->static_psymbols.list + psymtab->statics_offset,
22903                   psymtab->n_static_syms, cu_index,
22904                   1);
22905 }
22906
22907 /* Create an index file for OBJFILE in the directory DIR.  */
22908
22909 static void
22910 write_psymtabs_to_index (struct objfile *objfile, const char *dir)
22911 {
22912   struct cleanup *cleanup;
22913   char *filename, *cleanup_filename;
22914   struct obstack contents, addr_obstack, constant_pool, symtab_obstack;
22915   struct obstack cu_list, types_cu_list;
22916   int i;
22917   FILE *out_file;
22918   struct mapped_symtab *symtab;
22919   offset_type val, size_of_contents, total_len;
22920   struct stat st;
22921   htab_t psyms_seen;
22922   htab_t cu_index_htab;
22923   struct psymtab_cu_index_map *psymtab_cu_index_map;
22924
22925   if (dwarf2_per_objfile->using_index)
22926     error (_("Cannot use an index to create the index"));
22927
22928   if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) > 1)
22929     error (_("Cannot make an index when the file has multiple .debug_types sections"));
22930
22931   if (!objfile->psymtabs || !objfile->psymtabs_addrmap)
22932     return;
22933
22934   if (stat (objfile_name (objfile), &st) < 0)
22935     perror_with_name (objfile_name (objfile));
22936
22937   filename = concat (dir, SLASH_STRING, lbasename (objfile_name (objfile)),
22938                      INDEX_SUFFIX, (char *) NULL);
22939   cleanup = make_cleanup (xfree, filename);
22940
22941   out_file = gdb_fopen_cloexec (filename, "wb");
22942   if (!out_file)
22943     error (_("Can't open `%s' for writing"), filename);
22944
22945   cleanup_filename = filename;
22946   make_cleanup (unlink_if_set, &cleanup_filename);
22947
22948   symtab = create_mapped_symtab ();
22949   make_cleanup (cleanup_mapped_symtab, symtab);
22950
22951   obstack_init (&addr_obstack);
22952   make_cleanup_obstack_free (&addr_obstack);
22953
22954   obstack_init (&cu_list);
22955   make_cleanup_obstack_free (&cu_list);
22956
22957   obstack_init (&types_cu_list);
22958   make_cleanup_obstack_free (&types_cu_list);
22959
22960   psyms_seen = htab_create_alloc (100, htab_hash_pointer, htab_eq_pointer,
22961                                   NULL, xcalloc, xfree);
22962   make_cleanup_htab_delete (psyms_seen);
22963
22964   /* While we're scanning CU's create a table that maps a psymtab pointer
22965      (which is what addrmap records) to its index (which is what is recorded
22966      in the index file).  This will later be needed to write the address
22967      table.  */
22968   cu_index_htab = htab_create_alloc (100,
22969                                      hash_psymtab_cu_index,
22970                                      eq_psymtab_cu_index,
22971                                      NULL, xcalloc, xfree);
22972   make_cleanup_htab_delete (cu_index_htab);
22973   psymtab_cu_index_map = (struct psymtab_cu_index_map *)
22974     xmalloc (sizeof (struct psymtab_cu_index_map)
22975              * dwarf2_per_objfile->n_comp_units);
22976   make_cleanup (xfree, psymtab_cu_index_map);
22977
22978   /* The CU list is already sorted, so we don't need to do additional
22979      work here.  Also, the debug_types entries do not appear in
22980      all_comp_units, but only in their own hash table.  */
22981   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
22982     {
22983       struct dwarf2_per_cu_data *per_cu
22984         = dwarf2_per_objfile->all_comp_units[i];
22985       struct partial_symtab *psymtab = per_cu->v.psymtab;
22986       gdb_byte val[8];
22987       struct psymtab_cu_index_map *map;
22988       void **slot;
22989
22990       /* CU of a shared file from 'dwz -m' may be unused by this main file.
22991          It may be referenced from a local scope but in such case it does not
22992          need to be present in .gdb_index.  */
22993       if (psymtab == NULL)
22994         continue;
22995
22996       if (psymtab->user == NULL)
22997         recursively_write_psymbols (objfile, psymtab, symtab, psyms_seen, i);
22998
22999       map = &psymtab_cu_index_map[i];
23000       map->psymtab = psymtab;
23001       map->cu_index = i;
23002       slot = htab_find_slot (cu_index_htab, map, INSERT);
23003       gdb_assert (slot != NULL);
23004       gdb_assert (*slot == NULL);
23005       *slot = map;
23006
23007       store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23008                               per_cu->offset.sect_off);
23009       obstack_grow (&cu_list, val, 8);
23010       store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, per_cu->length);
23011       obstack_grow (&cu_list, val, 8);
23012     }
23013
23014   /* Dump the address map.  */
23015   write_address_map (objfile, &addr_obstack, cu_index_htab);
23016
23017   /* Write out the .debug_type entries, if any.  */
23018   if (dwarf2_per_objfile->signatured_types)
23019     {
23020       struct signatured_type_index_data sig_data;
23021
23022       sig_data.objfile = objfile;
23023       sig_data.symtab = symtab;
23024       sig_data.types_list = &types_cu_list;
23025       sig_data.psyms_seen = psyms_seen;
23026       sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
23027       htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
23028                               write_one_signatured_type, &sig_data);
23029     }
23030
23031   /* Now that we've processed all symbols we can shrink their cu_indices
23032      lists.  */
23033   uniquify_cu_indices (symtab);
23034
23035   obstack_init (&constant_pool);
23036   make_cleanup_obstack_free (&constant_pool);
23037   obstack_init (&symtab_obstack);
23038   make_cleanup_obstack_free (&symtab_obstack);
23039   write_hash_table (symtab, &symtab_obstack, &constant_pool);
23040
23041   obstack_init (&contents);
23042   make_cleanup_obstack_free (&contents);
23043   size_of_contents = 6 * sizeof (offset_type);
23044   total_len = size_of_contents;
23045
23046   /* The version number.  */
23047   val = MAYBE_SWAP (8);
23048   obstack_grow (&contents, &val, sizeof (val));
23049
23050   /* The offset of the CU list from the start of the file.  */
23051   val = MAYBE_SWAP (total_len);
23052   obstack_grow (&contents, &val, sizeof (val));
23053   total_len += obstack_object_size (&cu_list);
23054
23055   /* The offset of the types CU list from the start of the file.  */
23056   val = MAYBE_SWAP (total_len);
23057   obstack_grow (&contents, &val, sizeof (val));
23058   total_len += obstack_object_size (&types_cu_list);
23059
23060   /* The offset of the address table from the start of the file.  */
23061   val = MAYBE_SWAP (total_len);
23062   obstack_grow (&contents, &val, sizeof (val));
23063   total_len += obstack_object_size (&addr_obstack);
23064
23065   /* The offset of the symbol table from the start of the file.  */
23066   val = MAYBE_SWAP (total_len);
23067   obstack_grow (&contents, &val, sizeof (val));
23068   total_len += obstack_object_size (&symtab_obstack);
23069
23070   /* The offset of the constant pool from the start of the file.  */
23071   val = MAYBE_SWAP (total_len);
23072   obstack_grow (&contents, &val, sizeof (val));
23073   total_len += obstack_object_size (&constant_pool);
23074
23075   gdb_assert (obstack_object_size (&contents) == size_of_contents);
23076
23077   write_obstack (out_file, &contents);
23078   write_obstack (out_file, &cu_list);
23079   write_obstack (out_file, &types_cu_list);
23080   write_obstack (out_file, &addr_obstack);
23081   write_obstack (out_file, &symtab_obstack);
23082   write_obstack (out_file, &constant_pool);
23083
23084   fclose (out_file);
23085
23086   /* We want to keep the file, so we set cleanup_filename to NULL
23087      here.  See unlink_if_set.  */
23088   cleanup_filename = NULL;
23089
23090   do_cleanups (cleanup);
23091 }
23092
23093 /* Implementation of the `save gdb-index' command.
23094    
23095    Note that the file format used by this command is documented in the
23096    GDB manual.  Any changes here must be documented there.  */
23097
23098 static void
23099 save_gdb_index_command (char *arg, int from_tty)
23100 {
23101   struct objfile *objfile;
23102
23103   if (!arg || !*arg)
23104     error (_("usage: save gdb-index DIRECTORY"));
23105
23106   ALL_OBJFILES (objfile)
23107   {
23108     struct stat st;
23109
23110     /* If the objfile does not correspond to an actual file, skip it.  */
23111     if (stat (objfile_name (objfile), &st) < 0)
23112       continue;
23113
23114     dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
23115     if (dwarf2_per_objfile)
23116       {
23117         volatile struct gdb_exception except;
23118
23119         TRY_CATCH (except, RETURN_MASK_ERROR)
23120           {
23121             write_psymtabs_to_index (objfile, arg);
23122           }
23123         if (except.reason < 0)
23124           exception_fprintf (gdb_stderr, except,
23125                              _("Error while writing index for `%s': "),
23126                              objfile_name (objfile));
23127       }
23128   }
23129 }
23130
23131 \f
23132
23133 int dwarf2_always_disassemble;
23134
23135 static void
23136 show_dwarf2_always_disassemble (struct ui_file *file, int from_tty,
23137                                 struct cmd_list_element *c, const char *value)
23138 {
23139   fprintf_filtered (file,
23140                     _("Whether to always disassemble "
23141                       "DWARF expressions is %s.\n"),
23142                     value);
23143 }
23144
23145 static void
23146 show_check_physname (struct ui_file *file, int from_tty,
23147                      struct cmd_list_element *c, const char *value)
23148 {
23149   fprintf_filtered (file,
23150                     _("Whether to check \"physname\" is %s.\n"),
23151                     value);
23152 }
23153
23154 void _initialize_dwarf2_read (void);
23155
23156 void
23157 _initialize_dwarf2_read (void)
23158 {
23159   struct cmd_list_element *c;
23160
23161   dwarf2_objfile_data_key
23162     = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
23163
23164   add_prefix_cmd ("dwarf2", class_maintenance, set_dwarf2_cmd, _("\
23165 Set DWARF 2 specific variables.\n\
23166 Configure DWARF 2 variables such as the cache size"),
23167                   &set_dwarf2_cmdlist, "maintenance set dwarf2 ",
23168                   0/*allow-unknown*/, &maintenance_set_cmdlist);
23169
23170   add_prefix_cmd ("dwarf2", class_maintenance, show_dwarf2_cmd, _("\
23171 Show DWARF 2 specific variables\n\
23172 Show DWARF 2 variables such as the cache size"),
23173                   &show_dwarf2_cmdlist, "maintenance show dwarf2 ",
23174                   0/*allow-unknown*/, &maintenance_show_cmdlist);
23175
23176   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
23177                             &dwarf2_max_cache_age, _("\
23178 Set the upper bound on the age of cached dwarf2 compilation units."), _("\
23179 Show the upper bound on the age of cached dwarf2 compilation units."), _("\
23180 A higher limit means that cached compilation units will be stored\n\
23181 in memory longer, and more total memory will be used.  Zero disables\n\
23182 caching, which can slow down startup."),
23183                             NULL,
23184                             show_dwarf2_max_cache_age,
23185                             &set_dwarf2_cmdlist,
23186                             &show_dwarf2_cmdlist);
23187
23188   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
23189                            &dwarf2_always_disassemble, _("\
23190 Set whether `info address' always disassembles DWARF expressions."), _("\
23191 Show whether `info address' always disassembles DWARF expressions."), _("\
23192 When enabled, DWARF expressions are always printed in an assembly-like\n\
23193 syntax.  When disabled, expressions will be printed in a more\n\
23194 conversational style, when possible."),
23195                            NULL,
23196                            show_dwarf2_always_disassemble,
23197                            &set_dwarf2_cmdlist,
23198                            &show_dwarf2_cmdlist);
23199
23200   add_setshow_zuinteger_cmd ("dwarf2-read", no_class, &dwarf2_read_debug, _("\
23201 Set debugging of the dwarf2 reader."), _("\
23202 Show debugging of the dwarf2 reader."), _("\
23203 When enabled (non-zero), debugging messages are printed during dwarf2\n\
23204 reading and symtab expansion.  A value of 1 (one) provides basic\n\
23205 information.  A value greater than 1 provides more verbose information."),
23206                             NULL,
23207                             NULL,
23208                             &setdebuglist, &showdebuglist);
23209
23210   add_setshow_zuinteger_cmd ("dwarf2-die", no_class, &dwarf2_die_debug, _("\
23211 Set debugging of the dwarf2 DIE reader."), _("\
23212 Show debugging of the dwarf2 DIE reader."), _("\
23213 When enabled (non-zero), DIEs are dumped after they are read in.\n\
23214 The value is the maximum depth to print."),
23215                              NULL,
23216                              NULL,
23217                              &setdebuglist, &showdebuglist);
23218
23219   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
23220 Set cross-checking of \"physname\" code against demangler."), _("\
23221 Show cross-checking of \"physname\" code against demangler."), _("\
23222 When enabled, GDB's internal \"physname\" code is checked against\n\
23223 the demangler."),
23224                            NULL, show_check_physname,
23225                            &setdebuglist, &showdebuglist);
23226
23227   add_setshow_boolean_cmd ("use-deprecated-index-sections",
23228                            no_class, &use_deprecated_index_sections, _("\
23229 Set whether to use deprecated gdb_index sections."), _("\
23230 Show whether to use deprecated gdb_index sections."), _("\
23231 When enabled, deprecated .gdb_index sections are used anyway.\n\
23232 Normally they are ignored either because of a missing feature or\n\
23233 performance issue.\n\
23234 Warning: This option must be enabled before gdb reads the file."),
23235                            NULL,
23236                            NULL,
23237                            &setlist, &showlist);
23238
23239   c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
23240                _("\
23241 Save a gdb-index file.\n\
23242 Usage: save gdb-index DIRECTORY"),
23243                &save_cmdlist);
23244   set_cmd_completer (c, filename_completer);
23245
23246   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
23247                                                         &dwarf2_locexpr_funcs);
23248   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
23249                                                         &dwarf2_loclist_funcs);
23250
23251   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
23252                                         &dwarf2_block_frame_base_locexpr_funcs);
23253   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
23254                                         &dwarf2_block_frame_base_loclist_funcs);
23255 }