Further workarounds for binutils/15021.
[platform/upstream/binutils.git] / gdb / dwarf2read.c
1 /* DWARF 2 debugging format support for GDB.
2
3    Copyright (C) 1994-2013 Free Software Foundation, Inc.
4
5    Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
6    Inc.  with support from Florida State University (under contract
7    with the Ada Joint Program Office), and Silicon Graphics, Inc.
8    Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
9    based on Fred Fish's (Cygnus Support) implementation of DWARF 1
10    support.
11
12    This file is part of GDB.
13
14    This program is free software; you can redistribute it and/or modify
15    it under the terms of the GNU General Public License as published by
16    the Free Software Foundation; either version 3 of the License, or
17    (at your option) any later version.
18
19    This program is distributed in the hope that it will be useful,
20    but WITHOUT ANY WARRANTY; without even the implied warranty of
21    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22    GNU General Public License for more details.
23
24    You should have received a copy of the GNU General Public License
25    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
26
27 /* FIXME: Various die-reading functions need to be more careful with
28    reading off the end of the section.
29    E.g., load_partial_dies, read_partial_die.  */
30
31 #include "defs.h"
32 #include "bfd.h"
33 #include "elf-bfd.h"
34 #include "symtab.h"
35 #include "gdbtypes.h"
36 #include "objfiles.h"
37 #include "dwarf2.h"
38 #include "buildsym.h"
39 #include "demangle.h"
40 #include "gdb-demangle.h"
41 #include "expression.h"
42 #include "filenames.h"  /* for DOSish file names */
43 #include "macrotab.h"
44 #include "language.h"
45 #include "complaints.h"
46 #include "bcache.h"
47 #include "dwarf2expr.h"
48 #include "dwarf2loc.h"
49 #include "cp-support.h"
50 #include "hashtab.h"
51 #include "command.h"
52 #include "gdbcmd.h"
53 #include "block.h"
54 #include "addrmap.h"
55 #include "typeprint.h"
56 #include "jv-lang.h"
57 #include "psympriv.h"
58 #include "exceptions.h"
59 #include "gdb_stat.h"
60 #include "completer.h"
61 #include "vec.h"
62 #include "c-lang.h"
63 #include "go-lang.h"
64 #include "valprint.h"
65 #include "gdbcore.h" /* for gnutarget */
66 #include "gdb/gdb-index.h"
67 #include <ctype.h>
68 #include "gdb_bfd.h"
69 #include "f-lang.h"
70 #include "source.h"
71 #include "filestuff.h"
72
73 #include <fcntl.h>
74 #include "gdb_string.h"
75 #include "gdb_assert.h"
76 #include <sys/types.h>
77
78 typedef struct symbol *symbolp;
79 DEF_VEC_P (symbolp);
80
81 /* When non-zero, print basic high level tracing messages.
82    This is in contrast to the low level DIE reading of dwarf2_die_debug.  */
83 static int dwarf2_read_debug = 0;
84
85 /* When non-zero, dump DIEs after they are read in.  */
86 static unsigned int dwarf2_die_debug = 0;
87
88 /* When non-zero, cross-check physname against demangler.  */
89 static int check_physname = 0;
90
91 /* When non-zero, do not reject deprecated .gdb_index sections.  */
92 static int use_deprecated_index_sections = 0;
93
94 static const struct objfile_data *dwarf2_objfile_data_key;
95
96 /* The "aclass" indices for various kinds of computed DWARF symbols.  */
97
98 static int dwarf2_locexpr_index;
99 static int dwarf2_loclist_index;
100 static int dwarf2_locexpr_block_index;
101 static int dwarf2_loclist_block_index;
102
103 struct dwarf2_section_info
104 {
105   asection *asection;
106   const gdb_byte *buffer;
107   bfd_size_type size;
108   /* True if we have tried to read this section.  */
109   int readin;
110 };
111
112 typedef struct dwarf2_section_info dwarf2_section_info_def;
113 DEF_VEC_O (dwarf2_section_info_def);
114
115 /* All offsets in the index are of this type.  It must be
116    architecture-independent.  */
117 typedef uint32_t offset_type;
118
119 DEF_VEC_I (offset_type);
120
121 /* Ensure only legit values are used.  */
122 #define DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE(cu_index, value) \
123   do { \
124     gdb_assert ((unsigned int) (value) <= 1); \
125     GDB_INDEX_SYMBOL_STATIC_SET_VALUE((cu_index), (value)); \
126   } while (0)
127
128 /* Ensure only legit values are used.  */
129 #define DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE(cu_index, value) \
130   do { \
131     gdb_assert ((value) >= GDB_INDEX_SYMBOL_KIND_TYPE \
132                 && (value) <= GDB_INDEX_SYMBOL_KIND_OTHER); \
133     GDB_INDEX_SYMBOL_KIND_SET_VALUE((cu_index), (value)); \
134   } while (0)
135
136 /* Ensure we don't use more than the alloted nuber of bits for the CU.  */
137 #define DW2_GDB_INDEX_CU_SET_VALUE(cu_index, value) \
138   do { \
139     gdb_assert (((value) & ~GDB_INDEX_CU_MASK) == 0); \
140     GDB_INDEX_CU_SET_VALUE((cu_index), (value)); \
141   } while (0)
142
143 /* A description of the mapped index.  The file format is described in
144    a comment by the code that writes the index.  */
145 struct mapped_index
146 {
147   /* Index data format version.  */
148   int version;
149
150   /* The total length of the buffer.  */
151   off_t total_size;
152
153   /* A pointer to the address table data.  */
154   const gdb_byte *address_table;
155
156   /* Size of the address table data in bytes.  */
157   offset_type address_table_size;
158
159   /* The symbol table, implemented as a hash table.  */
160   const offset_type *symbol_table;
161
162   /* Size in slots, each slot is 2 offset_types.  */
163   offset_type symbol_table_slots;
164
165   /* A pointer to the constant pool.  */
166   const char *constant_pool;
167 };
168
169 typedef struct dwarf2_per_cu_data *dwarf2_per_cu_ptr;
170 DEF_VEC_P (dwarf2_per_cu_ptr);
171
172 /* Collection of data recorded per objfile.
173    This hangs off of dwarf2_objfile_data_key.  */
174
175 struct dwarf2_per_objfile
176 {
177   struct dwarf2_section_info info;
178   struct dwarf2_section_info abbrev;
179   struct dwarf2_section_info line;
180   struct dwarf2_section_info loc;
181   struct dwarf2_section_info macinfo;
182   struct dwarf2_section_info macro;
183   struct dwarf2_section_info str;
184   struct dwarf2_section_info ranges;
185   struct dwarf2_section_info addr;
186   struct dwarf2_section_info frame;
187   struct dwarf2_section_info eh_frame;
188   struct dwarf2_section_info gdb_index;
189
190   VEC (dwarf2_section_info_def) *types;
191
192   /* Back link.  */
193   struct objfile *objfile;
194
195   /* Table of all the compilation units.  This is used to locate
196      the target compilation unit of a particular reference.  */
197   struct dwarf2_per_cu_data **all_comp_units;
198
199   /* The number of compilation units in ALL_COMP_UNITS.  */
200   int n_comp_units;
201
202   /* The number of .debug_types-related CUs.  */
203   int n_type_units;
204
205   /* The .debug_types-related CUs (TUs).
206      This is stored in malloc space because we may realloc it.  */
207   struct signatured_type **all_type_units;
208
209   /* The number of entries in all_type_unit_groups.  */
210   int n_type_unit_groups;
211
212   /* Table of type unit groups.
213      This exists to make it easy to iterate over all CUs and TU groups.  */
214   struct type_unit_group **all_type_unit_groups;
215
216   /* Table of struct type_unit_group objects.
217      The hash key is the DW_AT_stmt_list value.  */
218   htab_t type_unit_groups;
219
220   /* A table mapping .debug_types signatures to its signatured_type entry.
221      This is NULL if the .debug_types section hasn't been read in yet.  */
222   htab_t signatured_types;
223
224   /* Type unit statistics, to see how well the scaling improvements
225      are doing.  */
226   struct tu_stats
227   {
228     int nr_uniq_abbrev_tables;
229     int nr_symtabs;
230     int nr_symtab_sharers;
231     int nr_stmt_less_type_units;
232   } tu_stats;
233
234   /* A chain of compilation units that are currently read in, so that
235      they can be freed later.  */
236   struct dwarf2_per_cu_data *read_in_chain;
237
238   /* A table mapping DW_AT_dwo_name values to struct dwo_file objects.
239      This is NULL if the table hasn't been allocated yet.  */
240   htab_t dwo_files;
241
242   /* Non-zero if we've check for whether there is a DWP file.  */
243   int dwp_checked;
244
245   /* The DWP file if there is one, or NULL.  */
246   struct dwp_file *dwp_file;
247
248   /* The shared '.dwz' file, if one exists.  This is used when the
249      original data was compressed using 'dwz -m'.  */
250   struct dwz_file *dwz_file;
251
252   /* A flag indicating wether this objfile has a section loaded at a
253      VMA of 0.  */
254   int has_section_at_zero;
255
256   /* True if we are using the mapped index,
257      or we are faking it for OBJF_READNOW's sake.  */
258   unsigned char using_index;
259
260   /* The mapped index, or NULL if .gdb_index is missing or not being used.  */
261   struct mapped_index *index_table;
262
263   /* When using index_table, this keeps track of all quick_file_names entries.
264      TUs typically share line table entries with a CU, so we maintain a
265      separate table of all line table entries to support the sharing.
266      Note that while there can be way more TUs than CUs, we've already
267      sorted all the TUs into "type unit groups", grouped by their
268      DW_AT_stmt_list value.  Therefore the only sharing done here is with a
269      CU and its associated TU group if there is one.  */
270   htab_t quick_file_names_table;
271
272   /* Set during partial symbol reading, to prevent queueing of full
273      symbols.  */
274   int reading_partial_symbols;
275
276   /* Table mapping type DIEs to their struct type *.
277      This is NULL if not allocated yet.
278      The mapping is done via (CU/TU + DIE offset) -> type.  */
279   htab_t die_type_hash;
280
281   /* The CUs we recently read.  */
282   VEC (dwarf2_per_cu_ptr) *just_read_cus;
283 };
284
285 static struct dwarf2_per_objfile *dwarf2_per_objfile;
286
287 /* Default names of the debugging sections.  */
288
289 /* Note that if the debugging section has been compressed, it might
290    have a name like .zdebug_info.  */
291
292 static const struct dwarf2_debug_sections dwarf2_elf_names =
293 {
294   { ".debug_info", ".zdebug_info" },
295   { ".debug_abbrev", ".zdebug_abbrev" },
296   { ".debug_line", ".zdebug_line" },
297   { ".debug_loc", ".zdebug_loc" },
298   { ".debug_macinfo", ".zdebug_macinfo" },
299   { ".debug_macro", ".zdebug_macro" },
300   { ".debug_str", ".zdebug_str" },
301   { ".debug_ranges", ".zdebug_ranges" },
302   { ".debug_types", ".zdebug_types" },
303   { ".debug_addr", ".zdebug_addr" },
304   { ".debug_frame", ".zdebug_frame" },
305   { ".eh_frame", NULL },
306   { ".gdb_index", ".zgdb_index" },
307   23
308 };
309
310 /* List of DWO/DWP sections.  */
311
312 static const struct dwop_section_names
313 {
314   struct dwarf2_section_names abbrev_dwo;
315   struct dwarf2_section_names info_dwo;
316   struct dwarf2_section_names line_dwo;
317   struct dwarf2_section_names loc_dwo;
318   struct dwarf2_section_names macinfo_dwo;
319   struct dwarf2_section_names macro_dwo;
320   struct dwarf2_section_names str_dwo;
321   struct dwarf2_section_names str_offsets_dwo;
322   struct dwarf2_section_names types_dwo;
323   struct dwarf2_section_names cu_index;
324   struct dwarf2_section_names tu_index;
325 }
326 dwop_section_names =
327 {
328   { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
329   { ".debug_info.dwo", ".zdebug_info.dwo" },
330   { ".debug_line.dwo", ".zdebug_line.dwo" },
331   { ".debug_loc.dwo", ".zdebug_loc.dwo" },
332   { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
333   { ".debug_macro.dwo", ".zdebug_macro.dwo" },
334   { ".debug_str.dwo", ".zdebug_str.dwo" },
335   { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
336   { ".debug_types.dwo", ".zdebug_types.dwo" },
337   { ".debug_cu_index", ".zdebug_cu_index" },
338   { ".debug_tu_index", ".zdebug_tu_index" },
339 };
340
341 /* local data types */
342
343 /* The data in a compilation unit header, after target2host
344    translation, looks like this.  */
345 struct comp_unit_head
346 {
347   unsigned int length;
348   short version;
349   unsigned char addr_size;
350   unsigned char signed_addr_p;
351   sect_offset abbrev_offset;
352
353   /* Size of file offsets; either 4 or 8.  */
354   unsigned int offset_size;
355
356   /* Size of the length field; either 4 or 12.  */
357   unsigned int initial_length_size;
358
359   /* Offset to the first byte of this compilation unit header in the
360      .debug_info section, for resolving relative reference dies.  */
361   sect_offset offset;
362
363   /* Offset to first die in this cu from the start of the cu.
364      This will be the first byte following the compilation unit header.  */
365   cu_offset first_die_offset;
366 };
367
368 /* Type used for delaying computation of method physnames.
369    See comments for compute_delayed_physnames.  */
370 struct delayed_method_info
371 {
372   /* The type to which the method is attached, i.e., its parent class.  */
373   struct type *type;
374
375   /* The index of the method in the type's function fieldlists.  */
376   int fnfield_index;
377
378   /* The index of the method in the fieldlist.  */
379   int index;
380
381   /* The name of the DIE.  */
382   const char *name;
383
384   /*  The DIE associated with this method.  */
385   struct die_info *die;
386 };
387
388 typedef struct delayed_method_info delayed_method_info;
389 DEF_VEC_O (delayed_method_info);
390
391 /* Internal state when decoding a particular compilation unit.  */
392 struct dwarf2_cu
393 {
394   /* The objfile containing this compilation unit.  */
395   struct objfile *objfile;
396
397   /* The header of the compilation unit.  */
398   struct comp_unit_head header;
399
400   /* Base address of this compilation unit.  */
401   CORE_ADDR base_address;
402
403   /* Non-zero if base_address has been set.  */
404   int base_known;
405
406   /* The language we are debugging.  */
407   enum language language;
408   const struct language_defn *language_defn;
409
410   const char *producer;
411
412   /* The generic symbol table building routines have separate lists for
413      file scope symbols and all all other scopes (local scopes).  So
414      we need to select the right one to pass to add_symbol_to_list().
415      We do it by keeping a pointer to the correct list in list_in_scope.
416
417      FIXME: The original dwarf code just treated the file scope as the
418      first local scope, and all other local scopes as nested local
419      scopes, and worked fine.  Check to see if we really need to
420      distinguish these in buildsym.c.  */
421   struct pending **list_in_scope;
422
423   /* The abbrev table for this CU.
424      Normally this points to the abbrev table in the objfile.
425      But if DWO_UNIT is non-NULL this is the abbrev table in the DWO file.  */
426   struct abbrev_table *abbrev_table;
427
428   /* Hash table holding all the loaded partial DIEs
429      with partial_die->offset.SECT_OFF as hash.  */
430   htab_t partial_dies;
431
432   /* Storage for things with the same lifetime as this read-in compilation
433      unit, including partial DIEs.  */
434   struct obstack comp_unit_obstack;
435
436   /* When multiple dwarf2_cu structures are living in memory, this field
437      chains them all together, so that they can be released efficiently.
438      We will probably also want a generation counter so that most-recently-used
439      compilation units are cached...  */
440   struct dwarf2_per_cu_data *read_in_chain;
441
442   /* Backchain to our per_cu entry if the tree has been built.  */
443   struct dwarf2_per_cu_data *per_cu;
444
445   /* How many compilation units ago was this CU last referenced?  */
446   int last_used;
447
448   /* A hash table of DIE cu_offset for following references with
449      die_info->offset.sect_off as hash.  */
450   htab_t die_hash;
451
452   /* Full DIEs if read in.  */
453   struct die_info *dies;
454
455   /* A set of pointers to dwarf2_per_cu_data objects for compilation
456      units referenced by this one.  Only set during full symbol processing;
457      partial symbol tables do not have dependencies.  */
458   htab_t dependencies;
459
460   /* Header data from the line table, during full symbol processing.  */
461   struct line_header *line_header;
462
463   /* A list of methods which need to have physnames computed
464      after all type information has been read.  */
465   VEC (delayed_method_info) *method_list;
466
467   /* To be copied to symtab->call_site_htab.  */
468   htab_t call_site_htab;
469
470   /* Non-NULL if this CU came from a DWO file.
471      There is an invariant here that is important to remember:
472      Except for attributes copied from the top level DIE in the "main"
473      (or "stub") file in preparation for reading the DWO file
474      (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
475      Either there isn't a DWO file (in which case this is NULL and the point
476      is moot), or there is and either we're not going to read it (in which
477      case this is NULL) or there is and we are reading it (in which case this
478      is non-NULL).  */
479   struct dwo_unit *dwo_unit;
480
481   /* The DW_AT_addr_base attribute if present, zero otherwise
482      (zero is a valid value though).
483      Note this value comes from the stub CU/TU's DIE.  */
484   ULONGEST addr_base;
485
486   /* The DW_AT_ranges_base attribute if present, zero otherwise
487      (zero is a valid value though).
488      Note this value comes from the stub CU/TU's DIE.
489      Also note that the value is zero in the non-DWO case so this value can
490      be used without needing to know whether DWO files are in use or not.
491      N.B. This does not apply to DW_AT_ranges appearing in
492      DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
493      DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
494      DW_AT_ranges_base *would* have to be applied, and we'd have to care
495      whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
496   ULONGEST ranges_base;
497
498   /* Mark used when releasing cached dies.  */
499   unsigned int mark : 1;
500
501   /* This CU references .debug_loc.  See the symtab->locations_valid field.
502      This test is imperfect as there may exist optimized debug code not using
503      any location list and still facing inlining issues if handled as
504      unoptimized code.  For a future better test see GCC PR other/32998.  */
505   unsigned int has_loclist : 1;
506
507   /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is set
508      if all the producer_is_* fields are valid.  This information is cached
509      because profiling CU expansion showed excessive time spent in
510      producer_is_gxx_lt_4_6.  */
511   unsigned int checked_producer : 1;
512   unsigned int producer_is_gxx_lt_4_6 : 1;
513   unsigned int producer_is_gcc_lt_4_3 : 1;
514   unsigned int producer_is_icc : 1;
515
516   /* When set, the file that we're processing is known to have
517      debugging info for C++ namespaces.  GCC 3.3.x did not produce
518      this information, but later versions do.  */
519
520   unsigned int processing_has_namespace_info : 1;
521 };
522
523 /* Persistent data held for a compilation unit, even when not
524    processing it.  We put a pointer to this structure in the
525    read_symtab_private field of the psymtab.  */
526
527 struct dwarf2_per_cu_data
528 {
529   /* The start offset and length of this compilation unit.
530      NOTE: Unlike comp_unit_head.length, this length includes
531      initial_length_size.
532      If the DIE refers to a DWO file, this is always of the original die,
533      not the DWO file.  */
534   sect_offset offset;
535   unsigned int length;
536
537   /* Flag indicating this compilation unit will be read in before
538      any of the current compilation units are processed.  */
539   unsigned int queued : 1;
540
541   /* This flag will be set when reading partial DIEs if we need to load
542      absolutely all DIEs for this compilation unit, instead of just the ones
543      we think are interesting.  It gets set if we look for a DIE in the
544      hash table and don't find it.  */
545   unsigned int load_all_dies : 1;
546
547   /* Non-zero if this CU is from .debug_types.
548      Struct dwarf2_per_cu_data is contained in struct signatured_type iff
549      this is non-zero.  */
550   unsigned int is_debug_types : 1;
551
552   /* Non-zero if this CU is from the .dwz file.  */
553   unsigned int is_dwz : 1;
554
555   /* Non-zero if reading a TU directly from a DWO file, bypassing the stub.
556      This flag is only valid if is_debug_types is true.
557      We can't read a CU directly from a DWO file: There are required
558      attributes in the stub.  */
559   unsigned int reading_dwo_directly : 1;
560
561   /* The section this CU/TU lives in.
562      If the DIE refers to a DWO file, this is always the original die,
563      not the DWO file.  */
564   struct dwarf2_section_info *section;
565
566   /* Set to non-NULL iff this CU is currently loaded.  When it gets freed out
567      of the CU cache it gets reset to NULL again.  */
568   struct dwarf2_cu *cu;
569
570   /* The corresponding objfile.
571      Normally we can get the objfile from dwarf2_per_objfile.
572      However we can enter this file with just a "per_cu" handle.  */
573   struct objfile *objfile;
574
575   /* When using partial symbol tables, the 'psymtab' field is active.
576      Otherwise the 'quick' field is active.  */
577   union
578   {
579     /* The partial symbol table associated with this compilation unit,
580        or NULL for unread partial units.  */
581     struct partial_symtab *psymtab;
582
583     /* Data needed by the "quick" functions.  */
584     struct dwarf2_per_cu_quick_data *quick;
585   } v;
586
587   /* The CUs we import using DW_TAG_imported_unit.  This is filled in
588      while reading psymtabs, used to compute the psymtab dependencies,
589      and then cleared.  Then it is filled in again while reading full
590      symbols, and only deleted when the objfile is destroyed.
591
592      This is also used to work around a difference between the way gold
593      generates .gdb_index version <=7 and the way gdb does.  Arguably this
594      is a gold bug.  For symbols coming from TUs, gold records in the index
595      the CU that includes the TU instead of the TU itself.  This breaks
596      dw2_lookup_symbol: It assumes that if the index says symbol X lives
597      in CU/TU Y, then one need only expand Y and a subsequent lookup in Y
598      will find X.  Alas TUs live in their own symtab, so after expanding CU Y
599      we need to look in TU Z to find X.  Fortunately, this is akin to
600      DW_TAG_imported_unit, so we just use the same mechanism: For
601      .gdb_index version <=7 this also records the TUs that the CU referred
602      to.  Concurrently with this change gdb was modified to emit version 8
603      indices so we only pay a price for gold generated indices.  */
604   VEC (dwarf2_per_cu_ptr) *imported_symtabs;
605 };
606
607 /* Entry in the signatured_types hash table.  */
608
609 struct signatured_type
610 {
611   /* The "per_cu" object of this type.
612      This struct is used iff per_cu.is_debug_types.
613      N.B.: This is the first member so that it's easy to convert pointers
614      between them.  */
615   struct dwarf2_per_cu_data per_cu;
616
617   /* The type's signature.  */
618   ULONGEST signature;
619
620   /* Offset in the TU of the type's DIE, as read from the TU header.
621      If this TU is a DWO stub and the definition lives in a DWO file
622      (specified by DW_AT_GNU_dwo_name), this value is unusable.  */
623   cu_offset type_offset_in_tu;
624
625   /* Offset in the section of the type's DIE.
626      If the definition lives in a DWO file, this is the offset in the
627      .debug_types.dwo section.
628      The value is zero until the actual value is known.
629      Zero is otherwise not a valid section offset.  */
630   sect_offset type_offset_in_section;
631
632   /* Type units are grouped by their DW_AT_stmt_list entry so that they
633      can share them.  This points to the containing symtab.  */
634   struct type_unit_group *type_unit_group;
635
636   /* The type.
637      The first time we encounter this type we fully read it in and install it
638      in the symbol tables.  Subsequent times we only need the type.  */
639   struct type *type;
640
641   /* Containing DWO unit.
642      This field is valid iff per_cu.reading_dwo_directly.  */
643   struct dwo_unit *dwo_unit;
644 };
645
646 typedef struct signatured_type *sig_type_ptr;
647 DEF_VEC_P (sig_type_ptr);
648
649 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
650    This includes type_unit_group and quick_file_names.  */
651
652 struct stmt_list_hash
653 {
654   /* The DWO unit this table is from or NULL if there is none.  */
655   struct dwo_unit *dwo_unit;
656
657   /* Offset in .debug_line or .debug_line.dwo.  */
658   sect_offset line_offset;
659 };
660
661 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
662    an object of this type.  */
663
664 struct type_unit_group
665 {
666   /* dwarf2read.c's main "handle" on a TU symtab.
667      To simplify things we create an artificial CU that "includes" all the
668      type units using this stmt_list so that the rest of the code still has
669      a "per_cu" handle on the symtab.
670      This PER_CU is recognized by having no section.  */
671 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
672   struct dwarf2_per_cu_data per_cu;
673
674   /* The TUs that share this DW_AT_stmt_list entry.
675      This is added to while parsing type units to build partial symtabs,
676      and is deleted afterwards and not used again.  */
677   VEC (sig_type_ptr) *tus;
678
679   /* The primary symtab.
680      Type units in a group needn't all be defined in the same source file,
681      so we create an essentially anonymous symtab as the primary symtab.  */
682   struct symtab *primary_symtab;
683
684   /* The data used to construct the hash key.  */
685   struct stmt_list_hash hash;
686
687   /* The number of symtabs from the line header.
688      The value here must match line_header.num_file_names.  */
689   unsigned int num_symtabs;
690
691   /* The symbol tables for this TU (obtained from the files listed in
692      DW_AT_stmt_list).
693      WARNING: The order of entries here must match the order of entries
694      in the line header.  After the first TU using this type_unit_group, the
695      line header for the subsequent TUs is recreated from this.  This is done
696      because we need to use the same symtabs for each TU using the same
697      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
698      there's no guarantee the line header doesn't have duplicate entries.  */
699   struct symtab **symtabs;
700 };
701
702 /* These sections are what may appear in a DWO file.  */
703
704 struct dwo_sections
705 {
706   struct dwarf2_section_info abbrev;
707   struct dwarf2_section_info line;
708   struct dwarf2_section_info loc;
709   struct dwarf2_section_info macinfo;
710   struct dwarf2_section_info macro;
711   struct dwarf2_section_info str;
712   struct dwarf2_section_info str_offsets;
713   /* In the case of a virtual DWO file, these two are unused.  */
714   struct dwarf2_section_info info;
715   VEC (dwarf2_section_info_def) *types;
716 };
717
718 /* CUs/TUs in DWP/DWO files.  */
719
720 struct dwo_unit
721 {
722   /* Backlink to the containing struct dwo_file.  */
723   struct dwo_file *dwo_file;
724
725   /* The "id" that distinguishes this CU/TU.
726      .debug_info calls this "dwo_id", .debug_types calls this "signature".
727      Since signatures came first, we stick with it for consistency.  */
728   ULONGEST signature;
729
730   /* The section this CU/TU lives in, in the DWO file.  */
731   struct dwarf2_section_info *section;
732
733   /* Same as dwarf2_per_cu_data:{offset,length} but for the DWO section.  */
734   sect_offset offset;
735   unsigned int length;
736
737   /* For types, offset in the type's DIE of the type defined by this TU.  */
738   cu_offset type_offset_in_tu;
739 };
740
741 /* Data for one DWO file.
742    This includes virtual DWO files that have been packaged into a
743    DWP file.  */
744
745 struct dwo_file
746 {
747   /* The DW_AT_GNU_dwo_name attribute.
748      For virtual DWO files the name is constructed from the section offsets
749      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
750      from related CU+TUs.  */
751   const char *dwo_name;
752
753   /* The DW_AT_comp_dir attribute.  */
754   const char *comp_dir;
755
756   /* The bfd, when the file is open.  Otherwise this is NULL.
757      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
758   bfd *dbfd;
759
760   /* Section info for this file.  */
761   struct dwo_sections sections;
762
763   /* The CU in the file.
764      We only support one because having more than one requires hacking the
765      dwo_name of each to match, which is highly unlikely to happen.
766      Doing this means all TUs can share comp_dir: We also assume that
767      DW_AT_comp_dir across all TUs in a DWO file will be identical.  */
768   struct dwo_unit *cu;
769
770   /* Table of TUs in the file.
771      Each element is a struct dwo_unit.  */
772   htab_t tus;
773 };
774
775 /* These sections are what may appear in a DWP file.  */
776
777 struct dwp_sections
778 {
779   struct dwarf2_section_info str;
780   struct dwarf2_section_info cu_index;
781   struct dwarf2_section_info tu_index;
782   /* The .debug_info.dwo, .debug_types.dwo, and other sections are referenced
783      by section number.  We don't need to record them here.  */
784 };
785
786 /* These sections are what may appear in a virtual DWO file.  */
787
788 struct virtual_dwo_sections
789 {
790   struct dwarf2_section_info abbrev;
791   struct dwarf2_section_info line;
792   struct dwarf2_section_info loc;
793   struct dwarf2_section_info macinfo;
794   struct dwarf2_section_info macro;
795   struct dwarf2_section_info str_offsets;
796   /* Each DWP hash table entry records one CU or one TU.
797      That is recorded here, and copied to dwo_unit.section.  */
798   struct dwarf2_section_info info_or_types;
799 };
800
801 /* Contents of DWP hash tables.  */
802
803 struct dwp_hash_table
804 {
805   uint32_t nr_units, nr_slots;
806   const gdb_byte *hash_table, *unit_table, *section_pool;
807 };
808
809 /* Data for one DWP file.  */
810
811 struct dwp_file
812 {
813   /* Name of the file.  */
814   const char *name;
815
816   /* The bfd.  */
817   bfd *dbfd;
818
819   /* Section info for this file.  */
820   struct dwp_sections sections;
821
822   /* Table of CUs in the file. */
823   const struct dwp_hash_table *cus;
824
825   /* Table of TUs in the file.  */
826   const struct dwp_hash_table *tus;
827
828   /* Table of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
829   htab_t loaded_cutus;
830
831   /* Table to map ELF section numbers to their sections.  */
832   unsigned int num_sections;
833   asection **elf_sections;
834 };
835
836 /* This represents a '.dwz' file.  */
837
838 struct dwz_file
839 {
840   /* A dwz file can only contain a few sections.  */
841   struct dwarf2_section_info abbrev;
842   struct dwarf2_section_info info;
843   struct dwarf2_section_info str;
844   struct dwarf2_section_info line;
845   struct dwarf2_section_info macro;
846   struct dwarf2_section_info gdb_index;
847
848   /* The dwz's BFD.  */
849   bfd *dwz_bfd;
850 };
851
852 /* Struct used to pass misc. parameters to read_die_and_children, et
853    al.  which are used for both .debug_info and .debug_types dies.
854    All parameters here are unchanging for the life of the call.  This
855    struct exists to abstract away the constant parameters of die reading.  */
856
857 struct die_reader_specs
858 {
859   /* die_section->asection->owner.  */
860   bfd* abfd;
861
862   /* The CU of the DIE we are parsing.  */
863   struct dwarf2_cu *cu;
864
865   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
866   struct dwo_file *dwo_file;
867
868   /* The section the die comes from.
869      This is either .debug_info or .debug_types, or the .dwo variants.  */
870   struct dwarf2_section_info *die_section;
871
872   /* die_section->buffer.  */
873   const gdb_byte *buffer;
874
875   /* The end of the buffer.  */
876   const gdb_byte *buffer_end;
877
878   /* The value of the DW_AT_comp_dir attribute.  */
879   const char *comp_dir;
880 };
881
882 /* Type of function passed to init_cutu_and_read_dies, et.al.  */
883 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
884                                       const gdb_byte *info_ptr,
885                                       struct die_info *comp_unit_die,
886                                       int has_children,
887                                       void *data);
888
889 /* The line number information for a compilation unit (found in the
890    .debug_line section) begins with a "statement program header",
891    which contains the following information.  */
892 struct line_header
893 {
894   unsigned int total_length;
895   unsigned short version;
896   unsigned int header_length;
897   unsigned char minimum_instruction_length;
898   unsigned char maximum_ops_per_instruction;
899   unsigned char default_is_stmt;
900   int line_base;
901   unsigned char line_range;
902   unsigned char opcode_base;
903
904   /* standard_opcode_lengths[i] is the number of operands for the
905      standard opcode whose value is i.  This means that
906      standard_opcode_lengths[0] is unused, and the last meaningful
907      element is standard_opcode_lengths[opcode_base - 1].  */
908   unsigned char *standard_opcode_lengths;
909
910   /* The include_directories table.  NOTE!  These strings are not
911      allocated with xmalloc; instead, they are pointers into
912      debug_line_buffer.  If you try to free them, `free' will get
913      indigestion.  */
914   unsigned int num_include_dirs, include_dirs_size;
915   const char **include_dirs;
916
917   /* The file_names table.  NOTE!  These strings are not allocated
918      with xmalloc; instead, they are pointers into debug_line_buffer.
919      Don't try to free them directly.  */
920   unsigned int num_file_names, file_names_size;
921   struct file_entry
922   {
923     const char *name;
924     unsigned int dir_index;
925     unsigned int mod_time;
926     unsigned int length;
927     int included_p; /* Non-zero if referenced by the Line Number Program.  */
928     struct symtab *symtab; /* The associated symbol table, if any.  */
929   } *file_names;
930
931   /* The start and end of the statement program following this
932      header.  These point into dwarf2_per_objfile->line_buffer.  */
933   const gdb_byte *statement_program_start, *statement_program_end;
934 };
935
936 /* When we construct a partial symbol table entry we only
937    need this much information.  */
938 struct partial_die_info
939   {
940     /* Offset of this DIE.  */
941     sect_offset offset;
942
943     /* DWARF-2 tag for this DIE.  */
944     ENUM_BITFIELD(dwarf_tag) tag : 16;
945
946     /* Assorted flags describing the data found in this DIE.  */
947     unsigned int has_children : 1;
948     unsigned int is_external : 1;
949     unsigned int is_declaration : 1;
950     unsigned int has_type : 1;
951     unsigned int has_specification : 1;
952     unsigned int has_pc_info : 1;
953     unsigned int may_be_inlined : 1;
954
955     /* Flag set if the SCOPE field of this structure has been
956        computed.  */
957     unsigned int scope_set : 1;
958
959     /* Flag set if the DIE has a byte_size attribute.  */
960     unsigned int has_byte_size : 1;
961
962     /* Flag set if any of the DIE's children are template arguments.  */
963     unsigned int has_template_arguments : 1;
964
965     /* Flag set if fixup_partial_die has been called on this die.  */
966     unsigned int fixup_called : 1;
967
968     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
969     unsigned int is_dwz : 1;
970
971     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
972     unsigned int spec_is_dwz : 1;
973
974     /* The name of this DIE.  Normally the value of DW_AT_name, but
975        sometimes a default name for unnamed DIEs.  */
976     const char *name;
977
978     /* The linkage name, if present.  */
979     const char *linkage_name;
980
981     /* The scope to prepend to our children.  This is generally
982        allocated on the comp_unit_obstack, so will disappear
983        when this compilation unit leaves the cache.  */
984     const char *scope;
985
986     /* Some data associated with the partial DIE.  The tag determines
987        which field is live.  */
988     union
989     {
990       /* The location description associated with this DIE, if any.  */
991       struct dwarf_block *locdesc;
992       /* The offset of an import, for DW_TAG_imported_unit.  */
993       sect_offset offset;
994     } d;
995
996     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
997     CORE_ADDR lowpc;
998     CORE_ADDR highpc;
999
1000     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1001        DW_AT_sibling, if any.  */
1002     /* NOTE: This member isn't strictly necessary, read_partial_die could
1003        return DW_AT_sibling values to its caller load_partial_dies.  */
1004     const gdb_byte *sibling;
1005
1006     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1007        DW_AT_specification (or DW_AT_abstract_origin or
1008        DW_AT_extension).  */
1009     sect_offset spec_offset;
1010
1011     /* Pointers to this DIE's parent, first child, and next sibling,
1012        if any.  */
1013     struct partial_die_info *die_parent, *die_child, *die_sibling;
1014   };
1015
1016 /* This data structure holds the information of an abbrev.  */
1017 struct abbrev_info
1018   {
1019     unsigned int number;        /* number identifying abbrev */
1020     enum dwarf_tag tag;         /* dwarf tag */
1021     unsigned short has_children;                /* boolean */
1022     unsigned short num_attrs;   /* number of attributes */
1023     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1024     struct abbrev_info *next;   /* next in chain */
1025   };
1026
1027 struct attr_abbrev
1028   {
1029     ENUM_BITFIELD(dwarf_attribute) name : 16;
1030     ENUM_BITFIELD(dwarf_form) form : 16;
1031   };
1032
1033 /* Size of abbrev_table.abbrev_hash_table.  */
1034 #define ABBREV_HASH_SIZE 121
1035
1036 /* Top level data structure to contain an abbreviation table.  */
1037
1038 struct abbrev_table
1039 {
1040   /* Where the abbrev table came from.
1041      This is used as a sanity check when the table is used.  */
1042   sect_offset offset;
1043
1044   /* Storage for the abbrev table.  */
1045   struct obstack abbrev_obstack;
1046
1047   /* Hash table of abbrevs.
1048      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1049      It could be statically allocated, but the previous code didn't so we
1050      don't either.  */
1051   struct abbrev_info **abbrevs;
1052 };
1053
1054 /* Attributes have a name and a value.  */
1055 struct attribute
1056   {
1057     ENUM_BITFIELD(dwarf_attribute) name : 16;
1058     ENUM_BITFIELD(dwarf_form) form : 15;
1059
1060     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1061        field should be in u.str (existing only for DW_STRING) but it is kept
1062        here for better struct attribute alignment.  */
1063     unsigned int string_is_canonical : 1;
1064
1065     union
1066       {
1067         const char *str;
1068         struct dwarf_block *blk;
1069         ULONGEST unsnd;
1070         LONGEST snd;
1071         CORE_ADDR addr;
1072         ULONGEST signature;
1073       }
1074     u;
1075   };
1076
1077 /* This data structure holds a complete die structure.  */
1078 struct die_info
1079   {
1080     /* DWARF-2 tag for this DIE.  */
1081     ENUM_BITFIELD(dwarf_tag) tag : 16;
1082
1083     /* Number of attributes */
1084     unsigned char num_attrs;
1085
1086     /* True if we're presently building the full type name for the
1087        type derived from this DIE.  */
1088     unsigned char building_fullname : 1;
1089
1090     /* Abbrev number */
1091     unsigned int abbrev;
1092
1093     /* Offset in .debug_info or .debug_types section.  */
1094     sect_offset offset;
1095
1096     /* The dies in a compilation unit form an n-ary tree.  PARENT
1097        points to this die's parent; CHILD points to the first child of
1098        this node; and all the children of a given node are chained
1099        together via their SIBLING fields.  */
1100     struct die_info *child;     /* Its first child, if any.  */
1101     struct die_info *sibling;   /* Its next sibling, if any.  */
1102     struct die_info *parent;    /* Its parent, if any.  */
1103
1104     /* An array of attributes, with NUM_ATTRS elements.  There may be
1105        zero, but it's not common and zero-sized arrays are not
1106        sufficiently portable C.  */
1107     struct attribute attrs[1];
1108   };
1109
1110 /* Get at parts of an attribute structure.  */
1111
1112 #define DW_STRING(attr)    ((attr)->u.str)
1113 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1114 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1115 #define DW_BLOCK(attr)     ((attr)->u.blk)
1116 #define DW_SND(attr)       ((attr)->u.snd)
1117 #define DW_ADDR(attr)      ((attr)->u.addr)
1118 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1119
1120 /* Blocks are a bunch of untyped bytes.  */
1121 struct dwarf_block
1122   {
1123     size_t size;
1124
1125     /* Valid only if SIZE is not zero.  */
1126     const gdb_byte *data;
1127   };
1128
1129 #ifndef ATTR_ALLOC_CHUNK
1130 #define ATTR_ALLOC_CHUNK 4
1131 #endif
1132
1133 /* Allocate fields for structs, unions and enums in this size.  */
1134 #ifndef DW_FIELD_ALLOC_CHUNK
1135 #define DW_FIELD_ALLOC_CHUNK 4
1136 #endif
1137
1138 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1139    but this would require a corresponding change in unpack_field_as_long
1140    and friends.  */
1141 static int bits_per_byte = 8;
1142
1143 /* The routines that read and process dies for a C struct or C++ class
1144    pass lists of data member fields and lists of member function fields
1145    in an instance of a field_info structure, as defined below.  */
1146 struct field_info
1147   {
1148     /* List of data member and baseclasses fields.  */
1149     struct nextfield
1150       {
1151         struct nextfield *next;
1152         int accessibility;
1153         int virtuality;
1154         struct field field;
1155       }
1156      *fields, *baseclasses;
1157
1158     /* Number of fields (including baseclasses).  */
1159     int nfields;
1160
1161     /* Number of baseclasses.  */
1162     int nbaseclasses;
1163
1164     /* Set if the accesibility of one of the fields is not public.  */
1165     int non_public_fields;
1166
1167     /* Member function fields array, entries are allocated in the order they
1168        are encountered in the object file.  */
1169     struct nextfnfield
1170       {
1171         struct nextfnfield *next;
1172         struct fn_field fnfield;
1173       }
1174      *fnfields;
1175
1176     /* Member function fieldlist array, contains name of possibly overloaded
1177        member function, number of overloaded member functions and a pointer
1178        to the head of the member function field chain.  */
1179     struct fnfieldlist
1180       {
1181         const char *name;
1182         int length;
1183         struct nextfnfield *head;
1184       }
1185      *fnfieldlists;
1186
1187     /* Number of entries in the fnfieldlists array.  */
1188     int nfnfields;
1189
1190     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1191        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1192     struct typedef_field_list
1193       {
1194         struct typedef_field field;
1195         struct typedef_field_list *next;
1196       }
1197     *typedef_field_list;
1198     unsigned typedef_field_list_count;
1199   };
1200
1201 /* One item on the queue of compilation units to read in full symbols
1202    for.  */
1203 struct dwarf2_queue_item
1204 {
1205   struct dwarf2_per_cu_data *per_cu;
1206   enum language pretend_language;
1207   struct dwarf2_queue_item *next;
1208 };
1209
1210 /* The current queue.  */
1211 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1212
1213 /* Loaded secondary compilation units are kept in memory until they
1214    have not been referenced for the processing of this many
1215    compilation units.  Set this to zero to disable caching.  Cache
1216    sizes of up to at least twenty will improve startup time for
1217    typical inter-CU-reference binaries, at an obvious memory cost.  */
1218 static int dwarf2_max_cache_age = 5;
1219 static void
1220 show_dwarf2_max_cache_age (struct ui_file *file, int from_tty,
1221                            struct cmd_list_element *c, const char *value)
1222 {
1223   fprintf_filtered (file, _("The upper bound on the age of cached "
1224                             "dwarf2 compilation units is %s.\n"),
1225                     value);
1226 }
1227
1228
1229 /* Various complaints about symbol reading that don't abort the process.  */
1230
1231 static void
1232 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
1233 {
1234   complaint (&symfile_complaints,
1235              _("statement list doesn't fit in .debug_line section"));
1236 }
1237
1238 static void
1239 dwarf2_debug_line_missing_file_complaint (void)
1240 {
1241   complaint (&symfile_complaints,
1242              _(".debug_line section has line data without a file"));
1243 }
1244
1245 static void
1246 dwarf2_debug_line_missing_end_sequence_complaint (void)
1247 {
1248   complaint (&symfile_complaints,
1249              _(".debug_line section has line "
1250                "program sequence without an end"));
1251 }
1252
1253 static void
1254 dwarf2_complex_location_expr_complaint (void)
1255 {
1256   complaint (&symfile_complaints, _("location expression too complex"));
1257 }
1258
1259 static void
1260 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
1261                                               int arg3)
1262 {
1263   complaint (&symfile_complaints,
1264              _("const value length mismatch for '%s', got %d, expected %d"),
1265              arg1, arg2, arg3);
1266 }
1267
1268 static void
1269 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
1270 {
1271   complaint (&symfile_complaints,
1272              _("debug info runs off end of %s section"
1273                " [in module %s]"),
1274              section->asection->name,
1275              bfd_get_filename (section->asection->owner));
1276 }
1277
1278 static void
1279 dwarf2_macro_malformed_definition_complaint (const char *arg1)
1280 {
1281   complaint (&symfile_complaints,
1282              _("macro debug info contains a "
1283                "malformed macro definition:\n`%s'"),
1284              arg1);
1285 }
1286
1287 static void
1288 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
1289 {
1290   complaint (&symfile_complaints,
1291              _("invalid attribute class or form for '%s' in '%s'"),
1292              arg1, arg2);
1293 }
1294
1295 /* local function prototypes */
1296
1297 static void dwarf2_locate_sections (bfd *, asection *, void *);
1298
1299 static void dwarf2_find_base_address (struct die_info *die,
1300                                       struct dwarf2_cu *cu);
1301
1302 static struct partial_symtab *create_partial_symtab
1303   (struct dwarf2_per_cu_data *per_cu, const char *name);
1304
1305 static void dwarf2_build_psymtabs_hard (struct objfile *);
1306
1307 static void scan_partial_symbols (struct partial_die_info *,
1308                                   CORE_ADDR *, CORE_ADDR *,
1309                                   int, struct dwarf2_cu *);
1310
1311 static void add_partial_symbol (struct partial_die_info *,
1312                                 struct dwarf2_cu *);
1313
1314 static void add_partial_namespace (struct partial_die_info *pdi,
1315                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1316                                    int need_pc, struct dwarf2_cu *cu);
1317
1318 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1319                                 CORE_ADDR *highpc, int need_pc,
1320                                 struct dwarf2_cu *cu);
1321
1322 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1323                                      struct dwarf2_cu *cu);
1324
1325 static void add_partial_subprogram (struct partial_die_info *pdi,
1326                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1327                                     int need_pc, struct dwarf2_cu *cu);
1328
1329 static void dwarf2_read_symtab (struct partial_symtab *,
1330                                 struct objfile *);
1331
1332 static void psymtab_to_symtab_1 (struct partial_symtab *);
1333
1334 static struct abbrev_info *abbrev_table_lookup_abbrev
1335   (const struct abbrev_table *, unsigned int);
1336
1337 static struct abbrev_table *abbrev_table_read_table
1338   (struct dwarf2_section_info *, sect_offset);
1339
1340 static void abbrev_table_free (struct abbrev_table *);
1341
1342 static void abbrev_table_free_cleanup (void *);
1343
1344 static void dwarf2_read_abbrevs (struct dwarf2_cu *,
1345                                  struct dwarf2_section_info *);
1346
1347 static void dwarf2_free_abbrev_table (void *);
1348
1349 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1350
1351 static struct partial_die_info *load_partial_dies
1352   (const struct die_reader_specs *, const gdb_byte *, int);
1353
1354 static const gdb_byte *read_partial_die (const struct die_reader_specs *,
1355                                          struct partial_die_info *,
1356                                          struct abbrev_info *,
1357                                          unsigned int,
1358                                          const gdb_byte *);
1359
1360 static struct partial_die_info *find_partial_die (sect_offset, int,
1361                                                   struct dwarf2_cu *);
1362
1363 static void fixup_partial_die (struct partial_die_info *,
1364                                struct dwarf2_cu *);
1365
1366 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1367                                        struct attribute *, struct attr_abbrev *,
1368                                        const gdb_byte *);
1369
1370 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1371
1372 static int read_1_signed_byte (bfd *, const gdb_byte *);
1373
1374 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1375
1376 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1377
1378 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1379
1380 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1381                                unsigned int *);
1382
1383 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1384
1385 static LONGEST read_checked_initial_length_and_offset
1386   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1387    unsigned int *, unsigned int *);
1388
1389 static LONGEST read_offset (bfd *, const gdb_byte *,
1390                             const struct comp_unit_head *,
1391                             unsigned int *);
1392
1393 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1394
1395 static sect_offset read_abbrev_offset (struct dwarf2_section_info *,
1396                                        sect_offset);
1397
1398 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1399
1400 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1401
1402 static const char *read_indirect_string (bfd *, const gdb_byte *,
1403                                          const struct comp_unit_head *,
1404                                          unsigned int *);
1405
1406 static const char *read_indirect_string_from_dwz (struct dwz_file *, LONGEST);
1407
1408 static ULONGEST read_unsigned_leb128 (bfd *, const gdb_byte *, unsigned int *);
1409
1410 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1411
1412 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1413                                               const gdb_byte *,
1414                                               unsigned int *);
1415
1416 static const char *read_str_index (const struct die_reader_specs *reader,
1417                                    struct dwarf2_cu *cu, ULONGEST str_index);
1418
1419 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1420
1421 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1422                                       struct dwarf2_cu *);
1423
1424 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1425                                                 unsigned int);
1426
1427 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1428                                struct dwarf2_cu *cu);
1429
1430 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1431
1432 static struct die_info *die_specification (struct die_info *die,
1433                                            struct dwarf2_cu **);
1434
1435 static void free_line_header (struct line_header *lh);
1436
1437 static struct line_header *dwarf_decode_line_header (unsigned int offset,
1438                                                      struct dwarf2_cu *cu);
1439
1440 static void dwarf_decode_lines (struct line_header *, const char *,
1441                                 struct dwarf2_cu *, struct partial_symtab *,
1442                                 int);
1443
1444 static void dwarf2_start_subfile (const char *, const char *, const char *);
1445
1446 static void dwarf2_start_symtab (struct dwarf2_cu *,
1447                                  const char *, const char *, CORE_ADDR);
1448
1449 static struct symbol *new_symbol (struct die_info *, struct type *,
1450                                   struct dwarf2_cu *);
1451
1452 static struct symbol *new_symbol_full (struct die_info *, struct type *,
1453                                        struct dwarf2_cu *, struct symbol *);
1454
1455 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1456                                 struct dwarf2_cu *);
1457
1458 static void dwarf2_const_value_attr (const struct attribute *attr,
1459                                      struct type *type,
1460                                      const char *name,
1461                                      struct obstack *obstack,
1462                                      struct dwarf2_cu *cu, LONGEST *value,
1463                                      const gdb_byte **bytes,
1464                                      struct dwarf2_locexpr_baton **baton);
1465
1466 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1467
1468 static int need_gnat_info (struct dwarf2_cu *);
1469
1470 static struct type *die_descriptive_type (struct die_info *,
1471                                           struct dwarf2_cu *);
1472
1473 static void set_descriptive_type (struct type *, struct die_info *,
1474                                   struct dwarf2_cu *);
1475
1476 static struct type *die_containing_type (struct die_info *,
1477                                          struct dwarf2_cu *);
1478
1479 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1480                                      struct dwarf2_cu *);
1481
1482 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1483
1484 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1485
1486 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1487
1488 static char *typename_concat (struct obstack *obs, const char *prefix,
1489                               const char *suffix, int physname,
1490                               struct dwarf2_cu *cu);
1491
1492 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1493
1494 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1495
1496 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1497
1498 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1499
1500 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1501
1502 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1503                                struct dwarf2_cu *, struct partial_symtab *);
1504
1505 static int dwarf2_get_pc_bounds (struct die_info *,
1506                                  CORE_ADDR *, CORE_ADDR *, struct dwarf2_cu *,
1507                                  struct partial_symtab *);
1508
1509 static void get_scope_pc_bounds (struct die_info *,
1510                                  CORE_ADDR *, CORE_ADDR *,
1511                                  struct dwarf2_cu *);
1512
1513 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1514                                         CORE_ADDR, struct dwarf2_cu *);
1515
1516 static void dwarf2_add_field (struct field_info *, struct die_info *,
1517                               struct dwarf2_cu *);
1518
1519 static void dwarf2_attach_fields_to_type (struct field_info *,
1520                                           struct type *, struct dwarf2_cu *);
1521
1522 static void dwarf2_add_member_fn (struct field_info *,
1523                                   struct die_info *, struct type *,
1524                                   struct dwarf2_cu *);
1525
1526 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1527                                              struct type *,
1528                                              struct dwarf2_cu *);
1529
1530 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1531
1532 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1533
1534 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1535
1536 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1537
1538 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1539
1540 static struct type *read_module_type (struct die_info *die,
1541                                       struct dwarf2_cu *cu);
1542
1543 static const char *namespace_name (struct die_info *die,
1544                                    int *is_anonymous, struct dwarf2_cu *);
1545
1546 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1547
1548 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1549
1550 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1551                                                        struct dwarf2_cu *);
1552
1553 static struct die_info *read_die_and_siblings_1
1554   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1555    struct die_info *);
1556
1557 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1558                                                const gdb_byte *info_ptr,
1559                                                const gdb_byte **new_info_ptr,
1560                                                struct die_info *parent);
1561
1562 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1563                                         struct die_info **, const gdb_byte *,
1564                                         int *, int);
1565
1566 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1567                                       struct die_info **, const gdb_byte *,
1568                                       int *);
1569
1570 static void process_die (struct die_info *, struct dwarf2_cu *);
1571
1572 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1573                                              struct obstack *);
1574
1575 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1576
1577 static const char *dwarf2_full_name (const char *name,
1578                                      struct die_info *die,
1579                                      struct dwarf2_cu *cu);
1580
1581 static const char *dwarf2_physname (const char *name, struct die_info *die,
1582                                     struct dwarf2_cu *cu);
1583
1584 static struct die_info *dwarf2_extension (struct die_info *die,
1585                                           struct dwarf2_cu **);
1586
1587 static const char *dwarf_tag_name (unsigned int);
1588
1589 static const char *dwarf_attr_name (unsigned int);
1590
1591 static const char *dwarf_form_name (unsigned int);
1592
1593 static char *dwarf_bool_name (unsigned int);
1594
1595 static const char *dwarf_type_encoding_name (unsigned int);
1596
1597 static struct die_info *sibling_die (struct die_info *);
1598
1599 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1600
1601 static void dump_die_for_error (struct die_info *);
1602
1603 static void dump_die_1 (struct ui_file *, int level, int max_level,
1604                         struct die_info *);
1605
1606 /*static*/ void dump_die (struct die_info *, int max_level);
1607
1608 static void store_in_ref_table (struct die_info *,
1609                                 struct dwarf2_cu *);
1610
1611 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1612
1613 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1614
1615 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1616                                                const struct attribute *,
1617                                                struct dwarf2_cu **);
1618
1619 static struct die_info *follow_die_ref (struct die_info *,
1620                                         const struct attribute *,
1621                                         struct dwarf2_cu **);
1622
1623 static struct die_info *follow_die_sig (struct die_info *,
1624                                         const struct attribute *,
1625                                         struct dwarf2_cu **);
1626
1627 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1628                                          struct dwarf2_cu *);
1629
1630 static struct type *get_DW_AT_signature_type (struct die_info *,
1631                                               const struct attribute *,
1632                                               struct dwarf2_cu *);
1633
1634 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1635
1636 static void read_signatured_type (struct signatured_type *);
1637
1638 static struct type_unit_group *get_type_unit_group
1639     (struct dwarf2_cu *, const struct attribute *);
1640
1641 static void build_type_unit_groups (die_reader_func_ftype *, void *);
1642
1643 /* memory allocation interface */
1644
1645 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1646
1647 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1648
1649 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int,
1650                                  const char *, int);
1651
1652 static int attr_form_is_block (const struct attribute *);
1653
1654 static int attr_form_is_section_offset (const struct attribute *);
1655
1656 static int attr_form_is_constant (const struct attribute *);
1657
1658 static int attr_form_is_ref (const struct attribute *);
1659
1660 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1661                                    struct dwarf2_loclist_baton *baton,
1662                                    const struct attribute *attr);
1663
1664 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1665                                          struct symbol *sym,
1666                                          struct dwarf2_cu *cu,
1667                                          int is_block);
1668
1669 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1670                                      const gdb_byte *info_ptr,
1671                                      struct abbrev_info *abbrev);
1672
1673 static void free_stack_comp_unit (void *);
1674
1675 static hashval_t partial_die_hash (const void *item);
1676
1677 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1678
1679 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1680   (sect_offset offset, unsigned int offset_in_dwz, struct objfile *objfile);
1681
1682 static void init_one_comp_unit (struct dwarf2_cu *cu,
1683                                 struct dwarf2_per_cu_data *per_cu);
1684
1685 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1686                                    struct die_info *comp_unit_die,
1687                                    enum language pretend_language);
1688
1689 static void free_heap_comp_unit (void *);
1690
1691 static void free_cached_comp_units (void *);
1692
1693 static void age_cached_comp_units (void);
1694
1695 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1696
1697 static struct type *set_die_type (struct die_info *, struct type *,
1698                                   struct dwarf2_cu *);
1699
1700 static void create_all_comp_units (struct objfile *);
1701
1702 static int create_all_type_units (struct objfile *);
1703
1704 static void load_full_comp_unit (struct dwarf2_per_cu_data *,
1705                                  enum language);
1706
1707 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1708                                     enum language);
1709
1710 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1711                                     enum language);
1712
1713 static void dwarf2_add_dependence (struct dwarf2_cu *,
1714                                    struct dwarf2_per_cu_data *);
1715
1716 static void dwarf2_mark (struct dwarf2_cu *);
1717
1718 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1719
1720 static struct type *get_die_type_at_offset (sect_offset,
1721                                             struct dwarf2_per_cu_data *);
1722
1723 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1724
1725 static void dwarf2_release_queue (void *dummy);
1726
1727 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1728                              enum language pretend_language);
1729
1730 static int maybe_queue_comp_unit (struct dwarf2_cu *this_cu,
1731                                   struct dwarf2_per_cu_data *per_cu,
1732                                   enum language pretend_language);
1733
1734 static void process_queue (void);
1735
1736 static void find_file_and_directory (struct die_info *die,
1737                                      struct dwarf2_cu *cu,
1738                                      const char **name, const char **comp_dir);
1739
1740 static char *file_full_name (int file, struct line_header *lh,
1741                              const char *comp_dir);
1742
1743 static const gdb_byte *read_and_check_comp_unit_head
1744   (struct comp_unit_head *header,
1745    struct dwarf2_section_info *section,
1746    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1747    int is_debug_types_section);
1748
1749 static void init_cutu_and_read_dies
1750   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1751    int use_existing_cu, int keep,
1752    die_reader_func_ftype *die_reader_func, void *data);
1753
1754 static void init_cutu_and_read_dies_simple
1755   (struct dwarf2_per_cu_data *this_cu,
1756    die_reader_func_ftype *die_reader_func, void *data);
1757
1758 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1759
1760 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1761
1762 static struct dwo_unit *lookup_dwo_in_dwp
1763   (struct dwp_file *dwp_file, const struct dwp_hash_table *htab,
1764    const char *comp_dir, ULONGEST signature, int is_debug_types);
1765
1766 static struct dwp_file *get_dwp_file (void);
1767
1768 static struct dwo_unit *lookup_dwo_comp_unit
1769   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
1770
1771 static struct dwo_unit *lookup_dwo_type_unit
1772   (struct signatured_type *, const char *, const char *);
1773
1774 static void free_dwo_file_cleanup (void *);
1775
1776 static void process_cu_includes (void);
1777
1778 static void check_producer (struct dwarf2_cu *cu);
1779
1780 #if WORDS_BIGENDIAN
1781
1782 /* Convert VALUE between big- and little-endian.  */
1783 static offset_type
1784 byte_swap (offset_type value)
1785 {
1786   offset_type result;
1787
1788   result = (value & 0xff) << 24;
1789   result |= (value & 0xff00) << 8;
1790   result |= (value & 0xff0000) >> 8;
1791   result |= (value & 0xff000000) >> 24;
1792   return result;
1793 }
1794
1795 #define MAYBE_SWAP(V)  byte_swap (V)
1796
1797 #else
1798 #define MAYBE_SWAP(V) (V)
1799 #endif /* WORDS_BIGENDIAN */
1800
1801 /* The suffix for an index file.  */
1802 #define INDEX_SUFFIX ".gdb-index"
1803
1804 /* Try to locate the sections we need for DWARF 2 debugging
1805    information and return true if we have enough to do something.
1806    NAMES points to the dwarf2 section names, or is NULL if the standard
1807    ELF names are used.  */
1808
1809 int
1810 dwarf2_has_info (struct objfile *objfile,
1811                  const struct dwarf2_debug_sections *names)
1812 {
1813   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
1814   if (!dwarf2_per_objfile)
1815     {
1816       /* Initialize per-objfile state.  */
1817       struct dwarf2_per_objfile *data
1818         = obstack_alloc (&objfile->objfile_obstack, sizeof (*data));
1819
1820       memset (data, 0, sizeof (*data));
1821       set_objfile_data (objfile, dwarf2_objfile_data_key, data);
1822       dwarf2_per_objfile = data;
1823
1824       bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections,
1825                              (void *) names);
1826       dwarf2_per_objfile->objfile = objfile;
1827     }
1828   return (dwarf2_per_objfile->info.asection != NULL
1829           && dwarf2_per_objfile->abbrev.asection != NULL);
1830 }
1831
1832 /* When loading sections, we look either for uncompressed section or for
1833    compressed section names.  */
1834
1835 static int
1836 section_is_p (const char *section_name,
1837               const struct dwarf2_section_names *names)
1838 {
1839   if (names->normal != NULL
1840       && strcmp (section_name, names->normal) == 0)
1841     return 1;
1842   if (names->compressed != NULL
1843       && strcmp (section_name, names->compressed) == 0)
1844     return 1;
1845   return 0;
1846 }
1847
1848 /* This function is mapped across the sections and remembers the
1849    offset and size of each of the debugging sections we are interested
1850    in.  */
1851
1852 static void
1853 dwarf2_locate_sections (bfd *abfd, asection *sectp, void *vnames)
1854 {
1855   const struct dwarf2_debug_sections *names;
1856   flagword aflag = bfd_get_section_flags (abfd, sectp);
1857
1858   if (vnames == NULL)
1859     names = &dwarf2_elf_names;
1860   else
1861     names = (const struct dwarf2_debug_sections *) vnames;
1862
1863   if ((aflag & SEC_HAS_CONTENTS) == 0)
1864     {
1865     }
1866   else if (section_is_p (sectp->name, &names->info))
1867     {
1868       dwarf2_per_objfile->info.asection = sectp;
1869       dwarf2_per_objfile->info.size = bfd_get_section_size (sectp);
1870     }
1871   else if (section_is_p (sectp->name, &names->abbrev))
1872     {
1873       dwarf2_per_objfile->abbrev.asection = sectp;
1874       dwarf2_per_objfile->abbrev.size = bfd_get_section_size (sectp);
1875     }
1876   else if (section_is_p (sectp->name, &names->line))
1877     {
1878       dwarf2_per_objfile->line.asection = sectp;
1879       dwarf2_per_objfile->line.size = bfd_get_section_size (sectp);
1880     }
1881   else if (section_is_p (sectp->name, &names->loc))
1882     {
1883       dwarf2_per_objfile->loc.asection = sectp;
1884       dwarf2_per_objfile->loc.size = bfd_get_section_size (sectp);
1885     }
1886   else if (section_is_p (sectp->name, &names->macinfo))
1887     {
1888       dwarf2_per_objfile->macinfo.asection = sectp;
1889       dwarf2_per_objfile->macinfo.size = bfd_get_section_size (sectp);
1890     }
1891   else if (section_is_p (sectp->name, &names->macro))
1892     {
1893       dwarf2_per_objfile->macro.asection = sectp;
1894       dwarf2_per_objfile->macro.size = bfd_get_section_size (sectp);
1895     }
1896   else if (section_is_p (sectp->name, &names->str))
1897     {
1898       dwarf2_per_objfile->str.asection = sectp;
1899       dwarf2_per_objfile->str.size = bfd_get_section_size (sectp);
1900     }
1901   else if (section_is_p (sectp->name, &names->addr))
1902     {
1903       dwarf2_per_objfile->addr.asection = sectp;
1904       dwarf2_per_objfile->addr.size = bfd_get_section_size (sectp);
1905     }
1906   else if (section_is_p (sectp->name, &names->frame))
1907     {
1908       dwarf2_per_objfile->frame.asection = sectp;
1909       dwarf2_per_objfile->frame.size = bfd_get_section_size (sectp);
1910     }
1911   else if (section_is_p (sectp->name, &names->eh_frame))
1912     {
1913       dwarf2_per_objfile->eh_frame.asection = sectp;
1914       dwarf2_per_objfile->eh_frame.size = bfd_get_section_size (sectp);
1915     }
1916   else if (section_is_p (sectp->name, &names->ranges))
1917     {
1918       dwarf2_per_objfile->ranges.asection = sectp;
1919       dwarf2_per_objfile->ranges.size = bfd_get_section_size (sectp);
1920     }
1921   else if (section_is_p (sectp->name, &names->types))
1922     {
1923       struct dwarf2_section_info type_section;
1924
1925       memset (&type_section, 0, sizeof (type_section));
1926       type_section.asection = sectp;
1927       type_section.size = bfd_get_section_size (sectp);
1928
1929       VEC_safe_push (dwarf2_section_info_def, dwarf2_per_objfile->types,
1930                      &type_section);
1931     }
1932   else if (section_is_p (sectp->name, &names->gdb_index))
1933     {
1934       dwarf2_per_objfile->gdb_index.asection = sectp;
1935       dwarf2_per_objfile->gdb_index.size = bfd_get_section_size (sectp);
1936     }
1937
1938   if ((bfd_get_section_flags (abfd, sectp) & SEC_LOAD)
1939       && bfd_section_vma (abfd, sectp) == 0)
1940     dwarf2_per_objfile->has_section_at_zero = 1;
1941 }
1942
1943 /* A helper function that decides whether a section is empty,
1944    or not present.  */
1945
1946 static int
1947 dwarf2_section_empty_p (struct dwarf2_section_info *info)
1948 {
1949   return info->asection == NULL || info->size == 0;
1950 }
1951
1952 /* Read the contents of the section INFO.
1953    OBJFILE is the main object file, but not necessarily the file where
1954    the section comes from.  E.g., for DWO files INFO->asection->owner
1955    is the bfd of the DWO file.
1956    If the section is compressed, uncompress it before returning.  */
1957
1958 static void
1959 dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info)
1960 {
1961   asection *sectp = info->asection;
1962   bfd *abfd;
1963   gdb_byte *buf, *retbuf;
1964   unsigned char header[4];
1965
1966   if (info->readin)
1967     return;
1968   info->buffer = NULL;
1969   info->readin = 1;
1970
1971   if (dwarf2_section_empty_p (info))
1972     return;
1973
1974   abfd = sectp->owner;
1975
1976   /* If the section has relocations, we must read it ourselves.
1977      Otherwise we attach it to the BFD.  */
1978   if ((sectp->flags & SEC_RELOC) == 0)
1979     {
1980       info->buffer = gdb_bfd_map_section (sectp, &info->size);
1981       return;
1982     }
1983
1984   buf = obstack_alloc (&objfile->objfile_obstack, info->size);
1985   info->buffer = buf;
1986
1987   /* When debugging .o files, we may need to apply relocations; see
1988      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
1989      We never compress sections in .o files, so we only need to
1990      try this when the section is not compressed.  */
1991   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
1992   if (retbuf != NULL)
1993     {
1994       info->buffer = retbuf;
1995       return;
1996     }
1997
1998   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
1999       || bfd_bread (buf, info->size, abfd) != info->size)
2000     error (_("Dwarf Error: Can't read DWARF data from '%s'"),
2001            bfd_get_filename (abfd));
2002 }
2003
2004 /* A helper function that returns the size of a section in a safe way.
2005    If you are positive that the section has been read before using the
2006    size, then it is safe to refer to the dwarf2_section_info object's
2007    "size" field directly.  In other cases, you must call this
2008    function, because for compressed sections the size field is not set
2009    correctly until the section has been read.  */
2010
2011 static bfd_size_type
2012 dwarf2_section_size (struct objfile *objfile,
2013                      struct dwarf2_section_info *info)
2014 {
2015   if (!info->readin)
2016     dwarf2_read_section (objfile, info);
2017   return info->size;
2018 }
2019
2020 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2021    SECTION_NAME.  */
2022
2023 void
2024 dwarf2_get_section_info (struct objfile *objfile,
2025                          enum dwarf2_section_enum sect,
2026                          asection **sectp, const gdb_byte **bufp,
2027                          bfd_size_type *sizep)
2028 {
2029   struct dwarf2_per_objfile *data
2030     = objfile_data (objfile, dwarf2_objfile_data_key);
2031   struct dwarf2_section_info *info;
2032
2033   /* We may see an objfile without any DWARF, in which case we just
2034      return nothing.  */
2035   if (data == NULL)
2036     {
2037       *sectp = NULL;
2038       *bufp = NULL;
2039       *sizep = 0;
2040       return;
2041     }
2042   switch (sect)
2043     {
2044     case DWARF2_DEBUG_FRAME:
2045       info = &data->frame;
2046       break;
2047     case DWARF2_EH_FRAME:
2048       info = &data->eh_frame;
2049       break;
2050     default:
2051       gdb_assert_not_reached ("unexpected section");
2052     }
2053
2054   dwarf2_read_section (objfile, info);
2055
2056   *sectp = info->asection;
2057   *bufp = info->buffer;
2058   *sizep = info->size;
2059 }
2060
2061 /* A helper function to find the sections for a .dwz file.  */
2062
2063 static void
2064 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2065 {
2066   struct dwz_file *dwz_file = arg;
2067
2068   /* Note that we only support the standard ELF names, because .dwz
2069      is ELF-only (at the time of writing).  */
2070   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2071     {
2072       dwz_file->abbrev.asection = sectp;
2073       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2074     }
2075   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2076     {
2077       dwz_file->info.asection = sectp;
2078       dwz_file->info.size = bfd_get_section_size (sectp);
2079     }
2080   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2081     {
2082       dwz_file->str.asection = sectp;
2083       dwz_file->str.size = bfd_get_section_size (sectp);
2084     }
2085   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2086     {
2087       dwz_file->line.asection = sectp;
2088       dwz_file->line.size = bfd_get_section_size (sectp);
2089     }
2090   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2091     {
2092       dwz_file->macro.asection = sectp;
2093       dwz_file->macro.size = bfd_get_section_size (sectp);
2094     }
2095   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2096     {
2097       dwz_file->gdb_index.asection = sectp;
2098       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2099     }
2100 }
2101
2102 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2103    there is no .gnu_debugaltlink section in the file.  Error if there
2104    is such a section but the file cannot be found.  */
2105
2106 static struct dwz_file *
2107 dwarf2_get_dwz_file (void)
2108 {
2109   bfd *dwz_bfd;
2110   char *data;
2111   struct cleanup *cleanup;
2112   const char *filename;
2113   struct dwz_file *result;
2114   unsigned long buildid;
2115
2116   if (dwarf2_per_objfile->dwz_file != NULL)
2117     return dwarf2_per_objfile->dwz_file;
2118
2119   bfd_set_error (bfd_error_no_error);
2120   data = bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2121                                       &buildid);
2122   if (data == NULL)
2123     {
2124       if (bfd_get_error () == bfd_error_no_error)
2125         return NULL;
2126       error (_("could not read '.gnu_debugaltlink' section: %s"),
2127              bfd_errmsg (bfd_get_error ()));
2128     }
2129   cleanup = make_cleanup (xfree, data);
2130
2131   filename = (const char *) data;
2132   if (!IS_ABSOLUTE_PATH (filename))
2133     {
2134       char *abs = gdb_realpath (dwarf2_per_objfile->objfile->name);
2135       char *rel;
2136
2137       make_cleanup (xfree, abs);
2138       abs = ldirname (abs);
2139       make_cleanup (xfree, abs);
2140
2141       rel = concat (abs, SLASH_STRING, filename, (char *) NULL);
2142       make_cleanup (xfree, rel);
2143       filename = rel;
2144     }
2145
2146   /* The format is just a NUL-terminated file name, followed by the
2147      build-id.  For now, though, we ignore the build-id.  */
2148   dwz_bfd = gdb_bfd_open (filename, gnutarget, -1);
2149   if (dwz_bfd == NULL)
2150     error (_("could not read '%s': %s"), filename,
2151            bfd_errmsg (bfd_get_error ()));
2152
2153   if (!bfd_check_format (dwz_bfd, bfd_object))
2154     {
2155       gdb_bfd_unref (dwz_bfd);
2156       error (_("file '%s' was not usable: %s"), filename,
2157              bfd_errmsg (bfd_get_error ()));
2158     }
2159
2160   result = OBSTACK_ZALLOC (&dwarf2_per_objfile->objfile->objfile_obstack,
2161                            struct dwz_file);
2162   result->dwz_bfd = dwz_bfd;
2163
2164   bfd_map_over_sections (dwz_bfd, locate_dwz_sections, result);
2165
2166   do_cleanups (cleanup);
2167
2168   dwarf2_per_objfile->dwz_file = result;
2169   return result;
2170 }
2171 \f
2172 /* DWARF quick_symbols_functions support.  */
2173
2174 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2175    unique line tables, so we maintain a separate table of all .debug_line
2176    derived entries to support the sharing.
2177    All the quick functions need is the list of file names.  We discard the
2178    line_header when we're done and don't need to record it here.  */
2179 struct quick_file_names
2180 {
2181   /* The data used to construct the hash key.  */
2182   struct stmt_list_hash hash;
2183
2184   /* The number of entries in file_names, real_names.  */
2185   unsigned int num_file_names;
2186
2187   /* The file names from the line table, after being run through
2188      file_full_name.  */
2189   const char **file_names;
2190
2191   /* The file names from the line table after being run through
2192      gdb_realpath.  These are computed lazily.  */
2193   const char **real_names;
2194 };
2195
2196 /* When using the index (and thus not using psymtabs), each CU has an
2197    object of this type.  This is used to hold information needed by
2198    the various "quick" methods.  */
2199 struct dwarf2_per_cu_quick_data
2200 {
2201   /* The file table.  This can be NULL if there was no file table
2202      or it's currently not read in.
2203      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2204   struct quick_file_names *file_names;
2205
2206   /* The corresponding symbol table.  This is NULL if symbols for this
2207      CU have not yet been read.  */
2208   struct symtab *symtab;
2209
2210   /* A temporary mark bit used when iterating over all CUs in
2211      expand_symtabs_matching.  */
2212   unsigned int mark : 1;
2213
2214   /* True if we've tried to read the file table and found there isn't one.
2215      There will be no point in trying to read it again next time.  */
2216   unsigned int no_file_data : 1;
2217 };
2218
2219 /* Utility hash function for a stmt_list_hash.  */
2220
2221 static hashval_t
2222 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2223 {
2224   hashval_t v = 0;
2225
2226   if (stmt_list_hash->dwo_unit != NULL)
2227     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2228   v += stmt_list_hash->line_offset.sect_off;
2229   return v;
2230 }
2231
2232 /* Utility equality function for a stmt_list_hash.  */
2233
2234 static int
2235 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2236                     const struct stmt_list_hash *rhs)
2237 {
2238   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2239     return 0;
2240   if (lhs->dwo_unit != NULL
2241       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2242     return 0;
2243
2244   return lhs->line_offset.sect_off == rhs->line_offset.sect_off;
2245 }
2246
2247 /* Hash function for a quick_file_names.  */
2248
2249 static hashval_t
2250 hash_file_name_entry (const void *e)
2251 {
2252   const struct quick_file_names *file_data = e;
2253
2254   return hash_stmt_list_entry (&file_data->hash);
2255 }
2256
2257 /* Equality function for a quick_file_names.  */
2258
2259 static int
2260 eq_file_name_entry (const void *a, const void *b)
2261 {
2262   const struct quick_file_names *ea = a;
2263   const struct quick_file_names *eb = b;
2264
2265   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2266 }
2267
2268 /* Delete function for a quick_file_names.  */
2269
2270 static void
2271 delete_file_name_entry (void *e)
2272 {
2273   struct quick_file_names *file_data = e;
2274   int i;
2275
2276   for (i = 0; i < file_data->num_file_names; ++i)
2277     {
2278       xfree ((void*) file_data->file_names[i]);
2279       if (file_data->real_names)
2280         xfree ((void*) file_data->real_names[i]);
2281     }
2282
2283   /* The space for the struct itself lives on objfile_obstack,
2284      so we don't free it here.  */
2285 }
2286
2287 /* Create a quick_file_names hash table.  */
2288
2289 static htab_t
2290 create_quick_file_names_table (unsigned int nr_initial_entries)
2291 {
2292   return htab_create_alloc (nr_initial_entries,
2293                             hash_file_name_entry, eq_file_name_entry,
2294                             delete_file_name_entry, xcalloc, xfree);
2295 }
2296
2297 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2298    have to be created afterwards.  You should call age_cached_comp_units after
2299    processing PER_CU->CU.  dw2_setup must have been already called.  */
2300
2301 static void
2302 load_cu (struct dwarf2_per_cu_data *per_cu)
2303 {
2304   if (per_cu->is_debug_types)
2305     load_full_type_unit (per_cu);
2306   else
2307     load_full_comp_unit (per_cu, language_minimal);
2308
2309   gdb_assert (per_cu->cu != NULL);
2310
2311   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2312 }
2313
2314 /* Read in the symbols for PER_CU.  */
2315
2316 static void
2317 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
2318 {
2319   struct cleanup *back_to;
2320
2321   /* Skip type_unit_groups, reading the type units they contain
2322      is handled elsewhere.  */
2323   if (IS_TYPE_UNIT_GROUP (per_cu))
2324     return;
2325
2326   back_to = make_cleanup (dwarf2_release_queue, NULL);
2327
2328   if (dwarf2_per_objfile->using_index
2329       ? per_cu->v.quick->symtab == NULL
2330       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2331     {
2332       queue_comp_unit (per_cu, language_minimal);
2333       load_cu (per_cu);
2334     }
2335
2336   process_queue ();
2337
2338   /* Age the cache, releasing compilation units that have not
2339      been used recently.  */
2340   age_cached_comp_units ();
2341
2342   do_cleanups (back_to);
2343 }
2344
2345 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2346    the objfile from which this CU came.  Returns the resulting symbol
2347    table.  */
2348
2349 static struct symtab *
2350 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
2351 {
2352   gdb_assert (dwarf2_per_objfile->using_index);
2353   if (!per_cu->v.quick->symtab)
2354     {
2355       struct cleanup *back_to = make_cleanup (free_cached_comp_units, NULL);
2356       increment_reading_symtab ();
2357       dw2_do_instantiate_symtab (per_cu);
2358       process_cu_includes ();
2359       do_cleanups (back_to);
2360     }
2361   return per_cu->v.quick->symtab;
2362 }
2363
2364 /* Return the CU given its index.
2365
2366    This is intended for loops like:
2367
2368    for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2369                     + dwarf2_per_objfile->n_type_units); ++i)
2370      {
2371        struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
2372
2373        ...;
2374      }
2375 */
2376
2377 static struct dwarf2_per_cu_data *
2378 dw2_get_cu (int index)
2379 {
2380   if (index >= dwarf2_per_objfile->n_comp_units)
2381     {
2382       index -= dwarf2_per_objfile->n_comp_units;
2383       gdb_assert (index < dwarf2_per_objfile->n_type_units);
2384       return &dwarf2_per_objfile->all_type_units[index]->per_cu;
2385     }
2386
2387   return dwarf2_per_objfile->all_comp_units[index];
2388 }
2389
2390 /* Return the primary CU given its index.
2391    The difference between this function and dw2_get_cu is in the handling
2392    of type units (TUs).  Here we return the type_unit_group object.
2393
2394    This is intended for loops like:
2395
2396    for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2397                     + dwarf2_per_objfile->n_type_unit_groups); ++i)
2398      {
2399        struct dwarf2_per_cu_data *per_cu = dw2_get_primary_cu (i);
2400
2401        ...;
2402      }
2403 */
2404
2405 static struct dwarf2_per_cu_data *
2406 dw2_get_primary_cu (int index)
2407 {
2408   if (index >= dwarf2_per_objfile->n_comp_units)
2409     {
2410       index -= dwarf2_per_objfile->n_comp_units;
2411       gdb_assert (index < dwarf2_per_objfile->n_type_unit_groups);
2412       return &dwarf2_per_objfile->all_type_unit_groups[index]->per_cu;
2413     }
2414
2415   return dwarf2_per_objfile->all_comp_units[index];
2416 }
2417
2418 /* A helper for create_cus_from_index that handles a given list of
2419    CUs.  */
2420
2421 static void
2422 create_cus_from_index_list (struct objfile *objfile,
2423                             const gdb_byte *cu_list, offset_type n_elements,
2424                             struct dwarf2_section_info *section,
2425                             int is_dwz,
2426                             int base_offset)
2427 {
2428   offset_type i;
2429
2430   for (i = 0; i < n_elements; i += 2)
2431     {
2432       struct dwarf2_per_cu_data *the_cu;
2433       ULONGEST offset, length;
2434
2435       gdb_static_assert (sizeof (ULONGEST) >= 8);
2436       offset = extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2437       length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2438       cu_list += 2 * 8;
2439
2440       the_cu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2441                                struct dwarf2_per_cu_data);
2442       the_cu->offset.sect_off = offset;
2443       the_cu->length = length;
2444       the_cu->objfile = objfile;
2445       the_cu->section = section;
2446       the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2447                                         struct dwarf2_per_cu_quick_data);
2448       the_cu->is_dwz = is_dwz;
2449       dwarf2_per_objfile->all_comp_units[base_offset + i / 2] = the_cu;
2450     }
2451 }
2452
2453 /* Read the CU list from the mapped index, and use it to create all
2454    the CU objects for this objfile.  */
2455
2456 static void
2457 create_cus_from_index (struct objfile *objfile,
2458                        const gdb_byte *cu_list, offset_type cu_list_elements,
2459                        const gdb_byte *dwz_list, offset_type dwz_elements)
2460 {
2461   struct dwz_file *dwz;
2462
2463   dwarf2_per_objfile->n_comp_units = (cu_list_elements + dwz_elements) / 2;
2464   dwarf2_per_objfile->all_comp_units
2465     = obstack_alloc (&objfile->objfile_obstack,
2466                      dwarf2_per_objfile->n_comp_units
2467                      * sizeof (struct dwarf2_per_cu_data *));
2468
2469   create_cus_from_index_list (objfile, cu_list, cu_list_elements,
2470                               &dwarf2_per_objfile->info, 0, 0);
2471
2472   if (dwz_elements == 0)
2473     return;
2474
2475   dwz = dwarf2_get_dwz_file ();
2476   create_cus_from_index_list (objfile, dwz_list, dwz_elements, &dwz->info, 1,
2477                               cu_list_elements / 2);
2478 }
2479
2480 /* Create the signatured type hash table from the index.  */
2481
2482 static void
2483 create_signatured_type_table_from_index (struct objfile *objfile,
2484                                          struct dwarf2_section_info *section,
2485                                          const gdb_byte *bytes,
2486                                          offset_type elements)
2487 {
2488   offset_type i;
2489   htab_t sig_types_hash;
2490
2491   dwarf2_per_objfile->n_type_units = elements / 3;
2492   dwarf2_per_objfile->all_type_units
2493     = xmalloc (dwarf2_per_objfile->n_type_units
2494                * sizeof (struct signatured_type *));
2495
2496   sig_types_hash = allocate_signatured_type_table (objfile);
2497
2498   for (i = 0; i < elements; i += 3)
2499     {
2500       struct signatured_type *sig_type;
2501       ULONGEST offset, type_offset_in_tu, signature;
2502       void **slot;
2503
2504       gdb_static_assert (sizeof (ULONGEST) >= 8);
2505       offset = extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
2506       type_offset_in_tu = extract_unsigned_integer (bytes + 8, 8,
2507                                                     BFD_ENDIAN_LITTLE);
2508       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
2509       bytes += 3 * 8;
2510
2511       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2512                                  struct signatured_type);
2513       sig_type->signature = signature;
2514       sig_type->type_offset_in_tu.cu_off = type_offset_in_tu;
2515       sig_type->per_cu.is_debug_types = 1;
2516       sig_type->per_cu.section = section;
2517       sig_type->per_cu.offset.sect_off = offset;
2518       sig_type->per_cu.objfile = objfile;
2519       sig_type->per_cu.v.quick
2520         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2521                           struct dwarf2_per_cu_quick_data);
2522
2523       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
2524       *slot = sig_type;
2525
2526       dwarf2_per_objfile->all_type_units[i / 3] = sig_type;
2527     }
2528
2529   dwarf2_per_objfile->signatured_types = sig_types_hash;
2530 }
2531
2532 /* Read the address map data from the mapped index, and use it to
2533    populate the objfile's psymtabs_addrmap.  */
2534
2535 static void
2536 create_addrmap_from_index (struct objfile *objfile, struct mapped_index *index)
2537 {
2538   const gdb_byte *iter, *end;
2539   struct obstack temp_obstack;
2540   struct addrmap *mutable_map;
2541   struct cleanup *cleanup;
2542   CORE_ADDR baseaddr;
2543
2544   obstack_init (&temp_obstack);
2545   cleanup = make_cleanup_obstack_free (&temp_obstack);
2546   mutable_map = addrmap_create_mutable (&temp_obstack);
2547
2548   iter = index->address_table;
2549   end = iter + index->address_table_size;
2550
2551   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
2552
2553   while (iter < end)
2554     {
2555       ULONGEST hi, lo, cu_index;
2556       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2557       iter += 8;
2558       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2559       iter += 8;
2560       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
2561       iter += 4;
2562
2563       if (cu_index < dwarf2_per_objfile->n_comp_units)
2564         {
2565           addrmap_set_empty (mutable_map, lo + baseaddr, hi + baseaddr - 1,
2566                              dw2_get_cu (cu_index));
2567         }
2568       else
2569         {
2570           complaint (&symfile_complaints,
2571                      _(".gdb_index address table has invalid CU number %u"),
2572                      (unsigned) cu_index);
2573         }
2574     }
2575
2576   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
2577                                                     &objfile->objfile_obstack);
2578   do_cleanups (cleanup);
2579 }
2580
2581 /* The hash function for strings in the mapped index.  This is the same as
2582    SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
2583    implementation.  This is necessary because the hash function is tied to the
2584    format of the mapped index file.  The hash values do not have to match with
2585    SYMBOL_HASH_NEXT.
2586    
2587    Use INT_MAX for INDEX_VERSION if you generate the current index format.  */
2588
2589 static hashval_t
2590 mapped_index_string_hash (int index_version, const void *p)
2591 {
2592   const unsigned char *str = (const unsigned char *) p;
2593   hashval_t r = 0;
2594   unsigned char c;
2595
2596   while ((c = *str++) != 0)
2597     {
2598       if (index_version >= 5)
2599         c = tolower (c);
2600       r = r * 67 + c - 113;
2601     }
2602
2603   return r;
2604 }
2605
2606 /* Find a slot in the mapped index INDEX for the object named NAME.
2607    If NAME is found, set *VEC_OUT to point to the CU vector in the
2608    constant pool and return 1.  If NAME cannot be found, return 0.  */
2609
2610 static int
2611 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
2612                           offset_type **vec_out)
2613 {
2614   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2615   offset_type hash;
2616   offset_type slot, step;
2617   int (*cmp) (const char *, const char *);
2618
2619   if (current_language->la_language == language_cplus
2620       || current_language->la_language == language_java
2621       || current_language->la_language == language_fortran)
2622     {
2623       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
2624          not contain any.  */
2625       const char *paren = strchr (name, '(');
2626
2627       if (paren)
2628         {
2629           char *dup;
2630
2631           dup = xmalloc (paren - name + 1);
2632           memcpy (dup, name, paren - name);
2633           dup[paren - name] = 0;
2634
2635           make_cleanup (xfree, dup);
2636           name = dup;
2637         }
2638     }
2639
2640   /* Index version 4 did not support case insensitive searches.  But the
2641      indices for case insensitive languages are built in lowercase, therefore
2642      simulate our NAME being searched is also lowercased.  */
2643   hash = mapped_index_string_hash ((index->version == 4
2644                                     && case_sensitivity == case_sensitive_off
2645                                     ? 5 : index->version),
2646                                    name);
2647
2648   slot = hash & (index->symbol_table_slots - 1);
2649   step = ((hash * 17) & (index->symbol_table_slots - 1)) | 1;
2650   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
2651
2652   for (;;)
2653     {
2654       /* Convert a slot number to an offset into the table.  */
2655       offset_type i = 2 * slot;
2656       const char *str;
2657       if (index->symbol_table[i] == 0 && index->symbol_table[i + 1] == 0)
2658         {
2659           do_cleanups (back_to);
2660           return 0;
2661         }
2662
2663       str = index->constant_pool + MAYBE_SWAP (index->symbol_table[i]);
2664       if (!cmp (name, str))
2665         {
2666           *vec_out = (offset_type *) (index->constant_pool
2667                                       + MAYBE_SWAP (index->symbol_table[i + 1]));
2668           do_cleanups (back_to);
2669           return 1;
2670         }
2671
2672       slot = (slot + step) & (index->symbol_table_slots - 1);
2673     }
2674 }
2675
2676 /* A helper function that reads the .gdb_index from SECTION and fills
2677    in MAP.  FILENAME is the name of the file containing the section;
2678    it is used for error reporting.  DEPRECATED_OK is nonzero if it is
2679    ok to use deprecated sections.
2680
2681    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
2682    out parameters that are filled in with information about the CU and
2683    TU lists in the section.
2684
2685    Returns 1 if all went well, 0 otherwise.  */
2686
2687 static int
2688 read_index_from_section (struct objfile *objfile,
2689                          const char *filename,
2690                          int deprecated_ok,
2691                          struct dwarf2_section_info *section,
2692                          struct mapped_index *map,
2693                          const gdb_byte **cu_list,
2694                          offset_type *cu_list_elements,
2695                          const gdb_byte **types_list,
2696                          offset_type *types_list_elements)
2697 {
2698   const gdb_byte *addr;
2699   offset_type version;
2700   offset_type *metadata;
2701   int i;
2702
2703   if (dwarf2_section_empty_p (section))
2704     return 0;
2705
2706   /* Older elfutils strip versions could keep the section in the main
2707      executable while splitting it for the separate debug info file.  */
2708   if ((bfd_get_file_flags (section->asection) & SEC_HAS_CONTENTS) == 0)
2709     return 0;
2710
2711   dwarf2_read_section (objfile, section);
2712
2713   addr = section->buffer;
2714   /* Version check.  */
2715   version = MAYBE_SWAP (*(offset_type *) addr);
2716   /* Versions earlier than 3 emitted every copy of a psymbol.  This
2717      causes the index to behave very poorly for certain requests.  Version 3
2718      contained incomplete addrmap.  So, it seems better to just ignore such
2719      indices.  */
2720   if (version < 4)
2721     {
2722       static int warning_printed = 0;
2723       if (!warning_printed)
2724         {
2725           warning (_("Skipping obsolete .gdb_index section in %s."),
2726                    filename);
2727           warning_printed = 1;
2728         }
2729       return 0;
2730     }
2731   /* Index version 4 uses a different hash function than index version
2732      5 and later.
2733
2734      Versions earlier than 6 did not emit psymbols for inlined
2735      functions.  Using these files will cause GDB not to be able to
2736      set breakpoints on inlined functions by name, so we ignore these
2737      indices unless the user has done
2738      "set use-deprecated-index-sections on".  */
2739   if (version < 6 && !deprecated_ok)
2740     {
2741       static int warning_printed = 0;
2742       if (!warning_printed)
2743         {
2744           warning (_("\
2745 Skipping deprecated .gdb_index section in %s.\n\
2746 Do \"set use-deprecated-index-sections on\" before the file is read\n\
2747 to use the section anyway."),
2748                    filename);
2749           warning_printed = 1;
2750         }
2751       return 0;
2752     }
2753   /* Version 7 indices generated by gold refer to the CU for a symbol instead
2754      of the TU (for symbols coming from TUs).  It's just a performance bug, and
2755      we can't distinguish gdb-generated indices from gold-generated ones, so
2756      nothing to do here.  */
2757
2758   /* Indexes with higher version than the one supported by GDB may be no
2759      longer backward compatible.  */
2760   if (version > 8)
2761     return 0;
2762
2763   map->version = version;
2764   map->total_size = section->size;
2765
2766   metadata = (offset_type *) (addr + sizeof (offset_type));
2767
2768   i = 0;
2769   *cu_list = addr + MAYBE_SWAP (metadata[i]);
2770   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
2771                        / 8);
2772   ++i;
2773
2774   *types_list = addr + MAYBE_SWAP (metadata[i]);
2775   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
2776                            - MAYBE_SWAP (metadata[i]))
2777                           / 8);
2778   ++i;
2779
2780   map->address_table = addr + MAYBE_SWAP (metadata[i]);
2781   map->address_table_size = (MAYBE_SWAP (metadata[i + 1])
2782                              - MAYBE_SWAP (metadata[i]));
2783   ++i;
2784
2785   map->symbol_table = (offset_type *) (addr + MAYBE_SWAP (metadata[i]));
2786   map->symbol_table_slots = ((MAYBE_SWAP (metadata[i + 1])
2787                               - MAYBE_SWAP (metadata[i]))
2788                              / (2 * sizeof (offset_type)));
2789   ++i;
2790
2791   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
2792
2793   return 1;
2794 }
2795
2796
2797 /* Read the index file.  If everything went ok, initialize the "quick"
2798    elements of all the CUs and return 1.  Otherwise, return 0.  */
2799
2800 static int
2801 dwarf2_read_index (struct objfile *objfile)
2802 {
2803   struct mapped_index local_map, *map;
2804   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
2805   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
2806   struct dwz_file *dwz;
2807
2808   if (!read_index_from_section (objfile, objfile->name,
2809                                 use_deprecated_index_sections,
2810                                 &dwarf2_per_objfile->gdb_index, &local_map,
2811                                 &cu_list, &cu_list_elements,
2812                                 &types_list, &types_list_elements))
2813     return 0;
2814
2815   /* Don't use the index if it's empty.  */
2816   if (local_map.symbol_table_slots == 0)
2817     return 0;
2818
2819   /* If there is a .dwz file, read it so we can get its CU list as
2820      well.  */
2821   dwz = dwarf2_get_dwz_file ();
2822   if (dwz != NULL)
2823     {
2824       struct mapped_index dwz_map;
2825       const gdb_byte *dwz_types_ignore;
2826       offset_type dwz_types_elements_ignore;
2827
2828       if (!read_index_from_section (objfile, bfd_get_filename (dwz->dwz_bfd),
2829                                     1,
2830                                     &dwz->gdb_index, &dwz_map,
2831                                     &dwz_list, &dwz_list_elements,
2832                                     &dwz_types_ignore,
2833                                     &dwz_types_elements_ignore))
2834         {
2835           warning (_("could not read '.gdb_index' section from %s; skipping"),
2836                    bfd_get_filename (dwz->dwz_bfd));
2837           return 0;
2838         }
2839     }
2840
2841   create_cus_from_index (objfile, cu_list, cu_list_elements, dwz_list,
2842                          dwz_list_elements);
2843
2844   if (types_list_elements)
2845     {
2846       struct dwarf2_section_info *section;
2847
2848       /* We can only handle a single .debug_types when we have an
2849          index.  */
2850       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
2851         return 0;
2852
2853       section = VEC_index (dwarf2_section_info_def,
2854                            dwarf2_per_objfile->types, 0);
2855
2856       create_signatured_type_table_from_index (objfile, section, types_list,
2857                                                types_list_elements);
2858     }
2859
2860   create_addrmap_from_index (objfile, &local_map);
2861
2862   map = obstack_alloc (&objfile->objfile_obstack, sizeof (struct mapped_index));
2863   *map = local_map;
2864
2865   dwarf2_per_objfile->index_table = map;
2866   dwarf2_per_objfile->using_index = 1;
2867   dwarf2_per_objfile->quick_file_names_table =
2868     create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
2869
2870   return 1;
2871 }
2872
2873 /* A helper for the "quick" functions which sets the global
2874    dwarf2_per_objfile according to OBJFILE.  */
2875
2876 static void
2877 dw2_setup (struct objfile *objfile)
2878 {
2879   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
2880   gdb_assert (dwarf2_per_objfile);
2881 }
2882
2883 /* die_reader_func for dw2_get_file_names.  */
2884
2885 static void
2886 dw2_get_file_names_reader (const struct die_reader_specs *reader,
2887                            const gdb_byte *info_ptr,
2888                            struct die_info *comp_unit_die,
2889                            int has_children,
2890                            void *data)
2891 {
2892   struct dwarf2_cu *cu = reader->cu;
2893   struct dwarf2_per_cu_data *this_cu = cu->per_cu;  
2894   struct objfile *objfile = dwarf2_per_objfile->objfile;
2895   struct dwarf2_per_cu_data *lh_cu;
2896   struct line_header *lh;
2897   struct attribute *attr;
2898   int i;
2899   const char *name, *comp_dir;
2900   void **slot;
2901   struct quick_file_names *qfn;
2902   unsigned int line_offset;
2903
2904   gdb_assert (! this_cu->is_debug_types);
2905
2906   /* Our callers never want to match partial units -- instead they
2907      will match the enclosing full CU.  */
2908   if (comp_unit_die->tag == DW_TAG_partial_unit)
2909     {
2910       this_cu->v.quick->no_file_data = 1;
2911       return;
2912     }
2913
2914   lh_cu = this_cu;
2915   lh = NULL;
2916   slot = NULL;
2917   line_offset = 0;
2918
2919   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
2920   if (attr)
2921     {
2922       struct quick_file_names find_entry;
2923
2924       line_offset = DW_UNSND (attr);
2925
2926       /* We may have already read in this line header (TU line header sharing).
2927          If we have we're done.  */
2928       find_entry.hash.dwo_unit = cu->dwo_unit;
2929       find_entry.hash.line_offset.sect_off = line_offset;
2930       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
2931                              &find_entry, INSERT);
2932       if (*slot != NULL)
2933         {
2934           lh_cu->v.quick->file_names = *slot;
2935           return;
2936         }
2937
2938       lh = dwarf_decode_line_header (line_offset, cu);
2939     }
2940   if (lh == NULL)
2941     {
2942       lh_cu->v.quick->no_file_data = 1;
2943       return;
2944     }
2945
2946   qfn = obstack_alloc (&objfile->objfile_obstack, sizeof (*qfn));
2947   qfn->hash.dwo_unit = cu->dwo_unit;
2948   qfn->hash.line_offset.sect_off = line_offset;
2949   gdb_assert (slot != NULL);
2950   *slot = qfn;
2951
2952   find_file_and_directory (comp_unit_die, cu, &name, &comp_dir);
2953
2954   qfn->num_file_names = lh->num_file_names;
2955   qfn->file_names = obstack_alloc (&objfile->objfile_obstack,
2956                                    lh->num_file_names * sizeof (char *));
2957   for (i = 0; i < lh->num_file_names; ++i)
2958     qfn->file_names[i] = file_full_name (i + 1, lh, comp_dir);
2959   qfn->real_names = NULL;
2960
2961   free_line_header (lh);
2962
2963   lh_cu->v.quick->file_names = qfn;
2964 }
2965
2966 /* A helper for the "quick" functions which attempts to read the line
2967    table for THIS_CU.  */
2968
2969 static struct quick_file_names *
2970 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
2971 {
2972   /* This should never be called for TUs.  */
2973   gdb_assert (! this_cu->is_debug_types);
2974   /* Nor type unit groups.  */
2975   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
2976
2977   if (this_cu->v.quick->file_names != NULL)
2978     return this_cu->v.quick->file_names;
2979   /* If we know there is no line data, no point in looking again.  */
2980   if (this_cu->v.quick->no_file_data)
2981     return NULL;
2982
2983   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
2984
2985   if (this_cu->v.quick->no_file_data)
2986     return NULL;
2987   return this_cu->v.quick->file_names;
2988 }
2989
2990 /* A helper for the "quick" functions which computes and caches the
2991    real path for a given file name from the line table.  */
2992
2993 static const char *
2994 dw2_get_real_path (struct objfile *objfile,
2995                    struct quick_file_names *qfn, int index)
2996 {
2997   if (qfn->real_names == NULL)
2998     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
2999                                       qfn->num_file_names, sizeof (char *));
3000
3001   if (qfn->real_names[index] == NULL)
3002     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]);
3003
3004   return qfn->real_names[index];
3005 }
3006
3007 static struct symtab *
3008 dw2_find_last_source_symtab (struct objfile *objfile)
3009 {
3010   int index;
3011
3012   dw2_setup (objfile);
3013   index = dwarf2_per_objfile->n_comp_units - 1;
3014   return dw2_instantiate_symtab (dw2_get_cu (index));
3015 }
3016
3017 /* Traversal function for dw2_forget_cached_source_info.  */
3018
3019 static int
3020 dw2_free_cached_file_names (void **slot, void *info)
3021 {
3022   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3023
3024   if (file_data->real_names)
3025     {
3026       int i;
3027
3028       for (i = 0; i < file_data->num_file_names; ++i)
3029         {
3030           xfree ((void*) file_data->real_names[i]);
3031           file_data->real_names[i] = NULL;
3032         }
3033     }
3034
3035   return 1;
3036 }
3037
3038 static void
3039 dw2_forget_cached_source_info (struct objfile *objfile)
3040 {
3041   dw2_setup (objfile);
3042
3043   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3044                           dw2_free_cached_file_names, NULL);
3045 }
3046
3047 /* Helper function for dw2_map_symtabs_matching_filename that expands
3048    the symtabs and calls the iterator.  */
3049
3050 static int
3051 dw2_map_expand_apply (struct objfile *objfile,
3052                       struct dwarf2_per_cu_data *per_cu,
3053                       const char *name, const char *real_path,
3054                       int (*callback) (struct symtab *, void *),
3055                       void *data)
3056 {
3057   struct symtab *last_made = objfile->symtabs;
3058
3059   /* Don't visit already-expanded CUs.  */
3060   if (per_cu->v.quick->symtab)
3061     return 0;
3062
3063   /* This may expand more than one symtab, and we want to iterate over
3064      all of them.  */
3065   dw2_instantiate_symtab (per_cu);
3066
3067   return iterate_over_some_symtabs (name, real_path, callback, data,
3068                                     objfile->symtabs, last_made);
3069 }
3070
3071 /* Implementation of the map_symtabs_matching_filename method.  */
3072
3073 static int
3074 dw2_map_symtabs_matching_filename (struct objfile *objfile, const char *name,
3075                                    const char *real_path,
3076                                    int (*callback) (struct symtab *, void *),
3077                                    void *data)
3078 {
3079   int i;
3080   const char *name_basename = lbasename (name);
3081
3082   dw2_setup (objfile);
3083
3084   /* The rule is CUs specify all the files, including those used by
3085      any TU, so there's no need to scan TUs here.  */
3086
3087   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3088     {
3089       int j;
3090       struct dwarf2_per_cu_data *per_cu = dw2_get_primary_cu (i);
3091       struct quick_file_names *file_data;
3092
3093       /* We only need to look at symtabs not already expanded.  */
3094       if (per_cu->v.quick->symtab)
3095         continue;
3096
3097       file_data = dw2_get_file_names (per_cu);
3098       if (file_data == NULL)
3099         continue;
3100
3101       for (j = 0; j < file_data->num_file_names; ++j)
3102         {
3103           const char *this_name = file_data->file_names[j];
3104           const char *this_real_name;
3105
3106           if (compare_filenames_for_search (this_name, name))
3107             {
3108               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3109                                         callback, data))
3110                 return 1;
3111               continue;
3112             }
3113
3114           /* Before we invoke realpath, which can get expensive when many
3115              files are involved, do a quick comparison of the basenames.  */
3116           if (! basenames_may_differ
3117               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3118             continue;
3119
3120           this_real_name = dw2_get_real_path (objfile, file_data, j);
3121           if (compare_filenames_for_search (this_real_name, name))
3122             {
3123               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3124                                         callback, data))
3125                 return 1;
3126               continue;
3127             }
3128
3129           if (real_path != NULL)
3130             {
3131               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3132               gdb_assert (IS_ABSOLUTE_PATH (name));
3133               if (this_real_name != NULL
3134                   && FILENAME_CMP (real_path, this_real_name) == 0)
3135                 {
3136                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3137                                             callback, data))
3138                     return 1;
3139                   continue;
3140                 }
3141             }
3142         }
3143     }
3144
3145   return 0;
3146 }
3147
3148 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3149
3150 struct dw2_symtab_iterator
3151 {
3152   /* The internalized form of .gdb_index.  */
3153   struct mapped_index *index;
3154   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
3155   int want_specific_block;
3156   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3157      Unused if !WANT_SPECIFIC_BLOCK.  */
3158   int block_index;
3159   /* The kind of symbol we're looking for.  */
3160   domain_enum domain;
3161   /* The list of CUs from the index entry of the symbol,
3162      or NULL if not found.  */
3163   offset_type *vec;
3164   /* The next element in VEC to look at.  */
3165   int next;
3166   /* The number of elements in VEC, or zero if there is no match.  */
3167   int length;
3168 };
3169
3170 /* Initialize the index symtab iterator ITER.
3171    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3172    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
3173
3174 static void
3175 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3176                       struct mapped_index *index,
3177                       int want_specific_block,
3178                       int block_index,
3179                       domain_enum domain,
3180                       const char *name)
3181 {
3182   iter->index = index;
3183   iter->want_specific_block = want_specific_block;
3184   iter->block_index = block_index;
3185   iter->domain = domain;
3186   iter->next = 0;
3187
3188   if (find_slot_in_mapped_hash (index, name, &iter->vec))
3189     iter->length = MAYBE_SWAP (*iter->vec);
3190   else
3191     {
3192       iter->vec = NULL;
3193       iter->length = 0;
3194     }
3195 }
3196
3197 /* Return the next matching CU or NULL if there are no more.  */
3198
3199 static struct dwarf2_per_cu_data *
3200 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3201 {
3202   for ( ; iter->next < iter->length; ++iter->next)
3203     {
3204       offset_type cu_index_and_attrs =
3205         MAYBE_SWAP (iter->vec[iter->next + 1]);
3206       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3207       struct dwarf2_per_cu_data *per_cu;
3208       int want_static = iter->block_index != GLOBAL_BLOCK;
3209       /* This value is only valid for index versions >= 7.  */
3210       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3211       gdb_index_symbol_kind symbol_kind =
3212         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3213       /* Only check the symbol attributes if they're present.
3214          Indices prior to version 7 don't record them,
3215          and indices >= 7 may elide them for certain symbols
3216          (gold does this).  */
3217       int attrs_valid =
3218         (iter->index->version >= 7
3219          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3220
3221       /* Don't crash on bad data.  */
3222       if (cu_index >= (dwarf2_per_objfile->n_comp_units
3223                        + dwarf2_per_objfile->n_type_units))
3224         {
3225           complaint (&symfile_complaints,
3226                      _(".gdb_index entry has bad CU index"
3227                        " [in module %s]"), dwarf2_per_objfile->objfile->name);
3228           continue;
3229         }
3230
3231       per_cu = dw2_get_cu (cu_index);
3232
3233       /* Skip if already read in.  */
3234       if (per_cu->v.quick->symtab)
3235         continue;
3236
3237       if (attrs_valid
3238           && iter->want_specific_block
3239           && want_static != is_static)
3240         continue;
3241
3242       /* Only check the symbol's kind if it has one.  */
3243       if (attrs_valid)
3244         {
3245           switch (iter->domain)
3246             {
3247             case VAR_DOMAIN:
3248               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
3249                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
3250                   /* Some types are also in VAR_DOMAIN.  */
3251                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3252                 continue;
3253               break;
3254             case STRUCT_DOMAIN:
3255               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3256                 continue;
3257               break;
3258             case LABEL_DOMAIN:
3259               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3260                 continue;
3261               break;
3262             default:
3263               break;
3264             }
3265         }
3266
3267       ++iter->next;
3268       return per_cu;
3269     }
3270
3271   return NULL;
3272 }
3273
3274 static struct symtab *
3275 dw2_lookup_symbol (struct objfile *objfile, int block_index,
3276                    const char *name, domain_enum domain)
3277 {
3278   struct symtab *stab_best = NULL;
3279   struct mapped_index *index;
3280
3281   dw2_setup (objfile);
3282
3283   index = dwarf2_per_objfile->index_table;
3284
3285   /* index is NULL if OBJF_READNOW.  */
3286   if (index)
3287     {
3288       struct dw2_symtab_iterator iter;
3289       struct dwarf2_per_cu_data *per_cu;
3290
3291       dw2_symtab_iter_init (&iter, index, 1, block_index, domain, name);
3292
3293       while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3294         {
3295           struct symbol *sym = NULL;
3296           struct symtab *stab = dw2_instantiate_symtab (per_cu);
3297
3298           /* Some caution must be observed with overloaded functions
3299              and methods, since the index will not contain any overload
3300              information (but NAME might contain it).  */
3301           if (stab->primary)
3302             {
3303               struct blockvector *bv = BLOCKVECTOR (stab);
3304               struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
3305
3306               sym = lookup_block_symbol (block, name, domain);
3307             }
3308
3309           if (sym && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
3310             {
3311               if (!TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
3312                 return stab;
3313
3314               stab_best = stab;
3315             }
3316
3317           /* Keep looking through other CUs.  */
3318         }
3319     }
3320
3321   return stab_best;
3322 }
3323
3324 static void
3325 dw2_print_stats (struct objfile *objfile)
3326 {
3327   int i, total, count;
3328
3329   dw2_setup (objfile);
3330   total = dwarf2_per_objfile->n_comp_units + dwarf2_per_objfile->n_type_units;
3331   count = 0;
3332   for (i = 0; i < total; ++i)
3333     {
3334       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3335
3336       if (!per_cu->v.quick->symtab)
3337         ++count;
3338     }
3339   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
3340   printf_filtered (_("  Number of unread CUs: %d\n"), count);
3341 }
3342
3343 static void
3344 dw2_dump (struct objfile *objfile)
3345 {
3346   /* Nothing worth printing.  */
3347 }
3348
3349 static void
3350 dw2_relocate (struct objfile *objfile,
3351               const struct section_offsets *new_offsets,
3352               const struct section_offsets *delta)
3353 {
3354   /* There's nothing to relocate here.  */
3355 }
3356
3357 static void
3358 dw2_expand_symtabs_for_function (struct objfile *objfile,
3359                                  const char *func_name)
3360 {
3361   struct mapped_index *index;
3362
3363   dw2_setup (objfile);
3364
3365   index = dwarf2_per_objfile->index_table;
3366
3367   /* index is NULL if OBJF_READNOW.  */
3368   if (index)
3369     {
3370       struct dw2_symtab_iterator iter;
3371       struct dwarf2_per_cu_data *per_cu;
3372
3373       /* Note: It doesn't matter what we pass for block_index here.  */
3374       dw2_symtab_iter_init (&iter, index, 0, GLOBAL_BLOCK, VAR_DOMAIN,
3375                             func_name);
3376
3377       while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3378         dw2_instantiate_symtab (per_cu);
3379     }
3380 }
3381
3382 static void
3383 dw2_expand_all_symtabs (struct objfile *objfile)
3384 {
3385   int i;
3386
3387   dw2_setup (objfile);
3388
3389   for (i = 0; i < (dwarf2_per_objfile->n_comp_units
3390                    + dwarf2_per_objfile->n_type_units); ++i)
3391     {
3392       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3393
3394       dw2_instantiate_symtab (per_cu);
3395     }
3396 }
3397
3398 static void
3399 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
3400                                   const char *fullname)
3401 {
3402   int i;
3403
3404   dw2_setup (objfile);
3405
3406   /* We don't need to consider type units here.
3407      This is only called for examining code, e.g. expand_line_sal.
3408      There can be an order of magnitude (or more) more type units
3409      than comp units, and we avoid them if we can.  */
3410
3411   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3412     {
3413       int j;
3414       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3415       struct quick_file_names *file_data;
3416
3417       /* We only need to look at symtabs not already expanded.  */
3418       if (per_cu->v.quick->symtab)
3419         continue;
3420
3421       file_data = dw2_get_file_names (per_cu);
3422       if (file_data == NULL)
3423         continue;
3424
3425       for (j = 0; j < file_data->num_file_names; ++j)
3426         {
3427           const char *this_fullname = file_data->file_names[j];
3428
3429           if (filename_cmp (this_fullname, fullname) == 0)
3430             {
3431               dw2_instantiate_symtab (per_cu);
3432               break;
3433             }
3434         }
3435     }
3436 }
3437
3438 /* A helper function for dw2_find_symbol_file that finds the primary
3439    file name for a given CU.  This is a die_reader_func.  */
3440
3441 static void
3442 dw2_get_primary_filename_reader (const struct die_reader_specs *reader,
3443                                  const gdb_byte *info_ptr,
3444                                  struct die_info *comp_unit_die,
3445                                  int has_children,
3446                                  void *data)
3447 {
3448   const char **result_ptr = data;
3449   struct dwarf2_cu *cu = reader->cu;
3450   struct attribute *attr;
3451
3452   attr = dwarf2_attr (comp_unit_die, DW_AT_name, cu);
3453   if (attr == NULL)
3454     *result_ptr = NULL;
3455   else
3456     *result_ptr = DW_STRING (attr);
3457 }
3458
3459 static const char *
3460 dw2_find_symbol_file (struct objfile *objfile, const char *name)
3461 {
3462   struct dwarf2_per_cu_data *per_cu;
3463   offset_type *vec;
3464   const char *filename;
3465
3466   dw2_setup (objfile);
3467
3468   /* index_table is NULL if OBJF_READNOW.  */
3469   if (!dwarf2_per_objfile->index_table)
3470     {
3471       struct symtab *s;
3472
3473       ALL_OBJFILE_PRIMARY_SYMTABS (objfile, s)
3474         {
3475           struct blockvector *bv = BLOCKVECTOR (s);
3476           const struct block *block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
3477           struct symbol *sym = lookup_block_symbol (block, name, VAR_DOMAIN);
3478
3479           if (sym)
3480             {
3481               /* Only file extension of returned filename is recognized.  */
3482               return SYMBOL_SYMTAB (sym)->filename;
3483             }
3484         }
3485       return NULL;
3486     }
3487
3488   if (!find_slot_in_mapped_hash (dwarf2_per_objfile->index_table,
3489                                  name, &vec))
3490     return NULL;
3491
3492   /* Note that this just looks at the very first one named NAME -- but
3493      actually we are looking for a function.  find_main_filename
3494      should be rewritten so that it doesn't require a custom hook.  It
3495      could just use the ordinary symbol tables.  */
3496   /* vec[0] is the length, which must always be >0.  */
3497   per_cu = dw2_get_cu (GDB_INDEX_CU_VALUE (MAYBE_SWAP (vec[1])));
3498
3499   if (per_cu->v.quick->symtab != NULL)
3500     {
3501       /* Only file extension of returned filename is recognized.  */
3502       return per_cu->v.quick->symtab->filename;
3503     }
3504
3505   /* Initialize filename in case there's a problem reading the DWARF,
3506      dw2_get_primary_filename_reader may not get called.  */
3507   filename = NULL;
3508   init_cutu_and_read_dies (per_cu, NULL, 0, 0,
3509                            dw2_get_primary_filename_reader, &filename);
3510
3511   /* Only file extension of returned filename is recognized.  */
3512   return filename;
3513 }
3514
3515 static void
3516 dw2_map_matching_symbols (const char * name, domain_enum namespace,
3517                           struct objfile *objfile, int global,
3518                           int (*callback) (struct block *,
3519                                            struct symbol *, void *),
3520                           void *data, symbol_compare_ftype *match,
3521                           symbol_compare_ftype *ordered_compare)
3522 {
3523   /* Currently unimplemented; used for Ada.  The function can be called if the
3524      current language is Ada for a non-Ada objfile using GNU index.  As Ada
3525      does not look for non-Ada symbols this function should just return.  */
3526 }
3527
3528 static void
3529 dw2_expand_symtabs_matching
3530   (struct objfile *objfile,
3531    int (*file_matcher) (const char *, void *, int basenames),
3532    int (*name_matcher) (const char *, void *),
3533    enum search_domain kind,
3534    void *data)
3535 {
3536   int i;
3537   offset_type iter;
3538   struct mapped_index *index;
3539
3540   dw2_setup (objfile);
3541
3542   /* index_table is NULL if OBJF_READNOW.  */
3543   if (!dwarf2_per_objfile->index_table)
3544     return;
3545   index = dwarf2_per_objfile->index_table;
3546
3547   if (file_matcher != NULL)
3548     {
3549       struct cleanup *cleanup;
3550       htab_t visited_found, visited_not_found;
3551
3552       visited_found = htab_create_alloc (10,
3553                                          htab_hash_pointer, htab_eq_pointer,
3554                                          NULL, xcalloc, xfree);
3555       cleanup = make_cleanup_htab_delete (visited_found);
3556       visited_not_found = htab_create_alloc (10,
3557                                              htab_hash_pointer, htab_eq_pointer,
3558                                              NULL, xcalloc, xfree);
3559       make_cleanup_htab_delete (visited_not_found);
3560
3561       /* The rule is CUs specify all the files, including those used by
3562          any TU, so there's no need to scan TUs here.  */
3563
3564       for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3565         {
3566           int j;
3567           struct dwarf2_per_cu_data *per_cu = dw2_get_primary_cu (i);
3568           struct quick_file_names *file_data;
3569           void **slot;
3570
3571           per_cu->v.quick->mark = 0;
3572
3573           /* We only need to look at symtabs not already expanded.  */
3574           if (per_cu->v.quick->symtab)
3575             continue;
3576
3577           file_data = dw2_get_file_names (per_cu);
3578           if (file_data == NULL)
3579             continue;
3580
3581           if (htab_find (visited_not_found, file_data) != NULL)
3582             continue;
3583           else if (htab_find (visited_found, file_data) != NULL)
3584             {
3585               per_cu->v.quick->mark = 1;
3586               continue;
3587             }
3588
3589           for (j = 0; j < file_data->num_file_names; ++j)
3590             {
3591               const char *this_real_name;
3592
3593               if (file_matcher (file_data->file_names[j], data, 0))
3594                 {
3595                   per_cu->v.quick->mark = 1;
3596                   break;
3597                 }
3598
3599               /* Before we invoke realpath, which can get expensive when many
3600                  files are involved, do a quick comparison of the basenames.  */
3601               if (!basenames_may_differ
3602                   && !file_matcher (lbasename (file_data->file_names[j]),
3603                                     data, 1))
3604                 continue;
3605
3606               this_real_name = dw2_get_real_path (objfile, file_data, j);
3607               if (file_matcher (this_real_name, data, 0))
3608                 {
3609                   per_cu->v.quick->mark = 1;
3610                   break;
3611                 }
3612             }
3613
3614           slot = htab_find_slot (per_cu->v.quick->mark
3615                                  ? visited_found
3616                                  : visited_not_found,
3617                                  file_data, INSERT);
3618           *slot = file_data;
3619         }
3620
3621       do_cleanups (cleanup);
3622     }
3623
3624   for (iter = 0; iter < index->symbol_table_slots; ++iter)
3625     {
3626       offset_type idx = 2 * iter;
3627       const char *name;
3628       offset_type *vec, vec_len, vec_idx;
3629
3630       if (index->symbol_table[idx] == 0 && index->symbol_table[idx + 1] == 0)
3631         continue;
3632
3633       name = index->constant_pool + MAYBE_SWAP (index->symbol_table[idx]);
3634
3635       if (! (*name_matcher) (name, data))
3636         continue;
3637
3638       /* The name was matched, now expand corresponding CUs that were
3639          marked.  */
3640       vec = (offset_type *) (index->constant_pool
3641                              + MAYBE_SWAP (index->symbol_table[idx + 1]));
3642       vec_len = MAYBE_SWAP (vec[0]);
3643       for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
3644         {
3645           struct dwarf2_per_cu_data *per_cu;
3646           offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
3647           gdb_index_symbol_kind symbol_kind =
3648             GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3649           int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3650           /* Only check the symbol attributes if they're present.
3651              Indices prior to version 7 don't record them,
3652              and indices >= 7 may elide them for certain symbols
3653              (gold does this).  */
3654           int attrs_valid =
3655             (index->version >= 7
3656              && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3657
3658           /* Only check the symbol's kind if it has one.  */
3659           if (attrs_valid)
3660             {
3661               switch (kind)
3662                 {
3663                 case VARIABLES_DOMAIN:
3664                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
3665                     continue;
3666                   break;
3667                 case FUNCTIONS_DOMAIN:
3668                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
3669                     continue;
3670                   break;
3671                 case TYPES_DOMAIN:
3672                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3673                     continue;
3674                   break;
3675                 default:
3676                   break;
3677                 }
3678             }
3679
3680           /* Don't crash on bad data.  */
3681           if (cu_index >= (dwarf2_per_objfile->n_comp_units
3682                            + dwarf2_per_objfile->n_type_units))
3683             {
3684               complaint (&symfile_complaints,
3685                          _(".gdb_index entry has bad CU index"
3686                            " [in module %s]"), objfile->name);
3687               continue;
3688             }
3689
3690           per_cu = dw2_get_cu (cu_index);
3691           if (file_matcher == NULL || per_cu->v.quick->mark)
3692             dw2_instantiate_symtab (per_cu);
3693         }
3694     }
3695 }
3696
3697 /* A helper for dw2_find_pc_sect_symtab which finds the most specific
3698    symtab.  */
3699
3700 static struct symtab *
3701 recursively_find_pc_sect_symtab (struct symtab *symtab, CORE_ADDR pc)
3702 {
3703   int i;
3704
3705   if (BLOCKVECTOR (symtab) != NULL
3706       && blockvector_contains_pc (BLOCKVECTOR (symtab), pc))
3707     return symtab;
3708
3709   if (symtab->includes == NULL)
3710     return NULL;
3711
3712   for (i = 0; symtab->includes[i]; ++i)
3713     {
3714       struct symtab *s = symtab->includes[i];
3715
3716       s = recursively_find_pc_sect_symtab (s, pc);
3717       if (s != NULL)
3718         return s;
3719     }
3720
3721   return NULL;
3722 }
3723
3724 static struct symtab *
3725 dw2_find_pc_sect_symtab (struct objfile *objfile,
3726                          struct minimal_symbol *msymbol,
3727                          CORE_ADDR pc,
3728                          struct obj_section *section,
3729                          int warn_if_readin)
3730 {
3731   struct dwarf2_per_cu_data *data;
3732   struct symtab *result;
3733
3734   dw2_setup (objfile);
3735
3736   if (!objfile->psymtabs_addrmap)
3737     return NULL;
3738
3739   data = addrmap_find (objfile->psymtabs_addrmap, pc);
3740   if (!data)
3741     return NULL;
3742
3743   if (warn_if_readin && data->v.quick->symtab)
3744     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
3745              paddress (get_objfile_arch (objfile), pc));
3746
3747   result = recursively_find_pc_sect_symtab (dw2_instantiate_symtab (data), pc);
3748   gdb_assert (result != NULL);
3749   return result;
3750 }
3751
3752 static void
3753 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
3754                           void *data, int need_fullname)
3755 {
3756   int i;
3757   struct cleanup *cleanup;
3758   htab_t visited = htab_create_alloc (10, htab_hash_pointer, htab_eq_pointer,
3759                                       NULL, xcalloc, xfree);
3760
3761   cleanup = make_cleanup_htab_delete (visited);
3762   dw2_setup (objfile);
3763
3764   /* The rule is CUs specify all the files, including those used by
3765      any TU, so there's no need to scan TUs here.
3766      We can ignore file names coming from already-expanded CUs.  */
3767
3768   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3769     {
3770       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3771
3772       if (per_cu->v.quick->symtab)
3773         {
3774           void **slot = htab_find_slot (visited, per_cu->v.quick->file_names,
3775                                         INSERT);
3776
3777           *slot = per_cu->v.quick->file_names;
3778         }
3779     }
3780
3781   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3782     {
3783       int j;
3784       struct dwarf2_per_cu_data *per_cu = dw2_get_primary_cu (i);
3785       struct quick_file_names *file_data;
3786       void **slot;
3787
3788       /* We only need to look at symtabs not already expanded.  */
3789       if (per_cu->v.quick->symtab)
3790         continue;
3791
3792       file_data = dw2_get_file_names (per_cu);
3793       if (file_data == NULL)
3794         continue;
3795
3796       slot = htab_find_slot (visited, file_data, INSERT);
3797       if (*slot)
3798         {
3799           /* Already visited.  */
3800           continue;
3801         }
3802       *slot = file_data;
3803
3804       for (j = 0; j < file_data->num_file_names; ++j)
3805         {
3806           const char *this_real_name;
3807
3808           if (need_fullname)
3809             this_real_name = dw2_get_real_path (objfile, file_data, j);
3810           else
3811             this_real_name = NULL;
3812           (*fun) (file_data->file_names[j], this_real_name, data);
3813         }
3814     }
3815
3816   do_cleanups (cleanup);
3817 }
3818
3819 static int
3820 dw2_has_symbols (struct objfile *objfile)
3821 {
3822   return 1;
3823 }
3824
3825 const struct quick_symbol_functions dwarf2_gdb_index_functions =
3826 {
3827   dw2_has_symbols,
3828   dw2_find_last_source_symtab,
3829   dw2_forget_cached_source_info,
3830   dw2_map_symtabs_matching_filename,
3831   dw2_lookup_symbol,
3832   dw2_print_stats,
3833   dw2_dump,
3834   dw2_relocate,
3835   dw2_expand_symtabs_for_function,
3836   dw2_expand_all_symtabs,
3837   dw2_expand_symtabs_with_fullname,
3838   dw2_find_symbol_file,
3839   dw2_map_matching_symbols,
3840   dw2_expand_symtabs_matching,
3841   dw2_find_pc_sect_symtab,
3842   dw2_map_symbol_filenames
3843 };
3844
3845 /* Initialize for reading DWARF for this objfile.  Return 0 if this
3846    file will use psymtabs, or 1 if using the GNU index.  */
3847
3848 int
3849 dwarf2_initialize_objfile (struct objfile *objfile)
3850 {
3851   /* If we're about to read full symbols, don't bother with the
3852      indices.  In this case we also don't care if some other debug
3853      format is making psymtabs, because they are all about to be
3854      expanded anyway.  */
3855   if ((objfile->flags & OBJF_READNOW))
3856     {
3857       int i;
3858
3859       dwarf2_per_objfile->using_index = 1;
3860       create_all_comp_units (objfile);
3861       create_all_type_units (objfile);
3862       dwarf2_per_objfile->quick_file_names_table =
3863         create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
3864
3865       for (i = 0; i < (dwarf2_per_objfile->n_comp_units
3866                        + dwarf2_per_objfile->n_type_units); ++i)
3867         {
3868           struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3869
3870           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3871                                             struct dwarf2_per_cu_quick_data);
3872         }
3873
3874       /* Return 1 so that gdb sees the "quick" functions.  However,
3875          these functions will be no-ops because we will have expanded
3876          all symtabs.  */
3877       return 1;
3878     }
3879
3880   if (dwarf2_read_index (objfile))
3881     return 1;
3882
3883   return 0;
3884 }
3885
3886 \f
3887
3888 /* Build a partial symbol table.  */
3889
3890 void
3891 dwarf2_build_psymtabs (struct objfile *objfile)
3892 {
3893   volatile struct gdb_exception except;
3894
3895   if (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0)
3896     {
3897       init_psymbol_list (objfile, 1024);
3898     }
3899
3900   TRY_CATCH (except, RETURN_MASK_ERROR)
3901     {
3902       /* This isn't really ideal: all the data we allocate on the
3903          objfile's obstack is still uselessly kept around.  However,
3904          freeing it seems unsafe.  */
3905       struct cleanup *cleanups = make_cleanup_discard_psymtabs (objfile);
3906
3907       dwarf2_build_psymtabs_hard (objfile);
3908       discard_cleanups (cleanups);
3909     }
3910   if (except.reason < 0)
3911     exception_print (gdb_stderr, except);
3912 }
3913
3914 /* Return the total length of the CU described by HEADER.  */
3915
3916 static unsigned int
3917 get_cu_length (const struct comp_unit_head *header)
3918 {
3919   return header->initial_length_size + header->length;
3920 }
3921
3922 /* Return TRUE if OFFSET is within CU_HEADER.  */
3923
3924 static inline int
3925 offset_in_cu_p (const struct comp_unit_head *cu_header, sect_offset offset)
3926 {
3927   sect_offset bottom = { cu_header->offset.sect_off };
3928   sect_offset top = { cu_header->offset.sect_off + get_cu_length (cu_header) };
3929
3930   return (offset.sect_off >= bottom.sect_off && offset.sect_off < top.sect_off);
3931 }
3932
3933 /* Find the base address of the compilation unit for range lists and
3934    location lists.  It will normally be specified by DW_AT_low_pc.
3935    In DWARF-3 draft 4, the base address could be overridden by
3936    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
3937    compilation units with discontinuous ranges.  */
3938
3939 static void
3940 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
3941 {
3942   struct attribute *attr;
3943
3944   cu->base_known = 0;
3945   cu->base_address = 0;
3946
3947   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
3948   if (attr)
3949     {
3950       cu->base_address = DW_ADDR (attr);
3951       cu->base_known = 1;
3952     }
3953   else
3954     {
3955       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
3956       if (attr)
3957         {
3958           cu->base_address = DW_ADDR (attr);
3959           cu->base_known = 1;
3960         }
3961     }
3962 }
3963
3964 /* Read in the comp unit header information from the debug_info at info_ptr.
3965    NOTE: This leaves members offset, first_die_offset to be filled in
3966    by the caller.  */
3967
3968 static const gdb_byte *
3969 read_comp_unit_head (struct comp_unit_head *cu_header,
3970                      const gdb_byte *info_ptr, bfd *abfd)
3971 {
3972   int signed_addr;
3973   unsigned int bytes_read;
3974
3975   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
3976   cu_header->initial_length_size = bytes_read;
3977   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
3978   info_ptr += bytes_read;
3979   cu_header->version = read_2_bytes (abfd, info_ptr);
3980   info_ptr += 2;
3981   cu_header->abbrev_offset.sect_off = read_offset (abfd, info_ptr, cu_header,
3982                                              &bytes_read);
3983   info_ptr += bytes_read;
3984   cu_header->addr_size = read_1_byte (abfd, info_ptr);
3985   info_ptr += 1;
3986   signed_addr = bfd_get_sign_extend_vma (abfd);
3987   if (signed_addr < 0)
3988     internal_error (__FILE__, __LINE__,
3989                     _("read_comp_unit_head: dwarf from non elf file"));
3990   cu_header->signed_addr_p = signed_addr;
3991
3992   return info_ptr;
3993 }
3994
3995 /* Helper function that returns the proper abbrev section for
3996    THIS_CU.  */
3997
3998 static struct dwarf2_section_info *
3999 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
4000 {
4001   struct dwarf2_section_info *abbrev;
4002
4003   if (this_cu->is_dwz)
4004     abbrev = &dwarf2_get_dwz_file ()->abbrev;
4005   else
4006     abbrev = &dwarf2_per_objfile->abbrev;
4007
4008   return abbrev;
4009 }
4010
4011 /* Subroutine of read_and_check_comp_unit_head and
4012    read_and_check_type_unit_head to simplify them.
4013    Perform various error checking on the header.  */
4014
4015 static void
4016 error_check_comp_unit_head (struct comp_unit_head *header,
4017                             struct dwarf2_section_info *section,
4018                             struct dwarf2_section_info *abbrev_section)
4019 {
4020   bfd *abfd = section->asection->owner;
4021   const char *filename = bfd_get_filename (abfd);
4022
4023   if (header->version != 2 && header->version != 3 && header->version != 4)
4024     error (_("Dwarf Error: wrong version in compilation unit header "
4025            "(is %d, should be 2, 3, or 4) [in module %s]"), header->version,
4026            filename);
4027
4028   if (header->abbrev_offset.sect_off
4029       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
4030     error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
4031            "(offset 0x%lx + 6) [in module %s]"),
4032            (long) header->abbrev_offset.sect_off, (long) header->offset.sect_off,
4033            filename);
4034
4035   /* Cast to unsigned long to use 64-bit arithmetic when possible to
4036      avoid potential 32-bit overflow.  */
4037   if (((unsigned long) header->offset.sect_off + get_cu_length (header))
4038       > section->size)
4039     error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
4040            "(offset 0x%lx + 0) [in module %s]"),
4041            (long) header->length, (long) header->offset.sect_off,
4042            filename);
4043 }
4044
4045 /* Read in a CU/TU header and perform some basic error checking.
4046    The contents of the header are stored in HEADER.
4047    The result is a pointer to the start of the first DIE.  */
4048
4049 static const gdb_byte *
4050 read_and_check_comp_unit_head (struct comp_unit_head *header,
4051                                struct dwarf2_section_info *section,
4052                                struct dwarf2_section_info *abbrev_section,
4053                                const gdb_byte *info_ptr,
4054                                int is_debug_types_section)
4055 {
4056   const gdb_byte *beg_of_comp_unit = info_ptr;
4057   bfd *abfd = section->asection->owner;
4058
4059   header->offset.sect_off = beg_of_comp_unit - section->buffer;
4060
4061   info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4062
4063   /* If we're reading a type unit, skip over the signature and
4064      type_offset fields.  */
4065   if (is_debug_types_section)
4066     info_ptr += 8 /*signature*/ + header->offset_size;
4067
4068   header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
4069
4070   error_check_comp_unit_head (header, section, abbrev_section);
4071
4072   return info_ptr;
4073 }
4074
4075 /* Read in the types comp unit header information from .debug_types entry at
4076    types_ptr.  The result is a pointer to one past the end of the header.  */
4077
4078 static const gdb_byte *
4079 read_and_check_type_unit_head (struct comp_unit_head *header,
4080                                struct dwarf2_section_info *section,
4081                                struct dwarf2_section_info *abbrev_section,
4082                                const gdb_byte *info_ptr,
4083                                ULONGEST *signature,
4084                                cu_offset *type_offset_in_tu)
4085 {
4086   const gdb_byte *beg_of_comp_unit = info_ptr;
4087   bfd *abfd = section->asection->owner;
4088
4089   header->offset.sect_off = beg_of_comp_unit - section->buffer;
4090
4091   info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4092
4093   /* If we're reading a type unit, skip over the signature and
4094      type_offset fields.  */
4095   if (signature != NULL)
4096     *signature = read_8_bytes (abfd, info_ptr);
4097   info_ptr += 8;
4098   if (type_offset_in_tu != NULL)
4099     type_offset_in_tu->cu_off = read_offset_1 (abfd, info_ptr,
4100                                                header->offset_size);
4101   info_ptr += header->offset_size;
4102
4103   header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
4104
4105   error_check_comp_unit_head (header, section, abbrev_section);
4106
4107   return info_ptr;
4108 }
4109
4110 /* Fetch the abbreviation table offset from a comp or type unit header.  */
4111
4112 static sect_offset
4113 read_abbrev_offset (struct dwarf2_section_info *section,
4114                     sect_offset offset)
4115 {
4116   bfd *abfd = section->asection->owner;
4117   const gdb_byte *info_ptr;
4118   unsigned int length, initial_length_size, offset_size;
4119   sect_offset abbrev_offset;
4120
4121   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
4122   info_ptr = section->buffer + offset.sect_off;
4123   length = read_initial_length (abfd, info_ptr, &initial_length_size);
4124   offset_size = initial_length_size == 4 ? 4 : 8;
4125   info_ptr += initial_length_size + 2 /*version*/;
4126   abbrev_offset.sect_off = read_offset_1 (abfd, info_ptr, offset_size);
4127   return abbrev_offset;
4128 }
4129
4130 /* Allocate a new partial symtab for file named NAME and mark this new
4131    partial symtab as being an include of PST.  */
4132
4133 static void
4134 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
4135                                struct objfile *objfile)
4136 {
4137   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
4138
4139   if (!IS_ABSOLUTE_PATH (subpst->filename))
4140     {
4141       /* It shares objfile->objfile_obstack.  */
4142       subpst->dirname = pst->dirname;
4143     }
4144
4145   subpst->section_offsets = pst->section_offsets;
4146   subpst->textlow = 0;
4147   subpst->texthigh = 0;
4148
4149   subpst->dependencies = (struct partial_symtab **)
4150     obstack_alloc (&objfile->objfile_obstack,
4151                    sizeof (struct partial_symtab *));
4152   subpst->dependencies[0] = pst;
4153   subpst->number_of_dependencies = 1;
4154
4155   subpst->globals_offset = 0;
4156   subpst->n_global_syms = 0;
4157   subpst->statics_offset = 0;
4158   subpst->n_static_syms = 0;
4159   subpst->symtab = NULL;
4160   subpst->read_symtab = pst->read_symtab;
4161   subpst->readin = 0;
4162
4163   /* No private part is necessary for include psymtabs.  This property
4164      can be used to differentiate between such include psymtabs and
4165      the regular ones.  */
4166   subpst->read_symtab_private = NULL;
4167 }
4168
4169 /* Read the Line Number Program data and extract the list of files
4170    included by the source file represented by PST.  Build an include
4171    partial symtab for each of these included files.  */
4172
4173 static void
4174 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
4175                                struct die_info *die,
4176                                struct partial_symtab *pst)
4177 {
4178   struct line_header *lh = NULL;
4179   struct attribute *attr;
4180
4181   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
4182   if (attr)
4183     lh = dwarf_decode_line_header (DW_UNSND (attr), cu);
4184   if (lh == NULL)
4185     return;  /* No linetable, so no includes.  */
4186
4187   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  */
4188   dwarf_decode_lines (lh, pst->dirname, cu, pst, 1);
4189
4190   free_line_header (lh);
4191 }
4192
4193 static hashval_t
4194 hash_signatured_type (const void *item)
4195 {
4196   const struct signatured_type *sig_type = item;
4197
4198   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
4199   return sig_type->signature;
4200 }
4201
4202 static int
4203 eq_signatured_type (const void *item_lhs, const void *item_rhs)
4204 {
4205   const struct signatured_type *lhs = item_lhs;
4206   const struct signatured_type *rhs = item_rhs;
4207
4208   return lhs->signature == rhs->signature;
4209 }
4210
4211 /* Allocate a hash table for signatured types.  */
4212
4213 static htab_t
4214 allocate_signatured_type_table (struct objfile *objfile)
4215 {
4216   return htab_create_alloc_ex (41,
4217                                hash_signatured_type,
4218                                eq_signatured_type,
4219                                NULL,
4220                                &objfile->objfile_obstack,
4221                                hashtab_obstack_allocate,
4222                                dummy_obstack_deallocate);
4223 }
4224
4225 /* A helper function to add a signatured type CU to a table.  */
4226
4227 static int
4228 add_signatured_type_cu_to_table (void **slot, void *datum)
4229 {
4230   struct signatured_type *sigt = *slot;
4231   struct signatured_type ***datap = datum;
4232
4233   **datap = sigt;
4234   ++*datap;
4235
4236   return 1;
4237 }
4238
4239 /* Create the hash table of all entries in the .debug_types
4240    (or .debug_types.dwo) section(s).
4241    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
4242    otherwise it is NULL.
4243
4244    The result is a pointer to the hash table or NULL if there are no types.
4245
4246    Note: This function processes DWO files only, not DWP files.  */
4247
4248 static htab_t
4249 create_debug_types_hash_table (struct dwo_file *dwo_file,
4250                                VEC (dwarf2_section_info_def) *types)
4251 {
4252   struct objfile *objfile = dwarf2_per_objfile->objfile;
4253   htab_t types_htab = NULL;
4254   int ix;
4255   struct dwarf2_section_info *section;
4256   struct dwarf2_section_info *abbrev_section;
4257
4258   if (VEC_empty (dwarf2_section_info_def, types))
4259     return NULL;
4260
4261   abbrev_section = (dwo_file != NULL
4262                     ? &dwo_file->sections.abbrev
4263                     : &dwarf2_per_objfile->abbrev);
4264
4265   if (dwarf2_read_debug)
4266     fprintf_unfiltered (gdb_stdlog, "Reading .debug_types%s for %s:\n",
4267                         dwo_file ? ".dwo" : "",
4268                         bfd_get_filename (abbrev_section->asection->owner));
4269
4270   for (ix = 0;
4271        VEC_iterate (dwarf2_section_info_def, types, ix, section);
4272        ++ix)
4273     {
4274       bfd *abfd;
4275       const gdb_byte *info_ptr, *end_ptr;
4276       struct dwarf2_section_info *abbrev_section;
4277
4278       dwarf2_read_section (objfile, section);
4279       info_ptr = section->buffer;
4280
4281       if (info_ptr == NULL)
4282         continue;
4283
4284       /* We can't set abfd until now because the section may be empty or
4285          not present, in which case section->asection will be NULL.  */
4286       abfd = section->asection->owner;
4287
4288       if (dwo_file)
4289         abbrev_section = &dwo_file->sections.abbrev;
4290       else
4291         abbrev_section = &dwarf2_per_objfile->abbrev;
4292
4293       /* We don't use init_cutu_and_read_dies_simple, or some such, here
4294          because we don't need to read any dies: the signature is in the
4295          header.  */
4296
4297       end_ptr = info_ptr + section->size;
4298       while (info_ptr < end_ptr)
4299         {
4300           sect_offset offset;
4301           cu_offset type_offset_in_tu;
4302           ULONGEST signature;
4303           struct signatured_type *sig_type;
4304           struct dwo_unit *dwo_tu;
4305           void **slot;
4306           const gdb_byte *ptr = info_ptr;
4307           struct comp_unit_head header;
4308           unsigned int length;
4309
4310           offset.sect_off = ptr - section->buffer;
4311
4312           /* We need to read the type's signature in order to build the hash
4313              table, but we don't need anything else just yet.  */
4314
4315           ptr = read_and_check_type_unit_head (&header, section,
4316                                                abbrev_section, ptr,
4317                                                &signature, &type_offset_in_tu);
4318
4319           length = get_cu_length (&header);
4320
4321           /* Skip dummy type units.  */
4322           if (ptr >= info_ptr + length
4323               || peek_abbrev_code (abfd, ptr) == 0)
4324             {
4325               info_ptr += length;
4326               continue;
4327             }
4328
4329           if (types_htab == NULL)
4330             {
4331               if (dwo_file)
4332                 types_htab = allocate_dwo_unit_table (objfile);
4333               else
4334                 types_htab = allocate_signatured_type_table (objfile);
4335             }
4336
4337           if (dwo_file)
4338             {
4339               sig_type = NULL;
4340               dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4341                                        struct dwo_unit);
4342               dwo_tu->dwo_file = dwo_file;
4343               dwo_tu->signature = signature;
4344               dwo_tu->type_offset_in_tu = type_offset_in_tu;
4345               dwo_tu->section = section;
4346               dwo_tu->offset = offset;
4347               dwo_tu->length = length;
4348             }
4349           else
4350             {
4351               /* N.B.: type_offset is not usable if this type uses a DWO file.
4352                  The real type_offset is in the DWO file.  */
4353               dwo_tu = NULL;
4354               sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4355                                          struct signatured_type);
4356               sig_type->signature = signature;
4357               sig_type->type_offset_in_tu = type_offset_in_tu;
4358               sig_type->per_cu.objfile = objfile;
4359               sig_type->per_cu.is_debug_types = 1;
4360               sig_type->per_cu.section = section;
4361               sig_type->per_cu.offset = offset;
4362               sig_type->per_cu.length = length;
4363             }
4364
4365           slot = htab_find_slot (types_htab,
4366                                  dwo_file ? (void*) dwo_tu : (void *) sig_type,
4367                                  INSERT);
4368           gdb_assert (slot != NULL);
4369           if (*slot != NULL)
4370             {
4371               sect_offset dup_offset;
4372
4373               if (dwo_file)
4374                 {
4375                   const struct dwo_unit *dup_tu = *slot;
4376
4377                   dup_offset = dup_tu->offset;
4378                 }
4379               else
4380                 {
4381                   const struct signatured_type *dup_tu = *slot;
4382
4383                   dup_offset = dup_tu->per_cu.offset;
4384                 }
4385
4386               complaint (&symfile_complaints,
4387                          _("debug type entry at offset 0x%x is duplicate to"
4388                            " the entry at offset 0x%x, signature %s"),
4389                          offset.sect_off, dup_offset.sect_off,
4390                          hex_string (signature));
4391             }
4392           *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
4393
4394           if (dwarf2_read_debug)
4395             fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, signature %s\n",
4396                                 offset.sect_off,
4397                                 hex_string (signature));
4398
4399           info_ptr += length;
4400         }
4401     }
4402
4403   return types_htab;
4404 }
4405
4406 /* Create the hash table of all entries in the .debug_types section,
4407    and initialize all_type_units.
4408    The result is zero if there is an error (e.g. missing .debug_types section),
4409    otherwise non-zero.  */
4410
4411 static int
4412 create_all_type_units (struct objfile *objfile)
4413 {
4414   htab_t types_htab;
4415   struct signatured_type **iter;
4416
4417   types_htab = create_debug_types_hash_table (NULL, dwarf2_per_objfile->types);
4418   if (types_htab == NULL)
4419     {
4420       dwarf2_per_objfile->signatured_types = NULL;
4421       return 0;
4422     }
4423
4424   dwarf2_per_objfile->signatured_types = types_htab;
4425
4426   dwarf2_per_objfile->n_type_units = htab_elements (types_htab);
4427   dwarf2_per_objfile->all_type_units
4428     = xmalloc (dwarf2_per_objfile->n_type_units
4429                * sizeof (struct signatured_type *));
4430   iter = &dwarf2_per_objfile->all_type_units[0];
4431   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table, &iter);
4432   gdb_assert (iter - &dwarf2_per_objfile->all_type_units[0]
4433               == dwarf2_per_objfile->n_type_units);
4434
4435   return 1;
4436 }
4437
4438 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
4439    Fill in SIG_ENTRY with DWO_ENTRY.  */
4440
4441 static void
4442 fill_in_sig_entry_from_dwo_entry (struct objfile *objfile,
4443                                   struct signatured_type *sig_entry,
4444                                   struct dwo_unit *dwo_entry)
4445 {
4446   sig_entry->per_cu.section = dwo_entry->section;
4447   sig_entry->per_cu.offset = dwo_entry->offset;
4448   sig_entry->per_cu.length = dwo_entry->length;
4449   sig_entry->per_cu.reading_dwo_directly = 1;
4450   sig_entry->per_cu.objfile = objfile;
4451   gdb_assert (! sig_entry->per_cu.queued);
4452   gdb_assert (sig_entry->per_cu.cu == NULL);
4453   gdb_assert (sig_entry->per_cu.v.quick != NULL);
4454   gdb_assert (sig_entry->per_cu.v.quick->symtab == NULL);
4455   gdb_assert (sig_entry->signature == dwo_entry->signature);
4456   gdb_assert (sig_entry->type_offset_in_section.sect_off == 0);
4457   gdb_assert (sig_entry->type_unit_group == NULL);
4458   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
4459   sig_entry->dwo_unit = dwo_entry;
4460 }
4461
4462 /* Subroutine of lookup_signatured_type.
4463    Create the signatured_type data structure for a TU to be read in
4464    directly from a DWO file, bypassing the stub.
4465    We do this for the case where there is no DWP file and we're using
4466    .gdb_index: When reading a CU we want to stay in the DWO file containing
4467    that CU.  Otherwise we could end up reading several other DWO files (due
4468    to comdat folding) to process the transitive closure of all the mentioned
4469    TUs, and that can be slow.  The current DWO file will have every type
4470    signature that it needs.
4471    We only do this for .gdb_index because in the psymtab case we already have
4472    to read all the DWOs to build the type unit groups.  */
4473
4474 static struct signatured_type *
4475 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4476 {
4477   struct objfile *objfile = dwarf2_per_objfile->objfile;
4478   struct dwo_file *dwo_file;
4479   struct dwo_unit find_dwo_entry, *dwo_entry;
4480   struct signatured_type find_sig_entry, *sig_entry;
4481
4482   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4483
4484   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
4485      dwo_unit of the TU itself.  */
4486   dwo_file = cu->dwo_unit->dwo_file;
4487
4488   /* We only ever need to read in one copy of a signatured type.
4489      Just use the global signatured_types array.  If this is the first time
4490      we're reading this type, replace the recorded data from .gdb_index with
4491      this TU.  */
4492
4493   if (dwarf2_per_objfile->signatured_types == NULL)
4494     return NULL;
4495   find_sig_entry.signature = sig;
4496   sig_entry = htab_find (dwarf2_per_objfile->signatured_types, &find_sig_entry);
4497   if (sig_entry == NULL)
4498     return NULL;
4499   /* Have we already tried to read this TU?  */
4500   if (sig_entry->dwo_unit != NULL)
4501     return sig_entry;
4502
4503   /* Ok, this is the first time we're reading this TU.  */
4504   if (dwo_file->tus == NULL)
4505     return NULL;
4506   find_dwo_entry.signature = sig;
4507   dwo_entry = htab_find (dwo_file->tus, &find_dwo_entry);
4508   if (dwo_entry == NULL)
4509     return NULL;
4510
4511   fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
4512   return sig_entry;
4513 }
4514
4515 /* Subroutine of lookup_dwp_signatured_type.
4516    Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.  */
4517
4518 static struct signatured_type *
4519 add_type_unit (ULONGEST sig)
4520 {
4521   struct objfile *objfile = dwarf2_per_objfile->objfile;
4522   int n_type_units = dwarf2_per_objfile->n_type_units;
4523   struct signatured_type *sig_type;
4524   void **slot;
4525
4526   ++n_type_units;
4527   dwarf2_per_objfile->all_type_units =
4528     xrealloc (dwarf2_per_objfile->all_type_units,
4529               n_type_units * sizeof (struct signatured_type *));
4530   dwarf2_per_objfile->n_type_units = n_type_units;
4531   sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4532                              struct signatured_type);
4533   dwarf2_per_objfile->all_type_units[n_type_units - 1] = sig_type;
4534   sig_type->signature = sig;
4535   sig_type->per_cu.is_debug_types = 1;
4536   sig_type->per_cu.v.quick =
4537     OBSTACK_ZALLOC (&objfile->objfile_obstack,
4538                     struct dwarf2_per_cu_quick_data);
4539   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4540                          sig_type, INSERT);
4541   gdb_assert (*slot == NULL);
4542   *slot = sig_type;
4543   /* The rest of sig_type must be filled in by the caller.  */
4544   return sig_type;
4545 }
4546
4547 /* Subroutine of lookup_signatured_type.
4548    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
4549    then try the DWP file.
4550    Normally this "can't happen", but if there's a bug in signature
4551    generation and/or the DWP file is built incorrectly, it can happen.
4552    Using the type directly from the DWP file means we don't have the stub
4553    which has some useful attributes (e.g., DW_AT_comp_dir), but they're
4554    not critical.  [Eventually the stub may go away for type units anyway.]  */
4555
4556 static struct signatured_type *
4557 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4558 {
4559   struct objfile *objfile = dwarf2_per_objfile->objfile;
4560   struct dwp_file *dwp_file = get_dwp_file ();
4561   struct dwo_unit *dwo_entry;
4562   struct signatured_type find_sig_entry, *sig_entry;
4563
4564   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4565   gdb_assert (dwp_file != NULL);
4566
4567   if (dwarf2_per_objfile->signatured_types != NULL)
4568     {
4569       find_sig_entry.signature = sig;
4570       sig_entry = htab_find (dwarf2_per_objfile->signatured_types,
4571                              &find_sig_entry);
4572       if (sig_entry != NULL)
4573         return sig_entry;
4574     }
4575
4576   /* This is the "shouldn't happen" case.
4577      Try the DWP file and hope for the best.  */
4578   if (dwp_file->tus == NULL)
4579     return NULL;
4580   dwo_entry = lookup_dwo_in_dwp (dwp_file, dwp_file->tus, NULL,
4581                                  sig, 1 /* is_debug_types */);
4582   if (dwo_entry == NULL)
4583     return NULL;
4584
4585   sig_entry = add_type_unit (sig);
4586   fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
4587
4588   /* The caller will signal a complaint if we return NULL.
4589      Here we don't return NULL but we still want to complain.  */
4590   complaint (&symfile_complaints,
4591              _("Bad type signature %s referenced by %s at 0x%x,"
4592                " coping by using copy in DWP [in module %s]"),
4593              hex_string (sig),
4594              cu->per_cu->is_debug_types ? "TU" : "CU",
4595              cu->per_cu->offset.sect_off,
4596              objfile->name);
4597
4598   return sig_entry;
4599 }
4600
4601 /* Lookup a signature based type for DW_FORM_ref_sig8.
4602    Returns NULL if signature SIG is not present in the table.
4603    It is up to the caller to complain about this.  */
4604
4605 static struct signatured_type *
4606 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4607 {
4608   if (cu->dwo_unit
4609       && dwarf2_per_objfile->using_index)
4610     {
4611       /* We're in a DWO/DWP file, and we're using .gdb_index.
4612          These cases require special processing.  */
4613       if (get_dwp_file () == NULL)
4614         return lookup_dwo_signatured_type (cu, sig);
4615       else
4616         return lookup_dwp_signatured_type (cu, sig);
4617     }
4618   else
4619     {
4620       struct signatured_type find_entry, *entry;
4621
4622       if (dwarf2_per_objfile->signatured_types == NULL)
4623         return NULL;
4624       find_entry.signature = sig;
4625       entry = htab_find (dwarf2_per_objfile->signatured_types, &find_entry);
4626       return entry;
4627     }
4628 }
4629 \f
4630 /* Low level DIE reading support.  */
4631
4632 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
4633
4634 static void
4635 init_cu_die_reader (struct die_reader_specs *reader,
4636                     struct dwarf2_cu *cu,
4637                     struct dwarf2_section_info *section,
4638                     struct dwo_file *dwo_file)
4639 {
4640   gdb_assert (section->readin && section->buffer != NULL);
4641   reader->abfd = section->asection->owner;
4642   reader->cu = cu;
4643   reader->dwo_file = dwo_file;
4644   reader->die_section = section;
4645   reader->buffer = section->buffer;
4646   reader->buffer_end = section->buffer + section->size;
4647   reader->comp_dir = NULL;
4648 }
4649
4650 /* Subroutine of init_cutu_and_read_dies to simplify it.
4651    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
4652    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
4653    already.
4654
4655    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
4656    from it to the DIE in the DWO.  If NULL we are skipping the stub.
4657    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
4658    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
4659    attribute of the referencing CU.  Exactly one of STUB_COMP_UNIT_DIE and
4660    COMP_DIR must be non-NULL.
4661    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
4662    are filled in with the info of the DIE from the DWO file.
4663    ABBREV_TABLE_PROVIDED is non-zero if the caller of init_cutu_and_read_dies
4664    provided an abbrev table to use.
4665    The result is non-zero if a valid (non-dummy) DIE was found.  */
4666
4667 static int
4668 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
4669                         struct dwo_unit *dwo_unit,
4670                         int abbrev_table_provided,
4671                         struct die_info *stub_comp_unit_die,
4672                         const char *stub_comp_dir,
4673                         struct die_reader_specs *result_reader,
4674                         const gdb_byte **result_info_ptr,
4675                         struct die_info **result_comp_unit_die,
4676                         int *result_has_children)
4677 {
4678   struct objfile *objfile = dwarf2_per_objfile->objfile;
4679   struct dwarf2_cu *cu = this_cu->cu;
4680   struct dwarf2_section_info *section;
4681   bfd *abfd;
4682   const gdb_byte *begin_info_ptr, *info_ptr;
4683   const char *comp_dir_string;
4684   ULONGEST signature; /* Or dwo_id.  */
4685   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
4686   int i,num_extra_attrs;
4687   struct dwarf2_section_info *dwo_abbrev_section;
4688   struct attribute *attr;
4689   struct attribute comp_dir_attr;
4690   struct die_info *comp_unit_die;
4691
4692   /* Both can't be provided.  */
4693   gdb_assert (! (stub_comp_unit_die && stub_comp_dir));
4694
4695   /* These attributes aren't processed until later:
4696      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
4697      However, the attribute is found in the stub which we won't have later.
4698      In order to not impose this complication on the rest of the code,
4699      we read them here and copy them to the DWO CU/TU die.  */
4700
4701   stmt_list = NULL;
4702   low_pc = NULL;
4703   high_pc = NULL;
4704   ranges = NULL;
4705   comp_dir = NULL;
4706
4707   if (stub_comp_unit_die != NULL)
4708     {
4709       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
4710          DWO file.  */
4711       if (! this_cu->is_debug_types)
4712         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
4713       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
4714       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
4715       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
4716       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
4717
4718       /* There should be a DW_AT_addr_base attribute here (if needed).
4719          We need the value before we can process DW_FORM_GNU_addr_index.  */
4720       cu->addr_base = 0;
4721       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
4722       if (attr)
4723         cu->addr_base = DW_UNSND (attr);
4724
4725       /* There should be a DW_AT_ranges_base attribute here (if needed).
4726          We need the value before we can process DW_AT_ranges.  */
4727       cu->ranges_base = 0;
4728       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
4729       if (attr)
4730         cu->ranges_base = DW_UNSND (attr);
4731     }
4732   else if (stub_comp_dir != NULL)
4733     {
4734       /* Reconstruct the comp_dir attribute to simplify the code below.  */
4735       comp_dir = (struct attribute *)
4736         obstack_alloc (&cu->comp_unit_obstack, sizeof (*comp_dir));
4737       comp_dir->name = DW_AT_comp_dir;
4738       comp_dir->form = DW_FORM_string;
4739       DW_STRING_IS_CANONICAL (comp_dir) = 0;
4740       DW_STRING (comp_dir) = stub_comp_dir;
4741     }
4742
4743   /* Set up for reading the DWO CU/TU.  */
4744   cu->dwo_unit = dwo_unit;
4745   section = dwo_unit->section;
4746   dwarf2_read_section (objfile, section);
4747   abfd = section->asection->owner;
4748   begin_info_ptr = info_ptr = section->buffer + dwo_unit->offset.sect_off;
4749   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
4750   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file);
4751
4752   if (this_cu->is_debug_types)
4753     {
4754       ULONGEST header_signature;
4755       cu_offset type_offset_in_tu;
4756       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
4757
4758       info_ptr = read_and_check_type_unit_head (&cu->header, section,
4759                                                 dwo_abbrev_section,
4760                                                 info_ptr,
4761                                                 &header_signature,
4762                                                 &type_offset_in_tu);
4763       /* This is not an assert because it can be caused by bad debug info.  */
4764       if (sig_type->signature != header_signature)
4765         {
4766           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
4767                    " TU at offset 0x%x [in module %s]"),
4768                  hex_string (sig_type->signature),
4769                  hex_string (header_signature),
4770                  dwo_unit->offset.sect_off,
4771                  bfd_get_filename (abfd));
4772         }
4773       gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
4774       /* For DWOs coming from DWP files, we don't know the CU length
4775          nor the type's offset in the TU until now.  */
4776       dwo_unit->length = get_cu_length (&cu->header);
4777       dwo_unit->type_offset_in_tu = type_offset_in_tu;
4778
4779       /* Establish the type offset that can be used to lookup the type.
4780          For DWO files, we don't know it until now.  */
4781       sig_type->type_offset_in_section.sect_off =
4782         dwo_unit->offset.sect_off + dwo_unit->type_offset_in_tu.cu_off;
4783     }
4784   else
4785     {
4786       info_ptr = read_and_check_comp_unit_head (&cu->header, section,
4787                                                 dwo_abbrev_section,
4788                                                 info_ptr, 0);
4789       gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
4790       /* For DWOs coming from DWP files, we don't know the CU length
4791          until now.  */
4792       dwo_unit->length = get_cu_length (&cu->header);
4793     }
4794
4795   /* Replace the CU's original abbrev table with the DWO's.
4796      Reminder: We can't read the abbrev table until we've read the header.  */
4797   if (abbrev_table_provided)
4798     {
4799       /* Don't free the provided abbrev table, the caller of
4800          init_cutu_and_read_dies owns it.  */
4801       dwarf2_read_abbrevs (cu, dwo_abbrev_section);
4802       /* Ensure the DWO abbrev table gets freed.  */
4803       make_cleanup (dwarf2_free_abbrev_table, cu);
4804     }
4805   else
4806     {
4807       dwarf2_free_abbrev_table (cu);
4808       dwarf2_read_abbrevs (cu, dwo_abbrev_section);
4809       /* Leave any existing abbrev table cleanup as is.  */
4810     }
4811
4812   /* Read in the die, but leave space to copy over the attributes
4813      from the stub.  This has the benefit of simplifying the rest of
4814      the code - all the work to maintain the illusion of a single
4815      DW_TAG_{compile,type}_unit DIE is done here.  */
4816   num_extra_attrs = ((stmt_list != NULL)
4817                      + (low_pc != NULL)
4818                      + (high_pc != NULL)
4819                      + (ranges != NULL)
4820                      + (comp_dir != NULL));
4821   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
4822                               result_has_children, num_extra_attrs);
4823
4824   /* Copy over the attributes from the stub to the DIE we just read in.  */
4825   comp_unit_die = *result_comp_unit_die;
4826   i = comp_unit_die->num_attrs;
4827   if (stmt_list != NULL)
4828     comp_unit_die->attrs[i++] = *stmt_list;
4829   if (low_pc != NULL)
4830     comp_unit_die->attrs[i++] = *low_pc;
4831   if (high_pc != NULL)
4832     comp_unit_die->attrs[i++] = *high_pc;
4833   if (ranges != NULL)
4834     comp_unit_die->attrs[i++] = *ranges;
4835   if (comp_dir != NULL)
4836     comp_unit_die->attrs[i++] = *comp_dir;
4837   comp_unit_die->num_attrs += num_extra_attrs;
4838
4839   if (dwarf2_die_debug)
4840     {
4841       fprintf_unfiltered (gdb_stdlog,
4842                           "Read die from %s@0x%x of %s:\n",
4843                           bfd_section_name (abfd, section->asection),
4844                           (unsigned) (begin_info_ptr - section->buffer),
4845                           bfd_get_filename (abfd));
4846       dump_die (comp_unit_die, dwarf2_die_debug);
4847     }
4848
4849   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
4850      TUs by skipping the stub and going directly to the entry in the DWO file.
4851      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
4852      to get it via circuitous means.  Blech.  */
4853   if (comp_dir != NULL)
4854     result_reader->comp_dir = DW_STRING (comp_dir);
4855
4856   /* Skip dummy compilation units.  */
4857   if (info_ptr >= begin_info_ptr + dwo_unit->length
4858       || peek_abbrev_code (abfd, info_ptr) == 0)
4859     return 0;
4860
4861   *result_info_ptr = info_ptr;
4862   return 1;
4863 }
4864
4865 /* Subroutine of init_cutu_and_read_dies to simplify it.
4866    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
4867    Returns NULL if the specified DWO unit cannot be found.  */
4868
4869 static struct dwo_unit *
4870 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
4871                  struct die_info *comp_unit_die)
4872 {
4873   struct dwarf2_cu *cu = this_cu->cu;
4874   struct attribute *attr;
4875   ULONGEST signature;
4876   struct dwo_unit *dwo_unit;
4877   const char *comp_dir, *dwo_name;
4878
4879   gdb_assert (cu != NULL);
4880
4881   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
4882   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
4883   gdb_assert (attr != NULL);
4884   dwo_name = DW_STRING (attr);
4885   comp_dir = NULL;
4886   attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
4887   if (attr)
4888     comp_dir = DW_STRING (attr);
4889
4890   if (this_cu->is_debug_types)
4891     {
4892       struct signatured_type *sig_type;
4893
4894       /* Since this_cu is the first member of struct signatured_type,
4895          we can go from a pointer to one to a pointer to the other.  */
4896       sig_type = (struct signatured_type *) this_cu;
4897       signature = sig_type->signature;
4898       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
4899     }
4900   else
4901     {
4902       struct attribute *attr;
4903
4904       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
4905       if (! attr)
4906         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
4907                  " [in module %s]"),
4908                dwo_name, this_cu->objfile->name);
4909       signature = DW_UNSND (attr);
4910       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
4911                                        signature);
4912     }
4913
4914   return dwo_unit;
4915 }
4916
4917 /* Subroutine of init_cutu_and_read_dies to simplify it.
4918    Read a TU directly from a DWO file, bypassing the stub.  */
4919
4920 static void
4921 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu, int keep,
4922                            die_reader_func_ftype *die_reader_func,
4923                            void *data)
4924 {
4925   struct dwarf2_cu *cu;
4926   struct signatured_type *sig_type;
4927   struct cleanup *cleanups, *free_cu_cleanup;
4928   struct die_reader_specs reader;
4929   const gdb_byte *info_ptr;
4930   struct die_info *comp_unit_die;
4931   int has_children;
4932
4933   /* Verify we can do the following downcast, and that we have the
4934      data we need.  */
4935   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
4936   sig_type = (struct signatured_type *) this_cu;
4937   gdb_assert (sig_type->dwo_unit != NULL);
4938
4939   cleanups = make_cleanup (null_cleanup, NULL);
4940
4941   gdb_assert (this_cu->cu == NULL);
4942   cu = xmalloc (sizeof (*cu));
4943   init_one_comp_unit (cu, this_cu);
4944   /* If an error occurs while loading, release our storage.  */
4945   free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
4946
4947   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
4948                               0 /* abbrev_table_provided */,
4949                               NULL /* stub_comp_unit_die */,
4950                               sig_type->dwo_unit->dwo_file->comp_dir,
4951                               &reader, &info_ptr,
4952                               &comp_unit_die, &has_children) == 0)
4953     {
4954       /* Dummy die.  */
4955       do_cleanups (cleanups);
4956       return;
4957     }
4958
4959   /* All the "real" work is done here.  */
4960   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
4961
4962   /* This duplicates some code in init_cutu_and_read_dies,
4963      but the alternative is making the latter more complex.
4964      This function is only for the special case of using DWO files directly:
4965      no point in overly complicating the general case just to handle this.  */
4966   if (keep)
4967     {
4968       /* We've successfully allocated this compilation unit.  Let our
4969          caller clean it up when finished with it.  */
4970       discard_cleanups (free_cu_cleanup);
4971
4972       /* We can only discard free_cu_cleanup and all subsequent cleanups.
4973          So we have to manually free the abbrev table.  */
4974       dwarf2_free_abbrev_table (cu);
4975
4976       /* Link this CU into read_in_chain.  */
4977       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
4978       dwarf2_per_objfile->read_in_chain = this_cu;
4979     }
4980   else
4981     do_cleanups (free_cu_cleanup);
4982
4983   do_cleanups (cleanups);
4984 }
4985
4986 /* Initialize a CU (or TU) and read its DIEs.
4987    If the CU defers to a DWO file, read the DWO file as well.
4988
4989    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
4990    Otherwise the table specified in the comp unit header is read in and used.
4991    This is an optimization for when we already have the abbrev table.
4992
4993    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
4994    Otherwise, a new CU is allocated with xmalloc.
4995
4996    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
4997    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
4998
4999    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5000    linker) then DIE_READER_FUNC will not get called.  */
5001
5002 static void
5003 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
5004                          struct abbrev_table *abbrev_table,
5005                          int use_existing_cu, int keep,
5006                          die_reader_func_ftype *die_reader_func,
5007                          void *data)
5008 {
5009   struct objfile *objfile = dwarf2_per_objfile->objfile;
5010   struct dwarf2_section_info *section = this_cu->section;
5011   bfd *abfd = section->asection->owner;
5012   struct dwarf2_cu *cu;
5013   const gdb_byte *begin_info_ptr, *info_ptr;
5014   struct die_reader_specs reader;
5015   struct die_info *comp_unit_die;
5016   int has_children;
5017   struct attribute *attr;
5018   struct cleanup *cleanups, *free_cu_cleanup = NULL;
5019   struct signatured_type *sig_type = NULL;
5020   struct dwarf2_section_info *abbrev_section;
5021   /* Non-zero if CU currently points to a DWO file and we need to
5022      reread it.  When this happens we need to reread the skeleton die
5023      before we can reread the DWO file (this only applies to CUs, not TUs).  */
5024   int rereading_dwo_cu = 0;
5025
5026   if (dwarf2_die_debug)
5027     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5028                         this_cu->is_debug_types ? "type" : "comp",
5029                         this_cu->offset.sect_off);
5030
5031   if (use_existing_cu)
5032     gdb_assert (keep);
5033
5034   /* If we're reading a TU directly from a DWO file, including a virtual DWO
5035      file (instead of going through the stub), short-circuit all of this.  */
5036   if (this_cu->reading_dwo_directly)
5037     {
5038       /* Narrow down the scope of possibilities to have to understand.  */
5039       gdb_assert (this_cu->is_debug_types);
5040       gdb_assert (abbrev_table == NULL);
5041       gdb_assert (!use_existing_cu);
5042       init_tu_and_read_dwo_dies (this_cu, keep, die_reader_func, data);
5043       return;
5044     }
5045
5046   cleanups = make_cleanup (null_cleanup, NULL);
5047
5048   /* This is cheap if the section is already read in.  */
5049   dwarf2_read_section (objfile, section);
5050
5051   begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
5052
5053   abbrev_section = get_abbrev_section_for_cu (this_cu);
5054
5055   if (use_existing_cu && this_cu->cu != NULL)
5056     {
5057       cu = this_cu->cu;
5058
5059       /* If this CU is from a DWO file we need to start over, we need to
5060          refetch the attributes from the skeleton CU.
5061          This could be optimized by retrieving those attributes from when we
5062          were here the first time: the previous comp_unit_die was stored in
5063          comp_unit_obstack.  But there's no data yet that we need this
5064          optimization.  */
5065       if (cu->dwo_unit != NULL)
5066         rereading_dwo_cu = 1;
5067     }
5068   else
5069     {
5070       /* If !use_existing_cu, this_cu->cu must be NULL.  */
5071       gdb_assert (this_cu->cu == NULL);
5072
5073       cu = xmalloc (sizeof (*cu));
5074       init_one_comp_unit (cu, this_cu);
5075
5076       /* If an error occurs while loading, release our storage.  */
5077       free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5078     }
5079
5080   /* Get the header.  */
5081   if (cu->header.first_die_offset.cu_off != 0 && ! rereading_dwo_cu)
5082     {
5083       /* We already have the header, there's no need to read it in again.  */
5084       info_ptr += cu->header.first_die_offset.cu_off;
5085     }
5086   else
5087     {
5088       if (this_cu->is_debug_types)
5089         {
5090           ULONGEST signature;
5091           cu_offset type_offset_in_tu;
5092
5093           info_ptr = read_and_check_type_unit_head (&cu->header, section,
5094                                                     abbrev_section, info_ptr,
5095                                                     &signature,
5096                                                     &type_offset_in_tu);
5097
5098           /* Since per_cu is the first member of struct signatured_type,
5099              we can go from a pointer to one to a pointer to the other.  */
5100           sig_type = (struct signatured_type *) this_cu;
5101           gdb_assert (sig_type->signature == signature);
5102           gdb_assert (sig_type->type_offset_in_tu.cu_off
5103                       == type_offset_in_tu.cu_off);
5104           gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5105
5106           /* LENGTH has not been set yet for type units if we're
5107              using .gdb_index.  */
5108           this_cu->length = get_cu_length (&cu->header);
5109
5110           /* Establish the type offset that can be used to lookup the type.  */
5111           sig_type->type_offset_in_section.sect_off =
5112             this_cu->offset.sect_off + sig_type->type_offset_in_tu.cu_off;
5113         }
5114       else
5115         {
5116           info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5117                                                     abbrev_section,
5118                                                     info_ptr, 0);
5119
5120           gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5121           gdb_assert (this_cu->length == get_cu_length (&cu->header));
5122         }
5123     }
5124
5125   /* Skip dummy compilation units.  */
5126   if (info_ptr >= begin_info_ptr + this_cu->length
5127       || peek_abbrev_code (abfd, info_ptr) == 0)
5128     {
5129       do_cleanups (cleanups);
5130       return;
5131     }
5132
5133   /* If we don't have them yet, read the abbrevs for this compilation unit.
5134      And if we need to read them now, make sure they're freed when we're
5135      done.  Note that it's important that if the CU had an abbrev table
5136      on entry we don't free it when we're done: Somewhere up the call stack
5137      it may be in use.  */
5138   if (abbrev_table != NULL)
5139     {
5140       gdb_assert (cu->abbrev_table == NULL);
5141       gdb_assert (cu->header.abbrev_offset.sect_off
5142                   == abbrev_table->offset.sect_off);
5143       cu->abbrev_table = abbrev_table;
5144     }
5145   else if (cu->abbrev_table == NULL)
5146     {
5147       dwarf2_read_abbrevs (cu, abbrev_section);
5148       make_cleanup (dwarf2_free_abbrev_table, cu);
5149     }
5150   else if (rereading_dwo_cu)
5151     {
5152       dwarf2_free_abbrev_table (cu);
5153       dwarf2_read_abbrevs (cu, abbrev_section);
5154     }
5155
5156   /* Read the top level CU/TU die.  */
5157   init_cu_die_reader (&reader, cu, section, NULL);
5158   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5159
5160   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
5161      from the DWO file.
5162      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
5163      DWO CU, that this test will fail (the attribute will not be present).  */
5164   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5165   if (attr)
5166     {
5167       struct dwo_unit *dwo_unit;
5168       struct die_info *dwo_comp_unit_die;
5169
5170       if (has_children)
5171         {
5172           complaint (&symfile_complaints,
5173                      _("compilation unit with DW_AT_GNU_dwo_name"
5174                        " has children (offset 0x%x) [in module %s]"),
5175                      this_cu->offset.sect_off, bfd_get_filename (abfd));
5176         }
5177       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
5178       if (dwo_unit != NULL)
5179         {
5180           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
5181                                       abbrev_table != NULL,
5182                                       comp_unit_die, NULL,
5183                                       &reader, &info_ptr,
5184                                       &dwo_comp_unit_die, &has_children) == 0)
5185             {
5186               /* Dummy die.  */
5187               do_cleanups (cleanups);
5188               return;
5189             }
5190           comp_unit_die = dwo_comp_unit_die;
5191         }
5192       else
5193         {
5194           /* Yikes, we couldn't find the rest of the DIE, we only have
5195              the stub.  A complaint has already been logged.  There's
5196              not much more we can do except pass on the stub DIE to
5197              die_reader_func.  We don't want to throw an error on bad
5198              debug info.  */
5199         }
5200     }
5201
5202   /* All of the above is setup for this call.  Yikes.  */
5203   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5204
5205   /* Done, clean up.  */
5206   if (free_cu_cleanup != NULL)
5207     {
5208       if (keep)
5209         {
5210           /* We've successfully allocated this compilation unit.  Let our
5211              caller clean it up when finished with it.  */
5212           discard_cleanups (free_cu_cleanup);
5213
5214           /* We can only discard free_cu_cleanup and all subsequent cleanups.
5215              So we have to manually free the abbrev table.  */
5216           dwarf2_free_abbrev_table (cu);
5217
5218           /* Link this CU into read_in_chain.  */
5219           this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5220           dwarf2_per_objfile->read_in_chain = this_cu;
5221         }
5222       else
5223         do_cleanups (free_cu_cleanup);
5224     }
5225
5226   do_cleanups (cleanups);
5227 }
5228
5229 /* Read CU/TU THIS_CU in section SECTION,
5230    but do not follow DW_AT_GNU_dwo_name if present.
5231    DWOP_FILE, if non-NULL, is the DWO/DWP file to read (the caller is assumed
5232    to have already done the lookup to find the DWO/DWP file).
5233
5234    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
5235    THIS_CU->is_debug_types, but nothing else.
5236
5237    We fill in THIS_CU->length.
5238
5239    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5240    linker) then DIE_READER_FUNC will not get called.
5241
5242    THIS_CU->cu is always freed when done.
5243    This is done in order to not leave THIS_CU->cu in a state where we have
5244    to care whether it refers to the "main" CU or the DWO CU.  */
5245
5246 static void
5247 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
5248                                    struct dwarf2_section_info *abbrev_section,
5249                                    struct dwo_file *dwo_file,
5250                                    die_reader_func_ftype *die_reader_func,
5251                                    void *data)
5252 {
5253   struct objfile *objfile = dwarf2_per_objfile->objfile;
5254   struct dwarf2_section_info *section = this_cu->section;
5255   bfd *abfd = section->asection->owner;
5256   struct dwarf2_cu cu;
5257   const gdb_byte *begin_info_ptr, *info_ptr;
5258   struct die_reader_specs reader;
5259   struct cleanup *cleanups;
5260   struct die_info *comp_unit_die;
5261   int has_children;
5262
5263   if (dwarf2_die_debug)
5264     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5265                         this_cu->is_debug_types ? "type" : "comp",
5266                         this_cu->offset.sect_off);
5267
5268   gdb_assert (this_cu->cu == NULL);
5269
5270   /* This is cheap if the section is already read in.  */
5271   dwarf2_read_section (objfile, section);
5272
5273   init_one_comp_unit (&cu, this_cu);
5274
5275   cleanups = make_cleanup (free_stack_comp_unit, &cu);
5276
5277   begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
5278   info_ptr = read_and_check_comp_unit_head (&cu.header, section,
5279                                             abbrev_section, info_ptr,
5280                                             this_cu->is_debug_types);
5281
5282   this_cu->length = get_cu_length (&cu.header);
5283
5284   /* Skip dummy compilation units.  */
5285   if (info_ptr >= begin_info_ptr + this_cu->length
5286       || peek_abbrev_code (abfd, info_ptr) == 0)
5287     {
5288       do_cleanups (cleanups);
5289       return;
5290     }
5291
5292   dwarf2_read_abbrevs (&cu, abbrev_section);
5293   make_cleanup (dwarf2_free_abbrev_table, &cu);
5294
5295   init_cu_die_reader (&reader, &cu, section, dwo_file);
5296   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5297
5298   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5299
5300   do_cleanups (cleanups);
5301 }
5302
5303 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
5304    does not lookup the specified DWO file.
5305    This cannot be used to read DWO files.
5306
5307    THIS_CU->cu is always freed when done.
5308    This is done in order to not leave THIS_CU->cu in a state where we have
5309    to care whether it refers to the "main" CU or the DWO CU.
5310    We can revisit this if the data shows there's a performance issue.  */
5311
5312 static void
5313 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
5314                                 die_reader_func_ftype *die_reader_func,
5315                                 void *data)
5316 {
5317   init_cutu_and_read_dies_no_follow (this_cu,
5318                                      get_abbrev_section_for_cu (this_cu),
5319                                      NULL,
5320                                      die_reader_func, data);
5321 }
5322 \f
5323 /* Type Unit Groups.
5324
5325    Type Unit Groups are a way to collapse the set of all TUs (type units) into
5326    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
5327    so that all types coming from the same compilation (.o file) are grouped
5328    together.  A future step could be to put the types in the same symtab as
5329    the CU the types ultimately came from.  */
5330
5331 static hashval_t
5332 hash_type_unit_group (const void *item)
5333 {
5334   const struct type_unit_group *tu_group = item;
5335
5336   return hash_stmt_list_entry (&tu_group->hash);
5337 }
5338
5339 static int
5340 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
5341 {
5342   const struct type_unit_group *lhs = item_lhs;
5343   const struct type_unit_group *rhs = item_rhs;
5344
5345   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
5346 }
5347
5348 /* Allocate a hash table for type unit groups.  */
5349
5350 static htab_t
5351 allocate_type_unit_groups_table (void)
5352 {
5353   return htab_create_alloc_ex (3,
5354                                hash_type_unit_group,
5355                                eq_type_unit_group,
5356                                NULL,
5357                                &dwarf2_per_objfile->objfile->objfile_obstack,
5358                                hashtab_obstack_allocate,
5359                                dummy_obstack_deallocate);
5360 }
5361
5362 /* Type units that don't have DW_AT_stmt_list are grouped into their own
5363    partial symtabs.  We combine several TUs per psymtab to not let the size
5364    of any one psymtab grow too big.  */
5365 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
5366 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
5367
5368 /* Helper routine for get_type_unit_group.
5369    Create the type_unit_group object used to hold one or more TUs.  */
5370
5371 static struct type_unit_group *
5372 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
5373 {
5374   struct objfile *objfile = dwarf2_per_objfile->objfile;
5375   struct dwarf2_per_cu_data *per_cu;
5376   struct type_unit_group *tu_group;
5377
5378   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5379                              struct type_unit_group);
5380   per_cu = &tu_group->per_cu;
5381   per_cu->objfile = objfile;
5382
5383   if (dwarf2_per_objfile->using_index)
5384     {
5385       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5386                                         struct dwarf2_per_cu_quick_data);
5387     }
5388   else
5389     {
5390       unsigned int line_offset = line_offset_struct.sect_off;
5391       struct partial_symtab *pst;
5392       char *name;
5393
5394       /* Give the symtab a useful name for debug purposes.  */
5395       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
5396         name = xstrprintf ("<type_units_%d>",
5397                            (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
5398       else
5399         name = xstrprintf ("<type_units_at_0x%x>", line_offset);
5400
5401       pst = create_partial_symtab (per_cu, name);
5402       pst->anonymous = 1;
5403
5404       xfree (name);
5405     }
5406
5407   tu_group->hash.dwo_unit = cu->dwo_unit;
5408   tu_group->hash.line_offset = line_offset_struct;
5409
5410   return tu_group;
5411 }
5412
5413 /* Look up the type_unit_group for type unit CU, and create it if necessary.
5414    STMT_LIST is a DW_AT_stmt_list attribute.  */
5415
5416 static struct type_unit_group *
5417 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
5418 {
5419   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
5420   struct type_unit_group *tu_group;
5421   void **slot;
5422   unsigned int line_offset;
5423   struct type_unit_group type_unit_group_for_lookup;
5424
5425   if (dwarf2_per_objfile->type_unit_groups == NULL)
5426     {
5427       dwarf2_per_objfile->type_unit_groups =
5428         allocate_type_unit_groups_table ();
5429     }
5430
5431   /* Do we need to create a new group, or can we use an existing one?  */
5432
5433   if (stmt_list)
5434     {
5435       line_offset = DW_UNSND (stmt_list);
5436       ++tu_stats->nr_symtab_sharers;
5437     }
5438   else
5439     {
5440       /* Ugh, no stmt_list.  Rare, but we have to handle it.
5441          We can do various things here like create one group per TU or
5442          spread them over multiple groups to split up the expansion work.
5443          To avoid worst case scenarios (too many groups or too large groups)
5444          we, umm, group them in bunches.  */
5445       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
5446                      | (tu_stats->nr_stmt_less_type_units
5447                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
5448       ++tu_stats->nr_stmt_less_type_units;
5449     }
5450
5451   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
5452   type_unit_group_for_lookup.hash.line_offset.sect_off = line_offset;
5453   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
5454                          &type_unit_group_for_lookup, INSERT);
5455   if (*slot != NULL)
5456     {
5457       tu_group = *slot;
5458       gdb_assert (tu_group != NULL);
5459     }
5460   else
5461     {
5462       sect_offset line_offset_struct;
5463
5464       line_offset_struct.sect_off = line_offset;
5465       tu_group = create_type_unit_group (cu, line_offset_struct);
5466       *slot = tu_group;
5467       ++tu_stats->nr_symtabs;
5468     }
5469
5470   return tu_group;
5471 }
5472
5473 /* Struct used to sort TUs by their abbreviation table offset.  */
5474
5475 struct tu_abbrev_offset
5476 {
5477   struct signatured_type *sig_type;
5478   sect_offset abbrev_offset;
5479 };
5480
5481 /* Helper routine for build_type_unit_groups, passed to qsort.  */
5482
5483 static int
5484 sort_tu_by_abbrev_offset (const void *ap, const void *bp)
5485 {
5486   const struct tu_abbrev_offset * const *a = ap;
5487   const struct tu_abbrev_offset * const *b = bp;
5488   unsigned int aoff = (*a)->abbrev_offset.sect_off;
5489   unsigned int boff = (*b)->abbrev_offset.sect_off;
5490
5491   return (aoff > boff) - (aoff < boff);
5492 }
5493
5494 /* A helper function to add a type_unit_group to a table.  */
5495
5496 static int
5497 add_type_unit_group_to_table (void **slot, void *datum)
5498 {
5499   struct type_unit_group *tu_group = *slot;
5500   struct type_unit_group ***datap = datum;
5501
5502   **datap = tu_group;
5503   ++*datap;
5504
5505   return 1;
5506 }
5507
5508 /* Efficiently read all the type units, calling init_cutu_and_read_dies on
5509    each one passing FUNC,DATA.
5510
5511    The efficiency is because we sort TUs by the abbrev table they use and
5512    only read each abbrev table once.  In one program there are 200K TUs
5513    sharing 8K abbrev tables.
5514
5515    The main purpose of this function is to support building the
5516    dwarf2_per_objfile->type_unit_groups table.
5517    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
5518    can collapse the search space by grouping them by stmt_list.
5519    The savings can be significant, in the same program from above the 200K TUs
5520    share 8K stmt_list tables.
5521
5522    FUNC is expected to call get_type_unit_group, which will create the
5523    struct type_unit_group if necessary and add it to
5524    dwarf2_per_objfile->type_unit_groups.  */
5525
5526 static void
5527 build_type_unit_groups (die_reader_func_ftype *func, void *data)
5528 {
5529   struct objfile *objfile = dwarf2_per_objfile->objfile;
5530   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
5531   struct cleanup *cleanups;
5532   struct abbrev_table *abbrev_table;
5533   sect_offset abbrev_offset;
5534   struct tu_abbrev_offset *sorted_by_abbrev;
5535   struct type_unit_group **iter;
5536   int i;
5537
5538   /* It's up to the caller to not call us multiple times.  */
5539   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
5540
5541   if (dwarf2_per_objfile->n_type_units == 0)
5542     return;
5543
5544   /* TUs typically share abbrev tables, and there can be way more TUs than
5545      abbrev tables.  Sort by abbrev table to reduce the number of times we
5546      read each abbrev table in.
5547      Alternatives are to punt or to maintain a cache of abbrev tables.
5548      This is simpler and efficient enough for now.
5549
5550      Later we group TUs by their DW_AT_stmt_list value (as this defines the
5551      symtab to use).  Typically TUs with the same abbrev offset have the same
5552      stmt_list value too so in practice this should work well.
5553
5554      The basic algorithm here is:
5555
5556       sort TUs by abbrev table
5557       for each TU with same abbrev table:
5558         read abbrev table if first user
5559         read TU top level DIE
5560           [IWBN if DWO skeletons had DW_AT_stmt_list]
5561         call FUNC  */
5562
5563   if (dwarf2_read_debug)
5564     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
5565
5566   /* Sort in a separate table to maintain the order of all_type_units
5567      for .gdb_index: TU indices directly index all_type_units.  */
5568   sorted_by_abbrev = XNEWVEC (struct tu_abbrev_offset,
5569                               dwarf2_per_objfile->n_type_units);
5570   for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
5571     {
5572       struct signatured_type *sig_type = dwarf2_per_objfile->all_type_units[i];
5573
5574       sorted_by_abbrev[i].sig_type = sig_type;
5575       sorted_by_abbrev[i].abbrev_offset =
5576         read_abbrev_offset (sig_type->per_cu.section,
5577                             sig_type->per_cu.offset);
5578     }
5579   cleanups = make_cleanup (xfree, sorted_by_abbrev);
5580   qsort (sorted_by_abbrev, dwarf2_per_objfile->n_type_units,
5581          sizeof (struct tu_abbrev_offset), sort_tu_by_abbrev_offset);
5582
5583   /* Note: In the .gdb_index case, get_type_unit_group may have already been
5584      called any number of times, so we don't reset tu_stats here.  */
5585
5586   abbrev_offset.sect_off = ~(unsigned) 0;
5587   abbrev_table = NULL;
5588   make_cleanup (abbrev_table_free_cleanup, &abbrev_table);
5589
5590   for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
5591     {
5592       const struct tu_abbrev_offset *tu = &sorted_by_abbrev[i];
5593
5594       /* Switch to the next abbrev table if necessary.  */
5595       if (abbrev_table == NULL
5596           || tu->abbrev_offset.sect_off != abbrev_offset.sect_off)
5597         {
5598           if (abbrev_table != NULL)
5599             {
5600               abbrev_table_free (abbrev_table);
5601               /* Reset to NULL in case abbrev_table_read_table throws
5602                  an error: abbrev_table_free_cleanup will get called.  */
5603               abbrev_table = NULL;
5604             }
5605           abbrev_offset = tu->abbrev_offset;
5606           abbrev_table =
5607             abbrev_table_read_table (&dwarf2_per_objfile->abbrev,
5608                                      abbrev_offset);
5609           ++tu_stats->nr_uniq_abbrev_tables;
5610         }
5611
5612       init_cutu_and_read_dies (&tu->sig_type->per_cu, abbrev_table, 0, 0,
5613                                func, data);
5614     }
5615
5616   /* type_unit_groups can be NULL if there is an error in the debug info.
5617      Just create an empty table so the rest of gdb doesn't have to watch
5618      for this error case.  */
5619   if (dwarf2_per_objfile->type_unit_groups == NULL)
5620     {
5621       dwarf2_per_objfile->type_unit_groups =
5622         allocate_type_unit_groups_table ();
5623       dwarf2_per_objfile->n_type_unit_groups = 0;
5624     }
5625
5626   /* Create a vector of pointers to primary type units to make it easy to
5627      iterate over them and CUs.  See dw2_get_primary_cu.  */
5628   dwarf2_per_objfile->n_type_unit_groups =
5629     htab_elements (dwarf2_per_objfile->type_unit_groups);
5630   dwarf2_per_objfile->all_type_unit_groups =
5631     obstack_alloc (&objfile->objfile_obstack,
5632                    dwarf2_per_objfile->n_type_unit_groups
5633                    * sizeof (struct type_unit_group *));
5634   iter = &dwarf2_per_objfile->all_type_unit_groups[0];
5635   htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
5636                           add_type_unit_group_to_table, &iter);
5637   gdb_assert (iter - &dwarf2_per_objfile->all_type_unit_groups[0]
5638               == dwarf2_per_objfile->n_type_unit_groups);
5639
5640   do_cleanups (cleanups);
5641
5642   if (dwarf2_read_debug)
5643     {
5644       fprintf_unfiltered (gdb_stdlog, "Done building type unit groups:\n");
5645       fprintf_unfiltered (gdb_stdlog, "  %d TUs\n",
5646                           dwarf2_per_objfile->n_type_units);
5647       fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
5648                           tu_stats->nr_uniq_abbrev_tables);
5649       fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
5650                           tu_stats->nr_symtabs);
5651       fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
5652                           tu_stats->nr_symtab_sharers);
5653       fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
5654                           tu_stats->nr_stmt_less_type_units);
5655     }
5656 }
5657 \f
5658 /* Partial symbol tables.  */
5659
5660 /* Create a psymtab named NAME and assign it to PER_CU.
5661
5662    The caller must fill in the following details:
5663    dirname, textlow, texthigh.  */
5664
5665 static struct partial_symtab *
5666 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
5667 {
5668   struct objfile *objfile = per_cu->objfile;
5669   struct partial_symtab *pst;
5670
5671   pst = start_psymtab_common (objfile, objfile->section_offsets,
5672                               name, 0,
5673                               objfile->global_psymbols.next,
5674                               objfile->static_psymbols.next);
5675
5676   pst->psymtabs_addrmap_supported = 1;
5677
5678   /* This is the glue that links PST into GDB's symbol API.  */
5679   pst->read_symtab_private = per_cu;
5680   pst->read_symtab = dwarf2_read_symtab;
5681   per_cu->v.psymtab = pst;
5682
5683   return pst;
5684 }
5685
5686 /* die_reader_func for process_psymtab_comp_unit.  */
5687
5688 static void
5689 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
5690                                   const gdb_byte *info_ptr,
5691                                   struct die_info *comp_unit_die,
5692                                   int has_children,
5693                                   void *data)
5694 {
5695   struct dwarf2_cu *cu = reader->cu;
5696   struct objfile *objfile = cu->objfile;
5697   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
5698   struct attribute *attr;
5699   CORE_ADDR baseaddr;
5700   CORE_ADDR best_lowpc = 0, best_highpc = 0;
5701   struct partial_symtab *pst;
5702   int has_pc_info;
5703   const char *filename;
5704   int *want_partial_unit_ptr = data;
5705
5706   if (comp_unit_die->tag == DW_TAG_partial_unit
5707       && (want_partial_unit_ptr == NULL
5708           || !*want_partial_unit_ptr))
5709     return;
5710
5711   gdb_assert (! per_cu->is_debug_types);
5712
5713   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
5714
5715   cu->list_in_scope = &file_symbols;
5716
5717   /* Allocate a new partial symbol table structure.  */
5718   attr = dwarf2_attr (comp_unit_die, DW_AT_name, cu);
5719   if (attr == NULL || !DW_STRING (attr))
5720     filename = "";
5721   else
5722     filename = DW_STRING (attr);
5723
5724   pst = create_partial_symtab (per_cu, filename);
5725
5726   /* This must be done before calling dwarf2_build_include_psymtabs.  */
5727   attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
5728   if (attr != NULL)
5729     pst->dirname = DW_STRING (attr);
5730
5731   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5732
5733   dwarf2_find_base_address (comp_unit_die, cu);
5734
5735   /* Possibly set the default values of LOWPC and HIGHPC from
5736      `DW_AT_ranges'.  */
5737   has_pc_info = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
5738                                       &best_highpc, cu, pst);
5739   if (has_pc_info == 1 && best_lowpc < best_highpc)
5740     /* Store the contiguous range if it is not empty; it can be empty for
5741        CUs with no code.  */
5742     addrmap_set_empty (objfile->psymtabs_addrmap,
5743                        best_lowpc + baseaddr,
5744                        best_highpc + baseaddr - 1, pst);
5745
5746   /* Check if comp unit has_children.
5747      If so, read the rest of the partial symbols from this comp unit.
5748      If not, there's no more debug_info for this comp unit.  */
5749   if (has_children)
5750     {
5751       struct partial_die_info *first_die;
5752       CORE_ADDR lowpc, highpc;
5753
5754       lowpc = ((CORE_ADDR) -1);
5755       highpc = ((CORE_ADDR) 0);
5756
5757       first_die = load_partial_dies (reader, info_ptr, 1);
5758
5759       scan_partial_symbols (first_die, &lowpc, &highpc,
5760                             ! has_pc_info, cu);
5761
5762       /* If we didn't find a lowpc, set it to highpc to avoid
5763          complaints from `maint check'.  */
5764       if (lowpc == ((CORE_ADDR) -1))
5765         lowpc = highpc;
5766
5767       /* If the compilation unit didn't have an explicit address range,
5768          then use the information extracted from its child dies.  */
5769       if (! has_pc_info)
5770         {
5771           best_lowpc = lowpc;
5772           best_highpc = highpc;
5773         }
5774     }
5775   pst->textlow = best_lowpc + baseaddr;
5776   pst->texthigh = best_highpc + baseaddr;
5777
5778   pst->n_global_syms = objfile->global_psymbols.next -
5779     (objfile->global_psymbols.list + pst->globals_offset);
5780   pst->n_static_syms = objfile->static_psymbols.next -
5781     (objfile->static_psymbols.list + pst->statics_offset);
5782   sort_pst_symbols (objfile, pst);
5783
5784   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
5785     {
5786       int i;
5787       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
5788       struct dwarf2_per_cu_data *iter;
5789
5790       /* Fill in 'dependencies' here; we fill in 'users' in a
5791          post-pass.  */
5792       pst->number_of_dependencies = len;
5793       pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
5794                                          len * sizeof (struct symtab *));
5795       for (i = 0;
5796            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
5797                         i, iter);
5798            ++i)
5799         pst->dependencies[i] = iter->v.psymtab;
5800
5801       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
5802     }
5803
5804   /* Get the list of files included in the current compilation unit,
5805      and build a psymtab for each of them.  */
5806   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
5807
5808   if (dwarf2_read_debug)
5809     {
5810       struct gdbarch *gdbarch = get_objfile_arch (objfile);
5811
5812       fprintf_unfiltered (gdb_stdlog,
5813                           "Psymtab for %s unit @0x%x: %s - %s"
5814                           ", %d global, %d static syms\n",
5815                           per_cu->is_debug_types ? "type" : "comp",
5816                           per_cu->offset.sect_off,
5817                           paddress (gdbarch, pst->textlow),
5818                           paddress (gdbarch, pst->texthigh),
5819                           pst->n_global_syms, pst->n_static_syms);
5820     }
5821 }
5822
5823 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
5824    Process compilation unit THIS_CU for a psymtab.  */
5825
5826 static void
5827 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
5828                            int want_partial_unit)
5829 {
5830   /* If this compilation unit was already read in, free the
5831      cached copy in order to read it in again.  This is
5832      necessary because we skipped some symbols when we first
5833      read in the compilation unit (see load_partial_dies).
5834      This problem could be avoided, but the benefit is unclear.  */
5835   if (this_cu->cu != NULL)
5836     free_one_cached_comp_unit (this_cu);
5837
5838   gdb_assert (! this_cu->is_debug_types);
5839   init_cutu_and_read_dies (this_cu, NULL, 0, 0,
5840                            process_psymtab_comp_unit_reader,
5841                            &want_partial_unit);
5842
5843   /* Age out any secondary CUs.  */
5844   age_cached_comp_units ();
5845 }
5846
5847 /* Reader function for build_type_psymtabs.  */
5848
5849 static void
5850 build_type_psymtabs_reader (const struct die_reader_specs *reader,
5851                             const gdb_byte *info_ptr,
5852                             struct die_info *type_unit_die,
5853                             int has_children,
5854                             void *data)
5855 {
5856   struct objfile *objfile = dwarf2_per_objfile->objfile;
5857   struct dwarf2_cu *cu = reader->cu;
5858   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
5859   struct signatured_type *sig_type;
5860   struct type_unit_group *tu_group;
5861   struct attribute *attr;
5862   struct partial_die_info *first_die;
5863   CORE_ADDR lowpc, highpc;
5864   struct partial_symtab *pst;
5865
5866   gdb_assert (data == NULL);
5867   gdb_assert (per_cu->is_debug_types);
5868   sig_type = (struct signatured_type *) per_cu;
5869
5870   if (! has_children)
5871     return;
5872
5873   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
5874   tu_group = get_type_unit_group (cu, attr);
5875
5876   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
5877
5878   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
5879   cu->list_in_scope = &file_symbols;
5880   pst = create_partial_symtab (per_cu, "");
5881   pst->anonymous = 1;
5882
5883   first_die = load_partial_dies (reader, info_ptr, 1);
5884
5885   lowpc = (CORE_ADDR) -1;
5886   highpc = (CORE_ADDR) 0;
5887   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
5888
5889   pst->n_global_syms = objfile->global_psymbols.next -
5890     (objfile->global_psymbols.list + pst->globals_offset);
5891   pst->n_static_syms = objfile->static_psymbols.next -
5892     (objfile->static_psymbols.list + pst->statics_offset);
5893   sort_pst_symbols (objfile, pst);
5894 }
5895
5896 /* Traversal function for build_type_psymtabs.  */
5897
5898 static int
5899 build_type_psymtab_dependencies (void **slot, void *info)
5900 {
5901   struct objfile *objfile = dwarf2_per_objfile->objfile;
5902   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
5903   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
5904   struct partial_symtab *pst = per_cu->v.psymtab;
5905   int len = VEC_length (sig_type_ptr, tu_group->tus);
5906   struct signatured_type *iter;
5907   int i;
5908
5909   gdb_assert (len > 0);
5910   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
5911
5912   pst->number_of_dependencies = len;
5913   pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
5914                                      len * sizeof (struct psymtab *));
5915   for (i = 0;
5916        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
5917        ++i)
5918     {
5919       gdb_assert (iter->per_cu.is_debug_types);
5920       pst->dependencies[i] = iter->per_cu.v.psymtab;
5921       iter->type_unit_group = tu_group;
5922     }
5923
5924   VEC_free (sig_type_ptr, tu_group->tus);
5925
5926   return 1;
5927 }
5928
5929 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
5930    Build partial symbol tables for the .debug_types comp-units.  */
5931
5932 static void
5933 build_type_psymtabs (struct objfile *objfile)
5934 {
5935   if (! create_all_type_units (objfile))
5936     return;
5937
5938   build_type_unit_groups (build_type_psymtabs_reader, NULL);
5939
5940   /* Now that all TUs have been processed we can fill in the dependencies.  */
5941   htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
5942                           build_type_psymtab_dependencies, NULL);
5943 }
5944
5945 /* A cleanup function that clears objfile's psymtabs_addrmap field.  */
5946
5947 static void
5948 psymtabs_addrmap_cleanup (void *o)
5949 {
5950   struct objfile *objfile = o;
5951
5952   objfile->psymtabs_addrmap = NULL;
5953 }
5954
5955 /* Compute the 'user' field for each psymtab in OBJFILE.  */
5956
5957 static void
5958 set_partial_user (struct objfile *objfile)
5959 {
5960   int i;
5961
5962   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
5963     {
5964       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
5965       struct partial_symtab *pst = per_cu->v.psymtab;
5966       int j;
5967
5968       if (pst == NULL)
5969         continue;
5970
5971       for (j = 0; j < pst->number_of_dependencies; ++j)
5972         {
5973           /* Set the 'user' field only if it is not already set.  */
5974           if (pst->dependencies[j]->user == NULL)
5975             pst->dependencies[j]->user = pst;
5976         }
5977     }
5978 }
5979
5980 /* Build the partial symbol table by doing a quick pass through the
5981    .debug_info and .debug_abbrev sections.  */
5982
5983 static void
5984 dwarf2_build_psymtabs_hard (struct objfile *objfile)
5985 {
5986   struct cleanup *back_to, *addrmap_cleanup;
5987   struct obstack temp_obstack;
5988   int i;
5989
5990   if (dwarf2_read_debug)
5991     {
5992       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
5993                           objfile->name);
5994     }
5995
5996   dwarf2_per_objfile->reading_partial_symbols = 1;
5997
5998   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
5999
6000   /* Any cached compilation units will be linked by the per-objfile
6001      read_in_chain.  Make sure to free them when we're done.  */
6002   back_to = make_cleanup (free_cached_comp_units, NULL);
6003
6004   build_type_psymtabs (objfile);
6005
6006   create_all_comp_units (objfile);
6007
6008   /* Create a temporary address map on a temporary obstack.  We later
6009      copy this to the final obstack.  */
6010   obstack_init (&temp_obstack);
6011   make_cleanup_obstack_free (&temp_obstack);
6012   objfile->psymtabs_addrmap = addrmap_create_mutable (&temp_obstack);
6013   addrmap_cleanup = make_cleanup (psymtabs_addrmap_cleanup, objfile);
6014
6015   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6016     {
6017       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
6018
6019       process_psymtab_comp_unit (per_cu, 0);
6020     }
6021
6022   set_partial_user (objfile);
6023
6024   objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
6025                                                     &objfile->objfile_obstack);
6026   discard_cleanups (addrmap_cleanup);
6027
6028   do_cleanups (back_to);
6029
6030   if (dwarf2_read_debug)
6031     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
6032                         objfile->name);
6033 }
6034
6035 /* die_reader_func for load_partial_comp_unit.  */
6036
6037 static void
6038 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
6039                                const gdb_byte *info_ptr,
6040                                struct die_info *comp_unit_die,
6041                                int has_children,
6042                                void *data)
6043 {
6044   struct dwarf2_cu *cu = reader->cu;
6045
6046   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
6047
6048   /* Check if comp unit has_children.
6049      If so, read the rest of the partial symbols from this comp unit.
6050      If not, there's no more debug_info for this comp unit.  */
6051   if (has_children)
6052     load_partial_dies (reader, info_ptr, 0);
6053 }
6054
6055 /* Load the partial DIEs for a secondary CU into memory.
6056    This is also used when rereading a primary CU with load_all_dies.  */
6057
6058 static void
6059 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
6060 {
6061   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
6062                            load_partial_comp_unit_reader, NULL);
6063 }
6064
6065 static void
6066 read_comp_units_from_section (struct objfile *objfile,
6067                               struct dwarf2_section_info *section,
6068                               unsigned int is_dwz,
6069                               int *n_allocated,
6070                               int *n_comp_units,
6071                               struct dwarf2_per_cu_data ***all_comp_units)
6072 {
6073   const gdb_byte *info_ptr;
6074   bfd *abfd = section->asection->owner;
6075
6076   if (dwarf2_read_debug)
6077     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
6078                         section->asection->name, bfd_get_filename (abfd));
6079
6080   dwarf2_read_section (objfile, section);
6081
6082   info_ptr = section->buffer;
6083
6084   while (info_ptr < section->buffer + section->size)
6085     {
6086       unsigned int length, initial_length_size;
6087       struct dwarf2_per_cu_data *this_cu;
6088       sect_offset offset;
6089
6090       offset.sect_off = info_ptr - section->buffer;
6091
6092       /* Read just enough information to find out where the next
6093          compilation unit is.  */
6094       length = read_initial_length (abfd, info_ptr, &initial_length_size);
6095
6096       /* Save the compilation unit for later lookup.  */
6097       this_cu = obstack_alloc (&objfile->objfile_obstack,
6098                                sizeof (struct dwarf2_per_cu_data));
6099       memset (this_cu, 0, sizeof (*this_cu));
6100       this_cu->offset = offset;
6101       this_cu->length = length + initial_length_size;
6102       this_cu->is_dwz = is_dwz;
6103       this_cu->objfile = objfile;
6104       this_cu->section = section;
6105
6106       if (*n_comp_units == *n_allocated)
6107         {
6108           *n_allocated *= 2;
6109           *all_comp_units = xrealloc (*all_comp_units,
6110                                       *n_allocated
6111                                       * sizeof (struct dwarf2_per_cu_data *));
6112         }
6113       (*all_comp_units)[*n_comp_units] = this_cu;
6114       ++*n_comp_units;
6115
6116       info_ptr = info_ptr + this_cu->length;
6117     }
6118 }
6119
6120 /* Create a list of all compilation units in OBJFILE.
6121    This is only done for -readnow and building partial symtabs.  */
6122
6123 static void
6124 create_all_comp_units (struct objfile *objfile)
6125 {
6126   int n_allocated;
6127   int n_comp_units;
6128   struct dwarf2_per_cu_data **all_comp_units;
6129   struct dwz_file *dwz;
6130
6131   n_comp_units = 0;
6132   n_allocated = 10;
6133   all_comp_units = xmalloc (n_allocated
6134                             * sizeof (struct dwarf2_per_cu_data *));
6135
6136   read_comp_units_from_section (objfile, &dwarf2_per_objfile->info, 0,
6137                                 &n_allocated, &n_comp_units, &all_comp_units);
6138
6139   dwz = dwarf2_get_dwz_file ();
6140   if (dwz != NULL)
6141     read_comp_units_from_section (objfile, &dwz->info, 1,
6142                                   &n_allocated, &n_comp_units,
6143                                   &all_comp_units);
6144
6145   dwarf2_per_objfile->all_comp_units
6146     = obstack_alloc (&objfile->objfile_obstack,
6147                      n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6148   memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
6149           n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6150   xfree (all_comp_units);
6151   dwarf2_per_objfile->n_comp_units = n_comp_units;
6152 }
6153
6154 /* Process all loaded DIEs for compilation unit CU, starting at
6155    FIRST_DIE.  The caller should pass NEED_PC == 1 if the compilation
6156    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
6157    DW_AT_ranges).  If NEED_PC is set, then this function will set
6158    *LOWPC and *HIGHPC to the lowest and highest PC values found in CU
6159    and record the covered ranges in the addrmap.  */
6160
6161 static void
6162 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
6163                       CORE_ADDR *highpc, int need_pc, struct dwarf2_cu *cu)
6164 {
6165   struct partial_die_info *pdi;
6166
6167   /* Now, march along the PDI's, descending into ones which have
6168      interesting children but skipping the children of the other ones,
6169      until we reach the end of the compilation unit.  */
6170
6171   pdi = first_die;
6172
6173   while (pdi != NULL)
6174     {
6175       fixup_partial_die (pdi, cu);
6176
6177       /* Anonymous namespaces or modules have no name but have interesting
6178          children, so we need to look at them.  Ditto for anonymous
6179          enums.  */
6180
6181       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
6182           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
6183           || pdi->tag == DW_TAG_imported_unit)
6184         {
6185           switch (pdi->tag)
6186             {
6187             case DW_TAG_subprogram:
6188               add_partial_subprogram (pdi, lowpc, highpc, need_pc, cu);
6189               break;
6190             case DW_TAG_constant:
6191             case DW_TAG_variable:
6192             case DW_TAG_typedef:
6193             case DW_TAG_union_type:
6194               if (!pdi->is_declaration)
6195                 {
6196                   add_partial_symbol (pdi, cu);
6197                 }
6198               break;
6199             case DW_TAG_class_type:
6200             case DW_TAG_interface_type:
6201             case DW_TAG_structure_type:
6202               if (!pdi->is_declaration)
6203                 {
6204                   add_partial_symbol (pdi, cu);
6205                 }
6206               break;
6207             case DW_TAG_enumeration_type:
6208               if (!pdi->is_declaration)
6209                 add_partial_enumeration (pdi, cu);
6210               break;
6211             case DW_TAG_base_type:
6212             case DW_TAG_subrange_type:
6213               /* File scope base type definitions are added to the partial
6214                  symbol table.  */
6215               add_partial_symbol (pdi, cu);
6216               break;
6217             case DW_TAG_namespace:
6218               add_partial_namespace (pdi, lowpc, highpc, need_pc, cu);
6219               break;
6220             case DW_TAG_module:
6221               add_partial_module (pdi, lowpc, highpc, need_pc, cu);
6222               break;
6223             case DW_TAG_imported_unit:
6224               {
6225                 struct dwarf2_per_cu_data *per_cu;
6226
6227                 /* For now we don't handle imported units in type units.  */
6228                 if (cu->per_cu->is_debug_types)
6229                   {
6230                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
6231                              " supported in type units [in module %s]"),
6232                            cu->objfile->name);
6233                   }
6234
6235                 per_cu = dwarf2_find_containing_comp_unit (pdi->d.offset,
6236                                                            pdi->is_dwz,
6237                                                            cu->objfile);
6238
6239                 /* Go read the partial unit, if needed.  */
6240                 if (per_cu->v.psymtab == NULL)
6241                   process_psymtab_comp_unit (per_cu, 1);
6242
6243                 VEC_safe_push (dwarf2_per_cu_ptr,
6244                                cu->per_cu->imported_symtabs, per_cu);
6245               }
6246               break;
6247             default:
6248               break;
6249             }
6250         }
6251
6252       /* If the die has a sibling, skip to the sibling.  */
6253
6254       pdi = pdi->die_sibling;
6255     }
6256 }
6257
6258 /* Functions used to compute the fully scoped name of a partial DIE.
6259
6260    Normally, this is simple.  For C++, the parent DIE's fully scoped
6261    name is concatenated with "::" and the partial DIE's name.  For
6262    Java, the same thing occurs except that "." is used instead of "::".
6263    Enumerators are an exception; they use the scope of their parent
6264    enumeration type, i.e. the name of the enumeration type is not
6265    prepended to the enumerator.
6266
6267    There are two complexities.  One is DW_AT_specification; in this
6268    case "parent" means the parent of the target of the specification,
6269    instead of the direct parent of the DIE.  The other is compilers
6270    which do not emit DW_TAG_namespace; in this case we try to guess
6271    the fully qualified name of structure types from their members'
6272    linkage names.  This must be done using the DIE's children rather
6273    than the children of any DW_AT_specification target.  We only need
6274    to do this for structures at the top level, i.e. if the target of
6275    any DW_AT_specification (if any; otherwise the DIE itself) does not
6276    have a parent.  */
6277
6278 /* Compute the scope prefix associated with PDI's parent, in
6279    compilation unit CU.  The result will be allocated on CU's
6280    comp_unit_obstack, or a copy of the already allocated PDI->NAME
6281    field.  NULL is returned if no prefix is necessary.  */
6282 static const char *
6283 partial_die_parent_scope (struct partial_die_info *pdi,
6284                           struct dwarf2_cu *cu)
6285 {
6286   const char *grandparent_scope;
6287   struct partial_die_info *parent, *real_pdi;
6288
6289   /* We need to look at our parent DIE; if we have a DW_AT_specification,
6290      then this means the parent of the specification DIE.  */
6291
6292   real_pdi = pdi;
6293   while (real_pdi->has_specification)
6294     real_pdi = find_partial_die (real_pdi->spec_offset,
6295                                  real_pdi->spec_is_dwz, cu);
6296
6297   parent = real_pdi->die_parent;
6298   if (parent == NULL)
6299     return NULL;
6300
6301   if (parent->scope_set)
6302     return parent->scope;
6303
6304   fixup_partial_die (parent, cu);
6305
6306   grandparent_scope = partial_die_parent_scope (parent, cu);
6307
6308   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
6309      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
6310      Work around this problem here.  */
6311   if (cu->language == language_cplus
6312       && parent->tag == DW_TAG_namespace
6313       && strcmp (parent->name, "::") == 0
6314       && grandparent_scope == NULL)
6315     {
6316       parent->scope = NULL;
6317       parent->scope_set = 1;
6318       return NULL;
6319     }
6320
6321   if (pdi->tag == DW_TAG_enumerator)
6322     /* Enumerators should not get the name of the enumeration as a prefix.  */
6323     parent->scope = grandparent_scope;
6324   else if (parent->tag == DW_TAG_namespace
6325       || parent->tag == DW_TAG_module
6326       || parent->tag == DW_TAG_structure_type
6327       || parent->tag == DW_TAG_class_type
6328       || parent->tag == DW_TAG_interface_type
6329       || parent->tag == DW_TAG_union_type
6330       || parent->tag == DW_TAG_enumeration_type)
6331     {
6332       if (grandparent_scope == NULL)
6333         parent->scope = parent->name;
6334       else
6335         parent->scope = typename_concat (&cu->comp_unit_obstack,
6336                                          grandparent_scope,
6337                                          parent->name, 0, cu);
6338     }
6339   else
6340     {
6341       /* FIXME drow/2004-04-01: What should we be doing with
6342          function-local names?  For partial symbols, we should probably be
6343          ignoring them.  */
6344       complaint (&symfile_complaints,
6345                  _("unhandled containing DIE tag %d for DIE at %d"),
6346                  parent->tag, pdi->offset.sect_off);
6347       parent->scope = grandparent_scope;
6348     }
6349
6350   parent->scope_set = 1;
6351   return parent->scope;
6352 }
6353
6354 /* Return the fully scoped name associated with PDI, from compilation unit
6355    CU.  The result will be allocated with malloc.  */
6356
6357 static char *
6358 partial_die_full_name (struct partial_die_info *pdi,
6359                        struct dwarf2_cu *cu)
6360 {
6361   const char *parent_scope;
6362
6363   /* If this is a template instantiation, we can not work out the
6364      template arguments from partial DIEs.  So, unfortunately, we have
6365      to go through the full DIEs.  At least any work we do building
6366      types here will be reused if full symbols are loaded later.  */
6367   if (pdi->has_template_arguments)
6368     {
6369       fixup_partial_die (pdi, cu);
6370
6371       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
6372         {
6373           struct die_info *die;
6374           struct attribute attr;
6375           struct dwarf2_cu *ref_cu = cu;
6376
6377           /* DW_FORM_ref_addr is using section offset.  */
6378           attr.name = 0;
6379           attr.form = DW_FORM_ref_addr;
6380           attr.u.unsnd = pdi->offset.sect_off;
6381           die = follow_die_ref (NULL, &attr, &ref_cu);
6382
6383           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
6384         }
6385     }
6386
6387   parent_scope = partial_die_parent_scope (pdi, cu);
6388   if (parent_scope == NULL)
6389     return NULL;
6390   else
6391     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
6392 }
6393
6394 static void
6395 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
6396 {
6397   struct objfile *objfile = cu->objfile;
6398   CORE_ADDR addr = 0;
6399   const char *actual_name = NULL;
6400   CORE_ADDR baseaddr;
6401   char *built_actual_name;
6402
6403   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
6404
6405   built_actual_name = partial_die_full_name (pdi, cu);
6406   if (built_actual_name != NULL)
6407     actual_name = built_actual_name;
6408
6409   if (actual_name == NULL)
6410     actual_name = pdi->name;
6411
6412   switch (pdi->tag)
6413     {
6414     case DW_TAG_subprogram:
6415       if (pdi->is_external || cu->language == language_ada)
6416         {
6417           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
6418              of the global scope.  But in Ada, we want to be able to access
6419              nested procedures globally.  So all Ada subprograms are stored
6420              in the global scope.  */
6421           /* prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr,
6422              mst_text, objfile); */
6423           add_psymbol_to_list (actual_name, strlen (actual_name),
6424                                built_actual_name != NULL,
6425                                VAR_DOMAIN, LOC_BLOCK,
6426                                &objfile->global_psymbols,
6427                                0, pdi->lowpc + baseaddr,
6428                                cu->language, objfile);
6429         }
6430       else
6431         {
6432           /* prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr,
6433              mst_file_text, objfile); */
6434           add_psymbol_to_list (actual_name, strlen (actual_name),
6435                                built_actual_name != NULL,
6436                                VAR_DOMAIN, LOC_BLOCK,
6437                                &objfile->static_psymbols,
6438                                0, pdi->lowpc + baseaddr,
6439                                cu->language, objfile);
6440         }
6441       break;
6442     case DW_TAG_constant:
6443       {
6444         struct psymbol_allocation_list *list;
6445
6446         if (pdi->is_external)
6447           list = &objfile->global_psymbols;
6448         else
6449           list = &objfile->static_psymbols;
6450         add_psymbol_to_list (actual_name, strlen (actual_name),
6451                              built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
6452                              list, 0, 0, cu->language, objfile);
6453       }
6454       break;
6455     case DW_TAG_variable:
6456       if (pdi->d.locdesc)
6457         addr = decode_locdesc (pdi->d.locdesc, cu);
6458
6459       if (pdi->d.locdesc
6460           && addr == 0
6461           && !dwarf2_per_objfile->has_section_at_zero)
6462         {
6463           /* A global or static variable may also have been stripped
6464              out by the linker if unused, in which case its address
6465              will be nullified; do not add such variables into partial
6466              symbol table then.  */
6467         }
6468       else if (pdi->is_external)
6469         {
6470           /* Global Variable.
6471              Don't enter into the minimal symbol tables as there is
6472              a minimal symbol table entry from the ELF symbols already.
6473              Enter into partial symbol table if it has a location
6474              descriptor or a type.
6475              If the location descriptor is missing, new_symbol will create
6476              a LOC_UNRESOLVED symbol, the address of the variable will then
6477              be determined from the minimal symbol table whenever the variable
6478              is referenced.
6479              The address for the partial symbol table entry is not
6480              used by GDB, but it comes in handy for debugging partial symbol
6481              table building.  */
6482
6483           if (pdi->d.locdesc || pdi->has_type)
6484             add_psymbol_to_list (actual_name, strlen (actual_name),
6485                                  built_actual_name != NULL,
6486                                  VAR_DOMAIN, LOC_STATIC,
6487                                  &objfile->global_psymbols,
6488                                  0, addr + baseaddr,
6489                                  cu->language, objfile);
6490         }
6491       else
6492         {
6493           /* Static Variable.  Skip symbols without location descriptors.  */
6494           if (pdi->d.locdesc == NULL)
6495             {
6496               xfree (built_actual_name);
6497               return;
6498             }
6499           /* prim_record_minimal_symbol (actual_name, addr + baseaddr,
6500              mst_file_data, objfile); */
6501           add_psymbol_to_list (actual_name, strlen (actual_name),
6502                                built_actual_name != NULL,
6503                                VAR_DOMAIN, LOC_STATIC,
6504                                &objfile->static_psymbols,
6505                                0, addr + baseaddr,
6506                                cu->language, objfile);
6507         }
6508       break;
6509     case DW_TAG_typedef:
6510     case DW_TAG_base_type:
6511     case DW_TAG_subrange_type:
6512       add_psymbol_to_list (actual_name, strlen (actual_name),
6513                            built_actual_name != NULL,
6514                            VAR_DOMAIN, LOC_TYPEDEF,
6515                            &objfile->static_psymbols,
6516                            0, (CORE_ADDR) 0, cu->language, objfile);
6517       break;
6518     case DW_TAG_namespace:
6519       add_psymbol_to_list (actual_name, strlen (actual_name),
6520                            built_actual_name != NULL,
6521                            VAR_DOMAIN, LOC_TYPEDEF,
6522                            &objfile->global_psymbols,
6523                            0, (CORE_ADDR) 0, cu->language, objfile);
6524       break;
6525     case DW_TAG_class_type:
6526     case DW_TAG_interface_type:
6527     case DW_TAG_structure_type:
6528     case DW_TAG_union_type:
6529     case DW_TAG_enumeration_type:
6530       /* Skip external references.  The DWARF standard says in the section
6531          about "Structure, Union, and Class Type Entries": "An incomplete
6532          structure, union or class type is represented by a structure,
6533          union or class entry that does not have a byte size attribute
6534          and that has a DW_AT_declaration attribute."  */
6535       if (!pdi->has_byte_size && pdi->is_declaration)
6536         {
6537           xfree (built_actual_name);
6538           return;
6539         }
6540
6541       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
6542          static vs. global.  */
6543       add_psymbol_to_list (actual_name, strlen (actual_name),
6544                            built_actual_name != NULL,
6545                            STRUCT_DOMAIN, LOC_TYPEDEF,
6546                            (cu->language == language_cplus
6547                             || cu->language == language_java)
6548                            ? &objfile->global_psymbols
6549                            : &objfile->static_psymbols,
6550                            0, (CORE_ADDR) 0, cu->language, objfile);
6551
6552       break;
6553     case DW_TAG_enumerator:
6554       add_psymbol_to_list (actual_name, strlen (actual_name),
6555                            built_actual_name != NULL,
6556                            VAR_DOMAIN, LOC_CONST,
6557                            (cu->language == language_cplus
6558                             || cu->language == language_java)
6559                            ? &objfile->global_psymbols
6560                            : &objfile->static_psymbols,
6561                            0, (CORE_ADDR) 0, cu->language, objfile);
6562       break;
6563     default:
6564       break;
6565     }
6566
6567   xfree (built_actual_name);
6568 }
6569
6570 /* Read a partial die corresponding to a namespace; also, add a symbol
6571    corresponding to that namespace to the symbol table.  NAMESPACE is
6572    the name of the enclosing namespace.  */
6573
6574 static void
6575 add_partial_namespace (struct partial_die_info *pdi,
6576                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
6577                        int need_pc, struct dwarf2_cu *cu)
6578 {
6579   /* Add a symbol for the namespace.  */
6580
6581   add_partial_symbol (pdi, cu);
6582
6583   /* Now scan partial symbols in that namespace.  */
6584
6585   if (pdi->has_children)
6586     scan_partial_symbols (pdi->die_child, lowpc, highpc, need_pc, cu);
6587 }
6588
6589 /* Read a partial die corresponding to a Fortran module.  */
6590
6591 static void
6592 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
6593                     CORE_ADDR *highpc, int need_pc, struct dwarf2_cu *cu)
6594 {
6595   /* Now scan partial symbols in that module.  */
6596
6597   if (pdi->has_children)
6598     scan_partial_symbols (pdi->die_child, lowpc, highpc, need_pc, cu);
6599 }
6600
6601 /* Read a partial die corresponding to a subprogram and create a partial
6602    symbol for that subprogram.  When the CU language allows it, this
6603    routine also defines a partial symbol for each nested subprogram
6604    that this subprogram contains.
6605
6606    DIE my also be a lexical block, in which case we simply search
6607    recursively for suprograms defined inside that lexical block.
6608    Again, this is only performed when the CU language allows this
6609    type of definitions.  */
6610
6611 static void
6612 add_partial_subprogram (struct partial_die_info *pdi,
6613                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
6614                         int need_pc, struct dwarf2_cu *cu)
6615 {
6616   if (pdi->tag == DW_TAG_subprogram)
6617     {
6618       if (pdi->has_pc_info)
6619         {
6620           if (pdi->lowpc < *lowpc)
6621             *lowpc = pdi->lowpc;
6622           if (pdi->highpc > *highpc)
6623             *highpc = pdi->highpc;
6624           if (need_pc)
6625             {
6626               CORE_ADDR baseaddr;
6627               struct objfile *objfile = cu->objfile;
6628
6629               baseaddr = ANOFFSET (objfile->section_offsets,
6630                                    SECT_OFF_TEXT (objfile));
6631               addrmap_set_empty (objfile->psymtabs_addrmap,
6632                                  pdi->lowpc + baseaddr,
6633                                  pdi->highpc - 1 + baseaddr,
6634                                  cu->per_cu->v.psymtab);
6635             }
6636         }
6637
6638       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
6639         {
6640           if (!pdi->is_declaration)
6641             /* Ignore subprogram DIEs that do not have a name, they are
6642                illegal.  Do not emit a complaint at this point, we will
6643                do so when we convert this psymtab into a symtab.  */
6644             if (pdi->name)
6645               add_partial_symbol (pdi, cu);
6646         }
6647     }
6648
6649   if (! pdi->has_children)
6650     return;
6651
6652   if (cu->language == language_ada)
6653     {
6654       pdi = pdi->die_child;
6655       while (pdi != NULL)
6656         {
6657           fixup_partial_die (pdi, cu);
6658           if (pdi->tag == DW_TAG_subprogram
6659               || pdi->tag == DW_TAG_lexical_block)
6660             add_partial_subprogram (pdi, lowpc, highpc, need_pc, cu);
6661           pdi = pdi->die_sibling;
6662         }
6663     }
6664 }
6665
6666 /* Read a partial die corresponding to an enumeration type.  */
6667
6668 static void
6669 add_partial_enumeration (struct partial_die_info *enum_pdi,
6670                          struct dwarf2_cu *cu)
6671 {
6672   struct partial_die_info *pdi;
6673
6674   if (enum_pdi->name != NULL)
6675     add_partial_symbol (enum_pdi, cu);
6676
6677   pdi = enum_pdi->die_child;
6678   while (pdi)
6679     {
6680       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
6681         complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
6682       else
6683         add_partial_symbol (pdi, cu);
6684       pdi = pdi->die_sibling;
6685     }
6686 }
6687
6688 /* Return the initial uleb128 in the die at INFO_PTR.  */
6689
6690 static unsigned int
6691 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
6692 {
6693   unsigned int bytes_read;
6694
6695   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
6696 }
6697
6698 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
6699    Return the corresponding abbrev, or NULL if the number is zero (indicating
6700    an empty DIE).  In either case *BYTES_READ will be set to the length of
6701    the initial number.  */
6702
6703 static struct abbrev_info *
6704 peek_die_abbrev (const gdb_byte *info_ptr, unsigned int *bytes_read,
6705                  struct dwarf2_cu *cu)
6706 {
6707   bfd *abfd = cu->objfile->obfd;
6708   unsigned int abbrev_number;
6709   struct abbrev_info *abbrev;
6710
6711   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
6712
6713   if (abbrev_number == 0)
6714     return NULL;
6715
6716   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
6717   if (!abbrev)
6718     {
6719       error (_("Dwarf Error: Could not find abbrev number %d [in module %s]"),
6720              abbrev_number, bfd_get_filename (abfd));
6721     }
6722
6723   return abbrev;
6724 }
6725
6726 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
6727    Returns a pointer to the end of a series of DIEs, terminated by an empty
6728    DIE.  Any children of the skipped DIEs will also be skipped.  */
6729
6730 static const gdb_byte *
6731 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
6732 {
6733   struct dwarf2_cu *cu = reader->cu;
6734   struct abbrev_info *abbrev;
6735   unsigned int bytes_read;
6736
6737   while (1)
6738     {
6739       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
6740       if (abbrev == NULL)
6741         return info_ptr + bytes_read;
6742       else
6743         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
6744     }
6745 }
6746
6747 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
6748    INFO_PTR should point just after the initial uleb128 of a DIE, and the
6749    abbrev corresponding to that skipped uleb128 should be passed in
6750    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
6751    children.  */
6752
6753 static const gdb_byte *
6754 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
6755               struct abbrev_info *abbrev)
6756 {
6757   unsigned int bytes_read;
6758   struct attribute attr;
6759   bfd *abfd = reader->abfd;
6760   struct dwarf2_cu *cu = reader->cu;
6761   const gdb_byte *buffer = reader->buffer;
6762   const gdb_byte *buffer_end = reader->buffer_end;
6763   const gdb_byte *start_info_ptr = info_ptr;
6764   unsigned int form, i;
6765
6766   for (i = 0; i < abbrev->num_attrs; i++)
6767     {
6768       /* The only abbrev we care about is DW_AT_sibling.  */
6769       if (abbrev->attrs[i].name == DW_AT_sibling)
6770         {
6771           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
6772           if (attr.form == DW_FORM_ref_addr)
6773             complaint (&symfile_complaints,
6774                        _("ignoring absolute DW_AT_sibling"));
6775           else
6776             return buffer + dwarf2_get_ref_die_offset (&attr).sect_off;
6777         }
6778
6779       /* If it isn't DW_AT_sibling, skip this attribute.  */
6780       form = abbrev->attrs[i].form;
6781     skip_attribute:
6782       switch (form)
6783         {
6784         case DW_FORM_ref_addr:
6785           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
6786              and later it is offset sized.  */
6787           if (cu->header.version == 2)
6788             info_ptr += cu->header.addr_size;
6789           else
6790             info_ptr += cu->header.offset_size;
6791           break;
6792         case DW_FORM_GNU_ref_alt:
6793           info_ptr += cu->header.offset_size;
6794           break;
6795         case DW_FORM_addr:
6796           info_ptr += cu->header.addr_size;
6797           break;
6798         case DW_FORM_data1:
6799         case DW_FORM_ref1:
6800         case DW_FORM_flag:
6801           info_ptr += 1;
6802           break;
6803         case DW_FORM_flag_present:
6804           break;
6805         case DW_FORM_data2:
6806         case DW_FORM_ref2:
6807           info_ptr += 2;
6808           break;
6809         case DW_FORM_data4:
6810         case DW_FORM_ref4:
6811           info_ptr += 4;
6812           break;
6813         case DW_FORM_data8:
6814         case DW_FORM_ref8:
6815         case DW_FORM_ref_sig8:
6816           info_ptr += 8;
6817           break;
6818         case DW_FORM_string:
6819           read_direct_string (abfd, info_ptr, &bytes_read);
6820           info_ptr += bytes_read;
6821           break;
6822         case DW_FORM_sec_offset:
6823         case DW_FORM_strp:
6824         case DW_FORM_GNU_strp_alt:
6825           info_ptr += cu->header.offset_size;
6826           break;
6827         case DW_FORM_exprloc:
6828         case DW_FORM_block:
6829           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
6830           info_ptr += bytes_read;
6831           break;
6832         case DW_FORM_block1:
6833           info_ptr += 1 + read_1_byte (abfd, info_ptr);
6834           break;
6835         case DW_FORM_block2:
6836           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
6837           break;
6838         case DW_FORM_block4:
6839           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
6840           break;
6841         case DW_FORM_sdata:
6842         case DW_FORM_udata:
6843         case DW_FORM_ref_udata:
6844         case DW_FORM_GNU_addr_index:
6845         case DW_FORM_GNU_str_index:
6846           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
6847           break;
6848         case DW_FORM_indirect:
6849           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
6850           info_ptr += bytes_read;
6851           /* We need to continue parsing from here, so just go back to
6852              the top.  */
6853           goto skip_attribute;
6854
6855         default:
6856           error (_("Dwarf Error: Cannot handle %s "
6857                    "in DWARF reader [in module %s]"),
6858                  dwarf_form_name (form),
6859                  bfd_get_filename (abfd));
6860         }
6861     }
6862
6863   if (abbrev->has_children)
6864     return skip_children (reader, info_ptr);
6865   else
6866     return info_ptr;
6867 }
6868
6869 /* Locate ORIG_PDI's sibling.
6870    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
6871
6872 static const gdb_byte *
6873 locate_pdi_sibling (const struct die_reader_specs *reader,
6874                     struct partial_die_info *orig_pdi,
6875                     const gdb_byte *info_ptr)
6876 {
6877   /* Do we know the sibling already?  */
6878
6879   if (orig_pdi->sibling)
6880     return orig_pdi->sibling;
6881
6882   /* Are there any children to deal with?  */
6883
6884   if (!orig_pdi->has_children)
6885     return info_ptr;
6886
6887   /* Skip the children the long way.  */
6888
6889   return skip_children (reader, info_ptr);
6890 }
6891
6892 /* Expand this partial symbol table into a full symbol table.  SELF is
6893    not NULL.  */
6894
6895 static void
6896 dwarf2_read_symtab (struct partial_symtab *self,
6897                     struct objfile *objfile)
6898 {
6899   if (self->readin)
6900     {
6901       warning (_("bug: psymtab for %s is already read in."),
6902                self->filename);
6903     }
6904   else
6905     {
6906       if (info_verbose)
6907         {
6908           printf_filtered (_("Reading in symbols for %s..."),
6909                            self->filename);
6910           gdb_flush (gdb_stdout);
6911         }
6912
6913       /* Restore our global data.  */
6914       dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
6915
6916       /* If this psymtab is constructed from a debug-only objfile, the
6917          has_section_at_zero flag will not necessarily be correct.  We
6918          can get the correct value for this flag by looking at the data
6919          associated with the (presumably stripped) associated objfile.  */
6920       if (objfile->separate_debug_objfile_backlink)
6921         {
6922           struct dwarf2_per_objfile *dpo_backlink
6923             = objfile_data (objfile->separate_debug_objfile_backlink,
6924                             dwarf2_objfile_data_key);
6925
6926           dwarf2_per_objfile->has_section_at_zero
6927             = dpo_backlink->has_section_at_zero;
6928         }
6929
6930       dwarf2_per_objfile->reading_partial_symbols = 0;
6931
6932       psymtab_to_symtab_1 (self);
6933
6934       /* Finish up the debug error message.  */
6935       if (info_verbose)
6936         printf_filtered (_("done.\n"));
6937     }
6938
6939   process_cu_includes ();
6940 }
6941 \f
6942 /* Reading in full CUs.  */
6943
6944 /* Add PER_CU to the queue.  */
6945
6946 static void
6947 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
6948                  enum language pretend_language)
6949 {
6950   struct dwarf2_queue_item *item;
6951
6952   per_cu->queued = 1;
6953   item = xmalloc (sizeof (*item));
6954   item->per_cu = per_cu;
6955   item->pretend_language = pretend_language;
6956   item->next = NULL;
6957
6958   if (dwarf2_queue == NULL)
6959     dwarf2_queue = item;
6960   else
6961     dwarf2_queue_tail->next = item;
6962
6963   dwarf2_queue_tail = item;
6964 }
6965
6966 /* THIS_CU has a reference to PER_CU.  If necessary, load the new compilation
6967    unit and add it to our queue.
6968    The result is non-zero if PER_CU was queued, otherwise the result is zero
6969    meaning either PER_CU is already queued or it is already loaded.  */
6970
6971 static int
6972 maybe_queue_comp_unit (struct dwarf2_cu *this_cu,
6973                        struct dwarf2_per_cu_data *per_cu,
6974                        enum language pretend_language)
6975 {
6976   /* We may arrive here during partial symbol reading, if we need full
6977      DIEs to process an unusual case (e.g. template arguments).  Do
6978      not queue PER_CU, just tell our caller to load its DIEs.  */
6979   if (dwarf2_per_objfile->reading_partial_symbols)
6980     {
6981       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
6982         return 1;
6983       return 0;
6984     }
6985
6986   /* Mark the dependence relation so that we don't flush PER_CU
6987      too early.  */
6988   dwarf2_add_dependence (this_cu, per_cu);
6989
6990   /* If it's already on the queue, we have nothing to do.  */
6991   if (per_cu->queued)
6992     return 0;
6993
6994   /* If the compilation unit is already loaded, just mark it as
6995      used.  */
6996   if (per_cu->cu != NULL)
6997     {
6998       per_cu->cu->last_used = 0;
6999       return 0;
7000     }
7001
7002   /* Add it to the queue.  */
7003   queue_comp_unit (per_cu, pretend_language);
7004
7005   return 1;
7006 }
7007
7008 /* Process the queue.  */
7009
7010 static void
7011 process_queue (void)
7012 {
7013   struct dwarf2_queue_item *item, *next_item;
7014
7015   if (dwarf2_read_debug)
7016     {
7017       fprintf_unfiltered (gdb_stdlog,
7018                           "Expanding one or more symtabs of objfile %s ...\n",
7019                           dwarf2_per_objfile->objfile->name);
7020     }
7021
7022   /* The queue starts out with one item, but following a DIE reference
7023      may load a new CU, adding it to the end of the queue.  */
7024   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
7025     {
7026       if (dwarf2_per_objfile->using_index
7027           ? !item->per_cu->v.quick->symtab
7028           : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
7029         {
7030           struct dwarf2_per_cu_data *per_cu = item->per_cu;
7031           char buf[100];
7032
7033           if (per_cu->is_debug_types)
7034             {
7035               struct signatured_type *sig_type =
7036                 (struct signatured_type *) per_cu;
7037
7038               sprintf (buf, "TU %s at offset 0x%x",
7039                        hex_string (sig_type->signature), per_cu->offset.sect_off);
7040             }
7041           else
7042             sprintf (buf, "CU at offset 0x%x", per_cu->offset.sect_off);
7043
7044           if (dwarf2_read_debug)
7045             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
7046
7047           if (per_cu->is_debug_types)
7048             process_full_type_unit (per_cu, item->pretend_language);
7049           else
7050             process_full_comp_unit (per_cu, item->pretend_language);
7051
7052           if (dwarf2_read_debug)
7053             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
7054         }
7055
7056       item->per_cu->queued = 0;
7057       next_item = item->next;
7058       xfree (item);
7059     }
7060
7061   dwarf2_queue_tail = NULL;
7062
7063   if (dwarf2_read_debug)
7064     {
7065       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
7066                           dwarf2_per_objfile->objfile->name);
7067     }
7068 }
7069
7070 /* Free all allocated queue entries.  This function only releases anything if
7071    an error was thrown; if the queue was processed then it would have been
7072    freed as we went along.  */
7073
7074 static void
7075 dwarf2_release_queue (void *dummy)
7076 {
7077   struct dwarf2_queue_item *item, *last;
7078
7079   item = dwarf2_queue;
7080   while (item)
7081     {
7082       /* Anything still marked queued is likely to be in an
7083          inconsistent state, so discard it.  */
7084       if (item->per_cu->queued)
7085         {
7086           if (item->per_cu->cu != NULL)
7087             free_one_cached_comp_unit (item->per_cu);
7088           item->per_cu->queued = 0;
7089         }
7090
7091       last = item;
7092       item = item->next;
7093       xfree (last);
7094     }
7095
7096   dwarf2_queue = dwarf2_queue_tail = NULL;
7097 }
7098
7099 /* Read in full symbols for PST, and anything it depends on.  */
7100
7101 static void
7102 psymtab_to_symtab_1 (struct partial_symtab *pst)
7103 {
7104   struct dwarf2_per_cu_data *per_cu;
7105   int i;
7106
7107   if (pst->readin)
7108     return;
7109
7110   for (i = 0; i < pst->number_of_dependencies; i++)
7111     if (!pst->dependencies[i]->readin
7112         && pst->dependencies[i]->user == NULL)
7113       {
7114         /* Inform about additional files that need to be read in.  */
7115         if (info_verbose)
7116           {
7117             /* FIXME: i18n: Need to make this a single string.  */
7118             fputs_filtered (" ", gdb_stdout);
7119             wrap_here ("");
7120             fputs_filtered ("and ", gdb_stdout);
7121             wrap_here ("");
7122             printf_filtered ("%s...", pst->dependencies[i]->filename);
7123             wrap_here ("");     /* Flush output.  */
7124             gdb_flush (gdb_stdout);
7125           }
7126         psymtab_to_symtab_1 (pst->dependencies[i]);
7127       }
7128
7129   per_cu = pst->read_symtab_private;
7130
7131   if (per_cu == NULL)
7132     {
7133       /* It's an include file, no symbols to read for it.
7134          Everything is in the parent symtab.  */
7135       pst->readin = 1;
7136       return;
7137     }
7138
7139   dw2_do_instantiate_symtab (per_cu);
7140 }
7141
7142 /* Trivial hash function for die_info: the hash value of a DIE
7143    is its offset in .debug_info for this objfile.  */
7144
7145 static hashval_t
7146 die_hash (const void *item)
7147 {
7148   const struct die_info *die = item;
7149
7150   return die->offset.sect_off;
7151 }
7152
7153 /* Trivial comparison function for die_info structures: two DIEs
7154    are equal if they have the same offset.  */
7155
7156 static int
7157 die_eq (const void *item_lhs, const void *item_rhs)
7158 {
7159   const struct die_info *die_lhs = item_lhs;
7160   const struct die_info *die_rhs = item_rhs;
7161
7162   return die_lhs->offset.sect_off == die_rhs->offset.sect_off;
7163 }
7164
7165 /* die_reader_func for load_full_comp_unit.
7166    This is identical to read_signatured_type_reader,
7167    but is kept separate for now.  */
7168
7169 static void
7170 load_full_comp_unit_reader (const struct die_reader_specs *reader,
7171                             const gdb_byte *info_ptr,
7172                             struct die_info *comp_unit_die,
7173                             int has_children,
7174                             void *data)
7175 {
7176   struct dwarf2_cu *cu = reader->cu;
7177   enum language *language_ptr = data;
7178
7179   gdb_assert (cu->die_hash == NULL);
7180   cu->die_hash =
7181     htab_create_alloc_ex (cu->header.length / 12,
7182                           die_hash,
7183                           die_eq,
7184                           NULL,
7185                           &cu->comp_unit_obstack,
7186                           hashtab_obstack_allocate,
7187                           dummy_obstack_deallocate);
7188
7189   if (has_children)
7190     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
7191                                                   &info_ptr, comp_unit_die);
7192   cu->dies = comp_unit_die;
7193   /* comp_unit_die is not stored in die_hash, no need.  */
7194
7195   /* We try not to read any attributes in this function, because not
7196      all CUs needed for references have been loaded yet, and symbol
7197      table processing isn't initialized.  But we have to set the CU language,
7198      or we won't be able to build types correctly.
7199      Similarly, if we do not read the producer, we can not apply
7200      producer-specific interpretation.  */
7201   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
7202 }
7203
7204 /* Load the DIEs associated with PER_CU into memory.  */
7205
7206 static void
7207 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
7208                      enum language pretend_language)
7209 {
7210   gdb_assert (! this_cu->is_debug_types);
7211
7212   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
7213                            load_full_comp_unit_reader, &pretend_language);
7214 }
7215
7216 /* Add a DIE to the delayed physname list.  */
7217
7218 static void
7219 add_to_method_list (struct type *type, int fnfield_index, int index,
7220                     const char *name, struct die_info *die,
7221                     struct dwarf2_cu *cu)
7222 {
7223   struct delayed_method_info mi;
7224   mi.type = type;
7225   mi.fnfield_index = fnfield_index;
7226   mi.index = index;
7227   mi.name = name;
7228   mi.die = die;
7229   VEC_safe_push (delayed_method_info, cu->method_list, &mi);
7230 }
7231
7232 /* A cleanup for freeing the delayed method list.  */
7233
7234 static void
7235 free_delayed_list (void *ptr)
7236 {
7237   struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
7238   if (cu->method_list != NULL)
7239     {
7240       VEC_free (delayed_method_info, cu->method_list);
7241       cu->method_list = NULL;
7242     }
7243 }
7244
7245 /* Compute the physnames of any methods on the CU's method list.
7246
7247    The computation of method physnames is delayed in order to avoid the
7248    (bad) condition that one of the method's formal parameters is of an as yet
7249    incomplete type.  */
7250
7251 static void
7252 compute_delayed_physnames (struct dwarf2_cu *cu)
7253 {
7254   int i;
7255   struct delayed_method_info *mi;
7256   for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
7257     {
7258       const char *physname;
7259       struct fn_fieldlist *fn_flp
7260         = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
7261       physname = dwarf2_physname (mi->name, mi->die, cu);
7262       fn_flp->fn_fields[mi->index].physname = physname ? physname : "";
7263     }
7264 }
7265
7266 /* Go objects should be embedded in a DW_TAG_module DIE,
7267    and it's not clear if/how imported objects will appear.
7268    To keep Go support simple until that's worked out,
7269    go back through what we've read and create something usable.
7270    We could do this while processing each DIE, and feels kinda cleaner,
7271    but that way is more invasive.
7272    This is to, for example, allow the user to type "p var" or "b main"
7273    without having to specify the package name, and allow lookups
7274    of module.object to work in contexts that use the expression
7275    parser.  */
7276
7277 static void
7278 fixup_go_packaging (struct dwarf2_cu *cu)
7279 {
7280   char *package_name = NULL;
7281   struct pending *list;
7282   int i;
7283
7284   for (list = global_symbols; list != NULL; list = list->next)
7285     {
7286       for (i = 0; i < list->nsyms; ++i)
7287         {
7288           struct symbol *sym = list->symbol[i];
7289
7290           if (SYMBOL_LANGUAGE (sym) == language_go
7291               && SYMBOL_CLASS (sym) == LOC_BLOCK)
7292             {
7293               char *this_package_name = go_symbol_package_name (sym);
7294
7295               if (this_package_name == NULL)
7296                 continue;
7297               if (package_name == NULL)
7298                 package_name = this_package_name;
7299               else
7300                 {
7301                   if (strcmp (package_name, this_package_name) != 0)
7302                     complaint (&symfile_complaints,
7303                                _("Symtab %s has objects from two different Go packages: %s and %s"),
7304                                (SYMBOL_SYMTAB (sym)
7305                           ? symtab_to_filename_for_display (SYMBOL_SYMTAB (sym))
7306                                 : cu->objfile->name),
7307                                this_package_name, package_name);
7308                   xfree (this_package_name);
7309                 }
7310             }
7311         }
7312     }
7313
7314   if (package_name != NULL)
7315     {
7316       struct objfile *objfile = cu->objfile;
7317       const char *saved_package_name = obstack_copy0 (&objfile->objfile_obstack,
7318                                                       package_name,
7319                                                       strlen (package_name));
7320       struct type *type = init_type (TYPE_CODE_MODULE, 0, 0,
7321                                      saved_package_name, objfile);
7322       struct symbol *sym;
7323
7324       TYPE_TAG_NAME (type) = TYPE_NAME (type);
7325
7326       sym = allocate_symbol (objfile);
7327       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
7328       SYMBOL_SET_NAMES (sym, saved_package_name,
7329                         strlen (saved_package_name), 0, objfile);
7330       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
7331          e.g., "main" finds the "main" module and not C's main().  */
7332       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
7333       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
7334       SYMBOL_TYPE (sym) = type;
7335
7336       add_symbol_to_list (sym, &global_symbols);
7337
7338       xfree (package_name);
7339     }
7340 }
7341
7342 /* Return the symtab for PER_CU.  This works properly regardless of
7343    whether we're using the index or psymtabs.  */
7344
7345 static struct symtab *
7346 get_symtab (struct dwarf2_per_cu_data *per_cu)
7347 {
7348   return (dwarf2_per_objfile->using_index
7349           ? per_cu->v.quick->symtab
7350           : per_cu->v.psymtab->symtab);
7351 }
7352
7353 /* A helper function for computing the list of all symbol tables
7354    included by PER_CU.  */
7355
7356 static void
7357 recursively_compute_inclusions (VEC (symtab_ptr) **result,
7358                                 htab_t all_children, htab_t all_type_symtabs,
7359                                 struct dwarf2_per_cu_data *per_cu)
7360 {
7361   void **slot;
7362   int ix;
7363   struct symtab *symtab;
7364   struct dwarf2_per_cu_data *iter;
7365
7366   slot = htab_find_slot (all_children, per_cu, INSERT);
7367   if (*slot != NULL)
7368     {
7369       /* This inclusion and its children have been processed.  */
7370       return;
7371     }
7372
7373   *slot = per_cu;
7374   /* Only add a CU if it has a symbol table.  */
7375   symtab = get_symtab (per_cu);
7376   if (symtab != NULL)
7377     {
7378       /* If this is a type unit only add its symbol table if we haven't
7379          seen it yet (type unit per_cu's can share symtabs).  */
7380       if (per_cu->is_debug_types)
7381         {
7382           slot = htab_find_slot (all_type_symtabs, symtab, INSERT);
7383           if (*slot == NULL)
7384             {
7385               *slot = symtab;
7386               VEC_safe_push (symtab_ptr, *result, symtab);
7387             }
7388         }
7389       else
7390         VEC_safe_push (symtab_ptr, *result, symtab);
7391     }
7392
7393   for (ix = 0;
7394        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
7395        ++ix)
7396     {
7397       recursively_compute_inclusions (result, all_children,
7398                                       all_type_symtabs, iter);
7399     }
7400 }
7401
7402 /* Compute the symtab 'includes' fields for the symtab related to
7403    PER_CU.  */
7404
7405 static void
7406 compute_symtab_includes (struct dwarf2_per_cu_data *per_cu)
7407 {
7408   gdb_assert (! per_cu->is_debug_types);
7409
7410   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
7411     {
7412       int ix, len;
7413       struct dwarf2_per_cu_data *per_cu_iter;
7414       struct symtab *symtab_iter;
7415       VEC (symtab_ptr) *result_symtabs = NULL;
7416       htab_t all_children, all_type_symtabs;
7417       struct symtab *symtab = get_symtab (per_cu);
7418
7419       /* If we don't have a symtab, we can just skip this case.  */
7420       if (symtab == NULL)
7421         return;
7422
7423       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7424                                         NULL, xcalloc, xfree);
7425       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7426                                             NULL, xcalloc, xfree);
7427
7428       for (ix = 0;
7429            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
7430                         ix, per_cu_iter);
7431            ++ix)
7432         {
7433           recursively_compute_inclusions (&result_symtabs, all_children,
7434                                           all_type_symtabs, per_cu_iter);
7435         }
7436
7437       /* Now we have a transitive closure of all the included symtabs.  */
7438       len = VEC_length (symtab_ptr, result_symtabs);
7439       symtab->includes
7440         = obstack_alloc (&dwarf2_per_objfile->objfile->objfile_obstack,
7441                          (len + 1) * sizeof (struct symtab *));
7442       for (ix = 0;
7443            VEC_iterate (symtab_ptr, result_symtabs, ix, symtab_iter);
7444            ++ix)
7445         symtab->includes[ix] = symtab_iter;
7446       symtab->includes[len] = NULL;
7447
7448       VEC_free (symtab_ptr, result_symtabs);
7449       htab_delete (all_children);
7450       htab_delete (all_type_symtabs);
7451     }
7452 }
7453
7454 /* Compute the 'includes' field for the symtabs of all the CUs we just
7455    read.  */
7456
7457 static void
7458 process_cu_includes (void)
7459 {
7460   int ix;
7461   struct dwarf2_per_cu_data *iter;
7462
7463   for (ix = 0;
7464        VEC_iterate (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus,
7465                     ix, iter);
7466        ++ix)
7467     {
7468       if (! iter->is_debug_types)
7469         compute_symtab_includes (iter);
7470     }
7471
7472   VEC_free (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus);
7473 }
7474
7475 /* Generate full symbol information for PER_CU, whose DIEs have
7476    already been loaded into memory.  */
7477
7478 static void
7479 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
7480                         enum language pretend_language)
7481 {
7482   struct dwarf2_cu *cu = per_cu->cu;
7483   struct objfile *objfile = per_cu->objfile;
7484   CORE_ADDR lowpc, highpc;
7485   struct symtab *symtab;
7486   struct cleanup *back_to, *delayed_list_cleanup;
7487   CORE_ADDR baseaddr;
7488   struct block *static_block;
7489
7490   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
7491
7492   buildsym_init ();
7493   back_to = make_cleanup (really_free_pendings, NULL);
7494   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
7495
7496   cu->list_in_scope = &file_symbols;
7497
7498   cu->language = pretend_language;
7499   cu->language_defn = language_def (cu->language);
7500
7501   /* Do line number decoding in read_file_scope () */
7502   process_die (cu->dies, cu);
7503
7504   /* For now fudge the Go package.  */
7505   if (cu->language == language_go)
7506     fixup_go_packaging (cu);
7507
7508   /* Now that we have processed all the DIEs in the CU, all the types 
7509      should be complete, and it should now be safe to compute all of the
7510      physnames.  */
7511   compute_delayed_physnames (cu);
7512   do_cleanups (delayed_list_cleanup);
7513
7514   /* Some compilers don't define a DW_AT_high_pc attribute for the
7515      compilation unit.  If the DW_AT_high_pc is missing, synthesize
7516      it, by scanning the DIE's below the compilation unit.  */
7517   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
7518
7519   static_block
7520     = end_symtab_get_static_block (highpc + baseaddr, objfile, 0, 1);
7521
7522   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
7523      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
7524      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
7525      addrmap to help ensure it has an accurate map of pc values belonging to
7526      this comp unit.  */
7527   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
7528
7529   symtab = end_symtab_from_static_block (static_block, objfile,
7530                                          SECT_OFF_TEXT (objfile), 0);
7531
7532   if (symtab != NULL)
7533     {
7534       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
7535
7536       /* Set symtab language to language from DW_AT_language.  If the
7537          compilation is from a C file generated by language preprocessors, do
7538          not set the language if it was already deduced by start_subfile.  */
7539       if (!(cu->language == language_c && symtab->language != language_c))
7540         symtab->language = cu->language;
7541
7542       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
7543          produce DW_AT_location with location lists but it can be possibly
7544          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
7545          there were bugs in prologue debug info, fixed later in GCC-4.5
7546          by "unwind info for epilogues" patch (which is not directly related).
7547
7548          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
7549          needed, it would be wrong due to missing DW_AT_producer there.
7550
7551          Still one can confuse GDB by using non-standard GCC compilation
7552          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
7553          */ 
7554       if (cu->has_loclist && gcc_4_minor >= 5)
7555         symtab->locations_valid = 1;
7556
7557       if (gcc_4_minor >= 5)
7558         symtab->epilogue_unwind_valid = 1;
7559
7560       symtab->call_site_htab = cu->call_site_htab;
7561     }
7562
7563   if (dwarf2_per_objfile->using_index)
7564     per_cu->v.quick->symtab = symtab;
7565   else
7566     {
7567       struct partial_symtab *pst = per_cu->v.psymtab;
7568       pst->symtab = symtab;
7569       pst->readin = 1;
7570     }
7571
7572   /* Push it for inclusion processing later.  */
7573   VEC_safe_push (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus, per_cu);
7574
7575   do_cleanups (back_to);
7576 }
7577
7578 /* Generate full symbol information for type unit PER_CU, whose DIEs have
7579    already been loaded into memory.  */
7580
7581 static void
7582 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
7583                         enum language pretend_language)
7584 {
7585   struct dwarf2_cu *cu = per_cu->cu;
7586   struct objfile *objfile = per_cu->objfile;
7587   struct symtab *symtab;
7588   struct cleanup *back_to, *delayed_list_cleanup;
7589   struct signatured_type *sig_type;
7590
7591   gdb_assert (per_cu->is_debug_types);
7592   sig_type = (struct signatured_type *) per_cu;
7593
7594   buildsym_init ();
7595   back_to = make_cleanup (really_free_pendings, NULL);
7596   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
7597
7598   cu->list_in_scope = &file_symbols;
7599
7600   cu->language = pretend_language;
7601   cu->language_defn = language_def (cu->language);
7602
7603   /* The symbol tables are set up in read_type_unit_scope.  */
7604   process_die (cu->dies, cu);
7605
7606   /* For now fudge the Go package.  */
7607   if (cu->language == language_go)
7608     fixup_go_packaging (cu);
7609
7610   /* Now that we have processed all the DIEs in the CU, all the types 
7611      should be complete, and it should now be safe to compute all of the
7612      physnames.  */
7613   compute_delayed_physnames (cu);
7614   do_cleanups (delayed_list_cleanup);
7615
7616   /* TUs share symbol tables.
7617      If this is the first TU to use this symtab, complete the construction
7618      of it with end_expandable_symtab.  Otherwise, complete the addition of
7619      this TU's symbols to the existing symtab.  */
7620   if (sig_type->type_unit_group->primary_symtab == NULL)
7621     {
7622       symtab = end_expandable_symtab (0, objfile, SECT_OFF_TEXT (objfile));
7623       sig_type->type_unit_group->primary_symtab = symtab;
7624
7625       if (symtab != NULL)
7626         {
7627           /* Set symtab language to language from DW_AT_language.  If the
7628              compilation is from a C file generated by language preprocessors,
7629              do not set the language if it was already deduced by
7630              start_subfile.  */
7631           if (!(cu->language == language_c && symtab->language != language_c))
7632             symtab->language = cu->language;
7633         }
7634     }
7635   else
7636     {
7637       augment_type_symtab (objfile,
7638                            sig_type->type_unit_group->primary_symtab);
7639       symtab = sig_type->type_unit_group->primary_symtab;
7640     }
7641
7642   if (dwarf2_per_objfile->using_index)
7643     per_cu->v.quick->symtab = symtab;
7644   else
7645     {
7646       struct partial_symtab *pst = per_cu->v.psymtab;
7647       pst->symtab = symtab;
7648       pst->readin = 1;
7649     }
7650
7651   do_cleanups (back_to);
7652 }
7653
7654 /* Process an imported unit DIE.  */
7655
7656 static void
7657 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
7658 {
7659   struct attribute *attr;
7660
7661   /* For now we don't handle imported units in type units.  */
7662   if (cu->per_cu->is_debug_types)
7663     {
7664       error (_("Dwarf Error: DW_TAG_imported_unit is not"
7665                " supported in type units [in module %s]"),
7666              cu->objfile->name);
7667     }
7668
7669   attr = dwarf2_attr (die, DW_AT_import, cu);
7670   if (attr != NULL)
7671     {
7672       struct dwarf2_per_cu_data *per_cu;
7673       struct symtab *imported_symtab;
7674       sect_offset offset;
7675       int is_dwz;
7676
7677       offset = dwarf2_get_ref_die_offset (attr);
7678       is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
7679       per_cu = dwarf2_find_containing_comp_unit (offset, is_dwz, cu->objfile);
7680
7681       /* Queue the unit, if needed.  */
7682       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
7683         load_full_comp_unit (per_cu, cu->language);
7684
7685       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
7686                      per_cu);
7687     }
7688 }
7689
7690 /* Process a die and its children.  */
7691
7692 static void
7693 process_die (struct die_info *die, struct dwarf2_cu *cu)
7694 {
7695   switch (die->tag)
7696     {
7697     case DW_TAG_padding:
7698       break;
7699     case DW_TAG_compile_unit:
7700     case DW_TAG_partial_unit:
7701       read_file_scope (die, cu);
7702       break;
7703     case DW_TAG_type_unit:
7704       read_type_unit_scope (die, cu);
7705       break;
7706     case DW_TAG_subprogram:
7707     case DW_TAG_inlined_subroutine:
7708       read_func_scope (die, cu);
7709       break;
7710     case DW_TAG_lexical_block:
7711     case DW_TAG_try_block:
7712     case DW_TAG_catch_block:
7713       read_lexical_block_scope (die, cu);
7714       break;
7715     case DW_TAG_GNU_call_site:
7716       read_call_site_scope (die, cu);
7717       break;
7718     case DW_TAG_class_type:
7719     case DW_TAG_interface_type:
7720     case DW_TAG_structure_type:
7721     case DW_TAG_union_type:
7722       process_structure_scope (die, cu);
7723       break;
7724     case DW_TAG_enumeration_type:
7725       process_enumeration_scope (die, cu);
7726       break;
7727
7728     /* These dies have a type, but processing them does not create
7729        a symbol or recurse to process the children.  Therefore we can
7730        read them on-demand through read_type_die.  */
7731     case DW_TAG_subroutine_type:
7732     case DW_TAG_set_type:
7733     case DW_TAG_array_type:
7734     case DW_TAG_pointer_type:
7735     case DW_TAG_ptr_to_member_type:
7736     case DW_TAG_reference_type:
7737     case DW_TAG_string_type:
7738       break;
7739
7740     case DW_TAG_base_type:
7741     case DW_TAG_subrange_type:
7742     case DW_TAG_typedef:
7743       /* Add a typedef symbol for the type definition, if it has a
7744          DW_AT_name.  */
7745       new_symbol (die, read_type_die (die, cu), cu);
7746       break;
7747     case DW_TAG_common_block:
7748       read_common_block (die, cu);
7749       break;
7750     case DW_TAG_common_inclusion:
7751       break;
7752     case DW_TAG_namespace:
7753       cu->processing_has_namespace_info = 1;
7754       read_namespace (die, cu);
7755       break;
7756     case DW_TAG_module:
7757       cu->processing_has_namespace_info = 1;
7758       read_module (die, cu);
7759       break;
7760     case DW_TAG_imported_declaration:
7761     case DW_TAG_imported_module:
7762       cu->processing_has_namespace_info = 1;
7763       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
7764                                  || cu->language != language_fortran))
7765         complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
7766                    dwarf_tag_name (die->tag));
7767       read_import_statement (die, cu);
7768       break;
7769
7770     case DW_TAG_imported_unit:
7771       process_imported_unit_die (die, cu);
7772       break;
7773
7774     default:
7775       new_symbol (die, NULL, cu);
7776       break;
7777     }
7778 }
7779 \f
7780 /* DWARF name computation.  */
7781
7782 /* A helper function for dwarf2_compute_name which determines whether DIE
7783    needs to have the name of the scope prepended to the name listed in the
7784    die.  */
7785
7786 static int
7787 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
7788 {
7789   struct attribute *attr;
7790
7791   switch (die->tag)
7792     {
7793     case DW_TAG_namespace:
7794     case DW_TAG_typedef:
7795     case DW_TAG_class_type:
7796     case DW_TAG_interface_type:
7797     case DW_TAG_structure_type:
7798     case DW_TAG_union_type:
7799     case DW_TAG_enumeration_type:
7800     case DW_TAG_enumerator:
7801     case DW_TAG_subprogram:
7802     case DW_TAG_member:
7803       return 1;
7804
7805     case DW_TAG_variable:
7806     case DW_TAG_constant:
7807       /* We only need to prefix "globally" visible variables.  These include
7808          any variable marked with DW_AT_external or any variable that
7809          lives in a namespace.  [Variables in anonymous namespaces
7810          require prefixing, but they are not DW_AT_external.]  */
7811
7812       if (dwarf2_attr (die, DW_AT_specification, cu))
7813         {
7814           struct dwarf2_cu *spec_cu = cu;
7815
7816           return die_needs_namespace (die_specification (die, &spec_cu),
7817                                       spec_cu);
7818         }
7819
7820       attr = dwarf2_attr (die, DW_AT_external, cu);
7821       if (attr == NULL && die->parent->tag != DW_TAG_namespace
7822           && die->parent->tag != DW_TAG_module)
7823         return 0;
7824       /* A variable in a lexical block of some kind does not need a
7825          namespace, even though in C++ such variables may be external
7826          and have a mangled name.  */
7827       if (die->parent->tag ==  DW_TAG_lexical_block
7828           || die->parent->tag ==  DW_TAG_try_block
7829           || die->parent->tag ==  DW_TAG_catch_block
7830           || die->parent->tag == DW_TAG_subprogram)
7831         return 0;
7832       return 1;
7833
7834     default:
7835       return 0;
7836     }
7837 }
7838
7839 /* Retrieve the last character from a mem_file.  */
7840
7841 static void
7842 do_ui_file_peek_last (void *object, const char *buffer, long length)
7843 {
7844   char *last_char_p = (char *) object;
7845
7846   if (length > 0)
7847     *last_char_p = buffer[length - 1];
7848 }
7849
7850 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
7851    compute the physname for the object, which include a method's:
7852    - formal parameters (C++/Java),
7853    - receiver type (Go),
7854    - return type (Java).
7855
7856    The term "physname" is a bit confusing.
7857    For C++, for example, it is the demangled name.
7858    For Go, for example, it's the mangled name.
7859
7860    For Ada, return the DIE's linkage name rather than the fully qualified
7861    name.  PHYSNAME is ignored..
7862
7863    The result is allocated on the objfile_obstack and canonicalized.  */
7864
7865 static const char *
7866 dwarf2_compute_name (const char *name,
7867                      struct die_info *die, struct dwarf2_cu *cu,
7868                      int physname)
7869 {
7870   struct objfile *objfile = cu->objfile;
7871
7872   if (name == NULL)
7873     name = dwarf2_name (die, cu);
7874
7875   /* For Fortran GDB prefers DW_AT_*linkage_name if present but otherwise
7876      compute it by typename_concat inside GDB.  */
7877   if (cu->language == language_ada
7878       || (cu->language == language_fortran && physname))
7879     {
7880       /* For Ada unit, we prefer the linkage name over the name, as
7881          the former contains the exported name, which the user expects
7882          to be able to reference.  Ideally, we want the user to be able
7883          to reference this entity using either natural or linkage name,
7884          but we haven't started looking at this enhancement yet.  */
7885       struct attribute *attr;
7886
7887       attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
7888       if (attr == NULL)
7889         attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
7890       if (attr && DW_STRING (attr))
7891         return DW_STRING (attr);
7892     }
7893
7894   /* These are the only languages we know how to qualify names in.  */
7895   if (name != NULL
7896       && (cu->language == language_cplus || cu->language == language_java
7897           || cu->language == language_fortran))
7898     {
7899       if (die_needs_namespace (die, cu))
7900         {
7901           long length;
7902           const char *prefix;
7903           struct ui_file *buf;
7904
7905           prefix = determine_prefix (die, cu);
7906           buf = mem_fileopen ();
7907           if (*prefix != '\0')
7908             {
7909               char *prefixed_name = typename_concat (NULL, prefix, name,
7910                                                      physname, cu);
7911
7912               fputs_unfiltered (prefixed_name, buf);
7913               xfree (prefixed_name);
7914             }
7915           else
7916             fputs_unfiltered (name, buf);
7917
7918           /* Template parameters may be specified in the DIE's DW_AT_name, or
7919              as children with DW_TAG_template_type_param or
7920              DW_TAG_value_type_param.  If the latter, add them to the name
7921              here.  If the name already has template parameters, then
7922              skip this step; some versions of GCC emit both, and
7923              it is more efficient to use the pre-computed name.
7924
7925              Something to keep in mind about this process: it is very
7926              unlikely, or in some cases downright impossible, to produce
7927              something that will match the mangled name of a function.
7928              If the definition of the function has the same debug info,
7929              we should be able to match up with it anyway.  But fallbacks
7930              using the minimal symbol, for instance to find a method
7931              implemented in a stripped copy of libstdc++, will not work.
7932              If we do not have debug info for the definition, we will have to
7933              match them up some other way.
7934
7935              When we do name matching there is a related problem with function
7936              templates; two instantiated function templates are allowed to
7937              differ only by their return types, which we do not add here.  */
7938
7939           if (cu->language == language_cplus && strchr (name, '<') == NULL)
7940             {
7941               struct attribute *attr;
7942               struct die_info *child;
7943               int first = 1;
7944
7945               die->building_fullname = 1;
7946
7947               for (child = die->child; child != NULL; child = child->sibling)
7948                 {
7949                   struct type *type;
7950                   LONGEST value;
7951                   const gdb_byte *bytes;
7952                   struct dwarf2_locexpr_baton *baton;
7953                   struct value *v;
7954
7955                   if (child->tag != DW_TAG_template_type_param
7956                       && child->tag != DW_TAG_template_value_param)
7957                     continue;
7958
7959                   if (first)
7960                     {
7961                       fputs_unfiltered ("<", buf);
7962                       first = 0;
7963                     }
7964                   else
7965                     fputs_unfiltered (", ", buf);
7966
7967                   attr = dwarf2_attr (child, DW_AT_type, cu);
7968                   if (attr == NULL)
7969                     {
7970                       complaint (&symfile_complaints,
7971                                  _("template parameter missing DW_AT_type"));
7972                       fputs_unfiltered ("UNKNOWN_TYPE", buf);
7973                       continue;
7974                     }
7975                   type = die_type (child, cu);
7976
7977                   if (child->tag == DW_TAG_template_type_param)
7978                     {
7979                       c_print_type (type, "", buf, -1, 0, &type_print_raw_options);
7980                       continue;
7981                     }
7982
7983                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
7984                   if (attr == NULL)
7985                     {
7986                       complaint (&symfile_complaints,
7987                                  _("template parameter missing "
7988                                    "DW_AT_const_value"));
7989                       fputs_unfiltered ("UNKNOWN_VALUE", buf);
7990                       continue;
7991                     }
7992
7993                   dwarf2_const_value_attr (attr, type, name,
7994                                            &cu->comp_unit_obstack, cu,
7995                                            &value, &bytes, &baton);
7996
7997                   if (TYPE_NOSIGN (type))
7998                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
7999                        changed, this can use value_print instead.  */
8000                     c_printchar (value, type, buf);
8001                   else
8002                     {
8003                       struct value_print_options opts;
8004
8005                       if (baton != NULL)
8006                         v = dwarf2_evaluate_loc_desc (type, NULL,
8007                                                       baton->data,
8008                                                       baton->size,
8009                                                       baton->per_cu);
8010                       else if (bytes != NULL)
8011                         {
8012                           v = allocate_value (type);
8013                           memcpy (value_contents_writeable (v), bytes,
8014                                   TYPE_LENGTH (type));
8015                         }
8016                       else
8017                         v = value_from_longest (type, value);
8018
8019                       /* Specify decimal so that we do not depend on
8020                          the radix.  */
8021                       get_formatted_print_options (&opts, 'd');
8022                       opts.raw = 1;
8023                       value_print (v, buf, &opts);
8024                       release_value (v);
8025                       value_free (v);
8026                     }
8027                 }
8028
8029               die->building_fullname = 0;
8030
8031               if (!first)
8032                 {
8033                   /* Close the argument list, with a space if necessary
8034                      (nested templates).  */
8035                   char last_char = '\0';
8036                   ui_file_put (buf, do_ui_file_peek_last, &last_char);
8037                   if (last_char == '>')
8038                     fputs_unfiltered (" >", buf);
8039                   else
8040                     fputs_unfiltered (">", buf);
8041                 }
8042             }
8043
8044           /* For Java and C++ methods, append formal parameter type
8045              information, if PHYSNAME.  */
8046
8047           if (physname && die->tag == DW_TAG_subprogram
8048               && (cu->language == language_cplus
8049                   || cu->language == language_java))
8050             {
8051               struct type *type = read_type_die (die, cu);
8052
8053               c_type_print_args (type, buf, 1, cu->language,
8054                                  &type_print_raw_options);
8055
8056               if (cu->language == language_java)
8057                 {
8058                   /* For java, we must append the return type to method
8059                      names.  */
8060                   if (die->tag == DW_TAG_subprogram)
8061                     java_print_type (TYPE_TARGET_TYPE (type), "", buf,
8062                                      0, 0, &type_print_raw_options);
8063                 }
8064               else if (cu->language == language_cplus)
8065                 {
8066                   /* Assume that an artificial first parameter is
8067                      "this", but do not crash if it is not.  RealView
8068                      marks unnamed (and thus unused) parameters as
8069                      artificial; there is no way to differentiate
8070                      the two cases.  */
8071                   if (TYPE_NFIELDS (type) > 0
8072                       && TYPE_FIELD_ARTIFICIAL (type, 0)
8073                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
8074                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
8075                                                                         0))))
8076                     fputs_unfiltered (" const", buf);
8077                 }
8078             }
8079
8080           name = ui_file_obsavestring (buf, &objfile->objfile_obstack,
8081                                        &length);
8082           ui_file_delete (buf);
8083
8084           if (cu->language == language_cplus)
8085             {
8086               const char *cname
8087                 = dwarf2_canonicalize_name (name, cu,
8088                                             &objfile->objfile_obstack);
8089
8090               if (cname != NULL)
8091                 name = cname;
8092             }
8093         }
8094     }
8095
8096   return name;
8097 }
8098
8099 /* Return the fully qualified name of DIE, based on its DW_AT_name.
8100    If scope qualifiers are appropriate they will be added.  The result
8101    will be allocated on the objfile_obstack, or NULL if the DIE does
8102    not have a name.  NAME may either be from a previous call to
8103    dwarf2_name or NULL.
8104
8105    The output string will be canonicalized (if C++/Java).  */
8106
8107 static const char *
8108 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
8109 {
8110   return dwarf2_compute_name (name, die, cu, 0);
8111 }
8112
8113 /* Construct a physname for the given DIE in CU.  NAME may either be
8114    from a previous call to dwarf2_name or NULL.  The result will be
8115    allocated on the objfile_objstack or NULL if the DIE does not have a
8116    name.
8117
8118    The output string will be canonicalized (if C++/Java).  */
8119
8120 static const char *
8121 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
8122 {
8123   struct objfile *objfile = cu->objfile;
8124   struct attribute *attr;
8125   const char *retval, *mangled = NULL, *canon = NULL;
8126   struct cleanup *back_to;
8127   int need_copy = 1;
8128
8129   /* In this case dwarf2_compute_name is just a shortcut not building anything
8130      on its own.  */
8131   if (!die_needs_namespace (die, cu))
8132     return dwarf2_compute_name (name, die, cu, 1);
8133
8134   back_to = make_cleanup (null_cleanup, NULL);
8135
8136   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8137   if (!attr)
8138     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8139
8140   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
8141      has computed.  */
8142   if (attr && DW_STRING (attr))
8143     {
8144       char *demangled;
8145
8146       mangled = DW_STRING (attr);
8147
8148       /* Use DMGL_RET_DROP for C++ template functions to suppress their return
8149          type.  It is easier for GDB users to search for such functions as
8150          `name(params)' than `long name(params)'.  In such case the minimal
8151          symbol names do not match the full symbol names but for template
8152          functions there is never a need to look up their definition from their
8153          declaration so the only disadvantage remains the minimal symbol
8154          variant `long name(params)' does not have the proper inferior type.
8155          */
8156
8157       if (cu->language == language_go)
8158         {
8159           /* This is a lie, but we already lie to the caller new_symbol_full.
8160              new_symbol_full assumes we return the mangled name.
8161              This just undoes that lie until things are cleaned up.  */
8162           demangled = NULL;
8163         }
8164       else
8165         {
8166           demangled = gdb_demangle (mangled,
8167                                     (DMGL_PARAMS | DMGL_ANSI
8168                                      | (cu->language == language_java
8169                                         ? DMGL_JAVA | DMGL_RET_POSTFIX
8170                                         : DMGL_RET_DROP)));
8171         }
8172       if (demangled)
8173         {
8174           make_cleanup (xfree, demangled);
8175           canon = demangled;
8176         }
8177       else
8178         {
8179           canon = mangled;
8180           need_copy = 0;
8181         }
8182     }
8183
8184   if (canon == NULL || check_physname)
8185     {
8186       const char *physname = dwarf2_compute_name (name, die, cu, 1);
8187
8188       if (canon != NULL && strcmp (physname, canon) != 0)
8189         {
8190           /* It may not mean a bug in GDB.  The compiler could also
8191              compute DW_AT_linkage_name incorrectly.  But in such case
8192              GDB would need to be bug-to-bug compatible.  */
8193
8194           complaint (&symfile_complaints,
8195                      _("Computed physname <%s> does not match demangled <%s> "
8196                        "(from linkage <%s>) - DIE at 0x%x [in module %s]"),
8197                      physname, canon, mangled, die->offset.sect_off, objfile->name);
8198
8199           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
8200              is available here - over computed PHYSNAME.  It is safer
8201              against both buggy GDB and buggy compilers.  */
8202
8203           retval = canon;
8204         }
8205       else
8206         {
8207           retval = physname;
8208           need_copy = 0;
8209         }
8210     }
8211   else
8212     retval = canon;
8213
8214   if (need_copy)
8215     retval = obstack_copy0 (&objfile->objfile_obstack, retval, strlen (retval));
8216
8217   do_cleanups (back_to);
8218   return retval;
8219 }
8220
8221 /* Read the import statement specified by the given die and record it.  */
8222
8223 static void
8224 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
8225 {
8226   struct objfile *objfile = cu->objfile;
8227   struct attribute *import_attr;
8228   struct die_info *imported_die, *child_die;
8229   struct dwarf2_cu *imported_cu;
8230   const char *imported_name;
8231   const char *imported_name_prefix;
8232   const char *canonical_name;
8233   const char *import_alias;
8234   const char *imported_declaration = NULL;
8235   const char *import_prefix;
8236   VEC (const_char_ptr) *excludes = NULL;
8237   struct cleanup *cleanups;
8238
8239   import_attr = dwarf2_attr (die, DW_AT_import, cu);
8240   if (import_attr == NULL)
8241     {
8242       complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8243                  dwarf_tag_name (die->tag));
8244       return;
8245     }
8246
8247   imported_cu = cu;
8248   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
8249   imported_name = dwarf2_name (imported_die, imported_cu);
8250   if (imported_name == NULL)
8251     {
8252       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
8253
8254         The import in the following code:
8255         namespace A
8256           {
8257             typedef int B;
8258           }
8259
8260         int main ()
8261           {
8262             using A::B;
8263             B b;
8264             return b;
8265           }
8266
8267         ...
8268          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
8269             <52>   DW_AT_decl_file   : 1
8270             <53>   DW_AT_decl_line   : 6
8271             <54>   DW_AT_import      : <0x75>
8272          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
8273             <59>   DW_AT_name        : B
8274             <5b>   DW_AT_decl_file   : 1
8275             <5c>   DW_AT_decl_line   : 2
8276             <5d>   DW_AT_type        : <0x6e>
8277         ...
8278          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
8279             <76>   DW_AT_byte_size   : 4
8280             <77>   DW_AT_encoding    : 5        (signed)
8281
8282         imports the wrong die ( 0x75 instead of 0x58 ).
8283         This case will be ignored until the gcc bug is fixed.  */
8284       return;
8285     }
8286
8287   /* Figure out the local name after import.  */
8288   import_alias = dwarf2_name (die, cu);
8289
8290   /* Figure out where the statement is being imported to.  */
8291   import_prefix = determine_prefix (die, cu);
8292
8293   /* Figure out what the scope of the imported die is and prepend it
8294      to the name of the imported die.  */
8295   imported_name_prefix = determine_prefix (imported_die, imported_cu);
8296
8297   if (imported_die->tag != DW_TAG_namespace
8298       && imported_die->tag != DW_TAG_module)
8299     {
8300       imported_declaration = imported_name;
8301       canonical_name = imported_name_prefix;
8302     }
8303   else if (strlen (imported_name_prefix) > 0)
8304     canonical_name = obconcat (&objfile->objfile_obstack,
8305                                imported_name_prefix, "::", imported_name,
8306                                (char *) NULL);
8307   else
8308     canonical_name = imported_name;
8309
8310   cleanups = make_cleanup (VEC_cleanup (const_char_ptr), &excludes);
8311
8312   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
8313     for (child_die = die->child; child_die && child_die->tag;
8314          child_die = sibling_die (child_die))
8315       {
8316         /* DWARF-4: A Fortran use statement with a “rename list” may be
8317            represented by an imported module entry with an import attribute
8318            referring to the module and owned entries corresponding to those
8319            entities that are renamed as part of being imported.  */
8320
8321         if (child_die->tag != DW_TAG_imported_declaration)
8322           {
8323             complaint (&symfile_complaints,
8324                        _("child DW_TAG_imported_declaration expected "
8325                          "- DIE at 0x%x [in module %s]"),
8326                        child_die->offset.sect_off, objfile->name);
8327             continue;
8328           }
8329
8330         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
8331         if (import_attr == NULL)
8332           {
8333             complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8334                        dwarf_tag_name (child_die->tag));
8335             continue;
8336           }
8337
8338         imported_cu = cu;
8339         imported_die = follow_die_ref_or_sig (child_die, import_attr,
8340                                               &imported_cu);
8341         imported_name = dwarf2_name (imported_die, imported_cu);
8342         if (imported_name == NULL)
8343           {
8344             complaint (&symfile_complaints,
8345                        _("child DW_TAG_imported_declaration has unknown "
8346                          "imported name - DIE at 0x%x [in module %s]"),
8347                        child_die->offset.sect_off, objfile->name);
8348             continue;
8349           }
8350
8351         VEC_safe_push (const_char_ptr, excludes, imported_name);
8352
8353         process_die (child_die, cu);
8354       }
8355
8356   cp_add_using_directive (import_prefix,
8357                           canonical_name,
8358                           import_alias,
8359                           imported_declaration,
8360                           excludes,
8361                           0,
8362                           &objfile->objfile_obstack);
8363
8364   do_cleanups (cleanups);
8365 }
8366
8367 /* Cleanup function for handle_DW_AT_stmt_list.  */
8368
8369 static void
8370 free_cu_line_header (void *arg)
8371 {
8372   struct dwarf2_cu *cu = arg;
8373
8374   free_line_header (cu->line_header);
8375   cu->line_header = NULL;
8376 }
8377
8378 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
8379    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
8380    this, it was first present in GCC release 4.3.0.  */
8381
8382 static int
8383 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
8384 {
8385   if (!cu->checked_producer)
8386     check_producer (cu);
8387
8388   return cu->producer_is_gcc_lt_4_3;
8389 }
8390
8391 static void
8392 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu,
8393                          const char **name, const char **comp_dir)
8394 {
8395   struct attribute *attr;
8396
8397   *name = NULL;
8398   *comp_dir = NULL;
8399
8400   /* Find the filename.  Do not use dwarf2_name here, since the filename
8401      is not a source language identifier.  */
8402   attr = dwarf2_attr (die, DW_AT_name, cu);
8403   if (attr)
8404     {
8405       *name = DW_STRING (attr);
8406     }
8407
8408   attr = dwarf2_attr (die, DW_AT_comp_dir, cu);
8409   if (attr)
8410     *comp_dir = DW_STRING (attr);
8411   else if (producer_is_gcc_lt_4_3 (cu) && *name != NULL
8412            && IS_ABSOLUTE_PATH (*name))
8413     {
8414       char *d = ldirname (*name);
8415
8416       *comp_dir = d;
8417       if (d != NULL)
8418         make_cleanup (xfree, d);
8419     }
8420   if (*comp_dir != NULL)
8421     {
8422       /* Irix 6.2 native cc prepends <machine>.: to the compilation
8423          directory, get rid of it.  */
8424       char *cp = strchr (*comp_dir, ':');
8425
8426       if (cp && cp != *comp_dir && cp[-1] == '.' && cp[1] == '/')
8427         *comp_dir = cp + 1;
8428     }
8429
8430   if (*name == NULL)
8431     *name = "<unknown>";
8432 }
8433
8434 /* Handle DW_AT_stmt_list for a compilation unit.
8435    DIE is the DW_TAG_compile_unit die for CU.
8436    COMP_DIR is the compilation directory.
8437    WANT_LINE_INFO is non-zero if the pc/line-number mapping is needed.  */
8438
8439 static void
8440 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
8441                         const char *comp_dir) /* ARI: editCase function */
8442 {
8443   struct attribute *attr;
8444
8445   gdb_assert (! cu->per_cu->is_debug_types);
8446
8447   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
8448   if (attr)
8449     {
8450       unsigned int line_offset = DW_UNSND (attr);
8451       struct line_header *line_header
8452         = dwarf_decode_line_header (line_offset, cu);
8453
8454       if (line_header)
8455         {
8456           cu->line_header = line_header;
8457           make_cleanup (free_cu_line_header, cu);
8458           dwarf_decode_lines (line_header, comp_dir, cu, NULL, 1);
8459         }
8460     }
8461 }
8462
8463 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
8464
8465 static void
8466 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
8467 {
8468   struct objfile *objfile = dwarf2_per_objfile->objfile;
8469   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
8470   CORE_ADDR lowpc = ((CORE_ADDR) -1);
8471   CORE_ADDR highpc = ((CORE_ADDR) 0);
8472   struct attribute *attr;
8473   const char *name = NULL;
8474   const char *comp_dir = NULL;
8475   struct die_info *child_die;
8476   bfd *abfd = objfile->obfd;
8477   CORE_ADDR baseaddr;
8478
8479   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8480
8481   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
8482
8483   /* If we didn't find a lowpc, set it to highpc to avoid complaints
8484      from finish_block.  */
8485   if (lowpc == ((CORE_ADDR) -1))
8486     lowpc = highpc;
8487   lowpc += baseaddr;
8488   highpc += baseaddr;
8489
8490   find_file_and_directory (die, cu, &name, &comp_dir);
8491
8492   prepare_one_comp_unit (cu, die, cu->language);
8493
8494   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
8495      standardised yet.  As a workaround for the language detection we fall
8496      back to the DW_AT_producer string.  */
8497   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
8498     cu->language = language_opencl;
8499
8500   /* Similar hack for Go.  */
8501   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
8502     set_cu_language (DW_LANG_Go, cu);
8503
8504   dwarf2_start_symtab (cu, name, comp_dir, lowpc);
8505
8506   /* Decode line number information if present.  We do this before
8507      processing child DIEs, so that the line header table is available
8508      for DW_AT_decl_file.  */
8509   handle_DW_AT_stmt_list (die, cu, comp_dir);
8510
8511   /* Process all dies in compilation unit.  */
8512   if (die->child != NULL)
8513     {
8514       child_die = die->child;
8515       while (child_die && child_die->tag)
8516         {
8517           process_die (child_die, cu);
8518           child_die = sibling_die (child_die);
8519         }
8520     }
8521
8522   /* Decode macro information, if present.  Dwarf 2 macro information
8523      refers to information in the line number info statement program
8524      header, so we can only read it if we've read the header
8525      successfully.  */
8526   attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
8527   if (attr && cu->line_header)
8528     {
8529       if (dwarf2_attr (die, DW_AT_macro_info, cu))
8530         complaint (&symfile_complaints,
8531                    _("CU refers to both DW_AT_GNU_macros and DW_AT_macro_info"));
8532
8533       dwarf_decode_macros (cu, DW_UNSND (attr), comp_dir, 1);
8534     }
8535   else
8536     {
8537       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
8538       if (attr && cu->line_header)
8539         {
8540           unsigned int macro_offset = DW_UNSND (attr);
8541
8542           dwarf_decode_macros (cu, macro_offset, comp_dir, 0);
8543         }
8544     }
8545
8546   do_cleanups (back_to);
8547 }
8548
8549 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
8550    Create the set of symtabs used by this TU, or if this TU is sharing
8551    symtabs with another TU and the symtabs have already been created
8552    then restore those symtabs in the line header.
8553    We don't need the pc/line-number mapping for type units.  */
8554
8555 static void
8556 setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
8557 {
8558   struct objfile *objfile = dwarf2_per_objfile->objfile;
8559   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8560   struct type_unit_group *tu_group;
8561   int first_time;
8562   struct line_header *lh;
8563   struct attribute *attr;
8564   unsigned int i, line_offset;
8565   struct signatured_type *sig_type;
8566
8567   gdb_assert (per_cu->is_debug_types);
8568   sig_type = (struct signatured_type *) per_cu;
8569
8570   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
8571
8572   /* If we're using .gdb_index (includes -readnow) then
8573      per_cu->type_unit_group may not have been set up yet.  */
8574   if (sig_type->type_unit_group == NULL)
8575     sig_type->type_unit_group = get_type_unit_group (cu, attr);
8576   tu_group = sig_type->type_unit_group;
8577
8578   /* If we've already processed this stmt_list there's no real need to
8579      do it again, we could fake it and just recreate the part we need
8580      (file name,index -> symtab mapping).  If data shows this optimization
8581      is useful we can do it then.  */
8582   first_time = tu_group->primary_symtab == NULL;
8583
8584   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
8585      debug info.  */
8586   lh = NULL;
8587   if (attr != NULL)
8588     {
8589       line_offset = DW_UNSND (attr);
8590       lh = dwarf_decode_line_header (line_offset, cu);
8591     }
8592   if (lh == NULL)
8593     {
8594       if (first_time)
8595         dwarf2_start_symtab (cu, "", NULL, 0);
8596       else
8597         {
8598           gdb_assert (tu_group->symtabs == NULL);
8599           restart_symtab (0);
8600         }
8601       /* Note: The primary symtab will get allocated at the end.  */
8602       return;
8603     }
8604
8605   cu->line_header = lh;
8606   make_cleanup (free_cu_line_header, cu);
8607
8608   if (first_time)
8609     {
8610       dwarf2_start_symtab (cu, "", NULL, 0);
8611
8612       tu_group->num_symtabs = lh->num_file_names;
8613       tu_group->symtabs = XNEWVEC (struct symtab *, lh->num_file_names);
8614
8615       for (i = 0; i < lh->num_file_names; ++i)
8616         {
8617           const char *dir = NULL;
8618           struct file_entry *fe = &lh->file_names[i];
8619
8620           if (fe->dir_index)
8621             dir = lh->include_dirs[fe->dir_index - 1];
8622           dwarf2_start_subfile (fe->name, dir, NULL);
8623
8624           /* Note: We don't have to watch for the main subfile here, type units
8625              don't have DW_AT_name.  */
8626
8627           if (current_subfile->symtab == NULL)
8628             {
8629               /* NOTE: start_subfile will recognize when it's been passed
8630                  a file it has already seen.  So we can't assume there's a
8631                  simple mapping from lh->file_names to subfiles,
8632                  lh->file_names may contain dups.  */
8633               current_subfile->symtab = allocate_symtab (current_subfile->name,
8634                                                          objfile);
8635             }
8636
8637           fe->symtab = current_subfile->symtab;
8638           tu_group->symtabs[i] = fe->symtab;
8639         }
8640     }
8641   else
8642     {
8643       restart_symtab (0);
8644
8645       for (i = 0; i < lh->num_file_names; ++i)
8646         {
8647           struct file_entry *fe = &lh->file_names[i];
8648
8649           fe->symtab = tu_group->symtabs[i];
8650         }
8651     }
8652
8653   /* The main symtab is allocated last.  Type units don't have DW_AT_name
8654      so they don't have a "real" (so to speak) symtab anyway.
8655      There is later code that will assign the main symtab to all symbols
8656      that don't have one.  We need to handle the case of a symbol with a
8657      missing symtab (DW_AT_decl_file) anyway.  */
8658 }
8659
8660 /* Process DW_TAG_type_unit.
8661    For TUs we want to skip the first top level sibling if it's not the
8662    actual type being defined by this TU.  In this case the first top
8663    level sibling is there to provide context only.  */
8664
8665 static void
8666 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
8667 {
8668   struct die_info *child_die;
8669
8670   prepare_one_comp_unit (cu, die, language_minimal);
8671
8672   /* Initialize (or reinitialize) the machinery for building symtabs.
8673      We do this before processing child DIEs, so that the line header table
8674      is available for DW_AT_decl_file.  */
8675   setup_type_unit_groups (die, cu);
8676
8677   if (die->child != NULL)
8678     {
8679       child_die = die->child;
8680       while (child_die && child_die->tag)
8681         {
8682           process_die (child_die, cu);
8683           child_die = sibling_die (child_die);
8684         }
8685     }
8686 }
8687 \f
8688 /* DWO/DWP files.
8689
8690    http://gcc.gnu.org/wiki/DebugFission
8691    http://gcc.gnu.org/wiki/DebugFissionDWP
8692
8693    To simplify handling of both DWO files ("object" files with the DWARF info)
8694    and DWP files (a file with the DWOs packaged up into one file), we treat
8695    DWP files as having a collection of virtual DWO files.  */
8696
8697 static hashval_t
8698 hash_dwo_file (const void *item)
8699 {
8700   const struct dwo_file *dwo_file = item;
8701   hashval_t hash;
8702
8703   hash = htab_hash_string (dwo_file->dwo_name);
8704   if (dwo_file->comp_dir != NULL)
8705     hash += htab_hash_string (dwo_file->comp_dir);
8706   return hash;
8707 }
8708
8709 static int
8710 eq_dwo_file (const void *item_lhs, const void *item_rhs)
8711 {
8712   const struct dwo_file *lhs = item_lhs;
8713   const struct dwo_file *rhs = item_rhs;
8714
8715   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
8716     return 0;
8717   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
8718     return lhs->comp_dir == rhs->comp_dir;
8719   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
8720 }
8721
8722 /* Allocate a hash table for DWO files.  */
8723
8724 static htab_t
8725 allocate_dwo_file_hash_table (void)
8726 {
8727   struct objfile *objfile = dwarf2_per_objfile->objfile;
8728
8729   return htab_create_alloc_ex (41,
8730                                hash_dwo_file,
8731                                eq_dwo_file,
8732                                NULL,
8733                                &objfile->objfile_obstack,
8734                                hashtab_obstack_allocate,
8735                                dummy_obstack_deallocate);
8736 }
8737
8738 /* Lookup DWO file DWO_NAME.  */
8739
8740 static void **
8741 lookup_dwo_file_slot (const char *dwo_name, const char *comp_dir)
8742 {
8743   struct dwo_file find_entry;
8744   void **slot;
8745
8746   if (dwarf2_per_objfile->dwo_files == NULL)
8747     dwarf2_per_objfile->dwo_files = allocate_dwo_file_hash_table ();
8748
8749   memset (&find_entry, 0, sizeof (find_entry));
8750   find_entry.dwo_name = dwo_name;
8751   find_entry.comp_dir = comp_dir;
8752   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
8753
8754   return slot;
8755 }
8756
8757 static hashval_t
8758 hash_dwo_unit (const void *item)
8759 {
8760   const struct dwo_unit *dwo_unit = item;
8761
8762   /* This drops the top 32 bits of the id, but is ok for a hash.  */
8763   return dwo_unit->signature;
8764 }
8765
8766 static int
8767 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
8768 {
8769   const struct dwo_unit *lhs = item_lhs;
8770   const struct dwo_unit *rhs = item_rhs;
8771
8772   /* The signature is assumed to be unique within the DWO file.
8773      So while object file CU dwo_id's always have the value zero,
8774      that's OK, assuming each object file DWO file has only one CU,
8775      and that's the rule for now.  */
8776   return lhs->signature == rhs->signature;
8777 }
8778
8779 /* Allocate a hash table for DWO CUs,TUs.
8780    There is one of these tables for each of CUs,TUs for each DWO file.  */
8781
8782 static htab_t
8783 allocate_dwo_unit_table (struct objfile *objfile)
8784 {
8785   /* Start out with a pretty small number.
8786      Generally DWO files contain only one CU and maybe some TUs.  */
8787   return htab_create_alloc_ex (3,
8788                                hash_dwo_unit,
8789                                eq_dwo_unit,
8790                                NULL,
8791                                &objfile->objfile_obstack,
8792                                hashtab_obstack_allocate,
8793                                dummy_obstack_deallocate);
8794 }
8795
8796 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
8797
8798 struct create_dwo_cu_data
8799 {
8800   struct dwo_file *dwo_file;
8801   struct dwo_unit dwo_unit;
8802 };
8803
8804 /* die_reader_func for create_dwo_cu.  */
8805
8806 static void
8807 create_dwo_cu_reader (const struct die_reader_specs *reader,
8808                       const gdb_byte *info_ptr,
8809                       struct die_info *comp_unit_die,
8810                       int has_children,
8811                       void *datap)
8812 {
8813   struct dwarf2_cu *cu = reader->cu;
8814   struct objfile *objfile = dwarf2_per_objfile->objfile;
8815   sect_offset offset = cu->per_cu->offset;
8816   struct dwarf2_section_info *section = cu->per_cu->section;
8817   struct create_dwo_cu_data *data = datap;
8818   struct dwo_file *dwo_file = data->dwo_file;
8819   struct dwo_unit *dwo_unit = &data->dwo_unit;
8820   struct attribute *attr;
8821
8822   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
8823   if (attr == NULL)
8824     {
8825       complaint (&symfile_complaints,
8826                  _("Dwarf Error: debug entry at offset 0x%x is missing"
8827                    " its dwo_id [in module %s]"),
8828                  offset.sect_off, dwo_file->dwo_name);
8829       return;
8830     }
8831
8832   dwo_unit->dwo_file = dwo_file;
8833   dwo_unit->signature = DW_UNSND (attr);
8834   dwo_unit->section = section;
8835   dwo_unit->offset = offset;
8836   dwo_unit->length = cu->per_cu->length;
8837
8838   if (dwarf2_read_debug)
8839     fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, dwo_id %s\n",
8840                         offset.sect_off, hex_string (dwo_unit->signature));
8841 }
8842
8843 /* Create the dwo_unit for the lone CU in DWO_FILE.
8844    Note: This function processes DWO files only, not DWP files.  */
8845
8846 static struct dwo_unit *
8847 create_dwo_cu (struct dwo_file *dwo_file)
8848 {
8849   struct objfile *objfile = dwarf2_per_objfile->objfile;
8850   struct dwarf2_section_info *section = &dwo_file->sections.info;
8851   bfd *abfd;
8852   htab_t cu_htab;
8853   const gdb_byte *info_ptr, *end_ptr;
8854   struct create_dwo_cu_data create_dwo_cu_data;
8855   struct dwo_unit *dwo_unit;
8856
8857   dwarf2_read_section (objfile, section);
8858   info_ptr = section->buffer;
8859
8860   if (info_ptr == NULL)
8861     return NULL;
8862
8863   /* We can't set abfd until now because the section may be empty or
8864      not present, in which case section->asection will be NULL.  */
8865   abfd = section->asection->owner;
8866
8867   if (dwarf2_read_debug)
8868     {
8869       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
8870                           bfd_section_name (abfd, section->asection),
8871                           bfd_get_filename (abfd));
8872     }
8873
8874   create_dwo_cu_data.dwo_file = dwo_file;
8875   dwo_unit = NULL;
8876
8877   end_ptr = info_ptr + section->size;
8878   while (info_ptr < end_ptr)
8879     {
8880       struct dwarf2_per_cu_data per_cu;
8881
8882       memset (&create_dwo_cu_data.dwo_unit, 0,
8883               sizeof (create_dwo_cu_data.dwo_unit));
8884       memset (&per_cu, 0, sizeof (per_cu));
8885       per_cu.objfile = objfile;
8886       per_cu.is_debug_types = 0;
8887       per_cu.offset.sect_off = info_ptr - section->buffer;
8888       per_cu.section = section;
8889
8890       init_cutu_and_read_dies_no_follow (&per_cu,
8891                                          &dwo_file->sections.abbrev,
8892                                          dwo_file,
8893                                          create_dwo_cu_reader,
8894                                          &create_dwo_cu_data);
8895
8896       if (create_dwo_cu_data.dwo_unit.dwo_file != NULL)
8897         {
8898           /* If we've already found one, complain.  We only support one
8899              because having more than one requires hacking the dwo_name of
8900              each to match, which is highly unlikely to happen.  */
8901           if (dwo_unit != NULL)
8902             {
8903               complaint (&symfile_complaints,
8904                          _("Multiple CUs in DWO file %s [in module %s]"),
8905                          dwo_file->dwo_name, objfile->name);
8906               break;
8907             }
8908
8909           dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
8910           *dwo_unit = create_dwo_cu_data.dwo_unit;
8911         }
8912
8913       info_ptr += per_cu.length;
8914     }
8915
8916   return dwo_unit;
8917 }
8918
8919 /* DWP file .debug_{cu,tu}_index section format:
8920    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
8921
8922    DWP Version 1:
8923
8924    Both index sections have the same format, and serve to map a 64-bit
8925    signature to a set of section numbers.  Each section begins with a header,
8926    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
8927    indexes, and a pool of 32-bit section numbers.  The index sections will be
8928    aligned at 8-byte boundaries in the file.
8929
8930    The index section header consists of:
8931
8932     V, 32 bit version number
8933     -, 32 bits unused
8934     N, 32 bit number of compilation units or type units in the index
8935     M, 32 bit number of slots in the hash table
8936
8937    Numbers are recorded using the byte order of the application binary.
8938
8939    We assume that N and M will not exceed 2^32 - 1.
8940
8941    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
8942
8943    The hash table begins at offset 16 in the section, and consists of an array
8944    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
8945    order of the application binary).  Unused slots in the hash table are 0.
8946    (We rely on the extreme unlikeliness of a signature being exactly 0.)
8947
8948    The parallel table begins immediately after the hash table
8949    (at offset 16 + 8 * M from the beginning of the section), and consists of an
8950    array of 32-bit indexes (using the byte order of the application binary),
8951    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
8952    table contains a 32-bit index into the pool of section numbers.  For unused
8953    hash table slots, the corresponding entry in the parallel table will be 0.
8954
8955    Given a 64-bit compilation unit signature or a type signature S, an entry
8956    in the hash table is located as follows:
8957
8958    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
8959       the low-order k bits all set to 1.
8960
8961    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
8962
8963    3) If the hash table entry at index H matches the signature, use that
8964       entry.  If the hash table entry at index H is unused (all zeroes),
8965       terminate the search: the signature is not present in the table.
8966
8967    4) Let H = (H + H') modulo M. Repeat at Step 3.
8968
8969    Because M > N and H' and M are relatively prime, the search is guaranteed
8970    to stop at an unused slot or find the match.
8971
8972    The pool of section numbers begins immediately following the hash table
8973    (at offset 16 + 12 * M from the beginning of the section).  The pool of
8974    section numbers consists of an array of 32-bit words (using the byte order
8975    of the application binary).  Each item in the array is indexed starting
8976    from 0.  The hash table entry provides the index of the first section
8977    number in the set.  Additional section numbers in the set follow, and the
8978    set is terminated by a 0 entry (section number 0 is not used in ELF).
8979
8980    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
8981    section must be the first entry in the set, and the .debug_abbrev.dwo must
8982    be the second entry. Other members of the set may follow in any order.  */
8983
8984 /* Create a hash table to map DWO IDs to their CU/TU entry in
8985    .debug_{info,types}.dwo in DWP_FILE.
8986    Returns NULL if there isn't one.
8987    Note: This function processes DWP files only, not DWO files.  */
8988
8989 static struct dwp_hash_table *
8990 create_dwp_hash_table (struct dwp_file *dwp_file, int is_debug_types)
8991 {
8992   struct objfile *objfile = dwarf2_per_objfile->objfile;
8993   bfd *dbfd = dwp_file->dbfd;
8994   const gdb_byte *index_ptr, *index_end;
8995   struct dwarf2_section_info *index;
8996   uint32_t version, nr_units, nr_slots;
8997   struct dwp_hash_table *htab;
8998
8999   if (is_debug_types)
9000     index = &dwp_file->sections.tu_index;
9001   else
9002     index = &dwp_file->sections.cu_index;
9003
9004   if (dwarf2_section_empty_p (index))
9005     return NULL;
9006   dwarf2_read_section (objfile, index);
9007
9008   index_ptr = index->buffer;
9009   index_end = index_ptr + index->size;
9010
9011   version = read_4_bytes (dbfd, index_ptr);
9012   index_ptr += 8; /* Skip the unused word.  */
9013   nr_units = read_4_bytes (dbfd, index_ptr);
9014   index_ptr += 4;
9015   nr_slots = read_4_bytes (dbfd, index_ptr);
9016   index_ptr += 4;
9017
9018   if (version != 1)
9019     {
9020       error (_("Dwarf Error: unsupported DWP file version (%s)"
9021                " [in module %s]"),
9022              pulongest (version), dwp_file->name);
9023     }
9024   if (nr_slots != (nr_slots & -nr_slots))
9025     {
9026       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
9027                " is not power of 2 [in module %s]"),
9028              pulongest (nr_slots), dwp_file->name);
9029     }
9030
9031   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
9032   htab->nr_units = nr_units;
9033   htab->nr_slots = nr_slots;
9034   htab->hash_table = index_ptr;
9035   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
9036   htab->section_pool = htab->unit_table + sizeof (uint32_t) * nr_slots;
9037
9038   return htab;
9039 }
9040
9041 /* Update SECTIONS with the data from SECTP.
9042
9043    This function is like the other "locate" section routines that are
9044    passed to bfd_map_over_sections, but in this context the sections to
9045    read comes from the DWP hash table, not the full ELF section table.
9046
9047    The result is non-zero for success, or zero if an error was found.  */
9048
9049 static int
9050 locate_virtual_dwo_sections (asection *sectp,
9051                              struct virtual_dwo_sections *sections)
9052 {
9053   const struct dwop_section_names *names = &dwop_section_names;
9054
9055   if (section_is_p (sectp->name, &names->abbrev_dwo))
9056     {
9057       /* There can be only one.  */
9058       if (sections->abbrev.asection != NULL)
9059         return 0;
9060       sections->abbrev.asection = sectp;
9061       sections->abbrev.size = bfd_get_section_size (sectp);
9062     }
9063   else if (section_is_p (sectp->name, &names->info_dwo)
9064            || section_is_p (sectp->name, &names->types_dwo))
9065     {
9066       /* There can be only one.  */
9067       if (sections->info_or_types.asection != NULL)
9068         return 0;
9069       sections->info_or_types.asection = sectp;
9070       sections->info_or_types.size = bfd_get_section_size (sectp);
9071     }
9072   else if (section_is_p (sectp->name, &names->line_dwo))
9073     {
9074       /* There can be only one.  */
9075       if (sections->line.asection != NULL)
9076         return 0;
9077       sections->line.asection = sectp;
9078       sections->line.size = bfd_get_section_size (sectp);
9079     }
9080   else if (section_is_p (sectp->name, &names->loc_dwo))
9081     {
9082       /* There can be only one.  */
9083       if (sections->loc.asection != NULL)
9084         return 0;
9085       sections->loc.asection = sectp;
9086       sections->loc.size = bfd_get_section_size (sectp);
9087     }
9088   else if (section_is_p (sectp->name, &names->macinfo_dwo))
9089     {
9090       /* There can be only one.  */
9091       if (sections->macinfo.asection != NULL)
9092         return 0;
9093       sections->macinfo.asection = sectp;
9094       sections->macinfo.size = bfd_get_section_size (sectp);
9095     }
9096   else if (section_is_p (sectp->name, &names->macro_dwo))
9097     {
9098       /* There can be only one.  */
9099       if (sections->macro.asection != NULL)
9100         return 0;
9101       sections->macro.asection = sectp;
9102       sections->macro.size = bfd_get_section_size (sectp);
9103     }
9104   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
9105     {
9106       /* There can be only one.  */
9107       if (sections->str_offsets.asection != NULL)
9108         return 0;
9109       sections->str_offsets.asection = sectp;
9110       sections->str_offsets.size = bfd_get_section_size (sectp);
9111     }
9112   else
9113     {
9114       /* No other kind of section is valid.  */
9115       return 0;
9116     }
9117
9118   return 1;
9119 }
9120
9121 /* Create a dwo_unit object for the DWO with signature SIGNATURE.
9122    HTAB is the hash table from the DWP file.
9123    SECTION_INDEX is the index of the DWO in HTAB.
9124    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.  */
9125
9126 static struct dwo_unit *
9127 create_dwo_in_dwp (struct dwp_file *dwp_file,
9128                    const struct dwp_hash_table *htab,
9129                    uint32_t section_index,
9130                    const char *comp_dir,
9131                    ULONGEST signature, int is_debug_types)
9132 {
9133   struct objfile *objfile = dwarf2_per_objfile->objfile;
9134   bfd *dbfd = dwp_file->dbfd;
9135   const char *kind = is_debug_types ? "TU" : "CU";
9136   struct dwo_file *dwo_file;
9137   struct dwo_unit *dwo_unit;
9138   struct virtual_dwo_sections sections;
9139   void **dwo_file_slot;
9140   char *virtual_dwo_name;
9141   struct dwarf2_section_info *cutu;
9142   struct cleanup *cleanups;
9143   int i;
9144
9145   if (dwarf2_read_debug)
9146     {
9147       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP file: %s\n",
9148                           kind,
9149                           pulongest (section_index), hex_string (signature),
9150                           dwp_file->name);
9151     }
9152
9153   /* Fetch the sections of this DWO.
9154      Put a limit on the number of sections we look for so that bad data
9155      doesn't cause us to loop forever.  */
9156
9157 #define MAX_NR_DWO_SECTIONS \
9158   (1 /* .debug_info or .debug_types */ \
9159    + 1 /* .debug_abbrev */ \
9160    + 1 /* .debug_line */ \
9161    + 1 /* .debug_loc */ \
9162    + 1 /* .debug_str_offsets */ \
9163    + 1 /* .debug_macro */ \
9164    + 1 /* .debug_macinfo */ \
9165    + 1 /* trailing zero */)
9166
9167   memset (&sections, 0, sizeof (sections));
9168   cleanups = make_cleanup (null_cleanup, 0);
9169
9170   for (i = 0; i < MAX_NR_DWO_SECTIONS; ++i)
9171     {
9172       asection *sectp;
9173       uint32_t section_nr =
9174         read_4_bytes (dbfd,
9175                       htab->section_pool
9176                       + (section_index + i) * sizeof (uint32_t));
9177
9178       if (section_nr == 0)
9179         break;
9180       if (section_nr >= dwp_file->num_sections)
9181         {
9182           error (_("Dwarf Error: bad DWP hash table, section number too large"
9183                    " [in module %s]"),
9184                  dwp_file->name);
9185         }
9186
9187       sectp = dwp_file->elf_sections[section_nr];
9188       if (! locate_virtual_dwo_sections (sectp, &sections))
9189         {
9190           error (_("Dwarf Error: bad DWP hash table, invalid section found"
9191                    " [in module %s]"),
9192                  dwp_file->name);
9193         }
9194     }
9195
9196   if (i < 2
9197       || sections.info_or_types.asection == NULL
9198       || sections.abbrev.asection == NULL)
9199     {
9200       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
9201                " [in module %s]"),
9202              dwp_file->name);
9203     }
9204   if (i == MAX_NR_DWO_SECTIONS)
9205     {
9206       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
9207                " [in module %s]"),
9208              dwp_file->name);
9209     }
9210
9211   /* It's easier for the rest of the code if we fake a struct dwo_file and
9212      have dwo_unit "live" in that.  At least for now.
9213
9214      The DWP file can be made up of a random collection of CUs and TUs.
9215      However, for each CU + set of TUs that came from the same original DWO
9216      file, we want to combine them back into a virtual DWO file to save space
9217      (fewer struct dwo_file objects to allocated).  Remember that for really
9218      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
9219
9220   virtual_dwo_name =
9221     xstrprintf ("virtual-dwo/%d-%d-%d-%d",
9222                 sections.abbrev.asection ? sections.abbrev.asection->id : 0,
9223                 sections.line.asection ? sections.line.asection->id : 0,
9224                 sections.loc.asection ? sections.loc.asection->id : 0,
9225                 (sections.str_offsets.asection
9226                 ? sections.str_offsets.asection->id
9227                 : 0));
9228   make_cleanup (xfree, virtual_dwo_name);
9229   /* Can we use an existing virtual DWO file?  */
9230   dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
9231   /* Create one if necessary.  */
9232   if (*dwo_file_slot == NULL)
9233     {
9234       if (dwarf2_read_debug)
9235         {
9236           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
9237                               virtual_dwo_name);
9238         }
9239       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
9240       dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
9241                                           virtual_dwo_name,
9242                                           strlen (virtual_dwo_name));
9243       dwo_file->comp_dir = comp_dir;
9244       dwo_file->sections.abbrev = sections.abbrev;
9245       dwo_file->sections.line = sections.line;
9246       dwo_file->sections.loc = sections.loc;
9247       dwo_file->sections.macinfo = sections.macinfo;
9248       dwo_file->sections.macro = sections.macro;
9249       dwo_file->sections.str_offsets = sections.str_offsets;
9250       /* The "str" section is global to the entire DWP file.  */
9251       dwo_file->sections.str = dwp_file->sections.str;
9252       /* The info or types section is assigned later to dwo_unit,
9253          there's no need to record it in dwo_file.
9254          Also, we can't simply record type sections in dwo_file because
9255          we record a pointer into the vector in dwo_unit.  As we collect more
9256          types we'll grow the vector and eventually have to reallocate space
9257          for it, invalidating all the pointers into the current copy.  */
9258       *dwo_file_slot = dwo_file;
9259     }
9260   else
9261     {
9262       if (dwarf2_read_debug)
9263         {
9264           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
9265                               virtual_dwo_name);
9266         }
9267       dwo_file = *dwo_file_slot;
9268     }
9269   do_cleanups (cleanups);
9270
9271   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
9272   dwo_unit->dwo_file = dwo_file;
9273   dwo_unit->signature = signature;
9274   dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
9275                                      sizeof (struct dwarf2_section_info));
9276   *dwo_unit->section = sections.info_or_types;
9277   /* offset, length, type_offset_in_tu are set later.  */
9278
9279   return dwo_unit;
9280 }
9281
9282 /* Lookup the DWO with SIGNATURE in DWP_FILE.  */
9283
9284 static struct dwo_unit *
9285 lookup_dwo_in_dwp (struct dwp_file *dwp_file,
9286                    const struct dwp_hash_table *htab,
9287                    const char *comp_dir,
9288                    ULONGEST signature, int is_debug_types)
9289 {
9290   bfd *dbfd = dwp_file->dbfd;
9291   uint32_t mask = htab->nr_slots - 1;
9292   uint32_t hash = signature & mask;
9293   uint32_t hash2 = ((signature >> 32) & mask) | 1;
9294   unsigned int i;
9295   void **slot;
9296   struct dwo_unit find_dwo_cu, *dwo_cu;
9297
9298   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
9299   find_dwo_cu.signature = signature;
9300   slot = htab_find_slot (dwp_file->loaded_cutus, &find_dwo_cu, INSERT);
9301
9302   if (*slot != NULL)
9303     return *slot;
9304
9305   /* Use a for loop so that we don't loop forever on bad debug info.  */
9306   for (i = 0; i < htab->nr_slots; ++i)
9307     {
9308       ULONGEST signature_in_table;
9309
9310       signature_in_table =
9311         read_8_bytes (dbfd, htab->hash_table + hash * sizeof (uint64_t));
9312       if (signature_in_table == signature)
9313         {
9314           uint32_t section_index =
9315             read_4_bytes (dbfd, htab->unit_table + hash * sizeof (uint32_t));
9316
9317           *slot = create_dwo_in_dwp (dwp_file, htab, section_index,
9318                                      comp_dir, signature, is_debug_types);
9319           return *slot;
9320         }
9321       if (signature_in_table == 0)
9322         return NULL;
9323       hash = (hash + hash2) & mask;
9324     }
9325
9326   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
9327            " [in module %s]"),
9328          dwp_file->name);
9329 }
9330
9331 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
9332    Open the file specified by FILE_NAME and hand it off to BFD for
9333    preliminary analysis.  Return a newly initialized bfd *, which
9334    includes a canonicalized copy of FILE_NAME.
9335    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
9336    SEARCH_CWD is true if the current directory is to be searched.
9337    It will be searched before debug-file-directory.
9338    If unable to find/open the file, return NULL.
9339    NOTE: This function is derived from symfile_bfd_open.  */
9340
9341 static bfd *
9342 try_open_dwop_file (const char *file_name, int is_dwp, int search_cwd)
9343 {
9344   bfd *sym_bfd;
9345   int desc, flags;
9346   char *absolute_name;
9347   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
9348      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
9349      to debug_file_directory.  */
9350   char *search_path;
9351   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
9352
9353   if (search_cwd)
9354     {
9355       if (*debug_file_directory != '\0')
9356         search_path = concat (".", dirname_separator_string,
9357                               debug_file_directory, NULL);
9358       else
9359         search_path = xstrdup (".");
9360     }
9361   else
9362     search_path = xstrdup (debug_file_directory);
9363
9364   flags = 0;
9365   if (is_dwp)
9366     flags |= OPF_SEARCH_IN_PATH;
9367   desc = openp (search_path, flags, file_name,
9368                 O_RDONLY | O_BINARY, &absolute_name);
9369   xfree (search_path);
9370   if (desc < 0)
9371     return NULL;
9372
9373   sym_bfd = gdb_bfd_open (absolute_name, gnutarget, desc);
9374   xfree (absolute_name);
9375   if (sym_bfd == NULL)
9376     return NULL;
9377   bfd_set_cacheable (sym_bfd, 1);
9378
9379   if (!bfd_check_format (sym_bfd, bfd_object))
9380     {
9381       gdb_bfd_unref (sym_bfd); /* This also closes desc.  */
9382       return NULL;
9383     }
9384
9385   return sym_bfd;
9386 }
9387
9388 /* Try to open DWO file FILE_NAME.
9389    COMP_DIR is the DW_AT_comp_dir attribute.
9390    The result is the bfd handle of the file.
9391    If there is a problem finding or opening the file, return NULL.
9392    Upon success, the canonicalized path of the file is stored in the bfd,
9393    same as symfile_bfd_open.  */
9394
9395 static bfd *
9396 open_dwo_file (const char *file_name, const char *comp_dir)
9397 {
9398   bfd *abfd;
9399
9400   if (IS_ABSOLUTE_PATH (file_name))
9401     return try_open_dwop_file (file_name, 0 /*is_dwp*/, 0 /*search_cwd*/);
9402
9403   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
9404
9405   if (comp_dir != NULL)
9406     {
9407       char *path_to_try = concat (comp_dir, SLASH_STRING, file_name, NULL);
9408
9409       /* NOTE: If comp_dir is a relative path, this will also try the
9410          search path, which seems useful.  */
9411       abfd = try_open_dwop_file (path_to_try, 0 /*is_dwp*/, 1 /*search_cwd*/);
9412       xfree (path_to_try);
9413       if (abfd != NULL)
9414         return abfd;
9415     }
9416
9417   /* That didn't work, try debug-file-directory, which, despite its name,
9418      is a list of paths.  */
9419
9420   if (*debug_file_directory == '\0')
9421     return NULL;
9422
9423   return try_open_dwop_file (file_name, 0 /*is_dwp*/, 1 /*search_cwd*/);
9424 }
9425
9426 /* This function is mapped across the sections and remembers the offset and
9427    size of each of the DWO debugging sections we are interested in.  */
9428
9429 static void
9430 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
9431 {
9432   struct dwo_sections *dwo_sections = dwo_sections_ptr;
9433   const struct dwop_section_names *names = &dwop_section_names;
9434
9435   if (section_is_p (sectp->name, &names->abbrev_dwo))
9436     {
9437       dwo_sections->abbrev.asection = sectp;
9438       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
9439     }
9440   else if (section_is_p (sectp->name, &names->info_dwo))
9441     {
9442       dwo_sections->info.asection = sectp;
9443       dwo_sections->info.size = bfd_get_section_size (sectp);
9444     }
9445   else if (section_is_p (sectp->name, &names->line_dwo))
9446     {
9447       dwo_sections->line.asection = sectp;
9448       dwo_sections->line.size = bfd_get_section_size (sectp);
9449     }
9450   else if (section_is_p (sectp->name, &names->loc_dwo))
9451     {
9452       dwo_sections->loc.asection = sectp;
9453       dwo_sections->loc.size = bfd_get_section_size (sectp);
9454     }
9455   else if (section_is_p (sectp->name, &names->macinfo_dwo))
9456     {
9457       dwo_sections->macinfo.asection = sectp;
9458       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
9459     }
9460   else if (section_is_p (sectp->name, &names->macro_dwo))
9461     {
9462       dwo_sections->macro.asection = sectp;
9463       dwo_sections->macro.size = bfd_get_section_size (sectp);
9464     }
9465   else if (section_is_p (sectp->name, &names->str_dwo))
9466     {
9467       dwo_sections->str.asection = sectp;
9468       dwo_sections->str.size = bfd_get_section_size (sectp);
9469     }
9470   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
9471     {
9472       dwo_sections->str_offsets.asection = sectp;
9473       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
9474     }
9475   else if (section_is_p (sectp->name, &names->types_dwo))
9476     {
9477       struct dwarf2_section_info type_section;
9478
9479       memset (&type_section, 0, sizeof (type_section));
9480       type_section.asection = sectp;
9481       type_section.size = bfd_get_section_size (sectp);
9482       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
9483                      &type_section);
9484     }
9485 }
9486
9487 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
9488    by PER_CU.  This is for the non-DWP case.
9489    The result is NULL if DWO_NAME can't be found.  */
9490
9491 static struct dwo_file *
9492 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
9493                         const char *dwo_name, const char *comp_dir)
9494 {
9495   struct objfile *objfile = dwarf2_per_objfile->objfile;
9496   struct dwo_file *dwo_file;
9497   bfd *dbfd;
9498   struct cleanup *cleanups;
9499
9500   dbfd = open_dwo_file (dwo_name, comp_dir);
9501   if (dbfd == NULL)
9502     {
9503       if (dwarf2_read_debug)
9504         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
9505       return NULL;
9506     }
9507   dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
9508   dwo_file->dwo_name = dwo_name;
9509   dwo_file->comp_dir = comp_dir;
9510   dwo_file->dbfd = dbfd;
9511
9512   cleanups = make_cleanup (free_dwo_file_cleanup, dwo_file);
9513
9514   bfd_map_over_sections (dbfd, dwarf2_locate_dwo_sections, &dwo_file->sections);
9515
9516   dwo_file->cu = create_dwo_cu (dwo_file);
9517
9518   dwo_file->tus = create_debug_types_hash_table (dwo_file,
9519                                                  dwo_file->sections.types);
9520
9521   discard_cleanups (cleanups);
9522
9523   if (dwarf2_read_debug)
9524     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
9525
9526   return dwo_file;
9527 }
9528
9529 /* This function is mapped across the sections and remembers the offset and
9530    size of each of the DWP debugging sections we are interested in.  */
9531
9532 static void
9533 dwarf2_locate_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
9534 {
9535   struct dwp_file *dwp_file = dwp_file_ptr;
9536   const struct dwop_section_names *names = &dwop_section_names;
9537   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
9538
9539   /* Record the ELF section number for later lookup: this is what the
9540      .debug_cu_index,.debug_tu_index tables use.  */
9541   gdb_assert (elf_section_nr < dwp_file->num_sections);
9542   dwp_file->elf_sections[elf_section_nr] = sectp;
9543
9544   /* Look for specific sections that we need.  */
9545   if (section_is_p (sectp->name, &names->str_dwo))
9546     {
9547       dwp_file->sections.str.asection = sectp;
9548       dwp_file->sections.str.size = bfd_get_section_size (sectp);
9549     }
9550   else if (section_is_p (sectp->name, &names->cu_index))
9551     {
9552       dwp_file->sections.cu_index.asection = sectp;
9553       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
9554     }
9555   else if (section_is_p (sectp->name, &names->tu_index))
9556     {
9557       dwp_file->sections.tu_index.asection = sectp;
9558       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
9559     }
9560 }
9561
9562 /* Hash function for dwp_file loaded CUs/TUs.  */
9563
9564 static hashval_t
9565 hash_dwp_loaded_cutus (const void *item)
9566 {
9567   const struct dwo_unit *dwo_unit = item;
9568
9569   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
9570   return dwo_unit->signature;
9571 }
9572
9573 /* Equality function for dwp_file loaded CUs/TUs.  */
9574
9575 static int
9576 eq_dwp_loaded_cutus (const void *a, const void *b)
9577 {
9578   const struct dwo_unit *dua = a;
9579   const struct dwo_unit *dub = b;
9580
9581   return dua->signature == dub->signature;
9582 }
9583
9584 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
9585
9586 static htab_t
9587 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
9588 {
9589   return htab_create_alloc_ex (3,
9590                                hash_dwp_loaded_cutus,
9591                                eq_dwp_loaded_cutus,
9592                                NULL,
9593                                &objfile->objfile_obstack,
9594                                hashtab_obstack_allocate,
9595                                dummy_obstack_deallocate);
9596 }
9597
9598 /* Try to open DWP file FILE_NAME.
9599    The result is the bfd handle of the file.
9600    If there is a problem finding or opening the file, return NULL.
9601    Upon success, the canonicalized path of the file is stored in the bfd,
9602    same as symfile_bfd_open.  */
9603
9604 static bfd *
9605 open_dwp_file (const char *file_name)
9606 {
9607   bfd *abfd;
9608
9609   abfd = try_open_dwop_file (file_name, 1 /*is_dwp*/, 1 /*search_cwd*/);
9610   if (abfd != NULL)
9611     return abfd;
9612
9613   /* Work around upstream bug 15652.
9614      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
9615      [Whether that's a "bug" is debatable, but it is getting in our way.]
9616      We have no real idea where the dwp file is, because gdb's realpath-ing
9617      of the executable's path may have discarded the needed info.
9618      [IWBN if the dwp file name was recorded in the executable, akin to
9619      .gnu_debuglink, but that doesn't exist yet.]
9620      Strip the directory from FILE_NAME and search again.  */
9621   if (*debug_file_directory != '\0')
9622     {
9623       /* Don't implicitly search the current directory here.
9624          If the user wants to search "." to handle this case,
9625          it must be added to debug-file-directory.  */
9626       return try_open_dwop_file (lbasename (file_name), 1 /*is_dwp*/,
9627                                  0 /*search_cwd*/);
9628     }
9629
9630   return NULL;
9631 }
9632
9633 /* Initialize the use of the DWP file for the current objfile.
9634    By convention the name of the DWP file is ${objfile}.dwp.
9635    The result is NULL if it can't be found.  */
9636
9637 static struct dwp_file *
9638 open_and_init_dwp_file (void)
9639 {
9640   struct objfile *objfile = dwarf2_per_objfile->objfile;
9641   struct dwp_file *dwp_file;
9642   char *dwp_name;
9643   bfd *dbfd;
9644   struct cleanup *cleanups;
9645
9646   dwp_name = xstrprintf ("%s.dwp", dwarf2_per_objfile->objfile->name);
9647   cleanups = make_cleanup (xfree, dwp_name);
9648
9649   dbfd = open_dwp_file (dwp_name);
9650   if (dbfd == NULL)
9651     {
9652       if (dwarf2_read_debug)
9653         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name);
9654       do_cleanups (cleanups);
9655       return NULL;
9656     }
9657   dwp_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_file);
9658   dwp_file->name = bfd_get_filename (dbfd);
9659   dwp_file->dbfd = dbfd;
9660   do_cleanups (cleanups);
9661
9662   /* +1: section 0 is unused */
9663   dwp_file->num_sections = bfd_count_sections (dbfd) + 1;
9664   dwp_file->elf_sections =
9665     OBSTACK_CALLOC (&objfile->objfile_obstack,
9666                     dwp_file->num_sections, asection *);
9667
9668   bfd_map_over_sections (dbfd, dwarf2_locate_dwp_sections, dwp_file);
9669
9670   dwp_file->cus = create_dwp_hash_table (dwp_file, 0);
9671
9672   dwp_file->tus = create_dwp_hash_table (dwp_file, 1);
9673
9674   dwp_file->loaded_cutus = allocate_dwp_loaded_cutus_table (objfile);
9675
9676   if (dwarf2_read_debug)
9677     {
9678       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
9679       fprintf_unfiltered (gdb_stdlog,
9680                           "    %s CUs, %s TUs\n",
9681                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
9682                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
9683     }
9684
9685   return dwp_file;
9686 }
9687
9688 /* Wrapper around open_and_init_dwp_file, only open it once.  */
9689
9690 static struct dwp_file *
9691 get_dwp_file (void)
9692 {
9693   if (! dwarf2_per_objfile->dwp_checked)
9694     {
9695       dwarf2_per_objfile->dwp_file = open_and_init_dwp_file ();
9696       dwarf2_per_objfile->dwp_checked = 1;
9697     }
9698   return dwarf2_per_objfile->dwp_file;
9699 }
9700
9701 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
9702    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
9703    or in the DWP file for the objfile, referenced by THIS_UNIT.
9704    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
9705    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
9706
9707    This is called, for example, when wanting to read a variable with a
9708    complex location.  Therefore we don't want to do file i/o for every call.
9709    Therefore we don't want to look for a DWO file on every call.
9710    Therefore we first see if we've already seen SIGNATURE in a DWP file,
9711    then we check if we've already seen DWO_NAME, and only THEN do we check
9712    for a DWO file.
9713
9714    The result is a pointer to the dwo_unit object or NULL if we didn't find it
9715    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
9716
9717 static struct dwo_unit *
9718 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
9719                  const char *dwo_name, const char *comp_dir,
9720                  ULONGEST signature, int is_debug_types)
9721 {
9722   struct objfile *objfile = dwarf2_per_objfile->objfile;
9723   const char *kind = is_debug_types ? "TU" : "CU";
9724   void **dwo_file_slot;
9725   struct dwo_file *dwo_file;
9726   struct dwp_file *dwp_file;
9727
9728   /* First see if there's a DWP file.
9729      If we have a DWP file but didn't find the DWO inside it, don't
9730      look for the original DWO file.  It makes gdb behave differently
9731      depending on whether one is debugging in the build tree.  */
9732
9733   dwp_file = get_dwp_file ();
9734   if (dwp_file != NULL)
9735     {
9736       const struct dwp_hash_table *dwp_htab =
9737         is_debug_types ? dwp_file->tus : dwp_file->cus;
9738
9739       if (dwp_htab != NULL)
9740         {
9741           struct dwo_unit *dwo_cutu =
9742             lookup_dwo_in_dwp (dwp_file, dwp_htab, comp_dir,
9743                                signature, is_debug_types);
9744
9745           if (dwo_cutu != NULL)
9746             {
9747               if (dwarf2_read_debug)
9748                 {
9749                   fprintf_unfiltered (gdb_stdlog,
9750                                       "Virtual DWO %s %s found: @%s\n",
9751                                       kind, hex_string (signature),
9752                                       host_address_to_string (dwo_cutu));
9753                 }
9754               return dwo_cutu;
9755             }
9756         }
9757     }
9758   else
9759     {
9760       /* No DWP file, look for the DWO file.  */
9761
9762       dwo_file_slot = lookup_dwo_file_slot (dwo_name, comp_dir);
9763       if (*dwo_file_slot == NULL)
9764         {
9765           /* Read in the file and build a table of the CUs/TUs it contains.  */
9766           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
9767         }
9768       /* NOTE: This will be NULL if unable to open the file.  */
9769       dwo_file = *dwo_file_slot;
9770
9771       if (dwo_file != NULL)
9772         {
9773           struct dwo_unit *dwo_cutu = NULL;
9774
9775           if (is_debug_types && dwo_file->tus)
9776             {
9777               struct dwo_unit find_dwo_cutu;
9778
9779               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
9780               find_dwo_cutu.signature = signature;
9781               dwo_cutu = htab_find (dwo_file->tus, &find_dwo_cutu);
9782             }
9783           else if (!is_debug_types && dwo_file->cu)
9784             {
9785               if (signature == dwo_file->cu->signature)
9786                 dwo_cutu = dwo_file->cu;
9787             }
9788
9789           if (dwo_cutu != NULL)
9790             {
9791               if (dwarf2_read_debug)
9792                 {
9793                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
9794                                       kind, dwo_name, hex_string (signature),
9795                                       host_address_to_string (dwo_cutu));
9796                 }
9797               return dwo_cutu;
9798             }
9799         }
9800     }
9801
9802   /* We didn't find it.  This could mean a dwo_id mismatch, or
9803      someone deleted the DWO/DWP file, or the search path isn't set up
9804      correctly to find the file.  */
9805
9806   if (dwarf2_read_debug)
9807     {
9808       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
9809                           kind, dwo_name, hex_string (signature));
9810     }
9811
9812   /* This is a warning and not a complaint because it can be caused by
9813      pilot error (e.g., user accidentally deleting the DWO).  */
9814   warning (_("Could not find DWO %s %s(%s) referenced by %s at offset 0x%x"
9815              " [in module %s]"),
9816            kind, dwo_name, hex_string (signature),
9817            this_unit->is_debug_types ? "TU" : "CU",
9818            this_unit->offset.sect_off, objfile->name);
9819   return NULL;
9820 }
9821
9822 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
9823    See lookup_dwo_cutu_unit for details.  */
9824
9825 static struct dwo_unit *
9826 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
9827                       const char *dwo_name, const char *comp_dir,
9828                       ULONGEST signature)
9829 {
9830   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
9831 }
9832
9833 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
9834    See lookup_dwo_cutu_unit for details.  */
9835
9836 static struct dwo_unit *
9837 lookup_dwo_type_unit (struct signatured_type *this_tu,
9838                       const char *dwo_name, const char *comp_dir)
9839 {
9840   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
9841 }
9842
9843 /* Free all resources associated with DWO_FILE.
9844    Close the DWO file and munmap the sections.
9845    All memory should be on the objfile obstack.  */
9846
9847 static void
9848 free_dwo_file (struct dwo_file *dwo_file, struct objfile *objfile)
9849 {
9850   int ix;
9851   struct dwarf2_section_info *section;
9852
9853   /* Note: dbfd is NULL for virtual DWO files.  */
9854   gdb_bfd_unref (dwo_file->dbfd);
9855
9856   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
9857 }
9858
9859 /* Wrapper for free_dwo_file for use in cleanups.  */
9860
9861 static void
9862 free_dwo_file_cleanup (void *arg)
9863 {
9864   struct dwo_file *dwo_file = (struct dwo_file *) arg;
9865   struct objfile *objfile = dwarf2_per_objfile->objfile;
9866
9867   free_dwo_file (dwo_file, objfile);
9868 }
9869
9870 /* Traversal function for free_dwo_files.  */
9871
9872 static int
9873 free_dwo_file_from_slot (void **slot, void *info)
9874 {
9875   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
9876   struct objfile *objfile = (struct objfile *) info;
9877
9878   free_dwo_file (dwo_file, objfile);
9879
9880   return 1;
9881 }
9882
9883 /* Free all resources associated with DWO_FILES.  */
9884
9885 static void
9886 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
9887 {
9888   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
9889 }
9890 \f
9891 /* Read in various DIEs.  */
9892
9893 /* qsort helper for inherit_abstract_dies.  */
9894
9895 static int
9896 unsigned_int_compar (const void *ap, const void *bp)
9897 {
9898   unsigned int a = *(unsigned int *) ap;
9899   unsigned int b = *(unsigned int *) bp;
9900
9901   return (a > b) - (b > a);
9902 }
9903
9904 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
9905    Inherit only the children of the DW_AT_abstract_origin DIE not being
9906    already referenced by DW_AT_abstract_origin from the children of the
9907    current DIE.  */
9908
9909 static void
9910 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
9911 {
9912   struct die_info *child_die;
9913   unsigned die_children_count;
9914   /* CU offsets which were referenced by children of the current DIE.  */
9915   sect_offset *offsets;
9916   sect_offset *offsets_end, *offsetp;
9917   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
9918   struct die_info *origin_die;
9919   /* Iterator of the ORIGIN_DIE children.  */
9920   struct die_info *origin_child_die;
9921   struct cleanup *cleanups;
9922   struct attribute *attr;
9923   struct dwarf2_cu *origin_cu;
9924   struct pending **origin_previous_list_in_scope;
9925
9926   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
9927   if (!attr)
9928     return;
9929
9930   /* Note that following die references may follow to a die in a
9931      different cu.  */
9932
9933   origin_cu = cu;
9934   origin_die = follow_die_ref (die, attr, &origin_cu);
9935
9936   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
9937      symbols in.  */
9938   origin_previous_list_in_scope = origin_cu->list_in_scope;
9939   origin_cu->list_in_scope = cu->list_in_scope;
9940
9941   if (die->tag != origin_die->tag
9942       && !(die->tag == DW_TAG_inlined_subroutine
9943            && origin_die->tag == DW_TAG_subprogram))
9944     complaint (&symfile_complaints,
9945                _("DIE 0x%x and its abstract origin 0x%x have different tags"),
9946                die->offset.sect_off, origin_die->offset.sect_off);
9947
9948   child_die = die->child;
9949   die_children_count = 0;
9950   while (child_die && child_die->tag)
9951     {
9952       child_die = sibling_die (child_die);
9953       die_children_count++;
9954     }
9955   offsets = xmalloc (sizeof (*offsets) * die_children_count);
9956   cleanups = make_cleanup (xfree, offsets);
9957
9958   offsets_end = offsets;
9959   child_die = die->child;
9960   while (child_die && child_die->tag)
9961     {
9962       /* For each CHILD_DIE, find the corresponding child of
9963          ORIGIN_DIE.  If there is more than one layer of
9964          DW_AT_abstract_origin, follow them all; there shouldn't be,
9965          but GCC versions at least through 4.4 generate this (GCC PR
9966          40573).  */
9967       struct die_info *child_origin_die = child_die;
9968       struct dwarf2_cu *child_origin_cu = cu;
9969
9970       while (1)
9971         {
9972           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
9973                               child_origin_cu);
9974           if (attr == NULL)
9975             break;
9976           child_origin_die = follow_die_ref (child_origin_die, attr,
9977                                              &child_origin_cu);
9978         }
9979
9980       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
9981          counterpart may exist.  */
9982       if (child_origin_die != child_die)
9983         {
9984           if (child_die->tag != child_origin_die->tag
9985               && !(child_die->tag == DW_TAG_inlined_subroutine
9986                    && child_origin_die->tag == DW_TAG_subprogram))
9987             complaint (&symfile_complaints,
9988                        _("Child DIE 0x%x and its abstract origin 0x%x have "
9989                          "different tags"), child_die->offset.sect_off,
9990                        child_origin_die->offset.sect_off);
9991           if (child_origin_die->parent != origin_die)
9992             complaint (&symfile_complaints,
9993                        _("Child DIE 0x%x and its abstract origin 0x%x have "
9994                          "different parents"), child_die->offset.sect_off,
9995                        child_origin_die->offset.sect_off);
9996           else
9997             *offsets_end++ = child_origin_die->offset;
9998         }
9999       child_die = sibling_die (child_die);
10000     }
10001   qsort (offsets, offsets_end - offsets, sizeof (*offsets),
10002          unsigned_int_compar);
10003   for (offsetp = offsets + 1; offsetp < offsets_end; offsetp++)
10004     if (offsetp[-1].sect_off == offsetp->sect_off)
10005       complaint (&symfile_complaints,
10006                  _("Multiple children of DIE 0x%x refer "
10007                    "to DIE 0x%x as their abstract origin"),
10008                  die->offset.sect_off, offsetp->sect_off);
10009
10010   offsetp = offsets;
10011   origin_child_die = origin_die->child;
10012   while (origin_child_die && origin_child_die->tag)
10013     {
10014       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
10015       while (offsetp < offsets_end
10016              && offsetp->sect_off < origin_child_die->offset.sect_off)
10017         offsetp++;
10018       if (offsetp >= offsets_end
10019           || offsetp->sect_off > origin_child_die->offset.sect_off)
10020         {
10021           /* Found that ORIGIN_CHILD_DIE is really not referenced.  */
10022           process_die (origin_child_die, origin_cu);
10023         }
10024       origin_child_die = sibling_die (origin_child_die);
10025     }
10026   origin_cu->list_in_scope = origin_previous_list_in_scope;
10027
10028   do_cleanups (cleanups);
10029 }
10030
10031 static void
10032 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
10033 {
10034   struct objfile *objfile = cu->objfile;
10035   struct context_stack *new;
10036   CORE_ADDR lowpc;
10037   CORE_ADDR highpc;
10038   struct die_info *child_die;
10039   struct attribute *attr, *call_line, *call_file;
10040   const char *name;
10041   CORE_ADDR baseaddr;
10042   struct block *block;
10043   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
10044   VEC (symbolp) *template_args = NULL;
10045   struct template_symbol *templ_func = NULL;
10046
10047   if (inlined_func)
10048     {
10049       /* If we do not have call site information, we can't show the
10050          caller of this inlined function.  That's too confusing, so
10051          only use the scope for local variables.  */
10052       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
10053       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
10054       if (call_line == NULL || call_file == NULL)
10055         {
10056           read_lexical_block_scope (die, cu);
10057           return;
10058         }
10059     }
10060
10061   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10062
10063   name = dwarf2_name (die, cu);
10064
10065   /* Ignore functions with missing or empty names.  These are actually
10066      illegal according to the DWARF standard.  */
10067   if (name == NULL)
10068     {
10069       complaint (&symfile_complaints,
10070                  _("missing name for subprogram DIE at %d"),
10071                  die->offset.sect_off);
10072       return;
10073     }
10074
10075   /* Ignore functions with missing or invalid low and high pc attributes.  */
10076   if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
10077     {
10078       attr = dwarf2_attr (die, DW_AT_external, cu);
10079       if (!attr || !DW_UNSND (attr))
10080         complaint (&symfile_complaints,
10081                    _("cannot get low and high bounds "
10082                      "for subprogram DIE at %d"),
10083                    die->offset.sect_off);
10084       return;
10085     }
10086
10087   lowpc += baseaddr;
10088   highpc += baseaddr;
10089
10090   /* If we have any template arguments, then we must allocate a
10091      different sort of symbol.  */
10092   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
10093     {
10094       if (child_die->tag == DW_TAG_template_type_param
10095           || child_die->tag == DW_TAG_template_value_param)
10096         {
10097           templ_func = allocate_template_symbol (objfile);
10098           templ_func->base.is_cplus_template_function = 1;
10099           break;
10100         }
10101     }
10102
10103   new = push_context (0, lowpc);
10104   new->name = new_symbol_full (die, read_type_die (die, cu), cu,
10105                                (struct symbol *) templ_func);
10106
10107   /* If there is a location expression for DW_AT_frame_base, record
10108      it.  */
10109   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
10110   if (attr)
10111     dwarf2_symbol_mark_computed (attr, new->name, cu, 1);
10112
10113   cu->list_in_scope = &local_symbols;
10114
10115   if (die->child != NULL)
10116     {
10117       child_die = die->child;
10118       while (child_die && child_die->tag)
10119         {
10120           if (child_die->tag == DW_TAG_template_type_param
10121               || child_die->tag == DW_TAG_template_value_param)
10122             {
10123               struct symbol *arg = new_symbol (child_die, NULL, cu);
10124
10125               if (arg != NULL)
10126                 VEC_safe_push (symbolp, template_args, arg);
10127             }
10128           else
10129             process_die (child_die, cu);
10130           child_die = sibling_die (child_die);
10131         }
10132     }
10133
10134   inherit_abstract_dies (die, cu);
10135
10136   /* If we have a DW_AT_specification, we might need to import using
10137      directives from the context of the specification DIE.  See the
10138      comment in determine_prefix.  */
10139   if (cu->language == language_cplus
10140       && dwarf2_attr (die, DW_AT_specification, cu))
10141     {
10142       struct dwarf2_cu *spec_cu = cu;
10143       struct die_info *spec_die = die_specification (die, &spec_cu);
10144
10145       while (spec_die)
10146         {
10147           child_die = spec_die->child;
10148           while (child_die && child_die->tag)
10149             {
10150               if (child_die->tag == DW_TAG_imported_module)
10151                 process_die (child_die, spec_cu);
10152               child_die = sibling_die (child_die);
10153             }
10154
10155           /* In some cases, GCC generates specification DIEs that
10156              themselves contain DW_AT_specification attributes.  */
10157           spec_die = die_specification (spec_die, &spec_cu);
10158         }
10159     }
10160
10161   new = pop_context ();
10162   /* Make a block for the local symbols within.  */
10163   block = finish_block (new->name, &local_symbols, new->old_blocks,
10164                         lowpc, highpc, objfile);
10165
10166   /* For C++, set the block's scope.  */
10167   if ((cu->language == language_cplus || cu->language == language_fortran)
10168       && cu->processing_has_namespace_info)
10169     block_set_scope (block, determine_prefix (die, cu),
10170                      &objfile->objfile_obstack);
10171
10172   /* If we have address ranges, record them.  */
10173   dwarf2_record_block_ranges (die, block, baseaddr, cu);
10174
10175   /* Attach template arguments to function.  */
10176   if (! VEC_empty (symbolp, template_args))
10177     {
10178       gdb_assert (templ_func != NULL);
10179
10180       templ_func->n_template_arguments = VEC_length (symbolp, template_args);
10181       templ_func->template_arguments
10182         = obstack_alloc (&objfile->objfile_obstack,
10183                          (templ_func->n_template_arguments
10184                           * sizeof (struct symbol *)));
10185       memcpy (templ_func->template_arguments,
10186               VEC_address (symbolp, template_args),
10187               (templ_func->n_template_arguments * sizeof (struct symbol *)));
10188       VEC_free (symbolp, template_args);
10189     }
10190
10191   /* In C++, we can have functions nested inside functions (e.g., when
10192      a function declares a class that has methods).  This means that
10193      when we finish processing a function scope, we may need to go
10194      back to building a containing block's symbol lists.  */
10195   local_symbols = new->locals;
10196   using_directives = new->using_directives;
10197
10198   /* If we've finished processing a top-level function, subsequent
10199      symbols go in the file symbol list.  */
10200   if (outermost_context_p ())
10201     cu->list_in_scope = &file_symbols;
10202 }
10203
10204 /* Process all the DIES contained within a lexical block scope.  Start
10205    a new scope, process the dies, and then close the scope.  */
10206
10207 static void
10208 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
10209 {
10210   struct objfile *objfile = cu->objfile;
10211   struct context_stack *new;
10212   CORE_ADDR lowpc, highpc;
10213   struct die_info *child_die;
10214   CORE_ADDR baseaddr;
10215
10216   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10217
10218   /* Ignore blocks with missing or invalid low and high pc attributes.  */
10219   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
10220      as multiple lexical blocks?  Handling children in a sane way would
10221      be nasty.  Might be easier to properly extend generic blocks to
10222      describe ranges.  */
10223   if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
10224     return;
10225   lowpc += baseaddr;
10226   highpc += baseaddr;
10227
10228   push_context (0, lowpc);
10229   if (die->child != NULL)
10230     {
10231       child_die = die->child;
10232       while (child_die && child_die->tag)
10233         {
10234           process_die (child_die, cu);
10235           child_die = sibling_die (child_die);
10236         }
10237     }
10238   new = pop_context ();
10239
10240   if (local_symbols != NULL || using_directives != NULL)
10241     {
10242       struct block *block
10243         = finish_block (0, &local_symbols, new->old_blocks, new->start_addr,
10244                         highpc, objfile);
10245
10246       /* Note that recording ranges after traversing children, as we
10247          do here, means that recording a parent's ranges entails
10248          walking across all its children's ranges as they appear in
10249          the address map, which is quadratic behavior.
10250
10251          It would be nicer to record the parent's ranges before
10252          traversing its children, simply overriding whatever you find
10253          there.  But since we don't even decide whether to create a
10254          block until after we've traversed its children, that's hard
10255          to do.  */
10256       dwarf2_record_block_ranges (die, block, baseaddr, cu);
10257     }
10258   local_symbols = new->locals;
10259   using_directives = new->using_directives;
10260 }
10261
10262 /* Read in DW_TAG_GNU_call_site and insert it to CU->call_site_htab.  */
10263
10264 static void
10265 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
10266 {
10267   struct objfile *objfile = cu->objfile;
10268   struct gdbarch *gdbarch = get_objfile_arch (objfile);
10269   CORE_ADDR pc, baseaddr;
10270   struct attribute *attr;
10271   struct call_site *call_site, call_site_local;
10272   void **slot;
10273   int nparams;
10274   struct die_info *child_die;
10275
10276   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10277
10278   attr = dwarf2_attr (die, DW_AT_low_pc, cu);
10279   if (!attr)
10280     {
10281       complaint (&symfile_complaints,
10282                  _("missing DW_AT_low_pc for DW_TAG_GNU_call_site "
10283                    "DIE 0x%x [in module %s]"),
10284                  die->offset.sect_off, objfile->name);
10285       return;
10286     }
10287   pc = DW_ADDR (attr) + baseaddr;
10288
10289   if (cu->call_site_htab == NULL)
10290     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
10291                                                NULL, &objfile->objfile_obstack,
10292                                                hashtab_obstack_allocate, NULL);
10293   call_site_local.pc = pc;
10294   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
10295   if (*slot != NULL)
10296     {
10297       complaint (&symfile_complaints,
10298                  _("Duplicate PC %s for DW_TAG_GNU_call_site "
10299                    "DIE 0x%x [in module %s]"),
10300                  paddress (gdbarch, pc), die->offset.sect_off, objfile->name);
10301       return;
10302     }
10303
10304   /* Count parameters at the caller.  */
10305
10306   nparams = 0;
10307   for (child_die = die->child; child_die && child_die->tag;
10308        child_die = sibling_die (child_die))
10309     {
10310       if (child_die->tag != DW_TAG_GNU_call_site_parameter)
10311         {
10312           complaint (&symfile_complaints,
10313                      _("Tag %d is not DW_TAG_GNU_call_site_parameter in "
10314                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
10315                      child_die->tag, child_die->offset.sect_off, objfile->name);
10316           continue;
10317         }
10318
10319       nparams++;
10320     }
10321
10322   call_site = obstack_alloc (&objfile->objfile_obstack,
10323                              (sizeof (*call_site)
10324                               + (sizeof (*call_site->parameter)
10325                                  * (nparams - 1))));
10326   *slot = call_site;
10327   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
10328   call_site->pc = pc;
10329
10330   if (dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
10331     {
10332       struct die_info *func_die;
10333
10334       /* Skip also over DW_TAG_inlined_subroutine.  */
10335       for (func_die = die->parent;
10336            func_die && func_die->tag != DW_TAG_subprogram
10337            && func_die->tag != DW_TAG_subroutine_type;
10338            func_die = func_die->parent);
10339
10340       /* DW_AT_GNU_all_call_sites is a superset
10341          of DW_AT_GNU_all_tail_call_sites.  */
10342       if (func_die
10343           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
10344           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
10345         {
10346           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
10347              not complete.  But keep CALL_SITE for look ups via call_site_htab,
10348              both the initial caller containing the real return address PC and
10349              the final callee containing the current PC of a chain of tail
10350              calls do not need to have the tail call list complete.  But any
10351              function candidate for a virtual tail call frame searched via
10352              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
10353              determined unambiguously.  */
10354         }
10355       else
10356         {
10357           struct type *func_type = NULL;
10358
10359           if (func_die)
10360             func_type = get_die_type (func_die, cu);
10361           if (func_type != NULL)
10362             {
10363               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
10364
10365               /* Enlist this call site to the function.  */
10366               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
10367               TYPE_TAIL_CALL_LIST (func_type) = call_site;
10368             }
10369           else
10370             complaint (&symfile_complaints,
10371                        _("Cannot find function owning DW_TAG_GNU_call_site "
10372                          "DIE 0x%x [in module %s]"),
10373                        die->offset.sect_off, objfile->name);
10374         }
10375     }
10376
10377   attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
10378   if (attr == NULL)
10379     attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
10380   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
10381   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
10382     /* Keep NULL DWARF_BLOCK.  */;
10383   else if (attr_form_is_block (attr))
10384     {
10385       struct dwarf2_locexpr_baton *dlbaton;
10386
10387       dlbaton = obstack_alloc (&objfile->objfile_obstack, sizeof (*dlbaton));
10388       dlbaton->data = DW_BLOCK (attr)->data;
10389       dlbaton->size = DW_BLOCK (attr)->size;
10390       dlbaton->per_cu = cu->per_cu;
10391
10392       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
10393     }
10394   else if (attr_form_is_ref (attr))
10395     {
10396       struct dwarf2_cu *target_cu = cu;
10397       struct die_info *target_die;
10398
10399       target_die = follow_die_ref (die, attr, &target_cu);
10400       gdb_assert (target_cu->objfile == objfile);
10401       if (die_is_declaration (target_die, target_cu))
10402         {
10403           const char *target_physname = NULL;
10404           struct attribute *target_attr;
10405
10406           /* Prefer the mangled name; otherwise compute the demangled one.  */
10407           target_attr = dwarf2_attr (target_die, DW_AT_linkage_name, target_cu);
10408           if (target_attr == NULL)
10409             target_attr = dwarf2_attr (target_die, DW_AT_MIPS_linkage_name,
10410                                        target_cu);
10411           if (target_attr != NULL && DW_STRING (target_attr) != NULL)
10412             target_physname = DW_STRING (target_attr);
10413           else
10414             target_physname = dwarf2_physname (NULL, target_die, target_cu);
10415           if (target_physname == NULL)
10416             complaint (&symfile_complaints,
10417                        _("DW_AT_GNU_call_site_target target DIE has invalid "
10418                          "physname, for referencing DIE 0x%x [in module %s]"),
10419                        die->offset.sect_off, objfile->name);
10420           else
10421             SET_FIELD_PHYSNAME (call_site->target, target_physname);
10422         }
10423       else
10424         {
10425           CORE_ADDR lowpc;
10426
10427           /* DW_AT_entry_pc should be preferred.  */
10428           if (!dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL))
10429             complaint (&symfile_complaints,
10430                        _("DW_AT_GNU_call_site_target target DIE has invalid "
10431                          "low pc, for referencing DIE 0x%x [in module %s]"),
10432                        die->offset.sect_off, objfile->name);
10433           else
10434             SET_FIELD_PHYSADDR (call_site->target, lowpc + baseaddr);
10435         }
10436     }
10437   else
10438     complaint (&symfile_complaints,
10439                _("DW_TAG_GNU_call_site DW_AT_GNU_call_site_target is neither "
10440                  "block nor reference, for DIE 0x%x [in module %s]"),
10441                die->offset.sect_off, objfile->name);
10442
10443   call_site->per_cu = cu->per_cu;
10444
10445   for (child_die = die->child;
10446        child_die && child_die->tag;
10447        child_die = sibling_die (child_die))
10448     {
10449       struct call_site_parameter *parameter;
10450       struct attribute *loc, *origin;
10451
10452       if (child_die->tag != DW_TAG_GNU_call_site_parameter)
10453         {
10454           /* Already printed the complaint above.  */
10455           continue;
10456         }
10457
10458       gdb_assert (call_site->parameter_count < nparams);
10459       parameter = &call_site->parameter[call_site->parameter_count];
10460
10461       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
10462          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
10463          register is contained in DW_AT_GNU_call_site_value.  */
10464
10465       loc = dwarf2_attr (child_die, DW_AT_location, cu);
10466       origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
10467       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
10468         {
10469           sect_offset offset;
10470
10471           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
10472           offset = dwarf2_get_ref_die_offset (origin);
10473           if (!offset_in_cu_p (&cu->header, offset))
10474             {
10475               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
10476                  binding can be done only inside one CU.  Such referenced DIE
10477                  therefore cannot be even moved to DW_TAG_partial_unit.  */
10478               complaint (&symfile_complaints,
10479                          _("DW_AT_abstract_origin offset is not in CU for "
10480                            "DW_TAG_GNU_call_site child DIE 0x%x "
10481                            "[in module %s]"),
10482                          child_die->offset.sect_off, objfile->name);
10483               continue;
10484             }
10485           parameter->u.param_offset.cu_off = (offset.sect_off
10486                                               - cu->header.offset.sect_off);
10487         }
10488       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
10489         {
10490           complaint (&symfile_complaints,
10491                      _("No DW_FORM_block* DW_AT_location for "
10492                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
10493                      child_die->offset.sect_off, objfile->name);
10494           continue;
10495         }
10496       else
10497         {
10498           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
10499             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
10500           if (parameter->u.dwarf_reg != -1)
10501             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
10502           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
10503                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
10504                                              &parameter->u.fb_offset))
10505             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
10506           else
10507             {
10508               complaint (&symfile_complaints,
10509                          _("Only single DW_OP_reg or DW_OP_fbreg is supported "
10510                            "for DW_FORM_block* DW_AT_location is supported for "
10511                            "DW_TAG_GNU_call_site child DIE 0x%x "
10512                            "[in module %s]"),
10513                          child_die->offset.sect_off, objfile->name);
10514               continue;
10515             }
10516         }
10517
10518       attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
10519       if (!attr_form_is_block (attr))
10520         {
10521           complaint (&symfile_complaints,
10522                      _("No DW_FORM_block* DW_AT_GNU_call_site_value for "
10523                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
10524                      child_die->offset.sect_off, objfile->name);
10525           continue;
10526         }
10527       parameter->value = DW_BLOCK (attr)->data;
10528       parameter->value_size = DW_BLOCK (attr)->size;
10529
10530       /* Parameters are not pre-cleared by memset above.  */
10531       parameter->data_value = NULL;
10532       parameter->data_value_size = 0;
10533       call_site->parameter_count++;
10534
10535       attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
10536       if (attr)
10537         {
10538           if (!attr_form_is_block (attr))
10539             complaint (&symfile_complaints,
10540                        _("No DW_FORM_block* DW_AT_GNU_call_site_data_value for "
10541                          "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
10542                        child_die->offset.sect_off, objfile->name);
10543           else
10544             {
10545               parameter->data_value = DW_BLOCK (attr)->data;
10546               parameter->data_value_size = DW_BLOCK (attr)->size;
10547             }
10548         }
10549     }
10550 }
10551
10552 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
10553    Return 1 if the attributes are present and valid, otherwise, return 0.
10554    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
10555
10556 static int
10557 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
10558                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
10559                     struct partial_symtab *ranges_pst)
10560 {
10561   struct objfile *objfile = cu->objfile;
10562   struct comp_unit_head *cu_header = &cu->header;
10563   bfd *obfd = objfile->obfd;
10564   unsigned int addr_size = cu_header->addr_size;
10565   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
10566   /* Base address selection entry.  */
10567   CORE_ADDR base;
10568   int found_base;
10569   unsigned int dummy;
10570   const gdb_byte *buffer;
10571   CORE_ADDR marker;
10572   int low_set;
10573   CORE_ADDR low = 0;
10574   CORE_ADDR high = 0;
10575   CORE_ADDR baseaddr;
10576
10577   found_base = cu->base_known;
10578   base = cu->base_address;
10579
10580   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
10581   if (offset >= dwarf2_per_objfile->ranges.size)
10582     {
10583       complaint (&symfile_complaints,
10584                  _("Offset %d out of bounds for DW_AT_ranges attribute"),
10585                  offset);
10586       return 0;
10587     }
10588   buffer = dwarf2_per_objfile->ranges.buffer + offset;
10589
10590   /* Read in the largest possible address.  */
10591   marker = read_address (obfd, buffer, cu, &dummy);
10592   if ((marker & mask) == mask)
10593     {
10594       /* If we found the largest possible address, then
10595          read the base address.  */
10596       base = read_address (obfd, buffer + addr_size, cu, &dummy);
10597       buffer += 2 * addr_size;
10598       offset += 2 * addr_size;
10599       found_base = 1;
10600     }
10601
10602   low_set = 0;
10603
10604   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10605
10606   while (1)
10607     {
10608       CORE_ADDR range_beginning, range_end;
10609
10610       range_beginning = read_address (obfd, buffer, cu, &dummy);
10611       buffer += addr_size;
10612       range_end = read_address (obfd, buffer, cu, &dummy);
10613       buffer += addr_size;
10614       offset += 2 * addr_size;
10615
10616       /* An end of list marker is a pair of zero addresses.  */
10617       if (range_beginning == 0 && range_end == 0)
10618         /* Found the end of list entry.  */
10619         break;
10620
10621       /* Each base address selection entry is a pair of 2 values.
10622          The first is the largest possible address, the second is
10623          the base address.  Check for a base address here.  */
10624       if ((range_beginning & mask) == mask)
10625         {
10626           /* If we found the largest possible address, then
10627              read the base address.  */
10628           base = read_address (obfd, buffer + addr_size, cu, &dummy);
10629           found_base = 1;
10630           continue;
10631         }
10632
10633       if (!found_base)
10634         {
10635           /* We have no valid base address for the ranges
10636              data.  */
10637           complaint (&symfile_complaints,
10638                      _("Invalid .debug_ranges data (no base address)"));
10639           return 0;
10640         }
10641
10642       if (range_beginning > range_end)
10643         {
10644           /* Inverted range entries are invalid.  */
10645           complaint (&symfile_complaints,
10646                      _("Invalid .debug_ranges data (inverted range)"));
10647           return 0;
10648         }
10649
10650       /* Empty range entries have no effect.  */
10651       if (range_beginning == range_end)
10652         continue;
10653
10654       range_beginning += base;
10655       range_end += base;
10656
10657       /* A not-uncommon case of bad debug info.
10658          Don't pollute the addrmap with bad data.  */
10659       if (range_beginning + baseaddr == 0
10660           && !dwarf2_per_objfile->has_section_at_zero)
10661         {
10662           complaint (&symfile_complaints,
10663                      _(".debug_ranges entry has start address of zero"
10664                        " [in module %s]"), objfile->name);
10665           continue;
10666         }
10667
10668       if (ranges_pst != NULL)
10669         addrmap_set_empty (objfile->psymtabs_addrmap,
10670                            range_beginning + baseaddr,
10671                            range_end - 1 + baseaddr,
10672                            ranges_pst);
10673
10674       /* FIXME: This is recording everything as a low-high
10675          segment of consecutive addresses.  We should have a
10676          data structure for discontiguous block ranges
10677          instead.  */
10678       if (! low_set)
10679         {
10680           low = range_beginning;
10681           high = range_end;
10682           low_set = 1;
10683         }
10684       else
10685         {
10686           if (range_beginning < low)
10687             low = range_beginning;
10688           if (range_end > high)
10689             high = range_end;
10690         }
10691     }
10692
10693   if (! low_set)
10694     /* If the first entry is an end-of-list marker, the range
10695        describes an empty scope, i.e. no instructions.  */
10696     return 0;
10697
10698   if (low_return)
10699     *low_return = low;
10700   if (high_return)
10701     *high_return = high;
10702   return 1;
10703 }
10704
10705 /* Get low and high pc attributes from a die.  Return 1 if the attributes
10706    are present and valid, otherwise, return 0.  Return -1 if the range is
10707    discontinuous, i.e. derived from DW_AT_ranges information.  */
10708
10709 static int
10710 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
10711                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
10712                       struct partial_symtab *pst)
10713 {
10714   struct attribute *attr;
10715   struct attribute *attr_high;
10716   CORE_ADDR low = 0;
10717   CORE_ADDR high = 0;
10718   int ret = 0;
10719
10720   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
10721   if (attr_high)
10722     {
10723       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
10724       if (attr)
10725         {
10726           low = DW_ADDR (attr);
10727           if (attr_high->form == DW_FORM_addr
10728               || attr_high->form == DW_FORM_GNU_addr_index)
10729             high = DW_ADDR (attr_high);
10730           else
10731             high = low + DW_UNSND (attr_high);
10732         }
10733       else
10734         /* Found high w/o low attribute.  */
10735         return 0;
10736
10737       /* Found consecutive range of addresses.  */
10738       ret = 1;
10739     }
10740   else
10741     {
10742       attr = dwarf2_attr (die, DW_AT_ranges, cu);
10743       if (attr != NULL)
10744         {
10745           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
10746              We take advantage of the fact that DW_AT_ranges does not appear
10747              in DW_TAG_compile_unit of DWO files.  */
10748           int need_ranges_base = die->tag != DW_TAG_compile_unit;
10749           unsigned int ranges_offset = (DW_UNSND (attr)
10750                                         + (need_ranges_base
10751                                            ? cu->ranges_base
10752                                            : 0));
10753
10754           /* Value of the DW_AT_ranges attribute is the offset in the
10755              .debug_ranges section.  */
10756           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
10757             return 0;
10758           /* Found discontinuous range of addresses.  */
10759           ret = -1;
10760         }
10761     }
10762
10763   /* read_partial_die has also the strict LOW < HIGH requirement.  */
10764   if (high <= low)
10765     return 0;
10766
10767   /* When using the GNU linker, .gnu.linkonce. sections are used to
10768      eliminate duplicate copies of functions and vtables and such.
10769      The linker will arbitrarily choose one and discard the others.
10770      The AT_*_pc values for such functions refer to local labels in
10771      these sections.  If the section from that file was discarded, the
10772      labels are not in the output, so the relocs get a value of 0.
10773      If this is a discarded function, mark the pc bounds as invalid,
10774      so that GDB will ignore it.  */
10775   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
10776     return 0;
10777
10778   *lowpc = low;
10779   if (highpc)
10780     *highpc = high;
10781   return ret;
10782 }
10783
10784 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
10785    its low and high PC addresses.  Do nothing if these addresses could not
10786    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
10787    and HIGHPC to the high address if greater than HIGHPC.  */
10788
10789 static void
10790 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
10791                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
10792                                  struct dwarf2_cu *cu)
10793 {
10794   CORE_ADDR low, high;
10795   struct die_info *child = die->child;
10796
10797   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL))
10798     {
10799       *lowpc = min (*lowpc, low);
10800       *highpc = max (*highpc, high);
10801     }
10802
10803   /* If the language does not allow nested subprograms (either inside
10804      subprograms or lexical blocks), we're done.  */
10805   if (cu->language != language_ada)
10806     return;
10807
10808   /* Check all the children of the given DIE.  If it contains nested
10809      subprograms, then check their pc bounds.  Likewise, we need to
10810      check lexical blocks as well, as they may also contain subprogram
10811      definitions.  */
10812   while (child && child->tag)
10813     {
10814       if (child->tag == DW_TAG_subprogram
10815           || child->tag == DW_TAG_lexical_block)
10816         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
10817       child = sibling_die (child);
10818     }
10819 }
10820
10821 /* Get the low and high pc's represented by the scope DIE, and store
10822    them in *LOWPC and *HIGHPC.  If the correct values can't be
10823    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
10824
10825 static void
10826 get_scope_pc_bounds (struct die_info *die,
10827                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
10828                      struct dwarf2_cu *cu)
10829 {
10830   CORE_ADDR best_low = (CORE_ADDR) -1;
10831   CORE_ADDR best_high = (CORE_ADDR) 0;
10832   CORE_ADDR current_low, current_high;
10833
10834   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL))
10835     {
10836       best_low = current_low;
10837       best_high = current_high;
10838     }
10839   else
10840     {
10841       struct die_info *child = die->child;
10842
10843       while (child && child->tag)
10844         {
10845           switch (child->tag) {
10846           case DW_TAG_subprogram:
10847             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
10848             break;
10849           case DW_TAG_namespace:
10850           case DW_TAG_module:
10851             /* FIXME: carlton/2004-01-16: Should we do this for
10852                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
10853                that current GCC's always emit the DIEs corresponding
10854                to definitions of methods of classes as children of a
10855                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
10856                the DIEs giving the declarations, which could be
10857                anywhere).  But I don't see any reason why the
10858                standards says that they have to be there.  */
10859             get_scope_pc_bounds (child, &current_low, &current_high, cu);
10860
10861             if (current_low != ((CORE_ADDR) -1))
10862               {
10863                 best_low = min (best_low, current_low);
10864                 best_high = max (best_high, current_high);
10865               }
10866             break;
10867           default:
10868             /* Ignore.  */
10869             break;
10870           }
10871
10872           child = sibling_die (child);
10873         }
10874     }
10875
10876   *lowpc = best_low;
10877   *highpc = best_high;
10878 }
10879
10880 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
10881    in DIE.  */
10882
10883 static void
10884 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
10885                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
10886 {
10887   struct objfile *objfile = cu->objfile;
10888   struct attribute *attr;
10889   struct attribute *attr_high;
10890
10891   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
10892   if (attr_high)
10893     {
10894       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
10895       if (attr)
10896         {
10897           CORE_ADDR low = DW_ADDR (attr);
10898           CORE_ADDR high;
10899           if (attr_high->form == DW_FORM_addr
10900               || attr_high->form == DW_FORM_GNU_addr_index)
10901             high = DW_ADDR (attr_high);
10902           else
10903             high = low + DW_UNSND (attr_high);
10904
10905           record_block_range (block, baseaddr + low, baseaddr + high - 1);
10906         }
10907     }
10908
10909   attr = dwarf2_attr (die, DW_AT_ranges, cu);
10910   if (attr)
10911     {
10912       bfd *obfd = objfile->obfd;
10913       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
10914          We take advantage of the fact that DW_AT_ranges does not appear
10915          in DW_TAG_compile_unit of DWO files.  */
10916       int need_ranges_base = die->tag != DW_TAG_compile_unit;
10917
10918       /* The value of the DW_AT_ranges attribute is the offset of the
10919          address range list in the .debug_ranges section.  */
10920       unsigned long offset = (DW_UNSND (attr)
10921                               + (need_ranges_base ? cu->ranges_base : 0));
10922       const gdb_byte *buffer;
10923
10924       /* For some target architectures, but not others, the
10925          read_address function sign-extends the addresses it returns.
10926          To recognize base address selection entries, we need a
10927          mask.  */
10928       unsigned int addr_size = cu->header.addr_size;
10929       CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
10930
10931       /* The base address, to which the next pair is relative.  Note
10932          that this 'base' is a DWARF concept: most entries in a range
10933          list are relative, to reduce the number of relocs against the
10934          debugging information.  This is separate from this function's
10935          'baseaddr' argument, which GDB uses to relocate debugging
10936          information from a shared library based on the address at
10937          which the library was loaded.  */
10938       CORE_ADDR base = cu->base_address;
10939       int base_known = cu->base_known;
10940
10941       dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
10942       if (offset >= dwarf2_per_objfile->ranges.size)
10943         {
10944           complaint (&symfile_complaints,
10945                      _("Offset %lu out of bounds for DW_AT_ranges attribute"),
10946                      offset);
10947           return;
10948         }
10949       buffer = dwarf2_per_objfile->ranges.buffer + offset;
10950
10951       for (;;)
10952         {
10953           unsigned int bytes_read;
10954           CORE_ADDR start, end;
10955
10956           start = read_address (obfd, buffer, cu, &bytes_read);
10957           buffer += bytes_read;
10958           end = read_address (obfd, buffer, cu, &bytes_read);
10959           buffer += bytes_read;
10960
10961           /* Did we find the end of the range list?  */
10962           if (start == 0 && end == 0)
10963             break;
10964
10965           /* Did we find a base address selection entry?  */
10966           else if ((start & base_select_mask) == base_select_mask)
10967             {
10968               base = end;
10969               base_known = 1;
10970             }
10971
10972           /* We found an ordinary address range.  */
10973           else
10974             {
10975               if (!base_known)
10976                 {
10977                   complaint (&symfile_complaints,
10978                              _("Invalid .debug_ranges data "
10979                                "(no base address)"));
10980                   return;
10981                 }
10982
10983               if (start > end)
10984                 {
10985                   /* Inverted range entries are invalid.  */
10986                   complaint (&symfile_complaints,
10987                              _("Invalid .debug_ranges data "
10988                                "(inverted range)"));
10989                   return;
10990                 }
10991
10992               /* Empty range entries have no effect.  */
10993               if (start == end)
10994                 continue;
10995
10996               start += base + baseaddr;
10997               end += base + baseaddr;
10998
10999               /* A not-uncommon case of bad debug info.
11000                  Don't pollute the addrmap with bad data.  */
11001               if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
11002                 {
11003                   complaint (&symfile_complaints,
11004                              _(".debug_ranges entry has start address of zero"
11005                                " [in module %s]"), objfile->name);
11006                   continue;
11007                 }
11008
11009               record_block_range (block, start, end - 1);
11010             }
11011         }
11012     }
11013 }
11014
11015 /* Check whether the producer field indicates either of GCC < 4.6, or the
11016    Intel C/C++ compiler, and cache the result in CU.  */
11017
11018 static void
11019 check_producer (struct dwarf2_cu *cu)
11020 {
11021   const char *cs;
11022   int major, minor, release;
11023
11024   if (cu->producer == NULL)
11025     {
11026       /* For unknown compilers expect their behavior is DWARF version
11027          compliant.
11028
11029          GCC started to support .debug_types sections by -gdwarf-4 since
11030          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
11031          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
11032          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
11033          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
11034     }
11035   else if (strncmp (cu->producer, "GNU ", strlen ("GNU ")) == 0)
11036     {
11037       /* Skip any identifier after "GNU " - such as "C++" or "Java".  */
11038
11039       cs = &cu->producer[strlen ("GNU ")];
11040       while (*cs && !isdigit (*cs))
11041         cs++;
11042       if (sscanf (cs, "%d.%d.%d", &major, &minor, &release) != 3)
11043         {
11044           /* Not recognized as GCC.  */
11045         }
11046       else
11047         {
11048           cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
11049           cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
11050         }
11051     }
11052   else if (strncmp (cu->producer, "Intel(R) C", strlen ("Intel(R) C")) == 0)
11053     cu->producer_is_icc = 1;
11054   else
11055     {
11056       /* For other non-GCC compilers, expect their behavior is DWARF version
11057          compliant.  */
11058     }
11059
11060   cu->checked_producer = 1;
11061 }
11062
11063 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
11064    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
11065    during 4.6.0 experimental.  */
11066
11067 static int
11068 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
11069 {
11070   if (!cu->checked_producer)
11071     check_producer (cu);
11072
11073   return cu->producer_is_gxx_lt_4_6;
11074 }
11075
11076 /* Return the default accessibility type if it is not overriden by
11077    DW_AT_accessibility.  */
11078
11079 static enum dwarf_access_attribute
11080 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
11081 {
11082   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
11083     {
11084       /* The default DWARF 2 accessibility for members is public, the default
11085          accessibility for inheritance is private.  */
11086
11087       if (die->tag != DW_TAG_inheritance)
11088         return DW_ACCESS_public;
11089       else
11090         return DW_ACCESS_private;
11091     }
11092   else
11093     {
11094       /* DWARF 3+ defines the default accessibility a different way.  The same
11095          rules apply now for DW_TAG_inheritance as for the members and it only
11096          depends on the container kind.  */
11097
11098       if (die->parent->tag == DW_TAG_class_type)
11099         return DW_ACCESS_private;
11100       else
11101         return DW_ACCESS_public;
11102     }
11103 }
11104
11105 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
11106    offset.  If the attribute was not found return 0, otherwise return
11107    1.  If it was found but could not properly be handled, set *OFFSET
11108    to 0.  */
11109
11110 static int
11111 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
11112                              LONGEST *offset)
11113 {
11114   struct attribute *attr;
11115
11116   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
11117   if (attr != NULL)
11118     {
11119       *offset = 0;
11120
11121       /* Note that we do not check for a section offset first here.
11122          This is because DW_AT_data_member_location is new in DWARF 4,
11123          so if we see it, we can assume that a constant form is really
11124          a constant and not a section offset.  */
11125       if (attr_form_is_constant (attr))
11126         *offset = dwarf2_get_attr_constant_value (attr, 0);
11127       else if (attr_form_is_section_offset (attr))
11128         dwarf2_complex_location_expr_complaint ();
11129       else if (attr_form_is_block (attr))
11130         *offset = decode_locdesc (DW_BLOCK (attr), cu);
11131       else
11132         dwarf2_complex_location_expr_complaint ();
11133
11134       return 1;
11135     }
11136
11137   return 0;
11138 }
11139
11140 /* Add an aggregate field to the field list.  */
11141
11142 static void
11143 dwarf2_add_field (struct field_info *fip, struct die_info *die,
11144                   struct dwarf2_cu *cu)
11145 {
11146   struct objfile *objfile = cu->objfile;
11147   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11148   struct nextfield *new_field;
11149   struct attribute *attr;
11150   struct field *fp;
11151   const char *fieldname = "";
11152
11153   /* Allocate a new field list entry and link it in.  */
11154   new_field = (struct nextfield *) xmalloc (sizeof (struct nextfield));
11155   make_cleanup (xfree, new_field);
11156   memset (new_field, 0, sizeof (struct nextfield));
11157
11158   if (die->tag == DW_TAG_inheritance)
11159     {
11160       new_field->next = fip->baseclasses;
11161       fip->baseclasses = new_field;
11162     }
11163   else
11164     {
11165       new_field->next = fip->fields;
11166       fip->fields = new_field;
11167     }
11168   fip->nfields++;
11169
11170   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
11171   if (attr)
11172     new_field->accessibility = DW_UNSND (attr);
11173   else
11174     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
11175   if (new_field->accessibility != DW_ACCESS_public)
11176     fip->non_public_fields = 1;
11177
11178   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
11179   if (attr)
11180     new_field->virtuality = DW_UNSND (attr);
11181   else
11182     new_field->virtuality = DW_VIRTUALITY_none;
11183
11184   fp = &new_field->field;
11185
11186   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
11187     {
11188       LONGEST offset;
11189
11190       /* Data member other than a C++ static data member.  */
11191
11192       /* Get type of field.  */
11193       fp->type = die_type (die, cu);
11194
11195       SET_FIELD_BITPOS (*fp, 0);
11196
11197       /* Get bit size of field (zero if none).  */
11198       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
11199       if (attr)
11200         {
11201           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
11202         }
11203       else
11204         {
11205           FIELD_BITSIZE (*fp) = 0;
11206         }
11207
11208       /* Get bit offset of field.  */
11209       if (handle_data_member_location (die, cu, &offset))
11210         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
11211       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
11212       if (attr)
11213         {
11214           if (gdbarch_bits_big_endian (gdbarch))
11215             {
11216               /* For big endian bits, the DW_AT_bit_offset gives the
11217                  additional bit offset from the MSB of the containing
11218                  anonymous object to the MSB of the field.  We don't
11219                  have to do anything special since we don't need to
11220                  know the size of the anonymous object.  */
11221               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
11222             }
11223           else
11224             {
11225               /* For little endian bits, compute the bit offset to the
11226                  MSB of the anonymous object, subtract off the number of
11227                  bits from the MSB of the field to the MSB of the
11228                  object, and then subtract off the number of bits of
11229                  the field itself.  The result is the bit offset of
11230                  the LSB of the field.  */
11231               int anonymous_size;
11232               int bit_offset = DW_UNSND (attr);
11233
11234               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
11235               if (attr)
11236                 {
11237                   /* The size of the anonymous object containing
11238                      the bit field is explicit, so use the
11239                      indicated size (in bytes).  */
11240                   anonymous_size = DW_UNSND (attr);
11241                 }
11242               else
11243                 {
11244                   /* The size of the anonymous object containing
11245                      the bit field must be inferred from the type
11246                      attribute of the data member containing the
11247                      bit field.  */
11248                   anonymous_size = TYPE_LENGTH (fp->type);
11249                 }
11250               SET_FIELD_BITPOS (*fp,
11251                                 (FIELD_BITPOS (*fp)
11252                                  + anonymous_size * bits_per_byte
11253                                  - bit_offset - FIELD_BITSIZE (*fp)));
11254             }
11255         }
11256
11257       /* Get name of field.  */
11258       fieldname = dwarf2_name (die, cu);
11259       if (fieldname == NULL)
11260         fieldname = "";
11261
11262       /* The name is already allocated along with this objfile, so we don't
11263          need to duplicate it for the type.  */
11264       fp->name = fieldname;
11265
11266       /* Change accessibility for artificial fields (e.g. virtual table
11267          pointer or virtual base class pointer) to private.  */
11268       if (dwarf2_attr (die, DW_AT_artificial, cu))
11269         {
11270           FIELD_ARTIFICIAL (*fp) = 1;
11271           new_field->accessibility = DW_ACCESS_private;
11272           fip->non_public_fields = 1;
11273         }
11274     }
11275   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
11276     {
11277       /* C++ static member.  */
11278
11279       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
11280          is a declaration, but all versions of G++ as of this writing
11281          (so through at least 3.2.1) incorrectly generate
11282          DW_TAG_variable tags.  */
11283
11284       const char *physname;
11285
11286       /* Get name of field.  */
11287       fieldname = dwarf2_name (die, cu);
11288       if (fieldname == NULL)
11289         return;
11290
11291       attr = dwarf2_attr (die, DW_AT_const_value, cu);
11292       if (attr
11293           /* Only create a symbol if this is an external value.
11294              new_symbol checks this and puts the value in the global symbol
11295              table, which we want.  If it is not external, new_symbol
11296              will try to put the value in cu->list_in_scope which is wrong.  */
11297           && dwarf2_flag_true_p (die, DW_AT_external, cu))
11298         {
11299           /* A static const member, not much different than an enum as far as
11300              we're concerned, except that we can support more types.  */
11301           new_symbol (die, NULL, cu);
11302         }
11303
11304       /* Get physical name.  */
11305       physname = dwarf2_physname (fieldname, die, cu);
11306
11307       /* The name is already allocated along with this objfile, so we don't
11308          need to duplicate it for the type.  */
11309       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
11310       FIELD_TYPE (*fp) = die_type (die, cu);
11311       FIELD_NAME (*fp) = fieldname;
11312     }
11313   else if (die->tag == DW_TAG_inheritance)
11314     {
11315       LONGEST offset;
11316
11317       /* C++ base class field.  */
11318       if (handle_data_member_location (die, cu, &offset))
11319         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
11320       FIELD_BITSIZE (*fp) = 0;
11321       FIELD_TYPE (*fp) = die_type (die, cu);
11322       FIELD_NAME (*fp) = type_name_no_tag (fp->type);
11323       fip->nbaseclasses++;
11324     }
11325 }
11326
11327 /* Add a typedef defined in the scope of the FIP's class.  */
11328
11329 static void
11330 dwarf2_add_typedef (struct field_info *fip, struct die_info *die,
11331                     struct dwarf2_cu *cu)
11332 {
11333   struct objfile *objfile = cu->objfile;
11334   struct typedef_field_list *new_field;
11335   struct attribute *attr;
11336   struct typedef_field *fp;
11337   char *fieldname = "";
11338
11339   /* Allocate a new field list entry and link it in.  */
11340   new_field = xzalloc (sizeof (*new_field));
11341   make_cleanup (xfree, new_field);
11342
11343   gdb_assert (die->tag == DW_TAG_typedef);
11344
11345   fp = &new_field->field;
11346
11347   /* Get name of field.  */
11348   fp->name = dwarf2_name (die, cu);
11349   if (fp->name == NULL)
11350     return;
11351
11352   fp->type = read_type_die (die, cu);
11353
11354   new_field->next = fip->typedef_field_list;
11355   fip->typedef_field_list = new_field;
11356   fip->typedef_field_list_count++;
11357 }
11358
11359 /* Create the vector of fields, and attach it to the type.  */
11360
11361 static void
11362 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
11363                               struct dwarf2_cu *cu)
11364 {
11365   int nfields = fip->nfields;
11366
11367   /* Record the field count, allocate space for the array of fields,
11368      and create blank accessibility bitfields if necessary.  */
11369   TYPE_NFIELDS (type) = nfields;
11370   TYPE_FIELDS (type) = (struct field *)
11371     TYPE_ALLOC (type, sizeof (struct field) * nfields);
11372   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
11373
11374   if (fip->non_public_fields && cu->language != language_ada)
11375     {
11376       ALLOCATE_CPLUS_STRUCT_TYPE (type);
11377
11378       TYPE_FIELD_PRIVATE_BITS (type) =
11379         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
11380       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
11381
11382       TYPE_FIELD_PROTECTED_BITS (type) =
11383         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
11384       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
11385
11386       TYPE_FIELD_IGNORE_BITS (type) =
11387         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
11388       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
11389     }
11390
11391   /* If the type has baseclasses, allocate and clear a bit vector for
11392      TYPE_FIELD_VIRTUAL_BITS.  */
11393   if (fip->nbaseclasses && cu->language != language_ada)
11394     {
11395       int num_bytes = B_BYTES (fip->nbaseclasses);
11396       unsigned char *pointer;
11397
11398       ALLOCATE_CPLUS_STRUCT_TYPE (type);
11399       pointer = TYPE_ALLOC (type, num_bytes);
11400       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
11401       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
11402       TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
11403     }
11404
11405   /* Copy the saved-up fields into the field vector.  Start from the head of
11406      the list, adding to the tail of the field array, so that they end up in
11407      the same order in the array in which they were added to the list.  */
11408   while (nfields-- > 0)
11409     {
11410       struct nextfield *fieldp;
11411
11412       if (fip->fields)
11413         {
11414           fieldp = fip->fields;
11415           fip->fields = fieldp->next;
11416         }
11417       else
11418         {
11419           fieldp = fip->baseclasses;
11420           fip->baseclasses = fieldp->next;
11421         }
11422
11423       TYPE_FIELD (type, nfields) = fieldp->field;
11424       switch (fieldp->accessibility)
11425         {
11426         case DW_ACCESS_private:
11427           if (cu->language != language_ada)
11428             SET_TYPE_FIELD_PRIVATE (type, nfields);
11429           break;
11430
11431         case DW_ACCESS_protected:
11432           if (cu->language != language_ada)
11433             SET_TYPE_FIELD_PROTECTED (type, nfields);
11434           break;
11435
11436         case DW_ACCESS_public:
11437           break;
11438
11439         default:
11440           /* Unknown accessibility.  Complain and treat it as public.  */
11441           {
11442             complaint (&symfile_complaints, _("unsupported accessibility %d"),
11443                        fieldp->accessibility);
11444           }
11445           break;
11446         }
11447       if (nfields < fip->nbaseclasses)
11448         {
11449           switch (fieldp->virtuality)
11450             {
11451             case DW_VIRTUALITY_virtual:
11452             case DW_VIRTUALITY_pure_virtual:
11453               if (cu->language == language_ada)
11454                 error (_("unexpected virtuality in component of Ada type"));
11455               SET_TYPE_FIELD_VIRTUAL (type, nfields);
11456               break;
11457             }
11458         }
11459     }
11460 }
11461
11462 /* Return true if this member function is a constructor, false
11463    otherwise.  */
11464
11465 static int
11466 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
11467 {
11468   const char *fieldname;
11469   const char *typename;
11470   int len;
11471
11472   if (die->parent == NULL)
11473     return 0;
11474
11475   if (die->parent->tag != DW_TAG_structure_type
11476       && die->parent->tag != DW_TAG_union_type
11477       && die->parent->tag != DW_TAG_class_type)
11478     return 0;
11479
11480   fieldname = dwarf2_name (die, cu);
11481   typename = dwarf2_name (die->parent, cu);
11482   if (fieldname == NULL || typename == NULL)
11483     return 0;
11484
11485   len = strlen (fieldname);
11486   return (strncmp (fieldname, typename, len) == 0
11487           && (typename[len] == '\0' || typename[len] == '<'));
11488 }
11489
11490 /* Add a member function to the proper fieldlist.  */
11491
11492 static void
11493 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
11494                       struct type *type, struct dwarf2_cu *cu)
11495 {
11496   struct objfile *objfile = cu->objfile;
11497   struct attribute *attr;
11498   struct fnfieldlist *flp;
11499   int i;
11500   struct fn_field *fnp;
11501   const char *fieldname;
11502   struct nextfnfield *new_fnfield;
11503   struct type *this_type;
11504   enum dwarf_access_attribute accessibility;
11505
11506   if (cu->language == language_ada)
11507     error (_("unexpected member function in Ada type"));
11508
11509   /* Get name of member function.  */
11510   fieldname = dwarf2_name (die, cu);
11511   if (fieldname == NULL)
11512     return;
11513
11514   /* Look up member function name in fieldlist.  */
11515   for (i = 0; i < fip->nfnfields; i++)
11516     {
11517       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
11518         break;
11519     }
11520
11521   /* Create new list element if necessary.  */
11522   if (i < fip->nfnfields)
11523     flp = &fip->fnfieldlists[i];
11524   else
11525     {
11526       if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
11527         {
11528           fip->fnfieldlists = (struct fnfieldlist *)
11529             xrealloc (fip->fnfieldlists,
11530                       (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
11531                       * sizeof (struct fnfieldlist));
11532           if (fip->nfnfields == 0)
11533             make_cleanup (free_current_contents, &fip->fnfieldlists);
11534         }
11535       flp = &fip->fnfieldlists[fip->nfnfields];
11536       flp->name = fieldname;
11537       flp->length = 0;
11538       flp->head = NULL;
11539       i = fip->nfnfields++;
11540     }
11541
11542   /* Create a new member function field and chain it to the field list
11543      entry.  */
11544   new_fnfield = (struct nextfnfield *) xmalloc (sizeof (struct nextfnfield));
11545   make_cleanup (xfree, new_fnfield);
11546   memset (new_fnfield, 0, sizeof (struct nextfnfield));
11547   new_fnfield->next = flp->head;
11548   flp->head = new_fnfield;
11549   flp->length++;
11550
11551   /* Fill in the member function field info.  */
11552   fnp = &new_fnfield->fnfield;
11553
11554   /* Delay processing of the physname until later.  */
11555   if (cu->language == language_cplus || cu->language == language_java)
11556     {
11557       add_to_method_list (type, i, flp->length - 1, fieldname,
11558                           die, cu);
11559     }
11560   else
11561     {
11562       const char *physname = dwarf2_physname (fieldname, die, cu);
11563       fnp->physname = physname ? physname : "";
11564     }
11565
11566   fnp->type = alloc_type (objfile);
11567   this_type = read_type_die (die, cu);
11568   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
11569     {
11570       int nparams = TYPE_NFIELDS (this_type);
11571
11572       /* TYPE is the domain of this method, and THIS_TYPE is the type
11573            of the method itself (TYPE_CODE_METHOD).  */
11574       smash_to_method_type (fnp->type, type,
11575                             TYPE_TARGET_TYPE (this_type),
11576                             TYPE_FIELDS (this_type),
11577                             TYPE_NFIELDS (this_type),
11578                             TYPE_VARARGS (this_type));
11579
11580       /* Handle static member functions.
11581          Dwarf2 has no clean way to discern C++ static and non-static
11582          member functions.  G++ helps GDB by marking the first
11583          parameter for non-static member functions (which is the this
11584          pointer) as artificial.  We obtain this information from
11585          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
11586       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
11587         fnp->voffset = VOFFSET_STATIC;
11588     }
11589   else
11590     complaint (&symfile_complaints, _("member function type missing for '%s'"),
11591                dwarf2_full_name (fieldname, die, cu));
11592
11593   /* Get fcontext from DW_AT_containing_type if present.  */
11594   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
11595     fnp->fcontext = die_containing_type (die, cu);
11596
11597   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
11598      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
11599
11600   /* Get accessibility.  */
11601   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
11602   if (attr)
11603     accessibility = DW_UNSND (attr);
11604   else
11605     accessibility = dwarf2_default_access_attribute (die, cu);
11606   switch (accessibility)
11607     {
11608     case DW_ACCESS_private:
11609       fnp->is_private = 1;
11610       break;
11611     case DW_ACCESS_protected:
11612       fnp->is_protected = 1;
11613       break;
11614     }
11615
11616   /* Check for artificial methods.  */
11617   attr = dwarf2_attr (die, DW_AT_artificial, cu);
11618   if (attr && DW_UNSND (attr) != 0)
11619     fnp->is_artificial = 1;
11620
11621   fnp->is_constructor = dwarf2_is_constructor (die, cu);
11622
11623   /* Get index in virtual function table if it is a virtual member
11624      function.  For older versions of GCC, this is an offset in the
11625      appropriate virtual table, as specified by DW_AT_containing_type.
11626      For everyone else, it is an expression to be evaluated relative
11627      to the object address.  */
11628
11629   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
11630   if (attr)
11631     {
11632       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
11633         {
11634           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
11635             {
11636               /* Old-style GCC.  */
11637               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
11638             }
11639           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
11640                    || (DW_BLOCK (attr)->size > 1
11641                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
11642                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
11643             {
11644               struct dwarf_block blk;
11645               int offset;
11646
11647               offset = (DW_BLOCK (attr)->data[0] == DW_OP_deref
11648                         ? 1 : 2);
11649               blk.size = DW_BLOCK (attr)->size - offset;
11650               blk.data = DW_BLOCK (attr)->data + offset;
11651               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
11652               if ((fnp->voffset % cu->header.addr_size) != 0)
11653                 dwarf2_complex_location_expr_complaint ();
11654               else
11655                 fnp->voffset /= cu->header.addr_size;
11656               fnp->voffset += 2;
11657             }
11658           else
11659             dwarf2_complex_location_expr_complaint ();
11660
11661           if (!fnp->fcontext)
11662             fnp->fcontext = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
11663         }
11664       else if (attr_form_is_section_offset (attr))
11665         {
11666           dwarf2_complex_location_expr_complaint ();
11667         }
11668       else
11669         {
11670           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
11671                                                  fieldname);
11672         }
11673     }
11674   else
11675     {
11676       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
11677       if (attr && DW_UNSND (attr))
11678         {
11679           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
11680           complaint (&symfile_complaints,
11681                      _("Member function \"%s\" (offset %d) is virtual "
11682                        "but the vtable offset is not specified"),
11683                      fieldname, die->offset.sect_off);
11684           ALLOCATE_CPLUS_STRUCT_TYPE (type);
11685           TYPE_CPLUS_DYNAMIC (type) = 1;
11686         }
11687     }
11688 }
11689
11690 /* Create the vector of member function fields, and attach it to the type.  */
11691
11692 static void
11693 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
11694                                  struct dwarf2_cu *cu)
11695 {
11696   struct fnfieldlist *flp;
11697   int i;
11698
11699   if (cu->language == language_ada)
11700     error (_("unexpected member functions in Ada type"));
11701
11702   ALLOCATE_CPLUS_STRUCT_TYPE (type);
11703   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
11704     TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
11705
11706   for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
11707     {
11708       struct nextfnfield *nfp = flp->head;
11709       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
11710       int k;
11711
11712       TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
11713       TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
11714       fn_flp->fn_fields = (struct fn_field *)
11715         TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
11716       for (k = flp->length; (k--, nfp); nfp = nfp->next)
11717         fn_flp->fn_fields[k] = nfp->fnfield;
11718     }
11719
11720   TYPE_NFN_FIELDS (type) = fip->nfnfields;
11721 }
11722
11723 /* Returns non-zero if NAME is the name of a vtable member in CU's
11724    language, zero otherwise.  */
11725 static int
11726 is_vtable_name (const char *name, struct dwarf2_cu *cu)
11727 {
11728   static const char vptr[] = "_vptr";
11729   static const char vtable[] = "vtable";
11730
11731   /* Look for the C++ and Java forms of the vtable.  */
11732   if ((cu->language == language_java
11733        && strncmp (name, vtable, sizeof (vtable) - 1) == 0)
11734        || (strncmp (name, vptr, sizeof (vptr) - 1) == 0
11735        && is_cplus_marker (name[sizeof (vptr) - 1])))
11736     return 1;
11737
11738   return 0;
11739 }
11740
11741 /* GCC outputs unnamed structures that are really pointers to member
11742    functions, with the ABI-specified layout.  If TYPE describes
11743    such a structure, smash it into a member function type.
11744
11745    GCC shouldn't do this; it should just output pointer to member DIEs.
11746    This is GCC PR debug/28767.  */
11747
11748 static void
11749 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
11750 {
11751   struct type *pfn_type, *domain_type, *new_type;
11752
11753   /* Check for a structure with no name and two children.  */
11754   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
11755     return;
11756
11757   /* Check for __pfn and __delta members.  */
11758   if (TYPE_FIELD_NAME (type, 0) == NULL
11759       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
11760       || TYPE_FIELD_NAME (type, 1) == NULL
11761       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
11762     return;
11763
11764   /* Find the type of the method.  */
11765   pfn_type = TYPE_FIELD_TYPE (type, 0);
11766   if (pfn_type == NULL
11767       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
11768       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
11769     return;
11770
11771   /* Look for the "this" argument.  */
11772   pfn_type = TYPE_TARGET_TYPE (pfn_type);
11773   if (TYPE_NFIELDS (pfn_type) == 0
11774       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
11775       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
11776     return;
11777
11778   domain_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
11779   new_type = alloc_type (objfile);
11780   smash_to_method_type (new_type, domain_type, TYPE_TARGET_TYPE (pfn_type),
11781                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
11782                         TYPE_VARARGS (pfn_type));
11783   smash_to_methodptr_type (type, new_type);
11784 }
11785
11786 /* Return non-zero if the CU's PRODUCER string matches the Intel C/C++ compiler
11787    (icc).  */
11788
11789 static int
11790 producer_is_icc (struct dwarf2_cu *cu)
11791 {
11792   if (!cu->checked_producer)
11793     check_producer (cu);
11794
11795   return cu->producer_is_icc;
11796 }
11797
11798 /* Called when we find the DIE that starts a structure or union scope
11799    (definition) to create a type for the structure or union.  Fill in
11800    the type's name and general properties; the members will not be
11801    processed until process_structure_scope.
11802
11803    NOTE: we need to call these functions regardless of whether or not the
11804    DIE has a DW_AT_name attribute, since it might be an anonymous
11805    structure or union.  This gets the type entered into our set of
11806    user defined types.
11807
11808    However, if the structure is incomplete (an opaque struct/union)
11809    then suppress creating a symbol table entry for it since gdb only
11810    wants to find the one with the complete definition.  Note that if
11811    it is complete, we just call new_symbol, which does it's own
11812    checking about whether the struct/union is anonymous or not (and
11813    suppresses creating a symbol table entry itself).  */
11814
11815 static struct type *
11816 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
11817 {
11818   struct objfile *objfile = cu->objfile;
11819   struct type *type;
11820   struct attribute *attr;
11821   const char *name;
11822
11823   /* If the definition of this type lives in .debug_types, read that type.
11824      Don't follow DW_AT_specification though, that will take us back up
11825      the chain and we want to go down.  */
11826   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
11827   if (attr)
11828     {
11829       type = get_DW_AT_signature_type (die, attr, cu);
11830
11831       /* The type's CU may not be the same as CU.
11832          Ensure TYPE is recorded with CU in die_type_hash.  */
11833       return set_die_type (die, type, cu);
11834     }
11835
11836   type = alloc_type (objfile);
11837   INIT_CPLUS_SPECIFIC (type);
11838
11839   name = dwarf2_name (die, cu);
11840   if (name != NULL)
11841     {
11842       if (cu->language == language_cplus
11843           || cu->language == language_java)
11844         {
11845           const char *full_name = dwarf2_full_name (name, die, cu);
11846
11847           /* dwarf2_full_name might have already finished building the DIE's
11848              type.  If so, there is no need to continue.  */
11849           if (get_die_type (die, cu) != NULL)
11850             return get_die_type (die, cu);
11851
11852           TYPE_TAG_NAME (type) = full_name;
11853           if (die->tag == DW_TAG_structure_type
11854               || die->tag == DW_TAG_class_type)
11855             TYPE_NAME (type) = TYPE_TAG_NAME (type);
11856         }
11857       else
11858         {
11859           /* The name is already allocated along with this objfile, so
11860              we don't need to duplicate it for the type.  */
11861           TYPE_TAG_NAME (type) = name;
11862           if (die->tag == DW_TAG_class_type)
11863             TYPE_NAME (type) = TYPE_TAG_NAME (type);
11864         }
11865     }
11866
11867   if (die->tag == DW_TAG_structure_type)
11868     {
11869       TYPE_CODE (type) = TYPE_CODE_STRUCT;
11870     }
11871   else if (die->tag == DW_TAG_union_type)
11872     {
11873       TYPE_CODE (type) = TYPE_CODE_UNION;
11874     }
11875   else
11876     {
11877       TYPE_CODE (type) = TYPE_CODE_CLASS;
11878     }
11879
11880   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
11881     TYPE_DECLARED_CLASS (type) = 1;
11882
11883   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
11884   if (attr)
11885     {
11886       TYPE_LENGTH (type) = DW_UNSND (attr);
11887     }
11888   else
11889     {
11890       TYPE_LENGTH (type) = 0;
11891     }
11892
11893   if (producer_is_icc (cu))
11894     {
11895       /* ICC does not output the required DW_AT_declaration
11896          on incomplete types, but gives them a size of zero.  */
11897     }
11898   else
11899     TYPE_STUB_SUPPORTED (type) = 1;
11900
11901   if (die_is_declaration (die, cu))
11902     TYPE_STUB (type) = 1;
11903   else if (attr == NULL && die->child == NULL
11904            && producer_is_realview (cu->producer))
11905     /* RealView does not output the required DW_AT_declaration
11906        on incomplete types.  */
11907     TYPE_STUB (type) = 1;
11908
11909   /* We need to add the type field to the die immediately so we don't
11910      infinitely recurse when dealing with pointers to the structure
11911      type within the structure itself.  */
11912   set_die_type (die, type, cu);
11913
11914   /* set_die_type should be already done.  */
11915   set_descriptive_type (type, die, cu);
11916
11917   return type;
11918 }
11919
11920 /* Finish creating a structure or union type, including filling in
11921    its members and creating a symbol for it.  */
11922
11923 static void
11924 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
11925 {
11926   struct objfile *objfile = cu->objfile;
11927   struct die_info *child_die = die->child;
11928   struct type *type;
11929
11930   type = get_die_type (die, cu);
11931   if (type == NULL)
11932     type = read_structure_type (die, cu);
11933
11934   if (die->child != NULL && ! die_is_declaration (die, cu))
11935     {
11936       struct field_info fi;
11937       struct die_info *child_die;
11938       VEC (symbolp) *template_args = NULL;
11939       struct cleanup *back_to = make_cleanup (null_cleanup, 0);
11940
11941       memset (&fi, 0, sizeof (struct field_info));
11942
11943       child_die = die->child;
11944
11945       while (child_die && child_die->tag)
11946         {
11947           if (child_die->tag == DW_TAG_member
11948               || child_die->tag == DW_TAG_variable)
11949             {
11950               /* NOTE: carlton/2002-11-05: A C++ static data member
11951                  should be a DW_TAG_member that is a declaration, but
11952                  all versions of G++ as of this writing (so through at
11953                  least 3.2.1) incorrectly generate DW_TAG_variable
11954                  tags for them instead.  */
11955               dwarf2_add_field (&fi, child_die, cu);
11956             }
11957           else if (child_die->tag == DW_TAG_subprogram)
11958             {
11959               /* C++ member function.  */
11960               dwarf2_add_member_fn (&fi, child_die, type, cu);
11961             }
11962           else if (child_die->tag == DW_TAG_inheritance)
11963             {
11964               /* C++ base class field.  */
11965               dwarf2_add_field (&fi, child_die, cu);
11966             }
11967           else if (child_die->tag == DW_TAG_typedef)
11968             dwarf2_add_typedef (&fi, child_die, cu);
11969           else if (child_die->tag == DW_TAG_template_type_param
11970                    || child_die->tag == DW_TAG_template_value_param)
11971             {
11972               struct symbol *arg = new_symbol (child_die, NULL, cu);
11973
11974               if (arg != NULL)
11975                 VEC_safe_push (symbolp, template_args, arg);
11976             }
11977
11978           child_die = sibling_die (child_die);
11979         }
11980
11981       /* Attach template arguments to type.  */
11982       if (! VEC_empty (symbolp, template_args))
11983         {
11984           ALLOCATE_CPLUS_STRUCT_TYPE (type);
11985           TYPE_N_TEMPLATE_ARGUMENTS (type)
11986             = VEC_length (symbolp, template_args);
11987           TYPE_TEMPLATE_ARGUMENTS (type)
11988             = obstack_alloc (&objfile->objfile_obstack,
11989                              (TYPE_N_TEMPLATE_ARGUMENTS (type)
11990                               * sizeof (struct symbol *)));
11991           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
11992                   VEC_address (symbolp, template_args),
11993                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
11994                    * sizeof (struct symbol *)));
11995           VEC_free (symbolp, template_args);
11996         }
11997
11998       /* Attach fields and member functions to the type.  */
11999       if (fi.nfields)
12000         dwarf2_attach_fields_to_type (&fi, type, cu);
12001       if (fi.nfnfields)
12002         {
12003           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
12004
12005           /* Get the type which refers to the base class (possibly this
12006              class itself) which contains the vtable pointer for the current
12007              class from the DW_AT_containing_type attribute.  This use of
12008              DW_AT_containing_type is a GNU extension.  */
12009
12010           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
12011             {
12012               struct type *t = die_containing_type (die, cu);
12013
12014               TYPE_VPTR_BASETYPE (type) = t;
12015               if (type == t)
12016                 {
12017                   int i;
12018
12019                   /* Our own class provides vtbl ptr.  */
12020                   for (i = TYPE_NFIELDS (t) - 1;
12021                        i >= TYPE_N_BASECLASSES (t);
12022                        --i)
12023                     {
12024                       const char *fieldname = TYPE_FIELD_NAME (t, i);
12025
12026                       if (is_vtable_name (fieldname, cu))
12027                         {
12028                           TYPE_VPTR_FIELDNO (type) = i;
12029                           break;
12030                         }
12031                     }
12032
12033                   /* Complain if virtual function table field not found.  */
12034                   if (i < TYPE_N_BASECLASSES (t))
12035                     complaint (&symfile_complaints,
12036                                _("virtual function table pointer "
12037                                  "not found when defining class '%s'"),
12038                                TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
12039                                "");
12040                 }
12041               else
12042                 {
12043                   TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
12044                 }
12045             }
12046           else if (cu->producer
12047                    && strncmp (cu->producer,
12048                                "IBM(R) XL C/C++ Advanced Edition", 32) == 0)
12049             {
12050               /* The IBM XLC compiler does not provide direct indication
12051                  of the containing type, but the vtable pointer is
12052                  always named __vfp.  */
12053
12054               int i;
12055
12056               for (i = TYPE_NFIELDS (type) - 1;
12057                    i >= TYPE_N_BASECLASSES (type);
12058                    --i)
12059                 {
12060                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
12061                     {
12062                       TYPE_VPTR_FIELDNO (type) = i;
12063                       TYPE_VPTR_BASETYPE (type) = type;
12064                       break;
12065                     }
12066                 }
12067             }
12068         }
12069
12070       /* Copy fi.typedef_field_list linked list elements content into the
12071          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
12072       if (fi.typedef_field_list)
12073         {
12074           int i = fi.typedef_field_list_count;
12075
12076           ALLOCATE_CPLUS_STRUCT_TYPE (type);
12077           TYPE_TYPEDEF_FIELD_ARRAY (type)
12078             = TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i);
12079           TYPE_TYPEDEF_FIELD_COUNT (type) = i;
12080
12081           /* Reverse the list order to keep the debug info elements order.  */
12082           while (--i >= 0)
12083             {
12084               struct typedef_field *dest, *src;
12085
12086               dest = &TYPE_TYPEDEF_FIELD (type, i);
12087               src = &fi.typedef_field_list->field;
12088               fi.typedef_field_list = fi.typedef_field_list->next;
12089               *dest = *src;
12090             }
12091         }
12092
12093       do_cleanups (back_to);
12094
12095       if (HAVE_CPLUS_STRUCT (type))
12096         TYPE_CPLUS_REALLY_JAVA (type) = cu->language == language_java;
12097     }
12098
12099   quirk_gcc_member_function_pointer (type, objfile);
12100
12101   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
12102      snapshots) has been known to create a die giving a declaration
12103      for a class that has, as a child, a die giving a definition for a
12104      nested class.  So we have to process our children even if the
12105      current die is a declaration.  Normally, of course, a declaration
12106      won't have any children at all.  */
12107
12108   while (child_die != NULL && child_die->tag)
12109     {
12110       if (child_die->tag == DW_TAG_member
12111           || child_die->tag == DW_TAG_variable
12112           || child_die->tag == DW_TAG_inheritance
12113           || child_die->tag == DW_TAG_template_value_param
12114           || child_die->tag == DW_TAG_template_type_param)
12115         {
12116           /* Do nothing.  */
12117         }
12118       else
12119         process_die (child_die, cu);
12120
12121       child_die = sibling_die (child_die);
12122     }
12123
12124   /* Do not consider external references.  According to the DWARF standard,
12125      these DIEs are identified by the fact that they have no byte_size
12126      attribute, and a declaration attribute.  */
12127   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
12128       || !die_is_declaration (die, cu))
12129     new_symbol (die, type, cu);
12130 }
12131
12132 /* Given a DW_AT_enumeration_type die, set its type.  We do not
12133    complete the type's fields yet, or create any symbols.  */
12134
12135 static struct type *
12136 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
12137 {
12138   struct objfile *objfile = cu->objfile;
12139   struct type *type;
12140   struct attribute *attr;
12141   const char *name;
12142
12143   /* If the definition of this type lives in .debug_types, read that type.
12144      Don't follow DW_AT_specification though, that will take us back up
12145      the chain and we want to go down.  */
12146   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
12147   if (attr)
12148     {
12149       type = get_DW_AT_signature_type (die, attr, cu);
12150
12151       /* The type's CU may not be the same as CU.
12152          Ensure TYPE is recorded with CU in die_type_hash.  */
12153       return set_die_type (die, type, cu);
12154     }
12155
12156   type = alloc_type (objfile);
12157
12158   TYPE_CODE (type) = TYPE_CODE_ENUM;
12159   name = dwarf2_full_name (NULL, die, cu);
12160   if (name != NULL)
12161     TYPE_TAG_NAME (type) = name;
12162
12163   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
12164   if (attr)
12165     {
12166       TYPE_LENGTH (type) = DW_UNSND (attr);
12167     }
12168   else
12169     {
12170       TYPE_LENGTH (type) = 0;
12171     }
12172
12173   /* The enumeration DIE can be incomplete.  In Ada, any type can be
12174      declared as private in the package spec, and then defined only
12175      inside the package body.  Such types are known as Taft Amendment
12176      Types.  When another package uses such a type, an incomplete DIE
12177      may be generated by the compiler.  */
12178   if (die_is_declaration (die, cu))
12179     TYPE_STUB (type) = 1;
12180
12181   return set_die_type (die, type, cu);
12182 }
12183
12184 /* Given a pointer to a die which begins an enumeration, process all
12185    the dies that define the members of the enumeration, and create the
12186    symbol for the enumeration type.
12187
12188    NOTE: We reverse the order of the element list.  */
12189
12190 static void
12191 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
12192 {
12193   struct type *this_type;
12194
12195   this_type = get_die_type (die, cu);
12196   if (this_type == NULL)
12197     this_type = read_enumeration_type (die, cu);
12198
12199   if (die->child != NULL)
12200     {
12201       struct die_info *child_die;
12202       struct symbol *sym;
12203       struct field *fields = NULL;
12204       int num_fields = 0;
12205       int unsigned_enum = 1;
12206       const char *name;
12207       int flag_enum = 1;
12208       ULONGEST mask = 0;
12209
12210       child_die = die->child;
12211       while (child_die && child_die->tag)
12212         {
12213           if (child_die->tag != DW_TAG_enumerator)
12214             {
12215               process_die (child_die, cu);
12216             }
12217           else
12218             {
12219               name = dwarf2_name (child_die, cu);
12220               if (name)
12221                 {
12222                   sym = new_symbol (child_die, this_type, cu);
12223                   if (SYMBOL_VALUE (sym) < 0)
12224                     {
12225                       unsigned_enum = 0;
12226                       flag_enum = 0;
12227                     }
12228                   else if ((mask & SYMBOL_VALUE (sym)) != 0)
12229                     flag_enum = 0;
12230                   else
12231                     mask |= SYMBOL_VALUE (sym);
12232
12233                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
12234                     {
12235                       fields = (struct field *)
12236                         xrealloc (fields,
12237                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
12238                                   * sizeof (struct field));
12239                     }
12240
12241                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
12242                   FIELD_TYPE (fields[num_fields]) = NULL;
12243                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
12244                   FIELD_BITSIZE (fields[num_fields]) = 0;
12245
12246                   num_fields++;
12247                 }
12248             }
12249
12250           child_die = sibling_die (child_die);
12251         }
12252
12253       if (num_fields)
12254         {
12255           TYPE_NFIELDS (this_type) = num_fields;
12256           TYPE_FIELDS (this_type) = (struct field *)
12257             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
12258           memcpy (TYPE_FIELDS (this_type), fields,
12259                   sizeof (struct field) * num_fields);
12260           xfree (fields);
12261         }
12262       if (unsigned_enum)
12263         TYPE_UNSIGNED (this_type) = 1;
12264       if (flag_enum)
12265         TYPE_FLAG_ENUM (this_type) = 1;
12266     }
12267
12268   /* If we are reading an enum from a .debug_types unit, and the enum
12269      is a declaration, and the enum is not the signatured type in the
12270      unit, then we do not want to add a symbol for it.  Adding a
12271      symbol would in some cases obscure the true definition of the
12272      enum, giving users an incomplete type when the definition is
12273      actually available.  Note that we do not want to do this for all
12274      enums which are just declarations, because C++0x allows forward
12275      enum declarations.  */
12276   if (cu->per_cu->is_debug_types
12277       && die_is_declaration (die, cu))
12278     {
12279       struct signatured_type *sig_type;
12280
12281       sig_type = (struct signatured_type *) cu->per_cu;
12282       gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
12283       if (sig_type->type_offset_in_section.sect_off != die->offset.sect_off)
12284         return;
12285     }
12286
12287   new_symbol (die, this_type, cu);
12288 }
12289
12290 /* Extract all information from a DW_TAG_array_type DIE and put it in
12291    the DIE's type field.  For now, this only handles one dimensional
12292    arrays.  */
12293
12294 static struct type *
12295 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
12296 {
12297   struct objfile *objfile = cu->objfile;
12298   struct die_info *child_die;
12299   struct type *type;
12300   struct type *element_type, *range_type, *index_type;
12301   struct type **range_types = NULL;
12302   struct attribute *attr;
12303   int ndim = 0;
12304   struct cleanup *back_to;
12305   const char *name;
12306
12307   element_type = die_type (die, cu);
12308
12309   /* The die_type call above may have already set the type for this DIE.  */
12310   type = get_die_type (die, cu);
12311   if (type)
12312     return type;
12313
12314   /* Irix 6.2 native cc creates array types without children for
12315      arrays with unspecified length.  */
12316   if (die->child == NULL)
12317     {
12318       index_type = objfile_type (objfile)->builtin_int;
12319       range_type = create_range_type (NULL, index_type, 0, -1);
12320       type = create_array_type (NULL, element_type, range_type);
12321       return set_die_type (die, type, cu);
12322     }
12323
12324   back_to = make_cleanup (null_cleanup, NULL);
12325   child_die = die->child;
12326   while (child_die && child_die->tag)
12327     {
12328       if (child_die->tag == DW_TAG_subrange_type)
12329         {
12330           struct type *child_type = read_type_die (child_die, cu);
12331
12332           if (child_type != NULL)
12333             {
12334               /* The range type was succesfully read.  Save it for the
12335                  array type creation.  */
12336               if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
12337                 {
12338                   range_types = (struct type **)
12339                     xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
12340                               * sizeof (struct type *));
12341                   if (ndim == 0)
12342                     make_cleanup (free_current_contents, &range_types);
12343                 }
12344               range_types[ndim++] = child_type;
12345             }
12346         }
12347       child_die = sibling_die (child_die);
12348     }
12349
12350   /* Dwarf2 dimensions are output from left to right, create the
12351      necessary array types in backwards order.  */
12352
12353   type = element_type;
12354
12355   if (read_array_order (die, cu) == DW_ORD_col_major)
12356     {
12357       int i = 0;
12358
12359       while (i < ndim)
12360         type = create_array_type (NULL, type, range_types[i++]);
12361     }
12362   else
12363     {
12364       while (ndim-- > 0)
12365         type = create_array_type (NULL, type, range_types[ndim]);
12366     }
12367
12368   /* Understand Dwarf2 support for vector types (like they occur on
12369      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
12370      array type.  This is not part of the Dwarf2/3 standard yet, but a
12371      custom vendor extension.  The main difference between a regular
12372      array and the vector variant is that vectors are passed by value
12373      to functions.  */
12374   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
12375   if (attr)
12376     make_vector_type (type);
12377
12378   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
12379      implementation may choose to implement triple vectors using this
12380      attribute.  */
12381   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
12382   if (attr)
12383     {
12384       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
12385         TYPE_LENGTH (type) = DW_UNSND (attr);
12386       else
12387         complaint (&symfile_complaints,
12388                    _("DW_AT_byte_size for array type smaller "
12389                      "than the total size of elements"));
12390     }
12391
12392   name = dwarf2_name (die, cu);
12393   if (name)
12394     TYPE_NAME (type) = name;
12395
12396   /* Install the type in the die.  */
12397   set_die_type (die, type, cu);
12398
12399   /* set_die_type should be already done.  */
12400   set_descriptive_type (type, die, cu);
12401
12402   do_cleanups (back_to);
12403
12404   return type;
12405 }
12406
12407 static enum dwarf_array_dim_ordering
12408 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
12409 {
12410   struct attribute *attr;
12411
12412   attr = dwarf2_attr (die, DW_AT_ordering, cu);
12413
12414   if (attr) return DW_SND (attr);
12415
12416   /* GNU F77 is a special case, as at 08/2004 array type info is the
12417      opposite order to the dwarf2 specification, but data is still
12418      laid out as per normal fortran.
12419
12420      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
12421      version checking.  */
12422
12423   if (cu->language == language_fortran
12424       && cu->producer && strstr (cu->producer, "GNU F77"))
12425     {
12426       return DW_ORD_row_major;
12427     }
12428
12429   switch (cu->language_defn->la_array_ordering)
12430     {
12431     case array_column_major:
12432       return DW_ORD_col_major;
12433     case array_row_major:
12434     default:
12435       return DW_ORD_row_major;
12436     };
12437 }
12438
12439 /* Extract all information from a DW_TAG_set_type DIE and put it in
12440    the DIE's type field.  */
12441
12442 static struct type *
12443 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
12444 {
12445   struct type *domain_type, *set_type;
12446   struct attribute *attr;
12447
12448   domain_type = die_type (die, cu);
12449
12450   /* The die_type call above may have already set the type for this DIE.  */
12451   set_type = get_die_type (die, cu);
12452   if (set_type)
12453     return set_type;
12454
12455   set_type = create_set_type (NULL, domain_type);
12456
12457   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
12458   if (attr)
12459     TYPE_LENGTH (set_type) = DW_UNSND (attr);
12460
12461   return set_die_type (die, set_type, cu);
12462 }
12463
12464 /* A helper for read_common_block that creates a locexpr baton.
12465    SYM is the symbol which we are marking as computed.
12466    COMMON_DIE is the DIE for the common block.
12467    COMMON_LOC is the location expression attribute for the common
12468    block itself.
12469    MEMBER_LOC is the location expression attribute for the particular
12470    member of the common block that we are processing.
12471    CU is the CU from which the above come.  */
12472
12473 static void
12474 mark_common_block_symbol_computed (struct symbol *sym,
12475                                    struct die_info *common_die,
12476                                    struct attribute *common_loc,
12477                                    struct attribute *member_loc,
12478                                    struct dwarf2_cu *cu)
12479 {
12480   struct objfile *objfile = dwarf2_per_objfile->objfile;
12481   struct dwarf2_locexpr_baton *baton;
12482   gdb_byte *ptr;
12483   unsigned int cu_off;
12484   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
12485   LONGEST offset = 0;
12486
12487   gdb_assert (common_loc && member_loc);
12488   gdb_assert (attr_form_is_block (common_loc));
12489   gdb_assert (attr_form_is_block (member_loc)
12490               || attr_form_is_constant (member_loc));
12491
12492   baton = obstack_alloc (&objfile->objfile_obstack,
12493                          sizeof (struct dwarf2_locexpr_baton));
12494   baton->per_cu = cu->per_cu;
12495   gdb_assert (baton->per_cu);
12496
12497   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
12498
12499   if (attr_form_is_constant (member_loc))
12500     {
12501       offset = dwarf2_get_attr_constant_value (member_loc, 0);
12502       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
12503     }
12504   else
12505     baton->size += DW_BLOCK (member_loc)->size;
12506
12507   ptr = obstack_alloc (&objfile->objfile_obstack, baton->size);
12508   baton->data = ptr;
12509
12510   *ptr++ = DW_OP_call4;
12511   cu_off = common_die->offset.sect_off - cu->per_cu->offset.sect_off;
12512   store_unsigned_integer (ptr, 4, byte_order, cu_off);
12513   ptr += 4;
12514
12515   if (attr_form_is_constant (member_loc))
12516     {
12517       *ptr++ = DW_OP_addr;
12518       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
12519       ptr += cu->header.addr_size;
12520     }
12521   else
12522     {
12523       /* We have to copy the data here, because DW_OP_call4 will only
12524          use a DW_AT_location attribute.  */
12525       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
12526       ptr += DW_BLOCK (member_loc)->size;
12527     }
12528
12529   *ptr++ = DW_OP_plus;
12530   gdb_assert (ptr - baton->data == baton->size);
12531
12532   SYMBOL_LOCATION_BATON (sym) = baton;
12533   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
12534 }
12535
12536 /* Create appropriate locally-scoped variables for all the
12537    DW_TAG_common_block entries.  Also create a struct common_block
12538    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
12539    is used to sepate the common blocks name namespace from regular
12540    variable names.  */
12541
12542 static void
12543 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
12544 {
12545   struct attribute *attr;
12546
12547   attr = dwarf2_attr (die, DW_AT_location, cu);
12548   if (attr)
12549     {
12550       /* Support the .debug_loc offsets.  */
12551       if (attr_form_is_block (attr))
12552         {
12553           /* Ok.  */
12554         }
12555       else if (attr_form_is_section_offset (attr))
12556         {
12557           dwarf2_complex_location_expr_complaint ();
12558           attr = NULL;
12559         }
12560       else
12561         {
12562           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
12563                                                  "common block member");
12564           attr = NULL;
12565         }
12566     }
12567
12568   if (die->child != NULL)
12569     {
12570       struct objfile *objfile = cu->objfile;
12571       struct die_info *child_die;
12572       size_t n_entries = 0, size;
12573       struct common_block *common_block;
12574       struct symbol *sym;
12575
12576       for (child_die = die->child;
12577            child_die && child_die->tag;
12578            child_die = sibling_die (child_die))
12579         ++n_entries;
12580
12581       size = (sizeof (struct common_block)
12582               + (n_entries - 1) * sizeof (struct symbol *));
12583       common_block = obstack_alloc (&objfile->objfile_obstack, size);
12584       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
12585       common_block->n_entries = 0;
12586
12587       for (child_die = die->child;
12588            child_die && child_die->tag;
12589            child_die = sibling_die (child_die))
12590         {
12591           /* Create the symbol in the DW_TAG_common_block block in the current
12592              symbol scope.  */
12593           sym = new_symbol (child_die, NULL, cu);
12594           if (sym != NULL)
12595             {
12596               struct attribute *member_loc;
12597
12598               common_block->contents[common_block->n_entries++] = sym;
12599
12600               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
12601                                         cu);
12602               if (member_loc)
12603                 {
12604                   /* GDB has handled this for a long time, but it is
12605                      not specified by DWARF.  It seems to have been
12606                      emitted by gfortran at least as recently as:
12607                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
12608                   complaint (&symfile_complaints,
12609                              _("Variable in common block has "
12610                                "DW_AT_data_member_location "
12611                                "- DIE at 0x%x [in module %s]"),
12612                              child_die->offset.sect_off, cu->objfile->name);
12613
12614                   if (attr_form_is_section_offset (member_loc))
12615                     dwarf2_complex_location_expr_complaint ();
12616                   else if (attr_form_is_constant (member_loc)
12617                            || attr_form_is_block (member_loc))
12618                     {
12619                       if (attr)
12620                         mark_common_block_symbol_computed (sym, die, attr,
12621                                                            member_loc, cu);
12622                     }
12623                   else
12624                     dwarf2_complex_location_expr_complaint ();
12625                 }
12626             }
12627         }
12628
12629       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
12630       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
12631     }
12632 }
12633
12634 /* Create a type for a C++ namespace.  */
12635
12636 static struct type *
12637 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
12638 {
12639   struct objfile *objfile = cu->objfile;
12640   const char *previous_prefix, *name;
12641   int is_anonymous;
12642   struct type *type;
12643
12644   /* For extensions, reuse the type of the original namespace.  */
12645   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
12646     {
12647       struct die_info *ext_die;
12648       struct dwarf2_cu *ext_cu = cu;
12649
12650       ext_die = dwarf2_extension (die, &ext_cu);
12651       type = read_type_die (ext_die, ext_cu);
12652
12653       /* EXT_CU may not be the same as CU.
12654          Ensure TYPE is recorded with CU in die_type_hash.  */
12655       return set_die_type (die, type, cu);
12656     }
12657
12658   name = namespace_name (die, &is_anonymous, cu);
12659
12660   /* Now build the name of the current namespace.  */
12661
12662   previous_prefix = determine_prefix (die, cu);
12663   if (previous_prefix[0] != '\0')
12664     name = typename_concat (&objfile->objfile_obstack,
12665                             previous_prefix, name, 0, cu);
12666
12667   /* Create the type.  */
12668   type = init_type (TYPE_CODE_NAMESPACE, 0, 0, NULL,
12669                     objfile);
12670   TYPE_NAME (type) = name;
12671   TYPE_TAG_NAME (type) = TYPE_NAME (type);
12672
12673   return set_die_type (die, type, cu);
12674 }
12675
12676 /* Read a C++ namespace.  */
12677
12678 static void
12679 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
12680 {
12681   struct objfile *objfile = cu->objfile;
12682   int is_anonymous;
12683
12684   /* Add a symbol associated to this if we haven't seen the namespace
12685      before.  Also, add a using directive if it's an anonymous
12686      namespace.  */
12687
12688   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
12689     {
12690       struct type *type;
12691
12692       type = read_type_die (die, cu);
12693       new_symbol (die, type, cu);
12694
12695       namespace_name (die, &is_anonymous, cu);
12696       if (is_anonymous)
12697         {
12698           const char *previous_prefix = determine_prefix (die, cu);
12699
12700           cp_add_using_directive (previous_prefix, TYPE_NAME (type), NULL,
12701                                   NULL, NULL, 0, &objfile->objfile_obstack);
12702         }
12703     }
12704
12705   if (die->child != NULL)
12706     {
12707       struct die_info *child_die = die->child;
12708
12709       while (child_die && child_die->tag)
12710         {
12711           process_die (child_die, cu);
12712           child_die = sibling_die (child_die);
12713         }
12714     }
12715 }
12716
12717 /* Read a Fortran module as type.  This DIE can be only a declaration used for
12718    imported module.  Still we need that type as local Fortran "use ... only"
12719    declaration imports depend on the created type in determine_prefix.  */
12720
12721 static struct type *
12722 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
12723 {
12724   struct objfile *objfile = cu->objfile;
12725   const char *module_name;
12726   struct type *type;
12727
12728   module_name = dwarf2_name (die, cu);
12729   if (!module_name)
12730     complaint (&symfile_complaints,
12731                _("DW_TAG_module has no name, offset 0x%x"),
12732                die->offset.sect_off);
12733   type = init_type (TYPE_CODE_MODULE, 0, 0, module_name, objfile);
12734
12735   /* determine_prefix uses TYPE_TAG_NAME.  */
12736   TYPE_TAG_NAME (type) = TYPE_NAME (type);
12737
12738   return set_die_type (die, type, cu);
12739 }
12740
12741 /* Read a Fortran module.  */
12742
12743 static void
12744 read_module (struct die_info *die, struct dwarf2_cu *cu)
12745 {
12746   struct die_info *child_die = die->child;
12747
12748   while (child_die && child_die->tag)
12749     {
12750       process_die (child_die, cu);
12751       child_die = sibling_die (child_die);
12752     }
12753 }
12754
12755 /* Return the name of the namespace represented by DIE.  Set
12756    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
12757    namespace.  */
12758
12759 static const char *
12760 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
12761 {
12762   struct die_info *current_die;
12763   const char *name = NULL;
12764
12765   /* Loop through the extensions until we find a name.  */
12766
12767   for (current_die = die;
12768        current_die != NULL;
12769        current_die = dwarf2_extension (die, &cu))
12770     {
12771       name = dwarf2_name (current_die, cu);
12772       if (name != NULL)
12773         break;
12774     }
12775
12776   /* Is it an anonymous namespace?  */
12777
12778   *is_anonymous = (name == NULL);
12779   if (*is_anonymous)
12780     name = CP_ANONYMOUS_NAMESPACE_STR;
12781
12782   return name;
12783 }
12784
12785 /* Extract all information from a DW_TAG_pointer_type DIE and add to
12786    the user defined type vector.  */
12787
12788 static struct type *
12789 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
12790 {
12791   struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
12792   struct comp_unit_head *cu_header = &cu->header;
12793   struct type *type;
12794   struct attribute *attr_byte_size;
12795   struct attribute *attr_address_class;
12796   int byte_size, addr_class;
12797   struct type *target_type;
12798
12799   target_type = die_type (die, cu);
12800
12801   /* The die_type call above may have already set the type for this DIE.  */
12802   type = get_die_type (die, cu);
12803   if (type)
12804     return type;
12805
12806   type = lookup_pointer_type (target_type);
12807
12808   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
12809   if (attr_byte_size)
12810     byte_size = DW_UNSND (attr_byte_size);
12811   else
12812     byte_size = cu_header->addr_size;
12813
12814   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
12815   if (attr_address_class)
12816     addr_class = DW_UNSND (attr_address_class);
12817   else
12818     addr_class = DW_ADDR_none;
12819
12820   /* If the pointer size or address class is different than the
12821      default, create a type variant marked as such and set the
12822      length accordingly.  */
12823   if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
12824     {
12825       if (gdbarch_address_class_type_flags_p (gdbarch))
12826         {
12827           int type_flags;
12828
12829           type_flags = gdbarch_address_class_type_flags
12830                          (gdbarch, byte_size, addr_class);
12831           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
12832                       == 0);
12833           type = make_type_with_address_space (type, type_flags);
12834         }
12835       else if (TYPE_LENGTH (type) != byte_size)
12836         {
12837           complaint (&symfile_complaints,
12838                      _("invalid pointer size %d"), byte_size);
12839         }
12840       else
12841         {
12842           /* Should we also complain about unhandled address classes?  */
12843         }
12844     }
12845
12846   TYPE_LENGTH (type) = byte_size;
12847   return set_die_type (die, type, cu);
12848 }
12849
12850 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
12851    the user defined type vector.  */
12852
12853 static struct type *
12854 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
12855 {
12856   struct type *type;
12857   struct type *to_type;
12858   struct type *domain;
12859
12860   to_type = die_type (die, cu);
12861   domain = die_containing_type (die, cu);
12862
12863   /* The calls above may have already set the type for this DIE.  */
12864   type = get_die_type (die, cu);
12865   if (type)
12866     return type;
12867
12868   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
12869     type = lookup_methodptr_type (to_type);
12870   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
12871     {
12872       struct type *new_type = alloc_type (cu->objfile);
12873
12874       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
12875                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
12876                             TYPE_VARARGS (to_type));
12877       type = lookup_methodptr_type (new_type);
12878     }
12879   else
12880     type = lookup_memberptr_type (to_type, domain);
12881
12882   return set_die_type (die, type, cu);
12883 }
12884
12885 /* Extract all information from a DW_TAG_reference_type DIE and add to
12886    the user defined type vector.  */
12887
12888 static struct type *
12889 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
12890 {
12891   struct comp_unit_head *cu_header = &cu->header;
12892   struct type *type, *target_type;
12893   struct attribute *attr;
12894
12895   target_type = die_type (die, cu);
12896
12897   /* The die_type call above may have already set the type for this DIE.  */
12898   type = get_die_type (die, cu);
12899   if (type)
12900     return type;
12901
12902   type = lookup_reference_type (target_type);
12903   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
12904   if (attr)
12905     {
12906       TYPE_LENGTH (type) = DW_UNSND (attr);
12907     }
12908   else
12909     {
12910       TYPE_LENGTH (type) = cu_header->addr_size;
12911     }
12912   return set_die_type (die, type, cu);
12913 }
12914
12915 static struct type *
12916 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
12917 {
12918   struct type *base_type, *cv_type;
12919
12920   base_type = die_type (die, cu);
12921
12922   /* The die_type call above may have already set the type for this DIE.  */
12923   cv_type = get_die_type (die, cu);
12924   if (cv_type)
12925     return cv_type;
12926
12927   /* In case the const qualifier is applied to an array type, the element type
12928      is so qualified, not the array type (section 6.7.3 of C99).  */
12929   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
12930     {
12931       struct type *el_type, *inner_array;
12932
12933       base_type = copy_type (base_type);
12934       inner_array = base_type;
12935
12936       while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
12937         {
12938           TYPE_TARGET_TYPE (inner_array) =
12939             copy_type (TYPE_TARGET_TYPE (inner_array));
12940           inner_array = TYPE_TARGET_TYPE (inner_array);
12941         }
12942
12943       el_type = TYPE_TARGET_TYPE (inner_array);
12944       TYPE_TARGET_TYPE (inner_array) =
12945         make_cv_type (1, TYPE_VOLATILE (el_type), el_type, NULL);
12946
12947       return set_die_type (die, base_type, cu);
12948     }
12949
12950   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
12951   return set_die_type (die, cv_type, cu);
12952 }
12953
12954 static struct type *
12955 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
12956 {
12957   struct type *base_type, *cv_type;
12958
12959   base_type = die_type (die, cu);
12960
12961   /* The die_type call above may have already set the type for this DIE.  */
12962   cv_type = get_die_type (die, cu);
12963   if (cv_type)
12964     return cv_type;
12965
12966   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
12967   return set_die_type (die, cv_type, cu);
12968 }
12969
12970 /* Handle DW_TAG_restrict_type.  */
12971
12972 static struct type *
12973 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
12974 {
12975   struct type *base_type, *cv_type;
12976
12977   base_type = die_type (die, cu);
12978
12979   /* The die_type call above may have already set the type for this DIE.  */
12980   cv_type = get_die_type (die, cu);
12981   if (cv_type)
12982     return cv_type;
12983
12984   cv_type = make_restrict_type (base_type);
12985   return set_die_type (die, cv_type, cu);
12986 }
12987
12988 /* Extract all information from a DW_TAG_string_type DIE and add to
12989    the user defined type vector.  It isn't really a user defined type,
12990    but it behaves like one, with other DIE's using an AT_user_def_type
12991    attribute to reference it.  */
12992
12993 static struct type *
12994 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
12995 {
12996   struct objfile *objfile = cu->objfile;
12997   struct gdbarch *gdbarch = get_objfile_arch (objfile);
12998   struct type *type, *range_type, *index_type, *char_type;
12999   struct attribute *attr;
13000   unsigned int length;
13001
13002   attr = dwarf2_attr (die, DW_AT_string_length, cu);
13003   if (attr)
13004     {
13005       length = DW_UNSND (attr);
13006     }
13007   else
13008     {
13009       /* Check for the DW_AT_byte_size attribute.  */
13010       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13011       if (attr)
13012         {
13013           length = DW_UNSND (attr);
13014         }
13015       else
13016         {
13017           length = 1;
13018         }
13019     }
13020
13021   index_type = objfile_type (objfile)->builtin_int;
13022   range_type = create_range_type (NULL, index_type, 1, length);
13023   char_type = language_string_char_type (cu->language_defn, gdbarch);
13024   type = create_string_type (NULL, char_type, range_type);
13025
13026   return set_die_type (die, type, cu);
13027 }
13028
13029 /* Assuming that DIE corresponds to a function, returns nonzero
13030    if the function is prototyped.  */
13031
13032 static int
13033 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
13034 {
13035   struct attribute *attr;
13036
13037   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
13038   if (attr && (DW_UNSND (attr) != 0))
13039     return 1;
13040
13041   /* The DWARF standard implies that the DW_AT_prototyped attribute
13042      is only meaninful for C, but the concept also extends to other
13043      languages that allow unprototyped functions (Eg: Objective C).
13044      For all other languages, assume that functions are always
13045      prototyped.  */
13046   if (cu->language != language_c
13047       && cu->language != language_objc
13048       && cu->language != language_opencl)
13049     return 1;
13050
13051   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
13052      prototyped and unprototyped functions; default to prototyped,
13053      since that is more common in modern code (and RealView warns
13054      about unprototyped functions).  */
13055   if (producer_is_realview (cu->producer))
13056     return 1;
13057
13058   return 0;
13059 }
13060
13061 /* Handle DIES due to C code like:
13062
13063    struct foo
13064    {
13065    int (*funcp)(int a, long l);
13066    int b;
13067    };
13068
13069    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
13070
13071 static struct type *
13072 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
13073 {
13074   struct objfile *objfile = cu->objfile;
13075   struct type *type;            /* Type that this function returns.  */
13076   struct type *ftype;           /* Function that returns above type.  */
13077   struct attribute *attr;
13078
13079   type = die_type (die, cu);
13080
13081   /* The die_type call above may have already set the type for this DIE.  */
13082   ftype = get_die_type (die, cu);
13083   if (ftype)
13084     return ftype;
13085
13086   ftype = lookup_function_type (type);
13087
13088   if (prototyped_function_p (die, cu))
13089     TYPE_PROTOTYPED (ftype) = 1;
13090
13091   /* Store the calling convention in the type if it's available in
13092      the subroutine die.  Otherwise set the calling convention to
13093      the default value DW_CC_normal.  */
13094   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
13095   if (attr)
13096     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
13097   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
13098     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
13099   else
13100     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
13101
13102   /* We need to add the subroutine type to the die immediately so
13103      we don't infinitely recurse when dealing with parameters
13104      declared as the same subroutine type.  */
13105   set_die_type (die, ftype, cu);
13106
13107   if (die->child != NULL)
13108     {
13109       struct type *void_type = objfile_type (objfile)->builtin_void;
13110       struct die_info *child_die;
13111       int nparams, iparams;
13112
13113       /* Count the number of parameters.
13114          FIXME: GDB currently ignores vararg functions, but knows about
13115          vararg member functions.  */
13116       nparams = 0;
13117       child_die = die->child;
13118       while (child_die && child_die->tag)
13119         {
13120           if (child_die->tag == DW_TAG_formal_parameter)
13121             nparams++;
13122           else if (child_die->tag == DW_TAG_unspecified_parameters)
13123             TYPE_VARARGS (ftype) = 1;
13124           child_die = sibling_die (child_die);
13125         }
13126
13127       /* Allocate storage for parameters and fill them in.  */
13128       TYPE_NFIELDS (ftype) = nparams;
13129       TYPE_FIELDS (ftype) = (struct field *)
13130         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
13131
13132       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
13133          even if we error out during the parameters reading below.  */
13134       for (iparams = 0; iparams < nparams; iparams++)
13135         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
13136
13137       iparams = 0;
13138       child_die = die->child;
13139       while (child_die && child_die->tag)
13140         {
13141           if (child_die->tag == DW_TAG_formal_parameter)
13142             {
13143               struct type *arg_type;
13144
13145               /* DWARF version 2 has no clean way to discern C++
13146                  static and non-static member functions.  G++ helps
13147                  GDB by marking the first parameter for non-static
13148                  member functions (which is the this pointer) as
13149                  artificial.  We pass this information to
13150                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
13151
13152                  DWARF version 3 added DW_AT_object_pointer, which GCC
13153                  4.5 does not yet generate.  */
13154               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
13155               if (attr)
13156                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
13157               else
13158                 {
13159                   TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
13160
13161                   /* GCC/43521: In java, the formal parameter
13162                      "this" is sometimes not marked with DW_AT_artificial.  */
13163                   if (cu->language == language_java)
13164                     {
13165                       const char *name = dwarf2_name (child_die, cu);
13166
13167                       if (name && !strcmp (name, "this"))
13168                         TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 1;
13169                     }
13170                 }
13171               arg_type = die_type (child_die, cu);
13172
13173               /* RealView does not mark THIS as const, which the testsuite
13174                  expects.  GCC marks THIS as const in method definitions,
13175                  but not in the class specifications (GCC PR 43053).  */
13176               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
13177                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
13178                 {
13179                   int is_this = 0;
13180                   struct dwarf2_cu *arg_cu = cu;
13181                   const char *name = dwarf2_name (child_die, cu);
13182
13183                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
13184                   if (attr)
13185                     {
13186                       /* If the compiler emits this, use it.  */
13187                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
13188                         is_this = 1;
13189                     }
13190                   else if (name && strcmp (name, "this") == 0)
13191                     /* Function definitions will have the argument names.  */
13192                     is_this = 1;
13193                   else if (name == NULL && iparams == 0)
13194                     /* Declarations may not have the names, so like
13195                        elsewhere in GDB, assume an artificial first
13196                        argument is "this".  */
13197                     is_this = 1;
13198
13199                   if (is_this)
13200                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
13201                                              arg_type, 0);
13202                 }
13203
13204               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
13205               iparams++;
13206             }
13207           child_die = sibling_die (child_die);
13208         }
13209     }
13210
13211   return ftype;
13212 }
13213
13214 static struct type *
13215 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
13216 {
13217   struct objfile *objfile = cu->objfile;
13218   const char *name = NULL;
13219   struct type *this_type, *target_type;
13220
13221   name = dwarf2_full_name (NULL, die, cu);
13222   this_type = init_type (TYPE_CODE_TYPEDEF, 0,
13223                          TYPE_FLAG_TARGET_STUB, NULL, objfile);
13224   TYPE_NAME (this_type) = name;
13225   set_die_type (die, this_type, cu);
13226   target_type = die_type (die, cu);
13227   if (target_type != this_type)
13228     TYPE_TARGET_TYPE (this_type) = target_type;
13229   else
13230     {
13231       /* Self-referential typedefs are, it seems, not allowed by the DWARF
13232          spec and cause infinite loops in GDB.  */
13233       complaint (&symfile_complaints,
13234                  _("Self-referential DW_TAG_typedef "
13235                    "- DIE at 0x%x [in module %s]"),
13236                  die->offset.sect_off, objfile->name);
13237       TYPE_TARGET_TYPE (this_type) = NULL;
13238     }
13239   return this_type;
13240 }
13241
13242 /* Find a representation of a given base type and install
13243    it in the TYPE field of the die.  */
13244
13245 static struct type *
13246 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
13247 {
13248   struct objfile *objfile = cu->objfile;
13249   struct type *type;
13250   struct attribute *attr;
13251   int encoding = 0, size = 0;
13252   const char *name;
13253   enum type_code code = TYPE_CODE_INT;
13254   int type_flags = 0;
13255   struct type *target_type = NULL;
13256
13257   attr = dwarf2_attr (die, DW_AT_encoding, cu);
13258   if (attr)
13259     {
13260       encoding = DW_UNSND (attr);
13261     }
13262   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13263   if (attr)
13264     {
13265       size = DW_UNSND (attr);
13266     }
13267   name = dwarf2_name (die, cu);
13268   if (!name)
13269     {
13270       complaint (&symfile_complaints,
13271                  _("DW_AT_name missing from DW_TAG_base_type"));
13272     }
13273
13274   switch (encoding)
13275     {
13276       case DW_ATE_address:
13277         /* Turn DW_ATE_address into a void * pointer.  */
13278         code = TYPE_CODE_PTR;
13279         type_flags |= TYPE_FLAG_UNSIGNED;
13280         target_type = init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
13281         break;
13282       case DW_ATE_boolean:
13283         code = TYPE_CODE_BOOL;
13284         type_flags |= TYPE_FLAG_UNSIGNED;
13285         break;
13286       case DW_ATE_complex_float:
13287         code = TYPE_CODE_COMPLEX;
13288         target_type = init_type (TYPE_CODE_FLT, size / 2, 0, NULL, objfile);
13289         break;
13290       case DW_ATE_decimal_float:
13291         code = TYPE_CODE_DECFLOAT;
13292         break;
13293       case DW_ATE_float:
13294         code = TYPE_CODE_FLT;
13295         break;
13296       case DW_ATE_signed:
13297         break;
13298       case DW_ATE_unsigned:
13299         type_flags |= TYPE_FLAG_UNSIGNED;
13300         if (cu->language == language_fortran
13301             && name
13302             && strncmp (name, "character(", sizeof ("character(") - 1) == 0)
13303           code = TYPE_CODE_CHAR;
13304         break;
13305       case DW_ATE_signed_char:
13306         if (cu->language == language_ada || cu->language == language_m2
13307             || cu->language == language_pascal
13308             || cu->language == language_fortran)
13309           code = TYPE_CODE_CHAR;
13310         break;
13311       case DW_ATE_unsigned_char:
13312         if (cu->language == language_ada || cu->language == language_m2
13313             || cu->language == language_pascal
13314             || cu->language == language_fortran)
13315           code = TYPE_CODE_CHAR;
13316         type_flags |= TYPE_FLAG_UNSIGNED;
13317         break;
13318       case DW_ATE_UTF:
13319         /* We just treat this as an integer and then recognize the
13320            type by name elsewhere.  */
13321         break;
13322
13323       default:
13324         complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
13325                    dwarf_type_encoding_name (encoding));
13326         break;
13327     }
13328
13329   type = init_type (code, size, type_flags, NULL, objfile);
13330   TYPE_NAME (type) = name;
13331   TYPE_TARGET_TYPE (type) = target_type;
13332
13333   if (name && strcmp (name, "char") == 0)
13334     TYPE_NOSIGN (type) = 1;
13335
13336   return set_die_type (die, type, cu);
13337 }
13338
13339 /* Read the given DW_AT_subrange DIE.  */
13340
13341 static struct type *
13342 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
13343 {
13344   struct type *base_type, *orig_base_type;
13345   struct type *range_type;
13346   struct attribute *attr;
13347   LONGEST low, high;
13348   int low_default_is_valid;
13349   const char *name;
13350   LONGEST negative_mask;
13351
13352   orig_base_type = die_type (die, cu);
13353   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
13354      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
13355      creating the range type, but we use the result of check_typedef
13356      when examining properties of the type.  */
13357   base_type = check_typedef (orig_base_type);
13358
13359   /* The die_type call above may have already set the type for this DIE.  */
13360   range_type = get_die_type (die, cu);
13361   if (range_type)
13362     return range_type;
13363
13364   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
13365      omitting DW_AT_lower_bound.  */
13366   switch (cu->language)
13367     {
13368     case language_c:
13369     case language_cplus:
13370       low = 0;
13371       low_default_is_valid = 1;
13372       break;
13373     case language_fortran:
13374       low = 1;
13375       low_default_is_valid = 1;
13376       break;
13377     case language_d:
13378     case language_java:
13379     case language_objc:
13380       low = 0;
13381       low_default_is_valid = (cu->header.version >= 4);
13382       break;
13383     case language_ada:
13384     case language_m2:
13385     case language_pascal:
13386       low = 1;
13387       low_default_is_valid = (cu->header.version >= 4);
13388       break;
13389     default:
13390       low = 0;
13391       low_default_is_valid = 0;
13392       break;
13393     }
13394
13395   /* FIXME: For variable sized arrays either of these could be
13396      a variable rather than a constant value.  We'll allow it,
13397      but we don't know how to handle it.  */
13398   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
13399   if (attr)
13400     low = dwarf2_get_attr_constant_value (attr, low);
13401   else if (!low_default_is_valid)
13402     complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
13403                                       "- DIE at 0x%x [in module %s]"),
13404                die->offset.sect_off, cu->objfile->name);
13405
13406   attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
13407   if (attr)
13408     {
13409       if (attr_form_is_block (attr) || attr_form_is_ref (attr))
13410         {
13411           /* GCC encodes arrays with unspecified or dynamic length
13412              with a DW_FORM_block1 attribute or a reference attribute.
13413              FIXME: GDB does not yet know how to handle dynamic
13414              arrays properly, treat them as arrays with unspecified
13415              length for now.
13416
13417              FIXME: jimb/2003-09-22: GDB does not really know
13418              how to handle arrays of unspecified length
13419              either; we just represent them as zero-length
13420              arrays.  Choose an appropriate upper bound given
13421              the lower bound we've computed above.  */
13422           high = low - 1;
13423         }
13424       else
13425         high = dwarf2_get_attr_constant_value (attr, 1);
13426     }
13427   else
13428     {
13429       attr = dwarf2_attr (die, DW_AT_count, cu);
13430       if (attr)
13431         {
13432           int count = dwarf2_get_attr_constant_value (attr, 1);
13433           high = low + count - 1;
13434         }
13435       else
13436         {
13437           /* Unspecified array length.  */
13438           high = low - 1;
13439         }
13440     }
13441
13442   /* Dwarf-2 specifications explicitly allows to create subrange types
13443      without specifying a base type.
13444      In that case, the base type must be set to the type of
13445      the lower bound, upper bound or count, in that order, if any of these
13446      three attributes references an object that has a type.
13447      If no base type is found, the Dwarf-2 specifications say that
13448      a signed integer type of size equal to the size of an address should
13449      be used.
13450      For the following C code: `extern char gdb_int [];'
13451      GCC produces an empty range DIE.
13452      FIXME: muller/2010-05-28: Possible references to object for low bound,
13453      high bound or count are not yet handled by this code.  */
13454   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
13455     {
13456       struct objfile *objfile = cu->objfile;
13457       struct gdbarch *gdbarch = get_objfile_arch (objfile);
13458       int addr_size = gdbarch_addr_bit (gdbarch) /8;
13459       struct type *int_type = objfile_type (objfile)->builtin_int;
13460
13461       /* Test "int", "long int", and "long long int" objfile types,
13462          and select the first one having a size above or equal to the
13463          architecture address size.  */
13464       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
13465         base_type = int_type;
13466       else
13467         {
13468           int_type = objfile_type (objfile)->builtin_long;
13469           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
13470             base_type = int_type;
13471           else
13472             {
13473               int_type = objfile_type (objfile)->builtin_long_long;
13474               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
13475                 base_type = int_type;
13476             }
13477         }
13478     }
13479
13480   negative_mask =
13481     (LONGEST) -1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1);
13482   if (!TYPE_UNSIGNED (base_type) && (low & negative_mask))
13483     low |= negative_mask;
13484   if (!TYPE_UNSIGNED (base_type) && (high & negative_mask))
13485     high |= negative_mask;
13486
13487   range_type = create_range_type (NULL, orig_base_type, low, high);
13488
13489   /* Mark arrays with dynamic length at least as an array of unspecified
13490      length.  GDB could check the boundary but before it gets implemented at
13491      least allow accessing the array elements.  */
13492   if (attr && attr_form_is_block (attr))
13493     TYPE_HIGH_BOUND_UNDEFINED (range_type) = 1;
13494
13495   /* Ada expects an empty array on no boundary attributes.  */
13496   if (attr == NULL && cu->language != language_ada)
13497     TYPE_HIGH_BOUND_UNDEFINED (range_type) = 1;
13498
13499   name = dwarf2_name (die, cu);
13500   if (name)
13501     TYPE_NAME (range_type) = name;
13502
13503   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13504   if (attr)
13505     TYPE_LENGTH (range_type) = DW_UNSND (attr);
13506
13507   set_die_type (die, range_type, cu);
13508
13509   /* set_die_type should be already done.  */
13510   set_descriptive_type (range_type, die, cu);
13511
13512   return range_type;
13513 }
13514
13515 static struct type *
13516 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
13517 {
13518   struct type *type;
13519
13520   /* For now, we only support the C meaning of an unspecified type: void.  */
13521
13522   type = init_type (TYPE_CODE_VOID, 0, 0, NULL, cu->objfile);
13523   TYPE_NAME (type) = dwarf2_name (die, cu);
13524
13525   return set_die_type (die, type, cu);
13526 }
13527
13528 /* Read a single die and all its descendents.  Set the die's sibling
13529    field to NULL; set other fields in the die correctly, and set all
13530    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
13531    location of the info_ptr after reading all of those dies.  PARENT
13532    is the parent of the die in question.  */
13533
13534 static struct die_info *
13535 read_die_and_children (const struct die_reader_specs *reader,
13536                        const gdb_byte *info_ptr,
13537                        const gdb_byte **new_info_ptr,
13538                        struct die_info *parent)
13539 {
13540   struct die_info *die;
13541   const gdb_byte *cur_ptr;
13542   int has_children;
13543
13544   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
13545   if (die == NULL)
13546     {
13547       *new_info_ptr = cur_ptr;
13548       return NULL;
13549     }
13550   store_in_ref_table (die, reader->cu);
13551
13552   if (has_children)
13553     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
13554   else
13555     {
13556       die->child = NULL;
13557       *new_info_ptr = cur_ptr;
13558     }
13559
13560   die->sibling = NULL;
13561   die->parent = parent;
13562   return die;
13563 }
13564
13565 /* Read a die, all of its descendents, and all of its siblings; set
13566    all of the fields of all of the dies correctly.  Arguments are as
13567    in read_die_and_children.  */
13568
13569 static struct die_info *
13570 read_die_and_siblings_1 (const struct die_reader_specs *reader,
13571                          const gdb_byte *info_ptr,
13572                          const gdb_byte **new_info_ptr,
13573                          struct die_info *parent)
13574 {
13575   struct die_info *first_die, *last_sibling;
13576   const gdb_byte *cur_ptr;
13577
13578   cur_ptr = info_ptr;
13579   first_die = last_sibling = NULL;
13580
13581   while (1)
13582     {
13583       struct die_info *die
13584         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
13585
13586       if (die == NULL)
13587         {
13588           *new_info_ptr = cur_ptr;
13589           return first_die;
13590         }
13591
13592       if (!first_die)
13593         first_die = die;
13594       else
13595         last_sibling->sibling = die;
13596
13597       last_sibling = die;
13598     }
13599 }
13600
13601 /* Read a die, all of its descendents, and all of its siblings; set
13602    all of the fields of all of the dies correctly.  Arguments are as
13603    in read_die_and_children.
13604    This the main entry point for reading a DIE and all its children.  */
13605
13606 static struct die_info *
13607 read_die_and_siblings (const struct die_reader_specs *reader,
13608                        const gdb_byte *info_ptr,
13609                        const gdb_byte **new_info_ptr,
13610                        struct die_info *parent)
13611 {
13612   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
13613                                                   new_info_ptr, parent);
13614
13615   if (dwarf2_die_debug)
13616     {
13617       fprintf_unfiltered (gdb_stdlog,
13618                           "Read die from %s@0x%x of %s:\n",
13619                           bfd_section_name (reader->abfd,
13620                                             reader->die_section->asection),
13621                           (unsigned) (info_ptr - reader->die_section->buffer),
13622                           bfd_get_filename (reader->abfd));
13623       dump_die (die, dwarf2_die_debug);
13624     }
13625
13626   return die;
13627 }
13628
13629 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
13630    attributes.
13631    The caller is responsible for filling in the extra attributes
13632    and updating (*DIEP)->num_attrs.
13633    Set DIEP to point to a newly allocated die with its information,
13634    except for its child, sibling, and parent fields.
13635    Set HAS_CHILDREN to tell whether the die has children or not.  */
13636
13637 static const gdb_byte *
13638 read_full_die_1 (const struct die_reader_specs *reader,
13639                  struct die_info **diep, const gdb_byte *info_ptr,
13640                  int *has_children, int num_extra_attrs)
13641 {
13642   unsigned int abbrev_number, bytes_read, i;
13643   sect_offset offset;
13644   struct abbrev_info *abbrev;
13645   struct die_info *die;
13646   struct dwarf2_cu *cu = reader->cu;
13647   bfd *abfd = reader->abfd;
13648
13649   offset.sect_off = info_ptr - reader->buffer;
13650   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
13651   info_ptr += bytes_read;
13652   if (!abbrev_number)
13653     {
13654       *diep = NULL;
13655       *has_children = 0;
13656       return info_ptr;
13657     }
13658
13659   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
13660   if (!abbrev)
13661     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
13662            abbrev_number,
13663            bfd_get_filename (abfd));
13664
13665   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
13666   die->offset = offset;
13667   die->tag = abbrev->tag;
13668   die->abbrev = abbrev_number;
13669
13670   /* Make the result usable.
13671      The caller needs to update num_attrs after adding the extra
13672      attributes.  */
13673   die->num_attrs = abbrev->num_attrs;
13674
13675   for (i = 0; i < abbrev->num_attrs; ++i)
13676     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
13677                                info_ptr);
13678
13679   *diep = die;
13680   *has_children = abbrev->has_children;
13681   return info_ptr;
13682 }
13683
13684 /* Read a die and all its attributes.
13685    Set DIEP to point to a newly allocated die with its information,
13686    except for its child, sibling, and parent fields.
13687    Set HAS_CHILDREN to tell whether the die has children or not.  */
13688
13689 static const gdb_byte *
13690 read_full_die (const struct die_reader_specs *reader,
13691                struct die_info **diep, const gdb_byte *info_ptr,
13692                int *has_children)
13693 {
13694   const gdb_byte *result;
13695
13696   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
13697
13698   if (dwarf2_die_debug)
13699     {
13700       fprintf_unfiltered (gdb_stdlog,
13701                           "Read die from %s@0x%x of %s:\n",
13702                           bfd_section_name (reader->abfd,
13703                                             reader->die_section->asection),
13704                           (unsigned) (info_ptr - reader->die_section->buffer),
13705                           bfd_get_filename (reader->abfd));
13706       dump_die (*diep, dwarf2_die_debug);
13707     }
13708
13709   return result;
13710 }
13711 \f
13712 /* Abbreviation tables.
13713
13714    In DWARF version 2, the description of the debugging information is
13715    stored in a separate .debug_abbrev section.  Before we read any
13716    dies from a section we read in all abbreviations and install them
13717    in a hash table.  */
13718
13719 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
13720
13721 static struct abbrev_info *
13722 abbrev_table_alloc_abbrev (struct abbrev_table *abbrev_table)
13723 {
13724   struct abbrev_info *abbrev;
13725
13726   abbrev = (struct abbrev_info *)
13727     obstack_alloc (&abbrev_table->abbrev_obstack, sizeof (struct abbrev_info));
13728   memset (abbrev, 0, sizeof (struct abbrev_info));
13729   return abbrev;
13730 }
13731
13732 /* Add an abbreviation to the table.  */
13733
13734 static void
13735 abbrev_table_add_abbrev (struct abbrev_table *abbrev_table,
13736                          unsigned int abbrev_number,
13737                          struct abbrev_info *abbrev)
13738 {
13739   unsigned int hash_number;
13740
13741   hash_number = abbrev_number % ABBREV_HASH_SIZE;
13742   abbrev->next = abbrev_table->abbrevs[hash_number];
13743   abbrev_table->abbrevs[hash_number] = abbrev;
13744 }
13745
13746 /* Look up an abbrev in the table.
13747    Returns NULL if the abbrev is not found.  */
13748
13749 static struct abbrev_info *
13750 abbrev_table_lookup_abbrev (const struct abbrev_table *abbrev_table,
13751                             unsigned int abbrev_number)
13752 {
13753   unsigned int hash_number;
13754   struct abbrev_info *abbrev;
13755
13756   hash_number = abbrev_number % ABBREV_HASH_SIZE;
13757   abbrev = abbrev_table->abbrevs[hash_number];
13758
13759   while (abbrev)
13760     {
13761       if (abbrev->number == abbrev_number)
13762         return abbrev;
13763       abbrev = abbrev->next;
13764     }
13765   return NULL;
13766 }
13767
13768 /* Read in an abbrev table.  */
13769
13770 static struct abbrev_table *
13771 abbrev_table_read_table (struct dwarf2_section_info *section,
13772                          sect_offset offset)
13773 {
13774   struct objfile *objfile = dwarf2_per_objfile->objfile;
13775   bfd *abfd = section->asection->owner;
13776   struct abbrev_table *abbrev_table;
13777   const gdb_byte *abbrev_ptr;
13778   struct abbrev_info *cur_abbrev;
13779   unsigned int abbrev_number, bytes_read, abbrev_name;
13780   unsigned int abbrev_form;
13781   struct attr_abbrev *cur_attrs;
13782   unsigned int allocated_attrs;
13783
13784   abbrev_table = XMALLOC (struct abbrev_table);
13785   abbrev_table->offset = offset;
13786   obstack_init (&abbrev_table->abbrev_obstack);
13787   abbrev_table->abbrevs = obstack_alloc (&abbrev_table->abbrev_obstack,
13788                                          (ABBREV_HASH_SIZE
13789                                           * sizeof (struct abbrev_info *)));
13790   memset (abbrev_table->abbrevs, 0,
13791           ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
13792
13793   dwarf2_read_section (objfile, section);
13794   abbrev_ptr = section->buffer + offset.sect_off;
13795   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
13796   abbrev_ptr += bytes_read;
13797
13798   allocated_attrs = ATTR_ALLOC_CHUNK;
13799   cur_attrs = xmalloc (allocated_attrs * sizeof (struct attr_abbrev));
13800
13801   /* Loop until we reach an abbrev number of 0.  */
13802   while (abbrev_number)
13803     {
13804       cur_abbrev = abbrev_table_alloc_abbrev (abbrev_table);
13805
13806       /* read in abbrev header */
13807       cur_abbrev->number = abbrev_number;
13808       cur_abbrev->tag = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
13809       abbrev_ptr += bytes_read;
13810       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
13811       abbrev_ptr += 1;
13812
13813       /* now read in declarations */
13814       abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
13815       abbrev_ptr += bytes_read;
13816       abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
13817       abbrev_ptr += bytes_read;
13818       while (abbrev_name)
13819         {
13820           if (cur_abbrev->num_attrs == allocated_attrs)
13821             {
13822               allocated_attrs += ATTR_ALLOC_CHUNK;
13823               cur_attrs
13824                 = xrealloc (cur_attrs, (allocated_attrs
13825                                         * sizeof (struct attr_abbrev)));
13826             }
13827
13828           cur_attrs[cur_abbrev->num_attrs].name = abbrev_name;
13829           cur_attrs[cur_abbrev->num_attrs++].form = abbrev_form;
13830           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
13831           abbrev_ptr += bytes_read;
13832           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
13833           abbrev_ptr += bytes_read;
13834         }
13835
13836       cur_abbrev->attrs = obstack_alloc (&abbrev_table->abbrev_obstack,
13837                                          (cur_abbrev->num_attrs
13838                                           * sizeof (struct attr_abbrev)));
13839       memcpy (cur_abbrev->attrs, cur_attrs,
13840               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
13841
13842       abbrev_table_add_abbrev (abbrev_table, abbrev_number, cur_abbrev);
13843
13844       /* Get next abbreviation.
13845          Under Irix6 the abbreviations for a compilation unit are not
13846          always properly terminated with an abbrev number of 0.
13847          Exit loop if we encounter an abbreviation which we have
13848          already read (which means we are about to read the abbreviations
13849          for the next compile unit) or if the end of the abbreviation
13850          table is reached.  */
13851       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
13852         break;
13853       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
13854       abbrev_ptr += bytes_read;
13855       if (abbrev_table_lookup_abbrev (abbrev_table, abbrev_number) != NULL)
13856         break;
13857     }
13858
13859   xfree (cur_attrs);
13860   return abbrev_table;
13861 }
13862
13863 /* Free the resources held by ABBREV_TABLE.  */
13864
13865 static void
13866 abbrev_table_free (struct abbrev_table *abbrev_table)
13867 {
13868   obstack_free (&abbrev_table->abbrev_obstack, NULL);
13869   xfree (abbrev_table);
13870 }
13871
13872 /* Same as abbrev_table_free but as a cleanup.
13873    We pass in a pointer to the pointer to the table so that we can
13874    set the pointer to NULL when we're done.  It also simplifies
13875    build_type_unit_groups.  */
13876
13877 static void
13878 abbrev_table_free_cleanup (void *table_ptr)
13879 {
13880   struct abbrev_table **abbrev_table_ptr = table_ptr;
13881
13882   if (*abbrev_table_ptr != NULL)
13883     abbrev_table_free (*abbrev_table_ptr);
13884   *abbrev_table_ptr = NULL;
13885 }
13886
13887 /* Read the abbrev table for CU from ABBREV_SECTION.  */
13888
13889 static void
13890 dwarf2_read_abbrevs (struct dwarf2_cu *cu,
13891                      struct dwarf2_section_info *abbrev_section)
13892 {
13893   cu->abbrev_table =
13894     abbrev_table_read_table (abbrev_section, cu->header.abbrev_offset);
13895 }
13896
13897 /* Release the memory used by the abbrev table for a compilation unit.  */
13898
13899 static void
13900 dwarf2_free_abbrev_table (void *ptr_to_cu)
13901 {
13902   struct dwarf2_cu *cu = ptr_to_cu;
13903
13904   if (cu->abbrev_table != NULL)
13905     abbrev_table_free (cu->abbrev_table);
13906   /* Set this to NULL so that we SEGV if we try to read it later,
13907      and also because free_comp_unit verifies this is NULL.  */
13908   cu->abbrev_table = NULL;
13909 }
13910 \f
13911 /* Returns nonzero if TAG represents a type that we might generate a partial
13912    symbol for.  */
13913
13914 static int
13915 is_type_tag_for_partial (int tag)
13916 {
13917   switch (tag)
13918     {
13919 #if 0
13920     /* Some types that would be reasonable to generate partial symbols for,
13921        that we don't at present.  */
13922     case DW_TAG_array_type:
13923     case DW_TAG_file_type:
13924     case DW_TAG_ptr_to_member_type:
13925     case DW_TAG_set_type:
13926     case DW_TAG_string_type:
13927     case DW_TAG_subroutine_type:
13928 #endif
13929     case DW_TAG_base_type:
13930     case DW_TAG_class_type:
13931     case DW_TAG_interface_type:
13932     case DW_TAG_enumeration_type:
13933     case DW_TAG_structure_type:
13934     case DW_TAG_subrange_type:
13935     case DW_TAG_typedef:
13936     case DW_TAG_union_type:
13937       return 1;
13938     default:
13939       return 0;
13940     }
13941 }
13942
13943 /* Load all DIEs that are interesting for partial symbols into memory.  */
13944
13945 static struct partial_die_info *
13946 load_partial_dies (const struct die_reader_specs *reader,
13947                    const gdb_byte *info_ptr, int building_psymtab)
13948 {
13949   struct dwarf2_cu *cu = reader->cu;
13950   struct objfile *objfile = cu->objfile;
13951   struct partial_die_info *part_die;
13952   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
13953   struct abbrev_info *abbrev;
13954   unsigned int bytes_read;
13955   unsigned int load_all = 0;
13956   int nesting_level = 1;
13957
13958   parent_die = NULL;
13959   last_die = NULL;
13960
13961   gdb_assert (cu->per_cu != NULL);
13962   if (cu->per_cu->load_all_dies)
13963     load_all = 1;
13964
13965   cu->partial_dies
13966     = htab_create_alloc_ex (cu->header.length / 12,
13967                             partial_die_hash,
13968                             partial_die_eq,
13969                             NULL,
13970                             &cu->comp_unit_obstack,
13971                             hashtab_obstack_allocate,
13972                             dummy_obstack_deallocate);
13973
13974   part_die = obstack_alloc (&cu->comp_unit_obstack,
13975                             sizeof (struct partial_die_info));
13976
13977   while (1)
13978     {
13979       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
13980
13981       /* A NULL abbrev means the end of a series of children.  */
13982       if (abbrev == NULL)
13983         {
13984           if (--nesting_level == 0)
13985             {
13986               /* PART_DIE was probably the last thing allocated on the
13987                  comp_unit_obstack, so we could call obstack_free
13988                  here.  We don't do that because the waste is small,
13989                  and will be cleaned up when we're done with this
13990                  compilation unit.  This way, we're also more robust
13991                  against other users of the comp_unit_obstack.  */
13992               return first_die;
13993             }
13994           info_ptr += bytes_read;
13995           last_die = parent_die;
13996           parent_die = parent_die->die_parent;
13997           continue;
13998         }
13999
14000       /* Check for template arguments.  We never save these; if
14001          they're seen, we just mark the parent, and go on our way.  */
14002       if (parent_die != NULL
14003           && cu->language == language_cplus
14004           && (abbrev->tag == DW_TAG_template_type_param
14005               || abbrev->tag == DW_TAG_template_value_param))
14006         {
14007           parent_die->has_template_arguments = 1;
14008
14009           if (!load_all)
14010             {
14011               /* We don't need a partial DIE for the template argument.  */
14012               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
14013               continue;
14014             }
14015         }
14016
14017       /* We only recurse into c++ subprograms looking for template arguments.
14018          Skip their other children.  */
14019       if (!load_all
14020           && cu->language == language_cplus
14021           && parent_die != NULL
14022           && parent_die->tag == DW_TAG_subprogram)
14023         {
14024           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
14025           continue;
14026         }
14027
14028       /* Check whether this DIE is interesting enough to save.  Normally
14029          we would not be interested in members here, but there may be
14030          later variables referencing them via DW_AT_specification (for
14031          static members).  */
14032       if (!load_all
14033           && !is_type_tag_for_partial (abbrev->tag)
14034           && abbrev->tag != DW_TAG_constant
14035           && abbrev->tag != DW_TAG_enumerator
14036           && abbrev->tag != DW_TAG_subprogram
14037           && abbrev->tag != DW_TAG_lexical_block
14038           && abbrev->tag != DW_TAG_variable
14039           && abbrev->tag != DW_TAG_namespace
14040           && abbrev->tag != DW_TAG_module
14041           && abbrev->tag != DW_TAG_member
14042           && abbrev->tag != DW_TAG_imported_unit)
14043         {
14044           /* Otherwise we skip to the next sibling, if any.  */
14045           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
14046           continue;
14047         }
14048
14049       info_ptr = read_partial_die (reader, part_die, abbrev, bytes_read,
14050                                    info_ptr);
14051
14052       /* This two-pass algorithm for processing partial symbols has a
14053          high cost in cache pressure.  Thus, handle some simple cases
14054          here which cover the majority of C partial symbols.  DIEs
14055          which neither have specification tags in them, nor could have
14056          specification tags elsewhere pointing at them, can simply be
14057          processed and discarded.
14058
14059          This segment is also optional; scan_partial_symbols and
14060          add_partial_symbol will handle these DIEs if we chain
14061          them in normally.  When compilers which do not emit large
14062          quantities of duplicate debug information are more common,
14063          this code can probably be removed.  */
14064
14065       /* Any complete simple types at the top level (pretty much all
14066          of them, for a language without namespaces), can be processed
14067          directly.  */
14068       if (parent_die == NULL
14069           && part_die->has_specification == 0
14070           && part_die->is_declaration == 0
14071           && ((part_die->tag == DW_TAG_typedef && !part_die->has_children)
14072               || part_die->tag == DW_TAG_base_type
14073               || part_die->tag == DW_TAG_subrange_type))
14074         {
14075           if (building_psymtab && part_die->name != NULL)
14076             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
14077                                  VAR_DOMAIN, LOC_TYPEDEF,
14078                                  &objfile->static_psymbols,
14079                                  0, (CORE_ADDR) 0, cu->language, objfile);
14080           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
14081           continue;
14082         }
14083
14084       /* The exception for DW_TAG_typedef with has_children above is
14085          a workaround of GCC PR debug/47510.  In the case of this complaint
14086          type_name_no_tag_or_error will error on such types later.
14087
14088          GDB skipped children of DW_TAG_typedef by the shortcut above and then
14089          it could not find the child DIEs referenced later, this is checked
14090          above.  In correct DWARF DW_TAG_typedef should have no children.  */
14091
14092       if (part_die->tag == DW_TAG_typedef && part_die->has_children)
14093         complaint (&symfile_complaints,
14094                    _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
14095                      "- DIE at 0x%x [in module %s]"),
14096                    part_die->offset.sect_off, objfile->name);
14097
14098       /* If we're at the second level, and we're an enumerator, and
14099          our parent has no specification (meaning possibly lives in a
14100          namespace elsewhere), then we can add the partial symbol now
14101          instead of queueing it.  */
14102       if (part_die->tag == DW_TAG_enumerator
14103           && parent_die != NULL
14104           && parent_die->die_parent == NULL
14105           && parent_die->tag == DW_TAG_enumeration_type
14106           && parent_die->has_specification == 0)
14107         {
14108           if (part_die->name == NULL)
14109             complaint (&symfile_complaints,
14110                        _("malformed enumerator DIE ignored"));
14111           else if (building_psymtab)
14112             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
14113                                  VAR_DOMAIN, LOC_CONST,
14114                                  (cu->language == language_cplus
14115                                   || cu->language == language_java)
14116                                  ? &objfile->global_psymbols
14117                                  : &objfile->static_psymbols,
14118                                  0, (CORE_ADDR) 0, cu->language, objfile);
14119
14120           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
14121           continue;
14122         }
14123
14124       /* We'll save this DIE so link it in.  */
14125       part_die->die_parent = parent_die;
14126       part_die->die_sibling = NULL;
14127       part_die->die_child = NULL;
14128
14129       if (last_die && last_die == parent_die)
14130         last_die->die_child = part_die;
14131       else if (last_die)
14132         last_die->die_sibling = part_die;
14133
14134       last_die = part_die;
14135
14136       if (first_die == NULL)
14137         first_die = part_die;
14138
14139       /* Maybe add the DIE to the hash table.  Not all DIEs that we
14140          find interesting need to be in the hash table, because we
14141          also have the parent/sibling/child chains; only those that we
14142          might refer to by offset later during partial symbol reading.
14143
14144          For now this means things that might have be the target of a
14145          DW_AT_specification, DW_AT_abstract_origin, or
14146          DW_AT_extension.  DW_AT_extension will refer only to
14147          namespaces; DW_AT_abstract_origin refers to functions (and
14148          many things under the function DIE, but we do not recurse
14149          into function DIEs during partial symbol reading) and
14150          possibly variables as well; DW_AT_specification refers to
14151          declarations.  Declarations ought to have the DW_AT_declaration
14152          flag.  It happens that GCC forgets to put it in sometimes, but
14153          only for functions, not for types.
14154
14155          Adding more things than necessary to the hash table is harmless
14156          except for the performance cost.  Adding too few will result in
14157          wasted time in find_partial_die, when we reread the compilation
14158          unit with load_all_dies set.  */
14159
14160       if (load_all
14161           || abbrev->tag == DW_TAG_constant
14162           || abbrev->tag == DW_TAG_subprogram
14163           || abbrev->tag == DW_TAG_variable
14164           || abbrev->tag == DW_TAG_namespace
14165           || part_die->is_declaration)
14166         {
14167           void **slot;
14168
14169           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
14170                                            part_die->offset.sect_off, INSERT);
14171           *slot = part_die;
14172         }
14173
14174       part_die = obstack_alloc (&cu->comp_unit_obstack,
14175                                 sizeof (struct partial_die_info));
14176
14177       /* For some DIEs we want to follow their children (if any).  For C
14178          we have no reason to follow the children of structures; for other
14179          languages we have to, so that we can get at method physnames
14180          to infer fully qualified class names, for DW_AT_specification,
14181          and for C++ template arguments.  For C++, we also look one level
14182          inside functions to find template arguments (if the name of the
14183          function does not already contain the template arguments).
14184
14185          For Ada, we need to scan the children of subprograms and lexical
14186          blocks as well because Ada allows the definition of nested
14187          entities that could be interesting for the debugger, such as
14188          nested subprograms for instance.  */
14189       if (last_die->has_children
14190           && (load_all
14191               || last_die->tag == DW_TAG_namespace
14192               || last_die->tag == DW_TAG_module
14193               || last_die->tag == DW_TAG_enumeration_type
14194               || (cu->language == language_cplus
14195                   && last_die->tag == DW_TAG_subprogram
14196                   && (last_die->name == NULL
14197                       || strchr (last_die->name, '<') == NULL))
14198               || (cu->language != language_c
14199                   && (last_die->tag == DW_TAG_class_type
14200                       || last_die->tag == DW_TAG_interface_type
14201                       || last_die->tag == DW_TAG_structure_type
14202                       || last_die->tag == DW_TAG_union_type))
14203               || (cu->language == language_ada
14204                   && (last_die->tag == DW_TAG_subprogram
14205                       || last_die->tag == DW_TAG_lexical_block))))
14206         {
14207           nesting_level++;
14208           parent_die = last_die;
14209           continue;
14210         }
14211
14212       /* Otherwise we skip to the next sibling, if any.  */
14213       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
14214
14215       /* Back to the top, do it again.  */
14216     }
14217 }
14218
14219 /* Read a minimal amount of information into the minimal die structure.  */
14220
14221 static const gdb_byte *
14222 read_partial_die (const struct die_reader_specs *reader,
14223                   struct partial_die_info *part_die,
14224                   struct abbrev_info *abbrev, unsigned int abbrev_len,
14225                   const gdb_byte *info_ptr)
14226 {
14227   struct dwarf2_cu *cu = reader->cu;
14228   struct objfile *objfile = cu->objfile;
14229   const gdb_byte *buffer = reader->buffer;
14230   unsigned int i;
14231   struct attribute attr;
14232   int has_low_pc_attr = 0;
14233   int has_high_pc_attr = 0;
14234   int high_pc_relative = 0;
14235
14236   memset (part_die, 0, sizeof (struct partial_die_info));
14237
14238   part_die->offset.sect_off = info_ptr - buffer;
14239
14240   info_ptr += abbrev_len;
14241
14242   if (abbrev == NULL)
14243     return info_ptr;
14244
14245   part_die->tag = abbrev->tag;
14246   part_die->has_children = abbrev->has_children;
14247
14248   for (i = 0; i < abbrev->num_attrs; ++i)
14249     {
14250       info_ptr = read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
14251
14252       /* Store the data if it is of an attribute we want to keep in a
14253          partial symbol table.  */
14254       switch (attr.name)
14255         {
14256         case DW_AT_name:
14257           switch (part_die->tag)
14258             {
14259             case DW_TAG_compile_unit:
14260             case DW_TAG_partial_unit:
14261             case DW_TAG_type_unit:
14262               /* Compilation units have a DW_AT_name that is a filename, not
14263                  a source language identifier.  */
14264             case DW_TAG_enumeration_type:
14265             case DW_TAG_enumerator:
14266               /* These tags always have simple identifiers already; no need
14267                  to canonicalize them.  */
14268               part_die->name = DW_STRING (&attr);
14269               break;
14270             default:
14271               part_die->name
14272                 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
14273                                             &objfile->objfile_obstack);
14274               break;
14275             }
14276           break;
14277         case DW_AT_linkage_name:
14278         case DW_AT_MIPS_linkage_name:
14279           /* Note that both forms of linkage name might appear.  We
14280              assume they will be the same, and we only store the last
14281              one we see.  */
14282           if (cu->language == language_ada)
14283             part_die->name = DW_STRING (&attr);
14284           part_die->linkage_name = DW_STRING (&attr);
14285           break;
14286         case DW_AT_low_pc:
14287           has_low_pc_attr = 1;
14288           part_die->lowpc = DW_ADDR (&attr);
14289           break;
14290         case DW_AT_high_pc:
14291           has_high_pc_attr = 1;
14292           if (attr.form == DW_FORM_addr
14293               || attr.form == DW_FORM_GNU_addr_index)
14294             part_die->highpc = DW_ADDR (&attr);
14295           else
14296             {
14297               high_pc_relative = 1;
14298               part_die->highpc = DW_UNSND (&attr);
14299             }
14300           break;
14301         case DW_AT_location:
14302           /* Support the .debug_loc offsets.  */
14303           if (attr_form_is_block (&attr))
14304             {
14305                part_die->d.locdesc = DW_BLOCK (&attr);
14306             }
14307           else if (attr_form_is_section_offset (&attr))
14308             {
14309               dwarf2_complex_location_expr_complaint ();
14310             }
14311           else
14312             {
14313               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
14314                                                      "partial symbol information");
14315             }
14316           break;
14317         case DW_AT_external:
14318           part_die->is_external = DW_UNSND (&attr);
14319           break;
14320         case DW_AT_declaration:
14321           part_die->is_declaration = DW_UNSND (&attr);
14322           break;
14323         case DW_AT_type:
14324           part_die->has_type = 1;
14325           break;
14326         case DW_AT_abstract_origin:
14327         case DW_AT_specification:
14328         case DW_AT_extension:
14329           part_die->has_specification = 1;
14330           part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
14331           part_die->spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
14332                                    || cu->per_cu->is_dwz);
14333           break;
14334         case DW_AT_sibling:
14335           /* Ignore absolute siblings, they might point outside of
14336              the current compile unit.  */
14337           if (attr.form == DW_FORM_ref_addr)
14338             complaint (&symfile_complaints,
14339                        _("ignoring absolute DW_AT_sibling"));
14340           else
14341             part_die->sibling = buffer + dwarf2_get_ref_die_offset (&attr).sect_off;
14342           break;
14343         case DW_AT_byte_size:
14344           part_die->has_byte_size = 1;
14345           break;
14346         case DW_AT_calling_convention:
14347           /* DWARF doesn't provide a way to identify a program's source-level
14348              entry point.  DW_AT_calling_convention attributes are only meant
14349              to describe functions' calling conventions.
14350
14351              However, because it's a necessary piece of information in
14352              Fortran, and because DW_CC_program is the only piece of debugging
14353              information whose definition refers to a 'main program' at all,
14354              several compilers have begun marking Fortran main programs with
14355              DW_CC_program --- even when those functions use the standard
14356              calling conventions.
14357
14358              So until DWARF specifies a way to provide this information and
14359              compilers pick up the new representation, we'll support this
14360              practice.  */
14361           if (DW_UNSND (&attr) == DW_CC_program
14362               && cu->language == language_fortran)
14363             {
14364               set_main_name (part_die->name);
14365
14366               /* As this DIE has a static linkage the name would be difficult
14367                  to look up later.  */
14368               language_of_main = language_fortran;
14369             }
14370           break;
14371         case DW_AT_inline:
14372           if (DW_UNSND (&attr) == DW_INL_inlined
14373               || DW_UNSND (&attr) == DW_INL_declared_inlined)
14374             part_die->may_be_inlined = 1;
14375           break;
14376
14377         case DW_AT_import:
14378           if (part_die->tag == DW_TAG_imported_unit)
14379             {
14380               part_die->d.offset = dwarf2_get_ref_die_offset (&attr);
14381               part_die->is_dwz = (attr.form == DW_FORM_GNU_ref_alt
14382                                   || cu->per_cu->is_dwz);
14383             }
14384           break;
14385
14386         default:
14387           break;
14388         }
14389     }
14390
14391   if (high_pc_relative)
14392     part_die->highpc += part_die->lowpc;
14393
14394   if (has_low_pc_attr && has_high_pc_attr)
14395     {
14396       /* When using the GNU linker, .gnu.linkonce. sections are used to
14397          eliminate duplicate copies of functions and vtables and such.
14398          The linker will arbitrarily choose one and discard the others.
14399          The AT_*_pc values for such functions refer to local labels in
14400          these sections.  If the section from that file was discarded, the
14401          labels are not in the output, so the relocs get a value of 0.
14402          If this is a discarded function, mark the pc bounds as invalid,
14403          so that GDB will ignore it.  */
14404       if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
14405         {
14406           struct gdbarch *gdbarch = get_objfile_arch (objfile);
14407
14408           complaint (&symfile_complaints,
14409                      _("DW_AT_low_pc %s is zero "
14410                        "for DIE at 0x%x [in module %s]"),
14411                      paddress (gdbarch, part_die->lowpc),
14412                      part_die->offset.sect_off, objfile->name);
14413         }
14414       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
14415       else if (part_die->lowpc >= part_die->highpc)
14416         {
14417           struct gdbarch *gdbarch = get_objfile_arch (objfile);
14418
14419           complaint (&symfile_complaints,
14420                      _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
14421                        "for DIE at 0x%x [in module %s]"),
14422                      paddress (gdbarch, part_die->lowpc),
14423                      paddress (gdbarch, part_die->highpc),
14424                      part_die->offset.sect_off, objfile->name);
14425         }
14426       else
14427         part_die->has_pc_info = 1;
14428     }
14429
14430   return info_ptr;
14431 }
14432
14433 /* Find a cached partial DIE at OFFSET in CU.  */
14434
14435 static struct partial_die_info *
14436 find_partial_die_in_comp_unit (sect_offset offset, struct dwarf2_cu *cu)
14437 {
14438   struct partial_die_info *lookup_die = NULL;
14439   struct partial_die_info part_die;
14440
14441   part_die.offset = offset;
14442   lookup_die = htab_find_with_hash (cu->partial_dies, &part_die,
14443                                     offset.sect_off);
14444
14445   return lookup_die;
14446 }
14447
14448 /* Find a partial DIE at OFFSET, which may or may not be in CU,
14449    except in the case of .debug_types DIEs which do not reference
14450    outside their CU (they do however referencing other types via
14451    DW_FORM_ref_sig8).  */
14452
14453 static struct partial_die_info *
14454 find_partial_die (sect_offset offset, int offset_in_dwz, struct dwarf2_cu *cu)
14455 {
14456   struct objfile *objfile = cu->objfile;
14457   struct dwarf2_per_cu_data *per_cu = NULL;
14458   struct partial_die_info *pd = NULL;
14459
14460   if (offset_in_dwz == cu->per_cu->is_dwz
14461       && offset_in_cu_p (&cu->header, offset))
14462     {
14463       pd = find_partial_die_in_comp_unit (offset, cu);
14464       if (pd != NULL)
14465         return pd;
14466       /* We missed recording what we needed.
14467          Load all dies and try again.  */
14468       per_cu = cu->per_cu;
14469     }
14470   else
14471     {
14472       /* TUs don't reference other CUs/TUs (except via type signatures).  */
14473       if (cu->per_cu->is_debug_types)
14474         {
14475           error (_("Dwarf Error: Type Unit at offset 0x%lx contains"
14476                    " external reference to offset 0x%lx [in module %s].\n"),
14477                  (long) cu->header.offset.sect_off, (long) offset.sect_off,
14478                  bfd_get_filename (objfile->obfd));
14479         }
14480       per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
14481                                                  objfile);
14482
14483       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
14484         load_partial_comp_unit (per_cu);
14485
14486       per_cu->cu->last_used = 0;
14487       pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
14488     }
14489
14490   /* If we didn't find it, and not all dies have been loaded,
14491      load them all and try again.  */
14492
14493   if (pd == NULL && per_cu->load_all_dies == 0)
14494     {
14495       per_cu->load_all_dies = 1;
14496
14497       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
14498          THIS_CU->cu may already be in use.  So we can't just free it and
14499          replace its DIEs with the ones we read in.  Instead, we leave those
14500          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
14501          and clobber THIS_CU->cu->partial_dies with the hash table for the new
14502          set.  */
14503       load_partial_comp_unit (per_cu);
14504
14505       pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
14506     }
14507
14508   if (pd == NULL)
14509     internal_error (__FILE__, __LINE__,
14510                     _("could not find partial DIE 0x%x "
14511                       "in cache [from module %s]\n"),
14512                     offset.sect_off, bfd_get_filename (objfile->obfd));
14513   return pd;
14514 }
14515
14516 /* See if we can figure out if the class lives in a namespace.  We do
14517    this by looking for a member function; its demangled name will
14518    contain namespace info, if there is any.  */
14519
14520 static void
14521 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
14522                                   struct dwarf2_cu *cu)
14523 {
14524   /* NOTE: carlton/2003-10-07: Getting the info this way changes
14525      what template types look like, because the demangler
14526      frequently doesn't give the same name as the debug info.  We
14527      could fix this by only using the demangled name to get the
14528      prefix (but see comment in read_structure_type).  */
14529
14530   struct partial_die_info *real_pdi;
14531   struct partial_die_info *child_pdi;
14532
14533   /* If this DIE (this DIE's specification, if any) has a parent, then
14534      we should not do this.  We'll prepend the parent's fully qualified
14535      name when we create the partial symbol.  */
14536
14537   real_pdi = struct_pdi;
14538   while (real_pdi->has_specification)
14539     real_pdi = find_partial_die (real_pdi->spec_offset,
14540                                  real_pdi->spec_is_dwz, cu);
14541
14542   if (real_pdi->die_parent != NULL)
14543     return;
14544
14545   for (child_pdi = struct_pdi->die_child;
14546        child_pdi != NULL;
14547        child_pdi = child_pdi->die_sibling)
14548     {
14549       if (child_pdi->tag == DW_TAG_subprogram
14550           && child_pdi->linkage_name != NULL)
14551         {
14552           char *actual_class_name
14553             = language_class_name_from_physname (cu->language_defn,
14554                                                  child_pdi->linkage_name);
14555           if (actual_class_name != NULL)
14556             {
14557               struct_pdi->name
14558                 = obstack_copy0 (&cu->objfile->objfile_obstack,
14559                                  actual_class_name,
14560                                  strlen (actual_class_name));
14561               xfree (actual_class_name);
14562             }
14563           break;
14564         }
14565     }
14566 }
14567
14568 /* Adjust PART_DIE before generating a symbol for it.  This function
14569    may set the is_external flag or change the DIE's name.  */
14570
14571 static void
14572 fixup_partial_die (struct partial_die_info *part_die,
14573                    struct dwarf2_cu *cu)
14574 {
14575   /* Once we've fixed up a die, there's no point in doing so again.
14576      This also avoids a memory leak if we were to call
14577      guess_partial_die_structure_name multiple times.  */
14578   if (part_die->fixup_called)
14579     return;
14580
14581   /* If we found a reference attribute and the DIE has no name, try
14582      to find a name in the referred to DIE.  */
14583
14584   if (part_die->name == NULL && part_die->has_specification)
14585     {
14586       struct partial_die_info *spec_die;
14587
14588       spec_die = find_partial_die (part_die->spec_offset,
14589                                    part_die->spec_is_dwz, cu);
14590
14591       fixup_partial_die (spec_die, cu);
14592
14593       if (spec_die->name)
14594         {
14595           part_die->name = spec_die->name;
14596
14597           /* Copy DW_AT_external attribute if it is set.  */
14598           if (spec_die->is_external)
14599             part_die->is_external = spec_die->is_external;
14600         }
14601     }
14602
14603   /* Set default names for some unnamed DIEs.  */
14604
14605   if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
14606     part_die->name = CP_ANONYMOUS_NAMESPACE_STR;
14607
14608   /* If there is no parent die to provide a namespace, and there are
14609      children, see if we can determine the namespace from their linkage
14610      name.  */
14611   if (cu->language == language_cplus
14612       && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
14613       && part_die->die_parent == NULL
14614       && part_die->has_children
14615       && (part_die->tag == DW_TAG_class_type
14616           || part_die->tag == DW_TAG_structure_type
14617           || part_die->tag == DW_TAG_union_type))
14618     guess_partial_die_structure_name (part_die, cu);
14619
14620   /* GCC might emit a nameless struct or union that has a linkage
14621      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
14622   if (part_die->name == NULL
14623       && (part_die->tag == DW_TAG_class_type
14624           || part_die->tag == DW_TAG_interface_type
14625           || part_die->tag == DW_TAG_structure_type
14626           || part_die->tag == DW_TAG_union_type)
14627       && part_die->linkage_name != NULL)
14628     {
14629       char *demangled;
14630
14631       demangled = gdb_demangle (part_die->linkage_name, DMGL_TYPES);
14632       if (demangled)
14633         {
14634           const char *base;
14635
14636           /* Strip any leading namespaces/classes, keep only the base name.
14637              DW_AT_name for named DIEs does not contain the prefixes.  */
14638           base = strrchr (demangled, ':');
14639           if (base && base > demangled && base[-1] == ':')
14640             base++;
14641           else
14642             base = demangled;
14643
14644           part_die->name = obstack_copy0 (&cu->objfile->objfile_obstack,
14645                                           base, strlen (base));
14646           xfree (demangled);
14647         }
14648     }
14649
14650   part_die->fixup_called = 1;
14651 }
14652
14653 /* Read an attribute value described by an attribute form.  */
14654
14655 static const gdb_byte *
14656 read_attribute_value (const struct die_reader_specs *reader,
14657                       struct attribute *attr, unsigned form,
14658                       const gdb_byte *info_ptr)
14659 {
14660   struct dwarf2_cu *cu = reader->cu;
14661   bfd *abfd = reader->abfd;
14662   struct comp_unit_head *cu_header = &cu->header;
14663   unsigned int bytes_read;
14664   struct dwarf_block *blk;
14665
14666   attr->form = form;
14667   switch (form)
14668     {
14669     case DW_FORM_ref_addr:
14670       if (cu->header.version == 2)
14671         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
14672       else
14673         DW_UNSND (attr) = read_offset (abfd, info_ptr,
14674                                        &cu->header, &bytes_read);
14675       info_ptr += bytes_read;
14676       break;
14677     case DW_FORM_GNU_ref_alt:
14678       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
14679       info_ptr += bytes_read;
14680       break;
14681     case DW_FORM_addr:
14682       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
14683       info_ptr += bytes_read;
14684       break;
14685     case DW_FORM_block2:
14686       blk = dwarf_alloc_block (cu);
14687       blk->size = read_2_bytes (abfd, info_ptr);
14688       info_ptr += 2;
14689       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
14690       info_ptr += blk->size;
14691       DW_BLOCK (attr) = blk;
14692       break;
14693     case DW_FORM_block4:
14694       blk = dwarf_alloc_block (cu);
14695       blk->size = read_4_bytes (abfd, info_ptr);
14696       info_ptr += 4;
14697       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
14698       info_ptr += blk->size;
14699       DW_BLOCK (attr) = blk;
14700       break;
14701     case DW_FORM_data2:
14702       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
14703       info_ptr += 2;
14704       break;
14705     case DW_FORM_data4:
14706       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
14707       info_ptr += 4;
14708       break;
14709     case DW_FORM_data8:
14710       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
14711       info_ptr += 8;
14712       break;
14713     case DW_FORM_sec_offset:
14714       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
14715       info_ptr += bytes_read;
14716       break;
14717     case DW_FORM_string:
14718       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
14719       DW_STRING_IS_CANONICAL (attr) = 0;
14720       info_ptr += bytes_read;
14721       break;
14722     case DW_FORM_strp:
14723       if (!cu->per_cu->is_dwz)
14724         {
14725           DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
14726                                                    &bytes_read);
14727           DW_STRING_IS_CANONICAL (attr) = 0;
14728           info_ptr += bytes_read;
14729           break;
14730         }
14731       /* FALLTHROUGH */
14732     case DW_FORM_GNU_strp_alt:
14733       {
14734         struct dwz_file *dwz = dwarf2_get_dwz_file ();
14735         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
14736                                           &bytes_read);
14737
14738         DW_STRING (attr) = read_indirect_string_from_dwz (dwz, str_offset);
14739         DW_STRING_IS_CANONICAL (attr) = 0;
14740         info_ptr += bytes_read;
14741       }
14742       break;
14743     case DW_FORM_exprloc:
14744     case DW_FORM_block:
14745       blk = dwarf_alloc_block (cu);
14746       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
14747       info_ptr += bytes_read;
14748       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
14749       info_ptr += blk->size;
14750       DW_BLOCK (attr) = blk;
14751       break;
14752     case DW_FORM_block1:
14753       blk = dwarf_alloc_block (cu);
14754       blk->size = read_1_byte (abfd, info_ptr);
14755       info_ptr += 1;
14756       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
14757       info_ptr += blk->size;
14758       DW_BLOCK (attr) = blk;
14759       break;
14760     case DW_FORM_data1:
14761       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
14762       info_ptr += 1;
14763       break;
14764     case DW_FORM_flag:
14765       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
14766       info_ptr += 1;
14767       break;
14768     case DW_FORM_flag_present:
14769       DW_UNSND (attr) = 1;
14770       break;
14771     case DW_FORM_sdata:
14772       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
14773       info_ptr += bytes_read;
14774       break;
14775     case DW_FORM_udata:
14776       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
14777       info_ptr += bytes_read;
14778       break;
14779     case DW_FORM_ref1:
14780       DW_UNSND (attr) = (cu->header.offset.sect_off
14781                          + read_1_byte (abfd, info_ptr));
14782       info_ptr += 1;
14783       break;
14784     case DW_FORM_ref2:
14785       DW_UNSND (attr) = (cu->header.offset.sect_off
14786                          + read_2_bytes (abfd, info_ptr));
14787       info_ptr += 2;
14788       break;
14789     case DW_FORM_ref4:
14790       DW_UNSND (attr) = (cu->header.offset.sect_off
14791                          + read_4_bytes (abfd, info_ptr));
14792       info_ptr += 4;
14793       break;
14794     case DW_FORM_ref8:
14795       DW_UNSND (attr) = (cu->header.offset.sect_off
14796                          + read_8_bytes (abfd, info_ptr));
14797       info_ptr += 8;
14798       break;
14799     case DW_FORM_ref_sig8:
14800       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
14801       info_ptr += 8;
14802       break;
14803     case DW_FORM_ref_udata:
14804       DW_UNSND (attr) = (cu->header.offset.sect_off
14805                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
14806       info_ptr += bytes_read;
14807       break;
14808     case DW_FORM_indirect:
14809       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
14810       info_ptr += bytes_read;
14811       info_ptr = read_attribute_value (reader, attr, form, info_ptr);
14812       break;
14813     case DW_FORM_GNU_addr_index:
14814       if (reader->dwo_file == NULL)
14815         {
14816           /* For now flag a hard error.
14817              Later we can turn this into a complaint.  */
14818           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
14819                  dwarf_form_name (form),
14820                  bfd_get_filename (abfd));
14821         }
14822       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
14823       info_ptr += bytes_read;
14824       break;
14825     case DW_FORM_GNU_str_index:
14826       if (reader->dwo_file == NULL)
14827         {
14828           /* For now flag a hard error.
14829              Later we can turn this into a complaint if warranted.  */
14830           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
14831                  dwarf_form_name (form),
14832                  bfd_get_filename (abfd));
14833         }
14834       {
14835         ULONGEST str_index =
14836           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
14837
14838         DW_STRING (attr) = read_str_index (reader, cu, str_index);
14839         DW_STRING_IS_CANONICAL (attr) = 0;
14840         info_ptr += bytes_read;
14841       }
14842       break;
14843     default:
14844       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
14845              dwarf_form_name (form),
14846              bfd_get_filename (abfd));
14847     }
14848
14849   /* Super hack.  */
14850   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
14851     attr->form = DW_FORM_GNU_ref_alt;
14852
14853   /* We have seen instances where the compiler tried to emit a byte
14854      size attribute of -1 which ended up being encoded as an unsigned
14855      0xffffffff.  Although 0xffffffff is technically a valid size value,
14856      an object of this size seems pretty unlikely so we can relatively
14857      safely treat these cases as if the size attribute was invalid and
14858      treat them as zero by default.  */
14859   if (attr->name == DW_AT_byte_size
14860       && form == DW_FORM_data4
14861       && DW_UNSND (attr) >= 0xffffffff)
14862     {
14863       complaint
14864         (&symfile_complaints,
14865          _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
14866          hex_string (DW_UNSND (attr)));
14867       DW_UNSND (attr) = 0;
14868     }
14869
14870   return info_ptr;
14871 }
14872
14873 /* Read an attribute described by an abbreviated attribute.  */
14874
14875 static const gdb_byte *
14876 read_attribute (const struct die_reader_specs *reader,
14877                 struct attribute *attr, struct attr_abbrev *abbrev,
14878                 const gdb_byte *info_ptr)
14879 {
14880   attr->name = abbrev->name;
14881   return read_attribute_value (reader, attr, abbrev->form, info_ptr);
14882 }
14883
14884 /* Read dwarf information from a buffer.  */
14885
14886 static unsigned int
14887 read_1_byte (bfd *abfd, const gdb_byte *buf)
14888 {
14889   return bfd_get_8 (abfd, buf);
14890 }
14891
14892 static int
14893 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
14894 {
14895   return bfd_get_signed_8 (abfd, buf);
14896 }
14897
14898 static unsigned int
14899 read_2_bytes (bfd *abfd, const gdb_byte *buf)
14900 {
14901   return bfd_get_16 (abfd, buf);
14902 }
14903
14904 static int
14905 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
14906 {
14907   return bfd_get_signed_16 (abfd, buf);
14908 }
14909
14910 static unsigned int
14911 read_4_bytes (bfd *abfd, const gdb_byte *buf)
14912 {
14913   return bfd_get_32 (abfd, buf);
14914 }
14915
14916 static int
14917 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
14918 {
14919   return bfd_get_signed_32 (abfd, buf);
14920 }
14921
14922 static ULONGEST
14923 read_8_bytes (bfd *abfd, const gdb_byte *buf)
14924 {
14925   return bfd_get_64 (abfd, buf);
14926 }
14927
14928 static CORE_ADDR
14929 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
14930               unsigned int *bytes_read)
14931 {
14932   struct comp_unit_head *cu_header = &cu->header;
14933   CORE_ADDR retval = 0;
14934
14935   if (cu_header->signed_addr_p)
14936     {
14937       switch (cu_header->addr_size)
14938         {
14939         case 2:
14940           retval = bfd_get_signed_16 (abfd, buf);
14941           break;
14942         case 4:
14943           retval = bfd_get_signed_32 (abfd, buf);
14944           break;
14945         case 8:
14946           retval = bfd_get_signed_64 (abfd, buf);
14947           break;
14948         default:
14949           internal_error (__FILE__, __LINE__,
14950                           _("read_address: bad switch, signed [in module %s]"),
14951                           bfd_get_filename (abfd));
14952         }
14953     }
14954   else
14955     {
14956       switch (cu_header->addr_size)
14957         {
14958         case 2:
14959           retval = bfd_get_16 (abfd, buf);
14960           break;
14961         case 4:
14962           retval = bfd_get_32 (abfd, buf);
14963           break;
14964         case 8:
14965           retval = bfd_get_64 (abfd, buf);
14966           break;
14967         default:
14968           internal_error (__FILE__, __LINE__,
14969                           _("read_address: bad switch, "
14970                             "unsigned [in module %s]"),
14971                           bfd_get_filename (abfd));
14972         }
14973     }
14974
14975   *bytes_read = cu_header->addr_size;
14976   return retval;
14977 }
14978
14979 /* Read the initial length from a section.  The (draft) DWARF 3
14980    specification allows the initial length to take up either 4 bytes
14981    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
14982    bytes describe the length and all offsets will be 8 bytes in length
14983    instead of 4.
14984
14985    An older, non-standard 64-bit format is also handled by this
14986    function.  The older format in question stores the initial length
14987    as an 8-byte quantity without an escape value.  Lengths greater
14988    than 2^32 aren't very common which means that the initial 4 bytes
14989    is almost always zero.  Since a length value of zero doesn't make
14990    sense for the 32-bit format, this initial zero can be considered to
14991    be an escape value which indicates the presence of the older 64-bit
14992    format.  As written, the code can't detect (old format) lengths
14993    greater than 4GB.  If it becomes necessary to handle lengths
14994    somewhat larger than 4GB, we could allow other small values (such
14995    as the non-sensical values of 1, 2, and 3) to also be used as
14996    escape values indicating the presence of the old format.
14997
14998    The value returned via bytes_read should be used to increment the
14999    relevant pointer after calling read_initial_length().
15000
15001    [ Note:  read_initial_length() and read_offset() are based on the
15002      document entitled "DWARF Debugging Information Format", revision
15003      3, draft 8, dated November 19, 2001.  This document was obtained
15004      from:
15005
15006         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
15007
15008      This document is only a draft and is subject to change.  (So beware.)
15009
15010      Details regarding the older, non-standard 64-bit format were
15011      determined empirically by examining 64-bit ELF files produced by
15012      the SGI toolchain on an IRIX 6.5 machine.
15013
15014      - Kevin, July 16, 2002
15015    ] */
15016
15017 static LONGEST
15018 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
15019 {
15020   LONGEST length = bfd_get_32 (abfd, buf);
15021
15022   if (length == 0xffffffff)
15023     {
15024       length = bfd_get_64 (abfd, buf + 4);
15025       *bytes_read = 12;
15026     }
15027   else if (length == 0)
15028     {
15029       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
15030       length = bfd_get_64 (abfd, buf);
15031       *bytes_read = 8;
15032     }
15033   else
15034     {
15035       *bytes_read = 4;
15036     }
15037
15038   return length;
15039 }
15040
15041 /* Cover function for read_initial_length.
15042    Returns the length of the object at BUF, and stores the size of the
15043    initial length in *BYTES_READ and stores the size that offsets will be in
15044    *OFFSET_SIZE.
15045    If the initial length size is not equivalent to that specified in
15046    CU_HEADER then issue a complaint.
15047    This is useful when reading non-comp-unit headers.  */
15048
15049 static LONGEST
15050 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
15051                                         const struct comp_unit_head *cu_header,
15052                                         unsigned int *bytes_read,
15053                                         unsigned int *offset_size)
15054 {
15055   LONGEST length = read_initial_length (abfd, buf, bytes_read);
15056
15057   gdb_assert (cu_header->initial_length_size == 4
15058               || cu_header->initial_length_size == 8
15059               || cu_header->initial_length_size == 12);
15060
15061   if (cu_header->initial_length_size != *bytes_read)
15062     complaint (&symfile_complaints,
15063                _("intermixed 32-bit and 64-bit DWARF sections"));
15064
15065   *offset_size = (*bytes_read == 4) ? 4 : 8;
15066   return length;
15067 }
15068
15069 /* Read an offset from the data stream.  The size of the offset is
15070    given by cu_header->offset_size.  */
15071
15072 static LONGEST
15073 read_offset (bfd *abfd, const gdb_byte *buf,
15074              const struct comp_unit_head *cu_header,
15075              unsigned int *bytes_read)
15076 {
15077   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
15078
15079   *bytes_read = cu_header->offset_size;
15080   return offset;
15081 }
15082
15083 /* Read an offset from the data stream.  */
15084
15085 static LONGEST
15086 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
15087 {
15088   LONGEST retval = 0;
15089
15090   switch (offset_size)
15091     {
15092     case 4:
15093       retval = bfd_get_32 (abfd, buf);
15094       break;
15095     case 8:
15096       retval = bfd_get_64 (abfd, buf);
15097       break;
15098     default:
15099       internal_error (__FILE__, __LINE__,
15100                       _("read_offset_1: bad switch [in module %s]"),
15101                       bfd_get_filename (abfd));
15102     }
15103
15104   return retval;
15105 }
15106
15107 static const gdb_byte *
15108 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
15109 {
15110   /* If the size of a host char is 8 bits, we can return a pointer
15111      to the buffer, otherwise we have to copy the data to a buffer
15112      allocated on the temporary obstack.  */
15113   gdb_assert (HOST_CHAR_BIT == 8);
15114   return buf;
15115 }
15116
15117 static const char *
15118 read_direct_string (bfd *abfd, const gdb_byte *buf,
15119                     unsigned int *bytes_read_ptr)
15120 {
15121   /* If the size of a host char is 8 bits, we can return a pointer
15122      to the string, otherwise we have to copy the string to a buffer
15123      allocated on the temporary obstack.  */
15124   gdb_assert (HOST_CHAR_BIT == 8);
15125   if (*buf == '\0')
15126     {
15127       *bytes_read_ptr = 1;
15128       return NULL;
15129     }
15130   *bytes_read_ptr = strlen ((const char *) buf) + 1;
15131   return (const char *) buf;
15132 }
15133
15134 static const char *
15135 read_indirect_string_at_offset (bfd *abfd, LONGEST str_offset)
15136 {
15137   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->str);
15138   if (dwarf2_per_objfile->str.buffer == NULL)
15139     error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
15140            bfd_get_filename (abfd));
15141   if (str_offset >= dwarf2_per_objfile->str.size)
15142     error (_("DW_FORM_strp pointing outside of "
15143              ".debug_str section [in module %s]"),
15144            bfd_get_filename (abfd));
15145   gdb_assert (HOST_CHAR_BIT == 8);
15146   if (dwarf2_per_objfile->str.buffer[str_offset] == '\0')
15147     return NULL;
15148   return (const char *) (dwarf2_per_objfile->str.buffer + str_offset);
15149 }
15150
15151 /* Read a string at offset STR_OFFSET in the .debug_str section from
15152    the .dwz file DWZ.  Throw an error if the offset is too large.  If
15153    the string consists of a single NUL byte, return NULL; otherwise
15154    return a pointer to the string.  */
15155
15156 static const char *
15157 read_indirect_string_from_dwz (struct dwz_file *dwz, LONGEST str_offset)
15158 {
15159   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwz->str);
15160
15161   if (dwz->str.buffer == NULL)
15162     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
15163              "section [in module %s]"),
15164            bfd_get_filename (dwz->dwz_bfd));
15165   if (str_offset >= dwz->str.size)
15166     error (_("DW_FORM_GNU_strp_alt pointing outside of "
15167              ".debug_str section [in module %s]"),
15168            bfd_get_filename (dwz->dwz_bfd));
15169   gdb_assert (HOST_CHAR_BIT == 8);
15170   if (dwz->str.buffer[str_offset] == '\0')
15171     return NULL;
15172   return (const char *) (dwz->str.buffer + str_offset);
15173 }
15174
15175 static const char *
15176 read_indirect_string (bfd *abfd, const gdb_byte *buf,
15177                       const struct comp_unit_head *cu_header,
15178                       unsigned int *bytes_read_ptr)
15179 {
15180   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
15181
15182   return read_indirect_string_at_offset (abfd, str_offset);
15183 }
15184
15185 static ULONGEST
15186 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
15187                       unsigned int *bytes_read_ptr)
15188 {
15189   ULONGEST result;
15190   unsigned int num_read;
15191   int i, shift;
15192   unsigned char byte;
15193
15194   result = 0;
15195   shift = 0;
15196   num_read = 0;
15197   i = 0;
15198   while (1)
15199     {
15200       byte = bfd_get_8 (abfd, buf);
15201       buf++;
15202       num_read++;
15203       result |= ((ULONGEST) (byte & 127) << shift);
15204       if ((byte & 128) == 0)
15205         {
15206           break;
15207         }
15208       shift += 7;
15209     }
15210   *bytes_read_ptr = num_read;
15211   return result;
15212 }
15213
15214 static LONGEST
15215 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
15216                     unsigned int *bytes_read_ptr)
15217 {
15218   LONGEST result;
15219   int i, shift, num_read;
15220   unsigned char byte;
15221
15222   result = 0;
15223   shift = 0;
15224   num_read = 0;
15225   i = 0;
15226   while (1)
15227     {
15228       byte = bfd_get_8 (abfd, buf);
15229       buf++;
15230       num_read++;
15231       result |= ((LONGEST) (byte & 127) << shift);
15232       shift += 7;
15233       if ((byte & 128) == 0)
15234         {
15235           break;
15236         }
15237     }
15238   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
15239     result |= -(((LONGEST) 1) << shift);
15240   *bytes_read_ptr = num_read;
15241   return result;
15242 }
15243
15244 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
15245    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
15246    ADDR_SIZE is the size of addresses from the CU header.  */
15247
15248 static CORE_ADDR
15249 read_addr_index_1 (unsigned int addr_index, ULONGEST addr_base, int addr_size)
15250 {
15251   struct objfile *objfile = dwarf2_per_objfile->objfile;
15252   bfd *abfd = objfile->obfd;
15253   const gdb_byte *info_ptr;
15254
15255   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
15256   if (dwarf2_per_objfile->addr.buffer == NULL)
15257     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
15258            objfile->name);
15259   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
15260     error (_("DW_FORM_addr_index pointing outside of "
15261              ".debug_addr section [in module %s]"),
15262            objfile->name);
15263   info_ptr = (dwarf2_per_objfile->addr.buffer
15264               + addr_base + addr_index * addr_size);
15265   if (addr_size == 4)
15266     return bfd_get_32 (abfd, info_ptr);
15267   else
15268     return bfd_get_64 (abfd, info_ptr);
15269 }
15270
15271 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
15272
15273 static CORE_ADDR
15274 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
15275 {
15276   return read_addr_index_1 (addr_index, cu->addr_base, cu->header.addr_size);
15277 }
15278
15279 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
15280
15281 static CORE_ADDR
15282 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
15283                              unsigned int *bytes_read)
15284 {
15285   bfd *abfd = cu->objfile->obfd;
15286   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
15287
15288   return read_addr_index (cu, addr_index);
15289 }
15290
15291 /* Data structure to pass results from dwarf2_read_addr_index_reader
15292    back to dwarf2_read_addr_index.  */
15293
15294 struct dwarf2_read_addr_index_data
15295 {
15296   ULONGEST addr_base;
15297   int addr_size;
15298 };
15299
15300 /* die_reader_func for dwarf2_read_addr_index.  */
15301
15302 static void
15303 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
15304                                const gdb_byte *info_ptr,
15305                                struct die_info *comp_unit_die,
15306                                int has_children,
15307                                void *data)
15308 {
15309   struct dwarf2_cu *cu = reader->cu;
15310   struct dwarf2_read_addr_index_data *aidata =
15311     (struct dwarf2_read_addr_index_data *) data;
15312
15313   aidata->addr_base = cu->addr_base;
15314   aidata->addr_size = cu->header.addr_size;
15315 }
15316
15317 /* Given an index in .debug_addr, fetch the value.
15318    NOTE: This can be called during dwarf expression evaluation,
15319    long after the debug information has been read, and thus per_cu->cu
15320    may no longer exist.  */
15321
15322 CORE_ADDR
15323 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
15324                         unsigned int addr_index)
15325 {
15326   struct objfile *objfile = per_cu->objfile;
15327   struct dwarf2_cu *cu = per_cu->cu;
15328   ULONGEST addr_base;
15329   int addr_size;
15330
15331   /* This is intended to be called from outside this file.  */
15332   dw2_setup (objfile);
15333
15334   /* We need addr_base and addr_size.
15335      If we don't have PER_CU->cu, we have to get it.
15336      Nasty, but the alternative is storing the needed info in PER_CU,
15337      which at this point doesn't seem justified: it's not clear how frequently
15338      it would get used and it would increase the size of every PER_CU.
15339      Entry points like dwarf2_per_cu_addr_size do a similar thing
15340      so we're not in uncharted territory here.
15341      Alas we need to be a bit more complicated as addr_base is contained
15342      in the DIE.
15343
15344      We don't need to read the entire CU(/TU).
15345      We just need the header and top level die.
15346
15347      IWBN to use the aging mechanism to let us lazily later discard the CU.
15348      For now we skip this optimization.  */
15349
15350   if (cu != NULL)
15351     {
15352       addr_base = cu->addr_base;
15353       addr_size = cu->header.addr_size;
15354     }
15355   else
15356     {
15357       struct dwarf2_read_addr_index_data aidata;
15358
15359       /* Note: We can't use init_cutu_and_read_dies_simple here,
15360          we need addr_base.  */
15361       init_cutu_and_read_dies (per_cu, NULL, 0, 0,
15362                                dwarf2_read_addr_index_reader, &aidata);
15363       addr_base = aidata.addr_base;
15364       addr_size = aidata.addr_size;
15365     }
15366
15367   return read_addr_index_1 (addr_index, addr_base, addr_size);
15368 }
15369
15370 /* Given a DW_AT_str_index, fetch the string.  */
15371
15372 static const char *
15373 read_str_index (const struct die_reader_specs *reader,
15374                 struct dwarf2_cu *cu, ULONGEST str_index)
15375 {
15376   struct objfile *objfile = dwarf2_per_objfile->objfile;
15377   const char *dwo_name = objfile->name;
15378   bfd *abfd = objfile->obfd;
15379   struct dwo_sections *sections = &reader->dwo_file->sections;
15380   const gdb_byte *info_ptr;
15381   ULONGEST str_offset;
15382
15383   dwarf2_read_section (objfile, &sections->str);
15384   dwarf2_read_section (objfile, &sections->str_offsets);
15385   if (sections->str.buffer == NULL)
15386     error (_("DW_FORM_str_index used without .debug_str.dwo section"
15387              " in CU at offset 0x%lx [in module %s]"),
15388            (long) cu->header.offset.sect_off, dwo_name);
15389   if (sections->str_offsets.buffer == NULL)
15390     error (_("DW_FORM_str_index used without .debug_str_offsets.dwo section"
15391              " in CU at offset 0x%lx [in module %s]"),
15392            (long) cu->header.offset.sect_off, dwo_name);
15393   if (str_index * cu->header.offset_size >= sections->str_offsets.size)
15394     error (_("DW_FORM_str_index pointing outside of .debug_str_offsets.dwo"
15395              " section in CU at offset 0x%lx [in module %s]"),
15396            (long) cu->header.offset.sect_off, dwo_name);
15397   info_ptr = (sections->str_offsets.buffer
15398               + str_index * cu->header.offset_size);
15399   if (cu->header.offset_size == 4)
15400     str_offset = bfd_get_32 (abfd, info_ptr);
15401   else
15402     str_offset = bfd_get_64 (abfd, info_ptr);
15403   if (str_offset >= sections->str.size)
15404     error (_("Offset from DW_FORM_str_index pointing outside of"
15405              " .debug_str.dwo section in CU at offset 0x%lx [in module %s]"),
15406            (long) cu->header.offset.sect_off, dwo_name);
15407   return (const char *) (sections->str.buffer + str_offset);
15408 }
15409
15410 /* Return the length of an LEB128 number in BUF.  */
15411
15412 static int
15413 leb128_size (const gdb_byte *buf)
15414 {
15415   const gdb_byte *begin = buf;
15416   gdb_byte byte;
15417
15418   while (1)
15419     {
15420       byte = *buf++;
15421       if ((byte & 128) == 0)
15422         return buf - begin;
15423     }
15424 }
15425
15426 static void
15427 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
15428 {
15429   switch (lang)
15430     {
15431     case DW_LANG_C89:
15432     case DW_LANG_C99:
15433     case DW_LANG_C:
15434     case DW_LANG_UPC:
15435       cu->language = language_c;
15436       break;
15437     case DW_LANG_C_plus_plus:
15438       cu->language = language_cplus;
15439       break;
15440     case DW_LANG_D:
15441       cu->language = language_d;
15442       break;
15443     case DW_LANG_Fortran77:
15444     case DW_LANG_Fortran90:
15445     case DW_LANG_Fortran95:
15446       cu->language = language_fortran;
15447       break;
15448     case DW_LANG_Go:
15449       cu->language = language_go;
15450       break;
15451     case DW_LANG_Mips_Assembler:
15452       cu->language = language_asm;
15453       break;
15454     case DW_LANG_Java:
15455       cu->language = language_java;
15456       break;
15457     case DW_LANG_Ada83:
15458     case DW_LANG_Ada95:
15459       cu->language = language_ada;
15460       break;
15461     case DW_LANG_Modula2:
15462       cu->language = language_m2;
15463       break;
15464     case DW_LANG_Pascal83:
15465       cu->language = language_pascal;
15466       break;
15467     case DW_LANG_ObjC:
15468       cu->language = language_objc;
15469       break;
15470     case DW_LANG_Cobol74:
15471     case DW_LANG_Cobol85:
15472     default:
15473       cu->language = language_minimal;
15474       break;
15475     }
15476   cu->language_defn = language_def (cu->language);
15477 }
15478
15479 /* Return the named attribute or NULL if not there.  */
15480
15481 static struct attribute *
15482 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
15483 {
15484   for (;;)
15485     {
15486       unsigned int i;
15487       struct attribute *spec = NULL;
15488
15489       for (i = 0; i < die->num_attrs; ++i)
15490         {
15491           if (die->attrs[i].name == name)
15492             return &die->attrs[i];
15493           if (die->attrs[i].name == DW_AT_specification
15494               || die->attrs[i].name == DW_AT_abstract_origin)
15495             spec = &die->attrs[i];
15496         }
15497
15498       if (!spec)
15499         break;
15500
15501       die = follow_die_ref (die, spec, &cu);
15502     }
15503
15504   return NULL;
15505 }
15506
15507 /* Return the named attribute or NULL if not there,
15508    but do not follow DW_AT_specification, etc.
15509    This is for use in contexts where we're reading .debug_types dies.
15510    Following DW_AT_specification, DW_AT_abstract_origin will take us
15511    back up the chain, and we want to go down.  */
15512
15513 static struct attribute *
15514 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
15515 {
15516   unsigned int i;
15517
15518   for (i = 0; i < die->num_attrs; ++i)
15519     if (die->attrs[i].name == name)
15520       return &die->attrs[i];
15521
15522   return NULL;
15523 }
15524
15525 /* Return non-zero iff the attribute NAME is defined for the given DIE,
15526    and holds a non-zero value.  This function should only be used for
15527    DW_FORM_flag or DW_FORM_flag_present attributes.  */
15528
15529 static int
15530 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
15531 {
15532   struct attribute *attr = dwarf2_attr (die, name, cu);
15533
15534   return (attr && DW_UNSND (attr));
15535 }
15536
15537 static int
15538 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
15539 {
15540   /* A DIE is a declaration if it has a DW_AT_declaration attribute
15541      which value is non-zero.  However, we have to be careful with
15542      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
15543      (via dwarf2_flag_true_p) follows this attribute.  So we may
15544      end up accidently finding a declaration attribute that belongs
15545      to a different DIE referenced by the specification attribute,
15546      even though the given DIE does not have a declaration attribute.  */
15547   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
15548           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
15549 }
15550
15551 /* Return the die giving the specification for DIE, if there is
15552    one.  *SPEC_CU is the CU containing DIE on input, and the CU
15553    containing the return value on output.  If there is no
15554    specification, but there is an abstract origin, that is
15555    returned.  */
15556
15557 static struct die_info *
15558 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
15559 {
15560   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
15561                                              *spec_cu);
15562
15563   if (spec_attr == NULL)
15564     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
15565
15566   if (spec_attr == NULL)
15567     return NULL;
15568   else
15569     return follow_die_ref (die, spec_attr, spec_cu);
15570 }
15571
15572 /* Free the line_header structure *LH, and any arrays and strings it
15573    refers to.
15574    NOTE: This is also used as a "cleanup" function.  */
15575
15576 static void
15577 free_line_header (struct line_header *lh)
15578 {
15579   if (lh->standard_opcode_lengths)
15580     xfree (lh->standard_opcode_lengths);
15581
15582   /* Remember that all the lh->file_names[i].name pointers are
15583      pointers into debug_line_buffer, and don't need to be freed.  */
15584   if (lh->file_names)
15585     xfree (lh->file_names);
15586
15587   /* Similarly for the include directory names.  */
15588   if (lh->include_dirs)
15589     xfree (lh->include_dirs);
15590
15591   xfree (lh);
15592 }
15593
15594 /* Add an entry to LH's include directory table.  */
15595
15596 static void
15597 add_include_dir (struct line_header *lh, const char *include_dir)
15598 {
15599   /* Grow the array if necessary.  */
15600   if (lh->include_dirs_size == 0)
15601     {
15602       lh->include_dirs_size = 1; /* for testing */
15603       lh->include_dirs = xmalloc (lh->include_dirs_size
15604                                   * sizeof (*lh->include_dirs));
15605     }
15606   else if (lh->num_include_dirs >= lh->include_dirs_size)
15607     {
15608       lh->include_dirs_size *= 2;
15609       lh->include_dirs = xrealloc (lh->include_dirs,
15610                                    (lh->include_dirs_size
15611                                     * sizeof (*lh->include_dirs)));
15612     }
15613
15614   lh->include_dirs[lh->num_include_dirs++] = include_dir;
15615 }
15616
15617 /* Add an entry to LH's file name table.  */
15618
15619 static void
15620 add_file_name (struct line_header *lh,
15621                const char *name,
15622                unsigned int dir_index,
15623                unsigned int mod_time,
15624                unsigned int length)
15625 {
15626   struct file_entry *fe;
15627
15628   /* Grow the array if necessary.  */
15629   if (lh->file_names_size == 0)
15630     {
15631       lh->file_names_size = 1; /* for testing */
15632       lh->file_names = xmalloc (lh->file_names_size
15633                                 * sizeof (*lh->file_names));
15634     }
15635   else if (lh->num_file_names >= lh->file_names_size)
15636     {
15637       lh->file_names_size *= 2;
15638       lh->file_names = xrealloc (lh->file_names,
15639                                  (lh->file_names_size
15640                                   * sizeof (*lh->file_names)));
15641     }
15642
15643   fe = &lh->file_names[lh->num_file_names++];
15644   fe->name = name;
15645   fe->dir_index = dir_index;
15646   fe->mod_time = mod_time;
15647   fe->length = length;
15648   fe->included_p = 0;
15649   fe->symtab = NULL;
15650 }
15651
15652 /* A convenience function to find the proper .debug_line section for a
15653    CU.  */
15654
15655 static struct dwarf2_section_info *
15656 get_debug_line_section (struct dwarf2_cu *cu)
15657 {
15658   struct dwarf2_section_info *section;
15659
15660   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
15661      DWO file.  */
15662   if (cu->dwo_unit && cu->per_cu->is_debug_types)
15663     section = &cu->dwo_unit->dwo_file->sections.line;
15664   else if (cu->per_cu->is_dwz)
15665     {
15666       struct dwz_file *dwz = dwarf2_get_dwz_file ();
15667
15668       section = &dwz->line;
15669     }
15670   else
15671     section = &dwarf2_per_objfile->line;
15672
15673   return section;
15674 }
15675
15676 /* Read the statement program header starting at OFFSET in
15677    .debug_line, or .debug_line.dwo.  Return a pointer
15678    to a struct line_header, allocated using xmalloc.
15679
15680    NOTE: the strings in the include directory and file name tables of
15681    the returned object point into the dwarf line section buffer,
15682    and must not be freed.  */
15683
15684 static struct line_header *
15685 dwarf_decode_line_header (unsigned int offset, struct dwarf2_cu *cu)
15686 {
15687   struct cleanup *back_to;
15688   struct line_header *lh;
15689   const gdb_byte *line_ptr;
15690   unsigned int bytes_read, offset_size;
15691   int i;
15692   const char *cur_dir, *cur_file;
15693   struct dwarf2_section_info *section;
15694   bfd *abfd;
15695
15696   section = get_debug_line_section (cu);
15697   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
15698   if (section->buffer == NULL)
15699     {
15700       if (cu->dwo_unit && cu->per_cu->is_debug_types)
15701         complaint (&symfile_complaints, _("missing .debug_line.dwo section"));
15702       else
15703         complaint (&symfile_complaints, _("missing .debug_line section"));
15704       return 0;
15705     }
15706
15707   /* We can't do this until we know the section is non-empty.
15708      Only then do we know we have such a section.  */
15709   abfd = section->asection->owner;
15710
15711   /* Make sure that at least there's room for the total_length field.
15712      That could be 12 bytes long, but we're just going to fudge that.  */
15713   if (offset + 4 >= section->size)
15714     {
15715       dwarf2_statement_list_fits_in_line_number_section_complaint ();
15716       return 0;
15717     }
15718
15719   lh = xmalloc (sizeof (*lh));
15720   memset (lh, 0, sizeof (*lh));
15721   back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
15722                           (void *) lh);
15723
15724   line_ptr = section->buffer + offset;
15725
15726   /* Read in the header.  */
15727   lh->total_length =
15728     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
15729                                             &bytes_read, &offset_size);
15730   line_ptr += bytes_read;
15731   if (line_ptr + lh->total_length > (section->buffer + section->size))
15732     {
15733       dwarf2_statement_list_fits_in_line_number_section_complaint ();
15734       do_cleanups (back_to);
15735       return 0;
15736     }
15737   lh->statement_program_end = line_ptr + lh->total_length;
15738   lh->version = read_2_bytes (abfd, line_ptr);
15739   line_ptr += 2;
15740   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
15741   line_ptr += offset_size;
15742   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
15743   line_ptr += 1;
15744   if (lh->version >= 4)
15745     {
15746       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
15747       line_ptr += 1;
15748     }
15749   else
15750     lh->maximum_ops_per_instruction = 1;
15751
15752   if (lh->maximum_ops_per_instruction == 0)
15753     {
15754       lh->maximum_ops_per_instruction = 1;
15755       complaint (&symfile_complaints,
15756                  _("invalid maximum_ops_per_instruction "
15757                    "in `.debug_line' section"));
15758     }
15759
15760   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
15761   line_ptr += 1;
15762   lh->line_base = read_1_signed_byte (abfd, line_ptr);
15763   line_ptr += 1;
15764   lh->line_range = read_1_byte (abfd, line_ptr);
15765   line_ptr += 1;
15766   lh->opcode_base = read_1_byte (abfd, line_ptr);
15767   line_ptr += 1;
15768   lh->standard_opcode_lengths
15769     = xmalloc (lh->opcode_base * sizeof (lh->standard_opcode_lengths[0]));
15770
15771   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
15772   for (i = 1; i < lh->opcode_base; ++i)
15773     {
15774       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
15775       line_ptr += 1;
15776     }
15777
15778   /* Read directory table.  */
15779   while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
15780     {
15781       line_ptr += bytes_read;
15782       add_include_dir (lh, cur_dir);
15783     }
15784   line_ptr += bytes_read;
15785
15786   /* Read file name table.  */
15787   while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
15788     {
15789       unsigned int dir_index, mod_time, length;
15790
15791       line_ptr += bytes_read;
15792       dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
15793       line_ptr += bytes_read;
15794       mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
15795       line_ptr += bytes_read;
15796       length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
15797       line_ptr += bytes_read;
15798
15799       add_file_name (lh, cur_file, dir_index, mod_time, length);
15800     }
15801   line_ptr += bytes_read;
15802   lh->statement_program_start = line_ptr;
15803
15804   if (line_ptr > (section->buffer + section->size))
15805     complaint (&symfile_complaints,
15806                _("line number info header doesn't "
15807                  "fit in `.debug_line' section"));
15808
15809   discard_cleanups (back_to);
15810   return lh;
15811 }
15812
15813 /* Subroutine of dwarf_decode_lines to simplify it.
15814    Return the file name of the psymtab for included file FILE_INDEX
15815    in line header LH of PST.
15816    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
15817    If space for the result is malloc'd, it will be freed by a cleanup.
15818    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.
15819
15820    The function creates dangling cleanup registration.  */
15821
15822 static const char *
15823 psymtab_include_file_name (const struct line_header *lh, int file_index,
15824                            const struct partial_symtab *pst,
15825                            const char *comp_dir)
15826 {
15827   const struct file_entry fe = lh->file_names [file_index];
15828   const char *include_name = fe.name;
15829   const char *include_name_to_compare = include_name;
15830   const char *dir_name = NULL;
15831   const char *pst_filename;
15832   char *copied_name = NULL;
15833   int file_is_pst;
15834
15835   if (fe.dir_index)
15836     dir_name = lh->include_dirs[fe.dir_index - 1];
15837
15838   if (!IS_ABSOLUTE_PATH (include_name)
15839       && (dir_name != NULL || comp_dir != NULL))
15840     {
15841       /* Avoid creating a duplicate psymtab for PST.
15842          We do this by comparing INCLUDE_NAME and PST_FILENAME.
15843          Before we do the comparison, however, we need to account
15844          for DIR_NAME and COMP_DIR.
15845          First prepend dir_name (if non-NULL).  If we still don't
15846          have an absolute path prepend comp_dir (if non-NULL).
15847          However, the directory we record in the include-file's
15848          psymtab does not contain COMP_DIR (to match the
15849          corresponding symtab(s)).
15850
15851          Example:
15852
15853          bash$ cd /tmp
15854          bash$ gcc -g ./hello.c
15855          include_name = "hello.c"
15856          dir_name = "."
15857          DW_AT_comp_dir = comp_dir = "/tmp"
15858          DW_AT_name = "./hello.c"  */
15859
15860       if (dir_name != NULL)
15861         {
15862           char *tem = concat (dir_name, SLASH_STRING,
15863                               include_name, (char *)NULL);
15864
15865           make_cleanup (xfree, tem);
15866           include_name = tem;
15867           include_name_to_compare = include_name;
15868         }
15869       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
15870         {
15871           char *tem = concat (comp_dir, SLASH_STRING,
15872                               include_name, (char *)NULL);
15873
15874           make_cleanup (xfree, tem);
15875           include_name_to_compare = tem;
15876         }
15877     }
15878
15879   pst_filename = pst->filename;
15880   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
15881     {
15882       copied_name = concat (pst->dirname, SLASH_STRING,
15883                             pst_filename, (char *)NULL);
15884       pst_filename = copied_name;
15885     }
15886
15887   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
15888
15889   if (copied_name != NULL)
15890     xfree (copied_name);
15891
15892   if (file_is_pst)
15893     return NULL;
15894   return include_name;
15895 }
15896
15897 /* Ignore this record_line request.  */
15898
15899 static void
15900 noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
15901 {
15902   return;
15903 }
15904
15905 /* Subroutine of dwarf_decode_lines to simplify it.
15906    Process the line number information in LH.  */
15907
15908 static void
15909 dwarf_decode_lines_1 (struct line_header *lh, const char *comp_dir,
15910                       struct dwarf2_cu *cu, struct partial_symtab *pst)
15911 {
15912   const gdb_byte *line_ptr, *extended_end;
15913   const gdb_byte *line_end;
15914   unsigned int bytes_read, extended_len;
15915   unsigned char op_code, extended_op, adj_opcode;
15916   CORE_ADDR baseaddr;
15917   struct objfile *objfile = cu->objfile;
15918   bfd *abfd = objfile->obfd;
15919   struct gdbarch *gdbarch = get_objfile_arch (objfile);
15920   const int decode_for_pst_p = (pst != NULL);
15921   struct subfile *last_subfile = NULL;
15922   void (*p_record_line) (struct subfile *subfile, int line, CORE_ADDR pc)
15923     = record_line;
15924
15925   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
15926
15927   line_ptr = lh->statement_program_start;
15928   line_end = lh->statement_program_end;
15929
15930   /* Read the statement sequences until there's nothing left.  */
15931   while (line_ptr < line_end)
15932     {
15933       /* state machine registers  */
15934       CORE_ADDR address = 0;
15935       unsigned int file = 1;
15936       unsigned int line = 1;
15937       unsigned int column = 0;
15938       int is_stmt = lh->default_is_stmt;
15939       int basic_block = 0;
15940       int end_sequence = 0;
15941       CORE_ADDR addr;
15942       unsigned char op_index = 0;
15943
15944       if (!decode_for_pst_p && lh->num_file_names >= file)
15945         {
15946           /* Start a subfile for the current file of the state machine.  */
15947           /* lh->include_dirs and lh->file_names are 0-based, but the
15948              directory and file name numbers in the statement program
15949              are 1-based.  */
15950           struct file_entry *fe = &lh->file_names[file - 1];
15951           const char *dir = NULL;
15952
15953           if (fe->dir_index)
15954             dir = lh->include_dirs[fe->dir_index - 1];
15955
15956           dwarf2_start_subfile (fe->name, dir, comp_dir);
15957         }
15958
15959       /* Decode the table.  */
15960       while (!end_sequence)
15961         {
15962           op_code = read_1_byte (abfd, line_ptr);
15963           line_ptr += 1;
15964           if (line_ptr > line_end)
15965             {
15966               dwarf2_debug_line_missing_end_sequence_complaint ();
15967               break;
15968             }
15969
15970           if (op_code >= lh->opcode_base)
15971             {
15972               /* Special operand.  */
15973               adj_opcode = op_code - lh->opcode_base;
15974               address += (((op_index + (adj_opcode / lh->line_range))
15975                            / lh->maximum_ops_per_instruction)
15976                           * lh->minimum_instruction_length);
15977               op_index = ((op_index + (adj_opcode / lh->line_range))
15978                           % lh->maximum_ops_per_instruction);
15979               line += lh->line_base + (adj_opcode % lh->line_range);
15980               if (lh->num_file_names < file || file == 0)
15981                 dwarf2_debug_line_missing_file_complaint ();
15982               /* For now we ignore lines not starting on an
15983                  instruction boundary.  */
15984               else if (op_index == 0)
15985                 {
15986                   lh->file_names[file - 1].included_p = 1;
15987                   if (!decode_for_pst_p && is_stmt)
15988                     {
15989                       if (last_subfile != current_subfile)
15990                         {
15991                           addr = gdbarch_addr_bits_remove (gdbarch, address);
15992                           if (last_subfile)
15993                             (*p_record_line) (last_subfile, 0, addr);
15994                           last_subfile = current_subfile;
15995                         }
15996                       /* Append row to matrix using current values.  */
15997                       addr = gdbarch_addr_bits_remove (gdbarch, address);
15998                       (*p_record_line) (current_subfile, line, addr);
15999                     }
16000                 }
16001               basic_block = 0;
16002             }
16003           else switch (op_code)
16004             {
16005             case DW_LNS_extended_op:
16006               extended_len = read_unsigned_leb128 (abfd, line_ptr,
16007                                                    &bytes_read);
16008               line_ptr += bytes_read;
16009               extended_end = line_ptr + extended_len;
16010               extended_op = read_1_byte (abfd, line_ptr);
16011               line_ptr += 1;
16012               switch (extended_op)
16013                 {
16014                 case DW_LNE_end_sequence:
16015                   p_record_line = record_line;
16016                   end_sequence = 1;
16017                   break;
16018                 case DW_LNE_set_address:
16019                   address = read_address (abfd, line_ptr, cu, &bytes_read);
16020
16021                   if (address == 0 && !dwarf2_per_objfile->has_section_at_zero)
16022                     {
16023                       /* This line table is for a function which has been
16024                          GCd by the linker.  Ignore it.  PR gdb/12528 */
16025
16026                       long line_offset
16027                         = line_ptr - get_debug_line_section (cu)->buffer;
16028
16029                       complaint (&symfile_complaints,
16030                                  _(".debug_line address at offset 0x%lx is 0 "
16031                                    "[in module %s]"),
16032                                  line_offset, objfile->name);
16033                       p_record_line = noop_record_line;
16034                     }
16035
16036                   op_index = 0;
16037                   line_ptr += bytes_read;
16038                   address += baseaddr;
16039                   break;
16040                 case DW_LNE_define_file:
16041                   {
16042                     const char *cur_file;
16043                     unsigned int dir_index, mod_time, length;
16044
16045                     cur_file = read_direct_string (abfd, line_ptr,
16046                                                    &bytes_read);
16047                     line_ptr += bytes_read;
16048                     dir_index =
16049                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
16050                     line_ptr += bytes_read;
16051                     mod_time =
16052                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
16053                     line_ptr += bytes_read;
16054                     length =
16055                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
16056                     line_ptr += bytes_read;
16057                     add_file_name (lh, cur_file, dir_index, mod_time, length);
16058                   }
16059                   break;
16060                 case DW_LNE_set_discriminator:
16061                   /* The discriminator is not interesting to the debugger;
16062                      just ignore it.  */
16063                   line_ptr = extended_end;
16064                   break;
16065                 default:
16066                   complaint (&symfile_complaints,
16067                              _("mangled .debug_line section"));
16068                   return;
16069                 }
16070               /* Make sure that we parsed the extended op correctly.  If e.g.
16071                  we expected a different address size than the producer used,
16072                  we may have read the wrong number of bytes.  */
16073               if (line_ptr != extended_end)
16074                 {
16075                   complaint (&symfile_complaints,
16076                              _("mangled .debug_line section"));
16077                   return;
16078                 }
16079               break;
16080             case DW_LNS_copy:
16081               if (lh->num_file_names < file || file == 0)
16082                 dwarf2_debug_line_missing_file_complaint ();
16083               else
16084                 {
16085                   lh->file_names[file - 1].included_p = 1;
16086                   if (!decode_for_pst_p && is_stmt)
16087                     {
16088                       if (last_subfile != current_subfile)
16089                         {
16090                           addr = gdbarch_addr_bits_remove (gdbarch, address);
16091                           if (last_subfile)
16092                             (*p_record_line) (last_subfile, 0, addr);
16093                           last_subfile = current_subfile;
16094                         }
16095                       addr = gdbarch_addr_bits_remove (gdbarch, address);
16096                       (*p_record_line) (current_subfile, line, addr);
16097                     }
16098                 }
16099               basic_block = 0;
16100               break;
16101             case DW_LNS_advance_pc:
16102               {
16103                 CORE_ADDR adjust
16104                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
16105
16106                 address += (((op_index + adjust)
16107                              / lh->maximum_ops_per_instruction)
16108                             * lh->minimum_instruction_length);
16109                 op_index = ((op_index + adjust)
16110                             % lh->maximum_ops_per_instruction);
16111                 line_ptr += bytes_read;
16112               }
16113               break;
16114             case DW_LNS_advance_line:
16115               line += read_signed_leb128 (abfd, line_ptr, &bytes_read);
16116               line_ptr += bytes_read;
16117               break;
16118             case DW_LNS_set_file:
16119               {
16120                 /* The arrays lh->include_dirs and lh->file_names are
16121                    0-based, but the directory and file name numbers in
16122                    the statement program are 1-based.  */
16123                 struct file_entry *fe;
16124                 const char *dir = NULL;
16125
16126                 file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
16127                 line_ptr += bytes_read;
16128                 if (lh->num_file_names < file || file == 0)
16129                   dwarf2_debug_line_missing_file_complaint ();
16130                 else
16131                   {
16132                     fe = &lh->file_names[file - 1];
16133                     if (fe->dir_index)
16134                       dir = lh->include_dirs[fe->dir_index - 1];
16135                     if (!decode_for_pst_p)
16136                       {
16137                         last_subfile = current_subfile;
16138                         dwarf2_start_subfile (fe->name, dir, comp_dir);
16139                       }
16140                   }
16141               }
16142               break;
16143             case DW_LNS_set_column:
16144               column = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
16145               line_ptr += bytes_read;
16146               break;
16147             case DW_LNS_negate_stmt:
16148               is_stmt = (!is_stmt);
16149               break;
16150             case DW_LNS_set_basic_block:
16151               basic_block = 1;
16152               break;
16153             /* Add to the address register of the state machine the
16154                address increment value corresponding to special opcode
16155                255.  I.e., this value is scaled by the minimum
16156                instruction length since special opcode 255 would have
16157                scaled the increment.  */
16158             case DW_LNS_const_add_pc:
16159               {
16160                 CORE_ADDR adjust = (255 - lh->opcode_base) / lh->line_range;
16161
16162                 address += (((op_index + adjust)
16163                              / lh->maximum_ops_per_instruction)
16164                             * lh->minimum_instruction_length);
16165                 op_index = ((op_index + adjust)
16166                             % lh->maximum_ops_per_instruction);
16167               }
16168               break;
16169             case DW_LNS_fixed_advance_pc:
16170               address += read_2_bytes (abfd, line_ptr);
16171               op_index = 0;
16172               line_ptr += 2;
16173               break;
16174             default:
16175               {
16176                 /* Unknown standard opcode, ignore it.  */
16177                 int i;
16178
16179                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
16180                   {
16181                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
16182                     line_ptr += bytes_read;
16183                   }
16184               }
16185             }
16186         }
16187       if (lh->num_file_names < file || file == 0)
16188         dwarf2_debug_line_missing_file_complaint ();
16189       else
16190         {
16191           lh->file_names[file - 1].included_p = 1;
16192           if (!decode_for_pst_p)
16193             {
16194               addr = gdbarch_addr_bits_remove (gdbarch, address);
16195               (*p_record_line) (current_subfile, 0, addr);
16196             }
16197         }
16198     }
16199 }
16200
16201 /* Decode the Line Number Program (LNP) for the given line_header
16202    structure and CU.  The actual information extracted and the type
16203    of structures created from the LNP depends on the value of PST.
16204
16205    1. If PST is NULL, then this procedure uses the data from the program
16206       to create all necessary symbol tables, and their linetables.
16207
16208    2. If PST is not NULL, this procedure reads the program to determine
16209       the list of files included by the unit represented by PST, and
16210       builds all the associated partial symbol tables.
16211
16212    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
16213    It is used for relative paths in the line table.
16214    NOTE: When processing partial symtabs (pst != NULL),
16215    comp_dir == pst->dirname.
16216
16217    NOTE: It is important that psymtabs have the same file name (via strcmp)
16218    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
16219    symtab we don't use it in the name of the psymtabs we create.
16220    E.g. expand_line_sal requires this when finding psymtabs to expand.
16221    A good testcase for this is mb-inline.exp.  */
16222
16223 static void
16224 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
16225                     struct dwarf2_cu *cu, struct partial_symtab *pst,
16226                     int want_line_info)
16227 {
16228   struct objfile *objfile = cu->objfile;
16229   const int decode_for_pst_p = (pst != NULL);
16230   struct subfile *first_subfile = current_subfile;
16231
16232   if (want_line_info)
16233     dwarf_decode_lines_1 (lh, comp_dir, cu, pst);
16234
16235   if (decode_for_pst_p)
16236     {
16237       int file_index;
16238
16239       /* Now that we're done scanning the Line Header Program, we can
16240          create the psymtab of each included file.  */
16241       for (file_index = 0; file_index < lh->num_file_names; file_index++)
16242         if (lh->file_names[file_index].included_p == 1)
16243           {
16244             const char *include_name =
16245               psymtab_include_file_name (lh, file_index, pst, comp_dir);
16246             if (include_name != NULL)
16247               dwarf2_create_include_psymtab (include_name, pst, objfile);
16248           }
16249     }
16250   else
16251     {
16252       /* Make sure a symtab is created for every file, even files
16253          which contain only variables (i.e. no code with associated
16254          line numbers).  */
16255       int i;
16256
16257       for (i = 0; i < lh->num_file_names; i++)
16258         {
16259           const char *dir = NULL;
16260           struct file_entry *fe;
16261
16262           fe = &lh->file_names[i];
16263           if (fe->dir_index)
16264             dir = lh->include_dirs[fe->dir_index - 1];
16265           dwarf2_start_subfile (fe->name, dir, comp_dir);
16266
16267           /* Skip the main file; we don't need it, and it must be
16268              allocated last, so that it will show up before the
16269              non-primary symtabs in the objfile's symtab list.  */
16270           if (current_subfile == first_subfile)
16271             continue;
16272
16273           if (current_subfile->symtab == NULL)
16274             current_subfile->symtab = allocate_symtab (current_subfile->name,
16275                                                        objfile);
16276           fe->symtab = current_subfile->symtab;
16277         }
16278     }
16279 }
16280
16281 /* Start a subfile for DWARF.  FILENAME is the name of the file and
16282    DIRNAME the name of the source directory which contains FILENAME
16283    or NULL if not known.  COMP_DIR is the compilation directory for the
16284    linetable's compilation unit or NULL if not known.
16285    This routine tries to keep line numbers from identical absolute and
16286    relative file names in a common subfile.
16287
16288    Using the `list' example from the GDB testsuite, which resides in
16289    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
16290    of /srcdir/list0.c yields the following debugging information for list0.c:
16291
16292    DW_AT_name:          /srcdir/list0.c
16293    DW_AT_comp_dir:              /compdir
16294    files.files[0].name: list0.h
16295    files.files[0].dir:  /srcdir
16296    files.files[1].name: list0.c
16297    files.files[1].dir:  /srcdir
16298
16299    The line number information for list0.c has to end up in a single
16300    subfile, so that `break /srcdir/list0.c:1' works as expected.
16301    start_subfile will ensure that this happens provided that we pass the
16302    concatenation of files.files[1].dir and files.files[1].name as the
16303    subfile's name.  */
16304
16305 static void
16306 dwarf2_start_subfile (const char *filename, const char *dirname,
16307                       const char *comp_dir)
16308 {
16309   char *copy = NULL;
16310
16311   /* While reading the DIEs, we call start_symtab(DW_AT_name, DW_AT_comp_dir).
16312      `start_symtab' will always pass the contents of DW_AT_comp_dir as
16313      second argument to start_subfile.  To be consistent, we do the
16314      same here.  In order not to lose the line information directory,
16315      we concatenate it to the filename when it makes sense.
16316      Note that the Dwarf3 standard says (speaking of filenames in line
16317      information): ``The directory index is ignored for file names
16318      that represent full path names''.  Thus ignoring dirname in the
16319      `else' branch below isn't an issue.  */
16320
16321   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
16322     {
16323       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
16324       filename = copy;
16325     }
16326
16327   start_subfile (filename, comp_dir);
16328
16329   if (copy != NULL)
16330     xfree (copy);
16331 }
16332
16333 /* Start a symtab for DWARF.
16334    NAME, COMP_DIR, LOW_PC are passed to start_symtab.  */
16335
16336 static void
16337 dwarf2_start_symtab (struct dwarf2_cu *cu,
16338                      const char *name, const char *comp_dir, CORE_ADDR low_pc)
16339 {
16340   start_symtab (name, comp_dir, low_pc);
16341   record_debugformat ("DWARF 2");
16342   record_producer (cu->producer);
16343
16344   /* We assume that we're processing GCC output.  */
16345   processing_gcc_compilation = 2;
16346
16347   cu->processing_has_namespace_info = 0;
16348 }
16349
16350 static void
16351 var_decode_location (struct attribute *attr, struct symbol *sym,
16352                      struct dwarf2_cu *cu)
16353 {
16354   struct objfile *objfile = cu->objfile;
16355   struct comp_unit_head *cu_header = &cu->header;
16356
16357   /* NOTE drow/2003-01-30: There used to be a comment and some special
16358      code here to turn a symbol with DW_AT_external and a
16359      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
16360      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
16361      with some versions of binutils) where shared libraries could have
16362      relocations against symbols in their debug information - the
16363      minimal symbol would have the right address, but the debug info
16364      would not.  It's no longer necessary, because we will explicitly
16365      apply relocations when we read in the debug information now.  */
16366
16367   /* A DW_AT_location attribute with no contents indicates that a
16368      variable has been optimized away.  */
16369   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
16370     {
16371       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
16372       return;
16373     }
16374
16375   /* Handle one degenerate form of location expression specially, to
16376      preserve GDB's previous behavior when section offsets are
16377      specified.  If this is just a DW_OP_addr or DW_OP_GNU_addr_index
16378      then mark this symbol as LOC_STATIC.  */
16379
16380   if (attr_form_is_block (attr)
16381       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
16382            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
16383           || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
16384               && (DW_BLOCK (attr)->size
16385                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
16386     {
16387       unsigned int dummy;
16388
16389       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
16390         SYMBOL_VALUE_ADDRESS (sym) =
16391           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
16392       else
16393         SYMBOL_VALUE_ADDRESS (sym) =
16394           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
16395       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
16396       fixup_symbol_section (sym, objfile);
16397       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
16398                                               SYMBOL_SECTION (sym));
16399       return;
16400     }
16401
16402   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
16403      expression evaluator, and use LOC_COMPUTED only when necessary
16404      (i.e. when the value of a register or memory location is
16405      referenced, or a thread-local block, etc.).  Then again, it might
16406      not be worthwhile.  I'm assuming that it isn't unless performance
16407      or memory numbers show me otherwise.  */
16408
16409   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
16410
16411   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
16412     cu->has_loclist = 1;
16413 }
16414
16415 /* Given a pointer to a DWARF information entry, figure out if we need
16416    to make a symbol table entry for it, and if so, create a new entry
16417    and return a pointer to it.
16418    If TYPE is NULL, determine symbol type from the die, otherwise
16419    used the passed type.
16420    If SPACE is not NULL, use it to hold the new symbol.  If it is
16421    NULL, allocate a new symbol on the objfile's obstack.  */
16422
16423 static struct symbol *
16424 new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
16425                  struct symbol *space)
16426 {
16427   struct objfile *objfile = cu->objfile;
16428   struct symbol *sym = NULL;
16429   const char *name;
16430   struct attribute *attr = NULL;
16431   struct attribute *attr2 = NULL;
16432   CORE_ADDR baseaddr;
16433   struct pending **list_to_add = NULL;
16434
16435   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
16436
16437   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
16438
16439   name = dwarf2_name (die, cu);
16440   if (name)
16441     {
16442       const char *linkagename;
16443       int suppress_add = 0;
16444
16445       if (space)
16446         sym = space;
16447       else
16448         sym = allocate_symbol (objfile);
16449       OBJSTAT (objfile, n_syms++);
16450
16451       /* Cache this symbol's name and the name's demangled form (if any).  */
16452       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
16453       linkagename = dwarf2_physname (name, die, cu);
16454       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
16455
16456       /* Fortran does not have mangling standard and the mangling does differ
16457          between gfortran, iFort etc.  */
16458       if (cu->language == language_fortran
16459           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
16460         symbol_set_demangled_name (&(sym->ginfo),
16461                                    dwarf2_full_name (name, die, cu),
16462                                    NULL);
16463
16464       /* Default assumptions.
16465          Use the passed type or decode it from the die.  */
16466       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
16467       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
16468       if (type != NULL)
16469         SYMBOL_TYPE (sym) = type;
16470       else
16471         SYMBOL_TYPE (sym) = die_type (die, cu);
16472       attr = dwarf2_attr (die,
16473                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
16474                           cu);
16475       if (attr)
16476         {
16477           SYMBOL_LINE (sym) = DW_UNSND (attr);
16478         }
16479
16480       attr = dwarf2_attr (die,
16481                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
16482                           cu);
16483       if (attr)
16484         {
16485           int file_index = DW_UNSND (attr);
16486
16487           if (cu->line_header == NULL
16488               || file_index > cu->line_header->num_file_names)
16489             complaint (&symfile_complaints,
16490                        _("file index out of range"));
16491           else if (file_index > 0)
16492             {
16493               struct file_entry *fe;
16494
16495               fe = &cu->line_header->file_names[file_index - 1];
16496               SYMBOL_SYMTAB (sym) = fe->symtab;
16497             }
16498         }
16499
16500       switch (die->tag)
16501         {
16502         case DW_TAG_label:
16503           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
16504           if (attr)
16505             {
16506               SYMBOL_VALUE_ADDRESS (sym) = DW_ADDR (attr) + baseaddr;
16507             }
16508           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
16509           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
16510           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
16511           add_symbol_to_list (sym, cu->list_in_scope);
16512           break;
16513         case DW_TAG_subprogram:
16514           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
16515              finish_block.  */
16516           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
16517           attr2 = dwarf2_attr (die, DW_AT_external, cu);
16518           if ((attr2 && (DW_UNSND (attr2) != 0))
16519               || cu->language == language_ada)
16520             {
16521               /* Subprograms marked external are stored as a global symbol.
16522                  Ada subprograms, whether marked external or not, are always
16523                  stored as a global symbol, because we want to be able to
16524                  access them globally.  For instance, we want to be able
16525                  to break on a nested subprogram without having to
16526                  specify the context.  */
16527               list_to_add = &global_symbols;
16528             }
16529           else
16530             {
16531               list_to_add = cu->list_in_scope;
16532             }
16533           break;
16534         case DW_TAG_inlined_subroutine:
16535           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
16536              finish_block.  */
16537           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
16538           SYMBOL_INLINED (sym) = 1;
16539           list_to_add = cu->list_in_scope;
16540           break;
16541         case DW_TAG_template_value_param:
16542           suppress_add = 1;
16543           /* Fall through.  */
16544         case DW_TAG_constant:
16545         case DW_TAG_variable:
16546         case DW_TAG_member:
16547           /* Compilation with minimal debug info may result in
16548              variables with missing type entries.  Change the
16549              misleading `void' type to something sensible.  */
16550           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
16551             SYMBOL_TYPE (sym)
16552               = objfile_type (objfile)->nodebug_data_symbol;
16553
16554           attr = dwarf2_attr (die, DW_AT_const_value, cu);
16555           /* In the case of DW_TAG_member, we should only be called for
16556              static const members.  */
16557           if (die->tag == DW_TAG_member)
16558             {
16559               /* dwarf2_add_field uses die_is_declaration,
16560                  so we do the same.  */
16561               gdb_assert (die_is_declaration (die, cu));
16562               gdb_assert (attr);
16563             }
16564           if (attr)
16565             {
16566               dwarf2_const_value (attr, sym, cu);
16567               attr2 = dwarf2_attr (die, DW_AT_external, cu);
16568               if (!suppress_add)
16569                 {
16570                   if (attr2 && (DW_UNSND (attr2) != 0))
16571                     list_to_add = &global_symbols;
16572                   else
16573                     list_to_add = cu->list_in_scope;
16574                 }
16575               break;
16576             }
16577           attr = dwarf2_attr (die, DW_AT_location, cu);
16578           if (attr)
16579             {
16580               var_decode_location (attr, sym, cu);
16581               attr2 = dwarf2_attr (die, DW_AT_external, cu);
16582
16583               /* Fortran explicitly imports any global symbols to the local
16584                  scope by DW_TAG_common_block.  */
16585               if (cu->language == language_fortran && die->parent
16586                   && die->parent->tag == DW_TAG_common_block)
16587                 attr2 = NULL;
16588
16589               if (SYMBOL_CLASS (sym) == LOC_STATIC
16590                   && SYMBOL_VALUE_ADDRESS (sym) == 0
16591                   && !dwarf2_per_objfile->has_section_at_zero)
16592                 {
16593                   /* When a static variable is eliminated by the linker,
16594                      the corresponding debug information is not stripped
16595                      out, but the variable address is set to null;
16596                      do not add such variables into symbol table.  */
16597                 }
16598               else if (attr2 && (DW_UNSND (attr2) != 0))
16599                 {
16600                   /* Workaround gfortran PR debug/40040 - it uses
16601                      DW_AT_location for variables in -fPIC libraries which may
16602                      get overriden by other libraries/executable and get
16603                      a different address.  Resolve it by the minimal symbol
16604                      which may come from inferior's executable using copy
16605                      relocation.  Make this workaround only for gfortran as for
16606                      other compilers GDB cannot guess the minimal symbol
16607                      Fortran mangling kind.  */
16608                   if (cu->language == language_fortran && die->parent
16609                       && die->parent->tag == DW_TAG_module
16610                       && cu->producer
16611                       && strncmp (cu->producer, "GNU Fortran ", 12) == 0)
16612                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
16613
16614                   /* A variable with DW_AT_external is never static,
16615                      but it may be block-scoped.  */
16616                   list_to_add = (cu->list_in_scope == &file_symbols
16617                                  ? &global_symbols : cu->list_in_scope);
16618                 }
16619               else
16620                 list_to_add = cu->list_in_scope;
16621             }
16622           else
16623             {
16624               /* We do not know the address of this symbol.
16625                  If it is an external symbol and we have type information
16626                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
16627                  The address of the variable will then be determined from
16628                  the minimal symbol table whenever the variable is
16629                  referenced.  */
16630               attr2 = dwarf2_attr (die, DW_AT_external, cu);
16631
16632               /* Fortran explicitly imports any global symbols to the local
16633                  scope by DW_TAG_common_block.  */
16634               if (cu->language == language_fortran && die->parent
16635                   && die->parent->tag == DW_TAG_common_block)
16636                 {
16637                   /* SYMBOL_CLASS doesn't matter here because
16638                      read_common_block is going to reset it.  */
16639                   if (!suppress_add)
16640                     list_to_add = cu->list_in_scope;
16641                 }
16642               else if (attr2 && (DW_UNSND (attr2) != 0)
16643                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
16644                 {
16645                   /* A variable with DW_AT_external is never static, but it
16646                      may be block-scoped.  */
16647                   list_to_add = (cu->list_in_scope == &file_symbols
16648                                  ? &global_symbols : cu->list_in_scope);
16649
16650                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
16651                 }
16652               else if (!die_is_declaration (die, cu))
16653                 {
16654                   /* Use the default LOC_OPTIMIZED_OUT class.  */
16655                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
16656                   if (!suppress_add)
16657                     list_to_add = cu->list_in_scope;
16658                 }
16659             }
16660           break;
16661         case DW_TAG_formal_parameter:
16662           /* If we are inside a function, mark this as an argument.  If
16663              not, we might be looking at an argument to an inlined function
16664              when we do not have enough information to show inlined frames;
16665              pretend it's a local variable in that case so that the user can
16666              still see it.  */
16667           if (context_stack_depth > 0
16668               && context_stack[context_stack_depth - 1].name != NULL)
16669             SYMBOL_IS_ARGUMENT (sym) = 1;
16670           attr = dwarf2_attr (die, DW_AT_location, cu);
16671           if (attr)
16672             {
16673               var_decode_location (attr, sym, cu);
16674             }
16675           attr = dwarf2_attr (die, DW_AT_const_value, cu);
16676           if (attr)
16677             {
16678               dwarf2_const_value (attr, sym, cu);
16679             }
16680
16681           list_to_add = cu->list_in_scope;
16682           break;
16683         case DW_TAG_unspecified_parameters:
16684           /* From varargs functions; gdb doesn't seem to have any
16685              interest in this information, so just ignore it for now.
16686              (FIXME?) */
16687           break;
16688         case DW_TAG_template_type_param:
16689           suppress_add = 1;
16690           /* Fall through.  */
16691         case DW_TAG_class_type:
16692         case DW_TAG_interface_type:
16693         case DW_TAG_structure_type:
16694         case DW_TAG_union_type:
16695         case DW_TAG_set_type:
16696         case DW_TAG_enumeration_type:
16697           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
16698           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
16699
16700           {
16701             /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't
16702                really ever be static objects: otherwise, if you try
16703                to, say, break of a class's method and you're in a file
16704                which doesn't mention that class, it won't work unless
16705                the check for all static symbols in lookup_symbol_aux
16706                saves you.  See the OtherFileClass tests in
16707                gdb.c++/namespace.exp.  */
16708
16709             if (!suppress_add)
16710               {
16711                 list_to_add = (cu->list_in_scope == &file_symbols
16712                                && (cu->language == language_cplus
16713                                    || cu->language == language_java)
16714                                ? &global_symbols : cu->list_in_scope);
16715
16716                 /* The semantics of C++ state that "struct foo {
16717                    ... }" also defines a typedef for "foo".  A Java
16718                    class declaration also defines a typedef for the
16719                    class.  */
16720                 if (cu->language == language_cplus
16721                     || cu->language == language_java
16722                     || cu->language == language_ada)
16723                   {
16724                     /* The symbol's name is already allocated along
16725                        with this objfile, so we don't need to
16726                        duplicate it for the type.  */
16727                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
16728                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
16729                   }
16730               }
16731           }
16732           break;
16733         case DW_TAG_typedef:
16734           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
16735           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
16736           list_to_add = cu->list_in_scope;
16737           break;
16738         case DW_TAG_base_type:
16739         case DW_TAG_subrange_type:
16740           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
16741           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
16742           list_to_add = cu->list_in_scope;
16743           break;
16744         case DW_TAG_enumerator:
16745           attr = dwarf2_attr (die, DW_AT_const_value, cu);
16746           if (attr)
16747             {
16748               dwarf2_const_value (attr, sym, cu);
16749             }
16750           {
16751             /* NOTE: carlton/2003-11-10: See comment above in the
16752                DW_TAG_class_type, etc. block.  */
16753
16754             list_to_add = (cu->list_in_scope == &file_symbols
16755                            && (cu->language == language_cplus
16756                                || cu->language == language_java)
16757                            ? &global_symbols : cu->list_in_scope);
16758           }
16759           break;
16760         case DW_TAG_namespace:
16761           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
16762           list_to_add = &global_symbols;
16763           break;
16764         case DW_TAG_common_block:
16765           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
16766           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
16767           add_symbol_to_list (sym, cu->list_in_scope);
16768           break;
16769         default:
16770           /* Not a tag we recognize.  Hopefully we aren't processing
16771              trash data, but since we must specifically ignore things
16772              we don't recognize, there is nothing else we should do at
16773              this point.  */
16774           complaint (&symfile_complaints, _("unsupported tag: '%s'"),
16775                      dwarf_tag_name (die->tag));
16776           break;
16777         }
16778
16779       if (suppress_add)
16780         {
16781           sym->hash_next = objfile->template_symbols;
16782           objfile->template_symbols = sym;
16783           list_to_add = NULL;
16784         }
16785
16786       if (list_to_add != NULL)
16787         add_symbol_to_list (sym, list_to_add);
16788
16789       /* For the benefit of old versions of GCC, check for anonymous
16790          namespaces based on the demangled name.  */
16791       if (!cu->processing_has_namespace_info
16792           && cu->language == language_cplus)
16793         cp_scan_for_anonymous_namespaces (sym, objfile);
16794     }
16795   return (sym);
16796 }
16797
16798 /* A wrapper for new_symbol_full that always allocates a new symbol.  */
16799
16800 static struct symbol *
16801 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
16802 {
16803   return new_symbol_full (die, type, cu, NULL);
16804 }
16805
16806 /* Given an attr with a DW_FORM_dataN value in host byte order,
16807    zero-extend it as appropriate for the symbol's type.  The DWARF
16808    standard (v4) is not entirely clear about the meaning of using
16809    DW_FORM_dataN for a constant with a signed type, where the type is
16810    wider than the data.  The conclusion of a discussion on the DWARF
16811    list was that this is unspecified.  We choose to always zero-extend
16812    because that is the interpretation long in use by GCC.  */
16813
16814 static gdb_byte *
16815 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
16816                          struct dwarf2_cu *cu, LONGEST *value, int bits)
16817 {
16818   struct objfile *objfile = cu->objfile;
16819   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
16820                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
16821   LONGEST l = DW_UNSND (attr);
16822
16823   if (bits < sizeof (*value) * 8)
16824     {
16825       l &= ((LONGEST) 1 << bits) - 1;
16826       *value = l;
16827     }
16828   else if (bits == sizeof (*value) * 8)
16829     *value = l;
16830   else
16831     {
16832       gdb_byte *bytes = obstack_alloc (obstack, bits / 8);
16833       store_unsigned_integer (bytes, bits / 8, byte_order, l);
16834       return bytes;
16835     }
16836
16837   return NULL;
16838 }
16839
16840 /* Read a constant value from an attribute.  Either set *VALUE, or if
16841    the value does not fit in *VALUE, set *BYTES - either already
16842    allocated on the objfile obstack, or newly allocated on OBSTACK,
16843    or, set *BATON, if we translated the constant to a location
16844    expression.  */
16845
16846 static void
16847 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
16848                          const char *name, struct obstack *obstack,
16849                          struct dwarf2_cu *cu,
16850                          LONGEST *value, const gdb_byte **bytes,
16851                          struct dwarf2_locexpr_baton **baton)
16852 {
16853   struct objfile *objfile = cu->objfile;
16854   struct comp_unit_head *cu_header = &cu->header;
16855   struct dwarf_block *blk;
16856   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
16857                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
16858
16859   *value = 0;
16860   *bytes = NULL;
16861   *baton = NULL;
16862
16863   switch (attr->form)
16864     {
16865     case DW_FORM_addr:
16866     case DW_FORM_GNU_addr_index:
16867       {
16868         gdb_byte *data;
16869
16870         if (TYPE_LENGTH (type) != cu_header->addr_size)
16871           dwarf2_const_value_length_mismatch_complaint (name,
16872                                                         cu_header->addr_size,
16873                                                         TYPE_LENGTH (type));
16874         /* Symbols of this form are reasonably rare, so we just
16875            piggyback on the existing location code rather than writing
16876            a new implementation of symbol_computed_ops.  */
16877         *baton = obstack_alloc (obstack, sizeof (struct dwarf2_locexpr_baton));
16878         (*baton)->per_cu = cu->per_cu;
16879         gdb_assert ((*baton)->per_cu);
16880
16881         (*baton)->size = 2 + cu_header->addr_size;
16882         data = obstack_alloc (obstack, (*baton)->size);
16883         (*baton)->data = data;
16884
16885         data[0] = DW_OP_addr;
16886         store_unsigned_integer (&data[1], cu_header->addr_size,
16887                                 byte_order, DW_ADDR (attr));
16888         data[cu_header->addr_size + 1] = DW_OP_stack_value;
16889       }
16890       break;
16891     case DW_FORM_string:
16892     case DW_FORM_strp:
16893     case DW_FORM_GNU_str_index:
16894     case DW_FORM_GNU_strp_alt:
16895       /* DW_STRING is already allocated on the objfile obstack, point
16896          directly to it.  */
16897       *bytes = (const gdb_byte *) DW_STRING (attr);
16898       break;
16899     case DW_FORM_block1:
16900     case DW_FORM_block2:
16901     case DW_FORM_block4:
16902     case DW_FORM_block:
16903     case DW_FORM_exprloc:
16904       blk = DW_BLOCK (attr);
16905       if (TYPE_LENGTH (type) != blk->size)
16906         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
16907                                                       TYPE_LENGTH (type));
16908       *bytes = blk->data;
16909       break;
16910
16911       /* The DW_AT_const_value attributes are supposed to carry the
16912          symbol's value "represented as it would be on the target
16913          architecture."  By the time we get here, it's already been
16914          converted to host endianness, so we just need to sign- or
16915          zero-extend it as appropriate.  */
16916     case DW_FORM_data1:
16917       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
16918       break;
16919     case DW_FORM_data2:
16920       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
16921       break;
16922     case DW_FORM_data4:
16923       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
16924       break;
16925     case DW_FORM_data8:
16926       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
16927       break;
16928
16929     case DW_FORM_sdata:
16930       *value = DW_SND (attr);
16931       break;
16932
16933     case DW_FORM_udata:
16934       *value = DW_UNSND (attr);
16935       break;
16936
16937     default:
16938       complaint (&symfile_complaints,
16939                  _("unsupported const value attribute form: '%s'"),
16940                  dwarf_form_name (attr->form));
16941       *value = 0;
16942       break;
16943     }
16944 }
16945
16946
16947 /* Copy constant value from an attribute to a symbol.  */
16948
16949 static void
16950 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
16951                     struct dwarf2_cu *cu)
16952 {
16953   struct objfile *objfile = cu->objfile;
16954   struct comp_unit_head *cu_header = &cu->header;
16955   LONGEST value;
16956   const gdb_byte *bytes;
16957   struct dwarf2_locexpr_baton *baton;
16958
16959   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
16960                            SYMBOL_PRINT_NAME (sym),
16961                            &objfile->objfile_obstack, cu,
16962                            &value, &bytes, &baton);
16963
16964   if (baton != NULL)
16965     {
16966       SYMBOL_LOCATION_BATON (sym) = baton;
16967       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16968     }
16969   else if (bytes != NULL)
16970      {
16971       SYMBOL_VALUE_BYTES (sym) = bytes;
16972       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
16973     }
16974   else
16975     {
16976       SYMBOL_VALUE (sym) = value;
16977       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
16978     }
16979 }
16980
16981 /* Return the type of the die in question using its DW_AT_type attribute.  */
16982
16983 static struct type *
16984 die_type (struct die_info *die, struct dwarf2_cu *cu)
16985 {
16986   struct attribute *type_attr;
16987
16988   type_attr = dwarf2_attr (die, DW_AT_type, cu);
16989   if (!type_attr)
16990     {
16991       /* A missing DW_AT_type represents a void type.  */
16992       return objfile_type (cu->objfile)->builtin_void;
16993     }
16994
16995   return lookup_die_type (die, type_attr, cu);
16996 }
16997
16998 /* True iff CU's producer generates GNAT Ada auxiliary information
16999    that allows to find parallel types through that information instead
17000    of having to do expensive parallel lookups by type name.  */
17001
17002 static int
17003 need_gnat_info (struct dwarf2_cu *cu)
17004 {
17005   /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
17006      of GNAT produces this auxiliary information, without any indication
17007      that it is produced.  Part of enhancing the FSF version of GNAT
17008      to produce that information will be to put in place an indicator
17009      that we can use in order to determine whether the descriptive type
17010      info is available or not.  One suggestion that has been made is
17011      to use a new attribute, attached to the CU die.  For now, assume
17012      that the descriptive type info is not available.  */
17013   return 0;
17014 }
17015
17016 /* Return the auxiliary type of the die in question using its
17017    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
17018    attribute is not present.  */
17019
17020 static struct type *
17021 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
17022 {
17023   struct attribute *type_attr;
17024
17025   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
17026   if (!type_attr)
17027     return NULL;
17028
17029   return lookup_die_type (die, type_attr, cu);
17030 }
17031
17032 /* If DIE has a descriptive_type attribute, then set the TYPE's
17033    descriptive type accordingly.  */
17034
17035 static void
17036 set_descriptive_type (struct type *type, struct die_info *die,
17037                       struct dwarf2_cu *cu)
17038 {
17039   struct type *descriptive_type = die_descriptive_type (die, cu);
17040
17041   if (descriptive_type)
17042     {
17043       ALLOCATE_GNAT_AUX_TYPE (type);
17044       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
17045     }
17046 }
17047
17048 /* Return the containing type of the die in question using its
17049    DW_AT_containing_type attribute.  */
17050
17051 static struct type *
17052 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
17053 {
17054   struct attribute *type_attr;
17055
17056   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
17057   if (!type_attr)
17058     error (_("Dwarf Error: Problem turning containing type into gdb type "
17059              "[in module %s]"), cu->objfile->name);
17060
17061   return lookup_die_type (die, type_attr, cu);
17062 }
17063
17064 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
17065
17066 static struct type *
17067 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
17068 {
17069   struct objfile *objfile = dwarf2_per_objfile->objfile;
17070   char *message, *saved;
17071
17072   message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
17073                         objfile->name,
17074                         cu->header.offset.sect_off,
17075                         die->offset.sect_off);
17076   saved = obstack_copy0 (&objfile->objfile_obstack,
17077                          message, strlen (message));
17078   xfree (message);
17079
17080   return init_type (TYPE_CODE_ERROR, 0, 0, saved, objfile);
17081 }
17082
17083 /* Look up the type of DIE in CU using its type attribute ATTR.
17084    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
17085    DW_AT_containing_type.
17086    If there is no type substitute an error marker.  */
17087
17088 static struct type *
17089 lookup_die_type (struct die_info *die, const struct attribute *attr,
17090                  struct dwarf2_cu *cu)
17091 {
17092   struct objfile *objfile = cu->objfile;
17093   struct type *this_type;
17094
17095   gdb_assert (attr->name == DW_AT_type
17096               || attr->name == DW_AT_GNAT_descriptive_type
17097               || attr->name == DW_AT_containing_type);
17098
17099   /* First see if we have it cached.  */
17100
17101   if (attr->form == DW_FORM_GNU_ref_alt)
17102     {
17103       struct dwarf2_per_cu_data *per_cu;
17104       sect_offset offset = dwarf2_get_ref_die_offset (attr);
17105
17106       per_cu = dwarf2_find_containing_comp_unit (offset, 1, cu->objfile);
17107       this_type = get_die_type_at_offset (offset, per_cu);
17108     }
17109   else if (attr_form_is_ref (attr))
17110     {
17111       sect_offset offset = dwarf2_get_ref_die_offset (attr);
17112
17113       this_type = get_die_type_at_offset (offset, cu->per_cu);
17114     }
17115   else if (attr->form == DW_FORM_ref_sig8)
17116     {
17117       ULONGEST signature = DW_SIGNATURE (attr);
17118
17119       return get_signatured_type (die, signature, cu);
17120     }
17121   else
17122     {
17123       complaint (&symfile_complaints,
17124                  _("Dwarf Error: Bad type attribute %s in DIE"
17125                    " at 0x%x [in module %s]"),
17126                  dwarf_attr_name (attr->name), die->offset.sect_off,
17127                  objfile->name);
17128       return build_error_marker_type (cu, die);
17129     }
17130
17131   /* If not cached we need to read it in.  */
17132
17133   if (this_type == NULL)
17134     {
17135       struct die_info *type_die = NULL;
17136       struct dwarf2_cu *type_cu = cu;
17137
17138       if (attr_form_is_ref (attr))
17139         type_die = follow_die_ref (die, attr, &type_cu);
17140       if (type_die == NULL)
17141         return build_error_marker_type (cu, die);
17142       /* If we find the type now, it's probably because the type came
17143          from an inter-CU reference and the type's CU got expanded before
17144          ours.  */
17145       this_type = read_type_die (type_die, type_cu);
17146     }
17147
17148   /* If we still don't have a type use an error marker.  */
17149
17150   if (this_type == NULL)
17151     return build_error_marker_type (cu, die);
17152
17153   return this_type;
17154 }
17155
17156 /* Return the type in DIE, CU.
17157    Returns NULL for invalid types.
17158
17159    This first does a lookup in die_type_hash,
17160    and only reads the die in if necessary.
17161
17162    NOTE: This can be called when reading in partial or full symbols.  */
17163
17164 static struct type *
17165 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
17166 {
17167   struct type *this_type;
17168
17169   this_type = get_die_type (die, cu);
17170   if (this_type)
17171     return this_type;
17172
17173   return read_type_die_1 (die, cu);
17174 }
17175
17176 /* Read the type in DIE, CU.
17177    Returns NULL for invalid types.  */
17178
17179 static struct type *
17180 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
17181 {
17182   struct type *this_type = NULL;
17183
17184   switch (die->tag)
17185     {
17186     case DW_TAG_class_type:
17187     case DW_TAG_interface_type:
17188     case DW_TAG_structure_type:
17189     case DW_TAG_union_type:
17190       this_type = read_structure_type (die, cu);
17191       break;
17192     case DW_TAG_enumeration_type:
17193       this_type = read_enumeration_type (die, cu);
17194       break;
17195     case DW_TAG_subprogram:
17196     case DW_TAG_subroutine_type:
17197     case DW_TAG_inlined_subroutine:
17198       this_type = read_subroutine_type (die, cu);
17199       break;
17200     case DW_TAG_array_type:
17201       this_type = read_array_type (die, cu);
17202       break;
17203     case DW_TAG_set_type:
17204       this_type = read_set_type (die, cu);
17205       break;
17206     case DW_TAG_pointer_type:
17207       this_type = read_tag_pointer_type (die, cu);
17208       break;
17209     case DW_TAG_ptr_to_member_type:
17210       this_type = read_tag_ptr_to_member_type (die, cu);
17211       break;
17212     case DW_TAG_reference_type:
17213       this_type = read_tag_reference_type (die, cu);
17214       break;
17215     case DW_TAG_const_type:
17216       this_type = read_tag_const_type (die, cu);
17217       break;
17218     case DW_TAG_volatile_type:
17219       this_type = read_tag_volatile_type (die, cu);
17220       break;
17221     case DW_TAG_restrict_type:
17222       this_type = read_tag_restrict_type (die, cu);
17223       break;
17224     case DW_TAG_string_type:
17225       this_type = read_tag_string_type (die, cu);
17226       break;
17227     case DW_TAG_typedef:
17228       this_type = read_typedef (die, cu);
17229       break;
17230     case DW_TAG_subrange_type:
17231       this_type = read_subrange_type (die, cu);
17232       break;
17233     case DW_TAG_base_type:
17234       this_type = read_base_type (die, cu);
17235       break;
17236     case DW_TAG_unspecified_type:
17237       this_type = read_unspecified_type (die, cu);
17238       break;
17239     case DW_TAG_namespace:
17240       this_type = read_namespace_type (die, cu);
17241       break;
17242     case DW_TAG_module:
17243       this_type = read_module_type (die, cu);
17244       break;
17245     default:
17246       complaint (&symfile_complaints,
17247                  _("unexpected tag in read_type_die: '%s'"),
17248                  dwarf_tag_name (die->tag));
17249       break;
17250     }
17251
17252   return this_type;
17253 }
17254
17255 /* See if we can figure out if the class lives in a namespace.  We do
17256    this by looking for a member function; its demangled name will
17257    contain namespace info, if there is any.
17258    Return the computed name or NULL.
17259    Space for the result is allocated on the objfile's obstack.
17260    This is the full-die version of guess_partial_die_structure_name.
17261    In this case we know DIE has no useful parent.  */
17262
17263 static char *
17264 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
17265 {
17266   struct die_info *spec_die;
17267   struct dwarf2_cu *spec_cu;
17268   struct die_info *child;
17269
17270   spec_cu = cu;
17271   spec_die = die_specification (die, &spec_cu);
17272   if (spec_die != NULL)
17273     {
17274       die = spec_die;
17275       cu = spec_cu;
17276     }
17277
17278   for (child = die->child;
17279        child != NULL;
17280        child = child->sibling)
17281     {
17282       if (child->tag == DW_TAG_subprogram)
17283         {
17284           struct attribute *attr;
17285
17286           attr = dwarf2_attr (child, DW_AT_linkage_name, cu);
17287           if (attr == NULL)
17288             attr = dwarf2_attr (child, DW_AT_MIPS_linkage_name, cu);
17289           if (attr != NULL)
17290             {
17291               char *actual_name
17292                 = language_class_name_from_physname (cu->language_defn,
17293                                                      DW_STRING (attr));
17294               char *name = NULL;
17295
17296               if (actual_name != NULL)
17297                 {
17298                   const char *die_name = dwarf2_name (die, cu);
17299
17300                   if (die_name != NULL
17301                       && strcmp (die_name, actual_name) != 0)
17302                     {
17303                       /* Strip off the class name from the full name.
17304                          We want the prefix.  */
17305                       int die_name_len = strlen (die_name);
17306                       int actual_name_len = strlen (actual_name);
17307
17308                       /* Test for '::' as a sanity check.  */
17309                       if (actual_name_len > die_name_len + 2
17310                           && actual_name[actual_name_len
17311                                          - die_name_len - 1] == ':')
17312                         name =
17313                           obstack_copy0 (&cu->objfile->objfile_obstack,
17314                                          actual_name,
17315                                          actual_name_len - die_name_len - 2);
17316                     }
17317                 }
17318               xfree (actual_name);
17319               return name;
17320             }
17321         }
17322     }
17323
17324   return NULL;
17325 }
17326
17327 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
17328    prefix part in such case.  See
17329    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
17330
17331 static char *
17332 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
17333 {
17334   struct attribute *attr;
17335   char *base;
17336
17337   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
17338       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
17339     return NULL;
17340
17341   attr = dwarf2_attr (die, DW_AT_name, cu);
17342   if (attr != NULL && DW_STRING (attr) != NULL)
17343     return NULL;
17344
17345   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
17346   if (attr == NULL)
17347     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
17348   if (attr == NULL || DW_STRING (attr) == NULL)
17349     return NULL;
17350
17351   /* dwarf2_name had to be already called.  */
17352   gdb_assert (DW_STRING_IS_CANONICAL (attr));
17353
17354   /* Strip the base name, keep any leading namespaces/classes.  */
17355   base = strrchr (DW_STRING (attr), ':');
17356   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
17357     return "";
17358
17359   return obstack_copy0 (&cu->objfile->objfile_obstack,
17360                         DW_STRING (attr), &base[-1] - DW_STRING (attr));
17361 }
17362
17363 /* Return the name of the namespace/class that DIE is defined within,
17364    or "" if we can't tell.  The caller should not xfree the result.
17365
17366    For example, if we're within the method foo() in the following
17367    code:
17368
17369    namespace N {
17370      class C {
17371        void foo () {
17372        }
17373      };
17374    }
17375
17376    then determine_prefix on foo's die will return "N::C".  */
17377
17378 static const char *
17379 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
17380 {
17381   struct die_info *parent, *spec_die;
17382   struct dwarf2_cu *spec_cu;
17383   struct type *parent_type;
17384   char *retval;
17385
17386   if (cu->language != language_cplus && cu->language != language_java
17387       && cu->language != language_fortran)
17388     return "";
17389
17390   retval = anonymous_struct_prefix (die, cu);
17391   if (retval)
17392     return retval;
17393
17394   /* We have to be careful in the presence of DW_AT_specification.
17395      For example, with GCC 3.4, given the code
17396
17397      namespace N {
17398        void foo() {
17399          // Definition of N::foo.
17400        }
17401      }
17402
17403      then we'll have a tree of DIEs like this:
17404
17405      1: DW_TAG_compile_unit
17406        2: DW_TAG_namespace        // N
17407          3: DW_TAG_subprogram     // declaration of N::foo
17408        4: DW_TAG_subprogram       // definition of N::foo
17409             DW_AT_specification   // refers to die #3
17410
17411      Thus, when processing die #4, we have to pretend that we're in
17412      the context of its DW_AT_specification, namely the contex of die
17413      #3.  */
17414   spec_cu = cu;
17415   spec_die = die_specification (die, &spec_cu);
17416   if (spec_die == NULL)
17417     parent = die->parent;
17418   else
17419     {
17420       parent = spec_die->parent;
17421       cu = spec_cu;
17422     }
17423
17424   if (parent == NULL)
17425     return "";
17426   else if (parent->building_fullname)
17427     {
17428       const char *name;
17429       const char *parent_name;
17430
17431       /* It has been seen on RealView 2.2 built binaries,
17432          DW_TAG_template_type_param types actually _defined_ as
17433          children of the parent class:
17434
17435          enum E {};
17436          template class <class Enum> Class{};
17437          Class<enum E> class_e;
17438
17439          1: DW_TAG_class_type (Class)
17440            2: DW_TAG_enumeration_type (E)
17441              3: DW_TAG_enumerator (enum1:0)
17442              3: DW_TAG_enumerator (enum2:1)
17443              ...
17444            2: DW_TAG_template_type_param
17445               DW_AT_type  DW_FORM_ref_udata (E)
17446
17447          Besides being broken debug info, it can put GDB into an
17448          infinite loop.  Consider:
17449
17450          When we're building the full name for Class<E>, we'll start
17451          at Class, and go look over its template type parameters,
17452          finding E.  We'll then try to build the full name of E, and
17453          reach here.  We're now trying to build the full name of E,
17454          and look over the parent DIE for containing scope.  In the
17455          broken case, if we followed the parent DIE of E, we'd again
17456          find Class, and once again go look at its template type
17457          arguments, etc., etc.  Simply don't consider such parent die
17458          as source-level parent of this die (it can't be, the language
17459          doesn't allow it), and break the loop here.  */
17460       name = dwarf2_name (die, cu);
17461       parent_name = dwarf2_name (parent, cu);
17462       complaint (&symfile_complaints,
17463                  _("template param type '%s' defined within parent '%s'"),
17464                  name ? name : "<unknown>",
17465                  parent_name ? parent_name : "<unknown>");
17466       return "";
17467     }
17468   else
17469     switch (parent->tag)
17470       {
17471       case DW_TAG_namespace:
17472         parent_type = read_type_die (parent, cu);
17473         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
17474            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
17475            Work around this problem here.  */
17476         if (cu->language == language_cplus
17477             && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
17478           return "";
17479         /* We give a name to even anonymous namespaces.  */
17480         return TYPE_TAG_NAME (parent_type);
17481       case DW_TAG_class_type:
17482       case DW_TAG_interface_type:
17483       case DW_TAG_structure_type:
17484       case DW_TAG_union_type:
17485       case DW_TAG_module:
17486         parent_type = read_type_die (parent, cu);
17487         if (TYPE_TAG_NAME (parent_type) != NULL)
17488           return TYPE_TAG_NAME (parent_type);
17489         else
17490           /* An anonymous structure is only allowed non-static data
17491              members; no typedefs, no member functions, et cetera.
17492              So it does not need a prefix.  */
17493           return "";
17494       case DW_TAG_compile_unit:
17495       case DW_TAG_partial_unit:
17496         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
17497         if (cu->language == language_cplus
17498             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
17499             && die->child != NULL
17500             && (die->tag == DW_TAG_class_type
17501                 || die->tag == DW_TAG_structure_type
17502                 || die->tag == DW_TAG_union_type))
17503           {
17504             char *name = guess_full_die_structure_name (die, cu);
17505             if (name != NULL)
17506               return name;
17507           }
17508         return "";
17509       default:
17510         return determine_prefix (parent, cu);
17511       }
17512 }
17513
17514 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
17515    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
17516    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
17517    an obconcat, otherwise allocate storage for the result.  The CU argument is
17518    used to determine the language and hence, the appropriate separator.  */
17519
17520 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
17521
17522 static char *
17523 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
17524                  int physname, struct dwarf2_cu *cu)
17525 {
17526   const char *lead = "";
17527   const char *sep;
17528
17529   if (suffix == NULL || suffix[0] == '\0'
17530       || prefix == NULL || prefix[0] == '\0')
17531     sep = "";
17532   else if (cu->language == language_java)
17533     sep = ".";
17534   else if (cu->language == language_fortran && physname)
17535     {
17536       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
17537          DW_AT_MIPS_linkage_name is preferred and used instead.  */
17538
17539       lead = "__";
17540       sep = "_MOD_";
17541     }
17542   else
17543     sep = "::";
17544
17545   if (prefix == NULL)
17546     prefix = "";
17547   if (suffix == NULL)
17548     suffix = "";
17549
17550   if (obs == NULL)
17551     {
17552       char *retval
17553         = xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1);
17554
17555       strcpy (retval, lead);
17556       strcat (retval, prefix);
17557       strcat (retval, sep);
17558       strcat (retval, suffix);
17559       return retval;
17560     }
17561   else
17562     {
17563       /* We have an obstack.  */
17564       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
17565     }
17566 }
17567
17568 /* Return sibling of die, NULL if no sibling.  */
17569
17570 static struct die_info *
17571 sibling_die (struct die_info *die)
17572 {
17573   return die->sibling;
17574 }
17575
17576 /* Get name of a die, return NULL if not found.  */
17577
17578 static const char *
17579 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
17580                           struct obstack *obstack)
17581 {
17582   if (name && cu->language == language_cplus)
17583     {
17584       char *canon_name = cp_canonicalize_string (name);
17585
17586       if (canon_name != NULL)
17587         {
17588           if (strcmp (canon_name, name) != 0)
17589             name = obstack_copy0 (obstack, canon_name, strlen (canon_name));
17590           xfree (canon_name);
17591         }
17592     }
17593
17594   return name;
17595 }
17596
17597 /* Get name of a die, return NULL if not found.  */
17598
17599 static const char *
17600 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
17601 {
17602   struct attribute *attr;
17603
17604   attr = dwarf2_attr (die, DW_AT_name, cu);
17605   if ((!attr || !DW_STRING (attr))
17606       && die->tag != DW_TAG_class_type
17607       && die->tag != DW_TAG_interface_type
17608       && die->tag != DW_TAG_structure_type
17609       && die->tag != DW_TAG_union_type)
17610     return NULL;
17611
17612   switch (die->tag)
17613     {
17614     case DW_TAG_compile_unit:
17615     case DW_TAG_partial_unit:
17616       /* Compilation units have a DW_AT_name that is a filename, not
17617          a source language identifier.  */
17618     case DW_TAG_enumeration_type:
17619     case DW_TAG_enumerator:
17620       /* These tags always have simple identifiers already; no need
17621          to canonicalize them.  */
17622       return DW_STRING (attr);
17623
17624     case DW_TAG_subprogram:
17625       /* Java constructors will all be named "<init>", so return
17626          the class name when we see this special case.  */
17627       if (cu->language == language_java
17628           && DW_STRING (attr) != NULL
17629           && strcmp (DW_STRING (attr), "<init>") == 0)
17630         {
17631           struct dwarf2_cu *spec_cu = cu;
17632           struct die_info *spec_die;
17633
17634           /* GCJ will output '<init>' for Java constructor names.
17635              For this special case, return the name of the parent class.  */
17636
17637           /* GCJ may output suprogram DIEs with AT_specification set.
17638              If so, use the name of the specified DIE.  */
17639           spec_die = die_specification (die, &spec_cu);
17640           if (spec_die != NULL)
17641             return dwarf2_name (spec_die, spec_cu);
17642
17643           do
17644             {
17645               die = die->parent;
17646               if (die->tag == DW_TAG_class_type)
17647                 return dwarf2_name (die, cu);
17648             }
17649           while (die->tag != DW_TAG_compile_unit
17650                  && die->tag != DW_TAG_partial_unit);
17651         }
17652       break;
17653
17654     case DW_TAG_class_type:
17655     case DW_TAG_interface_type:
17656     case DW_TAG_structure_type:
17657     case DW_TAG_union_type:
17658       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
17659          structures or unions.  These were of the form "._%d" in GCC 4.1,
17660          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
17661          and GCC 4.4.  We work around this problem by ignoring these.  */
17662       if (attr && DW_STRING (attr)
17663           && (strncmp (DW_STRING (attr), "._", 2) == 0
17664               || strncmp (DW_STRING (attr), "<anonymous", 10) == 0))
17665         return NULL;
17666
17667       /* GCC might emit a nameless typedef that has a linkage name.  See
17668          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
17669       if (!attr || DW_STRING (attr) == NULL)
17670         {
17671           char *demangled = NULL;
17672
17673           attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
17674           if (attr == NULL)
17675             attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
17676
17677           if (attr == NULL || DW_STRING (attr) == NULL)
17678             return NULL;
17679
17680           /* Avoid demangling DW_STRING (attr) the second time on a second
17681              call for the same DIE.  */
17682           if (!DW_STRING_IS_CANONICAL (attr))
17683             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
17684
17685           if (demangled)
17686             {
17687               char *base;
17688
17689               /* FIXME: we already did this for the partial symbol... */
17690               DW_STRING (attr) = obstack_copy0 (&cu->objfile->objfile_obstack,
17691                                                 demangled, strlen (demangled));
17692               DW_STRING_IS_CANONICAL (attr) = 1;
17693               xfree (demangled);
17694
17695               /* Strip any leading namespaces/classes, keep only the base name.
17696                  DW_AT_name for named DIEs does not contain the prefixes.  */
17697               base = strrchr (DW_STRING (attr), ':');
17698               if (base && base > DW_STRING (attr) && base[-1] == ':')
17699                 return &base[1];
17700               else
17701                 return DW_STRING (attr);
17702             }
17703         }
17704       break;
17705
17706     default:
17707       break;
17708     }
17709
17710   if (!DW_STRING_IS_CANONICAL (attr))
17711     {
17712       DW_STRING (attr)
17713         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
17714                                     &cu->objfile->objfile_obstack);
17715       DW_STRING_IS_CANONICAL (attr) = 1;
17716     }
17717   return DW_STRING (attr);
17718 }
17719
17720 /* Return the die that this die in an extension of, or NULL if there
17721    is none.  *EXT_CU is the CU containing DIE on input, and the CU
17722    containing the return value on output.  */
17723
17724 static struct die_info *
17725 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
17726 {
17727   struct attribute *attr;
17728
17729   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
17730   if (attr == NULL)
17731     return NULL;
17732
17733   return follow_die_ref (die, attr, ext_cu);
17734 }
17735
17736 /* Convert a DIE tag into its string name.  */
17737
17738 static const char *
17739 dwarf_tag_name (unsigned tag)
17740 {
17741   const char *name = get_DW_TAG_name (tag);
17742
17743   if (name == NULL)
17744     return "DW_TAG_<unknown>";
17745
17746   return name;
17747 }
17748
17749 /* Convert a DWARF attribute code into its string name.  */
17750
17751 static const char *
17752 dwarf_attr_name (unsigned attr)
17753 {
17754   const char *name;
17755
17756 #ifdef MIPS /* collides with DW_AT_HP_block_index */
17757   if (attr == DW_AT_MIPS_fde)
17758     return "DW_AT_MIPS_fde";
17759 #else
17760   if (attr == DW_AT_HP_block_index)
17761     return "DW_AT_HP_block_index";
17762 #endif
17763
17764   name = get_DW_AT_name (attr);
17765
17766   if (name == NULL)
17767     return "DW_AT_<unknown>";
17768
17769   return name;
17770 }
17771
17772 /* Convert a DWARF value form code into its string name.  */
17773
17774 static const char *
17775 dwarf_form_name (unsigned form)
17776 {
17777   const char *name = get_DW_FORM_name (form);
17778
17779   if (name == NULL)
17780     return "DW_FORM_<unknown>";
17781
17782   return name;
17783 }
17784
17785 static char *
17786 dwarf_bool_name (unsigned mybool)
17787 {
17788   if (mybool)
17789     return "TRUE";
17790   else
17791     return "FALSE";
17792 }
17793
17794 /* Convert a DWARF type code into its string name.  */
17795
17796 static const char *
17797 dwarf_type_encoding_name (unsigned enc)
17798 {
17799   const char *name = get_DW_ATE_name (enc);
17800
17801   if (name == NULL)
17802     return "DW_ATE_<unknown>";
17803
17804   return name;
17805 }
17806
17807 static void
17808 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
17809 {
17810   unsigned int i;
17811
17812   print_spaces (indent, f);
17813   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
17814            dwarf_tag_name (die->tag), die->abbrev, die->offset.sect_off);
17815
17816   if (die->parent != NULL)
17817     {
17818       print_spaces (indent, f);
17819       fprintf_unfiltered (f, "  parent at offset: 0x%x\n",
17820                           die->parent->offset.sect_off);
17821     }
17822
17823   print_spaces (indent, f);
17824   fprintf_unfiltered (f, "  has children: %s\n",
17825            dwarf_bool_name (die->child != NULL));
17826
17827   print_spaces (indent, f);
17828   fprintf_unfiltered (f, "  attributes:\n");
17829
17830   for (i = 0; i < die->num_attrs; ++i)
17831     {
17832       print_spaces (indent, f);
17833       fprintf_unfiltered (f, "    %s (%s) ",
17834                dwarf_attr_name (die->attrs[i].name),
17835                dwarf_form_name (die->attrs[i].form));
17836
17837       switch (die->attrs[i].form)
17838         {
17839         case DW_FORM_addr:
17840         case DW_FORM_GNU_addr_index:
17841           fprintf_unfiltered (f, "address: ");
17842           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
17843           break;
17844         case DW_FORM_block2:
17845         case DW_FORM_block4:
17846         case DW_FORM_block:
17847         case DW_FORM_block1:
17848           fprintf_unfiltered (f, "block: size %s",
17849                               pulongest (DW_BLOCK (&die->attrs[i])->size));
17850           break;
17851         case DW_FORM_exprloc:
17852           fprintf_unfiltered (f, "expression: size %s",
17853                               pulongest (DW_BLOCK (&die->attrs[i])->size));
17854           break;
17855         case DW_FORM_ref_addr:
17856           fprintf_unfiltered (f, "ref address: ");
17857           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
17858           break;
17859         case DW_FORM_GNU_ref_alt:
17860           fprintf_unfiltered (f, "alt ref address: ");
17861           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
17862           break;
17863         case DW_FORM_ref1:
17864         case DW_FORM_ref2:
17865         case DW_FORM_ref4:
17866         case DW_FORM_ref8:
17867         case DW_FORM_ref_udata:
17868           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
17869                               (long) (DW_UNSND (&die->attrs[i])));
17870           break;
17871         case DW_FORM_data1:
17872         case DW_FORM_data2:
17873         case DW_FORM_data4:
17874         case DW_FORM_data8:
17875         case DW_FORM_udata:
17876         case DW_FORM_sdata:
17877           fprintf_unfiltered (f, "constant: %s",
17878                               pulongest (DW_UNSND (&die->attrs[i])));
17879           break;
17880         case DW_FORM_sec_offset:
17881           fprintf_unfiltered (f, "section offset: %s",
17882                               pulongest (DW_UNSND (&die->attrs[i])));
17883           break;
17884         case DW_FORM_ref_sig8:
17885           fprintf_unfiltered (f, "signature: %s",
17886                               hex_string (DW_SIGNATURE (&die->attrs[i])));
17887           break;
17888         case DW_FORM_string:
17889         case DW_FORM_strp:
17890         case DW_FORM_GNU_str_index:
17891         case DW_FORM_GNU_strp_alt:
17892           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
17893                    DW_STRING (&die->attrs[i])
17894                    ? DW_STRING (&die->attrs[i]) : "",
17895                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
17896           break;
17897         case DW_FORM_flag:
17898           if (DW_UNSND (&die->attrs[i]))
17899             fprintf_unfiltered (f, "flag: TRUE");
17900           else
17901             fprintf_unfiltered (f, "flag: FALSE");
17902           break;
17903         case DW_FORM_flag_present:
17904           fprintf_unfiltered (f, "flag: TRUE");
17905           break;
17906         case DW_FORM_indirect:
17907           /* The reader will have reduced the indirect form to
17908              the "base form" so this form should not occur.  */
17909           fprintf_unfiltered (f, 
17910                               "unexpected attribute form: DW_FORM_indirect");
17911           break;
17912         default:
17913           fprintf_unfiltered (f, "unsupported attribute form: %d.",
17914                    die->attrs[i].form);
17915           break;
17916         }
17917       fprintf_unfiltered (f, "\n");
17918     }
17919 }
17920
17921 static void
17922 dump_die_for_error (struct die_info *die)
17923 {
17924   dump_die_shallow (gdb_stderr, 0, die);
17925 }
17926
17927 static void
17928 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
17929 {
17930   int indent = level * 4;
17931
17932   gdb_assert (die != NULL);
17933
17934   if (level >= max_level)
17935     return;
17936
17937   dump_die_shallow (f, indent, die);
17938
17939   if (die->child != NULL)
17940     {
17941       print_spaces (indent, f);
17942       fprintf_unfiltered (f, "  Children:");
17943       if (level + 1 < max_level)
17944         {
17945           fprintf_unfiltered (f, "\n");
17946           dump_die_1 (f, level + 1, max_level, die->child);
17947         }
17948       else
17949         {
17950           fprintf_unfiltered (f,
17951                               " [not printed, max nesting level reached]\n");
17952         }
17953     }
17954
17955   if (die->sibling != NULL && level > 0)
17956     {
17957       dump_die_1 (f, level, max_level, die->sibling);
17958     }
17959 }
17960
17961 /* This is called from the pdie macro in gdbinit.in.
17962    It's not static so gcc will keep a copy callable from gdb.  */
17963
17964 void
17965 dump_die (struct die_info *die, int max_level)
17966 {
17967   dump_die_1 (gdb_stdlog, 0, max_level, die);
17968 }
17969
17970 static void
17971 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
17972 {
17973   void **slot;
17974
17975   slot = htab_find_slot_with_hash (cu->die_hash, die, die->offset.sect_off,
17976                                    INSERT);
17977
17978   *slot = die;
17979 }
17980
17981 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
17982    required kind.  */
17983
17984 static sect_offset
17985 dwarf2_get_ref_die_offset (const struct attribute *attr)
17986 {
17987   sect_offset retval = { DW_UNSND (attr) };
17988
17989   if (attr_form_is_ref (attr))
17990     return retval;
17991
17992   retval.sect_off = 0;
17993   complaint (&symfile_complaints,
17994              _("unsupported die ref attribute form: '%s'"),
17995              dwarf_form_name (attr->form));
17996   return retval;
17997 }
17998
17999 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
18000  * the value held by the attribute is not constant.  */
18001
18002 static LONGEST
18003 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
18004 {
18005   if (attr->form == DW_FORM_sdata)
18006     return DW_SND (attr);
18007   else if (attr->form == DW_FORM_udata
18008            || attr->form == DW_FORM_data1
18009            || attr->form == DW_FORM_data2
18010            || attr->form == DW_FORM_data4
18011            || attr->form == DW_FORM_data8)
18012     return DW_UNSND (attr);
18013   else
18014     {
18015       complaint (&symfile_complaints,
18016                  _("Attribute value is not a constant (%s)"),
18017                  dwarf_form_name (attr->form));
18018       return default_value;
18019     }
18020 }
18021
18022 /* Follow reference or signature attribute ATTR of SRC_DIE.
18023    On entry *REF_CU is the CU of SRC_DIE.
18024    On exit *REF_CU is the CU of the result.  */
18025
18026 static struct die_info *
18027 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
18028                        struct dwarf2_cu **ref_cu)
18029 {
18030   struct die_info *die;
18031
18032   if (attr_form_is_ref (attr))
18033     die = follow_die_ref (src_die, attr, ref_cu);
18034   else if (attr->form == DW_FORM_ref_sig8)
18035     die = follow_die_sig (src_die, attr, ref_cu);
18036   else
18037     {
18038       dump_die_for_error (src_die);
18039       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
18040              (*ref_cu)->objfile->name);
18041     }
18042
18043   return die;
18044 }
18045
18046 /* Follow reference OFFSET.
18047    On entry *REF_CU is the CU of the source die referencing OFFSET.
18048    On exit *REF_CU is the CU of the result.
18049    Returns NULL if OFFSET is invalid.  */
18050
18051 static struct die_info *
18052 follow_die_offset (sect_offset offset, int offset_in_dwz,
18053                    struct dwarf2_cu **ref_cu)
18054 {
18055   struct die_info temp_die;
18056   struct dwarf2_cu *target_cu, *cu = *ref_cu;
18057
18058   gdb_assert (cu->per_cu != NULL);
18059
18060   target_cu = cu;
18061
18062   if (cu->per_cu->is_debug_types)
18063     {
18064       /* .debug_types CUs cannot reference anything outside their CU.
18065          If they need to, they have to reference a signatured type via
18066          DW_FORM_ref_sig8.  */
18067       if (! offset_in_cu_p (&cu->header, offset))
18068         return NULL;
18069     }
18070   else if (offset_in_dwz != cu->per_cu->is_dwz
18071            || ! offset_in_cu_p (&cu->header, offset))
18072     {
18073       struct dwarf2_per_cu_data *per_cu;
18074
18075       per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
18076                                                  cu->objfile);
18077
18078       /* If necessary, add it to the queue and load its DIEs.  */
18079       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
18080         load_full_comp_unit (per_cu, cu->language);
18081
18082       target_cu = per_cu->cu;
18083     }
18084   else if (cu->dies == NULL)
18085     {
18086       /* We're loading full DIEs during partial symbol reading.  */
18087       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
18088       load_full_comp_unit (cu->per_cu, language_minimal);
18089     }
18090
18091   *ref_cu = target_cu;
18092   temp_die.offset = offset;
18093   return htab_find_with_hash (target_cu->die_hash, &temp_die, offset.sect_off);
18094 }
18095
18096 /* Follow reference attribute ATTR of SRC_DIE.
18097    On entry *REF_CU is the CU of SRC_DIE.
18098    On exit *REF_CU is the CU of the result.  */
18099
18100 static struct die_info *
18101 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
18102                 struct dwarf2_cu **ref_cu)
18103 {
18104   sect_offset offset = dwarf2_get_ref_die_offset (attr);
18105   struct dwarf2_cu *cu = *ref_cu;
18106   struct die_info *die;
18107
18108   die = follow_die_offset (offset,
18109                            (attr->form == DW_FORM_GNU_ref_alt
18110                             || cu->per_cu->is_dwz),
18111                            ref_cu);
18112   if (!die)
18113     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
18114            "at 0x%x [in module %s]"),
18115            offset.sect_off, src_die->offset.sect_off, cu->objfile->name);
18116
18117   return die;
18118 }
18119
18120 /* Return DWARF block referenced by DW_AT_location of DIE at OFFSET at PER_CU.
18121    Returned value is intended for DW_OP_call*.  Returned
18122    dwarf2_locexpr_baton->data has lifetime of PER_CU->OBJFILE.  */
18123
18124 struct dwarf2_locexpr_baton
18125 dwarf2_fetch_die_loc_sect_off (sect_offset offset,
18126                                struct dwarf2_per_cu_data *per_cu,
18127                                CORE_ADDR (*get_frame_pc) (void *baton),
18128                                void *baton)
18129 {
18130   struct dwarf2_cu *cu;
18131   struct die_info *die;
18132   struct attribute *attr;
18133   struct dwarf2_locexpr_baton retval;
18134
18135   dw2_setup (per_cu->objfile);
18136
18137   if (per_cu->cu == NULL)
18138     load_cu (per_cu);
18139   cu = per_cu->cu;
18140
18141   die = follow_die_offset (offset, per_cu->is_dwz, &cu);
18142   if (!die)
18143     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
18144            offset.sect_off, per_cu->objfile->name);
18145
18146   attr = dwarf2_attr (die, DW_AT_location, cu);
18147   if (!attr)
18148     {
18149       /* DWARF: "If there is no such attribute, then there is no effect.".
18150          DATA is ignored if SIZE is 0.  */
18151
18152       retval.data = NULL;
18153       retval.size = 0;
18154     }
18155   else if (attr_form_is_section_offset (attr))
18156     {
18157       struct dwarf2_loclist_baton loclist_baton;
18158       CORE_ADDR pc = (*get_frame_pc) (baton);
18159       size_t size;
18160
18161       fill_in_loclist_baton (cu, &loclist_baton, attr);
18162
18163       retval.data = dwarf2_find_location_expression (&loclist_baton,
18164                                                      &size, pc);
18165       retval.size = size;
18166     }
18167   else
18168     {
18169       if (!attr_form_is_block (attr))
18170         error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
18171                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
18172                offset.sect_off, per_cu->objfile->name);
18173
18174       retval.data = DW_BLOCK (attr)->data;
18175       retval.size = DW_BLOCK (attr)->size;
18176     }
18177   retval.per_cu = cu->per_cu;
18178
18179   age_cached_comp_units ();
18180
18181   return retval;
18182 }
18183
18184 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
18185    offset.  */
18186
18187 struct dwarf2_locexpr_baton
18188 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
18189                              struct dwarf2_per_cu_data *per_cu,
18190                              CORE_ADDR (*get_frame_pc) (void *baton),
18191                              void *baton)
18192 {
18193   sect_offset offset = { per_cu->offset.sect_off + offset_in_cu.cu_off };
18194
18195   return dwarf2_fetch_die_loc_sect_off (offset, per_cu, get_frame_pc, baton);
18196 }
18197
18198 /* Write a constant of a given type as target-ordered bytes into
18199    OBSTACK.  */
18200
18201 static const gdb_byte *
18202 write_constant_as_bytes (struct obstack *obstack,
18203                          enum bfd_endian byte_order,
18204                          struct type *type,
18205                          ULONGEST value,
18206                          LONGEST *len)
18207 {
18208   gdb_byte *result;
18209
18210   *len = TYPE_LENGTH (type);
18211   result = obstack_alloc (obstack, *len);
18212   store_unsigned_integer (result, *len, byte_order, value);
18213
18214   return result;
18215 }
18216
18217 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
18218    pointer to the constant bytes and set LEN to the length of the
18219    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
18220    does not have a DW_AT_const_value, return NULL.  */
18221
18222 const gdb_byte *
18223 dwarf2_fetch_constant_bytes (sect_offset offset,
18224                              struct dwarf2_per_cu_data *per_cu,
18225                              struct obstack *obstack,
18226                              LONGEST *len)
18227 {
18228   struct dwarf2_cu *cu;
18229   struct die_info *die;
18230   struct attribute *attr;
18231   const gdb_byte *result = NULL;
18232   struct type *type;
18233   LONGEST value;
18234   enum bfd_endian byte_order;
18235
18236   dw2_setup (per_cu->objfile);
18237
18238   if (per_cu->cu == NULL)
18239     load_cu (per_cu);
18240   cu = per_cu->cu;
18241
18242   die = follow_die_offset (offset, per_cu->is_dwz, &cu);
18243   if (!die)
18244     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
18245            offset.sect_off, per_cu->objfile->name);
18246
18247
18248   attr = dwarf2_attr (die, DW_AT_const_value, cu);
18249   if (attr == NULL)
18250     return NULL;
18251
18252   byte_order = (bfd_big_endian (per_cu->objfile->obfd)
18253                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
18254
18255   switch (attr->form)
18256     {
18257     case DW_FORM_addr:
18258     case DW_FORM_GNU_addr_index:
18259       {
18260         gdb_byte *tem;
18261
18262         *len = cu->header.addr_size;
18263         tem = obstack_alloc (obstack, *len);
18264         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
18265         result = tem;
18266       }
18267       break;
18268     case DW_FORM_string:
18269     case DW_FORM_strp:
18270     case DW_FORM_GNU_str_index:
18271     case DW_FORM_GNU_strp_alt:
18272       /* DW_STRING is already allocated on the objfile obstack, point
18273          directly to it.  */
18274       result = (const gdb_byte *) DW_STRING (attr);
18275       *len = strlen (DW_STRING (attr));
18276       break;
18277     case DW_FORM_block1:
18278     case DW_FORM_block2:
18279     case DW_FORM_block4:
18280     case DW_FORM_block:
18281     case DW_FORM_exprloc:
18282       result = DW_BLOCK (attr)->data;
18283       *len = DW_BLOCK (attr)->size;
18284       break;
18285
18286       /* The DW_AT_const_value attributes are supposed to carry the
18287          symbol's value "represented as it would be on the target
18288          architecture."  By the time we get here, it's already been
18289          converted to host endianness, so we just need to sign- or
18290          zero-extend it as appropriate.  */
18291     case DW_FORM_data1:
18292       type = die_type (die, cu);
18293       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
18294       if (result == NULL)
18295         result = write_constant_as_bytes (obstack, byte_order,
18296                                           type, value, len);
18297       break;
18298     case DW_FORM_data2:
18299       type = die_type (die, cu);
18300       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
18301       if (result == NULL)
18302         result = write_constant_as_bytes (obstack, byte_order,
18303                                           type, value, len);
18304       break;
18305     case DW_FORM_data4:
18306       type = die_type (die, cu);
18307       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
18308       if (result == NULL)
18309         result = write_constant_as_bytes (obstack, byte_order,
18310                                           type, value, len);
18311       break;
18312     case DW_FORM_data8:
18313       type = die_type (die, cu);
18314       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
18315       if (result == NULL)
18316         result = write_constant_as_bytes (obstack, byte_order,
18317                                           type, value, len);
18318       break;
18319
18320     case DW_FORM_sdata:
18321       type = die_type (die, cu);
18322       result = write_constant_as_bytes (obstack, byte_order,
18323                                         type, DW_SND (attr), len);
18324       break;
18325
18326     case DW_FORM_udata:
18327       type = die_type (die, cu);
18328       result = write_constant_as_bytes (obstack, byte_order,
18329                                         type, DW_UNSND (attr), len);
18330       break;
18331
18332     default:
18333       complaint (&symfile_complaints,
18334                  _("unsupported const value attribute form: '%s'"),
18335                  dwarf_form_name (attr->form));
18336       break;
18337     }
18338
18339   return result;
18340 }
18341
18342 /* Return the type of the DIE at DIE_OFFSET in the CU named by
18343    PER_CU.  */
18344
18345 struct type *
18346 dwarf2_get_die_type (cu_offset die_offset,
18347                      struct dwarf2_per_cu_data *per_cu)
18348 {
18349   sect_offset die_offset_sect;
18350
18351   dw2_setup (per_cu->objfile);
18352
18353   die_offset_sect.sect_off = per_cu->offset.sect_off + die_offset.cu_off;
18354   return get_die_type_at_offset (die_offset_sect, per_cu);
18355 }
18356
18357 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
18358    On entry *REF_CU is the CU of SRC_DIE.
18359    On exit *REF_CU is the CU of the result.
18360    Returns NULL if the referenced DIE isn't found.  */
18361
18362 static struct die_info *
18363 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
18364                   struct dwarf2_cu **ref_cu)
18365 {
18366   struct objfile *objfile = (*ref_cu)->objfile;
18367   struct die_info temp_die;
18368   struct dwarf2_cu *sig_cu;
18369   struct die_info *die;
18370
18371   /* While it might be nice to assert sig_type->type == NULL here,
18372      we can get here for DW_AT_imported_declaration where we need
18373      the DIE not the type.  */
18374
18375   /* If necessary, add it to the queue and load its DIEs.  */
18376
18377   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
18378     read_signatured_type (sig_type);
18379
18380   gdb_assert (sig_type->per_cu.cu != NULL);
18381
18382   sig_cu = sig_type->per_cu.cu;
18383   gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
18384   temp_die.offset = sig_type->type_offset_in_section;
18385   die = htab_find_with_hash (sig_cu->die_hash, &temp_die,
18386                              temp_die.offset.sect_off);
18387   if (die)
18388     {
18389       /* For .gdb_index version 7 keep track of included TUs.
18390          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
18391       if (dwarf2_per_objfile->index_table != NULL
18392           && dwarf2_per_objfile->index_table->version <= 7)
18393         {
18394           VEC_safe_push (dwarf2_per_cu_ptr,
18395                          (*ref_cu)->per_cu->imported_symtabs,
18396                          sig_cu->per_cu);
18397         }
18398
18399       *ref_cu = sig_cu;
18400       return die;
18401     }
18402
18403   return NULL;
18404 }
18405
18406 /* Follow signatured type referenced by ATTR in SRC_DIE.
18407    On entry *REF_CU is the CU of SRC_DIE.
18408    On exit *REF_CU is the CU of the result.
18409    The result is the DIE of the type.
18410    If the referenced type cannot be found an error is thrown.  */
18411
18412 static struct die_info *
18413 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
18414                 struct dwarf2_cu **ref_cu)
18415 {
18416   ULONGEST signature = DW_SIGNATURE (attr);
18417   struct signatured_type *sig_type;
18418   struct die_info *die;
18419
18420   gdb_assert (attr->form == DW_FORM_ref_sig8);
18421
18422   sig_type = lookup_signatured_type (*ref_cu, signature);
18423   /* sig_type will be NULL if the signatured type is missing from
18424      the debug info.  */
18425   if (sig_type == NULL)
18426     {
18427       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
18428                " from DIE at 0x%x [in module %s]"),
18429              hex_string (signature), src_die->offset.sect_off,
18430              (*ref_cu)->objfile->name);
18431     }
18432
18433   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
18434   if (die == NULL)
18435     {
18436       dump_die_for_error (src_die);
18437       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
18438                " from DIE at 0x%x [in module %s]"),
18439              hex_string (signature), src_die->offset.sect_off,
18440              (*ref_cu)->objfile->name);
18441     }
18442
18443   return die;
18444 }
18445
18446 /* Get the type specified by SIGNATURE referenced in DIE/CU,
18447    reading in and processing the type unit if necessary.  */
18448
18449 static struct type *
18450 get_signatured_type (struct die_info *die, ULONGEST signature,
18451                      struct dwarf2_cu *cu)
18452 {
18453   struct signatured_type *sig_type;
18454   struct dwarf2_cu *type_cu;
18455   struct die_info *type_die;
18456   struct type *type;
18457
18458   sig_type = lookup_signatured_type (cu, signature);
18459   /* sig_type will be NULL if the signatured type is missing from
18460      the debug info.  */
18461   if (sig_type == NULL)
18462     {
18463       complaint (&symfile_complaints,
18464                  _("Dwarf Error: Cannot find signatured DIE %s referenced"
18465                    " from DIE at 0x%x [in module %s]"),
18466                  hex_string (signature), die->offset.sect_off,
18467                  dwarf2_per_objfile->objfile->name);
18468       return build_error_marker_type (cu, die);
18469     }
18470
18471   /* If we already know the type we're done.  */
18472   if (sig_type->type != NULL)
18473     return sig_type->type;
18474
18475   type_cu = cu;
18476   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
18477   if (type_die != NULL)
18478     {
18479       /* N.B. We need to call get_die_type to ensure only one type for this DIE
18480          is created.  This is important, for example, because for c++ classes
18481          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
18482       type = read_type_die (type_die, type_cu);
18483       if (type == NULL)
18484         {
18485           complaint (&symfile_complaints,
18486                      _("Dwarf Error: Cannot build signatured type %s"
18487                        " referenced from DIE at 0x%x [in module %s]"),
18488                      hex_string (signature), die->offset.sect_off,
18489                      dwarf2_per_objfile->objfile->name);
18490           type = build_error_marker_type (cu, die);
18491         }
18492     }
18493   else
18494     {
18495       complaint (&symfile_complaints,
18496                  _("Dwarf Error: Problem reading signatured DIE %s referenced"
18497                    " from DIE at 0x%x [in module %s]"),
18498                  hex_string (signature), die->offset.sect_off,
18499                  dwarf2_per_objfile->objfile->name);
18500       type = build_error_marker_type (cu, die);
18501     }
18502   sig_type->type = type;
18503
18504   return type;
18505 }
18506
18507 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
18508    reading in and processing the type unit if necessary.  */
18509
18510 static struct type *
18511 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
18512                           struct dwarf2_cu *cu) /* ARI: editCase function */
18513 {
18514   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
18515   if (attr_form_is_ref (attr))
18516     {
18517       struct dwarf2_cu *type_cu = cu;
18518       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
18519
18520       return read_type_die (type_die, type_cu);
18521     }
18522   else if (attr->form == DW_FORM_ref_sig8)
18523     {
18524       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
18525     }
18526   else
18527     {
18528       complaint (&symfile_complaints,
18529                  _("Dwarf Error: DW_AT_signature has bad form %s in DIE"
18530                    " at 0x%x [in module %s]"),
18531                  dwarf_form_name (attr->form), die->offset.sect_off,
18532                  dwarf2_per_objfile->objfile->name);
18533       return build_error_marker_type (cu, die);
18534     }
18535 }
18536
18537 /* Load the DIEs associated with type unit PER_CU into memory.  */
18538
18539 static void
18540 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
18541 {
18542   struct signatured_type *sig_type;
18543
18544   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
18545   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
18546
18547   /* We have the per_cu, but we need the signatured_type.
18548      Fortunately this is an easy translation.  */
18549   gdb_assert (per_cu->is_debug_types);
18550   sig_type = (struct signatured_type *) per_cu;
18551
18552   gdb_assert (per_cu->cu == NULL);
18553
18554   read_signatured_type (sig_type);
18555
18556   gdb_assert (per_cu->cu != NULL);
18557 }
18558
18559 /* die_reader_func for read_signatured_type.
18560    This is identical to load_full_comp_unit_reader,
18561    but is kept separate for now.  */
18562
18563 static void
18564 read_signatured_type_reader (const struct die_reader_specs *reader,
18565                              const gdb_byte *info_ptr,
18566                              struct die_info *comp_unit_die,
18567                              int has_children,
18568                              void *data)
18569 {
18570   struct dwarf2_cu *cu = reader->cu;
18571
18572   gdb_assert (cu->die_hash == NULL);
18573   cu->die_hash =
18574     htab_create_alloc_ex (cu->header.length / 12,
18575                           die_hash,
18576                           die_eq,
18577                           NULL,
18578                           &cu->comp_unit_obstack,
18579                           hashtab_obstack_allocate,
18580                           dummy_obstack_deallocate);
18581
18582   if (has_children)
18583     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
18584                                                   &info_ptr, comp_unit_die);
18585   cu->dies = comp_unit_die;
18586   /* comp_unit_die is not stored in die_hash, no need.  */
18587
18588   /* We try not to read any attributes in this function, because not
18589      all CUs needed for references have been loaded yet, and symbol
18590      table processing isn't initialized.  But we have to set the CU language,
18591      or we won't be able to build types correctly.
18592      Similarly, if we do not read the producer, we can not apply
18593      producer-specific interpretation.  */
18594   prepare_one_comp_unit (cu, cu->dies, language_minimal);
18595 }
18596
18597 /* Read in a signatured type and build its CU and DIEs.
18598    If the type is a stub for the real type in a DWO file,
18599    read in the real type from the DWO file as well.  */
18600
18601 static void
18602 read_signatured_type (struct signatured_type *sig_type)
18603 {
18604   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
18605
18606   gdb_assert (per_cu->is_debug_types);
18607   gdb_assert (per_cu->cu == NULL);
18608
18609   init_cutu_and_read_dies (per_cu, NULL, 0, 1,
18610                            read_signatured_type_reader, NULL);
18611 }
18612
18613 /* Decode simple location descriptions.
18614    Given a pointer to a dwarf block that defines a location, compute
18615    the location and return the value.
18616
18617    NOTE drow/2003-11-18: This function is called in two situations
18618    now: for the address of static or global variables (partial symbols
18619    only) and for offsets into structures which are expected to be
18620    (more or less) constant.  The partial symbol case should go away,
18621    and only the constant case should remain.  That will let this
18622    function complain more accurately.  A few special modes are allowed
18623    without complaint for global variables (for instance, global
18624    register values and thread-local values).
18625
18626    A location description containing no operations indicates that the
18627    object is optimized out.  The return value is 0 for that case.
18628    FIXME drow/2003-11-16: No callers check for this case any more; soon all
18629    callers will only want a very basic result and this can become a
18630    complaint.
18631
18632    Note that stack[0] is unused except as a default error return.  */
18633
18634 static CORE_ADDR
18635 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
18636 {
18637   struct objfile *objfile = cu->objfile;
18638   size_t i;
18639   size_t size = blk->size;
18640   const gdb_byte *data = blk->data;
18641   CORE_ADDR stack[64];
18642   int stacki;
18643   unsigned int bytes_read, unsnd;
18644   gdb_byte op;
18645
18646   i = 0;
18647   stacki = 0;
18648   stack[stacki] = 0;
18649   stack[++stacki] = 0;
18650
18651   while (i < size)
18652     {
18653       op = data[i++];
18654       switch (op)
18655         {
18656         case DW_OP_lit0:
18657         case DW_OP_lit1:
18658         case DW_OP_lit2:
18659         case DW_OP_lit3:
18660         case DW_OP_lit4:
18661         case DW_OP_lit5:
18662         case DW_OP_lit6:
18663         case DW_OP_lit7:
18664         case DW_OP_lit8:
18665         case DW_OP_lit9:
18666         case DW_OP_lit10:
18667         case DW_OP_lit11:
18668         case DW_OP_lit12:
18669         case DW_OP_lit13:
18670         case DW_OP_lit14:
18671         case DW_OP_lit15:
18672         case DW_OP_lit16:
18673         case DW_OP_lit17:
18674         case DW_OP_lit18:
18675         case DW_OP_lit19:
18676         case DW_OP_lit20:
18677         case DW_OP_lit21:
18678         case DW_OP_lit22:
18679         case DW_OP_lit23:
18680         case DW_OP_lit24:
18681         case DW_OP_lit25:
18682         case DW_OP_lit26:
18683         case DW_OP_lit27:
18684         case DW_OP_lit28:
18685         case DW_OP_lit29:
18686         case DW_OP_lit30:
18687         case DW_OP_lit31:
18688           stack[++stacki] = op - DW_OP_lit0;
18689           break;
18690
18691         case DW_OP_reg0:
18692         case DW_OP_reg1:
18693         case DW_OP_reg2:
18694         case DW_OP_reg3:
18695         case DW_OP_reg4:
18696         case DW_OP_reg5:
18697         case DW_OP_reg6:
18698         case DW_OP_reg7:
18699         case DW_OP_reg8:
18700         case DW_OP_reg9:
18701         case DW_OP_reg10:
18702         case DW_OP_reg11:
18703         case DW_OP_reg12:
18704         case DW_OP_reg13:
18705         case DW_OP_reg14:
18706         case DW_OP_reg15:
18707         case DW_OP_reg16:
18708         case DW_OP_reg17:
18709         case DW_OP_reg18:
18710         case DW_OP_reg19:
18711         case DW_OP_reg20:
18712         case DW_OP_reg21:
18713         case DW_OP_reg22:
18714         case DW_OP_reg23:
18715         case DW_OP_reg24:
18716         case DW_OP_reg25:
18717         case DW_OP_reg26:
18718         case DW_OP_reg27:
18719         case DW_OP_reg28:
18720         case DW_OP_reg29:
18721         case DW_OP_reg30:
18722         case DW_OP_reg31:
18723           stack[++stacki] = op - DW_OP_reg0;
18724           if (i < size)
18725             dwarf2_complex_location_expr_complaint ();
18726           break;
18727
18728         case DW_OP_regx:
18729           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
18730           i += bytes_read;
18731           stack[++stacki] = unsnd;
18732           if (i < size)
18733             dwarf2_complex_location_expr_complaint ();
18734           break;
18735
18736         case DW_OP_addr:
18737           stack[++stacki] = read_address (objfile->obfd, &data[i],
18738                                           cu, &bytes_read);
18739           i += bytes_read;
18740           break;
18741
18742         case DW_OP_const1u:
18743           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
18744           i += 1;
18745           break;
18746
18747         case DW_OP_const1s:
18748           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
18749           i += 1;
18750           break;
18751
18752         case DW_OP_const2u:
18753           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
18754           i += 2;
18755           break;
18756
18757         case DW_OP_const2s:
18758           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
18759           i += 2;
18760           break;
18761
18762         case DW_OP_const4u:
18763           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
18764           i += 4;
18765           break;
18766
18767         case DW_OP_const4s:
18768           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
18769           i += 4;
18770           break;
18771
18772         case DW_OP_const8u:
18773           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
18774           i += 8;
18775           break;
18776
18777         case DW_OP_constu:
18778           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
18779                                                   &bytes_read);
18780           i += bytes_read;
18781           break;
18782
18783         case DW_OP_consts:
18784           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
18785           i += bytes_read;
18786           break;
18787
18788         case DW_OP_dup:
18789           stack[stacki + 1] = stack[stacki];
18790           stacki++;
18791           break;
18792
18793         case DW_OP_plus:
18794           stack[stacki - 1] += stack[stacki];
18795           stacki--;
18796           break;
18797
18798         case DW_OP_plus_uconst:
18799           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
18800                                                  &bytes_read);
18801           i += bytes_read;
18802           break;
18803
18804         case DW_OP_minus:
18805           stack[stacki - 1] -= stack[stacki];
18806           stacki--;
18807           break;
18808
18809         case DW_OP_deref:
18810           /* If we're not the last op, then we definitely can't encode
18811              this using GDB's address_class enum.  This is valid for partial
18812              global symbols, although the variable's address will be bogus
18813              in the psymtab.  */
18814           if (i < size)
18815             dwarf2_complex_location_expr_complaint ();
18816           break;
18817
18818         case DW_OP_GNU_push_tls_address:
18819           /* The top of the stack has the offset from the beginning
18820              of the thread control block at which the variable is located.  */
18821           /* Nothing should follow this operator, so the top of stack would
18822              be returned.  */
18823           /* This is valid for partial global symbols, but the variable's
18824              address will be bogus in the psymtab.  Make it always at least
18825              non-zero to not look as a variable garbage collected by linker
18826              which have DW_OP_addr 0.  */
18827           if (i < size)
18828             dwarf2_complex_location_expr_complaint ();
18829           stack[stacki]++;
18830           break;
18831
18832         case DW_OP_GNU_uninit:
18833           break;
18834
18835         case DW_OP_GNU_addr_index:
18836         case DW_OP_GNU_const_index:
18837           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
18838                                                          &bytes_read);
18839           i += bytes_read;
18840           break;
18841
18842         default:
18843           {
18844             const char *name = get_DW_OP_name (op);
18845
18846             if (name)
18847               complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
18848                          name);
18849             else
18850               complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
18851                          op);
18852           }
18853
18854           return (stack[stacki]);
18855         }
18856
18857       /* Enforce maximum stack depth of SIZE-1 to avoid writing
18858          outside of the allocated space.  Also enforce minimum>0.  */
18859       if (stacki >= ARRAY_SIZE (stack) - 1)
18860         {
18861           complaint (&symfile_complaints,
18862                      _("location description stack overflow"));
18863           return 0;
18864         }
18865
18866       if (stacki <= 0)
18867         {
18868           complaint (&symfile_complaints,
18869                      _("location description stack underflow"));
18870           return 0;
18871         }
18872     }
18873   return (stack[stacki]);
18874 }
18875
18876 /* memory allocation interface */
18877
18878 static struct dwarf_block *
18879 dwarf_alloc_block (struct dwarf2_cu *cu)
18880 {
18881   struct dwarf_block *blk;
18882
18883   blk = (struct dwarf_block *)
18884     obstack_alloc (&cu->comp_unit_obstack, sizeof (struct dwarf_block));
18885   return (blk);
18886 }
18887
18888 static struct die_info *
18889 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
18890 {
18891   struct die_info *die;
18892   size_t size = sizeof (struct die_info);
18893
18894   if (num_attrs > 1)
18895     size += (num_attrs - 1) * sizeof (struct attribute);
18896
18897   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
18898   memset (die, 0, sizeof (struct die_info));
18899   return (die);
18900 }
18901
18902 \f
18903 /* Macro support.  */
18904
18905 /* Return file name relative to the compilation directory of file number I in
18906    *LH's file name table.  The result is allocated using xmalloc; the caller is
18907    responsible for freeing it.  */
18908
18909 static char *
18910 file_file_name (int file, struct line_header *lh)
18911 {
18912   /* Is the file number a valid index into the line header's file name
18913      table?  Remember that file numbers start with one, not zero.  */
18914   if (1 <= file && file <= lh->num_file_names)
18915     {
18916       struct file_entry *fe = &lh->file_names[file - 1];
18917
18918       if (IS_ABSOLUTE_PATH (fe->name) || fe->dir_index == 0)
18919         return xstrdup (fe->name);
18920       return concat (lh->include_dirs[fe->dir_index - 1], SLASH_STRING,
18921                      fe->name, NULL);
18922     }
18923   else
18924     {
18925       /* The compiler produced a bogus file number.  We can at least
18926          record the macro definitions made in the file, even if we
18927          won't be able to find the file by name.  */
18928       char fake_name[80];
18929
18930       xsnprintf (fake_name, sizeof (fake_name),
18931                  "<bad macro file number %d>", file);
18932
18933       complaint (&symfile_complaints,
18934                  _("bad file number in macro information (%d)"),
18935                  file);
18936
18937       return xstrdup (fake_name);
18938     }
18939 }
18940
18941 /* Return the full name of file number I in *LH's file name table.
18942    Use COMP_DIR as the name of the current directory of the
18943    compilation.  The result is allocated using xmalloc; the caller is
18944    responsible for freeing it.  */
18945 static char *
18946 file_full_name (int file, struct line_header *lh, const char *comp_dir)
18947 {
18948   /* Is the file number a valid index into the line header's file name
18949      table?  Remember that file numbers start with one, not zero.  */
18950   if (1 <= file && file <= lh->num_file_names)
18951     {
18952       char *relative = file_file_name (file, lh);
18953
18954       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
18955         return relative;
18956       return reconcat (relative, comp_dir, SLASH_STRING, relative, NULL);
18957     }
18958   else
18959     return file_file_name (file, lh);
18960 }
18961
18962
18963 static struct macro_source_file *
18964 macro_start_file (int file, int line,
18965                   struct macro_source_file *current_file,
18966                   const char *comp_dir,
18967                   struct line_header *lh, struct objfile *objfile)
18968 {
18969   /* File name relative to the compilation directory of this source file.  */
18970   char *file_name = file_file_name (file, lh);
18971
18972   /* We don't create a macro table for this compilation unit
18973      at all until we actually get a filename.  */
18974   if (! pending_macros)
18975     pending_macros = new_macro_table (&objfile->per_bfd->storage_obstack,
18976                                       objfile->per_bfd->macro_cache,
18977                                       comp_dir);
18978
18979   if (! current_file)
18980     {
18981       /* If we have no current file, then this must be the start_file
18982          directive for the compilation unit's main source file.  */
18983       current_file = macro_set_main (pending_macros, file_name);
18984       macro_define_special (pending_macros);
18985     }
18986   else
18987     current_file = macro_include (current_file, line, file_name);
18988
18989   xfree (file_name);
18990
18991   return current_file;
18992 }
18993
18994
18995 /* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
18996    followed by a null byte.  */
18997 static char *
18998 copy_string (const char *buf, int len)
18999 {
19000   char *s = xmalloc (len + 1);
19001
19002   memcpy (s, buf, len);
19003   s[len] = '\0';
19004   return s;
19005 }
19006
19007
19008 static const char *
19009 consume_improper_spaces (const char *p, const char *body)
19010 {
19011   if (*p == ' ')
19012     {
19013       complaint (&symfile_complaints,
19014                  _("macro definition contains spaces "
19015                    "in formal argument list:\n`%s'"),
19016                  body);
19017
19018       while (*p == ' ')
19019         p++;
19020     }
19021
19022   return p;
19023 }
19024
19025
19026 static void
19027 parse_macro_definition (struct macro_source_file *file, int line,
19028                         const char *body)
19029 {
19030   const char *p;
19031
19032   /* The body string takes one of two forms.  For object-like macro
19033      definitions, it should be:
19034
19035         <macro name> " " <definition>
19036
19037      For function-like macro definitions, it should be:
19038
19039         <macro name> "() " <definition>
19040      or
19041         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
19042
19043      Spaces may appear only where explicitly indicated, and in the
19044      <definition>.
19045
19046      The Dwarf 2 spec says that an object-like macro's name is always
19047      followed by a space, but versions of GCC around March 2002 omit
19048      the space when the macro's definition is the empty string.
19049
19050      The Dwarf 2 spec says that there should be no spaces between the
19051      formal arguments in a function-like macro's formal argument list,
19052      but versions of GCC around March 2002 include spaces after the
19053      commas.  */
19054
19055
19056   /* Find the extent of the macro name.  The macro name is terminated
19057      by either a space or null character (for an object-like macro) or
19058      an opening paren (for a function-like macro).  */
19059   for (p = body; *p; p++)
19060     if (*p == ' ' || *p == '(')
19061       break;
19062
19063   if (*p == ' ' || *p == '\0')
19064     {
19065       /* It's an object-like macro.  */
19066       int name_len = p - body;
19067       char *name = copy_string (body, name_len);
19068       const char *replacement;
19069
19070       if (*p == ' ')
19071         replacement = body + name_len + 1;
19072       else
19073         {
19074           dwarf2_macro_malformed_definition_complaint (body);
19075           replacement = body + name_len;
19076         }
19077
19078       macro_define_object (file, line, name, replacement);
19079
19080       xfree (name);
19081     }
19082   else if (*p == '(')
19083     {
19084       /* It's a function-like macro.  */
19085       char *name = copy_string (body, p - body);
19086       int argc = 0;
19087       int argv_size = 1;
19088       char **argv = xmalloc (argv_size * sizeof (*argv));
19089
19090       p++;
19091
19092       p = consume_improper_spaces (p, body);
19093
19094       /* Parse the formal argument list.  */
19095       while (*p && *p != ')')
19096         {
19097           /* Find the extent of the current argument name.  */
19098           const char *arg_start = p;
19099
19100           while (*p && *p != ',' && *p != ')' && *p != ' ')
19101             p++;
19102
19103           if (! *p || p == arg_start)
19104             dwarf2_macro_malformed_definition_complaint (body);
19105           else
19106             {
19107               /* Make sure argv has room for the new argument.  */
19108               if (argc >= argv_size)
19109                 {
19110                   argv_size *= 2;
19111                   argv = xrealloc (argv, argv_size * sizeof (*argv));
19112                 }
19113
19114               argv[argc++] = copy_string (arg_start, p - arg_start);
19115             }
19116
19117           p = consume_improper_spaces (p, body);
19118
19119           /* Consume the comma, if present.  */
19120           if (*p == ',')
19121             {
19122               p++;
19123
19124               p = consume_improper_spaces (p, body);
19125             }
19126         }
19127
19128       if (*p == ')')
19129         {
19130           p++;
19131
19132           if (*p == ' ')
19133             /* Perfectly formed definition, no complaints.  */
19134             macro_define_function (file, line, name,
19135                                    argc, (const char **) argv,
19136                                    p + 1);
19137           else if (*p == '\0')
19138             {
19139               /* Complain, but do define it.  */
19140               dwarf2_macro_malformed_definition_complaint (body);
19141               macro_define_function (file, line, name,
19142                                      argc, (const char **) argv,
19143                                      p);
19144             }
19145           else
19146             /* Just complain.  */
19147             dwarf2_macro_malformed_definition_complaint (body);
19148         }
19149       else
19150         /* Just complain.  */
19151         dwarf2_macro_malformed_definition_complaint (body);
19152
19153       xfree (name);
19154       {
19155         int i;
19156
19157         for (i = 0; i < argc; i++)
19158           xfree (argv[i]);
19159       }
19160       xfree (argv);
19161     }
19162   else
19163     dwarf2_macro_malformed_definition_complaint (body);
19164 }
19165
19166 /* Skip some bytes from BYTES according to the form given in FORM.
19167    Returns the new pointer.  */
19168
19169 static const gdb_byte *
19170 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
19171                  enum dwarf_form form,
19172                  unsigned int offset_size,
19173                  struct dwarf2_section_info *section)
19174 {
19175   unsigned int bytes_read;
19176
19177   switch (form)
19178     {
19179     case DW_FORM_data1:
19180     case DW_FORM_flag:
19181       ++bytes;
19182       break;
19183
19184     case DW_FORM_data2:
19185       bytes += 2;
19186       break;
19187
19188     case DW_FORM_data4:
19189       bytes += 4;
19190       break;
19191
19192     case DW_FORM_data8:
19193       bytes += 8;
19194       break;
19195
19196     case DW_FORM_string:
19197       read_direct_string (abfd, bytes, &bytes_read);
19198       bytes += bytes_read;
19199       break;
19200
19201     case DW_FORM_sec_offset:
19202     case DW_FORM_strp:
19203     case DW_FORM_GNU_strp_alt:
19204       bytes += offset_size;
19205       break;
19206
19207     case DW_FORM_block:
19208       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
19209       bytes += bytes_read;
19210       break;
19211
19212     case DW_FORM_block1:
19213       bytes += 1 + read_1_byte (abfd, bytes);
19214       break;
19215     case DW_FORM_block2:
19216       bytes += 2 + read_2_bytes (abfd, bytes);
19217       break;
19218     case DW_FORM_block4:
19219       bytes += 4 + read_4_bytes (abfd, bytes);
19220       break;
19221
19222     case DW_FORM_sdata:
19223     case DW_FORM_udata:
19224     case DW_FORM_GNU_addr_index:
19225     case DW_FORM_GNU_str_index:
19226       bytes = gdb_skip_leb128 (bytes, buffer_end);
19227       if (bytes == NULL)
19228         {
19229           dwarf2_section_buffer_overflow_complaint (section);
19230           return NULL;
19231         }
19232       break;
19233
19234     default:
19235       {
19236       complain:
19237         complaint (&symfile_complaints,
19238                    _("invalid form 0x%x in `%s'"),
19239                    form,
19240                    section->asection->name);
19241         return NULL;
19242       }
19243     }
19244
19245   return bytes;
19246 }
19247
19248 /* A helper for dwarf_decode_macros that handles skipping an unknown
19249    opcode.  Returns an updated pointer to the macro data buffer; or,
19250    on error, issues a complaint and returns NULL.  */
19251
19252 static const gdb_byte *
19253 skip_unknown_opcode (unsigned int opcode,
19254                      const gdb_byte **opcode_definitions,
19255                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
19256                      bfd *abfd,
19257                      unsigned int offset_size,
19258                      struct dwarf2_section_info *section)
19259 {
19260   unsigned int bytes_read, i;
19261   unsigned long arg;
19262   const gdb_byte *defn;
19263
19264   if (opcode_definitions[opcode] == NULL)
19265     {
19266       complaint (&symfile_complaints,
19267                  _("unrecognized DW_MACFINO opcode 0x%x"),
19268                  opcode);
19269       return NULL;
19270     }
19271
19272   defn = opcode_definitions[opcode];
19273   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
19274   defn += bytes_read;
19275
19276   for (i = 0; i < arg; ++i)
19277     {
19278       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end, defn[i], offset_size,
19279                                  section);
19280       if (mac_ptr == NULL)
19281         {
19282           /* skip_form_bytes already issued the complaint.  */
19283           return NULL;
19284         }
19285     }
19286
19287   return mac_ptr;
19288 }
19289
19290 /* A helper function which parses the header of a macro section.
19291    If the macro section is the extended (for now called "GNU") type,
19292    then this updates *OFFSET_SIZE.  Returns a pointer to just after
19293    the header, or issues a complaint and returns NULL on error.  */
19294
19295 static const gdb_byte *
19296 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
19297                           bfd *abfd,
19298                           const gdb_byte *mac_ptr,
19299                           unsigned int *offset_size,
19300                           int section_is_gnu)
19301 {
19302   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
19303
19304   if (section_is_gnu)
19305     {
19306       unsigned int version, flags;
19307
19308       version = read_2_bytes (abfd, mac_ptr);
19309       if (version != 4)
19310         {
19311           complaint (&symfile_complaints,
19312                      _("unrecognized version `%d' in .debug_macro section"),
19313                      version);
19314           return NULL;
19315         }
19316       mac_ptr += 2;
19317
19318       flags = read_1_byte (abfd, mac_ptr);
19319       ++mac_ptr;
19320       *offset_size = (flags & 1) ? 8 : 4;
19321
19322       if ((flags & 2) != 0)
19323         /* We don't need the line table offset.  */
19324         mac_ptr += *offset_size;
19325
19326       /* Vendor opcode descriptions.  */
19327       if ((flags & 4) != 0)
19328         {
19329           unsigned int i, count;
19330
19331           count = read_1_byte (abfd, mac_ptr);
19332           ++mac_ptr;
19333           for (i = 0; i < count; ++i)
19334             {
19335               unsigned int opcode, bytes_read;
19336               unsigned long arg;
19337
19338               opcode = read_1_byte (abfd, mac_ptr);
19339               ++mac_ptr;
19340               opcode_definitions[opcode] = mac_ptr;
19341               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
19342               mac_ptr += bytes_read;
19343               mac_ptr += arg;
19344             }
19345         }
19346     }
19347
19348   return mac_ptr;
19349 }
19350
19351 /* A helper for dwarf_decode_macros that handles the GNU extensions,
19352    including DW_MACRO_GNU_transparent_include.  */
19353
19354 static void
19355 dwarf_decode_macro_bytes (bfd *abfd,
19356                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
19357                           struct macro_source_file *current_file,
19358                           struct line_header *lh, const char *comp_dir,
19359                           struct dwarf2_section_info *section,
19360                           int section_is_gnu, int section_is_dwz,
19361                           unsigned int offset_size,
19362                           struct objfile *objfile,
19363                           htab_t include_hash)
19364 {
19365   enum dwarf_macro_record_type macinfo_type;
19366   int at_commandline;
19367   const gdb_byte *opcode_definitions[256];
19368
19369   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
19370                                       &offset_size, section_is_gnu);
19371   if (mac_ptr == NULL)
19372     {
19373       /* We already issued a complaint.  */
19374       return;
19375     }
19376
19377   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
19378      GDB is still reading the definitions from command line.  First
19379      DW_MACINFO_start_file will need to be ignored as it was already executed
19380      to create CURRENT_FILE for the main source holding also the command line
19381      definitions.  On first met DW_MACINFO_start_file this flag is reset to
19382      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
19383
19384   at_commandline = 1;
19385
19386   do
19387     {
19388       /* Do we at least have room for a macinfo type byte?  */
19389       if (mac_ptr >= mac_end)
19390         {
19391           dwarf2_section_buffer_overflow_complaint (section);
19392           break;
19393         }
19394
19395       macinfo_type = read_1_byte (abfd, mac_ptr);
19396       mac_ptr++;
19397
19398       /* Note that we rely on the fact that the corresponding GNU and
19399          DWARF constants are the same.  */
19400       switch (macinfo_type)
19401         {
19402           /* A zero macinfo type indicates the end of the macro
19403              information.  */
19404         case 0:
19405           break;
19406
19407         case DW_MACRO_GNU_define:
19408         case DW_MACRO_GNU_undef:
19409         case DW_MACRO_GNU_define_indirect:
19410         case DW_MACRO_GNU_undef_indirect:
19411         case DW_MACRO_GNU_define_indirect_alt:
19412         case DW_MACRO_GNU_undef_indirect_alt:
19413           {
19414             unsigned int bytes_read;
19415             int line;
19416             const char *body;
19417             int is_define;
19418
19419             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
19420             mac_ptr += bytes_read;
19421
19422             if (macinfo_type == DW_MACRO_GNU_define
19423                 || macinfo_type == DW_MACRO_GNU_undef)
19424               {
19425                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
19426                 mac_ptr += bytes_read;
19427               }
19428             else
19429               {
19430                 LONGEST str_offset;
19431
19432                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
19433                 mac_ptr += offset_size;
19434
19435                 if (macinfo_type == DW_MACRO_GNU_define_indirect_alt
19436                     || macinfo_type == DW_MACRO_GNU_undef_indirect_alt
19437                     || section_is_dwz)
19438                   {
19439                     struct dwz_file *dwz = dwarf2_get_dwz_file ();
19440
19441                     body = read_indirect_string_from_dwz (dwz, str_offset);
19442                   }
19443                 else
19444                   body = read_indirect_string_at_offset (abfd, str_offset);
19445               }
19446
19447             is_define = (macinfo_type == DW_MACRO_GNU_define
19448                          || macinfo_type == DW_MACRO_GNU_define_indirect
19449                          || macinfo_type == DW_MACRO_GNU_define_indirect_alt);
19450             if (! current_file)
19451               {
19452                 /* DWARF violation as no main source is present.  */
19453                 complaint (&symfile_complaints,
19454                            _("debug info with no main source gives macro %s "
19455                              "on line %d: %s"),
19456                            is_define ? _("definition") : _("undefinition"),
19457                            line, body);
19458                 break;
19459               }
19460             if ((line == 0 && !at_commandline)
19461                 || (line != 0 && at_commandline))
19462               complaint (&symfile_complaints,
19463                          _("debug info gives %s macro %s with %s line %d: %s"),
19464                          at_commandline ? _("command-line") : _("in-file"),
19465                          is_define ? _("definition") : _("undefinition"),
19466                          line == 0 ? _("zero") : _("non-zero"), line, body);
19467
19468             if (is_define)
19469               parse_macro_definition (current_file, line, body);
19470             else
19471               {
19472                 gdb_assert (macinfo_type == DW_MACRO_GNU_undef
19473                             || macinfo_type == DW_MACRO_GNU_undef_indirect
19474                             || macinfo_type == DW_MACRO_GNU_undef_indirect_alt);
19475                 macro_undef (current_file, line, body);
19476               }
19477           }
19478           break;
19479
19480         case DW_MACRO_GNU_start_file:
19481           {
19482             unsigned int bytes_read;
19483             int line, file;
19484
19485             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
19486             mac_ptr += bytes_read;
19487             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
19488             mac_ptr += bytes_read;
19489
19490             if ((line == 0 && !at_commandline)
19491                 || (line != 0 && at_commandline))
19492               complaint (&symfile_complaints,
19493                          _("debug info gives source %d included "
19494                            "from %s at %s line %d"),
19495                          file, at_commandline ? _("command-line") : _("file"),
19496                          line == 0 ? _("zero") : _("non-zero"), line);
19497
19498             if (at_commandline)
19499               {
19500                 /* This DW_MACRO_GNU_start_file was executed in the
19501                    pass one.  */
19502                 at_commandline = 0;
19503               }
19504             else
19505               current_file = macro_start_file (file, line,
19506                                                current_file, comp_dir,
19507                                                lh, objfile);
19508           }
19509           break;
19510
19511         case DW_MACRO_GNU_end_file:
19512           if (! current_file)
19513             complaint (&symfile_complaints,
19514                        _("macro debug info has an unmatched "
19515                          "`close_file' directive"));
19516           else
19517             {
19518               current_file = current_file->included_by;
19519               if (! current_file)
19520                 {
19521                   enum dwarf_macro_record_type next_type;
19522
19523                   /* GCC circa March 2002 doesn't produce the zero
19524                      type byte marking the end of the compilation
19525                      unit.  Complain if it's not there, but exit no
19526                      matter what.  */
19527
19528                   /* Do we at least have room for a macinfo type byte?  */
19529                   if (mac_ptr >= mac_end)
19530                     {
19531                       dwarf2_section_buffer_overflow_complaint (section);
19532                       return;
19533                     }
19534
19535                   /* We don't increment mac_ptr here, so this is just
19536                      a look-ahead.  */
19537                   next_type = read_1_byte (abfd, mac_ptr);
19538                   if (next_type != 0)
19539                     complaint (&symfile_complaints,
19540                                _("no terminating 0-type entry for "
19541                                  "macros in `.debug_macinfo' section"));
19542
19543                   return;
19544                 }
19545             }
19546           break;
19547
19548         case DW_MACRO_GNU_transparent_include:
19549         case DW_MACRO_GNU_transparent_include_alt:
19550           {
19551             LONGEST offset;
19552             void **slot;
19553             bfd *include_bfd = abfd;
19554             struct dwarf2_section_info *include_section = section;
19555             struct dwarf2_section_info alt_section;
19556             const gdb_byte *include_mac_end = mac_end;
19557             int is_dwz = section_is_dwz;
19558             const gdb_byte *new_mac_ptr;
19559
19560             offset = read_offset_1 (abfd, mac_ptr, offset_size);
19561             mac_ptr += offset_size;
19562
19563             if (macinfo_type == DW_MACRO_GNU_transparent_include_alt)
19564               {
19565                 struct dwz_file *dwz = dwarf2_get_dwz_file ();
19566
19567                 dwarf2_read_section (dwarf2_per_objfile->objfile,
19568                                      &dwz->macro);
19569
19570                 include_bfd = dwz->macro.asection->owner;
19571                 include_section = &dwz->macro;
19572                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
19573                 is_dwz = 1;
19574               }
19575
19576             new_mac_ptr = include_section->buffer + offset;
19577             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
19578
19579             if (*slot != NULL)
19580               {
19581                 /* This has actually happened; see
19582                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
19583                 complaint (&symfile_complaints,
19584                            _("recursive DW_MACRO_GNU_transparent_include in "
19585                              ".debug_macro section"));
19586               }
19587             else
19588               {
19589                 *slot = (void *) new_mac_ptr;
19590
19591                 dwarf_decode_macro_bytes (include_bfd, new_mac_ptr,
19592                                           include_mac_end, current_file,
19593                                           lh, comp_dir,
19594                                           section, section_is_gnu, is_dwz,
19595                                           offset_size, objfile, include_hash);
19596
19597                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
19598               }
19599           }
19600           break;
19601
19602         case DW_MACINFO_vendor_ext:
19603           if (!section_is_gnu)
19604             {
19605               unsigned int bytes_read;
19606               int constant;
19607
19608               constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
19609               mac_ptr += bytes_read;
19610               read_direct_string (abfd, mac_ptr, &bytes_read);
19611               mac_ptr += bytes_read;
19612
19613               /* We don't recognize any vendor extensions.  */
19614               break;
19615             }
19616           /* FALLTHROUGH */
19617
19618         default:
19619           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
19620                                          mac_ptr, mac_end, abfd, offset_size,
19621                                          section);
19622           if (mac_ptr == NULL)
19623             return;
19624           break;
19625         }
19626     } while (macinfo_type != 0);
19627 }
19628
19629 static void
19630 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
19631                      const char *comp_dir, int section_is_gnu)
19632 {
19633   struct objfile *objfile = dwarf2_per_objfile->objfile;
19634   struct line_header *lh = cu->line_header;
19635   bfd *abfd;
19636   const gdb_byte *mac_ptr, *mac_end;
19637   struct macro_source_file *current_file = 0;
19638   enum dwarf_macro_record_type macinfo_type;
19639   unsigned int offset_size = cu->header.offset_size;
19640   const gdb_byte *opcode_definitions[256];
19641   struct cleanup *cleanup;
19642   htab_t include_hash;
19643   void **slot;
19644   struct dwarf2_section_info *section;
19645   const char *section_name;
19646
19647   if (cu->dwo_unit != NULL)
19648     {
19649       if (section_is_gnu)
19650         {
19651           section = &cu->dwo_unit->dwo_file->sections.macro;
19652           section_name = ".debug_macro.dwo";
19653         }
19654       else
19655         {
19656           section = &cu->dwo_unit->dwo_file->sections.macinfo;
19657           section_name = ".debug_macinfo.dwo";
19658         }
19659     }
19660   else
19661     {
19662       if (section_is_gnu)
19663         {
19664           section = &dwarf2_per_objfile->macro;
19665           section_name = ".debug_macro";
19666         }
19667       else
19668         {
19669           section = &dwarf2_per_objfile->macinfo;
19670           section_name = ".debug_macinfo";
19671         }
19672     }
19673
19674   dwarf2_read_section (objfile, section);
19675   if (section->buffer == NULL)
19676     {
19677       complaint (&symfile_complaints, _("missing %s section"), section_name);
19678       return;
19679     }
19680   abfd = section->asection->owner;
19681
19682   /* First pass: Find the name of the base filename.
19683      This filename is needed in order to process all macros whose definition
19684      (or undefinition) comes from the command line.  These macros are defined
19685      before the first DW_MACINFO_start_file entry, and yet still need to be
19686      associated to the base file.
19687
19688      To determine the base file name, we scan the macro definitions until we
19689      reach the first DW_MACINFO_start_file entry.  We then initialize
19690      CURRENT_FILE accordingly so that any macro definition found before the
19691      first DW_MACINFO_start_file can still be associated to the base file.  */
19692
19693   mac_ptr = section->buffer + offset;
19694   mac_end = section->buffer + section->size;
19695
19696   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
19697                                       &offset_size, section_is_gnu);
19698   if (mac_ptr == NULL)
19699     {
19700       /* We already issued a complaint.  */
19701       return;
19702     }
19703
19704   do
19705     {
19706       /* Do we at least have room for a macinfo type byte?  */
19707       if (mac_ptr >= mac_end)
19708         {
19709           /* Complaint is printed during the second pass as GDB will probably
19710              stop the first pass earlier upon finding
19711              DW_MACINFO_start_file.  */
19712           break;
19713         }
19714
19715       macinfo_type = read_1_byte (abfd, mac_ptr);
19716       mac_ptr++;
19717
19718       /* Note that we rely on the fact that the corresponding GNU and
19719          DWARF constants are the same.  */
19720       switch (macinfo_type)
19721         {
19722           /* A zero macinfo type indicates the end of the macro
19723              information.  */
19724         case 0:
19725           break;
19726
19727         case DW_MACRO_GNU_define:
19728         case DW_MACRO_GNU_undef:
19729           /* Only skip the data by MAC_PTR.  */
19730           {
19731             unsigned int bytes_read;
19732
19733             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
19734             mac_ptr += bytes_read;
19735             read_direct_string (abfd, mac_ptr, &bytes_read);
19736             mac_ptr += bytes_read;
19737           }
19738           break;
19739
19740         case DW_MACRO_GNU_start_file:
19741           {
19742             unsigned int bytes_read;
19743             int line, file;
19744
19745             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
19746             mac_ptr += bytes_read;
19747             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
19748             mac_ptr += bytes_read;
19749
19750             current_file = macro_start_file (file, line, current_file,
19751                                              comp_dir, lh, objfile);
19752           }
19753           break;
19754
19755         case DW_MACRO_GNU_end_file:
19756           /* No data to skip by MAC_PTR.  */
19757           break;
19758
19759         case DW_MACRO_GNU_define_indirect:
19760         case DW_MACRO_GNU_undef_indirect:
19761         case DW_MACRO_GNU_define_indirect_alt:
19762         case DW_MACRO_GNU_undef_indirect_alt:
19763           {
19764             unsigned int bytes_read;
19765
19766             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
19767             mac_ptr += bytes_read;
19768             mac_ptr += offset_size;
19769           }
19770           break;
19771
19772         case DW_MACRO_GNU_transparent_include:
19773         case DW_MACRO_GNU_transparent_include_alt:
19774           /* Note that, according to the spec, a transparent include
19775              chain cannot call DW_MACRO_GNU_start_file.  So, we can just
19776              skip this opcode.  */
19777           mac_ptr += offset_size;
19778           break;
19779
19780         case DW_MACINFO_vendor_ext:
19781           /* Only skip the data by MAC_PTR.  */
19782           if (!section_is_gnu)
19783             {
19784               unsigned int bytes_read;
19785
19786               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
19787               mac_ptr += bytes_read;
19788               read_direct_string (abfd, mac_ptr, &bytes_read);
19789               mac_ptr += bytes_read;
19790             }
19791           /* FALLTHROUGH */
19792
19793         default:
19794           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
19795                                          mac_ptr, mac_end, abfd, offset_size,
19796                                          section);
19797           if (mac_ptr == NULL)
19798             return;
19799           break;
19800         }
19801     } while (macinfo_type != 0 && current_file == NULL);
19802
19803   /* Second pass: Process all entries.
19804
19805      Use the AT_COMMAND_LINE flag to determine whether we are still processing
19806      command-line macro definitions/undefinitions.  This flag is unset when we
19807      reach the first DW_MACINFO_start_file entry.  */
19808
19809   include_hash = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
19810                                     NULL, xcalloc, xfree);
19811   cleanup = make_cleanup_htab_delete (include_hash);
19812   mac_ptr = section->buffer + offset;
19813   slot = htab_find_slot (include_hash, mac_ptr, INSERT);
19814   *slot = (void *) mac_ptr;
19815   dwarf_decode_macro_bytes (abfd, mac_ptr, mac_end,
19816                             current_file, lh, comp_dir, section,
19817                             section_is_gnu, 0,
19818                             offset_size, objfile, include_hash);
19819   do_cleanups (cleanup);
19820 }
19821
19822 /* Check if the attribute's form is a DW_FORM_block*
19823    if so return true else false.  */
19824
19825 static int
19826 attr_form_is_block (const struct attribute *attr)
19827 {
19828   return (attr == NULL ? 0 :
19829       attr->form == DW_FORM_block1
19830       || attr->form == DW_FORM_block2
19831       || attr->form == DW_FORM_block4
19832       || attr->form == DW_FORM_block
19833       || attr->form == DW_FORM_exprloc);
19834 }
19835
19836 /* Return non-zero if ATTR's value is a section offset --- classes
19837    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
19838    You may use DW_UNSND (attr) to retrieve such offsets.
19839
19840    Section 7.5.4, "Attribute Encodings", explains that no attribute
19841    may have a value that belongs to more than one of these classes; it
19842    would be ambiguous if we did, because we use the same forms for all
19843    of them.  */
19844
19845 static int
19846 attr_form_is_section_offset (const struct attribute *attr)
19847 {
19848   return (attr->form == DW_FORM_data4
19849           || attr->form == DW_FORM_data8
19850           || attr->form == DW_FORM_sec_offset);
19851 }
19852
19853 /* Return non-zero if ATTR's value falls in the 'constant' class, or
19854    zero otherwise.  When this function returns true, you can apply
19855    dwarf2_get_attr_constant_value to it.
19856
19857    However, note that for some attributes you must check
19858    attr_form_is_section_offset before using this test.  DW_FORM_data4
19859    and DW_FORM_data8 are members of both the constant class, and of
19860    the classes that contain offsets into other debug sections
19861    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
19862    that, if an attribute's can be either a constant or one of the
19863    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
19864    taken as section offsets, not constants.  */
19865
19866 static int
19867 attr_form_is_constant (const struct attribute *attr)
19868 {
19869   switch (attr->form)
19870     {
19871     case DW_FORM_sdata:
19872     case DW_FORM_udata:
19873     case DW_FORM_data1:
19874     case DW_FORM_data2:
19875     case DW_FORM_data4:
19876     case DW_FORM_data8:
19877       return 1;
19878     default:
19879       return 0;
19880     }
19881 }
19882
19883
19884 /* DW_ADDR is always stored already as sect_offset; despite for the forms
19885    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
19886
19887 static int
19888 attr_form_is_ref (const struct attribute *attr)
19889 {
19890   switch (attr->form)
19891     {
19892     case DW_FORM_ref_addr:
19893     case DW_FORM_ref1:
19894     case DW_FORM_ref2:
19895     case DW_FORM_ref4:
19896     case DW_FORM_ref8:
19897     case DW_FORM_ref_udata:
19898     case DW_FORM_GNU_ref_alt:
19899       return 1;
19900     default:
19901       return 0;
19902     }
19903 }
19904
19905 /* Return the .debug_loc section to use for CU.
19906    For DWO files use .debug_loc.dwo.  */
19907
19908 static struct dwarf2_section_info *
19909 cu_debug_loc_section (struct dwarf2_cu *cu)
19910 {
19911   if (cu->dwo_unit)
19912     return &cu->dwo_unit->dwo_file->sections.loc;
19913   return &dwarf2_per_objfile->loc;
19914 }
19915
19916 /* A helper function that fills in a dwarf2_loclist_baton.  */
19917
19918 static void
19919 fill_in_loclist_baton (struct dwarf2_cu *cu,
19920                        struct dwarf2_loclist_baton *baton,
19921                        const struct attribute *attr)
19922 {
19923   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
19924
19925   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
19926
19927   baton->per_cu = cu->per_cu;
19928   gdb_assert (baton->per_cu);
19929   /* We don't know how long the location list is, but make sure we
19930      don't run off the edge of the section.  */
19931   baton->size = section->size - DW_UNSND (attr);
19932   baton->data = section->buffer + DW_UNSND (attr);
19933   baton->base_address = cu->base_address;
19934   baton->from_dwo = cu->dwo_unit != NULL;
19935 }
19936
19937 static void
19938 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
19939                              struct dwarf2_cu *cu, int is_block)
19940 {
19941   struct objfile *objfile = dwarf2_per_objfile->objfile;
19942   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
19943
19944   if (attr_form_is_section_offset (attr)
19945       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
19946          the section.  If so, fall through to the complaint in the
19947          other branch.  */
19948       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
19949     {
19950       struct dwarf2_loclist_baton *baton;
19951
19952       baton = obstack_alloc (&objfile->objfile_obstack,
19953                              sizeof (struct dwarf2_loclist_baton));
19954
19955       fill_in_loclist_baton (cu, baton, attr);
19956
19957       if (cu->base_known == 0)
19958         complaint (&symfile_complaints,
19959                    _("Location list used without "
19960                      "specifying the CU base address."));
19961
19962       SYMBOL_ACLASS_INDEX (sym) = (is_block
19963                                    ? dwarf2_loclist_block_index
19964                                    : dwarf2_loclist_index);
19965       SYMBOL_LOCATION_BATON (sym) = baton;
19966     }
19967   else
19968     {
19969       struct dwarf2_locexpr_baton *baton;
19970
19971       baton = obstack_alloc (&objfile->objfile_obstack,
19972                              sizeof (struct dwarf2_locexpr_baton));
19973       baton->per_cu = cu->per_cu;
19974       gdb_assert (baton->per_cu);
19975
19976       if (attr_form_is_block (attr))
19977         {
19978           /* Note that we're just copying the block's data pointer
19979              here, not the actual data.  We're still pointing into the
19980              info_buffer for SYM's objfile; right now we never release
19981              that buffer, but when we do clean up properly this may
19982              need to change.  */
19983           baton->size = DW_BLOCK (attr)->size;
19984           baton->data = DW_BLOCK (attr)->data;
19985         }
19986       else
19987         {
19988           dwarf2_invalid_attrib_class_complaint ("location description",
19989                                                  SYMBOL_NATURAL_NAME (sym));
19990           baton->size = 0;
19991         }
19992
19993       SYMBOL_ACLASS_INDEX (sym) = (is_block
19994                                    ? dwarf2_locexpr_block_index
19995                                    : dwarf2_locexpr_index);
19996       SYMBOL_LOCATION_BATON (sym) = baton;
19997     }
19998 }
19999
20000 /* Return the OBJFILE associated with the compilation unit CU.  If CU
20001    came from a separate debuginfo file, then the master objfile is
20002    returned.  */
20003
20004 struct objfile *
20005 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
20006 {
20007   struct objfile *objfile = per_cu->objfile;
20008
20009   /* Return the master objfile, so that we can report and look up the
20010      correct file containing this variable.  */
20011   if (objfile->separate_debug_objfile_backlink)
20012     objfile = objfile->separate_debug_objfile_backlink;
20013
20014   return objfile;
20015 }
20016
20017 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
20018    (CU_HEADERP is unused in such case) or prepare a temporary copy at
20019    CU_HEADERP first.  */
20020
20021 static const struct comp_unit_head *
20022 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
20023                        struct dwarf2_per_cu_data *per_cu)
20024 {
20025   const gdb_byte *info_ptr;
20026
20027   if (per_cu->cu)
20028     return &per_cu->cu->header;
20029
20030   info_ptr = per_cu->section->buffer + per_cu->offset.sect_off;
20031
20032   memset (cu_headerp, 0, sizeof (*cu_headerp));
20033   read_comp_unit_head (cu_headerp, info_ptr, per_cu->objfile->obfd);
20034
20035   return cu_headerp;
20036 }
20037
20038 /* Return the address size given in the compilation unit header for CU.  */
20039
20040 int
20041 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
20042 {
20043   struct comp_unit_head cu_header_local;
20044   const struct comp_unit_head *cu_headerp;
20045
20046   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
20047
20048   return cu_headerp->addr_size;
20049 }
20050
20051 /* Return the offset size given in the compilation unit header for CU.  */
20052
20053 int
20054 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
20055 {
20056   struct comp_unit_head cu_header_local;
20057   const struct comp_unit_head *cu_headerp;
20058
20059   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
20060
20061   return cu_headerp->offset_size;
20062 }
20063
20064 /* See its dwarf2loc.h declaration.  */
20065
20066 int
20067 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
20068 {
20069   struct comp_unit_head cu_header_local;
20070   const struct comp_unit_head *cu_headerp;
20071
20072   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
20073
20074   if (cu_headerp->version == 2)
20075     return cu_headerp->addr_size;
20076   else
20077     return cu_headerp->offset_size;
20078 }
20079
20080 /* Return the text offset of the CU.  The returned offset comes from
20081    this CU's objfile.  If this objfile came from a separate debuginfo
20082    file, then the offset may be different from the corresponding
20083    offset in the parent objfile.  */
20084
20085 CORE_ADDR
20086 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
20087 {
20088   struct objfile *objfile = per_cu->objfile;
20089
20090   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
20091 }
20092
20093 /* Locate the .debug_info compilation unit from CU's objfile which contains
20094    the DIE at OFFSET.  Raises an error on failure.  */
20095
20096 static struct dwarf2_per_cu_data *
20097 dwarf2_find_containing_comp_unit (sect_offset offset,
20098                                   unsigned int offset_in_dwz,
20099                                   struct objfile *objfile)
20100 {
20101   struct dwarf2_per_cu_data *this_cu;
20102   int low, high;
20103   const sect_offset *cu_off;
20104
20105   low = 0;
20106   high = dwarf2_per_objfile->n_comp_units - 1;
20107   while (high > low)
20108     {
20109       struct dwarf2_per_cu_data *mid_cu;
20110       int mid = low + (high - low) / 2;
20111
20112       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
20113       cu_off = &mid_cu->offset;
20114       if (mid_cu->is_dwz > offset_in_dwz
20115           || (mid_cu->is_dwz == offset_in_dwz
20116               && cu_off->sect_off >= offset.sect_off))
20117         high = mid;
20118       else
20119         low = mid + 1;
20120     }
20121   gdb_assert (low == high);
20122   this_cu = dwarf2_per_objfile->all_comp_units[low];
20123   cu_off = &this_cu->offset;
20124   if (this_cu->is_dwz != offset_in_dwz || cu_off->sect_off > offset.sect_off)
20125     {
20126       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
20127         error (_("Dwarf Error: could not find partial DIE containing "
20128                "offset 0x%lx [in module %s]"),
20129                (long) offset.sect_off, bfd_get_filename (objfile->obfd));
20130
20131       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset.sect_off
20132                   <= offset.sect_off);
20133       return dwarf2_per_objfile->all_comp_units[low-1];
20134     }
20135   else
20136     {
20137       this_cu = dwarf2_per_objfile->all_comp_units[low];
20138       if (low == dwarf2_per_objfile->n_comp_units - 1
20139           && offset.sect_off >= this_cu->offset.sect_off + this_cu->length)
20140         error (_("invalid dwarf2 offset %u"), offset.sect_off);
20141       gdb_assert (offset.sect_off < this_cu->offset.sect_off + this_cu->length);
20142       return this_cu;
20143     }
20144 }
20145
20146 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
20147
20148 static void
20149 init_one_comp_unit (struct dwarf2_cu *cu, struct dwarf2_per_cu_data *per_cu)
20150 {
20151   memset (cu, 0, sizeof (*cu));
20152   per_cu->cu = cu;
20153   cu->per_cu = per_cu;
20154   cu->objfile = per_cu->objfile;
20155   obstack_init (&cu->comp_unit_obstack);
20156 }
20157
20158 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
20159
20160 static void
20161 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
20162                        enum language pretend_language)
20163 {
20164   struct attribute *attr;
20165
20166   /* Set the language we're debugging.  */
20167   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
20168   if (attr)
20169     set_cu_language (DW_UNSND (attr), cu);
20170   else
20171     {
20172       cu->language = pretend_language;
20173       cu->language_defn = language_def (cu->language);
20174     }
20175
20176   attr = dwarf2_attr (comp_unit_die, DW_AT_producer, cu);
20177   if (attr)
20178     cu->producer = DW_STRING (attr);
20179 }
20180
20181 /* Release one cached compilation unit, CU.  We unlink it from the tree
20182    of compilation units, but we don't remove it from the read_in_chain;
20183    the caller is responsible for that.
20184    NOTE: DATA is a void * because this function is also used as a
20185    cleanup routine.  */
20186
20187 static void
20188 free_heap_comp_unit (void *data)
20189 {
20190   struct dwarf2_cu *cu = data;
20191
20192   gdb_assert (cu->per_cu != NULL);
20193   cu->per_cu->cu = NULL;
20194   cu->per_cu = NULL;
20195
20196   obstack_free (&cu->comp_unit_obstack, NULL);
20197
20198   xfree (cu);
20199 }
20200
20201 /* This cleanup function is passed the address of a dwarf2_cu on the stack
20202    when we're finished with it.  We can't free the pointer itself, but be
20203    sure to unlink it from the cache.  Also release any associated storage.  */
20204
20205 static void
20206 free_stack_comp_unit (void *data)
20207 {
20208   struct dwarf2_cu *cu = data;
20209
20210   gdb_assert (cu->per_cu != NULL);
20211   cu->per_cu->cu = NULL;
20212   cu->per_cu = NULL;
20213
20214   obstack_free (&cu->comp_unit_obstack, NULL);
20215   cu->partial_dies = NULL;
20216 }
20217
20218 /* Free all cached compilation units.  */
20219
20220 static void
20221 free_cached_comp_units (void *data)
20222 {
20223   struct dwarf2_per_cu_data *per_cu, **last_chain;
20224
20225   per_cu = dwarf2_per_objfile->read_in_chain;
20226   last_chain = &dwarf2_per_objfile->read_in_chain;
20227   while (per_cu != NULL)
20228     {
20229       struct dwarf2_per_cu_data *next_cu;
20230
20231       next_cu = per_cu->cu->read_in_chain;
20232
20233       free_heap_comp_unit (per_cu->cu);
20234       *last_chain = next_cu;
20235
20236       per_cu = next_cu;
20237     }
20238 }
20239
20240 /* Increase the age counter on each cached compilation unit, and free
20241    any that are too old.  */
20242
20243 static void
20244 age_cached_comp_units (void)
20245 {
20246   struct dwarf2_per_cu_data *per_cu, **last_chain;
20247
20248   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
20249   per_cu = dwarf2_per_objfile->read_in_chain;
20250   while (per_cu != NULL)
20251     {
20252       per_cu->cu->last_used ++;
20253       if (per_cu->cu->last_used <= dwarf2_max_cache_age)
20254         dwarf2_mark (per_cu->cu);
20255       per_cu = per_cu->cu->read_in_chain;
20256     }
20257
20258   per_cu = dwarf2_per_objfile->read_in_chain;
20259   last_chain = &dwarf2_per_objfile->read_in_chain;
20260   while (per_cu != NULL)
20261     {
20262       struct dwarf2_per_cu_data *next_cu;
20263
20264       next_cu = per_cu->cu->read_in_chain;
20265
20266       if (!per_cu->cu->mark)
20267         {
20268           free_heap_comp_unit (per_cu->cu);
20269           *last_chain = next_cu;
20270         }
20271       else
20272         last_chain = &per_cu->cu->read_in_chain;
20273
20274       per_cu = next_cu;
20275     }
20276 }
20277
20278 /* Remove a single compilation unit from the cache.  */
20279
20280 static void
20281 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
20282 {
20283   struct dwarf2_per_cu_data *per_cu, **last_chain;
20284
20285   per_cu = dwarf2_per_objfile->read_in_chain;
20286   last_chain = &dwarf2_per_objfile->read_in_chain;
20287   while (per_cu != NULL)
20288     {
20289       struct dwarf2_per_cu_data *next_cu;
20290
20291       next_cu = per_cu->cu->read_in_chain;
20292
20293       if (per_cu == target_per_cu)
20294         {
20295           free_heap_comp_unit (per_cu->cu);
20296           per_cu->cu = NULL;
20297           *last_chain = next_cu;
20298           break;
20299         }
20300       else
20301         last_chain = &per_cu->cu->read_in_chain;
20302
20303       per_cu = next_cu;
20304     }
20305 }
20306
20307 /* Release all extra memory associated with OBJFILE.  */
20308
20309 void
20310 dwarf2_free_objfile (struct objfile *objfile)
20311 {
20312   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
20313
20314   if (dwarf2_per_objfile == NULL)
20315     return;
20316
20317   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
20318   free_cached_comp_units (NULL);
20319
20320   if (dwarf2_per_objfile->quick_file_names_table)
20321     htab_delete (dwarf2_per_objfile->quick_file_names_table);
20322
20323   /* Everything else should be on the objfile obstack.  */
20324 }
20325
20326 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
20327    We store these in a hash table separate from the DIEs, and preserve them
20328    when the DIEs are flushed out of cache.
20329
20330    The CU "per_cu" pointer is needed because offset alone is not enough to
20331    uniquely identify the type.  A file may have multiple .debug_types sections,
20332    or the type may come from a DWO file.  Furthermore, while it's more logical
20333    to use per_cu->section+offset, with Fission the section with the data is in
20334    the DWO file but we don't know that section at the point we need it.
20335    We have to use something in dwarf2_per_cu_data (or the pointer to it)
20336    because we can enter the lookup routine, get_die_type_at_offset, from
20337    outside this file, and thus won't necessarily have PER_CU->cu.
20338    Fortunately, PER_CU is stable for the life of the objfile.  */
20339
20340 struct dwarf2_per_cu_offset_and_type
20341 {
20342   const struct dwarf2_per_cu_data *per_cu;
20343   sect_offset offset;
20344   struct type *type;
20345 };
20346
20347 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
20348
20349 static hashval_t
20350 per_cu_offset_and_type_hash (const void *item)
20351 {
20352   const struct dwarf2_per_cu_offset_and_type *ofs = item;
20353
20354   return (uintptr_t) ofs->per_cu + ofs->offset.sect_off;
20355 }
20356
20357 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
20358
20359 static int
20360 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
20361 {
20362   const struct dwarf2_per_cu_offset_and_type *ofs_lhs = item_lhs;
20363   const struct dwarf2_per_cu_offset_and_type *ofs_rhs = item_rhs;
20364
20365   return (ofs_lhs->per_cu == ofs_rhs->per_cu
20366           && ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off);
20367 }
20368
20369 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
20370    table if necessary.  For convenience, return TYPE.
20371
20372    The DIEs reading must have careful ordering to:
20373     * Not cause infite loops trying to read in DIEs as a prerequisite for
20374       reading current DIE.
20375     * Not trying to dereference contents of still incompletely read in types
20376       while reading in other DIEs.
20377     * Enable referencing still incompletely read in types just by a pointer to
20378       the type without accessing its fields.
20379
20380    Therefore caller should follow these rules:
20381      * Try to fetch any prerequisite types we may need to build this DIE type
20382        before building the type and calling set_die_type.
20383      * After building type call set_die_type for current DIE as soon as
20384        possible before fetching more types to complete the current type.
20385      * Make the type as complete as possible before fetching more types.  */
20386
20387 static struct type *
20388 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
20389 {
20390   struct dwarf2_per_cu_offset_and_type **slot, ofs;
20391   struct objfile *objfile = cu->objfile;
20392
20393   /* For Ada types, make sure that the gnat-specific data is always
20394      initialized (if not already set).  There are a few types where
20395      we should not be doing so, because the type-specific area is
20396      already used to hold some other piece of info (eg: TYPE_CODE_FLT
20397      where the type-specific area is used to store the floatformat).
20398      But this is not a problem, because the gnat-specific information
20399      is actually not needed for these types.  */
20400   if (need_gnat_info (cu)
20401       && TYPE_CODE (type) != TYPE_CODE_FUNC
20402       && TYPE_CODE (type) != TYPE_CODE_FLT
20403       && !HAVE_GNAT_AUX_INFO (type))
20404     INIT_GNAT_SPECIFIC (type);
20405
20406   if (dwarf2_per_objfile->die_type_hash == NULL)
20407     {
20408       dwarf2_per_objfile->die_type_hash =
20409         htab_create_alloc_ex (127,
20410                               per_cu_offset_and_type_hash,
20411                               per_cu_offset_and_type_eq,
20412                               NULL,
20413                               &objfile->objfile_obstack,
20414                               hashtab_obstack_allocate,
20415                               dummy_obstack_deallocate);
20416     }
20417
20418   ofs.per_cu = cu->per_cu;
20419   ofs.offset = die->offset;
20420   ofs.type = type;
20421   slot = (struct dwarf2_per_cu_offset_and_type **)
20422     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
20423   if (*slot)
20424     complaint (&symfile_complaints,
20425                _("A problem internal to GDB: DIE 0x%x has type already set"),
20426                die->offset.sect_off);
20427   *slot = obstack_alloc (&objfile->objfile_obstack, sizeof (**slot));
20428   **slot = ofs;
20429   return type;
20430 }
20431
20432 /* Look up the type for the die at OFFSET in PER_CU in die_type_hash,
20433    or return NULL if the die does not have a saved type.  */
20434
20435 static struct type *
20436 get_die_type_at_offset (sect_offset offset,
20437                         struct dwarf2_per_cu_data *per_cu)
20438 {
20439   struct dwarf2_per_cu_offset_and_type *slot, ofs;
20440
20441   if (dwarf2_per_objfile->die_type_hash == NULL)
20442     return NULL;
20443
20444   ofs.per_cu = per_cu;
20445   ofs.offset = offset;
20446   slot = htab_find (dwarf2_per_objfile->die_type_hash, &ofs);
20447   if (slot)
20448     return slot->type;
20449   else
20450     return NULL;
20451 }
20452
20453 /* Look up the type for DIE in CU in die_type_hash,
20454    or return NULL if DIE does not have a saved type.  */
20455
20456 static struct type *
20457 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
20458 {
20459   return get_die_type_at_offset (die->offset, cu->per_cu);
20460 }
20461
20462 /* Add a dependence relationship from CU to REF_PER_CU.  */
20463
20464 static void
20465 dwarf2_add_dependence (struct dwarf2_cu *cu,
20466                        struct dwarf2_per_cu_data *ref_per_cu)
20467 {
20468   void **slot;
20469
20470   if (cu->dependencies == NULL)
20471     cu->dependencies
20472       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
20473                               NULL, &cu->comp_unit_obstack,
20474                               hashtab_obstack_allocate,
20475                               dummy_obstack_deallocate);
20476
20477   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
20478   if (*slot == NULL)
20479     *slot = ref_per_cu;
20480 }
20481
20482 /* Subroutine of dwarf2_mark to pass to htab_traverse.
20483    Set the mark field in every compilation unit in the
20484    cache that we must keep because we are keeping CU.  */
20485
20486 static int
20487 dwarf2_mark_helper (void **slot, void *data)
20488 {
20489   struct dwarf2_per_cu_data *per_cu;
20490
20491   per_cu = (struct dwarf2_per_cu_data *) *slot;
20492
20493   /* cu->dependencies references may not yet have been ever read if QUIT aborts
20494      reading of the chain.  As such dependencies remain valid it is not much
20495      useful to track and undo them during QUIT cleanups.  */
20496   if (per_cu->cu == NULL)
20497     return 1;
20498
20499   if (per_cu->cu->mark)
20500     return 1;
20501   per_cu->cu->mark = 1;
20502
20503   if (per_cu->cu->dependencies != NULL)
20504     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
20505
20506   return 1;
20507 }
20508
20509 /* Set the mark field in CU and in every other compilation unit in the
20510    cache that we must keep because we are keeping CU.  */
20511
20512 static void
20513 dwarf2_mark (struct dwarf2_cu *cu)
20514 {
20515   if (cu->mark)
20516     return;
20517   cu->mark = 1;
20518   if (cu->dependencies != NULL)
20519     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
20520 }
20521
20522 static void
20523 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
20524 {
20525   while (per_cu)
20526     {
20527       per_cu->cu->mark = 0;
20528       per_cu = per_cu->cu->read_in_chain;
20529     }
20530 }
20531
20532 /* Trivial hash function for partial_die_info: the hash value of a DIE
20533    is its offset in .debug_info for this objfile.  */
20534
20535 static hashval_t
20536 partial_die_hash (const void *item)
20537 {
20538   const struct partial_die_info *part_die = item;
20539
20540   return part_die->offset.sect_off;
20541 }
20542
20543 /* Trivial comparison function for partial_die_info structures: two DIEs
20544    are equal if they have the same offset.  */
20545
20546 static int
20547 partial_die_eq (const void *item_lhs, const void *item_rhs)
20548 {
20549   const struct partial_die_info *part_die_lhs = item_lhs;
20550   const struct partial_die_info *part_die_rhs = item_rhs;
20551
20552   return part_die_lhs->offset.sect_off == part_die_rhs->offset.sect_off;
20553 }
20554
20555 static struct cmd_list_element *set_dwarf2_cmdlist;
20556 static struct cmd_list_element *show_dwarf2_cmdlist;
20557
20558 static void
20559 set_dwarf2_cmd (char *args, int from_tty)
20560 {
20561   help_list (set_dwarf2_cmdlist, "maintenance set dwarf2 ", -1, gdb_stdout);
20562 }
20563
20564 static void
20565 show_dwarf2_cmd (char *args, int from_tty)
20566 {
20567   cmd_show_list (show_dwarf2_cmdlist, from_tty, "");
20568 }
20569
20570 /* Free data associated with OBJFILE, if necessary.  */
20571
20572 static void
20573 dwarf2_per_objfile_free (struct objfile *objfile, void *d)
20574 {
20575   struct dwarf2_per_objfile *data = d;
20576   int ix;
20577
20578   /* Make sure we don't accidentally use dwarf2_per_objfile while
20579      cleaning up.  */
20580   dwarf2_per_objfile = NULL;
20581
20582   for (ix = 0; ix < data->n_comp_units; ++ix)
20583    VEC_free (dwarf2_per_cu_ptr, data->all_comp_units[ix]->imported_symtabs);
20584
20585   for (ix = 0; ix < data->n_type_units; ++ix)
20586     VEC_free (dwarf2_per_cu_ptr,
20587               data->all_type_units[ix]->per_cu.imported_symtabs);
20588   xfree (data->all_type_units);
20589
20590   VEC_free (dwarf2_section_info_def, data->types);
20591
20592   if (data->dwo_files)
20593     free_dwo_files (data->dwo_files, objfile);
20594   if (data->dwp_file)
20595     gdb_bfd_unref (data->dwp_file->dbfd);
20596
20597   if (data->dwz_file && data->dwz_file->dwz_bfd)
20598     gdb_bfd_unref (data->dwz_file->dwz_bfd);
20599 }
20600
20601 \f
20602 /* The "save gdb-index" command.  */
20603
20604 /* The contents of the hash table we create when building the string
20605    table.  */
20606 struct strtab_entry
20607 {
20608   offset_type offset;
20609   const char *str;
20610 };
20611
20612 /* Hash function for a strtab_entry.
20613
20614    Function is used only during write_hash_table so no index format backward
20615    compatibility is needed.  */
20616
20617 static hashval_t
20618 hash_strtab_entry (const void *e)
20619 {
20620   const struct strtab_entry *entry = e;
20621   return mapped_index_string_hash (INT_MAX, entry->str);
20622 }
20623
20624 /* Equality function for a strtab_entry.  */
20625
20626 static int
20627 eq_strtab_entry (const void *a, const void *b)
20628 {
20629   const struct strtab_entry *ea = a;
20630   const struct strtab_entry *eb = b;
20631   return !strcmp (ea->str, eb->str);
20632 }
20633
20634 /* Create a strtab_entry hash table.  */
20635
20636 static htab_t
20637 create_strtab (void)
20638 {
20639   return htab_create_alloc (100, hash_strtab_entry, eq_strtab_entry,
20640                             xfree, xcalloc, xfree);
20641 }
20642
20643 /* Add a string to the constant pool.  Return the string's offset in
20644    host order.  */
20645
20646 static offset_type
20647 add_string (htab_t table, struct obstack *cpool, const char *str)
20648 {
20649   void **slot;
20650   struct strtab_entry entry;
20651   struct strtab_entry *result;
20652
20653   entry.str = str;
20654   slot = htab_find_slot (table, &entry, INSERT);
20655   if (*slot)
20656     result = *slot;
20657   else
20658     {
20659       result = XNEW (struct strtab_entry);
20660       result->offset = obstack_object_size (cpool);
20661       result->str = str;
20662       obstack_grow_str0 (cpool, str);
20663       *slot = result;
20664     }
20665   return result->offset;
20666 }
20667
20668 /* An entry in the symbol table.  */
20669 struct symtab_index_entry
20670 {
20671   /* The name of the symbol.  */
20672   const char *name;
20673   /* The offset of the name in the constant pool.  */
20674   offset_type index_offset;
20675   /* A sorted vector of the indices of all the CUs that hold an object
20676      of this name.  */
20677   VEC (offset_type) *cu_indices;
20678 };
20679
20680 /* The symbol table.  This is a power-of-2-sized hash table.  */
20681 struct mapped_symtab
20682 {
20683   offset_type n_elements;
20684   offset_type size;
20685   struct symtab_index_entry **data;
20686 };
20687
20688 /* Hash function for a symtab_index_entry.  */
20689
20690 static hashval_t
20691 hash_symtab_entry (const void *e)
20692 {
20693   const struct symtab_index_entry *entry = e;
20694   return iterative_hash (VEC_address (offset_type, entry->cu_indices),
20695                          sizeof (offset_type) * VEC_length (offset_type,
20696                                                             entry->cu_indices),
20697                          0);
20698 }
20699
20700 /* Equality function for a symtab_index_entry.  */
20701
20702 static int
20703 eq_symtab_entry (const void *a, const void *b)
20704 {
20705   const struct symtab_index_entry *ea = a;
20706   const struct symtab_index_entry *eb = b;
20707   int len = VEC_length (offset_type, ea->cu_indices);
20708   if (len != VEC_length (offset_type, eb->cu_indices))
20709     return 0;
20710   return !memcmp (VEC_address (offset_type, ea->cu_indices),
20711                   VEC_address (offset_type, eb->cu_indices),
20712                   sizeof (offset_type) * len);
20713 }
20714
20715 /* Destroy a symtab_index_entry.  */
20716
20717 static void
20718 delete_symtab_entry (void *p)
20719 {
20720   struct symtab_index_entry *entry = p;
20721   VEC_free (offset_type, entry->cu_indices);
20722   xfree (entry);
20723 }
20724
20725 /* Create a hash table holding symtab_index_entry objects.  */
20726
20727 static htab_t
20728 create_symbol_hash_table (void)
20729 {
20730   return htab_create_alloc (100, hash_symtab_entry, eq_symtab_entry,
20731                             delete_symtab_entry, xcalloc, xfree);
20732 }
20733
20734 /* Create a new mapped symtab object.  */
20735
20736 static struct mapped_symtab *
20737 create_mapped_symtab (void)
20738 {
20739   struct mapped_symtab *symtab = XNEW (struct mapped_symtab);
20740   symtab->n_elements = 0;
20741   symtab->size = 1024;
20742   symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
20743   return symtab;
20744 }
20745
20746 /* Destroy a mapped_symtab.  */
20747
20748 static void
20749 cleanup_mapped_symtab (void *p)
20750 {
20751   struct mapped_symtab *symtab = p;
20752   /* The contents of the array are freed when the other hash table is
20753      destroyed.  */
20754   xfree (symtab->data);
20755   xfree (symtab);
20756 }
20757
20758 /* Find a slot in SYMTAB for the symbol NAME.  Returns a pointer to
20759    the slot.
20760    
20761    Function is used only during write_hash_table so no index format backward
20762    compatibility is needed.  */
20763
20764 static struct symtab_index_entry **
20765 find_slot (struct mapped_symtab *symtab, const char *name)
20766 {
20767   offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
20768
20769   index = hash & (symtab->size - 1);
20770   step = ((hash * 17) & (symtab->size - 1)) | 1;
20771
20772   for (;;)
20773     {
20774       if (!symtab->data[index] || !strcmp (name, symtab->data[index]->name))
20775         return &symtab->data[index];
20776       index = (index + step) & (symtab->size - 1);
20777     }
20778 }
20779
20780 /* Expand SYMTAB's hash table.  */
20781
20782 static void
20783 hash_expand (struct mapped_symtab *symtab)
20784 {
20785   offset_type old_size = symtab->size;
20786   offset_type i;
20787   struct symtab_index_entry **old_entries = symtab->data;
20788
20789   symtab->size *= 2;
20790   symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
20791
20792   for (i = 0; i < old_size; ++i)
20793     {
20794       if (old_entries[i])
20795         {
20796           struct symtab_index_entry **slot = find_slot (symtab,
20797                                                         old_entries[i]->name);
20798           *slot = old_entries[i];
20799         }
20800     }
20801
20802   xfree (old_entries);
20803 }
20804
20805 /* Add an entry to SYMTAB.  NAME is the name of the symbol.
20806    CU_INDEX is the index of the CU in which the symbol appears.
20807    IS_STATIC is one if the symbol is static, otherwise zero (global).  */
20808
20809 static void
20810 add_index_entry (struct mapped_symtab *symtab, const char *name,
20811                  int is_static, gdb_index_symbol_kind kind,
20812                  offset_type cu_index)
20813 {
20814   struct symtab_index_entry **slot;
20815   offset_type cu_index_and_attrs;
20816
20817   ++symtab->n_elements;
20818   if (4 * symtab->n_elements / 3 >= symtab->size)
20819     hash_expand (symtab);
20820
20821   slot = find_slot (symtab, name);
20822   if (!*slot)
20823     {
20824       *slot = XNEW (struct symtab_index_entry);
20825       (*slot)->name = name;
20826       /* index_offset is set later.  */
20827       (*slot)->cu_indices = NULL;
20828     }
20829
20830   cu_index_and_attrs = 0;
20831   DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
20832   DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
20833   DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
20834
20835   /* We don't want to record an index value twice as we want to avoid the
20836      duplication.
20837      We process all global symbols and then all static symbols
20838      (which would allow us to avoid the duplication by only having to check
20839      the last entry pushed), but a symbol could have multiple kinds in one CU.
20840      To keep things simple we don't worry about the duplication here and
20841      sort and uniqufy the list after we've processed all symbols.  */
20842   VEC_safe_push (offset_type, (*slot)->cu_indices, cu_index_and_attrs);
20843 }
20844
20845 /* qsort helper routine for uniquify_cu_indices.  */
20846
20847 static int
20848 offset_type_compare (const void *ap, const void *bp)
20849 {
20850   offset_type a = *(offset_type *) ap;
20851   offset_type b = *(offset_type *) bp;
20852
20853   return (a > b) - (b > a);
20854 }
20855
20856 /* Sort and remove duplicates of all symbols' cu_indices lists.  */
20857
20858 static void
20859 uniquify_cu_indices (struct mapped_symtab *symtab)
20860 {
20861   int i;
20862
20863   for (i = 0; i < symtab->size; ++i)
20864     {
20865       struct symtab_index_entry *entry = symtab->data[i];
20866
20867       if (entry
20868           && entry->cu_indices != NULL)
20869         {
20870           unsigned int next_to_insert, next_to_check;
20871           offset_type last_value;
20872
20873           qsort (VEC_address (offset_type, entry->cu_indices),
20874                  VEC_length (offset_type, entry->cu_indices),
20875                  sizeof (offset_type), offset_type_compare);
20876
20877           last_value = VEC_index (offset_type, entry->cu_indices, 0);
20878           next_to_insert = 1;
20879           for (next_to_check = 1;
20880                next_to_check < VEC_length (offset_type, entry->cu_indices);
20881                ++next_to_check)
20882             {
20883               if (VEC_index (offset_type, entry->cu_indices, next_to_check)
20884                   != last_value)
20885                 {
20886                   last_value = VEC_index (offset_type, entry->cu_indices,
20887                                           next_to_check);
20888                   VEC_replace (offset_type, entry->cu_indices, next_to_insert,
20889                                last_value);
20890                   ++next_to_insert;
20891                 }
20892             }
20893           VEC_truncate (offset_type, entry->cu_indices, next_to_insert);
20894         }
20895     }
20896 }
20897
20898 /* Add a vector of indices to the constant pool.  */
20899
20900 static offset_type
20901 add_indices_to_cpool (htab_t symbol_hash_table, struct obstack *cpool,
20902                       struct symtab_index_entry *entry)
20903 {
20904   void **slot;
20905
20906   slot = htab_find_slot (symbol_hash_table, entry, INSERT);
20907   if (!*slot)
20908     {
20909       offset_type len = VEC_length (offset_type, entry->cu_indices);
20910       offset_type val = MAYBE_SWAP (len);
20911       offset_type iter;
20912       int i;
20913
20914       *slot = entry;
20915       entry->index_offset = obstack_object_size (cpool);
20916
20917       obstack_grow (cpool, &val, sizeof (val));
20918       for (i = 0;
20919            VEC_iterate (offset_type, entry->cu_indices, i, iter);
20920            ++i)
20921         {
20922           val = MAYBE_SWAP (iter);
20923           obstack_grow (cpool, &val, sizeof (val));
20924         }
20925     }
20926   else
20927     {
20928       struct symtab_index_entry *old_entry = *slot;
20929       entry->index_offset = old_entry->index_offset;
20930       entry = old_entry;
20931     }
20932   return entry->index_offset;
20933 }
20934
20935 /* Write the mapped hash table SYMTAB to the obstack OUTPUT, with
20936    constant pool entries going into the obstack CPOOL.  */
20937
20938 static void
20939 write_hash_table (struct mapped_symtab *symtab,
20940                   struct obstack *output, struct obstack *cpool)
20941 {
20942   offset_type i;
20943   htab_t symbol_hash_table;
20944   htab_t str_table;
20945
20946   symbol_hash_table = create_symbol_hash_table ();
20947   str_table = create_strtab ();
20948
20949   /* We add all the index vectors to the constant pool first, to
20950      ensure alignment is ok.  */
20951   for (i = 0; i < symtab->size; ++i)
20952     {
20953       if (symtab->data[i])
20954         add_indices_to_cpool (symbol_hash_table, cpool, symtab->data[i]);
20955     }
20956
20957   /* Now write out the hash table.  */
20958   for (i = 0; i < symtab->size; ++i)
20959     {
20960       offset_type str_off, vec_off;
20961
20962       if (symtab->data[i])
20963         {
20964           str_off = add_string (str_table, cpool, symtab->data[i]->name);
20965           vec_off = symtab->data[i]->index_offset;
20966         }
20967       else
20968         {
20969           /* While 0 is a valid constant pool index, it is not valid
20970              to have 0 for both offsets.  */
20971           str_off = 0;
20972           vec_off = 0;
20973         }
20974
20975       str_off = MAYBE_SWAP (str_off);
20976       vec_off = MAYBE_SWAP (vec_off);
20977
20978       obstack_grow (output, &str_off, sizeof (str_off));
20979       obstack_grow (output, &vec_off, sizeof (vec_off));
20980     }
20981
20982   htab_delete (str_table);
20983   htab_delete (symbol_hash_table);
20984 }
20985
20986 /* Struct to map psymtab to CU index in the index file.  */
20987 struct psymtab_cu_index_map
20988 {
20989   struct partial_symtab *psymtab;
20990   unsigned int cu_index;
20991 };
20992
20993 static hashval_t
20994 hash_psymtab_cu_index (const void *item)
20995 {
20996   const struct psymtab_cu_index_map *map = item;
20997
20998   return htab_hash_pointer (map->psymtab);
20999 }
21000
21001 static int
21002 eq_psymtab_cu_index (const void *item_lhs, const void *item_rhs)
21003 {
21004   const struct psymtab_cu_index_map *lhs = item_lhs;
21005   const struct psymtab_cu_index_map *rhs = item_rhs;
21006
21007   return lhs->psymtab == rhs->psymtab;
21008 }
21009
21010 /* Helper struct for building the address table.  */
21011 struct addrmap_index_data
21012 {
21013   struct objfile *objfile;
21014   struct obstack *addr_obstack;
21015   htab_t cu_index_htab;
21016
21017   /* Non-zero if the previous_* fields are valid.
21018      We can't write an entry until we see the next entry (since it is only then
21019      that we know the end of the entry).  */
21020   int previous_valid;
21021   /* Index of the CU in the table of all CUs in the index file.  */
21022   unsigned int previous_cu_index;
21023   /* Start address of the CU.  */
21024   CORE_ADDR previous_cu_start;
21025 };
21026
21027 /* Write an address entry to OBSTACK.  */
21028
21029 static void
21030 add_address_entry (struct objfile *objfile, struct obstack *obstack,
21031                    CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
21032 {
21033   offset_type cu_index_to_write;
21034   gdb_byte addr[8];
21035   CORE_ADDR baseaddr;
21036
21037   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21038
21039   store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, start - baseaddr);
21040   obstack_grow (obstack, addr, 8);
21041   store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, end - baseaddr);
21042   obstack_grow (obstack, addr, 8);
21043   cu_index_to_write = MAYBE_SWAP (cu_index);
21044   obstack_grow (obstack, &cu_index_to_write, sizeof (offset_type));
21045 }
21046
21047 /* Worker function for traversing an addrmap to build the address table.  */
21048
21049 static int
21050 add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
21051 {
21052   struct addrmap_index_data *data = datap;
21053   struct partial_symtab *pst = obj;
21054
21055   if (data->previous_valid)
21056     add_address_entry (data->objfile, data->addr_obstack,
21057                        data->previous_cu_start, start_addr,
21058                        data->previous_cu_index);
21059
21060   data->previous_cu_start = start_addr;
21061   if (pst != NULL)
21062     {
21063       struct psymtab_cu_index_map find_map, *map;
21064       find_map.psymtab = pst;
21065       map = htab_find (data->cu_index_htab, &find_map);
21066       gdb_assert (map != NULL);
21067       data->previous_cu_index = map->cu_index;
21068       data->previous_valid = 1;
21069     }
21070   else
21071       data->previous_valid = 0;
21072
21073   return 0;
21074 }
21075
21076 /* Write OBJFILE's address map to OBSTACK.
21077    CU_INDEX_HTAB is used to map addrmap entries to their CU indices
21078    in the index file.  */
21079
21080 static void
21081 write_address_map (struct objfile *objfile, struct obstack *obstack,
21082                    htab_t cu_index_htab)
21083 {
21084   struct addrmap_index_data addrmap_index_data;
21085
21086   /* When writing the address table, we have to cope with the fact that
21087      the addrmap iterator only provides the start of a region; we have to
21088      wait until the next invocation to get the start of the next region.  */
21089
21090   addrmap_index_data.objfile = objfile;
21091   addrmap_index_data.addr_obstack = obstack;
21092   addrmap_index_data.cu_index_htab = cu_index_htab;
21093   addrmap_index_data.previous_valid = 0;
21094
21095   addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
21096                    &addrmap_index_data);
21097
21098   /* It's highly unlikely the last entry (end address = 0xff...ff)
21099      is valid, but we should still handle it.
21100      The end address is recorded as the start of the next region, but that
21101      doesn't work here.  To cope we pass 0xff...ff, this is a rare situation
21102      anyway.  */
21103   if (addrmap_index_data.previous_valid)
21104     add_address_entry (objfile, obstack,
21105                        addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
21106                        addrmap_index_data.previous_cu_index);
21107 }
21108
21109 /* Return the symbol kind of PSYM.  */
21110
21111 static gdb_index_symbol_kind
21112 symbol_kind (struct partial_symbol *psym)
21113 {
21114   domain_enum domain = PSYMBOL_DOMAIN (psym);
21115   enum address_class aclass = PSYMBOL_CLASS (psym);
21116
21117   switch (domain)
21118     {
21119     case VAR_DOMAIN:
21120       switch (aclass)
21121         {
21122         case LOC_BLOCK:
21123           return GDB_INDEX_SYMBOL_KIND_FUNCTION;
21124         case LOC_TYPEDEF:
21125           return GDB_INDEX_SYMBOL_KIND_TYPE;
21126         case LOC_COMPUTED:
21127         case LOC_CONST_BYTES:
21128         case LOC_OPTIMIZED_OUT:
21129         case LOC_STATIC:
21130           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
21131         case LOC_CONST:
21132           /* Note: It's currently impossible to recognize psyms as enum values
21133              short of reading the type info.  For now punt.  */
21134           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
21135         default:
21136           /* There are other LOC_FOO values that one might want to classify
21137              as variables, but dwarf2read.c doesn't currently use them.  */
21138           return GDB_INDEX_SYMBOL_KIND_OTHER;
21139         }
21140     case STRUCT_DOMAIN:
21141       return GDB_INDEX_SYMBOL_KIND_TYPE;
21142     default:
21143       return GDB_INDEX_SYMBOL_KIND_OTHER;
21144     }
21145 }
21146
21147 /* Add a list of partial symbols to SYMTAB.  */
21148
21149 static void
21150 write_psymbols (struct mapped_symtab *symtab,
21151                 htab_t psyms_seen,
21152                 struct partial_symbol **psymp,
21153                 int count,
21154                 offset_type cu_index,
21155                 int is_static)
21156 {
21157   for (; count-- > 0; ++psymp)
21158     {
21159       struct partial_symbol *psym = *psymp;
21160       void **slot;
21161
21162       if (SYMBOL_LANGUAGE (psym) == language_ada)
21163         error (_("Ada is not currently supported by the index"));
21164
21165       /* Only add a given psymbol once.  */
21166       slot = htab_find_slot (psyms_seen, psym, INSERT);
21167       if (!*slot)
21168         {
21169           gdb_index_symbol_kind kind = symbol_kind (psym);
21170
21171           *slot = psym;
21172           add_index_entry (symtab, SYMBOL_SEARCH_NAME (psym),
21173                            is_static, kind, cu_index);
21174         }
21175     }
21176 }
21177
21178 /* Write the contents of an ("unfinished") obstack to FILE.  Throw an
21179    exception if there is an error.  */
21180
21181 static void
21182 write_obstack (FILE *file, struct obstack *obstack)
21183 {
21184   if (fwrite (obstack_base (obstack), 1, obstack_object_size (obstack),
21185               file)
21186       != obstack_object_size (obstack))
21187     error (_("couldn't data write to file"));
21188 }
21189
21190 /* Unlink a file if the argument is not NULL.  */
21191
21192 static void
21193 unlink_if_set (void *p)
21194 {
21195   char **filename = p;
21196   if (*filename)
21197     unlink (*filename);
21198 }
21199
21200 /* A helper struct used when iterating over debug_types.  */
21201 struct signatured_type_index_data
21202 {
21203   struct objfile *objfile;
21204   struct mapped_symtab *symtab;
21205   struct obstack *types_list;
21206   htab_t psyms_seen;
21207   int cu_index;
21208 };
21209
21210 /* A helper function that writes a single signatured_type to an
21211    obstack.  */
21212
21213 static int
21214 write_one_signatured_type (void **slot, void *d)
21215 {
21216   struct signatured_type_index_data *info = d;
21217   struct signatured_type *entry = (struct signatured_type *) *slot;
21218   struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
21219   gdb_byte val[8];
21220
21221   write_psymbols (info->symtab,
21222                   info->psyms_seen,
21223                   info->objfile->global_psymbols.list
21224                   + psymtab->globals_offset,
21225                   psymtab->n_global_syms, info->cu_index,
21226                   0);
21227   write_psymbols (info->symtab,
21228                   info->psyms_seen,
21229                   info->objfile->static_psymbols.list
21230                   + psymtab->statics_offset,
21231                   psymtab->n_static_syms, info->cu_index,
21232                   1);
21233
21234   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
21235                           entry->per_cu.offset.sect_off);
21236   obstack_grow (info->types_list, val, 8);
21237   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
21238                           entry->type_offset_in_tu.cu_off);
21239   obstack_grow (info->types_list, val, 8);
21240   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->signature);
21241   obstack_grow (info->types_list, val, 8);
21242
21243   ++info->cu_index;
21244
21245   return 1;
21246 }
21247
21248 /* Recurse into all "included" dependencies and write their symbols as
21249    if they appeared in this psymtab.  */
21250
21251 static void
21252 recursively_write_psymbols (struct objfile *objfile,
21253                             struct partial_symtab *psymtab,
21254                             struct mapped_symtab *symtab,
21255                             htab_t psyms_seen,
21256                             offset_type cu_index)
21257 {
21258   int i;
21259
21260   for (i = 0; i < psymtab->number_of_dependencies; ++i)
21261     if (psymtab->dependencies[i]->user != NULL)
21262       recursively_write_psymbols (objfile, psymtab->dependencies[i],
21263                                   symtab, psyms_seen, cu_index);
21264
21265   write_psymbols (symtab,
21266                   psyms_seen,
21267                   objfile->global_psymbols.list + psymtab->globals_offset,
21268                   psymtab->n_global_syms, cu_index,
21269                   0);
21270   write_psymbols (symtab,
21271                   psyms_seen,
21272                   objfile->static_psymbols.list + psymtab->statics_offset,
21273                   psymtab->n_static_syms, cu_index,
21274                   1);
21275 }
21276
21277 /* Create an index file for OBJFILE in the directory DIR.  */
21278
21279 static void
21280 write_psymtabs_to_index (struct objfile *objfile, const char *dir)
21281 {
21282   struct cleanup *cleanup;
21283   char *filename, *cleanup_filename;
21284   struct obstack contents, addr_obstack, constant_pool, symtab_obstack;
21285   struct obstack cu_list, types_cu_list;
21286   int i;
21287   FILE *out_file;
21288   struct mapped_symtab *symtab;
21289   offset_type val, size_of_contents, total_len;
21290   struct stat st;
21291   htab_t psyms_seen;
21292   htab_t cu_index_htab;
21293   struct psymtab_cu_index_map *psymtab_cu_index_map;
21294
21295   if (!objfile->psymtabs || !objfile->psymtabs_addrmap)
21296     return;
21297
21298   if (dwarf2_per_objfile->using_index)
21299     error (_("Cannot use an index to create the index"));
21300
21301   if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) > 1)
21302     error (_("Cannot make an index when the file has multiple .debug_types sections"));
21303
21304   if (stat (objfile->name, &st) < 0)
21305     perror_with_name (objfile->name);
21306
21307   filename = concat (dir, SLASH_STRING, lbasename (objfile->name),
21308                      INDEX_SUFFIX, (char *) NULL);
21309   cleanup = make_cleanup (xfree, filename);
21310
21311   out_file = gdb_fopen_cloexec (filename, "wb");
21312   if (!out_file)
21313     error (_("Can't open `%s' for writing"), filename);
21314
21315   cleanup_filename = filename;
21316   make_cleanup (unlink_if_set, &cleanup_filename);
21317
21318   symtab = create_mapped_symtab ();
21319   make_cleanup (cleanup_mapped_symtab, symtab);
21320
21321   obstack_init (&addr_obstack);
21322   make_cleanup_obstack_free (&addr_obstack);
21323
21324   obstack_init (&cu_list);
21325   make_cleanup_obstack_free (&cu_list);
21326
21327   obstack_init (&types_cu_list);
21328   make_cleanup_obstack_free (&types_cu_list);
21329
21330   psyms_seen = htab_create_alloc (100, htab_hash_pointer, htab_eq_pointer,
21331                                   NULL, xcalloc, xfree);
21332   make_cleanup_htab_delete (psyms_seen);
21333
21334   /* While we're scanning CU's create a table that maps a psymtab pointer
21335      (which is what addrmap records) to its index (which is what is recorded
21336      in the index file).  This will later be needed to write the address
21337      table.  */
21338   cu_index_htab = htab_create_alloc (100,
21339                                      hash_psymtab_cu_index,
21340                                      eq_psymtab_cu_index,
21341                                      NULL, xcalloc, xfree);
21342   make_cleanup_htab_delete (cu_index_htab);
21343   psymtab_cu_index_map = (struct psymtab_cu_index_map *)
21344     xmalloc (sizeof (struct psymtab_cu_index_map)
21345              * dwarf2_per_objfile->n_comp_units);
21346   make_cleanup (xfree, psymtab_cu_index_map);
21347
21348   /* The CU list is already sorted, so we don't need to do additional
21349      work here.  Also, the debug_types entries do not appear in
21350      all_comp_units, but only in their own hash table.  */
21351   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
21352     {
21353       struct dwarf2_per_cu_data *per_cu
21354         = dwarf2_per_objfile->all_comp_units[i];
21355       struct partial_symtab *psymtab = per_cu->v.psymtab;
21356       gdb_byte val[8];
21357       struct psymtab_cu_index_map *map;
21358       void **slot;
21359
21360       /* CU of a shared file from 'dwz -m' may be unused by this main file.
21361          It may be referenced from a local scope but in such case it does not
21362          need to be present in .gdb_index.  */
21363       if (psymtab == NULL)
21364         continue;
21365
21366       if (psymtab->user == NULL)
21367         recursively_write_psymbols (objfile, psymtab, symtab, psyms_seen, i);
21368
21369       map = &psymtab_cu_index_map[i];
21370       map->psymtab = psymtab;
21371       map->cu_index = i;
21372       slot = htab_find_slot (cu_index_htab, map, INSERT);
21373       gdb_assert (slot != NULL);
21374       gdb_assert (*slot == NULL);
21375       *slot = map;
21376
21377       store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
21378                               per_cu->offset.sect_off);
21379       obstack_grow (&cu_list, val, 8);
21380       store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, per_cu->length);
21381       obstack_grow (&cu_list, val, 8);
21382     }
21383
21384   /* Dump the address map.  */
21385   write_address_map (objfile, &addr_obstack, cu_index_htab);
21386
21387   /* Write out the .debug_type entries, if any.  */
21388   if (dwarf2_per_objfile->signatured_types)
21389     {
21390       struct signatured_type_index_data sig_data;
21391
21392       sig_data.objfile = objfile;
21393       sig_data.symtab = symtab;
21394       sig_data.types_list = &types_cu_list;
21395       sig_data.psyms_seen = psyms_seen;
21396       sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
21397       htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
21398                               write_one_signatured_type, &sig_data);
21399     }
21400
21401   /* Now that we've processed all symbols we can shrink their cu_indices
21402      lists.  */
21403   uniquify_cu_indices (symtab);
21404
21405   obstack_init (&constant_pool);
21406   make_cleanup_obstack_free (&constant_pool);
21407   obstack_init (&symtab_obstack);
21408   make_cleanup_obstack_free (&symtab_obstack);
21409   write_hash_table (symtab, &symtab_obstack, &constant_pool);
21410
21411   obstack_init (&contents);
21412   make_cleanup_obstack_free (&contents);
21413   size_of_contents = 6 * sizeof (offset_type);
21414   total_len = size_of_contents;
21415
21416   /* The version number.  */
21417   val = MAYBE_SWAP (8);
21418   obstack_grow (&contents, &val, sizeof (val));
21419
21420   /* The offset of the CU list from the start of the file.  */
21421   val = MAYBE_SWAP (total_len);
21422   obstack_grow (&contents, &val, sizeof (val));
21423   total_len += obstack_object_size (&cu_list);
21424
21425   /* The offset of the types CU list from the start of the file.  */
21426   val = MAYBE_SWAP (total_len);
21427   obstack_grow (&contents, &val, sizeof (val));
21428   total_len += obstack_object_size (&types_cu_list);
21429
21430   /* The offset of the address table from the start of the file.  */
21431   val = MAYBE_SWAP (total_len);
21432   obstack_grow (&contents, &val, sizeof (val));
21433   total_len += obstack_object_size (&addr_obstack);
21434
21435   /* The offset of the symbol table from the start of the file.  */
21436   val = MAYBE_SWAP (total_len);
21437   obstack_grow (&contents, &val, sizeof (val));
21438   total_len += obstack_object_size (&symtab_obstack);
21439
21440   /* The offset of the constant pool from the start of the file.  */
21441   val = MAYBE_SWAP (total_len);
21442   obstack_grow (&contents, &val, sizeof (val));
21443   total_len += obstack_object_size (&constant_pool);
21444
21445   gdb_assert (obstack_object_size (&contents) == size_of_contents);
21446
21447   write_obstack (out_file, &contents);
21448   write_obstack (out_file, &cu_list);
21449   write_obstack (out_file, &types_cu_list);
21450   write_obstack (out_file, &addr_obstack);
21451   write_obstack (out_file, &symtab_obstack);
21452   write_obstack (out_file, &constant_pool);
21453
21454   fclose (out_file);
21455
21456   /* We want to keep the file, so we set cleanup_filename to NULL
21457      here.  See unlink_if_set.  */
21458   cleanup_filename = NULL;
21459
21460   do_cleanups (cleanup);
21461 }
21462
21463 /* Implementation of the `save gdb-index' command.
21464    
21465    Note that the file format used by this command is documented in the
21466    GDB manual.  Any changes here must be documented there.  */
21467
21468 static void
21469 save_gdb_index_command (char *arg, int from_tty)
21470 {
21471   struct objfile *objfile;
21472
21473   if (!arg || !*arg)
21474     error (_("usage: save gdb-index DIRECTORY"));
21475
21476   ALL_OBJFILES (objfile)
21477   {
21478     struct stat st;
21479
21480     /* If the objfile does not correspond to an actual file, skip it.  */
21481     if (stat (objfile->name, &st) < 0)
21482       continue;
21483
21484     dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
21485     if (dwarf2_per_objfile)
21486       {
21487         volatile struct gdb_exception except;
21488
21489         TRY_CATCH (except, RETURN_MASK_ERROR)
21490           {
21491             write_psymtabs_to_index (objfile, arg);
21492           }
21493         if (except.reason < 0)
21494           exception_fprintf (gdb_stderr, except,
21495                              _("Error while writing index for `%s': "),
21496                              objfile->name);
21497       }
21498   }
21499 }
21500
21501 \f
21502
21503 int dwarf2_always_disassemble;
21504
21505 static void
21506 show_dwarf2_always_disassemble (struct ui_file *file, int from_tty,
21507                                 struct cmd_list_element *c, const char *value)
21508 {
21509   fprintf_filtered (file,
21510                     _("Whether to always disassemble "
21511                       "DWARF expressions is %s.\n"),
21512                     value);
21513 }
21514
21515 static void
21516 show_check_physname (struct ui_file *file, int from_tty,
21517                      struct cmd_list_element *c, const char *value)
21518 {
21519   fprintf_filtered (file,
21520                     _("Whether to check \"physname\" is %s.\n"),
21521                     value);
21522 }
21523
21524 void _initialize_dwarf2_read (void);
21525
21526 void
21527 _initialize_dwarf2_read (void)
21528 {
21529   struct cmd_list_element *c;
21530
21531   dwarf2_objfile_data_key
21532     = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
21533
21534   add_prefix_cmd ("dwarf2", class_maintenance, set_dwarf2_cmd, _("\
21535 Set DWARF 2 specific variables.\n\
21536 Configure DWARF 2 variables such as the cache size"),
21537                   &set_dwarf2_cmdlist, "maintenance set dwarf2 ",
21538                   0/*allow-unknown*/, &maintenance_set_cmdlist);
21539
21540   add_prefix_cmd ("dwarf2", class_maintenance, show_dwarf2_cmd, _("\
21541 Show DWARF 2 specific variables\n\
21542 Show DWARF 2 variables such as the cache size"),
21543                   &show_dwarf2_cmdlist, "maintenance show dwarf2 ",
21544                   0/*allow-unknown*/, &maintenance_show_cmdlist);
21545
21546   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
21547                             &dwarf2_max_cache_age, _("\
21548 Set the upper bound on the age of cached dwarf2 compilation units."), _("\
21549 Show the upper bound on the age of cached dwarf2 compilation units."), _("\
21550 A higher limit means that cached compilation units will be stored\n\
21551 in memory longer, and more total memory will be used.  Zero disables\n\
21552 caching, which can slow down startup."),
21553                             NULL,
21554                             show_dwarf2_max_cache_age,
21555                             &set_dwarf2_cmdlist,
21556                             &show_dwarf2_cmdlist);
21557
21558   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
21559                            &dwarf2_always_disassemble, _("\
21560 Set whether `info address' always disassembles DWARF expressions."), _("\
21561 Show whether `info address' always disassembles DWARF expressions."), _("\
21562 When enabled, DWARF expressions are always printed in an assembly-like\n\
21563 syntax.  When disabled, expressions will be printed in a more\n\
21564 conversational style, when possible."),
21565                            NULL,
21566                            show_dwarf2_always_disassemble,
21567                            &set_dwarf2_cmdlist,
21568                            &show_dwarf2_cmdlist);
21569
21570   add_setshow_boolean_cmd ("dwarf2-read", no_class, &dwarf2_read_debug, _("\
21571 Set debugging of the dwarf2 reader."), _("\
21572 Show debugging of the dwarf2 reader."), _("\
21573 When enabled, debugging messages are printed during dwarf2 reading\n\
21574 and symtab expansion."),
21575                             NULL,
21576                             NULL,
21577                             &setdebuglist, &showdebuglist);
21578
21579   add_setshow_zuinteger_cmd ("dwarf2-die", no_class, &dwarf2_die_debug, _("\
21580 Set debugging of the dwarf2 DIE reader."), _("\
21581 Show debugging of the dwarf2 DIE reader."), _("\
21582 When enabled (non-zero), DIEs are dumped after they are read in.\n\
21583 The value is the maximum depth to print."),
21584                              NULL,
21585                              NULL,
21586                              &setdebuglist, &showdebuglist);
21587
21588   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
21589 Set cross-checking of \"physname\" code against demangler."), _("\
21590 Show cross-checking of \"physname\" code against demangler."), _("\
21591 When enabled, GDB's internal \"physname\" code is checked against\n\
21592 the demangler."),
21593                            NULL, show_check_physname,
21594                            &setdebuglist, &showdebuglist);
21595
21596   add_setshow_boolean_cmd ("use-deprecated-index-sections",
21597                            no_class, &use_deprecated_index_sections, _("\
21598 Set whether to use deprecated gdb_index sections."), _("\
21599 Show whether to use deprecated gdb_index sections."), _("\
21600 When enabled, deprecated .gdb_index sections are used anyway.\n\
21601 Normally they are ignored either because of a missing feature or\n\
21602 performance issue.\n\
21603 Warning: This option must be enabled before gdb reads the file."),
21604                            NULL,
21605                            NULL,
21606                            &setlist, &showlist);
21607
21608   c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
21609                _("\
21610 Save a gdb-index file.\n\
21611 Usage: save gdb-index DIRECTORY"),
21612                &save_cmdlist);
21613   set_cmd_completer (c, filename_completer);
21614
21615   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
21616                                                         &dwarf2_locexpr_funcs);
21617   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
21618                                                         &dwarf2_loclist_funcs);
21619
21620   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
21621                                         &dwarf2_block_frame_base_locexpr_funcs);
21622   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
21623                                         &dwarf2_block_frame_base_loclist_funcs);
21624 }