Introduce and use gdb::unlinker
[deliverable/binutils-gdb.git] / gdb / dwarf2read.c
CommitLineData
c906108c 1/* DWARF 2 debugging format support for GDB.
917c78fc 2
61baf725 3 Copyright (C) 1994-2017 Free Software Foundation, Inc.
c906108c
SS
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
7ce59000 10 support.
c906108c 11
c5aa993b 12 This file is part of GDB.
c906108c 13
c5aa993b
JM
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
a9762ec7
JB
16 the Free Software Foundation; either version 3 of the License, or
17 (at your option) any later version.
c906108c 18
a9762ec7
JB
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.
c906108c 23
c5aa993b 24 You should have received a copy of the GNU General Public License
a9762ec7 25 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c 26
21b2bd31
DE
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
c906108c
SS
31#include "defs.h"
32#include "bfd.h"
80626a55 33#include "elf-bfd.h"
c906108c
SS
34#include "symtab.h"
35#include "gdbtypes.h"
c906108c 36#include "objfiles.h"
fa8f86ff 37#include "dwarf2.h"
c906108c
SS
38#include "buildsym.h"
39#include "demangle.h"
50f182aa 40#include "gdb-demangle.h"
c906108c 41#include "expression.h"
d5166ae1 42#include "filenames.h" /* for DOSish file names */
2e276125 43#include "macrotab.h"
c906108c
SS
44#include "language.h"
45#include "complaints.h"
357e46e7 46#include "bcache.h"
4c2df51b
DJ
47#include "dwarf2expr.h"
48#include "dwarf2loc.h"
9219021c 49#include "cp-support.h"
72bf9492 50#include "hashtab.h"
ae038cb0
DJ
51#include "command.h"
52#include "gdbcmd.h"
edb3359d 53#include "block.h"
ff013f42 54#include "addrmap.h"
94af9270 55#include "typeprint.h"
ccefe4c4 56#include "psympriv.h"
53ce3c39 57#include <sys/stat.h>
96d19272 58#include "completer.h"
34eaf542 59#include "vec.h"
98bfdba5 60#include "c-lang.h"
a766d390 61#include "go-lang.h"
98bfdba5 62#include "valprint.h"
3019eac3 63#include "gdbcore.h" /* for gnutarget */
156942c7 64#include "gdb/gdb-index.h"
60d5a603 65#include <ctype.h>
cbb099e8 66#include "gdb_bfd.h"
4357ac6c 67#include "f-lang.h"
05cba821 68#include "source.h"
614c279d 69#include "filestuff.h"
dc294be5 70#include "build-id.h"
22cee43f 71#include "namespace.h"
bef155c3 72#include "common/gdb_unlinker.h"
4c2df51b 73
c906108c 74#include <fcntl.h>
c906108c 75#include <sys/types.h>
325fac50 76#include <algorithm>
d8151005 77
34eaf542
TT
78typedef struct symbol *symbolp;
79DEF_VEC_P (symbolp);
80
73be47f5
DE
81/* When == 1, print basic high level tracing messages.
82 When > 1, be more verbose.
b4f54984
DE
83 This is in contrast to the low level DIE reading of dwarf_die_debug. */
84static unsigned int dwarf_read_debug = 0;
45cfd468 85
d97bc12b 86/* When non-zero, dump DIEs after they are read in. */
b4f54984 87static unsigned int dwarf_die_debug = 0;
d97bc12b 88
27e0867f
DE
89/* When non-zero, dump line number entries as they are read in. */
90static unsigned int dwarf_line_debug = 0;
91
900e11f9
JK
92/* When non-zero, cross-check physname against demangler. */
93static int check_physname = 0;
94
481860b3 95/* When non-zero, do not reject deprecated .gdb_index sections. */
e615022a 96static int use_deprecated_index_sections = 0;
481860b3 97
6502dd73
DJ
98static const struct objfile_data *dwarf2_objfile_data_key;
99
f1e6e072
TT
100/* The "aclass" indices for various kinds of computed DWARF symbols. */
101
102static int dwarf2_locexpr_index;
103static int dwarf2_loclist_index;
104static int dwarf2_locexpr_block_index;
105static int dwarf2_loclist_block_index;
106
73869dc2
DE
107/* A descriptor for dwarf sections.
108
109 S.ASECTION, SIZE are typically initialized when the objfile is first
110 scanned. BUFFER, READIN are filled in later when the section is read.
111 If the section contained compressed data then SIZE is updated to record
112 the uncompressed size of the section.
113
114 DWP file format V2 introduces a wrinkle that is easiest to handle by
115 creating the concept of virtual sections contained within a real section.
116 In DWP V2 the sections of the input DWO files are concatenated together
117 into one section, but section offsets are kept relative to the original
118 input section.
119 If this is a virtual dwp-v2 section, S.CONTAINING_SECTION is a backlink to
120 the real section this "virtual" section is contained in, and BUFFER,SIZE
121 describe the virtual section. */
122
dce234bc
PP
123struct dwarf2_section_info
124{
73869dc2
DE
125 union
126 {
e5aa3347 127 /* If this is a real section, the bfd section. */
049412e3 128 asection *section;
73869dc2 129 /* If this is a virtual section, pointer to the containing ("real")
e5aa3347 130 section. */
73869dc2
DE
131 struct dwarf2_section_info *containing_section;
132 } s;
19ac8c2e 133 /* Pointer to section data, only valid if readin. */
d521ce57 134 const gdb_byte *buffer;
73869dc2 135 /* The size of the section, real or virtual. */
dce234bc 136 bfd_size_type size;
73869dc2
DE
137 /* If this is a virtual section, the offset in the real section.
138 Only valid if is_virtual. */
139 bfd_size_type virtual_offset;
be391dca 140 /* True if we have tried to read this section. */
73869dc2
DE
141 char readin;
142 /* True if this is a virtual section, False otherwise.
049412e3 143 This specifies which of s.section and s.containing_section to use. */
73869dc2 144 char is_virtual;
dce234bc
PP
145};
146
8b70b953
TT
147typedef struct dwarf2_section_info dwarf2_section_info_def;
148DEF_VEC_O (dwarf2_section_info_def);
149
9291a0cd
TT
150/* All offsets in the index are of this type. It must be
151 architecture-independent. */
152typedef uint32_t offset_type;
153
154DEF_VEC_I (offset_type);
155
156942c7
DE
156/* Ensure only legit values are used. */
157#define DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE(cu_index, value) \
158 do { \
159 gdb_assert ((unsigned int) (value) <= 1); \
160 GDB_INDEX_SYMBOL_STATIC_SET_VALUE((cu_index), (value)); \
161 } while (0)
162
163/* Ensure only legit values are used. */
164#define DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE(cu_index, value) \
165 do { \
166 gdb_assert ((value) >= GDB_INDEX_SYMBOL_KIND_TYPE \
167 && (value) <= GDB_INDEX_SYMBOL_KIND_OTHER); \
168 GDB_INDEX_SYMBOL_KIND_SET_VALUE((cu_index), (value)); \
169 } while (0)
170
171/* Ensure we don't use more than the alloted nuber of bits for the CU. */
172#define DW2_GDB_INDEX_CU_SET_VALUE(cu_index, value) \
173 do { \
174 gdb_assert (((value) & ~GDB_INDEX_CU_MASK) == 0); \
175 GDB_INDEX_CU_SET_VALUE((cu_index), (value)); \
176 } while (0)
177
9291a0cd
TT
178/* A description of the mapped index. The file format is described in
179 a comment by the code that writes the index. */
180struct mapped_index
181{
559a7a62
JK
182 /* Index data format version. */
183 int version;
184
9291a0cd
TT
185 /* The total length of the buffer. */
186 off_t total_size;
b11b1f88 187
9291a0cd
TT
188 /* A pointer to the address table data. */
189 const gdb_byte *address_table;
b11b1f88 190
9291a0cd
TT
191 /* Size of the address table data in bytes. */
192 offset_type address_table_size;
b11b1f88 193
3876f04e
DE
194 /* The symbol table, implemented as a hash table. */
195 const offset_type *symbol_table;
b11b1f88 196
9291a0cd 197 /* Size in slots, each slot is 2 offset_types. */
3876f04e 198 offset_type symbol_table_slots;
b11b1f88 199
9291a0cd
TT
200 /* A pointer to the constant pool. */
201 const char *constant_pool;
202};
203
95554aad
TT
204typedef struct dwarf2_per_cu_data *dwarf2_per_cu_ptr;
205DEF_VEC_P (dwarf2_per_cu_ptr);
206
52059ffd
TT
207struct tu_stats
208{
209 int nr_uniq_abbrev_tables;
210 int nr_symtabs;
211 int nr_symtab_sharers;
212 int nr_stmt_less_type_units;
213 int nr_all_type_units_reallocs;
214};
215
9cdd5dbd
DE
216/* Collection of data recorded per objfile.
217 This hangs off of dwarf2_objfile_data_key. */
218
6502dd73
DJ
219struct dwarf2_per_objfile
220{
dce234bc
PP
221 struct dwarf2_section_info info;
222 struct dwarf2_section_info abbrev;
223 struct dwarf2_section_info line;
dce234bc
PP
224 struct dwarf2_section_info loc;
225 struct dwarf2_section_info macinfo;
cf2c3c16 226 struct dwarf2_section_info macro;
dce234bc
PP
227 struct dwarf2_section_info str;
228 struct dwarf2_section_info ranges;
3019eac3 229 struct dwarf2_section_info addr;
dce234bc
PP
230 struct dwarf2_section_info frame;
231 struct dwarf2_section_info eh_frame;
9291a0cd 232 struct dwarf2_section_info gdb_index;
ae038cb0 233
8b70b953
TT
234 VEC (dwarf2_section_info_def) *types;
235
be391dca
TT
236 /* Back link. */
237 struct objfile *objfile;
238
d467dd73 239 /* Table of all the compilation units. This is used to locate
10b3939b 240 the target compilation unit of a particular reference. */
ae038cb0
DJ
241 struct dwarf2_per_cu_data **all_comp_units;
242
243 /* The number of compilation units in ALL_COMP_UNITS. */
244 int n_comp_units;
245
1fd400ff 246 /* The number of .debug_types-related CUs. */
d467dd73 247 int n_type_units;
1fd400ff 248
6aa5f3a6
DE
249 /* The number of elements allocated in all_type_units.
250 If there are skeleton-less TUs, we add them to all_type_units lazily. */
251 int n_allocated_type_units;
252
a2ce51a0
DE
253 /* The .debug_types-related CUs (TUs).
254 This is stored in malloc space because we may realloc it. */
b4dd5633 255 struct signatured_type **all_type_units;
1fd400ff 256
f4dc4d17
DE
257 /* Table of struct type_unit_group objects.
258 The hash key is the DW_AT_stmt_list value. */
259 htab_t type_unit_groups;
72dca2f5 260
348e048f
DE
261 /* A table mapping .debug_types signatures to its signatured_type entry.
262 This is NULL if the .debug_types section hasn't been read in yet. */
263 htab_t signatured_types;
264
f4dc4d17
DE
265 /* Type unit statistics, to see how well the scaling improvements
266 are doing. */
52059ffd 267 struct tu_stats tu_stats;
f4dc4d17
DE
268
269 /* A chain of compilation units that are currently read in, so that
270 they can be freed later. */
271 struct dwarf2_per_cu_data *read_in_chain;
272
3019eac3
DE
273 /* A table mapping DW_AT_dwo_name values to struct dwo_file objects.
274 This is NULL if the table hasn't been allocated yet. */
275 htab_t dwo_files;
276
80626a55
DE
277 /* Non-zero if we've check for whether there is a DWP file. */
278 int dwp_checked;
279
280 /* The DWP file if there is one, or NULL. */
281 struct dwp_file *dwp_file;
282
36586728
TT
283 /* The shared '.dwz' file, if one exists. This is used when the
284 original data was compressed using 'dwz -m'. */
285 struct dwz_file *dwz_file;
286
72dca2f5
FR
287 /* A flag indicating wether this objfile has a section loaded at a
288 VMA of 0. */
289 int has_section_at_zero;
9291a0cd 290
ae2de4f8
DE
291 /* True if we are using the mapped index,
292 or we are faking it for OBJF_READNOW's sake. */
9291a0cd
TT
293 unsigned char using_index;
294
ae2de4f8 295 /* The mapped index, or NULL if .gdb_index is missing or not being used. */
9291a0cd 296 struct mapped_index *index_table;
98bfdba5 297
7b9f3c50 298 /* When using index_table, this keeps track of all quick_file_names entries.
56e64610
DE
299 TUs typically share line table entries with a CU, so we maintain a
300 separate table of all line table entries to support the sharing.
301 Note that while there can be way more TUs than CUs, we've already
302 sorted all the TUs into "type unit groups", grouped by their
303 DW_AT_stmt_list value. Therefore the only sharing done here is with a
304 CU and its associated TU group if there is one. */
7b9f3c50
DE
305 htab_t quick_file_names_table;
306
98bfdba5
PA
307 /* Set during partial symbol reading, to prevent queueing of full
308 symbols. */
309 int reading_partial_symbols;
673bfd45 310
dee91e82 311 /* Table mapping type DIEs to their struct type *.
673bfd45 312 This is NULL if not allocated yet.
02142a6c 313 The mapping is done via (CU/TU + DIE offset) -> type. */
dee91e82 314 htab_t die_type_hash;
95554aad
TT
315
316 /* The CUs we recently read. */
317 VEC (dwarf2_per_cu_ptr) *just_read_cus;
527f3840
JK
318
319 /* Table containing line_header indexed by offset and offset_in_dwz. */
320 htab_t line_header_hash;
6502dd73
DJ
321};
322
323static struct dwarf2_per_objfile *dwarf2_per_objfile;
c906108c 324
251d32d9 325/* Default names of the debugging sections. */
c906108c 326
233a11ab
CS
327/* Note that if the debugging section has been compressed, it might
328 have a name like .zdebug_info. */
329
9cdd5dbd
DE
330static const struct dwarf2_debug_sections dwarf2_elf_names =
331{
251d32d9
TG
332 { ".debug_info", ".zdebug_info" },
333 { ".debug_abbrev", ".zdebug_abbrev" },
334 { ".debug_line", ".zdebug_line" },
335 { ".debug_loc", ".zdebug_loc" },
336 { ".debug_macinfo", ".zdebug_macinfo" },
cf2c3c16 337 { ".debug_macro", ".zdebug_macro" },
251d32d9
TG
338 { ".debug_str", ".zdebug_str" },
339 { ".debug_ranges", ".zdebug_ranges" },
340 { ".debug_types", ".zdebug_types" },
3019eac3 341 { ".debug_addr", ".zdebug_addr" },
251d32d9
TG
342 { ".debug_frame", ".zdebug_frame" },
343 { ".eh_frame", NULL },
24d3216f
TT
344 { ".gdb_index", ".zgdb_index" },
345 23
251d32d9 346};
c906108c 347
80626a55 348/* List of DWO/DWP sections. */
3019eac3 349
80626a55 350static const struct dwop_section_names
3019eac3
DE
351{
352 struct dwarf2_section_names abbrev_dwo;
353 struct dwarf2_section_names info_dwo;
354 struct dwarf2_section_names line_dwo;
355 struct dwarf2_section_names loc_dwo;
09262596
DE
356 struct dwarf2_section_names macinfo_dwo;
357 struct dwarf2_section_names macro_dwo;
3019eac3
DE
358 struct dwarf2_section_names str_dwo;
359 struct dwarf2_section_names str_offsets_dwo;
360 struct dwarf2_section_names types_dwo;
80626a55
DE
361 struct dwarf2_section_names cu_index;
362 struct dwarf2_section_names tu_index;
3019eac3 363}
80626a55 364dwop_section_names =
3019eac3
DE
365{
366 { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
367 { ".debug_info.dwo", ".zdebug_info.dwo" },
368 { ".debug_line.dwo", ".zdebug_line.dwo" },
369 { ".debug_loc.dwo", ".zdebug_loc.dwo" },
09262596
DE
370 { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
371 { ".debug_macro.dwo", ".zdebug_macro.dwo" },
3019eac3
DE
372 { ".debug_str.dwo", ".zdebug_str.dwo" },
373 { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
374 { ".debug_types.dwo", ".zdebug_types.dwo" },
80626a55
DE
375 { ".debug_cu_index", ".zdebug_cu_index" },
376 { ".debug_tu_index", ".zdebug_tu_index" },
3019eac3
DE
377};
378
c906108c
SS
379/* local data types */
380
107d2387
AC
381/* The data in a compilation unit header, after target2host
382 translation, looks like this. */
c906108c 383struct comp_unit_head
a738430d 384{
c764a876 385 unsigned int length;
a738430d 386 short version;
a738430d
MK
387 unsigned char addr_size;
388 unsigned char signed_addr_p;
b64f50a1 389 sect_offset abbrev_offset;
57349743 390
a738430d
MK
391 /* Size of file offsets; either 4 or 8. */
392 unsigned int offset_size;
57349743 393
a738430d
MK
394 /* Size of the length field; either 4 or 12. */
395 unsigned int initial_length_size;
57349743 396
a738430d
MK
397 /* Offset to the first byte of this compilation unit header in the
398 .debug_info section, for resolving relative reference dies. */
b64f50a1 399 sect_offset offset;
57349743 400
d00adf39
DE
401 /* Offset to first die in this cu from the start of the cu.
402 This will be the first byte following the compilation unit header. */
b64f50a1 403 cu_offset first_die_offset;
a738430d 404};
c906108c 405
3da10d80
KS
406/* Type used for delaying computation of method physnames.
407 See comments for compute_delayed_physnames. */
408struct delayed_method_info
409{
410 /* The type to which the method is attached, i.e., its parent class. */
411 struct type *type;
412
413 /* The index of the method in the type's function fieldlists. */
414 int fnfield_index;
415
416 /* The index of the method in the fieldlist. */
417 int index;
418
419 /* The name of the DIE. */
420 const char *name;
421
422 /* The DIE associated with this method. */
423 struct die_info *die;
424};
425
426typedef struct delayed_method_info delayed_method_info;
427DEF_VEC_O (delayed_method_info);
428
e7c27a73
DJ
429/* Internal state when decoding a particular compilation unit. */
430struct dwarf2_cu
431{
432 /* The objfile containing this compilation unit. */
433 struct objfile *objfile;
434
d00adf39 435 /* The header of the compilation unit. */
e7c27a73 436 struct comp_unit_head header;
e142c38c 437
d00adf39
DE
438 /* Base address of this compilation unit. */
439 CORE_ADDR base_address;
440
441 /* Non-zero if base_address has been set. */
442 int base_known;
443
e142c38c
DJ
444 /* The language we are debugging. */
445 enum language language;
446 const struct language_defn *language_defn;
447
b0f35d58
DL
448 const char *producer;
449
e142c38c
DJ
450 /* The generic symbol table building routines have separate lists for
451 file scope symbols and all all other scopes (local scopes). So
452 we need to select the right one to pass to add_symbol_to_list().
453 We do it by keeping a pointer to the correct list in list_in_scope.
454
455 FIXME: The original dwarf code just treated the file scope as the
456 first local scope, and all other local scopes as nested local
457 scopes, and worked fine. Check to see if we really need to
458 distinguish these in buildsym.c. */
459 struct pending **list_in_scope;
460
433df2d4
DE
461 /* The abbrev table for this CU.
462 Normally this points to the abbrev table in the objfile.
463 But if DWO_UNIT is non-NULL this is the abbrev table in the DWO file. */
464 struct abbrev_table *abbrev_table;
72bf9492 465
b64f50a1
JK
466 /* Hash table holding all the loaded partial DIEs
467 with partial_die->offset.SECT_OFF as hash. */
72bf9492
DJ
468 htab_t partial_dies;
469
470 /* Storage for things with the same lifetime as this read-in compilation
471 unit, including partial DIEs. */
472 struct obstack comp_unit_obstack;
473
ae038cb0
DJ
474 /* When multiple dwarf2_cu structures are living in memory, this field
475 chains them all together, so that they can be released efficiently.
476 We will probably also want a generation counter so that most-recently-used
477 compilation units are cached... */
478 struct dwarf2_per_cu_data *read_in_chain;
479
69d751e3 480 /* Backlink to our per_cu entry. */
ae038cb0
DJ
481 struct dwarf2_per_cu_data *per_cu;
482
483 /* How many compilation units ago was this CU last referenced? */
484 int last_used;
485
b64f50a1
JK
486 /* A hash table of DIE cu_offset for following references with
487 die_info->offset.sect_off as hash. */
51545339 488 htab_t die_hash;
10b3939b
DJ
489
490 /* Full DIEs if read in. */
491 struct die_info *dies;
492
493 /* A set of pointers to dwarf2_per_cu_data objects for compilation
494 units referenced by this one. Only set during full symbol processing;
495 partial symbol tables do not have dependencies. */
496 htab_t dependencies;
497
cb1df416
DJ
498 /* Header data from the line table, during full symbol processing. */
499 struct line_header *line_header;
500
3da10d80
KS
501 /* A list of methods which need to have physnames computed
502 after all type information has been read. */
503 VEC (delayed_method_info) *method_list;
504
96408a79
SA
505 /* To be copied to symtab->call_site_htab. */
506 htab_t call_site_htab;
507
034e5797
DE
508 /* Non-NULL if this CU came from a DWO file.
509 There is an invariant here that is important to remember:
510 Except for attributes copied from the top level DIE in the "main"
511 (or "stub") file in preparation for reading the DWO file
512 (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
513 Either there isn't a DWO file (in which case this is NULL and the point
514 is moot), or there is and either we're not going to read it (in which
515 case this is NULL) or there is and we are reading it (in which case this
516 is non-NULL). */
3019eac3
DE
517 struct dwo_unit *dwo_unit;
518
519 /* The DW_AT_addr_base attribute if present, zero otherwise
520 (zero is a valid value though).
1dbab08b 521 Note this value comes from the Fission stub CU/TU's DIE. */
3019eac3
DE
522 ULONGEST addr_base;
523
2e3cf129
DE
524 /* The DW_AT_ranges_base attribute if present, zero otherwise
525 (zero is a valid value though).
1dbab08b 526 Note this value comes from the Fission stub CU/TU's DIE.
2e3cf129 527 Also note that the value is zero in the non-DWO case so this value can
ab435259
DE
528 be used without needing to know whether DWO files are in use or not.
529 N.B. This does not apply to DW_AT_ranges appearing in
530 DW_TAG_compile_unit dies. This is a bit of a wart, consider if ever
531 DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
532 DW_AT_ranges_base *would* have to be applied, and we'd have to care
533 whether the DW_AT_ranges attribute came from the skeleton or DWO. */
2e3cf129
DE
534 ULONGEST ranges_base;
535
ae038cb0
DJ
536 /* Mark used when releasing cached dies. */
537 unsigned int mark : 1;
538
8be455d7
JK
539 /* This CU references .debug_loc. See the symtab->locations_valid field.
540 This test is imperfect as there may exist optimized debug code not using
541 any location list and still facing inlining issues if handled as
542 unoptimized code. For a future better test see GCC PR other/32998. */
8be455d7 543 unsigned int has_loclist : 1;
ba919b58 544
1b80a9fa
JK
545 /* These cache the results for producer_is_* fields. CHECKED_PRODUCER is set
546 if all the producer_is_* fields are valid. This information is cached
547 because profiling CU expansion showed excessive time spent in
548 producer_is_gxx_lt_4_6. */
ba919b58
TT
549 unsigned int checked_producer : 1;
550 unsigned int producer_is_gxx_lt_4_6 : 1;
1b80a9fa 551 unsigned int producer_is_gcc_lt_4_3 : 1;
685b1105 552 unsigned int producer_is_icc : 1;
4d4ec4e5
TT
553
554 /* When set, the file that we're processing is known to have
555 debugging info for C++ namespaces. GCC 3.3.x did not produce
556 this information, but later versions do. */
557
558 unsigned int processing_has_namespace_info : 1;
e7c27a73
DJ
559};
560
10b3939b
DJ
561/* Persistent data held for a compilation unit, even when not
562 processing it. We put a pointer to this structure in the
28dee7f5 563 read_symtab_private field of the psymtab. */
10b3939b 564
ae038cb0
DJ
565struct dwarf2_per_cu_data
566{
36586728 567 /* The start offset and length of this compilation unit.
45452591 568 NOTE: Unlike comp_unit_head.length, this length includes
3019eac3
DE
569 initial_length_size.
570 If the DIE refers to a DWO file, this is always of the original die,
571 not the DWO file. */
b64f50a1 572 sect_offset offset;
36586728 573 unsigned int length;
ae038cb0
DJ
574
575 /* Flag indicating this compilation unit will be read in before
576 any of the current compilation units are processed. */
c764a876 577 unsigned int queued : 1;
ae038cb0 578
0d99eb77
DE
579 /* This flag will be set when reading partial DIEs if we need to load
580 absolutely all DIEs for this compilation unit, instead of just the ones
581 we think are interesting. It gets set if we look for a DIE in the
5afb4e99
DJ
582 hash table and don't find it. */
583 unsigned int load_all_dies : 1;
584
0186c6a7
DE
585 /* Non-zero if this CU is from .debug_types.
586 Struct dwarf2_per_cu_data is contained in struct signatured_type iff
587 this is non-zero. */
3019eac3
DE
588 unsigned int is_debug_types : 1;
589
36586728
TT
590 /* Non-zero if this CU is from the .dwz file. */
591 unsigned int is_dwz : 1;
592
a2ce51a0
DE
593 /* Non-zero if reading a TU directly from a DWO file, bypassing the stub.
594 This flag is only valid if is_debug_types is true.
595 We can't read a CU directly from a DWO file: There are required
596 attributes in the stub. */
597 unsigned int reading_dwo_directly : 1;
598
7ee85ab1
DE
599 /* Non-zero if the TU has been read.
600 This is used to assist the "Stay in DWO Optimization" for Fission:
601 When reading a DWO, it's faster to read TUs from the DWO instead of
602 fetching them from random other DWOs (due to comdat folding).
603 If the TU has already been read, the optimization is unnecessary
604 (and unwise - we don't want to change where gdb thinks the TU lives
605 "midflight").
606 This flag is only valid if is_debug_types is true. */
607 unsigned int tu_read : 1;
608
3019eac3
DE
609 /* The section this CU/TU lives in.
610 If the DIE refers to a DWO file, this is always the original die,
611 not the DWO file. */
8a0459fd 612 struct dwarf2_section_info *section;
348e048f 613
17ea53c3 614 /* Set to non-NULL iff this CU is currently loaded. When it gets freed out
cc12ce38
DE
615 of the CU cache it gets reset to NULL again. This is left as NULL for
616 dummy CUs (a CU header, but nothing else). */
ae038cb0 617 struct dwarf2_cu *cu;
1c379e20 618
9cdd5dbd
DE
619 /* The corresponding objfile.
620 Normally we can get the objfile from dwarf2_per_objfile.
621 However we can enter this file with just a "per_cu" handle. */
9291a0cd
TT
622 struct objfile *objfile;
623
fffbe6a8
YQ
624 /* When dwarf2_per_objfile->using_index is true, the 'quick' field
625 is active. Otherwise, the 'psymtab' field is active. */
9291a0cd
TT
626 union
627 {
628 /* The partial symbol table associated with this compilation unit,
95554aad 629 or NULL for unread partial units. */
9291a0cd
TT
630 struct partial_symtab *psymtab;
631
632 /* Data needed by the "quick" functions. */
633 struct dwarf2_per_cu_quick_data *quick;
634 } v;
95554aad 635
796a7ff8
DE
636 /* The CUs we import using DW_TAG_imported_unit. This is filled in
637 while reading psymtabs, used to compute the psymtab dependencies,
638 and then cleared. Then it is filled in again while reading full
639 symbols, and only deleted when the objfile is destroyed.
640
641 This is also used to work around a difference between the way gold
642 generates .gdb_index version <=7 and the way gdb does. Arguably this
643 is a gold bug. For symbols coming from TUs, gold records in the index
644 the CU that includes the TU instead of the TU itself. This breaks
645 dw2_lookup_symbol: It assumes that if the index says symbol X lives
646 in CU/TU Y, then one need only expand Y and a subsequent lookup in Y
647 will find X. Alas TUs live in their own symtab, so after expanding CU Y
648 we need to look in TU Z to find X. Fortunately, this is akin to
649 DW_TAG_imported_unit, so we just use the same mechanism: For
650 .gdb_index version <=7 this also records the TUs that the CU referred
651 to. Concurrently with this change gdb was modified to emit version 8
69d751e3
DE
652 indices so we only pay a price for gold generated indices.
653 http://sourceware.org/bugzilla/show_bug.cgi?id=15021. */
796a7ff8 654 VEC (dwarf2_per_cu_ptr) *imported_symtabs;
ae038cb0
DJ
655};
656
348e048f
DE
657/* Entry in the signatured_types hash table. */
658
659struct signatured_type
660{
42e7ad6c 661 /* The "per_cu" object of this type.
ac9ec31b 662 This struct is used iff per_cu.is_debug_types.
42e7ad6c
DE
663 N.B.: This is the first member so that it's easy to convert pointers
664 between them. */
665 struct dwarf2_per_cu_data per_cu;
666
3019eac3 667 /* The type's signature. */
348e048f
DE
668 ULONGEST signature;
669
3019eac3 670 /* Offset in the TU of the type's DIE, as read from the TU header.
c88ee1f0
DE
671 If this TU is a DWO stub and the definition lives in a DWO file
672 (specified by DW_AT_GNU_dwo_name), this value is unusable. */
3019eac3
DE
673 cu_offset type_offset_in_tu;
674
675 /* Offset in the section of the type's DIE.
676 If the definition lives in a DWO file, this is the offset in the
677 .debug_types.dwo section.
678 The value is zero until the actual value is known.
679 Zero is otherwise not a valid section offset. */
680 sect_offset type_offset_in_section;
0186c6a7
DE
681
682 /* Type units are grouped by their DW_AT_stmt_list entry so that they
683 can share them. This points to the containing symtab. */
684 struct type_unit_group *type_unit_group;
ac9ec31b
DE
685
686 /* The type.
687 The first time we encounter this type we fully read it in and install it
688 in the symbol tables. Subsequent times we only need the type. */
689 struct type *type;
a2ce51a0
DE
690
691 /* Containing DWO unit.
692 This field is valid iff per_cu.reading_dwo_directly. */
693 struct dwo_unit *dwo_unit;
348e048f
DE
694};
695
0186c6a7
DE
696typedef struct signatured_type *sig_type_ptr;
697DEF_VEC_P (sig_type_ptr);
698
094b34ac
DE
699/* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
700 This includes type_unit_group and quick_file_names. */
701
702struct stmt_list_hash
703{
704 /* The DWO unit this table is from or NULL if there is none. */
705 struct dwo_unit *dwo_unit;
706
707 /* Offset in .debug_line or .debug_line.dwo. */
708 sect_offset line_offset;
709};
710
f4dc4d17
DE
711/* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
712 an object of this type. */
713
714struct type_unit_group
715{
0186c6a7 716 /* dwarf2read.c's main "handle" on a TU symtab.
f4dc4d17
DE
717 To simplify things we create an artificial CU that "includes" all the
718 type units using this stmt_list so that the rest of the code still has
719 a "per_cu" handle on the symtab.
720 This PER_CU is recognized by having no section. */
8a0459fd 721#define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
094b34ac
DE
722 struct dwarf2_per_cu_data per_cu;
723
0186c6a7
DE
724 /* The TUs that share this DW_AT_stmt_list entry.
725 This is added to while parsing type units to build partial symtabs,
726 and is deleted afterwards and not used again. */
727 VEC (sig_type_ptr) *tus;
f4dc4d17 728
43f3e411 729 /* The compunit symtab.
094b34ac 730 Type units in a group needn't all be defined in the same source file,
43f3e411
DE
731 so we create an essentially anonymous symtab as the compunit symtab. */
732 struct compunit_symtab *compunit_symtab;
f4dc4d17 733
094b34ac
DE
734 /* The data used to construct the hash key. */
735 struct stmt_list_hash hash;
f4dc4d17
DE
736
737 /* The number of symtabs from the line header.
738 The value here must match line_header.num_file_names. */
739 unsigned int num_symtabs;
740
741 /* The symbol tables for this TU (obtained from the files listed in
742 DW_AT_stmt_list).
743 WARNING: The order of entries here must match the order of entries
744 in the line header. After the first TU using this type_unit_group, the
745 line header for the subsequent TUs is recreated from this. This is done
746 because we need to use the same symtabs for each TU using the same
747 DW_AT_stmt_list value. Also note that symtabs may be repeated here,
748 there's no guarantee the line header doesn't have duplicate entries. */
749 struct symtab **symtabs;
750};
751
73869dc2 752/* These sections are what may appear in a (real or virtual) DWO file. */
3019eac3
DE
753
754struct dwo_sections
755{
756 struct dwarf2_section_info abbrev;
3019eac3
DE
757 struct dwarf2_section_info line;
758 struct dwarf2_section_info loc;
09262596
DE
759 struct dwarf2_section_info macinfo;
760 struct dwarf2_section_info macro;
3019eac3
DE
761 struct dwarf2_section_info str;
762 struct dwarf2_section_info str_offsets;
80626a55
DE
763 /* In the case of a virtual DWO file, these two are unused. */
764 struct dwarf2_section_info info;
3019eac3
DE
765 VEC (dwarf2_section_info_def) *types;
766};
767
c88ee1f0 768/* CUs/TUs in DWP/DWO files. */
3019eac3
DE
769
770struct dwo_unit
771{
772 /* Backlink to the containing struct dwo_file. */
773 struct dwo_file *dwo_file;
774
775 /* The "id" that distinguishes this CU/TU.
776 .debug_info calls this "dwo_id", .debug_types calls this "signature".
777 Since signatures came first, we stick with it for consistency. */
778 ULONGEST signature;
779
780 /* The section this CU/TU lives in, in the DWO file. */
8a0459fd 781 struct dwarf2_section_info *section;
3019eac3 782
19ac8c2e 783 /* Same as dwarf2_per_cu_data:{offset,length} but in the DWO section. */
3019eac3
DE
784 sect_offset offset;
785 unsigned int length;
786
787 /* For types, offset in the type's DIE of the type defined by this TU. */
788 cu_offset type_offset_in_tu;
789};
790
73869dc2
DE
791/* include/dwarf2.h defines the DWP section codes.
792 It defines a max value but it doesn't define a min value, which we
793 use for error checking, so provide one. */
794
795enum dwp_v2_section_ids
796{
797 DW_SECT_MIN = 1
798};
799
80626a55 800/* Data for one DWO file.
57d63ce2
DE
801
802 This includes virtual DWO files (a virtual DWO file is a DWO file as it
803 appears in a DWP file). DWP files don't really have DWO files per se -
804 comdat folding of types "loses" the DWO file they came from, and from
805 a high level view DWP files appear to contain a mass of random types.
806 However, to maintain consistency with the non-DWP case we pretend DWP
807 files contain virtual DWO files, and we assign each TU with one virtual
808 DWO file (generally based on the line and abbrev section offsets -
809 a heuristic that seems to work in practice). */
3019eac3
DE
810
811struct dwo_file
812{
0ac5b59e 813 /* The DW_AT_GNU_dwo_name attribute.
80626a55
DE
814 For virtual DWO files the name is constructed from the section offsets
815 of abbrev,line,loc,str_offsets so that we combine virtual DWO files
816 from related CU+TUs. */
0ac5b59e
DE
817 const char *dwo_name;
818
819 /* The DW_AT_comp_dir attribute. */
820 const char *comp_dir;
3019eac3 821
80626a55
DE
822 /* The bfd, when the file is open. Otherwise this is NULL.
823 This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd. */
824 bfd *dbfd;
3019eac3 825
73869dc2
DE
826 /* The sections that make up this DWO file.
827 Remember that for virtual DWO files in DWP V2, these are virtual
828 sections (for lack of a better name). */
3019eac3
DE
829 struct dwo_sections sections;
830
19c3d4c9
DE
831 /* The CU in the file.
832 We only support one because having more than one requires hacking the
833 dwo_name of each to match, which is highly unlikely to happen.
834 Doing this means all TUs can share comp_dir: We also assume that
835 DW_AT_comp_dir across all TUs in a DWO file will be identical. */
836 struct dwo_unit *cu;
3019eac3
DE
837
838 /* Table of TUs in the file.
839 Each element is a struct dwo_unit. */
840 htab_t tus;
841};
842
80626a55
DE
843/* These sections are what may appear in a DWP file. */
844
845struct dwp_sections
846{
73869dc2 847 /* These are used by both DWP version 1 and 2. */
80626a55
DE
848 struct dwarf2_section_info str;
849 struct dwarf2_section_info cu_index;
850 struct dwarf2_section_info tu_index;
73869dc2
DE
851
852 /* These are only used by DWP version 2 files.
853 In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
854 sections are referenced by section number, and are not recorded here.
855 In DWP version 2 there is at most one copy of all these sections, each
856 section being (effectively) comprised of the concatenation of all of the
857 individual sections that exist in the version 1 format.
858 To keep the code simple we treat each of these concatenated pieces as a
859 section itself (a virtual section?). */
860 struct dwarf2_section_info abbrev;
861 struct dwarf2_section_info info;
862 struct dwarf2_section_info line;
863 struct dwarf2_section_info loc;
864 struct dwarf2_section_info macinfo;
865 struct dwarf2_section_info macro;
866 struct dwarf2_section_info str_offsets;
867 struct dwarf2_section_info types;
80626a55
DE
868};
869
73869dc2
DE
870/* These sections are what may appear in a virtual DWO file in DWP version 1.
871 A virtual DWO file is a DWO file as it appears in a DWP file. */
80626a55 872
73869dc2 873struct virtual_v1_dwo_sections
80626a55
DE
874{
875 struct dwarf2_section_info abbrev;
876 struct dwarf2_section_info line;
877 struct dwarf2_section_info loc;
878 struct dwarf2_section_info macinfo;
879 struct dwarf2_section_info macro;
880 struct dwarf2_section_info str_offsets;
881 /* Each DWP hash table entry records one CU or one TU.
8a0459fd 882 That is recorded here, and copied to dwo_unit.section. */
80626a55
DE
883 struct dwarf2_section_info info_or_types;
884};
885
73869dc2
DE
886/* Similar to virtual_v1_dwo_sections, but for DWP version 2.
887 In version 2, the sections of the DWO files are concatenated together
888 and stored in one section of that name. Thus each ELF section contains
889 several "virtual" sections. */
890
891struct virtual_v2_dwo_sections
892{
893 bfd_size_type abbrev_offset;
894 bfd_size_type abbrev_size;
895
896 bfd_size_type line_offset;
897 bfd_size_type line_size;
898
899 bfd_size_type loc_offset;
900 bfd_size_type loc_size;
901
902 bfd_size_type macinfo_offset;
903 bfd_size_type macinfo_size;
904
905 bfd_size_type macro_offset;
906 bfd_size_type macro_size;
907
908 bfd_size_type str_offsets_offset;
909 bfd_size_type str_offsets_size;
910
911 /* Each DWP hash table entry records one CU or one TU.
912 That is recorded here, and copied to dwo_unit.section. */
913 bfd_size_type info_or_types_offset;
914 bfd_size_type info_or_types_size;
915};
916
80626a55
DE
917/* Contents of DWP hash tables. */
918
919struct dwp_hash_table
920{
73869dc2 921 uint32_t version, nr_columns;
80626a55 922 uint32_t nr_units, nr_slots;
73869dc2
DE
923 const gdb_byte *hash_table, *unit_table;
924 union
925 {
926 struct
927 {
928 const gdb_byte *indices;
929 } v1;
930 struct
931 {
932 /* This is indexed by column number and gives the id of the section
933 in that column. */
934#define MAX_NR_V2_DWO_SECTIONS \
935 (1 /* .debug_info or .debug_types */ \
936 + 1 /* .debug_abbrev */ \
937 + 1 /* .debug_line */ \
938 + 1 /* .debug_loc */ \
939 + 1 /* .debug_str_offsets */ \
940 + 1 /* .debug_macro or .debug_macinfo */)
941 int section_ids[MAX_NR_V2_DWO_SECTIONS];
942 const gdb_byte *offsets;
943 const gdb_byte *sizes;
944 } v2;
945 } section_pool;
80626a55
DE
946};
947
948/* Data for one DWP file. */
949
950struct dwp_file
951{
952 /* Name of the file. */
953 const char *name;
954
73869dc2
DE
955 /* File format version. */
956 int version;
957
93417882 958 /* The bfd. */
80626a55
DE
959 bfd *dbfd;
960
961 /* Section info for this file. */
962 struct dwp_sections sections;
963
57d63ce2 964 /* Table of CUs in the file. */
80626a55
DE
965 const struct dwp_hash_table *cus;
966
967 /* Table of TUs in the file. */
968 const struct dwp_hash_table *tus;
969
19ac8c2e
DE
970 /* Tables of loaded CUs/TUs. Each entry is a struct dwo_unit *. */
971 htab_t loaded_cus;
972 htab_t loaded_tus;
80626a55 973
73869dc2
DE
974 /* Table to map ELF section numbers to their sections.
975 This is only needed for the DWP V1 file format. */
80626a55
DE
976 unsigned int num_sections;
977 asection **elf_sections;
978};
979
36586728
TT
980/* This represents a '.dwz' file. */
981
982struct dwz_file
983{
984 /* A dwz file can only contain a few sections. */
985 struct dwarf2_section_info abbrev;
986 struct dwarf2_section_info info;
987 struct dwarf2_section_info str;
988 struct dwarf2_section_info line;
989 struct dwarf2_section_info macro;
2ec9a5e0 990 struct dwarf2_section_info gdb_index;
36586728
TT
991
992 /* The dwz's BFD. */
993 bfd *dwz_bfd;
994};
995
0963b4bd
MS
996/* Struct used to pass misc. parameters to read_die_and_children, et
997 al. which are used for both .debug_info and .debug_types dies.
998 All parameters here are unchanging for the life of the call. This
dee91e82 999 struct exists to abstract away the constant parameters of die reading. */
93311388
DE
1000
1001struct die_reader_specs
1002{
a32a8923 1003 /* The bfd of die_section. */
93311388
DE
1004 bfd* abfd;
1005
1006 /* The CU of the DIE we are parsing. */
1007 struct dwarf2_cu *cu;
1008
80626a55 1009 /* Non-NULL if reading a DWO file (including one packaged into a DWP). */
3019eac3
DE
1010 struct dwo_file *dwo_file;
1011
dee91e82 1012 /* The section the die comes from.
3019eac3 1013 This is either .debug_info or .debug_types, or the .dwo variants. */
dee91e82
DE
1014 struct dwarf2_section_info *die_section;
1015
1016 /* die_section->buffer. */
d521ce57 1017 const gdb_byte *buffer;
f664829e
DE
1018
1019 /* The end of the buffer. */
1020 const gdb_byte *buffer_end;
a2ce51a0
DE
1021
1022 /* The value of the DW_AT_comp_dir attribute. */
1023 const char *comp_dir;
93311388
DE
1024};
1025
fd820528 1026/* Type of function passed to init_cutu_and_read_dies, et.al. */
dee91e82 1027typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
d521ce57 1028 const gdb_byte *info_ptr,
dee91e82
DE
1029 struct die_info *comp_unit_die,
1030 int has_children,
1031 void *data);
1032
52059ffd
TT
1033struct file_entry
1034{
1035 const char *name;
1036 unsigned int dir_index;
1037 unsigned int mod_time;
1038 unsigned int length;
83769d0b
DE
1039 /* Non-zero if referenced by the Line Number Program. */
1040 int included_p;
1041 /* The associated symbol table, if any. */
1042 struct symtab *symtab;
52059ffd
TT
1043};
1044
debd256d
JB
1045/* The line number information for a compilation unit (found in the
1046 .debug_line section) begins with a "statement program header",
1047 which contains the following information. */
1048struct line_header
1049{
527f3840
JK
1050 /* Offset of line number information in .debug_line section. */
1051 sect_offset offset;
1052
1053 /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile. */
1054 unsigned offset_in_dwz : 1;
1055
debd256d
JB
1056 unsigned int total_length;
1057 unsigned short version;
1058 unsigned int header_length;
1059 unsigned char minimum_instruction_length;
2dc7f7b3 1060 unsigned char maximum_ops_per_instruction;
debd256d
JB
1061 unsigned char default_is_stmt;
1062 int line_base;
1063 unsigned char line_range;
1064 unsigned char opcode_base;
1065
1066 /* standard_opcode_lengths[i] is the number of operands for the
1067 standard opcode whose value is i. This means that
1068 standard_opcode_lengths[0] is unused, and the last meaningful
1069 element is standard_opcode_lengths[opcode_base - 1]. */
1070 unsigned char *standard_opcode_lengths;
1071
1072 /* The include_directories table. NOTE! These strings are not
1073 allocated with xmalloc; instead, they are pointers into
1074 debug_line_buffer. If you try to free them, `free' will get
1075 indigestion. */
1076 unsigned int num_include_dirs, include_dirs_size;
d521ce57 1077 const char **include_dirs;
debd256d
JB
1078
1079 /* The file_names table. NOTE! These strings are not allocated
1080 with xmalloc; instead, they are pointers into debug_line_buffer.
1081 Don't try to free them directly. */
1082 unsigned int num_file_names, file_names_size;
52059ffd 1083 struct file_entry *file_names;
debd256d
JB
1084
1085 /* The start and end of the statement program following this
6502dd73 1086 header. These point into dwarf2_per_objfile->line_buffer. */
d521ce57 1087 const gdb_byte *statement_program_start, *statement_program_end;
debd256d 1088};
c906108c
SS
1089
1090/* When we construct a partial symbol table entry we only
0963b4bd 1091 need this much information. */
c906108c
SS
1092struct partial_die_info
1093 {
72bf9492 1094 /* Offset of this DIE. */
b64f50a1 1095 sect_offset offset;
72bf9492
DJ
1096
1097 /* DWARF-2 tag for this DIE. */
1098 ENUM_BITFIELD(dwarf_tag) tag : 16;
1099
72bf9492
DJ
1100 /* Assorted flags describing the data found in this DIE. */
1101 unsigned int has_children : 1;
1102 unsigned int is_external : 1;
1103 unsigned int is_declaration : 1;
1104 unsigned int has_type : 1;
1105 unsigned int has_specification : 1;
1106 unsigned int has_pc_info : 1;
481860b3 1107 unsigned int may_be_inlined : 1;
72bf9492 1108
0c1b455e
TT
1109 /* This DIE has been marked DW_AT_main_subprogram. */
1110 unsigned int main_subprogram : 1;
1111
72bf9492
DJ
1112 /* Flag set if the SCOPE field of this structure has been
1113 computed. */
1114 unsigned int scope_set : 1;
1115
fa4028e9
JB
1116 /* Flag set if the DIE has a byte_size attribute. */
1117 unsigned int has_byte_size : 1;
1118
ff908ebf
AW
1119 /* Flag set if the DIE has a DW_AT_const_value attribute. */
1120 unsigned int has_const_value : 1;
1121
98bfdba5
PA
1122 /* Flag set if any of the DIE's children are template arguments. */
1123 unsigned int has_template_arguments : 1;
1124
abc72ce4
DE
1125 /* Flag set if fixup_partial_die has been called on this die. */
1126 unsigned int fixup_called : 1;
1127
36586728
TT
1128 /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt. */
1129 unsigned int is_dwz : 1;
1130
1131 /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt. */
1132 unsigned int spec_is_dwz : 1;
1133
72bf9492 1134 /* The name of this DIE. Normally the value of DW_AT_name, but
94af9270 1135 sometimes a default name for unnamed DIEs. */
15d034d0 1136 const char *name;
72bf9492 1137
abc72ce4
DE
1138 /* The linkage name, if present. */
1139 const char *linkage_name;
1140
72bf9492
DJ
1141 /* The scope to prepend to our children. This is generally
1142 allocated on the comp_unit_obstack, so will disappear
1143 when this compilation unit leaves the cache. */
15d034d0 1144 const char *scope;
72bf9492 1145
95554aad
TT
1146 /* Some data associated with the partial DIE. The tag determines
1147 which field is live. */
1148 union
1149 {
1150 /* The location description associated with this DIE, if any. */
1151 struct dwarf_block *locdesc;
1152 /* The offset of an import, for DW_TAG_imported_unit. */
1153 sect_offset offset;
1154 } d;
72bf9492
DJ
1155
1156 /* If HAS_PC_INFO, the PC range associated with this DIE. */
c906108c
SS
1157 CORE_ADDR lowpc;
1158 CORE_ADDR highpc;
72bf9492 1159
93311388 1160 /* Pointer into the info_buffer (or types_buffer) pointing at the target of
72bf9492 1161 DW_AT_sibling, if any. */
abc72ce4
DE
1162 /* NOTE: This member isn't strictly necessary, read_partial_die could
1163 return DW_AT_sibling values to its caller load_partial_dies. */
d521ce57 1164 const gdb_byte *sibling;
72bf9492
DJ
1165
1166 /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1167 DW_AT_specification (or DW_AT_abstract_origin or
1168 DW_AT_extension). */
b64f50a1 1169 sect_offset spec_offset;
72bf9492
DJ
1170
1171 /* Pointers to this DIE's parent, first child, and next sibling,
1172 if any. */
1173 struct partial_die_info *die_parent, *die_child, *die_sibling;
c906108c
SS
1174 };
1175
0963b4bd 1176/* This data structure holds the information of an abbrev. */
c906108c
SS
1177struct abbrev_info
1178 {
1179 unsigned int number; /* number identifying abbrev */
1180 enum dwarf_tag tag; /* dwarf tag */
f3dd6933
DJ
1181 unsigned short has_children; /* boolean */
1182 unsigned short num_attrs; /* number of attributes */
c906108c
SS
1183 struct attr_abbrev *attrs; /* an array of attribute descriptions */
1184 struct abbrev_info *next; /* next in chain */
1185 };
1186
1187struct attr_abbrev
1188 {
9d25dd43
DE
1189 ENUM_BITFIELD(dwarf_attribute) name : 16;
1190 ENUM_BITFIELD(dwarf_form) form : 16;
c906108c
SS
1191 };
1192
433df2d4
DE
1193/* Size of abbrev_table.abbrev_hash_table. */
1194#define ABBREV_HASH_SIZE 121
1195
1196/* Top level data structure to contain an abbreviation table. */
1197
1198struct abbrev_table
1199{
f4dc4d17
DE
1200 /* Where the abbrev table came from.
1201 This is used as a sanity check when the table is used. */
433df2d4
DE
1202 sect_offset offset;
1203
1204 /* Storage for the abbrev table. */
1205 struct obstack abbrev_obstack;
1206
1207 /* Hash table of abbrevs.
1208 This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1209 It could be statically allocated, but the previous code didn't so we
1210 don't either. */
1211 struct abbrev_info **abbrevs;
1212};
1213
0963b4bd 1214/* Attributes have a name and a value. */
b60c80d6
DJ
1215struct attribute
1216 {
9d25dd43 1217 ENUM_BITFIELD(dwarf_attribute) name : 16;
8285870a
JK
1218 ENUM_BITFIELD(dwarf_form) form : 15;
1219
1220 /* Has DW_STRING already been updated by dwarf2_canonicalize_name? This
1221 field should be in u.str (existing only for DW_STRING) but it is kept
1222 here for better struct attribute alignment. */
1223 unsigned int string_is_canonical : 1;
1224
b60c80d6
DJ
1225 union
1226 {
15d034d0 1227 const char *str;
b60c80d6 1228 struct dwarf_block *blk;
43bbcdc2
PH
1229 ULONGEST unsnd;
1230 LONGEST snd;
b60c80d6 1231 CORE_ADDR addr;
ac9ec31b 1232 ULONGEST signature;
b60c80d6
DJ
1233 }
1234 u;
1235 };
1236
0963b4bd 1237/* This data structure holds a complete die structure. */
c906108c
SS
1238struct die_info
1239 {
76815b17
DE
1240 /* DWARF-2 tag for this DIE. */
1241 ENUM_BITFIELD(dwarf_tag) tag : 16;
1242
1243 /* Number of attributes */
98bfdba5
PA
1244 unsigned char num_attrs;
1245
1246 /* True if we're presently building the full type name for the
1247 type derived from this DIE. */
1248 unsigned char building_fullname : 1;
76815b17 1249
adde2bff
DE
1250 /* True if this die is in process. PR 16581. */
1251 unsigned char in_process : 1;
1252
76815b17
DE
1253 /* Abbrev number */
1254 unsigned int abbrev;
1255
93311388 1256 /* Offset in .debug_info or .debug_types section. */
b64f50a1 1257 sect_offset offset;
78ba4af6
JB
1258
1259 /* The dies in a compilation unit form an n-ary tree. PARENT
1260 points to this die's parent; CHILD points to the first child of
1261 this node; and all the children of a given node are chained
4950bc1c 1262 together via their SIBLING fields. */
639d11d3
DC
1263 struct die_info *child; /* Its first child, if any. */
1264 struct die_info *sibling; /* Its next sibling, if any. */
1265 struct die_info *parent; /* Its parent, if any. */
c906108c 1266
b60c80d6
DJ
1267 /* An array of attributes, with NUM_ATTRS elements. There may be
1268 zero, but it's not common and zero-sized arrays are not
1269 sufficiently portable C. */
1270 struct attribute attrs[1];
c906108c
SS
1271 };
1272
0963b4bd 1273/* Get at parts of an attribute structure. */
c906108c
SS
1274
1275#define DW_STRING(attr) ((attr)->u.str)
8285870a 1276#define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
c906108c
SS
1277#define DW_UNSND(attr) ((attr)->u.unsnd)
1278#define DW_BLOCK(attr) ((attr)->u.blk)
1279#define DW_SND(attr) ((attr)->u.snd)
1280#define DW_ADDR(attr) ((attr)->u.addr)
ac9ec31b 1281#define DW_SIGNATURE(attr) ((attr)->u.signature)
c906108c 1282
0963b4bd 1283/* Blocks are a bunch of untyped bytes. */
c906108c
SS
1284struct dwarf_block
1285 {
56eb65bd 1286 size_t size;
1d6edc3c
JK
1287
1288 /* Valid only if SIZE is not zero. */
d521ce57 1289 const gdb_byte *data;
c906108c
SS
1290 };
1291
c906108c
SS
1292#ifndef ATTR_ALLOC_CHUNK
1293#define ATTR_ALLOC_CHUNK 4
1294#endif
1295
c906108c
SS
1296/* Allocate fields for structs, unions and enums in this size. */
1297#ifndef DW_FIELD_ALLOC_CHUNK
1298#define DW_FIELD_ALLOC_CHUNK 4
1299#endif
1300
c906108c
SS
1301/* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1302 but this would require a corresponding change in unpack_field_as_long
1303 and friends. */
1304static int bits_per_byte = 8;
1305
52059ffd
TT
1306struct nextfield
1307{
1308 struct nextfield *next;
1309 int accessibility;
1310 int virtuality;
1311 struct field field;
1312};
1313
1314struct nextfnfield
1315{
1316 struct nextfnfield *next;
1317 struct fn_field fnfield;
1318};
1319
1320struct fnfieldlist
1321{
1322 const char *name;
1323 int length;
1324 struct nextfnfield *head;
1325};
1326
1327struct typedef_field_list
1328{
1329 struct typedef_field field;
1330 struct typedef_field_list *next;
1331};
1332
c906108c
SS
1333/* The routines that read and process dies for a C struct or C++ class
1334 pass lists of data member fields and lists of member function fields
1335 in an instance of a field_info structure, as defined below. */
1336struct field_info
c5aa993b 1337 {
0963b4bd 1338 /* List of data member and baseclasses fields. */
52059ffd 1339 struct nextfield *fields, *baseclasses;
c906108c 1340
7d0ccb61 1341 /* Number of fields (including baseclasses). */
c5aa993b 1342 int nfields;
c906108c 1343
c5aa993b
JM
1344 /* Number of baseclasses. */
1345 int nbaseclasses;
c906108c 1346
c5aa993b
JM
1347 /* Set if the accesibility of one of the fields is not public. */
1348 int non_public_fields;
c906108c 1349
c5aa993b
JM
1350 /* Member function fields array, entries are allocated in the order they
1351 are encountered in the object file. */
52059ffd 1352 struct nextfnfield *fnfields;
c906108c 1353
c5aa993b
JM
1354 /* Member function fieldlist array, contains name of possibly overloaded
1355 member function, number of overloaded member functions and a pointer
1356 to the head of the member function field chain. */
52059ffd 1357 struct fnfieldlist *fnfieldlists;
c906108c 1358
c5aa993b
JM
1359 /* Number of entries in the fnfieldlists array. */
1360 int nfnfields;
98751a41
JK
1361
1362 /* typedefs defined inside this class. TYPEDEF_FIELD_LIST contains head of
1363 a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements. */
52059ffd 1364 struct typedef_field_list *typedef_field_list;
98751a41 1365 unsigned typedef_field_list_count;
c5aa993b 1366 };
c906108c 1367
10b3939b
DJ
1368/* One item on the queue of compilation units to read in full symbols
1369 for. */
1370struct dwarf2_queue_item
1371{
1372 struct dwarf2_per_cu_data *per_cu;
95554aad 1373 enum language pretend_language;
10b3939b
DJ
1374 struct dwarf2_queue_item *next;
1375};
1376
1377/* The current queue. */
1378static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1379
ae038cb0
DJ
1380/* Loaded secondary compilation units are kept in memory until they
1381 have not been referenced for the processing of this many
1382 compilation units. Set this to zero to disable caching. Cache
1383 sizes of up to at least twenty will improve startup time for
1384 typical inter-CU-reference binaries, at an obvious memory cost. */
b4f54984 1385static int dwarf_max_cache_age = 5;
920d2a44 1386static void
b4f54984
DE
1387show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1388 struct cmd_list_element *c, const char *value)
920d2a44 1389{
3e43a32a 1390 fprintf_filtered (file, _("The upper bound on the age of cached "
b4f54984 1391 "DWARF compilation units is %s.\n"),
920d2a44
AC
1392 value);
1393}
4390d890 1394\f
c906108c
SS
1395/* local function prototypes */
1396
a32a8923
DE
1397static const char *get_section_name (const struct dwarf2_section_info *);
1398
1399static const char *get_section_file_name (const struct dwarf2_section_info *);
1400
4efb68b1 1401static void dwarf2_locate_sections (bfd *, asection *, void *);
c906108c 1402
918dd910
JK
1403static void dwarf2_find_base_address (struct die_info *die,
1404 struct dwarf2_cu *cu);
1405
0018ea6f
DE
1406static struct partial_symtab *create_partial_symtab
1407 (struct dwarf2_per_cu_data *per_cu, const char *name);
1408
c67a9c90 1409static void dwarf2_build_psymtabs_hard (struct objfile *);
c906108c 1410
72bf9492
DJ
1411static void scan_partial_symbols (struct partial_die_info *,
1412 CORE_ADDR *, CORE_ADDR *,
5734ee8b 1413 int, struct dwarf2_cu *);
c906108c 1414
72bf9492
DJ
1415static void add_partial_symbol (struct partial_die_info *,
1416 struct dwarf2_cu *);
63d06c5c 1417
72bf9492
DJ
1418static void add_partial_namespace (struct partial_die_info *pdi,
1419 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 1420 int set_addrmap, struct dwarf2_cu *cu);
63d06c5c 1421
5d7cb8df 1422static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
cdc07690 1423 CORE_ADDR *highpc, int set_addrmap,
5d7cb8df
JK
1424 struct dwarf2_cu *cu);
1425
72bf9492
DJ
1426static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1427 struct dwarf2_cu *cu);
91c24f0a 1428
bc30ff58
JB
1429static void add_partial_subprogram (struct partial_die_info *pdi,
1430 CORE_ADDR *lowpc, CORE_ADDR *highpc,
5734ee8b 1431 int need_pc, struct dwarf2_cu *cu);
bc30ff58 1432
257e7a09
YQ
1433static void dwarf2_read_symtab (struct partial_symtab *,
1434 struct objfile *);
c906108c 1435
a14ed312 1436static void psymtab_to_symtab_1 (struct partial_symtab *);
c906108c 1437
433df2d4
DE
1438static struct abbrev_info *abbrev_table_lookup_abbrev
1439 (const struct abbrev_table *, unsigned int);
1440
1441static struct abbrev_table *abbrev_table_read_table
1442 (struct dwarf2_section_info *, sect_offset);
1443
1444static void abbrev_table_free (struct abbrev_table *);
1445
f4dc4d17
DE
1446static void abbrev_table_free_cleanup (void *);
1447
dee91e82
DE
1448static void dwarf2_read_abbrevs (struct dwarf2_cu *,
1449 struct dwarf2_section_info *);
c906108c 1450
f3dd6933 1451static void dwarf2_free_abbrev_table (void *);
c906108c 1452
d521ce57 1453static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
6caca83c 1454
dee91e82 1455static struct partial_die_info *load_partial_dies
d521ce57 1456 (const struct die_reader_specs *, const gdb_byte *, int);
72bf9492 1457
d521ce57
TT
1458static const gdb_byte *read_partial_die (const struct die_reader_specs *,
1459 struct partial_die_info *,
1460 struct abbrev_info *,
1461 unsigned int,
1462 const gdb_byte *);
c906108c 1463
36586728 1464static struct partial_die_info *find_partial_die (sect_offset, int,
10b3939b 1465 struct dwarf2_cu *);
72bf9492
DJ
1466
1467static void fixup_partial_die (struct partial_die_info *,
1468 struct dwarf2_cu *);
1469
d521ce57
TT
1470static const gdb_byte *read_attribute (const struct die_reader_specs *,
1471 struct attribute *, struct attr_abbrev *,
1472 const gdb_byte *);
a8329558 1473
a1855c1d 1474static unsigned int read_1_byte (bfd *, const gdb_byte *);
c906108c 1475
a1855c1d 1476static int read_1_signed_byte (bfd *, const gdb_byte *);
c906108c 1477
a1855c1d 1478static unsigned int read_2_bytes (bfd *, const gdb_byte *);
c906108c 1479
a1855c1d 1480static unsigned int read_4_bytes (bfd *, const gdb_byte *);
c906108c 1481
a1855c1d 1482static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
c906108c 1483
d521ce57 1484static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
891d2f0b 1485 unsigned int *);
c906108c 1486
d521ce57 1487static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
c764a876
DE
1488
1489static LONGEST read_checked_initial_length_and_offset
d521ce57 1490 (bfd *, const gdb_byte *, const struct comp_unit_head *,
c764a876 1491 unsigned int *, unsigned int *);
613e1657 1492
d521ce57
TT
1493static LONGEST read_offset (bfd *, const gdb_byte *,
1494 const struct comp_unit_head *,
c764a876
DE
1495 unsigned int *);
1496
d521ce57 1497static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
613e1657 1498
f4dc4d17
DE
1499static sect_offset read_abbrev_offset (struct dwarf2_section_info *,
1500 sect_offset);
1501
d521ce57 1502static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
c906108c 1503
d521ce57 1504static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
c906108c 1505
d521ce57
TT
1506static const char *read_indirect_string (bfd *, const gdb_byte *,
1507 const struct comp_unit_head *,
1508 unsigned int *);
4bdf3d34 1509
d521ce57 1510static const char *read_indirect_string_from_dwz (struct dwz_file *, LONGEST);
36586728 1511
d521ce57 1512static ULONGEST read_unsigned_leb128 (bfd *, const gdb_byte *, unsigned int *);
c906108c 1513
d521ce57 1514static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
c906108c 1515
d521ce57
TT
1516static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1517 const gdb_byte *,
3019eac3
DE
1518 unsigned int *);
1519
d521ce57 1520static const char *read_str_index (const struct die_reader_specs *reader,
342587c4 1521 ULONGEST str_index);
3019eac3 1522
e142c38c 1523static void set_cu_language (unsigned int, struct dwarf2_cu *);
c906108c 1524
e142c38c
DJ
1525static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1526 struct dwarf2_cu *);
c906108c 1527
348e048f 1528static struct attribute *dwarf2_attr_no_follow (struct die_info *,
45e58e77 1529 unsigned int);
348e048f 1530
7d45c7c3
KB
1531static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1532 struct dwarf2_cu *cu);
1533
05cf31d1
JB
1534static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1535 struct dwarf2_cu *cu);
1536
e142c38c 1537static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
3ca72b44 1538
e142c38c 1539static struct die_info *die_specification (struct die_info *die,
f2f0e013 1540 struct dwarf2_cu **);
63d06c5c 1541
debd256d
JB
1542static void free_line_header (struct line_header *lh);
1543
3019eac3
DE
1544static struct line_header *dwarf_decode_line_header (unsigned int offset,
1545 struct dwarf2_cu *cu);
debd256d 1546
f3f5162e 1547static void dwarf_decode_lines (struct line_header *, const char *,
c3b7b696 1548 struct dwarf2_cu *, struct partial_symtab *,
527f3840 1549 CORE_ADDR, int decode_mapping);
c906108c 1550
4d663531 1551static void dwarf2_start_subfile (const char *, const char *);
c906108c 1552
43f3e411
DE
1553static struct compunit_symtab *dwarf2_start_symtab (struct dwarf2_cu *,
1554 const char *, const char *,
1555 CORE_ADDR);
f4dc4d17 1556
a14ed312 1557static struct symbol *new_symbol (struct die_info *, struct type *,
e7c27a73 1558 struct dwarf2_cu *);
c906108c 1559
34eaf542
TT
1560static struct symbol *new_symbol_full (struct die_info *, struct type *,
1561 struct dwarf2_cu *, struct symbol *);
1562
ff39bb5e 1563static void dwarf2_const_value (const struct attribute *, struct symbol *,
e7c27a73 1564 struct dwarf2_cu *);
c906108c 1565
ff39bb5e 1566static void dwarf2_const_value_attr (const struct attribute *attr,
98bfdba5
PA
1567 struct type *type,
1568 const char *name,
1569 struct obstack *obstack,
12df843f 1570 struct dwarf2_cu *cu, LONGEST *value,
d521ce57 1571 const gdb_byte **bytes,
98bfdba5 1572 struct dwarf2_locexpr_baton **baton);
2df3850c 1573
e7c27a73 1574static struct type *die_type (struct die_info *, struct dwarf2_cu *);
c906108c 1575
b4ba55a1
JB
1576static int need_gnat_info (struct dwarf2_cu *);
1577
3e43a32a
MS
1578static struct type *die_descriptive_type (struct die_info *,
1579 struct dwarf2_cu *);
b4ba55a1
JB
1580
1581static void set_descriptive_type (struct type *, struct die_info *,
1582 struct dwarf2_cu *);
1583
e7c27a73
DJ
1584static struct type *die_containing_type (struct die_info *,
1585 struct dwarf2_cu *);
c906108c 1586
ff39bb5e 1587static struct type *lookup_die_type (struct die_info *, const struct attribute *,
673bfd45 1588 struct dwarf2_cu *);
c906108c 1589
f792889a 1590static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
c906108c 1591
673bfd45
DE
1592static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1593
0d5cff50 1594static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
63d06c5c 1595
6e70227d 1596static char *typename_concat (struct obstack *obs, const char *prefix,
f55ee35c
JK
1597 const char *suffix, int physname,
1598 struct dwarf2_cu *cu);
63d06c5c 1599
e7c27a73 1600static void read_file_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1601
348e048f
DE
1602static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1603
e7c27a73 1604static void read_func_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1605
e7c27a73 1606static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1607
96408a79
SA
1608static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1609
ff013f42
JK
1610static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1611 struct dwarf2_cu *, struct partial_symtab *);
1612
3a2b436a 1613/* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
e385593e 1614 values. Keep the items ordered with increasing constraints compliance. */
3a2b436a
JK
1615enum pc_bounds_kind
1616{
e385593e 1617 /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found. */
3a2b436a
JK
1618 PC_BOUNDS_NOT_PRESENT,
1619
e385593e
JK
1620 /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1621 were present but they do not form a valid range of PC addresses. */
1622 PC_BOUNDS_INVALID,
1623
3a2b436a
JK
1624 /* Discontiguous range was found - that is DW_AT_ranges was found. */
1625 PC_BOUNDS_RANGES,
1626
1627 /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found. */
1628 PC_BOUNDS_HIGH_LOW,
1629};
1630
1631static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1632 CORE_ADDR *, CORE_ADDR *,
1633 struct dwarf2_cu *,
1634 struct partial_symtab *);
c906108c 1635
fae299cd
DC
1636static void get_scope_pc_bounds (struct die_info *,
1637 CORE_ADDR *, CORE_ADDR *,
1638 struct dwarf2_cu *);
1639
801e3a5b
JB
1640static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1641 CORE_ADDR, struct dwarf2_cu *);
1642
a14ed312 1643static void dwarf2_add_field (struct field_info *, struct die_info *,
e7c27a73 1644 struct dwarf2_cu *);
c906108c 1645
a14ed312 1646static void dwarf2_attach_fields_to_type (struct field_info *,
e7c27a73 1647 struct type *, struct dwarf2_cu *);
c906108c 1648
a14ed312 1649static void dwarf2_add_member_fn (struct field_info *,
e26fb1d7 1650 struct die_info *, struct type *,
e7c27a73 1651 struct dwarf2_cu *);
c906108c 1652
a14ed312 1653static void dwarf2_attach_fn_fields_to_type (struct field_info *,
3e43a32a
MS
1654 struct type *,
1655 struct dwarf2_cu *);
c906108c 1656
134d01f1 1657static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1658
e7c27a73 1659static void read_common_block (struct die_info *, struct dwarf2_cu *);
c906108c 1660
e7c27a73 1661static void read_namespace (struct die_info *die, struct dwarf2_cu *);
d9fa45fe 1662
5d7cb8df
JK
1663static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1664
22cee43f
PMR
1665static struct using_direct **using_directives (enum language);
1666
27aa8d6a
SW
1667static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1668
74921315
KS
1669static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1670
f55ee35c
JK
1671static struct type *read_module_type (struct die_info *die,
1672 struct dwarf2_cu *cu);
1673
38d518c9 1674static const char *namespace_name (struct die_info *die,
e142c38c 1675 int *is_anonymous, struct dwarf2_cu *);
38d518c9 1676
134d01f1 1677static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1678
e7c27a73 1679static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
c906108c 1680
6e70227d 1681static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
7ca2d3a3
DL
1682 struct dwarf2_cu *);
1683
bf6af496 1684static struct die_info *read_die_and_siblings_1
d521ce57 1685 (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
bf6af496 1686 struct die_info *);
639d11d3 1687
dee91e82 1688static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
d521ce57
TT
1689 const gdb_byte *info_ptr,
1690 const gdb_byte **new_info_ptr,
639d11d3
DC
1691 struct die_info *parent);
1692
d521ce57
TT
1693static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1694 struct die_info **, const gdb_byte *,
1695 int *, int);
3019eac3 1696
d521ce57
TT
1697static const gdb_byte *read_full_die (const struct die_reader_specs *,
1698 struct die_info **, const gdb_byte *,
1699 int *);
93311388 1700
e7c27a73 1701static void process_die (struct die_info *, struct dwarf2_cu *);
c906108c 1702
15d034d0
TT
1703static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1704 struct obstack *);
71c25dea 1705
15d034d0 1706static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
9219021c 1707
15d034d0 1708static const char *dwarf2_full_name (const char *name,
98bfdba5
PA
1709 struct die_info *die,
1710 struct dwarf2_cu *cu);
1711
ca69b9e6
DE
1712static const char *dwarf2_physname (const char *name, struct die_info *die,
1713 struct dwarf2_cu *cu);
1714
e142c38c 1715static struct die_info *dwarf2_extension (struct die_info *die,
f2f0e013 1716 struct dwarf2_cu **);
9219021c 1717
f39c6ffd 1718static const char *dwarf_tag_name (unsigned int);
c906108c 1719
f39c6ffd 1720static const char *dwarf_attr_name (unsigned int);
c906108c 1721
f39c6ffd 1722static const char *dwarf_form_name (unsigned int);
c906108c 1723
a14ed312 1724static char *dwarf_bool_name (unsigned int);
c906108c 1725
f39c6ffd 1726static const char *dwarf_type_encoding_name (unsigned int);
c906108c 1727
f9aca02d 1728static struct die_info *sibling_die (struct die_info *);
c906108c 1729
d97bc12b
DE
1730static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1731
1732static void dump_die_for_error (struct die_info *);
1733
1734static void dump_die_1 (struct ui_file *, int level, int max_level,
1735 struct die_info *);
c906108c 1736
d97bc12b 1737/*static*/ void dump_die (struct die_info *, int max_level);
c906108c 1738
51545339 1739static void store_in_ref_table (struct die_info *,
10b3939b 1740 struct dwarf2_cu *);
c906108c 1741
ff39bb5e 1742static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
c906108c 1743
ff39bb5e 1744static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
a02abb62 1745
348e048f 1746static struct die_info *follow_die_ref_or_sig (struct die_info *,
ff39bb5e 1747 const struct attribute *,
348e048f
DE
1748 struct dwarf2_cu **);
1749
10b3939b 1750static struct die_info *follow_die_ref (struct die_info *,
ff39bb5e 1751 const struct attribute *,
f2f0e013 1752 struct dwarf2_cu **);
c906108c 1753
348e048f 1754static struct die_info *follow_die_sig (struct die_info *,
ff39bb5e 1755 const struct attribute *,
348e048f
DE
1756 struct dwarf2_cu **);
1757
ac9ec31b
DE
1758static struct type *get_signatured_type (struct die_info *, ULONGEST,
1759 struct dwarf2_cu *);
1760
1761static struct type *get_DW_AT_signature_type (struct die_info *,
ff39bb5e 1762 const struct attribute *,
ac9ec31b
DE
1763 struct dwarf2_cu *);
1764
e5fe5e75 1765static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
348e048f 1766
52dc124a 1767static void read_signatured_type (struct signatured_type *);
348e048f 1768
63e43d3a
PMR
1769static int attr_to_dynamic_prop (const struct attribute *attr,
1770 struct die_info *die, struct dwarf2_cu *cu,
1771 struct dynamic_prop *prop);
1772
c906108c
SS
1773/* memory allocation interface */
1774
7b5a2f43 1775static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
c906108c 1776
b60c80d6 1777static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
c906108c 1778
43f3e411 1779static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
2e276125 1780
6e5a29e1 1781static int attr_form_is_block (const struct attribute *);
8e19ed76 1782
6e5a29e1 1783static int attr_form_is_section_offset (const struct attribute *);
3690dd37 1784
6e5a29e1 1785static int attr_form_is_constant (const struct attribute *);
3690dd37 1786
6e5a29e1 1787static int attr_form_is_ref (const struct attribute *);
7771576e 1788
8cf6f0b1
TT
1789static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1790 struct dwarf2_loclist_baton *baton,
ff39bb5e 1791 const struct attribute *attr);
8cf6f0b1 1792
ff39bb5e 1793static void dwarf2_symbol_mark_computed (const struct attribute *attr,
93e7bd98 1794 struct symbol *sym,
f1e6e072
TT
1795 struct dwarf2_cu *cu,
1796 int is_block);
4c2df51b 1797
d521ce57
TT
1798static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1799 const gdb_byte *info_ptr,
1800 struct abbrev_info *abbrev);
4bb7a0a7 1801
72bf9492
DJ
1802static void free_stack_comp_unit (void *);
1803
72bf9492
DJ
1804static hashval_t partial_die_hash (const void *item);
1805
1806static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1807
ae038cb0 1808static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
36586728 1809 (sect_offset offset, unsigned int offset_in_dwz, struct objfile *objfile);
ae038cb0 1810
9816fde3 1811static void init_one_comp_unit (struct dwarf2_cu *cu,
23745b47 1812 struct dwarf2_per_cu_data *per_cu);
9816fde3
JK
1813
1814static void prepare_one_comp_unit (struct dwarf2_cu *cu,
95554aad
TT
1815 struct die_info *comp_unit_die,
1816 enum language pretend_language);
93311388 1817
68dc6402 1818static void free_heap_comp_unit (void *);
ae038cb0
DJ
1819
1820static void free_cached_comp_units (void *);
1821
1822static void age_cached_comp_units (void);
1823
dee91e82 1824static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
ae038cb0 1825
f792889a
DJ
1826static struct type *set_die_type (struct die_info *, struct type *,
1827 struct dwarf2_cu *);
1c379e20 1828
ae038cb0
DJ
1829static void create_all_comp_units (struct objfile *);
1830
0e50663e 1831static int create_all_type_units (struct objfile *);
1fd400ff 1832
95554aad
TT
1833static void load_full_comp_unit (struct dwarf2_per_cu_data *,
1834 enum language);
10b3939b 1835
95554aad
TT
1836static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1837 enum language);
10b3939b 1838
f4dc4d17
DE
1839static void process_full_type_unit (struct dwarf2_per_cu_data *,
1840 enum language);
1841
10b3939b
DJ
1842static void dwarf2_add_dependence (struct dwarf2_cu *,
1843 struct dwarf2_per_cu_data *);
1844
ae038cb0
DJ
1845static void dwarf2_mark (struct dwarf2_cu *);
1846
1847static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1848
b64f50a1 1849static struct type *get_die_type_at_offset (sect_offset,
ac9ec31b 1850 struct dwarf2_per_cu_data *);
673bfd45 1851
f792889a 1852static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
72019c9c 1853
9291a0cd
TT
1854static void dwarf2_release_queue (void *dummy);
1855
95554aad
TT
1856static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1857 enum language pretend_language);
1858
a0f42c21 1859static void process_queue (void);
9291a0cd
TT
1860
1861static void find_file_and_directory (struct die_info *die,
1862 struct dwarf2_cu *cu,
15d034d0 1863 const char **name, const char **comp_dir);
9291a0cd
TT
1864
1865static char *file_full_name (int file, struct line_header *lh,
1866 const char *comp_dir);
1867
d521ce57 1868static const gdb_byte *read_and_check_comp_unit_head
36586728
TT
1869 (struct comp_unit_head *header,
1870 struct dwarf2_section_info *section,
d521ce57 1871 struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
36586728
TT
1872 int is_debug_types_section);
1873
fd820528 1874static void init_cutu_and_read_dies
f4dc4d17
DE
1875 (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1876 int use_existing_cu, int keep,
3019eac3
DE
1877 die_reader_func_ftype *die_reader_func, void *data);
1878
dee91e82
DE
1879static void init_cutu_and_read_dies_simple
1880 (struct dwarf2_per_cu_data *this_cu,
1881 die_reader_func_ftype *die_reader_func, void *data);
9291a0cd 1882
673bfd45 1883static htab_t allocate_signatured_type_table (struct objfile *objfile);
1fd400ff 1884
3019eac3
DE
1885static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1886
57d63ce2
DE
1887static struct dwo_unit *lookup_dwo_unit_in_dwp
1888 (struct dwp_file *dwp_file, const char *comp_dir,
1889 ULONGEST signature, int is_debug_types);
a2ce51a0
DE
1890
1891static struct dwp_file *get_dwp_file (void);
1892
3019eac3 1893static struct dwo_unit *lookup_dwo_comp_unit
a1855c1d 1894 (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
3019eac3
DE
1895
1896static struct dwo_unit *lookup_dwo_type_unit
a1855c1d 1897 (struct signatured_type *, const char *, const char *);
3019eac3 1898
89e63ee4
DE
1899static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1900
3019eac3
DE
1901static void free_dwo_file_cleanup (void *);
1902
95554aad
TT
1903static void process_cu_includes (void);
1904
1b80a9fa 1905static void check_producer (struct dwarf2_cu *cu);
527f3840
JK
1906
1907static void free_line_header_voidp (void *arg);
4390d890
DE
1908\f
1909/* Various complaints about symbol reading that don't abort the process. */
1910
1911static void
1912dwarf2_statement_list_fits_in_line_number_section_complaint (void)
1913{
1914 complaint (&symfile_complaints,
1915 _("statement list doesn't fit in .debug_line section"));
1916}
1917
1918static void
1919dwarf2_debug_line_missing_file_complaint (void)
1920{
1921 complaint (&symfile_complaints,
1922 _(".debug_line section has line data without a file"));
1923}
1924
1925static void
1926dwarf2_debug_line_missing_end_sequence_complaint (void)
1927{
1928 complaint (&symfile_complaints,
1929 _(".debug_line section has line "
1930 "program sequence without an end"));
1931}
1932
1933static void
1934dwarf2_complex_location_expr_complaint (void)
1935{
1936 complaint (&symfile_complaints, _("location expression too complex"));
1937}
1938
1939static void
1940dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
1941 int arg3)
1942{
1943 complaint (&symfile_complaints,
1944 _("const value length mismatch for '%s', got %d, expected %d"),
1945 arg1, arg2, arg3);
1946}
1947
1948static void
1949dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
1950{
1951 complaint (&symfile_complaints,
1952 _("debug info runs off end of %s section"
1953 " [in module %s]"),
a32a8923
DE
1954 get_section_name (section),
1955 get_section_file_name (section));
4390d890 1956}
1b80a9fa 1957
4390d890
DE
1958static void
1959dwarf2_macro_malformed_definition_complaint (const char *arg1)
1960{
1961 complaint (&symfile_complaints,
1962 _("macro debug info contains a "
1963 "malformed macro definition:\n`%s'"),
1964 arg1);
1965}
1966
1967static void
1968dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
1969{
1970 complaint (&symfile_complaints,
1971 _("invalid attribute class or form for '%s' in '%s'"),
1972 arg1, arg2);
1973}
527f3840
JK
1974
1975/* Hash function for line_header_hash. */
1976
1977static hashval_t
1978line_header_hash (const struct line_header *ofs)
1979{
1980 return ofs->offset.sect_off ^ ofs->offset_in_dwz;
1981}
1982
1983/* Hash function for htab_create_alloc_ex for line_header_hash. */
1984
1985static hashval_t
1986line_header_hash_voidp (const void *item)
1987{
9a3c8263 1988 const struct line_header *ofs = (const struct line_header *) item;
527f3840
JK
1989
1990 return line_header_hash (ofs);
1991}
1992
1993/* Equality function for line_header_hash. */
1994
1995static int
1996line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
1997{
9a3c8263
SM
1998 const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
1999 const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
527f3840
JK
2000
2001 return (ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off
2002 && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
2003}
2004
4390d890 2005\f
9291a0cd
TT
2006#if WORDS_BIGENDIAN
2007
2008/* Convert VALUE between big- and little-endian. */
2009static offset_type
2010byte_swap (offset_type value)
2011{
2012 offset_type result;
2013
2014 result = (value & 0xff) << 24;
2015 result |= (value & 0xff00) << 8;
2016 result |= (value & 0xff0000) >> 8;
2017 result |= (value & 0xff000000) >> 24;
2018 return result;
2019}
2020
2021#define MAYBE_SWAP(V) byte_swap (V)
2022
2023#else
2024#define MAYBE_SWAP(V) (V)
2025#endif /* WORDS_BIGENDIAN */
2026
31aa7e4e
JB
2027/* Read the given attribute value as an address, taking the attribute's
2028 form into account. */
2029
2030static CORE_ADDR
2031attr_value_as_address (struct attribute *attr)
2032{
2033 CORE_ADDR addr;
2034
2035 if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
2036 {
2037 /* Aside from a few clearly defined exceptions, attributes that
2038 contain an address must always be in DW_FORM_addr form.
2039 Unfortunately, some compilers happen to be violating this
2040 requirement by encoding addresses using other forms, such
2041 as DW_FORM_data4 for example. For those broken compilers,
2042 we try to do our best, without any guarantee of success,
2043 to interpret the address correctly. It would also be nice
2044 to generate a complaint, but that would require us to maintain
2045 a list of legitimate cases where a non-address form is allowed,
2046 as well as update callers to pass in at least the CU's DWARF
2047 version. This is more overhead than what we're willing to
2048 expand for a pretty rare case. */
2049 addr = DW_UNSND (attr);
2050 }
2051 else
2052 addr = DW_ADDR (attr);
2053
2054 return addr;
2055}
2056
9291a0cd
TT
2057/* The suffix for an index file. */
2058#define INDEX_SUFFIX ".gdb-index"
2059
c906108c 2060/* Try to locate the sections we need for DWARF 2 debugging
251d32d9
TG
2061 information and return true if we have enough to do something.
2062 NAMES points to the dwarf2 section names, or is NULL if the standard
2063 ELF names are used. */
c906108c
SS
2064
2065int
251d32d9
TG
2066dwarf2_has_info (struct objfile *objfile,
2067 const struct dwarf2_debug_sections *names)
c906108c 2068{
9a3c8263
SM
2069 dwarf2_per_objfile = ((struct dwarf2_per_objfile *)
2070 objfile_data (objfile, dwarf2_objfile_data_key));
be391dca
TT
2071 if (!dwarf2_per_objfile)
2072 {
2073 /* Initialize per-objfile state. */
2074 struct dwarf2_per_objfile *data
8d749320 2075 = XOBNEW (&objfile->objfile_obstack, struct dwarf2_per_objfile);
9a619af0 2076
be391dca
TT
2077 memset (data, 0, sizeof (*data));
2078 set_objfile_data (objfile, dwarf2_objfile_data_key, data);
2079 dwarf2_per_objfile = data;
6502dd73 2080
251d32d9
TG
2081 bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections,
2082 (void *) names);
be391dca
TT
2083 dwarf2_per_objfile->objfile = objfile;
2084 }
73869dc2 2085 return (!dwarf2_per_objfile->info.is_virtual
049412e3 2086 && dwarf2_per_objfile->info.s.section != NULL
73869dc2 2087 && !dwarf2_per_objfile->abbrev.is_virtual
049412e3 2088 && dwarf2_per_objfile->abbrev.s.section != NULL);
73869dc2
DE
2089}
2090
2091/* Return the containing section of virtual section SECTION. */
2092
2093static struct dwarf2_section_info *
2094get_containing_section (const struct dwarf2_section_info *section)
2095{
2096 gdb_assert (section->is_virtual);
2097 return section->s.containing_section;
c906108c
SS
2098}
2099
a32a8923
DE
2100/* Return the bfd owner of SECTION. */
2101
2102static struct bfd *
2103get_section_bfd_owner (const struct dwarf2_section_info *section)
2104{
73869dc2
DE
2105 if (section->is_virtual)
2106 {
2107 section = get_containing_section (section);
2108 gdb_assert (!section->is_virtual);
2109 }
049412e3 2110 return section->s.section->owner;
a32a8923
DE
2111}
2112
2113/* Return the bfd section of SECTION.
2114 Returns NULL if the section is not present. */
2115
2116static asection *
2117get_section_bfd_section (const struct dwarf2_section_info *section)
2118{
73869dc2
DE
2119 if (section->is_virtual)
2120 {
2121 section = get_containing_section (section);
2122 gdb_assert (!section->is_virtual);
2123 }
049412e3 2124 return section->s.section;
a32a8923
DE
2125}
2126
2127/* Return the name of SECTION. */
2128
2129static const char *
2130get_section_name (const struct dwarf2_section_info *section)
2131{
2132 asection *sectp = get_section_bfd_section (section);
2133
2134 gdb_assert (sectp != NULL);
2135 return bfd_section_name (get_section_bfd_owner (section), sectp);
2136}
2137
2138/* Return the name of the file SECTION is in. */
2139
2140static const char *
2141get_section_file_name (const struct dwarf2_section_info *section)
2142{
2143 bfd *abfd = get_section_bfd_owner (section);
2144
2145 return bfd_get_filename (abfd);
2146}
2147
2148/* Return the id of SECTION.
2149 Returns 0 if SECTION doesn't exist. */
2150
2151static int
2152get_section_id (const struct dwarf2_section_info *section)
2153{
2154 asection *sectp = get_section_bfd_section (section);
2155
2156 if (sectp == NULL)
2157 return 0;
2158 return sectp->id;
2159}
2160
2161/* Return the flags of SECTION.
73869dc2 2162 SECTION (or containing section if this is a virtual section) must exist. */
a32a8923
DE
2163
2164static int
2165get_section_flags (const struct dwarf2_section_info *section)
2166{
2167 asection *sectp = get_section_bfd_section (section);
2168
2169 gdb_assert (sectp != NULL);
2170 return bfd_get_section_flags (sectp->owner, sectp);
2171}
2172
251d32d9
TG
2173/* When loading sections, we look either for uncompressed section or for
2174 compressed section names. */
233a11ab
CS
2175
2176static int
251d32d9
TG
2177section_is_p (const char *section_name,
2178 const struct dwarf2_section_names *names)
233a11ab 2179{
251d32d9
TG
2180 if (names->normal != NULL
2181 && strcmp (section_name, names->normal) == 0)
2182 return 1;
2183 if (names->compressed != NULL
2184 && strcmp (section_name, names->compressed) == 0)
2185 return 1;
2186 return 0;
233a11ab
CS
2187}
2188
c906108c
SS
2189/* This function is mapped across the sections and remembers the
2190 offset and size of each of the debugging sections we are interested
2191 in. */
2192
2193static void
251d32d9 2194dwarf2_locate_sections (bfd *abfd, asection *sectp, void *vnames)
c906108c 2195{
251d32d9 2196 const struct dwarf2_debug_sections *names;
dc7650b8 2197 flagword aflag = bfd_get_section_flags (abfd, sectp);
251d32d9
TG
2198
2199 if (vnames == NULL)
2200 names = &dwarf2_elf_names;
2201 else
2202 names = (const struct dwarf2_debug_sections *) vnames;
2203
dc7650b8
JK
2204 if ((aflag & SEC_HAS_CONTENTS) == 0)
2205 {
2206 }
2207 else if (section_is_p (sectp->name, &names->info))
c906108c 2208 {
049412e3 2209 dwarf2_per_objfile->info.s.section = sectp;
dce234bc 2210 dwarf2_per_objfile->info.size = bfd_get_section_size (sectp);
c906108c 2211 }
251d32d9 2212 else if (section_is_p (sectp->name, &names->abbrev))
c906108c 2213 {
049412e3 2214 dwarf2_per_objfile->abbrev.s.section = sectp;
dce234bc 2215 dwarf2_per_objfile->abbrev.size = bfd_get_section_size (sectp);
c906108c 2216 }
251d32d9 2217 else if (section_is_p (sectp->name, &names->line))
c906108c 2218 {
049412e3 2219 dwarf2_per_objfile->line.s.section = sectp;
dce234bc 2220 dwarf2_per_objfile->line.size = bfd_get_section_size (sectp);
c906108c 2221 }
251d32d9 2222 else if (section_is_p (sectp->name, &names->loc))
c906108c 2223 {
049412e3 2224 dwarf2_per_objfile->loc.s.section = sectp;
dce234bc 2225 dwarf2_per_objfile->loc.size = bfd_get_section_size (sectp);
c906108c 2226 }
251d32d9 2227 else if (section_is_p (sectp->name, &names->macinfo))
c906108c 2228 {
049412e3 2229 dwarf2_per_objfile->macinfo.s.section = sectp;
dce234bc 2230 dwarf2_per_objfile->macinfo.size = bfd_get_section_size (sectp);
c906108c 2231 }
cf2c3c16
TT
2232 else if (section_is_p (sectp->name, &names->macro))
2233 {
049412e3 2234 dwarf2_per_objfile->macro.s.section = sectp;
cf2c3c16
TT
2235 dwarf2_per_objfile->macro.size = bfd_get_section_size (sectp);
2236 }
251d32d9 2237 else if (section_is_p (sectp->name, &names->str))
c906108c 2238 {
049412e3 2239 dwarf2_per_objfile->str.s.section = sectp;
dce234bc 2240 dwarf2_per_objfile->str.size = bfd_get_section_size (sectp);
c906108c 2241 }
3019eac3
DE
2242 else if (section_is_p (sectp->name, &names->addr))
2243 {
049412e3 2244 dwarf2_per_objfile->addr.s.section = sectp;
3019eac3
DE
2245 dwarf2_per_objfile->addr.size = bfd_get_section_size (sectp);
2246 }
251d32d9 2247 else if (section_is_p (sectp->name, &names->frame))
b6af0555 2248 {
049412e3 2249 dwarf2_per_objfile->frame.s.section = sectp;
dce234bc 2250 dwarf2_per_objfile->frame.size = bfd_get_section_size (sectp);
b6af0555 2251 }
251d32d9 2252 else if (section_is_p (sectp->name, &names->eh_frame))
b6af0555 2253 {
049412e3 2254 dwarf2_per_objfile->eh_frame.s.section = sectp;
dc7650b8 2255 dwarf2_per_objfile->eh_frame.size = bfd_get_section_size (sectp);
b6af0555 2256 }
251d32d9 2257 else if (section_is_p (sectp->name, &names->ranges))
af34e669 2258 {
049412e3 2259 dwarf2_per_objfile->ranges.s.section = sectp;
dce234bc 2260 dwarf2_per_objfile->ranges.size = bfd_get_section_size (sectp);
af34e669 2261 }
251d32d9 2262 else if (section_is_p (sectp->name, &names->types))
348e048f 2263 {
8b70b953
TT
2264 struct dwarf2_section_info type_section;
2265
2266 memset (&type_section, 0, sizeof (type_section));
049412e3 2267 type_section.s.section = sectp;
8b70b953
TT
2268 type_section.size = bfd_get_section_size (sectp);
2269
2270 VEC_safe_push (dwarf2_section_info_def, dwarf2_per_objfile->types,
2271 &type_section);
348e048f 2272 }
251d32d9 2273 else if (section_is_p (sectp->name, &names->gdb_index))
9291a0cd 2274 {
049412e3 2275 dwarf2_per_objfile->gdb_index.s.section = sectp;
9291a0cd
TT
2276 dwarf2_per_objfile->gdb_index.size = bfd_get_section_size (sectp);
2277 }
dce234bc 2278
b4e1fd61 2279 if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
72dca2f5
FR
2280 && bfd_section_vma (abfd, sectp) == 0)
2281 dwarf2_per_objfile->has_section_at_zero = 1;
c906108c
SS
2282}
2283
fceca515
DE
2284/* A helper function that decides whether a section is empty,
2285 or not present. */
9e0ac564
TT
2286
2287static int
19ac8c2e 2288dwarf2_section_empty_p (const struct dwarf2_section_info *section)
9e0ac564 2289{
73869dc2
DE
2290 if (section->is_virtual)
2291 return section->size == 0;
049412e3 2292 return section->s.section == NULL || section->size == 0;
9e0ac564
TT
2293}
2294
3019eac3
DE
2295/* Read the contents of the section INFO.
2296 OBJFILE is the main object file, but not necessarily the file where
a32a8923
DE
2297 the section comes from. E.g., for DWO files the bfd of INFO is the bfd
2298 of the DWO file.
dce234bc 2299 If the section is compressed, uncompress it before returning. */
c906108c 2300
dce234bc
PP
2301static void
2302dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info)
c906108c 2303{
a32a8923 2304 asection *sectp;
3019eac3 2305 bfd *abfd;
dce234bc 2306 gdb_byte *buf, *retbuf;
c906108c 2307
be391dca
TT
2308 if (info->readin)
2309 return;
dce234bc 2310 info->buffer = NULL;
be391dca 2311 info->readin = 1;
188dd5d6 2312
9e0ac564 2313 if (dwarf2_section_empty_p (info))
dce234bc 2314 return;
c906108c 2315
a32a8923 2316 sectp = get_section_bfd_section (info);
3019eac3 2317
73869dc2
DE
2318 /* If this is a virtual section we need to read in the real one first. */
2319 if (info->is_virtual)
2320 {
2321 struct dwarf2_section_info *containing_section =
2322 get_containing_section (info);
2323
2324 gdb_assert (sectp != NULL);
2325 if ((sectp->flags & SEC_RELOC) != 0)
2326 {
2327 error (_("Dwarf Error: DWP format V2 with relocations is not"
2328 " supported in section %s [in module %s]"),
2329 get_section_name (info), get_section_file_name (info));
2330 }
2331 dwarf2_read_section (objfile, containing_section);
2332 /* Other code should have already caught virtual sections that don't
2333 fit. */
2334 gdb_assert (info->virtual_offset + info->size
2335 <= containing_section->size);
2336 /* If the real section is empty or there was a problem reading the
2337 section we shouldn't get here. */
2338 gdb_assert (containing_section->buffer != NULL);
2339 info->buffer = containing_section->buffer + info->virtual_offset;
2340 return;
2341 }
2342
4bf44c1c
TT
2343 /* If the section has relocations, we must read it ourselves.
2344 Otherwise we attach it to the BFD. */
2345 if ((sectp->flags & SEC_RELOC) == 0)
dce234bc 2346 {
d521ce57 2347 info->buffer = gdb_bfd_map_section (sectp, &info->size);
4bf44c1c 2348 return;
dce234bc 2349 }
dce234bc 2350
224c3ddb 2351 buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
4bf44c1c 2352 info->buffer = buf;
dce234bc
PP
2353
2354 /* When debugging .o files, we may need to apply relocations; see
2355 http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2356 We never compress sections in .o files, so we only need to
2357 try this when the section is not compressed. */
ac8035ab 2358 retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
dce234bc
PP
2359 if (retbuf != NULL)
2360 {
2361 info->buffer = retbuf;
2362 return;
2363 }
2364
a32a8923
DE
2365 abfd = get_section_bfd_owner (info);
2366 gdb_assert (abfd != NULL);
2367
dce234bc
PP
2368 if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2369 || bfd_bread (buf, info->size, abfd) != info->size)
19ac8c2e
DE
2370 {
2371 error (_("Dwarf Error: Can't read DWARF data"
2372 " in section %s [in module %s]"),
2373 bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2374 }
dce234bc
PP
2375}
2376
9e0ac564
TT
2377/* A helper function that returns the size of a section in a safe way.
2378 If you are positive that the section has been read before using the
2379 size, then it is safe to refer to the dwarf2_section_info object's
2380 "size" field directly. In other cases, you must call this
2381 function, because for compressed sections the size field is not set
2382 correctly until the section has been read. */
2383
2384static bfd_size_type
2385dwarf2_section_size (struct objfile *objfile,
2386 struct dwarf2_section_info *info)
2387{
2388 if (!info->readin)
2389 dwarf2_read_section (objfile, info);
2390 return info->size;
2391}
2392
dce234bc 2393/* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
0963b4bd 2394 SECTION_NAME. */
af34e669 2395
dce234bc 2396void
3017a003
TG
2397dwarf2_get_section_info (struct objfile *objfile,
2398 enum dwarf2_section_enum sect,
d521ce57 2399 asection **sectp, const gdb_byte **bufp,
dce234bc
PP
2400 bfd_size_type *sizep)
2401{
2402 struct dwarf2_per_objfile *data
9a3c8263
SM
2403 = (struct dwarf2_per_objfile *) objfile_data (objfile,
2404 dwarf2_objfile_data_key);
dce234bc 2405 struct dwarf2_section_info *info;
a3b2a86b
TT
2406
2407 /* We may see an objfile without any DWARF, in which case we just
2408 return nothing. */
2409 if (data == NULL)
2410 {
2411 *sectp = NULL;
2412 *bufp = NULL;
2413 *sizep = 0;
2414 return;
2415 }
3017a003
TG
2416 switch (sect)
2417 {
2418 case DWARF2_DEBUG_FRAME:
2419 info = &data->frame;
2420 break;
2421 case DWARF2_EH_FRAME:
2422 info = &data->eh_frame;
2423 break;
2424 default:
2425 gdb_assert_not_reached ("unexpected section");
2426 }
dce234bc 2427
9e0ac564 2428 dwarf2_read_section (objfile, info);
dce234bc 2429
a32a8923 2430 *sectp = get_section_bfd_section (info);
dce234bc
PP
2431 *bufp = info->buffer;
2432 *sizep = info->size;
2433}
2434
36586728
TT
2435/* A helper function to find the sections for a .dwz file. */
2436
2437static void
2438locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2439{
9a3c8263 2440 struct dwz_file *dwz_file = (struct dwz_file *) arg;
36586728
TT
2441
2442 /* Note that we only support the standard ELF names, because .dwz
2443 is ELF-only (at the time of writing). */
2444 if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2445 {
049412e3 2446 dwz_file->abbrev.s.section = sectp;
36586728
TT
2447 dwz_file->abbrev.size = bfd_get_section_size (sectp);
2448 }
2449 else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2450 {
049412e3 2451 dwz_file->info.s.section = sectp;
36586728
TT
2452 dwz_file->info.size = bfd_get_section_size (sectp);
2453 }
2454 else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2455 {
049412e3 2456 dwz_file->str.s.section = sectp;
36586728
TT
2457 dwz_file->str.size = bfd_get_section_size (sectp);
2458 }
2459 else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2460 {
049412e3 2461 dwz_file->line.s.section = sectp;
36586728
TT
2462 dwz_file->line.size = bfd_get_section_size (sectp);
2463 }
2464 else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2465 {
049412e3 2466 dwz_file->macro.s.section = sectp;
36586728
TT
2467 dwz_file->macro.size = bfd_get_section_size (sectp);
2468 }
2ec9a5e0
TT
2469 else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2470 {
049412e3 2471 dwz_file->gdb_index.s.section = sectp;
2ec9a5e0
TT
2472 dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2473 }
36586728
TT
2474}
2475
4db1a1dc
TT
2476/* Open the separate '.dwz' debug file, if needed. Return NULL if
2477 there is no .gnu_debugaltlink section in the file. Error if there
2478 is such a section but the file cannot be found. */
36586728
TT
2479
2480static struct dwz_file *
2481dwarf2_get_dwz_file (void)
2482{
4db1a1dc 2483 char *data;
36586728
TT
2484 struct cleanup *cleanup;
2485 const char *filename;
2486 struct dwz_file *result;
acd13123 2487 bfd_size_type buildid_len_arg;
dc294be5
TT
2488 size_t buildid_len;
2489 bfd_byte *buildid;
36586728
TT
2490
2491 if (dwarf2_per_objfile->dwz_file != NULL)
2492 return dwarf2_per_objfile->dwz_file;
2493
4db1a1dc
TT
2494 bfd_set_error (bfd_error_no_error);
2495 data = bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
acd13123 2496 &buildid_len_arg, &buildid);
4db1a1dc
TT
2497 if (data == NULL)
2498 {
2499 if (bfd_get_error () == bfd_error_no_error)
2500 return NULL;
2501 error (_("could not read '.gnu_debugaltlink' section: %s"),
2502 bfd_errmsg (bfd_get_error ()));
2503 }
36586728 2504 cleanup = make_cleanup (xfree, data);
dc294be5 2505 make_cleanup (xfree, buildid);
36586728 2506
acd13123
TT
2507 buildid_len = (size_t) buildid_len_arg;
2508
f9d83a0b 2509 filename = (const char *) data;
36586728
TT
2510 if (!IS_ABSOLUTE_PATH (filename))
2511 {
4262abfb 2512 char *abs = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
36586728
TT
2513 char *rel;
2514
2515 make_cleanup (xfree, abs);
2516 abs = ldirname (abs);
2517 make_cleanup (xfree, abs);
2518
2519 rel = concat (abs, SLASH_STRING, filename, (char *) NULL);
2520 make_cleanup (xfree, rel);
2521 filename = rel;
2522 }
2523
dc294be5
TT
2524 /* First try the file name given in the section. If that doesn't
2525 work, try to use the build-id instead. */
192b62ce 2526 gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
dc294be5 2527 if (dwz_bfd != NULL)
36586728 2528 {
192b62ce
TT
2529 if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
2530 dwz_bfd.release ();
36586728
TT
2531 }
2532
dc294be5
TT
2533 if (dwz_bfd == NULL)
2534 dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2535
2536 if (dwz_bfd == NULL)
2537 error (_("could not find '.gnu_debugaltlink' file for %s"),
2538 objfile_name (dwarf2_per_objfile->objfile));
2539
36586728
TT
2540 result = OBSTACK_ZALLOC (&dwarf2_per_objfile->objfile->objfile_obstack,
2541 struct dwz_file);
192b62ce 2542 result->dwz_bfd = dwz_bfd.release ();
36586728 2543
192b62ce 2544 bfd_map_over_sections (result->dwz_bfd, locate_dwz_sections, result);
36586728
TT
2545
2546 do_cleanups (cleanup);
2547
192b62ce 2548 gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, result->dwz_bfd);
8d2cc612 2549 dwarf2_per_objfile->dwz_file = result;
36586728
TT
2550 return result;
2551}
9291a0cd 2552\f
7b9f3c50
DE
2553/* DWARF quick_symbols_functions support. */
2554
2555/* TUs can share .debug_line entries, and there can be a lot more TUs than
2556 unique line tables, so we maintain a separate table of all .debug_line
2557 derived entries to support the sharing.
2558 All the quick functions need is the list of file names. We discard the
2559 line_header when we're done and don't need to record it here. */
2560struct quick_file_names
2561{
094b34ac
DE
2562 /* The data used to construct the hash key. */
2563 struct stmt_list_hash hash;
7b9f3c50
DE
2564
2565 /* The number of entries in file_names, real_names. */
2566 unsigned int num_file_names;
2567
2568 /* The file names from the line table, after being run through
2569 file_full_name. */
2570 const char **file_names;
2571
2572 /* The file names from the line table after being run through
2573 gdb_realpath. These are computed lazily. */
2574 const char **real_names;
2575};
2576
2577/* When using the index (and thus not using psymtabs), each CU has an
2578 object of this type. This is used to hold information needed by
2579 the various "quick" methods. */
2580struct dwarf2_per_cu_quick_data
2581{
2582 /* The file table. This can be NULL if there was no file table
2583 or it's currently not read in.
2584 NOTE: This points into dwarf2_per_objfile->quick_file_names_table. */
2585 struct quick_file_names *file_names;
2586
2587 /* The corresponding symbol table. This is NULL if symbols for this
2588 CU have not yet been read. */
43f3e411 2589 struct compunit_symtab *compunit_symtab;
7b9f3c50
DE
2590
2591 /* A temporary mark bit used when iterating over all CUs in
2592 expand_symtabs_matching. */
2593 unsigned int mark : 1;
2594
2595 /* True if we've tried to read the file table and found there isn't one.
2596 There will be no point in trying to read it again next time. */
2597 unsigned int no_file_data : 1;
2598};
2599
094b34ac
DE
2600/* Utility hash function for a stmt_list_hash. */
2601
2602static hashval_t
2603hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2604{
2605 hashval_t v = 0;
2606
2607 if (stmt_list_hash->dwo_unit != NULL)
2608 v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2609 v += stmt_list_hash->line_offset.sect_off;
2610 return v;
2611}
2612
2613/* Utility equality function for a stmt_list_hash. */
2614
2615static int
2616eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2617 const struct stmt_list_hash *rhs)
2618{
2619 if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2620 return 0;
2621 if (lhs->dwo_unit != NULL
2622 && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2623 return 0;
2624
2625 return lhs->line_offset.sect_off == rhs->line_offset.sect_off;
2626}
2627
7b9f3c50
DE
2628/* Hash function for a quick_file_names. */
2629
2630static hashval_t
2631hash_file_name_entry (const void *e)
2632{
9a3c8263
SM
2633 const struct quick_file_names *file_data
2634 = (const struct quick_file_names *) e;
7b9f3c50 2635
094b34ac 2636 return hash_stmt_list_entry (&file_data->hash);
7b9f3c50
DE
2637}
2638
2639/* Equality function for a quick_file_names. */
2640
2641static int
2642eq_file_name_entry (const void *a, const void *b)
2643{
9a3c8263
SM
2644 const struct quick_file_names *ea = (const struct quick_file_names *) a;
2645 const struct quick_file_names *eb = (const struct quick_file_names *) b;
7b9f3c50 2646
094b34ac 2647 return eq_stmt_list_entry (&ea->hash, &eb->hash);
7b9f3c50
DE
2648}
2649
2650/* Delete function for a quick_file_names. */
2651
2652static void
2653delete_file_name_entry (void *e)
2654{
9a3c8263 2655 struct quick_file_names *file_data = (struct quick_file_names *) e;
7b9f3c50
DE
2656 int i;
2657
2658 for (i = 0; i < file_data->num_file_names; ++i)
2659 {
2660 xfree ((void*) file_data->file_names[i]);
2661 if (file_data->real_names)
2662 xfree ((void*) file_data->real_names[i]);
2663 }
2664
2665 /* The space for the struct itself lives on objfile_obstack,
2666 so we don't free it here. */
2667}
2668
2669/* Create a quick_file_names hash table. */
2670
2671static htab_t
2672create_quick_file_names_table (unsigned int nr_initial_entries)
2673{
2674 return htab_create_alloc (nr_initial_entries,
2675 hash_file_name_entry, eq_file_name_entry,
2676 delete_file_name_entry, xcalloc, xfree);
2677}
9291a0cd 2678
918dd910
JK
2679/* Read in PER_CU->CU. This function is unrelated to symtabs, symtab would
2680 have to be created afterwards. You should call age_cached_comp_units after
2681 processing PER_CU->CU. dw2_setup must have been already called. */
2682
2683static void
2684load_cu (struct dwarf2_per_cu_data *per_cu)
2685{
3019eac3 2686 if (per_cu->is_debug_types)
e5fe5e75 2687 load_full_type_unit (per_cu);
918dd910 2688 else
95554aad 2689 load_full_comp_unit (per_cu, language_minimal);
918dd910 2690
cc12ce38
DE
2691 if (per_cu->cu == NULL)
2692 return; /* Dummy CU. */
2dc860c0
DE
2693
2694 dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
918dd910
JK
2695}
2696
a0f42c21 2697/* Read in the symbols for PER_CU. */
2fdf6df6 2698
9291a0cd 2699static void
a0f42c21 2700dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
9291a0cd
TT
2701{
2702 struct cleanup *back_to;
2703
f4dc4d17
DE
2704 /* Skip type_unit_groups, reading the type units they contain
2705 is handled elsewhere. */
2706 if (IS_TYPE_UNIT_GROUP (per_cu))
2707 return;
2708
9291a0cd
TT
2709 back_to = make_cleanup (dwarf2_release_queue, NULL);
2710
95554aad 2711 if (dwarf2_per_objfile->using_index
43f3e411 2712 ? per_cu->v.quick->compunit_symtab == NULL
95554aad
TT
2713 : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2714 {
2715 queue_comp_unit (per_cu, language_minimal);
2716 load_cu (per_cu);
89e63ee4
DE
2717
2718 /* If we just loaded a CU from a DWO, and we're working with an index
2719 that may badly handle TUs, load all the TUs in that DWO as well.
2720 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
2721 if (!per_cu->is_debug_types
cc12ce38 2722 && per_cu->cu != NULL
89e63ee4
DE
2723 && per_cu->cu->dwo_unit != NULL
2724 && dwarf2_per_objfile->index_table != NULL
2725 && dwarf2_per_objfile->index_table->version <= 7
2726 /* DWP files aren't supported yet. */
2727 && get_dwp_file () == NULL)
2728 queue_and_load_all_dwo_tus (per_cu);
95554aad 2729 }
9291a0cd 2730
a0f42c21 2731 process_queue ();
9291a0cd
TT
2732
2733 /* Age the cache, releasing compilation units that have not
2734 been used recently. */
2735 age_cached_comp_units ();
2736
2737 do_cleanups (back_to);
2738}
2739
2740/* Ensure that the symbols for PER_CU have been read in. OBJFILE is
2741 the objfile from which this CU came. Returns the resulting symbol
2742 table. */
2fdf6df6 2743
43f3e411 2744static struct compunit_symtab *
a0f42c21 2745dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
9291a0cd 2746{
95554aad 2747 gdb_assert (dwarf2_per_objfile->using_index);
43f3e411 2748 if (!per_cu->v.quick->compunit_symtab)
9291a0cd
TT
2749 {
2750 struct cleanup *back_to = make_cleanup (free_cached_comp_units, NULL);
2751 increment_reading_symtab ();
a0f42c21 2752 dw2_do_instantiate_symtab (per_cu);
95554aad 2753 process_cu_includes ();
9291a0cd
TT
2754 do_cleanups (back_to);
2755 }
f194fefb 2756
43f3e411 2757 return per_cu->v.quick->compunit_symtab;
9291a0cd
TT
2758}
2759
8832e7e3 2760/* Return the CU/TU given its index.
f4dc4d17
DE
2761
2762 This is intended for loops like:
2763
2764 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2765 + dwarf2_per_objfile->n_type_units); ++i)
2766 {
8832e7e3 2767 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
f4dc4d17
DE
2768
2769 ...;
2770 }
2771*/
2fdf6df6 2772
1fd400ff 2773static struct dwarf2_per_cu_data *
8832e7e3 2774dw2_get_cutu (int index)
1fd400ff
TT
2775{
2776 if (index >= dwarf2_per_objfile->n_comp_units)
2777 {
f4dc4d17 2778 index -= dwarf2_per_objfile->n_comp_units;
094b34ac
DE
2779 gdb_assert (index < dwarf2_per_objfile->n_type_units);
2780 return &dwarf2_per_objfile->all_type_units[index]->per_cu;
f4dc4d17
DE
2781 }
2782
2783 return dwarf2_per_objfile->all_comp_units[index];
2784}
2785
8832e7e3
DE
2786/* Return the CU given its index.
2787 This differs from dw2_get_cutu in that it's for when you know INDEX
2788 refers to a CU. */
f4dc4d17
DE
2789
2790static struct dwarf2_per_cu_data *
8832e7e3 2791dw2_get_cu (int index)
f4dc4d17 2792{
8832e7e3 2793 gdb_assert (index >= 0 && index < dwarf2_per_objfile->n_comp_units);
f4dc4d17 2794
1fd400ff
TT
2795 return dwarf2_per_objfile->all_comp_units[index];
2796}
2797
2ec9a5e0
TT
2798/* A helper for create_cus_from_index that handles a given list of
2799 CUs. */
2fdf6df6 2800
74a0d9f6 2801static void
2ec9a5e0
TT
2802create_cus_from_index_list (struct objfile *objfile,
2803 const gdb_byte *cu_list, offset_type n_elements,
2804 struct dwarf2_section_info *section,
2805 int is_dwz,
2806 int base_offset)
9291a0cd
TT
2807{
2808 offset_type i;
9291a0cd 2809
2ec9a5e0 2810 for (i = 0; i < n_elements; i += 2)
9291a0cd
TT
2811 {
2812 struct dwarf2_per_cu_data *the_cu;
2813 ULONGEST offset, length;
2814
74a0d9f6
JK
2815 gdb_static_assert (sizeof (ULONGEST) >= 8);
2816 offset = extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2817 length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
9291a0cd
TT
2818 cu_list += 2 * 8;
2819
2820 the_cu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2821 struct dwarf2_per_cu_data);
b64f50a1 2822 the_cu->offset.sect_off = offset;
9291a0cd
TT
2823 the_cu->length = length;
2824 the_cu->objfile = objfile;
8a0459fd 2825 the_cu->section = section;
9291a0cd
TT
2826 the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2827 struct dwarf2_per_cu_quick_data);
2ec9a5e0
TT
2828 the_cu->is_dwz = is_dwz;
2829 dwarf2_per_objfile->all_comp_units[base_offset + i / 2] = the_cu;
9291a0cd 2830 }
9291a0cd
TT
2831}
2832
2ec9a5e0 2833/* Read the CU list from the mapped index, and use it to create all
74a0d9f6 2834 the CU objects for this objfile. */
2ec9a5e0 2835
74a0d9f6 2836static void
2ec9a5e0
TT
2837create_cus_from_index (struct objfile *objfile,
2838 const gdb_byte *cu_list, offset_type cu_list_elements,
2839 const gdb_byte *dwz_list, offset_type dwz_elements)
2840{
2841 struct dwz_file *dwz;
2842
2843 dwarf2_per_objfile->n_comp_units = (cu_list_elements + dwz_elements) / 2;
8d749320
SM
2844 dwarf2_per_objfile->all_comp_units =
2845 XOBNEWVEC (&objfile->objfile_obstack, struct dwarf2_per_cu_data *,
2846 dwarf2_per_objfile->n_comp_units);
2ec9a5e0 2847
74a0d9f6
JK
2848 create_cus_from_index_list (objfile, cu_list, cu_list_elements,
2849 &dwarf2_per_objfile->info, 0, 0);
2ec9a5e0
TT
2850
2851 if (dwz_elements == 0)
74a0d9f6 2852 return;
2ec9a5e0
TT
2853
2854 dwz = dwarf2_get_dwz_file ();
74a0d9f6
JK
2855 create_cus_from_index_list (objfile, dwz_list, dwz_elements, &dwz->info, 1,
2856 cu_list_elements / 2);
2ec9a5e0
TT
2857}
2858
1fd400ff 2859/* Create the signatured type hash table from the index. */
673bfd45 2860
74a0d9f6 2861static void
673bfd45 2862create_signatured_type_table_from_index (struct objfile *objfile,
8b70b953 2863 struct dwarf2_section_info *section,
673bfd45
DE
2864 const gdb_byte *bytes,
2865 offset_type elements)
1fd400ff
TT
2866{
2867 offset_type i;
673bfd45 2868 htab_t sig_types_hash;
1fd400ff 2869
6aa5f3a6
DE
2870 dwarf2_per_objfile->n_type_units
2871 = dwarf2_per_objfile->n_allocated_type_units
2872 = elements / 3;
8d749320
SM
2873 dwarf2_per_objfile->all_type_units =
2874 XNEWVEC (struct signatured_type *, dwarf2_per_objfile->n_type_units);
1fd400ff 2875
673bfd45 2876 sig_types_hash = allocate_signatured_type_table (objfile);
1fd400ff
TT
2877
2878 for (i = 0; i < elements; i += 3)
2879 {
52dc124a
DE
2880 struct signatured_type *sig_type;
2881 ULONGEST offset, type_offset_in_tu, signature;
1fd400ff
TT
2882 void **slot;
2883
74a0d9f6
JK
2884 gdb_static_assert (sizeof (ULONGEST) >= 8);
2885 offset = extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
2886 type_offset_in_tu = extract_unsigned_integer (bytes + 8, 8,
2887 BFD_ENDIAN_LITTLE);
1fd400ff
TT
2888 signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
2889 bytes += 3 * 8;
2890
52dc124a 2891 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
1fd400ff 2892 struct signatured_type);
52dc124a 2893 sig_type->signature = signature;
3019eac3
DE
2894 sig_type->type_offset_in_tu.cu_off = type_offset_in_tu;
2895 sig_type->per_cu.is_debug_types = 1;
8a0459fd 2896 sig_type->per_cu.section = section;
52dc124a
DE
2897 sig_type->per_cu.offset.sect_off = offset;
2898 sig_type->per_cu.objfile = objfile;
2899 sig_type->per_cu.v.quick
1fd400ff
TT
2900 = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2901 struct dwarf2_per_cu_quick_data);
2902
52dc124a
DE
2903 slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
2904 *slot = sig_type;
1fd400ff 2905
b4dd5633 2906 dwarf2_per_objfile->all_type_units[i / 3] = sig_type;
1fd400ff
TT
2907 }
2908
673bfd45 2909 dwarf2_per_objfile->signatured_types = sig_types_hash;
1fd400ff
TT
2910}
2911
9291a0cd
TT
2912/* Read the address map data from the mapped index, and use it to
2913 populate the objfile's psymtabs_addrmap. */
2fdf6df6 2914
9291a0cd
TT
2915static void
2916create_addrmap_from_index (struct objfile *objfile, struct mapped_index *index)
2917{
3e29f34a 2918 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9291a0cd
TT
2919 const gdb_byte *iter, *end;
2920 struct obstack temp_obstack;
2921 struct addrmap *mutable_map;
2922 struct cleanup *cleanup;
2923 CORE_ADDR baseaddr;
2924
2925 obstack_init (&temp_obstack);
2926 cleanup = make_cleanup_obstack_free (&temp_obstack);
2927 mutable_map = addrmap_create_mutable (&temp_obstack);
2928
2929 iter = index->address_table;
2930 end = iter + index->address_table_size;
2931
2932 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
2933
2934 while (iter < end)
2935 {
2936 ULONGEST hi, lo, cu_index;
2937 lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2938 iter += 8;
2939 hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2940 iter += 8;
2941 cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
2942 iter += 4;
f652bce2 2943
24a55014 2944 if (lo > hi)
f652bce2 2945 {
24a55014
DE
2946 complaint (&symfile_complaints,
2947 _(".gdb_index address table has invalid range (%s - %s)"),
c0cd8254 2948 hex_string (lo), hex_string (hi));
24a55014 2949 continue;
f652bce2 2950 }
24a55014
DE
2951
2952 if (cu_index >= dwarf2_per_objfile->n_comp_units)
f652bce2
DE
2953 {
2954 complaint (&symfile_complaints,
2955 _(".gdb_index address table has invalid CU number %u"),
2956 (unsigned) cu_index);
24a55014 2957 continue;
f652bce2 2958 }
24a55014 2959
3e29f34a
MR
2960 lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr);
2961 hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr);
2962 addrmap_set_empty (mutable_map, lo, hi - 1, dw2_get_cutu (cu_index));
9291a0cd
TT
2963 }
2964
2965 objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
2966 &objfile->objfile_obstack);
2967 do_cleanups (cleanup);
2968}
2969
59d7bcaf
JK
2970/* The hash function for strings in the mapped index. This is the same as
2971 SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
2972 implementation. This is necessary because the hash function is tied to the
2973 format of the mapped index file. The hash values do not have to match with
559a7a62
JK
2974 SYMBOL_HASH_NEXT.
2975
2976 Use INT_MAX for INDEX_VERSION if you generate the current index format. */
2fdf6df6 2977
9291a0cd 2978static hashval_t
559a7a62 2979mapped_index_string_hash (int index_version, const void *p)
9291a0cd
TT
2980{
2981 const unsigned char *str = (const unsigned char *) p;
2982 hashval_t r = 0;
2983 unsigned char c;
2984
2985 while ((c = *str++) != 0)
559a7a62
JK
2986 {
2987 if (index_version >= 5)
2988 c = tolower (c);
2989 r = r * 67 + c - 113;
2990 }
9291a0cd
TT
2991
2992 return r;
2993}
2994
2995/* Find a slot in the mapped index INDEX for the object named NAME.
2996 If NAME is found, set *VEC_OUT to point to the CU vector in the
2997 constant pool and return 1. If NAME cannot be found, return 0. */
2fdf6df6 2998
9291a0cd
TT
2999static int
3000find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3001 offset_type **vec_out)
3002{
0cf03b49
JK
3003 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
3004 offset_type hash;
9291a0cd 3005 offset_type slot, step;
559a7a62 3006 int (*cmp) (const char *, const char *);
9291a0cd 3007
0cf03b49 3008 if (current_language->la_language == language_cplus
45280282
IB
3009 || current_language->la_language == language_fortran
3010 || current_language->la_language == language_d)
0cf03b49
JK
3011 {
3012 /* NAME is already canonical. Drop any qualifiers as .gdb_index does
3013 not contain any. */
a8719064 3014
72998fb3 3015 if (strchr (name, '(') != NULL)
0cf03b49 3016 {
72998fb3 3017 char *without_params = cp_remove_params (name);
0cf03b49 3018
72998fb3
DE
3019 if (without_params != NULL)
3020 {
3021 make_cleanup (xfree, without_params);
3022 name = without_params;
3023 }
0cf03b49
JK
3024 }
3025 }
3026
559a7a62 3027 /* Index version 4 did not support case insensitive searches. But the
feea76c2 3028 indices for case insensitive languages are built in lowercase, therefore
559a7a62
JK
3029 simulate our NAME being searched is also lowercased. */
3030 hash = mapped_index_string_hash ((index->version == 4
3031 && case_sensitivity == case_sensitive_off
3032 ? 5 : index->version),
3033 name);
3034
3876f04e
DE
3035 slot = hash & (index->symbol_table_slots - 1);
3036 step = ((hash * 17) & (index->symbol_table_slots - 1)) | 1;
559a7a62 3037 cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
9291a0cd
TT
3038
3039 for (;;)
3040 {
3041 /* Convert a slot number to an offset into the table. */
3042 offset_type i = 2 * slot;
3043 const char *str;
3876f04e 3044 if (index->symbol_table[i] == 0 && index->symbol_table[i + 1] == 0)
0cf03b49
JK
3045 {
3046 do_cleanups (back_to);
3047 return 0;
3048 }
9291a0cd 3049
3876f04e 3050 str = index->constant_pool + MAYBE_SWAP (index->symbol_table[i]);
559a7a62 3051 if (!cmp (name, str))
9291a0cd
TT
3052 {
3053 *vec_out = (offset_type *) (index->constant_pool
3876f04e 3054 + MAYBE_SWAP (index->symbol_table[i + 1]));
0cf03b49 3055 do_cleanups (back_to);
9291a0cd
TT
3056 return 1;
3057 }
3058
3876f04e 3059 slot = (slot + step) & (index->symbol_table_slots - 1);
9291a0cd
TT
3060 }
3061}
3062
2ec9a5e0
TT
3063/* A helper function that reads the .gdb_index from SECTION and fills
3064 in MAP. FILENAME is the name of the file containing the section;
3065 it is used for error reporting. DEPRECATED_OK is nonzero if it is
3066 ok to use deprecated sections.
3067
3068 CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3069 out parameters that are filled in with information about the CU and
3070 TU lists in the section.
3071
3072 Returns 1 if all went well, 0 otherwise. */
2fdf6df6 3073
9291a0cd 3074static int
2ec9a5e0
TT
3075read_index_from_section (struct objfile *objfile,
3076 const char *filename,
3077 int deprecated_ok,
3078 struct dwarf2_section_info *section,
3079 struct mapped_index *map,
3080 const gdb_byte **cu_list,
3081 offset_type *cu_list_elements,
3082 const gdb_byte **types_list,
3083 offset_type *types_list_elements)
9291a0cd 3084{
948f8e3d 3085 const gdb_byte *addr;
2ec9a5e0 3086 offset_type version;
b3b272e1 3087 offset_type *metadata;
1fd400ff 3088 int i;
9291a0cd 3089
2ec9a5e0 3090 if (dwarf2_section_empty_p (section))
9291a0cd 3091 return 0;
82430852
JK
3092
3093 /* Older elfutils strip versions could keep the section in the main
3094 executable while splitting it for the separate debug info file. */
a32a8923 3095 if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
82430852
JK
3096 return 0;
3097
2ec9a5e0 3098 dwarf2_read_section (objfile, section);
9291a0cd 3099
2ec9a5e0 3100 addr = section->buffer;
9291a0cd 3101 /* Version check. */
1fd400ff 3102 version = MAYBE_SWAP (*(offset_type *) addr);
987d643c 3103 /* Versions earlier than 3 emitted every copy of a psymbol. This
a6e293d1 3104 causes the index to behave very poorly for certain requests. Version 3
831adc1f 3105 contained incomplete addrmap. So, it seems better to just ignore such
481860b3 3106 indices. */
831adc1f 3107 if (version < 4)
481860b3
GB
3108 {
3109 static int warning_printed = 0;
3110 if (!warning_printed)
3111 {
3112 warning (_("Skipping obsolete .gdb_index section in %s."),
2ec9a5e0 3113 filename);
481860b3
GB
3114 warning_printed = 1;
3115 }
3116 return 0;
3117 }
3118 /* Index version 4 uses a different hash function than index version
3119 5 and later.
3120
3121 Versions earlier than 6 did not emit psymbols for inlined
3122 functions. Using these files will cause GDB not to be able to
3123 set breakpoints on inlined functions by name, so we ignore these
e615022a
DE
3124 indices unless the user has done
3125 "set use-deprecated-index-sections on". */
2ec9a5e0 3126 if (version < 6 && !deprecated_ok)
481860b3
GB
3127 {
3128 static int warning_printed = 0;
3129 if (!warning_printed)
3130 {
e615022a
DE
3131 warning (_("\
3132Skipping deprecated .gdb_index section in %s.\n\
3133Do \"set use-deprecated-index-sections on\" before the file is read\n\
3134to use the section anyway."),
2ec9a5e0 3135 filename);
481860b3
GB
3136 warning_printed = 1;
3137 }
3138 return 0;
3139 }
796a7ff8 3140 /* Version 7 indices generated by gold refer to the CU for a symbol instead
8943b874
DE
3141 of the TU (for symbols coming from TUs),
3142 http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3143 Plus gold-generated indices can have duplicate entries for global symbols,
3144 http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3145 These are just performance bugs, and we can't distinguish gdb-generated
3146 indices from gold-generated ones, so issue no warning here. */
796a7ff8 3147
481860b3 3148 /* Indexes with higher version than the one supported by GDB may be no
594e8718 3149 longer backward compatible. */
796a7ff8 3150 if (version > 8)
594e8718 3151 return 0;
9291a0cd 3152
559a7a62 3153 map->version = version;
2ec9a5e0 3154 map->total_size = section->size;
9291a0cd
TT
3155
3156 metadata = (offset_type *) (addr + sizeof (offset_type));
1fd400ff
TT
3157
3158 i = 0;
2ec9a5e0
TT
3159 *cu_list = addr + MAYBE_SWAP (metadata[i]);
3160 *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3161 / 8);
1fd400ff
TT
3162 ++i;
3163
2ec9a5e0
TT
3164 *types_list = addr + MAYBE_SWAP (metadata[i]);
3165 *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3166 - MAYBE_SWAP (metadata[i]))
3167 / 8);
987d643c 3168 ++i;
1fd400ff
TT
3169
3170 map->address_table = addr + MAYBE_SWAP (metadata[i]);
3171 map->address_table_size = (MAYBE_SWAP (metadata[i + 1])
3172 - MAYBE_SWAP (metadata[i]));
3173 ++i;
3174
3876f04e
DE
3175 map->symbol_table = (offset_type *) (addr + MAYBE_SWAP (metadata[i]));
3176 map->symbol_table_slots = ((MAYBE_SWAP (metadata[i + 1])
3177 - MAYBE_SWAP (metadata[i]))
3178 / (2 * sizeof (offset_type)));
1fd400ff 3179 ++i;
9291a0cd 3180
f9d83a0b 3181 map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
1fd400ff 3182
2ec9a5e0
TT
3183 return 1;
3184}
3185
3186
3187/* Read the index file. If everything went ok, initialize the "quick"
3188 elements of all the CUs and return 1. Otherwise, return 0. */
3189
3190static int
3191dwarf2_read_index (struct objfile *objfile)
3192{
3193 struct mapped_index local_map, *map;
3194 const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3195 offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
4db1a1dc 3196 struct dwz_file *dwz;
2ec9a5e0 3197
4262abfb 3198 if (!read_index_from_section (objfile, objfile_name (objfile),
2ec9a5e0
TT
3199 use_deprecated_index_sections,
3200 &dwarf2_per_objfile->gdb_index, &local_map,
3201 &cu_list, &cu_list_elements,
3202 &types_list, &types_list_elements))
3203 return 0;
3204
0fefef59 3205 /* Don't use the index if it's empty. */
2ec9a5e0 3206 if (local_map.symbol_table_slots == 0)
0fefef59
DE
3207 return 0;
3208
2ec9a5e0
TT
3209 /* If there is a .dwz file, read it so we can get its CU list as
3210 well. */
4db1a1dc
TT
3211 dwz = dwarf2_get_dwz_file ();
3212 if (dwz != NULL)
2ec9a5e0 3213 {
2ec9a5e0
TT
3214 struct mapped_index dwz_map;
3215 const gdb_byte *dwz_types_ignore;
3216 offset_type dwz_types_elements_ignore;
3217
3218 if (!read_index_from_section (objfile, bfd_get_filename (dwz->dwz_bfd),
3219 1,
3220 &dwz->gdb_index, &dwz_map,
3221 &dwz_list, &dwz_list_elements,
3222 &dwz_types_ignore,
3223 &dwz_types_elements_ignore))
3224 {
3225 warning (_("could not read '.gdb_index' section from %s; skipping"),
3226 bfd_get_filename (dwz->dwz_bfd));
3227 return 0;
3228 }
3229 }
3230
74a0d9f6
JK
3231 create_cus_from_index (objfile, cu_list, cu_list_elements, dwz_list,
3232 dwz_list_elements);
1fd400ff 3233
8b70b953
TT
3234 if (types_list_elements)
3235 {
3236 struct dwarf2_section_info *section;
3237
3238 /* We can only handle a single .debug_types when we have an
3239 index. */
3240 if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3241 return 0;
3242
3243 section = VEC_index (dwarf2_section_info_def,
3244 dwarf2_per_objfile->types, 0);
3245
74a0d9f6
JK
3246 create_signatured_type_table_from_index (objfile, section, types_list,
3247 types_list_elements);
8b70b953 3248 }
9291a0cd 3249
2ec9a5e0
TT
3250 create_addrmap_from_index (objfile, &local_map);
3251
8d749320 3252 map = XOBNEW (&objfile->objfile_obstack, struct mapped_index);
2ec9a5e0 3253 *map = local_map;
9291a0cd
TT
3254
3255 dwarf2_per_objfile->index_table = map;
3256 dwarf2_per_objfile->using_index = 1;
7b9f3c50
DE
3257 dwarf2_per_objfile->quick_file_names_table =
3258 create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
9291a0cd
TT
3259
3260 return 1;
3261}
3262
3263/* A helper for the "quick" functions which sets the global
3264 dwarf2_per_objfile according to OBJFILE. */
2fdf6df6 3265
9291a0cd
TT
3266static void
3267dw2_setup (struct objfile *objfile)
3268{
9a3c8263
SM
3269 dwarf2_per_objfile = ((struct dwarf2_per_objfile *)
3270 objfile_data (objfile, dwarf2_objfile_data_key));
9291a0cd
TT
3271 gdb_assert (dwarf2_per_objfile);
3272}
3273
dee91e82 3274/* die_reader_func for dw2_get_file_names. */
2fdf6df6 3275
dee91e82
DE
3276static void
3277dw2_get_file_names_reader (const struct die_reader_specs *reader,
d521ce57 3278 const gdb_byte *info_ptr,
dee91e82
DE
3279 struct die_info *comp_unit_die,
3280 int has_children,
3281 void *data)
9291a0cd 3282{
dee91e82
DE
3283 struct dwarf2_cu *cu = reader->cu;
3284 struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3285 struct objfile *objfile = dwarf2_per_objfile->objfile;
094b34ac 3286 struct dwarf2_per_cu_data *lh_cu;
7b9f3c50 3287 struct line_header *lh;
9291a0cd 3288 struct attribute *attr;
dee91e82 3289 int i;
15d034d0 3290 const char *name, *comp_dir;
7b9f3c50
DE
3291 void **slot;
3292 struct quick_file_names *qfn;
3293 unsigned int line_offset;
9291a0cd 3294
0186c6a7
DE
3295 gdb_assert (! this_cu->is_debug_types);
3296
07261596
TT
3297 /* Our callers never want to match partial units -- instead they
3298 will match the enclosing full CU. */
3299 if (comp_unit_die->tag == DW_TAG_partial_unit)
3300 {
3301 this_cu->v.quick->no_file_data = 1;
3302 return;
3303 }
3304
0186c6a7 3305 lh_cu = this_cu;
7b9f3c50
DE
3306 lh = NULL;
3307 slot = NULL;
3308 line_offset = 0;
dee91e82
DE
3309
3310 attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
9291a0cd
TT
3311 if (attr)
3312 {
7b9f3c50
DE
3313 struct quick_file_names find_entry;
3314
3315 line_offset = DW_UNSND (attr);
3316
3317 /* We may have already read in this line header (TU line header sharing).
3318 If we have we're done. */
094b34ac
DE
3319 find_entry.hash.dwo_unit = cu->dwo_unit;
3320 find_entry.hash.line_offset.sect_off = line_offset;
7b9f3c50
DE
3321 slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3322 &find_entry, INSERT);
3323 if (*slot != NULL)
3324 {
9a3c8263 3325 lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
dee91e82 3326 return;
7b9f3c50
DE
3327 }
3328
3019eac3 3329 lh = dwarf_decode_line_header (line_offset, cu);
9291a0cd
TT
3330 }
3331 if (lh == NULL)
3332 {
094b34ac 3333 lh_cu->v.quick->no_file_data = 1;
dee91e82 3334 return;
9291a0cd
TT
3335 }
3336
8d749320 3337 qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
094b34ac
DE
3338 qfn->hash.dwo_unit = cu->dwo_unit;
3339 qfn->hash.line_offset.sect_off = line_offset;
7b9f3c50
DE
3340 gdb_assert (slot != NULL);
3341 *slot = qfn;
9291a0cd 3342
dee91e82 3343 find_file_and_directory (comp_unit_die, cu, &name, &comp_dir);
9291a0cd 3344
7b9f3c50 3345 qfn->num_file_names = lh->num_file_names;
8d749320
SM
3346 qfn->file_names =
3347 XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->num_file_names);
9291a0cd 3348 for (i = 0; i < lh->num_file_names; ++i)
7b9f3c50
DE
3349 qfn->file_names[i] = file_full_name (i + 1, lh, comp_dir);
3350 qfn->real_names = NULL;
9291a0cd 3351
7b9f3c50 3352 free_line_header (lh);
7b9f3c50 3353
094b34ac 3354 lh_cu->v.quick->file_names = qfn;
dee91e82
DE
3355}
3356
3357/* A helper for the "quick" functions which attempts to read the line
3358 table for THIS_CU. */
3359
3360static struct quick_file_names *
e4a48d9d 3361dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
dee91e82 3362{
0186c6a7
DE
3363 /* This should never be called for TUs. */
3364 gdb_assert (! this_cu->is_debug_types);
3365 /* Nor type unit groups. */
3366 gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
f4dc4d17 3367
dee91e82
DE
3368 if (this_cu->v.quick->file_names != NULL)
3369 return this_cu->v.quick->file_names;
3370 /* If we know there is no line data, no point in looking again. */
3371 if (this_cu->v.quick->no_file_data)
3372 return NULL;
3373
0186c6a7 3374 init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
dee91e82
DE
3375
3376 if (this_cu->v.quick->no_file_data)
3377 return NULL;
3378 return this_cu->v.quick->file_names;
9291a0cd
TT
3379}
3380
3381/* A helper for the "quick" functions which computes and caches the
7b9f3c50 3382 real path for a given file name from the line table. */
2fdf6df6 3383
9291a0cd 3384static const char *
7b9f3c50
DE
3385dw2_get_real_path (struct objfile *objfile,
3386 struct quick_file_names *qfn, int index)
9291a0cd 3387{
7b9f3c50
DE
3388 if (qfn->real_names == NULL)
3389 qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
26f2dc30 3390 qfn->num_file_names, const char *);
9291a0cd 3391
7b9f3c50
DE
3392 if (qfn->real_names[index] == NULL)
3393 qfn->real_names[index] = gdb_realpath (qfn->file_names[index]);
9291a0cd 3394
7b9f3c50 3395 return qfn->real_names[index];
9291a0cd
TT
3396}
3397
3398static struct symtab *
3399dw2_find_last_source_symtab (struct objfile *objfile)
3400{
43f3e411 3401 struct compunit_symtab *cust;
9291a0cd 3402 int index;
ae2de4f8 3403
9291a0cd
TT
3404 dw2_setup (objfile);
3405 index = dwarf2_per_objfile->n_comp_units - 1;
43f3e411
DE
3406 cust = dw2_instantiate_symtab (dw2_get_cutu (index));
3407 if (cust == NULL)
3408 return NULL;
3409 return compunit_primary_filetab (cust);
9291a0cd
TT
3410}
3411
7b9f3c50
DE
3412/* Traversal function for dw2_forget_cached_source_info. */
3413
3414static int
3415dw2_free_cached_file_names (void **slot, void *info)
9291a0cd 3416{
7b9f3c50 3417 struct quick_file_names *file_data = (struct quick_file_names *) *slot;
9291a0cd 3418
7b9f3c50 3419 if (file_data->real_names)
9291a0cd 3420 {
7b9f3c50 3421 int i;
9291a0cd 3422
7b9f3c50 3423 for (i = 0; i < file_data->num_file_names; ++i)
9291a0cd 3424 {
7b9f3c50
DE
3425 xfree ((void*) file_data->real_names[i]);
3426 file_data->real_names[i] = NULL;
9291a0cd
TT
3427 }
3428 }
7b9f3c50
DE
3429
3430 return 1;
3431}
3432
3433static void
3434dw2_forget_cached_source_info (struct objfile *objfile)
3435{
3436 dw2_setup (objfile);
3437
3438 htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3439 dw2_free_cached_file_names, NULL);
9291a0cd
TT
3440}
3441
f8eba3c6
TT
3442/* Helper function for dw2_map_symtabs_matching_filename that expands
3443 the symtabs and calls the iterator. */
3444
3445static int
3446dw2_map_expand_apply (struct objfile *objfile,
3447 struct dwarf2_per_cu_data *per_cu,
f5b95b50 3448 const char *name, const char *real_path,
f8eba3c6
TT
3449 int (*callback) (struct symtab *, void *),
3450 void *data)
3451{
43f3e411 3452 struct compunit_symtab *last_made = objfile->compunit_symtabs;
f8eba3c6
TT
3453
3454 /* Don't visit already-expanded CUs. */
43f3e411 3455 if (per_cu->v.quick->compunit_symtab)
f8eba3c6
TT
3456 return 0;
3457
3458 /* This may expand more than one symtab, and we want to iterate over
3459 all of them. */
a0f42c21 3460 dw2_instantiate_symtab (per_cu);
f8eba3c6 3461
f5b95b50 3462 return iterate_over_some_symtabs (name, real_path, callback, data,
43f3e411 3463 objfile->compunit_symtabs, last_made);
f8eba3c6
TT
3464}
3465
3466/* Implementation of the map_symtabs_matching_filename method. */
3467
9291a0cd 3468static int
f8eba3c6 3469dw2_map_symtabs_matching_filename (struct objfile *objfile, const char *name,
f5b95b50 3470 const char *real_path,
f8eba3c6
TT
3471 int (*callback) (struct symtab *, void *),
3472 void *data)
9291a0cd
TT
3473{
3474 int i;
c011a4f4 3475 const char *name_basename = lbasename (name);
9291a0cd
TT
3476
3477 dw2_setup (objfile);
ae2de4f8 3478
848e3e78
DE
3479 /* The rule is CUs specify all the files, including those used by
3480 any TU, so there's no need to scan TUs here. */
f4dc4d17 3481
848e3e78 3482 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
3483 {
3484 int j;
8832e7e3 3485 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
7b9f3c50 3486 struct quick_file_names *file_data;
9291a0cd 3487
3d7bb9d9 3488 /* We only need to look at symtabs not already expanded. */
43f3e411 3489 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3490 continue;
3491
e4a48d9d 3492 file_data = dw2_get_file_names (per_cu);
7b9f3c50 3493 if (file_data == NULL)
9291a0cd
TT
3494 continue;
3495
7b9f3c50 3496 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 3497 {
7b9f3c50 3498 const char *this_name = file_data->file_names[j];
da235a7c 3499 const char *this_real_name;
9291a0cd 3500
af529f8f 3501 if (compare_filenames_for_search (this_name, name))
9291a0cd 3502 {
f5b95b50 3503 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
f8eba3c6
TT
3504 callback, data))
3505 return 1;
288e77a7 3506 continue;
4aac40c8 3507 }
9291a0cd 3508
c011a4f4
DE
3509 /* Before we invoke realpath, which can get expensive when many
3510 files are involved, do a quick comparison of the basenames. */
3511 if (! basenames_may_differ
3512 && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3513 continue;
3514
da235a7c
JK
3515 this_real_name = dw2_get_real_path (objfile, file_data, j);
3516 if (compare_filenames_for_search (this_real_name, name))
9291a0cd 3517 {
da235a7c
JK
3518 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3519 callback, data))
3520 return 1;
288e77a7 3521 continue;
da235a7c 3522 }
9291a0cd 3523
da235a7c
JK
3524 if (real_path != NULL)
3525 {
af529f8f
JK
3526 gdb_assert (IS_ABSOLUTE_PATH (real_path));
3527 gdb_assert (IS_ABSOLUTE_PATH (name));
7b9f3c50 3528 if (this_real_name != NULL
af529f8f 3529 && FILENAME_CMP (real_path, this_real_name) == 0)
9291a0cd 3530 {
f5b95b50 3531 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
f8eba3c6
TT
3532 callback, data))
3533 return 1;
288e77a7 3534 continue;
9291a0cd
TT
3535 }
3536 }
3537 }
3538 }
3539
9291a0cd
TT
3540 return 0;
3541}
3542
da51c347
DE
3543/* Struct used to manage iterating over all CUs looking for a symbol. */
3544
3545struct dw2_symtab_iterator
9291a0cd 3546{
da51c347
DE
3547 /* The internalized form of .gdb_index. */
3548 struct mapped_index *index;
3549 /* If non-zero, only look for symbols that match BLOCK_INDEX. */
3550 int want_specific_block;
3551 /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3552 Unused if !WANT_SPECIFIC_BLOCK. */
3553 int block_index;
3554 /* The kind of symbol we're looking for. */
3555 domain_enum domain;
3556 /* The list of CUs from the index entry of the symbol,
3557 or NULL if not found. */
3558 offset_type *vec;
3559 /* The next element in VEC to look at. */
3560 int next;
3561 /* The number of elements in VEC, or zero if there is no match. */
3562 int length;
8943b874
DE
3563 /* Have we seen a global version of the symbol?
3564 If so we can ignore all further global instances.
3565 This is to work around gold/15646, inefficient gold-generated
3566 indices. */
3567 int global_seen;
da51c347 3568};
9291a0cd 3569
da51c347
DE
3570/* Initialize the index symtab iterator ITER.
3571 If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3572 in block BLOCK_INDEX. Otherwise BLOCK_INDEX is ignored. */
2fdf6df6 3573
9291a0cd 3574static void
da51c347
DE
3575dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3576 struct mapped_index *index,
3577 int want_specific_block,
3578 int block_index,
3579 domain_enum domain,
3580 const char *name)
3581{
3582 iter->index = index;
3583 iter->want_specific_block = want_specific_block;
3584 iter->block_index = block_index;
3585 iter->domain = domain;
3586 iter->next = 0;
8943b874 3587 iter->global_seen = 0;
da51c347
DE
3588
3589 if (find_slot_in_mapped_hash (index, name, &iter->vec))
3590 iter->length = MAYBE_SWAP (*iter->vec);
3591 else
3592 {
3593 iter->vec = NULL;
3594 iter->length = 0;
3595 }
3596}
3597
3598/* Return the next matching CU or NULL if there are no more. */
3599
3600static struct dwarf2_per_cu_data *
3601dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3602{
3603 for ( ; iter->next < iter->length; ++iter->next)
3604 {
3605 offset_type cu_index_and_attrs =
3606 MAYBE_SWAP (iter->vec[iter->next + 1]);
3607 offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3190f0c6 3608 struct dwarf2_per_cu_data *per_cu;
da51c347
DE
3609 int want_static = iter->block_index != GLOBAL_BLOCK;
3610 /* This value is only valid for index versions >= 7. */
3611 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3612 gdb_index_symbol_kind symbol_kind =
3613 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3614 /* Only check the symbol attributes if they're present.
3615 Indices prior to version 7 don't record them,
3616 and indices >= 7 may elide them for certain symbols
3617 (gold does this). */
3618 int attrs_valid =
3619 (iter->index->version >= 7
3620 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3621
3190f0c6
DE
3622 /* Don't crash on bad data. */
3623 if (cu_index >= (dwarf2_per_objfile->n_comp_units
3624 + dwarf2_per_objfile->n_type_units))
3625 {
3626 complaint (&symfile_complaints,
3627 _(".gdb_index entry has bad CU index"
4262abfb
JK
3628 " [in module %s]"),
3629 objfile_name (dwarf2_per_objfile->objfile));
3190f0c6
DE
3630 continue;
3631 }
3632
8832e7e3 3633 per_cu = dw2_get_cutu (cu_index);
3190f0c6 3634
da51c347 3635 /* Skip if already read in. */
43f3e411 3636 if (per_cu->v.quick->compunit_symtab)
da51c347
DE
3637 continue;
3638
8943b874
DE
3639 /* Check static vs global. */
3640 if (attrs_valid)
3641 {
3642 if (iter->want_specific_block
3643 && want_static != is_static)
3644 continue;
3645 /* Work around gold/15646. */
3646 if (!is_static && iter->global_seen)
3647 continue;
3648 if (!is_static)
3649 iter->global_seen = 1;
3650 }
da51c347
DE
3651
3652 /* Only check the symbol's kind if it has one. */
3653 if (attrs_valid)
3654 {
3655 switch (iter->domain)
3656 {
3657 case VAR_DOMAIN:
3658 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
3659 && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
3660 /* Some types are also in VAR_DOMAIN. */
3661 && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3662 continue;
3663 break;
3664 case STRUCT_DOMAIN:
3665 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3666 continue;
3667 break;
3668 case LABEL_DOMAIN:
3669 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3670 continue;
3671 break;
3672 default:
3673 break;
3674 }
3675 }
3676
3677 ++iter->next;
3678 return per_cu;
3679 }
3680
3681 return NULL;
3682}
3683
43f3e411 3684static struct compunit_symtab *
da51c347
DE
3685dw2_lookup_symbol (struct objfile *objfile, int block_index,
3686 const char *name, domain_enum domain)
9291a0cd 3687{
43f3e411 3688 struct compunit_symtab *stab_best = NULL;
156942c7
DE
3689 struct mapped_index *index;
3690
9291a0cd
TT
3691 dw2_setup (objfile);
3692
156942c7
DE
3693 index = dwarf2_per_objfile->index_table;
3694
da51c347 3695 /* index is NULL if OBJF_READNOW. */
156942c7 3696 if (index)
9291a0cd 3697 {
da51c347
DE
3698 struct dw2_symtab_iterator iter;
3699 struct dwarf2_per_cu_data *per_cu;
3700
3701 dw2_symtab_iter_init (&iter, index, 1, block_index, domain, name);
9291a0cd 3702
da51c347 3703 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
9291a0cd 3704 {
b2e2f908 3705 struct symbol *sym, *with_opaque = NULL;
43f3e411
DE
3706 struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu);
3707 const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
f194fefb 3708 struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
da51c347 3709
b2e2f908
DE
3710 sym = block_find_symbol (block, name, domain,
3711 block_find_non_opaque_type_preferred,
3712 &with_opaque);
3713
da51c347
DE
3714 /* Some caution must be observed with overloaded functions
3715 and methods, since the index will not contain any overload
3716 information (but NAME might contain it). */
da51c347 3717
b2e2f908
DE
3718 if (sym != NULL
3719 && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
3720 return stab;
3721 if (with_opaque != NULL
3722 && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
3723 stab_best = stab;
da51c347
DE
3724
3725 /* Keep looking through other CUs. */
9291a0cd
TT
3726 }
3727 }
9291a0cd 3728
da51c347 3729 return stab_best;
9291a0cd
TT
3730}
3731
3732static void
3733dw2_print_stats (struct objfile *objfile)
3734{
e4a48d9d 3735 int i, total, count;
9291a0cd
TT
3736
3737 dw2_setup (objfile);
e4a48d9d 3738 total = dwarf2_per_objfile->n_comp_units + dwarf2_per_objfile->n_type_units;
9291a0cd 3739 count = 0;
e4a48d9d 3740 for (i = 0; i < total; ++i)
9291a0cd 3741 {
8832e7e3 3742 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 3743
43f3e411 3744 if (!per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3745 ++count;
3746 }
e4a48d9d 3747 printf_filtered (_(" Number of read CUs: %d\n"), total - count);
9291a0cd
TT
3748 printf_filtered (_(" Number of unread CUs: %d\n"), count);
3749}
3750
779bd270
DE
3751/* This dumps minimal information about the index.
3752 It is called via "mt print objfiles".
3753 One use is to verify .gdb_index has been loaded by the
3754 gdb.dwarf2/gdb-index.exp testcase. */
3755
9291a0cd
TT
3756static void
3757dw2_dump (struct objfile *objfile)
3758{
779bd270
DE
3759 dw2_setup (objfile);
3760 gdb_assert (dwarf2_per_objfile->using_index);
3761 printf_filtered (".gdb_index:");
3762 if (dwarf2_per_objfile->index_table != NULL)
3763 {
3764 printf_filtered (" version %d\n",
3765 dwarf2_per_objfile->index_table->version);
3766 }
3767 else
3768 printf_filtered (" faked for \"readnow\"\n");
3769 printf_filtered ("\n");
9291a0cd
TT
3770}
3771
3772static void
3189cb12
DE
3773dw2_relocate (struct objfile *objfile,
3774 const struct section_offsets *new_offsets,
3775 const struct section_offsets *delta)
9291a0cd
TT
3776{
3777 /* There's nothing to relocate here. */
3778}
3779
3780static void
3781dw2_expand_symtabs_for_function (struct objfile *objfile,
3782 const char *func_name)
3783{
da51c347
DE
3784 struct mapped_index *index;
3785
3786 dw2_setup (objfile);
3787
3788 index = dwarf2_per_objfile->index_table;
3789
3790 /* index is NULL if OBJF_READNOW. */
3791 if (index)
3792 {
3793 struct dw2_symtab_iterator iter;
3794 struct dwarf2_per_cu_data *per_cu;
3795
3796 /* Note: It doesn't matter what we pass for block_index here. */
3797 dw2_symtab_iter_init (&iter, index, 0, GLOBAL_BLOCK, VAR_DOMAIN,
3798 func_name);
3799
3800 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3801 dw2_instantiate_symtab (per_cu);
3802 }
9291a0cd
TT
3803}
3804
3805static void
3806dw2_expand_all_symtabs (struct objfile *objfile)
3807{
3808 int i;
3809
3810 dw2_setup (objfile);
1fd400ff
TT
3811
3812 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
d467dd73 3813 + dwarf2_per_objfile->n_type_units); ++i)
9291a0cd 3814 {
8832e7e3 3815 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 3816
a0f42c21 3817 dw2_instantiate_symtab (per_cu);
9291a0cd
TT
3818 }
3819}
3820
3821static void
652a8996
JK
3822dw2_expand_symtabs_with_fullname (struct objfile *objfile,
3823 const char *fullname)
9291a0cd
TT
3824{
3825 int i;
3826
3827 dw2_setup (objfile);
d4637a04
DE
3828
3829 /* We don't need to consider type units here.
3830 This is only called for examining code, e.g. expand_line_sal.
3831 There can be an order of magnitude (or more) more type units
3832 than comp units, and we avoid them if we can. */
3833
3834 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
3835 {
3836 int j;
8832e7e3 3837 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
7b9f3c50 3838 struct quick_file_names *file_data;
9291a0cd 3839
3d7bb9d9 3840 /* We only need to look at symtabs not already expanded. */
43f3e411 3841 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3842 continue;
3843
e4a48d9d 3844 file_data = dw2_get_file_names (per_cu);
7b9f3c50 3845 if (file_data == NULL)
9291a0cd
TT
3846 continue;
3847
7b9f3c50 3848 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 3849 {
652a8996
JK
3850 const char *this_fullname = file_data->file_names[j];
3851
3852 if (filename_cmp (this_fullname, fullname) == 0)
9291a0cd 3853 {
a0f42c21 3854 dw2_instantiate_symtab (per_cu);
9291a0cd
TT
3855 break;
3856 }
3857 }
3858 }
3859}
3860
9291a0cd 3861static void
ade7ed9e 3862dw2_map_matching_symbols (struct objfile *objfile,
fe978cb0 3863 const char * name, domain_enum domain,
ade7ed9e 3864 int global,
40658b94
PH
3865 int (*callback) (struct block *,
3866 struct symbol *, void *),
2edb89d3
JK
3867 void *data, symbol_compare_ftype *match,
3868 symbol_compare_ftype *ordered_compare)
9291a0cd 3869{
40658b94 3870 /* Currently unimplemented; used for Ada. The function can be called if the
a9e6a4bb
JK
3871 current language is Ada for a non-Ada objfile using GNU index. As Ada
3872 does not look for non-Ada symbols this function should just return. */
9291a0cd
TT
3873}
3874
3875static void
f8eba3c6
TT
3876dw2_expand_symtabs_matching
3877 (struct objfile *objfile,
206f2a57
DE
3878 expand_symtabs_file_matcher_ftype *file_matcher,
3879 expand_symtabs_symbol_matcher_ftype *symbol_matcher,
276d885b 3880 expand_symtabs_exp_notify_ftype *expansion_notify,
f8eba3c6
TT
3881 enum search_domain kind,
3882 void *data)
9291a0cd
TT
3883{
3884 int i;
3885 offset_type iter;
4b5246aa 3886 struct mapped_index *index;
9291a0cd
TT
3887
3888 dw2_setup (objfile);
ae2de4f8
DE
3889
3890 /* index_table is NULL if OBJF_READNOW. */
9291a0cd
TT
3891 if (!dwarf2_per_objfile->index_table)
3892 return;
4b5246aa 3893 index = dwarf2_per_objfile->index_table;
9291a0cd 3894
7b08b9eb 3895 if (file_matcher != NULL)
24c79950 3896 {
fc4007c9
TT
3897 htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
3898 htab_eq_pointer,
3899 NULL, xcalloc, xfree));
3900 htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
3901 htab_eq_pointer,
3902 NULL, xcalloc, xfree));
24c79950 3903
848e3e78
DE
3904 /* The rule is CUs specify all the files, including those used by
3905 any TU, so there's no need to scan TUs here. */
3906
3907 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
24c79950
TT
3908 {
3909 int j;
8832e7e3 3910 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
24c79950
TT
3911 struct quick_file_names *file_data;
3912 void **slot;
7b08b9eb 3913
61d96d7e
DE
3914 QUIT;
3915
24c79950 3916 per_cu->v.quick->mark = 0;
3d7bb9d9 3917
24c79950 3918 /* We only need to look at symtabs not already expanded. */
43f3e411 3919 if (per_cu->v.quick->compunit_symtab)
24c79950 3920 continue;
7b08b9eb 3921
e4a48d9d 3922 file_data = dw2_get_file_names (per_cu);
24c79950
TT
3923 if (file_data == NULL)
3924 continue;
7b08b9eb 3925
fc4007c9 3926 if (htab_find (visited_not_found.get (), file_data) != NULL)
24c79950 3927 continue;
fc4007c9 3928 else if (htab_find (visited_found.get (), file_data) != NULL)
24c79950
TT
3929 {
3930 per_cu->v.quick->mark = 1;
3931 continue;
3932 }
3933
3934 for (j = 0; j < file_data->num_file_names; ++j)
3935 {
da235a7c
JK
3936 const char *this_real_name;
3937
fbd9ab74 3938 if (file_matcher (file_data->file_names[j], data, 0))
24c79950
TT
3939 {
3940 per_cu->v.quick->mark = 1;
3941 break;
3942 }
da235a7c
JK
3943
3944 /* Before we invoke realpath, which can get expensive when many
3945 files are involved, do a quick comparison of the basenames. */
3946 if (!basenames_may_differ
3947 && !file_matcher (lbasename (file_data->file_names[j]),
3948 data, 1))
3949 continue;
3950
3951 this_real_name = dw2_get_real_path (objfile, file_data, j);
3952 if (file_matcher (this_real_name, data, 0))
3953 {
3954 per_cu->v.quick->mark = 1;
3955 break;
3956 }
24c79950
TT
3957 }
3958
3959 slot = htab_find_slot (per_cu->v.quick->mark
fc4007c9
TT
3960 ? visited_found.get ()
3961 : visited_not_found.get (),
24c79950
TT
3962 file_data, INSERT);
3963 *slot = file_data;
3964 }
24c79950 3965 }
9291a0cd 3966
3876f04e 3967 for (iter = 0; iter < index->symbol_table_slots; ++iter)
9291a0cd
TT
3968 {
3969 offset_type idx = 2 * iter;
3970 const char *name;
3971 offset_type *vec, vec_len, vec_idx;
8943b874 3972 int global_seen = 0;
9291a0cd 3973
61d96d7e
DE
3974 QUIT;
3975
3876f04e 3976 if (index->symbol_table[idx] == 0 && index->symbol_table[idx + 1] == 0)
9291a0cd
TT
3977 continue;
3978
3876f04e 3979 name = index->constant_pool + MAYBE_SWAP (index->symbol_table[idx]);
9291a0cd 3980
206f2a57 3981 if (! (*symbol_matcher) (name, data))
9291a0cd
TT
3982 continue;
3983
3984 /* The name was matched, now expand corresponding CUs that were
3985 marked. */
4b5246aa 3986 vec = (offset_type *) (index->constant_pool
3876f04e 3987 + MAYBE_SWAP (index->symbol_table[idx + 1]));
9291a0cd
TT
3988 vec_len = MAYBE_SWAP (vec[0]);
3989 for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
3990 {
e254ef6a 3991 struct dwarf2_per_cu_data *per_cu;
156942c7 3992 offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
8943b874
DE
3993 /* This value is only valid for index versions >= 7. */
3994 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
156942c7
DE
3995 gdb_index_symbol_kind symbol_kind =
3996 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3997 int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3190f0c6
DE
3998 /* Only check the symbol attributes if they're present.
3999 Indices prior to version 7 don't record them,
4000 and indices >= 7 may elide them for certain symbols
4001 (gold does this). */
4002 int attrs_valid =
4003 (index->version >= 7
4004 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
4005
8943b874
DE
4006 /* Work around gold/15646. */
4007 if (attrs_valid)
4008 {
4009 if (!is_static && global_seen)
4010 continue;
4011 if (!is_static)
4012 global_seen = 1;
4013 }
4014
3190f0c6
DE
4015 /* Only check the symbol's kind if it has one. */
4016 if (attrs_valid)
156942c7
DE
4017 {
4018 switch (kind)
4019 {
4020 case VARIABLES_DOMAIN:
4021 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
4022 continue;
4023 break;
4024 case FUNCTIONS_DOMAIN:
4025 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
4026 continue;
4027 break;
4028 case TYPES_DOMAIN:
4029 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4030 continue;
4031 break;
4032 default:
4033 break;
4034 }
4035 }
4036
3190f0c6
DE
4037 /* Don't crash on bad data. */
4038 if (cu_index >= (dwarf2_per_objfile->n_comp_units
4039 + dwarf2_per_objfile->n_type_units))
4040 {
4041 complaint (&symfile_complaints,
4042 _(".gdb_index entry has bad CU index"
4262abfb 4043 " [in module %s]"), objfile_name (objfile));
3190f0c6
DE
4044 continue;
4045 }
4046
8832e7e3 4047 per_cu = dw2_get_cutu (cu_index);
7b08b9eb 4048 if (file_matcher == NULL || per_cu->v.quick->mark)
276d885b
GB
4049 {
4050 int symtab_was_null =
4051 (per_cu->v.quick->compunit_symtab == NULL);
4052
4053 dw2_instantiate_symtab (per_cu);
4054
4055 if (expansion_notify != NULL
4056 && symtab_was_null
4057 && per_cu->v.quick->compunit_symtab != NULL)
4058 {
4059 expansion_notify (per_cu->v.quick->compunit_symtab,
4060 data);
4061 }
4062 }
9291a0cd
TT
4063 }
4064 }
4065}
4066
43f3e411 4067/* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
9703b513
TT
4068 symtab. */
4069
43f3e411
DE
4070static struct compunit_symtab *
4071recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
4072 CORE_ADDR pc)
9703b513
TT
4073{
4074 int i;
4075
43f3e411
DE
4076 if (COMPUNIT_BLOCKVECTOR (cust) != NULL
4077 && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
4078 return cust;
9703b513 4079
43f3e411 4080 if (cust->includes == NULL)
a3ec0bb1
DE
4081 return NULL;
4082
43f3e411 4083 for (i = 0; cust->includes[i]; ++i)
9703b513 4084 {
43f3e411 4085 struct compunit_symtab *s = cust->includes[i];
9703b513 4086
43f3e411 4087 s = recursively_find_pc_sect_compunit_symtab (s, pc);
9703b513
TT
4088 if (s != NULL)
4089 return s;
4090 }
4091
4092 return NULL;
4093}
4094
43f3e411
DE
4095static struct compunit_symtab *
4096dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
4097 struct bound_minimal_symbol msymbol,
4098 CORE_ADDR pc,
4099 struct obj_section *section,
4100 int warn_if_readin)
9291a0cd
TT
4101{
4102 struct dwarf2_per_cu_data *data;
43f3e411 4103 struct compunit_symtab *result;
9291a0cd
TT
4104
4105 dw2_setup (objfile);
4106
4107 if (!objfile->psymtabs_addrmap)
4108 return NULL;
4109
9a3c8263
SM
4110 data = (struct dwarf2_per_cu_data *) addrmap_find (objfile->psymtabs_addrmap,
4111 pc);
9291a0cd
TT
4112 if (!data)
4113 return NULL;
4114
43f3e411 4115 if (warn_if_readin && data->v.quick->compunit_symtab)
abebb8b0 4116 warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
9291a0cd
TT
4117 paddress (get_objfile_arch (objfile), pc));
4118
43f3e411
DE
4119 result
4120 = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data),
4121 pc);
9703b513
TT
4122 gdb_assert (result != NULL);
4123 return result;
9291a0cd
TT
4124}
4125
9291a0cd 4126static void
44b13c5a 4127dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
74e2f255 4128 void *data, int need_fullname)
9291a0cd
TT
4129{
4130 int i;
fc4007c9
TT
4131 htab_up visited (htab_create_alloc (10, htab_hash_pointer, htab_eq_pointer,
4132 NULL, xcalloc, xfree));
9291a0cd
TT
4133
4134 dw2_setup (objfile);
ae2de4f8 4135
848e3e78
DE
4136 /* The rule is CUs specify all the files, including those used by
4137 any TU, so there's no need to scan TUs here.
4138 We can ignore file names coming from already-expanded CUs. */
f4dc4d17 4139
848e3e78 4140 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
24c79950 4141 {
8832e7e3 4142 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
24c79950 4143
43f3e411 4144 if (per_cu->v.quick->compunit_symtab)
24c79950 4145 {
fc4007c9
TT
4146 void **slot = htab_find_slot (visited.get (),
4147 per_cu->v.quick->file_names,
24c79950
TT
4148 INSERT);
4149
4150 *slot = per_cu->v.quick->file_names;
4151 }
4152 }
4153
848e3e78 4154 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
4155 {
4156 int j;
8832e7e3 4157 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
7b9f3c50 4158 struct quick_file_names *file_data;
24c79950 4159 void **slot;
9291a0cd 4160
3d7bb9d9 4161 /* We only need to look at symtabs not already expanded. */
43f3e411 4162 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
4163 continue;
4164
e4a48d9d 4165 file_data = dw2_get_file_names (per_cu);
7b9f3c50 4166 if (file_data == NULL)
9291a0cd
TT
4167 continue;
4168
fc4007c9 4169 slot = htab_find_slot (visited.get (), file_data, INSERT);
24c79950
TT
4170 if (*slot)
4171 {
4172 /* Already visited. */
4173 continue;
4174 }
4175 *slot = file_data;
4176
7b9f3c50 4177 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 4178 {
74e2f255
DE
4179 const char *this_real_name;
4180
4181 if (need_fullname)
4182 this_real_name = dw2_get_real_path (objfile, file_data, j);
4183 else
4184 this_real_name = NULL;
7b9f3c50 4185 (*fun) (file_data->file_names[j], this_real_name, data);
9291a0cd
TT
4186 }
4187 }
4188}
4189
4190static int
4191dw2_has_symbols (struct objfile *objfile)
4192{
4193 return 1;
4194}
4195
4196const struct quick_symbol_functions dwarf2_gdb_index_functions =
4197{
4198 dw2_has_symbols,
4199 dw2_find_last_source_symtab,
4200 dw2_forget_cached_source_info,
f8eba3c6 4201 dw2_map_symtabs_matching_filename,
9291a0cd 4202 dw2_lookup_symbol,
9291a0cd
TT
4203 dw2_print_stats,
4204 dw2_dump,
4205 dw2_relocate,
4206 dw2_expand_symtabs_for_function,
4207 dw2_expand_all_symtabs,
652a8996 4208 dw2_expand_symtabs_with_fullname,
40658b94 4209 dw2_map_matching_symbols,
9291a0cd 4210 dw2_expand_symtabs_matching,
43f3e411 4211 dw2_find_pc_sect_compunit_symtab,
9291a0cd
TT
4212 dw2_map_symbol_filenames
4213};
4214
4215/* Initialize for reading DWARF for this objfile. Return 0 if this
4216 file will use psymtabs, or 1 if using the GNU index. */
4217
4218int
4219dwarf2_initialize_objfile (struct objfile *objfile)
4220{
4221 /* If we're about to read full symbols, don't bother with the
4222 indices. In this case we also don't care if some other debug
4223 format is making psymtabs, because they are all about to be
4224 expanded anyway. */
4225 if ((objfile->flags & OBJF_READNOW))
4226 {
4227 int i;
4228
4229 dwarf2_per_objfile->using_index = 1;
4230 create_all_comp_units (objfile);
0e50663e 4231 create_all_type_units (objfile);
7b9f3c50
DE
4232 dwarf2_per_objfile->quick_file_names_table =
4233 create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
9291a0cd 4234
1fd400ff 4235 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
d467dd73 4236 + dwarf2_per_objfile->n_type_units); ++i)
9291a0cd 4237 {
8832e7e3 4238 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 4239
e254ef6a
DE
4240 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4241 struct dwarf2_per_cu_quick_data);
9291a0cd
TT
4242 }
4243
4244 /* Return 1 so that gdb sees the "quick" functions. However,
4245 these functions will be no-ops because we will have expanded
4246 all symtabs. */
4247 return 1;
4248 }
4249
4250 if (dwarf2_read_index (objfile))
4251 return 1;
4252
9291a0cd
TT
4253 return 0;
4254}
4255
4256\f
4257
dce234bc
PP
4258/* Build a partial symbol table. */
4259
4260void
f29dff0a 4261dwarf2_build_psymtabs (struct objfile *objfile)
dce234bc 4262{
c9bf0622 4263
f29dff0a 4264 if (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0)
c906108c
SS
4265 {
4266 init_psymbol_list (objfile, 1024);
4267 }
4268
492d29ea 4269 TRY
c9bf0622
TT
4270 {
4271 /* This isn't really ideal: all the data we allocate on the
4272 objfile's obstack is still uselessly kept around. However,
4273 freeing it seems unsafe. */
4274 struct cleanup *cleanups = make_cleanup_discard_psymtabs (objfile);
4275
4276 dwarf2_build_psymtabs_hard (objfile);
4277 discard_cleanups (cleanups);
4278 }
492d29ea
PA
4279 CATCH (except, RETURN_MASK_ERROR)
4280 {
4281 exception_print (gdb_stderr, except);
4282 }
4283 END_CATCH
c906108c 4284}
c906108c 4285
1ce1cefd
DE
4286/* Return the total length of the CU described by HEADER. */
4287
4288static unsigned int
4289get_cu_length (const struct comp_unit_head *header)
4290{
4291 return header->initial_length_size + header->length;
4292}
4293
45452591
DE
4294/* Return TRUE if OFFSET is within CU_HEADER. */
4295
4296static inline int
b64f50a1 4297offset_in_cu_p (const struct comp_unit_head *cu_header, sect_offset offset)
45452591 4298{
b64f50a1 4299 sect_offset bottom = { cu_header->offset.sect_off };
1ce1cefd 4300 sect_offset top = { cu_header->offset.sect_off + get_cu_length (cu_header) };
9a619af0 4301
b64f50a1 4302 return (offset.sect_off >= bottom.sect_off && offset.sect_off < top.sect_off);
45452591
DE
4303}
4304
3b80fe9b
DE
4305/* Find the base address of the compilation unit for range lists and
4306 location lists. It will normally be specified by DW_AT_low_pc.
4307 In DWARF-3 draft 4, the base address could be overridden by
4308 DW_AT_entry_pc. It's been removed, but GCC still uses this for
4309 compilation units with discontinuous ranges. */
4310
4311static void
4312dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
4313{
4314 struct attribute *attr;
4315
4316 cu->base_known = 0;
4317 cu->base_address = 0;
4318
4319 attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
4320 if (attr)
4321 {
31aa7e4e 4322 cu->base_address = attr_value_as_address (attr);
3b80fe9b
DE
4323 cu->base_known = 1;
4324 }
4325 else
4326 {
4327 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
4328 if (attr)
4329 {
31aa7e4e 4330 cu->base_address = attr_value_as_address (attr);
3b80fe9b
DE
4331 cu->base_known = 1;
4332 }
4333 }
4334}
4335
93311388
DE
4336/* Read in the comp unit header information from the debug_info at info_ptr.
4337 NOTE: This leaves members offset, first_die_offset to be filled in
4338 by the caller. */
107d2387 4339
d521ce57 4340static const gdb_byte *
107d2387 4341read_comp_unit_head (struct comp_unit_head *cu_header,
d521ce57 4342 const gdb_byte *info_ptr, bfd *abfd)
107d2387
AC
4343{
4344 int signed_addr;
891d2f0b 4345 unsigned int bytes_read;
c764a876
DE
4346
4347 cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
4348 cu_header->initial_length_size = bytes_read;
4349 cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
613e1657 4350 info_ptr += bytes_read;
107d2387
AC
4351 cu_header->version = read_2_bytes (abfd, info_ptr);
4352 info_ptr += 2;
b64f50a1
JK
4353 cu_header->abbrev_offset.sect_off = read_offset (abfd, info_ptr, cu_header,
4354 &bytes_read);
613e1657 4355 info_ptr += bytes_read;
107d2387
AC
4356 cu_header->addr_size = read_1_byte (abfd, info_ptr);
4357 info_ptr += 1;
4358 signed_addr = bfd_get_sign_extend_vma (abfd);
4359 if (signed_addr < 0)
8e65ff28 4360 internal_error (__FILE__, __LINE__,
e2e0b3e5 4361 _("read_comp_unit_head: dwarf from non elf file"));
107d2387 4362 cu_header->signed_addr_p = signed_addr;
c764a876 4363
107d2387
AC
4364 return info_ptr;
4365}
4366
36586728
TT
4367/* Helper function that returns the proper abbrev section for
4368 THIS_CU. */
4369
4370static struct dwarf2_section_info *
4371get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
4372{
4373 struct dwarf2_section_info *abbrev;
4374
4375 if (this_cu->is_dwz)
4376 abbrev = &dwarf2_get_dwz_file ()->abbrev;
4377 else
4378 abbrev = &dwarf2_per_objfile->abbrev;
4379
4380 return abbrev;
4381}
4382
9ff913ba
DE
4383/* Subroutine of read_and_check_comp_unit_head and
4384 read_and_check_type_unit_head to simplify them.
4385 Perform various error checking on the header. */
4386
4387static void
4388error_check_comp_unit_head (struct comp_unit_head *header,
4bdcc0c1
DE
4389 struct dwarf2_section_info *section,
4390 struct dwarf2_section_info *abbrev_section)
9ff913ba 4391{
a32a8923 4392 const char *filename = get_section_file_name (section);
9ff913ba
DE
4393
4394 if (header->version != 2 && header->version != 3 && header->version != 4)
4395 error (_("Dwarf Error: wrong version in compilation unit header "
4396 "(is %d, should be 2, 3, or 4) [in module %s]"), header->version,
4397 filename);
4398
b64f50a1 4399 if (header->abbrev_offset.sect_off
36586728 4400 >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
9ff913ba
DE
4401 error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
4402 "(offset 0x%lx + 6) [in module %s]"),
b64f50a1 4403 (long) header->abbrev_offset.sect_off, (long) header->offset.sect_off,
9ff913ba
DE
4404 filename);
4405
4406 /* Cast to unsigned long to use 64-bit arithmetic when possible to
4407 avoid potential 32-bit overflow. */
1ce1cefd 4408 if (((unsigned long) header->offset.sect_off + get_cu_length (header))
9ff913ba
DE
4409 > section->size)
4410 error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
4411 "(offset 0x%lx + 0) [in module %s]"),
b64f50a1 4412 (long) header->length, (long) header->offset.sect_off,
9ff913ba
DE
4413 filename);
4414}
4415
4416/* Read in a CU/TU header and perform some basic error checking.
4417 The contents of the header are stored in HEADER.
4418 The result is a pointer to the start of the first DIE. */
adabb602 4419
d521ce57 4420static const gdb_byte *
9ff913ba
DE
4421read_and_check_comp_unit_head (struct comp_unit_head *header,
4422 struct dwarf2_section_info *section,
4bdcc0c1 4423 struct dwarf2_section_info *abbrev_section,
d521ce57 4424 const gdb_byte *info_ptr,
9ff913ba 4425 int is_debug_types_section)
72bf9492 4426{
d521ce57 4427 const gdb_byte *beg_of_comp_unit = info_ptr;
a32a8923 4428 bfd *abfd = get_section_bfd_owner (section);
72bf9492 4429
b64f50a1 4430 header->offset.sect_off = beg_of_comp_unit - section->buffer;
adabb602 4431
72bf9492
DJ
4432 info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4433
460c1c54
CC
4434 /* If we're reading a type unit, skip over the signature and
4435 type_offset fields. */
b0df02fd 4436 if (is_debug_types_section)
460c1c54
CC
4437 info_ptr += 8 /*signature*/ + header->offset_size;
4438
b64f50a1 4439 header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
adabb602 4440
4bdcc0c1 4441 error_check_comp_unit_head (header, section, abbrev_section);
72bf9492
DJ
4442
4443 return info_ptr;
4444}
4445
348e048f
DE
4446/* Read in the types comp unit header information from .debug_types entry at
4447 types_ptr. The result is a pointer to one past the end of the header. */
4448
d521ce57 4449static const gdb_byte *
9ff913ba
DE
4450read_and_check_type_unit_head (struct comp_unit_head *header,
4451 struct dwarf2_section_info *section,
4bdcc0c1 4452 struct dwarf2_section_info *abbrev_section,
d521ce57 4453 const gdb_byte *info_ptr,
dee91e82
DE
4454 ULONGEST *signature,
4455 cu_offset *type_offset_in_tu)
348e048f 4456{
d521ce57 4457 const gdb_byte *beg_of_comp_unit = info_ptr;
a32a8923 4458 bfd *abfd = get_section_bfd_owner (section);
348e048f 4459
b64f50a1 4460 header->offset.sect_off = beg_of_comp_unit - section->buffer;
348e048f 4461
9ff913ba 4462 info_ptr = read_comp_unit_head (header, info_ptr, abfd);
348e048f 4463
9ff913ba
DE
4464 /* If we're reading a type unit, skip over the signature and
4465 type_offset fields. */
4466 if (signature != NULL)
4467 *signature = read_8_bytes (abfd, info_ptr);
4468 info_ptr += 8;
dee91e82
DE
4469 if (type_offset_in_tu != NULL)
4470 type_offset_in_tu->cu_off = read_offset_1 (abfd, info_ptr,
4471 header->offset_size);
9ff913ba
DE
4472 info_ptr += header->offset_size;
4473
b64f50a1 4474 header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
348e048f 4475
4bdcc0c1 4476 error_check_comp_unit_head (header, section, abbrev_section);
9ff913ba
DE
4477
4478 return info_ptr;
348e048f
DE
4479}
4480
f4dc4d17
DE
4481/* Fetch the abbreviation table offset from a comp or type unit header. */
4482
4483static sect_offset
4484read_abbrev_offset (struct dwarf2_section_info *section,
4485 sect_offset offset)
4486{
a32a8923 4487 bfd *abfd = get_section_bfd_owner (section);
d521ce57 4488 const gdb_byte *info_ptr;
ac298888 4489 unsigned int initial_length_size, offset_size;
f4dc4d17
DE
4490 sect_offset abbrev_offset;
4491
4492 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
4493 info_ptr = section->buffer + offset.sect_off;
ac298888 4494 read_initial_length (abfd, info_ptr, &initial_length_size);
f4dc4d17
DE
4495 offset_size = initial_length_size == 4 ? 4 : 8;
4496 info_ptr += initial_length_size + 2 /*version*/;
4497 abbrev_offset.sect_off = read_offset_1 (abfd, info_ptr, offset_size);
4498 return abbrev_offset;
4499}
4500
aaa75496
JB
4501/* Allocate a new partial symtab for file named NAME and mark this new
4502 partial symtab as being an include of PST. */
4503
4504static void
d521ce57 4505dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
aaa75496
JB
4506 struct objfile *objfile)
4507{
4508 struct partial_symtab *subpst = allocate_psymtab (name, objfile);
4509
fbd9ab74
JK
4510 if (!IS_ABSOLUTE_PATH (subpst->filename))
4511 {
4512 /* It shares objfile->objfile_obstack. */
4513 subpst->dirname = pst->dirname;
4514 }
4515
aaa75496
JB
4516 subpst->textlow = 0;
4517 subpst->texthigh = 0;
4518
8d749320
SM
4519 subpst->dependencies
4520 = XOBNEW (&objfile->objfile_obstack, struct partial_symtab *);
aaa75496
JB
4521 subpst->dependencies[0] = pst;
4522 subpst->number_of_dependencies = 1;
4523
4524 subpst->globals_offset = 0;
4525 subpst->n_global_syms = 0;
4526 subpst->statics_offset = 0;
4527 subpst->n_static_syms = 0;
43f3e411 4528 subpst->compunit_symtab = NULL;
aaa75496
JB
4529 subpst->read_symtab = pst->read_symtab;
4530 subpst->readin = 0;
4531
4532 /* No private part is necessary for include psymtabs. This property
4533 can be used to differentiate between such include psymtabs and
10b3939b 4534 the regular ones. */
58a9656e 4535 subpst->read_symtab_private = NULL;
aaa75496
JB
4536}
4537
4538/* Read the Line Number Program data and extract the list of files
4539 included by the source file represented by PST. Build an include
d85a05f0 4540 partial symtab for each of these included files. */
aaa75496
JB
4541
4542static void
4543dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
dee91e82
DE
4544 struct die_info *die,
4545 struct partial_symtab *pst)
aaa75496 4546{
d85a05f0
DJ
4547 struct line_header *lh = NULL;
4548 struct attribute *attr;
aaa75496 4549
d85a05f0
DJ
4550 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
4551 if (attr)
3019eac3 4552 lh = dwarf_decode_line_header (DW_UNSND (attr), cu);
aaa75496
JB
4553 if (lh == NULL)
4554 return; /* No linetable, so no includes. */
4555
c6da4cef 4556 /* NOTE: pst->dirname is DW_AT_comp_dir (if present). */
527f3840 4557 dwarf_decode_lines (lh, pst->dirname, cu, pst, pst->textlow, 1);
aaa75496
JB
4558
4559 free_line_header (lh);
4560}
4561
348e048f 4562static hashval_t
52dc124a 4563hash_signatured_type (const void *item)
348e048f 4564{
9a3c8263
SM
4565 const struct signatured_type *sig_type
4566 = (const struct signatured_type *) item;
9a619af0 4567
348e048f 4568 /* This drops the top 32 bits of the signature, but is ok for a hash. */
52dc124a 4569 return sig_type->signature;
348e048f
DE
4570}
4571
4572static int
52dc124a 4573eq_signatured_type (const void *item_lhs, const void *item_rhs)
348e048f 4574{
9a3c8263
SM
4575 const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
4576 const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
9a619af0 4577
348e048f
DE
4578 return lhs->signature == rhs->signature;
4579}
4580
1fd400ff
TT
4581/* Allocate a hash table for signatured types. */
4582
4583static htab_t
673bfd45 4584allocate_signatured_type_table (struct objfile *objfile)
1fd400ff
TT
4585{
4586 return htab_create_alloc_ex (41,
52dc124a
DE
4587 hash_signatured_type,
4588 eq_signatured_type,
1fd400ff
TT
4589 NULL,
4590 &objfile->objfile_obstack,
4591 hashtab_obstack_allocate,
4592 dummy_obstack_deallocate);
4593}
4594
d467dd73 4595/* A helper function to add a signatured type CU to a table. */
1fd400ff
TT
4596
4597static int
d467dd73 4598add_signatured_type_cu_to_table (void **slot, void *datum)
1fd400ff 4599{
9a3c8263
SM
4600 struct signatured_type *sigt = (struct signatured_type *) *slot;
4601 struct signatured_type ***datap = (struct signatured_type ***) datum;
1fd400ff 4602
b4dd5633 4603 **datap = sigt;
1fd400ff
TT
4604 ++*datap;
4605
4606 return 1;
4607}
4608
c88ee1f0
DE
4609/* Create the hash table of all entries in the .debug_types
4610 (or .debug_types.dwo) section(s).
4611 If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
4612 otherwise it is NULL.
4613
4614 The result is a pointer to the hash table or NULL if there are no types.
4615
4616 Note: This function processes DWO files only, not DWP files. */
348e048f 4617
3019eac3
DE
4618static htab_t
4619create_debug_types_hash_table (struct dwo_file *dwo_file,
4620 VEC (dwarf2_section_info_def) *types)
348e048f 4621{
3019eac3 4622 struct objfile *objfile = dwarf2_per_objfile->objfile;
8b70b953 4623 htab_t types_htab = NULL;
8b70b953
TT
4624 int ix;
4625 struct dwarf2_section_info *section;
4bdcc0c1 4626 struct dwarf2_section_info *abbrev_section;
348e048f 4627
3019eac3
DE
4628 if (VEC_empty (dwarf2_section_info_def, types))
4629 return NULL;
348e048f 4630
4bdcc0c1
DE
4631 abbrev_section = (dwo_file != NULL
4632 ? &dwo_file->sections.abbrev
4633 : &dwarf2_per_objfile->abbrev);
4634
b4f54984 4635 if (dwarf_read_debug)
09406207
DE
4636 fprintf_unfiltered (gdb_stdlog, "Reading .debug_types%s for %s:\n",
4637 dwo_file ? ".dwo" : "",
a32a8923 4638 get_section_file_name (abbrev_section));
09406207 4639
8b70b953 4640 for (ix = 0;
3019eac3 4641 VEC_iterate (dwarf2_section_info_def, types, ix, section);
8b70b953
TT
4642 ++ix)
4643 {
3019eac3 4644 bfd *abfd;
d521ce57 4645 const gdb_byte *info_ptr, *end_ptr;
348e048f 4646
8b70b953
TT
4647 dwarf2_read_section (objfile, section);
4648 info_ptr = section->buffer;
348e048f 4649
8b70b953
TT
4650 if (info_ptr == NULL)
4651 continue;
348e048f 4652
3019eac3 4653 /* We can't set abfd until now because the section may be empty or
a32a8923
DE
4654 not present, in which case the bfd is unknown. */
4655 abfd = get_section_bfd_owner (section);
3019eac3 4656
dee91e82
DE
4657 /* We don't use init_cutu_and_read_dies_simple, or some such, here
4658 because we don't need to read any dies: the signature is in the
4659 header. */
8b70b953
TT
4660
4661 end_ptr = info_ptr + section->size;
4662 while (info_ptr < end_ptr)
4663 {
b64f50a1 4664 sect_offset offset;
3019eac3 4665 cu_offset type_offset_in_tu;
8b70b953 4666 ULONGEST signature;
52dc124a 4667 struct signatured_type *sig_type;
3019eac3 4668 struct dwo_unit *dwo_tu;
8b70b953 4669 void **slot;
d521ce57 4670 const gdb_byte *ptr = info_ptr;
9ff913ba 4671 struct comp_unit_head header;
dee91e82 4672 unsigned int length;
348e048f 4673
b64f50a1 4674 offset.sect_off = ptr - section->buffer;
348e048f 4675
8b70b953 4676 /* We need to read the type's signature in order to build the hash
9ff913ba 4677 table, but we don't need anything else just yet. */
348e048f 4678
4bdcc0c1
DE
4679 ptr = read_and_check_type_unit_head (&header, section,
4680 abbrev_section, ptr,
3019eac3 4681 &signature, &type_offset_in_tu);
6caca83c 4682
1ce1cefd 4683 length = get_cu_length (&header);
dee91e82 4684
6caca83c 4685 /* Skip dummy type units. */
dee91e82
DE
4686 if (ptr >= info_ptr + length
4687 || peek_abbrev_code (abfd, ptr) == 0)
6caca83c 4688 {
1ce1cefd 4689 info_ptr += length;
6caca83c
CC
4690 continue;
4691 }
8b70b953 4692
0349ea22
DE
4693 if (types_htab == NULL)
4694 {
4695 if (dwo_file)
4696 types_htab = allocate_dwo_unit_table (objfile);
4697 else
4698 types_htab = allocate_signatured_type_table (objfile);
4699 }
4700
3019eac3
DE
4701 if (dwo_file)
4702 {
4703 sig_type = NULL;
4704 dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4705 struct dwo_unit);
4706 dwo_tu->dwo_file = dwo_file;
4707 dwo_tu->signature = signature;
4708 dwo_tu->type_offset_in_tu = type_offset_in_tu;
8a0459fd 4709 dwo_tu->section = section;
3019eac3
DE
4710 dwo_tu->offset = offset;
4711 dwo_tu->length = length;
4712 }
4713 else
4714 {
4715 /* N.B.: type_offset is not usable if this type uses a DWO file.
4716 The real type_offset is in the DWO file. */
4717 dwo_tu = NULL;
4718 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4719 struct signatured_type);
4720 sig_type->signature = signature;
4721 sig_type->type_offset_in_tu = type_offset_in_tu;
4722 sig_type->per_cu.objfile = objfile;
4723 sig_type->per_cu.is_debug_types = 1;
8a0459fd 4724 sig_type->per_cu.section = section;
3019eac3
DE
4725 sig_type->per_cu.offset = offset;
4726 sig_type->per_cu.length = length;
4727 }
8b70b953 4728
3019eac3
DE
4729 slot = htab_find_slot (types_htab,
4730 dwo_file ? (void*) dwo_tu : (void *) sig_type,
4731 INSERT);
8b70b953
TT
4732 gdb_assert (slot != NULL);
4733 if (*slot != NULL)
4734 {
3019eac3
DE
4735 sect_offset dup_offset;
4736
4737 if (dwo_file)
4738 {
9a3c8263
SM
4739 const struct dwo_unit *dup_tu
4740 = (const struct dwo_unit *) *slot;
3019eac3
DE
4741
4742 dup_offset = dup_tu->offset;
4743 }
4744 else
4745 {
9a3c8263
SM
4746 const struct signatured_type *dup_tu
4747 = (const struct signatured_type *) *slot;
3019eac3
DE
4748
4749 dup_offset = dup_tu->per_cu.offset;
4750 }
b3c8eb43 4751
8b70b953 4752 complaint (&symfile_complaints,
c88ee1f0 4753 _("debug type entry at offset 0x%x is duplicate to"
4031ecc5 4754 " the entry at offset 0x%x, signature %s"),
3019eac3 4755 offset.sect_off, dup_offset.sect_off,
4031ecc5 4756 hex_string (signature));
8b70b953 4757 }
3019eac3 4758 *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
348e048f 4759
b4f54984 4760 if (dwarf_read_debug > 1)
4031ecc5 4761 fprintf_unfiltered (gdb_stdlog, " offset 0x%x, signature %s\n",
b64f50a1 4762 offset.sect_off,
4031ecc5 4763 hex_string (signature));
348e048f 4764
dee91e82 4765 info_ptr += length;
8b70b953 4766 }
348e048f
DE
4767 }
4768
3019eac3
DE
4769 return types_htab;
4770}
4771
4772/* Create the hash table of all entries in the .debug_types section,
4773 and initialize all_type_units.
4774 The result is zero if there is an error (e.g. missing .debug_types section),
4775 otherwise non-zero. */
4776
4777static int
4778create_all_type_units (struct objfile *objfile)
4779{
4780 htab_t types_htab;
b4dd5633 4781 struct signatured_type **iter;
3019eac3
DE
4782
4783 types_htab = create_debug_types_hash_table (NULL, dwarf2_per_objfile->types);
4784 if (types_htab == NULL)
4785 {
4786 dwarf2_per_objfile->signatured_types = NULL;
4787 return 0;
4788 }
4789
348e048f
DE
4790 dwarf2_per_objfile->signatured_types = types_htab;
4791
6aa5f3a6
DE
4792 dwarf2_per_objfile->n_type_units
4793 = dwarf2_per_objfile->n_allocated_type_units
4794 = htab_elements (types_htab);
8d749320
SM
4795 dwarf2_per_objfile->all_type_units =
4796 XNEWVEC (struct signatured_type *, dwarf2_per_objfile->n_type_units);
d467dd73
DE
4797 iter = &dwarf2_per_objfile->all_type_units[0];
4798 htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table, &iter);
4799 gdb_assert (iter - &dwarf2_per_objfile->all_type_units[0]
4800 == dwarf2_per_objfile->n_type_units);
1fd400ff 4801
348e048f
DE
4802 return 1;
4803}
4804
6aa5f3a6
DE
4805/* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
4806 If SLOT is non-NULL, it is the entry to use in the hash table.
4807 Otherwise we find one. */
4808
4809static struct signatured_type *
4810add_type_unit (ULONGEST sig, void **slot)
4811{
4812 struct objfile *objfile = dwarf2_per_objfile->objfile;
4813 int n_type_units = dwarf2_per_objfile->n_type_units;
4814 struct signatured_type *sig_type;
4815
4816 gdb_assert (n_type_units <= dwarf2_per_objfile->n_allocated_type_units);
4817 ++n_type_units;
4818 if (n_type_units > dwarf2_per_objfile->n_allocated_type_units)
4819 {
4820 if (dwarf2_per_objfile->n_allocated_type_units == 0)
4821 dwarf2_per_objfile->n_allocated_type_units = 1;
4822 dwarf2_per_objfile->n_allocated_type_units *= 2;
4823 dwarf2_per_objfile->all_type_units
224c3ddb
SM
4824 = XRESIZEVEC (struct signatured_type *,
4825 dwarf2_per_objfile->all_type_units,
4826 dwarf2_per_objfile->n_allocated_type_units);
6aa5f3a6
DE
4827 ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
4828 }
4829 dwarf2_per_objfile->n_type_units = n_type_units;
4830
4831 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4832 struct signatured_type);
4833 dwarf2_per_objfile->all_type_units[n_type_units - 1] = sig_type;
4834 sig_type->signature = sig;
4835 sig_type->per_cu.is_debug_types = 1;
4836 if (dwarf2_per_objfile->using_index)
4837 {
4838 sig_type->per_cu.v.quick =
4839 OBSTACK_ZALLOC (&objfile->objfile_obstack,
4840 struct dwarf2_per_cu_quick_data);
4841 }
4842
4843 if (slot == NULL)
4844 {
4845 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4846 sig_type, INSERT);
4847 }
4848 gdb_assert (*slot == NULL);
4849 *slot = sig_type;
4850 /* The rest of sig_type must be filled in by the caller. */
4851 return sig_type;
4852}
4853
a2ce51a0
DE
4854/* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
4855 Fill in SIG_ENTRY with DWO_ENTRY. */
4856
4857static void
4858fill_in_sig_entry_from_dwo_entry (struct objfile *objfile,
4859 struct signatured_type *sig_entry,
4860 struct dwo_unit *dwo_entry)
4861{
7ee85ab1 4862 /* Make sure we're not clobbering something we don't expect to. */
a2ce51a0
DE
4863 gdb_assert (! sig_entry->per_cu.queued);
4864 gdb_assert (sig_entry->per_cu.cu == NULL);
6aa5f3a6
DE
4865 if (dwarf2_per_objfile->using_index)
4866 {
4867 gdb_assert (sig_entry->per_cu.v.quick != NULL);
43f3e411 4868 gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6aa5f3a6
DE
4869 }
4870 else
4871 gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
a2ce51a0
DE
4872 gdb_assert (sig_entry->signature == dwo_entry->signature);
4873 gdb_assert (sig_entry->type_offset_in_section.sect_off == 0);
4874 gdb_assert (sig_entry->type_unit_group == NULL);
7ee85ab1
DE
4875 gdb_assert (sig_entry->dwo_unit == NULL);
4876
4877 sig_entry->per_cu.section = dwo_entry->section;
4878 sig_entry->per_cu.offset = dwo_entry->offset;
4879 sig_entry->per_cu.length = dwo_entry->length;
4880 sig_entry->per_cu.reading_dwo_directly = 1;
4881 sig_entry->per_cu.objfile = objfile;
a2ce51a0
DE
4882 sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
4883 sig_entry->dwo_unit = dwo_entry;
4884}
4885
4886/* Subroutine of lookup_signatured_type.
7ee85ab1
DE
4887 If we haven't read the TU yet, create the signatured_type data structure
4888 for a TU to be read in directly from a DWO file, bypassing the stub.
4889 This is the "Stay in DWO Optimization": When there is no DWP file and we're
4890 using .gdb_index, then when reading a CU we want to stay in the DWO file
4891 containing that CU. Otherwise we could end up reading several other DWO
4892 files (due to comdat folding) to process the transitive closure of all the
4893 mentioned TUs, and that can be slow. The current DWO file will have every
4894 type signature that it needs.
a2ce51a0
DE
4895 We only do this for .gdb_index because in the psymtab case we already have
4896 to read all the DWOs to build the type unit groups. */
4897
4898static struct signatured_type *
4899lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4900{
4901 struct objfile *objfile = dwarf2_per_objfile->objfile;
4902 struct dwo_file *dwo_file;
4903 struct dwo_unit find_dwo_entry, *dwo_entry;
4904 struct signatured_type find_sig_entry, *sig_entry;
6aa5f3a6 4905 void **slot;
a2ce51a0
DE
4906
4907 gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4908
6aa5f3a6
DE
4909 /* If TU skeletons have been removed then we may not have read in any
4910 TUs yet. */
4911 if (dwarf2_per_objfile->signatured_types == NULL)
4912 {
4913 dwarf2_per_objfile->signatured_types
4914 = allocate_signatured_type_table (objfile);
4915 }
a2ce51a0
DE
4916
4917 /* We only ever need to read in one copy of a signatured type.
6aa5f3a6
DE
4918 Use the global signatured_types array to do our own comdat-folding
4919 of types. If this is the first time we're reading this TU, and
4920 the TU has an entry in .gdb_index, replace the recorded data from
4921 .gdb_index with this TU. */
a2ce51a0 4922
a2ce51a0 4923 find_sig_entry.signature = sig;
6aa5f3a6
DE
4924 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4925 &find_sig_entry, INSERT);
9a3c8263 4926 sig_entry = (struct signatured_type *) *slot;
7ee85ab1
DE
4927
4928 /* We can get here with the TU already read, *or* in the process of being
6aa5f3a6
DE
4929 read. Don't reassign the global entry to point to this DWO if that's
4930 the case. Also note that if the TU is already being read, it may not
4931 have come from a DWO, the program may be a mix of Fission-compiled
4932 code and non-Fission-compiled code. */
4933
4934 /* Have we already tried to read this TU?
4935 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
4936 needn't exist in the global table yet). */
4937 if (sig_entry != NULL && sig_entry->per_cu.tu_read)
a2ce51a0
DE
4938 return sig_entry;
4939
6aa5f3a6
DE
4940 /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
4941 dwo_unit of the TU itself. */
4942 dwo_file = cu->dwo_unit->dwo_file;
4943
a2ce51a0
DE
4944 /* Ok, this is the first time we're reading this TU. */
4945 if (dwo_file->tus == NULL)
4946 return NULL;
4947 find_dwo_entry.signature = sig;
9a3c8263 4948 dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_entry);
a2ce51a0
DE
4949 if (dwo_entry == NULL)
4950 return NULL;
4951
6aa5f3a6
DE
4952 /* If the global table doesn't have an entry for this TU, add one. */
4953 if (sig_entry == NULL)
4954 sig_entry = add_type_unit (sig, slot);
4955
a2ce51a0 4956 fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
89e63ee4 4957 sig_entry->per_cu.tu_read = 1;
a2ce51a0
DE
4958 return sig_entry;
4959}
4960
a2ce51a0
DE
4961/* Subroutine of lookup_signatured_type.
4962 Look up the type for signature SIG, and if we can't find SIG in .gdb_index
6aa5f3a6
DE
4963 then try the DWP file. If the TU stub (skeleton) has been removed then
4964 it won't be in .gdb_index. */
a2ce51a0
DE
4965
4966static struct signatured_type *
4967lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4968{
4969 struct objfile *objfile = dwarf2_per_objfile->objfile;
4970 struct dwp_file *dwp_file = get_dwp_file ();
4971 struct dwo_unit *dwo_entry;
4972 struct signatured_type find_sig_entry, *sig_entry;
6aa5f3a6 4973 void **slot;
a2ce51a0
DE
4974
4975 gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4976 gdb_assert (dwp_file != NULL);
4977
6aa5f3a6
DE
4978 /* If TU skeletons have been removed then we may not have read in any
4979 TUs yet. */
4980 if (dwarf2_per_objfile->signatured_types == NULL)
a2ce51a0 4981 {
6aa5f3a6
DE
4982 dwarf2_per_objfile->signatured_types
4983 = allocate_signatured_type_table (objfile);
a2ce51a0
DE
4984 }
4985
6aa5f3a6
DE
4986 find_sig_entry.signature = sig;
4987 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4988 &find_sig_entry, INSERT);
9a3c8263 4989 sig_entry = (struct signatured_type *) *slot;
6aa5f3a6
DE
4990
4991 /* Have we already tried to read this TU?
4992 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
4993 needn't exist in the global table yet). */
4994 if (sig_entry != NULL)
4995 return sig_entry;
4996
a2ce51a0
DE
4997 if (dwp_file->tus == NULL)
4998 return NULL;
57d63ce2
DE
4999 dwo_entry = lookup_dwo_unit_in_dwp (dwp_file, NULL,
5000 sig, 1 /* is_debug_types */);
a2ce51a0
DE
5001 if (dwo_entry == NULL)
5002 return NULL;
5003
6aa5f3a6 5004 sig_entry = add_type_unit (sig, slot);
a2ce51a0
DE
5005 fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
5006
a2ce51a0
DE
5007 return sig_entry;
5008}
5009
380bca97 5010/* Lookup a signature based type for DW_FORM_ref_sig8.
5a8b3f62
DE
5011 Returns NULL if signature SIG is not present in the table.
5012 It is up to the caller to complain about this. */
348e048f
DE
5013
5014static struct signatured_type *
a2ce51a0 5015lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
348e048f 5016{
a2ce51a0
DE
5017 if (cu->dwo_unit
5018 && dwarf2_per_objfile->using_index)
5019 {
5020 /* We're in a DWO/DWP file, and we're using .gdb_index.
5021 These cases require special processing. */
5022 if (get_dwp_file () == NULL)
5023 return lookup_dwo_signatured_type (cu, sig);
5024 else
5025 return lookup_dwp_signatured_type (cu, sig);
5026 }
5027 else
5028 {
5029 struct signatured_type find_entry, *entry;
348e048f 5030
a2ce51a0
DE
5031 if (dwarf2_per_objfile->signatured_types == NULL)
5032 return NULL;
5033 find_entry.signature = sig;
9a3c8263
SM
5034 entry = ((struct signatured_type *)
5035 htab_find (dwarf2_per_objfile->signatured_types, &find_entry));
a2ce51a0
DE
5036 return entry;
5037 }
348e048f 5038}
42e7ad6c
DE
5039\f
5040/* Low level DIE reading support. */
348e048f 5041
d85a05f0
DJ
5042/* Initialize a die_reader_specs struct from a dwarf2_cu struct. */
5043
5044static void
5045init_cu_die_reader (struct die_reader_specs *reader,
dee91e82 5046 struct dwarf2_cu *cu,
3019eac3
DE
5047 struct dwarf2_section_info *section,
5048 struct dwo_file *dwo_file)
d85a05f0 5049{
fceca515 5050 gdb_assert (section->readin && section->buffer != NULL);
a32a8923 5051 reader->abfd = get_section_bfd_owner (section);
d85a05f0 5052 reader->cu = cu;
3019eac3 5053 reader->dwo_file = dwo_file;
dee91e82
DE
5054 reader->die_section = section;
5055 reader->buffer = section->buffer;
f664829e 5056 reader->buffer_end = section->buffer + section->size;
a2ce51a0 5057 reader->comp_dir = NULL;
d85a05f0
DJ
5058}
5059
b0c7bfa9
DE
5060/* Subroutine of init_cutu_and_read_dies to simplify it.
5061 Read in the rest of a CU/TU top level DIE from DWO_UNIT.
5062 There's just a lot of work to do, and init_cutu_and_read_dies is big enough
5063 already.
5064
5065 STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
5066 from it to the DIE in the DWO. If NULL we are skipping the stub.
a2ce51a0
DE
5067 STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
5068 from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
c54a1dd8
DE
5069 attribute of the referencing CU. At most one of STUB_COMP_UNIT_DIE and
5070 STUB_COMP_DIR may be non-NULL.
b0c7bfa9
DE
5071 *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
5072 are filled in with the info of the DIE from the DWO file.
5073 ABBREV_TABLE_PROVIDED is non-zero if the caller of init_cutu_and_read_dies
5074 provided an abbrev table to use.
5075 The result is non-zero if a valid (non-dummy) DIE was found. */
5076
5077static int
5078read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
5079 struct dwo_unit *dwo_unit,
5080 int abbrev_table_provided,
5081 struct die_info *stub_comp_unit_die,
a2ce51a0 5082 const char *stub_comp_dir,
b0c7bfa9 5083 struct die_reader_specs *result_reader,
d521ce57 5084 const gdb_byte **result_info_ptr,
b0c7bfa9
DE
5085 struct die_info **result_comp_unit_die,
5086 int *result_has_children)
5087{
5088 struct objfile *objfile = dwarf2_per_objfile->objfile;
5089 struct dwarf2_cu *cu = this_cu->cu;
5090 struct dwarf2_section_info *section;
5091 bfd *abfd;
d521ce57 5092 const gdb_byte *begin_info_ptr, *info_ptr;
b0c7bfa9
DE
5093 ULONGEST signature; /* Or dwo_id. */
5094 struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
5095 int i,num_extra_attrs;
5096 struct dwarf2_section_info *dwo_abbrev_section;
5097 struct attribute *attr;
5098 struct die_info *comp_unit_die;
5099
b0aeadb3
DE
5100 /* At most one of these may be provided. */
5101 gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
a2ce51a0 5102
b0c7bfa9
DE
5103 /* These attributes aren't processed until later:
5104 DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
0d60c288
DE
5105 DW_AT_comp_dir is used now, to find the DWO file, but it is also
5106 referenced later. However, these attributes are found in the stub
5107 which we won't have later. In order to not impose this complication
5108 on the rest of the code, we read them here and copy them to the
5109 DWO CU/TU die. */
b0c7bfa9
DE
5110
5111 stmt_list = NULL;
5112 low_pc = NULL;
5113 high_pc = NULL;
5114 ranges = NULL;
5115 comp_dir = NULL;
5116
5117 if (stub_comp_unit_die != NULL)
5118 {
5119 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
5120 DWO file. */
5121 if (! this_cu->is_debug_types)
5122 stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
5123 low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
5124 high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
5125 ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
5126 comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
5127
5128 /* There should be a DW_AT_addr_base attribute here (if needed).
5129 We need the value before we can process DW_FORM_GNU_addr_index. */
5130 cu->addr_base = 0;
5131 attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
5132 if (attr)
5133 cu->addr_base = DW_UNSND (attr);
5134
5135 /* There should be a DW_AT_ranges_base attribute here (if needed).
5136 We need the value before we can process DW_AT_ranges. */
5137 cu->ranges_base = 0;
5138 attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
5139 if (attr)
5140 cu->ranges_base = DW_UNSND (attr);
5141 }
a2ce51a0
DE
5142 else if (stub_comp_dir != NULL)
5143 {
5144 /* Reconstruct the comp_dir attribute to simplify the code below. */
8d749320 5145 comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
a2ce51a0
DE
5146 comp_dir->name = DW_AT_comp_dir;
5147 comp_dir->form = DW_FORM_string;
5148 DW_STRING_IS_CANONICAL (comp_dir) = 0;
5149 DW_STRING (comp_dir) = stub_comp_dir;
5150 }
b0c7bfa9
DE
5151
5152 /* Set up for reading the DWO CU/TU. */
5153 cu->dwo_unit = dwo_unit;
5154 section = dwo_unit->section;
5155 dwarf2_read_section (objfile, section);
a32a8923 5156 abfd = get_section_bfd_owner (section);
b0c7bfa9
DE
5157 begin_info_ptr = info_ptr = section->buffer + dwo_unit->offset.sect_off;
5158 dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
5159 init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file);
5160
5161 if (this_cu->is_debug_types)
5162 {
5163 ULONGEST header_signature;
5164 cu_offset type_offset_in_tu;
5165 struct signatured_type *sig_type = (struct signatured_type *) this_cu;
5166
5167 info_ptr = read_and_check_type_unit_head (&cu->header, section,
5168 dwo_abbrev_section,
5169 info_ptr,
5170 &header_signature,
5171 &type_offset_in_tu);
a2ce51a0
DE
5172 /* This is not an assert because it can be caused by bad debug info. */
5173 if (sig_type->signature != header_signature)
5174 {
5175 error (_("Dwarf Error: signature mismatch %s vs %s while reading"
5176 " TU at offset 0x%x [in module %s]"),
5177 hex_string (sig_type->signature),
5178 hex_string (header_signature),
5179 dwo_unit->offset.sect_off,
5180 bfd_get_filename (abfd));
5181 }
b0c7bfa9
DE
5182 gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5183 /* For DWOs coming from DWP files, we don't know the CU length
5184 nor the type's offset in the TU until now. */
5185 dwo_unit->length = get_cu_length (&cu->header);
5186 dwo_unit->type_offset_in_tu = type_offset_in_tu;
5187
5188 /* Establish the type offset that can be used to lookup the type.
5189 For DWO files, we don't know it until now. */
5190 sig_type->type_offset_in_section.sect_off =
5191 dwo_unit->offset.sect_off + dwo_unit->type_offset_in_tu.cu_off;
5192 }
5193 else
5194 {
5195 info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5196 dwo_abbrev_section,
5197 info_ptr, 0);
5198 gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5199 /* For DWOs coming from DWP files, we don't know the CU length
5200 until now. */
5201 dwo_unit->length = get_cu_length (&cu->header);
5202 }
5203
02142a6c
DE
5204 /* Replace the CU's original abbrev table with the DWO's.
5205 Reminder: We can't read the abbrev table until we've read the header. */
b0c7bfa9
DE
5206 if (abbrev_table_provided)
5207 {
5208 /* Don't free the provided abbrev table, the caller of
5209 init_cutu_and_read_dies owns it. */
5210 dwarf2_read_abbrevs (cu, dwo_abbrev_section);
02142a6c 5211 /* Ensure the DWO abbrev table gets freed. */
b0c7bfa9
DE
5212 make_cleanup (dwarf2_free_abbrev_table, cu);
5213 }
5214 else
5215 {
5216 dwarf2_free_abbrev_table (cu);
5217 dwarf2_read_abbrevs (cu, dwo_abbrev_section);
02142a6c 5218 /* Leave any existing abbrev table cleanup as is. */
b0c7bfa9
DE
5219 }
5220
5221 /* Read in the die, but leave space to copy over the attributes
5222 from the stub. This has the benefit of simplifying the rest of
5223 the code - all the work to maintain the illusion of a single
5224 DW_TAG_{compile,type}_unit DIE is done here. */
5225 num_extra_attrs = ((stmt_list != NULL)
5226 + (low_pc != NULL)
5227 + (high_pc != NULL)
5228 + (ranges != NULL)
5229 + (comp_dir != NULL));
5230 info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
5231 result_has_children, num_extra_attrs);
5232
5233 /* Copy over the attributes from the stub to the DIE we just read in. */
5234 comp_unit_die = *result_comp_unit_die;
5235 i = comp_unit_die->num_attrs;
5236 if (stmt_list != NULL)
5237 comp_unit_die->attrs[i++] = *stmt_list;
5238 if (low_pc != NULL)
5239 comp_unit_die->attrs[i++] = *low_pc;
5240 if (high_pc != NULL)
5241 comp_unit_die->attrs[i++] = *high_pc;
5242 if (ranges != NULL)
5243 comp_unit_die->attrs[i++] = *ranges;
5244 if (comp_dir != NULL)
5245 comp_unit_die->attrs[i++] = *comp_dir;
5246 comp_unit_die->num_attrs += num_extra_attrs;
5247
b4f54984 5248 if (dwarf_die_debug)
bf6af496
DE
5249 {
5250 fprintf_unfiltered (gdb_stdlog,
5251 "Read die from %s@0x%x of %s:\n",
a32a8923 5252 get_section_name (section),
bf6af496
DE
5253 (unsigned) (begin_info_ptr - section->buffer),
5254 bfd_get_filename (abfd));
b4f54984 5255 dump_die (comp_unit_die, dwarf_die_debug);
bf6af496
DE
5256 }
5257
a2ce51a0
DE
5258 /* Save the comp_dir attribute. If there is no DWP file then we'll read
5259 TUs by skipping the stub and going directly to the entry in the DWO file.
5260 However, skipping the stub means we won't get DW_AT_comp_dir, so we have
5261 to get it via circuitous means. Blech. */
5262 if (comp_dir != NULL)
5263 result_reader->comp_dir = DW_STRING (comp_dir);
5264
b0c7bfa9
DE
5265 /* Skip dummy compilation units. */
5266 if (info_ptr >= begin_info_ptr + dwo_unit->length
5267 || peek_abbrev_code (abfd, info_ptr) == 0)
5268 return 0;
5269
5270 *result_info_ptr = info_ptr;
5271 return 1;
5272}
5273
5274/* Subroutine of init_cutu_and_read_dies to simplify it.
5275 Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
6a506a2d 5276 Returns NULL if the specified DWO unit cannot be found. */
b0c7bfa9
DE
5277
5278static struct dwo_unit *
5279lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
5280 struct die_info *comp_unit_die)
5281{
5282 struct dwarf2_cu *cu = this_cu->cu;
5283 struct attribute *attr;
5284 ULONGEST signature;
5285 struct dwo_unit *dwo_unit;
5286 const char *comp_dir, *dwo_name;
5287
a2ce51a0
DE
5288 gdb_assert (cu != NULL);
5289
b0c7bfa9 5290 /* Yeah, we look dwo_name up again, but it simplifies the code. */
7d45c7c3
KB
5291 dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5292 comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
b0c7bfa9
DE
5293
5294 if (this_cu->is_debug_types)
5295 {
5296 struct signatured_type *sig_type;
5297
5298 /* Since this_cu is the first member of struct signatured_type,
5299 we can go from a pointer to one to a pointer to the other. */
5300 sig_type = (struct signatured_type *) this_cu;
5301 signature = sig_type->signature;
5302 dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
5303 }
5304 else
5305 {
5306 struct attribute *attr;
5307
5308 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
5309 if (! attr)
5310 error (_("Dwarf Error: missing dwo_id for dwo_name %s"
5311 " [in module %s]"),
4262abfb 5312 dwo_name, objfile_name (this_cu->objfile));
b0c7bfa9
DE
5313 signature = DW_UNSND (attr);
5314 dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
5315 signature);
5316 }
5317
b0c7bfa9
DE
5318 return dwo_unit;
5319}
5320
a2ce51a0 5321/* Subroutine of init_cutu_and_read_dies to simplify it.
6aa5f3a6
DE
5322 See it for a description of the parameters.
5323 Read a TU directly from a DWO file, bypassing the stub.
5324
5325 Note: This function could be a little bit simpler if we shared cleanups
5326 with our caller, init_cutu_and_read_dies. That's generally a fragile thing
5327 to do, so we keep this function self-contained. Or we could move this
5328 into our caller, but it's complex enough already. */
a2ce51a0
DE
5329
5330static void
6aa5f3a6
DE
5331init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
5332 int use_existing_cu, int keep,
a2ce51a0
DE
5333 die_reader_func_ftype *die_reader_func,
5334 void *data)
5335{
5336 struct dwarf2_cu *cu;
5337 struct signatured_type *sig_type;
6aa5f3a6 5338 struct cleanup *cleanups, *free_cu_cleanup = NULL;
a2ce51a0
DE
5339 struct die_reader_specs reader;
5340 const gdb_byte *info_ptr;
5341 struct die_info *comp_unit_die;
5342 int has_children;
5343
5344 /* Verify we can do the following downcast, and that we have the
5345 data we need. */
5346 gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
5347 sig_type = (struct signatured_type *) this_cu;
5348 gdb_assert (sig_type->dwo_unit != NULL);
5349
5350 cleanups = make_cleanup (null_cleanup, NULL);
5351
6aa5f3a6
DE
5352 if (use_existing_cu && this_cu->cu != NULL)
5353 {
5354 gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
5355 cu = this_cu->cu;
5356 /* There's no need to do the rereading_dwo_cu handling that
5357 init_cutu_and_read_dies does since we don't read the stub. */
5358 }
5359 else
5360 {
5361 /* If !use_existing_cu, this_cu->cu must be NULL. */
5362 gdb_assert (this_cu->cu == NULL);
8d749320 5363 cu = XNEW (struct dwarf2_cu);
6aa5f3a6
DE
5364 init_one_comp_unit (cu, this_cu);
5365 /* If an error occurs while loading, release our storage. */
5366 free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5367 }
5368
5369 /* A future optimization, if needed, would be to use an existing
5370 abbrev table. When reading DWOs with skeletonless TUs, all the TUs
5371 could share abbrev tables. */
a2ce51a0
DE
5372
5373 if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
5374 0 /* abbrev_table_provided */,
5375 NULL /* stub_comp_unit_die */,
5376 sig_type->dwo_unit->dwo_file->comp_dir,
5377 &reader, &info_ptr,
5378 &comp_unit_die, &has_children) == 0)
5379 {
5380 /* Dummy die. */
5381 do_cleanups (cleanups);
5382 return;
5383 }
5384
5385 /* All the "real" work is done here. */
5386 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5387
6aa5f3a6 5388 /* This duplicates the code in init_cutu_and_read_dies,
a2ce51a0
DE
5389 but the alternative is making the latter more complex.
5390 This function is only for the special case of using DWO files directly:
5391 no point in overly complicating the general case just to handle this. */
6aa5f3a6 5392 if (free_cu_cleanup != NULL)
a2ce51a0 5393 {
6aa5f3a6
DE
5394 if (keep)
5395 {
5396 /* We've successfully allocated this compilation unit. Let our
5397 caller clean it up when finished with it. */
5398 discard_cleanups (free_cu_cleanup);
a2ce51a0 5399
6aa5f3a6
DE
5400 /* We can only discard free_cu_cleanup and all subsequent cleanups.
5401 So we have to manually free the abbrev table. */
5402 dwarf2_free_abbrev_table (cu);
a2ce51a0 5403
6aa5f3a6
DE
5404 /* Link this CU into read_in_chain. */
5405 this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5406 dwarf2_per_objfile->read_in_chain = this_cu;
5407 }
5408 else
5409 do_cleanups (free_cu_cleanup);
a2ce51a0 5410 }
a2ce51a0
DE
5411
5412 do_cleanups (cleanups);
5413}
5414
fd820528 5415/* Initialize a CU (or TU) and read its DIEs.
3019eac3 5416 If the CU defers to a DWO file, read the DWO file as well.
dee91e82 5417
f4dc4d17
DE
5418 ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
5419 Otherwise the table specified in the comp unit header is read in and used.
5420 This is an optimization for when we already have the abbrev table.
5421
dee91e82
DE
5422 If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
5423 Otherwise, a new CU is allocated with xmalloc.
5424
5425 If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
5426 read_in_chain. Otherwise the dwarf2_cu data is freed at the end.
5427
5428 WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
fd820528 5429 linker) then DIE_READER_FUNC will not get called. */
aaa75496 5430
70221824 5431static void
fd820528 5432init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
f4dc4d17 5433 struct abbrev_table *abbrev_table,
fd820528
DE
5434 int use_existing_cu, int keep,
5435 die_reader_func_ftype *die_reader_func,
5436 void *data)
c906108c 5437{
dee91e82 5438 struct objfile *objfile = dwarf2_per_objfile->objfile;
8a0459fd 5439 struct dwarf2_section_info *section = this_cu->section;
a32a8923 5440 bfd *abfd = get_section_bfd_owner (section);
dee91e82 5441 struct dwarf2_cu *cu;
d521ce57 5442 const gdb_byte *begin_info_ptr, *info_ptr;
dee91e82 5443 struct die_reader_specs reader;
d85a05f0 5444 struct die_info *comp_unit_die;
dee91e82 5445 int has_children;
d85a05f0 5446 struct attribute *attr;
365156ad 5447 struct cleanup *cleanups, *free_cu_cleanup = NULL;
dee91e82 5448 struct signatured_type *sig_type = NULL;
4bdcc0c1 5449 struct dwarf2_section_info *abbrev_section;
42e7ad6c
DE
5450 /* Non-zero if CU currently points to a DWO file and we need to
5451 reread it. When this happens we need to reread the skeleton die
a2ce51a0 5452 before we can reread the DWO file (this only applies to CUs, not TUs). */
42e7ad6c 5453 int rereading_dwo_cu = 0;
c906108c 5454
b4f54984 5455 if (dwarf_die_debug)
09406207
DE
5456 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5457 this_cu->is_debug_types ? "type" : "comp",
5458 this_cu->offset.sect_off);
5459
dee91e82
DE
5460 if (use_existing_cu)
5461 gdb_assert (keep);
23745b47 5462
a2ce51a0
DE
5463 /* If we're reading a TU directly from a DWO file, including a virtual DWO
5464 file (instead of going through the stub), short-circuit all of this. */
5465 if (this_cu->reading_dwo_directly)
5466 {
5467 /* Narrow down the scope of possibilities to have to understand. */
5468 gdb_assert (this_cu->is_debug_types);
5469 gdb_assert (abbrev_table == NULL);
6aa5f3a6
DE
5470 init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
5471 die_reader_func, data);
a2ce51a0
DE
5472 return;
5473 }
5474
dee91e82
DE
5475 cleanups = make_cleanup (null_cleanup, NULL);
5476
5477 /* This is cheap if the section is already read in. */
5478 dwarf2_read_section (objfile, section);
5479
5480 begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
36586728
TT
5481
5482 abbrev_section = get_abbrev_section_for_cu (this_cu);
dee91e82
DE
5483
5484 if (use_existing_cu && this_cu->cu != NULL)
5485 {
5486 cu = this_cu->cu;
42e7ad6c
DE
5487 /* If this CU is from a DWO file we need to start over, we need to
5488 refetch the attributes from the skeleton CU.
5489 This could be optimized by retrieving those attributes from when we
5490 were here the first time: the previous comp_unit_die was stored in
5491 comp_unit_obstack. But there's no data yet that we need this
5492 optimization. */
5493 if (cu->dwo_unit != NULL)
5494 rereading_dwo_cu = 1;
dee91e82
DE
5495 }
5496 else
5497 {
5498 /* If !use_existing_cu, this_cu->cu must be NULL. */
5499 gdb_assert (this_cu->cu == NULL);
8d749320 5500 cu = XNEW (struct dwarf2_cu);
dee91e82 5501 init_one_comp_unit (cu, this_cu);
dee91e82 5502 /* If an error occurs while loading, release our storage. */
365156ad 5503 free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
42e7ad6c 5504 }
dee91e82 5505
b0c7bfa9 5506 /* Get the header. */
42e7ad6c
DE
5507 if (cu->header.first_die_offset.cu_off != 0 && ! rereading_dwo_cu)
5508 {
5509 /* We already have the header, there's no need to read it in again. */
5510 info_ptr += cu->header.first_die_offset.cu_off;
5511 }
5512 else
5513 {
3019eac3 5514 if (this_cu->is_debug_types)
dee91e82
DE
5515 {
5516 ULONGEST signature;
42e7ad6c 5517 cu_offset type_offset_in_tu;
dee91e82 5518
4bdcc0c1
DE
5519 info_ptr = read_and_check_type_unit_head (&cu->header, section,
5520 abbrev_section, info_ptr,
42e7ad6c
DE
5521 &signature,
5522 &type_offset_in_tu);
dee91e82 5523
42e7ad6c
DE
5524 /* Since per_cu is the first member of struct signatured_type,
5525 we can go from a pointer to one to a pointer to the other. */
5526 sig_type = (struct signatured_type *) this_cu;
5527 gdb_assert (sig_type->signature == signature);
5528 gdb_assert (sig_type->type_offset_in_tu.cu_off
5529 == type_offset_in_tu.cu_off);
dee91e82
DE
5530 gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5531
42e7ad6c
DE
5532 /* LENGTH has not been set yet for type units if we're
5533 using .gdb_index. */
1ce1cefd 5534 this_cu->length = get_cu_length (&cu->header);
3019eac3
DE
5535
5536 /* Establish the type offset that can be used to lookup the type. */
5537 sig_type->type_offset_in_section.sect_off =
5538 this_cu->offset.sect_off + sig_type->type_offset_in_tu.cu_off;
dee91e82
DE
5539 }
5540 else
5541 {
4bdcc0c1
DE
5542 info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5543 abbrev_section,
5544 info_ptr, 0);
dee91e82
DE
5545
5546 gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
1ce1cefd 5547 gdb_assert (this_cu->length == get_cu_length (&cu->header));
dee91e82
DE
5548 }
5549 }
10b3939b 5550
6caca83c 5551 /* Skip dummy compilation units. */
dee91e82 5552 if (info_ptr >= begin_info_ptr + this_cu->length
6caca83c
CC
5553 || peek_abbrev_code (abfd, info_ptr) == 0)
5554 {
dee91e82 5555 do_cleanups (cleanups);
21b2bd31 5556 return;
6caca83c
CC
5557 }
5558
433df2d4
DE
5559 /* If we don't have them yet, read the abbrevs for this compilation unit.
5560 And if we need to read them now, make sure they're freed when we're
42e7ad6c
DE
5561 done. Note that it's important that if the CU had an abbrev table
5562 on entry we don't free it when we're done: Somewhere up the call stack
5563 it may be in use. */
f4dc4d17
DE
5564 if (abbrev_table != NULL)
5565 {
5566 gdb_assert (cu->abbrev_table == NULL);
5567 gdb_assert (cu->header.abbrev_offset.sect_off
5568 == abbrev_table->offset.sect_off);
5569 cu->abbrev_table = abbrev_table;
5570 }
5571 else if (cu->abbrev_table == NULL)
dee91e82 5572 {
4bdcc0c1 5573 dwarf2_read_abbrevs (cu, abbrev_section);
dee91e82
DE
5574 make_cleanup (dwarf2_free_abbrev_table, cu);
5575 }
42e7ad6c
DE
5576 else if (rereading_dwo_cu)
5577 {
5578 dwarf2_free_abbrev_table (cu);
5579 dwarf2_read_abbrevs (cu, abbrev_section);
5580 }
af703f96 5581
dee91e82 5582 /* Read the top level CU/TU die. */
3019eac3 5583 init_cu_die_reader (&reader, cu, section, NULL);
dee91e82 5584 info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
93311388 5585
b0c7bfa9
DE
5586 /* If we are in a DWO stub, process it and then read in the "real" CU/TU
5587 from the DWO file.
5588 Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
5589 DWO CU, that this test will fail (the attribute will not be present). */
3019eac3
DE
5590 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5591 if (attr)
5592 {
3019eac3 5593 struct dwo_unit *dwo_unit;
b0c7bfa9 5594 struct die_info *dwo_comp_unit_die;
3019eac3
DE
5595
5596 if (has_children)
6a506a2d
DE
5597 {
5598 complaint (&symfile_complaints,
5599 _("compilation unit with DW_AT_GNU_dwo_name"
5600 " has children (offset 0x%x) [in module %s]"),
5601 this_cu->offset.sect_off, bfd_get_filename (abfd));
5602 }
b0c7bfa9 5603 dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
6a506a2d 5604 if (dwo_unit != NULL)
3019eac3 5605 {
6a506a2d
DE
5606 if (read_cutu_die_from_dwo (this_cu, dwo_unit,
5607 abbrev_table != NULL,
a2ce51a0 5608 comp_unit_die, NULL,
6a506a2d
DE
5609 &reader, &info_ptr,
5610 &dwo_comp_unit_die, &has_children) == 0)
5611 {
5612 /* Dummy die. */
5613 do_cleanups (cleanups);
5614 return;
5615 }
5616 comp_unit_die = dwo_comp_unit_die;
5617 }
5618 else
5619 {
5620 /* Yikes, we couldn't find the rest of the DIE, we only have
5621 the stub. A complaint has already been logged. There's
5622 not much more we can do except pass on the stub DIE to
5623 die_reader_func. We don't want to throw an error on bad
5624 debug info. */
3019eac3
DE
5625 }
5626 }
5627
b0c7bfa9 5628 /* All of the above is setup for this call. Yikes. */
dee91e82
DE
5629 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5630
b0c7bfa9 5631 /* Done, clean up. */
365156ad 5632 if (free_cu_cleanup != NULL)
348e048f 5633 {
365156ad
TT
5634 if (keep)
5635 {
5636 /* We've successfully allocated this compilation unit. Let our
5637 caller clean it up when finished with it. */
5638 discard_cleanups (free_cu_cleanup);
dee91e82 5639
365156ad
TT
5640 /* We can only discard free_cu_cleanup and all subsequent cleanups.
5641 So we have to manually free the abbrev table. */
5642 dwarf2_free_abbrev_table (cu);
dee91e82 5643
365156ad
TT
5644 /* Link this CU into read_in_chain. */
5645 this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5646 dwarf2_per_objfile->read_in_chain = this_cu;
5647 }
5648 else
5649 do_cleanups (free_cu_cleanup);
348e048f 5650 }
365156ad
TT
5651
5652 do_cleanups (cleanups);
dee91e82
DE
5653}
5654
33e80786
DE
5655/* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
5656 DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
5657 to have already done the lookup to find the DWO file).
dee91e82
DE
5658
5659 The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
3019eac3 5660 THIS_CU->is_debug_types, but nothing else.
dee91e82
DE
5661
5662 We fill in THIS_CU->length.
5663
5664 WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5665 linker) then DIE_READER_FUNC will not get called.
5666
5667 THIS_CU->cu is always freed when done.
3019eac3
DE
5668 This is done in order to not leave THIS_CU->cu in a state where we have
5669 to care whether it refers to the "main" CU or the DWO CU. */
dee91e82
DE
5670
5671static void
5672init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
3019eac3 5673 struct dwo_file *dwo_file,
dee91e82
DE
5674 die_reader_func_ftype *die_reader_func,
5675 void *data)
5676{
5677 struct objfile *objfile = dwarf2_per_objfile->objfile;
8a0459fd 5678 struct dwarf2_section_info *section = this_cu->section;
a32a8923 5679 bfd *abfd = get_section_bfd_owner (section);
33e80786 5680 struct dwarf2_section_info *abbrev_section;
dee91e82 5681 struct dwarf2_cu cu;
d521ce57 5682 const gdb_byte *begin_info_ptr, *info_ptr;
dee91e82
DE
5683 struct die_reader_specs reader;
5684 struct cleanup *cleanups;
5685 struct die_info *comp_unit_die;
5686 int has_children;
5687
b4f54984 5688 if (dwarf_die_debug)
09406207
DE
5689 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5690 this_cu->is_debug_types ? "type" : "comp",
5691 this_cu->offset.sect_off);
5692
dee91e82
DE
5693 gdb_assert (this_cu->cu == NULL);
5694
33e80786
DE
5695 abbrev_section = (dwo_file != NULL
5696 ? &dwo_file->sections.abbrev
5697 : get_abbrev_section_for_cu (this_cu));
5698
dee91e82
DE
5699 /* This is cheap if the section is already read in. */
5700 dwarf2_read_section (objfile, section);
5701
5702 init_one_comp_unit (&cu, this_cu);
5703
5704 cleanups = make_cleanup (free_stack_comp_unit, &cu);
5705
5706 begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
4bdcc0c1
DE
5707 info_ptr = read_and_check_comp_unit_head (&cu.header, section,
5708 abbrev_section, info_ptr,
3019eac3 5709 this_cu->is_debug_types);
dee91e82 5710
1ce1cefd 5711 this_cu->length = get_cu_length (&cu.header);
dee91e82
DE
5712
5713 /* Skip dummy compilation units. */
5714 if (info_ptr >= begin_info_ptr + this_cu->length
5715 || peek_abbrev_code (abfd, info_ptr) == 0)
c906108c 5716 {
dee91e82 5717 do_cleanups (cleanups);
21b2bd31 5718 return;
93311388 5719 }
72bf9492 5720
dee91e82
DE
5721 dwarf2_read_abbrevs (&cu, abbrev_section);
5722 make_cleanup (dwarf2_free_abbrev_table, &cu);
5723
3019eac3 5724 init_cu_die_reader (&reader, &cu, section, dwo_file);
dee91e82
DE
5725 info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5726
5727 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5728
5729 do_cleanups (cleanups);
5730}
5731
3019eac3
DE
5732/* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
5733 does not lookup the specified DWO file.
5734 This cannot be used to read DWO files.
dee91e82
DE
5735
5736 THIS_CU->cu is always freed when done.
3019eac3
DE
5737 This is done in order to not leave THIS_CU->cu in a state where we have
5738 to care whether it refers to the "main" CU or the DWO CU.
5739 We can revisit this if the data shows there's a performance issue. */
dee91e82
DE
5740
5741static void
5742init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
5743 die_reader_func_ftype *die_reader_func,
5744 void *data)
5745{
33e80786 5746 init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
dee91e82 5747}
0018ea6f
DE
5748\f
5749/* Type Unit Groups.
dee91e82 5750
0018ea6f
DE
5751 Type Unit Groups are a way to collapse the set of all TUs (type units) into
5752 a more manageable set. The grouping is done by DW_AT_stmt_list entry
5753 so that all types coming from the same compilation (.o file) are grouped
5754 together. A future step could be to put the types in the same symtab as
5755 the CU the types ultimately came from. */
ff013f42 5756
f4dc4d17
DE
5757static hashval_t
5758hash_type_unit_group (const void *item)
5759{
9a3c8263
SM
5760 const struct type_unit_group *tu_group
5761 = (const struct type_unit_group *) item;
f4dc4d17 5762
094b34ac 5763 return hash_stmt_list_entry (&tu_group->hash);
f4dc4d17 5764}
348e048f
DE
5765
5766static int
f4dc4d17 5767eq_type_unit_group (const void *item_lhs, const void *item_rhs)
348e048f 5768{
9a3c8263
SM
5769 const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
5770 const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
348e048f 5771
094b34ac 5772 return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
f4dc4d17 5773}
348e048f 5774
f4dc4d17
DE
5775/* Allocate a hash table for type unit groups. */
5776
5777static htab_t
5778allocate_type_unit_groups_table (void)
5779{
5780 return htab_create_alloc_ex (3,
5781 hash_type_unit_group,
5782 eq_type_unit_group,
5783 NULL,
5784 &dwarf2_per_objfile->objfile->objfile_obstack,
5785 hashtab_obstack_allocate,
5786 dummy_obstack_deallocate);
5787}
dee91e82 5788
f4dc4d17
DE
5789/* Type units that don't have DW_AT_stmt_list are grouped into their own
5790 partial symtabs. We combine several TUs per psymtab to not let the size
5791 of any one psymtab grow too big. */
5792#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
5793#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
dee91e82 5794
094b34ac 5795/* Helper routine for get_type_unit_group.
f4dc4d17
DE
5796 Create the type_unit_group object used to hold one or more TUs. */
5797
5798static struct type_unit_group *
094b34ac 5799create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
f4dc4d17
DE
5800{
5801 struct objfile *objfile = dwarf2_per_objfile->objfile;
094b34ac 5802 struct dwarf2_per_cu_data *per_cu;
f4dc4d17 5803 struct type_unit_group *tu_group;
f4dc4d17
DE
5804
5805 tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5806 struct type_unit_group);
094b34ac 5807 per_cu = &tu_group->per_cu;
f4dc4d17 5808 per_cu->objfile = objfile;
f4dc4d17 5809
094b34ac
DE
5810 if (dwarf2_per_objfile->using_index)
5811 {
5812 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5813 struct dwarf2_per_cu_quick_data);
094b34ac
DE
5814 }
5815 else
5816 {
5817 unsigned int line_offset = line_offset_struct.sect_off;
5818 struct partial_symtab *pst;
5819 char *name;
5820
5821 /* Give the symtab a useful name for debug purposes. */
5822 if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
5823 name = xstrprintf ("<type_units_%d>",
5824 (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
5825 else
5826 name = xstrprintf ("<type_units_at_0x%x>", line_offset);
5827
5828 pst = create_partial_symtab (per_cu, name);
5829 pst->anonymous = 1;
f4dc4d17 5830
094b34ac
DE
5831 xfree (name);
5832 }
f4dc4d17 5833
094b34ac
DE
5834 tu_group->hash.dwo_unit = cu->dwo_unit;
5835 tu_group->hash.line_offset = line_offset_struct;
f4dc4d17
DE
5836
5837 return tu_group;
5838}
5839
094b34ac
DE
5840/* Look up the type_unit_group for type unit CU, and create it if necessary.
5841 STMT_LIST is a DW_AT_stmt_list attribute. */
f4dc4d17
DE
5842
5843static struct type_unit_group *
ff39bb5e 5844get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
f4dc4d17
DE
5845{
5846 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
5847 struct type_unit_group *tu_group;
5848 void **slot;
5849 unsigned int line_offset;
5850 struct type_unit_group type_unit_group_for_lookup;
5851
5852 if (dwarf2_per_objfile->type_unit_groups == NULL)
5853 {
5854 dwarf2_per_objfile->type_unit_groups =
5855 allocate_type_unit_groups_table ();
5856 }
5857
5858 /* Do we need to create a new group, or can we use an existing one? */
5859
5860 if (stmt_list)
5861 {
5862 line_offset = DW_UNSND (stmt_list);
5863 ++tu_stats->nr_symtab_sharers;
5864 }
5865 else
5866 {
5867 /* Ugh, no stmt_list. Rare, but we have to handle it.
5868 We can do various things here like create one group per TU or
5869 spread them over multiple groups to split up the expansion work.
5870 To avoid worst case scenarios (too many groups or too large groups)
5871 we, umm, group them in bunches. */
5872 line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
5873 | (tu_stats->nr_stmt_less_type_units
5874 / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
5875 ++tu_stats->nr_stmt_less_type_units;
5876 }
5877
094b34ac
DE
5878 type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
5879 type_unit_group_for_lookup.hash.line_offset.sect_off = line_offset;
f4dc4d17
DE
5880 slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
5881 &type_unit_group_for_lookup, INSERT);
5882 if (*slot != NULL)
5883 {
9a3c8263 5884 tu_group = (struct type_unit_group *) *slot;
f4dc4d17
DE
5885 gdb_assert (tu_group != NULL);
5886 }
5887 else
5888 {
5889 sect_offset line_offset_struct;
5890
5891 line_offset_struct.sect_off = line_offset;
094b34ac 5892 tu_group = create_type_unit_group (cu, line_offset_struct);
f4dc4d17
DE
5893 *slot = tu_group;
5894 ++tu_stats->nr_symtabs;
5895 }
5896
5897 return tu_group;
5898}
0018ea6f
DE
5899\f
5900/* Partial symbol tables. */
5901
5902/* Create a psymtab named NAME and assign it to PER_CU.
5903
5904 The caller must fill in the following details:
5905 dirname, textlow, texthigh. */
5906
5907static struct partial_symtab *
5908create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
5909{
5910 struct objfile *objfile = per_cu->objfile;
5911 struct partial_symtab *pst;
5912
18a94d75 5913 pst = start_psymtab_common (objfile, name, 0,
0018ea6f
DE
5914 objfile->global_psymbols.next,
5915 objfile->static_psymbols.next);
5916
5917 pst->psymtabs_addrmap_supported = 1;
5918
5919 /* This is the glue that links PST into GDB's symbol API. */
5920 pst->read_symtab_private = per_cu;
5921 pst->read_symtab = dwarf2_read_symtab;
5922 per_cu->v.psymtab = pst;
5923
5924 return pst;
5925}
5926
b93601f3
TT
5927/* The DATA object passed to process_psymtab_comp_unit_reader has this
5928 type. */
5929
5930struct process_psymtab_comp_unit_data
5931{
5932 /* True if we are reading a DW_TAG_partial_unit. */
5933
5934 int want_partial_unit;
5935
5936 /* The "pretend" language that is used if the CU doesn't declare a
5937 language. */
5938
5939 enum language pretend_language;
5940};
5941
0018ea6f
DE
5942/* die_reader_func for process_psymtab_comp_unit. */
5943
5944static void
5945process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 5946 const gdb_byte *info_ptr,
0018ea6f
DE
5947 struct die_info *comp_unit_die,
5948 int has_children,
5949 void *data)
5950{
5951 struct dwarf2_cu *cu = reader->cu;
5952 struct objfile *objfile = cu->objfile;
3e29f34a 5953 struct gdbarch *gdbarch = get_objfile_arch (objfile);
0018ea6f 5954 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
0018ea6f
DE
5955 CORE_ADDR baseaddr;
5956 CORE_ADDR best_lowpc = 0, best_highpc = 0;
5957 struct partial_symtab *pst;
3a2b436a 5958 enum pc_bounds_kind cu_bounds_kind;
0018ea6f 5959 const char *filename;
9a3c8263
SM
5960 struct process_psymtab_comp_unit_data *info
5961 = (struct process_psymtab_comp_unit_data *) data;
0018ea6f 5962
b93601f3 5963 if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
0018ea6f
DE
5964 return;
5965
5966 gdb_assert (! per_cu->is_debug_types);
5967
b93601f3 5968 prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
0018ea6f
DE
5969
5970 cu->list_in_scope = &file_symbols;
5971
5972 /* Allocate a new partial symbol table structure. */
7d45c7c3
KB
5973 filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
5974 if (filename == NULL)
0018ea6f 5975 filename = "";
0018ea6f
DE
5976
5977 pst = create_partial_symtab (per_cu, filename);
5978
5979 /* This must be done before calling dwarf2_build_include_psymtabs. */
7d45c7c3 5980 pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
0018ea6f
DE
5981
5982 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5983
5984 dwarf2_find_base_address (comp_unit_die, cu);
5985
5986 /* Possibly set the default values of LOWPC and HIGHPC from
5987 `DW_AT_ranges'. */
3a2b436a
JK
5988 cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
5989 &best_highpc, cu, pst);
5990 if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
0018ea6f
DE
5991 /* Store the contiguous range if it is not empty; it can be empty for
5992 CUs with no code. */
5993 addrmap_set_empty (objfile->psymtabs_addrmap,
3e29f34a
MR
5994 gdbarch_adjust_dwarf2_addr (gdbarch,
5995 best_lowpc + baseaddr),
5996 gdbarch_adjust_dwarf2_addr (gdbarch,
5997 best_highpc + baseaddr) - 1,
5998 pst);
0018ea6f
DE
5999
6000 /* Check if comp unit has_children.
6001 If so, read the rest of the partial symbols from this comp unit.
6002 If not, there's no more debug_info for this comp unit. */
6003 if (has_children)
6004 {
6005 struct partial_die_info *first_die;
6006 CORE_ADDR lowpc, highpc;
6007
6008 lowpc = ((CORE_ADDR) -1);
6009 highpc = ((CORE_ADDR) 0);
6010
6011 first_die = load_partial_dies (reader, info_ptr, 1);
6012
6013 scan_partial_symbols (first_die, &lowpc, &highpc,
e385593e 6014 cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
0018ea6f
DE
6015
6016 /* If we didn't find a lowpc, set it to highpc to avoid
6017 complaints from `maint check'. */
6018 if (lowpc == ((CORE_ADDR) -1))
6019 lowpc = highpc;
6020
6021 /* If the compilation unit didn't have an explicit address range,
6022 then use the information extracted from its child dies. */
e385593e 6023 if (cu_bounds_kind <= PC_BOUNDS_INVALID)
0018ea6f
DE
6024 {
6025 best_lowpc = lowpc;
6026 best_highpc = highpc;
6027 }
6028 }
3e29f34a
MR
6029 pst->textlow = gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr);
6030 pst->texthigh = gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr);
0018ea6f 6031
8763cede 6032 end_psymtab_common (objfile, pst);
0018ea6f
DE
6033
6034 if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
6035 {
6036 int i;
6037 int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6038 struct dwarf2_per_cu_data *iter;
6039
6040 /* Fill in 'dependencies' here; we fill in 'users' in a
6041 post-pass. */
6042 pst->number_of_dependencies = len;
8d749320
SM
6043 pst->dependencies =
6044 XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
0018ea6f
DE
6045 for (i = 0;
6046 VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
6047 i, iter);
6048 ++i)
6049 pst->dependencies[i] = iter->v.psymtab;
6050
6051 VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6052 }
6053
6054 /* Get the list of files included in the current compilation unit,
6055 and build a psymtab for each of them. */
6056 dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
6057
b4f54984 6058 if (dwarf_read_debug)
0018ea6f
DE
6059 {
6060 struct gdbarch *gdbarch = get_objfile_arch (objfile);
6061
6062 fprintf_unfiltered (gdb_stdlog,
6063 "Psymtab for %s unit @0x%x: %s - %s"
6064 ", %d global, %d static syms\n",
6065 per_cu->is_debug_types ? "type" : "comp",
6066 per_cu->offset.sect_off,
6067 paddress (gdbarch, pst->textlow),
6068 paddress (gdbarch, pst->texthigh),
6069 pst->n_global_syms, pst->n_static_syms);
6070 }
6071}
6072
6073/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6074 Process compilation unit THIS_CU for a psymtab. */
6075
6076static void
6077process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
b93601f3
TT
6078 int want_partial_unit,
6079 enum language pretend_language)
0018ea6f 6080{
b93601f3
TT
6081 struct process_psymtab_comp_unit_data info;
6082
0018ea6f
DE
6083 /* If this compilation unit was already read in, free the
6084 cached copy in order to read it in again. This is
6085 necessary because we skipped some symbols when we first
6086 read in the compilation unit (see load_partial_dies).
6087 This problem could be avoided, but the benefit is unclear. */
6088 if (this_cu->cu != NULL)
6089 free_one_cached_comp_unit (this_cu);
6090
6091 gdb_assert (! this_cu->is_debug_types);
b93601f3
TT
6092 info.want_partial_unit = want_partial_unit;
6093 info.pretend_language = pretend_language;
0018ea6f
DE
6094 init_cutu_and_read_dies (this_cu, NULL, 0, 0,
6095 process_psymtab_comp_unit_reader,
b93601f3 6096 &info);
0018ea6f
DE
6097
6098 /* Age out any secondary CUs. */
6099 age_cached_comp_units ();
6100}
f4dc4d17
DE
6101
6102/* Reader function for build_type_psymtabs. */
6103
6104static void
6105build_type_psymtabs_reader (const struct die_reader_specs *reader,
d521ce57 6106 const gdb_byte *info_ptr,
f4dc4d17
DE
6107 struct die_info *type_unit_die,
6108 int has_children,
6109 void *data)
6110{
6111 struct objfile *objfile = dwarf2_per_objfile->objfile;
6112 struct dwarf2_cu *cu = reader->cu;
6113 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
0186c6a7 6114 struct signatured_type *sig_type;
f4dc4d17
DE
6115 struct type_unit_group *tu_group;
6116 struct attribute *attr;
6117 struct partial_die_info *first_die;
6118 CORE_ADDR lowpc, highpc;
6119 struct partial_symtab *pst;
6120
6121 gdb_assert (data == NULL);
0186c6a7
DE
6122 gdb_assert (per_cu->is_debug_types);
6123 sig_type = (struct signatured_type *) per_cu;
f4dc4d17
DE
6124
6125 if (! has_children)
6126 return;
6127
6128 attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
094b34ac 6129 tu_group = get_type_unit_group (cu, attr);
f4dc4d17 6130
0186c6a7 6131 VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
f4dc4d17
DE
6132
6133 prepare_one_comp_unit (cu, type_unit_die, language_minimal);
6134 cu->list_in_scope = &file_symbols;
6135 pst = create_partial_symtab (per_cu, "");
6136 pst->anonymous = 1;
6137
6138 first_die = load_partial_dies (reader, info_ptr, 1);
6139
6140 lowpc = (CORE_ADDR) -1;
6141 highpc = (CORE_ADDR) 0;
6142 scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
6143
8763cede 6144 end_psymtab_common (objfile, pst);
f4dc4d17
DE
6145}
6146
73051182
DE
6147/* Struct used to sort TUs by their abbreviation table offset. */
6148
6149struct tu_abbrev_offset
6150{
6151 struct signatured_type *sig_type;
6152 sect_offset abbrev_offset;
6153};
6154
6155/* Helper routine for build_type_psymtabs_1, passed to qsort. */
6156
6157static int
6158sort_tu_by_abbrev_offset (const void *ap, const void *bp)
6159{
9a3c8263
SM
6160 const struct tu_abbrev_offset * const *a
6161 = (const struct tu_abbrev_offset * const*) ap;
6162 const struct tu_abbrev_offset * const *b
6163 = (const struct tu_abbrev_offset * const*) bp;
73051182
DE
6164 unsigned int aoff = (*a)->abbrev_offset.sect_off;
6165 unsigned int boff = (*b)->abbrev_offset.sect_off;
6166
6167 return (aoff > boff) - (aoff < boff);
6168}
6169
6170/* Efficiently read all the type units.
6171 This does the bulk of the work for build_type_psymtabs.
6172
6173 The efficiency is because we sort TUs by the abbrev table they use and
6174 only read each abbrev table once. In one program there are 200K TUs
6175 sharing 8K abbrev tables.
6176
6177 The main purpose of this function is to support building the
6178 dwarf2_per_objfile->type_unit_groups table.
6179 TUs typically share the DW_AT_stmt_list of the CU they came from, so we
6180 can collapse the search space by grouping them by stmt_list.
6181 The savings can be significant, in the same program from above the 200K TUs
6182 share 8K stmt_list tables.
6183
6184 FUNC is expected to call get_type_unit_group, which will create the
6185 struct type_unit_group if necessary and add it to
6186 dwarf2_per_objfile->type_unit_groups. */
6187
6188static void
6189build_type_psymtabs_1 (void)
6190{
73051182
DE
6191 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6192 struct cleanup *cleanups;
6193 struct abbrev_table *abbrev_table;
6194 sect_offset abbrev_offset;
6195 struct tu_abbrev_offset *sorted_by_abbrev;
73051182
DE
6196 int i;
6197
6198 /* It's up to the caller to not call us multiple times. */
6199 gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
6200
6201 if (dwarf2_per_objfile->n_type_units == 0)
6202 return;
6203
6204 /* TUs typically share abbrev tables, and there can be way more TUs than
6205 abbrev tables. Sort by abbrev table to reduce the number of times we
6206 read each abbrev table in.
6207 Alternatives are to punt or to maintain a cache of abbrev tables.
6208 This is simpler and efficient enough for now.
6209
6210 Later we group TUs by their DW_AT_stmt_list value (as this defines the
6211 symtab to use). Typically TUs with the same abbrev offset have the same
6212 stmt_list value too so in practice this should work well.
6213
6214 The basic algorithm here is:
6215
6216 sort TUs by abbrev table
6217 for each TU with same abbrev table:
6218 read abbrev table if first user
6219 read TU top level DIE
6220 [IWBN if DWO skeletons had DW_AT_stmt_list]
6221 call FUNC */
6222
b4f54984 6223 if (dwarf_read_debug)
73051182
DE
6224 fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
6225
6226 /* Sort in a separate table to maintain the order of all_type_units
6227 for .gdb_index: TU indices directly index all_type_units. */
6228 sorted_by_abbrev = XNEWVEC (struct tu_abbrev_offset,
6229 dwarf2_per_objfile->n_type_units);
6230 for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6231 {
6232 struct signatured_type *sig_type = dwarf2_per_objfile->all_type_units[i];
6233
6234 sorted_by_abbrev[i].sig_type = sig_type;
6235 sorted_by_abbrev[i].abbrev_offset =
6236 read_abbrev_offset (sig_type->per_cu.section,
6237 sig_type->per_cu.offset);
6238 }
6239 cleanups = make_cleanup (xfree, sorted_by_abbrev);
6240 qsort (sorted_by_abbrev, dwarf2_per_objfile->n_type_units,
6241 sizeof (struct tu_abbrev_offset), sort_tu_by_abbrev_offset);
6242
6243 abbrev_offset.sect_off = ~(unsigned) 0;
6244 abbrev_table = NULL;
6245 make_cleanup (abbrev_table_free_cleanup, &abbrev_table);
6246
6247 for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6248 {
6249 const struct tu_abbrev_offset *tu = &sorted_by_abbrev[i];
6250
6251 /* Switch to the next abbrev table if necessary. */
6252 if (abbrev_table == NULL
6253 || tu->abbrev_offset.sect_off != abbrev_offset.sect_off)
6254 {
6255 if (abbrev_table != NULL)
6256 {
6257 abbrev_table_free (abbrev_table);
6258 /* Reset to NULL in case abbrev_table_read_table throws
6259 an error: abbrev_table_free_cleanup will get called. */
6260 abbrev_table = NULL;
6261 }
6262 abbrev_offset = tu->abbrev_offset;
6263 abbrev_table =
6264 abbrev_table_read_table (&dwarf2_per_objfile->abbrev,
6265 abbrev_offset);
6266 ++tu_stats->nr_uniq_abbrev_tables;
6267 }
6268
6269 init_cutu_and_read_dies (&tu->sig_type->per_cu, abbrev_table, 0, 0,
6270 build_type_psymtabs_reader, NULL);
6271 }
6272
73051182 6273 do_cleanups (cleanups);
6aa5f3a6 6274}
73051182 6275
6aa5f3a6
DE
6276/* Print collected type unit statistics. */
6277
6278static void
6279print_tu_stats (void)
6280{
6281 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6282
6283 fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
6284 fprintf_unfiltered (gdb_stdlog, " %d TUs\n",
6285 dwarf2_per_objfile->n_type_units);
6286 fprintf_unfiltered (gdb_stdlog, " %d uniq abbrev tables\n",
6287 tu_stats->nr_uniq_abbrev_tables);
6288 fprintf_unfiltered (gdb_stdlog, " %d symtabs from stmt_list entries\n",
6289 tu_stats->nr_symtabs);
6290 fprintf_unfiltered (gdb_stdlog, " %d symtab sharers\n",
6291 tu_stats->nr_symtab_sharers);
6292 fprintf_unfiltered (gdb_stdlog, " %d type units without a stmt_list\n",
6293 tu_stats->nr_stmt_less_type_units);
6294 fprintf_unfiltered (gdb_stdlog, " %d all_type_units reallocs\n",
6295 tu_stats->nr_all_type_units_reallocs);
73051182
DE
6296}
6297
f4dc4d17
DE
6298/* Traversal function for build_type_psymtabs. */
6299
6300static int
6301build_type_psymtab_dependencies (void **slot, void *info)
6302{
6303 struct objfile *objfile = dwarf2_per_objfile->objfile;
6304 struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
094b34ac 6305 struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
f4dc4d17 6306 struct partial_symtab *pst = per_cu->v.psymtab;
0186c6a7
DE
6307 int len = VEC_length (sig_type_ptr, tu_group->tus);
6308 struct signatured_type *iter;
f4dc4d17
DE
6309 int i;
6310
6311 gdb_assert (len > 0);
0186c6a7 6312 gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
f4dc4d17
DE
6313
6314 pst->number_of_dependencies = len;
8d749320
SM
6315 pst->dependencies =
6316 XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
f4dc4d17 6317 for (i = 0;
0186c6a7 6318 VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
f4dc4d17
DE
6319 ++i)
6320 {
0186c6a7
DE
6321 gdb_assert (iter->per_cu.is_debug_types);
6322 pst->dependencies[i] = iter->per_cu.v.psymtab;
796a7ff8 6323 iter->type_unit_group = tu_group;
f4dc4d17
DE
6324 }
6325
0186c6a7 6326 VEC_free (sig_type_ptr, tu_group->tus);
348e048f
DE
6327
6328 return 1;
6329}
6330
6331/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6332 Build partial symbol tables for the .debug_types comp-units. */
6333
6334static void
6335build_type_psymtabs (struct objfile *objfile)
6336{
0e50663e 6337 if (! create_all_type_units (objfile))
348e048f
DE
6338 return;
6339
73051182 6340 build_type_psymtabs_1 ();
6aa5f3a6 6341}
f4dc4d17 6342
6aa5f3a6
DE
6343/* Traversal function for process_skeletonless_type_unit.
6344 Read a TU in a DWO file and build partial symbols for it. */
6345
6346static int
6347process_skeletonless_type_unit (void **slot, void *info)
6348{
6349 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
9a3c8263 6350 struct objfile *objfile = (struct objfile *) info;
6aa5f3a6
DE
6351 struct signatured_type find_entry, *entry;
6352
6353 /* If this TU doesn't exist in the global table, add it and read it in. */
6354
6355 if (dwarf2_per_objfile->signatured_types == NULL)
6356 {
6357 dwarf2_per_objfile->signatured_types
6358 = allocate_signatured_type_table (objfile);
6359 }
6360
6361 find_entry.signature = dwo_unit->signature;
6362 slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
6363 INSERT);
6364 /* If we've already seen this type there's nothing to do. What's happening
6365 is we're doing our own version of comdat-folding here. */
6366 if (*slot != NULL)
6367 return 1;
6368
6369 /* This does the job that create_all_type_units would have done for
6370 this TU. */
6371 entry = add_type_unit (dwo_unit->signature, slot);
6372 fill_in_sig_entry_from_dwo_entry (objfile, entry, dwo_unit);
6373 *slot = entry;
6374
6375 /* This does the job that build_type_psymtabs_1 would have done. */
6376 init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0,
6377 build_type_psymtabs_reader, NULL);
6378
6379 return 1;
6380}
6381
6382/* Traversal function for process_skeletonless_type_units. */
6383
6384static int
6385process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
6386{
6387 struct dwo_file *dwo_file = (struct dwo_file *) *slot;
6388
6389 if (dwo_file->tus != NULL)
6390 {
6391 htab_traverse_noresize (dwo_file->tus,
6392 process_skeletonless_type_unit, info);
6393 }
6394
6395 return 1;
6396}
6397
6398/* Scan all TUs of DWO files, verifying we've processed them.
6399 This is needed in case a TU was emitted without its skeleton.
6400 Note: This can't be done until we know what all the DWO files are. */
6401
6402static void
6403process_skeletonless_type_units (struct objfile *objfile)
6404{
6405 /* Skeletonless TUs in DWP files without .gdb_index is not supported yet. */
6406 if (get_dwp_file () == NULL
6407 && dwarf2_per_objfile->dwo_files != NULL)
6408 {
6409 htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
6410 process_dwo_file_for_skeletonless_type_units,
6411 objfile);
6412 }
348e048f
DE
6413}
6414
60606b2c
TT
6415/* A cleanup function that clears objfile's psymtabs_addrmap field. */
6416
6417static void
6418psymtabs_addrmap_cleanup (void *o)
6419{
9a3c8263 6420 struct objfile *objfile = (struct objfile *) o;
ec61707d 6421
60606b2c
TT
6422 objfile->psymtabs_addrmap = NULL;
6423}
6424
95554aad
TT
6425/* Compute the 'user' field for each psymtab in OBJFILE. */
6426
6427static void
6428set_partial_user (struct objfile *objfile)
6429{
6430 int i;
6431
6432 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6433 {
8832e7e3 6434 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
95554aad
TT
6435 struct partial_symtab *pst = per_cu->v.psymtab;
6436 int j;
6437
36586728
TT
6438 if (pst == NULL)
6439 continue;
6440
95554aad
TT
6441 for (j = 0; j < pst->number_of_dependencies; ++j)
6442 {
6443 /* Set the 'user' field only if it is not already set. */
6444 if (pst->dependencies[j]->user == NULL)
6445 pst->dependencies[j]->user = pst;
6446 }
6447 }
6448}
6449
93311388
DE
6450/* Build the partial symbol table by doing a quick pass through the
6451 .debug_info and .debug_abbrev sections. */
72bf9492 6452
93311388 6453static void
c67a9c90 6454dwarf2_build_psymtabs_hard (struct objfile *objfile)
93311388 6455{
60606b2c
TT
6456 struct cleanup *back_to, *addrmap_cleanup;
6457 struct obstack temp_obstack;
21b2bd31 6458 int i;
93311388 6459
b4f54984 6460 if (dwarf_read_debug)
45cfd468
DE
6461 {
6462 fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
4262abfb 6463 objfile_name (objfile));
45cfd468
DE
6464 }
6465
98bfdba5
PA
6466 dwarf2_per_objfile->reading_partial_symbols = 1;
6467
be391dca 6468 dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
91c24f0a 6469
93311388
DE
6470 /* Any cached compilation units will be linked by the per-objfile
6471 read_in_chain. Make sure to free them when we're done. */
6472 back_to = make_cleanup (free_cached_comp_units, NULL);
72bf9492 6473
348e048f
DE
6474 build_type_psymtabs (objfile);
6475
93311388 6476 create_all_comp_units (objfile);
c906108c 6477
60606b2c
TT
6478 /* Create a temporary address map on a temporary obstack. We later
6479 copy this to the final obstack. */
6480 obstack_init (&temp_obstack);
6481 make_cleanup_obstack_free (&temp_obstack);
6482 objfile->psymtabs_addrmap = addrmap_create_mutable (&temp_obstack);
6483 addrmap_cleanup = make_cleanup (psymtabs_addrmap_cleanup, objfile);
72bf9492 6484
21b2bd31 6485 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
93311388 6486 {
8832e7e3 6487 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
aaa75496 6488
b93601f3 6489 process_psymtab_comp_unit (per_cu, 0, language_minimal);
c906108c 6490 }
ff013f42 6491
6aa5f3a6
DE
6492 /* This has to wait until we read the CUs, we need the list of DWOs. */
6493 process_skeletonless_type_units (objfile);
6494
6495 /* Now that all TUs have been processed we can fill in the dependencies. */
6496 if (dwarf2_per_objfile->type_unit_groups != NULL)
6497 {
6498 htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
6499 build_type_psymtab_dependencies, NULL);
6500 }
6501
b4f54984 6502 if (dwarf_read_debug)
6aa5f3a6
DE
6503 print_tu_stats ();
6504
95554aad
TT
6505 set_partial_user (objfile);
6506
ff013f42
JK
6507 objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
6508 &objfile->objfile_obstack);
60606b2c 6509 discard_cleanups (addrmap_cleanup);
ff013f42 6510
ae038cb0 6511 do_cleanups (back_to);
45cfd468 6512
b4f54984 6513 if (dwarf_read_debug)
45cfd468 6514 fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
4262abfb 6515 objfile_name (objfile));
ae038cb0
DJ
6516}
6517
3019eac3 6518/* die_reader_func for load_partial_comp_unit. */
ae038cb0
DJ
6519
6520static void
dee91e82 6521load_partial_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 6522 const gdb_byte *info_ptr,
dee91e82
DE
6523 struct die_info *comp_unit_die,
6524 int has_children,
6525 void *data)
ae038cb0 6526{
dee91e82 6527 struct dwarf2_cu *cu = reader->cu;
ae038cb0 6528
95554aad 6529 prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
ae038cb0 6530
ae038cb0
DJ
6531 /* Check if comp unit has_children.
6532 If so, read the rest of the partial symbols from this comp unit.
0963b4bd 6533 If not, there's no more debug_info for this comp unit. */
d85a05f0 6534 if (has_children)
dee91e82
DE
6535 load_partial_dies (reader, info_ptr, 0);
6536}
98bfdba5 6537
dee91e82
DE
6538/* Load the partial DIEs for a secondary CU into memory.
6539 This is also used when rereading a primary CU with load_all_dies. */
c5b7e1cb 6540
dee91e82
DE
6541static void
6542load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
6543{
f4dc4d17
DE
6544 init_cutu_and_read_dies (this_cu, NULL, 1, 1,
6545 load_partial_comp_unit_reader, NULL);
ae038cb0
DJ
6546}
6547
ae038cb0 6548static void
36586728
TT
6549read_comp_units_from_section (struct objfile *objfile,
6550 struct dwarf2_section_info *section,
6551 unsigned int is_dwz,
6552 int *n_allocated,
6553 int *n_comp_units,
6554 struct dwarf2_per_cu_data ***all_comp_units)
ae038cb0 6555{
d521ce57 6556 const gdb_byte *info_ptr;
a32a8923 6557 bfd *abfd = get_section_bfd_owner (section);
be391dca 6558
b4f54984 6559 if (dwarf_read_debug)
bf6af496 6560 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
a32a8923
DE
6561 get_section_name (section),
6562 get_section_file_name (section));
bf6af496 6563
36586728 6564 dwarf2_read_section (objfile, section);
ae038cb0 6565
36586728 6566 info_ptr = section->buffer;
6e70227d 6567
36586728 6568 while (info_ptr < section->buffer + section->size)
ae038cb0 6569 {
c764a876 6570 unsigned int length, initial_length_size;
ae038cb0 6571 struct dwarf2_per_cu_data *this_cu;
b64f50a1 6572 sect_offset offset;
ae038cb0 6573
36586728 6574 offset.sect_off = info_ptr - section->buffer;
ae038cb0
DJ
6575
6576 /* Read just enough information to find out where the next
6577 compilation unit is. */
36586728 6578 length = read_initial_length (abfd, info_ptr, &initial_length_size);
ae038cb0
DJ
6579
6580 /* Save the compilation unit for later lookup. */
8d749320 6581 this_cu = XOBNEW (&objfile->objfile_obstack, struct dwarf2_per_cu_data);
ae038cb0
DJ
6582 memset (this_cu, 0, sizeof (*this_cu));
6583 this_cu->offset = offset;
c764a876 6584 this_cu->length = length + initial_length_size;
36586728 6585 this_cu->is_dwz = is_dwz;
9291a0cd 6586 this_cu->objfile = objfile;
8a0459fd 6587 this_cu->section = section;
ae038cb0 6588
36586728 6589 if (*n_comp_units == *n_allocated)
ae038cb0 6590 {
36586728 6591 *n_allocated *= 2;
224c3ddb
SM
6592 *all_comp_units = XRESIZEVEC (struct dwarf2_per_cu_data *,
6593 *all_comp_units, *n_allocated);
ae038cb0 6594 }
36586728
TT
6595 (*all_comp_units)[*n_comp_units] = this_cu;
6596 ++*n_comp_units;
ae038cb0
DJ
6597
6598 info_ptr = info_ptr + this_cu->length;
6599 }
36586728
TT
6600}
6601
6602/* Create a list of all compilation units in OBJFILE.
6603 This is only done for -readnow and building partial symtabs. */
6604
6605static void
6606create_all_comp_units (struct objfile *objfile)
6607{
6608 int n_allocated;
6609 int n_comp_units;
6610 struct dwarf2_per_cu_data **all_comp_units;
4db1a1dc 6611 struct dwz_file *dwz;
36586728
TT
6612
6613 n_comp_units = 0;
6614 n_allocated = 10;
8d749320 6615 all_comp_units = XNEWVEC (struct dwarf2_per_cu_data *, n_allocated);
36586728
TT
6616
6617 read_comp_units_from_section (objfile, &dwarf2_per_objfile->info, 0,
6618 &n_allocated, &n_comp_units, &all_comp_units);
6619
4db1a1dc
TT
6620 dwz = dwarf2_get_dwz_file ();
6621 if (dwz != NULL)
6622 read_comp_units_from_section (objfile, &dwz->info, 1,
6623 &n_allocated, &n_comp_units,
6624 &all_comp_units);
ae038cb0 6625
8d749320
SM
6626 dwarf2_per_objfile->all_comp_units = XOBNEWVEC (&objfile->objfile_obstack,
6627 struct dwarf2_per_cu_data *,
6628 n_comp_units);
ae038cb0
DJ
6629 memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
6630 n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6631 xfree (all_comp_units);
6632 dwarf2_per_objfile->n_comp_units = n_comp_units;
c906108c
SS
6633}
6634
5734ee8b 6635/* Process all loaded DIEs for compilation unit CU, starting at
cdc07690 6636 FIRST_DIE. The caller should pass SET_ADDRMAP == 1 if the compilation
5734ee8b 6637 unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
cdc07690
YQ
6638 DW_AT_ranges). See the comments of add_partial_subprogram on how
6639 SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated. */
c906108c 6640
72bf9492
DJ
6641static void
6642scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
cdc07690
YQ
6643 CORE_ADDR *highpc, int set_addrmap,
6644 struct dwarf2_cu *cu)
c906108c 6645{
72bf9492 6646 struct partial_die_info *pdi;
c906108c 6647
91c24f0a
DC
6648 /* Now, march along the PDI's, descending into ones which have
6649 interesting children but skipping the children of the other ones,
6650 until we reach the end of the compilation unit. */
c906108c 6651
72bf9492 6652 pdi = first_die;
91c24f0a 6653
72bf9492
DJ
6654 while (pdi != NULL)
6655 {
6656 fixup_partial_die (pdi, cu);
c906108c 6657
f55ee35c 6658 /* Anonymous namespaces or modules have no name but have interesting
91c24f0a
DC
6659 children, so we need to look at them. Ditto for anonymous
6660 enums. */
933c6fe4 6661
72bf9492 6662 if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
95554aad
TT
6663 || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
6664 || pdi->tag == DW_TAG_imported_unit)
c906108c 6665 {
72bf9492 6666 switch (pdi->tag)
c906108c
SS
6667 {
6668 case DW_TAG_subprogram:
cdc07690 6669 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
c906108c 6670 break;
72929c62 6671 case DW_TAG_constant:
c906108c
SS
6672 case DW_TAG_variable:
6673 case DW_TAG_typedef:
91c24f0a 6674 case DW_TAG_union_type:
72bf9492 6675 if (!pdi->is_declaration)
63d06c5c 6676 {
72bf9492 6677 add_partial_symbol (pdi, cu);
63d06c5c
DC
6678 }
6679 break;
c906108c 6680 case DW_TAG_class_type:
680b30c7 6681 case DW_TAG_interface_type:
c906108c 6682 case DW_TAG_structure_type:
72bf9492 6683 if (!pdi->is_declaration)
c906108c 6684 {
72bf9492 6685 add_partial_symbol (pdi, cu);
c906108c 6686 }
e98c9e7c
TT
6687 if (cu->language == language_rust && pdi->has_children)
6688 scan_partial_symbols (pdi->die_child, lowpc, highpc,
6689 set_addrmap, cu);
c906108c 6690 break;
91c24f0a 6691 case DW_TAG_enumeration_type:
72bf9492
DJ
6692 if (!pdi->is_declaration)
6693 add_partial_enumeration (pdi, cu);
c906108c
SS
6694 break;
6695 case DW_TAG_base_type:
a02abb62 6696 case DW_TAG_subrange_type:
c906108c 6697 /* File scope base type definitions are added to the partial
c5aa993b 6698 symbol table. */
72bf9492 6699 add_partial_symbol (pdi, cu);
c906108c 6700 break;
d9fa45fe 6701 case DW_TAG_namespace:
cdc07690 6702 add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
91c24f0a 6703 break;
5d7cb8df 6704 case DW_TAG_module:
cdc07690 6705 add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
5d7cb8df 6706 break;
95554aad
TT
6707 case DW_TAG_imported_unit:
6708 {
6709 struct dwarf2_per_cu_data *per_cu;
6710
f4dc4d17
DE
6711 /* For now we don't handle imported units in type units. */
6712 if (cu->per_cu->is_debug_types)
6713 {
6714 error (_("Dwarf Error: DW_TAG_imported_unit is not"
6715 " supported in type units [in module %s]"),
4262abfb 6716 objfile_name (cu->objfile));
f4dc4d17
DE
6717 }
6718
95554aad 6719 per_cu = dwarf2_find_containing_comp_unit (pdi->d.offset,
36586728 6720 pdi->is_dwz,
95554aad
TT
6721 cu->objfile);
6722
6723 /* Go read the partial unit, if needed. */
6724 if (per_cu->v.psymtab == NULL)
b93601f3 6725 process_psymtab_comp_unit (per_cu, 1, cu->language);
95554aad 6726
f4dc4d17 6727 VEC_safe_push (dwarf2_per_cu_ptr,
796a7ff8 6728 cu->per_cu->imported_symtabs, per_cu);
95554aad
TT
6729 }
6730 break;
74921315
KS
6731 case DW_TAG_imported_declaration:
6732 add_partial_symbol (pdi, cu);
6733 break;
c906108c
SS
6734 default:
6735 break;
6736 }
6737 }
6738
72bf9492
DJ
6739 /* If the die has a sibling, skip to the sibling. */
6740
6741 pdi = pdi->die_sibling;
6742 }
6743}
6744
6745/* Functions used to compute the fully scoped name of a partial DIE.
91c24f0a 6746
72bf9492 6747 Normally, this is simple. For C++, the parent DIE's fully scoped
9c37b5ae 6748 name is concatenated with "::" and the partial DIE's name.
72bf9492
DJ
6749 Enumerators are an exception; they use the scope of their parent
6750 enumeration type, i.e. the name of the enumeration type is not
6751 prepended to the enumerator.
91c24f0a 6752
72bf9492
DJ
6753 There are two complexities. One is DW_AT_specification; in this
6754 case "parent" means the parent of the target of the specification,
6755 instead of the direct parent of the DIE. The other is compilers
6756 which do not emit DW_TAG_namespace; in this case we try to guess
6757 the fully qualified name of structure types from their members'
6758 linkage names. This must be done using the DIE's children rather
6759 than the children of any DW_AT_specification target. We only need
6760 to do this for structures at the top level, i.e. if the target of
6761 any DW_AT_specification (if any; otherwise the DIE itself) does not
6762 have a parent. */
6763
6764/* Compute the scope prefix associated with PDI's parent, in
6765 compilation unit CU. The result will be allocated on CU's
6766 comp_unit_obstack, or a copy of the already allocated PDI->NAME
6767 field. NULL is returned if no prefix is necessary. */
15d034d0 6768static const char *
72bf9492
DJ
6769partial_die_parent_scope (struct partial_die_info *pdi,
6770 struct dwarf2_cu *cu)
6771{
15d034d0 6772 const char *grandparent_scope;
72bf9492 6773 struct partial_die_info *parent, *real_pdi;
91c24f0a 6774
72bf9492
DJ
6775 /* We need to look at our parent DIE; if we have a DW_AT_specification,
6776 then this means the parent of the specification DIE. */
6777
6778 real_pdi = pdi;
72bf9492 6779 while (real_pdi->has_specification)
36586728
TT
6780 real_pdi = find_partial_die (real_pdi->spec_offset,
6781 real_pdi->spec_is_dwz, cu);
72bf9492
DJ
6782
6783 parent = real_pdi->die_parent;
6784 if (parent == NULL)
6785 return NULL;
6786
6787 if (parent->scope_set)
6788 return parent->scope;
6789
6790 fixup_partial_die (parent, cu);
6791
10b3939b 6792 grandparent_scope = partial_die_parent_scope (parent, cu);
72bf9492 6793
acebe513
UW
6794 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
6795 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
6796 Work around this problem here. */
6797 if (cu->language == language_cplus
6e70227d 6798 && parent->tag == DW_TAG_namespace
acebe513
UW
6799 && strcmp (parent->name, "::") == 0
6800 && grandparent_scope == NULL)
6801 {
6802 parent->scope = NULL;
6803 parent->scope_set = 1;
6804 return NULL;
6805 }
6806
9c6c53f7
SA
6807 if (pdi->tag == DW_TAG_enumerator)
6808 /* Enumerators should not get the name of the enumeration as a prefix. */
6809 parent->scope = grandparent_scope;
6810 else if (parent->tag == DW_TAG_namespace
f55ee35c 6811 || parent->tag == DW_TAG_module
72bf9492
DJ
6812 || parent->tag == DW_TAG_structure_type
6813 || parent->tag == DW_TAG_class_type
680b30c7 6814 || parent->tag == DW_TAG_interface_type
ceeb3d5a
TT
6815 || parent->tag == DW_TAG_union_type
6816 || parent->tag == DW_TAG_enumeration_type)
72bf9492
DJ
6817 {
6818 if (grandparent_scope == NULL)
6819 parent->scope = parent->name;
6820 else
3e43a32a
MS
6821 parent->scope = typename_concat (&cu->comp_unit_obstack,
6822 grandparent_scope,
f55ee35c 6823 parent->name, 0, cu);
72bf9492 6824 }
72bf9492
DJ
6825 else
6826 {
6827 /* FIXME drow/2004-04-01: What should we be doing with
6828 function-local names? For partial symbols, we should probably be
6829 ignoring them. */
6830 complaint (&symfile_complaints,
e2e0b3e5 6831 _("unhandled containing DIE tag %d for DIE at %d"),
b64f50a1 6832 parent->tag, pdi->offset.sect_off);
72bf9492 6833 parent->scope = grandparent_scope;
c906108c
SS
6834 }
6835
72bf9492
DJ
6836 parent->scope_set = 1;
6837 return parent->scope;
6838}
6839
6840/* Return the fully scoped name associated with PDI, from compilation unit
6841 CU. The result will be allocated with malloc. */
4568ecf9 6842
72bf9492
DJ
6843static char *
6844partial_die_full_name (struct partial_die_info *pdi,
6845 struct dwarf2_cu *cu)
6846{
15d034d0 6847 const char *parent_scope;
72bf9492 6848
98bfdba5
PA
6849 /* If this is a template instantiation, we can not work out the
6850 template arguments from partial DIEs. So, unfortunately, we have
6851 to go through the full DIEs. At least any work we do building
6852 types here will be reused if full symbols are loaded later. */
6853 if (pdi->has_template_arguments)
6854 {
6855 fixup_partial_die (pdi, cu);
6856
6857 if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
6858 {
6859 struct die_info *die;
6860 struct attribute attr;
6861 struct dwarf2_cu *ref_cu = cu;
6862
b64f50a1 6863 /* DW_FORM_ref_addr is using section offset. */
b4069958 6864 attr.name = (enum dwarf_attribute) 0;
98bfdba5 6865 attr.form = DW_FORM_ref_addr;
4568ecf9 6866 attr.u.unsnd = pdi->offset.sect_off;
98bfdba5
PA
6867 die = follow_die_ref (NULL, &attr, &ref_cu);
6868
6869 return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
6870 }
6871 }
6872
72bf9492
DJ
6873 parent_scope = partial_die_parent_scope (pdi, cu);
6874 if (parent_scope == NULL)
6875 return NULL;
6876 else
f55ee35c 6877 return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
c906108c
SS
6878}
6879
6880static void
72bf9492 6881add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
c906108c 6882{
e7c27a73 6883 struct objfile *objfile = cu->objfile;
3e29f34a 6884 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c 6885 CORE_ADDR addr = 0;
15d034d0 6886 const char *actual_name = NULL;
e142c38c 6887 CORE_ADDR baseaddr;
15d034d0 6888 char *built_actual_name;
e142c38c
DJ
6889
6890 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 6891
15d034d0
TT
6892 built_actual_name = partial_die_full_name (pdi, cu);
6893 if (built_actual_name != NULL)
6894 actual_name = built_actual_name;
63d06c5c 6895
72bf9492
DJ
6896 if (actual_name == NULL)
6897 actual_name = pdi->name;
6898
c906108c
SS
6899 switch (pdi->tag)
6900 {
6901 case DW_TAG_subprogram:
3e29f34a 6902 addr = gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr);
2cfa0c8d 6903 if (pdi->is_external || cu->language == language_ada)
c906108c 6904 {
2cfa0c8d
JB
6905 /* brobecker/2007-12-26: Normally, only "external" DIEs are part
6906 of the global scope. But in Ada, we want to be able to access
6907 nested procedures globally. So all Ada subprograms are stored
6908 in the global scope. */
f47fb265 6909 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6910 built_actual_name != NULL,
f47fb265
MS
6911 VAR_DOMAIN, LOC_BLOCK,
6912 &objfile->global_psymbols,
1762568f 6913 addr, cu->language, objfile);
c906108c
SS
6914 }
6915 else
6916 {
f47fb265 6917 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6918 built_actual_name != NULL,
f47fb265
MS
6919 VAR_DOMAIN, LOC_BLOCK,
6920 &objfile->static_psymbols,
1762568f 6921 addr, cu->language, objfile);
c906108c 6922 }
0c1b455e
TT
6923
6924 if (pdi->main_subprogram && actual_name != NULL)
6925 set_objfile_main_name (objfile, actual_name, cu->language);
c906108c 6926 break;
72929c62
JB
6927 case DW_TAG_constant:
6928 {
6929 struct psymbol_allocation_list *list;
6930
6931 if (pdi->is_external)
6932 list = &objfile->global_psymbols;
6933 else
6934 list = &objfile->static_psymbols;
f47fb265 6935 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6936 built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
1762568f 6937 list, 0, cu->language, objfile);
72929c62
JB
6938 }
6939 break;
c906108c 6940 case DW_TAG_variable:
95554aad
TT
6941 if (pdi->d.locdesc)
6942 addr = decode_locdesc (pdi->d.locdesc, cu);
caac4577 6943
95554aad 6944 if (pdi->d.locdesc
caac4577
JG
6945 && addr == 0
6946 && !dwarf2_per_objfile->has_section_at_zero)
6947 {
6948 /* A global or static variable may also have been stripped
6949 out by the linker if unused, in which case its address
6950 will be nullified; do not add such variables into partial
6951 symbol table then. */
6952 }
6953 else if (pdi->is_external)
c906108c
SS
6954 {
6955 /* Global Variable.
6956 Don't enter into the minimal symbol tables as there is
6957 a minimal symbol table entry from the ELF symbols already.
6958 Enter into partial symbol table if it has a location
6959 descriptor or a type.
6960 If the location descriptor is missing, new_symbol will create
6961 a LOC_UNRESOLVED symbol, the address of the variable will then
6962 be determined from the minimal symbol table whenever the variable
6963 is referenced.
6964 The address for the partial symbol table entry is not
6965 used by GDB, but it comes in handy for debugging partial symbol
6966 table building. */
6967
95554aad 6968 if (pdi->d.locdesc || pdi->has_type)
f47fb265 6969 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6970 built_actual_name != NULL,
f47fb265
MS
6971 VAR_DOMAIN, LOC_STATIC,
6972 &objfile->global_psymbols,
1762568f 6973 addr + baseaddr,
f47fb265 6974 cu->language, objfile);
c906108c
SS
6975 }
6976 else
6977 {
ff908ebf
AW
6978 int has_loc = pdi->d.locdesc != NULL;
6979
6980 /* Static Variable. Skip symbols whose value we cannot know (those
6981 without location descriptors or constant values). */
6982 if (!has_loc && !pdi->has_const_value)
decbce07 6983 {
15d034d0 6984 xfree (built_actual_name);
decbce07
MS
6985 return;
6986 }
ff908ebf 6987
f47fb265 6988 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6989 built_actual_name != NULL,
f47fb265
MS
6990 VAR_DOMAIN, LOC_STATIC,
6991 &objfile->static_psymbols,
ff908ebf 6992 has_loc ? addr + baseaddr : (CORE_ADDR) 0,
f47fb265 6993 cu->language, objfile);
c906108c
SS
6994 }
6995 break;
6996 case DW_TAG_typedef:
6997 case DW_TAG_base_type:
a02abb62 6998 case DW_TAG_subrange_type:
38d518c9 6999 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7000 built_actual_name != NULL,
176620f1 7001 VAR_DOMAIN, LOC_TYPEDEF,
c906108c 7002 &objfile->static_psymbols,
1762568f 7003 0, cu->language, objfile);
c906108c 7004 break;
74921315 7005 case DW_TAG_imported_declaration:
72bf9492
DJ
7006 case DW_TAG_namespace:
7007 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7008 built_actual_name != NULL,
72bf9492
DJ
7009 VAR_DOMAIN, LOC_TYPEDEF,
7010 &objfile->global_psymbols,
1762568f 7011 0, cu->language, objfile);
72bf9492 7012 break;
530e8392
KB
7013 case DW_TAG_module:
7014 add_psymbol_to_list (actual_name, strlen (actual_name),
7015 built_actual_name != NULL,
7016 MODULE_DOMAIN, LOC_TYPEDEF,
7017 &objfile->global_psymbols,
1762568f 7018 0, cu->language, objfile);
530e8392 7019 break;
c906108c 7020 case DW_TAG_class_type:
680b30c7 7021 case DW_TAG_interface_type:
c906108c
SS
7022 case DW_TAG_structure_type:
7023 case DW_TAG_union_type:
7024 case DW_TAG_enumeration_type:
fa4028e9
JB
7025 /* Skip external references. The DWARF standard says in the section
7026 about "Structure, Union, and Class Type Entries": "An incomplete
7027 structure, union or class type is represented by a structure,
7028 union or class entry that does not have a byte size attribute
7029 and that has a DW_AT_declaration attribute." */
7030 if (!pdi->has_byte_size && pdi->is_declaration)
decbce07 7031 {
15d034d0 7032 xfree (built_actual_name);
decbce07
MS
7033 return;
7034 }
fa4028e9 7035
63d06c5c
DC
7036 /* NOTE: carlton/2003-10-07: See comment in new_symbol about
7037 static vs. global. */
38d518c9 7038 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7039 built_actual_name != NULL,
176620f1 7040 STRUCT_DOMAIN, LOC_TYPEDEF,
9c37b5ae 7041 cu->language == language_cplus
63d06c5c
DC
7042 ? &objfile->global_psymbols
7043 : &objfile->static_psymbols,
1762568f 7044 0, cu->language, objfile);
c906108c 7045
c906108c
SS
7046 break;
7047 case DW_TAG_enumerator:
38d518c9 7048 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7049 built_actual_name != NULL,
176620f1 7050 VAR_DOMAIN, LOC_CONST,
9c37b5ae 7051 cu->language == language_cplus
f6fe98ef
DJ
7052 ? &objfile->global_psymbols
7053 : &objfile->static_psymbols,
1762568f 7054 0, cu->language, objfile);
c906108c
SS
7055 break;
7056 default:
7057 break;
7058 }
5c4e30ca 7059
15d034d0 7060 xfree (built_actual_name);
c906108c
SS
7061}
7062
5c4e30ca
DC
7063/* Read a partial die corresponding to a namespace; also, add a symbol
7064 corresponding to that namespace to the symbol table. NAMESPACE is
7065 the name of the enclosing namespace. */
91c24f0a 7066
72bf9492
DJ
7067static void
7068add_partial_namespace (struct partial_die_info *pdi,
91c24f0a 7069 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 7070 int set_addrmap, struct dwarf2_cu *cu)
91c24f0a 7071{
72bf9492 7072 /* Add a symbol for the namespace. */
e7c27a73 7073
72bf9492 7074 add_partial_symbol (pdi, cu);
5c4e30ca
DC
7075
7076 /* Now scan partial symbols in that namespace. */
7077
91c24f0a 7078 if (pdi->has_children)
cdc07690 7079 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
91c24f0a
DC
7080}
7081
5d7cb8df
JK
7082/* Read a partial die corresponding to a Fortran module. */
7083
7084static void
7085add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
cdc07690 7086 CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
5d7cb8df 7087{
530e8392
KB
7088 /* Add a symbol for the namespace. */
7089
7090 add_partial_symbol (pdi, cu);
7091
f55ee35c 7092 /* Now scan partial symbols in that module. */
5d7cb8df
JK
7093
7094 if (pdi->has_children)
cdc07690 7095 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
5d7cb8df
JK
7096}
7097
bc30ff58
JB
7098/* Read a partial die corresponding to a subprogram and create a partial
7099 symbol for that subprogram. When the CU language allows it, this
7100 routine also defines a partial symbol for each nested subprogram
cdc07690 7101 that this subprogram contains. If SET_ADDRMAP is true, record the
428fc5fc
YQ
7102 covered ranges in the addrmap. Set *LOWPC and *HIGHPC to the lowest
7103 and highest PC values found in PDI.
6e70227d 7104
cdc07690
YQ
7105 PDI may also be a lexical block, in which case we simply search
7106 recursively for subprograms defined inside that lexical block.
bc30ff58
JB
7107 Again, this is only performed when the CU language allows this
7108 type of definitions. */
7109
7110static void
7111add_partial_subprogram (struct partial_die_info *pdi,
7112 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 7113 int set_addrmap, struct dwarf2_cu *cu)
bc30ff58
JB
7114{
7115 if (pdi->tag == DW_TAG_subprogram)
7116 {
7117 if (pdi->has_pc_info)
7118 {
7119 if (pdi->lowpc < *lowpc)
7120 *lowpc = pdi->lowpc;
7121 if (pdi->highpc > *highpc)
7122 *highpc = pdi->highpc;
cdc07690 7123 if (set_addrmap)
5734ee8b 7124 {
5734ee8b 7125 struct objfile *objfile = cu->objfile;
3e29f34a
MR
7126 struct gdbarch *gdbarch = get_objfile_arch (objfile);
7127 CORE_ADDR baseaddr;
7128 CORE_ADDR highpc;
7129 CORE_ADDR lowpc;
5734ee8b
DJ
7130
7131 baseaddr = ANOFFSET (objfile->section_offsets,
7132 SECT_OFF_TEXT (objfile));
3e29f34a
MR
7133 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7134 pdi->lowpc + baseaddr);
7135 highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7136 pdi->highpc + baseaddr);
7137 addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
9291a0cd 7138 cu->per_cu->v.psymtab);
5734ee8b 7139 }
481860b3
GB
7140 }
7141
7142 if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
7143 {
bc30ff58 7144 if (!pdi->is_declaration)
e8d05480
JB
7145 /* Ignore subprogram DIEs that do not have a name, they are
7146 illegal. Do not emit a complaint at this point, we will
7147 do so when we convert this psymtab into a symtab. */
7148 if (pdi->name)
7149 add_partial_symbol (pdi, cu);
bc30ff58
JB
7150 }
7151 }
6e70227d 7152
bc30ff58
JB
7153 if (! pdi->has_children)
7154 return;
7155
7156 if (cu->language == language_ada)
7157 {
7158 pdi = pdi->die_child;
7159 while (pdi != NULL)
7160 {
7161 fixup_partial_die (pdi, cu);
7162 if (pdi->tag == DW_TAG_subprogram
7163 || pdi->tag == DW_TAG_lexical_block)
cdc07690 7164 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
bc30ff58
JB
7165 pdi = pdi->die_sibling;
7166 }
7167 }
7168}
7169
91c24f0a
DC
7170/* Read a partial die corresponding to an enumeration type. */
7171
72bf9492
DJ
7172static void
7173add_partial_enumeration (struct partial_die_info *enum_pdi,
7174 struct dwarf2_cu *cu)
91c24f0a 7175{
72bf9492 7176 struct partial_die_info *pdi;
91c24f0a
DC
7177
7178 if (enum_pdi->name != NULL)
72bf9492
DJ
7179 add_partial_symbol (enum_pdi, cu);
7180
7181 pdi = enum_pdi->die_child;
7182 while (pdi)
91c24f0a 7183 {
72bf9492 7184 if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
e2e0b3e5 7185 complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
91c24f0a 7186 else
72bf9492
DJ
7187 add_partial_symbol (pdi, cu);
7188 pdi = pdi->die_sibling;
91c24f0a 7189 }
91c24f0a
DC
7190}
7191
6caca83c
CC
7192/* Return the initial uleb128 in the die at INFO_PTR. */
7193
7194static unsigned int
d521ce57 7195peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
6caca83c
CC
7196{
7197 unsigned int bytes_read;
7198
7199 return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7200}
7201
4bb7a0a7
DJ
7202/* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
7203 Return the corresponding abbrev, or NULL if the number is zero (indicating
7204 an empty DIE). In either case *BYTES_READ will be set to the length of
7205 the initial number. */
7206
7207static struct abbrev_info *
d521ce57 7208peek_die_abbrev (const gdb_byte *info_ptr, unsigned int *bytes_read,
891d2f0b 7209 struct dwarf2_cu *cu)
4bb7a0a7
DJ
7210{
7211 bfd *abfd = cu->objfile->obfd;
7212 unsigned int abbrev_number;
7213 struct abbrev_info *abbrev;
7214
7215 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
7216
7217 if (abbrev_number == 0)
7218 return NULL;
7219
433df2d4 7220 abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
4bb7a0a7
DJ
7221 if (!abbrev)
7222 {
422b9917
DE
7223 error (_("Dwarf Error: Could not find abbrev number %d in %s"
7224 " at offset 0x%x [in module %s]"),
7225 abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
7226 cu->header.offset.sect_off, bfd_get_filename (abfd));
4bb7a0a7
DJ
7227 }
7228
7229 return abbrev;
7230}
7231
93311388
DE
7232/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7233 Returns a pointer to the end of a series of DIEs, terminated by an empty
4bb7a0a7
DJ
7234 DIE. Any children of the skipped DIEs will also be skipped. */
7235
d521ce57
TT
7236static const gdb_byte *
7237skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
4bb7a0a7 7238{
dee91e82 7239 struct dwarf2_cu *cu = reader->cu;
4bb7a0a7
DJ
7240 struct abbrev_info *abbrev;
7241 unsigned int bytes_read;
7242
7243 while (1)
7244 {
7245 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
7246 if (abbrev == NULL)
7247 return info_ptr + bytes_read;
7248 else
dee91e82 7249 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
4bb7a0a7
DJ
7250 }
7251}
7252
93311388
DE
7253/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7254 INFO_PTR should point just after the initial uleb128 of a DIE, and the
4bb7a0a7
DJ
7255 abbrev corresponding to that skipped uleb128 should be passed in
7256 ABBREV. Returns a pointer to this DIE's sibling, skipping any
7257 children. */
7258
d521ce57
TT
7259static const gdb_byte *
7260skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
dee91e82 7261 struct abbrev_info *abbrev)
4bb7a0a7
DJ
7262{
7263 unsigned int bytes_read;
7264 struct attribute attr;
dee91e82
DE
7265 bfd *abfd = reader->abfd;
7266 struct dwarf2_cu *cu = reader->cu;
d521ce57 7267 const gdb_byte *buffer = reader->buffer;
f664829e 7268 const gdb_byte *buffer_end = reader->buffer_end;
4bb7a0a7
DJ
7269 unsigned int form, i;
7270
7271 for (i = 0; i < abbrev->num_attrs; i++)
7272 {
7273 /* The only abbrev we care about is DW_AT_sibling. */
7274 if (abbrev->attrs[i].name == DW_AT_sibling)
7275 {
dee91e82 7276 read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
4bb7a0a7 7277 if (attr.form == DW_FORM_ref_addr)
3e43a32a
MS
7278 complaint (&symfile_complaints,
7279 _("ignoring absolute DW_AT_sibling"));
4bb7a0a7 7280 else
b9502d3f
WN
7281 {
7282 unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
7283 const gdb_byte *sibling_ptr = buffer + off;
7284
7285 if (sibling_ptr < info_ptr)
7286 complaint (&symfile_complaints,
7287 _("DW_AT_sibling points backwards"));
22869d73
KS
7288 else if (sibling_ptr > reader->buffer_end)
7289 dwarf2_section_buffer_overflow_complaint (reader->die_section);
b9502d3f
WN
7290 else
7291 return sibling_ptr;
7292 }
4bb7a0a7
DJ
7293 }
7294
7295 /* If it isn't DW_AT_sibling, skip this attribute. */
7296 form = abbrev->attrs[i].form;
7297 skip_attribute:
7298 switch (form)
7299 {
4bb7a0a7 7300 case DW_FORM_ref_addr:
ae411497
TT
7301 /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
7302 and later it is offset sized. */
7303 if (cu->header.version == 2)
7304 info_ptr += cu->header.addr_size;
7305 else
7306 info_ptr += cu->header.offset_size;
7307 break;
36586728
TT
7308 case DW_FORM_GNU_ref_alt:
7309 info_ptr += cu->header.offset_size;
7310 break;
ae411497 7311 case DW_FORM_addr:
4bb7a0a7
DJ
7312 info_ptr += cu->header.addr_size;
7313 break;
7314 case DW_FORM_data1:
7315 case DW_FORM_ref1:
7316 case DW_FORM_flag:
7317 info_ptr += 1;
7318 break;
2dc7f7b3
TT
7319 case DW_FORM_flag_present:
7320 break;
4bb7a0a7
DJ
7321 case DW_FORM_data2:
7322 case DW_FORM_ref2:
7323 info_ptr += 2;
7324 break;
7325 case DW_FORM_data4:
7326 case DW_FORM_ref4:
7327 info_ptr += 4;
7328 break;
7329 case DW_FORM_data8:
7330 case DW_FORM_ref8:
55f1336d 7331 case DW_FORM_ref_sig8:
4bb7a0a7
DJ
7332 info_ptr += 8;
7333 break;
7334 case DW_FORM_string:
9b1c24c8 7335 read_direct_string (abfd, info_ptr, &bytes_read);
4bb7a0a7
DJ
7336 info_ptr += bytes_read;
7337 break;
2dc7f7b3 7338 case DW_FORM_sec_offset:
4bb7a0a7 7339 case DW_FORM_strp:
36586728 7340 case DW_FORM_GNU_strp_alt:
4bb7a0a7
DJ
7341 info_ptr += cu->header.offset_size;
7342 break;
2dc7f7b3 7343 case DW_FORM_exprloc:
4bb7a0a7
DJ
7344 case DW_FORM_block:
7345 info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7346 info_ptr += bytes_read;
7347 break;
7348 case DW_FORM_block1:
7349 info_ptr += 1 + read_1_byte (abfd, info_ptr);
7350 break;
7351 case DW_FORM_block2:
7352 info_ptr += 2 + read_2_bytes (abfd, info_ptr);
7353 break;
7354 case DW_FORM_block4:
7355 info_ptr += 4 + read_4_bytes (abfd, info_ptr);
7356 break;
7357 case DW_FORM_sdata:
7358 case DW_FORM_udata:
7359 case DW_FORM_ref_udata:
3019eac3
DE
7360 case DW_FORM_GNU_addr_index:
7361 case DW_FORM_GNU_str_index:
d521ce57 7362 info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
4bb7a0a7
DJ
7363 break;
7364 case DW_FORM_indirect:
7365 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7366 info_ptr += bytes_read;
7367 /* We need to continue parsing from here, so just go back to
7368 the top. */
7369 goto skip_attribute;
7370
7371 default:
3e43a32a
MS
7372 error (_("Dwarf Error: Cannot handle %s "
7373 "in DWARF reader [in module %s]"),
4bb7a0a7
DJ
7374 dwarf_form_name (form),
7375 bfd_get_filename (abfd));
7376 }
7377 }
7378
7379 if (abbrev->has_children)
dee91e82 7380 return skip_children (reader, info_ptr);
4bb7a0a7
DJ
7381 else
7382 return info_ptr;
7383}
7384
93311388 7385/* Locate ORIG_PDI's sibling.
dee91e82 7386 INFO_PTR should point to the start of the next DIE after ORIG_PDI. */
91c24f0a 7387
d521ce57 7388static const gdb_byte *
dee91e82
DE
7389locate_pdi_sibling (const struct die_reader_specs *reader,
7390 struct partial_die_info *orig_pdi,
d521ce57 7391 const gdb_byte *info_ptr)
91c24f0a
DC
7392{
7393 /* Do we know the sibling already? */
72bf9492 7394
91c24f0a
DC
7395 if (orig_pdi->sibling)
7396 return orig_pdi->sibling;
7397
7398 /* Are there any children to deal with? */
7399
7400 if (!orig_pdi->has_children)
7401 return info_ptr;
7402
4bb7a0a7 7403 /* Skip the children the long way. */
91c24f0a 7404
dee91e82 7405 return skip_children (reader, info_ptr);
91c24f0a
DC
7406}
7407
257e7a09 7408/* Expand this partial symbol table into a full symbol table. SELF is
442e4d9c 7409 not NULL. */
c906108c
SS
7410
7411static void
257e7a09
YQ
7412dwarf2_read_symtab (struct partial_symtab *self,
7413 struct objfile *objfile)
c906108c 7414{
257e7a09 7415 if (self->readin)
c906108c 7416 {
442e4d9c 7417 warning (_("bug: psymtab for %s is already read in."),
257e7a09 7418 self->filename);
442e4d9c
YQ
7419 }
7420 else
7421 {
7422 if (info_verbose)
c906108c 7423 {
442e4d9c 7424 printf_filtered (_("Reading in symbols for %s..."),
257e7a09 7425 self->filename);
442e4d9c 7426 gdb_flush (gdb_stdout);
c906108c 7427 }
c906108c 7428
442e4d9c 7429 /* Restore our global data. */
9a3c8263
SM
7430 dwarf2_per_objfile
7431 = (struct dwarf2_per_objfile *) objfile_data (objfile,
7432 dwarf2_objfile_data_key);
10b3939b 7433
442e4d9c
YQ
7434 /* If this psymtab is constructed from a debug-only objfile, the
7435 has_section_at_zero flag will not necessarily be correct. We
7436 can get the correct value for this flag by looking at the data
7437 associated with the (presumably stripped) associated objfile. */
7438 if (objfile->separate_debug_objfile_backlink)
7439 {
7440 struct dwarf2_per_objfile *dpo_backlink
9a3c8263
SM
7441 = ((struct dwarf2_per_objfile *)
7442 objfile_data (objfile->separate_debug_objfile_backlink,
7443 dwarf2_objfile_data_key));
9a619af0 7444
442e4d9c
YQ
7445 dwarf2_per_objfile->has_section_at_zero
7446 = dpo_backlink->has_section_at_zero;
7447 }
b2ab525c 7448
442e4d9c 7449 dwarf2_per_objfile->reading_partial_symbols = 0;
98bfdba5 7450
257e7a09 7451 psymtab_to_symtab_1 (self);
c906108c 7452
442e4d9c
YQ
7453 /* Finish up the debug error message. */
7454 if (info_verbose)
7455 printf_filtered (_("done.\n"));
c906108c 7456 }
95554aad
TT
7457
7458 process_cu_includes ();
c906108c 7459}
9cdd5dbd
DE
7460\f
7461/* Reading in full CUs. */
c906108c 7462
10b3939b
DJ
7463/* Add PER_CU to the queue. */
7464
7465static void
95554aad
TT
7466queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
7467 enum language pretend_language)
10b3939b
DJ
7468{
7469 struct dwarf2_queue_item *item;
7470
7471 per_cu->queued = 1;
8d749320 7472 item = XNEW (struct dwarf2_queue_item);
10b3939b 7473 item->per_cu = per_cu;
95554aad 7474 item->pretend_language = pretend_language;
10b3939b
DJ
7475 item->next = NULL;
7476
7477 if (dwarf2_queue == NULL)
7478 dwarf2_queue = item;
7479 else
7480 dwarf2_queue_tail->next = item;
7481
7482 dwarf2_queue_tail = item;
7483}
7484
89e63ee4
DE
7485/* If PER_CU is not yet queued, add it to the queue.
7486 If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
7487 dependency.
0907af0c 7488 The result is non-zero if PER_CU was queued, otherwise the result is zero
69d751e3
DE
7489 meaning either PER_CU is already queued or it is already loaded.
7490
7491 N.B. There is an invariant here that if a CU is queued then it is loaded.
7492 The caller is required to load PER_CU if we return non-zero. */
0907af0c
DE
7493
7494static int
89e63ee4 7495maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
0907af0c
DE
7496 struct dwarf2_per_cu_data *per_cu,
7497 enum language pretend_language)
7498{
7499 /* We may arrive here during partial symbol reading, if we need full
7500 DIEs to process an unusual case (e.g. template arguments). Do
7501 not queue PER_CU, just tell our caller to load its DIEs. */
7502 if (dwarf2_per_objfile->reading_partial_symbols)
7503 {
7504 if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
7505 return 1;
7506 return 0;
7507 }
7508
7509 /* Mark the dependence relation so that we don't flush PER_CU
7510 too early. */
89e63ee4
DE
7511 if (dependent_cu != NULL)
7512 dwarf2_add_dependence (dependent_cu, per_cu);
0907af0c
DE
7513
7514 /* If it's already on the queue, we have nothing to do. */
7515 if (per_cu->queued)
7516 return 0;
7517
7518 /* If the compilation unit is already loaded, just mark it as
7519 used. */
7520 if (per_cu->cu != NULL)
7521 {
7522 per_cu->cu->last_used = 0;
7523 return 0;
7524 }
7525
7526 /* Add it to the queue. */
7527 queue_comp_unit (per_cu, pretend_language);
7528
7529 return 1;
7530}
7531
10b3939b
DJ
7532/* Process the queue. */
7533
7534static void
a0f42c21 7535process_queue (void)
10b3939b
DJ
7536{
7537 struct dwarf2_queue_item *item, *next_item;
7538
b4f54984 7539 if (dwarf_read_debug)
45cfd468
DE
7540 {
7541 fprintf_unfiltered (gdb_stdlog,
7542 "Expanding one or more symtabs of objfile %s ...\n",
4262abfb 7543 objfile_name (dwarf2_per_objfile->objfile));
45cfd468
DE
7544 }
7545
03dd20cc
DJ
7546 /* The queue starts out with one item, but following a DIE reference
7547 may load a new CU, adding it to the end of the queue. */
10b3939b
DJ
7548 for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
7549 {
cc12ce38
DE
7550 if ((dwarf2_per_objfile->using_index
7551 ? !item->per_cu->v.quick->compunit_symtab
7552 : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
7553 /* Skip dummy CUs. */
7554 && item->per_cu->cu != NULL)
f4dc4d17
DE
7555 {
7556 struct dwarf2_per_cu_data *per_cu = item->per_cu;
73be47f5 7557 unsigned int debug_print_threshold;
247f5c4f 7558 char buf[100];
f4dc4d17 7559
247f5c4f 7560 if (per_cu->is_debug_types)
f4dc4d17 7561 {
247f5c4f
DE
7562 struct signatured_type *sig_type =
7563 (struct signatured_type *) per_cu;
7564
7565 sprintf (buf, "TU %s at offset 0x%x",
73be47f5
DE
7566 hex_string (sig_type->signature),
7567 per_cu->offset.sect_off);
7568 /* There can be 100s of TUs.
7569 Only print them in verbose mode. */
7570 debug_print_threshold = 2;
f4dc4d17 7571 }
247f5c4f 7572 else
73be47f5
DE
7573 {
7574 sprintf (buf, "CU at offset 0x%x", per_cu->offset.sect_off);
7575 debug_print_threshold = 1;
7576 }
247f5c4f 7577
b4f54984 7578 if (dwarf_read_debug >= debug_print_threshold)
247f5c4f 7579 fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
f4dc4d17
DE
7580
7581 if (per_cu->is_debug_types)
7582 process_full_type_unit (per_cu, item->pretend_language);
7583 else
7584 process_full_comp_unit (per_cu, item->pretend_language);
7585
b4f54984 7586 if (dwarf_read_debug >= debug_print_threshold)
247f5c4f 7587 fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
f4dc4d17 7588 }
10b3939b
DJ
7589
7590 item->per_cu->queued = 0;
7591 next_item = item->next;
7592 xfree (item);
7593 }
7594
7595 dwarf2_queue_tail = NULL;
45cfd468 7596
b4f54984 7597 if (dwarf_read_debug)
45cfd468
DE
7598 {
7599 fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
4262abfb 7600 objfile_name (dwarf2_per_objfile->objfile));
45cfd468 7601 }
10b3939b
DJ
7602}
7603
7604/* Free all allocated queue entries. This function only releases anything if
7605 an error was thrown; if the queue was processed then it would have been
7606 freed as we went along. */
7607
7608static void
7609dwarf2_release_queue (void *dummy)
7610{
7611 struct dwarf2_queue_item *item, *last;
7612
7613 item = dwarf2_queue;
7614 while (item)
7615 {
7616 /* Anything still marked queued is likely to be in an
7617 inconsistent state, so discard it. */
7618 if (item->per_cu->queued)
7619 {
7620 if (item->per_cu->cu != NULL)
dee91e82 7621 free_one_cached_comp_unit (item->per_cu);
10b3939b
DJ
7622 item->per_cu->queued = 0;
7623 }
7624
7625 last = item;
7626 item = item->next;
7627 xfree (last);
7628 }
7629
7630 dwarf2_queue = dwarf2_queue_tail = NULL;
7631}
7632
7633/* Read in full symbols for PST, and anything it depends on. */
7634
c906108c 7635static void
fba45db2 7636psymtab_to_symtab_1 (struct partial_symtab *pst)
c906108c 7637{
10b3939b 7638 struct dwarf2_per_cu_data *per_cu;
aaa75496
JB
7639 int i;
7640
95554aad
TT
7641 if (pst->readin)
7642 return;
7643
aaa75496 7644 for (i = 0; i < pst->number_of_dependencies; i++)
95554aad
TT
7645 if (!pst->dependencies[i]->readin
7646 && pst->dependencies[i]->user == NULL)
aaa75496
JB
7647 {
7648 /* Inform about additional files that need to be read in. */
7649 if (info_verbose)
7650 {
a3f17187 7651 /* FIXME: i18n: Need to make this a single string. */
aaa75496
JB
7652 fputs_filtered (" ", gdb_stdout);
7653 wrap_here ("");
7654 fputs_filtered ("and ", gdb_stdout);
7655 wrap_here ("");
7656 printf_filtered ("%s...", pst->dependencies[i]->filename);
0963b4bd 7657 wrap_here (""); /* Flush output. */
aaa75496
JB
7658 gdb_flush (gdb_stdout);
7659 }
7660 psymtab_to_symtab_1 (pst->dependencies[i]);
7661 }
7662
9a3c8263 7663 per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
10b3939b
DJ
7664
7665 if (per_cu == NULL)
aaa75496
JB
7666 {
7667 /* It's an include file, no symbols to read for it.
7668 Everything is in the parent symtab. */
7669 pst->readin = 1;
7670 return;
7671 }
c906108c 7672
a0f42c21 7673 dw2_do_instantiate_symtab (per_cu);
10b3939b
DJ
7674}
7675
dee91e82
DE
7676/* Trivial hash function for die_info: the hash value of a DIE
7677 is its offset in .debug_info for this objfile. */
10b3939b 7678
dee91e82
DE
7679static hashval_t
7680die_hash (const void *item)
10b3939b 7681{
9a3c8263 7682 const struct die_info *die = (const struct die_info *) item;
6502dd73 7683
dee91e82
DE
7684 return die->offset.sect_off;
7685}
63d06c5c 7686
dee91e82
DE
7687/* Trivial comparison function for die_info structures: two DIEs
7688 are equal if they have the same offset. */
98bfdba5 7689
dee91e82
DE
7690static int
7691die_eq (const void *item_lhs, const void *item_rhs)
7692{
9a3c8263
SM
7693 const struct die_info *die_lhs = (const struct die_info *) item_lhs;
7694 const struct die_info *die_rhs = (const struct die_info *) item_rhs;
c906108c 7695
dee91e82
DE
7696 return die_lhs->offset.sect_off == die_rhs->offset.sect_off;
7697}
c906108c 7698
dee91e82
DE
7699/* die_reader_func for load_full_comp_unit.
7700 This is identical to read_signatured_type_reader,
7701 but is kept separate for now. */
c906108c 7702
dee91e82
DE
7703static void
7704load_full_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 7705 const gdb_byte *info_ptr,
dee91e82
DE
7706 struct die_info *comp_unit_die,
7707 int has_children,
7708 void *data)
7709{
7710 struct dwarf2_cu *cu = reader->cu;
9a3c8263 7711 enum language *language_ptr = (enum language *) data;
6caca83c 7712
dee91e82
DE
7713 gdb_assert (cu->die_hash == NULL);
7714 cu->die_hash =
7715 htab_create_alloc_ex (cu->header.length / 12,
7716 die_hash,
7717 die_eq,
7718 NULL,
7719 &cu->comp_unit_obstack,
7720 hashtab_obstack_allocate,
7721 dummy_obstack_deallocate);
e142c38c 7722
dee91e82
DE
7723 if (has_children)
7724 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
7725 &info_ptr, comp_unit_die);
7726 cu->dies = comp_unit_die;
7727 /* comp_unit_die is not stored in die_hash, no need. */
10b3939b
DJ
7728
7729 /* We try not to read any attributes in this function, because not
9cdd5dbd 7730 all CUs needed for references have been loaded yet, and symbol
10b3939b 7731 table processing isn't initialized. But we have to set the CU language,
dee91e82
DE
7732 or we won't be able to build types correctly.
7733 Similarly, if we do not read the producer, we can not apply
7734 producer-specific interpretation. */
95554aad 7735 prepare_one_comp_unit (cu, cu->dies, *language_ptr);
dee91e82 7736}
10b3939b 7737
dee91e82 7738/* Load the DIEs associated with PER_CU into memory. */
a6c727b2 7739
dee91e82 7740static void
95554aad
TT
7741load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
7742 enum language pretend_language)
dee91e82 7743{
3019eac3 7744 gdb_assert (! this_cu->is_debug_types);
c5b7e1cb 7745
f4dc4d17
DE
7746 init_cutu_and_read_dies (this_cu, NULL, 1, 1,
7747 load_full_comp_unit_reader, &pretend_language);
10b3939b
DJ
7748}
7749
3da10d80
KS
7750/* Add a DIE to the delayed physname list. */
7751
7752static void
7753add_to_method_list (struct type *type, int fnfield_index, int index,
7754 const char *name, struct die_info *die,
7755 struct dwarf2_cu *cu)
7756{
7757 struct delayed_method_info mi;
7758 mi.type = type;
7759 mi.fnfield_index = fnfield_index;
7760 mi.index = index;
7761 mi.name = name;
7762 mi.die = die;
7763 VEC_safe_push (delayed_method_info, cu->method_list, &mi);
7764}
7765
7766/* A cleanup for freeing the delayed method list. */
7767
7768static void
7769free_delayed_list (void *ptr)
7770{
7771 struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
7772 if (cu->method_list != NULL)
7773 {
7774 VEC_free (delayed_method_info, cu->method_list);
7775 cu->method_list = NULL;
7776 }
7777}
7778
7779/* Compute the physnames of any methods on the CU's method list.
7780
7781 The computation of method physnames is delayed in order to avoid the
7782 (bad) condition that one of the method's formal parameters is of an as yet
7783 incomplete type. */
7784
7785static void
7786compute_delayed_physnames (struct dwarf2_cu *cu)
7787{
7788 int i;
7789 struct delayed_method_info *mi;
7790 for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
7791 {
1d06ead6 7792 const char *physname;
3da10d80
KS
7793 struct fn_fieldlist *fn_flp
7794 = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
7d455152 7795 physname = dwarf2_physname (mi->name, mi->die, cu);
005e54bb
DE
7796 TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi->index)
7797 = physname ? physname : "";
3da10d80
KS
7798 }
7799}
7800
a766d390
DE
7801/* Go objects should be embedded in a DW_TAG_module DIE,
7802 and it's not clear if/how imported objects will appear.
7803 To keep Go support simple until that's worked out,
7804 go back through what we've read and create something usable.
7805 We could do this while processing each DIE, and feels kinda cleaner,
7806 but that way is more invasive.
7807 This is to, for example, allow the user to type "p var" or "b main"
7808 without having to specify the package name, and allow lookups
7809 of module.object to work in contexts that use the expression
7810 parser. */
7811
7812static void
7813fixup_go_packaging (struct dwarf2_cu *cu)
7814{
7815 char *package_name = NULL;
7816 struct pending *list;
7817 int i;
7818
7819 for (list = global_symbols; list != NULL; list = list->next)
7820 {
7821 for (i = 0; i < list->nsyms; ++i)
7822 {
7823 struct symbol *sym = list->symbol[i];
7824
7825 if (SYMBOL_LANGUAGE (sym) == language_go
7826 && SYMBOL_CLASS (sym) == LOC_BLOCK)
7827 {
7828 char *this_package_name = go_symbol_package_name (sym);
7829
7830 if (this_package_name == NULL)
7831 continue;
7832 if (package_name == NULL)
7833 package_name = this_package_name;
7834 else
7835 {
7836 if (strcmp (package_name, this_package_name) != 0)
7837 complaint (&symfile_complaints,
7838 _("Symtab %s has objects from two different Go packages: %s and %s"),
08be3fe3
DE
7839 (symbol_symtab (sym) != NULL
7840 ? symtab_to_filename_for_display
7841 (symbol_symtab (sym))
4262abfb 7842 : objfile_name (cu->objfile)),
a766d390
DE
7843 this_package_name, package_name);
7844 xfree (this_package_name);
7845 }
7846 }
7847 }
7848 }
7849
7850 if (package_name != NULL)
7851 {
7852 struct objfile *objfile = cu->objfile;
34a68019 7853 const char *saved_package_name
224c3ddb
SM
7854 = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
7855 package_name,
7856 strlen (package_name));
19f392bc
UW
7857 struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
7858 saved_package_name);
a766d390
DE
7859 struct symbol *sym;
7860
7861 TYPE_TAG_NAME (type) = TYPE_NAME (type);
7862
e623cf5d 7863 sym = allocate_symbol (objfile);
f85f34ed 7864 SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
86f62fd7
TT
7865 SYMBOL_SET_NAMES (sym, saved_package_name,
7866 strlen (saved_package_name), 0, objfile);
a766d390
DE
7867 /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
7868 e.g., "main" finds the "main" module and not C's main(). */
7869 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
f1e6e072 7870 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
a766d390
DE
7871 SYMBOL_TYPE (sym) = type;
7872
7873 add_symbol_to_list (sym, &global_symbols);
7874
7875 xfree (package_name);
7876 }
7877}
7878
95554aad
TT
7879/* Return the symtab for PER_CU. This works properly regardless of
7880 whether we're using the index or psymtabs. */
7881
43f3e411
DE
7882static struct compunit_symtab *
7883get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
95554aad
TT
7884{
7885 return (dwarf2_per_objfile->using_index
43f3e411
DE
7886 ? per_cu->v.quick->compunit_symtab
7887 : per_cu->v.psymtab->compunit_symtab);
95554aad
TT
7888}
7889
7890/* A helper function for computing the list of all symbol tables
7891 included by PER_CU. */
7892
7893static void
43f3e411 7894recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
ec94af83 7895 htab_t all_children, htab_t all_type_symtabs,
f9125b6c 7896 struct dwarf2_per_cu_data *per_cu,
43f3e411 7897 struct compunit_symtab *immediate_parent)
95554aad
TT
7898{
7899 void **slot;
7900 int ix;
43f3e411 7901 struct compunit_symtab *cust;
95554aad
TT
7902 struct dwarf2_per_cu_data *iter;
7903
7904 slot = htab_find_slot (all_children, per_cu, INSERT);
7905 if (*slot != NULL)
7906 {
7907 /* This inclusion and its children have been processed. */
7908 return;
7909 }
7910
7911 *slot = per_cu;
7912 /* Only add a CU if it has a symbol table. */
43f3e411
DE
7913 cust = get_compunit_symtab (per_cu);
7914 if (cust != NULL)
ec94af83
DE
7915 {
7916 /* If this is a type unit only add its symbol table if we haven't
7917 seen it yet (type unit per_cu's can share symtabs). */
7918 if (per_cu->is_debug_types)
7919 {
43f3e411 7920 slot = htab_find_slot (all_type_symtabs, cust, INSERT);
ec94af83
DE
7921 if (*slot == NULL)
7922 {
43f3e411
DE
7923 *slot = cust;
7924 VEC_safe_push (compunit_symtab_ptr, *result, cust);
7925 if (cust->user == NULL)
7926 cust->user = immediate_parent;
ec94af83
DE
7927 }
7928 }
7929 else
f9125b6c 7930 {
43f3e411
DE
7931 VEC_safe_push (compunit_symtab_ptr, *result, cust);
7932 if (cust->user == NULL)
7933 cust->user = immediate_parent;
f9125b6c 7934 }
ec94af83 7935 }
95554aad
TT
7936
7937 for (ix = 0;
796a7ff8 7938 VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
95554aad 7939 ++ix)
ec94af83
DE
7940 {
7941 recursively_compute_inclusions (result, all_children,
43f3e411 7942 all_type_symtabs, iter, cust);
ec94af83 7943 }
95554aad
TT
7944}
7945
43f3e411 7946/* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
95554aad
TT
7947 PER_CU. */
7948
7949static void
43f3e411 7950compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
95554aad 7951{
f4dc4d17
DE
7952 gdb_assert (! per_cu->is_debug_types);
7953
796a7ff8 7954 if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
95554aad
TT
7955 {
7956 int ix, len;
ec94af83 7957 struct dwarf2_per_cu_data *per_cu_iter;
43f3e411
DE
7958 struct compunit_symtab *compunit_symtab_iter;
7959 VEC (compunit_symtab_ptr) *result_symtabs = NULL;
ec94af83 7960 htab_t all_children, all_type_symtabs;
43f3e411 7961 struct compunit_symtab *cust = get_compunit_symtab (per_cu);
95554aad
TT
7962
7963 /* If we don't have a symtab, we can just skip this case. */
43f3e411 7964 if (cust == NULL)
95554aad
TT
7965 return;
7966
7967 all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7968 NULL, xcalloc, xfree);
ec94af83
DE
7969 all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7970 NULL, xcalloc, xfree);
95554aad
TT
7971
7972 for (ix = 0;
796a7ff8 7973 VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
ec94af83 7974 ix, per_cu_iter);
95554aad 7975 ++ix)
ec94af83
DE
7976 {
7977 recursively_compute_inclusions (&result_symtabs, all_children,
f9125b6c 7978 all_type_symtabs, per_cu_iter,
43f3e411 7979 cust);
ec94af83 7980 }
95554aad 7981
ec94af83 7982 /* Now we have a transitive closure of all the included symtabs. */
43f3e411
DE
7983 len = VEC_length (compunit_symtab_ptr, result_symtabs);
7984 cust->includes
8d749320
SM
7985 = XOBNEWVEC (&dwarf2_per_objfile->objfile->objfile_obstack,
7986 struct compunit_symtab *, len + 1);
95554aad 7987 for (ix = 0;
43f3e411
DE
7988 VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
7989 compunit_symtab_iter);
95554aad 7990 ++ix)
43f3e411
DE
7991 cust->includes[ix] = compunit_symtab_iter;
7992 cust->includes[len] = NULL;
95554aad 7993
43f3e411 7994 VEC_free (compunit_symtab_ptr, result_symtabs);
95554aad 7995 htab_delete (all_children);
ec94af83 7996 htab_delete (all_type_symtabs);
95554aad
TT
7997 }
7998}
7999
8000/* Compute the 'includes' field for the symtabs of all the CUs we just
8001 read. */
8002
8003static void
8004process_cu_includes (void)
8005{
8006 int ix;
8007 struct dwarf2_per_cu_data *iter;
8008
8009 for (ix = 0;
8010 VEC_iterate (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus,
8011 ix, iter);
8012 ++ix)
f4dc4d17
DE
8013 {
8014 if (! iter->is_debug_types)
43f3e411 8015 compute_compunit_symtab_includes (iter);
f4dc4d17 8016 }
95554aad
TT
8017
8018 VEC_free (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus);
8019}
8020
9cdd5dbd 8021/* Generate full symbol information for PER_CU, whose DIEs have
10b3939b
DJ
8022 already been loaded into memory. */
8023
8024static void
95554aad
TT
8025process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
8026 enum language pretend_language)
10b3939b 8027{
10b3939b 8028 struct dwarf2_cu *cu = per_cu->cu;
9291a0cd 8029 struct objfile *objfile = per_cu->objfile;
3e29f34a 8030 struct gdbarch *gdbarch = get_objfile_arch (objfile);
10b3939b 8031 CORE_ADDR lowpc, highpc;
43f3e411 8032 struct compunit_symtab *cust;
3da10d80 8033 struct cleanup *back_to, *delayed_list_cleanup;
10b3939b 8034 CORE_ADDR baseaddr;
4359dff1 8035 struct block *static_block;
3e29f34a 8036 CORE_ADDR addr;
10b3939b
DJ
8037
8038 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8039
10b3939b
DJ
8040 buildsym_init ();
8041 back_to = make_cleanup (really_free_pendings, NULL);
3da10d80 8042 delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
10b3939b
DJ
8043
8044 cu->list_in_scope = &file_symbols;
c906108c 8045
95554aad
TT
8046 cu->language = pretend_language;
8047 cu->language_defn = language_def (cu->language);
8048
c906108c 8049 /* Do line number decoding in read_file_scope () */
10b3939b 8050 process_die (cu->dies, cu);
c906108c 8051
a766d390
DE
8052 /* For now fudge the Go package. */
8053 if (cu->language == language_go)
8054 fixup_go_packaging (cu);
8055
3da10d80
KS
8056 /* Now that we have processed all the DIEs in the CU, all the types
8057 should be complete, and it should now be safe to compute all of the
8058 physnames. */
8059 compute_delayed_physnames (cu);
8060 do_cleanups (delayed_list_cleanup);
8061
fae299cd
DC
8062 /* Some compilers don't define a DW_AT_high_pc attribute for the
8063 compilation unit. If the DW_AT_high_pc is missing, synthesize
8064 it, by scanning the DIE's below the compilation unit. */
10b3939b 8065 get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
c906108c 8066
3e29f34a
MR
8067 addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
8068 static_block = end_symtab_get_static_block (addr, 0, 1);
4359dff1
JK
8069
8070 /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
8071 Also, DW_AT_ranges may record ranges not belonging to any child DIEs
8072 (such as virtual method tables). Record the ranges in STATIC_BLOCK's
8073 addrmap to help ensure it has an accurate map of pc values belonging to
8074 this comp unit. */
8075 dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
8076
43f3e411
DE
8077 cust = end_symtab_from_static_block (static_block,
8078 SECT_OFF_TEXT (objfile), 0);
c906108c 8079
43f3e411 8080 if (cust != NULL)
c906108c 8081 {
df15bd07 8082 int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
4632c0d0 8083
8be455d7
JK
8084 /* Set symtab language to language from DW_AT_language. If the
8085 compilation is from a C file generated by language preprocessors, do
8086 not set the language if it was already deduced by start_subfile. */
43f3e411 8087 if (!(cu->language == language_c
40e3ad0e 8088 && COMPUNIT_FILETABS (cust)->language != language_unknown))
43f3e411 8089 COMPUNIT_FILETABS (cust)->language = cu->language;
8be455d7
JK
8090
8091 /* GCC-4.0 has started to support -fvar-tracking. GCC-3.x still can
8092 produce DW_AT_location with location lists but it can be possibly
ab260dad
JK
8093 invalid without -fvar-tracking. Still up to GCC-4.4.x incl. 4.4.0
8094 there were bugs in prologue debug info, fixed later in GCC-4.5
8095 by "unwind info for epilogues" patch (which is not directly related).
8be455d7
JK
8096
8097 For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
8098 needed, it would be wrong due to missing DW_AT_producer there.
8099
8100 Still one can confuse GDB by using non-standard GCC compilation
8101 options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
8102 */
ab260dad 8103 if (cu->has_loclist && gcc_4_minor >= 5)
43f3e411 8104 cust->locations_valid = 1;
e0d00bc7
JK
8105
8106 if (gcc_4_minor >= 5)
43f3e411 8107 cust->epilogue_unwind_valid = 1;
96408a79 8108
43f3e411 8109 cust->call_site_htab = cu->call_site_htab;
c906108c 8110 }
9291a0cd
TT
8111
8112 if (dwarf2_per_objfile->using_index)
43f3e411 8113 per_cu->v.quick->compunit_symtab = cust;
9291a0cd
TT
8114 else
8115 {
8116 struct partial_symtab *pst = per_cu->v.psymtab;
43f3e411 8117 pst->compunit_symtab = cust;
9291a0cd
TT
8118 pst->readin = 1;
8119 }
c906108c 8120
95554aad
TT
8121 /* Push it for inclusion processing later. */
8122 VEC_safe_push (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus, per_cu);
8123
c906108c 8124 do_cleanups (back_to);
f4dc4d17 8125}
45cfd468 8126
f4dc4d17
DE
8127/* Generate full symbol information for type unit PER_CU, whose DIEs have
8128 already been loaded into memory. */
8129
8130static void
8131process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
8132 enum language pretend_language)
8133{
8134 struct dwarf2_cu *cu = per_cu->cu;
8135 struct objfile *objfile = per_cu->objfile;
43f3e411 8136 struct compunit_symtab *cust;
f4dc4d17 8137 struct cleanup *back_to, *delayed_list_cleanup;
0186c6a7
DE
8138 struct signatured_type *sig_type;
8139
8140 gdb_assert (per_cu->is_debug_types);
8141 sig_type = (struct signatured_type *) per_cu;
f4dc4d17
DE
8142
8143 buildsym_init ();
8144 back_to = make_cleanup (really_free_pendings, NULL);
8145 delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
8146
8147 cu->list_in_scope = &file_symbols;
8148
8149 cu->language = pretend_language;
8150 cu->language_defn = language_def (cu->language);
8151
8152 /* The symbol tables are set up in read_type_unit_scope. */
8153 process_die (cu->dies, cu);
8154
8155 /* For now fudge the Go package. */
8156 if (cu->language == language_go)
8157 fixup_go_packaging (cu);
8158
8159 /* Now that we have processed all the DIEs in the CU, all the types
8160 should be complete, and it should now be safe to compute all of the
8161 physnames. */
8162 compute_delayed_physnames (cu);
8163 do_cleanups (delayed_list_cleanup);
8164
8165 /* TUs share symbol tables.
8166 If this is the first TU to use this symtab, complete the construction
094b34ac
DE
8167 of it with end_expandable_symtab. Otherwise, complete the addition of
8168 this TU's symbols to the existing symtab. */
43f3e411 8169 if (sig_type->type_unit_group->compunit_symtab == NULL)
45cfd468 8170 {
43f3e411
DE
8171 cust = end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
8172 sig_type->type_unit_group->compunit_symtab = cust;
f4dc4d17 8173
43f3e411 8174 if (cust != NULL)
f4dc4d17
DE
8175 {
8176 /* Set symtab language to language from DW_AT_language. If the
8177 compilation is from a C file generated by language preprocessors,
8178 do not set the language if it was already deduced by
8179 start_subfile. */
43f3e411
DE
8180 if (!(cu->language == language_c
8181 && COMPUNIT_FILETABS (cust)->language != language_c))
8182 COMPUNIT_FILETABS (cust)->language = cu->language;
f4dc4d17
DE
8183 }
8184 }
8185 else
8186 {
0ab9ce85 8187 augment_type_symtab ();
43f3e411 8188 cust = sig_type->type_unit_group->compunit_symtab;
f4dc4d17
DE
8189 }
8190
8191 if (dwarf2_per_objfile->using_index)
43f3e411 8192 per_cu->v.quick->compunit_symtab = cust;
f4dc4d17
DE
8193 else
8194 {
8195 struct partial_symtab *pst = per_cu->v.psymtab;
43f3e411 8196 pst->compunit_symtab = cust;
f4dc4d17 8197 pst->readin = 1;
45cfd468 8198 }
f4dc4d17
DE
8199
8200 do_cleanups (back_to);
c906108c
SS
8201}
8202
95554aad
TT
8203/* Process an imported unit DIE. */
8204
8205static void
8206process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
8207{
8208 struct attribute *attr;
8209
f4dc4d17
DE
8210 /* For now we don't handle imported units in type units. */
8211 if (cu->per_cu->is_debug_types)
8212 {
8213 error (_("Dwarf Error: DW_TAG_imported_unit is not"
8214 " supported in type units [in module %s]"),
4262abfb 8215 objfile_name (cu->objfile));
f4dc4d17
DE
8216 }
8217
95554aad
TT
8218 attr = dwarf2_attr (die, DW_AT_import, cu);
8219 if (attr != NULL)
8220 {
8221 struct dwarf2_per_cu_data *per_cu;
95554aad 8222 sect_offset offset;
36586728 8223 int is_dwz;
95554aad
TT
8224
8225 offset = dwarf2_get_ref_die_offset (attr);
36586728
TT
8226 is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
8227 per_cu = dwarf2_find_containing_comp_unit (offset, is_dwz, cu->objfile);
95554aad 8228
69d751e3 8229 /* If necessary, add it to the queue and load its DIEs. */
95554aad
TT
8230 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
8231 load_full_comp_unit (per_cu, cu->language);
8232
796a7ff8 8233 VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
95554aad
TT
8234 per_cu);
8235 }
8236}
8237
adde2bff
DE
8238/* Reset the in_process bit of a die. */
8239
8240static void
8241reset_die_in_process (void *arg)
8242{
9a3c8263 8243 struct die_info *die = (struct die_info *) arg;
8c3cb9fa 8244
adde2bff
DE
8245 die->in_process = 0;
8246}
8247
c906108c
SS
8248/* Process a die and its children. */
8249
8250static void
e7c27a73 8251process_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 8252{
adde2bff
DE
8253 struct cleanup *in_process;
8254
8255 /* We should only be processing those not already in process. */
8256 gdb_assert (!die->in_process);
8257
8258 die->in_process = 1;
8259 in_process = make_cleanup (reset_die_in_process,die);
8260
c906108c
SS
8261 switch (die->tag)
8262 {
8263 case DW_TAG_padding:
8264 break;
8265 case DW_TAG_compile_unit:
95554aad 8266 case DW_TAG_partial_unit:
e7c27a73 8267 read_file_scope (die, cu);
c906108c 8268 break;
348e048f
DE
8269 case DW_TAG_type_unit:
8270 read_type_unit_scope (die, cu);
8271 break;
c906108c 8272 case DW_TAG_subprogram:
c906108c 8273 case DW_TAG_inlined_subroutine:
edb3359d 8274 read_func_scope (die, cu);
c906108c
SS
8275 break;
8276 case DW_TAG_lexical_block:
14898363
L
8277 case DW_TAG_try_block:
8278 case DW_TAG_catch_block:
e7c27a73 8279 read_lexical_block_scope (die, cu);
c906108c 8280 break;
96408a79
SA
8281 case DW_TAG_GNU_call_site:
8282 read_call_site_scope (die, cu);
8283 break;
c906108c 8284 case DW_TAG_class_type:
680b30c7 8285 case DW_TAG_interface_type:
c906108c
SS
8286 case DW_TAG_structure_type:
8287 case DW_TAG_union_type:
134d01f1 8288 process_structure_scope (die, cu);
c906108c
SS
8289 break;
8290 case DW_TAG_enumeration_type:
134d01f1 8291 process_enumeration_scope (die, cu);
c906108c 8292 break;
134d01f1 8293
f792889a
DJ
8294 /* These dies have a type, but processing them does not create
8295 a symbol or recurse to process the children. Therefore we can
8296 read them on-demand through read_type_die. */
c906108c 8297 case DW_TAG_subroutine_type:
72019c9c 8298 case DW_TAG_set_type:
c906108c 8299 case DW_TAG_array_type:
c906108c 8300 case DW_TAG_pointer_type:
c906108c 8301 case DW_TAG_ptr_to_member_type:
c906108c 8302 case DW_TAG_reference_type:
c906108c 8303 case DW_TAG_string_type:
c906108c 8304 break;
134d01f1 8305
c906108c 8306 case DW_TAG_base_type:
a02abb62 8307 case DW_TAG_subrange_type:
cb249c71 8308 case DW_TAG_typedef:
134d01f1
DJ
8309 /* Add a typedef symbol for the type definition, if it has a
8310 DW_AT_name. */
f792889a 8311 new_symbol (die, read_type_die (die, cu), cu);
a02abb62 8312 break;
c906108c 8313 case DW_TAG_common_block:
e7c27a73 8314 read_common_block (die, cu);
c906108c
SS
8315 break;
8316 case DW_TAG_common_inclusion:
8317 break;
d9fa45fe 8318 case DW_TAG_namespace:
4d4ec4e5 8319 cu->processing_has_namespace_info = 1;
e7c27a73 8320 read_namespace (die, cu);
d9fa45fe 8321 break;
5d7cb8df 8322 case DW_TAG_module:
4d4ec4e5 8323 cu->processing_has_namespace_info = 1;
5d7cb8df
JK
8324 read_module (die, cu);
8325 break;
d9fa45fe 8326 case DW_TAG_imported_declaration:
74921315
KS
8327 cu->processing_has_namespace_info = 1;
8328 if (read_namespace_alias (die, cu))
8329 break;
8330 /* The declaration is not a global namespace alias: fall through. */
d9fa45fe 8331 case DW_TAG_imported_module:
4d4ec4e5 8332 cu->processing_has_namespace_info = 1;
27aa8d6a
SW
8333 if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
8334 || cu->language != language_fortran))
8335 complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
8336 dwarf_tag_name (die->tag));
8337 read_import_statement (die, cu);
d9fa45fe 8338 break;
95554aad
TT
8339
8340 case DW_TAG_imported_unit:
8341 process_imported_unit_die (die, cu);
8342 break;
8343
c906108c 8344 default:
e7c27a73 8345 new_symbol (die, NULL, cu);
c906108c
SS
8346 break;
8347 }
adde2bff
DE
8348
8349 do_cleanups (in_process);
c906108c 8350}
ca69b9e6
DE
8351\f
8352/* DWARF name computation. */
c906108c 8353
94af9270
KS
8354/* A helper function for dwarf2_compute_name which determines whether DIE
8355 needs to have the name of the scope prepended to the name listed in the
8356 die. */
8357
8358static int
8359die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
8360{
1c809c68
TT
8361 struct attribute *attr;
8362
94af9270
KS
8363 switch (die->tag)
8364 {
8365 case DW_TAG_namespace:
8366 case DW_TAG_typedef:
8367 case DW_TAG_class_type:
8368 case DW_TAG_interface_type:
8369 case DW_TAG_structure_type:
8370 case DW_TAG_union_type:
8371 case DW_TAG_enumeration_type:
8372 case DW_TAG_enumerator:
8373 case DW_TAG_subprogram:
08a76f8a 8374 case DW_TAG_inlined_subroutine:
94af9270 8375 case DW_TAG_member:
74921315 8376 case DW_TAG_imported_declaration:
94af9270
KS
8377 return 1;
8378
8379 case DW_TAG_variable:
c2b0a229 8380 case DW_TAG_constant:
94af9270
KS
8381 /* We only need to prefix "globally" visible variables. These include
8382 any variable marked with DW_AT_external or any variable that
8383 lives in a namespace. [Variables in anonymous namespaces
8384 require prefixing, but they are not DW_AT_external.] */
8385
8386 if (dwarf2_attr (die, DW_AT_specification, cu))
8387 {
8388 struct dwarf2_cu *spec_cu = cu;
9a619af0 8389
94af9270
KS
8390 return die_needs_namespace (die_specification (die, &spec_cu),
8391 spec_cu);
8392 }
8393
1c809c68 8394 attr = dwarf2_attr (die, DW_AT_external, cu);
f55ee35c
JK
8395 if (attr == NULL && die->parent->tag != DW_TAG_namespace
8396 && die->parent->tag != DW_TAG_module)
1c809c68
TT
8397 return 0;
8398 /* A variable in a lexical block of some kind does not need a
8399 namespace, even though in C++ such variables may be external
8400 and have a mangled name. */
8401 if (die->parent->tag == DW_TAG_lexical_block
8402 || die->parent->tag == DW_TAG_try_block
1054b214
TT
8403 || die->parent->tag == DW_TAG_catch_block
8404 || die->parent->tag == DW_TAG_subprogram)
1c809c68
TT
8405 return 0;
8406 return 1;
94af9270
KS
8407
8408 default:
8409 return 0;
8410 }
8411}
8412
98bfdba5
PA
8413/* Retrieve the last character from a mem_file. */
8414
8415static void
8416do_ui_file_peek_last (void *object, const char *buffer, long length)
8417{
8418 char *last_char_p = (char *) object;
8419
8420 if (length > 0)
8421 *last_char_p = buffer[length - 1];
8422}
8423
94af9270 8424/* Compute the fully qualified name of DIE in CU. If PHYSNAME is nonzero,
a766d390 8425 compute the physname for the object, which include a method's:
9c37b5ae 8426 - formal parameters (C++),
a766d390 8427 - receiver type (Go),
a766d390
DE
8428
8429 The term "physname" is a bit confusing.
8430 For C++, for example, it is the demangled name.
8431 For Go, for example, it's the mangled name.
94af9270 8432
af6b7be1
JB
8433 For Ada, return the DIE's linkage name rather than the fully qualified
8434 name. PHYSNAME is ignored..
8435
94af9270
KS
8436 The result is allocated on the objfile_obstack and canonicalized. */
8437
8438static const char *
15d034d0
TT
8439dwarf2_compute_name (const char *name,
8440 struct die_info *die, struct dwarf2_cu *cu,
94af9270
KS
8441 int physname)
8442{
bb5ed363
DE
8443 struct objfile *objfile = cu->objfile;
8444
94af9270
KS
8445 if (name == NULL)
8446 name = dwarf2_name (die, cu);
8447
2ee7123e
DE
8448 /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
8449 but otherwise compute it by typename_concat inside GDB.
8450 FIXME: Actually this is not really true, or at least not always true.
8451 It's all very confusing. SYMBOL_SET_NAMES doesn't try to demangle
8452 Fortran names because there is no mangling standard. So new_symbol_full
8453 will set the demangled name to the result of dwarf2_full_name, and it is
8454 the demangled name that GDB uses if it exists. */
f55ee35c
JK
8455 if (cu->language == language_ada
8456 || (cu->language == language_fortran && physname))
8457 {
8458 /* For Ada unit, we prefer the linkage name over the name, as
8459 the former contains the exported name, which the user expects
8460 to be able to reference. Ideally, we want the user to be able
8461 to reference this entity using either natural or linkage name,
8462 but we haven't started looking at this enhancement yet. */
2ee7123e 8463 const char *linkage_name;
f55ee35c 8464
2ee7123e
DE
8465 linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
8466 if (linkage_name == NULL)
8467 linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
8468 if (linkage_name != NULL)
8469 return linkage_name;
f55ee35c
JK
8470 }
8471
94af9270
KS
8472 /* These are the only languages we know how to qualify names in. */
8473 if (name != NULL
9c37b5ae 8474 && (cu->language == language_cplus
c44af4eb
TT
8475 || cu->language == language_fortran || cu->language == language_d
8476 || cu->language == language_rust))
94af9270
KS
8477 {
8478 if (die_needs_namespace (die, cu))
8479 {
8480 long length;
0d5cff50 8481 const char *prefix;
94af9270 8482 struct ui_file *buf;
34a68019 8483 const char *canonical_name = NULL;
94af9270
KS
8484
8485 prefix = determine_prefix (die, cu);
8486 buf = mem_fileopen ();
8487 if (*prefix != '\0')
8488 {
f55ee35c
JK
8489 char *prefixed_name = typename_concat (NULL, prefix, name,
8490 physname, cu);
9a619af0 8491
94af9270
KS
8492 fputs_unfiltered (prefixed_name, buf);
8493 xfree (prefixed_name);
8494 }
8495 else
62d5b8da 8496 fputs_unfiltered (name, buf);
94af9270 8497
98bfdba5
PA
8498 /* Template parameters may be specified in the DIE's DW_AT_name, or
8499 as children with DW_TAG_template_type_param or
8500 DW_TAG_value_type_param. If the latter, add them to the name
8501 here. If the name already has template parameters, then
8502 skip this step; some versions of GCC emit both, and
8503 it is more efficient to use the pre-computed name.
8504
8505 Something to keep in mind about this process: it is very
8506 unlikely, or in some cases downright impossible, to produce
8507 something that will match the mangled name of a function.
8508 If the definition of the function has the same debug info,
8509 we should be able to match up with it anyway. But fallbacks
8510 using the minimal symbol, for instance to find a method
8511 implemented in a stripped copy of libstdc++, will not work.
8512 If we do not have debug info for the definition, we will have to
8513 match them up some other way.
8514
8515 When we do name matching there is a related problem with function
8516 templates; two instantiated function templates are allowed to
8517 differ only by their return types, which we do not add here. */
8518
8519 if (cu->language == language_cplus && strchr (name, '<') == NULL)
8520 {
8521 struct attribute *attr;
8522 struct die_info *child;
8523 int first = 1;
8524
8525 die->building_fullname = 1;
8526
8527 for (child = die->child; child != NULL; child = child->sibling)
8528 {
8529 struct type *type;
12df843f 8530 LONGEST value;
d521ce57 8531 const gdb_byte *bytes;
98bfdba5
PA
8532 struct dwarf2_locexpr_baton *baton;
8533 struct value *v;
8534
8535 if (child->tag != DW_TAG_template_type_param
8536 && child->tag != DW_TAG_template_value_param)
8537 continue;
8538
8539 if (first)
8540 {
8541 fputs_unfiltered ("<", buf);
8542 first = 0;
8543 }
8544 else
8545 fputs_unfiltered (", ", buf);
8546
8547 attr = dwarf2_attr (child, DW_AT_type, cu);
8548 if (attr == NULL)
8549 {
8550 complaint (&symfile_complaints,
8551 _("template parameter missing DW_AT_type"));
8552 fputs_unfiltered ("UNKNOWN_TYPE", buf);
8553 continue;
8554 }
8555 type = die_type (child, cu);
8556
8557 if (child->tag == DW_TAG_template_type_param)
8558 {
79d43c61 8559 c_print_type (type, "", buf, -1, 0, &type_print_raw_options);
98bfdba5
PA
8560 continue;
8561 }
8562
8563 attr = dwarf2_attr (child, DW_AT_const_value, cu);
8564 if (attr == NULL)
8565 {
8566 complaint (&symfile_complaints,
3e43a32a
MS
8567 _("template parameter missing "
8568 "DW_AT_const_value"));
98bfdba5
PA
8569 fputs_unfiltered ("UNKNOWN_VALUE", buf);
8570 continue;
8571 }
8572
8573 dwarf2_const_value_attr (attr, type, name,
8574 &cu->comp_unit_obstack, cu,
8575 &value, &bytes, &baton);
8576
8577 if (TYPE_NOSIGN (type))
8578 /* GDB prints characters as NUMBER 'CHAR'. If that's
8579 changed, this can use value_print instead. */
8580 c_printchar (value, type, buf);
8581 else
8582 {
8583 struct value_print_options opts;
8584
8585 if (baton != NULL)
8586 v = dwarf2_evaluate_loc_desc (type, NULL,
8587 baton->data,
8588 baton->size,
8589 baton->per_cu);
8590 else if (bytes != NULL)
8591 {
8592 v = allocate_value (type);
8593 memcpy (value_contents_writeable (v), bytes,
8594 TYPE_LENGTH (type));
8595 }
8596 else
8597 v = value_from_longest (type, value);
8598
3e43a32a
MS
8599 /* Specify decimal so that we do not depend on
8600 the radix. */
98bfdba5
PA
8601 get_formatted_print_options (&opts, 'd');
8602 opts.raw = 1;
8603 value_print (v, buf, &opts);
8604 release_value (v);
8605 value_free (v);
8606 }
8607 }
8608
8609 die->building_fullname = 0;
8610
8611 if (!first)
8612 {
8613 /* Close the argument list, with a space if necessary
8614 (nested templates). */
8615 char last_char = '\0';
8616 ui_file_put (buf, do_ui_file_peek_last, &last_char);
8617 if (last_char == '>')
8618 fputs_unfiltered (" >", buf);
8619 else
8620 fputs_unfiltered (">", buf);
8621 }
8622 }
8623
9c37b5ae 8624 /* For C++ methods, append formal parameter type
94af9270 8625 information, if PHYSNAME. */
6e70227d 8626
94af9270 8627 if (physname && die->tag == DW_TAG_subprogram
9c37b5ae 8628 && cu->language == language_cplus)
94af9270
KS
8629 {
8630 struct type *type = read_type_die (die, cu);
8631
79d43c61
TT
8632 c_type_print_args (type, buf, 1, cu->language,
8633 &type_print_raw_options);
94af9270 8634
9c37b5ae 8635 if (cu->language == language_cplus)
94af9270 8636 {
60430eff
DJ
8637 /* Assume that an artificial first parameter is
8638 "this", but do not crash if it is not. RealView
8639 marks unnamed (and thus unused) parameters as
8640 artificial; there is no way to differentiate
8641 the two cases. */
94af9270
KS
8642 if (TYPE_NFIELDS (type) > 0
8643 && TYPE_FIELD_ARTIFICIAL (type, 0)
60430eff 8644 && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
3e43a32a
MS
8645 && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
8646 0))))
94af9270
KS
8647 fputs_unfiltered (" const", buf);
8648 }
8649 }
8650
322a8516 8651 std::string intermediate_name = ui_file_as_string (buf);
94af9270
KS
8652 ui_file_delete (buf);
8653
8654 if (cu->language == language_cplus)
34a68019 8655 canonical_name
322a8516 8656 = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
34a68019
TT
8657 &objfile->per_bfd->storage_obstack);
8658
8659 /* If we only computed INTERMEDIATE_NAME, or if
8660 INTERMEDIATE_NAME is already canonical, then we need to
8661 copy it to the appropriate obstack. */
322a8516 8662 if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
224c3ddb
SM
8663 name = ((const char *)
8664 obstack_copy0 (&objfile->per_bfd->storage_obstack,
322a8516
PA
8665 intermediate_name.c_str (),
8666 intermediate_name.length ()));
34a68019
TT
8667 else
8668 name = canonical_name;
94af9270
KS
8669 }
8670 }
8671
8672 return name;
8673}
8674
0114d602
DJ
8675/* Return the fully qualified name of DIE, based on its DW_AT_name.
8676 If scope qualifiers are appropriate they will be added. The result
34a68019 8677 will be allocated on the storage_obstack, or NULL if the DIE does
94af9270
KS
8678 not have a name. NAME may either be from a previous call to
8679 dwarf2_name or NULL.
8680
9c37b5ae 8681 The output string will be canonicalized (if C++). */
0114d602
DJ
8682
8683static const char *
15d034d0 8684dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
0114d602 8685{
94af9270
KS
8686 return dwarf2_compute_name (name, die, cu, 0);
8687}
0114d602 8688
94af9270
KS
8689/* Construct a physname for the given DIE in CU. NAME may either be
8690 from a previous call to dwarf2_name or NULL. The result will be
8691 allocated on the objfile_objstack or NULL if the DIE does not have a
8692 name.
0114d602 8693
9c37b5ae 8694 The output string will be canonicalized (if C++). */
0114d602 8695
94af9270 8696static const char *
15d034d0 8697dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
94af9270 8698{
bb5ed363 8699 struct objfile *objfile = cu->objfile;
900e11f9
JK
8700 const char *retval, *mangled = NULL, *canon = NULL;
8701 struct cleanup *back_to;
8702 int need_copy = 1;
8703
8704 /* In this case dwarf2_compute_name is just a shortcut not building anything
8705 on its own. */
8706 if (!die_needs_namespace (die, cu))
8707 return dwarf2_compute_name (name, die, cu, 1);
8708
8709 back_to = make_cleanup (null_cleanup, NULL);
8710
7d45c7c3
KB
8711 mangled = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
8712 if (mangled == NULL)
8713 mangled = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
900e11f9 8714
e98c9e7c
TT
8715 /* rustc emits invalid values for DW_AT_linkage_name. Ignore these.
8716 See https://github.com/rust-lang/rust/issues/32925. */
8717 if (cu->language == language_rust && mangled != NULL
8718 && strchr (mangled, '{') != NULL)
8719 mangled = NULL;
8720
900e11f9
JK
8721 /* DW_AT_linkage_name is missing in some cases - depend on what GDB
8722 has computed. */
7d45c7c3 8723 if (mangled != NULL)
900e11f9
JK
8724 {
8725 char *demangled;
8726
900e11f9
JK
8727 /* Use DMGL_RET_DROP for C++ template functions to suppress their return
8728 type. It is easier for GDB users to search for such functions as
8729 `name(params)' than `long name(params)'. In such case the minimal
8730 symbol names do not match the full symbol names but for template
8731 functions there is never a need to look up their definition from their
8732 declaration so the only disadvantage remains the minimal symbol
8733 variant `long name(params)' does not have the proper inferior type.
8734 */
8735
a766d390
DE
8736 if (cu->language == language_go)
8737 {
8738 /* This is a lie, but we already lie to the caller new_symbol_full.
8739 new_symbol_full assumes we return the mangled name.
8740 This just undoes that lie until things are cleaned up. */
8741 demangled = NULL;
8742 }
8743 else
8744 {
8de20a37 8745 demangled = gdb_demangle (mangled,
9c37b5ae 8746 (DMGL_PARAMS | DMGL_ANSI | DMGL_RET_DROP));
a766d390 8747 }
900e11f9
JK
8748 if (demangled)
8749 {
8750 make_cleanup (xfree, demangled);
8751 canon = demangled;
8752 }
8753 else
8754 {
8755 canon = mangled;
8756 need_copy = 0;
8757 }
8758 }
8759
8760 if (canon == NULL || check_physname)
8761 {
8762 const char *physname = dwarf2_compute_name (name, die, cu, 1);
8763
8764 if (canon != NULL && strcmp (physname, canon) != 0)
8765 {
8766 /* It may not mean a bug in GDB. The compiler could also
8767 compute DW_AT_linkage_name incorrectly. But in such case
8768 GDB would need to be bug-to-bug compatible. */
8769
8770 complaint (&symfile_complaints,
8771 _("Computed physname <%s> does not match demangled <%s> "
8772 "(from linkage <%s>) - DIE at 0x%x [in module %s]"),
4262abfb
JK
8773 physname, canon, mangled, die->offset.sect_off,
8774 objfile_name (objfile));
900e11f9
JK
8775
8776 /* Prefer DW_AT_linkage_name (in the CANON form) - when it
8777 is available here - over computed PHYSNAME. It is safer
8778 against both buggy GDB and buggy compilers. */
8779
8780 retval = canon;
8781 }
8782 else
8783 {
8784 retval = physname;
8785 need_copy = 0;
8786 }
8787 }
8788 else
8789 retval = canon;
8790
8791 if (need_copy)
224c3ddb
SM
8792 retval = ((const char *)
8793 obstack_copy0 (&objfile->per_bfd->storage_obstack,
8794 retval, strlen (retval)));
900e11f9
JK
8795
8796 do_cleanups (back_to);
8797 return retval;
0114d602
DJ
8798}
8799
74921315
KS
8800/* Inspect DIE in CU for a namespace alias. If one exists, record
8801 a new symbol for it.
8802
8803 Returns 1 if a namespace alias was recorded, 0 otherwise. */
8804
8805static int
8806read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
8807{
8808 struct attribute *attr;
8809
8810 /* If the die does not have a name, this is not a namespace
8811 alias. */
8812 attr = dwarf2_attr (die, DW_AT_name, cu);
8813 if (attr != NULL)
8814 {
8815 int num;
8816 struct die_info *d = die;
8817 struct dwarf2_cu *imported_cu = cu;
8818
8819 /* If the compiler has nested DW_AT_imported_declaration DIEs,
8820 keep inspecting DIEs until we hit the underlying import. */
8821#define MAX_NESTED_IMPORTED_DECLARATIONS 100
8822 for (num = 0; num < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
8823 {
8824 attr = dwarf2_attr (d, DW_AT_import, cu);
8825 if (attr == NULL)
8826 break;
8827
8828 d = follow_die_ref (d, attr, &imported_cu);
8829 if (d->tag != DW_TAG_imported_declaration)
8830 break;
8831 }
8832
8833 if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
8834 {
8835 complaint (&symfile_complaints,
8836 _("DIE at 0x%x has too many recursively imported "
8837 "declarations"), d->offset.sect_off);
8838 return 0;
8839 }
8840
8841 if (attr != NULL)
8842 {
8843 struct type *type;
8844 sect_offset offset = dwarf2_get_ref_die_offset (attr);
8845
8846 type = get_die_type_at_offset (offset, cu->per_cu);
8847 if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
8848 {
8849 /* This declaration is a global namespace alias. Add
8850 a symbol for it whose type is the aliased namespace. */
8851 new_symbol (die, type, cu);
8852 return 1;
8853 }
8854 }
8855 }
8856
8857 return 0;
8858}
8859
22cee43f
PMR
8860/* Return the using directives repository (global or local?) to use in the
8861 current context for LANGUAGE.
8862
8863 For Ada, imported declarations can materialize renamings, which *may* be
8864 global. However it is impossible (for now?) in DWARF to distinguish
8865 "external" imported declarations and "static" ones. As all imported
8866 declarations seem to be static in all other languages, make them all CU-wide
8867 global only in Ada. */
8868
8869static struct using_direct **
8870using_directives (enum language language)
8871{
8872 if (language == language_ada && context_stack_depth == 0)
8873 return &global_using_directives;
8874 else
8875 return &local_using_directives;
8876}
8877
27aa8d6a
SW
8878/* Read the import statement specified by the given die and record it. */
8879
8880static void
8881read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
8882{
bb5ed363 8883 struct objfile *objfile = cu->objfile;
27aa8d6a 8884 struct attribute *import_attr;
32019081 8885 struct die_info *imported_die, *child_die;
de4affc9 8886 struct dwarf2_cu *imported_cu;
27aa8d6a 8887 const char *imported_name;
794684b6 8888 const char *imported_name_prefix;
13387711
SW
8889 const char *canonical_name;
8890 const char *import_alias;
8891 const char *imported_declaration = NULL;
794684b6 8892 const char *import_prefix;
32019081
JK
8893 VEC (const_char_ptr) *excludes = NULL;
8894 struct cleanup *cleanups;
13387711 8895
27aa8d6a
SW
8896 import_attr = dwarf2_attr (die, DW_AT_import, cu);
8897 if (import_attr == NULL)
8898 {
8899 complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8900 dwarf_tag_name (die->tag));
8901 return;
8902 }
8903
de4affc9
CC
8904 imported_cu = cu;
8905 imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
8906 imported_name = dwarf2_name (imported_die, imported_cu);
27aa8d6a
SW
8907 if (imported_name == NULL)
8908 {
8909 /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
8910
8911 The import in the following code:
8912 namespace A
8913 {
8914 typedef int B;
8915 }
8916
8917 int main ()
8918 {
8919 using A::B;
8920 B b;
8921 return b;
8922 }
8923
8924 ...
8925 <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
8926 <52> DW_AT_decl_file : 1
8927 <53> DW_AT_decl_line : 6
8928 <54> DW_AT_import : <0x75>
8929 <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
8930 <59> DW_AT_name : B
8931 <5b> DW_AT_decl_file : 1
8932 <5c> DW_AT_decl_line : 2
8933 <5d> DW_AT_type : <0x6e>
8934 ...
8935 <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
8936 <76> DW_AT_byte_size : 4
8937 <77> DW_AT_encoding : 5 (signed)
8938
8939 imports the wrong die ( 0x75 instead of 0x58 ).
8940 This case will be ignored until the gcc bug is fixed. */
8941 return;
8942 }
8943
82856980
SW
8944 /* Figure out the local name after import. */
8945 import_alias = dwarf2_name (die, cu);
27aa8d6a 8946
794684b6
SW
8947 /* Figure out where the statement is being imported to. */
8948 import_prefix = determine_prefix (die, cu);
8949
8950 /* Figure out what the scope of the imported die is and prepend it
8951 to the name of the imported die. */
de4affc9 8952 imported_name_prefix = determine_prefix (imported_die, imported_cu);
794684b6 8953
f55ee35c
JK
8954 if (imported_die->tag != DW_TAG_namespace
8955 && imported_die->tag != DW_TAG_module)
794684b6 8956 {
13387711
SW
8957 imported_declaration = imported_name;
8958 canonical_name = imported_name_prefix;
794684b6 8959 }
13387711 8960 else if (strlen (imported_name_prefix) > 0)
12aaed36 8961 canonical_name = obconcat (&objfile->objfile_obstack,
45280282
IB
8962 imported_name_prefix,
8963 (cu->language == language_d ? "." : "::"),
8964 imported_name, (char *) NULL);
13387711
SW
8965 else
8966 canonical_name = imported_name;
794684b6 8967
32019081
JK
8968 cleanups = make_cleanup (VEC_cleanup (const_char_ptr), &excludes);
8969
8970 if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
8971 for (child_die = die->child; child_die && child_die->tag;
8972 child_die = sibling_die (child_die))
8973 {
8974 /* DWARF-4: A Fortran use statement with a “rename list” may be
8975 represented by an imported module entry with an import attribute
8976 referring to the module and owned entries corresponding to those
8977 entities that are renamed as part of being imported. */
8978
8979 if (child_die->tag != DW_TAG_imported_declaration)
8980 {
8981 complaint (&symfile_complaints,
8982 _("child DW_TAG_imported_declaration expected "
8983 "- DIE at 0x%x [in module %s]"),
4262abfb 8984 child_die->offset.sect_off, objfile_name (objfile));
32019081
JK
8985 continue;
8986 }
8987
8988 import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
8989 if (import_attr == NULL)
8990 {
8991 complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8992 dwarf_tag_name (child_die->tag));
8993 continue;
8994 }
8995
8996 imported_cu = cu;
8997 imported_die = follow_die_ref_or_sig (child_die, import_attr,
8998 &imported_cu);
8999 imported_name = dwarf2_name (imported_die, imported_cu);
9000 if (imported_name == NULL)
9001 {
9002 complaint (&symfile_complaints,
9003 _("child DW_TAG_imported_declaration has unknown "
9004 "imported name - DIE at 0x%x [in module %s]"),
4262abfb 9005 child_die->offset.sect_off, objfile_name (objfile));
32019081
JK
9006 continue;
9007 }
9008
9009 VEC_safe_push (const_char_ptr, excludes, imported_name);
9010
9011 process_die (child_die, cu);
9012 }
9013
22cee43f
PMR
9014 add_using_directive (using_directives (cu->language),
9015 import_prefix,
9016 canonical_name,
9017 import_alias,
9018 imported_declaration,
9019 excludes,
9020 0,
9021 &objfile->objfile_obstack);
32019081
JK
9022
9023 do_cleanups (cleanups);
27aa8d6a
SW
9024}
9025
f4dc4d17 9026/* Cleanup function for handle_DW_AT_stmt_list. */
ae2de4f8 9027
cb1df416
DJ
9028static void
9029free_cu_line_header (void *arg)
9030{
9a3c8263 9031 struct dwarf2_cu *cu = (struct dwarf2_cu *) arg;
cb1df416
DJ
9032
9033 free_line_header (cu->line_header);
9034 cu->line_header = NULL;
9035}
9036
1b80a9fa
JK
9037/* Check for possibly missing DW_AT_comp_dir with relative .debug_line
9038 directory paths. GCC SVN r127613 (new option -fdebug-prefix-map) fixed
9039 this, it was first present in GCC release 4.3.0. */
9040
9041static int
9042producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
9043{
9044 if (!cu->checked_producer)
9045 check_producer (cu);
9046
9047 return cu->producer_is_gcc_lt_4_3;
9048}
9049
9291a0cd
TT
9050static void
9051find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu,
15d034d0 9052 const char **name, const char **comp_dir)
9291a0cd 9053{
9291a0cd
TT
9054 /* Find the filename. Do not use dwarf2_name here, since the filename
9055 is not a source language identifier. */
7d45c7c3
KB
9056 *name = dwarf2_string_attr (die, DW_AT_name, cu);
9057 *comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
9291a0cd 9058
7d45c7c3
KB
9059 if (*comp_dir == NULL
9060 && producer_is_gcc_lt_4_3 (cu) && *name != NULL
9061 && IS_ABSOLUTE_PATH (*name))
9291a0cd 9062 {
15d034d0
TT
9063 char *d = ldirname (*name);
9064
9065 *comp_dir = d;
9066 if (d != NULL)
9067 make_cleanup (xfree, d);
9291a0cd
TT
9068 }
9069 if (*comp_dir != NULL)
9070 {
9071 /* Irix 6.2 native cc prepends <machine>.: to the compilation
9072 directory, get rid of it. */
e6a959d6 9073 const char *cp = strchr (*comp_dir, ':');
9291a0cd
TT
9074
9075 if (cp && cp != *comp_dir && cp[-1] == '.' && cp[1] == '/')
9076 *comp_dir = cp + 1;
9077 }
9078
9079 if (*name == NULL)
9080 *name = "<unknown>";
9081}
9082
f4dc4d17
DE
9083/* Handle DW_AT_stmt_list for a compilation unit.
9084 DIE is the DW_TAG_compile_unit die for CU.
c3b7b696
YQ
9085 COMP_DIR is the compilation directory. LOWPC is passed to
9086 dwarf_decode_lines. See dwarf_decode_lines comments about it. */
2ab95328
TT
9087
9088static void
9089handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
c3b7b696 9090 const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
2ab95328 9091{
527f3840 9092 struct objfile *objfile = dwarf2_per_objfile->objfile;
2ab95328 9093 struct attribute *attr;
527f3840
JK
9094 unsigned int line_offset;
9095 struct line_header line_header_local;
9096 hashval_t line_header_local_hash;
9097 unsigned u;
9098 void **slot;
9099 int decode_mapping;
2ab95328 9100
f4dc4d17
DE
9101 gdb_assert (! cu->per_cu->is_debug_types);
9102
2ab95328 9103 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
527f3840
JK
9104 if (attr == NULL)
9105 return;
9106
9107 line_offset = DW_UNSND (attr);
9108
9109 /* The line header hash table is only created if needed (it exists to
9110 prevent redundant reading of the line table for partial_units).
9111 If we're given a partial_unit, we'll need it. If we're given a
9112 compile_unit, then use the line header hash table if it's already
9113 created, but don't create one just yet. */
9114
9115 if (dwarf2_per_objfile->line_header_hash == NULL
9116 && die->tag == DW_TAG_partial_unit)
2ab95328 9117 {
527f3840
JK
9118 dwarf2_per_objfile->line_header_hash
9119 = htab_create_alloc_ex (127, line_header_hash_voidp,
9120 line_header_eq_voidp,
9121 free_line_header_voidp,
9122 &objfile->objfile_obstack,
9123 hashtab_obstack_allocate,
9124 dummy_obstack_deallocate);
9125 }
2ab95328 9126
527f3840
JK
9127 line_header_local.offset.sect_off = line_offset;
9128 line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
9129 line_header_local_hash = line_header_hash (&line_header_local);
9130 if (dwarf2_per_objfile->line_header_hash != NULL)
9131 {
9132 slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
9133 &line_header_local,
9134 line_header_local_hash, NO_INSERT);
9135
9136 /* For DW_TAG_compile_unit we need info like symtab::linetable which
9137 is not present in *SLOT (since if there is something in *SLOT then
9138 it will be for a partial_unit). */
9139 if (die->tag == DW_TAG_partial_unit && slot != NULL)
dee91e82 9140 {
527f3840 9141 gdb_assert (*slot != NULL);
9a3c8263 9142 cu->line_header = (struct line_header *) *slot;
527f3840 9143 return;
dee91e82 9144 }
2ab95328 9145 }
527f3840
JK
9146
9147 /* dwarf_decode_line_header does not yet provide sufficient information.
9148 We always have to call also dwarf_decode_lines for it. */
9149 cu->line_header = dwarf_decode_line_header (line_offset, cu);
9150 if (cu->line_header == NULL)
9151 return;
9152
9153 if (dwarf2_per_objfile->line_header_hash == NULL)
9154 slot = NULL;
9155 else
9156 {
9157 slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
9158 &line_header_local,
9159 line_header_local_hash, INSERT);
9160 gdb_assert (slot != NULL);
9161 }
9162 if (slot != NULL && *slot == NULL)
9163 {
9164 /* This newly decoded line number information unit will be owned
9165 by line_header_hash hash table. */
9166 *slot = cu->line_header;
9167 }
9168 else
9169 {
9170 /* We cannot free any current entry in (*slot) as that struct line_header
9171 may be already used by multiple CUs. Create only temporary decoded
9172 line_header for this CU - it may happen at most once for each line
9173 number information unit. And if we're not using line_header_hash
9174 then this is what we want as well. */
9175 gdb_assert (die->tag != DW_TAG_partial_unit);
9176 make_cleanup (free_cu_line_header, cu);
9177 }
9178 decode_mapping = (die->tag != DW_TAG_partial_unit);
9179 dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
9180 decode_mapping);
2ab95328
TT
9181}
9182
95554aad 9183/* Process DW_TAG_compile_unit or DW_TAG_partial_unit. */
ae2de4f8 9184
c906108c 9185static void
e7c27a73 9186read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 9187{
dee91e82 9188 struct objfile *objfile = dwarf2_per_objfile->objfile;
3e29f34a 9189 struct gdbarch *gdbarch = get_objfile_arch (objfile);
debd256d 9190 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2acceee2 9191 CORE_ADDR lowpc = ((CORE_ADDR) -1);
c906108c
SS
9192 CORE_ADDR highpc = ((CORE_ADDR) 0);
9193 struct attribute *attr;
15d034d0
TT
9194 const char *name = NULL;
9195 const char *comp_dir = NULL;
c906108c 9196 struct die_info *child_die;
e142c38c 9197 CORE_ADDR baseaddr;
6e70227d 9198
e142c38c 9199 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 9200
fae299cd 9201 get_scope_pc_bounds (die, &lowpc, &highpc, cu);
c906108c
SS
9202
9203 /* If we didn't find a lowpc, set it to highpc to avoid complaints
9204 from finish_block. */
2acceee2 9205 if (lowpc == ((CORE_ADDR) -1))
c906108c 9206 lowpc = highpc;
3e29f34a 9207 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
c906108c 9208
9291a0cd 9209 find_file_and_directory (die, cu, &name, &comp_dir);
e1024ff1 9210
95554aad 9211 prepare_one_comp_unit (cu, die, cu->language);
303b6f5d 9212
f4b8a18d
KW
9213 /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
9214 standardised yet. As a workaround for the language detection we fall
9215 back to the DW_AT_producer string. */
9216 if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
9217 cu->language = language_opencl;
9218
3019eac3
DE
9219 /* Similar hack for Go. */
9220 if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
9221 set_cu_language (DW_LANG_Go, cu);
9222
f4dc4d17 9223 dwarf2_start_symtab (cu, name, comp_dir, lowpc);
3019eac3
DE
9224
9225 /* Decode line number information if present. We do this before
9226 processing child DIEs, so that the line header table is available
9227 for DW_AT_decl_file. */
c3b7b696 9228 handle_DW_AT_stmt_list (die, cu, comp_dir, lowpc);
3019eac3
DE
9229
9230 /* Process all dies in compilation unit. */
9231 if (die->child != NULL)
9232 {
9233 child_die = die->child;
9234 while (child_die && child_die->tag)
9235 {
9236 process_die (child_die, cu);
9237 child_die = sibling_die (child_die);
9238 }
9239 }
9240
9241 /* Decode macro information, if present. Dwarf 2 macro information
9242 refers to information in the line number info statement program
9243 header, so we can only read it if we've read the header
9244 successfully. */
9245 attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
9246 if (attr && cu->line_header)
9247 {
9248 if (dwarf2_attr (die, DW_AT_macro_info, cu))
9249 complaint (&symfile_complaints,
9250 _("CU refers to both DW_AT_GNU_macros and DW_AT_macro_info"));
9251
43f3e411 9252 dwarf_decode_macros (cu, DW_UNSND (attr), 1);
3019eac3
DE
9253 }
9254 else
9255 {
9256 attr = dwarf2_attr (die, DW_AT_macro_info, cu);
9257 if (attr && cu->line_header)
9258 {
9259 unsigned int macro_offset = DW_UNSND (attr);
9260
43f3e411 9261 dwarf_decode_macros (cu, macro_offset, 0);
3019eac3
DE
9262 }
9263 }
9264
9265 do_cleanups (back_to);
9266}
9267
f4dc4d17
DE
9268/* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
9269 Create the set of symtabs used by this TU, or if this TU is sharing
9270 symtabs with another TU and the symtabs have already been created
9271 then restore those symtabs in the line header.
9272 We don't need the pc/line-number mapping for type units. */
3019eac3
DE
9273
9274static void
f4dc4d17 9275setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
3019eac3 9276{
f4dc4d17
DE
9277 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
9278 struct type_unit_group *tu_group;
9279 int first_time;
9280 struct line_header *lh;
3019eac3 9281 struct attribute *attr;
f4dc4d17 9282 unsigned int i, line_offset;
0186c6a7 9283 struct signatured_type *sig_type;
3019eac3 9284
f4dc4d17 9285 gdb_assert (per_cu->is_debug_types);
0186c6a7 9286 sig_type = (struct signatured_type *) per_cu;
3019eac3 9287
f4dc4d17 9288 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
3019eac3 9289
f4dc4d17 9290 /* If we're using .gdb_index (includes -readnow) then
74e04d1c 9291 per_cu->type_unit_group may not have been set up yet. */
0186c6a7
DE
9292 if (sig_type->type_unit_group == NULL)
9293 sig_type->type_unit_group = get_type_unit_group (cu, attr);
9294 tu_group = sig_type->type_unit_group;
f4dc4d17
DE
9295
9296 /* If we've already processed this stmt_list there's no real need to
9297 do it again, we could fake it and just recreate the part we need
9298 (file name,index -> symtab mapping). If data shows this optimization
9299 is useful we can do it then. */
43f3e411 9300 first_time = tu_group->compunit_symtab == NULL;
f4dc4d17
DE
9301
9302 /* We have to handle the case of both a missing DW_AT_stmt_list or bad
9303 debug info. */
9304 lh = NULL;
9305 if (attr != NULL)
3019eac3 9306 {
f4dc4d17
DE
9307 line_offset = DW_UNSND (attr);
9308 lh = dwarf_decode_line_header (line_offset, cu);
9309 }
9310 if (lh == NULL)
9311 {
9312 if (first_time)
9313 dwarf2_start_symtab (cu, "", NULL, 0);
9314 else
9315 {
9316 gdb_assert (tu_group->symtabs == NULL);
0ab9ce85 9317 restart_symtab (tu_group->compunit_symtab, "", 0);
f4dc4d17 9318 }
f4dc4d17 9319 return;
3019eac3
DE
9320 }
9321
f4dc4d17
DE
9322 cu->line_header = lh;
9323 make_cleanup (free_cu_line_header, cu);
3019eac3 9324
f4dc4d17
DE
9325 if (first_time)
9326 {
43f3e411 9327 struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
3019eac3 9328
1fd60fc0
DE
9329 /* Note: We don't assign tu_group->compunit_symtab yet because we're
9330 still initializing it, and our caller (a few levels up)
9331 process_full_type_unit still needs to know if this is the first
9332 time. */
9333
f4dc4d17
DE
9334 tu_group->num_symtabs = lh->num_file_names;
9335 tu_group->symtabs = XNEWVEC (struct symtab *, lh->num_file_names);
3019eac3 9336
f4dc4d17
DE
9337 for (i = 0; i < lh->num_file_names; ++i)
9338 {
d521ce57 9339 const char *dir = NULL;
f4dc4d17 9340 struct file_entry *fe = &lh->file_names[i];
3019eac3 9341
afa6c9ab 9342 if (fe->dir_index && lh->include_dirs != NULL)
f4dc4d17 9343 dir = lh->include_dirs[fe->dir_index - 1];
4d663531 9344 dwarf2_start_subfile (fe->name, dir);
3019eac3 9345
f4dc4d17
DE
9346 if (current_subfile->symtab == NULL)
9347 {
9348 /* NOTE: start_subfile will recognize when it's been passed
9349 a file it has already seen. So we can't assume there's a
43f3e411 9350 simple mapping from lh->file_names to subfiles, plus
f4dc4d17 9351 lh->file_names may contain dups. */
43f3e411
DE
9352 current_subfile->symtab
9353 = allocate_symtab (cust, current_subfile->name);
f4dc4d17
DE
9354 }
9355
9356 fe->symtab = current_subfile->symtab;
9357 tu_group->symtabs[i] = fe->symtab;
9358 }
9359 }
9360 else
3019eac3 9361 {
0ab9ce85 9362 restart_symtab (tu_group->compunit_symtab, "", 0);
f4dc4d17
DE
9363
9364 for (i = 0; i < lh->num_file_names; ++i)
9365 {
9366 struct file_entry *fe = &lh->file_names[i];
9367
9368 fe->symtab = tu_group->symtabs[i];
9369 }
3019eac3
DE
9370 }
9371
f4dc4d17
DE
9372 /* The main symtab is allocated last. Type units don't have DW_AT_name
9373 so they don't have a "real" (so to speak) symtab anyway.
9374 There is later code that will assign the main symtab to all symbols
9375 that don't have one. We need to handle the case of a symbol with a
9376 missing symtab (DW_AT_decl_file) anyway. */
9377}
3019eac3 9378
f4dc4d17
DE
9379/* Process DW_TAG_type_unit.
9380 For TUs we want to skip the first top level sibling if it's not the
9381 actual type being defined by this TU. In this case the first top
9382 level sibling is there to provide context only. */
3019eac3 9383
f4dc4d17
DE
9384static void
9385read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
9386{
9387 struct die_info *child_die;
3019eac3 9388
f4dc4d17
DE
9389 prepare_one_comp_unit (cu, die, language_minimal);
9390
9391 /* Initialize (or reinitialize) the machinery for building symtabs.
9392 We do this before processing child DIEs, so that the line header table
9393 is available for DW_AT_decl_file. */
9394 setup_type_unit_groups (die, cu);
9395
9396 if (die->child != NULL)
9397 {
9398 child_die = die->child;
9399 while (child_die && child_die->tag)
9400 {
9401 process_die (child_die, cu);
9402 child_die = sibling_die (child_die);
9403 }
9404 }
3019eac3
DE
9405}
9406\f
80626a55
DE
9407/* DWO/DWP files.
9408
9409 http://gcc.gnu.org/wiki/DebugFission
9410 http://gcc.gnu.org/wiki/DebugFissionDWP
9411
9412 To simplify handling of both DWO files ("object" files with the DWARF info)
9413 and DWP files (a file with the DWOs packaged up into one file), we treat
9414 DWP files as having a collection of virtual DWO files. */
3019eac3
DE
9415
9416static hashval_t
9417hash_dwo_file (const void *item)
9418{
9a3c8263 9419 const struct dwo_file *dwo_file = (const struct dwo_file *) item;
a2ce51a0 9420 hashval_t hash;
3019eac3 9421
a2ce51a0
DE
9422 hash = htab_hash_string (dwo_file->dwo_name);
9423 if (dwo_file->comp_dir != NULL)
9424 hash += htab_hash_string (dwo_file->comp_dir);
9425 return hash;
3019eac3
DE
9426}
9427
9428static int
9429eq_dwo_file (const void *item_lhs, const void *item_rhs)
9430{
9a3c8263
SM
9431 const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
9432 const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
3019eac3 9433
a2ce51a0
DE
9434 if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
9435 return 0;
9436 if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
9437 return lhs->comp_dir == rhs->comp_dir;
9438 return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
3019eac3
DE
9439}
9440
9441/* Allocate a hash table for DWO files. */
9442
9443static htab_t
9444allocate_dwo_file_hash_table (void)
9445{
9446 struct objfile *objfile = dwarf2_per_objfile->objfile;
9447
9448 return htab_create_alloc_ex (41,
9449 hash_dwo_file,
9450 eq_dwo_file,
9451 NULL,
9452 &objfile->objfile_obstack,
9453 hashtab_obstack_allocate,
9454 dummy_obstack_deallocate);
9455}
9456
80626a55
DE
9457/* Lookup DWO file DWO_NAME. */
9458
9459static void **
0ac5b59e 9460lookup_dwo_file_slot (const char *dwo_name, const char *comp_dir)
80626a55
DE
9461{
9462 struct dwo_file find_entry;
9463 void **slot;
9464
9465 if (dwarf2_per_objfile->dwo_files == NULL)
9466 dwarf2_per_objfile->dwo_files = allocate_dwo_file_hash_table ();
9467
9468 memset (&find_entry, 0, sizeof (find_entry));
0ac5b59e
DE
9469 find_entry.dwo_name = dwo_name;
9470 find_entry.comp_dir = comp_dir;
80626a55
DE
9471 slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
9472
9473 return slot;
9474}
9475
3019eac3
DE
9476static hashval_t
9477hash_dwo_unit (const void *item)
9478{
9a3c8263 9479 const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
3019eac3
DE
9480
9481 /* This drops the top 32 bits of the id, but is ok for a hash. */
9482 return dwo_unit->signature;
9483}
9484
9485static int
9486eq_dwo_unit (const void *item_lhs, const void *item_rhs)
9487{
9a3c8263
SM
9488 const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
9489 const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
3019eac3
DE
9490
9491 /* The signature is assumed to be unique within the DWO file.
9492 So while object file CU dwo_id's always have the value zero,
9493 that's OK, assuming each object file DWO file has only one CU,
9494 and that's the rule for now. */
9495 return lhs->signature == rhs->signature;
9496}
9497
9498/* Allocate a hash table for DWO CUs,TUs.
9499 There is one of these tables for each of CUs,TUs for each DWO file. */
9500
9501static htab_t
9502allocate_dwo_unit_table (struct objfile *objfile)
9503{
9504 /* Start out with a pretty small number.
9505 Generally DWO files contain only one CU and maybe some TUs. */
9506 return htab_create_alloc_ex (3,
9507 hash_dwo_unit,
9508 eq_dwo_unit,
9509 NULL,
9510 &objfile->objfile_obstack,
9511 hashtab_obstack_allocate,
9512 dummy_obstack_deallocate);
9513}
9514
80626a55 9515/* Structure used to pass data to create_dwo_debug_info_hash_table_reader. */
3019eac3 9516
19c3d4c9 9517struct create_dwo_cu_data
3019eac3
DE
9518{
9519 struct dwo_file *dwo_file;
19c3d4c9 9520 struct dwo_unit dwo_unit;
3019eac3
DE
9521};
9522
19c3d4c9 9523/* die_reader_func for create_dwo_cu. */
3019eac3
DE
9524
9525static void
19c3d4c9
DE
9526create_dwo_cu_reader (const struct die_reader_specs *reader,
9527 const gdb_byte *info_ptr,
9528 struct die_info *comp_unit_die,
9529 int has_children,
9530 void *datap)
3019eac3
DE
9531{
9532 struct dwarf2_cu *cu = reader->cu;
3019eac3 9533 sect_offset offset = cu->per_cu->offset;
8a0459fd 9534 struct dwarf2_section_info *section = cu->per_cu->section;
9a3c8263 9535 struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
3019eac3 9536 struct dwo_file *dwo_file = data->dwo_file;
19c3d4c9 9537 struct dwo_unit *dwo_unit = &data->dwo_unit;
3019eac3 9538 struct attribute *attr;
3019eac3
DE
9539
9540 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
9541 if (attr == NULL)
9542 {
19c3d4c9
DE
9543 complaint (&symfile_complaints,
9544 _("Dwarf Error: debug entry at offset 0x%x is missing"
9545 " its dwo_id [in module %s]"),
9546 offset.sect_off, dwo_file->dwo_name);
3019eac3
DE
9547 return;
9548 }
9549
3019eac3
DE
9550 dwo_unit->dwo_file = dwo_file;
9551 dwo_unit->signature = DW_UNSND (attr);
8a0459fd 9552 dwo_unit->section = section;
3019eac3
DE
9553 dwo_unit->offset = offset;
9554 dwo_unit->length = cu->per_cu->length;
9555
b4f54984 9556 if (dwarf_read_debug)
4031ecc5
DE
9557 fprintf_unfiltered (gdb_stdlog, " offset 0x%x, dwo_id %s\n",
9558 offset.sect_off, hex_string (dwo_unit->signature));
3019eac3
DE
9559}
9560
19c3d4c9
DE
9561/* Create the dwo_unit for the lone CU in DWO_FILE.
9562 Note: This function processes DWO files only, not DWP files. */
3019eac3 9563
19c3d4c9
DE
9564static struct dwo_unit *
9565create_dwo_cu (struct dwo_file *dwo_file)
3019eac3
DE
9566{
9567 struct objfile *objfile = dwarf2_per_objfile->objfile;
9568 struct dwarf2_section_info *section = &dwo_file->sections.info;
d521ce57 9569 const gdb_byte *info_ptr, *end_ptr;
19c3d4c9
DE
9570 struct create_dwo_cu_data create_dwo_cu_data;
9571 struct dwo_unit *dwo_unit;
3019eac3
DE
9572
9573 dwarf2_read_section (objfile, section);
9574 info_ptr = section->buffer;
9575
9576 if (info_ptr == NULL)
9577 return NULL;
9578
b4f54984 9579 if (dwarf_read_debug)
19c3d4c9
DE
9580 {
9581 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
a32a8923
DE
9582 get_section_name (section),
9583 get_section_file_name (section));
19c3d4c9 9584 }
3019eac3 9585
19c3d4c9
DE
9586 create_dwo_cu_data.dwo_file = dwo_file;
9587 dwo_unit = NULL;
3019eac3
DE
9588
9589 end_ptr = info_ptr + section->size;
9590 while (info_ptr < end_ptr)
9591 {
9592 struct dwarf2_per_cu_data per_cu;
9593
19c3d4c9
DE
9594 memset (&create_dwo_cu_data.dwo_unit, 0,
9595 sizeof (create_dwo_cu_data.dwo_unit));
3019eac3
DE
9596 memset (&per_cu, 0, sizeof (per_cu));
9597 per_cu.objfile = objfile;
9598 per_cu.is_debug_types = 0;
9599 per_cu.offset.sect_off = info_ptr - section->buffer;
8a0459fd 9600 per_cu.section = section;
3019eac3 9601
33e80786 9602 init_cutu_and_read_dies_no_follow (&per_cu, dwo_file,
19c3d4c9
DE
9603 create_dwo_cu_reader,
9604 &create_dwo_cu_data);
9605
9606 if (create_dwo_cu_data.dwo_unit.dwo_file != NULL)
9607 {
9608 /* If we've already found one, complain. We only support one
9609 because having more than one requires hacking the dwo_name of
9610 each to match, which is highly unlikely to happen. */
9611 if (dwo_unit != NULL)
9612 {
9613 complaint (&symfile_complaints,
9614 _("Multiple CUs in DWO file %s [in module %s]"),
4262abfb 9615 dwo_file->dwo_name, objfile_name (objfile));
19c3d4c9
DE
9616 break;
9617 }
9618
9619 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
9620 *dwo_unit = create_dwo_cu_data.dwo_unit;
9621 }
3019eac3
DE
9622
9623 info_ptr += per_cu.length;
9624 }
9625
19c3d4c9 9626 return dwo_unit;
3019eac3
DE
9627}
9628
80626a55
DE
9629/* DWP file .debug_{cu,tu}_index section format:
9630 [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
9631
d2415c6c
DE
9632 DWP Version 1:
9633
80626a55
DE
9634 Both index sections have the same format, and serve to map a 64-bit
9635 signature to a set of section numbers. Each section begins with a header,
9636 followed by a hash table of 64-bit signatures, a parallel table of 32-bit
9637 indexes, and a pool of 32-bit section numbers. The index sections will be
9638 aligned at 8-byte boundaries in the file.
9639
d2415c6c
DE
9640 The index section header consists of:
9641
9642 V, 32 bit version number
9643 -, 32 bits unused
9644 N, 32 bit number of compilation units or type units in the index
9645 M, 32 bit number of slots in the hash table
80626a55 9646
d2415c6c 9647 Numbers are recorded using the byte order of the application binary.
80626a55 9648
d2415c6c
DE
9649 The hash table begins at offset 16 in the section, and consists of an array
9650 of M 64-bit slots. Each slot contains a 64-bit signature (using the byte
9651 order of the application binary). Unused slots in the hash table are 0.
9652 (We rely on the extreme unlikeliness of a signature being exactly 0.)
80626a55 9653
d2415c6c
DE
9654 The parallel table begins immediately after the hash table
9655 (at offset 16 + 8 * M from the beginning of the section), and consists of an
9656 array of 32-bit indexes (using the byte order of the application binary),
9657 corresponding 1-1 with slots in the hash table. Each entry in the parallel
9658 table contains a 32-bit index into the pool of section numbers. For unused
9659 hash table slots, the corresponding entry in the parallel table will be 0.
80626a55 9660
73869dc2
DE
9661 The pool of section numbers begins immediately following the hash table
9662 (at offset 16 + 12 * M from the beginning of the section). The pool of
9663 section numbers consists of an array of 32-bit words (using the byte order
9664 of the application binary). Each item in the array is indexed starting
9665 from 0. The hash table entry provides the index of the first section
9666 number in the set. Additional section numbers in the set follow, and the
9667 set is terminated by a 0 entry (section number 0 is not used in ELF).
9668
9669 In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
9670 section must be the first entry in the set, and the .debug_abbrev.dwo must
9671 be the second entry. Other members of the set may follow in any order.
9672
9673 ---
9674
9675 DWP Version 2:
9676
9677 DWP Version 2 combines all the .debug_info, etc. sections into one,
9678 and the entries in the index tables are now offsets into these sections.
9679 CU offsets begin at 0. TU offsets begin at the size of the .debug_info
9680 section.
9681
9682 Index Section Contents:
9683 Header
9684 Hash Table of Signatures dwp_hash_table.hash_table
9685 Parallel Table of Indices dwp_hash_table.unit_table
9686 Table of Section Offsets dwp_hash_table.v2.{section_ids,offsets}
9687 Table of Section Sizes dwp_hash_table.v2.sizes
9688
9689 The index section header consists of:
9690
9691 V, 32 bit version number
9692 L, 32 bit number of columns in the table of section offsets
9693 N, 32 bit number of compilation units or type units in the index
9694 M, 32 bit number of slots in the hash table
9695
9696 Numbers are recorded using the byte order of the application binary.
9697
9698 The hash table has the same format as version 1.
9699 The parallel table of indices has the same format as version 1,
9700 except that the entries are origin-1 indices into the table of sections
9701 offsets and the table of section sizes.
9702
9703 The table of offsets begins immediately following the parallel table
9704 (at offset 16 + 12 * M from the beginning of the section). The table is
9705 a two-dimensional array of 32-bit words (using the byte order of the
9706 application binary), with L columns and N+1 rows, in row-major order.
9707 Each row in the array is indexed starting from 0. The first row provides
9708 a key to the remaining rows: each column in this row provides an identifier
9709 for a debug section, and the offsets in the same column of subsequent rows
9710 refer to that section. The section identifiers are:
9711
9712 DW_SECT_INFO 1 .debug_info.dwo
9713 DW_SECT_TYPES 2 .debug_types.dwo
9714 DW_SECT_ABBREV 3 .debug_abbrev.dwo
9715 DW_SECT_LINE 4 .debug_line.dwo
9716 DW_SECT_LOC 5 .debug_loc.dwo
9717 DW_SECT_STR_OFFSETS 6 .debug_str_offsets.dwo
9718 DW_SECT_MACINFO 7 .debug_macinfo.dwo
9719 DW_SECT_MACRO 8 .debug_macro.dwo
9720
9721 The offsets provided by the CU and TU index sections are the base offsets
9722 for the contributions made by each CU or TU to the corresponding section
9723 in the package file. Each CU and TU header contains an abbrev_offset
9724 field, used to find the abbreviations table for that CU or TU within the
9725 contribution to the .debug_abbrev.dwo section for that CU or TU, and should
9726 be interpreted as relative to the base offset given in the index section.
9727 Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
9728 should be interpreted as relative to the base offset for .debug_line.dwo,
9729 and offsets into other debug sections obtained from DWARF attributes should
9730 also be interpreted as relative to the corresponding base offset.
9731
9732 The table of sizes begins immediately following the table of offsets.
9733 Like the table of offsets, it is a two-dimensional array of 32-bit words,
9734 with L columns and N rows, in row-major order. Each row in the array is
9735 indexed starting from 1 (row 0 is shared by the two tables).
9736
9737 ---
9738
9739 Hash table lookup is handled the same in version 1 and 2:
9740
9741 We assume that N and M will not exceed 2^32 - 1.
9742 The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
9743
d2415c6c
DE
9744 Given a 64-bit compilation unit signature or a type signature S, an entry
9745 in the hash table is located as follows:
80626a55 9746
d2415c6c
DE
9747 1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
9748 the low-order k bits all set to 1.
80626a55 9749
d2415c6c 9750 2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
80626a55 9751
d2415c6c
DE
9752 3) If the hash table entry at index H matches the signature, use that
9753 entry. If the hash table entry at index H is unused (all zeroes),
9754 terminate the search: the signature is not present in the table.
80626a55 9755
d2415c6c 9756 4) Let H = (H + H') modulo M. Repeat at Step 3.
80626a55 9757
d2415c6c 9758 Because M > N and H' and M are relatively prime, the search is guaranteed
73869dc2 9759 to stop at an unused slot or find the match. */
80626a55
DE
9760
9761/* Create a hash table to map DWO IDs to their CU/TU entry in
9762 .debug_{info,types}.dwo in DWP_FILE.
9763 Returns NULL if there isn't one.
9764 Note: This function processes DWP files only, not DWO files. */
9765
9766static struct dwp_hash_table *
9767create_dwp_hash_table (struct dwp_file *dwp_file, int is_debug_types)
9768{
9769 struct objfile *objfile = dwarf2_per_objfile->objfile;
9770 bfd *dbfd = dwp_file->dbfd;
948f8e3d 9771 const gdb_byte *index_ptr, *index_end;
80626a55 9772 struct dwarf2_section_info *index;
73869dc2 9773 uint32_t version, nr_columns, nr_units, nr_slots;
80626a55
DE
9774 struct dwp_hash_table *htab;
9775
9776 if (is_debug_types)
9777 index = &dwp_file->sections.tu_index;
9778 else
9779 index = &dwp_file->sections.cu_index;
9780
9781 if (dwarf2_section_empty_p (index))
9782 return NULL;
9783 dwarf2_read_section (objfile, index);
9784
9785 index_ptr = index->buffer;
9786 index_end = index_ptr + index->size;
9787
9788 version = read_4_bytes (dbfd, index_ptr);
73869dc2
DE
9789 index_ptr += 4;
9790 if (version == 2)
9791 nr_columns = read_4_bytes (dbfd, index_ptr);
9792 else
9793 nr_columns = 0;
9794 index_ptr += 4;
80626a55
DE
9795 nr_units = read_4_bytes (dbfd, index_ptr);
9796 index_ptr += 4;
9797 nr_slots = read_4_bytes (dbfd, index_ptr);
9798 index_ptr += 4;
9799
73869dc2 9800 if (version != 1 && version != 2)
80626a55 9801 {
21aa081e 9802 error (_("Dwarf Error: unsupported DWP file version (%s)"
80626a55 9803 " [in module %s]"),
21aa081e 9804 pulongest (version), dwp_file->name);
80626a55
DE
9805 }
9806 if (nr_slots != (nr_slots & -nr_slots))
9807 {
21aa081e 9808 error (_("Dwarf Error: number of slots in DWP hash table (%s)"
80626a55 9809 " is not power of 2 [in module %s]"),
21aa081e 9810 pulongest (nr_slots), dwp_file->name);
80626a55
DE
9811 }
9812
9813 htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
73869dc2
DE
9814 htab->version = version;
9815 htab->nr_columns = nr_columns;
80626a55
DE
9816 htab->nr_units = nr_units;
9817 htab->nr_slots = nr_slots;
9818 htab->hash_table = index_ptr;
9819 htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
73869dc2
DE
9820
9821 /* Exit early if the table is empty. */
9822 if (nr_slots == 0 || nr_units == 0
9823 || (version == 2 && nr_columns == 0))
9824 {
9825 /* All must be zero. */
9826 if (nr_slots != 0 || nr_units != 0
9827 || (version == 2 && nr_columns != 0))
9828 {
9829 complaint (&symfile_complaints,
9830 _("Empty DWP but nr_slots,nr_units,nr_columns not"
9831 " all zero [in modules %s]"),
9832 dwp_file->name);
9833 }
9834 return htab;
9835 }
9836
9837 if (version == 1)
9838 {
9839 htab->section_pool.v1.indices =
9840 htab->unit_table + sizeof (uint32_t) * nr_slots;
9841 /* It's harder to decide whether the section is too small in v1.
9842 V1 is deprecated anyway so we punt. */
9843 }
9844 else
9845 {
9846 const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
9847 int *ids = htab->section_pool.v2.section_ids;
9848 /* Reverse map for error checking. */
9849 int ids_seen[DW_SECT_MAX + 1];
9850 int i;
9851
9852 if (nr_columns < 2)
9853 {
9854 error (_("Dwarf Error: bad DWP hash table, too few columns"
9855 " in section table [in module %s]"),
9856 dwp_file->name);
9857 }
9858 if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
9859 {
9860 error (_("Dwarf Error: bad DWP hash table, too many columns"
9861 " in section table [in module %s]"),
9862 dwp_file->name);
9863 }
9864 memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9865 memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9866 for (i = 0; i < nr_columns; ++i)
9867 {
9868 int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
9869
9870 if (id < DW_SECT_MIN || id > DW_SECT_MAX)
9871 {
9872 error (_("Dwarf Error: bad DWP hash table, bad section id %d"
9873 " in section table [in module %s]"),
9874 id, dwp_file->name);
9875 }
9876 if (ids_seen[id] != -1)
9877 {
9878 error (_("Dwarf Error: bad DWP hash table, duplicate section"
9879 " id %d in section table [in module %s]"),
9880 id, dwp_file->name);
9881 }
9882 ids_seen[id] = i;
9883 ids[i] = id;
9884 }
9885 /* Must have exactly one info or types section. */
9886 if (((ids_seen[DW_SECT_INFO] != -1)
9887 + (ids_seen[DW_SECT_TYPES] != -1))
9888 != 1)
9889 {
9890 error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
9891 " DWO info/types section [in module %s]"),
9892 dwp_file->name);
9893 }
9894 /* Must have an abbrev section. */
9895 if (ids_seen[DW_SECT_ABBREV] == -1)
9896 {
9897 error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
9898 " section [in module %s]"),
9899 dwp_file->name);
9900 }
9901 htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
9902 htab->section_pool.v2.sizes =
9903 htab->section_pool.v2.offsets + (sizeof (uint32_t)
9904 * nr_units * nr_columns);
9905 if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
9906 * nr_units * nr_columns))
9907 > index_end)
9908 {
9909 error (_("Dwarf Error: DWP index section is corrupt (too small)"
9910 " [in module %s]"),
9911 dwp_file->name);
9912 }
9913 }
80626a55
DE
9914
9915 return htab;
9916}
9917
9918/* Update SECTIONS with the data from SECTP.
9919
9920 This function is like the other "locate" section routines that are
9921 passed to bfd_map_over_sections, but in this context the sections to
73869dc2 9922 read comes from the DWP V1 hash table, not the full ELF section table.
80626a55
DE
9923
9924 The result is non-zero for success, or zero if an error was found. */
9925
9926static int
73869dc2
DE
9927locate_v1_virtual_dwo_sections (asection *sectp,
9928 struct virtual_v1_dwo_sections *sections)
80626a55
DE
9929{
9930 const struct dwop_section_names *names = &dwop_section_names;
9931
9932 if (section_is_p (sectp->name, &names->abbrev_dwo))
9933 {
9934 /* There can be only one. */
049412e3 9935 if (sections->abbrev.s.section != NULL)
80626a55 9936 return 0;
049412e3 9937 sections->abbrev.s.section = sectp;
80626a55
DE
9938 sections->abbrev.size = bfd_get_section_size (sectp);
9939 }
9940 else if (section_is_p (sectp->name, &names->info_dwo)
9941 || section_is_p (sectp->name, &names->types_dwo))
9942 {
9943 /* There can be only one. */
049412e3 9944 if (sections->info_or_types.s.section != NULL)
80626a55 9945 return 0;
049412e3 9946 sections->info_or_types.s.section = sectp;
80626a55
DE
9947 sections->info_or_types.size = bfd_get_section_size (sectp);
9948 }
9949 else if (section_is_p (sectp->name, &names->line_dwo))
9950 {
9951 /* There can be only one. */
049412e3 9952 if (sections->line.s.section != NULL)
80626a55 9953 return 0;
049412e3 9954 sections->line.s.section = sectp;
80626a55
DE
9955 sections->line.size = bfd_get_section_size (sectp);
9956 }
9957 else if (section_is_p (sectp->name, &names->loc_dwo))
9958 {
9959 /* There can be only one. */
049412e3 9960 if (sections->loc.s.section != NULL)
80626a55 9961 return 0;
049412e3 9962 sections->loc.s.section = sectp;
80626a55
DE
9963 sections->loc.size = bfd_get_section_size (sectp);
9964 }
9965 else if (section_is_p (sectp->name, &names->macinfo_dwo))
9966 {
9967 /* There can be only one. */
049412e3 9968 if (sections->macinfo.s.section != NULL)
80626a55 9969 return 0;
049412e3 9970 sections->macinfo.s.section = sectp;
80626a55
DE
9971 sections->macinfo.size = bfd_get_section_size (sectp);
9972 }
9973 else if (section_is_p (sectp->name, &names->macro_dwo))
9974 {
9975 /* There can be only one. */
049412e3 9976 if (sections->macro.s.section != NULL)
80626a55 9977 return 0;
049412e3 9978 sections->macro.s.section = sectp;
80626a55
DE
9979 sections->macro.size = bfd_get_section_size (sectp);
9980 }
9981 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
9982 {
9983 /* There can be only one. */
049412e3 9984 if (sections->str_offsets.s.section != NULL)
80626a55 9985 return 0;
049412e3 9986 sections->str_offsets.s.section = sectp;
80626a55
DE
9987 sections->str_offsets.size = bfd_get_section_size (sectp);
9988 }
9989 else
9990 {
9991 /* No other kind of section is valid. */
9992 return 0;
9993 }
9994
9995 return 1;
9996}
9997
73869dc2
DE
9998/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
9999 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
10000 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
10001 This is for DWP version 1 files. */
80626a55
DE
10002
10003static struct dwo_unit *
73869dc2
DE
10004create_dwo_unit_in_dwp_v1 (struct dwp_file *dwp_file,
10005 uint32_t unit_index,
10006 const char *comp_dir,
10007 ULONGEST signature, int is_debug_types)
80626a55
DE
10008{
10009 struct objfile *objfile = dwarf2_per_objfile->objfile;
73869dc2
DE
10010 const struct dwp_hash_table *dwp_htab =
10011 is_debug_types ? dwp_file->tus : dwp_file->cus;
80626a55
DE
10012 bfd *dbfd = dwp_file->dbfd;
10013 const char *kind = is_debug_types ? "TU" : "CU";
10014 struct dwo_file *dwo_file;
10015 struct dwo_unit *dwo_unit;
73869dc2 10016 struct virtual_v1_dwo_sections sections;
80626a55
DE
10017 void **dwo_file_slot;
10018 char *virtual_dwo_name;
80626a55
DE
10019 struct cleanup *cleanups;
10020 int i;
10021
73869dc2
DE
10022 gdb_assert (dwp_file->version == 1);
10023
b4f54984 10024 if (dwarf_read_debug)
80626a55 10025 {
73869dc2 10026 fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
80626a55 10027 kind,
73869dc2 10028 pulongest (unit_index), hex_string (signature),
80626a55
DE
10029 dwp_file->name);
10030 }
10031
19ac8c2e 10032 /* Fetch the sections of this DWO unit.
80626a55
DE
10033 Put a limit on the number of sections we look for so that bad data
10034 doesn't cause us to loop forever. */
10035
73869dc2 10036#define MAX_NR_V1_DWO_SECTIONS \
80626a55
DE
10037 (1 /* .debug_info or .debug_types */ \
10038 + 1 /* .debug_abbrev */ \
10039 + 1 /* .debug_line */ \
10040 + 1 /* .debug_loc */ \
10041 + 1 /* .debug_str_offsets */ \
19ac8c2e 10042 + 1 /* .debug_macro or .debug_macinfo */ \
80626a55
DE
10043 + 1 /* trailing zero */)
10044
10045 memset (&sections, 0, sizeof (sections));
10046 cleanups = make_cleanup (null_cleanup, 0);
10047
73869dc2 10048 for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
80626a55
DE
10049 {
10050 asection *sectp;
10051 uint32_t section_nr =
10052 read_4_bytes (dbfd,
73869dc2
DE
10053 dwp_htab->section_pool.v1.indices
10054 + (unit_index + i) * sizeof (uint32_t));
80626a55
DE
10055
10056 if (section_nr == 0)
10057 break;
10058 if (section_nr >= dwp_file->num_sections)
10059 {
10060 error (_("Dwarf Error: bad DWP hash table, section number too large"
10061 " [in module %s]"),
10062 dwp_file->name);
10063 }
10064
10065 sectp = dwp_file->elf_sections[section_nr];
73869dc2 10066 if (! locate_v1_virtual_dwo_sections (sectp, &sections))
80626a55
DE
10067 {
10068 error (_("Dwarf Error: bad DWP hash table, invalid section found"
10069 " [in module %s]"),
10070 dwp_file->name);
10071 }
10072 }
10073
10074 if (i < 2
a32a8923
DE
10075 || dwarf2_section_empty_p (&sections.info_or_types)
10076 || dwarf2_section_empty_p (&sections.abbrev))
80626a55
DE
10077 {
10078 error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
10079 " [in module %s]"),
10080 dwp_file->name);
10081 }
73869dc2 10082 if (i == MAX_NR_V1_DWO_SECTIONS)
80626a55
DE
10083 {
10084 error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
10085 " [in module %s]"),
10086 dwp_file->name);
10087 }
10088
10089 /* It's easier for the rest of the code if we fake a struct dwo_file and
10090 have dwo_unit "live" in that. At least for now.
10091
10092 The DWP file can be made up of a random collection of CUs and TUs.
c766f7ec 10093 However, for each CU + set of TUs that came from the same original DWO
57d63ce2
DE
10094 file, we can combine them back into a virtual DWO file to save space
10095 (fewer struct dwo_file objects to allocate). Remember that for really
80626a55
DE
10096 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
10097
2792b94d
PM
10098 virtual_dwo_name =
10099 xstrprintf ("virtual-dwo/%d-%d-%d-%d",
a32a8923
DE
10100 get_section_id (&sections.abbrev),
10101 get_section_id (&sections.line),
10102 get_section_id (&sections.loc),
10103 get_section_id (&sections.str_offsets));
80626a55
DE
10104 make_cleanup (xfree, virtual_dwo_name);
10105 /* Can we use an existing virtual DWO file? */
0ac5b59e 10106 dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
80626a55
DE
10107 /* Create one if necessary. */
10108 if (*dwo_file_slot == NULL)
10109 {
b4f54984 10110 if (dwarf_read_debug)
80626a55
DE
10111 {
10112 fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
10113 virtual_dwo_name);
10114 }
10115 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
224c3ddb
SM
10116 dwo_file->dwo_name
10117 = (const char *) obstack_copy0 (&objfile->objfile_obstack,
10118 virtual_dwo_name,
10119 strlen (virtual_dwo_name));
0ac5b59e 10120 dwo_file->comp_dir = comp_dir;
80626a55
DE
10121 dwo_file->sections.abbrev = sections.abbrev;
10122 dwo_file->sections.line = sections.line;
10123 dwo_file->sections.loc = sections.loc;
10124 dwo_file->sections.macinfo = sections.macinfo;
10125 dwo_file->sections.macro = sections.macro;
10126 dwo_file->sections.str_offsets = sections.str_offsets;
10127 /* The "str" section is global to the entire DWP file. */
10128 dwo_file->sections.str = dwp_file->sections.str;
57d63ce2 10129 /* The info or types section is assigned below to dwo_unit,
80626a55
DE
10130 there's no need to record it in dwo_file.
10131 Also, we can't simply record type sections in dwo_file because
10132 we record a pointer into the vector in dwo_unit. As we collect more
10133 types we'll grow the vector and eventually have to reallocate space
57d63ce2
DE
10134 for it, invalidating all copies of pointers into the previous
10135 contents. */
80626a55
DE
10136 *dwo_file_slot = dwo_file;
10137 }
10138 else
10139 {
b4f54984 10140 if (dwarf_read_debug)
80626a55
DE
10141 {
10142 fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10143 virtual_dwo_name);
10144 }
9a3c8263 10145 dwo_file = (struct dwo_file *) *dwo_file_slot;
80626a55
DE
10146 }
10147 do_cleanups (cleanups);
10148
10149 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10150 dwo_unit->dwo_file = dwo_file;
10151 dwo_unit->signature = signature;
8d749320
SM
10152 dwo_unit->section =
10153 XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
8a0459fd 10154 *dwo_unit->section = sections.info_or_types;
57d63ce2 10155 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
80626a55
DE
10156
10157 return dwo_unit;
10158}
10159
73869dc2
DE
10160/* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
10161 Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
10162 piece within that section used by a TU/CU, return a virtual section
10163 of just that piece. */
10164
10165static struct dwarf2_section_info
10166create_dwp_v2_section (struct dwarf2_section_info *section,
10167 bfd_size_type offset, bfd_size_type size)
10168{
10169 struct dwarf2_section_info result;
10170 asection *sectp;
10171
10172 gdb_assert (section != NULL);
10173 gdb_assert (!section->is_virtual);
10174
10175 memset (&result, 0, sizeof (result));
10176 result.s.containing_section = section;
10177 result.is_virtual = 1;
10178
10179 if (size == 0)
10180 return result;
10181
10182 sectp = get_section_bfd_section (section);
10183
10184 /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
10185 bounds of the real section. This is a pretty-rare event, so just
10186 flag an error (easier) instead of a warning and trying to cope. */
10187 if (sectp == NULL
10188 || offset + size > bfd_get_section_size (sectp))
10189 {
10190 bfd *abfd = sectp->owner;
10191
10192 error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
10193 " in section %s [in module %s]"),
10194 sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
10195 objfile_name (dwarf2_per_objfile->objfile));
10196 }
10197
10198 result.virtual_offset = offset;
10199 result.size = size;
10200 return result;
10201}
10202
10203/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
10204 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
10205 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
10206 This is for DWP version 2 files. */
10207
10208static struct dwo_unit *
10209create_dwo_unit_in_dwp_v2 (struct dwp_file *dwp_file,
10210 uint32_t unit_index,
10211 const char *comp_dir,
10212 ULONGEST signature, int is_debug_types)
10213{
10214 struct objfile *objfile = dwarf2_per_objfile->objfile;
10215 const struct dwp_hash_table *dwp_htab =
10216 is_debug_types ? dwp_file->tus : dwp_file->cus;
10217 bfd *dbfd = dwp_file->dbfd;
10218 const char *kind = is_debug_types ? "TU" : "CU";
10219 struct dwo_file *dwo_file;
10220 struct dwo_unit *dwo_unit;
10221 struct virtual_v2_dwo_sections sections;
10222 void **dwo_file_slot;
10223 char *virtual_dwo_name;
73869dc2
DE
10224 struct cleanup *cleanups;
10225 int i;
10226
10227 gdb_assert (dwp_file->version == 2);
10228
b4f54984 10229 if (dwarf_read_debug)
73869dc2
DE
10230 {
10231 fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
10232 kind,
10233 pulongest (unit_index), hex_string (signature),
10234 dwp_file->name);
10235 }
10236
10237 /* Fetch the section offsets of this DWO unit. */
10238
10239 memset (&sections, 0, sizeof (sections));
10240 cleanups = make_cleanup (null_cleanup, 0);
10241
10242 for (i = 0; i < dwp_htab->nr_columns; ++i)
10243 {
10244 uint32_t offset = read_4_bytes (dbfd,
10245 dwp_htab->section_pool.v2.offsets
10246 + (((unit_index - 1) * dwp_htab->nr_columns
10247 + i)
10248 * sizeof (uint32_t)));
10249 uint32_t size = read_4_bytes (dbfd,
10250 dwp_htab->section_pool.v2.sizes
10251 + (((unit_index - 1) * dwp_htab->nr_columns
10252 + i)
10253 * sizeof (uint32_t)));
10254
10255 switch (dwp_htab->section_pool.v2.section_ids[i])
10256 {
10257 case DW_SECT_INFO:
10258 case DW_SECT_TYPES:
10259 sections.info_or_types_offset = offset;
10260 sections.info_or_types_size = size;
10261 break;
10262 case DW_SECT_ABBREV:
10263 sections.abbrev_offset = offset;
10264 sections.abbrev_size = size;
10265 break;
10266 case DW_SECT_LINE:
10267 sections.line_offset = offset;
10268 sections.line_size = size;
10269 break;
10270 case DW_SECT_LOC:
10271 sections.loc_offset = offset;
10272 sections.loc_size = size;
10273 break;
10274 case DW_SECT_STR_OFFSETS:
10275 sections.str_offsets_offset = offset;
10276 sections.str_offsets_size = size;
10277 break;
10278 case DW_SECT_MACINFO:
10279 sections.macinfo_offset = offset;
10280 sections.macinfo_size = size;
10281 break;
10282 case DW_SECT_MACRO:
10283 sections.macro_offset = offset;
10284 sections.macro_size = size;
10285 break;
10286 }
10287 }
10288
10289 /* It's easier for the rest of the code if we fake a struct dwo_file and
10290 have dwo_unit "live" in that. At least for now.
10291
10292 The DWP file can be made up of a random collection of CUs and TUs.
10293 However, for each CU + set of TUs that came from the same original DWO
10294 file, we can combine them back into a virtual DWO file to save space
10295 (fewer struct dwo_file objects to allocate). Remember that for really
10296 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
10297
10298 virtual_dwo_name =
10299 xstrprintf ("virtual-dwo/%ld-%ld-%ld-%ld",
10300 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
10301 (long) (sections.line_size ? sections.line_offset : 0),
10302 (long) (sections.loc_size ? sections.loc_offset : 0),
10303 (long) (sections.str_offsets_size
10304 ? sections.str_offsets_offset : 0));
10305 make_cleanup (xfree, virtual_dwo_name);
10306 /* Can we use an existing virtual DWO file? */
10307 dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
10308 /* Create one if necessary. */
10309 if (*dwo_file_slot == NULL)
10310 {
b4f54984 10311 if (dwarf_read_debug)
73869dc2
DE
10312 {
10313 fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
10314 virtual_dwo_name);
10315 }
10316 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
224c3ddb
SM
10317 dwo_file->dwo_name
10318 = (const char *) obstack_copy0 (&objfile->objfile_obstack,
10319 virtual_dwo_name,
10320 strlen (virtual_dwo_name));
73869dc2
DE
10321 dwo_file->comp_dir = comp_dir;
10322 dwo_file->sections.abbrev =
10323 create_dwp_v2_section (&dwp_file->sections.abbrev,
10324 sections.abbrev_offset, sections.abbrev_size);
10325 dwo_file->sections.line =
10326 create_dwp_v2_section (&dwp_file->sections.line,
10327 sections.line_offset, sections.line_size);
10328 dwo_file->sections.loc =
10329 create_dwp_v2_section (&dwp_file->sections.loc,
10330 sections.loc_offset, sections.loc_size);
10331 dwo_file->sections.macinfo =
10332 create_dwp_v2_section (&dwp_file->sections.macinfo,
10333 sections.macinfo_offset, sections.macinfo_size);
10334 dwo_file->sections.macro =
10335 create_dwp_v2_section (&dwp_file->sections.macro,
10336 sections.macro_offset, sections.macro_size);
10337 dwo_file->sections.str_offsets =
10338 create_dwp_v2_section (&dwp_file->sections.str_offsets,
10339 sections.str_offsets_offset,
10340 sections.str_offsets_size);
10341 /* The "str" section is global to the entire DWP file. */
10342 dwo_file->sections.str = dwp_file->sections.str;
10343 /* The info or types section is assigned below to dwo_unit,
10344 there's no need to record it in dwo_file.
10345 Also, we can't simply record type sections in dwo_file because
10346 we record a pointer into the vector in dwo_unit. As we collect more
10347 types we'll grow the vector and eventually have to reallocate space
10348 for it, invalidating all copies of pointers into the previous
10349 contents. */
10350 *dwo_file_slot = dwo_file;
10351 }
10352 else
10353 {
b4f54984 10354 if (dwarf_read_debug)
73869dc2
DE
10355 {
10356 fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10357 virtual_dwo_name);
10358 }
9a3c8263 10359 dwo_file = (struct dwo_file *) *dwo_file_slot;
73869dc2
DE
10360 }
10361 do_cleanups (cleanups);
10362
10363 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10364 dwo_unit->dwo_file = dwo_file;
10365 dwo_unit->signature = signature;
8d749320
SM
10366 dwo_unit->section =
10367 XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
73869dc2
DE
10368 *dwo_unit->section = create_dwp_v2_section (is_debug_types
10369 ? &dwp_file->sections.types
10370 : &dwp_file->sections.info,
10371 sections.info_or_types_offset,
10372 sections.info_or_types_size);
10373 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
10374
10375 return dwo_unit;
10376}
10377
57d63ce2
DE
10378/* Lookup the DWO unit with SIGNATURE in DWP_FILE.
10379 Returns NULL if the signature isn't found. */
80626a55
DE
10380
10381static struct dwo_unit *
57d63ce2
DE
10382lookup_dwo_unit_in_dwp (struct dwp_file *dwp_file, const char *comp_dir,
10383 ULONGEST signature, int is_debug_types)
80626a55 10384{
57d63ce2
DE
10385 const struct dwp_hash_table *dwp_htab =
10386 is_debug_types ? dwp_file->tus : dwp_file->cus;
80626a55 10387 bfd *dbfd = dwp_file->dbfd;
57d63ce2 10388 uint32_t mask = dwp_htab->nr_slots - 1;
80626a55
DE
10389 uint32_t hash = signature & mask;
10390 uint32_t hash2 = ((signature >> 32) & mask) | 1;
10391 unsigned int i;
10392 void **slot;
870f88f7 10393 struct dwo_unit find_dwo_cu;
80626a55
DE
10394
10395 memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
10396 find_dwo_cu.signature = signature;
19ac8c2e
DE
10397 slot = htab_find_slot (is_debug_types
10398 ? dwp_file->loaded_tus
10399 : dwp_file->loaded_cus,
10400 &find_dwo_cu, INSERT);
80626a55
DE
10401
10402 if (*slot != NULL)
9a3c8263 10403 return (struct dwo_unit *) *slot;
80626a55
DE
10404
10405 /* Use a for loop so that we don't loop forever on bad debug info. */
57d63ce2 10406 for (i = 0; i < dwp_htab->nr_slots; ++i)
80626a55
DE
10407 {
10408 ULONGEST signature_in_table;
10409
10410 signature_in_table =
57d63ce2 10411 read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
80626a55
DE
10412 if (signature_in_table == signature)
10413 {
57d63ce2
DE
10414 uint32_t unit_index =
10415 read_4_bytes (dbfd,
10416 dwp_htab->unit_table + hash * sizeof (uint32_t));
80626a55 10417
73869dc2
DE
10418 if (dwp_file->version == 1)
10419 {
10420 *slot = create_dwo_unit_in_dwp_v1 (dwp_file, unit_index,
10421 comp_dir, signature,
10422 is_debug_types);
10423 }
10424 else
10425 {
10426 *slot = create_dwo_unit_in_dwp_v2 (dwp_file, unit_index,
10427 comp_dir, signature,
10428 is_debug_types);
10429 }
9a3c8263 10430 return (struct dwo_unit *) *slot;
80626a55
DE
10431 }
10432 if (signature_in_table == 0)
10433 return NULL;
10434 hash = (hash + hash2) & mask;
10435 }
10436
10437 error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
10438 " [in module %s]"),
10439 dwp_file->name);
10440}
10441
ab5088bf 10442/* Subroutine of open_dwo_file,open_dwp_file to simplify them.
3019eac3
DE
10443 Open the file specified by FILE_NAME and hand it off to BFD for
10444 preliminary analysis. Return a newly initialized bfd *, which
10445 includes a canonicalized copy of FILE_NAME.
80626a55 10446 If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
6ac97d4c
DE
10447 SEARCH_CWD is true if the current directory is to be searched.
10448 It will be searched before debug-file-directory.
13aaf454
DE
10449 If successful, the file is added to the bfd include table of the
10450 objfile's bfd (see gdb_bfd_record_inclusion).
6ac97d4c 10451 If unable to find/open the file, return NULL.
3019eac3
DE
10452 NOTE: This function is derived from symfile_bfd_open. */
10453
192b62ce 10454static gdb_bfd_ref_ptr
6ac97d4c 10455try_open_dwop_file (const char *file_name, int is_dwp, int search_cwd)
3019eac3 10456{
80626a55 10457 int desc, flags;
3019eac3 10458 char *absolute_name;
9c02c129
DE
10459 /* Blech. OPF_TRY_CWD_FIRST also disables searching the path list if
10460 FILE_NAME contains a '/'. So we can't use it. Instead prepend "."
10461 to debug_file_directory. */
10462 char *search_path;
10463 static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
10464
6ac97d4c
DE
10465 if (search_cwd)
10466 {
10467 if (*debug_file_directory != '\0')
10468 search_path = concat (".", dirname_separator_string,
b36cec19 10469 debug_file_directory, (char *) NULL);
6ac97d4c
DE
10470 else
10471 search_path = xstrdup (".");
10472 }
9c02c129 10473 else
6ac97d4c 10474 search_path = xstrdup (debug_file_directory);
3019eac3 10475
492c0ab7 10476 flags = OPF_RETURN_REALPATH;
80626a55
DE
10477 if (is_dwp)
10478 flags |= OPF_SEARCH_IN_PATH;
9c02c129 10479 desc = openp (search_path, flags, file_name,
3019eac3 10480 O_RDONLY | O_BINARY, &absolute_name);
9c02c129 10481 xfree (search_path);
3019eac3
DE
10482 if (desc < 0)
10483 return NULL;
10484
192b62ce 10485 gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name, gnutarget, desc));
a4453b7e 10486 xfree (absolute_name);
9c02c129
DE
10487 if (sym_bfd == NULL)
10488 return NULL;
192b62ce 10489 bfd_set_cacheable (sym_bfd.get (), 1);
3019eac3 10490
192b62ce
TT
10491 if (!bfd_check_format (sym_bfd.get (), bfd_object))
10492 return NULL;
3019eac3 10493
13aaf454
DE
10494 /* Success. Record the bfd as having been included by the objfile's bfd.
10495 This is important because things like demangled_names_hash lives in the
10496 objfile's per_bfd space and may have references to things like symbol
10497 names that live in the DWO/DWP file's per_bfd space. PR 16426. */
192b62ce 10498 gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
13aaf454 10499
3019eac3
DE
10500 return sym_bfd;
10501}
10502
ab5088bf 10503/* Try to open DWO file FILE_NAME.
3019eac3
DE
10504 COMP_DIR is the DW_AT_comp_dir attribute.
10505 The result is the bfd handle of the file.
10506 If there is a problem finding or opening the file, return NULL.
10507 Upon success, the canonicalized path of the file is stored in the bfd,
10508 same as symfile_bfd_open. */
10509
192b62ce 10510static gdb_bfd_ref_ptr
ab5088bf 10511open_dwo_file (const char *file_name, const char *comp_dir)
3019eac3 10512{
80626a55 10513 if (IS_ABSOLUTE_PATH (file_name))
6ac97d4c 10514 return try_open_dwop_file (file_name, 0 /*is_dwp*/, 0 /*search_cwd*/);
3019eac3
DE
10515
10516 /* Before trying the search path, try DWO_NAME in COMP_DIR. */
10517
10518 if (comp_dir != NULL)
10519 {
b36cec19
PA
10520 char *path_to_try = concat (comp_dir, SLASH_STRING,
10521 file_name, (char *) NULL);
3019eac3
DE
10522
10523 /* NOTE: If comp_dir is a relative path, this will also try the
10524 search path, which seems useful. */
192b62ce
TT
10525 gdb_bfd_ref_ptr abfd (try_open_dwop_file (path_to_try, 0 /*is_dwp*/,
10526 1 /*search_cwd*/));
3019eac3
DE
10527 xfree (path_to_try);
10528 if (abfd != NULL)
10529 return abfd;
10530 }
10531
10532 /* That didn't work, try debug-file-directory, which, despite its name,
10533 is a list of paths. */
10534
10535 if (*debug_file_directory == '\0')
10536 return NULL;
10537
6ac97d4c 10538 return try_open_dwop_file (file_name, 0 /*is_dwp*/, 1 /*search_cwd*/);
3019eac3
DE
10539}
10540
80626a55
DE
10541/* This function is mapped across the sections and remembers the offset and
10542 size of each of the DWO debugging sections we are interested in. */
10543
10544static void
10545dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
10546{
9a3c8263 10547 struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
80626a55
DE
10548 const struct dwop_section_names *names = &dwop_section_names;
10549
10550 if (section_is_p (sectp->name, &names->abbrev_dwo))
10551 {
049412e3 10552 dwo_sections->abbrev.s.section = sectp;
80626a55
DE
10553 dwo_sections->abbrev.size = bfd_get_section_size (sectp);
10554 }
10555 else if (section_is_p (sectp->name, &names->info_dwo))
10556 {
049412e3 10557 dwo_sections->info.s.section = sectp;
80626a55
DE
10558 dwo_sections->info.size = bfd_get_section_size (sectp);
10559 }
10560 else if (section_is_p (sectp->name, &names->line_dwo))
10561 {
049412e3 10562 dwo_sections->line.s.section = sectp;
80626a55
DE
10563 dwo_sections->line.size = bfd_get_section_size (sectp);
10564 }
10565 else if (section_is_p (sectp->name, &names->loc_dwo))
10566 {
049412e3 10567 dwo_sections->loc.s.section = sectp;
80626a55
DE
10568 dwo_sections->loc.size = bfd_get_section_size (sectp);
10569 }
10570 else if (section_is_p (sectp->name, &names->macinfo_dwo))
10571 {
049412e3 10572 dwo_sections->macinfo.s.section = sectp;
80626a55
DE
10573 dwo_sections->macinfo.size = bfd_get_section_size (sectp);
10574 }
10575 else if (section_is_p (sectp->name, &names->macro_dwo))
10576 {
049412e3 10577 dwo_sections->macro.s.section = sectp;
80626a55
DE
10578 dwo_sections->macro.size = bfd_get_section_size (sectp);
10579 }
10580 else if (section_is_p (sectp->name, &names->str_dwo))
10581 {
049412e3 10582 dwo_sections->str.s.section = sectp;
80626a55
DE
10583 dwo_sections->str.size = bfd_get_section_size (sectp);
10584 }
10585 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10586 {
049412e3 10587 dwo_sections->str_offsets.s.section = sectp;
80626a55
DE
10588 dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
10589 }
10590 else if (section_is_p (sectp->name, &names->types_dwo))
10591 {
10592 struct dwarf2_section_info type_section;
10593
10594 memset (&type_section, 0, sizeof (type_section));
049412e3 10595 type_section.s.section = sectp;
80626a55
DE
10596 type_section.size = bfd_get_section_size (sectp);
10597 VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
10598 &type_section);
10599 }
10600}
10601
ab5088bf 10602/* Initialize the use of the DWO file specified by DWO_NAME and referenced
19c3d4c9 10603 by PER_CU. This is for the non-DWP case.
80626a55 10604 The result is NULL if DWO_NAME can't be found. */
3019eac3
DE
10605
10606static struct dwo_file *
0ac5b59e
DE
10607open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
10608 const char *dwo_name, const char *comp_dir)
3019eac3
DE
10609{
10610 struct objfile *objfile = dwarf2_per_objfile->objfile;
80626a55 10611 struct dwo_file *dwo_file;
3019eac3
DE
10612 struct cleanup *cleanups;
10613
192b62ce 10614 gdb_bfd_ref_ptr dbfd (open_dwo_file (dwo_name, comp_dir));
80626a55
DE
10615 if (dbfd == NULL)
10616 {
b4f54984 10617 if (dwarf_read_debug)
80626a55
DE
10618 fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
10619 return NULL;
10620 }
10621 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
0ac5b59e
DE
10622 dwo_file->dwo_name = dwo_name;
10623 dwo_file->comp_dir = comp_dir;
192b62ce 10624 dwo_file->dbfd = dbfd.release ();
3019eac3
DE
10625
10626 cleanups = make_cleanup (free_dwo_file_cleanup, dwo_file);
10627
192b62ce
TT
10628 bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
10629 &dwo_file->sections);
3019eac3 10630
19c3d4c9 10631 dwo_file->cu = create_dwo_cu (dwo_file);
3019eac3
DE
10632
10633 dwo_file->tus = create_debug_types_hash_table (dwo_file,
10634 dwo_file->sections.types);
10635
10636 discard_cleanups (cleanups);
10637
b4f54984 10638 if (dwarf_read_debug)
80626a55
DE
10639 fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
10640
3019eac3
DE
10641 return dwo_file;
10642}
10643
80626a55 10644/* This function is mapped across the sections and remembers the offset and
73869dc2
DE
10645 size of each of the DWP debugging sections common to version 1 and 2 that
10646 we are interested in. */
3019eac3 10647
80626a55 10648static void
73869dc2
DE
10649dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
10650 void *dwp_file_ptr)
3019eac3 10651{
9a3c8263 10652 struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
80626a55
DE
10653 const struct dwop_section_names *names = &dwop_section_names;
10654 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
3019eac3 10655
80626a55 10656 /* Record the ELF section number for later lookup: this is what the
73869dc2 10657 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
80626a55
DE
10658 gdb_assert (elf_section_nr < dwp_file->num_sections);
10659 dwp_file->elf_sections[elf_section_nr] = sectp;
3019eac3 10660
80626a55
DE
10661 /* Look for specific sections that we need. */
10662 if (section_is_p (sectp->name, &names->str_dwo))
10663 {
049412e3 10664 dwp_file->sections.str.s.section = sectp;
80626a55
DE
10665 dwp_file->sections.str.size = bfd_get_section_size (sectp);
10666 }
10667 else if (section_is_p (sectp->name, &names->cu_index))
10668 {
049412e3 10669 dwp_file->sections.cu_index.s.section = sectp;
80626a55
DE
10670 dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
10671 }
10672 else if (section_is_p (sectp->name, &names->tu_index))
10673 {
049412e3 10674 dwp_file->sections.tu_index.s.section = sectp;
80626a55
DE
10675 dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
10676 }
10677}
3019eac3 10678
73869dc2
DE
10679/* This function is mapped across the sections and remembers the offset and
10680 size of each of the DWP version 2 debugging sections that we are interested
10681 in. This is split into a separate function because we don't know if we
10682 have version 1 or 2 until we parse the cu_index/tu_index sections. */
10683
10684static void
10685dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
10686{
9a3c8263 10687 struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
73869dc2
DE
10688 const struct dwop_section_names *names = &dwop_section_names;
10689 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10690
10691 /* Record the ELF section number for later lookup: this is what the
10692 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
10693 gdb_assert (elf_section_nr < dwp_file->num_sections);
10694 dwp_file->elf_sections[elf_section_nr] = sectp;
10695
10696 /* Look for specific sections that we need. */
10697 if (section_is_p (sectp->name, &names->abbrev_dwo))
10698 {
049412e3 10699 dwp_file->sections.abbrev.s.section = sectp;
73869dc2
DE
10700 dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
10701 }
10702 else if (section_is_p (sectp->name, &names->info_dwo))
10703 {
049412e3 10704 dwp_file->sections.info.s.section = sectp;
73869dc2
DE
10705 dwp_file->sections.info.size = bfd_get_section_size (sectp);
10706 }
10707 else if (section_is_p (sectp->name, &names->line_dwo))
10708 {
049412e3 10709 dwp_file->sections.line.s.section = sectp;
73869dc2
DE
10710 dwp_file->sections.line.size = bfd_get_section_size (sectp);
10711 }
10712 else if (section_is_p (sectp->name, &names->loc_dwo))
10713 {
049412e3 10714 dwp_file->sections.loc.s.section = sectp;
73869dc2
DE
10715 dwp_file->sections.loc.size = bfd_get_section_size (sectp);
10716 }
10717 else if (section_is_p (sectp->name, &names->macinfo_dwo))
10718 {
049412e3 10719 dwp_file->sections.macinfo.s.section = sectp;
73869dc2
DE
10720 dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
10721 }
10722 else if (section_is_p (sectp->name, &names->macro_dwo))
10723 {
049412e3 10724 dwp_file->sections.macro.s.section = sectp;
73869dc2
DE
10725 dwp_file->sections.macro.size = bfd_get_section_size (sectp);
10726 }
10727 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10728 {
049412e3 10729 dwp_file->sections.str_offsets.s.section = sectp;
73869dc2
DE
10730 dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
10731 }
10732 else if (section_is_p (sectp->name, &names->types_dwo))
10733 {
049412e3 10734 dwp_file->sections.types.s.section = sectp;
73869dc2
DE
10735 dwp_file->sections.types.size = bfd_get_section_size (sectp);
10736 }
10737}
10738
80626a55 10739/* Hash function for dwp_file loaded CUs/TUs. */
3019eac3 10740
80626a55
DE
10741static hashval_t
10742hash_dwp_loaded_cutus (const void *item)
10743{
9a3c8263 10744 const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
3019eac3 10745
80626a55
DE
10746 /* This drops the top 32 bits of the signature, but is ok for a hash. */
10747 return dwo_unit->signature;
3019eac3
DE
10748}
10749
80626a55 10750/* Equality function for dwp_file loaded CUs/TUs. */
3019eac3 10751
80626a55
DE
10752static int
10753eq_dwp_loaded_cutus (const void *a, const void *b)
3019eac3 10754{
9a3c8263
SM
10755 const struct dwo_unit *dua = (const struct dwo_unit *) a;
10756 const struct dwo_unit *dub = (const struct dwo_unit *) b;
3019eac3 10757
80626a55
DE
10758 return dua->signature == dub->signature;
10759}
3019eac3 10760
80626a55 10761/* Allocate a hash table for dwp_file loaded CUs/TUs. */
3019eac3 10762
80626a55
DE
10763static htab_t
10764allocate_dwp_loaded_cutus_table (struct objfile *objfile)
10765{
10766 return htab_create_alloc_ex (3,
10767 hash_dwp_loaded_cutus,
10768 eq_dwp_loaded_cutus,
10769 NULL,
10770 &objfile->objfile_obstack,
10771 hashtab_obstack_allocate,
10772 dummy_obstack_deallocate);
10773}
3019eac3 10774
ab5088bf
DE
10775/* Try to open DWP file FILE_NAME.
10776 The result is the bfd handle of the file.
10777 If there is a problem finding or opening the file, return NULL.
10778 Upon success, the canonicalized path of the file is stored in the bfd,
10779 same as symfile_bfd_open. */
10780
192b62ce 10781static gdb_bfd_ref_ptr
ab5088bf
DE
10782open_dwp_file (const char *file_name)
10783{
192b62ce
TT
10784 gdb_bfd_ref_ptr abfd (try_open_dwop_file (file_name, 1 /*is_dwp*/,
10785 1 /*search_cwd*/));
6ac97d4c
DE
10786 if (abfd != NULL)
10787 return abfd;
10788
10789 /* Work around upstream bug 15652.
10790 http://sourceware.org/bugzilla/show_bug.cgi?id=15652
10791 [Whether that's a "bug" is debatable, but it is getting in our way.]
10792 We have no real idea where the dwp file is, because gdb's realpath-ing
10793 of the executable's path may have discarded the needed info.
10794 [IWBN if the dwp file name was recorded in the executable, akin to
10795 .gnu_debuglink, but that doesn't exist yet.]
10796 Strip the directory from FILE_NAME and search again. */
10797 if (*debug_file_directory != '\0')
10798 {
10799 /* Don't implicitly search the current directory here.
10800 If the user wants to search "." to handle this case,
10801 it must be added to debug-file-directory. */
10802 return try_open_dwop_file (lbasename (file_name), 1 /*is_dwp*/,
10803 0 /*search_cwd*/);
10804 }
10805
10806 return NULL;
ab5088bf
DE
10807}
10808
80626a55
DE
10809/* Initialize the use of the DWP file for the current objfile.
10810 By convention the name of the DWP file is ${objfile}.dwp.
10811 The result is NULL if it can't be found. */
a766d390 10812
80626a55 10813static struct dwp_file *
ab5088bf 10814open_and_init_dwp_file (void)
80626a55
DE
10815{
10816 struct objfile *objfile = dwarf2_per_objfile->objfile;
10817 struct dwp_file *dwp_file;
10818 char *dwp_name;
6c447423 10819 struct cleanup *cleanups = make_cleanup (null_cleanup, 0);
80626a55 10820
82bf32bc
JK
10821 /* Try to find first .dwp for the binary file before any symbolic links
10822 resolving. */
6c447423
DE
10823
10824 /* If the objfile is a debug file, find the name of the real binary
10825 file and get the name of dwp file from there. */
10826 if (objfile->separate_debug_objfile_backlink != NULL)
10827 {
10828 struct objfile *backlink = objfile->separate_debug_objfile_backlink;
10829 const char *backlink_basename = lbasename (backlink->original_name);
10830 char *debug_dirname = ldirname (objfile->original_name);
10831
10832 make_cleanup (xfree, debug_dirname);
10833 dwp_name = xstrprintf ("%s%s%s.dwp", debug_dirname,
10834 SLASH_STRING, backlink_basename);
10835 }
10836 else
10837 dwp_name = xstrprintf ("%s.dwp", objfile->original_name);
10838 make_cleanup (xfree, dwp_name);
80626a55 10839
192b62ce 10840 gdb_bfd_ref_ptr dbfd (open_dwp_file (dwp_name));
82bf32bc
JK
10841 if (dbfd == NULL
10842 && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
10843 {
10844 /* Try to find .dwp for the binary file after gdb_realpath resolving. */
10845 dwp_name = xstrprintf ("%s.dwp", objfile_name (objfile));
10846 make_cleanup (xfree, dwp_name);
10847 dbfd = open_dwp_file (dwp_name);
10848 }
10849
80626a55
DE
10850 if (dbfd == NULL)
10851 {
b4f54984 10852 if (dwarf_read_debug)
80626a55
DE
10853 fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name);
10854 do_cleanups (cleanups);
10855 return NULL;
3019eac3 10856 }
80626a55 10857 dwp_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_file);
192b62ce
TT
10858 dwp_file->name = bfd_get_filename (dbfd.get ());
10859 dwp_file->dbfd = dbfd.release ();
80626a55 10860 do_cleanups (cleanups);
c906108c 10861
80626a55 10862 /* +1: section 0 is unused */
192b62ce 10863 dwp_file->num_sections = bfd_count_sections (dwp_file->dbfd) + 1;
80626a55
DE
10864 dwp_file->elf_sections =
10865 OBSTACK_CALLOC (&objfile->objfile_obstack,
10866 dwp_file->num_sections, asection *);
10867
192b62ce
TT
10868 bfd_map_over_sections (dwp_file->dbfd, dwarf2_locate_common_dwp_sections,
10869 dwp_file);
80626a55
DE
10870
10871 dwp_file->cus = create_dwp_hash_table (dwp_file, 0);
10872
10873 dwp_file->tus = create_dwp_hash_table (dwp_file, 1);
10874
73869dc2
DE
10875 /* The DWP file version is stored in the hash table. Oh well. */
10876 if (dwp_file->cus->version != dwp_file->tus->version)
10877 {
10878 /* Technically speaking, we should try to limp along, but this is
fbcbc3fd 10879 pretty bizarre. We use pulongest here because that's the established
4d65956b 10880 portability solution (e.g, we cannot use %u for uint32_t). */
fbcbc3fd
DE
10881 error (_("Dwarf Error: DWP file CU version %s doesn't match"
10882 " TU version %s [in DWP file %s]"),
10883 pulongest (dwp_file->cus->version),
10884 pulongest (dwp_file->tus->version), dwp_name);
73869dc2
DE
10885 }
10886 dwp_file->version = dwp_file->cus->version;
10887
10888 if (dwp_file->version == 2)
192b62ce
TT
10889 bfd_map_over_sections (dwp_file->dbfd, dwarf2_locate_v2_dwp_sections,
10890 dwp_file);
73869dc2 10891
19ac8c2e
DE
10892 dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
10893 dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
80626a55 10894
b4f54984 10895 if (dwarf_read_debug)
80626a55
DE
10896 {
10897 fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
10898 fprintf_unfiltered (gdb_stdlog,
21aa081e
PA
10899 " %s CUs, %s TUs\n",
10900 pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
10901 pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
80626a55
DE
10902 }
10903
10904 return dwp_file;
3019eac3 10905}
c906108c 10906
ab5088bf
DE
10907/* Wrapper around open_and_init_dwp_file, only open it once. */
10908
10909static struct dwp_file *
10910get_dwp_file (void)
10911{
10912 if (! dwarf2_per_objfile->dwp_checked)
10913 {
10914 dwarf2_per_objfile->dwp_file = open_and_init_dwp_file ();
10915 dwarf2_per_objfile->dwp_checked = 1;
10916 }
10917 return dwarf2_per_objfile->dwp_file;
10918}
10919
80626a55
DE
10920/* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
10921 Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
10922 or in the DWP file for the objfile, referenced by THIS_UNIT.
3019eac3 10923 If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
80626a55
DE
10924 IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
10925
10926 This is called, for example, when wanting to read a variable with a
10927 complex location. Therefore we don't want to do file i/o for every call.
10928 Therefore we don't want to look for a DWO file on every call.
10929 Therefore we first see if we've already seen SIGNATURE in a DWP file,
10930 then we check if we've already seen DWO_NAME, and only THEN do we check
10931 for a DWO file.
10932
1c658ad5 10933 The result is a pointer to the dwo_unit object or NULL if we didn't find it
80626a55 10934 (dwo_id mismatch or couldn't find the DWO/DWP file). */
debd256d 10935
3019eac3 10936static struct dwo_unit *
80626a55
DE
10937lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
10938 const char *dwo_name, const char *comp_dir,
10939 ULONGEST signature, int is_debug_types)
3019eac3
DE
10940{
10941 struct objfile *objfile = dwarf2_per_objfile->objfile;
80626a55
DE
10942 const char *kind = is_debug_types ? "TU" : "CU";
10943 void **dwo_file_slot;
3019eac3 10944 struct dwo_file *dwo_file;
80626a55 10945 struct dwp_file *dwp_file;
cb1df416 10946
6a506a2d
DE
10947 /* First see if there's a DWP file.
10948 If we have a DWP file but didn't find the DWO inside it, don't
10949 look for the original DWO file. It makes gdb behave differently
10950 depending on whether one is debugging in the build tree. */
cf2c3c16 10951
ab5088bf 10952 dwp_file = get_dwp_file ();
80626a55 10953 if (dwp_file != NULL)
cf2c3c16 10954 {
80626a55
DE
10955 const struct dwp_hash_table *dwp_htab =
10956 is_debug_types ? dwp_file->tus : dwp_file->cus;
10957
10958 if (dwp_htab != NULL)
10959 {
10960 struct dwo_unit *dwo_cutu =
57d63ce2
DE
10961 lookup_dwo_unit_in_dwp (dwp_file, comp_dir,
10962 signature, is_debug_types);
80626a55
DE
10963
10964 if (dwo_cutu != NULL)
10965 {
b4f54984 10966 if (dwarf_read_debug)
80626a55
DE
10967 {
10968 fprintf_unfiltered (gdb_stdlog,
10969 "Virtual DWO %s %s found: @%s\n",
10970 kind, hex_string (signature),
10971 host_address_to_string (dwo_cutu));
10972 }
10973 return dwo_cutu;
10974 }
10975 }
10976 }
6a506a2d 10977 else
80626a55 10978 {
6a506a2d 10979 /* No DWP file, look for the DWO file. */
80626a55 10980
6a506a2d
DE
10981 dwo_file_slot = lookup_dwo_file_slot (dwo_name, comp_dir);
10982 if (*dwo_file_slot == NULL)
80626a55 10983 {
6a506a2d
DE
10984 /* Read in the file and build a table of the CUs/TUs it contains. */
10985 *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
19c3d4c9 10986 }
6a506a2d 10987 /* NOTE: This will be NULL if unable to open the file. */
9a3c8263 10988 dwo_file = (struct dwo_file *) *dwo_file_slot;
3019eac3 10989
6a506a2d 10990 if (dwo_file != NULL)
19c3d4c9 10991 {
6a506a2d
DE
10992 struct dwo_unit *dwo_cutu = NULL;
10993
10994 if (is_debug_types && dwo_file->tus)
10995 {
10996 struct dwo_unit find_dwo_cutu;
10997
10998 memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
10999 find_dwo_cutu.signature = signature;
9a3c8263
SM
11000 dwo_cutu
11001 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
6a506a2d
DE
11002 }
11003 else if (!is_debug_types && dwo_file->cu)
80626a55 11004 {
6a506a2d
DE
11005 if (signature == dwo_file->cu->signature)
11006 dwo_cutu = dwo_file->cu;
11007 }
11008
11009 if (dwo_cutu != NULL)
11010 {
b4f54984 11011 if (dwarf_read_debug)
6a506a2d
DE
11012 {
11013 fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
11014 kind, dwo_name, hex_string (signature),
11015 host_address_to_string (dwo_cutu));
11016 }
11017 return dwo_cutu;
80626a55
DE
11018 }
11019 }
2e276125 11020 }
9cdd5dbd 11021
80626a55
DE
11022 /* We didn't find it. This could mean a dwo_id mismatch, or
11023 someone deleted the DWO/DWP file, or the search path isn't set up
11024 correctly to find the file. */
11025
b4f54984 11026 if (dwarf_read_debug)
80626a55
DE
11027 {
11028 fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
11029 kind, dwo_name, hex_string (signature));
11030 }
3019eac3 11031
6656a72d
DE
11032 /* This is a warning and not a complaint because it can be caused by
11033 pilot error (e.g., user accidentally deleting the DWO). */
43942612
DE
11034 {
11035 /* Print the name of the DWP file if we looked there, helps the user
11036 better diagnose the problem. */
11037 char *dwp_text = NULL;
11038 struct cleanup *cleanups;
11039
11040 if (dwp_file != NULL)
11041 dwp_text = xstrprintf (" [in DWP file %s]", lbasename (dwp_file->name));
11042 cleanups = make_cleanup (xfree, dwp_text);
11043
11044 warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset 0x%x"
11045 " [in module %s]"),
11046 kind, dwo_name, hex_string (signature),
11047 dwp_text != NULL ? dwp_text : "",
11048 this_unit->is_debug_types ? "TU" : "CU",
11049 this_unit->offset.sect_off, objfile_name (objfile));
11050
11051 do_cleanups (cleanups);
11052 }
3019eac3 11053 return NULL;
5fb290d7
DJ
11054}
11055
80626a55
DE
11056/* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
11057 See lookup_dwo_cutu_unit for details. */
11058
11059static struct dwo_unit *
11060lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
11061 const char *dwo_name, const char *comp_dir,
11062 ULONGEST signature)
11063{
11064 return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
11065}
11066
11067/* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
11068 See lookup_dwo_cutu_unit for details. */
11069
11070static struct dwo_unit *
11071lookup_dwo_type_unit (struct signatured_type *this_tu,
11072 const char *dwo_name, const char *comp_dir)
11073{
11074 return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
11075}
11076
89e63ee4
DE
11077/* Traversal function for queue_and_load_all_dwo_tus. */
11078
11079static int
11080queue_and_load_dwo_tu (void **slot, void *info)
11081{
11082 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
11083 struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
11084 ULONGEST signature = dwo_unit->signature;
11085 struct signatured_type *sig_type =
11086 lookup_dwo_signatured_type (per_cu->cu, signature);
11087
11088 if (sig_type != NULL)
11089 {
11090 struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
11091
11092 /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
11093 a real dependency of PER_CU on SIG_TYPE. That is detected later
11094 while processing PER_CU. */
11095 if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
11096 load_full_type_unit (sig_cu);
11097 VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
11098 }
11099
11100 return 1;
11101}
11102
11103/* Queue all TUs contained in the DWO of PER_CU to be read in.
11104 The DWO may have the only definition of the type, though it may not be
11105 referenced anywhere in PER_CU. Thus we have to load *all* its TUs.
11106 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
11107
11108static void
11109queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
11110{
11111 struct dwo_unit *dwo_unit;
11112 struct dwo_file *dwo_file;
11113
11114 gdb_assert (!per_cu->is_debug_types);
11115 gdb_assert (get_dwp_file () == NULL);
11116 gdb_assert (per_cu->cu != NULL);
11117
11118 dwo_unit = per_cu->cu->dwo_unit;
11119 gdb_assert (dwo_unit != NULL);
11120
11121 dwo_file = dwo_unit->dwo_file;
11122 if (dwo_file->tus != NULL)
11123 htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
11124}
11125
3019eac3
DE
11126/* Free all resources associated with DWO_FILE.
11127 Close the DWO file and munmap the sections.
11128 All memory should be on the objfile obstack. */
348e048f
DE
11129
11130static void
3019eac3 11131free_dwo_file (struct dwo_file *dwo_file, struct objfile *objfile)
348e048f 11132{
348e048f 11133
5c6fa7ab 11134 /* Note: dbfd is NULL for virtual DWO files. */
80626a55 11135 gdb_bfd_unref (dwo_file->dbfd);
348e048f 11136
3019eac3
DE
11137 VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
11138}
348e048f 11139
3019eac3 11140/* Wrapper for free_dwo_file for use in cleanups. */
348e048f 11141
3019eac3
DE
11142static void
11143free_dwo_file_cleanup (void *arg)
11144{
11145 struct dwo_file *dwo_file = (struct dwo_file *) arg;
11146 struct objfile *objfile = dwarf2_per_objfile->objfile;
348e048f 11147
3019eac3
DE
11148 free_dwo_file (dwo_file, objfile);
11149}
348e048f 11150
3019eac3 11151/* Traversal function for free_dwo_files. */
2ab95328 11152
3019eac3
DE
11153static int
11154free_dwo_file_from_slot (void **slot, void *info)
11155{
11156 struct dwo_file *dwo_file = (struct dwo_file *) *slot;
11157 struct objfile *objfile = (struct objfile *) info;
348e048f 11158
3019eac3 11159 free_dwo_file (dwo_file, objfile);
348e048f 11160
3019eac3
DE
11161 return 1;
11162}
348e048f 11163
3019eac3 11164/* Free all resources associated with DWO_FILES. */
348e048f 11165
3019eac3
DE
11166static void
11167free_dwo_files (htab_t dwo_files, struct objfile *objfile)
11168{
11169 htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
348e048f 11170}
3019eac3
DE
11171\f
11172/* Read in various DIEs. */
348e048f 11173
d389af10
JK
11174/* qsort helper for inherit_abstract_dies. */
11175
11176static int
11177unsigned_int_compar (const void *ap, const void *bp)
11178{
11179 unsigned int a = *(unsigned int *) ap;
11180 unsigned int b = *(unsigned int *) bp;
11181
11182 return (a > b) - (b > a);
11183}
11184
11185/* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
3e43a32a
MS
11186 Inherit only the children of the DW_AT_abstract_origin DIE not being
11187 already referenced by DW_AT_abstract_origin from the children of the
11188 current DIE. */
d389af10
JK
11189
11190static void
11191inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
11192{
11193 struct die_info *child_die;
11194 unsigned die_children_count;
11195 /* CU offsets which were referenced by children of the current DIE. */
b64f50a1
JK
11196 sect_offset *offsets;
11197 sect_offset *offsets_end, *offsetp;
d389af10
JK
11198 /* Parent of DIE - referenced by DW_AT_abstract_origin. */
11199 struct die_info *origin_die;
11200 /* Iterator of the ORIGIN_DIE children. */
11201 struct die_info *origin_child_die;
11202 struct cleanup *cleanups;
11203 struct attribute *attr;
cd02d79d
PA
11204 struct dwarf2_cu *origin_cu;
11205 struct pending **origin_previous_list_in_scope;
d389af10
JK
11206
11207 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11208 if (!attr)
11209 return;
11210
cd02d79d
PA
11211 /* Note that following die references may follow to a die in a
11212 different cu. */
11213
11214 origin_cu = cu;
11215 origin_die = follow_die_ref (die, attr, &origin_cu);
11216
11217 /* We're inheriting ORIGIN's children into the scope we'd put DIE's
11218 symbols in. */
11219 origin_previous_list_in_scope = origin_cu->list_in_scope;
11220 origin_cu->list_in_scope = cu->list_in_scope;
11221
edb3359d
DJ
11222 if (die->tag != origin_die->tag
11223 && !(die->tag == DW_TAG_inlined_subroutine
11224 && origin_die->tag == DW_TAG_subprogram))
d389af10
JK
11225 complaint (&symfile_complaints,
11226 _("DIE 0x%x and its abstract origin 0x%x have different tags"),
b64f50a1 11227 die->offset.sect_off, origin_die->offset.sect_off);
d389af10
JK
11228
11229 child_die = die->child;
11230 die_children_count = 0;
11231 while (child_die && child_die->tag)
11232 {
11233 child_die = sibling_die (child_die);
11234 die_children_count++;
11235 }
8d749320 11236 offsets = XNEWVEC (sect_offset, die_children_count);
d389af10
JK
11237 cleanups = make_cleanup (xfree, offsets);
11238
11239 offsets_end = offsets;
3ea89b92
PMR
11240 for (child_die = die->child;
11241 child_die && child_die->tag;
11242 child_die = sibling_die (child_die))
11243 {
11244 struct die_info *child_origin_die;
11245 struct dwarf2_cu *child_origin_cu;
11246
11247 /* We are trying to process concrete instance entries:
11248 DW_TAG_GNU_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
11249 it's not relevant to our analysis here. i.e. detecting DIEs that are
11250 present in the abstract instance but not referenced in the concrete
11251 one. */
11252 if (child_die->tag == DW_TAG_GNU_call_site)
11253 continue;
11254
c38f313d
DJ
11255 /* For each CHILD_DIE, find the corresponding child of
11256 ORIGIN_DIE. If there is more than one layer of
11257 DW_AT_abstract_origin, follow them all; there shouldn't be,
11258 but GCC versions at least through 4.4 generate this (GCC PR
11259 40573). */
3ea89b92
PMR
11260 child_origin_die = child_die;
11261 child_origin_cu = cu;
c38f313d
DJ
11262 while (1)
11263 {
cd02d79d
PA
11264 attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
11265 child_origin_cu);
c38f313d
DJ
11266 if (attr == NULL)
11267 break;
cd02d79d
PA
11268 child_origin_die = follow_die_ref (child_origin_die, attr,
11269 &child_origin_cu);
c38f313d
DJ
11270 }
11271
d389af10
JK
11272 /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
11273 counterpart may exist. */
c38f313d 11274 if (child_origin_die != child_die)
d389af10 11275 {
edb3359d
DJ
11276 if (child_die->tag != child_origin_die->tag
11277 && !(child_die->tag == DW_TAG_inlined_subroutine
11278 && child_origin_die->tag == DW_TAG_subprogram))
d389af10
JK
11279 complaint (&symfile_complaints,
11280 _("Child DIE 0x%x and its abstract origin 0x%x have "
b64f50a1
JK
11281 "different tags"), child_die->offset.sect_off,
11282 child_origin_die->offset.sect_off);
c38f313d
DJ
11283 if (child_origin_die->parent != origin_die)
11284 complaint (&symfile_complaints,
11285 _("Child DIE 0x%x and its abstract origin 0x%x have "
b64f50a1
JK
11286 "different parents"), child_die->offset.sect_off,
11287 child_origin_die->offset.sect_off);
c38f313d
DJ
11288 else
11289 *offsets_end++ = child_origin_die->offset;
d389af10 11290 }
d389af10
JK
11291 }
11292 qsort (offsets, offsets_end - offsets, sizeof (*offsets),
11293 unsigned_int_compar);
11294 for (offsetp = offsets + 1; offsetp < offsets_end; offsetp++)
b64f50a1 11295 if (offsetp[-1].sect_off == offsetp->sect_off)
3e43a32a
MS
11296 complaint (&symfile_complaints,
11297 _("Multiple children of DIE 0x%x refer "
11298 "to DIE 0x%x as their abstract origin"),
b64f50a1 11299 die->offset.sect_off, offsetp->sect_off);
d389af10
JK
11300
11301 offsetp = offsets;
11302 origin_child_die = origin_die->child;
11303 while (origin_child_die && origin_child_die->tag)
11304 {
11305 /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children? */
b64f50a1
JK
11306 while (offsetp < offsets_end
11307 && offsetp->sect_off < origin_child_die->offset.sect_off)
d389af10 11308 offsetp++;
b64f50a1
JK
11309 if (offsetp >= offsets_end
11310 || offsetp->sect_off > origin_child_die->offset.sect_off)
d389af10 11311 {
adde2bff
DE
11312 /* Found that ORIGIN_CHILD_DIE is really not referenced.
11313 Check whether we're already processing ORIGIN_CHILD_DIE.
11314 This can happen with mutually referenced abstract_origins.
11315 PR 16581. */
11316 if (!origin_child_die->in_process)
11317 process_die (origin_child_die, origin_cu);
d389af10
JK
11318 }
11319 origin_child_die = sibling_die (origin_child_die);
11320 }
cd02d79d 11321 origin_cu->list_in_scope = origin_previous_list_in_scope;
d389af10
JK
11322
11323 do_cleanups (cleanups);
11324}
11325
c906108c 11326static void
e7c27a73 11327read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 11328{
e7c27a73 11329 struct objfile *objfile = cu->objfile;
3e29f34a 11330 struct gdbarch *gdbarch = get_objfile_arch (objfile);
fe978cb0 11331 struct context_stack *newobj;
c906108c
SS
11332 CORE_ADDR lowpc;
11333 CORE_ADDR highpc;
11334 struct die_info *child_die;
edb3359d 11335 struct attribute *attr, *call_line, *call_file;
15d034d0 11336 const char *name;
e142c38c 11337 CORE_ADDR baseaddr;
801e3a5b 11338 struct block *block;
edb3359d 11339 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
34eaf542
TT
11340 VEC (symbolp) *template_args = NULL;
11341 struct template_symbol *templ_func = NULL;
edb3359d
DJ
11342
11343 if (inlined_func)
11344 {
11345 /* If we do not have call site information, we can't show the
11346 caller of this inlined function. That's too confusing, so
11347 only use the scope for local variables. */
11348 call_line = dwarf2_attr (die, DW_AT_call_line, cu);
11349 call_file = dwarf2_attr (die, DW_AT_call_file, cu);
11350 if (call_line == NULL || call_file == NULL)
11351 {
11352 read_lexical_block_scope (die, cu);
11353 return;
11354 }
11355 }
c906108c 11356
e142c38c
DJ
11357 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11358
94af9270 11359 name = dwarf2_name (die, cu);
c906108c 11360
e8d05480
JB
11361 /* Ignore functions with missing or empty names. These are actually
11362 illegal according to the DWARF standard. */
11363 if (name == NULL)
11364 {
11365 complaint (&symfile_complaints,
b64f50a1
JK
11366 _("missing name for subprogram DIE at %d"),
11367 die->offset.sect_off);
e8d05480
JB
11368 return;
11369 }
11370
11371 /* Ignore functions with missing or invalid low and high pc attributes. */
3a2b436a 11372 if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
e385593e 11373 <= PC_BOUNDS_INVALID)
e8d05480 11374 {
ae4d0c03
PM
11375 attr = dwarf2_attr (die, DW_AT_external, cu);
11376 if (!attr || !DW_UNSND (attr))
11377 complaint (&symfile_complaints,
3e43a32a
MS
11378 _("cannot get low and high bounds "
11379 "for subprogram DIE at %d"),
b64f50a1 11380 die->offset.sect_off);
e8d05480
JB
11381 return;
11382 }
c906108c 11383
3e29f34a
MR
11384 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11385 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
c906108c 11386
34eaf542
TT
11387 /* If we have any template arguments, then we must allocate a
11388 different sort of symbol. */
11389 for (child_die = die->child; child_die; child_die = sibling_die (child_die))
11390 {
11391 if (child_die->tag == DW_TAG_template_type_param
11392 || child_die->tag == DW_TAG_template_value_param)
11393 {
e623cf5d 11394 templ_func = allocate_template_symbol (objfile);
34eaf542
TT
11395 templ_func->base.is_cplus_template_function = 1;
11396 break;
11397 }
11398 }
11399
fe978cb0
PA
11400 newobj = push_context (0, lowpc);
11401 newobj->name = new_symbol_full (die, read_type_die (die, cu), cu,
34eaf542 11402 (struct symbol *) templ_func);
4c2df51b 11403
4cecd739
DJ
11404 /* If there is a location expression for DW_AT_frame_base, record
11405 it. */
e142c38c 11406 attr = dwarf2_attr (die, DW_AT_frame_base, cu);
4c2df51b 11407 if (attr)
fe978cb0 11408 dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
4c2df51b 11409
63e43d3a
PMR
11410 /* If there is a location for the static link, record it. */
11411 newobj->static_link = NULL;
11412 attr = dwarf2_attr (die, DW_AT_static_link, cu);
11413 if (attr)
11414 {
224c3ddb
SM
11415 newobj->static_link
11416 = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
63e43d3a
PMR
11417 attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
11418 }
11419
e142c38c 11420 cu->list_in_scope = &local_symbols;
c906108c 11421
639d11d3 11422 if (die->child != NULL)
c906108c 11423 {
639d11d3 11424 child_die = die->child;
c906108c
SS
11425 while (child_die && child_die->tag)
11426 {
34eaf542
TT
11427 if (child_die->tag == DW_TAG_template_type_param
11428 || child_die->tag == DW_TAG_template_value_param)
11429 {
11430 struct symbol *arg = new_symbol (child_die, NULL, cu);
11431
f1078f66
DJ
11432 if (arg != NULL)
11433 VEC_safe_push (symbolp, template_args, arg);
34eaf542
TT
11434 }
11435 else
11436 process_die (child_die, cu);
c906108c
SS
11437 child_die = sibling_die (child_die);
11438 }
11439 }
11440
d389af10
JK
11441 inherit_abstract_dies (die, cu);
11442
4a811a97
UW
11443 /* If we have a DW_AT_specification, we might need to import using
11444 directives from the context of the specification DIE. See the
11445 comment in determine_prefix. */
11446 if (cu->language == language_cplus
11447 && dwarf2_attr (die, DW_AT_specification, cu))
11448 {
11449 struct dwarf2_cu *spec_cu = cu;
11450 struct die_info *spec_die = die_specification (die, &spec_cu);
11451
11452 while (spec_die)
11453 {
11454 child_die = spec_die->child;
11455 while (child_die && child_die->tag)
11456 {
11457 if (child_die->tag == DW_TAG_imported_module)
11458 process_die (child_die, spec_cu);
11459 child_die = sibling_die (child_die);
11460 }
11461
11462 /* In some cases, GCC generates specification DIEs that
11463 themselves contain DW_AT_specification attributes. */
11464 spec_die = die_specification (spec_die, &spec_cu);
11465 }
11466 }
11467
fe978cb0 11468 newobj = pop_context ();
c906108c 11469 /* Make a block for the local symbols within. */
fe978cb0 11470 block = finish_block (newobj->name, &local_symbols, newobj->old_blocks,
63e43d3a 11471 newobj->static_link, lowpc, highpc);
801e3a5b 11472
df8a16a1 11473 /* For C++, set the block's scope. */
45280282
IB
11474 if ((cu->language == language_cplus
11475 || cu->language == language_fortran
c44af4eb
TT
11476 || cu->language == language_d
11477 || cu->language == language_rust)
4d4ec4e5 11478 && cu->processing_has_namespace_info)
195a3f6c
TT
11479 block_set_scope (block, determine_prefix (die, cu),
11480 &objfile->objfile_obstack);
df8a16a1 11481
801e3a5b
JB
11482 /* If we have address ranges, record them. */
11483 dwarf2_record_block_ranges (die, block, baseaddr, cu);
6e70227d 11484
fe978cb0 11485 gdbarch_make_symbol_special (gdbarch, newobj->name, objfile);
3e29f34a 11486
34eaf542
TT
11487 /* Attach template arguments to function. */
11488 if (! VEC_empty (symbolp, template_args))
11489 {
11490 gdb_assert (templ_func != NULL);
11491
11492 templ_func->n_template_arguments = VEC_length (symbolp, template_args);
11493 templ_func->template_arguments
8d749320
SM
11494 = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
11495 templ_func->n_template_arguments);
34eaf542
TT
11496 memcpy (templ_func->template_arguments,
11497 VEC_address (symbolp, template_args),
11498 (templ_func->n_template_arguments * sizeof (struct symbol *)));
11499 VEC_free (symbolp, template_args);
11500 }
11501
208d8187
JB
11502 /* In C++, we can have functions nested inside functions (e.g., when
11503 a function declares a class that has methods). This means that
11504 when we finish processing a function scope, we may need to go
11505 back to building a containing block's symbol lists. */
fe978cb0 11506 local_symbols = newobj->locals;
22cee43f 11507 local_using_directives = newobj->local_using_directives;
208d8187 11508
921e78cf
JB
11509 /* If we've finished processing a top-level function, subsequent
11510 symbols go in the file symbol list. */
11511 if (outermost_context_p ())
e142c38c 11512 cu->list_in_scope = &file_symbols;
c906108c
SS
11513}
11514
11515/* Process all the DIES contained within a lexical block scope. Start
11516 a new scope, process the dies, and then close the scope. */
11517
11518static void
e7c27a73 11519read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 11520{
e7c27a73 11521 struct objfile *objfile = cu->objfile;
3e29f34a 11522 struct gdbarch *gdbarch = get_objfile_arch (objfile);
fe978cb0 11523 struct context_stack *newobj;
c906108c
SS
11524 CORE_ADDR lowpc, highpc;
11525 struct die_info *child_die;
e142c38c
DJ
11526 CORE_ADDR baseaddr;
11527
11528 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c
SS
11529
11530 /* Ignore blocks with missing or invalid low and high pc attributes. */
af34e669
DJ
11531 /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
11532 as multiple lexical blocks? Handling children in a sane way would
6e70227d 11533 be nasty. Might be easier to properly extend generic blocks to
af34e669 11534 describe ranges. */
e385593e
JK
11535 switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
11536 {
11537 case PC_BOUNDS_NOT_PRESENT:
11538 /* DW_TAG_lexical_block has no attributes, process its children as if
11539 there was no wrapping by that DW_TAG_lexical_block.
11540 GCC does no longer produces such DWARF since GCC r224161. */
11541 for (child_die = die->child;
11542 child_die != NULL && child_die->tag;
11543 child_die = sibling_die (child_die))
11544 process_die (child_die, cu);
11545 return;
11546 case PC_BOUNDS_INVALID:
11547 return;
11548 }
3e29f34a
MR
11549 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11550 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
c906108c
SS
11551
11552 push_context (0, lowpc);
639d11d3 11553 if (die->child != NULL)
c906108c 11554 {
639d11d3 11555 child_die = die->child;
c906108c
SS
11556 while (child_die && child_die->tag)
11557 {
e7c27a73 11558 process_die (child_die, cu);
c906108c
SS
11559 child_die = sibling_die (child_die);
11560 }
11561 }
3ea89b92 11562 inherit_abstract_dies (die, cu);
fe978cb0 11563 newobj = pop_context ();
c906108c 11564
22cee43f 11565 if (local_symbols != NULL || local_using_directives != NULL)
c906108c 11566 {
801e3a5b 11567 struct block *block
63e43d3a 11568 = finish_block (0, &local_symbols, newobj->old_blocks, NULL,
fe978cb0 11569 newobj->start_addr, highpc);
801e3a5b
JB
11570
11571 /* Note that recording ranges after traversing children, as we
11572 do here, means that recording a parent's ranges entails
11573 walking across all its children's ranges as they appear in
11574 the address map, which is quadratic behavior.
11575
11576 It would be nicer to record the parent's ranges before
11577 traversing its children, simply overriding whatever you find
11578 there. But since we don't even decide whether to create a
11579 block until after we've traversed its children, that's hard
11580 to do. */
11581 dwarf2_record_block_ranges (die, block, baseaddr, cu);
c906108c 11582 }
fe978cb0 11583 local_symbols = newobj->locals;
22cee43f 11584 local_using_directives = newobj->local_using_directives;
c906108c
SS
11585}
11586
96408a79
SA
11587/* Read in DW_TAG_GNU_call_site and insert it to CU->call_site_htab. */
11588
11589static void
11590read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
11591{
11592 struct objfile *objfile = cu->objfile;
11593 struct gdbarch *gdbarch = get_objfile_arch (objfile);
11594 CORE_ADDR pc, baseaddr;
11595 struct attribute *attr;
11596 struct call_site *call_site, call_site_local;
11597 void **slot;
11598 int nparams;
11599 struct die_info *child_die;
11600
11601 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11602
11603 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11604 if (!attr)
11605 {
11606 complaint (&symfile_complaints,
11607 _("missing DW_AT_low_pc for DW_TAG_GNU_call_site "
11608 "DIE 0x%x [in module %s]"),
4262abfb 11609 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11610 return;
11611 }
31aa7e4e 11612 pc = attr_value_as_address (attr) + baseaddr;
3e29f34a 11613 pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
96408a79
SA
11614
11615 if (cu->call_site_htab == NULL)
11616 cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
11617 NULL, &objfile->objfile_obstack,
11618 hashtab_obstack_allocate, NULL);
11619 call_site_local.pc = pc;
11620 slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
11621 if (*slot != NULL)
11622 {
11623 complaint (&symfile_complaints,
11624 _("Duplicate PC %s for DW_TAG_GNU_call_site "
11625 "DIE 0x%x [in module %s]"),
4262abfb
JK
11626 paddress (gdbarch, pc), die->offset.sect_off,
11627 objfile_name (objfile));
96408a79
SA
11628 return;
11629 }
11630
11631 /* Count parameters at the caller. */
11632
11633 nparams = 0;
11634 for (child_die = die->child; child_die && child_die->tag;
11635 child_die = sibling_die (child_die))
11636 {
11637 if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11638 {
11639 complaint (&symfile_complaints,
11640 _("Tag %d is not DW_TAG_GNU_call_site_parameter in "
11641 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb
JK
11642 child_die->tag, child_die->offset.sect_off,
11643 objfile_name (objfile));
96408a79
SA
11644 continue;
11645 }
11646
11647 nparams++;
11648 }
11649
224c3ddb
SM
11650 call_site
11651 = ((struct call_site *)
11652 obstack_alloc (&objfile->objfile_obstack,
11653 sizeof (*call_site)
11654 + (sizeof (*call_site->parameter) * (nparams - 1))));
96408a79
SA
11655 *slot = call_site;
11656 memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
11657 call_site->pc = pc;
11658
11659 if (dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
11660 {
11661 struct die_info *func_die;
11662
11663 /* Skip also over DW_TAG_inlined_subroutine. */
11664 for (func_die = die->parent;
11665 func_die && func_die->tag != DW_TAG_subprogram
11666 && func_die->tag != DW_TAG_subroutine_type;
11667 func_die = func_die->parent);
11668
11669 /* DW_AT_GNU_all_call_sites is a superset
11670 of DW_AT_GNU_all_tail_call_sites. */
11671 if (func_die
11672 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
11673 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
11674 {
11675 /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
11676 not complete. But keep CALL_SITE for look ups via call_site_htab,
11677 both the initial caller containing the real return address PC and
11678 the final callee containing the current PC of a chain of tail
11679 calls do not need to have the tail call list complete. But any
11680 function candidate for a virtual tail call frame searched via
11681 TYPE_TAIL_CALL_LIST must have the tail call list complete to be
11682 determined unambiguously. */
11683 }
11684 else
11685 {
11686 struct type *func_type = NULL;
11687
11688 if (func_die)
11689 func_type = get_die_type (func_die, cu);
11690 if (func_type != NULL)
11691 {
11692 gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
11693
11694 /* Enlist this call site to the function. */
11695 call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
11696 TYPE_TAIL_CALL_LIST (func_type) = call_site;
11697 }
11698 else
11699 complaint (&symfile_complaints,
11700 _("Cannot find function owning DW_TAG_GNU_call_site "
11701 "DIE 0x%x [in module %s]"),
4262abfb 11702 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11703 }
11704 }
11705
11706 attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
11707 if (attr == NULL)
11708 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11709 SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
11710 if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
11711 /* Keep NULL DWARF_BLOCK. */;
11712 else if (attr_form_is_block (attr))
11713 {
11714 struct dwarf2_locexpr_baton *dlbaton;
11715
8d749320 11716 dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
96408a79
SA
11717 dlbaton->data = DW_BLOCK (attr)->data;
11718 dlbaton->size = DW_BLOCK (attr)->size;
11719 dlbaton->per_cu = cu->per_cu;
11720
11721 SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
11722 }
7771576e 11723 else if (attr_form_is_ref (attr))
96408a79 11724 {
96408a79
SA
11725 struct dwarf2_cu *target_cu = cu;
11726 struct die_info *target_die;
11727
ac9ec31b 11728 target_die = follow_die_ref (die, attr, &target_cu);
96408a79
SA
11729 gdb_assert (target_cu->objfile == objfile);
11730 if (die_is_declaration (target_die, target_cu))
11731 {
7d45c7c3 11732 const char *target_physname;
9112db09
JK
11733
11734 /* Prefer the mangled name; otherwise compute the demangled one. */
7d45c7c3
KB
11735 target_physname = dwarf2_string_attr (target_die,
11736 DW_AT_linkage_name,
11737 target_cu);
11738 if (target_physname == NULL)
11739 target_physname = dwarf2_string_attr (target_die,
11740 DW_AT_MIPS_linkage_name,
11741 target_cu);
11742 if (target_physname == NULL)
9112db09 11743 target_physname = dwarf2_physname (NULL, target_die, target_cu);
96408a79
SA
11744 if (target_physname == NULL)
11745 complaint (&symfile_complaints,
11746 _("DW_AT_GNU_call_site_target target DIE has invalid "
11747 "physname, for referencing DIE 0x%x [in module %s]"),
4262abfb 11748 die->offset.sect_off, objfile_name (objfile));
96408a79 11749 else
7d455152 11750 SET_FIELD_PHYSNAME (call_site->target, target_physname);
96408a79
SA
11751 }
11752 else
11753 {
11754 CORE_ADDR lowpc;
11755
11756 /* DW_AT_entry_pc should be preferred. */
3a2b436a 11757 if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
e385593e 11758 <= PC_BOUNDS_INVALID)
96408a79
SA
11759 complaint (&symfile_complaints,
11760 _("DW_AT_GNU_call_site_target target DIE has invalid "
11761 "low pc, for referencing DIE 0x%x [in module %s]"),
4262abfb 11762 die->offset.sect_off, objfile_name (objfile));
96408a79 11763 else
3e29f34a
MR
11764 {
11765 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11766 SET_FIELD_PHYSADDR (call_site->target, lowpc);
11767 }
96408a79
SA
11768 }
11769 }
11770 else
11771 complaint (&symfile_complaints,
11772 _("DW_TAG_GNU_call_site DW_AT_GNU_call_site_target is neither "
11773 "block nor reference, for DIE 0x%x [in module %s]"),
4262abfb 11774 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11775
11776 call_site->per_cu = cu->per_cu;
11777
11778 for (child_die = die->child;
11779 child_die && child_die->tag;
11780 child_die = sibling_die (child_die))
11781 {
96408a79 11782 struct call_site_parameter *parameter;
1788b2d3 11783 struct attribute *loc, *origin;
96408a79
SA
11784
11785 if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11786 {
11787 /* Already printed the complaint above. */
11788 continue;
11789 }
11790
11791 gdb_assert (call_site->parameter_count < nparams);
11792 parameter = &call_site->parameter[call_site->parameter_count];
11793
1788b2d3
JK
11794 /* DW_AT_location specifies the register number or DW_AT_abstract_origin
11795 specifies DW_TAG_formal_parameter. Value of the data assumed for the
11796 register is contained in DW_AT_GNU_call_site_value. */
96408a79 11797
24c5c679 11798 loc = dwarf2_attr (child_die, DW_AT_location, cu);
1788b2d3 11799 origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
7771576e 11800 if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
1788b2d3
JK
11801 {
11802 sect_offset offset;
11803
11804 parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
11805 offset = dwarf2_get_ref_die_offset (origin);
d76b7dbc
JK
11806 if (!offset_in_cu_p (&cu->header, offset))
11807 {
11808 /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
11809 binding can be done only inside one CU. Such referenced DIE
11810 therefore cannot be even moved to DW_TAG_partial_unit. */
11811 complaint (&symfile_complaints,
11812 _("DW_AT_abstract_origin offset is not in CU for "
11813 "DW_TAG_GNU_call_site child DIE 0x%x "
11814 "[in module %s]"),
4262abfb 11815 child_die->offset.sect_off, objfile_name (objfile));
d76b7dbc
JK
11816 continue;
11817 }
1788b2d3
JK
11818 parameter->u.param_offset.cu_off = (offset.sect_off
11819 - cu->header.offset.sect_off);
11820 }
11821 else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
96408a79
SA
11822 {
11823 complaint (&symfile_complaints,
11824 _("No DW_FORM_block* DW_AT_location for "
11825 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11826 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11827 continue;
11828 }
24c5c679 11829 else
96408a79 11830 {
24c5c679
JK
11831 parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
11832 (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
11833 if (parameter->u.dwarf_reg != -1)
11834 parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
11835 else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
11836 &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
11837 &parameter->u.fb_offset))
11838 parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
11839 else
11840 {
11841 complaint (&symfile_complaints,
11842 _("Only single DW_OP_reg or DW_OP_fbreg is supported "
11843 "for DW_FORM_block* DW_AT_location is supported for "
11844 "DW_TAG_GNU_call_site child DIE 0x%x "
11845 "[in module %s]"),
4262abfb 11846 child_die->offset.sect_off, objfile_name (objfile));
24c5c679
JK
11847 continue;
11848 }
96408a79
SA
11849 }
11850
11851 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
11852 if (!attr_form_is_block (attr))
11853 {
11854 complaint (&symfile_complaints,
11855 _("No DW_FORM_block* DW_AT_GNU_call_site_value for "
11856 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11857 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11858 continue;
11859 }
11860 parameter->value = DW_BLOCK (attr)->data;
11861 parameter->value_size = DW_BLOCK (attr)->size;
11862
11863 /* Parameters are not pre-cleared by memset above. */
11864 parameter->data_value = NULL;
11865 parameter->data_value_size = 0;
11866 call_site->parameter_count++;
11867
11868 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
11869 if (attr)
11870 {
11871 if (!attr_form_is_block (attr))
11872 complaint (&symfile_complaints,
11873 _("No DW_FORM_block* DW_AT_GNU_call_site_data_value for "
11874 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11875 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11876 else
11877 {
11878 parameter->data_value = DW_BLOCK (attr)->data;
11879 parameter->data_value_size = DW_BLOCK (attr)->size;
11880 }
11881 }
11882 }
11883}
11884
43039443 11885/* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
ff013f42
JK
11886 Return 1 if the attributes are present and valid, otherwise, return 0.
11887 If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'. */
43039443
JK
11888
11889static int
11890dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
ff013f42
JK
11891 CORE_ADDR *high_return, struct dwarf2_cu *cu,
11892 struct partial_symtab *ranges_pst)
43039443
JK
11893{
11894 struct objfile *objfile = cu->objfile;
3e29f34a 11895 struct gdbarch *gdbarch = get_objfile_arch (objfile);
43039443
JK
11896 struct comp_unit_head *cu_header = &cu->header;
11897 bfd *obfd = objfile->obfd;
11898 unsigned int addr_size = cu_header->addr_size;
11899 CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
11900 /* Base address selection entry. */
11901 CORE_ADDR base;
11902 int found_base;
11903 unsigned int dummy;
d521ce57 11904 const gdb_byte *buffer;
43039443
JK
11905 int low_set;
11906 CORE_ADDR low = 0;
11907 CORE_ADDR high = 0;
ff013f42 11908 CORE_ADDR baseaddr;
43039443 11909
d00adf39
DE
11910 found_base = cu->base_known;
11911 base = cu->base_address;
43039443 11912
be391dca 11913 dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
dce234bc 11914 if (offset >= dwarf2_per_objfile->ranges.size)
43039443
JK
11915 {
11916 complaint (&symfile_complaints,
11917 _("Offset %d out of bounds for DW_AT_ranges attribute"),
11918 offset);
11919 return 0;
11920 }
dce234bc 11921 buffer = dwarf2_per_objfile->ranges.buffer + offset;
43039443 11922
43039443
JK
11923 low_set = 0;
11924
e7030f15 11925 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
ff013f42 11926
43039443
JK
11927 while (1)
11928 {
11929 CORE_ADDR range_beginning, range_end;
11930
11931 range_beginning = read_address (obfd, buffer, cu, &dummy);
11932 buffer += addr_size;
11933 range_end = read_address (obfd, buffer, cu, &dummy);
11934 buffer += addr_size;
11935 offset += 2 * addr_size;
11936
11937 /* An end of list marker is a pair of zero addresses. */
11938 if (range_beginning == 0 && range_end == 0)
11939 /* Found the end of list entry. */
11940 break;
11941
11942 /* Each base address selection entry is a pair of 2 values.
11943 The first is the largest possible address, the second is
11944 the base address. Check for a base address here. */
11945 if ((range_beginning & mask) == mask)
11946 {
28d2bfb9
AB
11947 /* If we found the largest possible address, then we already
11948 have the base address in range_end. */
11949 base = range_end;
43039443
JK
11950 found_base = 1;
11951 continue;
11952 }
11953
11954 if (!found_base)
11955 {
11956 /* We have no valid base address for the ranges
11957 data. */
11958 complaint (&symfile_complaints,
11959 _("Invalid .debug_ranges data (no base address)"));
11960 return 0;
11961 }
11962
9277c30c
UW
11963 if (range_beginning > range_end)
11964 {
11965 /* Inverted range entries are invalid. */
11966 complaint (&symfile_complaints,
11967 _("Invalid .debug_ranges data (inverted range)"));
11968 return 0;
11969 }
11970
11971 /* Empty range entries have no effect. */
11972 if (range_beginning == range_end)
11973 continue;
11974
43039443
JK
11975 range_beginning += base;
11976 range_end += base;
11977
01093045
DE
11978 /* A not-uncommon case of bad debug info.
11979 Don't pollute the addrmap with bad data. */
11980 if (range_beginning + baseaddr == 0
11981 && !dwarf2_per_objfile->has_section_at_zero)
11982 {
11983 complaint (&symfile_complaints,
11984 _(".debug_ranges entry has start address of zero"
4262abfb 11985 " [in module %s]"), objfile_name (objfile));
01093045
DE
11986 continue;
11987 }
11988
9277c30c 11989 if (ranges_pst != NULL)
3e29f34a
MR
11990 {
11991 CORE_ADDR lowpc;
11992 CORE_ADDR highpc;
11993
11994 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
11995 range_beginning + baseaddr);
11996 highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
11997 range_end + baseaddr);
11998 addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
11999 ranges_pst);
12000 }
ff013f42 12001
43039443
JK
12002 /* FIXME: This is recording everything as a low-high
12003 segment of consecutive addresses. We should have a
12004 data structure for discontiguous block ranges
12005 instead. */
12006 if (! low_set)
12007 {
12008 low = range_beginning;
12009 high = range_end;
12010 low_set = 1;
12011 }
12012 else
12013 {
12014 if (range_beginning < low)
12015 low = range_beginning;
12016 if (range_end > high)
12017 high = range_end;
12018 }
12019 }
12020
12021 if (! low_set)
12022 /* If the first entry is an end-of-list marker, the range
12023 describes an empty scope, i.e. no instructions. */
12024 return 0;
12025
12026 if (low_return)
12027 *low_return = low;
12028 if (high_return)
12029 *high_return = high;
12030 return 1;
12031}
12032
3a2b436a
JK
12033/* Get low and high pc attributes from a die. See enum pc_bounds_kind
12034 definition for the return value. *LOWPC and *HIGHPC are set iff
e385593e 12035 neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned. */
380bca97 12036
3a2b436a 12037static enum pc_bounds_kind
af34e669 12038dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
d85a05f0
DJ
12039 CORE_ADDR *highpc, struct dwarf2_cu *cu,
12040 struct partial_symtab *pst)
c906108c
SS
12041{
12042 struct attribute *attr;
91da1414 12043 struct attribute *attr_high;
af34e669
DJ
12044 CORE_ADDR low = 0;
12045 CORE_ADDR high = 0;
e385593e 12046 enum pc_bounds_kind ret;
c906108c 12047
91da1414
MW
12048 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
12049 if (attr_high)
af34e669 12050 {
e142c38c 12051 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
af34e669 12052 if (attr)
91da1414 12053 {
31aa7e4e
JB
12054 low = attr_value_as_address (attr);
12055 high = attr_value_as_address (attr_high);
12056 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12057 high += low;
91da1414 12058 }
af34e669
DJ
12059 else
12060 /* Found high w/o low attribute. */
e385593e 12061 return PC_BOUNDS_INVALID;
af34e669
DJ
12062
12063 /* Found consecutive range of addresses. */
3a2b436a 12064 ret = PC_BOUNDS_HIGH_LOW;
af34e669 12065 }
c906108c 12066 else
af34e669 12067 {
e142c38c 12068 attr = dwarf2_attr (die, DW_AT_ranges, cu);
af34e669
DJ
12069 if (attr != NULL)
12070 {
ab435259
DE
12071 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12072 We take advantage of the fact that DW_AT_ranges does not appear
12073 in DW_TAG_compile_unit of DWO files. */
12074 int need_ranges_base = die->tag != DW_TAG_compile_unit;
12075 unsigned int ranges_offset = (DW_UNSND (attr)
12076 + (need_ranges_base
12077 ? cu->ranges_base
12078 : 0));
2e3cf129 12079
af34e669 12080 /* Value of the DW_AT_ranges attribute is the offset in the
a604369a 12081 .debug_ranges section. */
2e3cf129 12082 if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
e385593e 12083 return PC_BOUNDS_INVALID;
43039443 12084 /* Found discontinuous range of addresses. */
3a2b436a 12085 ret = PC_BOUNDS_RANGES;
af34e669 12086 }
e385593e
JK
12087 else
12088 return PC_BOUNDS_NOT_PRESENT;
af34e669 12089 }
c906108c 12090
9373cf26
JK
12091 /* read_partial_die has also the strict LOW < HIGH requirement. */
12092 if (high <= low)
e385593e 12093 return PC_BOUNDS_INVALID;
c906108c
SS
12094
12095 /* When using the GNU linker, .gnu.linkonce. sections are used to
12096 eliminate duplicate copies of functions and vtables and such.
12097 The linker will arbitrarily choose one and discard the others.
12098 The AT_*_pc values for such functions refer to local labels in
12099 these sections. If the section from that file was discarded, the
12100 labels are not in the output, so the relocs get a value of 0.
12101 If this is a discarded function, mark the pc bounds as invalid,
12102 so that GDB will ignore it. */
72dca2f5 12103 if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
e385593e 12104 return PC_BOUNDS_INVALID;
c906108c
SS
12105
12106 *lowpc = low;
96408a79
SA
12107 if (highpc)
12108 *highpc = high;
af34e669 12109 return ret;
c906108c
SS
12110}
12111
b084d499
JB
12112/* Assuming that DIE represents a subprogram DIE or a lexical block, get
12113 its low and high PC addresses. Do nothing if these addresses could not
12114 be determined. Otherwise, set LOWPC to the low address if it is smaller,
12115 and HIGHPC to the high address if greater than HIGHPC. */
12116
12117static void
12118dwarf2_get_subprogram_pc_bounds (struct die_info *die,
12119 CORE_ADDR *lowpc, CORE_ADDR *highpc,
12120 struct dwarf2_cu *cu)
12121{
12122 CORE_ADDR low, high;
12123 struct die_info *child = die->child;
12124
e385593e 12125 if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
b084d499 12126 {
325fac50
PA
12127 *lowpc = std::min (*lowpc, low);
12128 *highpc = std::max (*highpc, high);
b084d499
JB
12129 }
12130
12131 /* If the language does not allow nested subprograms (either inside
12132 subprograms or lexical blocks), we're done. */
12133 if (cu->language != language_ada)
12134 return;
6e70227d 12135
b084d499
JB
12136 /* Check all the children of the given DIE. If it contains nested
12137 subprograms, then check their pc bounds. Likewise, we need to
12138 check lexical blocks as well, as they may also contain subprogram
12139 definitions. */
12140 while (child && child->tag)
12141 {
12142 if (child->tag == DW_TAG_subprogram
12143 || child->tag == DW_TAG_lexical_block)
12144 dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
12145 child = sibling_die (child);
12146 }
12147}
12148
fae299cd
DC
12149/* Get the low and high pc's represented by the scope DIE, and store
12150 them in *LOWPC and *HIGHPC. If the correct values can't be
12151 determined, set *LOWPC to -1 and *HIGHPC to 0. */
12152
12153static void
12154get_scope_pc_bounds (struct die_info *die,
12155 CORE_ADDR *lowpc, CORE_ADDR *highpc,
12156 struct dwarf2_cu *cu)
12157{
12158 CORE_ADDR best_low = (CORE_ADDR) -1;
12159 CORE_ADDR best_high = (CORE_ADDR) 0;
12160 CORE_ADDR current_low, current_high;
12161
3a2b436a 12162 if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
e385593e 12163 >= PC_BOUNDS_RANGES)
fae299cd
DC
12164 {
12165 best_low = current_low;
12166 best_high = current_high;
12167 }
12168 else
12169 {
12170 struct die_info *child = die->child;
12171
12172 while (child && child->tag)
12173 {
12174 switch (child->tag) {
12175 case DW_TAG_subprogram:
b084d499 12176 dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
fae299cd
DC
12177 break;
12178 case DW_TAG_namespace:
f55ee35c 12179 case DW_TAG_module:
fae299cd
DC
12180 /* FIXME: carlton/2004-01-16: Should we do this for
12181 DW_TAG_class_type/DW_TAG_structure_type, too? I think
12182 that current GCC's always emit the DIEs corresponding
12183 to definitions of methods of classes as children of a
12184 DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
12185 the DIEs giving the declarations, which could be
12186 anywhere). But I don't see any reason why the
12187 standards says that they have to be there. */
12188 get_scope_pc_bounds (child, &current_low, &current_high, cu);
12189
12190 if (current_low != ((CORE_ADDR) -1))
12191 {
325fac50
PA
12192 best_low = std::min (best_low, current_low);
12193 best_high = std::max (best_high, current_high);
fae299cd
DC
12194 }
12195 break;
12196 default:
0963b4bd 12197 /* Ignore. */
fae299cd
DC
12198 break;
12199 }
12200
12201 child = sibling_die (child);
12202 }
12203 }
12204
12205 *lowpc = best_low;
12206 *highpc = best_high;
12207}
12208
801e3a5b
JB
12209/* Record the address ranges for BLOCK, offset by BASEADDR, as given
12210 in DIE. */
380bca97 12211
801e3a5b
JB
12212static void
12213dwarf2_record_block_ranges (struct die_info *die, struct block *block,
12214 CORE_ADDR baseaddr, struct dwarf2_cu *cu)
12215{
bb5ed363 12216 struct objfile *objfile = cu->objfile;
3e29f34a 12217 struct gdbarch *gdbarch = get_objfile_arch (objfile);
801e3a5b 12218 struct attribute *attr;
91da1414 12219 struct attribute *attr_high;
801e3a5b 12220
91da1414
MW
12221 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
12222 if (attr_high)
801e3a5b 12223 {
801e3a5b
JB
12224 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
12225 if (attr)
12226 {
31aa7e4e
JB
12227 CORE_ADDR low = attr_value_as_address (attr);
12228 CORE_ADDR high = attr_value_as_address (attr_high);
12229
12230 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12231 high += low;
9a619af0 12232
3e29f34a
MR
12233 low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
12234 high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
12235 record_block_range (block, low, high - 1);
801e3a5b
JB
12236 }
12237 }
12238
12239 attr = dwarf2_attr (die, DW_AT_ranges, cu);
12240 if (attr)
12241 {
bb5ed363 12242 bfd *obfd = objfile->obfd;
ab435259
DE
12243 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12244 We take advantage of the fact that DW_AT_ranges does not appear
12245 in DW_TAG_compile_unit of DWO files. */
12246 int need_ranges_base = die->tag != DW_TAG_compile_unit;
801e3a5b
JB
12247
12248 /* The value of the DW_AT_ranges attribute is the offset of the
12249 address range list in the .debug_ranges section. */
ab435259
DE
12250 unsigned long offset = (DW_UNSND (attr)
12251 + (need_ranges_base ? cu->ranges_base : 0));
d62bfeaf 12252 const gdb_byte *buffer;
801e3a5b
JB
12253
12254 /* For some target architectures, but not others, the
12255 read_address function sign-extends the addresses it returns.
12256 To recognize base address selection entries, we need a
12257 mask. */
12258 unsigned int addr_size = cu->header.addr_size;
12259 CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
12260
12261 /* The base address, to which the next pair is relative. Note
12262 that this 'base' is a DWARF concept: most entries in a range
12263 list are relative, to reduce the number of relocs against the
12264 debugging information. This is separate from this function's
12265 'baseaddr' argument, which GDB uses to relocate debugging
12266 information from a shared library based on the address at
12267 which the library was loaded. */
d00adf39
DE
12268 CORE_ADDR base = cu->base_address;
12269 int base_known = cu->base_known;
801e3a5b 12270
d62bfeaf 12271 dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
dce234bc 12272 if (offset >= dwarf2_per_objfile->ranges.size)
801e3a5b
JB
12273 {
12274 complaint (&symfile_complaints,
12275 _("Offset %lu out of bounds for DW_AT_ranges attribute"),
12276 offset);
12277 return;
12278 }
d62bfeaf 12279 buffer = dwarf2_per_objfile->ranges.buffer + offset;
801e3a5b
JB
12280
12281 for (;;)
12282 {
12283 unsigned int bytes_read;
12284 CORE_ADDR start, end;
12285
12286 start = read_address (obfd, buffer, cu, &bytes_read);
12287 buffer += bytes_read;
12288 end = read_address (obfd, buffer, cu, &bytes_read);
12289 buffer += bytes_read;
12290
12291 /* Did we find the end of the range list? */
12292 if (start == 0 && end == 0)
12293 break;
12294
12295 /* Did we find a base address selection entry? */
12296 else if ((start & base_select_mask) == base_select_mask)
12297 {
12298 base = end;
12299 base_known = 1;
12300 }
12301
12302 /* We found an ordinary address range. */
12303 else
12304 {
12305 if (!base_known)
12306 {
12307 complaint (&symfile_complaints,
3e43a32a
MS
12308 _("Invalid .debug_ranges data "
12309 "(no base address)"));
801e3a5b
JB
12310 return;
12311 }
12312
9277c30c
UW
12313 if (start > end)
12314 {
12315 /* Inverted range entries are invalid. */
12316 complaint (&symfile_complaints,
12317 _("Invalid .debug_ranges data "
12318 "(inverted range)"));
12319 return;
12320 }
12321
12322 /* Empty range entries have no effect. */
12323 if (start == end)
12324 continue;
12325
01093045
DE
12326 start += base + baseaddr;
12327 end += base + baseaddr;
12328
12329 /* A not-uncommon case of bad debug info.
12330 Don't pollute the addrmap with bad data. */
12331 if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
12332 {
12333 complaint (&symfile_complaints,
12334 _(".debug_ranges entry has start address of zero"
4262abfb 12335 " [in module %s]"), objfile_name (objfile));
01093045
DE
12336 continue;
12337 }
12338
3e29f34a
MR
12339 start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
12340 end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
01093045 12341 record_block_range (block, start, end - 1);
801e3a5b
JB
12342 }
12343 }
12344 }
12345}
12346
685b1105
JK
12347/* Check whether the producer field indicates either of GCC < 4.6, or the
12348 Intel C/C++ compiler, and cache the result in CU. */
60d5a603 12349
685b1105
JK
12350static void
12351check_producer (struct dwarf2_cu *cu)
60d5a603 12352{
38360086 12353 int major, minor;
60d5a603
JK
12354
12355 if (cu->producer == NULL)
12356 {
12357 /* For unknown compilers expect their behavior is DWARF version
12358 compliant.
12359
12360 GCC started to support .debug_types sections by -gdwarf-4 since
12361 gcc-4.5.x. As the .debug_types sections are missing DW_AT_producer
12362 for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
12363 combination. gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
12364 interpreted incorrectly by GDB now - GCC PR debug/48229. */
60d5a603 12365 }
b1ffba5a 12366 else if (producer_is_gcc (cu->producer, &major, &minor))
60d5a603 12367 {
38360086
MW
12368 cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
12369 cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
685b1105 12370 }
61012eef 12371 else if (startswith (cu->producer, "Intel(R) C"))
685b1105
JK
12372 cu->producer_is_icc = 1;
12373 else
12374 {
12375 /* For other non-GCC compilers, expect their behavior is DWARF version
12376 compliant. */
60d5a603
JK
12377 }
12378
ba919b58 12379 cu->checked_producer = 1;
685b1105 12380}
ba919b58 12381
685b1105
JK
12382/* Check for GCC PR debug/45124 fix which is not present in any G++ version up
12383 to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
12384 during 4.6.0 experimental. */
12385
12386static int
12387producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
12388{
12389 if (!cu->checked_producer)
12390 check_producer (cu);
12391
12392 return cu->producer_is_gxx_lt_4_6;
60d5a603
JK
12393}
12394
12395/* Return the default accessibility type if it is not overriden by
12396 DW_AT_accessibility. */
12397
12398static enum dwarf_access_attribute
12399dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
12400{
12401 if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
12402 {
12403 /* The default DWARF 2 accessibility for members is public, the default
12404 accessibility for inheritance is private. */
12405
12406 if (die->tag != DW_TAG_inheritance)
12407 return DW_ACCESS_public;
12408 else
12409 return DW_ACCESS_private;
12410 }
12411 else
12412 {
12413 /* DWARF 3+ defines the default accessibility a different way. The same
12414 rules apply now for DW_TAG_inheritance as for the members and it only
12415 depends on the container kind. */
12416
12417 if (die->parent->tag == DW_TAG_class_type)
12418 return DW_ACCESS_private;
12419 else
12420 return DW_ACCESS_public;
12421 }
12422}
12423
74ac6d43
TT
12424/* Look for DW_AT_data_member_location. Set *OFFSET to the byte
12425 offset. If the attribute was not found return 0, otherwise return
12426 1. If it was found but could not properly be handled, set *OFFSET
12427 to 0. */
12428
12429static int
12430handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
12431 LONGEST *offset)
12432{
12433 struct attribute *attr;
12434
12435 attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
12436 if (attr != NULL)
12437 {
12438 *offset = 0;
12439
12440 /* Note that we do not check for a section offset first here.
12441 This is because DW_AT_data_member_location is new in DWARF 4,
12442 so if we see it, we can assume that a constant form is really
12443 a constant and not a section offset. */
12444 if (attr_form_is_constant (attr))
12445 *offset = dwarf2_get_attr_constant_value (attr, 0);
12446 else if (attr_form_is_section_offset (attr))
12447 dwarf2_complex_location_expr_complaint ();
12448 else if (attr_form_is_block (attr))
12449 *offset = decode_locdesc (DW_BLOCK (attr), cu);
12450 else
12451 dwarf2_complex_location_expr_complaint ();
12452
12453 return 1;
12454 }
12455
12456 return 0;
12457}
12458
c906108c
SS
12459/* Add an aggregate field to the field list. */
12460
12461static void
107d2387 12462dwarf2_add_field (struct field_info *fip, struct die_info *die,
e7c27a73 12463 struct dwarf2_cu *cu)
6e70227d 12464{
e7c27a73 12465 struct objfile *objfile = cu->objfile;
5e2b427d 12466 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
12467 struct nextfield *new_field;
12468 struct attribute *attr;
12469 struct field *fp;
15d034d0 12470 const char *fieldname = "";
c906108c
SS
12471
12472 /* Allocate a new field list entry and link it in. */
8d749320 12473 new_field = XNEW (struct nextfield);
b8c9b27d 12474 make_cleanup (xfree, new_field);
c906108c 12475 memset (new_field, 0, sizeof (struct nextfield));
7d0ccb61
DJ
12476
12477 if (die->tag == DW_TAG_inheritance)
12478 {
12479 new_field->next = fip->baseclasses;
12480 fip->baseclasses = new_field;
12481 }
12482 else
12483 {
12484 new_field->next = fip->fields;
12485 fip->fields = new_field;
12486 }
c906108c
SS
12487 fip->nfields++;
12488
e142c38c 12489 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c
SS
12490 if (attr)
12491 new_field->accessibility = DW_UNSND (attr);
60d5a603
JK
12492 else
12493 new_field->accessibility = dwarf2_default_access_attribute (die, cu);
c906108c
SS
12494 if (new_field->accessibility != DW_ACCESS_public)
12495 fip->non_public_fields = 1;
60d5a603 12496
e142c38c 12497 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
c906108c
SS
12498 if (attr)
12499 new_field->virtuality = DW_UNSND (attr);
60d5a603
JK
12500 else
12501 new_field->virtuality = DW_VIRTUALITY_none;
c906108c
SS
12502
12503 fp = &new_field->field;
a9a9bd0f 12504
e142c38c 12505 if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
c906108c 12506 {
74ac6d43
TT
12507 LONGEST offset;
12508
a9a9bd0f 12509 /* Data member other than a C++ static data member. */
6e70227d 12510
c906108c 12511 /* Get type of field. */
e7c27a73 12512 fp->type = die_type (die, cu);
c906108c 12513
d6a843b5 12514 SET_FIELD_BITPOS (*fp, 0);
01ad7f36 12515
c906108c 12516 /* Get bit size of field (zero if none). */
e142c38c 12517 attr = dwarf2_attr (die, DW_AT_bit_size, cu);
c906108c
SS
12518 if (attr)
12519 {
12520 FIELD_BITSIZE (*fp) = DW_UNSND (attr);
12521 }
12522 else
12523 {
12524 FIELD_BITSIZE (*fp) = 0;
12525 }
12526
12527 /* Get bit offset of field. */
74ac6d43
TT
12528 if (handle_data_member_location (die, cu, &offset))
12529 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
e142c38c 12530 attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
c906108c
SS
12531 if (attr)
12532 {
5e2b427d 12533 if (gdbarch_bits_big_endian (gdbarch))
c906108c
SS
12534 {
12535 /* For big endian bits, the DW_AT_bit_offset gives the
c5aa993b
JM
12536 additional bit offset from the MSB of the containing
12537 anonymous object to the MSB of the field. We don't
12538 have to do anything special since we don't need to
12539 know the size of the anonymous object. */
f41f5e61 12540 SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
c906108c
SS
12541 }
12542 else
12543 {
12544 /* For little endian bits, compute the bit offset to the
c5aa993b
JM
12545 MSB of the anonymous object, subtract off the number of
12546 bits from the MSB of the field to the MSB of the
12547 object, and then subtract off the number of bits of
12548 the field itself. The result is the bit offset of
12549 the LSB of the field. */
c906108c
SS
12550 int anonymous_size;
12551 int bit_offset = DW_UNSND (attr);
12552
e142c38c 12553 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
12554 if (attr)
12555 {
12556 /* The size of the anonymous object containing
12557 the bit field is explicit, so use the
12558 indicated size (in bytes). */
12559 anonymous_size = DW_UNSND (attr);
12560 }
12561 else
12562 {
12563 /* The size of the anonymous object containing
12564 the bit field must be inferred from the type
12565 attribute of the data member containing the
12566 bit field. */
12567 anonymous_size = TYPE_LENGTH (fp->type);
12568 }
f41f5e61
PA
12569 SET_FIELD_BITPOS (*fp,
12570 (FIELD_BITPOS (*fp)
12571 + anonymous_size * bits_per_byte
12572 - bit_offset - FIELD_BITSIZE (*fp)));
c906108c
SS
12573 }
12574 }
da5b30da
AA
12575 attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
12576 if (attr != NULL)
12577 SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
12578 + dwarf2_get_attr_constant_value (attr, 0)));
c906108c
SS
12579
12580 /* Get name of field. */
39cbfefa
DJ
12581 fieldname = dwarf2_name (die, cu);
12582 if (fieldname == NULL)
12583 fieldname = "";
d8151005
DJ
12584
12585 /* The name is already allocated along with this objfile, so we don't
12586 need to duplicate it for the type. */
12587 fp->name = fieldname;
c906108c
SS
12588
12589 /* Change accessibility for artificial fields (e.g. virtual table
c5aa993b 12590 pointer or virtual base class pointer) to private. */
e142c38c 12591 if (dwarf2_attr (die, DW_AT_artificial, cu))
c906108c 12592 {
d48cc9dd 12593 FIELD_ARTIFICIAL (*fp) = 1;
c906108c
SS
12594 new_field->accessibility = DW_ACCESS_private;
12595 fip->non_public_fields = 1;
12596 }
12597 }
a9a9bd0f 12598 else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
c906108c 12599 {
a9a9bd0f
DC
12600 /* C++ static member. */
12601
12602 /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
12603 is a declaration, but all versions of G++ as of this writing
12604 (so through at least 3.2.1) incorrectly generate
12605 DW_TAG_variable tags. */
6e70227d 12606
ff355380 12607 const char *physname;
c906108c 12608
a9a9bd0f 12609 /* Get name of field. */
39cbfefa
DJ
12610 fieldname = dwarf2_name (die, cu);
12611 if (fieldname == NULL)
c906108c
SS
12612 return;
12613
254e6b9e 12614 attr = dwarf2_attr (die, DW_AT_const_value, cu);
3863f96c
DE
12615 if (attr
12616 /* Only create a symbol if this is an external value.
12617 new_symbol checks this and puts the value in the global symbol
12618 table, which we want. If it is not external, new_symbol
12619 will try to put the value in cu->list_in_scope which is wrong. */
12620 && dwarf2_flag_true_p (die, DW_AT_external, cu))
254e6b9e
DE
12621 {
12622 /* A static const member, not much different than an enum as far as
12623 we're concerned, except that we can support more types. */
12624 new_symbol (die, NULL, cu);
12625 }
12626
2df3850c 12627 /* Get physical name. */
ff355380 12628 physname = dwarf2_physname (fieldname, die, cu);
c906108c 12629
d8151005
DJ
12630 /* The name is already allocated along with this objfile, so we don't
12631 need to duplicate it for the type. */
12632 SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
e7c27a73 12633 FIELD_TYPE (*fp) = die_type (die, cu);
d8151005 12634 FIELD_NAME (*fp) = fieldname;
c906108c
SS
12635 }
12636 else if (die->tag == DW_TAG_inheritance)
12637 {
74ac6d43 12638 LONGEST offset;
d4b96c9a 12639
74ac6d43
TT
12640 /* C++ base class field. */
12641 if (handle_data_member_location (die, cu, &offset))
12642 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
c906108c 12643 FIELD_BITSIZE (*fp) = 0;
e7c27a73 12644 FIELD_TYPE (*fp) = die_type (die, cu);
c906108c
SS
12645 FIELD_NAME (*fp) = type_name_no_tag (fp->type);
12646 fip->nbaseclasses++;
12647 }
12648}
12649
98751a41
JK
12650/* Add a typedef defined in the scope of the FIP's class. */
12651
12652static void
12653dwarf2_add_typedef (struct field_info *fip, struct die_info *die,
12654 struct dwarf2_cu *cu)
6e70227d 12655{
98751a41 12656 struct typedef_field_list *new_field;
98751a41 12657 struct typedef_field *fp;
98751a41
JK
12658
12659 /* Allocate a new field list entry and link it in. */
8d749320 12660 new_field = XCNEW (struct typedef_field_list);
98751a41
JK
12661 make_cleanup (xfree, new_field);
12662
12663 gdb_assert (die->tag == DW_TAG_typedef);
12664
12665 fp = &new_field->field;
12666
12667 /* Get name of field. */
12668 fp->name = dwarf2_name (die, cu);
12669 if (fp->name == NULL)
12670 return;
12671
12672 fp->type = read_type_die (die, cu);
12673
12674 new_field->next = fip->typedef_field_list;
12675 fip->typedef_field_list = new_field;
12676 fip->typedef_field_list_count++;
12677}
12678
c906108c
SS
12679/* Create the vector of fields, and attach it to the type. */
12680
12681static void
fba45db2 12682dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 12683 struct dwarf2_cu *cu)
c906108c
SS
12684{
12685 int nfields = fip->nfields;
12686
12687 /* Record the field count, allocate space for the array of fields,
12688 and create blank accessibility bitfields if necessary. */
12689 TYPE_NFIELDS (type) = nfields;
12690 TYPE_FIELDS (type) = (struct field *)
12691 TYPE_ALLOC (type, sizeof (struct field) * nfields);
12692 memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
12693
b4ba55a1 12694 if (fip->non_public_fields && cu->language != language_ada)
c906108c
SS
12695 {
12696 ALLOCATE_CPLUS_STRUCT_TYPE (type);
12697
12698 TYPE_FIELD_PRIVATE_BITS (type) =
12699 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12700 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
12701
12702 TYPE_FIELD_PROTECTED_BITS (type) =
12703 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12704 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
12705
774b6a14
TT
12706 TYPE_FIELD_IGNORE_BITS (type) =
12707 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12708 B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
c906108c
SS
12709 }
12710
12711 /* If the type has baseclasses, allocate and clear a bit vector for
12712 TYPE_FIELD_VIRTUAL_BITS. */
b4ba55a1 12713 if (fip->nbaseclasses && cu->language != language_ada)
c906108c
SS
12714 {
12715 int num_bytes = B_BYTES (fip->nbaseclasses);
fe1b8b76 12716 unsigned char *pointer;
c906108c
SS
12717
12718 ALLOCATE_CPLUS_STRUCT_TYPE (type);
224c3ddb 12719 pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
fe1b8b76 12720 TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
c906108c
SS
12721 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
12722 TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
12723 }
12724
3e43a32a
MS
12725 /* Copy the saved-up fields into the field vector. Start from the head of
12726 the list, adding to the tail of the field array, so that they end up in
12727 the same order in the array in which they were added to the list. */
c906108c
SS
12728 while (nfields-- > 0)
12729 {
7d0ccb61
DJ
12730 struct nextfield *fieldp;
12731
12732 if (fip->fields)
12733 {
12734 fieldp = fip->fields;
12735 fip->fields = fieldp->next;
12736 }
12737 else
12738 {
12739 fieldp = fip->baseclasses;
12740 fip->baseclasses = fieldp->next;
12741 }
12742
12743 TYPE_FIELD (type, nfields) = fieldp->field;
12744 switch (fieldp->accessibility)
c906108c 12745 {
c5aa993b 12746 case DW_ACCESS_private:
b4ba55a1
JB
12747 if (cu->language != language_ada)
12748 SET_TYPE_FIELD_PRIVATE (type, nfields);
c5aa993b 12749 break;
c906108c 12750
c5aa993b 12751 case DW_ACCESS_protected:
b4ba55a1
JB
12752 if (cu->language != language_ada)
12753 SET_TYPE_FIELD_PROTECTED (type, nfields);
c5aa993b 12754 break;
c906108c 12755
c5aa993b
JM
12756 case DW_ACCESS_public:
12757 break;
c906108c 12758
c5aa993b
JM
12759 default:
12760 /* Unknown accessibility. Complain and treat it as public. */
12761 {
e2e0b3e5 12762 complaint (&symfile_complaints, _("unsupported accessibility %d"),
7d0ccb61 12763 fieldp->accessibility);
c5aa993b
JM
12764 }
12765 break;
c906108c
SS
12766 }
12767 if (nfields < fip->nbaseclasses)
12768 {
7d0ccb61 12769 switch (fieldp->virtuality)
c906108c 12770 {
c5aa993b
JM
12771 case DW_VIRTUALITY_virtual:
12772 case DW_VIRTUALITY_pure_virtual:
b4ba55a1 12773 if (cu->language == language_ada)
a73c6dcd 12774 error (_("unexpected virtuality in component of Ada type"));
c5aa993b
JM
12775 SET_TYPE_FIELD_VIRTUAL (type, nfields);
12776 break;
c906108c
SS
12777 }
12778 }
c906108c
SS
12779 }
12780}
12781
7d27a96d
TT
12782/* Return true if this member function is a constructor, false
12783 otherwise. */
12784
12785static int
12786dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
12787{
12788 const char *fieldname;
fe978cb0 12789 const char *type_name;
7d27a96d
TT
12790 int len;
12791
12792 if (die->parent == NULL)
12793 return 0;
12794
12795 if (die->parent->tag != DW_TAG_structure_type
12796 && die->parent->tag != DW_TAG_union_type
12797 && die->parent->tag != DW_TAG_class_type)
12798 return 0;
12799
12800 fieldname = dwarf2_name (die, cu);
fe978cb0
PA
12801 type_name = dwarf2_name (die->parent, cu);
12802 if (fieldname == NULL || type_name == NULL)
7d27a96d
TT
12803 return 0;
12804
12805 len = strlen (fieldname);
fe978cb0
PA
12806 return (strncmp (fieldname, type_name, len) == 0
12807 && (type_name[len] == '\0' || type_name[len] == '<'));
7d27a96d
TT
12808}
12809
c906108c
SS
12810/* Add a member function to the proper fieldlist. */
12811
12812static void
107d2387 12813dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
e7c27a73 12814 struct type *type, struct dwarf2_cu *cu)
c906108c 12815{
e7c27a73 12816 struct objfile *objfile = cu->objfile;
c906108c
SS
12817 struct attribute *attr;
12818 struct fnfieldlist *flp;
12819 int i;
12820 struct fn_field *fnp;
15d034d0 12821 const char *fieldname;
c906108c 12822 struct nextfnfield *new_fnfield;
f792889a 12823 struct type *this_type;
60d5a603 12824 enum dwarf_access_attribute accessibility;
c906108c 12825
b4ba55a1 12826 if (cu->language == language_ada)
a73c6dcd 12827 error (_("unexpected member function in Ada type"));
b4ba55a1 12828
2df3850c 12829 /* Get name of member function. */
39cbfefa
DJ
12830 fieldname = dwarf2_name (die, cu);
12831 if (fieldname == NULL)
2df3850c 12832 return;
c906108c 12833
c906108c
SS
12834 /* Look up member function name in fieldlist. */
12835 for (i = 0; i < fip->nfnfields; i++)
12836 {
27bfe10e 12837 if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
c906108c
SS
12838 break;
12839 }
12840
12841 /* Create new list element if necessary. */
12842 if (i < fip->nfnfields)
12843 flp = &fip->fnfieldlists[i];
12844 else
12845 {
12846 if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
12847 {
12848 fip->fnfieldlists = (struct fnfieldlist *)
12849 xrealloc (fip->fnfieldlists,
12850 (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
c5aa993b 12851 * sizeof (struct fnfieldlist));
c906108c 12852 if (fip->nfnfields == 0)
c13c43fd 12853 make_cleanup (free_current_contents, &fip->fnfieldlists);
c906108c
SS
12854 }
12855 flp = &fip->fnfieldlists[fip->nfnfields];
12856 flp->name = fieldname;
12857 flp->length = 0;
12858 flp->head = NULL;
3da10d80 12859 i = fip->nfnfields++;
c906108c
SS
12860 }
12861
12862 /* Create a new member function field and chain it to the field list
0963b4bd 12863 entry. */
8d749320 12864 new_fnfield = XNEW (struct nextfnfield);
b8c9b27d 12865 make_cleanup (xfree, new_fnfield);
c906108c
SS
12866 memset (new_fnfield, 0, sizeof (struct nextfnfield));
12867 new_fnfield->next = flp->head;
12868 flp->head = new_fnfield;
12869 flp->length++;
12870
12871 /* Fill in the member function field info. */
12872 fnp = &new_fnfield->fnfield;
3da10d80
KS
12873
12874 /* Delay processing of the physname until later. */
9c37b5ae 12875 if (cu->language == language_cplus)
3da10d80
KS
12876 {
12877 add_to_method_list (type, i, flp->length - 1, fieldname,
12878 die, cu);
12879 }
12880 else
12881 {
1d06ead6 12882 const char *physname = dwarf2_physname (fieldname, die, cu);
3da10d80
KS
12883 fnp->physname = physname ? physname : "";
12884 }
12885
c906108c 12886 fnp->type = alloc_type (objfile);
f792889a
DJ
12887 this_type = read_type_die (die, cu);
12888 if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
c906108c 12889 {
f792889a 12890 int nparams = TYPE_NFIELDS (this_type);
c906108c 12891
f792889a 12892 /* TYPE is the domain of this method, and THIS_TYPE is the type
e26fb1d7
DC
12893 of the method itself (TYPE_CODE_METHOD). */
12894 smash_to_method_type (fnp->type, type,
f792889a
DJ
12895 TYPE_TARGET_TYPE (this_type),
12896 TYPE_FIELDS (this_type),
12897 TYPE_NFIELDS (this_type),
12898 TYPE_VARARGS (this_type));
c906108c
SS
12899
12900 /* Handle static member functions.
c5aa993b 12901 Dwarf2 has no clean way to discern C++ static and non-static
0963b4bd
MS
12902 member functions. G++ helps GDB by marking the first
12903 parameter for non-static member functions (which is the this
12904 pointer) as artificial. We obtain this information from
12905 read_subroutine_type via TYPE_FIELD_ARTIFICIAL. */
f792889a 12906 if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
c906108c
SS
12907 fnp->voffset = VOFFSET_STATIC;
12908 }
12909 else
e2e0b3e5 12910 complaint (&symfile_complaints, _("member function type missing for '%s'"),
3da10d80 12911 dwarf2_full_name (fieldname, die, cu));
c906108c
SS
12912
12913 /* Get fcontext from DW_AT_containing_type if present. */
e142c38c 12914 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
e7c27a73 12915 fnp->fcontext = die_containing_type (die, cu);
c906108c 12916
3e43a32a
MS
12917 /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
12918 is_volatile is irrelevant, as it is needed by gdb_mangle_name only. */
c906108c
SS
12919
12920 /* Get accessibility. */
e142c38c 12921 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c 12922 if (attr)
aead7601 12923 accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
60d5a603
JK
12924 else
12925 accessibility = dwarf2_default_access_attribute (die, cu);
12926 switch (accessibility)
c906108c 12927 {
60d5a603
JK
12928 case DW_ACCESS_private:
12929 fnp->is_private = 1;
12930 break;
12931 case DW_ACCESS_protected:
12932 fnp->is_protected = 1;
12933 break;
c906108c
SS
12934 }
12935
b02dede2 12936 /* Check for artificial methods. */
e142c38c 12937 attr = dwarf2_attr (die, DW_AT_artificial, cu);
b02dede2
DJ
12938 if (attr && DW_UNSND (attr) != 0)
12939 fnp->is_artificial = 1;
12940
7d27a96d
TT
12941 fnp->is_constructor = dwarf2_is_constructor (die, cu);
12942
0d564a31 12943 /* Get index in virtual function table if it is a virtual member
aec5aa8b
TT
12944 function. For older versions of GCC, this is an offset in the
12945 appropriate virtual table, as specified by DW_AT_containing_type.
12946 For everyone else, it is an expression to be evaluated relative
0d564a31
DJ
12947 to the object address. */
12948
e142c38c 12949 attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
aec5aa8b 12950 if (attr)
8e19ed76 12951 {
aec5aa8b 12952 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
8e19ed76 12953 {
aec5aa8b
TT
12954 if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
12955 {
12956 /* Old-style GCC. */
12957 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
12958 }
12959 else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
12960 || (DW_BLOCK (attr)->size > 1
12961 && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
12962 && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
12963 {
aec5aa8b
TT
12964 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
12965 if ((fnp->voffset % cu->header.addr_size) != 0)
12966 dwarf2_complex_location_expr_complaint ();
12967 else
12968 fnp->voffset /= cu->header.addr_size;
12969 fnp->voffset += 2;
12970 }
12971 else
12972 dwarf2_complex_location_expr_complaint ();
12973
12974 if (!fnp->fcontext)
7e993ebf
KS
12975 {
12976 /* If there is no `this' field and no DW_AT_containing_type,
12977 we cannot actually find a base class context for the
12978 vtable! */
12979 if (TYPE_NFIELDS (this_type) == 0
12980 || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
12981 {
12982 complaint (&symfile_complaints,
12983 _("cannot determine context for virtual member "
12984 "function \"%s\" (offset %d)"),
12985 fieldname, die->offset.sect_off);
12986 }
12987 else
12988 {
12989 fnp->fcontext
12990 = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
12991 }
12992 }
aec5aa8b 12993 }
3690dd37 12994 else if (attr_form_is_section_offset (attr))
8e19ed76 12995 {
4d3c2250 12996 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
12997 }
12998 else
12999 {
4d3c2250
KB
13000 dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
13001 fieldname);
8e19ed76 13002 }
0d564a31 13003 }
d48cc9dd
DJ
13004 else
13005 {
13006 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
13007 if (attr && DW_UNSND (attr))
13008 {
13009 /* GCC does this, as of 2008-08-25; PR debug/37237. */
13010 complaint (&symfile_complaints,
3e43a32a
MS
13011 _("Member function \"%s\" (offset %d) is virtual "
13012 "but the vtable offset is not specified"),
b64f50a1 13013 fieldname, die->offset.sect_off);
9655fd1a 13014 ALLOCATE_CPLUS_STRUCT_TYPE (type);
d48cc9dd
DJ
13015 TYPE_CPLUS_DYNAMIC (type) = 1;
13016 }
13017 }
c906108c
SS
13018}
13019
13020/* Create the vector of member function fields, and attach it to the type. */
13021
13022static void
fba45db2 13023dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 13024 struct dwarf2_cu *cu)
c906108c
SS
13025{
13026 struct fnfieldlist *flp;
c906108c
SS
13027 int i;
13028
b4ba55a1 13029 if (cu->language == language_ada)
a73c6dcd 13030 error (_("unexpected member functions in Ada type"));
b4ba55a1 13031
c906108c
SS
13032 ALLOCATE_CPLUS_STRUCT_TYPE (type);
13033 TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
13034 TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
13035
13036 for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
13037 {
13038 struct nextfnfield *nfp = flp->head;
13039 struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
13040 int k;
13041
13042 TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
13043 TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
13044 fn_flp->fn_fields = (struct fn_field *)
13045 TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
13046 for (k = flp->length; (k--, nfp); nfp = nfp->next)
c5aa993b 13047 fn_flp->fn_fields[k] = nfp->fnfield;
c906108c
SS
13048 }
13049
13050 TYPE_NFN_FIELDS (type) = fip->nfnfields;
c906108c
SS
13051}
13052
1168df01
JB
13053/* Returns non-zero if NAME is the name of a vtable member in CU's
13054 language, zero otherwise. */
13055static int
13056is_vtable_name (const char *name, struct dwarf2_cu *cu)
13057{
13058 static const char vptr[] = "_vptr";
987504bb 13059 static const char vtable[] = "vtable";
1168df01 13060
9c37b5ae
TT
13061 /* Look for the C++ form of the vtable. */
13062 if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
1168df01
JB
13063 return 1;
13064
13065 return 0;
13066}
13067
c0dd20ea 13068/* GCC outputs unnamed structures that are really pointers to member
0b92b5bb
TT
13069 functions, with the ABI-specified layout. If TYPE describes
13070 such a structure, smash it into a member function type.
61049d3b
DJ
13071
13072 GCC shouldn't do this; it should just output pointer to member DIEs.
13073 This is GCC PR debug/28767. */
c0dd20ea 13074
0b92b5bb
TT
13075static void
13076quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
c0dd20ea 13077{
09e2d7c7 13078 struct type *pfn_type, *self_type, *new_type;
c0dd20ea
DJ
13079
13080 /* Check for a structure with no name and two children. */
0b92b5bb
TT
13081 if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
13082 return;
c0dd20ea
DJ
13083
13084 /* Check for __pfn and __delta members. */
0b92b5bb
TT
13085 if (TYPE_FIELD_NAME (type, 0) == NULL
13086 || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
13087 || TYPE_FIELD_NAME (type, 1) == NULL
13088 || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
13089 return;
c0dd20ea
DJ
13090
13091 /* Find the type of the method. */
0b92b5bb 13092 pfn_type = TYPE_FIELD_TYPE (type, 0);
c0dd20ea
DJ
13093 if (pfn_type == NULL
13094 || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
13095 || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
0b92b5bb 13096 return;
c0dd20ea
DJ
13097
13098 /* Look for the "this" argument. */
13099 pfn_type = TYPE_TARGET_TYPE (pfn_type);
13100 if (TYPE_NFIELDS (pfn_type) == 0
0b92b5bb 13101 /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
c0dd20ea 13102 || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
0b92b5bb 13103 return;
c0dd20ea 13104
09e2d7c7 13105 self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
0b92b5bb 13106 new_type = alloc_type (objfile);
09e2d7c7 13107 smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
c0dd20ea
DJ
13108 TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
13109 TYPE_VARARGS (pfn_type));
0b92b5bb 13110 smash_to_methodptr_type (type, new_type);
c0dd20ea 13111}
1168df01 13112
685b1105
JK
13113/* Return non-zero if the CU's PRODUCER string matches the Intel C/C++ compiler
13114 (icc). */
13115
13116static int
13117producer_is_icc (struct dwarf2_cu *cu)
13118{
13119 if (!cu->checked_producer)
13120 check_producer (cu);
13121
13122 return cu->producer_is_icc;
13123}
13124
c906108c 13125/* Called when we find the DIE that starts a structure or union scope
c767944b
DJ
13126 (definition) to create a type for the structure or union. Fill in
13127 the type's name and general properties; the members will not be
83655187
DE
13128 processed until process_structure_scope. A symbol table entry for
13129 the type will also not be done until process_structure_scope (assuming
13130 the type has a name).
c906108c 13131
c767944b
DJ
13132 NOTE: we need to call these functions regardless of whether or not the
13133 DIE has a DW_AT_name attribute, since it might be an anonymous
c906108c 13134 structure or union. This gets the type entered into our set of
83655187 13135 user defined types. */
c906108c 13136
f792889a 13137static struct type *
134d01f1 13138read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13139{
e7c27a73 13140 struct objfile *objfile = cu->objfile;
c906108c
SS
13141 struct type *type;
13142 struct attribute *attr;
15d034d0 13143 const char *name;
c906108c 13144
348e048f
DE
13145 /* If the definition of this type lives in .debug_types, read that type.
13146 Don't follow DW_AT_specification though, that will take us back up
13147 the chain and we want to go down. */
45e58e77 13148 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
348e048f
DE
13149 if (attr)
13150 {
ac9ec31b 13151 type = get_DW_AT_signature_type (die, attr, cu);
9dc481d3 13152
ac9ec31b 13153 /* The type's CU may not be the same as CU.
02142a6c 13154 Ensure TYPE is recorded with CU in die_type_hash. */
348e048f
DE
13155 return set_die_type (die, type, cu);
13156 }
13157
c0dd20ea 13158 type = alloc_type (objfile);
c906108c 13159 INIT_CPLUS_SPECIFIC (type);
93311388 13160
39cbfefa
DJ
13161 name = dwarf2_name (die, cu);
13162 if (name != NULL)
c906108c 13163 {
987504bb 13164 if (cu->language == language_cplus
c44af4eb
TT
13165 || cu->language == language_d
13166 || cu->language == language_rust)
63d06c5c 13167 {
15d034d0 13168 const char *full_name = dwarf2_full_name (name, die, cu);
3da10d80
KS
13169
13170 /* dwarf2_full_name might have already finished building the DIE's
13171 type. If so, there is no need to continue. */
13172 if (get_die_type (die, cu) != NULL)
13173 return get_die_type (die, cu);
13174
13175 TYPE_TAG_NAME (type) = full_name;
94af9270
KS
13176 if (die->tag == DW_TAG_structure_type
13177 || die->tag == DW_TAG_class_type)
13178 TYPE_NAME (type) = TYPE_TAG_NAME (type);
63d06c5c
DC
13179 }
13180 else
13181 {
d8151005
DJ
13182 /* The name is already allocated along with this objfile, so
13183 we don't need to duplicate it for the type. */
7d455152 13184 TYPE_TAG_NAME (type) = name;
94af9270
KS
13185 if (die->tag == DW_TAG_class_type)
13186 TYPE_NAME (type) = TYPE_TAG_NAME (type);
63d06c5c 13187 }
c906108c
SS
13188 }
13189
13190 if (die->tag == DW_TAG_structure_type)
13191 {
13192 TYPE_CODE (type) = TYPE_CODE_STRUCT;
13193 }
13194 else if (die->tag == DW_TAG_union_type)
13195 {
13196 TYPE_CODE (type) = TYPE_CODE_UNION;
13197 }
13198 else
13199 {
4753d33b 13200 TYPE_CODE (type) = TYPE_CODE_STRUCT;
c906108c
SS
13201 }
13202
0cc2414c
TT
13203 if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
13204 TYPE_DECLARED_CLASS (type) = 1;
13205
e142c38c 13206 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
13207 if (attr)
13208 {
155bfbd3
JB
13209 if (attr_form_is_constant (attr))
13210 TYPE_LENGTH (type) = DW_UNSND (attr);
13211 else
13212 {
13213 /* For the moment, dynamic type sizes are not supported
13214 by GDB's struct type. The actual size is determined
13215 on-demand when resolving the type of a given object,
13216 so set the type's length to zero for now. Otherwise,
13217 we record an expression as the length, and that expression
13218 could lead to a very large value, which could eventually
13219 lead to us trying to allocate that much memory when creating
13220 a value of that type. */
13221 TYPE_LENGTH (type) = 0;
13222 }
c906108c
SS
13223 }
13224 else
13225 {
13226 TYPE_LENGTH (type) = 0;
13227 }
13228
422b1cb0 13229 if (producer_is_icc (cu) && (TYPE_LENGTH (type) == 0))
685b1105
JK
13230 {
13231 /* ICC does not output the required DW_AT_declaration
13232 on incomplete types, but gives them a size of zero. */
422b1cb0 13233 TYPE_STUB (type) = 1;
685b1105
JK
13234 }
13235 else
13236 TYPE_STUB_SUPPORTED (type) = 1;
13237
dc718098 13238 if (die_is_declaration (die, cu))
876cecd0 13239 TYPE_STUB (type) = 1;
a6c727b2
DJ
13240 else if (attr == NULL && die->child == NULL
13241 && producer_is_realview (cu->producer))
13242 /* RealView does not output the required DW_AT_declaration
13243 on incomplete types. */
13244 TYPE_STUB (type) = 1;
dc718098 13245
c906108c
SS
13246 /* We need to add the type field to the die immediately so we don't
13247 infinitely recurse when dealing with pointers to the structure
0963b4bd 13248 type within the structure itself. */
1c379e20 13249 set_die_type (die, type, cu);
c906108c 13250
7e314c57
JK
13251 /* set_die_type should be already done. */
13252 set_descriptive_type (type, die, cu);
13253
c767944b
DJ
13254 return type;
13255}
13256
13257/* Finish creating a structure or union type, including filling in
13258 its members and creating a symbol for it. */
13259
13260static void
13261process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
13262{
13263 struct objfile *objfile = cu->objfile;
ca040673 13264 struct die_info *child_die;
c767944b
DJ
13265 struct type *type;
13266
13267 type = get_die_type (die, cu);
13268 if (type == NULL)
13269 type = read_structure_type (die, cu);
13270
e142c38c 13271 if (die->child != NULL && ! die_is_declaration (die, cu))
c906108c
SS
13272 {
13273 struct field_info fi;
34eaf542 13274 VEC (symbolp) *template_args = NULL;
c767944b 13275 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
c906108c
SS
13276
13277 memset (&fi, 0, sizeof (struct field_info));
13278
639d11d3 13279 child_die = die->child;
c906108c
SS
13280
13281 while (child_die && child_die->tag)
13282 {
a9a9bd0f
DC
13283 if (child_die->tag == DW_TAG_member
13284 || child_die->tag == DW_TAG_variable)
c906108c 13285 {
a9a9bd0f
DC
13286 /* NOTE: carlton/2002-11-05: A C++ static data member
13287 should be a DW_TAG_member that is a declaration, but
13288 all versions of G++ as of this writing (so through at
13289 least 3.2.1) incorrectly generate DW_TAG_variable
13290 tags for them instead. */
e7c27a73 13291 dwarf2_add_field (&fi, child_die, cu);
c906108c 13292 }
8713b1b1 13293 else if (child_die->tag == DW_TAG_subprogram)
c906108c 13294 {
e98c9e7c
TT
13295 /* Rust doesn't have member functions in the C++ sense.
13296 However, it does emit ordinary functions as children
13297 of a struct DIE. */
13298 if (cu->language == language_rust)
13299 read_func_scope (child_die, cu);
13300 else
13301 {
13302 /* C++ member function. */
13303 dwarf2_add_member_fn (&fi, child_die, type, cu);
13304 }
c906108c
SS
13305 }
13306 else if (child_die->tag == DW_TAG_inheritance)
13307 {
13308 /* C++ base class field. */
e7c27a73 13309 dwarf2_add_field (&fi, child_die, cu);
c906108c 13310 }
98751a41
JK
13311 else if (child_die->tag == DW_TAG_typedef)
13312 dwarf2_add_typedef (&fi, child_die, cu);
34eaf542
TT
13313 else if (child_die->tag == DW_TAG_template_type_param
13314 || child_die->tag == DW_TAG_template_value_param)
13315 {
13316 struct symbol *arg = new_symbol (child_die, NULL, cu);
13317
f1078f66
DJ
13318 if (arg != NULL)
13319 VEC_safe_push (symbolp, template_args, arg);
34eaf542
TT
13320 }
13321
c906108c
SS
13322 child_die = sibling_die (child_die);
13323 }
13324
34eaf542
TT
13325 /* Attach template arguments to type. */
13326 if (! VEC_empty (symbolp, template_args))
13327 {
13328 ALLOCATE_CPLUS_STRUCT_TYPE (type);
13329 TYPE_N_TEMPLATE_ARGUMENTS (type)
13330 = VEC_length (symbolp, template_args);
13331 TYPE_TEMPLATE_ARGUMENTS (type)
8d749320
SM
13332 = XOBNEWVEC (&objfile->objfile_obstack,
13333 struct symbol *,
13334 TYPE_N_TEMPLATE_ARGUMENTS (type));
34eaf542
TT
13335 memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
13336 VEC_address (symbolp, template_args),
13337 (TYPE_N_TEMPLATE_ARGUMENTS (type)
13338 * sizeof (struct symbol *)));
13339 VEC_free (symbolp, template_args);
13340 }
13341
c906108c
SS
13342 /* Attach fields and member functions to the type. */
13343 if (fi.nfields)
e7c27a73 13344 dwarf2_attach_fields_to_type (&fi, type, cu);
c906108c
SS
13345 if (fi.nfnfields)
13346 {
e7c27a73 13347 dwarf2_attach_fn_fields_to_type (&fi, type, cu);
c906108c 13348
c5aa993b 13349 /* Get the type which refers to the base class (possibly this
c906108c 13350 class itself) which contains the vtable pointer for the current
0d564a31
DJ
13351 class from the DW_AT_containing_type attribute. This use of
13352 DW_AT_containing_type is a GNU extension. */
c906108c 13353
e142c38c 13354 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
c906108c 13355 {
e7c27a73 13356 struct type *t = die_containing_type (die, cu);
c906108c 13357
ae6ae975 13358 set_type_vptr_basetype (type, t);
c906108c
SS
13359 if (type == t)
13360 {
c906108c
SS
13361 int i;
13362
13363 /* Our own class provides vtbl ptr. */
13364 for (i = TYPE_NFIELDS (t) - 1;
13365 i >= TYPE_N_BASECLASSES (t);
13366 --i)
13367 {
0d5cff50 13368 const char *fieldname = TYPE_FIELD_NAME (t, i);
c906108c 13369
1168df01 13370 if (is_vtable_name (fieldname, cu))
c906108c 13371 {
ae6ae975 13372 set_type_vptr_fieldno (type, i);
c906108c
SS
13373 break;
13374 }
13375 }
13376
13377 /* Complain if virtual function table field not found. */
13378 if (i < TYPE_N_BASECLASSES (t))
4d3c2250 13379 complaint (&symfile_complaints,
3e43a32a
MS
13380 _("virtual function table pointer "
13381 "not found when defining class '%s'"),
4d3c2250
KB
13382 TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
13383 "");
c906108c
SS
13384 }
13385 else
13386 {
ae6ae975 13387 set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
c906108c
SS
13388 }
13389 }
f6235d4c 13390 else if (cu->producer
61012eef 13391 && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
f6235d4c
EZ
13392 {
13393 /* The IBM XLC compiler does not provide direct indication
13394 of the containing type, but the vtable pointer is
13395 always named __vfp. */
13396
13397 int i;
13398
13399 for (i = TYPE_NFIELDS (type) - 1;
13400 i >= TYPE_N_BASECLASSES (type);
13401 --i)
13402 {
13403 if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
13404 {
ae6ae975
DE
13405 set_type_vptr_fieldno (type, i);
13406 set_type_vptr_basetype (type, type);
f6235d4c
EZ
13407 break;
13408 }
13409 }
13410 }
c906108c 13411 }
98751a41
JK
13412
13413 /* Copy fi.typedef_field_list linked list elements content into the
13414 allocated array TYPE_TYPEDEF_FIELD_ARRAY (type). */
13415 if (fi.typedef_field_list)
13416 {
13417 int i = fi.typedef_field_list_count;
13418
a0d7a4ff 13419 ALLOCATE_CPLUS_STRUCT_TYPE (type);
98751a41 13420 TYPE_TYPEDEF_FIELD_ARRAY (type)
224c3ddb
SM
13421 = ((struct typedef_field *)
13422 TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i));
98751a41
JK
13423 TYPE_TYPEDEF_FIELD_COUNT (type) = i;
13424
13425 /* Reverse the list order to keep the debug info elements order. */
13426 while (--i >= 0)
13427 {
13428 struct typedef_field *dest, *src;
6e70227d 13429
98751a41
JK
13430 dest = &TYPE_TYPEDEF_FIELD (type, i);
13431 src = &fi.typedef_field_list->field;
13432 fi.typedef_field_list = fi.typedef_field_list->next;
13433 *dest = *src;
13434 }
13435 }
c767944b
DJ
13436
13437 do_cleanups (back_to);
c906108c 13438 }
63d06c5c 13439
bb5ed363 13440 quirk_gcc_member_function_pointer (type, objfile);
0b92b5bb 13441
90aeadfc
DC
13442 /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
13443 snapshots) has been known to create a die giving a declaration
13444 for a class that has, as a child, a die giving a definition for a
13445 nested class. So we have to process our children even if the
13446 current die is a declaration. Normally, of course, a declaration
13447 won't have any children at all. */
134d01f1 13448
ca040673
DE
13449 child_die = die->child;
13450
90aeadfc
DC
13451 while (child_die != NULL && child_die->tag)
13452 {
13453 if (child_die->tag == DW_TAG_member
13454 || child_die->tag == DW_TAG_variable
34eaf542
TT
13455 || child_die->tag == DW_TAG_inheritance
13456 || child_die->tag == DW_TAG_template_value_param
13457 || child_die->tag == DW_TAG_template_type_param)
134d01f1 13458 {
90aeadfc 13459 /* Do nothing. */
134d01f1 13460 }
90aeadfc
DC
13461 else
13462 process_die (child_die, cu);
134d01f1 13463
90aeadfc 13464 child_die = sibling_die (child_die);
134d01f1
DJ
13465 }
13466
fa4028e9
JB
13467 /* Do not consider external references. According to the DWARF standard,
13468 these DIEs are identified by the fact that they have no byte_size
13469 attribute, and a declaration attribute. */
13470 if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
13471 || !die_is_declaration (die, cu))
c767944b 13472 new_symbol (die, type, cu);
134d01f1
DJ
13473}
13474
55426c9d
JB
13475/* Assuming DIE is an enumeration type, and TYPE is its associated type,
13476 update TYPE using some information only available in DIE's children. */
13477
13478static void
13479update_enumeration_type_from_children (struct die_info *die,
13480 struct type *type,
13481 struct dwarf2_cu *cu)
13482{
13483 struct obstack obstack;
60f7655a 13484 struct die_info *child_die;
55426c9d
JB
13485 int unsigned_enum = 1;
13486 int flag_enum = 1;
13487 ULONGEST mask = 0;
13488 struct cleanup *old_chain;
13489
13490 obstack_init (&obstack);
13491 old_chain = make_cleanup_obstack_free (&obstack);
13492
60f7655a
DE
13493 for (child_die = die->child;
13494 child_die != NULL && child_die->tag;
13495 child_die = sibling_die (child_die))
55426c9d
JB
13496 {
13497 struct attribute *attr;
13498 LONGEST value;
13499 const gdb_byte *bytes;
13500 struct dwarf2_locexpr_baton *baton;
13501 const char *name;
60f7655a 13502
55426c9d
JB
13503 if (child_die->tag != DW_TAG_enumerator)
13504 continue;
13505
13506 attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
13507 if (attr == NULL)
13508 continue;
13509
13510 name = dwarf2_name (child_die, cu);
13511 if (name == NULL)
13512 name = "<anonymous enumerator>";
13513
13514 dwarf2_const_value_attr (attr, type, name, &obstack, cu,
13515 &value, &bytes, &baton);
13516 if (value < 0)
13517 {
13518 unsigned_enum = 0;
13519 flag_enum = 0;
13520 }
13521 else if ((mask & value) != 0)
13522 flag_enum = 0;
13523 else
13524 mask |= value;
13525
13526 /* If we already know that the enum type is neither unsigned, nor
13527 a flag type, no need to look at the rest of the enumerates. */
13528 if (!unsigned_enum && !flag_enum)
13529 break;
55426c9d
JB
13530 }
13531
13532 if (unsigned_enum)
13533 TYPE_UNSIGNED (type) = 1;
13534 if (flag_enum)
13535 TYPE_FLAG_ENUM (type) = 1;
13536
13537 do_cleanups (old_chain);
13538}
13539
134d01f1
DJ
13540/* Given a DW_AT_enumeration_type die, set its type. We do not
13541 complete the type's fields yet, or create any symbols. */
c906108c 13542
f792889a 13543static struct type *
134d01f1 13544read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13545{
e7c27a73 13546 struct objfile *objfile = cu->objfile;
c906108c 13547 struct type *type;
c906108c 13548 struct attribute *attr;
0114d602 13549 const char *name;
134d01f1 13550
348e048f
DE
13551 /* If the definition of this type lives in .debug_types, read that type.
13552 Don't follow DW_AT_specification though, that will take us back up
13553 the chain and we want to go down. */
45e58e77 13554 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
348e048f
DE
13555 if (attr)
13556 {
ac9ec31b 13557 type = get_DW_AT_signature_type (die, attr, cu);
9dc481d3 13558
ac9ec31b 13559 /* The type's CU may not be the same as CU.
02142a6c 13560 Ensure TYPE is recorded with CU in die_type_hash. */
348e048f
DE
13561 return set_die_type (die, type, cu);
13562 }
13563
c906108c
SS
13564 type = alloc_type (objfile);
13565
13566 TYPE_CODE (type) = TYPE_CODE_ENUM;
94af9270 13567 name = dwarf2_full_name (NULL, die, cu);
39cbfefa 13568 if (name != NULL)
7d455152 13569 TYPE_TAG_NAME (type) = name;
c906108c 13570
0626fc76
TT
13571 attr = dwarf2_attr (die, DW_AT_type, cu);
13572 if (attr != NULL)
13573 {
13574 struct type *underlying_type = die_type (die, cu);
13575
13576 TYPE_TARGET_TYPE (type) = underlying_type;
13577 }
13578
e142c38c 13579 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
13580 if (attr)
13581 {
13582 TYPE_LENGTH (type) = DW_UNSND (attr);
13583 }
13584 else
13585 {
13586 TYPE_LENGTH (type) = 0;
13587 }
13588
137033e9
JB
13589 /* The enumeration DIE can be incomplete. In Ada, any type can be
13590 declared as private in the package spec, and then defined only
13591 inside the package body. Such types are known as Taft Amendment
13592 Types. When another package uses such a type, an incomplete DIE
13593 may be generated by the compiler. */
02eb380e 13594 if (die_is_declaration (die, cu))
876cecd0 13595 TYPE_STUB (type) = 1;
02eb380e 13596
0626fc76
TT
13597 /* Finish the creation of this type by using the enum's children.
13598 We must call this even when the underlying type has been provided
13599 so that we can determine if we're looking at a "flag" enum. */
55426c9d
JB
13600 update_enumeration_type_from_children (die, type, cu);
13601
0626fc76
TT
13602 /* If this type has an underlying type that is not a stub, then we
13603 may use its attributes. We always use the "unsigned" attribute
13604 in this situation, because ordinarily we guess whether the type
13605 is unsigned -- but the guess can be wrong and the underlying type
13606 can tell us the reality. However, we defer to a local size
13607 attribute if one exists, because this lets the compiler override
13608 the underlying type if needed. */
13609 if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
13610 {
13611 TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
13612 if (TYPE_LENGTH (type) == 0)
13613 TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
13614 }
13615
3d567982
TT
13616 TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
13617
f792889a 13618 return set_die_type (die, type, cu);
134d01f1
DJ
13619}
13620
13621/* Given a pointer to a die which begins an enumeration, process all
13622 the dies that define the members of the enumeration, and create the
13623 symbol for the enumeration type.
13624
13625 NOTE: We reverse the order of the element list. */
13626
13627static void
13628process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
13629{
f792889a 13630 struct type *this_type;
134d01f1 13631
f792889a
DJ
13632 this_type = get_die_type (die, cu);
13633 if (this_type == NULL)
13634 this_type = read_enumeration_type (die, cu);
9dc481d3 13635
639d11d3 13636 if (die->child != NULL)
c906108c 13637 {
9dc481d3
DE
13638 struct die_info *child_die;
13639 struct symbol *sym;
13640 struct field *fields = NULL;
13641 int num_fields = 0;
15d034d0 13642 const char *name;
9dc481d3 13643
639d11d3 13644 child_die = die->child;
c906108c
SS
13645 while (child_die && child_die->tag)
13646 {
13647 if (child_die->tag != DW_TAG_enumerator)
13648 {
e7c27a73 13649 process_die (child_die, cu);
c906108c
SS
13650 }
13651 else
13652 {
39cbfefa
DJ
13653 name = dwarf2_name (child_die, cu);
13654 if (name)
c906108c 13655 {
f792889a 13656 sym = new_symbol (child_die, this_type, cu);
c906108c
SS
13657
13658 if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
13659 {
13660 fields = (struct field *)
13661 xrealloc (fields,
13662 (num_fields + DW_FIELD_ALLOC_CHUNK)
c5aa993b 13663 * sizeof (struct field));
c906108c
SS
13664 }
13665
3567439c 13666 FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
c906108c 13667 FIELD_TYPE (fields[num_fields]) = NULL;
14e75d8e 13668 SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
c906108c
SS
13669 FIELD_BITSIZE (fields[num_fields]) = 0;
13670
13671 num_fields++;
13672 }
13673 }
13674
13675 child_die = sibling_die (child_die);
13676 }
13677
13678 if (num_fields)
13679 {
f792889a
DJ
13680 TYPE_NFIELDS (this_type) = num_fields;
13681 TYPE_FIELDS (this_type) = (struct field *)
13682 TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
13683 memcpy (TYPE_FIELDS (this_type), fields,
c906108c 13684 sizeof (struct field) * num_fields);
b8c9b27d 13685 xfree (fields);
c906108c 13686 }
c906108c 13687 }
134d01f1 13688
6c83ed52
TT
13689 /* If we are reading an enum from a .debug_types unit, and the enum
13690 is a declaration, and the enum is not the signatured type in the
13691 unit, then we do not want to add a symbol for it. Adding a
13692 symbol would in some cases obscure the true definition of the
13693 enum, giving users an incomplete type when the definition is
13694 actually available. Note that we do not want to do this for all
13695 enums which are just declarations, because C++0x allows forward
13696 enum declarations. */
3019eac3 13697 if (cu->per_cu->is_debug_types
6c83ed52
TT
13698 && die_is_declaration (die, cu))
13699 {
52dc124a 13700 struct signatured_type *sig_type;
6c83ed52 13701
c0f78cd4 13702 sig_type = (struct signatured_type *) cu->per_cu;
3019eac3
DE
13703 gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
13704 if (sig_type->type_offset_in_section.sect_off != die->offset.sect_off)
6c83ed52
TT
13705 return;
13706 }
13707
f792889a 13708 new_symbol (die, this_type, cu);
c906108c
SS
13709}
13710
13711/* Extract all information from a DW_TAG_array_type DIE and put it in
13712 the DIE's type field. For now, this only handles one dimensional
13713 arrays. */
13714
f792889a 13715static struct type *
e7c27a73 13716read_array_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13717{
e7c27a73 13718 struct objfile *objfile = cu->objfile;
c906108c 13719 struct die_info *child_die;
7e314c57 13720 struct type *type;
c906108c
SS
13721 struct type *element_type, *range_type, *index_type;
13722 struct type **range_types = NULL;
13723 struct attribute *attr;
13724 int ndim = 0;
13725 struct cleanup *back_to;
15d034d0 13726 const char *name;
dc53a7ad 13727 unsigned int bit_stride = 0;
c906108c 13728
e7c27a73 13729 element_type = die_type (die, cu);
c906108c 13730
7e314c57
JK
13731 /* The die_type call above may have already set the type for this DIE. */
13732 type = get_die_type (die, cu);
13733 if (type)
13734 return type;
13735
dc53a7ad
JB
13736 attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
13737 if (attr != NULL)
13738 bit_stride = DW_UNSND (attr) * 8;
13739
13740 attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
13741 if (attr != NULL)
13742 bit_stride = DW_UNSND (attr);
13743
c906108c
SS
13744 /* Irix 6.2 native cc creates array types without children for
13745 arrays with unspecified length. */
639d11d3 13746 if (die->child == NULL)
c906108c 13747 {
46bf5051 13748 index_type = objfile_type (objfile)->builtin_int;
0c9c3474 13749 range_type = create_static_range_type (NULL, index_type, 0, -1);
dc53a7ad
JB
13750 type = create_array_type_with_stride (NULL, element_type, range_type,
13751 bit_stride);
f792889a 13752 return set_die_type (die, type, cu);
c906108c
SS
13753 }
13754
13755 back_to = make_cleanup (null_cleanup, NULL);
639d11d3 13756 child_die = die->child;
c906108c
SS
13757 while (child_die && child_die->tag)
13758 {
13759 if (child_die->tag == DW_TAG_subrange_type)
13760 {
f792889a 13761 struct type *child_type = read_type_die (child_die, cu);
9a619af0 13762
f792889a 13763 if (child_type != NULL)
a02abb62 13764 {
0963b4bd
MS
13765 /* The range type was succesfully read. Save it for the
13766 array type creation. */
a02abb62
JB
13767 if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
13768 {
13769 range_types = (struct type **)
13770 xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
13771 * sizeof (struct type *));
13772 if (ndim == 0)
13773 make_cleanup (free_current_contents, &range_types);
13774 }
f792889a 13775 range_types[ndim++] = child_type;
a02abb62 13776 }
c906108c
SS
13777 }
13778 child_die = sibling_die (child_die);
13779 }
13780
13781 /* Dwarf2 dimensions are output from left to right, create the
13782 necessary array types in backwards order. */
7ca2d3a3 13783
c906108c 13784 type = element_type;
7ca2d3a3
DL
13785
13786 if (read_array_order (die, cu) == DW_ORD_col_major)
13787 {
13788 int i = 0;
9a619af0 13789
7ca2d3a3 13790 while (i < ndim)
dc53a7ad
JB
13791 type = create_array_type_with_stride (NULL, type, range_types[i++],
13792 bit_stride);
7ca2d3a3
DL
13793 }
13794 else
13795 {
13796 while (ndim-- > 0)
dc53a7ad
JB
13797 type = create_array_type_with_stride (NULL, type, range_types[ndim],
13798 bit_stride);
7ca2d3a3 13799 }
c906108c 13800
f5f8a009
EZ
13801 /* Understand Dwarf2 support for vector types (like they occur on
13802 the PowerPC w/ AltiVec). Gcc just adds another attribute to the
13803 array type. This is not part of the Dwarf2/3 standard yet, but a
13804 custom vendor extension. The main difference between a regular
13805 array and the vector variant is that vectors are passed by value
13806 to functions. */
e142c38c 13807 attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
f5f8a009 13808 if (attr)
ea37ba09 13809 make_vector_type (type);
f5f8a009 13810
dbc98a8b
KW
13811 /* The DIE may have DW_AT_byte_size set. For example an OpenCL
13812 implementation may choose to implement triple vectors using this
13813 attribute. */
13814 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13815 if (attr)
13816 {
13817 if (DW_UNSND (attr) >= TYPE_LENGTH (type))
13818 TYPE_LENGTH (type) = DW_UNSND (attr);
13819 else
3e43a32a
MS
13820 complaint (&symfile_complaints,
13821 _("DW_AT_byte_size for array type smaller "
13822 "than the total size of elements"));
dbc98a8b
KW
13823 }
13824
39cbfefa
DJ
13825 name = dwarf2_name (die, cu);
13826 if (name)
13827 TYPE_NAME (type) = name;
6e70227d 13828
0963b4bd 13829 /* Install the type in the die. */
7e314c57
JK
13830 set_die_type (die, type, cu);
13831
13832 /* set_die_type should be already done. */
b4ba55a1
JB
13833 set_descriptive_type (type, die, cu);
13834
c906108c
SS
13835 do_cleanups (back_to);
13836
7e314c57 13837 return type;
c906108c
SS
13838}
13839
7ca2d3a3 13840static enum dwarf_array_dim_ordering
6e70227d 13841read_array_order (struct die_info *die, struct dwarf2_cu *cu)
7ca2d3a3
DL
13842{
13843 struct attribute *attr;
13844
13845 attr = dwarf2_attr (die, DW_AT_ordering, cu);
13846
aead7601
SM
13847 if (attr)
13848 return (enum dwarf_array_dim_ordering) DW_SND (attr);
7ca2d3a3 13849
0963b4bd
MS
13850 /* GNU F77 is a special case, as at 08/2004 array type info is the
13851 opposite order to the dwarf2 specification, but data is still
13852 laid out as per normal fortran.
7ca2d3a3 13853
0963b4bd
MS
13854 FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
13855 version checking. */
7ca2d3a3 13856
905e0470
PM
13857 if (cu->language == language_fortran
13858 && cu->producer && strstr (cu->producer, "GNU F77"))
7ca2d3a3
DL
13859 {
13860 return DW_ORD_row_major;
13861 }
13862
6e70227d 13863 switch (cu->language_defn->la_array_ordering)
7ca2d3a3
DL
13864 {
13865 case array_column_major:
13866 return DW_ORD_col_major;
13867 case array_row_major:
13868 default:
13869 return DW_ORD_row_major;
13870 };
13871}
13872
72019c9c 13873/* Extract all information from a DW_TAG_set_type DIE and put it in
0963b4bd 13874 the DIE's type field. */
72019c9c 13875
f792889a 13876static struct type *
72019c9c
GM
13877read_set_type (struct die_info *die, struct dwarf2_cu *cu)
13878{
7e314c57
JK
13879 struct type *domain_type, *set_type;
13880 struct attribute *attr;
f792889a 13881
7e314c57
JK
13882 domain_type = die_type (die, cu);
13883
13884 /* The die_type call above may have already set the type for this DIE. */
13885 set_type = get_die_type (die, cu);
13886 if (set_type)
13887 return set_type;
13888
13889 set_type = create_set_type (NULL, domain_type);
13890
13891 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
d09039dd
PM
13892 if (attr)
13893 TYPE_LENGTH (set_type) = DW_UNSND (attr);
7e314c57 13894
f792889a 13895 return set_die_type (die, set_type, cu);
72019c9c 13896}
7ca2d3a3 13897
0971de02
TT
13898/* A helper for read_common_block that creates a locexpr baton.
13899 SYM is the symbol which we are marking as computed.
13900 COMMON_DIE is the DIE for the common block.
13901 COMMON_LOC is the location expression attribute for the common
13902 block itself.
13903 MEMBER_LOC is the location expression attribute for the particular
13904 member of the common block that we are processing.
13905 CU is the CU from which the above come. */
13906
13907static void
13908mark_common_block_symbol_computed (struct symbol *sym,
13909 struct die_info *common_die,
13910 struct attribute *common_loc,
13911 struct attribute *member_loc,
13912 struct dwarf2_cu *cu)
13913{
13914 struct objfile *objfile = dwarf2_per_objfile->objfile;
13915 struct dwarf2_locexpr_baton *baton;
13916 gdb_byte *ptr;
13917 unsigned int cu_off;
13918 enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
13919 LONGEST offset = 0;
13920
13921 gdb_assert (common_loc && member_loc);
13922 gdb_assert (attr_form_is_block (common_loc));
13923 gdb_assert (attr_form_is_block (member_loc)
13924 || attr_form_is_constant (member_loc));
13925
8d749320 13926 baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
0971de02
TT
13927 baton->per_cu = cu->per_cu;
13928 gdb_assert (baton->per_cu);
13929
13930 baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
13931
13932 if (attr_form_is_constant (member_loc))
13933 {
13934 offset = dwarf2_get_attr_constant_value (member_loc, 0);
13935 baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
13936 }
13937 else
13938 baton->size += DW_BLOCK (member_loc)->size;
13939
224c3ddb 13940 ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
0971de02
TT
13941 baton->data = ptr;
13942
13943 *ptr++ = DW_OP_call4;
13944 cu_off = common_die->offset.sect_off - cu->per_cu->offset.sect_off;
13945 store_unsigned_integer (ptr, 4, byte_order, cu_off);
13946 ptr += 4;
13947
13948 if (attr_form_is_constant (member_loc))
13949 {
13950 *ptr++ = DW_OP_addr;
13951 store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
13952 ptr += cu->header.addr_size;
13953 }
13954 else
13955 {
13956 /* We have to copy the data here, because DW_OP_call4 will only
13957 use a DW_AT_location attribute. */
13958 memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
13959 ptr += DW_BLOCK (member_loc)->size;
13960 }
13961
13962 *ptr++ = DW_OP_plus;
13963 gdb_assert (ptr - baton->data == baton->size);
13964
0971de02 13965 SYMBOL_LOCATION_BATON (sym) = baton;
f1e6e072 13966 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
0971de02
TT
13967}
13968
4357ac6c
TT
13969/* Create appropriate locally-scoped variables for all the
13970 DW_TAG_common_block entries. Also create a struct common_block
13971 listing all such variables for `info common'. COMMON_BLOCK_DOMAIN
13972 is used to sepate the common blocks name namespace from regular
13973 variable names. */
c906108c
SS
13974
13975static void
e7c27a73 13976read_common_block (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13977{
0971de02
TT
13978 struct attribute *attr;
13979
13980 attr = dwarf2_attr (die, DW_AT_location, cu);
13981 if (attr)
13982 {
13983 /* Support the .debug_loc offsets. */
13984 if (attr_form_is_block (attr))
13985 {
13986 /* Ok. */
13987 }
13988 else if (attr_form_is_section_offset (attr))
13989 {
13990 dwarf2_complex_location_expr_complaint ();
13991 attr = NULL;
13992 }
13993 else
13994 {
13995 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
13996 "common block member");
13997 attr = NULL;
13998 }
13999 }
14000
639d11d3 14001 if (die->child != NULL)
c906108c 14002 {
4357ac6c
TT
14003 struct objfile *objfile = cu->objfile;
14004 struct die_info *child_die;
14005 size_t n_entries = 0, size;
14006 struct common_block *common_block;
14007 struct symbol *sym;
74ac6d43 14008
4357ac6c
TT
14009 for (child_die = die->child;
14010 child_die && child_die->tag;
14011 child_die = sibling_die (child_die))
14012 ++n_entries;
14013
14014 size = (sizeof (struct common_block)
14015 + (n_entries - 1) * sizeof (struct symbol *));
224c3ddb
SM
14016 common_block
14017 = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
14018 size);
4357ac6c
TT
14019 memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
14020 common_block->n_entries = 0;
14021
14022 for (child_die = die->child;
14023 child_die && child_die->tag;
14024 child_die = sibling_die (child_die))
14025 {
14026 /* Create the symbol in the DW_TAG_common_block block in the current
14027 symbol scope. */
e7c27a73 14028 sym = new_symbol (child_die, NULL, cu);
0971de02
TT
14029 if (sym != NULL)
14030 {
14031 struct attribute *member_loc;
14032
14033 common_block->contents[common_block->n_entries++] = sym;
14034
14035 member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
14036 cu);
14037 if (member_loc)
14038 {
14039 /* GDB has handled this for a long time, but it is
14040 not specified by DWARF. It seems to have been
14041 emitted by gfortran at least as recently as:
14042 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057. */
14043 complaint (&symfile_complaints,
14044 _("Variable in common block has "
14045 "DW_AT_data_member_location "
14046 "- DIE at 0x%x [in module %s]"),
4262abfb
JK
14047 child_die->offset.sect_off,
14048 objfile_name (cu->objfile));
0971de02
TT
14049
14050 if (attr_form_is_section_offset (member_loc))
14051 dwarf2_complex_location_expr_complaint ();
14052 else if (attr_form_is_constant (member_loc)
14053 || attr_form_is_block (member_loc))
14054 {
14055 if (attr)
14056 mark_common_block_symbol_computed (sym, die, attr,
14057 member_loc, cu);
14058 }
14059 else
14060 dwarf2_complex_location_expr_complaint ();
14061 }
14062 }
c906108c 14063 }
4357ac6c
TT
14064
14065 sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
14066 SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
c906108c
SS
14067 }
14068}
14069
0114d602 14070/* Create a type for a C++ namespace. */
d9fa45fe 14071
0114d602
DJ
14072static struct type *
14073read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
d9fa45fe 14074{
e7c27a73 14075 struct objfile *objfile = cu->objfile;
0114d602 14076 const char *previous_prefix, *name;
9219021c 14077 int is_anonymous;
0114d602
DJ
14078 struct type *type;
14079
14080 /* For extensions, reuse the type of the original namespace. */
14081 if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
14082 {
14083 struct die_info *ext_die;
14084 struct dwarf2_cu *ext_cu = cu;
9a619af0 14085
0114d602
DJ
14086 ext_die = dwarf2_extension (die, &ext_cu);
14087 type = read_type_die (ext_die, ext_cu);
9dc481d3
DE
14088
14089 /* EXT_CU may not be the same as CU.
02142a6c 14090 Ensure TYPE is recorded with CU in die_type_hash. */
0114d602
DJ
14091 return set_die_type (die, type, cu);
14092 }
9219021c 14093
e142c38c 14094 name = namespace_name (die, &is_anonymous, cu);
9219021c
DC
14095
14096 /* Now build the name of the current namespace. */
14097
0114d602
DJ
14098 previous_prefix = determine_prefix (die, cu);
14099 if (previous_prefix[0] != '\0')
14100 name = typename_concat (&objfile->objfile_obstack,
f55ee35c 14101 previous_prefix, name, 0, cu);
0114d602
DJ
14102
14103 /* Create the type. */
19f392bc 14104 type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
0114d602
DJ
14105 TYPE_TAG_NAME (type) = TYPE_NAME (type);
14106
60531b24 14107 return set_die_type (die, type, cu);
0114d602
DJ
14108}
14109
22cee43f 14110/* Read a namespace scope. */
0114d602
DJ
14111
14112static void
14113read_namespace (struct die_info *die, struct dwarf2_cu *cu)
14114{
14115 struct objfile *objfile = cu->objfile;
0114d602 14116 int is_anonymous;
9219021c 14117
5c4e30ca
DC
14118 /* Add a symbol associated to this if we haven't seen the namespace
14119 before. Also, add a using directive if it's an anonymous
14120 namespace. */
9219021c 14121
f2f0e013 14122 if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
5c4e30ca
DC
14123 {
14124 struct type *type;
14125
0114d602 14126 type = read_type_die (die, cu);
e7c27a73 14127 new_symbol (die, type, cu);
5c4e30ca 14128
e8e80198 14129 namespace_name (die, &is_anonymous, cu);
5c4e30ca 14130 if (is_anonymous)
0114d602
DJ
14131 {
14132 const char *previous_prefix = determine_prefix (die, cu);
9a619af0 14133
22cee43f
PMR
14134 add_using_directive (using_directives (cu->language),
14135 previous_prefix, TYPE_NAME (type), NULL,
14136 NULL, NULL, 0, &objfile->objfile_obstack);
0114d602 14137 }
5c4e30ca 14138 }
9219021c 14139
639d11d3 14140 if (die->child != NULL)
d9fa45fe 14141 {
639d11d3 14142 struct die_info *child_die = die->child;
6e70227d 14143
d9fa45fe
DC
14144 while (child_die && child_die->tag)
14145 {
e7c27a73 14146 process_die (child_die, cu);
d9fa45fe
DC
14147 child_die = sibling_die (child_die);
14148 }
14149 }
38d518c9
EZ
14150}
14151
f55ee35c
JK
14152/* Read a Fortran module as type. This DIE can be only a declaration used for
14153 imported module. Still we need that type as local Fortran "use ... only"
14154 declaration imports depend on the created type in determine_prefix. */
14155
14156static struct type *
14157read_module_type (struct die_info *die, struct dwarf2_cu *cu)
14158{
14159 struct objfile *objfile = cu->objfile;
15d034d0 14160 const char *module_name;
f55ee35c
JK
14161 struct type *type;
14162
14163 module_name = dwarf2_name (die, cu);
14164 if (!module_name)
3e43a32a
MS
14165 complaint (&symfile_complaints,
14166 _("DW_TAG_module has no name, offset 0x%x"),
b64f50a1 14167 die->offset.sect_off);
19f392bc 14168 type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
f55ee35c
JK
14169
14170 /* determine_prefix uses TYPE_TAG_NAME. */
14171 TYPE_TAG_NAME (type) = TYPE_NAME (type);
14172
14173 return set_die_type (die, type, cu);
14174}
14175
5d7cb8df
JK
14176/* Read a Fortran module. */
14177
14178static void
14179read_module (struct die_info *die, struct dwarf2_cu *cu)
14180{
14181 struct die_info *child_die = die->child;
530e8392
KB
14182 struct type *type;
14183
14184 type = read_type_die (die, cu);
14185 new_symbol (die, type, cu);
5d7cb8df 14186
5d7cb8df
JK
14187 while (child_die && child_die->tag)
14188 {
14189 process_die (child_die, cu);
14190 child_die = sibling_die (child_die);
14191 }
14192}
14193
38d518c9
EZ
14194/* Return the name of the namespace represented by DIE. Set
14195 *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
14196 namespace. */
14197
14198static const char *
e142c38c 14199namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
38d518c9
EZ
14200{
14201 struct die_info *current_die;
14202 const char *name = NULL;
14203
14204 /* Loop through the extensions until we find a name. */
14205
14206 for (current_die = die;
14207 current_die != NULL;
f2f0e013 14208 current_die = dwarf2_extension (die, &cu))
38d518c9 14209 {
96553a0c
DE
14210 /* We don't use dwarf2_name here so that we can detect the absence
14211 of a name -> anonymous namespace. */
7d45c7c3 14212 name = dwarf2_string_attr (die, DW_AT_name, cu);
96553a0c 14213
38d518c9
EZ
14214 if (name != NULL)
14215 break;
14216 }
14217
14218 /* Is it an anonymous namespace? */
14219
14220 *is_anonymous = (name == NULL);
14221 if (*is_anonymous)
2b1dbab0 14222 name = CP_ANONYMOUS_NAMESPACE_STR;
38d518c9
EZ
14223
14224 return name;
d9fa45fe
DC
14225}
14226
c906108c
SS
14227/* Extract all information from a DW_TAG_pointer_type DIE and add to
14228 the user defined type vector. */
14229
f792889a 14230static struct type *
e7c27a73 14231read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14232{
5e2b427d 14233 struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
e7c27a73 14234 struct comp_unit_head *cu_header = &cu->header;
c906108c 14235 struct type *type;
8b2dbe47
KB
14236 struct attribute *attr_byte_size;
14237 struct attribute *attr_address_class;
14238 int byte_size, addr_class;
7e314c57
JK
14239 struct type *target_type;
14240
14241 target_type = die_type (die, cu);
c906108c 14242
7e314c57
JK
14243 /* The die_type call above may have already set the type for this DIE. */
14244 type = get_die_type (die, cu);
14245 if (type)
14246 return type;
14247
14248 type = lookup_pointer_type (target_type);
8b2dbe47 14249
e142c38c 14250 attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
8b2dbe47
KB
14251 if (attr_byte_size)
14252 byte_size = DW_UNSND (attr_byte_size);
c906108c 14253 else
8b2dbe47
KB
14254 byte_size = cu_header->addr_size;
14255
e142c38c 14256 attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
8b2dbe47
KB
14257 if (attr_address_class)
14258 addr_class = DW_UNSND (attr_address_class);
14259 else
14260 addr_class = DW_ADDR_none;
14261
14262 /* If the pointer size or address class is different than the
14263 default, create a type variant marked as such and set the
14264 length accordingly. */
14265 if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
c906108c 14266 {
5e2b427d 14267 if (gdbarch_address_class_type_flags_p (gdbarch))
8b2dbe47
KB
14268 {
14269 int type_flags;
14270
849957d9 14271 type_flags = gdbarch_address_class_type_flags
5e2b427d 14272 (gdbarch, byte_size, addr_class);
876cecd0
TT
14273 gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
14274 == 0);
8b2dbe47
KB
14275 type = make_type_with_address_space (type, type_flags);
14276 }
14277 else if (TYPE_LENGTH (type) != byte_size)
14278 {
3e43a32a
MS
14279 complaint (&symfile_complaints,
14280 _("invalid pointer size %d"), byte_size);
8b2dbe47 14281 }
6e70227d 14282 else
9a619af0
MS
14283 {
14284 /* Should we also complain about unhandled address classes? */
14285 }
c906108c 14286 }
8b2dbe47
KB
14287
14288 TYPE_LENGTH (type) = byte_size;
f792889a 14289 return set_die_type (die, type, cu);
c906108c
SS
14290}
14291
14292/* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
14293 the user defined type vector. */
14294
f792889a 14295static struct type *
e7c27a73 14296read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c
SS
14297{
14298 struct type *type;
14299 struct type *to_type;
14300 struct type *domain;
14301
e7c27a73
DJ
14302 to_type = die_type (die, cu);
14303 domain = die_containing_type (die, cu);
0d5de010 14304
7e314c57
JK
14305 /* The calls above may have already set the type for this DIE. */
14306 type = get_die_type (die, cu);
14307 if (type)
14308 return type;
14309
0d5de010
DJ
14310 if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
14311 type = lookup_methodptr_type (to_type);
7078baeb
TT
14312 else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
14313 {
14314 struct type *new_type = alloc_type (cu->objfile);
14315
14316 smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
14317 TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
14318 TYPE_VARARGS (to_type));
14319 type = lookup_methodptr_type (new_type);
14320 }
0d5de010
DJ
14321 else
14322 type = lookup_memberptr_type (to_type, domain);
c906108c 14323
f792889a 14324 return set_die_type (die, type, cu);
c906108c
SS
14325}
14326
14327/* Extract all information from a DW_TAG_reference_type DIE and add to
14328 the user defined type vector. */
14329
f792889a 14330static struct type *
e7c27a73 14331read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14332{
e7c27a73 14333 struct comp_unit_head *cu_header = &cu->header;
7e314c57 14334 struct type *type, *target_type;
c906108c
SS
14335 struct attribute *attr;
14336
7e314c57
JK
14337 target_type = die_type (die, cu);
14338
14339 /* The die_type call above may have already set the type for this DIE. */
14340 type = get_die_type (die, cu);
14341 if (type)
14342 return type;
14343
14344 type = lookup_reference_type (target_type);
e142c38c 14345 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
14346 if (attr)
14347 {
14348 TYPE_LENGTH (type) = DW_UNSND (attr);
14349 }
14350 else
14351 {
107d2387 14352 TYPE_LENGTH (type) = cu_header->addr_size;
c906108c 14353 }
f792889a 14354 return set_die_type (die, type, cu);
c906108c
SS
14355}
14356
cf363f18
MW
14357/* Add the given cv-qualifiers to the element type of the array. GCC
14358 outputs DWARF type qualifiers that apply to an array, not the
14359 element type. But GDB relies on the array element type to carry
14360 the cv-qualifiers. This mimics section 6.7.3 of the C99
14361 specification. */
14362
14363static struct type *
14364add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
14365 struct type *base_type, int cnst, int voltl)
14366{
14367 struct type *el_type, *inner_array;
14368
14369 base_type = copy_type (base_type);
14370 inner_array = base_type;
14371
14372 while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
14373 {
14374 TYPE_TARGET_TYPE (inner_array) =
14375 copy_type (TYPE_TARGET_TYPE (inner_array));
14376 inner_array = TYPE_TARGET_TYPE (inner_array);
14377 }
14378
14379 el_type = TYPE_TARGET_TYPE (inner_array);
14380 cnst |= TYPE_CONST (el_type);
14381 voltl |= TYPE_VOLATILE (el_type);
14382 TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
14383
14384 return set_die_type (die, base_type, cu);
14385}
14386
f792889a 14387static struct type *
e7c27a73 14388read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14389{
f792889a 14390 struct type *base_type, *cv_type;
c906108c 14391
e7c27a73 14392 base_type = die_type (die, cu);
7e314c57
JK
14393
14394 /* The die_type call above may have already set the type for this DIE. */
14395 cv_type = get_die_type (die, cu);
14396 if (cv_type)
14397 return cv_type;
14398
2f608a3a
KW
14399 /* In case the const qualifier is applied to an array type, the element type
14400 is so qualified, not the array type (section 6.7.3 of C99). */
14401 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
cf363f18 14402 return add_array_cv_type (die, cu, base_type, 1, 0);
2f608a3a 14403
f792889a
DJ
14404 cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
14405 return set_die_type (die, cv_type, cu);
c906108c
SS
14406}
14407
f792889a 14408static struct type *
e7c27a73 14409read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14410{
f792889a 14411 struct type *base_type, *cv_type;
c906108c 14412
e7c27a73 14413 base_type = die_type (die, cu);
7e314c57
JK
14414
14415 /* The die_type call above may have already set the type for this DIE. */
14416 cv_type = get_die_type (die, cu);
14417 if (cv_type)
14418 return cv_type;
14419
cf363f18
MW
14420 /* In case the volatile qualifier is applied to an array type, the
14421 element type is so qualified, not the array type (section 6.7.3
14422 of C99). */
14423 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
14424 return add_array_cv_type (die, cu, base_type, 0, 1);
14425
f792889a
DJ
14426 cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
14427 return set_die_type (die, cv_type, cu);
c906108c
SS
14428}
14429
06d66ee9
TT
14430/* Handle DW_TAG_restrict_type. */
14431
14432static struct type *
14433read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
14434{
14435 struct type *base_type, *cv_type;
14436
14437 base_type = die_type (die, cu);
14438
14439 /* The die_type call above may have already set the type for this DIE. */
14440 cv_type = get_die_type (die, cu);
14441 if (cv_type)
14442 return cv_type;
14443
14444 cv_type = make_restrict_type (base_type);
14445 return set_die_type (die, cv_type, cu);
14446}
14447
a2c2acaf
MW
14448/* Handle DW_TAG_atomic_type. */
14449
14450static struct type *
14451read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
14452{
14453 struct type *base_type, *cv_type;
14454
14455 base_type = die_type (die, cu);
14456
14457 /* The die_type call above may have already set the type for this DIE. */
14458 cv_type = get_die_type (die, cu);
14459 if (cv_type)
14460 return cv_type;
14461
14462 cv_type = make_atomic_type (base_type);
14463 return set_die_type (die, cv_type, cu);
14464}
14465
c906108c
SS
14466/* Extract all information from a DW_TAG_string_type DIE and add to
14467 the user defined type vector. It isn't really a user defined type,
14468 but it behaves like one, with other DIE's using an AT_user_def_type
14469 attribute to reference it. */
14470
f792889a 14471static struct type *
e7c27a73 14472read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14473{
e7c27a73 14474 struct objfile *objfile = cu->objfile;
3b7538c0 14475 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
14476 struct type *type, *range_type, *index_type, *char_type;
14477 struct attribute *attr;
14478 unsigned int length;
14479
e142c38c 14480 attr = dwarf2_attr (die, DW_AT_string_length, cu);
c906108c
SS
14481 if (attr)
14482 {
14483 length = DW_UNSND (attr);
14484 }
14485 else
14486 {
0963b4bd 14487 /* Check for the DW_AT_byte_size attribute. */
e142c38c 14488 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
b21b22e0
PS
14489 if (attr)
14490 {
14491 length = DW_UNSND (attr);
14492 }
14493 else
14494 {
14495 length = 1;
14496 }
c906108c 14497 }
6ccb9162 14498
46bf5051 14499 index_type = objfile_type (objfile)->builtin_int;
0c9c3474 14500 range_type = create_static_range_type (NULL, index_type, 1, length);
3b7538c0
UW
14501 char_type = language_string_char_type (cu->language_defn, gdbarch);
14502 type = create_string_type (NULL, char_type, range_type);
6ccb9162 14503
f792889a 14504 return set_die_type (die, type, cu);
c906108c
SS
14505}
14506
4d804846
JB
14507/* Assuming that DIE corresponds to a function, returns nonzero
14508 if the function is prototyped. */
14509
14510static int
14511prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
14512{
14513 struct attribute *attr;
14514
14515 attr = dwarf2_attr (die, DW_AT_prototyped, cu);
14516 if (attr && (DW_UNSND (attr) != 0))
14517 return 1;
14518
14519 /* The DWARF standard implies that the DW_AT_prototyped attribute
14520 is only meaninful for C, but the concept also extends to other
14521 languages that allow unprototyped functions (Eg: Objective C).
14522 For all other languages, assume that functions are always
14523 prototyped. */
14524 if (cu->language != language_c
14525 && cu->language != language_objc
14526 && cu->language != language_opencl)
14527 return 1;
14528
14529 /* RealView does not emit DW_AT_prototyped. We can not distinguish
14530 prototyped and unprototyped functions; default to prototyped,
14531 since that is more common in modern code (and RealView warns
14532 about unprototyped functions). */
14533 if (producer_is_realview (cu->producer))
14534 return 1;
14535
14536 return 0;
14537}
14538
c906108c
SS
14539/* Handle DIES due to C code like:
14540
14541 struct foo
c5aa993b
JM
14542 {
14543 int (*funcp)(int a, long l);
14544 int b;
14545 };
c906108c 14546
0963b4bd 14547 ('funcp' generates a DW_TAG_subroutine_type DIE). */
c906108c 14548
f792889a 14549static struct type *
e7c27a73 14550read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14551{
bb5ed363 14552 struct objfile *objfile = cu->objfile;
0963b4bd
MS
14553 struct type *type; /* Type that this function returns. */
14554 struct type *ftype; /* Function that returns above type. */
c906108c
SS
14555 struct attribute *attr;
14556
e7c27a73 14557 type = die_type (die, cu);
7e314c57
JK
14558
14559 /* The die_type call above may have already set the type for this DIE. */
14560 ftype = get_die_type (die, cu);
14561 if (ftype)
14562 return ftype;
14563
0c8b41f1 14564 ftype = lookup_function_type (type);
c906108c 14565
4d804846 14566 if (prototyped_function_p (die, cu))
a6c727b2 14567 TYPE_PROTOTYPED (ftype) = 1;
c906108c 14568
c055b101
CV
14569 /* Store the calling convention in the type if it's available in
14570 the subroutine die. Otherwise set the calling convention to
14571 the default value DW_CC_normal. */
14572 attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
54fcddd0
UW
14573 if (attr)
14574 TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
14575 else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
14576 TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
14577 else
14578 TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
76c10ea2 14579
743649fd
MW
14580 /* Record whether the function returns normally to its caller or not
14581 if the DWARF producer set that information. */
14582 attr = dwarf2_attr (die, DW_AT_noreturn, cu);
14583 if (attr && (DW_UNSND (attr) != 0))
14584 TYPE_NO_RETURN (ftype) = 1;
14585
76c10ea2
GM
14586 /* We need to add the subroutine type to the die immediately so
14587 we don't infinitely recurse when dealing with parameters
0963b4bd 14588 declared as the same subroutine type. */
76c10ea2 14589 set_die_type (die, ftype, cu);
6e70227d 14590
639d11d3 14591 if (die->child != NULL)
c906108c 14592 {
bb5ed363 14593 struct type *void_type = objfile_type (objfile)->builtin_void;
c906108c 14594 struct die_info *child_die;
8072405b 14595 int nparams, iparams;
c906108c
SS
14596
14597 /* Count the number of parameters.
14598 FIXME: GDB currently ignores vararg functions, but knows about
14599 vararg member functions. */
8072405b 14600 nparams = 0;
639d11d3 14601 child_die = die->child;
c906108c
SS
14602 while (child_die && child_die->tag)
14603 {
14604 if (child_die->tag == DW_TAG_formal_parameter)
14605 nparams++;
14606 else if (child_die->tag == DW_TAG_unspecified_parameters)
876cecd0 14607 TYPE_VARARGS (ftype) = 1;
c906108c
SS
14608 child_die = sibling_die (child_die);
14609 }
14610
14611 /* Allocate storage for parameters and fill them in. */
14612 TYPE_NFIELDS (ftype) = nparams;
14613 TYPE_FIELDS (ftype) = (struct field *)
ae5a43e0 14614 TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
c906108c 14615
8072405b
JK
14616 /* TYPE_FIELD_TYPE must never be NULL. Pre-fill the array to ensure it
14617 even if we error out during the parameters reading below. */
14618 for (iparams = 0; iparams < nparams; iparams++)
14619 TYPE_FIELD_TYPE (ftype, iparams) = void_type;
14620
14621 iparams = 0;
639d11d3 14622 child_die = die->child;
c906108c
SS
14623 while (child_die && child_die->tag)
14624 {
14625 if (child_die->tag == DW_TAG_formal_parameter)
14626 {
3ce3b1ba
PA
14627 struct type *arg_type;
14628
14629 /* DWARF version 2 has no clean way to discern C++
14630 static and non-static member functions. G++ helps
14631 GDB by marking the first parameter for non-static
14632 member functions (which is the this pointer) as
14633 artificial. We pass this information to
14634 dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
14635
14636 DWARF version 3 added DW_AT_object_pointer, which GCC
14637 4.5 does not yet generate. */
e142c38c 14638 attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
c906108c
SS
14639 if (attr)
14640 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
14641 else
9c37b5ae 14642 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
3ce3b1ba
PA
14643 arg_type = die_type (child_die, cu);
14644
14645 /* RealView does not mark THIS as const, which the testsuite
14646 expects. GCC marks THIS as const in method definitions,
14647 but not in the class specifications (GCC PR 43053). */
14648 if (cu->language == language_cplus && !TYPE_CONST (arg_type)
14649 && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
14650 {
14651 int is_this = 0;
14652 struct dwarf2_cu *arg_cu = cu;
14653 const char *name = dwarf2_name (child_die, cu);
14654
14655 attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
14656 if (attr)
14657 {
14658 /* If the compiler emits this, use it. */
14659 if (follow_die_ref (die, attr, &arg_cu) == child_die)
14660 is_this = 1;
14661 }
14662 else if (name && strcmp (name, "this") == 0)
14663 /* Function definitions will have the argument names. */
14664 is_this = 1;
14665 else if (name == NULL && iparams == 0)
14666 /* Declarations may not have the names, so like
14667 elsewhere in GDB, assume an artificial first
14668 argument is "this". */
14669 is_this = 1;
14670
14671 if (is_this)
14672 arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
14673 arg_type, 0);
14674 }
14675
14676 TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
c906108c
SS
14677 iparams++;
14678 }
14679 child_die = sibling_die (child_die);
14680 }
14681 }
14682
76c10ea2 14683 return ftype;
c906108c
SS
14684}
14685
f792889a 14686static struct type *
e7c27a73 14687read_typedef (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14688{
e7c27a73 14689 struct objfile *objfile = cu->objfile;
0114d602 14690 const char *name = NULL;
3c8e0968 14691 struct type *this_type, *target_type;
c906108c 14692
94af9270 14693 name = dwarf2_full_name (NULL, die, cu);
19f392bc
UW
14694 this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
14695 TYPE_TARGET_STUB (this_type) = 1;
f792889a 14696 set_die_type (die, this_type, cu);
3c8e0968
DE
14697 target_type = die_type (die, cu);
14698 if (target_type != this_type)
14699 TYPE_TARGET_TYPE (this_type) = target_type;
14700 else
14701 {
14702 /* Self-referential typedefs are, it seems, not allowed by the DWARF
14703 spec and cause infinite loops in GDB. */
14704 complaint (&symfile_complaints,
14705 _("Self-referential DW_TAG_typedef "
14706 "- DIE at 0x%x [in module %s]"),
4262abfb 14707 die->offset.sect_off, objfile_name (objfile));
3c8e0968
DE
14708 TYPE_TARGET_TYPE (this_type) = NULL;
14709 }
f792889a 14710 return this_type;
c906108c
SS
14711}
14712
9b790ce7
UW
14713/* Allocate a floating-point type of size BITS and name NAME. Pass NAME_HINT
14714 (which may be different from NAME) to the architecture back-end to allow
14715 it to guess the correct format if necessary. */
14716
14717static struct type *
14718dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
14719 const char *name_hint)
14720{
14721 struct gdbarch *gdbarch = get_objfile_arch (objfile);
14722 const struct floatformat **format;
14723 struct type *type;
14724
14725 format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
14726 if (format)
14727 type = init_float_type (objfile, bits, name, format);
14728 else
14729 type = init_type (objfile, TYPE_CODE_ERROR, bits / TARGET_CHAR_BIT, name);
14730
14731 return type;
14732}
14733
c906108c
SS
14734/* Find a representation of a given base type and install
14735 it in the TYPE field of the die. */
14736
f792889a 14737static struct type *
e7c27a73 14738read_base_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14739{
e7c27a73 14740 struct objfile *objfile = cu->objfile;
c906108c
SS
14741 struct type *type;
14742 struct attribute *attr;
19f392bc 14743 int encoding = 0, bits = 0;
15d034d0 14744 const char *name;
c906108c 14745
e142c38c 14746 attr = dwarf2_attr (die, DW_AT_encoding, cu);
c906108c
SS
14747 if (attr)
14748 {
14749 encoding = DW_UNSND (attr);
14750 }
e142c38c 14751 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
14752 if (attr)
14753 {
19f392bc 14754 bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
c906108c 14755 }
39cbfefa 14756 name = dwarf2_name (die, cu);
6ccb9162 14757 if (!name)
c906108c 14758 {
6ccb9162
UW
14759 complaint (&symfile_complaints,
14760 _("DW_AT_name missing from DW_TAG_base_type"));
c906108c 14761 }
6ccb9162
UW
14762
14763 switch (encoding)
c906108c 14764 {
6ccb9162
UW
14765 case DW_ATE_address:
14766 /* Turn DW_ATE_address into a void * pointer. */
19f392bc
UW
14767 type = init_type (objfile, TYPE_CODE_VOID, 1, NULL);
14768 type = init_pointer_type (objfile, bits, name, type);
6ccb9162
UW
14769 break;
14770 case DW_ATE_boolean:
19f392bc 14771 type = init_boolean_type (objfile, bits, 1, name);
6ccb9162
UW
14772 break;
14773 case DW_ATE_complex_float:
9b790ce7 14774 type = dwarf2_init_float_type (objfile, bits / 2, NULL, name);
19f392bc 14775 type = init_complex_type (objfile, name, type);
6ccb9162
UW
14776 break;
14777 case DW_ATE_decimal_float:
19f392bc 14778 type = init_decfloat_type (objfile, bits, name);
6ccb9162
UW
14779 break;
14780 case DW_ATE_float:
9b790ce7 14781 type = dwarf2_init_float_type (objfile, bits, name, name);
6ccb9162
UW
14782 break;
14783 case DW_ATE_signed:
19f392bc 14784 type = init_integer_type (objfile, bits, 0, name);
6ccb9162
UW
14785 break;
14786 case DW_ATE_unsigned:
3b2b8fea
TT
14787 if (cu->language == language_fortran
14788 && name
61012eef 14789 && startswith (name, "character("))
19f392bc
UW
14790 type = init_character_type (objfile, bits, 1, name);
14791 else
14792 type = init_integer_type (objfile, bits, 1, name);
6ccb9162
UW
14793 break;
14794 case DW_ATE_signed_char:
6e70227d 14795 if (cu->language == language_ada || cu->language == language_m2
3b2b8fea
TT
14796 || cu->language == language_pascal
14797 || cu->language == language_fortran)
19f392bc
UW
14798 type = init_character_type (objfile, bits, 0, name);
14799 else
14800 type = init_integer_type (objfile, bits, 0, name);
6ccb9162
UW
14801 break;
14802 case DW_ATE_unsigned_char:
868a0084 14803 if (cu->language == language_ada || cu->language == language_m2
3b2b8fea 14804 || cu->language == language_pascal
c44af4eb
TT
14805 || cu->language == language_fortran
14806 || cu->language == language_rust)
19f392bc
UW
14807 type = init_character_type (objfile, bits, 1, name);
14808 else
14809 type = init_integer_type (objfile, bits, 1, name);
6ccb9162 14810 break;
75079b2b
TT
14811 case DW_ATE_UTF:
14812 /* We just treat this as an integer and then recognize the
14813 type by name elsewhere. */
19f392bc 14814 type = init_integer_type (objfile, bits, 0, name);
75079b2b
TT
14815 break;
14816
6ccb9162
UW
14817 default:
14818 complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
14819 dwarf_type_encoding_name (encoding));
19f392bc
UW
14820 type = init_type (objfile, TYPE_CODE_ERROR,
14821 bits / TARGET_CHAR_BIT, name);
6ccb9162 14822 break;
c906108c 14823 }
6ccb9162 14824
0114d602 14825 if (name && strcmp (name, "char") == 0)
876cecd0 14826 TYPE_NOSIGN (type) = 1;
0114d602 14827
f792889a 14828 return set_die_type (die, type, cu);
c906108c
SS
14829}
14830
80180f79
SA
14831/* Parse dwarf attribute if it's a block, reference or constant and put the
14832 resulting value of the attribute into struct bound_prop.
14833 Returns 1 if ATTR could be resolved into PROP, 0 otherwise. */
14834
14835static int
14836attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
14837 struct dwarf2_cu *cu, struct dynamic_prop *prop)
14838{
14839 struct dwarf2_property_baton *baton;
14840 struct obstack *obstack = &cu->objfile->objfile_obstack;
14841
14842 if (attr == NULL || prop == NULL)
14843 return 0;
14844
14845 if (attr_form_is_block (attr))
14846 {
8d749320 14847 baton = XOBNEW (obstack, struct dwarf2_property_baton);
80180f79
SA
14848 baton->referenced_type = NULL;
14849 baton->locexpr.per_cu = cu->per_cu;
14850 baton->locexpr.size = DW_BLOCK (attr)->size;
14851 baton->locexpr.data = DW_BLOCK (attr)->data;
14852 prop->data.baton = baton;
14853 prop->kind = PROP_LOCEXPR;
14854 gdb_assert (prop->data.baton != NULL);
14855 }
14856 else if (attr_form_is_ref (attr))
14857 {
14858 struct dwarf2_cu *target_cu = cu;
14859 struct die_info *target_die;
14860 struct attribute *target_attr;
14861
14862 target_die = follow_die_ref (die, attr, &target_cu);
14863 target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
df25ebbd
JB
14864 if (target_attr == NULL)
14865 target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
14866 target_cu);
80180f79
SA
14867 if (target_attr == NULL)
14868 return 0;
14869
df25ebbd 14870 switch (target_attr->name)
80180f79 14871 {
df25ebbd
JB
14872 case DW_AT_location:
14873 if (attr_form_is_section_offset (target_attr))
14874 {
8d749320 14875 baton = XOBNEW (obstack, struct dwarf2_property_baton);
df25ebbd
JB
14876 baton->referenced_type = die_type (target_die, target_cu);
14877 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
14878 prop->data.baton = baton;
14879 prop->kind = PROP_LOCLIST;
14880 gdb_assert (prop->data.baton != NULL);
14881 }
14882 else if (attr_form_is_block (target_attr))
14883 {
8d749320 14884 baton = XOBNEW (obstack, struct dwarf2_property_baton);
df25ebbd
JB
14885 baton->referenced_type = die_type (target_die, target_cu);
14886 baton->locexpr.per_cu = cu->per_cu;
14887 baton->locexpr.size = DW_BLOCK (target_attr)->size;
14888 baton->locexpr.data = DW_BLOCK (target_attr)->data;
14889 prop->data.baton = baton;
14890 prop->kind = PROP_LOCEXPR;
14891 gdb_assert (prop->data.baton != NULL);
14892 }
14893 else
14894 {
14895 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
14896 "dynamic property");
14897 return 0;
14898 }
14899 break;
14900 case DW_AT_data_member_location:
14901 {
14902 LONGEST offset;
14903
14904 if (!handle_data_member_location (target_die, target_cu,
14905 &offset))
14906 return 0;
14907
8d749320 14908 baton = XOBNEW (obstack, struct dwarf2_property_baton);
6ad395a7
JB
14909 baton->referenced_type = read_type_die (target_die->parent,
14910 target_cu);
df25ebbd
JB
14911 baton->offset_info.offset = offset;
14912 baton->offset_info.type = die_type (target_die, target_cu);
14913 prop->data.baton = baton;
14914 prop->kind = PROP_ADDR_OFFSET;
14915 break;
14916 }
80180f79
SA
14917 }
14918 }
14919 else if (attr_form_is_constant (attr))
14920 {
14921 prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
14922 prop->kind = PROP_CONST;
14923 }
14924 else
14925 {
14926 dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
14927 dwarf2_name (die, cu));
14928 return 0;
14929 }
14930
14931 return 1;
14932}
14933
a02abb62
JB
14934/* Read the given DW_AT_subrange DIE. */
14935
f792889a 14936static struct type *
a02abb62
JB
14937read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
14938{
4c9ad8c2 14939 struct type *base_type, *orig_base_type;
a02abb62
JB
14940 struct type *range_type;
14941 struct attribute *attr;
729efb13 14942 struct dynamic_prop low, high;
4fae6e18 14943 int low_default_is_valid;
c451ebe5 14944 int high_bound_is_count = 0;
15d034d0 14945 const char *name;
43bbcdc2 14946 LONGEST negative_mask;
e77813c8 14947
4c9ad8c2
TT
14948 orig_base_type = die_type (die, cu);
14949 /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
14950 whereas the real type might be. So, we use ORIG_BASE_TYPE when
14951 creating the range type, but we use the result of check_typedef
14952 when examining properties of the type. */
14953 base_type = check_typedef (orig_base_type);
a02abb62 14954
7e314c57
JK
14955 /* The die_type call above may have already set the type for this DIE. */
14956 range_type = get_die_type (die, cu);
14957 if (range_type)
14958 return range_type;
14959
729efb13
SA
14960 low.kind = PROP_CONST;
14961 high.kind = PROP_CONST;
14962 high.data.const_val = 0;
14963
4fae6e18
JK
14964 /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
14965 omitting DW_AT_lower_bound. */
14966 switch (cu->language)
6e70227d 14967 {
4fae6e18
JK
14968 case language_c:
14969 case language_cplus:
729efb13 14970 low.data.const_val = 0;
4fae6e18
JK
14971 low_default_is_valid = 1;
14972 break;
14973 case language_fortran:
729efb13 14974 low.data.const_val = 1;
4fae6e18
JK
14975 low_default_is_valid = 1;
14976 break;
14977 case language_d:
4fae6e18 14978 case language_objc:
c44af4eb 14979 case language_rust:
729efb13 14980 low.data.const_val = 0;
4fae6e18
JK
14981 low_default_is_valid = (cu->header.version >= 4);
14982 break;
14983 case language_ada:
14984 case language_m2:
14985 case language_pascal:
729efb13 14986 low.data.const_val = 1;
4fae6e18
JK
14987 low_default_is_valid = (cu->header.version >= 4);
14988 break;
14989 default:
729efb13 14990 low.data.const_val = 0;
4fae6e18
JK
14991 low_default_is_valid = 0;
14992 break;
a02abb62
JB
14993 }
14994
e142c38c 14995 attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
a02abb62 14996 if (attr)
11c1ba78 14997 attr_to_dynamic_prop (attr, die, cu, &low);
4fae6e18
JK
14998 else if (!low_default_is_valid)
14999 complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
15000 "- DIE at 0x%x [in module %s]"),
4262abfb 15001 die->offset.sect_off, objfile_name (cu->objfile));
a02abb62 15002
e142c38c 15003 attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
80180f79 15004 if (!attr_to_dynamic_prop (attr, die, cu, &high))
e77813c8
PM
15005 {
15006 attr = dwarf2_attr (die, DW_AT_count, cu);
c451ebe5 15007 if (attr_to_dynamic_prop (attr, die, cu, &high))
6b662e19 15008 {
c451ebe5
SA
15009 /* If bounds are constant do the final calculation here. */
15010 if (low.kind == PROP_CONST && high.kind == PROP_CONST)
15011 high.data.const_val = low.data.const_val + high.data.const_val - 1;
15012 else
15013 high_bound_is_count = 1;
c2ff108b 15014 }
e77813c8
PM
15015 }
15016
15017 /* Dwarf-2 specifications explicitly allows to create subrange types
15018 without specifying a base type.
15019 In that case, the base type must be set to the type of
15020 the lower bound, upper bound or count, in that order, if any of these
15021 three attributes references an object that has a type.
15022 If no base type is found, the Dwarf-2 specifications say that
15023 a signed integer type of size equal to the size of an address should
15024 be used.
15025 For the following C code: `extern char gdb_int [];'
15026 GCC produces an empty range DIE.
15027 FIXME: muller/2010-05-28: Possible references to object for low bound,
0963b4bd 15028 high bound or count are not yet handled by this code. */
e77813c8
PM
15029 if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
15030 {
15031 struct objfile *objfile = cu->objfile;
15032 struct gdbarch *gdbarch = get_objfile_arch (objfile);
15033 int addr_size = gdbarch_addr_bit (gdbarch) /8;
15034 struct type *int_type = objfile_type (objfile)->builtin_int;
15035
15036 /* Test "int", "long int", and "long long int" objfile types,
15037 and select the first one having a size above or equal to the
15038 architecture address size. */
15039 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15040 base_type = int_type;
15041 else
15042 {
15043 int_type = objfile_type (objfile)->builtin_long;
15044 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15045 base_type = int_type;
15046 else
15047 {
15048 int_type = objfile_type (objfile)->builtin_long_long;
15049 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15050 base_type = int_type;
15051 }
15052 }
15053 }
a02abb62 15054
dbb9c2b1
JB
15055 /* Normally, the DWARF producers are expected to use a signed
15056 constant form (Eg. DW_FORM_sdata) to express negative bounds.
15057 But this is unfortunately not always the case, as witnessed
15058 with GCC, for instance, where the ambiguous DW_FORM_dataN form
15059 is used instead. To work around that ambiguity, we treat
15060 the bounds as signed, and thus sign-extend their values, when
15061 the base type is signed. */
6e70227d 15062 negative_mask =
66c6502d 15063 -((LONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
729efb13
SA
15064 if (low.kind == PROP_CONST
15065 && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
15066 low.data.const_val |= negative_mask;
15067 if (high.kind == PROP_CONST
15068 && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
15069 high.data.const_val |= negative_mask;
43bbcdc2 15070
729efb13 15071 range_type = create_range_type (NULL, orig_base_type, &low, &high);
a02abb62 15072
c451ebe5
SA
15073 if (high_bound_is_count)
15074 TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
15075
c2ff108b
JK
15076 /* Ada expects an empty array on no boundary attributes. */
15077 if (attr == NULL && cu->language != language_ada)
729efb13 15078 TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
c2ff108b 15079
39cbfefa
DJ
15080 name = dwarf2_name (die, cu);
15081 if (name)
15082 TYPE_NAME (range_type) = name;
6e70227d 15083
e142c38c 15084 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
a02abb62
JB
15085 if (attr)
15086 TYPE_LENGTH (range_type) = DW_UNSND (attr);
15087
7e314c57
JK
15088 set_die_type (die, range_type, cu);
15089
15090 /* set_die_type should be already done. */
b4ba55a1
JB
15091 set_descriptive_type (range_type, die, cu);
15092
7e314c57 15093 return range_type;
a02abb62 15094}
6e70227d 15095
f792889a 15096static struct type *
81a17f79
JB
15097read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
15098{
15099 struct type *type;
81a17f79 15100
81a17f79
JB
15101 /* For now, we only support the C meaning of an unspecified type: void. */
15102
19f392bc 15103 type = init_type (cu->objfile, TYPE_CODE_VOID, 0, NULL);
0114d602 15104 TYPE_NAME (type) = dwarf2_name (die, cu);
81a17f79 15105
f792889a 15106 return set_die_type (die, type, cu);
81a17f79 15107}
a02abb62 15108
639d11d3
DC
15109/* Read a single die and all its descendents. Set the die's sibling
15110 field to NULL; set other fields in the die correctly, and set all
15111 of the descendents' fields correctly. Set *NEW_INFO_PTR to the
15112 location of the info_ptr after reading all of those dies. PARENT
15113 is the parent of the die in question. */
15114
15115static struct die_info *
dee91e82 15116read_die_and_children (const struct die_reader_specs *reader,
d521ce57
TT
15117 const gdb_byte *info_ptr,
15118 const gdb_byte **new_info_ptr,
dee91e82 15119 struct die_info *parent)
639d11d3
DC
15120{
15121 struct die_info *die;
d521ce57 15122 const gdb_byte *cur_ptr;
639d11d3
DC
15123 int has_children;
15124
bf6af496 15125 cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
1d325ec1
DJ
15126 if (die == NULL)
15127 {
15128 *new_info_ptr = cur_ptr;
15129 return NULL;
15130 }
93311388 15131 store_in_ref_table (die, reader->cu);
639d11d3
DC
15132
15133 if (has_children)
bf6af496 15134 die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
639d11d3
DC
15135 else
15136 {
15137 die->child = NULL;
15138 *new_info_ptr = cur_ptr;
15139 }
15140
15141 die->sibling = NULL;
15142 die->parent = parent;
15143 return die;
15144}
15145
15146/* Read a die, all of its descendents, and all of its siblings; set
15147 all of the fields of all of the dies correctly. Arguments are as
15148 in read_die_and_children. */
15149
15150static struct die_info *
bf6af496 15151read_die_and_siblings_1 (const struct die_reader_specs *reader,
d521ce57
TT
15152 const gdb_byte *info_ptr,
15153 const gdb_byte **new_info_ptr,
bf6af496 15154 struct die_info *parent)
639d11d3
DC
15155{
15156 struct die_info *first_die, *last_sibling;
d521ce57 15157 const gdb_byte *cur_ptr;
639d11d3 15158
c906108c 15159 cur_ptr = info_ptr;
639d11d3
DC
15160 first_die = last_sibling = NULL;
15161
15162 while (1)
c906108c 15163 {
639d11d3 15164 struct die_info *die
dee91e82 15165 = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
639d11d3 15166
1d325ec1 15167 if (die == NULL)
c906108c 15168 {
639d11d3
DC
15169 *new_info_ptr = cur_ptr;
15170 return first_die;
c906108c 15171 }
1d325ec1
DJ
15172
15173 if (!first_die)
15174 first_die = die;
c906108c 15175 else
1d325ec1
DJ
15176 last_sibling->sibling = die;
15177
15178 last_sibling = die;
c906108c 15179 }
c906108c
SS
15180}
15181
bf6af496
DE
15182/* Read a die, all of its descendents, and all of its siblings; set
15183 all of the fields of all of the dies correctly. Arguments are as
15184 in read_die_and_children.
15185 This the main entry point for reading a DIE and all its children. */
15186
15187static struct die_info *
15188read_die_and_siblings (const struct die_reader_specs *reader,
d521ce57
TT
15189 const gdb_byte *info_ptr,
15190 const gdb_byte **new_info_ptr,
bf6af496
DE
15191 struct die_info *parent)
15192{
15193 struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
15194 new_info_ptr, parent);
15195
b4f54984 15196 if (dwarf_die_debug)
bf6af496
DE
15197 {
15198 fprintf_unfiltered (gdb_stdlog,
15199 "Read die from %s@0x%x of %s:\n",
a32a8923 15200 get_section_name (reader->die_section),
bf6af496
DE
15201 (unsigned) (info_ptr - reader->die_section->buffer),
15202 bfd_get_filename (reader->abfd));
b4f54984 15203 dump_die (die, dwarf_die_debug);
bf6af496
DE
15204 }
15205
15206 return die;
15207}
15208
3019eac3
DE
15209/* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
15210 attributes.
15211 The caller is responsible for filling in the extra attributes
15212 and updating (*DIEP)->num_attrs.
15213 Set DIEP to point to a newly allocated die with its information,
15214 except for its child, sibling, and parent fields.
15215 Set HAS_CHILDREN to tell whether the die has children or not. */
93311388 15216
d521ce57 15217static const gdb_byte *
3019eac3 15218read_full_die_1 (const struct die_reader_specs *reader,
d521ce57 15219 struct die_info **diep, const gdb_byte *info_ptr,
3019eac3 15220 int *has_children, int num_extra_attrs)
93311388 15221{
b64f50a1
JK
15222 unsigned int abbrev_number, bytes_read, i;
15223 sect_offset offset;
93311388
DE
15224 struct abbrev_info *abbrev;
15225 struct die_info *die;
15226 struct dwarf2_cu *cu = reader->cu;
15227 bfd *abfd = reader->abfd;
15228
b64f50a1 15229 offset.sect_off = info_ptr - reader->buffer;
93311388
DE
15230 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15231 info_ptr += bytes_read;
15232 if (!abbrev_number)
15233 {
15234 *diep = NULL;
15235 *has_children = 0;
15236 return info_ptr;
15237 }
15238
433df2d4 15239 abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
93311388 15240 if (!abbrev)
348e048f
DE
15241 error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
15242 abbrev_number,
15243 bfd_get_filename (abfd));
15244
3019eac3 15245 die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
93311388
DE
15246 die->offset = offset;
15247 die->tag = abbrev->tag;
15248 die->abbrev = abbrev_number;
15249
3019eac3
DE
15250 /* Make the result usable.
15251 The caller needs to update num_attrs after adding the extra
15252 attributes. */
93311388
DE
15253 die->num_attrs = abbrev->num_attrs;
15254
15255 for (i = 0; i < abbrev->num_attrs; ++i)
dee91e82
DE
15256 info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
15257 info_ptr);
93311388
DE
15258
15259 *diep = die;
15260 *has_children = abbrev->has_children;
15261 return info_ptr;
15262}
15263
3019eac3
DE
15264/* Read a die and all its attributes.
15265 Set DIEP to point to a newly allocated die with its information,
15266 except for its child, sibling, and parent fields.
15267 Set HAS_CHILDREN to tell whether the die has children or not. */
15268
d521ce57 15269static const gdb_byte *
3019eac3 15270read_full_die (const struct die_reader_specs *reader,
d521ce57 15271 struct die_info **diep, const gdb_byte *info_ptr,
3019eac3
DE
15272 int *has_children)
15273{
d521ce57 15274 const gdb_byte *result;
bf6af496
DE
15275
15276 result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
15277
b4f54984 15278 if (dwarf_die_debug)
bf6af496
DE
15279 {
15280 fprintf_unfiltered (gdb_stdlog,
15281 "Read die from %s@0x%x of %s:\n",
a32a8923 15282 get_section_name (reader->die_section),
bf6af496
DE
15283 (unsigned) (info_ptr - reader->die_section->buffer),
15284 bfd_get_filename (reader->abfd));
b4f54984 15285 dump_die (*diep, dwarf_die_debug);
bf6af496
DE
15286 }
15287
15288 return result;
3019eac3 15289}
433df2d4
DE
15290\f
15291/* Abbreviation tables.
3019eac3 15292
433df2d4 15293 In DWARF version 2, the description of the debugging information is
c906108c
SS
15294 stored in a separate .debug_abbrev section. Before we read any
15295 dies from a section we read in all abbreviations and install them
433df2d4
DE
15296 in a hash table. */
15297
15298/* Allocate space for a struct abbrev_info object in ABBREV_TABLE. */
15299
15300static struct abbrev_info *
15301abbrev_table_alloc_abbrev (struct abbrev_table *abbrev_table)
15302{
15303 struct abbrev_info *abbrev;
15304
8d749320 15305 abbrev = XOBNEW (&abbrev_table->abbrev_obstack, struct abbrev_info);
433df2d4 15306 memset (abbrev, 0, sizeof (struct abbrev_info));
8d749320 15307
433df2d4
DE
15308 return abbrev;
15309}
15310
15311/* Add an abbreviation to the table. */
c906108c
SS
15312
15313static void
433df2d4
DE
15314abbrev_table_add_abbrev (struct abbrev_table *abbrev_table,
15315 unsigned int abbrev_number,
15316 struct abbrev_info *abbrev)
15317{
15318 unsigned int hash_number;
15319
15320 hash_number = abbrev_number % ABBREV_HASH_SIZE;
15321 abbrev->next = abbrev_table->abbrevs[hash_number];
15322 abbrev_table->abbrevs[hash_number] = abbrev;
15323}
dee91e82 15324
433df2d4
DE
15325/* Look up an abbrev in the table.
15326 Returns NULL if the abbrev is not found. */
15327
15328static struct abbrev_info *
15329abbrev_table_lookup_abbrev (const struct abbrev_table *abbrev_table,
15330 unsigned int abbrev_number)
c906108c 15331{
433df2d4
DE
15332 unsigned int hash_number;
15333 struct abbrev_info *abbrev;
15334
15335 hash_number = abbrev_number % ABBREV_HASH_SIZE;
15336 abbrev = abbrev_table->abbrevs[hash_number];
15337
15338 while (abbrev)
15339 {
15340 if (abbrev->number == abbrev_number)
15341 return abbrev;
15342 abbrev = abbrev->next;
15343 }
15344 return NULL;
15345}
15346
15347/* Read in an abbrev table. */
15348
15349static struct abbrev_table *
15350abbrev_table_read_table (struct dwarf2_section_info *section,
15351 sect_offset offset)
15352{
15353 struct objfile *objfile = dwarf2_per_objfile->objfile;
a32a8923 15354 bfd *abfd = get_section_bfd_owner (section);
433df2d4 15355 struct abbrev_table *abbrev_table;
d521ce57 15356 const gdb_byte *abbrev_ptr;
c906108c
SS
15357 struct abbrev_info *cur_abbrev;
15358 unsigned int abbrev_number, bytes_read, abbrev_name;
433df2d4 15359 unsigned int abbrev_form;
f3dd6933
DJ
15360 struct attr_abbrev *cur_attrs;
15361 unsigned int allocated_attrs;
c906108c 15362
70ba0933 15363 abbrev_table = XNEW (struct abbrev_table);
f4dc4d17 15364 abbrev_table->offset = offset;
433df2d4 15365 obstack_init (&abbrev_table->abbrev_obstack);
8d749320
SM
15366 abbrev_table->abbrevs =
15367 XOBNEWVEC (&abbrev_table->abbrev_obstack, struct abbrev_info *,
15368 ABBREV_HASH_SIZE);
433df2d4
DE
15369 memset (abbrev_table->abbrevs, 0,
15370 ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
c906108c 15371
433df2d4
DE
15372 dwarf2_read_section (objfile, section);
15373 abbrev_ptr = section->buffer + offset.sect_off;
c906108c
SS
15374 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15375 abbrev_ptr += bytes_read;
15376
f3dd6933 15377 allocated_attrs = ATTR_ALLOC_CHUNK;
8d749320 15378 cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
6e70227d 15379
0963b4bd 15380 /* Loop until we reach an abbrev number of 0. */
c906108c
SS
15381 while (abbrev_number)
15382 {
433df2d4 15383 cur_abbrev = abbrev_table_alloc_abbrev (abbrev_table);
c906108c
SS
15384
15385 /* read in abbrev header */
15386 cur_abbrev->number = abbrev_number;
aead7601
SM
15387 cur_abbrev->tag
15388 = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
c906108c
SS
15389 abbrev_ptr += bytes_read;
15390 cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
15391 abbrev_ptr += 1;
15392
15393 /* now read in declarations */
15394 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15395 abbrev_ptr += bytes_read;
15396 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15397 abbrev_ptr += bytes_read;
15398 while (abbrev_name)
15399 {
f3dd6933 15400 if (cur_abbrev->num_attrs == allocated_attrs)
c906108c 15401 {
f3dd6933
DJ
15402 allocated_attrs += ATTR_ALLOC_CHUNK;
15403 cur_attrs
224c3ddb 15404 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
c906108c 15405 }
ae038cb0 15406
aead7601
SM
15407 cur_attrs[cur_abbrev->num_attrs].name
15408 = (enum dwarf_attribute) abbrev_name;
15409 cur_attrs[cur_abbrev->num_attrs++].form
15410 = (enum dwarf_form) abbrev_form;
c906108c
SS
15411 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15412 abbrev_ptr += bytes_read;
15413 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15414 abbrev_ptr += bytes_read;
15415 }
15416
8d749320
SM
15417 cur_abbrev->attrs =
15418 XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
15419 cur_abbrev->num_attrs);
f3dd6933
DJ
15420 memcpy (cur_abbrev->attrs, cur_attrs,
15421 cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
15422
433df2d4 15423 abbrev_table_add_abbrev (abbrev_table, abbrev_number, cur_abbrev);
c906108c
SS
15424
15425 /* Get next abbreviation.
15426 Under Irix6 the abbreviations for a compilation unit are not
c5aa993b
JM
15427 always properly terminated with an abbrev number of 0.
15428 Exit loop if we encounter an abbreviation which we have
15429 already read (which means we are about to read the abbreviations
15430 for the next compile unit) or if the end of the abbreviation
15431 table is reached. */
433df2d4 15432 if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
c906108c
SS
15433 break;
15434 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15435 abbrev_ptr += bytes_read;
433df2d4 15436 if (abbrev_table_lookup_abbrev (abbrev_table, abbrev_number) != NULL)
c906108c
SS
15437 break;
15438 }
f3dd6933
DJ
15439
15440 xfree (cur_attrs);
433df2d4 15441 return abbrev_table;
c906108c
SS
15442}
15443
433df2d4 15444/* Free the resources held by ABBREV_TABLE. */
c906108c 15445
c906108c 15446static void
433df2d4 15447abbrev_table_free (struct abbrev_table *abbrev_table)
c906108c 15448{
433df2d4
DE
15449 obstack_free (&abbrev_table->abbrev_obstack, NULL);
15450 xfree (abbrev_table);
c906108c
SS
15451}
15452
f4dc4d17
DE
15453/* Same as abbrev_table_free but as a cleanup.
15454 We pass in a pointer to the pointer to the table so that we can
15455 set the pointer to NULL when we're done. It also simplifies
73051182 15456 build_type_psymtabs_1. */
f4dc4d17
DE
15457
15458static void
15459abbrev_table_free_cleanup (void *table_ptr)
15460{
9a3c8263 15461 struct abbrev_table **abbrev_table_ptr = (struct abbrev_table **) table_ptr;
f4dc4d17
DE
15462
15463 if (*abbrev_table_ptr != NULL)
15464 abbrev_table_free (*abbrev_table_ptr);
15465 *abbrev_table_ptr = NULL;
15466}
15467
433df2d4
DE
15468/* Read the abbrev table for CU from ABBREV_SECTION. */
15469
15470static void
15471dwarf2_read_abbrevs (struct dwarf2_cu *cu,
15472 struct dwarf2_section_info *abbrev_section)
c906108c 15473{
433df2d4
DE
15474 cu->abbrev_table =
15475 abbrev_table_read_table (abbrev_section, cu->header.abbrev_offset);
15476}
c906108c 15477
433df2d4 15478/* Release the memory used by the abbrev table for a compilation unit. */
c906108c 15479
433df2d4
DE
15480static void
15481dwarf2_free_abbrev_table (void *ptr_to_cu)
15482{
9a3c8263 15483 struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr_to_cu;
c906108c 15484
a2ce51a0
DE
15485 if (cu->abbrev_table != NULL)
15486 abbrev_table_free (cu->abbrev_table);
433df2d4
DE
15487 /* Set this to NULL so that we SEGV if we try to read it later,
15488 and also because free_comp_unit verifies this is NULL. */
15489 cu->abbrev_table = NULL;
15490}
15491\f
72bf9492
DJ
15492/* Returns nonzero if TAG represents a type that we might generate a partial
15493 symbol for. */
15494
15495static int
15496is_type_tag_for_partial (int tag)
15497{
15498 switch (tag)
15499 {
15500#if 0
15501 /* Some types that would be reasonable to generate partial symbols for,
15502 that we don't at present. */
15503 case DW_TAG_array_type:
15504 case DW_TAG_file_type:
15505 case DW_TAG_ptr_to_member_type:
15506 case DW_TAG_set_type:
15507 case DW_TAG_string_type:
15508 case DW_TAG_subroutine_type:
15509#endif
15510 case DW_TAG_base_type:
15511 case DW_TAG_class_type:
680b30c7 15512 case DW_TAG_interface_type:
72bf9492
DJ
15513 case DW_TAG_enumeration_type:
15514 case DW_TAG_structure_type:
15515 case DW_TAG_subrange_type:
15516 case DW_TAG_typedef:
15517 case DW_TAG_union_type:
15518 return 1;
15519 default:
15520 return 0;
15521 }
15522}
15523
15524/* Load all DIEs that are interesting for partial symbols into memory. */
15525
15526static struct partial_die_info *
dee91e82 15527load_partial_dies (const struct die_reader_specs *reader,
d521ce57 15528 const gdb_byte *info_ptr, int building_psymtab)
72bf9492 15529{
dee91e82 15530 struct dwarf2_cu *cu = reader->cu;
bb5ed363 15531 struct objfile *objfile = cu->objfile;
72bf9492
DJ
15532 struct partial_die_info *part_die;
15533 struct partial_die_info *parent_die, *last_die, *first_die = NULL;
15534 struct abbrev_info *abbrev;
15535 unsigned int bytes_read;
5afb4e99 15536 unsigned int load_all = 0;
72bf9492
DJ
15537 int nesting_level = 1;
15538
15539 parent_die = NULL;
15540 last_die = NULL;
15541
7adf1e79
DE
15542 gdb_assert (cu->per_cu != NULL);
15543 if (cu->per_cu->load_all_dies)
5afb4e99
DJ
15544 load_all = 1;
15545
72bf9492
DJ
15546 cu->partial_dies
15547 = htab_create_alloc_ex (cu->header.length / 12,
15548 partial_die_hash,
15549 partial_die_eq,
15550 NULL,
15551 &cu->comp_unit_obstack,
15552 hashtab_obstack_allocate,
15553 dummy_obstack_deallocate);
15554
8d749320 15555 part_die = XOBNEW (&cu->comp_unit_obstack, struct partial_die_info);
72bf9492
DJ
15556
15557 while (1)
15558 {
15559 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
15560
15561 /* A NULL abbrev means the end of a series of children. */
15562 if (abbrev == NULL)
15563 {
15564 if (--nesting_level == 0)
15565 {
15566 /* PART_DIE was probably the last thing allocated on the
15567 comp_unit_obstack, so we could call obstack_free
15568 here. We don't do that because the waste is small,
15569 and will be cleaned up when we're done with this
15570 compilation unit. This way, we're also more robust
15571 against other users of the comp_unit_obstack. */
15572 return first_die;
15573 }
15574 info_ptr += bytes_read;
15575 last_die = parent_die;
15576 parent_die = parent_die->die_parent;
15577 continue;
15578 }
15579
98bfdba5
PA
15580 /* Check for template arguments. We never save these; if
15581 they're seen, we just mark the parent, and go on our way. */
15582 if (parent_die != NULL
15583 && cu->language == language_cplus
15584 && (abbrev->tag == DW_TAG_template_type_param
15585 || abbrev->tag == DW_TAG_template_value_param))
15586 {
15587 parent_die->has_template_arguments = 1;
15588
15589 if (!load_all)
15590 {
15591 /* We don't need a partial DIE for the template argument. */
dee91e82 15592 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
98bfdba5
PA
15593 continue;
15594 }
15595 }
15596
0d99eb77 15597 /* We only recurse into c++ subprograms looking for template arguments.
98bfdba5
PA
15598 Skip their other children. */
15599 if (!load_all
15600 && cu->language == language_cplus
15601 && parent_die != NULL
15602 && parent_die->tag == DW_TAG_subprogram)
15603 {
dee91e82 15604 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
98bfdba5
PA
15605 continue;
15606 }
15607
5afb4e99
DJ
15608 /* Check whether this DIE is interesting enough to save. Normally
15609 we would not be interested in members here, but there may be
15610 later variables referencing them via DW_AT_specification (for
15611 static members). */
15612 if (!load_all
15613 && !is_type_tag_for_partial (abbrev->tag)
72929c62 15614 && abbrev->tag != DW_TAG_constant
72bf9492
DJ
15615 && abbrev->tag != DW_TAG_enumerator
15616 && abbrev->tag != DW_TAG_subprogram
bc30ff58 15617 && abbrev->tag != DW_TAG_lexical_block
72bf9492 15618 && abbrev->tag != DW_TAG_variable
5afb4e99 15619 && abbrev->tag != DW_TAG_namespace
f55ee35c 15620 && abbrev->tag != DW_TAG_module
95554aad 15621 && abbrev->tag != DW_TAG_member
74921315
KS
15622 && abbrev->tag != DW_TAG_imported_unit
15623 && abbrev->tag != DW_TAG_imported_declaration)
72bf9492
DJ
15624 {
15625 /* Otherwise we skip to the next sibling, if any. */
dee91e82 15626 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
72bf9492
DJ
15627 continue;
15628 }
15629
dee91e82
DE
15630 info_ptr = read_partial_die (reader, part_die, abbrev, bytes_read,
15631 info_ptr);
72bf9492
DJ
15632
15633 /* This two-pass algorithm for processing partial symbols has a
15634 high cost in cache pressure. Thus, handle some simple cases
15635 here which cover the majority of C partial symbols. DIEs
15636 which neither have specification tags in them, nor could have
15637 specification tags elsewhere pointing at them, can simply be
15638 processed and discarded.
15639
15640 This segment is also optional; scan_partial_symbols and
15641 add_partial_symbol will handle these DIEs if we chain
15642 them in normally. When compilers which do not emit large
15643 quantities of duplicate debug information are more common,
15644 this code can probably be removed. */
15645
15646 /* Any complete simple types at the top level (pretty much all
15647 of them, for a language without namespaces), can be processed
15648 directly. */
15649 if (parent_die == NULL
15650 && part_die->has_specification == 0
15651 && part_die->is_declaration == 0
d8228535 15652 && ((part_die->tag == DW_TAG_typedef && !part_die->has_children)
72bf9492
DJ
15653 || part_die->tag == DW_TAG_base_type
15654 || part_die->tag == DW_TAG_subrange_type))
15655 {
15656 if (building_psymtab && part_die->name != NULL)
04a679b8 15657 add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
72bf9492 15658 VAR_DOMAIN, LOC_TYPEDEF,
bb5ed363 15659 &objfile->static_psymbols,
1762568f 15660 0, cu->language, objfile);
dee91e82 15661 info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
72bf9492
DJ
15662 continue;
15663 }
15664
d8228535
JK
15665 /* The exception for DW_TAG_typedef with has_children above is
15666 a workaround of GCC PR debug/47510. In the case of this complaint
15667 type_name_no_tag_or_error will error on such types later.
15668
15669 GDB skipped children of DW_TAG_typedef by the shortcut above and then
15670 it could not find the child DIEs referenced later, this is checked
15671 above. In correct DWARF DW_TAG_typedef should have no children. */
15672
15673 if (part_die->tag == DW_TAG_typedef && part_die->has_children)
15674 complaint (&symfile_complaints,
15675 _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
15676 "- DIE at 0x%x [in module %s]"),
4262abfb 15677 part_die->offset.sect_off, objfile_name (objfile));
d8228535 15678
72bf9492
DJ
15679 /* If we're at the second level, and we're an enumerator, and
15680 our parent has no specification (meaning possibly lives in a
15681 namespace elsewhere), then we can add the partial symbol now
15682 instead of queueing it. */
15683 if (part_die->tag == DW_TAG_enumerator
15684 && parent_die != NULL
15685 && parent_die->die_parent == NULL
15686 && parent_die->tag == DW_TAG_enumeration_type
15687 && parent_die->has_specification == 0)
15688 {
15689 if (part_die->name == NULL)
3e43a32a
MS
15690 complaint (&symfile_complaints,
15691 _("malformed enumerator DIE ignored"));
72bf9492 15692 else if (building_psymtab)
04a679b8 15693 add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
72bf9492 15694 VAR_DOMAIN, LOC_CONST,
9c37b5ae 15695 cu->language == language_cplus
bb5ed363
DE
15696 ? &objfile->global_psymbols
15697 : &objfile->static_psymbols,
1762568f 15698 0, cu->language, objfile);
72bf9492 15699
dee91e82 15700 info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
72bf9492
DJ
15701 continue;
15702 }
15703
15704 /* We'll save this DIE so link it in. */
15705 part_die->die_parent = parent_die;
15706 part_die->die_sibling = NULL;
15707 part_die->die_child = NULL;
15708
15709 if (last_die && last_die == parent_die)
15710 last_die->die_child = part_die;
15711 else if (last_die)
15712 last_die->die_sibling = part_die;
15713
15714 last_die = part_die;
15715
15716 if (first_die == NULL)
15717 first_die = part_die;
15718
15719 /* Maybe add the DIE to the hash table. Not all DIEs that we
15720 find interesting need to be in the hash table, because we
15721 also have the parent/sibling/child chains; only those that we
15722 might refer to by offset later during partial symbol reading.
15723
15724 For now this means things that might have be the target of a
15725 DW_AT_specification, DW_AT_abstract_origin, or
15726 DW_AT_extension. DW_AT_extension will refer only to
15727 namespaces; DW_AT_abstract_origin refers to functions (and
15728 many things under the function DIE, but we do not recurse
15729 into function DIEs during partial symbol reading) and
15730 possibly variables as well; DW_AT_specification refers to
15731 declarations. Declarations ought to have the DW_AT_declaration
15732 flag. It happens that GCC forgets to put it in sometimes, but
15733 only for functions, not for types.
15734
15735 Adding more things than necessary to the hash table is harmless
15736 except for the performance cost. Adding too few will result in
5afb4e99
DJ
15737 wasted time in find_partial_die, when we reread the compilation
15738 unit with load_all_dies set. */
72bf9492 15739
5afb4e99 15740 if (load_all
72929c62 15741 || abbrev->tag == DW_TAG_constant
5afb4e99 15742 || abbrev->tag == DW_TAG_subprogram
72bf9492
DJ
15743 || abbrev->tag == DW_TAG_variable
15744 || abbrev->tag == DW_TAG_namespace
15745 || part_die->is_declaration)
15746 {
15747 void **slot;
15748
15749 slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
b64f50a1 15750 part_die->offset.sect_off, INSERT);
72bf9492
DJ
15751 *slot = part_die;
15752 }
15753
8d749320 15754 part_die = XOBNEW (&cu->comp_unit_obstack, struct partial_die_info);
72bf9492
DJ
15755
15756 /* For some DIEs we want to follow their children (if any). For C
bc30ff58 15757 we have no reason to follow the children of structures; for other
98bfdba5
PA
15758 languages we have to, so that we can get at method physnames
15759 to infer fully qualified class names, for DW_AT_specification,
15760 and for C++ template arguments. For C++, we also look one level
15761 inside functions to find template arguments (if the name of the
15762 function does not already contain the template arguments).
bc30ff58
JB
15763
15764 For Ada, we need to scan the children of subprograms and lexical
15765 blocks as well because Ada allows the definition of nested
15766 entities that could be interesting for the debugger, such as
15767 nested subprograms for instance. */
72bf9492 15768 if (last_die->has_children
5afb4e99
DJ
15769 && (load_all
15770 || last_die->tag == DW_TAG_namespace
f55ee35c 15771 || last_die->tag == DW_TAG_module
72bf9492 15772 || last_die->tag == DW_TAG_enumeration_type
98bfdba5
PA
15773 || (cu->language == language_cplus
15774 && last_die->tag == DW_TAG_subprogram
15775 && (last_die->name == NULL
15776 || strchr (last_die->name, '<') == NULL))
72bf9492
DJ
15777 || (cu->language != language_c
15778 && (last_die->tag == DW_TAG_class_type
680b30c7 15779 || last_die->tag == DW_TAG_interface_type
72bf9492 15780 || last_die->tag == DW_TAG_structure_type
bc30ff58
JB
15781 || last_die->tag == DW_TAG_union_type))
15782 || (cu->language == language_ada
15783 && (last_die->tag == DW_TAG_subprogram
15784 || last_die->tag == DW_TAG_lexical_block))))
72bf9492
DJ
15785 {
15786 nesting_level++;
15787 parent_die = last_die;
15788 continue;
15789 }
15790
15791 /* Otherwise we skip to the next sibling, if any. */
dee91e82 15792 info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
72bf9492
DJ
15793
15794 /* Back to the top, do it again. */
15795 }
15796}
15797
c906108c
SS
15798/* Read a minimal amount of information into the minimal die structure. */
15799
d521ce57 15800static const gdb_byte *
dee91e82
DE
15801read_partial_die (const struct die_reader_specs *reader,
15802 struct partial_die_info *part_die,
15803 struct abbrev_info *abbrev, unsigned int abbrev_len,
d521ce57 15804 const gdb_byte *info_ptr)
c906108c 15805{
dee91e82 15806 struct dwarf2_cu *cu = reader->cu;
bb5ed363 15807 struct objfile *objfile = cu->objfile;
d521ce57 15808 const gdb_byte *buffer = reader->buffer;
fa238c03 15809 unsigned int i;
c906108c 15810 struct attribute attr;
c5aa993b 15811 int has_low_pc_attr = 0;
c906108c 15812 int has_high_pc_attr = 0;
91da1414 15813 int high_pc_relative = 0;
c906108c 15814
72bf9492 15815 memset (part_die, 0, sizeof (struct partial_die_info));
c906108c 15816
b64f50a1 15817 part_die->offset.sect_off = info_ptr - buffer;
72bf9492
DJ
15818
15819 info_ptr += abbrev_len;
15820
15821 if (abbrev == NULL)
15822 return info_ptr;
15823
c906108c
SS
15824 part_die->tag = abbrev->tag;
15825 part_die->has_children = abbrev->has_children;
c906108c
SS
15826
15827 for (i = 0; i < abbrev->num_attrs; ++i)
15828 {
dee91e82 15829 info_ptr = read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
c906108c
SS
15830
15831 /* Store the data if it is of an attribute we want to keep in a
c5aa993b 15832 partial symbol table. */
c906108c
SS
15833 switch (attr.name)
15834 {
15835 case DW_AT_name:
71c25dea
TT
15836 switch (part_die->tag)
15837 {
15838 case DW_TAG_compile_unit:
95554aad 15839 case DW_TAG_partial_unit:
348e048f 15840 case DW_TAG_type_unit:
71c25dea
TT
15841 /* Compilation units have a DW_AT_name that is a filename, not
15842 a source language identifier. */
15843 case DW_TAG_enumeration_type:
15844 case DW_TAG_enumerator:
15845 /* These tags always have simple identifiers already; no need
15846 to canonicalize them. */
15847 part_die->name = DW_STRING (&attr);
15848 break;
15849 default:
15850 part_die->name
15851 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
34a68019 15852 &objfile->per_bfd->storage_obstack);
71c25dea
TT
15853 break;
15854 }
c906108c 15855 break;
31ef98ae 15856 case DW_AT_linkage_name:
c906108c 15857 case DW_AT_MIPS_linkage_name:
31ef98ae
TT
15858 /* Note that both forms of linkage name might appear. We
15859 assume they will be the same, and we only store the last
15860 one we see. */
94af9270
KS
15861 if (cu->language == language_ada)
15862 part_die->name = DW_STRING (&attr);
abc72ce4 15863 part_die->linkage_name = DW_STRING (&attr);
c906108c
SS
15864 break;
15865 case DW_AT_low_pc:
15866 has_low_pc_attr = 1;
31aa7e4e 15867 part_die->lowpc = attr_value_as_address (&attr);
c906108c
SS
15868 break;
15869 case DW_AT_high_pc:
15870 has_high_pc_attr = 1;
31aa7e4e
JB
15871 part_die->highpc = attr_value_as_address (&attr);
15872 if (cu->header.version >= 4 && attr_form_is_constant (&attr))
15873 high_pc_relative = 1;
c906108c
SS
15874 break;
15875 case DW_AT_location:
0963b4bd 15876 /* Support the .debug_loc offsets. */
8e19ed76
PS
15877 if (attr_form_is_block (&attr))
15878 {
95554aad 15879 part_die->d.locdesc = DW_BLOCK (&attr);
8e19ed76 15880 }
3690dd37 15881 else if (attr_form_is_section_offset (&attr))
8e19ed76 15882 {
4d3c2250 15883 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
15884 }
15885 else
15886 {
4d3c2250
KB
15887 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
15888 "partial symbol information");
8e19ed76 15889 }
c906108c 15890 break;
c906108c
SS
15891 case DW_AT_external:
15892 part_die->is_external = DW_UNSND (&attr);
15893 break;
15894 case DW_AT_declaration:
15895 part_die->is_declaration = DW_UNSND (&attr);
15896 break;
15897 case DW_AT_type:
15898 part_die->has_type = 1;
15899 break;
15900 case DW_AT_abstract_origin:
15901 case DW_AT_specification:
72bf9492
DJ
15902 case DW_AT_extension:
15903 part_die->has_specification = 1;
c764a876 15904 part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
36586728
TT
15905 part_die->spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15906 || cu->per_cu->is_dwz);
c906108c
SS
15907 break;
15908 case DW_AT_sibling:
15909 /* Ignore absolute siblings, they might point outside of
15910 the current compile unit. */
15911 if (attr.form == DW_FORM_ref_addr)
3e43a32a
MS
15912 complaint (&symfile_complaints,
15913 _("ignoring absolute DW_AT_sibling"));
c906108c 15914 else
b9502d3f
WN
15915 {
15916 unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
15917 const gdb_byte *sibling_ptr = buffer + off;
15918
15919 if (sibling_ptr < info_ptr)
15920 complaint (&symfile_complaints,
15921 _("DW_AT_sibling points backwards"));
22869d73
KS
15922 else if (sibling_ptr > reader->buffer_end)
15923 dwarf2_section_buffer_overflow_complaint (reader->die_section);
b9502d3f
WN
15924 else
15925 part_die->sibling = sibling_ptr;
15926 }
c906108c 15927 break;
fa4028e9
JB
15928 case DW_AT_byte_size:
15929 part_die->has_byte_size = 1;
15930 break;
ff908ebf
AW
15931 case DW_AT_const_value:
15932 part_die->has_const_value = 1;
15933 break;
68511cec
CES
15934 case DW_AT_calling_convention:
15935 /* DWARF doesn't provide a way to identify a program's source-level
15936 entry point. DW_AT_calling_convention attributes are only meant
15937 to describe functions' calling conventions.
15938
15939 However, because it's a necessary piece of information in
0c1b455e
TT
15940 Fortran, and before DWARF 4 DW_CC_program was the only
15941 piece of debugging information whose definition refers to
15942 a 'main program' at all, several compilers marked Fortran
15943 main programs with DW_CC_program --- even when those
15944 functions use the standard calling conventions.
15945
15946 Although DWARF now specifies a way to provide this
15947 information, we support this practice for backward
15948 compatibility. */
68511cec 15949 if (DW_UNSND (&attr) == DW_CC_program
0c1b455e
TT
15950 && cu->language == language_fortran)
15951 part_die->main_subprogram = 1;
68511cec 15952 break;
481860b3
GB
15953 case DW_AT_inline:
15954 if (DW_UNSND (&attr) == DW_INL_inlined
15955 || DW_UNSND (&attr) == DW_INL_declared_inlined)
15956 part_die->may_be_inlined = 1;
15957 break;
95554aad
TT
15958
15959 case DW_AT_import:
15960 if (part_die->tag == DW_TAG_imported_unit)
36586728
TT
15961 {
15962 part_die->d.offset = dwarf2_get_ref_die_offset (&attr);
15963 part_die->is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15964 || cu->per_cu->is_dwz);
15965 }
95554aad
TT
15966 break;
15967
0c1b455e
TT
15968 case DW_AT_main_subprogram:
15969 part_die->main_subprogram = DW_UNSND (&attr);
15970 break;
15971
c906108c
SS
15972 default:
15973 break;
15974 }
15975 }
15976
91da1414
MW
15977 if (high_pc_relative)
15978 part_die->highpc += part_die->lowpc;
15979
9373cf26
JK
15980 if (has_low_pc_attr && has_high_pc_attr)
15981 {
15982 /* When using the GNU linker, .gnu.linkonce. sections are used to
15983 eliminate duplicate copies of functions and vtables and such.
15984 The linker will arbitrarily choose one and discard the others.
15985 The AT_*_pc values for such functions refer to local labels in
15986 these sections. If the section from that file was discarded, the
15987 labels are not in the output, so the relocs get a value of 0.
15988 If this is a discarded function, mark the pc bounds as invalid,
15989 so that GDB will ignore it. */
15990 if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
15991 {
bb5ed363 15992 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9373cf26
JK
15993
15994 complaint (&symfile_complaints,
15995 _("DW_AT_low_pc %s is zero "
15996 "for DIE at 0x%x [in module %s]"),
15997 paddress (gdbarch, part_die->lowpc),
4262abfb 15998 part_die->offset.sect_off, objfile_name (objfile));
9373cf26
JK
15999 }
16000 /* dwarf2_get_pc_bounds has also the strict low < high requirement. */
16001 else if (part_die->lowpc >= part_die->highpc)
16002 {
bb5ed363 16003 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9373cf26
JK
16004
16005 complaint (&symfile_complaints,
16006 _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
16007 "for DIE at 0x%x [in module %s]"),
16008 paddress (gdbarch, part_die->lowpc),
16009 paddress (gdbarch, part_die->highpc),
4262abfb 16010 part_die->offset.sect_off, objfile_name (objfile));
9373cf26
JK
16011 }
16012 else
16013 part_die->has_pc_info = 1;
16014 }
85cbf3d3 16015
c906108c
SS
16016 return info_ptr;
16017}
16018
72bf9492
DJ
16019/* Find a cached partial DIE at OFFSET in CU. */
16020
16021static struct partial_die_info *
b64f50a1 16022find_partial_die_in_comp_unit (sect_offset offset, struct dwarf2_cu *cu)
72bf9492
DJ
16023{
16024 struct partial_die_info *lookup_die = NULL;
16025 struct partial_die_info part_die;
16026
16027 part_die.offset = offset;
9a3c8263
SM
16028 lookup_die = ((struct partial_die_info *)
16029 htab_find_with_hash (cu->partial_dies, &part_die,
16030 offset.sect_off));
72bf9492 16031
72bf9492
DJ
16032 return lookup_die;
16033}
16034
348e048f
DE
16035/* Find a partial DIE at OFFSET, which may or may not be in CU,
16036 except in the case of .debug_types DIEs which do not reference
16037 outside their CU (they do however referencing other types via
55f1336d 16038 DW_FORM_ref_sig8). */
72bf9492
DJ
16039
16040static struct partial_die_info *
36586728 16041find_partial_die (sect_offset offset, int offset_in_dwz, struct dwarf2_cu *cu)
72bf9492 16042{
bb5ed363 16043 struct objfile *objfile = cu->objfile;
5afb4e99
DJ
16044 struct dwarf2_per_cu_data *per_cu = NULL;
16045 struct partial_die_info *pd = NULL;
72bf9492 16046
36586728
TT
16047 if (offset_in_dwz == cu->per_cu->is_dwz
16048 && offset_in_cu_p (&cu->header, offset))
5afb4e99
DJ
16049 {
16050 pd = find_partial_die_in_comp_unit (offset, cu);
16051 if (pd != NULL)
16052 return pd;
0d99eb77
DE
16053 /* We missed recording what we needed.
16054 Load all dies and try again. */
16055 per_cu = cu->per_cu;
5afb4e99 16056 }
0d99eb77
DE
16057 else
16058 {
16059 /* TUs don't reference other CUs/TUs (except via type signatures). */
3019eac3 16060 if (cu->per_cu->is_debug_types)
0d99eb77
DE
16061 {
16062 error (_("Dwarf Error: Type Unit at offset 0x%lx contains"
16063 " external reference to offset 0x%lx [in module %s].\n"),
16064 (long) cu->header.offset.sect_off, (long) offset.sect_off,
16065 bfd_get_filename (objfile->obfd));
16066 }
36586728
TT
16067 per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
16068 objfile);
72bf9492 16069
0d99eb77
DE
16070 if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
16071 load_partial_comp_unit (per_cu);
ae038cb0 16072
0d99eb77
DE
16073 per_cu->cu->last_used = 0;
16074 pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
16075 }
5afb4e99 16076
dee91e82
DE
16077 /* If we didn't find it, and not all dies have been loaded,
16078 load them all and try again. */
16079
5afb4e99
DJ
16080 if (pd == NULL && per_cu->load_all_dies == 0)
16081 {
5afb4e99 16082 per_cu->load_all_dies = 1;
fd820528
DE
16083
16084 /* This is nasty. When we reread the DIEs, somewhere up the call chain
16085 THIS_CU->cu may already be in use. So we can't just free it and
16086 replace its DIEs with the ones we read in. Instead, we leave those
16087 DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
16088 and clobber THIS_CU->cu->partial_dies with the hash table for the new
16089 set. */
dee91e82 16090 load_partial_comp_unit (per_cu);
5afb4e99
DJ
16091
16092 pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
16093 }
16094
16095 if (pd == NULL)
16096 internal_error (__FILE__, __LINE__,
3e43a32a
MS
16097 _("could not find partial DIE 0x%x "
16098 "in cache [from module %s]\n"),
b64f50a1 16099 offset.sect_off, bfd_get_filename (objfile->obfd));
5afb4e99 16100 return pd;
72bf9492
DJ
16101}
16102
abc72ce4
DE
16103/* See if we can figure out if the class lives in a namespace. We do
16104 this by looking for a member function; its demangled name will
16105 contain namespace info, if there is any. */
16106
16107static void
16108guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
16109 struct dwarf2_cu *cu)
16110{
16111 /* NOTE: carlton/2003-10-07: Getting the info this way changes
16112 what template types look like, because the demangler
16113 frequently doesn't give the same name as the debug info. We
16114 could fix this by only using the demangled name to get the
16115 prefix (but see comment in read_structure_type). */
16116
16117 struct partial_die_info *real_pdi;
16118 struct partial_die_info *child_pdi;
16119
16120 /* If this DIE (this DIE's specification, if any) has a parent, then
16121 we should not do this. We'll prepend the parent's fully qualified
16122 name when we create the partial symbol. */
16123
16124 real_pdi = struct_pdi;
16125 while (real_pdi->has_specification)
36586728
TT
16126 real_pdi = find_partial_die (real_pdi->spec_offset,
16127 real_pdi->spec_is_dwz, cu);
abc72ce4
DE
16128
16129 if (real_pdi->die_parent != NULL)
16130 return;
16131
16132 for (child_pdi = struct_pdi->die_child;
16133 child_pdi != NULL;
16134 child_pdi = child_pdi->die_sibling)
16135 {
16136 if (child_pdi->tag == DW_TAG_subprogram
16137 && child_pdi->linkage_name != NULL)
16138 {
16139 char *actual_class_name
16140 = language_class_name_from_physname (cu->language_defn,
16141 child_pdi->linkage_name);
16142 if (actual_class_name != NULL)
16143 {
16144 struct_pdi->name
224c3ddb
SM
16145 = ((const char *)
16146 obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
16147 actual_class_name,
16148 strlen (actual_class_name)));
abc72ce4
DE
16149 xfree (actual_class_name);
16150 }
16151 break;
16152 }
16153 }
16154}
16155
72bf9492
DJ
16156/* Adjust PART_DIE before generating a symbol for it. This function
16157 may set the is_external flag or change the DIE's name. */
16158
16159static void
16160fixup_partial_die (struct partial_die_info *part_die,
16161 struct dwarf2_cu *cu)
16162{
abc72ce4
DE
16163 /* Once we've fixed up a die, there's no point in doing so again.
16164 This also avoids a memory leak if we were to call
16165 guess_partial_die_structure_name multiple times. */
16166 if (part_die->fixup_called)
16167 return;
16168
72bf9492
DJ
16169 /* If we found a reference attribute and the DIE has no name, try
16170 to find a name in the referred to DIE. */
16171
16172 if (part_die->name == NULL && part_die->has_specification)
16173 {
16174 struct partial_die_info *spec_die;
72bf9492 16175
36586728
TT
16176 spec_die = find_partial_die (part_die->spec_offset,
16177 part_die->spec_is_dwz, cu);
72bf9492 16178
10b3939b 16179 fixup_partial_die (spec_die, cu);
72bf9492
DJ
16180
16181 if (spec_die->name)
16182 {
16183 part_die->name = spec_die->name;
16184
16185 /* Copy DW_AT_external attribute if it is set. */
16186 if (spec_die->is_external)
16187 part_die->is_external = spec_die->is_external;
16188 }
16189 }
16190
16191 /* Set default names for some unnamed DIEs. */
72bf9492
DJ
16192
16193 if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
2b1dbab0 16194 part_die->name = CP_ANONYMOUS_NAMESPACE_STR;
72bf9492 16195
abc72ce4
DE
16196 /* If there is no parent die to provide a namespace, and there are
16197 children, see if we can determine the namespace from their linkage
122d1940 16198 name. */
abc72ce4 16199 if (cu->language == language_cplus
8b70b953 16200 && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
abc72ce4
DE
16201 && part_die->die_parent == NULL
16202 && part_die->has_children
16203 && (part_die->tag == DW_TAG_class_type
16204 || part_die->tag == DW_TAG_structure_type
16205 || part_die->tag == DW_TAG_union_type))
16206 guess_partial_die_structure_name (part_die, cu);
16207
53832f31
TT
16208 /* GCC might emit a nameless struct or union that has a linkage
16209 name. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
16210 if (part_die->name == NULL
96408a79
SA
16211 && (part_die->tag == DW_TAG_class_type
16212 || part_die->tag == DW_TAG_interface_type
16213 || part_die->tag == DW_TAG_structure_type
16214 || part_die->tag == DW_TAG_union_type)
53832f31
TT
16215 && part_die->linkage_name != NULL)
16216 {
16217 char *demangled;
16218
8de20a37 16219 demangled = gdb_demangle (part_die->linkage_name, DMGL_TYPES);
53832f31
TT
16220 if (demangled)
16221 {
96408a79
SA
16222 const char *base;
16223
16224 /* Strip any leading namespaces/classes, keep only the base name.
16225 DW_AT_name for named DIEs does not contain the prefixes. */
16226 base = strrchr (demangled, ':');
16227 if (base && base > demangled && base[-1] == ':')
16228 base++;
16229 else
16230 base = demangled;
16231
34a68019 16232 part_die->name
224c3ddb
SM
16233 = ((const char *)
16234 obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
16235 base, strlen (base)));
53832f31
TT
16236 xfree (demangled);
16237 }
16238 }
16239
abc72ce4 16240 part_die->fixup_called = 1;
72bf9492
DJ
16241}
16242
a8329558 16243/* Read an attribute value described by an attribute form. */
c906108c 16244
d521ce57 16245static const gdb_byte *
dee91e82
DE
16246read_attribute_value (const struct die_reader_specs *reader,
16247 struct attribute *attr, unsigned form,
d521ce57 16248 const gdb_byte *info_ptr)
c906108c 16249{
dee91e82 16250 struct dwarf2_cu *cu = reader->cu;
3e29f34a
MR
16251 struct objfile *objfile = cu->objfile;
16252 struct gdbarch *gdbarch = get_objfile_arch (objfile);
dee91e82 16253 bfd *abfd = reader->abfd;
e7c27a73 16254 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
16255 unsigned int bytes_read;
16256 struct dwarf_block *blk;
16257
aead7601 16258 attr->form = (enum dwarf_form) form;
a8329558 16259 switch (form)
c906108c 16260 {
c906108c 16261 case DW_FORM_ref_addr:
ae411497 16262 if (cu->header.version == 2)
4568ecf9 16263 DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
ae411497 16264 else
4568ecf9
DE
16265 DW_UNSND (attr) = read_offset (abfd, info_ptr,
16266 &cu->header, &bytes_read);
ae411497
TT
16267 info_ptr += bytes_read;
16268 break;
36586728
TT
16269 case DW_FORM_GNU_ref_alt:
16270 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16271 info_ptr += bytes_read;
16272 break;
ae411497 16273 case DW_FORM_addr:
e7c27a73 16274 DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
3e29f34a 16275 DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
107d2387 16276 info_ptr += bytes_read;
c906108c
SS
16277 break;
16278 case DW_FORM_block2:
7b5a2f43 16279 blk = dwarf_alloc_block (cu);
c906108c
SS
16280 blk->size = read_2_bytes (abfd, info_ptr);
16281 info_ptr += 2;
16282 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16283 info_ptr += blk->size;
16284 DW_BLOCK (attr) = blk;
16285 break;
16286 case DW_FORM_block4:
7b5a2f43 16287 blk = dwarf_alloc_block (cu);
c906108c
SS
16288 blk->size = read_4_bytes (abfd, info_ptr);
16289 info_ptr += 4;
16290 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16291 info_ptr += blk->size;
16292 DW_BLOCK (attr) = blk;
16293 break;
16294 case DW_FORM_data2:
16295 DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
16296 info_ptr += 2;
16297 break;
16298 case DW_FORM_data4:
16299 DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
16300 info_ptr += 4;
16301 break;
16302 case DW_FORM_data8:
16303 DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
16304 info_ptr += 8;
16305 break;
2dc7f7b3
TT
16306 case DW_FORM_sec_offset:
16307 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16308 info_ptr += bytes_read;
16309 break;
c906108c 16310 case DW_FORM_string:
9b1c24c8 16311 DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
8285870a 16312 DW_STRING_IS_CANONICAL (attr) = 0;
c906108c
SS
16313 info_ptr += bytes_read;
16314 break;
4bdf3d34 16315 case DW_FORM_strp:
36586728
TT
16316 if (!cu->per_cu->is_dwz)
16317 {
16318 DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
16319 &bytes_read);
16320 DW_STRING_IS_CANONICAL (attr) = 0;
16321 info_ptr += bytes_read;
16322 break;
16323 }
16324 /* FALLTHROUGH */
16325 case DW_FORM_GNU_strp_alt:
16326 {
16327 struct dwz_file *dwz = dwarf2_get_dwz_file ();
16328 LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
16329 &bytes_read);
16330
16331 DW_STRING (attr) = read_indirect_string_from_dwz (dwz, str_offset);
16332 DW_STRING_IS_CANONICAL (attr) = 0;
16333 info_ptr += bytes_read;
16334 }
4bdf3d34 16335 break;
2dc7f7b3 16336 case DW_FORM_exprloc:
c906108c 16337 case DW_FORM_block:
7b5a2f43 16338 blk = dwarf_alloc_block (cu);
c906108c
SS
16339 blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16340 info_ptr += bytes_read;
16341 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16342 info_ptr += blk->size;
16343 DW_BLOCK (attr) = blk;
16344 break;
16345 case DW_FORM_block1:
7b5a2f43 16346 blk = dwarf_alloc_block (cu);
c906108c
SS
16347 blk->size = read_1_byte (abfd, info_ptr);
16348 info_ptr += 1;
16349 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16350 info_ptr += blk->size;
16351 DW_BLOCK (attr) = blk;
16352 break;
16353 case DW_FORM_data1:
16354 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16355 info_ptr += 1;
16356 break;
16357 case DW_FORM_flag:
16358 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16359 info_ptr += 1;
16360 break;
2dc7f7b3
TT
16361 case DW_FORM_flag_present:
16362 DW_UNSND (attr) = 1;
16363 break;
c906108c
SS
16364 case DW_FORM_sdata:
16365 DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
16366 info_ptr += bytes_read;
16367 break;
16368 case DW_FORM_udata:
16369 DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16370 info_ptr += bytes_read;
16371 break;
16372 case DW_FORM_ref1:
4568ecf9
DE
16373 DW_UNSND (attr) = (cu->header.offset.sect_off
16374 + read_1_byte (abfd, info_ptr));
c906108c
SS
16375 info_ptr += 1;
16376 break;
16377 case DW_FORM_ref2:
4568ecf9
DE
16378 DW_UNSND (attr) = (cu->header.offset.sect_off
16379 + read_2_bytes (abfd, info_ptr));
c906108c
SS
16380 info_ptr += 2;
16381 break;
16382 case DW_FORM_ref4:
4568ecf9
DE
16383 DW_UNSND (attr) = (cu->header.offset.sect_off
16384 + read_4_bytes (abfd, info_ptr));
c906108c
SS
16385 info_ptr += 4;
16386 break;
613e1657 16387 case DW_FORM_ref8:
4568ecf9
DE
16388 DW_UNSND (attr) = (cu->header.offset.sect_off
16389 + read_8_bytes (abfd, info_ptr));
613e1657
KB
16390 info_ptr += 8;
16391 break;
55f1336d 16392 case DW_FORM_ref_sig8:
ac9ec31b 16393 DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
348e048f
DE
16394 info_ptr += 8;
16395 break;
c906108c 16396 case DW_FORM_ref_udata:
4568ecf9
DE
16397 DW_UNSND (attr) = (cu->header.offset.sect_off
16398 + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
c906108c
SS
16399 info_ptr += bytes_read;
16400 break;
c906108c 16401 case DW_FORM_indirect:
a8329558
KW
16402 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16403 info_ptr += bytes_read;
dee91e82 16404 info_ptr = read_attribute_value (reader, attr, form, info_ptr);
a8329558 16405 break;
3019eac3
DE
16406 case DW_FORM_GNU_addr_index:
16407 if (reader->dwo_file == NULL)
16408 {
16409 /* For now flag a hard error.
16410 Later we can turn this into a complaint. */
16411 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16412 dwarf_form_name (form),
16413 bfd_get_filename (abfd));
16414 }
16415 DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
16416 info_ptr += bytes_read;
16417 break;
16418 case DW_FORM_GNU_str_index:
16419 if (reader->dwo_file == NULL)
16420 {
16421 /* For now flag a hard error.
16422 Later we can turn this into a complaint if warranted. */
16423 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16424 dwarf_form_name (form),
16425 bfd_get_filename (abfd));
16426 }
16427 {
16428 ULONGEST str_index =
16429 read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16430
342587c4 16431 DW_STRING (attr) = read_str_index (reader, str_index);
3019eac3
DE
16432 DW_STRING_IS_CANONICAL (attr) = 0;
16433 info_ptr += bytes_read;
16434 }
16435 break;
c906108c 16436 default:
8a3fe4f8 16437 error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
659b0389
ML
16438 dwarf_form_name (form),
16439 bfd_get_filename (abfd));
c906108c 16440 }
28e94949 16441
36586728 16442 /* Super hack. */
7771576e 16443 if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
36586728
TT
16444 attr->form = DW_FORM_GNU_ref_alt;
16445
28e94949
JB
16446 /* We have seen instances where the compiler tried to emit a byte
16447 size attribute of -1 which ended up being encoded as an unsigned
16448 0xffffffff. Although 0xffffffff is technically a valid size value,
16449 an object of this size seems pretty unlikely so we can relatively
16450 safely treat these cases as if the size attribute was invalid and
16451 treat them as zero by default. */
16452 if (attr->name == DW_AT_byte_size
16453 && form == DW_FORM_data4
16454 && DW_UNSND (attr) >= 0xffffffff)
01c66ae6
JB
16455 {
16456 complaint
16457 (&symfile_complaints,
43bbcdc2
PH
16458 _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
16459 hex_string (DW_UNSND (attr)));
01c66ae6
JB
16460 DW_UNSND (attr) = 0;
16461 }
28e94949 16462
c906108c
SS
16463 return info_ptr;
16464}
16465
a8329558
KW
16466/* Read an attribute described by an abbreviated attribute. */
16467
d521ce57 16468static const gdb_byte *
dee91e82
DE
16469read_attribute (const struct die_reader_specs *reader,
16470 struct attribute *attr, struct attr_abbrev *abbrev,
d521ce57 16471 const gdb_byte *info_ptr)
a8329558
KW
16472{
16473 attr->name = abbrev->name;
dee91e82 16474 return read_attribute_value (reader, attr, abbrev->form, info_ptr);
a8329558
KW
16475}
16476
0963b4bd 16477/* Read dwarf information from a buffer. */
c906108c
SS
16478
16479static unsigned int
a1855c1d 16480read_1_byte (bfd *abfd, const gdb_byte *buf)
c906108c 16481{
fe1b8b76 16482 return bfd_get_8 (abfd, buf);
c906108c
SS
16483}
16484
16485static int
a1855c1d 16486read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
c906108c 16487{
fe1b8b76 16488 return bfd_get_signed_8 (abfd, buf);
c906108c
SS
16489}
16490
16491static unsigned int
a1855c1d 16492read_2_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16493{
fe1b8b76 16494 return bfd_get_16 (abfd, buf);
c906108c
SS
16495}
16496
21ae7a4d 16497static int
a1855c1d 16498read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
21ae7a4d
JK
16499{
16500 return bfd_get_signed_16 (abfd, buf);
16501}
16502
c906108c 16503static unsigned int
a1855c1d 16504read_4_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16505{
fe1b8b76 16506 return bfd_get_32 (abfd, buf);
c906108c
SS
16507}
16508
21ae7a4d 16509static int
a1855c1d 16510read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
21ae7a4d
JK
16511{
16512 return bfd_get_signed_32 (abfd, buf);
16513}
16514
93311388 16515static ULONGEST
a1855c1d 16516read_8_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16517{
fe1b8b76 16518 return bfd_get_64 (abfd, buf);
c906108c
SS
16519}
16520
16521static CORE_ADDR
d521ce57 16522read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
891d2f0b 16523 unsigned int *bytes_read)
c906108c 16524{
e7c27a73 16525 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
16526 CORE_ADDR retval = 0;
16527
107d2387 16528 if (cu_header->signed_addr_p)
c906108c 16529 {
107d2387
AC
16530 switch (cu_header->addr_size)
16531 {
16532 case 2:
fe1b8b76 16533 retval = bfd_get_signed_16 (abfd, buf);
107d2387
AC
16534 break;
16535 case 4:
fe1b8b76 16536 retval = bfd_get_signed_32 (abfd, buf);
107d2387
AC
16537 break;
16538 case 8:
fe1b8b76 16539 retval = bfd_get_signed_64 (abfd, buf);
107d2387
AC
16540 break;
16541 default:
8e65ff28 16542 internal_error (__FILE__, __LINE__,
e2e0b3e5 16543 _("read_address: bad switch, signed [in module %s]"),
659b0389 16544 bfd_get_filename (abfd));
107d2387
AC
16545 }
16546 }
16547 else
16548 {
16549 switch (cu_header->addr_size)
16550 {
16551 case 2:
fe1b8b76 16552 retval = bfd_get_16 (abfd, buf);
107d2387
AC
16553 break;
16554 case 4:
fe1b8b76 16555 retval = bfd_get_32 (abfd, buf);
107d2387
AC
16556 break;
16557 case 8:
fe1b8b76 16558 retval = bfd_get_64 (abfd, buf);
107d2387
AC
16559 break;
16560 default:
8e65ff28 16561 internal_error (__FILE__, __LINE__,
a73c6dcd
MS
16562 _("read_address: bad switch, "
16563 "unsigned [in module %s]"),
659b0389 16564 bfd_get_filename (abfd));
107d2387 16565 }
c906108c 16566 }
64367e0a 16567
107d2387
AC
16568 *bytes_read = cu_header->addr_size;
16569 return retval;
c906108c
SS
16570}
16571
f7ef9339 16572/* Read the initial length from a section. The (draft) DWARF 3
613e1657
KB
16573 specification allows the initial length to take up either 4 bytes
16574 or 12 bytes. If the first 4 bytes are 0xffffffff, then the next 8
16575 bytes describe the length and all offsets will be 8 bytes in length
16576 instead of 4.
16577
f7ef9339
KB
16578 An older, non-standard 64-bit format is also handled by this
16579 function. The older format in question stores the initial length
16580 as an 8-byte quantity without an escape value. Lengths greater
16581 than 2^32 aren't very common which means that the initial 4 bytes
16582 is almost always zero. Since a length value of zero doesn't make
16583 sense for the 32-bit format, this initial zero can be considered to
16584 be an escape value which indicates the presence of the older 64-bit
16585 format. As written, the code can't detect (old format) lengths
917c78fc
MK
16586 greater than 4GB. If it becomes necessary to handle lengths
16587 somewhat larger than 4GB, we could allow other small values (such
16588 as the non-sensical values of 1, 2, and 3) to also be used as
16589 escape values indicating the presence of the old format.
f7ef9339 16590
917c78fc
MK
16591 The value returned via bytes_read should be used to increment the
16592 relevant pointer after calling read_initial_length().
c764a876 16593
613e1657
KB
16594 [ Note: read_initial_length() and read_offset() are based on the
16595 document entitled "DWARF Debugging Information Format", revision
f7ef9339 16596 3, draft 8, dated November 19, 2001. This document was obtained
613e1657
KB
16597 from:
16598
f7ef9339 16599 http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
6e70227d 16600
613e1657
KB
16601 This document is only a draft and is subject to change. (So beware.)
16602
f7ef9339 16603 Details regarding the older, non-standard 64-bit format were
917c78fc
MK
16604 determined empirically by examining 64-bit ELF files produced by
16605 the SGI toolchain on an IRIX 6.5 machine.
f7ef9339
KB
16606
16607 - Kevin, July 16, 2002
613e1657
KB
16608 ] */
16609
16610static LONGEST
d521ce57 16611read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
613e1657 16612{
fe1b8b76 16613 LONGEST length = bfd_get_32 (abfd, buf);
613e1657 16614
dd373385 16615 if (length == 0xffffffff)
613e1657 16616 {
fe1b8b76 16617 length = bfd_get_64 (abfd, buf + 4);
613e1657 16618 *bytes_read = 12;
613e1657 16619 }
dd373385 16620 else if (length == 0)
f7ef9339 16621 {
dd373385 16622 /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX. */
fe1b8b76 16623 length = bfd_get_64 (abfd, buf);
f7ef9339 16624 *bytes_read = 8;
f7ef9339 16625 }
613e1657
KB
16626 else
16627 {
16628 *bytes_read = 4;
613e1657
KB
16629 }
16630
c764a876
DE
16631 return length;
16632}
dd373385 16633
c764a876
DE
16634/* Cover function for read_initial_length.
16635 Returns the length of the object at BUF, and stores the size of the
16636 initial length in *BYTES_READ and stores the size that offsets will be in
16637 *OFFSET_SIZE.
16638 If the initial length size is not equivalent to that specified in
16639 CU_HEADER then issue a complaint.
16640 This is useful when reading non-comp-unit headers. */
dd373385 16641
c764a876 16642static LONGEST
d521ce57 16643read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
c764a876
DE
16644 const struct comp_unit_head *cu_header,
16645 unsigned int *bytes_read,
16646 unsigned int *offset_size)
16647{
16648 LONGEST length = read_initial_length (abfd, buf, bytes_read);
16649
16650 gdb_assert (cu_header->initial_length_size == 4
16651 || cu_header->initial_length_size == 8
16652 || cu_header->initial_length_size == 12);
16653
16654 if (cu_header->initial_length_size != *bytes_read)
16655 complaint (&symfile_complaints,
16656 _("intermixed 32-bit and 64-bit DWARF sections"));
dd373385 16657
c764a876 16658 *offset_size = (*bytes_read == 4) ? 4 : 8;
dd373385 16659 return length;
613e1657
KB
16660}
16661
16662/* Read an offset from the data stream. The size of the offset is
917c78fc 16663 given by cu_header->offset_size. */
613e1657
KB
16664
16665static LONGEST
d521ce57
TT
16666read_offset (bfd *abfd, const gdb_byte *buf,
16667 const struct comp_unit_head *cu_header,
891d2f0b 16668 unsigned int *bytes_read)
c764a876
DE
16669{
16670 LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
9a619af0 16671
c764a876
DE
16672 *bytes_read = cu_header->offset_size;
16673 return offset;
16674}
16675
16676/* Read an offset from the data stream. */
16677
16678static LONGEST
d521ce57 16679read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
613e1657
KB
16680{
16681 LONGEST retval = 0;
16682
c764a876 16683 switch (offset_size)
613e1657
KB
16684 {
16685 case 4:
fe1b8b76 16686 retval = bfd_get_32 (abfd, buf);
613e1657
KB
16687 break;
16688 case 8:
fe1b8b76 16689 retval = bfd_get_64 (abfd, buf);
613e1657
KB
16690 break;
16691 default:
8e65ff28 16692 internal_error (__FILE__, __LINE__,
c764a876 16693 _("read_offset_1: bad switch [in module %s]"),
659b0389 16694 bfd_get_filename (abfd));
613e1657
KB
16695 }
16696
917c78fc 16697 return retval;
613e1657
KB
16698}
16699
d521ce57
TT
16700static const gdb_byte *
16701read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
c906108c
SS
16702{
16703 /* If the size of a host char is 8 bits, we can return a pointer
16704 to the buffer, otherwise we have to copy the data to a buffer
16705 allocated on the temporary obstack. */
4bdf3d34 16706 gdb_assert (HOST_CHAR_BIT == 8);
c906108c 16707 return buf;
c906108c
SS
16708}
16709
d521ce57
TT
16710static const char *
16711read_direct_string (bfd *abfd, const gdb_byte *buf,
16712 unsigned int *bytes_read_ptr)
c906108c
SS
16713{
16714 /* If the size of a host char is 8 bits, we can return a pointer
16715 to the string, otherwise we have to copy the string to a buffer
16716 allocated on the temporary obstack. */
4bdf3d34 16717 gdb_assert (HOST_CHAR_BIT == 8);
c906108c
SS
16718 if (*buf == '\0')
16719 {
16720 *bytes_read_ptr = 1;
16721 return NULL;
16722 }
d521ce57
TT
16723 *bytes_read_ptr = strlen ((const char *) buf) + 1;
16724 return (const char *) buf;
4bdf3d34
JJ
16725}
16726
d521ce57 16727static const char *
cf2c3c16 16728read_indirect_string_at_offset (bfd *abfd, LONGEST str_offset)
4bdf3d34 16729{
be391dca 16730 dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->str);
dce234bc 16731 if (dwarf2_per_objfile->str.buffer == NULL)
cf2c3c16
TT
16732 error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
16733 bfd_get_filename (abfd));
dce234bc 16734 if (str_offset >= dwarf2_per_objfile->str.size)
cf2c3c16
TT
16735 error (_("DW_FORM_strp pointing outside of "
16736 ".debug_str section [in module %s]"),
16737 bfd_get_filename (abfd));
4bdf3d34 16738 gdb_assert (HOST_CHAR_BIT == 8);
dce234bc 16739 if (dwarf2_per_objfile->str.buffer[str_offset] == '\0')
4bdf3d34 16740 return NULL;
d521ce57 16741 return (const char *) (dwarf2_per_objfile->str.buffer + str_offset);
c906108c
SS
16742}
16743
36586728
TT
16744/* Read a string at offset STR_OFFSET in the .debug_str section from
16745 the .dwz file DWZ. Throw an error if the offset is too large. If
16746 the string consists of a single NUL byte, return NULL; otherwise
16747 return a pointer to the string. */
16748
d521ce57 16749static const char *
36586728
TT
16750read_indirect_string_from_dwz (struct dwz_file *dwz, LONGEST str_offset)
16751{
16752 dwarf2_read_section (dwarf2_per_objfile->objfile, &dwz->str);
16753
16754 if (dwz->str.buffer == NULL)
16755 error (_("DW_FORM_GNU_strp_alt used without .debug_str "
16756 "section [in module %s]"),
16757 bfd_get_filename (dwz->dwz_bfd));
16758 if (str_offset >= dwz->str.size)
16759 error (_("DW_FORM_GNU_strp_alt pointing outside of "
16760 ".debug_str section [in module %s]"),
16761 bfd_get_filename (dwz->dwz_bfd));
16762 gdb_assert (HOST_CHAR_BIT == 8);
16763 if (dwz->str.buffer[str_offset] == '\0')
16764 return NULL;
d521ce57 16765 return (const char *) (dwz->str.buffer + str_offset);
36586728
TT
16766}
16767
d521ce57
TT
16768static const char *
16769read_indirect_string (bfd *abfd, const gdb_byte *buf,
cf2c3c16
TT
16770 const struct comp_unit_head *cu_header,
16771 unsigned int *bytes_read_ptr)
16772{
16773 LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
16774
16775 return read_indirect_string_at_offset (abfd, str_offset);
16776}
16777
12df843f 16778static ULONGEST
d521ce57
TT
16779read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
16780 unsigned int *bytes_read_ptr)
c906108c 16781{
12df843f 16782 ULONGEST result;
ce5d95e1 16783 unsigned int num_read;
870f88f7 16784 int shift;
c906108c
SS
16785 unsigned char byte;
16786
16787 result = 0;
16788 shift = 0;
16789 num_read = 0;
c906108c
SS
16790 while (1)
16791 {
fe1b8b76 16792 byte = bfd_get_8 (abfd, buf);
c906108c
SS
16793 buf++;
16794 num_read++;
12df843f 16795 result |= ((ULONGEST) (byte & 127) << shift);
c906108c
SS
16796 if ((byte & 128) == 0)
16797 {
16798 break;
16799 }
16800 shift += 7;
16801 }
16802 *bytes_read_ptr = num_read;
16803 return result;
16804}
16805
12df843f 16806static LONGEST
d521ce57
TT
16807read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
16808 unsigned int *bytes_read_ptr)
c906108c 16809{
12df843f 16810 LONGEST result;
870f88f7 16811 int shift, num_read;
c906108c
SS
16812 unsigned char byte;
16813
16814 result = 0;
16815 shift = 0;
c906108c 16816 num_read = 0;
c906108c
SS
16817 while (1)
16818 {
fe1b8b76 16819 byte = bfd_get_8 (abfd, buf);
c906108c
SS
16820 buf++;
16821 num_read++;
12df843f 16822 result |= ((LONGEST) (byte & 127) << shift);
c906108c
SS
16823 shift += 7;
16824 if ((byte & 128) == 0)
16825 {
16826 break;
16827 }
16828 }
77e0b926 16829 if ((shift < 8 * sizeof (result)) && (byte & 0x40))
12df843f 16830 result |= -(((LONGEST) 1) << shift);
c906108c
SS
16831 *bytes_read_ptr = num_read;
16832 return result;
16833}
16834
3019eac3
DE
16835/* Given index ADDR_INDEX in .debug_addr, fetch the value.
16836 ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
16837 ADDR_SIZE is the size of addresses from the CU header. */
16838
16839static CORE_ADDR
16840read_addr_index_1 (unsigned int addr_index, ULONGEST addr_base, int addr_size)
16841{
16842 struct objfile *objfile = dwarf2_per_objfile->objfile;
16843 bfd *abfd = objfile->obfd;
16844 const gdb_byte *info_ptr;
16845
16846 dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
16847 if (dwarf2_per_objfile->addr.buffer == NULL)
16848 error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
4262abfb 16849 objfile_name (objfile));
3019eac3
DE
16850 if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
16851 error (_("DW_FORM_addr_index pointing outside of "
16852 ".debug_addr section [in module %s]"),
4262abfb 16853 objfile_name (objfile));
3019eac3
DE
16854 info_ptr = (dwarf2_per_objfile->addr.buffer
16855 + addr_base + addr_index * addr_size);
16856 if (addr_size == 4)
16857 return bfd_get_32 (abfd, info_ptr);
16858 else
16859 return bfd_get_64 (abfd, info_ptr);
16860}
16861
16862/* Given index ADDR_INDEX in .debug_addr, fetch the value. */
16863
16864static CORE_ADDR
16865read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
16866{
16867 return read_addr_index_1 (addr_index, cu->addr_base, cu->header.addr_size);
16868}
16869
16870/* Given a pointer to an leb128 value, fetch the value from .debug_addr. */
16871
16872static CORE_ADDR
d521ce57 16873read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
3019eac3
DE
16874 unsigned int *bytes_read)
16875{
16876 bfd *abfd = cu->objfile->obfd;
16877 unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
16878
16879 return read_addr_index (cu, addr_index);
16880}
16881
16882/* Data structure to pass results from dwarf2_read_addr_index_reader
16883 back to dwarf2_read_addr_index. */
16884
16885struct dwarf2_read_addr_index_data
16886{
16887 ULONGEST addr_base;
16888 int addr_size;
16889};
16890
16891/* die_reader_func for dwarf2_read_addr_index. */
16892
16893static void
16894dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
d521ce57 16895 const gdb_byte *info_ptr,
3019eac3
DE
16896 struct die_info *comp_unit_die,
16897 int has_children,
16898 void *data)
16899{
16900 struct dwarf2_cu *cu = reader->cu;
16901 struct dwarf2_read_addr_index_data *aidata =
16902 (struct dwarf2_read_addr_index_data *) data;
16903
16904 aidata->addr_base = cu->addr_base;
16905 aidata->addr_size = cu->header.addr_size;
16906}
16907
16908/* Given an index in .debug_addr, fetch the value.
16909 NOTE: This can be called during dwarf expression evaluation,
16910 long after the debug information has been read, and thus per_cu->cu
16911 may no longer exist. */
16912
16913CORE_ADDR
16914dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
16915 unsigned int addr_index)
16916{
16917 struct objfile *objfile = per_cu->objfile;
16918 struct dwarf2_cu *cu = per_cu->cu;
16919 ULONGEST addr_base;
16920 int addr_size;
16921
16922 /* This is intended to be called from outside this file. */
16923 dw2_setup (objfile);
16924
16925 /* We need addr_base and addr_size.
16926 If we don't have PER_CU->cu, we have to get it.
16927 Nasty, but the alternative is storing the needed info in PER_CU,
16928 which at this point doesn't seem justified: it's not clear how frequently
16929 it would get used and it would increase the size of every PER_CU.
16930 Entry points like dwarf2_per_cu_addr_size do a similar thing
16931 so we're not in uncharted territory here.
16932 Alas we need to be a bit more complicated as addr_base is contained
16933 in the DIE.
16934
16935 We don't need to read the entire CU(/TU).
16936 We just need the header and top level die.
a1b64ce1 16937
3019eac3 16938 IWBN to use the aging mechanism to let us lazily later discard the CU.
a1b64ce1 16939 For now we skip this optimization. */
3019eac3
DE
16940
16941 if (cu != NULL)
16942 {
16943 addr_base = cu->addr_base;
16944 addr_size = cu->header.addr_size;
16945 }
16946 else
16947 {
16948 struct dwarf2_read_addr_index_data aidata;
16949
a1b64ce1
DE
16950 /* Note: We can't use init_cutu_and_read_dies_simple here,
16951 we need addr_base. */
16952 init_cutu_and_read_dies (per_cu, NULL, 0, 0,
16953 dwarf2_read_addr_index_reader, &aidata);
3019eac3
DE
16954 addr_base = aidata.addr_base;
16955 addr_size = aidata.addr_size;
16956 }
16957
16958 return read_addr_index_1 (addr_index, addr_base, addr_size);
16959}
16960
57d63ce2
DE
16961/* Given a DW_FORM_GNU_str_index, fetch the string.
16962 This is only used by the Fission support. */
3019eac3 16963
d521ce57 16964static const char *
342587c4 16965read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
3019eac3
DE
16966{
16967 struct objfile *objfile = dwarf2_per_objfile->objfile;
c5164cbc 16968 const char *objf_name = objfile_name (objfile);
3019eac3 16969 bfd *abfd = objfile->obfd;
342587c4 16970 struct dwarf2_cu *cu = reader->cu;
73869dc2
DE
16971 struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
16972 struct dwarf2_section_info *str_offsets_section =
16973 &reader->dwo_file->sections.str_offsets;
d521ce57 16974 const gdb_byte *info_ptr;
3019eac3 16975 ULONGEST str_offset;
57d63ce2 16976 static const char form_name[] = "DW_FORM_GNU_str_index";
3019eac3 16977
73869dc2
DE
16978 dwarf2_read_section (objfile, str_section);
16979 dwarf2_read_section (objfile, str_offsets_section);
16980 if (str_section->buffer == NULL)
57d63ce2 16981 error (_("%s used without .debug_str.dwo section"
3019eac3 16982 " in CU at offset 0x%lx [in module %s]"),
c5164cbc 16983 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16984 if (str_offsets_section->buffer == NULL)
57d63ce2 16985 error (_("%s used without .debug_str_offsets.dwo section"
3019eac3 16986 " in CU at offset 0x%lx [in module %s]"),
c5164cbc 16987 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16988 if (str_index * cu->header.offset_size >= str_offsets_section->size)
57d63ce2 16989 error (_("%s pointing outside of .debug_str_offsets.dwo"
3019eac3 16990 " section in CU at offset 0x%lx [in module %s]"),
c5164cbc 16991 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16992 info_ptr = (str_offsets_section->buffer
3019eac3
DE
16993 + str_index * cu->header.offset_size);
16994 if (cu->header.offset_size == 4)
16995 str_offset = bfd_get_32 (abfd, info_ptr);
16996 else
16997 str_offset = bfd_get_64 (abfd, info_ptr);
73869dc2 16998 if (str_offset >= str_section->size)
57d63ce2 16999 error (_("Offset from %s pointing outside of"
3019eac3 17000 " .debug_str.dwo section in CU at offset 0x%lx [in module %s]"),
c5164cbc 17001 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 17002 return (const char *) (str_section->buffer + str_offset);
3019eac3
DE
17003}
17004
3019eac3
DE
17005/* Return the length of an LEB128 number in BUF. */
17006
17007static int
17008leb128_size (const gdb_byte *buf)
17009{
17010 const gdb_byte *begin = buf;
17011 gdb_byte byte;
17012
17013 while (1)
17014 {
17015 byte = *buf++;
17016 if ((byte & 128) == 0)
17017 return buf - begin;
17018 }
17019}
17020
c906108c 17021static void
e142c38c 17022set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
c906108c
SS
17023{
17024 switch (lang)
17025 {
17026 case DW_LANG_C89:
76bee0cc 17027 case DW_LANG_C99:
0cfd832f 17028 case DW_LANG_C11:
c906108c 17029 case DW_LANG_C:
d1be3247 17030 case DW_LANG_UPC:
e142c38c 17031 cu->language = language_c;
c906108c 17032 break;
9c37b5ae 17033 case DW_LANG_Java:
c906108c 17034 case DW_LANG_C_plus_plus:
0cfd832f
MW
17035 case DW_LANG_C_plus_plus_11:
17036 case DW_LANG_C_plus_plus_14:
e142c38c 17037 cu->language = language_cplus;
c906108c 17038 break;
6aecb9c2
JB
17039 case DW_LANG_D:
17040 cu->language = language_d;
17041 break;
c906108c
SS
17042 case DW_LANG_Fortran77:
17043 case DW_LANG_Fortran90:
b21b22e0 17044 case DW_LANG_Fortran95:
f7de9aab
MW
17045 case DW_LANG_Fortran03:
17046 case DW_LANG_Fortran08:
e142c38c 17047 cu->language = language_fortran;
c906108c 17048 break;
a766d390
DE
17049 case DW_LANG_Go:
17050 cu->language = language_go;
17051 break;
c906108c 17052 case DW_LANG_Mips_Assembler:
e142c38c 17053 cu->language = language_asm;
c906108c
SS
17054 break;
17055 case DW_LANG_Ada83:
8aaf0b47 17056 case DW_LANG_Ada95:
bc5f45f8
JB
17057 cu->language = language_ada;
17058 break;
72019c9c
GM
17059 case DW_LANG_Modula2:
17060 cu->language = language_m2;
17061 break;
fe8e67fd
PM
17062 case DW_LANG_Pascal83:
17063 cu->language = language_pascal;
17064 break;
22566fbd
DJ
17065 case DW_LANG_ObjC:
17066 cu->language = language_objc;
17067 break;
c44af4eb
TT
17068 case DW_LANG_Rust:
17069 case DW_LANG_Rust_old:
17070 cu->language = language_rust;
17071 break;
c906108c
SS
17072 case DW_LANG_Cobol74:
17073 case DW_LANG_Cobol85:
c906108c 17074 default:
e142c38c 17075 cu->language = language_minimal;
c906108c
SS
17076 break;
17077 }
e142c38c 17078 cu->language_defn = language_def (cu->language);
c906108c
SS
17079}
17080
17081/* Return the named attribute or NULL if not there. */
17082
17083static struct attribute *
e142c38c 17084dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
c906108c 17085{
a48e046c 17086 for (;;)
c906108c 17087 {
a48e046c
TT
17088 unsigned int i;
17089 struct attribute *spec = NULL;
17090
17091 for (i = 0; i < die->num_attrs; ++i)
17092 {
17093 if (die->attrs[i].name == name)
17094 return &die->attrs[i];
17095 if (die->attrs[i].name == DW_AT_specification
17096 || die->attrs[i].name == DW_AT_abstract_origin)
17097 spec = &die->attrs[i];
17098 }
17099
17100 if (!spec)
17101 break;
c906108c 17102
f2f0e013 17103 die = follow_die_ref (die, spec, &cu);
f2f0e013 17104 }
c5aa993b 17105
c906108c
SS
17106 return NULL;
17107}
17108
348e048f
DE
17109/* Return the named attribute or NULL if not there,
17110 but do not follow DW_AT_specification, etc.
17111 This is for use in contexts where we're reading .debug_types dies.
17112 Following DW_AT_specification, DW_AT_abstract_origin will take us
17113 back up the chain, and we want to go down. */
17114
17115static struct attribute *
45e58e77 17116dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
348e048f
DE
17117{
17118 unsigned int i;
17119
17120 for (i = 0; i < die->num_attrs; ++i)
17121 if (die->attrs[i].name == name)
17122 return &die->attrs[i];
17123
17124 return NULL;
17125}
17126
7d45c7c3
KB
17127/* Return the string associated with a string-typed attribute, or NULL if it
17128 is either not found or is of an incorrect type. */
17129
17130static const char *
17131dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
17132{
17133 struct attribute *attr;
17134 const char *str = NULL;
17135
17136 attr = dwarf2_attr (die, name, cu);
17137
17138 if (attr != NULL)
17139 {
17140 if (attr->form == DW_FORM_strp || attr->form == DW_FORM_string
17141 || attr->form == DW_FORM_GNU_strp_alt)
17142 str = DW_STRING (attr);
17143 else
17144 complaint (&symfile_complaints,
17145 _("string type expected for attribute %s for "
17146 "DIE at 0x%x in module %s"),
17147 dwarf_attr_name (name), die->offset.sect_off,
17148 objfile_name (cu->objfile));
17149 }
17150
17151 return str;
17152}
17153
05cf31d1
JB
17154/* Return non-zero iff the attribute NAME is defined for the given DIE,
17155 and holds a non-zero value. This function should only be used for
2dc7f7b3 17156 DW_FORM_flag or DW_FORM_flag_present attributes. */
05cf31d1
JB
17157
17158static int
17159dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
17160{
17161 struct attribute *attr = dwarf2_attr (die, name, cu);
17162
17163 return (attr && DW_UNSND (attr));
17164}
17165
3ca72b44 17166static int
e142c38c 17167die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
3ca72b44 17168{
05cf31d1
JB
17169 /* A DIE is a declaration if it has a DW_AT_declaration attribute
17170 which value is non-zero. However, we have to be careful with
17171 DIEs having a DW_AT_specification attribute, because dwarf2_attr()
17172 (via dwarf2_flag_true_p) follows this attribute. So we may
17173 end up accidently finding a declaration attribute that belongs
17174 to a different DIE referenced by the specification attribute,
17175 even though the given DIE does not have a declaration attribute. */
17176 return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
17177 && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
3ca72b44
AC
17178}
17179
63d06c5c 17180/* Return the die giving the specification for DIE, if there is
f2f0e013 17181 one. *SPEC_CU is the CU containing DIE on input, and the CU
edb3359d
DJ
17182 containing the return value on output. If there is no
17183 specification, but there is an abstract origin, that is
17184 returned. */
63d06c5c
DC
17185
17186static struct die_info *
f2f0e013 17187die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
63d06c5c 17188{
f2f0e013
DJ
17189 struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
17190 *spec_cu);
63d06c5c 17191
edb3359d
DJ
17192 if (spec_attr == NULL)
17193 spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
17194
63d06c5c
DC
17195 if (spec_attr == NULL)
17196 return NULL;
17197 else
f2f0e013 17198 return follow_die_ref (die, spec_attr, spec_cu);
63d06c5c 17199}
c906108c 17200
debd256d 17201/* Free the line_header structure *LH, and any arrays and strings it
ae2de4f8
DE
17202 refers to.
17203 NOTE: This is also used as a "cleanup" function. */
17204
debd256d
JB
17205static void
17206free_line_header (struct line_header *lh)
17207{
17208 if (lh->standard_opcode_lengths)
a8bc7b56 17209 xfree (lh->standard_opcode_lengths);
debd256d
JB
17210
17211 /* Remember that all the lh->file_names[i].name pointers are
17212 pointers into debug_line_buffer, and don't need to be freed. */
17213 if (lh->file_names)
a8bc7b56 17214 xfree (lh->file_names);
debd256d
JB
17215
17216 /* Similarly for the include directory names. */
17217 if (lh->include_dirs)
a8bc7b56 17218 xfree (lh->include_dirs);
debd256d 17219
a8bc7b56 17220 xfree (lh);
debd256d
JB
17221}
17222
527f3840
JK
17223/* Stub for free_line_header to match void * callback types. */
17224
17225static void
17226free_line_header_voidp (void *arg)
17227{
9a3c8263 17228 struct line_header *lh = (struct line_header *) arg;
527f3840
JK
17229
17230 free_line_header (lh);
17231}
17232
debd256d 17233/* Add an entry to LH's include directory table. */
ae2de4f8 17234
debd256d 17235static void
d521ce57 17236add_include_dir (struct line_header *lh, const char *include_dir)
c906108c 17237{
27e0867f
DE
17238 if (dwarf_line_debug >= 2)
17239 fprintf_unfiltered (gdb_stdlog, "Adding dir %u: %s\n",
17240 lh->num_include_dirs + 1, include_dir);
17241
debd256d
JB
17242 /* Grow the array if necessary. */
17243 if (lh->include_dirs_size == 0)
c5aa993b 17244 {
debd256d 17245 lh->include_dirs_size = 1; /* for testing */
8d749320 17246 lh->include_dirs = XNEWVEC (const char *, lh->include_dirs_size);
debd256d
JB
17247 }
17248 else if (lh->num_include_dirs >= lh->include_dirs_size)
17249 {
17250 lh->include_dirs_size *= 2;
8d749320
SM
17251 lh->include_dirs = XRESIZEVEC (const char *, lh->include_dirs,
17252 lh->include_dirs_size);
c5aa993b 17253 }
c906108c 17254
debd256d
JB
17255 lh->include_dirs[lh->num_include_dirs++] = include_dir;
17256}
6e70227d 17257
debd256d 17258/* Add an entry to LH's file name table. */
ae2de4f8 17259
debd256d
JB
17260static void
17261add_file_name (struct line_header *lh,
d521ce57 17262 const char *name,
debd256d
JB
17263 unsigned int dir_index,
17264 unsigned int mod_time,
17265 unsigned int length)
17266{
17267 struct file_entry *fe;
17268
27e0867f
DE
17269 if (dwarf_line_debug >= 2)
17270 fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
17271 lh->num_file_names + 1, name);
17272
debd256d
JB
17273 /* Grow the array if necessary. */
17274 if (lh->file_names_size == 0)
17275 {
17276 lh->file_names_size = 1; /* for testing */
8d749320 17277 lh->file_names = XNEWVEC (struct file_entry, lh->file_names_size);
debd256d
JB
17278 }
17279 else if (lh->num_file_names >= lh->file_names_size)
17280 {
17281 lh->file_names_size *= 2;
224c3ddb
SM
17282 lh->file_names
17283 = XRESIZEVEC (struct file_entry, lh->file_names, lh->file_names_size);
debd256d
JB
17284 }
17285
17286 fe = &lh->file_names[lh->num_file_names++];
17287 fe->name = name;
17288 fe->dir_index = dir_index;
17289 fe->mod_time = mod_time;
17290 fe->length = length;
aaa75496 17291 fe->included_p = 0;
cb1df416 17292 fe->symtab = NULL;
debd256d 17293}
6e70227d 17294
83769d0b 17295/* A convenience function to find the proper .debug_line section for a CU. */
36586728
TT
17296
17297static struct dwarf2_section_info *
17298get_debug_line_section (struct dwarf2_cu *cu)
17299{
17300 struct dwarf2_section_info *section;
17301
17302 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
17303 DWO file. */
17304 if (cu->dwo_unit && cu->per_cu->is_debug_types)
17305 section = &cu->dwo_unit->dwo_file->sections.line;
17306 else if (cu->per_cu->is_dwz)
17307 {
17308 struct dwz_file *dwz = dwarf2_get_dwz_file ();
17309
17310 section = &dwz->line;
17311 }
17312 else
17313 section = &dwarf2_per_objfile->line;
17314
17315 return section;
17316}
17317
debd256d 17318/* Read the statement program header starting at OFFSET in
3019eac3 17319 .debug_line, or .debug_line.dwo. Return a pointer
6502dd73 17320 to a struct line_header, allocated using xmalloc.
cd366ee8
DE
17321 Returns NULL if there is a problem reading the header, e.g., if it
17322 has a version we don't understand.
debd256d
JB
17323
17324 NOTE: the strings in the include directory and file name tables of
3019eac3
DE
17325 the returned object point into the dwarf line section buffer,
17326 and must not be freed. */
ae2de4f8 17327
debd256d 17328static struct line_header *
3019eac3 17329dwarf_decode_line_header (unsigned int offset, struct dwarf2_cu *cu)
debd256d
JB
17330{
17331 struct cleanup *back_to;
17332 struct line_header *lh;
d521ce57 17333 const gdb_byte *line_ptr;
c764a876 17334 unsigned int bytes_read, offset_size;
debd256d 17335 int i;
d521ce57 17336 const char *cur_dir, *cur_file;
3019eac3
DE
17337 struct dwarf2_section_info *section;
17338 bfd *abfd;
17339
36586728 17340 section = get_debug_line_section (cu);
3019eac3
DE
17341 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
17342 if (section->buffer == NULL)
debd256d 17343 {
3019eac3
DE
17344 if (cu->dwo_unit && cu->per_cu->is_debug_types)
17345 complaint (&symfile_complaints, _("missing .debug_line.dwo section"));
17346 else
17347 complaint (&symfile_complaints, _("missing .debug_line section"));
debd256d
JB
17348 return 0;
17349 }
17350
fceca515
DE
17351 /* We can't do this until we know the section is non-empty.
17352 Only then do we know we have such a section. */
a32a8923 17353 abfd = get_section_bfd_owner (section);
fceca515 17354
a738430d
MK
17355 /* Make sure that at least there's room for the total_length field.
17356 That could be 12 bytes long, but we're just going to fudge that. */
3019eac3 17357 if (offset + 4 >= section->size)
debd256d 17358 {
4d3c2250 17359 dwarf2_statement_list_fits_in_line_number_section_complaint ();
debd256d
JB
17360 return 0;
17361 }
17362
8d749320 17363 lh = XNEW (struct line_header);
debd256d
JB
17364 memset (lh, 0, sizeof (*lh));
17365 back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
17366 (void *) lh);
17367
527f3840
JK
17368 lh->offset.sect_off = offset;
17369 lh->offset_in_dwz = cu->per_cu->is_dwz;
17370
3019eac3 17371 line_ptr = section->buffer + offset;
debd256d 17372
a738430d 17373 /* Read in the header. */
6e70227d 17374 lh->total_length =
c764a876
DE
17375 read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
17376 &bytes_read, &offset_size);
debd256d 17377 line_ptr += bytes_read;
3019eac3 17378 if (line_ptr + lh->total_length > (section->buffer + section->size))
debd256d 17379 {
4d3c2250 17380 dwarf2_statement_list_fits_in_line_number_section_complaint ();
2f324bf6 17381 do_cleanups (back_to);
debd256d
JB
17382 return 0;
17383 }
17384 lh->statement_program_end = line_ptr + lh->total_length;
17385 lh->version = read_2_bytes (abfd, line_ptr);
17386 line_ptr += 2;
cd366ee8
DE
17387 if (lh->version > 4)
17388 {
17389 /* This is a version we don't understand. The format could have
17390 changed in ways we don't handle properly so just punt. */
17391 complaint (&symfile_complaints,
17392 _("unsupported version in .debug_line section"));
17393 return NULL;
17394 }
c764a876
DE
17395 lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
17396 line_ptr += offset_size;
debd256d
JB
17397 lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
17398 line_ptr += 1;
2dc7f7b3
TT
17399 if (lh->version >= 4)
17400 {
17401 lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
17402 line_ptr += 1;
17403 }
17404 else
17405 lh->maximum_ops_per_instruction = 1;
17406
17407 if (lh->maximum_ops_per_instruction == 0)
17408 {
17409 lh->maximum_ops_per_instruction = 1;
17410 complaint (&symfile_complaints,
3e43a32a
MS
17411 _("invalid maximum_ops_per_instruction "
17412 "in `.debug_line' section"));
2dc7f7b3
TT
17413 }
17414
debd256d
JB
17415 lh->default_is_stmt = read_1_byte (abfd, line_ptr);
17416 line_ptr += 1;
17417 lh->line_base = read_1_signed_byte (abfd, line_ptr);
17418 line_ptr += 1;
17419 lh->line_range = read_1_byte (abfd, line_ptr);
17420 line_ptr += 1;
17421 lh->opcode_base = read_1_byte (abfd, line_ptr);
17422 line_ptr += 1;
8d749320 17423 lh->standard_opcode_lengths = XNEWVEC (unsigned char, lh->opcode_base);
debd256d
JB
17424
17425 lh->standard_opcode_lengths[0] = 1; /* This should never be used anyway. */
17426 for (i = 1; i < lh->opcode_base; ++i)
17427 {
17428 lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
17429 line_ptr += 1;
17430 }
17431
a738430d 17432 /* Read directory table. */
9b1c24c8 17433 while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
debd256d
JB
17434 {
17435 line_ptr += bytes_read;
17436 add_include_dir (lh, cur_dir);
17437 }
17438 line_ptr += bytes_read;
17439
a738430d 17440 /* Read file name table. */
9b1c24c8 17441 while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
debd256d
JB
17442 {
17443 unsigned int dir_index, mod_time, length;
17444
17445 line_ptr += bytes_read;
17446 dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17447 line_ptr += bytes_read;
17448 mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17449 line_ptr += bytes_read;
17450 length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17451 line_ptr += bytes_read;
17452
17453 add_file_name (lh, cur_file, dir_index, mod_time, length);
17454 }
17455 line_ptr += bytes_read;
6e70227d 17456 lh->statement_program_start = line_ptr;
debd256d 17457
3019eac3 17458 if (line_ptr > (section->buffer + section->size))
4d3c2250 17459 complaint (&symfile_complaints,
3e43a32a
MS
17460 _("line number info header doesn't "
17461 "fit in `.debug_line' section"));
debd256d
JB
17462
17463 discard_cleanups (back_to);
17464 return lh;
17465}
c906108c 17466
c6da4cef
DE
17467/* Subroutine of dwarf_decode_lines to simplify it.
17468 Return the file name of the psymtab for included file FILE_INDEX
17469 in line header LH of PST.
17470 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
17471 If space for the result is malloc'd, it will be freed by a cleanup.
1ed59174
JK
17472 Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.
17473
17474 The function creates dangling cleanup registration. */
c6da4cef 17475
d521ce57 17476static const char *
c6da4cef
DE
17477psymtab_include_file_name (const struct line_header *lh, int file_index,
17478 const struct partial_symtab *pst,
17479 const char *comp_dir)
17480{
17481 const struct file_entry fe = lh->file_names [file_index];
d521ce57
TT
17482 const char *include_name = fe.name;
17483 const char *include_name_to_compare = include_name;
17484 const char *dir_name = NULL;
72b9f47f
TT
17485 const char *pst_filename;
17486 char *copied_name = NULL;
c6da4cef
DE
17487 int file_is_pst;
17488
afa6c9ab 17489 if (fe.dir_index && lh->include_dirs != NULL)
c6da4cef
DE
17490 dir_name = lh->include_dirs[fe.dir_index - 1];
17491
17492 if (!IS_ABSOLUTE_PATH (include_name)
17493 && (dir_name != NULL || comp_dir != NULL))
17494 {
17495 /* Avoid creating a duplicate psymtab for PST.
17496 We do this by comparing INCLUDE_NAME and PST_FILENAME.
17497 Before we do the comparison, however, we need to account
17498 for DIR_NAME and COMP_DIR.
17499 First prepend dir_name (if non-NULL). If we still don't
17500 have an absolute path prepend comp_dir (if non-NULL).
17501 However, the directory we record in the include-file's
17502 psymtab does not contain COMP_DIR (to match the
17503 corresponding symtab(s)).
17504
17505 Example:
17506
17507 bash$ cd /tmp
17508 bash$ gcc -g ./hello.c
17509 include_name = "hello.c"
17510 dir_name = "."
17511 DW_AT_comp_dir = comp_dir = "/tmp"
5f52445b
YQ
17512 DW_AT_name = "./hello.c"
17513
17514 */
c6da4cef
DE
17515
17516 if (dir_name != NULL)
17517 {
d521ce57
TT
17518 char *tem = concat (dir_name, SLASH_STRING,
17519 include_name, (char *)NULL);
17520
17521 make_cleanup (xfree, tem);
17522 include_name = tem;
c6da4cef 17523 include_name_to_compare = include_name;
c6da4cef
DE
17524 }
17525 if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
17526 {
d521ce57
TT
17527 char *tem = concat (comp_dir, SLASH_STRING,
17528 include_name, (char *)NULL);
17529
17530 make_cleanup (xfree, tem);
17531 include_name_to_compare = tem;
c6da4cef
DE
17532 }
17533 }
17534
17535 pst_filename = pst->filename;
17536 if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
17537 {
72b9f47f
TT
17538 copied_name = concat (pst->dirname, SLASH_STRING,
17539 pst_filename, (char *)NULL);
17540 pst_filename = copied_name;
c6da4cef
DE
17541 }
17542
1e3fad37 17543 file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
c6da4cef 17544
72b9f47f
TT
17545 if (copied_name != NULL)
17546 xfree (copied_name);
c6da4cef
DE
17547
17548 if (file_is_pst)
17549 return NULL;
17550 return include_name;
17551}
17552
d9b3de22
DE
17553/* State machine to track the state of the line number program. */
17554
17555typedef struct
17556{
17557 /* These are part of the standard DWARF line number state machine. */
17558
17559 unsigned char op_index;
17560 unsigned int file;
17561 unsigned int line;
17562 CORE_ADDR address;
17563 int is_stmt;
17564 unsigned int discriminator;
17565
17566 /* Additional bits of state we need to track. */
17567
17568 /* The last file that we called dwarf2_start_subfile for.
17569 This is only used for TLLs. */
17570 unsigned int last_file;
17571 /* The last file a line number was recorded for. */
17572 struct subfile *last_subfile;
17573
17574 /* The function to call to record a line. */
17575 record_line_ftype *record_line;
17576
17577 /* The last line number that was recorded, used to coalesce
17578 consecutive entries for the same line. This can happen, for
17579 example, when discriminators are present. PR 17276. */
17580 unsigned int last_line;
17581 int line_has_non_zero_discriminator;
17582} lnp_state_machine;
17583
17584/* There's a lot of static state to pass to dwarf_record_line.
17585 This keeps it all together. */
17586
17587typedef struct
17588{
17589 /* The gdbarch. */
17590 struct gdbarch *gdbarch;
17591
17592 /* The line number header. */
17593 struct line_header *line_header;
17594
17595 /* Non-zero if we're recording lines.
17596 Otherwise we're building partial symtabs and are just interested in
17597 finding include files mentioned by the line number program. */
17598 int record_lines_p;
17599} lnp_reader_state;
17600
c91513d8
PP
17601/* Ignore this record_line request. */
17602
17603static void
17604noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
17605{
17606 return;
17607}
17608
a05a36a5
DE
17609/* Return non-zero if we should add LINE to the line number table.
17610 LINE is the line to add, LAST_LINE is the last line that was added,
17611 LAST_SUBFILE is the subfile for LAST_LINE.
17612 LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
17613 had a non-zero discriminator.
17614
17615 We have to be careful in the presence of discriminators.
17616 E.g., for this line:
17617
17618 for (i = 0; i < 100000; i++);
17619
17620 clang can emit four line number entries for that one line,
17621 each with a different discriminator.
17622 See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
17623
17624 However, we want gdb to coalesce all four entries into one.
17625 Otherwise the user could stepi into the middle of the line and
17626 gdb would get confused about whether the pc really was in the
17627 middle of the line.
17628
17629 Things are further complicated by the fact that two consecutive
17630 line number entries for the same line is a heuristic used by gcc
17631 to denote the end of the prologue. So we can't just discard duplicate
17632 entries, we have to be selective about it. The heuristic we use is
17633 that we only collapse consecutive entries for the same line if at least
17634 one of those entries has a non-zero discriminator. PR 17276.
17635
17636 Note: Addresses in the line number state machine can never go backwards
17637 within one sequence, thus this coalescing is ok. */
17638
17639static int
17640dwarf_record_line_p (unsigned int line, unsigned int last_line,
17641 int line_has_non_zero_discriminator,
17642 struct subfile *last_subfile)
17643{
17644 if (current_subfile != last_subfile)
17645 return 1;
17646 if (line != last_line)
17647 return 1;
17648 /* Same line for the same file that we've seen already.
17649 As a last check, for pr 17276, only record the line if the line
17650 has never had a non-zero discriminator. */
17651 if (!line_has_non_zero_discriminator)
17652 return 1;
17653 return 0;
17654}
17655
252a6764
DE
17656/* Use P_RECORD_LINE to record line number LINE beginning at address ADDRESS
17657 in the line table of subfile SUBFILE. */
17658
17659static void
d9b3de22
DE
17660dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
17661 unsigned int line, CORE_ADDR address,
17662 record_line_ftype p_record_line)
252a6764
DE
17663{
17664 CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
17665
27e0867f
DE
17666 if (dwarf_line_debug)
17667 {
17668 fprintf_unfiltered (gdb_stdlog,
17669 "Recording line %u, file %s, address %s\n",
17670 line, lbasename (subfile->name),
17671 paddress (gdbarch, address));
17672 }
17673
d5962de5 17674 (*p_record_line) (subfile, line, addr);
252a6764
DE
17675}
17676
17677/* Subroutine of dwarf_decode_lines_1 to simplify it.
17678 Mark the end of a set of line number records.
d9b3de22 17679 The arguments are the same as for dwarf_record_line_1.
252a6764
DE
17680 If SUBFILE is NULL the request is ignored. */
17681
17682static void
17683dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
17684 CORE_ADDR address, record_line_ftype p_record_line)
17685{
27e0867f
DE
17686 if (subfile == NULL)
17687 return;
17688
17689 if (dwarf_line_debug)
17690 {
17691 fprintf_unfiltered (gdb_stdlog,
17692 "Finishing current line, file %s, address %s\n",
17693 lbasename (subfile->name),
17694 paddress (gdbarch, address));
17695 }
17696
d9b3de22
DE
17697 dwarf_record_line_1 (gdbarch, subfile, 0, address, p_record_line);
17698}
17699
17700/* Record the line in STATE.
17701 END_SEQUENCE is non-zero if we're processing the end of a sequence. */
17702
17703static void
17704dwarf_record_line (lnp_reader_state *reader, lnp_state_machine *state,
17705 int end_sequence)
17706{
17707 const struct line_header *lh = reader->line_header;
17708 unsigned int file, line, discriminator;
17709 int is_stmt;
17710
17711 file = state->file;
17712 line = state->line;
17713 is_stmt = state->is_stmt;
17714 discriminator = state->discriminator;
17715
17716 if (dwarf_line_debug)
17717 {
17718 fprintf_unfiltered (gdb_stdlog,
17719 "Processing actual line %u: file %u,"
17720 " address %s, is_stmt %u, discrim %u\n",
17721 line, file,
17722 paddress (reader->gdbarch, state->address),
17723 is_stmt, discriminator);
17724 }
17725
17726 if (file == 0 || file - 1 >= lh->num_file_names)
17727 dwarf2_debug_line_missing_file_complaint ();
17728 /* For now we ignore lines not starting on an instruction boundary.
17729 But not when processing end_sequence for compatibility with the
17730 previous version of the code. */
17731 else if (state->op_index == 0 || end_sequence)
17732 {
17733 lh->file_names[file - 1].included_p = 1;
17734 if (reader->record_lines_p && is_stmt)
17735 {
e815d2d2 17736 if (state->last_subfile != current_subfile || end_sequence)
d9b3de22
DE
17737 {
17738 dwarf_finish_line (reader->gdbarch, state->last_subfile,
17739 state->address, state->record_line);
17740 }
17741
17742 if (!end_sequence)
17743 {
17744 if (dwarf_record_line_p (line, state->last_line,
17745 state->line_has_non_zero_discriminator,
17746 state->last_subfile))
17747 {
17748 dwarf_record_line_1 (reader->gdbarch, current_subfile,
17749 line, state->address,
17750 state->record_line);
17751 }
17752 state->last_subfile = current_subfile;
17753 state->last_line = line;
17754 }
17755 }
17756 }
17757}
17758
17759/* Initialize STATE for the start of a line number program. */
17760
17761static void
17762init_lnp_state_machine (lnp_state_machine *state,
17763 const lnp_reader_state *reader)
17764{
17765 memset (state, 0, sizeof (*state));
17766
17767 /* Just starting, there is no "last file". */
17768 state->last_file = 0;
17769 state->last_subfile = NULL;
17770
17771 state->record_line = record_line;
17772
17773 state->last_line = 0;
17774 state->line_has_non_zero_discriminator = 0;
17775
17776 /* Initialize these according to the DWARF spec. */
17777 state->op_index = 0;
17778 state->file = 1;
17779 state->line = 1;
17780 /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
17781 was a line entry for it so that the backend has a chance to adjust it
17782 and also record it in case it needs it. This is currently used by MIPS
17783 code, cf. `mips_adjust_dwarf2_line'. */
17784 state->address = gdbarch_adjust_dwarf2_line (reader->gdbarch, 0, 0);
17785 state->is_stmt = reader->line_header->default_is_stmt;
17786 state->discriminator = 0;
252a6764
DE
17787}
17788
924c2928
DE
17789/* Check address and if invalid nop-out the rest of the lines in this
17790 sequence. */
17791
17792static void
d9b3de22 17793check_line_address (struct dwarf2_cu *cu, lnp_state_machine *state,
924c2928
DE
17794 const gdb_byte *line_ptr,
17795 CORE_ADDR lowpc, CORE_ADDR address)
17796{
17797 /* If address < lowpc then it's not a usable value, it's outside the
17798 pc range of the CU. However, we restrict the test to only address
17799 values of zero to preserve GDB's previous behaviour which is to
17800 handle the specific case of a function being GC'd by the linker. */
17801
17802 if (address == 0 && address < lowpc)
17803 {
17804 /* This line table is for a function which has been
17805 GCd by the linker. Ignore it. PR gdb/12528 */
17806
17807 struct objfile *objfile = cu->objfile;
17808 long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
17809
17810 complaint (&symfile_complaints,
17811 _(".debug_line address at offset 0x%lx is 0 [in module %s]"),
17812 line_offset, objfile_name (objfile));
d9b3de22
DE
17813 state->record_line = noop_record_line;
17814 /* Note: sm.record_line is left as noop_record_line
924c2928
DE
17815 until we see DW_LNE_end_sequence. */
17816 }
17817}
17818
f3f5162e 17819/* Subroutine of dwarf_decode_lines to simplify it.
d9b3de22
DE
17820 Process the line number information in LH.
17821 If DECODE_FOR_PST_P is non-zero, all we do is process the line number
17822 program in order to set included_p for every referenced header. */
debd256d 17823
c906108c 17824static void
43f3e411
DE
17825dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
17826 const int decode_for_pst_p, CORE_ADDR lowpc)
c906108c 17827{
d521ce57
TT
17828 const gdb_byte *line_ptr, *extended_end;
17829 const gdb_byte *line_end;
a8c50c1f 17830 unsigned int bytes_read, extended_len;
699ca60a 17831 unsigned char op_code, extended_op;
e142c38c
DJ
17832 CORE_ADDR baseaddr;
17833 struct objfile *objfile = cu->objfile;
f3f5162e 17834 bfd *abfd = objfile->obfd;
fbf65064 17835 struct gdbarch *gdbarch = get_objfile_arch (objfile);
d9b3de22
DE
17836 /* Non-zero if we're recording line info (as opposed to building partial
17837 symtabs). */
17838 int record_lines_p = !decode_for_pst_p;
17839 /* A collection of things we need to pass to dwarf_record_line. */
17840 lnp_reader_state reader_state;
e142c38c
DJ
17841
17842 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 17843
debd256d
JB
17844 line_ptr = lh->statement_program_start;
17845 line_end = lh->statement_program_end;
c906108c 17846
d9b3de22
DE
17847 reader_state.gdbarch = gdbarch;
17848 reader_state.line_header = lh;
17849 reader_state.record_lines_p = record_lines_p;
17850
c906108c
SS
17851 /* Read the statement sequences until there's nothing left. */
17852 while (line_ptr < line_end)
17853 {
d9b3de22
DE
17854 /* The DWARF line number program state machine. */
17855 lnp_state_machine state_machine;
c906108c 17856 int end_sequence = 0;
d9b3de22
DE
17857
17858 /* Reset the state machine at the start of each sequence. */
17859 init_lnp_state_machine (&state_machine, &reader_state);
17860
17861 if (record_lines_p && lh->num_file_names >= state_machine.file)
c906108c 17862 {
aaa75496 17863 /* Start a subfile for the current file of the state machine. */
debd256d
JB
17864 /* lh->include_dirs and lh->file_names are 0-based, but the
17865 directory and file name numbers in the statement program
17866 are 1-based. */
d9b3de22 17867 struct file_entry *fe = &lh->file_names[state_machine.file - 1];
d521ce57 17868 const char *dir = NULL;
a738430d 17869
afa6c9ab 17870 if (fe->dir_index && lh->include_dirs != NULL)
debd256d 17871 dir = lh->include_dirs[fe->dir_index - 1];
4f1520fb 17872
4d663531 17873 dwarf2_start_subfile (fe->name, dir);
c906108c
SS
17874 }
17875
a738430d 17876 /* Decode the table. */
d9b3de22 17877 while (line_ptr < line_end && !end_sequence)
c906108c
SS
17878 {
17879 op_code = read_1_byte (abfd, line_ptr);
17880 line_ptr += 1;
9aa1fe7e 17881
debd256d 17882 if (op_code >= lh->opcode_base)
6e70227d 17883 {
8e07a239 17884 /* Special opcode. */
699ca60a 17885 unsigned char adj_opcode;
3e29f34a 17886 CORE_ADDR addr_adj;
a05a36a5 17887 int line_delta;
8e07a239 17888
debd256d 17889 adj_opcode = op_code - lh->opcode_base;
d9b3de22
DE
17890 addr_adj = (((state_machine.op_index
17891 + (adj_opcode / lh->line_range))
2dc7f7b3
TT
17892 / lh->maximum_ops_per_instruction)
17893 * lh->minimum_instruction_length);
d9b3de22
DE
17894 state_machine.address
17895 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17896 state_machine.op_index = ((state_machine.op_index
17897 + (adj_opcode / lh->line_range))
17898 % lh->maximum_ops_per_instruction);
a05a36a5 17899 line_delta = lh->line_base + (adj_opcode % lh->line_range);
d9b3de22 17900 state_machine.line += line_delta;
a05a36a5 17901 if (line_delta != 0)
d9b3de22
DE
17902 state_machine.line_has_non_zero_discriminator
17903 = state_machine.discriminator != 0;
17904
17905 dwarf_record_line (&reader_state, &state_machine, 0);
17906 state_machine.discriminator = 0;
9aa1fe7e
GK
17907 }
17908 else switch (op_code)
c906108c
SS
17909 {
17910 case DW_LNS_extended_op:
3e43a32a
MS
17911 extended_len = read_unsigned_leb128 (abfd, line_ptr,
17912 &bytes_read);
473b7be6 17913 line_ptr += bytes_read;
a8c50c1f 17914 extended_end = line_ptr + extended_len;
c906108c
SS
17915 extended_op = read_1_byte (abfd, line_ptr);
17916 line_ptr += 1;
17917 switch (extended_op)
17918 {
17919 case DW_LNE_end_sequence:
d9b3de22 17920 state_machine.record_line = record_line;
c906108c 17921 end_sequence = 1;
c906108c
SS
17922 break;
17923 case DW_LNE_set_address:
d9b3de22
DE
17924 {
17925 CORE_ADDR address
17926 = read_address (abfd, line_ptr, cu, &bytes_read);
17927
17928 line_ptr += bytes_read;
17929 check_line_address (cu, &state_machine, line_ptr,
17930 lowpc, address);
17931 state_machine.op_index = 0;
17932 address += baseaddr;
17933 state_machine.address
17934 = gdbarch_adjust_dwarf2_line (gdbarch, address, 0);
17935 }
c906108c
SS
17936 break;
17937 case DW_LNE_define_file:
debd256d 17938 {
d521ce57 17939 const char *cur_file;
debd256d 17940 unsigned int dir_index, mod_time, length;
6e70227d 17941
3e43a32a
MS
17942 cur_file = read_direct_string (abfd, line_ptr,
17943 &bytes_read);
debd256d
JB
17944 line_ptr += bytes_read;
17945 dir_index =
17946 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17947 line_ptr += bytes_read;
17948 mod_time =
17949 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17950 line_ptr += bytes_read;
17951 length =
17952 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17953 line_ptr += bytes_read;
17954 add_file_name (lh, cur_file, dir_index, mod_time, length);
17955 }
c906108c 17956 break;
d0c6ba3d
CC
17957 case DW_LNE_set_discriminator:
17958 /* The discriminator is not interesting to the debugger;
a05a36a5
DE
17959 just ignore it. We still need to check its value though:
17960 if there are consecutive entries for the same
17961 (non-prologue) line we want to coalesce them.
17962 PR 17276. */
d9b3de22
DE
17963 state_machine.discriminator
17964 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17965 state_machine.line_has_non_zero_discriminator
17966 |= state_machine.discriminator != 0;
a05a36a5 17967 line_ptr += bytes_read;
d0c6ba3d 17968 break;
c906108c 17969 default:
4d3c2250 17970 complaint (&symfile_complaints,
e2e0b3e5 17971 _("mangled .debug_line section"));
debd256d 17972 return;
c906108c 17973 }
a8c50c1f
DJ
17974 /* Make sure that we parsed the extended op correctly. If e.g.
17975 we expected a different address size than the producer used,
17976 we may have read the wrong number of bytes. */
17977 if (line_ptr != extended_end)
17978 {
17979 complaint (&symfile_complaints,
17980 _("mangled .debug_line section"));
17981 return;
17982 }
c906108c
SS
17983 break;
17984 case DW_LNS_copy:
d9b3de22
DE
17985 dwarf_record_line (&reader_state, &state_machine, 0);
17986 state_machine.discriminator = 0;
c906108c
SS
17987 break;
17988 case DW_LNS_advance_pc:
2dc7f7b3
TT
17989 {
17990 CORE_ADDR adjust
17991 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
3e29f34a 17992 CORE_ADDR addr_adj;
2dc7f7b3 17993
d9b3de22 17994 addr_adj = (((state_machine.op_index + adjust)
2dc7f7b3
TT
17995 / lh->maximum_ops_per_instruction)
17996 * lh->minimum_instruction_length);
d9b3de22
DE
17997 state_machine.address
17998 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17999 state_machine.op_index = ((state_machine.op_index + adjust)
18000 % lh->maximum_ops_per_instruction);
2dc7f7b3
TT
18001 line_ptr += bytes_read;
18002 }
c906108c
SS
18003 break;
18004 case DW_LNS_advance_line:
a05a36a5
DE
18005 {
18006 int line_delta
18007 = read_signed_leb128 (abfd, line_ptr, &bytes_read);
18008
d9b3de22 18009 state_machine.line += line_delta;
a05a36a5 18010 if (line_delta != 0)
d9b3de22
DE
18011 state_machine.line_has_non_zero_discriminator
18012 = state_machine.discriminator != 0;
a05a36a5
DE
18013 line_ptr += bytes_read;
18014 }
c906108c
SS
18015 break;
18016 case DW_LNS_set_file:
d9b3de22
DE
18017 {
18018 /* The arrays lh->include_dirs and lh->file_names are
18019 0-based, but the directory and file name numbers in
18020 the statement program are 1-based. */
18021 struct file_entry *fe;
18022 const char *dir = NULL;
18023
18024 state_machine.file = read_unsigned_leb128 (abfd, line_ptr,
18025 &bytes_read);
18026 line_ptr += bytes_read;
18027 if (state_machine.file == 0
18028 || state_machine.file - 1 >= lh->num_file_names)
18029 dwarf2_debug_line_missing_file_complaint ();
18030 else
18031 {
18032 fe = &lh->file_names[state_machine.file - 1];
18033 if (fe->dir_index && lh->include_dirs != NULL)
18034 dir = lh->include_dirs[fe->dir_index - 1];
18035 if (record_lines_p)
18036 {
18037 state_machine.last_subfile = current_subfile;
18038 state_machine.line_has_non_zero_discriminator
18039 = state_machine.discriminator != 0;
18040 dwarf2_start_subfile (fe->name, dir);
18041 }
18042 }
18043 }
c906108c
SS
18044 break;
18045 case DW_LNS_set_column:
0ad93d4f 18046 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
c906108c
SS
18047 line_ptr += bytes_read;
18048 break;
18049 case DW_LNS_negate_stmt:
d9b3de22 18050 state_machine.is_stmt = (!state_machine.is_stmt);
c906108c
SS
18051 break;
18052 case DW_LNS_set_basic_block:
c906108c 18053 break;
c2c6d25f
JM
18054 /* Add to the address register of the state machine the
18055 address increment value corresponding to special opcode
a738430d
MK
18056 255. I.e., this value is scaled by the minimum
18057 instruction length since special opcode 255 would have
b021a221 18058 scaled the increment. */
c906108c 18059 case DW_LNS_const_add_pc:
2dc7f7b3
TT
18060 {
18061 CORE_ADDR adjust = (255 - lh->opcode_base) / lh->line_range;
3e29f34a 18062 CORE_ADDR addr_adj;
2dc7f7b3 18063
d9b3de22 18064 addr_adj = (((state_machine.op_index + adjust)
2dc7f7b3
TT
18065 / lh->maximum_ops_per_instruction)
18066 * lh->minimum_instruction_length);
d9b3de22
DE
18067 state_machine.address
18068 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
18069 state_machine.op_index = ((state_machine.op_index + adjust)
18070 % lh->maximum_ops_per_instruction);
2dc7f7b3 18071 }
c906108c
SS
18072 break;
18073 case DW_LNS_fixed_advance_pc:
3e29f34a
MR
18074 {
18075 CORE_ADDR addr_adj;
18076
18077 addr_adj = read_2_bytes (abfd, line_ptr);
d9b3de22
DE
18078 state_machine.address
18079 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
18080 state_machine.op_index = 0;
3e29f34a
MR
18081 line_ptr += 2;
18082 }
c906108c 18083 break;
9aa1fe7e 18084 default:
a738430d
MK
18085 {
18086 /* Unknown standard opcode, ignore it. */
9aa1fe7e 18087 int i;
a738430d 18088
debd256d 18089 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
9aa1fe7e
GK
18090 {
18091 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
18092 line_ptr += bytes_read;
18093 }
18094 }
c906108c
SS
18095 }
18096 }
d9b3de22
DE
18097
18098 if (!end_sequence)
18099 dwarf2_debug_line_missing_end_sequence_complaint ();
18100
18101 /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
18102 in which case we still finish recording the last line). */
18103 dwarf_record_line (&reader_state, &state_machine, 1);
c906108c 18104 }
f3f5162e
DE
18105}
18106
18107/* Decode the Line Number Program (LNP) for the given line_header
18108 structure and CU. The actual information extracted and the type
18109 of structures created from the LNP depends on the value of PST.
18110
18111 1. If PST is NULL, then this procedure uses the data from the program
18112 to create all necessary symbol tables, and their linetables.
18113
18114 2. If PST is not NULL, this procedure reads the program to determine
18115 the list of files included by the unit represented by PST, and
18116 builds all the associated partial symbol tables.
18117
18118 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
18119 It is used for relative paths in the line table.
18120 NOTE: When processing partial symtabs (pst != NULL),
18121 comp_dir == pst->dirname.
18122
18123 NOTE: It is important that psymtabs have the same file name (via strcmp)
18124 as the corresponding symtab. Since COMP_DIR is not used in the name of the
18125 symtab we don't use it in the name of the psymtabs we create.
18126 E.g. expand_line_sal requires this when finding psymtabs to expand.
c3b7b696
YQ
18127 A good testcase for this is mb-inline.exp.
18128
527f3840
JK
18129 LOWPC is the lowest address in CU (or 0 if not known).
18130
18131 Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
18132 for its PC<->lines mapping information. Otherwise only the filename
18133 table is read in. */
f3f5162e
DE
18134
18135static void
18136dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
c3b7b696 18137 struct dwarf2_cu *cu, struct partial_symtab *pst,
527f3840 18138 CORE_ADDR lowpc, int decode_mapping)
f3f5162e
DE
18139{
18140 struct objfile *objfile = cu->objfile;
18141 const int decode_for_pst_p = (pst != NULL);
f3f5162e 18142
527f3840
JK
18143 if (decode_mapping)
18144 dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
aaa75496
JB
18145
18146 if (decode_for_pst_p)
18147 {
18148 int file_index;
18149
18150 /* Now that we're done scanning the Line Header Program, we can
18151 create the psymtab of each included file. */
18152 for (file_index = 0; file_index < lh->num_file_names; file_index++)
18153 if (lh->file_names[file_index].included_p == 1)
18154 {
d521ce57 18155 const char *include_name =
c6da4cef
DE
18156 psymtab_include_file_name (lh, file_index, pst, comp_dir);
18157 if (include_name != NULL)
aaa75496
JB
18158 dwarf2_create_include_psymtab (include_name, pst, objfile);
18159 }
18160 }
cb1df416
DJ
18161 else
18162 {
18163 /* Make sure a symtab is created for every file, even files
18164 which contain only variables (i.e. no code with associated
18165 line numbers). */
43f3e411 18166 struct compunit_symtab *cust = buildsym_compunit_symtab ();
cb1df416 18167 int i;
cb1df416
DJ
18168
18169 for (i = 0; i < lh->num_file_names; i++)
18170 {
d521ce57 18171 const char *dir = NULL;
f3f5162e 18172 struct file_entry *fe;
9a619af0 18173
cb1df416 18174 fe = &lh->file_names[i];
afa6c9ab 18175 if (fe->dir_index && lh->include_dirs != NULL)
cb1df416 18176 dir = lh->include_dirs[fe->dir_index - 1];
4d663531 18177 dwarf2_start_subfile (fe->name, dir);
cb1df416 18178
cb1df416 18179 if (current_subfile->symtab == NULL)
43f3e411
DE
18180 {
18181 current_subfile->symtab
18182 = allocate_symtab (cust, current_subfile->name);
18183 }
cb1df416
DJ
18184 fe->symtab = current_subfile->symtab;
18185 }
18186 }
c906108c
SS
18187}
18188
18189/* Start a subfile for DWARF. FILENAME is the name of the file and
18190 DIRNAME the name of the source directory which contains FILENAME
4d663531 18191 or NULL if not known.
c906108c
SS
18192 This routine tries to keep line numbers from identical absolute and
18193 relative file names in a common subfile.
18194
18195 Using the `list' example from the GDB testsuite, which resides in
18196 /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
18197 of /srcdir/list0.c yields the following debugging information for list0.c:
18198
c5aa993b 18199 DW_AT_name: /srcdir/list0.c
4d663531 18200 DW_AT_comp_dir: /compdir
357e46e7 18201 files.files[0].name: list0.h
c5aa993b 18202 files.files[0].dir: /srcdir
357e46e7 18203 files.files[1].name: list0.c
c5aa993b 18204 files.files[1].dir: /srcdir
c906108c
SS
18205
18206 The line number information for list0.c has to end up in a single
4f1520fb
FR
18207 subfile, so that `break /srcdir/list0.c:1' works as expected.
18208 start_subfile will ensure that this happens provided that we pass the
18209 concatenation of files.files[1].dir and files.files[1].name as the
18210 subfile's name. */
c906108c
SS
18211
18212static void
4d663531 18213dwarf2_start_subfile (const char *filename, const char *dirname)
c906108c 18214{
d521ce57 18215 char *copy = NULL;
4f1520fb 18216
4d663531 18217 /* In order not to lose the line information directory,
4f1520fb
FR
18218 we concatenate it to the filename when it makes sense.
18219 Note that the Dwarf3 standard says (speaking of filenames in line
18220 information): ``The directory index is ignored for file names
18221 that represent full path names''. Thus ignoring dirname in the
18222 `else' branch below isn't an issue. */
c906108c 18223
d5166ae1 18224 if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
d521ce57
TT
18225 {
18226 copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
18227 filename = copy;
18228 }
c906108c 18229
4d663531 18230 start_subfile (filename);
4f1520fb 18231
d521ce57
TT
18232 if (copy != NULL)
18233 xfree (copy);
c906108c
SS
18234}
18235
f4dc4d17
DE
18236/* Start a symtab for DWARF.
18237 NAME, COMP_DIR, LOW_PC are passed to start_symtab. */
18238
43f3e411 18239static struct compunit_symtab *
f4dc4d17 18240dwarf2_start_symtab (struct dwarf2_cu *cu,
15d034d0 18241 const char *name, const char *comp_dir, CORE_ADDR low_pc)
f4dc4d17 18242{
43f3e411
DE
18243 struct compunit_symtab *cust
18244 = start_symtab (cu->objfile, name, comp_dir, low_pc);
18245
f4dc4d17
DE
18246 record_debugformat ("DWARF 2");
18247 record_producer (cu->producer);
18248
18249 /* We assume that we're processing GCC output. */
18250 processing_gcc_compilation = 2;
18251
4d4ec4e5 18252 cu->processing_has_namespace_info = 0;
43f3e411
DE
18253
18254 return cust;
f4dc4d17
DE
18255}
18256
4c2df51b
DJ
18257static void
18258var_decode_location (struct attribute *attr, struct symbol *sym,
e7c27a73 18259 struct dwarf2_cu *cu)
4c2df51b 18260{
e7c27a73
DJ
18261 struct objfile *objfile = cu->objfile;
18262 struct comp_unit_head *cu_header = &cu->header;
18263
4c2df51b
DJ
18264 /* NOTE drow/2003-01-30: There used to be a comment and some special
18265 code here to turn a symbol with DW_AT_external and a
18266 SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol. This was
18267 necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
18268 with some versions of binutils) where shared libraries could have
18269 relocations against symbols in their debug information - the
18270 minimal symbol would have the right address, but the debug info
18271 would not. It's no longer necessary, because we will explicitly
18272 apply relocations when we read in the debug information now. */
18273
18274 /* A DW_AT_location attribute with no contents indicates that a
18275 variable has been optimized away. */
18276 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
18277 {
f1e6e072 18278 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
4c2df51b
DJ
18279 return;
18280 }
18281
18282 /* Handle one degenerate form of location expression specially, to
18283 preserve GDB's previous behavior when section offsets are
3019eac3
DE
18284 specified. If this is just a DW_OP_addr or DW_OP_GNU_addr_index
18285 then mark this symbol as LOC_STATIC. */
4c2df51b
DJ
18286
18287 if (attr_form_is_block (attr)
3019eac3
DE
18288 && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
18289 && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
18290 || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
18291 && (DW_BLOCK (attr)->size
18292 == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
4c2df51b 18293 {
891d2f0b 18294 unsigned int dummy;
4c2df51b 18295
3019eac3
DE
18296 if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
18297 SYMBOL_VALUE_ADDRESS (sym) =
18298 read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
18299 else
18300 SYMBOL_VALUE_ADDRESS (sym) =
18301 read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
f1e6e072 18302 SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
4c2df51b
DJ
18303 fixup_symbol_section (sym, objfile);
18304 SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
18305 SYMBOL_SECTION (sym));
4c2df51b
DJ
18306 return;
18307 }
18308
18309 /* NOTE drow/2002-01-30: It might be worthwhile to have a static
18310 expression evaluator, and use LOC_COMPUTED only when necessary
18311 (i.e. when the value of a register or memory location is
18312 referenced, or a thread-local block, etc.). Then again, it might
18313 not be worthwhile. I'm assuming that it isn't unless performance
18314 or memory numbers show me otherwise. */
18315
f1e6e072 18316 dwarf2_symbol_mark_computed (attr, sym, cu, 0);
8be455d7 18317
f1e6e072 18318 if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
8be455d7 18319 cu->has_loclist = 1;
4c2df51b
DJ
18320}
18321
c906108c
SS
18322/* Given a pointer to a DWARF information entry, figure out if we need
18323 to make a symbol table entry for it, and if so, create a new entry
18324 and return a pointer to it.
18325 If TYPE is NULL, determine symbol type from the die, otherwise
34eaf542
TT
18326 used the passed type.
18327 If SPACE is not NULL, use it to hold the new symbol. If it is
18328 NULL, allocate a new symbol on the objfile's obstack. */
c906108c
SS
18329
18330static struct symbol *
34eaf542
TT
18331new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
18332 struct symbol *space)
c906108c 18333{
e7c27a73 18334 struct objfile *objfile = cu->objfile;
3e29f34a 18335 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c 18336 struct symbol *sym = NULL;
15d034d0 18337 const char *name;
c906108c
SS
18338 struct attribute *attr = NULL;
18339 struct attribute *attr2 = NULL;
e142c38c 18340 CORE_ADDR baseaddr;
e37fd15a
SW
18341 struct pending **list_to_add = NULL;
18342
edb3359d 18343 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
e142c38c
DJ
18344
18345 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 18346
94af9270 18347 name = dwarf2_name (die, cu);
c906108c
SS
18348 if (name)
18349 {
94af9270 18350 const char *linkagename;
34eaf542 18351 int suppress_add = 0;
94af9270 18352
34eaf542
TT
18353 if (space)
18354 sym = space;
18355 else
e623cf5d 18356 sym = allocate_symbol (objfile);
c906108c 18357 OBJSTAT (objfile, n_syms++);
2de7ced7
DJ
18358
18359 /* Cache this symbol's name and the name's demangled form (if any). */
f85f34ed 18360 SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
94af9270
KS
18361 linkagename = dwarf2_physname (name, die, cu);
18362 SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
c906108c 18363
f55ee35c
JK
18364 /* Fortran does not have mangling standard and the mangling does differ
18365 between gfortran, iFort etc. */
18366 if (cu->language == language_fortran
b250c185 18367 && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
29df156d 18368 symbol_set_demangled_name (&(sym->ginfo),
cfc594ee 18369 dwarf2_full_name (name, die, cu),
29df156d 18370 NULL);
f55ee35c 18371
c906108c 18372 /* Default assumptions.
c5aa993b 18373 Use the passed type or decode it from the die. */
176620f1 18374 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
f1e6e072 18375 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
c906108c
SS
18376 if (type != NULL)
18377 SYMBOL_TYPE (sym) = type;
18378 else
e7c27a73 18379 SYMBOL_TYPE (sym) = die_type (die, cu);
edb3359d
DJ
18380 attr = dwarf2_attr (die,
18381 inlined_func ? DW_AT_call_line : DW_AT_decl_line,
18382 cu);
c906108c
SS
18383 if (attr)
18384 {
18385 SYMBOL_LINE (sym) = DW_UNSND (attr);
18386 }
cb1df416 18387
edb3359d
DJ
18388 attr = dwarf2_attr (die,
18389 inlined_func ? DW_AT_call_file : DW_AT_decl_file,
18390 cu);
cb1df416
DJ
18391 if (attr)
18392 {
18393 int file_index = DW_UNSND (attr);
9a619af0 18394
cb1df416
DJ
18395 if (cu->line_header == NULL
18396 || file_index > cu->line_header->num_file_names)
18397 complaint (&symfile_complaints,
18398 _("file index out of range"));
1c3d648d 18399 else if (file_index > 0)
cb1df416
DJ
18400 {
18401 struct file_entry *fe;
9a619af0 18402
cb1df416 18403 fe = &cu->line_header->file_names[file_index - 1];
08be3fe3 18404 symbol_set_symtab (sym, fe->symtab);
cb1df416
DJ
18405 }
18406 }
18407
c906108c
SS
18408 switch (die->tag)
18409 {
18410 case DW_TAG_label:
e142c38c 18411 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
c906108c 18412 if (attr)
3e29f34a
MR
18413 {
18414 CORE_ADDR addr;
18415
18416 addr = attr_value_as_address (attr);
18417 addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
18418 SYMBOL_VALUE_ADDRESS (sym) = addr;
18419 }
0f5238ed
TT
18420 SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
18421 SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
f1e6e072 18422 SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
0f5238ed 18423 add_symbol_to_list (sym, cu->list_in_scope);
c906108c
SS
18424 break;
18425 case DW_TAG_subprogram:
18426 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18427 finish_block. */
f1e6e072 18428 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
e142c38c 18429 attr2 = dwarf2_attr (die, DW_AT_external, cu);
2cfa0c8d
JB
18430 if ((attr2 && (DW_UNSND (attr2) != 0))
18431 || cu->language == language_ada)
c906108c 18432 {
2cfa0c8d
JB
18433 /* Subprograms marked external are stored as a global symbol.
18434 Ada subprograms, whether marked external or not, are always
18435 stored as a global symbol, because we want to be able to
18436 access them globally. For instance, we want to be able
18437 to break on a nested subprogram without having to
18438 specify the context. */
e37fd15a 18439 list_to_add = &global_symbols;
c906108c
SS
18440 }
18441 else
18442 {
e37fd15a 18443 list_to_add = cu->list_in_scope;
c906108c
SS
18444 }
18445 break;
edb3359d
DJ
18446 case DW_TAG_inlined_subroutine:
18447 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18448 finish_block. */
f1e6e072 18449 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
edb3359d 18450 SYMBOL_INLINED (sym) = 1;
481860b3 18451 list_to_add = cu->list_in_scope;
edb3359d 18452 break;
34eaf542
TT
18453 case DW_TAG_template_value_param:
18454 suppress_add = 1;
18455 /* Fall through. */
72929c62 18456 case DW_TAG_constant:
c906108c 18457 case DW_TAG_variable:
254e6b9e 18458 case DW_TAG_member:
0963b4bd
MS
18459 /* Compilation with minimal debug info may result in
18460 variables with missing type entries. Change the
18461 misleading `void' type to something sensible. */
c906108c 18462 if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
64c50499 18463 SYMBOL_TYPE (sym)
46bf5051 18464 = objfile_type (objfile)->nodebug_data_symbol;
64c50499 18465
e142c38c 18466 attr = dwarf2_attr (die, DW_AT_const_value, cu);
254e6b9e
DE
18467 /* In the case of DW_TAG_member, we should only be called for
18468 static const members. */
18469 if (die->tag == DW_TAG_member)
18470 {
3863f96c
DE
18471 /* dwarf2_add_field uses die_is_declaration,
18472 so we do the same. */
254e6b9e
DE
18473 gdb_assert (die_is_declaration (die, cu));
18474 gdb_assert (attr);
18475 }
c906108c
SS
18476 if (attr)
18477 {
e7c27a73 18478 dwarf2_const_value (attr, sym, cu);
e142c38c 18479 attr2 = dwarf2_attr (die, DW_AT_external, cu);
e37fd15a 18480 if (!suppress_add)
34eaf542
TT
18481 {
18482 if (attr2 && (DW_UNSND (attr2) != 0))
e37fd15a 18483 list_to_add = &global_symbols;
34eaf542 18484 else
e37fd15a 18485 list_to_add = cu->list_in_scope;
34eaf542 18486 }
c906108c
SS
18487 break;
18488 }
e142c38c 18489 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
18490 if (attr)
18491 {
e7c27a73 18492 var_decode_location (attr, sym, cu);
e142c38c 18493 attr2 = dwarf2_attr (die, DW_AT_external, cu);
4357ac6c
TT
18494
18495 /* Fortran explicitly imports any global symbols to the local
18496 scope by DW_TAG_common_block. */
18497 if (cu->language == language_fortran && die->parent
18498 && die->parent->tag == DW_TAG_common_block)
18499 attr2 = NULL;
18500
caac4577
JG
18501 if (SYMBOL_CLASS (sym) == LOC_STATIC
18502 && SYMBOL_VALUE_ADDRESS (sym) == 0
18503 && !dwarf2_per_objfile->has_section_at_zero)
18504 {
18505 /* When a static variable is eliminated by the linker,
18506 the corresponding debug information is not stripped
18507 out, but the variable address is set to null;
18508 do not add such variables into symbol table. */
18509 }
18510 else if (attr2 && (DW_UNSND (attr2) != 0))
1c809c68 18511 {
f55ee35c
JK
18512 /* Workaround gfortran PR debug/40040 - it uses
18513 DW_AT_location for variables in -fPIC libraries which may
18514 get overriden by other libraries/executable and get
18515 a different address. Resolve it by the minimal symbol
18516 which may come from inferior's executable using copy
18517 relocation. Make this workaround only for gfortran as for
18518 other compilers GDB cannot guess the minimal symbol
18519 Fortran mangling kind. */
18520 if (cu->language == language_fortran && die->parent
18521 && die->parent->tag == DW_TAG_module
18522 && cu->producer
28586665 18523 && startswith (cu->producer, "GNU Fortran"))
f1e6e072 18524 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
f55ee35c 18525
1c809c68
TT
18526 /* A variable with DW_AT_external is never static,
18527 but it may be block-scoped. */
18528 list_to_add = (cu->list_in_scope == &file_symbols
18529 ? &global_symbols : cu->list_in_scope);
1c809c68 18530 }
c906108c 18531 else
e37fd15a 18532 list_to_add = cu->list_in_scope;
c906108c
SS
18533 }
18534 else
18535 {
18536 /* We do not know the address of this symbol.
c5aa993b
JM
18537 If it is an external symbol and we have type information
18538 for it, enter the symbol as a LOC_UNRESOLVED symbol.
18539 The address of the variable will then be determined from
18540 the minimal symbol table whenever the variable is
18541 referenced. */
e142c38c 18542 attr2 = dwarf2_attr (die, DW_AT_external, cu);
0971de02
TT
18543
18544 /* Fortran explicitly imports any global symbols to the local
18545 scope by DW_TAG_common_block. */
18546 if (cu->language == language_fortran && die->parent
18547 && die->parent->tag == DW_TAG_common_block)
18548 {
18549 /* SYMBOL_CLASS doesn't matter here because
18550 read_common_block is going to reset it. */
18551 if (!suppress_add)
18552 list_to_add = cu->list_in_scope;
18553 }
18554 else if (attr2 && (DW_UNSND (attr2) != 0)
18555 && dwarf2_attr (die, DW_AT_type, cu) != NULL)
c906108c 18556 {
0fe7935b
DJ
18557 /* A variable with DW_AT_external is never static, but it
18558 may be block-scoped. */
18559 list_to_add = (cu->list_in_scope == &file_symbols
18560 ? &global_symbols : cu->list_in_scope);
18561
f1e6e072 18562 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
c906108c 18563 }
442ddf59
JK
18564 else if (!die_is_declaration (die, cu))
18565 {
18566 /* Use the default LOC_OPTIMIZED_OUT class. */
18567 gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
e37fd15a
SW
18568 if (!suppress_add)
18569 list_to_add = cu->list_in_scope;
442ddf59 18570 }
c906108c
SS
18571 }
18572 break;
18573 case DW_TAG_formal_parameter:
edb3359d
DJ
18574 /* If we are inside a function, mark this as an argument. If
18575 not, we might be looking at an argument to an inlined function
18576 when we do not have enough information to show inlined frames;
18577 pretend it's a local variable in that case so that the user can
18578 still see it. */
18579 if (context_stack_depth > 0
18580 && context_stack[context_stack_depth - 1].name != NULL)
18581 SYMBOL_IS_ARGUMENT (sym) = 1;
e142c38c 18582 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
18583 if (attr)
18584 {
e7c27a73 18585 var_decode_location (attr, sym, cu);
c906108c 18586 }
e142c38c 18587 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
18588 if (attr)
18589 {
e7c27a73 18590 dwarf2_const_value (attr, sym, cu);
c906108c 18591 }
f346a30d 18592
e37fd15a 18593 list_to_add = cu->list_in_scope;
c906108c
SS
18594 break;
18595 case DW_TAG_unspecified_parameters:
18596 /* From varargs functions; gdb doesn't seem to have any
18597 interest in this information, so just ignore it for now.
18598 (FIXME?) */
18599 break;
34eaf542
TT
18600 case DW_TAG_template_type_param:
18601 suppress_add = 1;
18602 /* Fall through. */
c906108c 18603 case DW_TAG_class_type:
680b30c7 18604 case DW_TAG_interface_type:
c906108c
SS
18605 case DW_TAG_structure_type:
18606 case DW_TAG_union_type:
72019c9c 18607 case DW_TAG_set_type:
c906108c 18608 case DW_TAG_enumeration_type:
f1e6e072 18609 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
176620f1 18610 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
c906108c 18611
63d06c5c 18612 {
9c37b5ae 18613 /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
63d06c5c
DC
18614 really ever be static objects: otherwise, if you try
18615 to, say, break of a class's method and you're in a file
18616 which doesn't mention that class, it won't work unless
18617 the check for all static symbols in lookup_symbol_aux
18618 saves you. See the OtherFileClass tests in
18619 gdb.c++/namespace.exp. */
18620
e37fd15a 18621 if (!suppress_add)
34eaf542 18622 {
34eaf542 18623 list_to_add = (cu->list_in_scope == &file_symbols
9c37b5ae 18624 && cu->language == language_cplus
34eaf542 18625 ? &global_symbols : cu->list_in_scope);
63d06c5c 18626
64382290 18627 /* The semantics of C++ state that "struct foo {
9c37b5ae 18628 ... }" also defines a typedef for "foo". */
64382290 18629 if (cu->language == language_cplus
45280282 18630 || cu->language == language_ada
c44af4eb
TT
18631 || cu->language == language_d
18632 || cu->language == language_rust)
64382290
TT
18633 {
18634 /* The symbol's name is already allocated along
18635 with this objfile, so we don't need to
18636 duplicate it for the type. */
18637 if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
18638 TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
18639 }
63d06c5c
DC
18640 }
18641 }
c906108c
SS
18642 break;
18643 case DW_TAG_typedef:
f1e6e072 18644 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
63d06c5c 18645 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e37fd15a 18646 list_to_add = cu->list_in_scope;
63d06c5c 18647 break;
c906108c 18648 case DW_TAG_base_type:
a02abb62 18649 case DW_TAG_subrange_type:
f1e6e072 18650 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
176620f1 18651 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e37fd15a 18652 list_to_add = cu->list_in_scope;
c906108c
SS
18653 break;
18654 case DW_TAG_enumerator:
e142c38c 18655 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
18656 if (attr)
18657 {
e7c27a73 18658 dwarf2_const_value (attr, sym, cu);
c906108c 18659 }
63d06c5c
DC
18660 {
18661 /* NOTE: carlton/2003-11-10: See comment above in the
18662 DW_TAG_class_type, etc. block. */
18663
e142c38c 18664 list_to_add = (cu->list_in_scope == &file_symbols
9c37b5ae 18665 && cu->language == language_cplus
e142c38c 18666 ? &global_symbols : cu->list_in_scope);
63d06c5c 18667 }
c906108c 18668 break;
74921315 18669 case DW_TAG_imported_declaration:
5c4e30ca 18670 case DW_TAG_namespace:
f1e6e072 18671 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
e37fd15a 18672 list_to_add = &global_symbols;
5c4e30ca 18673 break;
530e8392
KB
18674 case DW_TAG_module:
18675 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18676 SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
18677 list_to_add = &global_symbols;
18678 break;
4357ac6c 18679 case DW_TAG_common_block:
f1e6e072 18680 SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
4357ac6c
TT
18681 SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
18682 add_symbol_to_list (sym, cu->list_in_scope);
18683 break;
c906108c
SS
18684 default:
18685 /* Not a tag we recognize. Hopefully we aren't processing
18686 trash data, but since we must specifically ignore things
18687 we don't recognize, there is nothing else we should do at
0963b4bd 18688 this point. */
e2e0b3e5 18689 complaint (&symfile_complaints, _("unsupported tag: '%s'"),
4d3c2250 18690 dwarf_tag_name (die->tag));
c906108c
SS
18691 break;
18692 }
df8a16a1 18693
e37fd15a
SW
18694 if (suppress_add)
18695 {
18696 sym->hash_next = objfile->template_symbols;
18697 objfile->template_symbols = sym;
18698 list_to_add = NULL;
18699 }
18700
18701 if (list_to_add != NULL)
18702 add_symbol_to_list (sym, list_to_add);
18703
df8a16a1
DJ
18704 /* For the benefit of old versions of GCC, check for anonymous
18705 namespaces based on the demangled name. */
4d4ec4e5 18706 if (!cu->processing_has_namespace_info
94af9270 18707 && cu->language == language_cplus)
a10964d1 18708 cp_scan_for_anonymous_namespaces (sym, objfile);
c906108c
SS
18709 }
18710 return (sym);
18711}
18712
34eaf542
TT
18713/* A wrapper for new_symbol_full that always allocates a new symbol. */
18714
18715static struct symbol *
18716new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
18717{
18718 return new_symbol_full (die, type, cu, NULL);
18719}
18720
98bfdba5
PA
18721/* Given an attr with a DW_FORM_dataN value in host byte order,
18722 zero-extend it as appropriate for the symbol's type. The DWARF
18723 standard (v4) is not entirely clear about the meaning of using
18724 DW_FORM_dataN for a constant with a signed type, where the type is
18725 wider than the data. The conclusion of a discussion on the DWARF
18726 list was that this is unspecified. We choose to always zero-extend
18727 because that is the interpretation long in use by GCC. */
c906108c 18728
98bfdba5 18729static gdb_byte *
ff39bb5e 18730dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
12df843f 18731 struct dwarf2_cu *cu, LONGEST *value, int bits)
c906108c 18732{
e7c27a73 18733 struct objfile *objfile = cu->objfile;
e17a4113
UW
18734 enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
18735 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
98bfdba5
PA
18736 LONGEST l = DW_UNSND (attr);
18737
18738 if (bits < sizeof (*value) * 8)
18739 {
18740 l &= ((LONGEST) 1 << bits) - 1;
18741 *value = l;
18742 }
18743 else if (bits == sizeof (*value) * 8)
18744 *value = l;
18745 else
18746 {
224c3ddb 18747 gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
98bfdba5
PA
18748 store_unsigned_integer (bytes, bits / 8, byte_order, l);
18749 return bytes;
18750 }
18751
18752 return NULL;
18753}
18754
18755/* Read a constant value from an attribute. Either set *VALUE, or if
18756 the value does not fit in *VALUE, set *BYTES - either already
18757 allocated on the objfile obstack, or newly allocated on OBSTACK,
18758 or, set *BATON, if we translated the constant to a location
18759 expression. */
18760
18761static void
ff39bb5e 18762dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
98bfdba5
PA
18763 const char *name, struct obstack *obstack,
18764 struct dwarf2_cu *cu,
d521ce57 18765 LONGEST *value, const gdb_byte **bytes,
98bfdba5
PA
18766 struct dwarf2_locexpr_baton **baton)
18767{
18768 struct objfile *objfile = cu->objfile;
18769 struct comp_unit_head *cu_header = &cu->header;
c906108c 18770 struct dwarf_block *blk;
98bfdba5
PA
18771 enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
18772 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
18773
18774 *value = 0;
18775 *bytes = NULL;
18776 *baton = NULL;
c906108c
SS
18777
18778 switch (attr->form)
18779 {
18780 case DW_FORM_addr:
3019eac3 18781 case DW_FORM_GNU_addr_index:
ac56253d 18782 {
ac56253d
TT
18783 gdb_byte *data;
18784
98bfdba5
PA
18785 if (TYPE_LENGTH (type) != cu_header->addr_size)
18786 dwarf2_const_value_length_mismatch_complaint (name,
ac56253d 18787 cu_header->addr_size,
98bfdba5 18788 TYPE_LENGTH (type));
ac56253d
TT
18789 /* Symbols of this form are reasonably rare, so we just
18790 piggyback on the existing location code rather than writing
18791 a new implementation of symbol_computed_ops. */
8d749320 18792 *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
98bfdba5
PA
18793 (*baton)->per_cu = cu->per_cu;
18794 gdb_assert ((*baton)->per_cu);
ac56253d 18795
98bfdba5 18796 (*baton)->size = 2 + cu_header->addr_size;
224c3ddb 18797 data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
98bfdba5 18798 (*baton)->data = data;
ac56253d
TT
18799
18800 data[0] = DW_OP_addr;
18801 store_unsigned_integer (&data[1], cu_header->addr_size,
18802 byte_order, DW_ADDR (attr));
18803 data[cu_header->addr_size + 1] = DW_OP_stack_value;
ac56253d 18804 }
c906108c 18805 break;
4ac36638 18806 case DW_FORM_string:
93b5768b 18807 case DW_FORM_strp:
3019eac3 18808 case DW_FORM_GNU_str_index:
36586728 18809 case DW_FORM_GNU_strp_alt:
98bfdba5
PA
18810 /* DW_STRING is already allocated on the objfile obstack, point
18811 directly to it. */
d521ce57 18812 *bytes = (const gdb_byte *) DW_STRING (attr);
93b5768b 18813 break;
c906108c
SS
18814 case DW_FORM_block1:
18815 case DW_FORM_block2:
18816 case DW_FORM_block4:
18817 case DW_FORM_block:
2dc7f7b3 18818 case DW_FORM_exprloc:
c906108c 18819 blk = DW_BLOCK (attr);
98bfdba5
PA
18820 if (TYPE_LENGTH (type) != blk->size)
18821 dwarf2_const_value_length_mismatch_complaint (name, blk->size,
18822 TYPE_LENGTH (type));
18823 *bytes = blk->data;
c906108c 18824 break;
2df3850c
JM
18825
18826 /* The DW_AT_const_value attributes are supposed to carry the
18827 symbol's value "represented as it would be on the target
18828 architecture." By the time we get here, it's already been
18829 converted to host endianness, so we just need to sign- or
18830 zero-extend it as appropriate. */
18831 case DW_FORM_data1:
3aef2284 18832 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
2df3850c 18833 break;
c906108c 18834 case DW_FORM_data2:
3aef2284 18835 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
2df3850c 18836 break;
c906108c 18837 case DW_FORM_data4:
3aef2284 18838 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
2df3850c 18839 break;
c906108c 18840 case DW_FORM_data8:
3aef2284 18841 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
2df3850c
JM
18842 break;
18843
c906108c 18844 case DW_FORM_sdata:
98bfdba5 18845 *value = DW_SND (attr);
2df3850c
JM
18846 break;
18847
c906108c 18848 case DW_FORM_udata:
98bfdba5 18849 *value = DW_UNSND (attr);
c906108c 18850 break;
2df3850c 18851
c906108c 18852 default:
4d3c2250 18853 complaint (&symfile_complaints,
e2e0b3e5 18854 _("unsupported const value attribute form: '%s'"),
4d3c2250 18855 dwarf_form_name (attr->form));
98bfdba5 18856 *value = 0;
c906108c
SS
18857 break;
18858 }
18859}
18860
2df3850c 18861
98bfdba5
PA
18862/* Copy constant value from an attribute to a symbol. */
18863
2df3850c 18864static void
ff39bb5e 18865dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
98bfdba5 18866 struct dwarf2_cu *cu)
2df3850c 18867{
98bfdba5 18868 struct objfile *objfile = cu->objfile;
12df843f 18869 LONGEST value;
d521ce57 18870 const gdb_byte *bytes;
98bfdba5 18871 struct dwarf2_locexpr_baton *baton;
2df3850c 18872
98bfdba5
PA
18873 dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
18874 SYMBOL_PRINT_NAME (sym),
18875 &objfile->objfile_obstack, cu,
18876 &value, &bytes, &baton);
2df3850c 18877
98bfdba5
PA
18878 if (baton != NULL)
18879 {
98bfdba5 18880 SYMBOL_LOCATION_BATON (sym) = baton;
f1e6e072 18881 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
98bfdba5
PA
18882 }
18883 else if (bytes != NULL)
18884 {
18885 SYMBOL_VALUE_BYTES (sym) = bytes;
f1e6e072 18886 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
98bfdba5
PA
18887 }
18888 else
18889 {
18890 SYMBOL_VALUE (sym) = value;
f1e6e072 18891 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
98bfdba5 18892 }
2df3850c
JM
18893}
18894
c906108c
SS
18895/* Return the type of the die in question using its DW_AT_type attribute. */
18896
18897static struct type *
e7c27a73 18898die_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 18899{
c906108c 18900 struct attribute *type_attr;
c906108c 18901
e142c38c 18902 type_attr = dwarf2_attr (die, DW_AT_type, cu);
c906108c
SS
18903 if (!type_attr)
18904 {
18905 /* A missing DW_AT_type represents a void type. */
46bf5051 18906 return objfile_type (cu->objfile)->builtin_void;
c906108c 18907 }
348e048f 18908
673bfd45 18909 return lookup_die_type (die, type_attr, cu);
c906108c
SS
18910}
18911
b4ba55a1
JB
18912/* True iff CU's producer generates GNAT Ada auxiliary information
18913 that allows to find parallel types through that information instead
18914 of having to do expensive parallel lookups by type name. */
18915
18916static int
18917need_gnat_info (struct dwarf2_cu *cu)
18918{
18919 /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
18920 of GNAT produces this auxiliary information, without any indication
18921 that it is produced. Part of enhancing the FSF version of GNAT
18922 to produce that information will be to put in place an indicator
18923 that we can use in order to determine whether the descriptive type
18924 info is available or not. One suggestion that has been made is
18925 to use a new attribute, attached to the CU die. For now, assume
18926 that the descriptive type info is not available. */
18927 return 0;
18928}
18929
b4ba55a1
JB
18930/* Return the auxiliary type of the die in question using its
18931 DW_AT_GNAT_descriptive_type attribute. Returns NULL if the
18932 attribute is not present. */
18933
18934static struct type *
18935die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
18936{
b4ba55a1 18937 struct attribute *type_attr;
b4ba55a1
JB
18938
18939 type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
18940 if (!type_attr)
18941 return NULL;
18942
673bfd45 18943 return lookup_die_type (die, type_attr, cu);
b4ba55a1
JB
18944}
18945
18946/* If DIE has a descriptive_type attribute, then set the TYPE's
18947 descriptive type accordingly. */
18948
18949static void
18950set_descriptive_type (struct type *type, struct die_info *die,
18951 struct dwarf2_cu *cu)
18952{
18953 struct type *descriptive_type = die_descriptive_type (die, cu);
18954
18955 if (descriptive_type)
18956 {
18957 ALLOCATE_GNAT_AUX_TYPE (type);
18958 TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
18959 }
18960}
18961
c906108c
SS
18962/* Return the containing type of the die in question using its
18963 DW_AT_containing_type attribute. */
18964
18965static struct type *
e7c27a73 18966die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 18967{
c906108c 18968 struct attribute *type_attr;
c906108c 18969
e142c38c 18970 type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
33ac96f0
JK
18971 if (!type_attr)
18972 error (_("Dwarf Error: Problem turning containing type into gdb type "
4262abfb 18973 "[in module %s]"), objfile_name (cu->objfile));
33ac96f0 18974
673bfd45 18975 return lookup_die_type (die, type_attr, cu);
c906108c
SS
18976}
18977
ac9ec31b
DE
18978/* Return an error marker type to use for the ill formed type in DIE/CU. */
18979
18980static struct type *
18981build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
18982{
18983 struct objfile *objfile = dwarf2_per_objfile->objfile;
18984 char *message, *saved;
18985
18986 message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
4262abfb 18987 objfile_name (objfile),
ac9ec31b
DE
18988 cu->header.offset.sect_off,
18989 die->offset.sect_off);
224c3ddb
SM
18990 saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
18991 message, strlen (message));
ac9ec31b
DE
18992 xfree (message);
18993
19f392bc 18994 return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
ac9ec31b
DE
18995}
18996
673bfd45 18997/* Look up the type of DIE in CU using its type attribute ATTR.
ac9ec31b
DE
18998 ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
18999 DW_AT_containing_type.
673bfd45
DE
19000 If there is no type substitute an error marker. */
19001
c906108c 19002static struct type *
ff39bb5e 19003lookup_die_type (struct die_info *die, const struct attribute *attr,
673bfd45 19004 struct dwarf2_cu *cu)
c906108c 19005{
bb5ed363 19006 struct objfile *objfile = cu->objfile;
f792889a
DJ
19007 struct type *this_type;
19008
ac9ec31b
DE
19009 gdb_assert (attr->name == DW_AT_type
19010 || attr->name == DW_AT_GNAT_descriptive_type
19011 || attr->name == DW_AT_containing_type);
19012
673bfd45
DE
19013 /* First see if we have it cached. */
19014
36586728
TT
19015 if (attr->form == DW_FORM_GNU_ref_alt)
19016 {
19017 struct dwarf2_per_cu_data *per_cu;
19018 sect_offset offset = dwarf2_get_ref_die_offset (attr);
19019
19020 per_cu = dwarf2_find_containing_comp_unit (offset, 1, cu->objfile);
19021 this_type = get_die_type_at_offset (offset, per_cu);
19022 }
7771576e 19023 else if (attr_form_is_ref (attr))
673bfd45 19024 {
b64f50a1 19025 sect_offset offset = dwarf2_get_ref_die_offset (attr);
673bfd45
DE
19026
19027 this_type = get_die_type_at_offset (offset, cu->per_cu);
19028 }
55f1336d 19029 else if (attr->form == DW_FORM_ref_sig8)
673bfd45 19030 {
ac9ec31b 19031 ULONGEST signature = DW_SIGNATURE (attr);
673bfd45 19032
ac9ec31b 19033 return get_signatured_type (die, signature, cu);
673bfd45
DE
19034 }
19035 else
19036 {
ac9ec31b
DE
19037 complaint (&symfile_complaints,
19038 _("Dwarf Error: Bad type attribute %s in DIE"
19039 " at 0x%x [in module %s]"),
19040 dwarf_attr_name (attr->name), die->offset.sect_off,
4262abfb 19041 objfile_name (objfile));
ac9ec31b 19042 return build_error_marker_type (cu, die);
673bfd45
DE
19043 }
19044
19045 /* If not cached we need to read it in. */
19046
19047 if (this_type == NULL)
19048 {
ac9ec31b 19049 struct die_info *type_die = NULL;
673bfd45
DE
19050 struct dwarf2_cu *type_cu = cu;
19051
7771576e 19052 if (attr_form_is_ref (attr))
ac9ec31b
DE
19053 type_die = follow_die_ref (die, attr, &type_cu);
19054 if (type_die == NULL)
19055 return build_error_marker_type (cu, die);
19056 /* If we find the type now, it's probably because the type came
3019eac3
DE
19057 from an inter-CU reference and the type's CU got expanded before
19058 ours. */
ac9ec31b 19059 this_type = read_type_die (type_die, type_cu);
673bfd45
DE
19060 }
19061
19062 /* If we still don't have a type use an error marker. */
19063
19064 if (this_type == NULL)
ac9ec31b 19065 return build_error_marker_type (cu, die);
673bfd45 19066
f792889a 19067 return this_type;
c906108c
SS
19068}
19069
673bfd45
DE
19070/* Return the type in DIE, CU.
19071 Returns NULL for invalid types.
19072
02142a6c 19073 This first does a lookup in die_type_hash,
673bfd45
DE
19074 and only reads the die in if necessary.
19075
19076 NOTE: This can be called when reading in partial or full symbols. */
19077
f792889a 19078static struct type *
e7c27a73 19079read_type_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 19080{
f792889a
DJ
19081 struct type *this_type;
19082
19083 this_type = get_die_type (die, cu);
19084 if (this_type)
19085 return this_type;
19086
673bfd45
DE
19087 return read_type_die_1 (die, cu);
19088}
19089
19090/* Read the type in DIE, CU.
19091 Returns NULL for invalid types. */
19092
19093static struct type *
19094read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
19095{
19096 struct type *this_type = NULL;
19097
c906108c
SS
19098 switch (die->tag)
19099 {
19100 case DW_TAG_class_type:
680b30c7 19101 case DW_TAG_interface_type:
c906108c
SS
19102 case DW_TAG_structure_type:
19103 case DW_TAG_union_type:
f792889a 19104 this_type = read_structure_type (die, cu);
c906108c
SS
19105 break;
19106 case DW_TAG_enumeration_type:
f792889a 19107 this_type = read_enumeration_type (die, cu);
c906108c
SS
19108 break;
19109 case DW_TAG_subprogram:
19110 case DW_TAG_subroutine_type:
edb3359d 19111 case DW_TAG_inlined_subroutine:
f792889a 19112 this_type = read_subroutine_type (die, cu);
c906108c
SS
19113 break;
19114 case DW_TAG_array_type:
f792889a 19115 this_type = read_array_type (die, cu);
c906108c 19116 break;
72019c9c 19117 case DW_TAG_set_type:
f792889a 19118 this_type = read_set_type (die, cu);
72019c9c 19119 break;
c906108c 19120 case DW_TAG_pointer_type:
f792889a 19121 this_type = read_tag_pointer_type (die, cu);
c906108c
SS
19122 break;
19123 case DW_TAG_ptr_to_member_type:
f792889a 19124 this_type = read_tag_ptr_to_member_type (die, cu);
c906108c
SS
19125 break;
19126 case DW_TAG_reference_type:
f792889a 19127 this_type = read_tag_reference_type (die, cu);
c906108c
SS
19128 break;
19129 case DW_TAG_const_type:
f792889a 19130 this_type = read_tag_const_type (die, cu);
c906108c
SS
19131 break;
19132 case DW_TAG_volatile_type:
f792889a 19133 this_type = read_tag_volatile_type (die, cu);
c906108c 19134 break;
06d66ee9
TT
19135 case DW_TAG_restrict_type:
19136 this_type = read_tag_restrict_type (die, cu);
19137 break;
c906108c 19138 case DW_TAG_string_type:
f792889a 19139 this_type = read_tag_string_type (die, cu);
c906108c
SS
19140 break;
19141 case DW_TAG_typedef:
f792889a 19142 this_type = read_typedef (die, cu);
c906108c 19143 break;
a02abb62 19144 case DW_TAG_subrange_type:
f792889a 19145 this_type = read_subrange_type (die, cu);
a02abb62 19146 break;
c906108c 19147 case DW_TAG_base_type:
f792889a 19148 this_type = read_base_type (die, cu);
c906108c 19149 break;
81a17f79 19150 case DW_TAG_unspecified_type:
f792889a 19151 this_type = read_unspecified_type (die, cu);
81a17f79 19152 break;
0114d602
DJ
19153 case DW_TAG_namespace:
19154 this_type = read_namespace_type (die, cu);
19155 break;
f55ee35c
JK
19156 case DW_TAG_module:
19157 this_type = read_module_type (die, cu);
19158 break;
a2c2acaf
MW
19159 case DW_TAG_atomic_type:
19160 this_type = read_tag_atomic_type (die, cu);
19161 break;
c906108c 19162 default:
3e43a32a
MS
19163 complaint (&symfile_complaints,
19164 _("unexpected tag in read_type_die: '%s'"),
4d3c2250 19165 dwarf_tag_name (die->tag));
c906108c
SS
19166 break;
19167 }
63d06c5c 19168
f792889a 19169 return this_type;
63d06c5c
DC
19170}
19171
abc72ce4
DE
19172/* See if we can figure out if the class lives in a namespace. We do
19173 this by looking for a member function; its demangled name will
19174 contain namespace info, if there is any.
19175 Return the computed name or NULL.
19176 Space for the result is allocated on the objfile's obstack.
19177 This is the full-die version of guess_partial_die_structure_name.
19178 In this case we know DIE has no useful parent. */
19179
19180static char *
19181guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
19182{
19183 struct die_info *spec_die;
19184 struct dwarf2_cu *spec_cu;
19185 struct die_info *child;
19186
19187 spec_cu = cu;
19188 spec_die = die_specification (die, &spec_cu);
19189 if (spec_die != NULL)
19190 {
19191 die = spec_die;
19192 cu = spec_cu;
19193 }
19194
19195 for (child = die->child;
19196 child != NULL;
19197 child = child->sibling)
19198 {
19199 if (child->tag == DW_TAG_subprogram)
19200 {
7d45c7c3 19201 const char *linkage_name;
abc72ce4 19202
7d45c7c3
KB
19203 linkage_name = dwarf2_string_attr (child, DW_AT_linkage_name, cu);
19204 if (linkage_name == NULL)
19205 linkage_name = dwarf2_string_attr (child, DW_AT_MIPS_linkage_name,
19206 cu);
19207 if (linkage_name != NULL)
abc72ce4
DE
19208 {
19209 char *actual_name
19210 = language_class_name_from_physname (cu->language_defn,
7d45c7c3 19211 linkage_name);
abc72ce4
DE
19212 char *name = NULL;
19213
19214 if (actual_name != NULL)
19215 {
15d034d0 19216 const char *die_name = dwarf2_name (die, cu);
abc72ce4
DE
19217
19218 if (die_name != NULL
19219 && strcmp (die_name, actual_name) != 0)
19220 {
19221 /* Strip off the class name from the full name.
19222 We want the prefix. */
19223 int die_name_len = strlen (die_name);
19224 int actual_name_len = strlen (actual_name);
19225
19226 /* Test for '::' as a sanity check. */
19227 if (actual_name_len > die_name_len + 2
3e43a32a
MS
19228 && actual_name[actual_name_len
19229 - die_name_len - 1] == ':')
224c3ddb
SM
19230 name = (char *) obstack_copy0 (
19231 &cu->objfile->per_bfd->storage_obstack,
19232 actual_name, actual_name_len - die_name_len - 2);
abc72ce4
DE
19233 }
19234 }
19235 xfree (actual_name);
19236 return name;
19237 }
19238 }
19239 }
19240
19241 return NULL;
19242}
19243
96408a79
SA
19244/* GCC might emit a nameless typedef that has a linkage name. Determine the
19245 prefix part in such case. See
19246 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
19247
19248static char *
19249anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
19250{
19251 struct attribute *attr;
e6a959d6 19252 const char *base;
96408a79
SA
19253
19254 if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
19255 && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
19256 return NULL;
19257
7d45c7c3 19258 if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
96408a79
SA
19259 return NULL;
19260
19261 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19262 if (attr == NULL)
19263 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19264 if (attr == NULL || DW_STRING (attr) == NULL)
19265 return NULL;
19266
19267 /* dwarf2_name had to be already called. */
19268 gdb_assert (DW_STRING_IS_CANONICAL (attr));
19269
19270 /* Strip the base name, keep any leading namespaces/classes. */
19271 base = strrchr (DW_STRING (attr), ':');
19272 if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
19273 return "";
19274
224c3ddb
SM
19275 return (char *) obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
19276 DW_STRING (attr),
19277 &base[-1] - DW_STRING (attr));
96408a79
SA
19278}
19279
fdde2d81 19280/* Return the name of the namespace/class that DIE is defined within,
0114d602 19281 or "" if we can't tell. The caller should not xfree the result.
fdde2d81 19282
0114d602
DJ
19283 For example, if we're within the method foo() in the following
19284 code:
19285
19286 namespace N {
19287 class C {
19288 void foo () {
19289 }
19290 };
19291 }
19292
19293 then determine_prefix on foo's die will return "N::C". */
fdde2d81 19294
0d5cff50 19295static const char *
e142c38c 19296determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
63d06c5c 19297{
0114d602
DJ
19298 struct die_info *parent, *spec_die;
19299 struct dwarf2_cu *spec_cu;
19300 struct type *parent_type;
96408a79 19301 char *retval;
63d06c5c 19302
9c37b5ae 19303 if (cu->language != language_cplus
c44af4eb
TT
19304 && cu->language != language_fortran && cu->language != language_d
19305 && cu->language != language_rust)
0114d602
DJ
19306 return "";
19307
96408a79
SA
19308 retval = anonymous_struct_prefix (die, cu);
19309 if (retval)
19310 return retval;
19311
0114d602
DJ
19312 /* We have to be careful in the presence of DW_AT_specification.
19313 For example, with GCC 3.4, given the code
19314
19315 namespace N {
19316 void foo() {
19317 // Definition of N::foo.
19318 }
19319 }
19320
19321 then we'll have a tree of DIEs like this:
19322
19323 1: DW_TAG_compile_unit
19324 2: DW_TAG_namespace // N
19325 3: DW_TAG_subprogram // declaration of N::foo
19326 4: DW_TAG_subprogram // definition of N::foo
19327 DW_AT_specification // refers to die #3
19328
19329 Thus, when processing die #4, we have to pretend that we're in
19330 the context of its DW_AT_specification, namely the contex of die
19331 #3. */
19332 spec_cu = cu;
19333 spec_die = die_specification (die, &spec_cu);
19334 if (spec_die == NULL)
19335 parent = die->parent;
19336 else
63d06c5c 19337 {
0114d602
DJ
19338 parent = spec_die->parent;
19339 cu = spec_cu;
63d06c5c 19340 }
0114d602
DJ
19341
19342 if (parent == NULL)
19343 return "";
98bfdba5
PA
19344 else if (parent->building_fullname)
19345 {
19346 const char *name;
19347 const char *parent_name;
19348
19349 /* It has been seen on RealView 2.2 built binaries,
19350 DW_TAG_template_type_param types actually _defined_ as
19351 children of the parent class:
19352
19353 enum E {};
19354 template class <class Enum> Class{};
19355 Class<enum E> class_e;
19356
19357 1: DW_TAG_class_type (Class)
19358 2: DW_TAG_enumeration_type (E)
19359 3: DW_TAG_enumerator (enum1:0)
19360 3: DW_TAG_enumerator (enum2:1)
19361 ...
19362 2: DW_TAG_template_type_param
19363 DW_AT_type DW_FORM_ref_udata (E)
19364
19365 Besides being broken debug info, it can put GDB into an
19366 infinite loop. Consider:
19367
19368 When we're building the full name for Class<E>, we'll start
19369 at Class, and go look over its template type parameters,
19370 finding E. We'll then try to build the full name of E, and
19371 reach here. We're now trying to build the full name of E,
19372 and look over the parent DIE for containing scope. In the
19373 broken case, if we followed the parent DIE of E, we'd again
19374 find Class, and once again go look at its template type
19375 arguments, etc., etc. Simply don't consider such parent die
19376 as source-level parent of this die (it can't be, the language
19377 doesn't allow it), and break the loop here. */
19378 name = dwarf2_name (die, cu);
19379 parent_name = dwarf2_name (parent, cu);
19380 complaint (&symfile_complaints,
19381 _("template param type '%s' defined within parent '%s'"),
19382 name ? name : "<unknown>",
19383 parent_name ? parent_name : "<unknown>");
19384 return "";
19385 }
63d06c5c 19386 else
0114d602
DJ
19387 switch (parent->tag)
19388 {
63d06c5c 19389 case DW_TAG_namespace:
0114d602 19390 parent_type = read_type_die (parent, cu);
acebe513
UW
19391 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
19392 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
19393 Work around this problem here. */
19394 if (cu->language == language_cplus
19395 && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
19396 return "";
0114d602
DJ
19397 /* We give a name to even anonymous namespaces. */
19398 return TYPE_TAG_NAME (parent_type);
63d06c5c 19399 case DW_TAG_class_type:
680b30c7 19400 case DW_TAG_interface_type:
63d06c5c 19401 case DW_TAG_structure_type:
0114d602 19402 case DW_TAG_union_type:
f55ee35c 19403 case DW_TAG_module:
0114d602
DJ
19404 parent_type = read_type_die (parent, cu);
19405 if (TYPE_TAG_NAME (parent_type) != NULL)
19406 return TYPE_TAG_NAME (parent_type);
19407 else
19408 /* An anonymous structure is only allowed non-static data
19409 members; no typedefs, no member functions, et cetera.
19410 So it does not need a prefix. */
19411 return "";
abc72ce4 19412 case DW_TAG_compile_unit:
95554aad 19413 case DW_TAG_partial_unit:
abc72ce4
DE
19414 /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace. Cope. */
19415 if (cu->language == language_cplus
8b70b953 19416 && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
abc72ce4
DE
19417 && die->child != NULL
19418 && (die->tag == DW_TAG_class_type
19419 || die->tag == DW_TAG_structure_type
19420 || die->tag == DW_TAG_union_type))
19421 {
19422 char *name = guess_full_die_structure_name (die, cu);
19423 if (name != NULL)
19424 return name;
19425 }
19426 return "";
3d567982
TT
19427 case DW_TAG_enumeration_type:
19428 parent_type = read_type_die (parent, cu);
19429 if (TYPE_DECLARED_CLASS (parent_type))
19430 {
19431 if (TYPE_TAG_NAME (parent_type) != NULL)
19432 return TYPE_TAG_NAME (parent_type);
19433 return "";
19434 }
19435 /* Fall through. */
63d06c5c 19436 default:
8176b9b8 19437 return determine_prefix (parent, cu);
63d06c5c 19438 }
63d06c5c
DC
19439}
19440
3e43a32a
MS
19441/* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
19442 with appropriate separator. If PREFIX or SUFFIX is NULL or empty, then
19443 simply copy the SUFFIX or PREFIX, respectively. If OBS is non-null, perform
19444 an obconcat, otherwise allocate storage for the result. The CU argument is
19445 used to determine the language and hence, the appropriate separator. */
987504bb 19446
f55ee35c 19447#define MAX_SEP_LEN 7 /* strlen ("__") + strlen ("_MOD_") */
63d06c5c
DC
19448
19449static char *
f55ee35c
JK
19450typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
19451 int physname, struct dwarf2_cu *cu)
63d06c5c 19452{
f55ee35c 19453 const char *lead = "";
5c315b68 19454 const char *sep;
63d06c5c 19455
3e43a32a
MS
19456 if (suffix == NULL || suffix[0] == '\0'
19457 || prefix == NULL || prefix[0] == '\0')
987504bb 19458 sep = "";
45280282
IB
19459 else if (cu->language == language_d)
19460 {
19461 /* For D, the 'main' function could be defined in any module, but it
19462 should never be prefixed. */
19463 if (strcmp (suffix, "D main") == 0)
19464 {
19465 prefix = "";
19466 sep = "";
19467 }
19468 else
19469 sep = ".";
19470 }
f55ee35c
JK
19471 else if (cu->language == language_fortran && physname)
19472 {
19473 /* This is gfortran specific mangling. Normally DW_AT_linkage_name or
19474 DW_AT_MIPS_linkage_name is preferred and used instead. */
19475
19476 lead = "__";
19477 sep = "_MOD_";
19478 }
987504bb
JJ
19479 else
19480 sep = "::";
63d06c5c 19481
6dd47d34
DE
19482 if (prefix == NULL)
19483 prefix = "";
19484 if (suffix == NULL)
19485 suffix = "";
19486
987504bb
JJ
19487 if (obs == NULL)
19488 {
3e43a32a 19489 char *retval
224c3ddb
SM
19490 = ((char *)
19491 xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
9a619af0 19492
f55ee35c
JK
19493 strcpy (retval, lead);
19494 strcat (retval, prefix);
6dd47d34
DE
19495 strcat (retval, sep);
19496 strcat (retval, suffix);
63d06c5c
DC
19497 return retval;
19498 }
987504bb
JJ
19499 else
19500 {
19501 /* We have an obstack. */
f55ee35c 19502 return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
987504bb 19503 }
63d06c5c
DC
19504}
19505
c906108c
SS
19506/* Return sibling of die, NULL if no sibling. */
19507
f9aca02d 19508static struct die_info *
fba45db2 19509sibling_die (struct die_info *die)
c906108c 19510{
639d11d3 19511 return die->sibling;
c906108c
SS
19512}
19513
71c25dea
TT
19514/* Get name of a die, return NULL if not found. */
19515
15d034d0
TT
19516static const char *
19517dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
71c25dea
TT
19518 struct obstack *obstack)
19519{
19520 if (name && cu->language == language_cplus)
19521 {
2f408ecb 19522 std::string canon_name = cp_canonicalize_string (name);
71c25dea 19523
2f408ecb 19524 if (!canon_name.empty ())
71c25dea 19525 {
2f408ecb
PA
19526 if (canon_name != name)
19527 name = (const char *) obstack_copy0 (obstack,
19528 canon_name.c_str (),
19529 canon_name.length ());
71c25dea
TT
19530 }
19531 }
19532
19533 return name;
c906108c
SS
19534}
19535
96553a0c
DE
19536/* Get name of a die, return NULL if not found.
19537 Anonymous namespaces are converted to their magic string. */
9219021c 19538
15d034d0 19539static const char *
e142c38c 19540dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
9219021c
DC
19541{
19542 struct attribute *attr;
19543
e142c38c 19544 attr = dwarf2_attr (die, DW_AT_name, cu);
53832f31 19545 if ((!attr || !DW_STRING (attr))
96553a0c 19546 && die->tag != DW_TAG_namespace
53832f31
TT
19547 && die->tag != DW_TAG_class_type
19548 && die->tag != DW_TAG_interface_type
19549 && die->tag != DW_TAG_structure_type
19550 && die->tag != DW_TAG_union_type)
71c25dea
TT
19551 return NULL;
19552
19553 switch (die->tag)
19554 {
19555 case DW_TAG_compile_unit:
95554aad 19556 case DW_TAG_partial_unit:
71c25dea
TT
19557 /* Compilation units have a DW_AT_name that is a filename, not
19558 a source language identifier. */
19559 case DW_TAG_enumeration_type:
19560 case DW_TAG_enumerator:
19561 /* These tags always have simple identifiers already; no need
19562 to canonicalize them. */
19563 return DW_STRING (attr);
907af001 19564
96553a0c
DE
19565 case DW_TAG_namespace:
19566 if (attr != NULL && DW_STRING (attr) != NULL)
19567 return DW_STRING (attr);
19568 return CP_ANONYMOUS_NAMESPACE_STR;
19569
907af001
UW
19570 case DW_TAG_class_type:
19571 case DW_TAG_interface_type:
19572 case DW_TAG_structure_type:
19573 case DW_TAG_union_type:
19574 /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
19575 structures or unions. These were of the form "._%d" in GCC 4.1,
19576 or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
19577 and GCC 4.4. We work around this problem by ignoring these. */
53832f31 19578 if (attr && DW_STRING (attr)
61012eef
GB
19579 && (startswith (DW_STRING (attr), "._")
19580 || startswith (DW_STRING (attr), "<anonymous")))
907af001 19581 return NULL;
53832f31
TT
19582
19583 /* GCC might emit a nameless typedef that has a linkage name. See
19584 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
19585 if (!attr || DW_STRING (attr) == NULL)
19586 {
df5c6c50 19587 char *demangled = NULL;
53832f31
TT
19588
19589 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19590 if (attr == NULL)
19591 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19592
19593 if (attr == NULL || DW_STRING (attr) == NULL)
19594 return NULL;
19595
df5c6c50
JK
19596 /* Avoid demangling DW_STRING (attr) the second time on a second
19597 call for the same DIE. */
19598 if (!DW_STRING_IS_CANONICAL (attr))
8de20a37 19599 demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
53832f31
TT
19600
19601 if (demangled)
19602 {
e6a959d6 19603 const char *base;
96408a79 19604
53832f31 19605 /* FIXME: we already did this for the partial symbol... */
34a68019 19606 DW_STRING (attr)
224c3ddb
SM
19607 = ((const char *)
19608 obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
19609 demangled, strlen (demangled)));
53832f31
TT
19610 DW_STRING_IS_CANONICAL (attr) = 1;
19611 xfree (demangled);
96408a79
SA
19612
19613 /* Strip any leading namespaces/classes, keep only the base name.
19614 DW_AT_name for named DIEs does not contain the prefixes. */
19615 base = strrchr (DW_STRING (attr), ':');
19616 if (base && base > DW_STRING (attr) && base[-1] == ':')
19617 return &base[1];
19618 else
19619 return DW_STRING (attr);
53832f31
TT
19620 }
19621 }
907af001
UW
19622 break;
19623
71c25dea 19624 default:
907af001
UW
19625 break;
19626 }
19627
19628 if (!DW_STRING_IS_CANONICAL (attr))
19629 {
19630 DW_STRING (attr)
19631 = dwarf2_canonicalize_name (DW_STRING (attr), cu,
34a68019 19632 &cu->objfile->per_bfd->storage_obstack);
907af001 19633 DW_STRING_IS_CANONICAL (attr) = 1;
71c25dea 19634 }
907af001 19635 return DW_STRING (attr);
9219021c
DC
19636}
19637
19638/* Return the die that this die in an extension of, or NULL if there
f2f0e013
DJ
19639 is none. *EXT_CU is the CU containing DIE on input, and the CU
19640 containing the return value on output. */
9219021c
DC
19641
19642static struct die_info *
f2f0e013 19643dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
9219021c
DC
19644{
19645 struct attribute *attr;
9219021c 19646
f2f0e013 19647 attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
9219021c
DC
19648 if (attr == NULL)
19649 return NULL;
19650
f2f0e013 19651 return follow_die_ref (die, attr, ext_cu);
9219021c
DC
19652}
19653
c906108c
SS
19654/* Convert a DIE tag into its string name. */
19655
f39c6ffd 19656static const char *
aa1ee363 19657dwarf_tag_name (unsigned tag)
c906108c 19658{
f39c6ffd
TT
19659 const char *name = get_DW_TAG_name (tag);
19660
19661 if (name == NULL)
19662 return "DW_TAG_<unknown>";
19663
19664 return name;
c906108c
SS
19665}
19666
19667/* Convert a DWARF attribute code into its string name. */
19668
f39c6ffd 19669static const char *
aa1ee363 19670dwarf_attr_name (unsigned attr)
c906108c 19671{
f39c6ffd
TT
19672 const char *name;
19673
c764a876 19674#ifdef MIPS /* collides with DW_AT_HP_block_index */
f39c6ffd
TT
19675 if (attr == DW_AT_MIPS_fde)
19676 return "DW_AT_MIPS_fde";
19677#else
19678 if (attr == DW_AT_HP_block_index)
19679 return "DW_AT_HP_block_index";
c764a876 19680#endif
f39c6ffd
TT
19681
19682 name = get_DW_AT_name (attr);
19683
19684 if (name == NULL)
19685 return "DW_AT_<unknown>";
19686
19687 return name;
c906108c
SS
19688}
19689
19690/* Convert a DWARF value form code into its string name. */
19691
f39c6ffd 19692static const char *
aa1ee363 19693dwarf_form_name (unsigned form)
c906108c 19694{
f39c6ffd
TT
19695 const char *name = get_DW_FORM_name (form);
19696
19697 if (name == NULL)
19698 return "DW_FORM_<unknown>";
19699
19700 return name;
c906108c
SS
19701}
19702
19703static char *
fba45db2 19704dwarf_bool_name (unsigned mybool)
c906108c
SS
19705{
19706 if (mybool)
19707 return "TRUE";
19708 else
19709 return "FALSE";
19710}
19711
19712/* Convert a DWARF type code into its string name. */
19713
f39c6ffd 19714static const char *
aa1ee363 19715dwarf_type_encoding_name (unsigned enc)
c906108c 19716{
f39c6ffd 19717 const char *name = get_DW_ATE_name (enc);
c906108c 19718
f39c6ffd
TT
19719 if (name == NULL)
19720 return "DW_ATE_<unknown>";
c906108c 19721
f39c6ffd 19722 return name;
c906108c 19723}
c906108c 19724
f9aca02d 19725static void
d97bc12b 19726dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
c906108c
SS
19727{
19728 unsigned int i;
19729
d97bc12b
DE
19730 print_spaces (indent, f);
19731 fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
b64f50a1 19732 dwarf_tag_name (die->tag), die->abbrev, die->offset.sect_off);
d97bc12b
DE
19733
19734 if (die->parent != NULL)
19735 {
19736 print_spaces (indent, f);
19737 fprintf_unfiltered (f, " parent at offset: 0x%x\n",
b64f50a1 19738 die->parent->offset.sect_off);
d97bc12b
DE
19739 }
19740
19741 print_spaces (indent, f);
19742 fprintf_unfiltered (f, " has children: %s\n",
639d11d3 19743 dwarf_bool_name (die->child != NULL));
c906108c 19744
d97bc12b
DE
19745 print_spaces (indent, f);
19746 fprintf_unfiltered (f, " attributes:\n");
19747
c906108c
SS
19748 for (i = 0; i < die->num_attrs; ++i)
19749 {
d97bc12b
DE
19750 print_spaces (indent, f);
19751 fprintf_unfiltered (f, " %s (%s) ",
c906108c
SS
19752 dwarf_attr_name (die->attrs[i].name),
19753 dwarf_form_name (die->attrs[i].form));
d97bc12b 19754
c906108c
SS
19755 switch (die->attrs[i].form)
19756 {
c906108c 19757 case DW_FORM_addr:
3019eac3 19758 case DW_FORM_GNU_addr_index:
d97bc12b 19759 fprintf_unfiltered (f, "address: ");
5af949e3 19760 fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
c906108c
SS
19761 break;
19762 case DW_FORM_block2:
19763 case DW_FORM_block4:
19764 case DW_FORM_block:
19765 case DW_FORM_block1:
56eb65bd
SP
19766 fprintf_unfiltered (f, "block: size %s",
19767 pulongest (DW_BLOCK (&die->attrs[i])->size));
c906108c 19768 break;
2dc7f7b3 19769 case DW_FORM_exprloc:
56eb65bd
SP
19770 fprintf_unfiltered (f, "expression: size %s",
19771 pulongest (DW_BLOCK (&die->attrs[i])->size));
2dc7f7b3 19772 break;
4568ecf9
DE
19773 case DW_FORM_ref_addr:
19774 fprintf_unfiltered (f, "ref address: ");
19775 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19776 break;
36586728
TT
19777 case DW_FORM_GNU_ref_alt:
19778 fprintf_unfiltered (f, "alt ref address: ");
19779 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19780 break;
10b3939b
DJ
19781 case DW_FORM_ref1:
19782 case DW_FORM_ref2:
19783 case DW_FORM_ref4:
4568ecf9
DE
19784 case DW_FORM_ref8:
19785 case DW_FORM_ref_udata:
d97bc12b 19786 fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
4568ecf9 19787 (long) (DW_UNSND (&die->attrs[i])));
10b3939b 19788 break;
c906108c
SS
19789 case DW_FORM_data1:
19790 case DW_FORM_data2:
19791 case DW_FORM_data4:
ce5d95e1 19792 case DW_FORM_data8:
c906108c
SS
19793 case DW_FORM_udata:
19794 case DW_FORM_sdata:
43bbcdc2
PH
19795 fprintf_unfiltered (f, "constant: %s",
19796 pulongest (DW_UNSND (&die->attrs[i])));
c906108c 19797 break;
2dc7f7b3
TT
19798 case DW_FORM_sec_offset:
19799 fprintf_unfiltered (f, "section offset: %s",
19800 pulongest (DW_UNSND (&die->attrs[i])));
19801 break;
55f1336d 19802 case DW_FORM_ref_sig8:
ac9ec31b
DE
19803 fprintf_unfiltered (f, "signature: %s",
19804 hex_string (DW_SIGNATURE (&die->attrs[i])));
348e048f 19805 break;
c906108c 19806 case DW_FORM_string:
4bdf3d34 19807 case DW_FORM_strp:
3019eac3 19808 case DW_FORM_GNU_str_index:
36586728 19809 case DW_FORM_GNU_strp_alt:
8285870a 19810 fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
c906108c 19811 DW_STRING (&die->attrs[i])
8285870a
JK
19812 ? DW_STRING (&die->attrs[i]) : "",
19813 DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
c906108c
SS
19814 break;
19815 case DW_FORM_flag:
19816 if (DW_UNSND (&die->attrs[i]))
d97bc12b 19817 fprintf_unfiltered (f, "flag: TRUE");
c906108c 19818 else
d97bc12b 19819 fprintf_unfiltered (f, "flag: FALSE");
c906108c 19820 break;
2dc7f7b3
TT
19821 case DW_FORM_flag_present:
19822 fprintf_unfiltered (f, "flag: TRUE");
19823 break;
a8329558 19824 case DW_FORM_indirect:
0963b4bd
MS
19825 /* The reader will have reduced the indirect form to
19826 the "base form" so this form should not occur. */
3e43a32a
MS
19827 fprintf_unfiltered (f,
19828 "unexpected attribute form: DW_FORM_indirect");
a8329558 19829 break;
c906108c 19830 default:
d97bc12b 19831 fprintf_unfiltered (f, "unsupported attribute form: %d.",
c5aa993b 19832 die->attrs[i].form);
d97bc12b 19833 break;
c906108c 19834 }
d97bc12b 19835 fprintf_unfiltered (f, "\n");
c906108c
SS
19836 }
19837}
19838
f9aca02d 19839static void
d97bc12b 19840dump_die_for_error (struct die_info *die)
c906108c 19841{
d97bc12b
DE
19842 dump_die_shallow (gdb_stderr, 0, die);
19843}
19844
19845static void
19846dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
19847{
19848 int indent = level * 4;
19849
19850 gdb_assert (die != NULL);
19851
19852 if (level >= max_level)
19853 return;
19854
19855 dump_die_shallow (f, indent, die);
19856
19857 if (die->child != NULL)
c906108c 19858 {
d97bc12b
DE
19859 print_spaces (indent, f);
19860 fprintf_unfiltered (f, " Children:");
19861 if (level + 1 < max_level)
19862 {
19863 fprintf_unfiltered (f, "\n");
19864 dump_die_1 (f, level + 1, max_level, die->child);
19865 }
19866 else
19867 {
3e43a32a
MS
19868 fprintf_unfiltered (f,
19869 " [not printed, max nesting level reached]\n");
d97bc12b
DE
19870 }
19871 }
19872
19873 if (die->sibling != NULL && level > 0)
19874 {
19875 dump_die_1 (f, level, max_level, die->sibling);
c906108c
SS
19876 }
19877}
19878
d97bc12b
DE
19879/* This is called from the pdie macro in gdbinit.in.
19880 It's not static so gcc will keep a copy callable from gdb. */
19881
19882void
19883dump_die (struct die_info *die, int max_level)
19884{
19885 dump_die_1 (gdb_stdlog, 0, max_level, die);
19886}
19887
f9aca02d 19888static void
51545339 19889store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
c906108c 19890{
51545339 19891 void **slot;
c906108c 19892
b64f50a1
JK
19893 slot = htab_find_slot_with_hash (cu->die_hash, die, die->offset.sect_off,
19894 INSERT);
51545339
DJ
19895
19896 *slot = die;
c906108c
SS
19897}
19898
b64f50a1
JK
19899/* Return DIE offset of ATTR. Return 0 with complaint if ATTR is not of the
19900 required kind. */
19901
19902static sect_offset
ff39bb5e 19903dwarf2_get_ref_die_offset (const struct attribute *attr)
93311388 19904{
4568ecf9 19905 sect_offset retval = { DW_UNSND (attr) };
b64f50a1 19906
7771576e 19907 if (attr_form_is_ref (attr))
b64f50a1 19908 return retval;
93311388 19909
b64f50a1 19910 retval.sect_off = 0;
93311388
DE
19911 complaint (&symfile_complaints,
19912 _("unsupported die ref attribute form: '%s'"),
19913 dwarf_form_name (attr->form));
b64f50a1 19914 return retval;
c906108c
SS
19915}
19916
43bbcdc2
PH
19917/* Return the constant value held by ATTR. Return DEFAULT_VALUE if
19918 * the value held by the attribute is not constant. */
a02abb62 19919
43bbcdc2 19920static LONGEST
ff39bb5e 19921dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
a02abb62
JB
19922{
19923 if (attr->form == DW_FORM_sdata)
19924 return DW_SND (attr);
19925 else if (attr->form == DW_FORM_udata
19926 || attr->form == DW_FORM_data1
19927 || attr->form == DW_FORM_data2
19928 || attr->form == DW_FORM_data4
19929 || attr->form == DW_FORM_data8)
19930 return DW_UNSND (attr);
19931 else
19932 {
3e43a32a
MS
19933 complaint (&symfile_complaints,
19934 _("Attribute value is not a constant (%s)"),
a02abb62
JB
19935 dwarf_form_name (attr->form));
19936 return default_value;
19937 }
19938}
19939
348e048f
DE
19940/* Follow reference or signature attribute ATTR of SRC_DIE.
19941 On entry *REF_CU is the CU of SRC_DIE.
19942 On exit *REF_CU is the CU of the result. */
19943
19944static struct die_info *
ff39bb5e 19945follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
348e048f
DE
19946 struct dwarf2_cu **ref_cu)
19947{
19948 struct die_info *die;
19949
7771576e 19950 if (attr_form_is_ref (attr))
348e048f 19951 die = follow_die_ref (src_die, attr, ref_cu);
55f1336d 19952 else if (attr->form == DW_FORM_ref_sig8)
348e048f
DE
19953 die = follow_die_sig (src_die, attr, ref_cu);
19954 else
19955 {
19956 dump_die_for_error (src_die);
19957 error (_("Dwarf Error: Expected reference attribute [in module %s]"),
4262abfb 19958 objfile_name ((*ref_cu)->objfile));
348e048f
DE
19959 }
19960
19961 return die;
03dd20cc
DJ
19962}
19963
5c631832 19964/* Follow reference OFFSET.
673bfd45
DE
19965 On entry *REF_CU is the CU of the source die referencing OFFSET.
19966 On exit *REF_CU is the CU of the result.
19967 Returns NULL if OFFSET is invalid. */
f504f079 19968
f9aca02d 19969static struct die_info *
36586728
TT
19970follow_die_offset (sect_offset offset, int offset_in_dwz,
19971 struct dwarf2_cu **ref_cu)
c906108c 19972{
10b3939b 19973 struct die_info temp_die;
f2f0e013 19974 struct dwarf2_cu *target_cu, *cu = *ref_cu;
10b3939b 19975
348e048f
DE
19976 gdb_assert (cu->per_cu != NULL);
19977
98bfdba5
PA
19978 target_cu = cu;
19979
3019eac3 19980 if (cu->per_cu->is_debug_types)
348e048f
DE
19981 {
19982 /* .debug_types CUs cannot reference anything outside their CU.
19983 If they need to, they have to reference a signatured type via
55f1336d 19984 DW_FORM_ref_sig8. */
348e048f 19985 if (! offset_in_cu_p (&cu->header, offset))
5c631832 19986 return NULL;
348e048f 19987 }
36586728
TT
19988 else if (offset_in_dwz != cu->per_cu->is_dwz
19989 || ! offset_in_cu_p (&cu->header, offset))
10b3939b
DJ
19990 {
19991 struct dwarf2_per_cu_data *per_cu;
9a619af0 19992
36586728
TT
19993 per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
19994 cu->objfile);
03dd20cc
DJ
19995
19996 /* If necessary, add it to the queue and load its DIEs. */
95554aad
TT
19997 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
19998 load_full_comp_unit (per_cu, cu->language);
03dd20cc 19999
10b3939b
DJ
20000 target_cu = per_cu->cu;
20001 }
98bfdba5
PA
20002 else if (cu->dies == NULL)
20003 {
20004 /* We're loading full DIEs during partial symbol reading. */
20005 gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
95554aad 20006 load_full_comp_unit (cu->per_cu, language_minimal);
98bfdba5 20007 }
c906108c 20008
f2f0e013 20009 *ref_cu = target_cu;
51545339 20010 temp_die.offset = offset;
9a3c8263
SM
20011 return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
20012 &temp_die, offset.sect_off);
5c631832 20013}
10b3939b 20014
5c631832
JK
20015/* Follow reference attribute ATTR of SRC_DIE.
20016 On entry *REF_CU is the CU of SRC_DIE.
20017 On exit *REF_CU is the CU of the result. */
20018
20019static struct die_info *
ff39bb5e 20020follow_die_ref (struct die_info *src_die, const struct attribute *attr,
5c631832
JK
20021 struct dwarf2_cu **ref_cu)
20022{
b64f50a1 20023 sect_offset offset = dwarf2_get_ref_die_offset (attr);
5c631832
JK
20024 struct dwarf2_cu *cu = *ref_cu;
20025 struct die_info *die;
20026
36586728
TT
20027 die = follow_die_offset (offset,
20028 (attr->form == DW_FORM_GNU_ref_alt
20029 || cu->per_cu->is_dwz),
20030 ref_cu);
5c631832
JK
20031 if (!die)
20032 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
20033 "at 0x%x [in module %s]"),
4262abfb
JK
20034 offset.sect_off, src_die->offset.sect_off,
20035 objfile_name (cu->objfile));
348e048f 20036
5c631832
JK
20037 return die;
20038}
20039
d83e736b
JK
20040/* Return DWARF block referenced by DW_AT_location of DIE at OFFSET at PER_CU.
20041 Returned value is intended for DW_OP_call*. Returned
20042 dwarf2_locexpr_baton->data has lifetime of PER_CU->OBJFILE. */
5c631832
JK
20043
20044struct dwarf2_locexpr_baton
8b9737bf
TT
20045dwarf2_fetch_die_loc_sect_off (sect_offset offset,
20046 struct dwarf2_per_cu_data *per_cu,
20047 CORE_ADDR (*get_frame_pc) (void *baton),
20048 void *baton)
5c631832 20049{
918dd910 20050 struct dwarf2_cu *cu;
5c631832
JK
20051 struct die_info *die;
20052 struct attribute *attr;
20053 struct dwarf2_locexpr_baton retval;
20054
8cf6f0b1
TT
20055 dw2_setup (per_cu->objfile);
20056
918dd910
JK
20057 if (per_cu->cu == NULL)
20058 load_cu (per_cu);
20059 cu = per_cu->cu;
cc12ce38
DE
20060 if (cu == NULL)
20061 {
20062 /* We shouldn't get here for a dummy CU, but don't crash on the user.
20063 Instead just throw an error, not much else we can do. */
20064 error (_("Dwarf Error: Dummy CU at 0x%x referenced in module %s"),
20065 offset.sect_off, objfile_name (per_cu->objfile));
20066 }
918dd910 20067
36586728 20068 die = follow_die_offset (offset, per_cu->is_dwz, &cu);
5c631832
JK
20069 if (!die)
20070 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
4262abfb 20071 offset.sect_off, objfile_name (per_cu->objfile));
5c631832
JK
20072
20073 attr = dwarf2_attr (die, DW_AT_location, cu);
20074 if (!attr)
20075 {
e103e986
JK
20076 /* DWARF: "If there is no such attribute, then there is no effect.".
20077 DATA is ignored if SIZE is 0. */
5c631832 20078
e103e986 20079 retval.data = NULL;
5c631832
JK
20080 retval.size = 0;
20081 }
8cf6f0b1
TT
20082 else if (attr_form_is_section_offset (attr))
20083 {
20084 struct dwarf2_loclist_baton loclist_baton;
20085 CORE_ADDR pc = (*get_frame_pc) (baton);
20086 size_t size;
20087
20088 fill_in_loclist_baton (cu, &loclist_baton, attr);
20089
20090 retval.data = dwarf2_find_location_expression (&loclist_baton,
20091 &size, pc);
20092 retval.size = size;
20093 }
5c631832
JK
20094 else
20095 {
20096 if (!attr_form_is_block (attr))
20097 error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
20098 "is neither DW_FORM_block* nor DW_FORM_exprloc"),
4262abfb 20099 offset.sect_off, objfile_name (per_cu->objfile));
5c631832
JK
20100
20101 retval.data = DW_BLOCK (attr)->data;
20102 retval.size = DW_BLOCK (attr)->size;
20103 }
20104 retval.per_cu = cu->per_cu;
918dd910 20105
918dd910
JK
20106 age_cached_comp_units ();
20107
5c631832 20108 return retval;
348e048f
DE
20109}
20110
8b9737bf
TT
20111/* Like dwarf2_fetch_die_loc_sect_off, but take a CU
20112 offset. */
20113
20114struct dwarf2_locexpr_baton
20115dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
20116 struct dwarf2_per_cu_data *per_cu,
20117 CORE_ADDR (*get_frame_pc) (void *baton),
20118 void *baton)
20119{
20120 sect_offset offset = { per_cu->offset.sect_off + offset_in_cu.cu_off };
20121
20122 return dwarf2_fetch_die_loc_sect_off (offset, per_cu, get_frame_pc, baton);
20123}
20124
b6807d98
TT
20125/* Write a constant of a given type as target-ordered bytes into
20126 OBSTACK. */
20127
20128static const gdb_byte *
20129write_constant_as_bytes (struct obstack *obstack,
20130 enum bfd_endian byte_order,
20131 struct type *type,
20132 ULONGEST value,
20133 LONGEST *len)
20134{
20135 gdb_byte *result;
20136
20137 *len = TYPE_LENGTH (type);
224c3ddb 20138 result = (gdb_byte *) obstack_alloc (obstack, *len);
b6807d98
TT
20139 store_unsigned_integer (result, *len, byte_order, value);
20140
20141 return result;
20142}
20143
20144/* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
20145 pointer to the constant bytes and set LEN to the length of the
20146 data. If memory is needed, allocate it on OBSTACK. If the DIE
20147 does not have a DW_AT_const_value, return NULL. */
20148
20149const gdb_byte *
20150dwarf2_fetch_constant_bytes (sect_offset offset,
20151 struct dwarf2_per_cu_data *per_cu,
20152 struct obstack *obstack,
20153 LONGEST *len)
20154{
20155 struct dwarf2_cu *cu;
20156 struct die_info *die;
20157 struct attribute *attr;
20158 const gdb_byte *result = NULL;
20159 struct type *type;
20160 LONGEST value;
20161 enum bfd_endian byte_order;
20162
20163 dw2_setup (per_cu->objfile);
20164
20165 if (per_cu->cu == NULL)
20166 load_cu (per_cu);
20167 cu = per_cu->cu;
cc12ce38
DE
20168 if (cu == NULL)
20169 {
20170 /* We shouldn't get here for a dummy CU, but don't crash on the user.
20171 Instead just throw an error, not much else we can do. */
20172 error (_("Dwarf Error: Dummy CU at 0x%x referenced in module %s"),
20173 offset.sect_off, objfile_name (per_cu->objfile));
20174 }
b6807d98
TT
20175
20176 die = follow_die_offset (offset, per_cu->is_dwz, &cu);
20177 if (!die)
20178 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
4262abfb 20179 offset.sect_off, objfile_name (per_cu->objfile));
b6807d98
TT
20180
20181
20182 attr = dwarf2_attr (die, DW_AT_const_value, cu);
20183 if (attr == NULL)
20184 return NULL;
20185
20186 byte_order = (bfd_big_endian (per_cu->objfile->obfd)
20187 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
20188
20189 switch (attr->form)
20190 {
20191 case DW_FORM_addr:
20192 case DW_FORM_GNU_addr_index:
20193 {
20194 gdb_byte *tem;
20195
20196 *len = cu->header.addr_size;
224c3ddb 20197 tem = (gdb_byte *) obstack_alloc (obstack, *len);
b6807d98
TT
20198 store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
20199 result = tem;
20200 }
20201 break;
20202 case DW_FORM_string:
20203 case DW_FORM_strp:
20204 case DW_FORM_GNU_str_index:
20205 case DW_FORM_GNU_strp_alt:
20206 /* DW_STRING is already allocated on the objfile obstack, point
20207 directly to it. */
20208 result = (const gdb_byte *) DW_STRING (attr);
20209 *len = strlen (DW_STRING (attr));
20210 break;
20211 case DW_FORM_block1:
20212 case DW_FORM_block2:
20213 case DW_FORM_block4:
20214 case DW_FORM_block:
20215 case DW_FORM_exprloc:
20216 result = DW_BLOCK (attr)->data;
20217 *len = DW_BLOCK (attr)->size;
20218 break;
20219
20220 /* The DW_AT_const_value attributes are supposed to carry the
20221 symbol's value "represented as it would be on the target
20222 architecture." By the time we get here, it's already been
20223 converted to host endianness, so we just need to sign- or
20224 zero-extend it as appropriate. */
20225 case DW_FORM_data1:
20226 type = die_type (die, cu);
20227 result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
20228 if (result == NULL)
20229 result = write_constant_as_bytes (obstack, byte_order,
20230 type, value, len);
20231 break;
20232 case DW_FORM_data2:
20233 type = die_type (die, cu);
20234 result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
20235 if (result == NULL)
20236 result = write_constant_as_bytes (obstack, byte_order,
20237 type, value, len);
20238 break;
20239 case DW_FORM_data4:
20240 type = die_type (die, cu);
20241 result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
20242 if (result == NULL)
20243 result = write_constant_as_bytes (obstack, byte_order,
20244 type, value, len);
20245 break;
20246 case DW_FORM_data8:
20247 type = die_type (die, cu);
20248 result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
20249 if (result == NULL)
20250 result = write_constant_as_bytes (obstack, byte_order,
20251 type, value, len);
20252 break;
20253
20254 case DW_FORM_sdata:
20255 type = die_type (die, cu);
20256 result = write_constant_as_bytes (obstack, byte_order,
20257 type, DW_SND (attr), len);
20258 break;
20259
20260 case DW_FORM_udata:
20261 type = die_type (die, cu);
20262 result = write_constant_as_bytes (obstack, byte_order,
20263 type, DW_UNSND (attr), len);
20264 break;
20265
20266 default:
20267 complaint (&symfile_complaints,
20268 _("unsupported const value attribute form: '%s'"),
20269 dwarf_form_name (attr->form));
20270 break;
20271 }
20272
20273 return result;
20274}
20275
8a9b8146
TT
20276/* Return the type of the DIE at DIE_OFFSET in the CU named by
20277 PER_CU. */
20278
20279struct type *
b64f50a1 20280dwarf2_get_die_type (cu_offset die_offset,
8a9b8146
TT
20281 struct dwarf2_per_cu_data *per_cu)
20282{
b64f50a1
JK
20283 sect_offset die_offset_sect;
20284
8a9b8146 20285 dw2_setup (per_cu->objfile);
b64f50a1
JK
20286
20287 die_offset_sect.sect_off = per_cu->offset.sect_off + die_offset.cu_off;
20288 return get_die_type_at_offset (die_offset_sect, per_cu);
8a9b8146
TT
20289}
20290
ac9ec31b 20291/* Follow type unit SIG_TYPE referenced by SRC_DIE.
348e048f 20292 On entry *REF_CU is the CU of SRC_DIE.
ac9ec31b
DE
20293 On exit *REF_CU is the CU of the result.
20294 Returns NULL if the referenced DIE isn't found. */
348e048f
DE
20295
20296static struct die_info *
ac9ec31b
DE
20297follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
20298 struct dwarf2_cu **ref_cu)
348e048f 20299{
348e048f 20300 struct die_info temp_die;
348e048f
DE
20301 struct dwarf2_cu *sig_cu;
20302 struct die_info *die;
20303
ac9ec31b
DE
20304 /* While it might be nice to assert sig_type->type == NULL here,
20305 we can get here for DW_AT_imported_declaration where we need
20306 the DIE not the type. */
348e048f
DE
20307
20308 /* If necessary, add it to the queue and load its DIEs. */
20309
95554aad 20310 if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
a0f42c21 20311 read_signatured_type (sig_type);
348e048f 20312
348e048f 20313 sig_cu = sig_type->per_cu.cu;
69d751e3 20314 gdb_assert (sig_cu != NULL);
3019eac3
DE
20315 gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
20316 temp_die.offset = sig_type->type_offset_in_section;
9a3c8263
SM
20317 die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
20318 temp_die.offset.sect_off);
348e048f
DE
20319 if (die)
20320 {
796a7ff8
DE
20321 /* For .gdb_index version 7 keep track of included TUs.
20322 http://sourceware.org/bugzilla/show_bug.cgi?id=15021. */
20323 if (dwarf2_per_objfile->index_table != NULL
20324 && dwarf2_per_objfile->index_table->version <= 7)
20325 {
20326 VEC_safe_push (dwarf2_per_cu_ptr,
20327 (*ref_cu)->per_cu->imported_symtabs,
20328 sig_cu->per_cu);
20329 }
20330
348e048f
DE
20331 *ref_cu = sig_cu;
20332 return die;
20333 }
20334
ac9ec31b
DE
20335 return NULL;
20336}
20337
20338/* Follow signatured type referenced by ATTR in SRC_DIE.
20339 On entry *REF_CU is the CU of SRC_DIE.
20340 On exit *REF_CU is the CU of the result.
20341 The result is the DIE of the type.
20342 If the referenced type cannot be found an error is thrown. */
20343
20344static struct die_info *
ff39bb5e 20345follow_die_sig (struct die_info *src_die, const struct attribute *attr,
ac9ec31b
DE
20346 struct dwarf2_cu **ref_cu)
20347{
20348 ULONGEST signature = DW_SIGNATURE (attr);
20349 struct signatured_type *sig_type;
20350 struct die_info *die;
20351
20352 gdb_assert (attr->form == DW_FORM_ref_sig8);
20353
a2ce51a0 20354 sig_type = lookup_signatured_type (*ref_cu, signature);
ac9ec31b
DE
20355 /* sig_type will be NULL if the signatured type is missing from
20356 the debug info. */
20357 if (sig_type == NULL)
20358 {
20359 error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
20360 " from DIE at 0x%x [in module %s]"),
20361 hex_string (signature), src_die->offset.sect_off,
4262abfb 20362 objfile_name ((*ref_cu)->objfile));
ac9ec31b
DE
20363 }
20364
20365 die = follow_die_sig_1 (src_die, sig_type, ref_cu);
20366 if (die == NULL)
20367 {
20368 dump_die_for_error (src_die);
20369 error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
20370 " from DIE at 0x%x [in module %s]"),
20371 hex_string (signature), src_die->offset.sect_off,
4262abfb 20372 objfile_name ((*ref_cu)->objfile));
ac9ec31b
DE
20373 }
20374
20375 return die;
20376}
20377
20378/* Get the type specified by SIGNATURE referenced in DIE/CU,
20379 reading in and processing the type unit if necessary. */
20380
20381static struct type *
20382get_signatured_type (struct die_info *die, ULONGEST signature,
20383 struct dwarf2_cu *cu)
20384{
20385 struct signatured_type *sig_type;
20386 struct dwarf2_cu *type_cu;
20387 struct die_info *type_die;
20388 struct type *type;
20389
a2ce51a0 20390 sig_type = lookup_signatured_type (cu, signature);
ac9ec31b
DE
20391 /* sig_type will be NULL if the signatured type is missing from
20392 the debug info. */
20393 if (sig_type == NULL)
20394 {
20395 complaint (&symfile_complaints,
20396 _("Dwarf Error: Cannot find signatured DIE %s referenced"
20397 " from DIE at 0x%x [in module %s]"),
20398 hex_string (signature), die->offset.sect_off,
4262abfb 20399 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20400 return build_error_marker_type (cu, die);
20401 }
20402
20403 /* If we already know the type we're done. */
20404 if (sig_type->type != NULL)
20405 return sig_type->type;
20406
20407 type_cu = cu;
20408 type_die = follow_die_sig_1 (die, sig_type, &type_cu);
20409 if (type_die != NULL)
20410 {
20411 /* N.B. We need to call get_die_type to ensure only one type for this DIE
20412 is created. This is important, for example, because for c++ classes
20413 we need TYPE_NAME set which is only done by new_symbol. Blech. */
20414 type = read_type_die (type_die, type_cu);
20415 if (type == NULL)
20416 {
20417 complaint (&symfile_complaints,
20418 _("Dwarf Error: Cannot build signatured type %s"
20419 " referenced from DIE at 0x%x [in module %s]"),
20420 hex_string (signature), die->offset.sect_off,
4262abfb 20421 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20422 type = build_error_marker_type (cu, die);
20423 }
20424 }
20425 else
20426 {
20427 complaint (&symfile_complaints,
20428 _("Dwarf Error: Problem reading signatured DIE %s referenced"
20429 " from DIE at 0x%x [in module %s]"),
20430 hex_string (signature), die->offset.sect_off,
4262abfb 20431 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20432 type = build_error_marker_type (cu, die);
20433 }
20434 sig_type->type = type;
20435
20436 return type;
20437}
20438
20439/* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
20440 reading in and processing the type unit if necessary. */
20441
20442static struct type *
ff39bb5e 20443get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
b385a60d 20444 struct dwarf2_cu *cu) /* ARI: editCase function */
ac9ec31b
DE
20445{
20446 /* Yes, DW_AT_signature can use a non-ref_sig8 reference. */
7771576e 20447 if (attr_form_is_ref (attr))
ac9ec31b
DE
20448 {
20449 struct dwarf2_cu *type_cu = cu;
20450 struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
20451
20452 return read_type_die (type_die, type_cu);
20453 }
20454 else if (attr->form == DW_FORM_ref_sig8)
20455 {
20456 return get_signatured_type (die, DW_SIGNATURE (attr), cu);
20457 }
20458 else
20459 {
20460 complaint (&symfile_complaints,
20461 _("Dwarf Error: DW_AT_signature has bad form %s in DIE"
20462 " at 0x%x [in module %s]"),
20463 dwarf_form_name (attr->form), die->offset.sect_off,
4262abfb 20464 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20465 return build_error_marker_type (cu, die);
20466 }
348e048f
DE
20467}
20468
e5fe5e75 20469/* Load the DIEs associated with type unit PER_CU into memory. */
348e048f
DE
20470
20471static void
e5fe5e75 20472load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
348e048f 20473{
52dc124a 20474 struct signatured_type *sig_type;
348e048f 20475
f4dc4d17
DE
20476 /* Caller is responsible for ensuring type_unit_groups don't get here. */
20477 gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
20478
6721b2ec
DE
20479 /* We have the per_cu, but we need the signatured_type.
20480 Fortunately this is an easy translation. */
20481 gdb_assert (per_cu->is_debug_types);
20482 sig_type = (struct signatured_type *) per_cu;
348e048f 20483
6721b2ec 20484 gdb_assert (per_cu->cu == NULL);
348e048f 20485
52dc124a 20486 read_signatured_type (sig_type);
348e048f 20487
6721b2ec 20488 gdb_assert (per_cu->cu != NULL);
348e048f
DE
20489}
20490
dee91e82
DE
20491/* die_reader_func for read_signatured_type.
20492 This is identical to load_full_comp_unit_reader,
20493 but is kept separate for now. */
348e048f
DE
20494
20495static void
dee91e82 20496read_signatured_type_reader (const struct die_reader_specs *reader,
d521ce57 20497 const gdb_byte *info_ptr,
dee91e82
DE
20498 struct die_info *comp_unit_die,
20499 int has_children,
20500 void *data)
348e048f 20501{
dee91e82 20502 struct dwarf2_cu *cu = reader->cu;
348e048f 20503
dee91e82
DE
20504 gdb_assert (cu->die_hash == NULL);
20505 cu->die_hash =
20506 htab_create_alloc_ex (cu->header.length / 12,
20507 die_hash,
20508 die_eq,
20509 NULL,
20510 &cu->comp_unit_obstack,
20511 hashtab_obstack_allocate,
20512 dummy_obstack_deallocate);
348e048f 20513
dee91e82
DE
20514 if (has_children)
20515 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
20516 &info_ptr, comp_unit_die);
20517 cu->dies = comp_unit_die;
20518 /* comp_unit_die is not stored in die_hash, no need. */
348e048f
DE
20519
20520 /* We try not to read any attributes in this function, because not
9cdd5dbd 20521 all CUs needed for references have been loaded yet, and symbol
348e048f 20522 table processing isn't initialized. But we have to set the CU language,
dee91e82
DE
20523 or we won't be able to build types correctly.
20524 Similarly, if we do not read the producer, we can not apply
20525 producer-specific interpretation. */
95554aad 20526 prepare_one_comp_unit (cu, cu->dies, language_minimal);
dee91e82 20527}
348e048f 20528
3019eac3
DE
20529/* Read in a signatured type and build its CU and DIEs.
20530 If the type is a stub for the real type in a DWO file,
20531 read in the real type from the DWO file as well. */
dee91e82
DE
20532
20533static void
20534read_signatured_type (struct signatured_type *sig_type)
20535{
20536 struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
348e048f 20537
3019eac3 20538 gdb_assert (per_cu->is_debug_types);
dee91e82 20539 gdb_assert (per_cu->cu == NULL);
348e048f 20540
f4dc4d17
DE
20541 init_cutu_and_read_dies (per_cu, NULL, 0, 1,
20542 read_signatured_type_reader, NULL);
7ee85ab1 20543 sig_type->per_cu.tu_read = 1;
c906108c
SS
20544}
20545
c906108c
SS
20546/* Decode simple location descriptions.
20547 Given a pointer to a dwarf block that defines a location, compute
20548 the location and return the value.
20549
4cecd739
DJ
20550 NOTE drow/2003-11-18: This function is called in two situations
20551 now: for the address of static or global variables (partial symbols
20552 only) and for offsets into structures which are expected to be
20553 (more or less) constant. The partial symbol case should go away,
20554 and only the constant case should remain. That will let this
20555 function complain more accurately. A few special modes are allowed
20556 without complaint for global variables (for instance, global
20557 register values and thread-local values).
c906108c
SS
20558
20559 A location description containing no operations indicates that the
4cecd739 20560 object is optimized out. The return value is 0 for that case.
6b992462
DJ
20561 FIXME drow/2003-11-16: No callers check for this case any more; soon all
20562 callers will only want a very basic result and this can become a
21ae7a4d
JK
20563 complaint.
20564
20565 Note that stack[0] is unused except as a default error return. */
c906108c
SS
20566
20567static CORE_ADDR
e7c27a73 20568decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
c906108c 20569{
e7c27a73 20570 struct objfile *objfile = cu->objfile;
56eb65bd
SP
20571 size_t i;
20572 size_t size = blk->size;
d521ce57 20573 const gdb_byte *data = blk->data;
21ae7a4d
JK
20574 CORE_ADDR stack[64];
20575 int stacki;
20576 unsigned int bytes_read, unsnd;
20577 gdb_byte op;
c906108c 20578
21ae7a4d
JK
20579 i = 0;
20580 stacki = 0;
20581 stack[stacki] = 0;
20582 stack[++stacki] = 0;
20583
20584 while (i < size)
20585 {
20586 op = data[i++];
20587 switch (op)
20588 {
20589 case DW_OP_lit0:
20590 case DW_OP_lit1:
20591 case DW_OP_lit2:
20592 case DW_OP_lit3:
20593 case DW_OP_lit4:
20594 case DW_OP_lit5:
20595 case DW_OP_lit6:
20596 case DW_OP_lit7:
20597 case DW_OP_lit8:
20598 case DW_OP_lit9:
20599 case DW_OP_lit10:
20600 case DW_OP_lit11:
20601 case DW_OP_lit12:
20602 case DW_OP_lit13:
20603 case DW_OP_lit14:
20604 case DW_OP_lit15:
20605 case DW_OP_lit16:
20606 case DW_OP_lit17:
20607 case DW_OP_lit18:
20608 case DW_OP_lit19:
20609 case DW_OP_lit20:
20610 case DW_OP_lit21:
20611 case DW_OP_lit22:
20612 case DW_OP_lit23:
20613 case DW_OP_lit24:
20614 case DW_OP_lit25:
20615 case DW_OP_lit26:
20616 case DW_OP_lit27:
20617 case DW_OP_lit28:
20618 case DW_OP_lit29:
20619 case DW_OP_lit30:
20620 case DW_OP_lit31:
20621 stack[++stacki] = op - DW_OP_lit0;
20622 break;
f1bea926 20623
21ae7a4d
JK
20624 case DW_OP_reg0:
20625 case DW_OP_reg1:
20626 case DW_OP_reg2:
20627 case DW_OP_reg3:
20628 case DW_OP_reg4:
20629 case DW_OP_reg5:
20630 case DW_OP_reg6:
20631 case DW_OP_reg7:
20632 case DW_OP_reg8:
20633 case DW_OP_reg9:
20634 case DW_OP_reg10:
20635 case DW_OP_reg11:
20636 case DW_OP_reg12:
20637 case DW_OP_reg13:
20638 case DW_OP_reg14:
20639 case DW_OP_reg15:
20640 case DW_OP_reg16:
20641 case DW_OP_reg17:
20642 case DW_OP_reg18:
20643 case DW_OP_reg19:
20644 case DW_OP_reg20:
20645 case DW_OP_reg21:
20646 case DW_OP_reg22:
20647 case DW_OP_reg23:
20648 case DW_OP_reg24:
20649 case DW_OP_reg25:
20650 case DW_OP_reg26:
20651 case DW_OP_reg27:
20652 case DW_OP_reg28:
20653 case DW_OP_reg29:
20654 case DW_OP_reg30:
20655 case DW_OP_reg31:
20656 stack[++stacki] = op - DW_OP_reg0;
20657 if (i < size)
20658 dwarf2_complex_location_expr_complaint ();
20659 break;
c906108c 20660
21ae7a4d
JK
20661 case DW_OP_regx:
20662 unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
20663 i += bytes_read;
20664 stack[++stacki] = unsnd;
20665 if (i < size)
20666 dwarf2_complex_location_expr_complaint ();
20667 break;
c906108c 20668
21ae7a4d
JK
20669 case DW_OP_addr:
20670 stack[++stacki] = read_address (objfile->obfd, &data[i],
20671 cu, &bytes_read);
20672 i += bytes_read;
20673 break;
d53d4ac5 20674
21ae7a4d
JK
20675 case DW_OP_const1u:
20676 stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
20677 i += 1;
20678 break;
20679
20680 case DW_OP_const1s:
20681 stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
20682 i += 1;
20683 break;
20684
20685 case DW_OP_const2u:
20686 stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
20687 i += 2;
20688 break;
20689
20690 case DW_OP_const2s:
20691 stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
20692 i += 2;
20693 break;
d53d4ac5 20694
21ae7a4d
JK
20695 case DW_OP_const4u:
20696 stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
20697 i += 4;
20698 break;
20699
20700 case DW_OP_const4s:
20701 stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
20702 i += 4;
20703 break;
20704
585861ea
JK
20705 case DW_OP_const8u:
20706 stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
20707 i += 8;
20708 break;
20709
21ae7a4d
JK
20710 case DW_OP_constu:
20711 stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
20712 &bytes_read);
20713 i += bytes_read;
20714 break;
20715
20716 case DW_OP_consts:
20717 stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
20718 i += bytes_read;
20719 break;
20720
20721 case DW_OP_dup:
20722 stack[stacki + 1] = stack[stacki];
20723 stacki++;
20724 break;
20725
20726 case DW_OP_plus:
20727 stack[stacki - 1] += stack[stacki];
20728 stacki--;
20729 break;
20730
20731 case DW_OP_plus_uconst:
20732 stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
20733 &bytes_read);
20734 i += bytes_read;
20735 break;
20736
20737 case DW_OP_minus:
20738 stack[stacki - 1] -= stack[stacki];
20739 stacki--;
20740 break;
20741
20742 case DW_OP_deref:
20743 /* If we're not the last op, then we definitely can't encode
20744 this using GDB's address_class enum. This is valid for partial
20745 global symbols, although the variable's address will be bogus
20746 in the psymtab. */
20747 if (i < size)
20748 dwarf2_complex_location_expr_complaint ();
20749 break;
20750
20751 case DW_OP_GNU_push_tls_address:
4aa4e28b 20752 case DW_OP_form_tls_address:
21ae7a4d
JK
20753 /* The top of the stack has the offset from the beginning
20754 of the thread control block at which the variable is located. */
20755 /* Nothing should follow this operator, so the top of stack would
20756 be returned. */
20757 /* This is valid for partial global symbols, but the variable's
585861ea
JK
20758 address will be bogus in the psymtab. Make it always at least
20759 non-zero to not look as a variable garbage collected by linker
20760 which have DW_OP_addr 0. */
21ae7a4d
JK
20761 if (i < size)
20762 dwarf2_complex_location_expr_complaint ();
585861ea 20763 stack[stacki]++;
21ae7a4d
JK
20764 break;
20765
20766 case DW_OP_GNU_uninit:
20767 break;
20768
3019eac3 20769 case DW_OP_GNU_addr_index:
49f6c839 20770 case DW_OP_GNU_const_index:
3019eac3
DE
20771 stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
20772 &bytes_read);
20773 i += bytes_read;
20774 break;
20775
21ae7a4d
JK
20776 default:
20777 {
f39c6ffd 20778 const char *name = get_DW_OP_name (op);
21ae7a4d
JK
20779
20780 if (name)
20781 complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
20782 name);
20783 else
20784 complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
20785 op);
20786 }
20787
20788 return (stack[stacki]);
d53d4ac5 20789 }
3c6e0cb3 20790
21ae7a4d
JK
20791 /* Enforce maximum stack depth of SIZE-1 to avoid writing
20792 outside of the allocated space. Also enforce minimum>0. */
20793 if (stacki >= ARRAY_SIZE (stack) - 1)
20794 {
20795 complaint (&symfile_complaints,
20796 _("location description stack overflow"));
20797 return 0;
20798 }
20799
20800 if (stacki <= 0)
20801 {
20802 complaint (&symfile_complaints,
20803 _("location description stack underflow"));
20804 return 0;
20805 }
20806 }
20807 return (stack[stacki]);
c906108c
SS
20808}
20809
20810/* memory allocation interface */
20811
c906108c 20812static struct dwarf_block *
7b5a2f43 20813dwarf_alloc_block (struct dwarf2_cu *cu)
c906108c 20814{
8d749320 20815 return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
c906108c
SS
20816}
20817
c906108c 20818static struct die_info *
b60c80d6 20819dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
c906108c
SS
20820{
20821 struct die_info *die;
b60c80d6
DJ
20822 size_t size = sizeof (struct die_info);
20823
20824 if (num_attrs > 1)
20825 size += (num_attrs - 1) * sizeof (struct attribute);
c906108c 20826
b60c80d6 20827 die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
c906108c
SS
20828 memset (die, 0, sizeof (struct die_info));
20829 return (die);
20830}
2e276125
JB
20831
20832\f
20833/* Macro support. */
20834
233d95b5
JK
20835/* Return file name relative to the compilation directory of file number I in
20836 *LH's file name table. The result is allocated using xmalloc; the caller is
2e276125 20837 responsible for freeing it. */
233d95b5 20838
2e276125 20839static char *
233d95b5 20840file_file_name (int file, struct line_header *lh)
2e276125 20841{
6a83a1e6
EZ
20842 /* Is the file number a valid index into the line header's file name
20843 table? Remember that file numbers start with one, not zero. */
20844 if (1 <= file && file <= lh->num_file_names)
20845 {
20846 struct file_entry *fe = &lh->file_names[file - 1];
6e70227d 20847
afa6c9ab
SL
20848 if (IS_ABSOLUTE_PATH (fe->name) || fe->dir_index == 0
20849 || lh->include_dirs == NULL)
6a83a1e6 20850 return xstrdup (fe->name);
233d95b5 20851 return concat (lh->include_dirs[fe->dir_index - 1], SLASH_STRING,
b36cec19 20852 fe->name, (char *) NULL);
6a83a1e6 20853 }
2e276125
JB
20854 else
20855 {
6a83a1e6
EZ
20856 /* The compiler produced a bogus file number. We can at least
20857 record the macro definitions made in the file, even if we
20858 won't be able to find the file by name. */
20859 char fake_name[80];
9a619af0 20860
8c042590
PM
20861 xsnprintf (fake_name, sizeof (fake_name),
20862 "<bad macro file number %d>", file);
2e276125 20863
6e70227d 20864 complaint (&symfile_complaints,
6a83a1e6
EZ
20865 _("bad file number in macro information (%d)"),
20866 file);
2e276125 20867
6a83a1e6 20868 return xstrdup (fake_name);
2e276125
JB
20869 }
20870}
20871
233d95b5
JK
20872/* Return the full name of file number I in *LH's file name table.
20873 Use COMP_DIR as the name of the current directory of the
20874 compilation. The result is allocated using xmalloc; the caller is
20875 responsible for freeing it. */
20876static char *
20877file_full_name (int file, struct line_header *lh, const char *comp_dir)
20878{
20879 /* Is the file number a valid index into the line header's file name
20880 table? Remember that file numbers start with one, not zero. */
20881 if (1 <= file && file <= lh->num_file_names)
20882 {
20883 char *relative = file_file_name (file, lh);
20884
20885 if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
20886 return relative;
b36cec19
PA
20887 return reconcat (relative, comp_dir, SLASH_STRING,
20888 relative, (char *) NULL);
233d95b5
JK
20889 }
20890 else
20891 return file_file_name (file, lh);
20892}
20893
2e276125
JB
20894
20895static struct macro_source_file *
20896macro_start_file (int file, int line,
20897 struct macro_source_file *current_file,
43f3e411 20898 struct line_header *lh)
2e276125 20899{
233d95b5
JK
20900 /* File name relative to the compilation directory of this source file. */
20901 char *file_name = file_file_name (file, lh);
2e276125 20902
2e276125 20903 if (! current_file)
abc9d0dc 20904 {
fc474241
DE
20905 /* Note: We don't create a macro table for this compilation unit
20906 at all until we actually get a filename. */
43f3e411 20907 struct macro_table *macro_table = get_macro_table ();
fc474241 20908
abc9d0dc
TT
20909 /* If we have no current file, then this must be the start_file
20910 directive for the compilation unit's main source file. */
fc474241
DE
20911 current_file = macro_set_main (macro_table, file_name);
20912 macro_define_special (macro_table);
abc9d0dc 20913 }
2e276125 20914 else
233d95b5 20915 current_file = macro_include (current_file, line, file_name);
2e276125 20916
233d95b5 20917 xfree (file_name);
6e70227d 20918
2e276125
JB
20919 return current_file;
20920}
20921
20922
20923/* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
20924 followed by a null byte. */
20925static char *
20926copy_string (const char *buf, int len)
20927{
224c3ddb 20928 char *s = (char *) xmalloc (len + 1);
9a619af0 20929
2e276125
JB
20930 memcpy (s, buf, len);
20931 s[len] = '\0';
2e276125
JB
20932 return s;
20933}
20934
20935
20936static const char *
20937consume_improper_spaces (const char *p, const char *body)
20938{
20939 if (*p == ' ')
20940 {
4d3c2250 20941 complaint (&symfile_complaints,
3e43a32a
MS
20942 _("macro definition contains spaces "
20943 "in formal argument list:\n`%s'"),
4d3c2250 20944 body);
2e276125
JB
20945
20946 while (*p == ' ')
20947 p++;
20948 }
20949
20950 return p;
20951}
20952
20953
20954static void
20955parse_macro_definition (struct macro_source_file *file, int line,
20956 const char *body)
20957{
20958 const char *p;
20959
20960 /* The body string takes one of two forms. For object-like macro
20961 definitions, it should be:
20962
20963 <macro name> " " <definition>
20964
20965 For function-like macro definitions, it should be:
20966
20967 <macro name> "() " <definition>
20968 or
20969 <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
20970
20971 Spaces may appear only where explicitly indicated, and in the
20972 <definition>.
20973
20974 The Dwarf 2 spec says that an object-like macro's name is always
20975 followed by a space, but versions of GCC around March 2002 omit
6e70227d 20976 the space when the macro's definition is the empty string.
2e276125
JB
20977
20978 The Dwarf 2 spec says that there should be no spaces between the
20979 formal arguments in a function-like macro's formal argument list,
20980 but versions of GCC around March 2002 include spaces after the
20981 commas. */
20982
20983
20984 /* Find the extent of the macro name. The macro name is terminated
20985 by either a space or null character (for an object-like macro) or
20986 an opening paren (for a function-like macro). */
20987 for (p = body; *p; p++)
20988 if (*p == ' ' || *p == '(')
20989 break;
20990
20991 if (*p == ' ' || *p == '\0')
20992 {
20993 /* It's an object-like macro. */
20994 int name_len = p - body;
20995 char *name = copy_string (body, name_len);
20996 const char *replacement;
20997
20998 if (*p == ' ')
20999 replacement = body + name_len + 1;
21000 else
21001 {
4d3c2250 21002 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21003 replacement = body + name_len;
21004 }
6e70227d 21005
2e276125
JB
21006 macro_define_object (file, line, name, replacement);
21007
21008 xfree (name);
21009 }
21010 else if (*p == '(')
21011 {
21012 /* It's a function-like macro. */
21013 char *name = copy_string (body, p - body);
21014 int argc = 0;
21015 int argv_size = 1;
8d749320 21016 char **argv = XNEWVEC (char *, argv_size);
2e276125
JB
21017
21018 p++;
21019
21020 p = consume_improper_spaces (p, body);
21021
21022 /* Parse the formal argument list. */
21023 while (*p && *p != ')')
21024 {
21025 /* Find the extent of the current argument name. */
21026 const char *arg_start = p;
21027
21028 while (*p && *p != ',' && *p != ')' && *p != ' ')
21029 p++;
21030
21031 if (! *p || p == arg_start)
4d3c2250 21032 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21033 else
21034 {
21035 /* Make sure argv has room for the new argument. */
21036 if (argc >= argv_size)
21037 {
21038 argv_size *= 2;
224c3ddb 21039 argv = XRESIZEVEC (char *, argv, argv_size);
2e276125
JB
21040 }
21041
21042 argv[argc++] = copy_string (arg_start, p - arg_start);
21043 }
21044
21045 p = consume_improper_spaces (p, body);
21046
21047 /* Consume the comma, if present. */
21048 if (*p == ',')
21049 {
21050 p++;
21051
21052 p = consume_improper_spaces (p, body);
21053 }
21054 }
21055
21056 if (*p == ')')
21057 {
21058 p++;
21059
21060 if (*p == ' ')
21061 /* Perfectly formed definition, no complaints. */
21062 macro_define_function (file, line, name,
6e70227d 21063 argc, (const char **) argv,
2e276125
JB
21064 p + 1);
21065 else if (*p == '\0')
21066 {
21067 /* Complain, but do define it. */
4d3c2250 21068 dwarf2_macro_malformed_definition_complaint (body);
2e276125 21069 macro_define_function (file, line, name,
6e70227d 21070 argc, (const char **) argv,
2e276125
JB
21071 p);
21072 }
21073 else
21074 /* Just complain. */
4d3c2250 21075 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21076 }
21077 else
21078 /* Just complain. */
4d3c2250 21079 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21080
21081 xfree (name);
21082 {
21083 int i;
21084
21085 for (i = 0; i < argc; i++)
21086 xfree (argv[i]);
21087 }
21088 xfree (argv);
21089 }
21090 else
4d3c2250 21091 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21092}
21093
cf2c3c16
TT
21094/* Skip some bytes from BYTES according to the form given in FORM.
21095 Returns the new pointer. */
2e276125 21096
d521ce57
TT
21097static const gdb_byte *
21098skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
cf2c3c16
TT
21099 enum dwarf_form form,
21100 unsigned int offset_size,
21101 struct dwarf2_section_info *section)
2e276125 21102{
cf2c3c16 21103 unsigned int bytes_read;
2e276125 21104
cf2c3c16 21105 switch (form)
2e276125 21106 {
cf2c3c16
TT
21107 case DW_FORM_data1:
21108 case DW_FORM_flag:
21109 ++bytes;
21110 break;
21111
21112 case DW_FORM_data2:
21113 bytes += 2;
21114 break;
21115
21116 case DW_FORM_data4:
21117 bytes += 4;
21118 break;
21119
21120 case DW_FORM_data8:
21121 bytes += 8;
21122 break;
21123
21124 case DW_FORM_string:
21125 read_direct_string (abfd, bytes, &bytes_read);
21126 bytes += bytes_read;
21127 break;
21128
21129 case DW_FORM_sec_offset:
21130 case DW_FORM_strp:
36586728 21131 case DW_FORM_GNU_strp_alt:
cf2c3c16
TT
21132 bytes += offset_size;
21133 break;
21134
21135 case DW_FORM_block:
21136 bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
21137 bytes += bytes_read;
21138 break;
21139
21140 case DW_FORM_block1:
21141 bytes += 1 + read_1_byte (abfd, bytes);
21142 break;
21143 case DW_FORM_block2:
21144 bytes += 2 + read_2_bytes (abfd, bytes);
21145 break;
21146 case DW_FORM_block4:
21147 bytes += 4 + read_4_bytes (abfd, bytes);
21148 break;
21149
21150 case DW_FORM_sdata:
21151 case DW_FORM_udata:
3019eac3
DE
21152 case DW_FORM_GNU_addr_index:
21153 case DW_FORM_GNU_str_index:
d521ce57 21154 bytes = gdb_skip_leb128 (bytes, buffer_end);
f664829e
DE
21155 if (bytes == NULL)
21156 {
21157 dwarf2_section_buffer_overflow_complaint (section);
21158 return NULL;
21159 }
cf2c3c16
TT
21160 break;
21161
21162 default:
21163 {
21164 complain:
21165 complaint (&symfile_complaints,
21166 _("invalid form 0x%x in `%s'"),
a32a8923 21167 form, get_section_name (section));
cf2c3c16
TT
21168 return NULL;
21169 }
2e276125
JB
21170 }
21171
cf2c3c16
TT
21172 return bytes;
21173}
757a13d0 21174
cf2c3c16
TT
21175/* A helper for dwarf_decode_macros that handles skipping an unknown
21176 opcode. Returns an updated pointer to the macro data buffer; or,
21177 on error, issues a complaint and returns NULL. */
757a13d0 21178
d521ce57 21179static const gdb_byte *
cf2c3c16 21180skip_unknown_opcode (unsigned int opcode,
d521ce57
TT
21181 const gdb_byte **opcode_definitions,
21182 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
cf2c3c16
TT
21183 bfd *abfd,
21184 unsigned int offset_size,
21185 struct dwarf2_section_info *section)
21186{
21187 unsigned int bytes_read, i;
21188 unsigned long arg;
d521ce57 21189 const gdb_byte *defn;
2e276125 21190
cf2c3c16 21191 if (opcode_definitions[opcode] == NULL)
2e276125 21192 {
cf2c3c16
TT
21193 complaint (&symfile_complaints,
21194 _("unrecognized DW_MACFINO opcode 0x%x"),
21195 opcode);
21196 return NULL;
21197 }
2e276125 21198
cf2c3c16
TT
21199 defn = opcode_definitions[opcode];
21200 arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
21201 defn += bytes_read;
2e276125 21202
cf2c3c16
TT
21203 for (i = 0; i < arg; ++i)
21204 {
aead7601
SM
21205 mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
21206 (enum dwarf_form) defn[i], offset_size,
f664829e 21207 section);
cf2c3c16
TT
21208 if (mac_ptr == NULL)
21209 {
21210 /* skip_form_bytes already issued the complaint. */
21211 return NULL;
21212 }
21213 }
757a13d0 21214
cf2c3c16
TT
21215 return mac_ptr;
21216}
757a13d0 21217
cf2c3c16
TT
21218/* A helper function which parses the header of a macro section.
21219 If the macro section is the extended (for now called "GNU") type,
21220 then this updates *OFFSET_SIZE. Returns a pointer to just after
21221 the header, or issues a complaint and returns NULL on error. */
757a13d0 21222
d521ce57
TT
21223static const gdb_byte *
21224dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
cf2c3c16 21225 bfd *abfd,
d521ce57 21226 const gdb_byte *mac_ptr,
cf2c3c16
TT
21227 unsigned int *offset_size,
21228 int section_is_gnu)
21229{
21230 memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
757a13d0 21231
cf2c3c16
TT
21232 if (section_is_gnu)
21233 {
21234 unsigned int version, flags;
757a13d0 21235
cf2c3c16
TT
21236 version = read_2_bytes (abfd, mac_ptr);
21237 if (version != 4)
21238 {
21239 complaint (&symfile_complaints,
21240 _("unrecognized version `%d' in .debug_macro section"),
21241 version);
21242 return NULL;
21243 }
21244 mac_ptr += 2;
757a13d0 21245
cf2c3c16
TT
21246 flags = read_1_byte (abfd, mac_ptr);
21247 ++mac_ptr;
21248 *offset_size = (flags & 1) ? 8 : 4;
757a13d0 21249
cf2c3c16
TT
21250 if ((flags & 2) != 0)
21251 /* We don't need the line table offset. */
21252 mac_ptr += *offset_size;
757a13d0 21253
cf2c3c16
TT
21254 /* Vendor opcode descriptions. */
21255 if ((flags & 4) != 0)
21256 {
21257 unsigned int i, count;
757a13d0 21258
cf2c3c16
TT
21259 count = read_1_byte (abfd, mac_ptr);
21260 ++mac_ptr;
21261 for (i = 0; i < count; ++i)
21262 {
21263 unsigned int opcode, bytes_read;
21264 unsigned long arg;
21265
21266 opcode = read_1_byte (abfd, mac_ptr);
21267 ++mac_ptr;
21268 opcode_definitions[opcode] = mac_ptr;
21269 arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21270 mac_ptr += bytes_read;
21271 mac_ptr += arg;
21272 }
757a13d0 21273 }
cf2c3c16 21274 }
757a13d0 21275
cf2c3c16
TT
21276 return mac_ptr;
21277}
757a13d0 21278
cf2c3c16 21279/* A helper for dwarf_decode_macros that handles the GNU extensions,
8fc3fc34 21280 including DW_MACRO_GNU_transparent_include. */
cf2c3c16
TT
21281
21282static void
d521ce57
TT
21283dwarf_decode_macro_bytes (bfd *abfd,
21284 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
cf2c3c16 21285 struct macro_source_file *current_file,
43f3e411 21286 struct line_header *lh,
cf2c3c16 21287 struct dwarf2_section_info *section,
36586728 21288 int section_is_gnu, int section_is_dwz,
cf2c3c16 21289 unsigned int offset_size,
8fc3fc34 21290 htab_t include_hash)
cf2c3c16 21291{
4d663531 21292 struct objfile *objfile = dwarf2_per_objfile->objfile;
cf2c3c16
TT
21293 enum dwarf_macro_record_type macinfo_type;
21294 int at_commandline;
d521ce57 21295 const gdb_byte *opcode_definitions[256];
757a13d0 21296
cf2c3c16
TT
21297 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21298 &offset_size, section_is_gnu);
21299 if (mac_ptr == NULL)
21300 {
21301 /* We already issued a complaint. */
21302 return;
21303 }
757a13d0
JK
21304
21305 /* Determines if GDB is still before first DW_MACINFO_start_file. If true
21306 GDB is still reading the definitions from command line. First
21307 DW_MACINFO_start_file will need to be ignored as it was already executed
21308 to create CURRENT_FILE for the main source holding also the command line
21309 definitions. On first met DW_MACINFO_start_file this flag is reset to
21310 normally execute all the remaining DW_MACINFO_start_file macinfos. */
21311
21312 at_commandline = 1;
21313
21314 do
21315 {
21316 /* Do we at least have room for a macinfo type byte? */
21317 if (mac_ptr >= mac_end)
21318 {
f664829e 21319 dwarf2_section_buffer_overflow_complaint (section);
757a13d0
JK
21320 break;
21321 }
21322
aead7601 21323 macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
757a13d0
JK
21324 mac_ptr++;
21325
cf2c3c16
TT
21326 /* Note that we rely on the fact that the corresponding GNU and
21327 DWARF constants are the same. */
757a13d0
JK
21328 switch (macinfo_type)
21329 {
21330 /* A zero macinfo type indicates the end of the macro
21331 information. */
21332 case 0:
21333 break;
2e276125 21334
cf2c3c16
TT
21335 case DW_MACRO_GNU_define:
21336 case DW_MACRO_GNU_undef:
21337 case DW_MACRO_GNU_define_indirect:
21338 case DW_MACRO_GNU_undef_indirect:
36586728
TT
21339 case DW_MACRO_GNU_define_indirect_alt:
21340 case DW_MACRO_GNU_undef_indirect_alt:
2e276125 21341 {
891d2f0b 21342 unsigned int bytes_read;
2e276125 21343 int line;
d521ce57 21344 const char *body;
cf2c3c16 21345 int is_define;
2e276125 21346
cf2c3c16
TT
21347 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21348 mac_ptr += bytes_read;
21349
21350 if (macinfo_type == DW_MACRO_GNU_define
21351 || macinfo_type == DW_MACRO_GNU_undef)
21352 {
21353 body = read_direct_string (abfd, mac_ptr, &bytes_read);
21354 mac_ptr += bytes_read;
21355 }
21356 else
21357 {
21358 LONGEST str_offset;
21359
21360 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
21361 mac_ptr += offset_size;
2e276125 21362
36586728 21363 if (macinfo_type == DW_MACRO_GNU_define_indirect_alt
f7a35f02
TT
21364 || macinfo_type == DW_MACRO_GNU_undef_indirect_alt
21365 || section_is_dwz)
36586728
TT
21366 {
21367 struct dwz_file *dwz = dwarf2_get_dwz_file ();
21368
21369 body = read_indirect_string_from_dwz (dwz, str_offset);
21370 }
21371 else
21372 body = read_indirect_string_at_offset (abfd, str_offset);
cf2c3c16
TT
21373 }
21374
21375 is_define = (macinfo_type == DW_MACRO_GNU_define
36586728
TT
21376 || macinfo_type == DW_MACRO_GNU_define_indirect
21377 || macinfo_type == DW_MACRO_GNU_define_indirect_alt);
2e276125 21378 if (! current_file)
757a13d0
JK
21379 {
21380 /* DWARF violation as no main source is present. */
21381 complaint (&symfile_complaints,
21382 _("debug info with no main source gives macro %s "
21383 "on line %d: %s"),
cf2c3c16
TT
21384 is_define ? _("definition") : _("undefinition"),
21385 line, body);
757a13d0
JK
21386 break;
21387 }
3e43a32a
MS
21388 if ((line == 0 && !at_commandline)
21389 || (line != 0 && at_commandline))
4d3c2250 21390 complaint (&symfile_complaints,
757a13d0
JK
21391 _("debug info gives %s macro %s with %s line %d: %s"),
21392 at_commandline ? _("command-line") : _("in-file"),
cf2c3c16 21393 is_define ? _("definition") : _("undefinition"),
757a13d0
JK
21394 line == 0 ? _("zero") : _("non-zero"), line, body);
21395
cf2c3c16 21396 if (is_define)
757a13d0 21397 parse_macro_definition (current_file, line, body);
cf2c3c16
TT
21398 else
21399 {
21400 gdb_assert (macinfo_type == DW_MACRO_GNU_undef
36586728
TT
21401 || macinfo_type == DW_MACRO_GNU_undef_indirect
21402 || macinfo_type == DW_MACRO_GNU_undef_indirect_alt);
cf2c3c16
TT
21403 macro_undef (current_file, line, body);
21404 }
2e276125
JB
21405 }
21406 break;
21407
cf2c3c16 21408 case DW_MACRO_GNU_start_file:
2e276125 21409 {
891d2f0b 21410 unsigned int bytes_read;
2e276125
JB
21411 int line, file;
21412
21413 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21414 mac_ptr += bytes_read;
21415 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21416 mac_ptr += bytes_read;
21417
3e43a32a
MS
21418 if ((line == 0 && !at_commandline)
21419 || (line != 0 && at_commandline))
757a13d0
JK
21420 complaint (&symfile_complaints,
21421 _("debug info gives source %d included "
21422 "from %s at %s line %d"),
21423 file, at_commandline ? _("command-line") : _("file"),
21424 line == 0 ? _("zero") : _("non-zero"), line);
21425
21426 if (at_commandline)
21427 {
cf2c3c16
TT
21428 /* This DW_MACRO_GNU_start_file was executed in the
21429 pass one. */
757a13d0
JK
21430 at_commandline = 0;
21431 }
21432 else
43f3e411 21433 current_file = macro_start_file (file, line, current_file, lh);
2e276125
JB
21434 }
21435 break;
21436
cf2c3c16 21437 case DW_MACRO_GNU_end_file:
2e276125 21438 if (! current_file)
4d3c2250 21439 complaint (&symfile_complaints,
3e43a32a
MS
21440 _("macro debug info has an unmatched "
21441 "`close_file' directive"));
2e276125
JB
21442 else
21443 {
21444 current_file = current_file->included_by;
21445 if (! current_file)
21446 {
cf2c3c16 21447 enum dwarf_macro_record_type next_type;
2e276125
JB
21448
21449 /* GCC circa March 2002 doesn't produce the zero
21450 type byte marking the end of the compilation
21451 unit. Complain if it's not there, but exit no
21452 matter what. */
21453
21454 /* Do we at least have room for a macinfo type byte? */
21455 if (mac_ptr >= mac_end)
21456 {
f664829e 21457 dwarf2_section_buffer_overflow_complaint (section);
2e276125
JB
21458 return;
21459 }
21460
21461 /* We don't increment mac_ptr here, so this is just
21462 a look-ahead. */
aead7601
SM
21463 next_type
21464 = (enum dwarf_macro_record_type) read_1_byte (abfd,
21465 mac_ptr);
2e276125 21466 if (next_type != 0)
4d3c2250 21467 complaint (&symfile_complaints,
3e43a32a
MS
21468 _("no terminating 0-type entry for "
21469 "macros in `.debug_macinfo' section"));
2e276125
JB
21470
21471 return;
21472 }
21473 }
21474 break;
21475
cf2c3c16 21476 case DW_MACRO_GNU_transparent_include:
36586728 21477 case DW_MACRO_GNU_transparent_include_alt:
cf2c3c16
TT
21478 {
21479 LONGEST offset;
8fc3fc34 21480 void **slot;
a036ba48
TT
21481 bfd *include_bfd = abfd;
21482 struct dwarf2_section_info *include_section = section;
d521ce57 21483 const gdb_byte *include_mac_end = mac_end;
a036ba48 21484 int is_dwz = section_is_dwz;
d521ce57 21485 const gdb_byte *new_mac_ptr;
cf2c3c16
TT
21486
21487 offset = read_offset_1 (abfd, mac_ptr, offset_size);
21488 mac_ptr += offset_size;
21489
a036ba48
TT
21490 if (macinfo_type == DW_MACRO_GNU_transparent_include_alt)
21491 {
21492 struct dwz_file *dwz = dwarf2_get_dwz_file ();
21493
4d663531 21494 dwarf2_read_section (objfile, &dwz->macro);
a036ba48 21495
a036ba48 21496 include_section = &dwz->macro;
a32a8923 21497 include_bfd = get_section_bfd_owner (include_section);
a036ba48
TT
21498 include_mac_end = dwz->macro.buffer + dwz->macro.size;
21499 is_dwz = 1;
21500 }
21501
21502 new_mac_ptr = include_section->buffer + offset;
21503 slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
21504
8fc3fc34
TT
21505 if (*slot != NULL)
21506 {
21507 /* This has actually happened; see
21508 http://sourceware.org/bugzilla/show_bug.cgi?id=13568. */
21509 complaint (&symfile_complaints,
21510 _("recursive DW_MACRO_GNU_transparent_include in "
21511 ".debug_macro section"));
21512 }
21513 else
21514 {
d521ce57 21515 *slot = (void *) new_mac_ptr;
36586728 21516
a036ba48 21517 dwarf_decode_macro_bytes (include_bfd, new_mac_ptr,
43f3e411 21518 include_mac_end, current_file, lh,
36586728 21519 section, section_is_gnu, is_dwz,
4d663531 21520 offset_size, include_hash);
8fc3fc34 21521
d521ce57 21522 htab_remove_elt (include_hash, (void *) new_mac_ptr);
8fc3fc34 21523 }
cf2c3c16
TT
21524 }
21525 break;
21526
2e276125 21527 case DW_MACINFO_vendor_ext:
cf2c3c16
TT
21528 if (!section_is_gnu)
21529 {
21530 unsigned int bytes_read;
2e276125 21531
ac298888
TT
21532 /* This reads the constant, but since we don't recognize
21533 any vendor extensions, we ignore it. */
21534 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
cf2c3c16
TT
21535 mac_ptr += bytes_read;
21536 read_direct_string (abfd, mac_ptr, &bytes_read);
21537 mac_ptr += bytes_read;
2e276125 21538
cf2c3c16
TT
21539 /* We don't recognize any vendor extensions. */
21540 break;
21541 }
21542 /* FALLTHROUGH */
21543
21544 default:
21545 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
f664829e 21546 mac_ptr, mac_end, abfd, offset_size,
cf2c3c16
TT
21547 section);
21548 if (mac_ptr == NULL)
21549 return;
21550 break;
2e276125 21551 }
757a13d0 21552 } while (macinfo_type != 0);
2e276125 21553}
8e19ed76 21554
cf2c3c16 21555static void
09262596 21556dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
43f3e411 21557 int section_is_gnu)
cf2c3c16 21558{
bb5ed363 21559 struct objfile *objfile = dwarf2_per_objfile->objfile;
09262596
DE
21560 struct line_header *lh = cu->line_header;
21561 bfd *abfd;
d521ce57 21562 const gdb_byte *mac_ptr, *mac_end;
cf2c3c16
TT
21563 struct macro_source_file *current_file = 0;
21564 enum dwarf_macro_record_type macinfo_type;
21565 unsigned int offset_size = cu->header.offset_size;
d521ce57 21566 const gdb_byte *opcode_definitions[256];
8fc3fc34 21567 struct cleanup *cleanup;
8fc3fc34 21568 void **slot;
09262596
DE
21569 struct dwarf2_section_info *section;
21570 const char *section_name;
21571
21572 if (cu->dwo_unit != NULL)
21573 {
21574 if (section_is_gnu)
21575 {
21576 section = &cu->dwo_unit->dwo_file->sections.macro;
21577 section_name = ".debug_macro.dwo";
21578 }
21579 else
21580 {
21581 section = &cu->dwo_unit->dwo_file->sections.macinfo;
21582 section_name = ".debug_macinfo.dwo";
21583 }
21584 }
21585 else
21586 {
21587 if (section_is_gnu)
21588 {
21589 section = &dwarf2_per_objfile->macro;
21590 section_name = ".debug_macro";
21591 }
21592 else
21593 {
21594 section = &dwarf2_per_objfile->macinfo;
21595 section_name = ".debug_macinfo";
21596 }
21597 }
cf2c3c16 21598
bb5ed363 21599 dwarf2_read_section (objfile, section);
cf2c3c16
TT
21600 if (section->buffer == NULL)
21601 {
fceca515 21602 complaint (&symfile_complaints, _("missing %s section"), section_name);
cf2c3c16
TT
21603 return;
21604 }
a32a8923 21605 abfd = get_section_bfd_owner (section);
cf2c3c16
TT
21606
21607 /* First pass: Find the name of the base filename.
21608 This filename is needed in order to process all macros whose definition
21609 (or undefinition) comes from the command line. These macros are defined
21610 before the first DW_MACINFO_start_file entry, and yet still need to be
21611 associated to the base file.
21612
21613 To determine the base file name, we scan the macro definitions until we
21614 reach the first DW_MACINFO_start_file entry. We then initialize
21615 CURRENT_FILE accordingly so that any macro definition found before the
21616 first DW_MACINFO_start_file can still be associated to the base file. */
21617
21618 mac_ptr = section->buffer + offset;
21619 mac_end = section->buffer + section->size;
21620
21621 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21622 &offset_size, section_is_gnu);
21623 if (mac_ptr == NULL)
21624 {
21625 /* We already issued a complaint. */
21626 return;
21627 }
21628
21629 do
21630 {
21631 /* Do we at least have room for a macinfo type byte? */
21632 if (mac_ptr >= mac_end)
21633 {
21634 /* Complaint is printed during the second pass as GDB will probably
21635 stop the first pass earlier upon finding
21636 DW_MACINFO_start_file. */
21637 break;
21638 }
21639
aead7601 21640 macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
cf2c3c16
TT
21641 mac_ptr++;
21642
21643 /* Note that we rely on the fact that the corresponding GNU and
21644 DWARF constants are the same. */
21645 switch (macinfo_type)
21646 {
21647 /* A zero macinfo type indicates the end of the macro
21648 information. */
21649 case 0:
21650 break;
21651
21652 case DW_MACRO_GNU_define:
21653 case DW_MACRO_GNU_undef:
21654 /* Only skip the data by MAC_PTR. */
21655 {
21656 unsigned int bytes_read;
21657
21658 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21659 mac_ptr += bytes_read;
21660 read_direct_string (abfd, mac_ptr, &bytes_read);
21661 mac_ptr += bytes_read;
21662 }
21663 break;
21664
21665 case DW_MACRO_GNU_start_file:
21666 {
21667 unsigned int bytes_read;
21668 int line, file;
21669
21670 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21671 mac_ptr += bytes_read;
21672 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21673 mac_ptr += bytes_read;
21674
43f3e411 21675 current_file = macro_start_file (file, line, current_file, lh);
cf2c3c16
TT
21676 }
21677 break;
21678
21679 case DW_MACRO_GNU_end_file:
21680 /* No data to skip by MAC_PTR. */
21681 break;
21682
21683 case DW_MACRO_GNU_define_indirect:
21684 case DW_MACRO_GNU_undef_indirect:
f7a35f02
TT
21685 case DW_MACRO_GNU_define_indirect_alt:
21686 case DW_MACRO_GNU_undef_indirect_alt:
cf2c3c16
TT
21687 {
21688 unsigned int bytes_read;
21689
21690 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21691 mac_ptr += bytes_read;
21692 mac_ptr += offset_size;
21693 }
21694 break;
21695
21696 case DW_MACRO_GNU_transparent_include:
f7a35f02 21697 case DW_MACRO_GNU_transparent_include_alt:
cf2c3c16
TT
21698 /* Note that, according to the spec, a transparent include
21699 chain cannot call DW_MACRO_GNU_start_file. So, we can just
21700 skip this opcode. */
21701 mac_ptr += offset_size;
21702 break;
21703
21704 case DW_MACINFO_vendor_ext:
21705 /* Only skip the data by MAC_PTR. */
21706 if (!section_is_gnu)
21707 {
21708 unsigned int bytes_read;
21709
21710 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21711 mac_ptr += bytes_read;
21712 read_direct_string (abfd, mac_ptr, &bytes_read);
21713 mac_ptr += bytes_read;
21714 }
21715 /* FALLTHROUGH */
21716
21717 default:
21718 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
f664829e 21719 mac_ptr, mac_end, abfd, offset_size,
cf2c3c16
TT
21720 section);
21721 if (mac_ptr == NULL)
21722 return;
21723 break;
21724 }
21725 } while (macinfo_type != 0 && current_file == NULL);
21726
21727 /* Second pass: Process all entries.
21728
21729 Use the AT_COMMAND_LINE flag to determine whether we are still processing
21730 command-line macro definitions/undefinitions. This flag is unset when we
21731 reach the first DW_MACINFO_start_file entry. */
21732
fc4007c9
TT
21733 htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
21734 htab_eq_pointer,
21735 NULL, xcalloc, xfree));
8fc3fc34 21736 mac_ptr = section->buffer + offset;
fc4007c9 21737 slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
d521ce57 21738 *slot = (void *) mac_ptr;
8fc3fc34 21739 dwarf_decode_macro_bytes (abfd, mac_ptr, mac_end,
43f3e411 21740 current_file, lh, section,
fc4007c9
TT
21741 section_is_gnu, 0, offset_size,
21742 include_hash.get ());
cf2c3c16
TT
21743}
21744
8e19ed76 21745/* Check if the attribute's form is a DW_FORM_block*
0963b4bd 21746 if so return true else false. */
380bca97 21747
8e19ed76 21748static int
6e5a29e1 21749attr_form_is_block (const struct attribute *attr)
8e19ed76
PS
21750{
21751 return (attr == NULL ? 0 :
21752 attr->form == DW_FORM_block1
21753 || attr->form == DW_FORM_block2
21754 || attr->form == DW_FORM_block4
2dc7f7b3
TT
21755 || attr->form == DW_FORM_block
21756 || attr->form == DW_FORM_exprloc);
8e19ed76 21757}
4c2df51b 21758
c6a0999f
JB
21759/* Return non-zero if ATTR's value is a section offset --- classes
21760 lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
21761 You may use DW_UNSND (attr) to retrieve such offsets.
21762
21763 Section 7.5.4, "Attribute Encodings", explains that no attribute
21764 may have a value that belongs to more than one of these classes; it
21765 would be ambiguous if we did, because we use the same forms for all
21766 of them. */
380bca97 21767
3690dd37 21768static int
6e5a29e1 21769attr_form_is_section_offset (const struct attribute *attr)
3690dd37
JB
21770{
21771 return (attr->form == DW_FORM_data4
2dc7f7b3
TT
21772 || attr->form == DW_FORM_data8
21773 || attr->form == DW_FORM_sec_offset);
3690dd37
JB
21774}
21775
3690dd37
JB
21776/* Return non-zero if ATTR's value falls in the 'constant' class, or
21777 zero otherwise. When this function returns true, you can apply
21778 dwarf2_get_attr_constant_value to it.
21779
21780 However, note that for some attributes you must check
21781 attr_form_is_section_offset before using this test. DW_FORM_data4
21782 and DW_FORM_data8 are members of both the constant class, and of
21783 the classes that contain offsets into other debug sections
21784 (lineptr, loclistptr, macptr or rangelistptr). The DWARF spec says
21785 that, if an attribute's can be either a constant or one of the
21786 section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
21787 taken as section offsets, not constants. */
380bca97 21788
3690dd37 21789static int
6e5a29e1 21790attr_form_is_constant (const struct attribute *attr)
3690dd37
JB
21791{
21792 switch (attr->form)
21793 {
21794 case DW_FORM_sdata:
21795 case DW_FORM_udata:
21796 case DW_FORM_data1:
21797 case DW_FORM_data2:
21798 case DW_FORM_data4:
21799 case DW_FORM_data8:
21800 return 1;
21801 default:
21802 return 0;
21803 }
21804}
21805
7771576e
SA
21806
21807/* DW_ADDR is always stored already as sect_offset; despite for the forms
21808 besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file. */
21809
21810static int
6e5a29e1 21811attr_form_is_ref (const struct attribute *attr)
7771576e
SA
21812{
21813 switch (attr->form)
21814 {
21815 case DW_FORM_ref_addr:
21816 case DW_FORM_ref1:
21817 case DW_FORM_ref2:
21818 case DW_FORM_ref4:
21819 case DW_FORM_ref8:
21820 case DW_FORM_ref_udata:
21821 case DW_FORM_GNU_ref_alt:
21822 return 1;
21823 default:
21824 return 0;
21825 }
21826}
21827
3019eac3
DE
21828/* Return the .debug_loc section to use for CU.
21829 For DWO files use .debug_loc.dwo. */
21830
21831static struct dwarf2_section_info *
21832cu_debug_loc_section (struct dwarf2_cu *cu)
21833{
21834 if (cu->dwo_unit)
21835 return &cu->dwo_unit->dwo_file->sections.loc;
21836 return &dwarf2_per_objfile->loc;
21837}
21838
8cf6f0b1
TT
21839/* A helper function that fills in a dwarf2_loclist_baton. */
21840
21841static void
21842fill_in_loclist_baton (struct dwarf2_cu *cu,
21843 struct dwarf2_loclist_baton *baton,
ff39bb5e 21844 const struct attribute *attr)
8cf6f0b1 21845{
3019eac3
DE
21846 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
21847
21848 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
8cf6f0b1
TT
21849
21850 baton->per_cu = cu->per_cu;
21851 gdb_assert (baton->per_cu);
21852 /* We don't know how long the location list is, but make sure we
21853 don't run off the edge of the section. */
3019eac3
DE
21854 baton->size = section->size - DW_UNSND (attr);
21855 baton->data = section->buffer + DW_UNSND (attr);
8cf6f0b1 21856 baton->base_address = cu->base_address;
f664829e 21857 baton->from_dwo = cu->dwo_unit != NULL;
8cf6f0b1
TT
21858}
21859
4c2df51b 21860static void
ff39bb5e 21861dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
f1e6e072 21862 struct dwarf2_cu *cu, int is_block)
4c2df51b 21863{
bb5ed363 21864 struct objfile *objfile = dwarf2_per_objfile->objfile;
3019eac3 21865 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
bb5ed363 21866
3690dd37 21867 if (attr_form_is_section_offset (attr)
3019eac3 21868 /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
99bcc461
DJ
21869 the section. If so, fall through to the complaint in the
21870 other branch. */
3019eac3 21871 && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
4c2df51b 21872 {
0d53c4c4 21873 struct dwarf2_loclist_baton *baton;
4c2df51b 21874
8d749320 21875 baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
4c2df51b 21876
8cf6f0b1 21877 fill_in_loclist_baton (cu, baton, attr);
be391dca 21878
d00adf39 21879 if (cu->base_known == 0)
0d53c4c4 21880 complaint (&symfile_complaints,
3e43a32a
MS
21881 _("Location list used without "
21882 "specifying the CU base address."));
4c2df51b 21883
f1e6e072
TT
21884 SYMBOL_ACLASS_INDEX (sym) = (is_block
21885 ? dwarf2_loclist_block_index
21886 : dwarf2_loclist_index);
0d53c4c4
DJ
21887 SYMBOL_LOCATION_BATON (sym) = baton;
21888 }
21889 else
21890 {
21891 struct dwarf2_locexpr_baton *baton;
21892
8d749320 21893 baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
ae0d2f24
UW
21894 baton->per_cu = cu->per_cu;
21895 gdb_assert (baton->per_cu);
0d53c4c4
DJ
21896
21897 if (attr_form_is_block (attr))
21898 {
21899 /* Note that we're just copying the block's data pointer
21900 here, not the actual data. We're still pointing into the
6502dd73
DJ
21901 info_buffer for SYM's objfile; right now we never release
21902 that buffer, but when we do clean up properly this may
21903 need to change. */
0d53c4c4
DJ
21904 baton->size = DW_BLOCK (attr)->size;
21905 baton->data = DW_BLOCK (attr)->data;
21906 }
21907 else
21908 {
21909 dwarf2_invalid_attrib_class_complaint ("location description",
21910 SYMBOL_NATURAL_NAME (sym));
21911 baton->size = 0;
0d53c4c4 21912 }
6e70227d 21913
f1e6e072
TT
21914 SYMBOL_ACLASS_INDEX (sym) = (is_block
21915 ? dwarf2_locexpr_block_index
21916 : dwarf2_locexpr_index);
0d53c4c4
DJ
21917 SYMBOL_LOCATION_BATON (sym) = baton;
21918 }
4c2df51b 21919}
6502dd73 21920
9aa1f1e3
TT
21921/* Return the OBJFILE associated with the compilation unit CU. If CU
21922 came from a separate debuginfo file, then the master objfile is
21923 returned. */
ae0d2f24
UW
21924
21925struct objfile *
21926dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
21927{
9291a0cd 21928 struct objfile *objfile = per_cu->objfile;
ae0d2f24
UW
21929
21930 /* Return the master objfile, so that we can report and look up the
21931 correct file containing this variable. */
21932 if (objfile->separate_debug_objfile_backlink)
21933 objfile = objfile->separate_debug_objfile_backlink;
21934
21935 return objfile;
21936}
21937
96408a79
SA
21938/* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
21939 (CU_HEADERP is unused in such case) or prepare a temporary copy at
21940 CU_HEADERP first. */
21941
21942static const struct comp_unit_head *
21943per_cu_header_read_in (struct comp_unit_head *cu_headerp,
21944 struct dwarf2_per_cu_data *per_cu)
21945{
d521ce57 21946 const gdb_byte *info_ptr;
96408a79
SA
21947
21948 if (per_cu->cu)
21949 return &per_cu->cu->header;
21950
8a0459fd 21951 info_ptr = per_cu->section->buffer + per_cu->offset.sect_off;
96408a79
SA
21952
21953 memset (cu_headerp, 0, sizeof (*cu_headerp));
0bc3a05c 21954 read_comp_unit_head (cu_headerp, info_ptr, per_cu->objfile->obfd);
96408a79
SA
21955
21956 return cu_headerp;
21957}
21958
ae0d2f24
UW
21959/* Return the address size given in the compilation unit header for CU. */
21960
98714339 21961int
ae0d2f24
UW
21962dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
21963{
96408a79
SA
21964 struct comp_unit_head cu_header_local;
21965 const struct comp_unit_head *cu_headerp;
c471e790 21966
96408a79
SA
21967 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21968
21969 return cu_headerp->addr_size;
ae0d2f24
UW
21970}
21971
9eae7c52
TT
21972/* Return the offset size given in the compilation unit header for CU. */
21973
21974int
21975dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
21976{
96408a79
SA
21977 struct comp_unit_head cu_header_local;
21978 const struct comp_unit_head *cu_headerp;
9c6c53f7 21979
96408a79
SA
21980 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21981
21982 return cu_headerp->offset_size;
21983}
21984
21985/* See its dwarf2loc.h declaration. */
21986
21987int
21988dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
21989{
21990 struct comp_unit_head cu_header_local;
21991 const struct comp_unit_head *cu_headerp;
21992
21993 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21994
21995 if (cu_headerp->version == 2)
21996 return cu_headerp->addr_size;
21997 else
21998 return cu_headerp->offset_size;
181cebd4
JK
21999}
22000
9aa1f1e3
TT
22001/* Return the text offset of the CU. The returned offset comes from
22002 this CU's objfile. If this objfile came from a separate debuginfo
22003 file, then the offset may be different from the corresponding
22004 offset in the parent objfile. */
22005
22006CORE_ADDR
22007dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
22008{
bb3fa9d0 22009 struct objfile *objfile = per_cu->objfile;
9aa1f1e3
TT
22010
22011 return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
22012}
22013
348e048f
DE
22014/* Locate the .debug_info compilation unit from CU's objfile which contains
22015 the DIE at OFFSET. Raises an error on failure. */
ae038cb0
DJ
22016
22017static struct dwarf2_per_cu_data *
b64f50a1 22018dwarf2_find_containing_comp_unit (sect_offset offset,
36586728 22019 unsigned int offset_in_dwz,
ae038cb0
DJ
22020 struct objfile *objfile)
22021{
22022 struct dwarf2_per_cu_data *this_cu;
22023 int low, high;
36586728 22024 const sect_offset *cu_off;
ae038cb0 22025
ae038cb0
DJ
22026 low = 0;
22027 high = dwarf2_per_objfile->n_comp_units - 1;
22028 while (high > low)
22029 {
36586728 22030 struct dwarf2_per_cu_data *mid_cu;
ae038cb0 22031 int mid = low + (high - low) / 2;
9a619af0 22032
36586728
TT
22033 mid_cu = dwarf2_per_objfile->all_comp_units[mid];
22034 cu_off = &mid_cu->offset;
22035 if (mid_cu->is_dwz > offset_in_dwz
22036 || (mid_cu->is_dwz == offset_in_dwz
22037 && cu_off->sect_off >= offset.sect_off))
ae038cb0
DJ
22038 high = mid;
22039 else
22040 low = mid + 1;
22041 }
22042 gdb_assert (low == high);
36586728
TT
22043 this_cu = dwarf2_per_objfile->all_comp_units[low];
22044 cu_off = &this_cu->offset;
22045 if (this_cu->is_dwz != offset_in_dwz || cu_off->sect_off > offset.sect_off)
ae038cb0 22046 {
36586728 22047 if (low == 0 || this_cu->is_dwz != offset_in_dwz)
8a3fe4f8
AC
22048 error (_("Dwarf Error: could not find partial DIE containing "
22049 "offset 0x%lx [in module %s]"),
b64f50a1 22050 (long) offset.sect_off, bfd_get_filename (objfile->obfd));
10b3939b 22051
b64f50a1
JK
22052 gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset.sect_off
22053 <= offset.sect_off);
ae038cb0
DJ
22054 return dwarf2_per_objfile->all_comp_units[low-1];
22055 }
22056 else
22057 {
22058 this_cu = dwarf2_per_objfile->all_comp_units[low];
22059 if (low == dwarf2_per_objfile->n_comp_units - 1
b64f50a1
JK
22060 && offset.sect_off >= this_cu->offset.sect_off + this_cu->length)
22061 error (_("invalid dwarf2 offset %u"), offset.sect_off);
22062 gdb_assert (offset.sect_off < this_cu->offset.sect_off + this_cu->length);
ae038cb0
DJ
22063 return this_cu;
22064 }
22065}
22066
23745b47 22067/* Initialize dwarf2_cu CU, owned by PER_CU. */
93311388 22068
9816fde3 22069static void
23745b47 22070init_one_comp_unit (struct dwarf2_cu *cu, struct dwarf2_per_cu_data *per_cu)
93311388 22071{
9816fde3 22072 memset (cu, 0, sizeof (*cu));
23745b47
DE
22073 per_cu->cu = cu;
22074 cu->per_cu = per_cu;
22075 cu->objfile = per_cu->objfile;
93311388 22076 obstack_init (&cu->comp_unit_obstack);
9816fde3
JK
22077}
22078
22079/* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE. */
22080
22081static void
95554aad
TT
22082prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
22083 enum language pretend_language)
9816fde3
JK
22084{
22085 struct attribute *attr;
22086
22087 /* Set the language we're debugging. */
22088 attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
22089 if (attr)
22090 set_cu_language (DW_UNSND (attr), cu);
22091 else
9cded63f 22092 {
95554aad 22093 cu->language = pretend_language;
9cded63f
TT
22094 cu->language_defn = language_def (cu->language);
22095 }
dee91e82 22096
7d45c7c3 22097 cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
93311388
DE
22098}
22099
ae038cb0
DJ
22100/* Release one cached compilation unit, CU. We unlink it from the tree
22101 of compilation units, but we don't remove it from the read_in_chain;
93311388
DE
22102 the caller is responsible for that.
22103 NOTE: DATA is a void * because this function is also used as a
22104 cleanup routine. */
ae038cb0
DJ
22105
22106static void
68dc6402 22107free_heap_comp_unit (void *data)
ae038cb0 22108{
9a3c8263 22109 struct dwarf2_cu *cu = (struct dwarf2_cu *) data;
ae038cb0 22110
23745b47
DE
22111 gdb_assert (cu->per_cu != NULL);
22112 cu->per_cu->cu = NULL;
ae038cb0
DJ
22113 cu->per_cu = NULL;
22114
22115 obstack_free (&cu->comp_unit_obstack, NULL);
22116
22117 xfree (cu);
22118}
22119
72bf9492 22120/* This cleanup function is passed the address of a dwarf2_cu on the stack
ae038cb0 22121 when we're finished with it. We can't free the pointer itself, but be
dee91e82 22122 sure to unlink it from the cache. Also release any associated storage. */
72bf9492
DJ
22123
22124static void
22125free_stack_comp_unit (void *data)
22126{
9a3c8263 22127 struct dwarf2_cu *cu = (struct dwarf2_cu *) data;
72bf9492 22128
23745b47
DE
22129 gdb_assert (cu->per_cu != NULL);
22130 cu->per_cu->cu = NULL;
22131 cu->per_cu = NULL;
22132
72bf9492
DJ
22133 obstack_free (&cu->comp_unit_obstack, NULL);
22134 cu->partial_dies = NULL;
ae038cb0
DJ
22135}
22136
22137/* Free all cached compilation units. */
22138
22139static void
22140free_cached_comp_units (void *data)
22141{
22142 struct dwarf2_per_cu_data *per_cu, **last_chain;
22143
22144 per_cu = dwarf2_per_objfile->read_in_chain;
22145 last_chain = &dwarf2_per_objfile->read_in_chain;
22146 while (per_cu != NULL)
22147 {
22148 struct dwarf2_per_cu_data *next_cu;
22149
22150 next_cu = per_cu->cu->read_in_chain;
22151
68dc6402 22152 free_heap_comp_unit (per_cu->cu);
ae038cb0
DJ
22153 *last_chain = next_cu;
22154
22155 per_cu = next_cu;
22156 }
22157}
22158
22159/* Increase the age counter on each cached compilation unit, and free
22160 any that are too old. */
22161
22162static void
22163age_cached_comp_units (void)
22164{
22165 struct dwarf2_per_cu_data *per_cu, **last_chain;
22166
22167 dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
22168 per_cu = dwarf2_per_objfile->read_in_chain;
22169 while (per_cu != NULL)
22170 {
22171 per_cu->cu->last_used ++;
b4f54984 22172 if (per_cu->cu->last_used <= dwarf_max_cache_age)
ae038cb0
DJ
22173 dwarf2_mark (per_cu->cu);
22174 per_cu = per_cu->cu->read_in_chain;
22175 }
22176
22177 per_cu = dwarf2_per_objfile->read_in_chain;
22178 last_chain = &dwarf2_per_objfile->read_in_chain;
22179 while (per_cu != NULL)
22180 {
22181 struct dwarf2_per_cu_data *next_cu;
22182
22183 next_cu = per_cu->cu->read_in_chain;
22184
22185 if (!per_cu->cu->mark)
22186 {
68dc6402 22187 free_heap_comp_unit (per_cu->cu);
ae038cb0
DJ
22188 *last_chain = next_cu;
22189 }
22190 else
22191 last_chain = &per_cu->cu->read_in_chain;
22192
22193 per_cu = next_cu;
22194 }
22195}
22196
22197/* Remove a single compilation unit from the cache. */
22198
22199static void
dee91e82 22200free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
ae038cb0
DJ
22201{
22202 struct dwarf2_per_cu_data *per_cu, **last_chain;
22203
22204 per_cu = dwarf2_per_objfile->read_in_chain;
22205 last_chain = &dwarf2_per_objfile->read_in_chain;
22206 while (per_cu != NULL)
22207 {
22208 struct dwarf2_per_cu_data *next_cu;
22209
22210 next_cu = per_cu->cu->read_in_chain;
22211
dee91e82 22212 if (per_cu == target_per_cu)
ae038cb0 22213 {
68dc6402 22214 free_heap_comp_unit (per_cu->cu);
dee91e82 22215 per_cu->cu = NULL;
ae038cb0
DJ
22216 *last_chain = next_cu;
22217 break;
22218 }
22219 else
22220 last_chain = &per_cu->cu->read_in_chain;
22221
22222 per_cu = next_cu;
22223 }
22224}
22225
fe3e1990
DJ
22226/* Release all extra memory associated with OBJFILE. */
22227
22228void
22229dwarf2_free_objfile (struct objfile *objfile)
22230{
9a3c8263
SM
22231 dwarf2_per_objfile
22232 = (struct dwarf2_per_objfile *) objfile_data (objfile,
22233 dwarf2_objfile_data_key);
fe3e1990
DJ
22234
22235 if (dwarf2_per_objfile == NULL)
22236 return;
22237
22238 /* Cached DIE trees use xmalloc and the comp_unit_obstack. */
22239 free_cached_comp_units (NULL);
22240
7b9f3c50
DE
22241 if (dwarf2_per_objfile->quick_file_names_table)
22242 htab_delete (dwarf2_per_objfile->quick_file_names_table);
9291a0cd 22243
527f3840
JK
22244 if (dwarf2_per_objfile->line_header_hash)
22245 htab_delete (dwarf2_per_objfile->line_header_hash);
22246
fe3e1990
DJ
22247 /* Everything else should be on the objfile obstack. */
22248}
22249
dee91e82
DE
22250/* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
22251 We store these in a hash table separate from the DIEs, and preserve them
22252 when the DIEs are flushed out of cache.
22253
22254 The CU "per_cu" pointer is needed because offset alone is not enough to
3019eac3 22255 uniquely identify the type. A file may have multiple .debug_types sections,
c88ee1f0
DE
22256 or the type may come from a DWO file. Furthermore, while it's more logical
22257 to use per_cu->section+offset, with Fission the section with the data is in
22258 the DWO file but we don't know that section at the point we need it.
22259 We have to use something in dwarf2_per_cu_data (or the pointer to it)
22260 because we can enter the lookup routine, get_die_type_at_offset, from
22261 outside this file, and thus won't necessarily have PER_CU->cu.
22262 Fortunately, PER_CU is stable for the life of the objfile. */
1c379e20 22263
dee91e82 22264struct dwarf2_per_cu_offset_and_type
1c379e20 22265{
dee91e82 22266 const struct dwarf2_per_cu_data *per_cu;
b64f50a1 22267 sect_offset offset;
1c379e20
DJ
22268 struct type *type;
22269};
22270
dee91e82 22271/* Hash function for a dwarf2_per_cu_offset_and_type. */
1c379e20
DJ
22272
22273static hashval_t
dee91e82 22274per_cu_offset_and_type_hash (const void *item)
1c379e20 22275{
9a3c8263
SM
22276 const struct dwarf2_per_cu_offset_and_type *ofs
22277 = (const struct dwarf2_per_cu_offset_and_type *) item;
9a619af0 22278
dee91e82 22279 return (uintptr_t) ofs->per_cu + ofs->offset.sect_off;
1c379e20
DJ
22280}
22281
dee91e82 22282/* Equality function for a dwarf2_per_cu_offset_and_type. */
1c379e20
DJ
22283
22284static int
dee91e82 22285per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
1c379e20 22286{
9a3c8263
SM
22287 const struct dwarf2_per_cu_offset_and_type *ofs_lhs
22288 = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
22289 const struct dwarf2_per_cu_offset_and_type *ofs_rhs
22290 = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
9a619af0 22291
dee91e82
DE
22292 return (ofs_lhs->per_cu == ofs_rhs->per_cu
22293 && ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off);
1c379e20
DJ
22294}
22295
22296/* Set the type associated with DIE to TYPE. Save it in CU's hash
7e314c57
JK
22297 table if necessary. For convenience, return TYPE.
22298
22299 The DIEs reading must have careful ordering to:
22300 * Not cause infite loops trying to read in DIEs as a prerequisite for
22301 reading current DIE.
22302 * Not trying to dereference contents of still incompletely read in types
22303 while reading in other DIEs.
22304 * Enable referencing still incompletely read in types just by a pointer to
22305 the type without accessing its fields.
22306
22307 Therefore caller should follow these rules:
22308 * Try to fetch any prerequisite types we may need to build this DIE type
22309 before building the type and calling set_die_type.
e71ec853 22310 * After building type call set_die_type for current DIE as soon as
7e314c57
JK
22311 possible before fetching more types to complete the current type.
22312 * Make the type as complete as possible before fetching more types. */
1c379e20 22313
f792889a 22314static struct type *
1c379e20
DJ
22315set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
22316{
dee91e82 22317 struct dwarf2_per_cu_offset_and_type **slot, ofs;
673bfd45 22318 struct objfile *objfile = cu->objfile;
3cdcd0ce
JB
22319 struct attribute *attr;
22320 struct dynamic_prop prop;
1c379e20 22321
b4ba55a1
JB
22322 /* For Ada types, make sure that the gnat-specific data is always
22323 initialized (if not already set). There are a few types where
22324 we should not be doing so, because the type-specific area is
22325 already used to hold some other piece of info (eg: TYPE_CODE_FLT
22326 where the type-specific area is used to store the floatformat).
22327 But this is not a problem, because the gnat-specific information
22328 is actually not needed for these types. */
22329 if (need_gnat_info (cu)
22330 && TYPE_CODE (type) != TYPE_CODE_FUNC
22331 && TYPE_CODE (type) != TYPE_CODE_FLT
09e2d7c7
DE
22332 && TYPE_CODE (type) != TYPE_CODE_METHODPTR
22333 && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
22334 && TYPE_CODE (type) != TYPE_CODE_METHOD
b4ba55a1
JB
22335 && !HAVE_GNAT_AUX_INFO (type))
22336 INIT_GNAT_SPECIFIC (type);
22337
3f2f83dd
KB
22338 /* Read DW_AT_allocated and set in type. */
22339 attr = dwarf2_attr (die, DW_AT_allocated, cu);
22340 if (attr_form_is_block (attr))
22341 {
22342 if (attr_to_dynamic_prop (attr, die, cu, &prop))
22343 add_dyn_prop (DYN_PROP_ALLOCATED, prop, type, objfile);
22344 }
22345 else if (attr != NULL)
22346 {
22347 complaint (&symfile_complaints,
22348 _("DW_AT_allocated has the wrong form (%s) at DIE 0x%x"),
22349 (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
22350 die->offset.sect_off);
22351 }
22352
22353 /* Read DW_AT_associated and set in type. */
22354 attr = dwarf2_attr (die, DW_AT_associated, cu);
22355 if (attr_form_is_block (attr))
22356 {
22357 if (attr_to_dynamic_prop (attr, die, cu, &prop))
22358 add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type, objfile);
22359 }
22360 else if (attr != NULL)
22361 {
22362 complaint (&symfile_complaints,
22363 _("DW_AT_associated has the wrong form (%s) at DIE 0x%x"),
22364 (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
22365 die->offset.sect_off);
22366 }
22367
3cdcd0ce
JB
22368 /* Read DW_AT_data_location and set in type. */
22369 attr = dwarf2_attr (die, DW_AT_data_location, cu);
22370 if (attr_to_dynamic_prop (attr, die, cu, &prop))
93a8e227 22371 add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type, objfile);
3cdcd0ce 22372
dee91e82 22373 if (dwarf2_per_objfile->die_type_hash == NULL)
f792889a 22374 {
dee91e82
DE
22375 dwarf2_per_objfile->die_type_hash =
22376 htab_create_alloc_ex (127,
22377 per_cu_offset_and_type_hash,
22378 per_cu_offset_and_type_eq,
22379 NULL,
22380 &objfile->objfile_obstack,
22381 hashtab_obstack_allocate,
22382 dummy_obstack_deallocate);
f792889a 22383 }
1c379e20 22384
dee91e82 22385 ofs.per_cu = cu->per_cu;
1c379e20
DJ
22386 ofs.offset = die->offset;
22387 ofs.type = type;
dee91e82
DE
22388 slot = (struct dwarf2_per_cu_offset_and_type **)
22389 htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
7e314c57
JK
22390 if (*slot)
22391 complaint (&symfile_complaints,
22392 _("A problem internal to GDB: DIE 0x%x has type already set"),
b64f50a1 22393 die->offset.sect_off);
8d749320
SM
22394 *slot = XOBNEW (&objfile->objfile_obstack,
22395 struct dwarf2_per_cu_offset_and_type);
1c379e20 22396 **slot = ofs;
f792889a 22397 return type;
1c379e20
DJ
22398}
22399
02142a6c
DE
22400/* Look up the type for the die at OFFSET in PER_CU in die_type_hash,
22401 or return NULL if the die does not have a saved type. */
1c379e20
DJ
22402
22403static struct type *
b64f50a1 22404get_die_type_at_offset (sect_offset offset,
673bfd45 22405 struct dwarf2_per_cu_data *per_cu)
1c379e20 22406{
dee91e82 22407 struct dwarf2_per_cu_offset_and_type *slot, ofs;
f792889a 22408
dee91e82 22409 if (dwarf2_per_objfile->die_type_hash == NULL)
f792889a 22410 return NULL;
1c379e20 22411
dee91e82 22412 ofs.per_cu = per_cu;
673bfd45 22413 ofs.offset = offset;
9a3c8263
SM
22414 slot = ((struct dwarf2_per_cu_offset_and_type *)
22415 htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
1c379e20
DJ
22416 if (slot)
22417 return slot->type;
22418 else
22419 return NULL;
22420}
22421
02142a6c 22422/* Look up the type for DIE in CU in die_type_hash,
673bfd45
DE
22423 or return NULL if DIE does not have a saved type. */
22424
22425static struct type *
22426get_die_type (struct die_info *die, struct dwarf2_cu *cu)
22427{
22428 return get_die_type_at_offset (die->offset, cu->per_cu);
22429}
22430
10b3939b
DJ
22431/* Add a dependence relationship from CU to REF_PER_CU. */
22432
22433static void
22434dwarf2_add_dependence (struct dwarf2_cu *cu,
22435 struct dwarf2_per_cu_data *ref_per_cu)
22436{
22437 void **slot;
22438
22439 if (cu->dependencies == NULL)
22440 cu->dependencies
22441 = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
22442 NULL, &cu->comp_unit_obstack,
22443 hashtab_obstack_allocate,
22444 dummy_obstack_deallocate);
22445
22446 slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
22447 if (*slot == NULL)
22448 *slot = ref_per_cu;
22449}
1c379e20 22450
f504f079
DE
22451/* Subroutine of dwarf2_mark to pass to htab_traverse.
22452 Set the mark field in every compilation unit in the
ae038cb0
DJ
22453 cache that we must keep because we are keeping CU. */
22454
10b3939b
DJ
22455static int
22456dwarf2_mark_helper (void **slot, void *data)
22457{
22458 struct dwarf2_per_cu_data *per_cu;
22459
22460 per_cu = (struct dwarf2_per_cu_data *) *slot;
d07ed419
JK
22461
22462 /* cu->dependencies references may not yet have been ever read if QUIT aborts
22463 reading of the chain. As such dependencies remain valid it is not much
22464 useful to track and undo them during QUIT cleanups. */
22465 if (per_cu->cu == NULL)
22466 return 1;
22467
10b3939b
DJ
22468 if (per_cu->cu->mark)
22469 return 1;
22470 per_cu->cu->mark = 1;
22471
22472 if (per_cu->cu->dependencies != NULL)
22473 htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
22474
22475 return 1;
22476}
22477
f504f079
DE
22478/* Set the mark field in CU and in every other compilation unit in the
22479 cache that we must keep because we are keeping CU. */
22480
ae038cb0
DJ
22481static void
22482dwarf2_mark (struct dwarf2_cu *cu)
22483{
22484 if (cu->mark)
22485 return;
22486 cu->mark = 1;
10b3939b
DJ
22487 if (cu->dependencies != NULL)
22488 htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
ae038cb0
DJ
22489}
22490
22491static void
22492dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
22493{
22494 while (per_cu)
22495 {
22496 per_cu->cu->mark = 0;
22497 per_cu = per_cu->cu->read_in_chain;
22498 }
72bf9492
DJ
22499}
22500
72bf9492
DJ
22501/* Trivial hash function for partial_die_info: the hash value of a DIE
22502 is its offset in .debug_info for this objfile. */
22503
22504static hashval_t
22505partial_die_hash (const void *item)
22506{
9a3c8263
SM
22507 const struct partial_die_info *part_die
22508 = (const struct partial_die_info *) item;
9a619af0 22509
b64f50a1 22510 return part_die->offset.sect_off;
72bf9492
DJ
22511}
22512
22513/* Trivial comparison function for partial_die_info structures: two DIEs
22514 are equal if they have the same offset. */
22515
22516static int
22517partial_die_eq (const void *item_lhs, const void *item_rhs)
22518{
9a3c8263
SM
22519 const struct partial_die_info *part_die_lhs
22520 = (const struct partial_die_info *) item_lhs;
22521 const struct partial_die_info *part_die_rhs
22522 = (const struct partial_die_info *) item_rhs;
9a619af0 22523
b64f50a1 22524 return part_die_lhs->offset.sect_off == part_die_rhs->offset.sect_off;
72bf9492
DJ
22525}
22526
b4f54984
DE
22527static struct cmd_list_element *set_dwarf_cmdlist;
22528static struct cmd_list_element *show_dwarf_cmdlist;
ae038cb0
DJ
22529
22530static void
b4f54984 22531set_dwarf_cmd (char *args, int from_tty)
ae038cb0 22532{
b4f54984 22533 help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
635c7e8a 22534 gdb_stdout);
ae038cb0
DJ
22535}
22536
22537static void
b4f54984 22538show_dwarf_cmd (char *args, int from_tty)
6e70227d 22539{
b4f54984 22540 cmd_show_list (show_dwarf_cmdlist, from_tty, "");
ae038cb0
DJ
22541}
22542
4bf44c1c 22543/* Free data associated with OBJFILE, if necessary. */
dce234bc
PP
22544
22545static void
c1bd65d0 22546dwarf2_per_objfile_free (struct objfile *objfile, void *d)
dce234bc 22547{
9a3c8263 22548 struct dwarf2_per_objfile *data = (struct dwarf2_per_objfile *) d;
8b70b953 22549 int ix;
8b70b953 22550
626f2d1c
TT
22551 /* Make sure we don't accidentally use dwarf2_per_objfile while
22552 cleaning up. */
22553 dwarf2_per_objfile = NULL;
22554
59b0c7c1
JB
22555 for (ix = 0; ix < data->n_comp_units; ++ix)
22556 VEC_free (dwarf2_per_cu_ptr, data->all_comp_units[ix]->imported_symtabs);
796a7ff8 22557
59b0c7c1 22558 for (ix = 0; ix < data->n_type_units; ++ix)
796a7ff8 22559 VEC_free (dwarf2_per_cu_ptr,
59b0c7c1
JB
22560 data->all_type_units[ix]->per_cu.imported_symtabs);
22561 xfree (data->all_type_units);
95554aad 22562
8b70b953 22563 VEC_free (dwarf2_section_info_def, data->types);
3019eac3
DE
22564
22565 if (data->dwo_files)
22566 free_dwo_files (data->dwo_files, objfile);
5c6fa7ab
DE
22567 if (data->dwp_file)
22568 gdb_bfd_unref (data->dwp_file->dbfd);
36586728
TT
22569
22570 if (data->dwz_file && data->dwz_file->dwz_bfd)
22571 gdb_bfd_unref (data->dwz_file->dwz_bfd);
9291a0cd
TT
22572}
22573
22574\f
ae2de4f8 22575/* The "save gdb-index" command. */
9291a0cd
TT
22576
22577/* The contents of the hash table we create when building the string
22578 table. */
22579struct strtab_entry
22580{
22581 offset_type offset;
22582 const char *str;
22583};
22584
559a7a62
JK
22585/* Hash function for a strtab_entry.
22586
22587 Function is used only during write_hash_table so no index format backward
22588 compatibility is needed. */
b89be57b 22589
9291a0cd
TT
22590static hashval_t
22591hash_strtab_entry (const void *e)
22592{
9a3c8263 22593 const struct strtab_entry *entry = (const struct strtab_entry *) e;
559a7a62 22594 return mapped_index_string_hash (INT_MAX, entry->str);
9291a0cd
TT
22595}
22596
22597/* Equality function for a strtab_entry. */
b89be57b 22598
9291a0cd
TT
22599static int
22600eq_strtab_entry (const void *a, const void *b)
22601{
9a3c8263
SM
22602 const struct strtab_entry *ea = (const struct strtab_entry *) a;
22603 const struct strtab_entry *eb = (const struct strtab_entry *) b;
9291a0cd
TT
22604 return !strcmp (ea->str, eb->str);
22605}
22606
22607/* Create a strtab_entry hash table. */
b89be57b 22608
9291a0cd
TT
22609static htab_t
22610create_strtab (void)
22611{
22612 return htab_create_alloc (100, hash_strtab_entry, eq_strtab_entry,
22613 xfree, xcalloc, xfree);
22614}
22615
22616/* Add a string to the constant pool. Return the string's offset in
22617 host order. */
b89be57b 22618
9291a0cd
TT
22619static offset_type
22620add_string (htab_t table, struct obstack *cpool, const char *str)
22621{
22622 void **slot;
22623 struct strtab_entry entry;
22624 struct strtab_entry *result;
22625
22626 entry.str = str;
22627 slot = htab_find_slot (table, &entry, INSERT);
22628 if (*slot)
9a3c8263 22629 result = (struct strtab_entry *) *slot;
9291a0cd
TT
22630 else
22631 {
22632 result = XNEW (struct strtab_entry);
22633 result->offset = obstack_object_size (cpool);
22634 result->str = str;
22635 obstack_grow_str0 (cpool, str);
22636 *slot = result;
22637 }
22638 return result->offset;
22639}
22640
22641/* An entry in the symbol table. */
22642struct symtab_index_entry
22643{
22644 /* The name of the symbol. */
22645 const char *name;
22646 /* The offset of the name in the constant pool. */
22647 offset_type index_offset;
22648 /* A sorted vector of the indices of all the CUs that hold an object
22649 of this name. */
22650 VEC (offset_type) *cu_indices;
22651};
22652
22653/* The symbol table. This is a power-of-2-sized hash table. */
22654struct mapped_symtab
22655{
22656 offset_type n_elements;
22657 offset_type size;
22658 struct symtab_index_entry **data;
22659};
22660
22661/* Hash function for a symtab_index_entry. */
b89be57b 22662
9291a0cd
TT
22663static hashval_t
22664hash_symtab_entry (const void *e)
22665{
9a3c8263
SM
22666 const struct symtab_index_entry *entry
22667 = (const struct symtab_index_entry *) e;
9291a0cd
TT
22668 return iterative_hash (VEC_address (offset_type, entry->cu_indices),
22669 sizeof (offset_type) * VEC_length (offset_type,
22670 entry->cu_indices),
22671 0);
22672}
22673
22674/* Equality function for a symtab_index_entry. */
b89be57b 22675
9291a0cd
TT
22676static int
22677eq_symtab_entry (const void *a, const void *b)
22678{
9a3c8263
SM
22679 const struct symtab_index_entry *ea = (const struct symtab_index_entry *) a;
22680 const struct symtab_index_entry *eb = (const struct symtab_index_entry *) b;
9291a0cd
TT
22681 int len = VEC_length (offset_type, ea->cu_indices);
22682 if (len != VEC_length (offset_type, eb->cu_indices))
22683 return 0;
22684 return !memcmp (VEC_address (offset_type, ea->cu_indices),
22685 VEC_address (offset_type, eb->cu_indices),
22686 sizeof (offset_type) * len);
22687}
22688
22689/* Destroy a symtab_index_entry. */
b89be57b 22690
9291a0cd
TT
22691static void
22692delete_symtab_entry (void *p)
22693{
9a3c8263 22694 struct symtab_index_entry *entry = (struct symtab_index_entry *) p;
9291a0cd
TT
22695 VEC_free (offset_type, entry->cu_indices);
22696 xfree (entry);
22697}
22698
22699/* Create a hash table holding symtab_index_entry objects. */
b89be57b 22700
9291a0cd 22701static htab_t
3876f04e 22702create_symbol_hash_table (void)
9291a0cd
TT
22703{
22704 return htab_create_alloc (100, hash_symtab_entry, eq_symtab_entry,
22705 delete_symtab_entry, xcalloc, xfree);
22706}
22707
22708/* Create a new mapped symtab object. */
b89be57b 22709
9291a0cd
TT
22710static struct mapped_symtab *
22711create_mapped_symtab (void)
22712{
22713 struct mapped_symtab *symtab = XNEW (struct mapped_symtab);
22714 symtab->n_elements = 0;
22715 symtab->size = 1024;
22716 symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22717 return symtab;
22718}
22719
22720/* Destroy a mapped_symtab. */
b89be57b 22721
9291a0cd
TT
22722static void
22723cleanup_mapped_symtab (void *p)
22724{
9a3c8263 22725 struct mapped_symtab *symtab = (struct mapped_symtab *) p;
9291a0cd
TT
22726 /* The contents of the array are freed when the other hash table is
22727 destroyed. */
22728 xfree (symtab->data);
22729 xfree (symtab);
22730}
22731
22732/* Find a slot in SYMTAB for the symbol NAME. Returns a pointer to
559a7a62
JK
22733 the slot.
22734
22735 Function is used only during write_hash_table so no index format backward
22736 compatibility is needed. */
b89be57b 22737
9291a0cd
TT
22738static struct symtab_index_entry **
22739find_slot (struct mapped_symtab *symtab, const char *name)
22740{
559a7a62 22741 offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
9291a0cd
TT
22742
22743 index = hash & (symtab->size - 1);
22744 step = ((hash * 17) & (symtab->size - 1)) | 1;
22745
22746 for (;;)
22747 {
22748 if (!symtab->data[index] || !strcmp (name, symtab->data[index]->name))
22749 return &symtab->data[index];
22750 index = (index + step) & (symtab->size - 1);
22751 }
22752}
22753
22754/* Expand SYMTAB's hash table. */
b89be57b 22755
9291a0cd
TT
22756static void
22757hash_expand (struct mapped_symtab *symtab)
22758{
22759 offset_type old_size = symtab->size;
22760 offset_type i;
22761 struct symtab_index_entry **old_entries = symtab->data;
22762
22763 symtab->size *= 2;
22764 symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22765
22766 for (i = 0; i < old_size; ++i)
22767 {
22768 if (old_entries[i])
22769 {
22770 struct symtab_index_entry **slot = find_slot (symtab,
22771 old_entries[i]->name);
22772 *slot = old_entries[i];
22773 }
22774 }
22775
22776 xfree (old_entries);
22777}
22778
156942c7
DE
22779/* Add an entry to SYMTAB. NAME is the name of the symbol.
22780 CU_INDEX is the index of the CU in which the symbol appears.
22781 IS_STATIC is one if the symbol is static, otherwise zero (global). */
b89be57b 22782
9291a0cd
TT
22783static void
22784add_index_entry (struct mapped_symtab *symtab, const char *name,
156942c7 22785 int is_static, gdb_index_symbol_kind kind,
9291a0cd
TT
22786 offset_type cu_index)
22787{
22788 struct symtab_index_entry **slot;
156942c7 22789 offset_type cu_index_and_attrs;
9291a0cd
TT
22790
22791 ++symtab->n_elements;
22792 if (4 * symtab->n_elements / 3 >= symtab->size)
22793 hash_expand (symtab);
22794
22795 slot = find_slot (symtab, name);
22796 if (!*slot)
22797 {
22798 *slot = XNEW (struct symtab_index_entry);
22799 (*slot)->name = name;
156942c7 22800 /* index_offset is set later. */
9291a0cd
TT
22801 (*slot)->cu_indices = NULL;
22802 }
156942c7
DE
22803
22804 cu_index_and_attrs = 0;
22805 DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
22806 DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
22807 DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
22808
22809 /* We don't want to record an index value twice as we want to avoid the
22810 duplication.
22811 We process all global symbols and then all static symbols
22812 (which would allow us to avoid the duplication by only having to check
22813 the last entry pushed), but a symbol could have multiple kinds in one CU.
22814 To keep things simple we don't worry about the duplication here and
22815 sort and uniqufy the list after we've processed all symbols. */
22816 VEC_safe_push (offset_type, (*slot)->cu_indices, cu_index_and_attrs);
22817}
22818
22819/* qsort helper routine for uniquify_cu_indices. */
22820
22821static int
22822offset_type_compare (const void *ap, const void *bp)
22823{
22824 offset_type a = *(offset_type *) ap;
22825 offset_type b = *(offset_type *) bp;
22826
22827 return (a > b) - (b > a);
22828}
22829
22830/* Sort and remove duplicates of all symbols' cu_indices lists. */
22831
22832static void
22833uniquify_cu_indices (struct mapped_symtab *symtab)
22834{
22835 int i;
22836
22837 for (i = 0; i < symtab->size; ++i)
22838 {
22839 struct symtab_index_entry *entry = symtab->data[i];
22840
22841 if (entry
22842 && entry->cu_indices != NULL)
22843 {
22844 unsigned int next_to_insert, next_to_check;
22845 offset_type last_value;
22846
22847 qsort (VEC_address (offset_type, entry->cu_indices),
22848 VEC_length (offset_type, entry->cu_indices),
22849 sizeof (offset_type), offset_type_compare);
22850
22851 last_value = VEC_index (offset_type, entry->cu_indices, 0);
22852 next_to_insert = 1;
22853 for (next_to_check = 1;
22854 next_to_check < VEC_length (offset_type, entry->cu_indices);
22855 ++next_to_check)
22856 {
22857 if (VEC_index (offset_type, entry->cu_indices, next_to_check)
22858 != last_value)
22859 {
22860 last_value = VEC_index (offset_type, entry->cu_indices,
22861 next_to_check);
22862 VEC_replace (offset_type, entry->cu_indices, next_to_insert,
22863 last_value);
22864 ++next_to_insert;
22865 }
22866 }
22867 VEC_truncate (offset_type, entry->cu_indices, next_to_insert);
22868 }
22869 }
9291a0cd
TT
22870}
22871
22872/* Add a vector of indices to the constant pool. */
b89be57b 22873
9291a0cd 22874static offset_type
3876f04e 22875add_indices_to_cpool (htab_t symbol_hash_table, struct obstack *cpool,
9291a0cd
TT
22876 struct symtab_index_entry *entry)
22877{
22878 void **slot;
22879
3876f04e 22880 slot = htab_find_slot (symbol_hash_table, entry, INSERT);
9291a0cd
TT
22881 if (!*slot)
22882 {
22883 offset_type len = VEC_length (offset_type, entry->cu_indices);
22884 offset_type val = MAYBE_SWAP (len);
22885 offset_type iter;
22886 int i;
22887
22888 *slot = entry;
22889 entry->index_offset = obstack_object_size (cpool);
22890
22891 obstack_grow (cpool, &val, sizeof (val));
22892 for (i = 0;
22893 VEC_iterate (offset_type, entry->cu_indices, i, iter);
22894 ++i)
22895 {
22896 val = MAYBE_SWAP (iter);
22897 obstack_grow (cpool, &val, sizeof (val));
22898 }
22899 }
22900 else
22901 {
9a3c8263
SM
22902 struct symtab_index_entry *old_entry
22903 = (struct symtab_index_entry *) *slot;
9291a0cd
TT
22904 entry->index_offset = old_entry->index_offset;
22905 entry = old_entry;
22906 }
22907 return entry->index_offset;
22908}
22909
22910/* Write the mapped hash table SYMTAB to the obstack OUTPUT, with
22911 constant pool entries going into the obstack CPOOL. */
b89be57b 22912
9291a0cd
TT
22913static void
22914write_hash_table (struct mapped_symtab *symtab,
22915 struct obstack *output, struct obstack *cpool)
22916{
22917 offset_type i;
3876f04e 22918 htab_t symbol_hash_table;
9291a0cd
TT
22919 htab_t str_table;
22920
3876f04e 22921 symbol_hash_table = create_symbol_hash_table ();
9291a0cd 22922 str_table = create_strtab ();
3876f04e 22923
9291a0cd
TT
22924 /* We add all the index vectors to the constant pool first, to
22925 ensure alignment is ok. */
22926 for (i = 0; i < symtab->size; ++i)
22927 {
22928 if (symtab->data[i])
3876f04e 22929 add_indices_to_cpool (symbol_hash_table, cpool, symtab->data[i]);
9291a0cd
TT
22930 }
22931
22932 /* Now write out the hash table. */
22933 for (i = 0; i < symtab->size; ++i)
22934 {
22935 offset_type str_off, vec_off;
22936
22937 if (symtab->data[i])
22938 {
22939 str_off = add_string (str_table, cpool, symtab->data[i]->name);
22940 vec_off = symtab->data[i]->index_offset;
22941 }
22942 else
22943 {
22944 /* While 0 is a valid constant pool index, it is not valid
22945 to have 0 for both offsets. */
22946 str_off = 0;
22947 vec_off = 0;
22948 }
22949
22950 str_off = MAYBE_SWAP (str_off);
22951 vec_off = MAYBE_SWAP (vec_off);
22952
22953 obstack_grow (output, &str_off, sizeof (str_off));
22954 obstack_grow (output, &vec_off, sizeof (vec_off));
22955 }
22956
22957 htab_delete (str_table);
3876f04e 22958 htab_delete (symbol_hash_table);
9291a0cd
TT
22959}
22960
0a5429f6
DE
22961/* Struct to map psymtab to CU index in the index file. */
22962struct psymtab_cu_index_map
22963{
22964 struct partial_symtab *psymtab;
22965 unsigned int cu_index;
22966};
22967
22968static hashval_t
22969hash_psymtab_cu_index (const void *item)
22970{
9a3c8263
SM
22971 const struct psymtab_cu_index_map *map
22972 = (const struct psymtab_cu_index_map *) item;
0a5429f6
DE
22973
22974 return htab_hash_pointer (map->psymtab);
22975}
22976
22977static int
22978eq_psymtab_cu_index (const void *item_lhs, const void *item_rhs)
22979{
9a3c8263
SM
22980 const struct psymtab_cu_index_map *lhs
22981 = (const struct psymtab_cu_index_map *) item_lhs;
22982 const struct psymtab_cu_index_map *rhs
22983 = (const struct psymtab_cu_index_map *) item_rhs;
0a5429f6
DE
22984
22985 return lhs->psymtab == rhs->psymtab;
22986}
22987
22988/* Helper struct for building the address table. */
22989struct addrmap_index_data
22990{
22991 struct objfile *objfile;
22992 struct obstack *addr_obstack;
22993 htab_t cu_index_htab;
22994
22995 /* Non-zero if the previous_* fields are valid.
22996 We can't write an entry until we see the next entry (since it is only then
22997 that we know the end of the entry). */
22998 int previous_valid;
22999 /* Index of the CU in the table of all CUs in the index file. */
23000 unsigned int previous_cu_index;
0963b4bd 23001 /* Start address of the CU. */
0a5429f6
DE
23002 CORE_ADDR previous_cu_start;
23003};
23004
23005/* Write an address entry to OBSTACK. */
b89be57b 23006
9291a0cd 23007static void
0a5429f6
DE
23008add_address_entry (struct objfile *objfile, struct obstack *obstack,
23009 CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
9291a0cd 23010{
0a5429f6 23011 offset_type cu_index_to_write;
948f8e3d 23012 gdb_byte addr[8];
9291a0cd
TT
23013 CORE_ADDR baseaddr;
23014
23015 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
23016
0a5429f6
DE
23017 store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, start - baseaddr);
23018 obstack_grow (obstack, addr, 8);
23019 store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, end - baseaddr);
23020 obstack_grow (obstack, addr, 8);
23021 cu_index_to_write = MAYBE_SWAP (cu_index);
23022 obstack_grow (obstack, &cu_index_to_write, sizeof (offset_type));
23023}
23024
23025/* Worker function for traversing an addrmap to build the address table. */
23026
23027static int
23028add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
23029{
9a3c8263
SM
23030 struct addrmap_index_data *data = (struct addrmap_index_data *) datap;
23031 struct partial_symtab *pst = (struct partial_symtab *) obj;
0a5429f6
DE
23032
23033 if (data->previous_valid)
23034 add_address_entry (data->objfile, data->addr_obstack,
23035 data->previous_cu_start, start_addr,
23036 data->previous_cu_index);
23037
23038 data->previous_cu_start = start_addr;
23039 if (pst != NULL)
23040 {
23041 struct psymtab_cu_index_map find_map, *map;
23042 find_map.psymtab = pst;
9a3c8263
SM
23043 map = ((struct psymtab_cu_index_map *)
23044 htab_find (data->cu_index_htab, &find_map));
0a5429f6
DE
23045 gdb_assert (map != NULL);
23046 data->previous_cu_index = map->cu_index;
23047 data->previous_valid = 1;
23048 }
23049 else
23050 data->previous_valid = 0;
23051
23052 return 0;
23053}
23054
23055/* Write OBJFILE's address map to OBSTACK.
23056 CU_INDEX_HTAB is used to map addrmap entries to their CU indices
23057 in the index file. */
23058
23059static void
23060write_address_map (struct objfile *objfile, struct obstack *obstack,
23061 htab_t cu_index_htab)
23062{
23063 struct addrmap_index_data addrmap_index_data;
23064
23065 /* When writing the address table, we have to cope with the fact that
23066 the addrmap iterator only provides the start of a region; we have to
23067 wait until the next invocation to get the start of the next region. */
23068
23069 addrmap_index_data.objfile = objfile;
23070 addrmap_index_data.addr_obstack = obstack;
23071 addrmap_index_data.cu_index_htab = cu_index_htab;
23072 addrmap_index_data.previous_valid = 0;
23073
23074 addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
23075 &addrmap_index_data);
23076
23077 /* It's highly unlikely the last entry (end address = 0xff...ff)
23078 is valid, but we should still handle it.
23079 The end address is recorded as the start of the next region, but that
23080 doesn't work here. To cope we pass 0xff...ff, this is a rare situation
23081 anyway. */
23082 if (addrmap_index_data.previous_valid)
23083 add_address_entry (objfile, obstack,
23084 addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
23085 addrmap_index_data.previous_cu_index);
9291a0cd
TT
23086}
23087
156942c7
DE
23088/* Return the symbol kind of PSYM. */
23089
23090static gdb_index_symbol_kind
23091symbol_kind (struct partial_symbol *psym)
23092{
23093 domain_enum domain = PSYMBOL_DOMAIN (psym);
23094 enum address_class aclass = PSYMBOL_CLASS (psym);
23095
23096 switch (domain)
23097 {
23098 case VAR_DOMAIN:
23099 switch (aclass)
23100 {
23101 case LOC_BLOCK:
23102 return GDB_INDEX_SYMBOL_KIND_FUNCTION;
23103 case LOC_TYPEDEF:
23104 return GDB_INDEX_SYMBOL_KIND_TYPE;
23105 case LOC_COMPUTED:
23106 case LOC_CONST_BYTES:
23107 case LOC_OPTIMIZED_OUT:
23108 case LOC_STATIC:
23109 return GDB_INDEX_SYMBOL_KIND_VARIABLE;
23110 case LOC_CONST:
23111 /* Note: It's currently impossible to recognize psyms as enum values
23112 short of reading the type info. For now punt. */
23113 return GDB_INDEX_SYMBOL_KIND_VARIABLE;
23114 default:
23115 /* There are other LOC_FOO values that one might want to classify
23116 as variables, but dwarf2read.c doesn't currently use them. */
23117 return GDB_INDEX_SYMBOL_KIND_OTHER;
23118 }
23119 case STRUCT_DOMAIN:
23120 return GDB_INDEX_SYMBOL_KIND_TYPE;
23121 default:
23122 return GDB_INDEX_SYMBOL_KIND_OTHER;
23123 }
23124}
23125
9291a0cd 23126/* Add a list of partial symbols to SYMTAB. */
b89be57b 23127
9291a0cd
TT
23128static void
23129write_psymbols (struct mapped_symtab *symtab,
987d643c 23130 htab_t psyms_seen,
9291a0cd
TT
23131 struct partial_symbol **psymp,
23132 int count,
987d643c
TT
23133 offset_type cu_index,
23134 int is_static)
9291a0cd
TT
23135{
23136 for (; count-- > 0; ++psymp)
23137 {
156942c7
DE
23138 struct partial_symbol *psym = *psymp;
23139 void **slot;
987d643c 23140
156942c7 23141 if (SYMBOL_LANGUAGE (psym) == language_ada)
9291a0cd 23142 error (_("Ada is not currently supported by the index"));
987d643c 23143
987d643c 23144 /* Only add a given psymbol once. */
156942c7 23145 slot = htab_find_slot (psyms_seen, psym, INSERT);
987d643c
TT
23146 if (!*slot)
23147 {
156942c7
DE
23148 gdb_index_symbol_kind kind = symbol_kind (psym);
23149
23150 *slot = psym;
23151 add_index_entry (symtab, SYMBOL_SEARCH_NAME (psym),
23152 is_static, kind, cu_index);
987d643c 23153 }
9291a0cd
TT
23154 }
23155}
23156
23157/* Write the contents of an ("unfinished") obstack to FILE. Throw an
23158 exception if there is an error. */
b89be57b 23159
9291a0cd
TT
23160static void
23161write_obstack (FILE *file, struct obstack *obstack)
23162{
23163 if (fwrite (obstack_base (obstack), 1, obstack_object_size (obstack),
23164 file)
23165 != obstack_object_size (obstack))
23166 error (_("couldn't data write to file"));
23167}
23168
1fd400ff
TT
23169/* A helper struct used when iterating over debug_types. */
23170struct signatured_type_index_data
23171{
23172 struct objfile *objfile;
23173 struct mapped_symtab *symtab;
23174 struct obstack *types_list;
987d643c 23175 htab_t psyms_seen;
1fd400ff
TT
23176 int cu_index;
23177};
23178
23179/* A helper function that writes a single signatured_type to an
23180 obstack. */
b89be57b 23181
1fd400ff
TT
23182static int
23183write_one_signatured_type (void **slot, void *d)
23184{
9a3c8263
SM
23185 struct signatured_type_index_data *info
23186 = (struct signatured_type_index_data *) d;
1fd400ff 23187 struct signatured_type *entry = (struct signatured_type *) *slot;
0186c6a7 23188 struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
1fd400ff
TT
23189 gdb_byte val[8];
23190
23191 write_psymbols (info->symtab,
987d643c 23192 info->psyms_seen,
3e43a32a
MS
23193 info->objfile->global_psymbols.list
23194 + psymtab->globals_offset,
987d643c
TT
23195 psymtab->n_global_syms, info->cu_index,
23196 0);
1fd400ff 23197 write_psymbols (info->symtab,
987d643c 23198 info->psyms_seen,
3e43a32a
MS
23199 info->objfile->static_psymbols.list
23200 + psymtab->statics_offset,
987d643c
TT
23201 psymtab->n_static_syms, info->cu_index,
23202 1);
1fd400ff 23203
b64f50a1
JK
23204 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23205 entry->per_cu.offset.sect_off);
1fd400ff 23206 obstack_grow (info->types_list, val, 8);
3019eac3
DE
23207 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23208 entry->type_offset_in_tu.cu_off);
1fd400ff
TT
23209 obstack_grow (info->types_list, val, 8);
23210 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->signature);
23211 obstack_grow (info->types_list, val, 8);
23212
23213 ++info->cu_index;
23214
23215 return 1;
23216}
23217
95554aad
TT
23218/* Recurse into all "included" dependencies and write their symbols as
23219 if they appeared in this psymtab. */
23220
23221static void
23222recursively_write_psymbols (struct objfile *objfile,
23223 struct partial_symtab *psymtab,
23224 struct mapped_symtab *symtab,
23225 htab_t psyms_seen,
23226 offset_type cu_index)
23227{
23228 int i;
23229
23230 for (i = 0; i < psymtab->number_of_dependencies; ++i)
23231 if (psymtab->dependencies[i]->user != NULL)
23232 recursively_write_psymbols (objfile, psymtab->dependencies[i],
23233 symtab, psyms_seen, cu_index);
23234
23235 write_psymbols (symtab,
23236 psyms_seen,
23237 objfile->global_psymbols.list + psymtab->globals_offset,
23238 psymtab->n_global_syms, cu_index,
23239 0);
23240 write_psymbols (symtab,
23241 psyms_seen,
23242 objfile->static_psymbols.list + psymtab->statics_offset,
23243 psymtab->n_static_syms, cu_index,
23244 1);
23245}
23246
9291a0cd 23247/* Create an index file for OBJFILE in the directory DIR. */
b89be57b 23248
9291a0cd
TT
23249static void
23250write_psymtabs_to_index (struct objfile *objfile, const char *dir)
23251{
23252 struct cleanup *cleanup;
bef155c3 23253 char *filename;
1fd400ff
TT
23254 struct obstack contents, addr_obstack, constant_pool, symtab_obstack;
23255 struct obstack cu_list, types_cu_list;
9291a0cd
TT
23256 int i;
23257 FILE *out_file;
23258 struct mapped_symtab *symtab;
23259 offset_type val, size_of_contents, total_len;
23260 struct stat st;
0a5429f6 23261 struct psymtab_cu_index_map *psymtab_cu_index_map;
9291a0cd 23262
9291a0cd
TT
23263 if (dwarf2_per_objfile->using_index)
23264 error (_("Cannot use an index to create the index"));
23265
8b70b953
TT
23266 if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) > 1)
23267 error (_("Cannot make an index when the file has multiple .debug_types sections"));
23268
260b681b
DE
23269 if (!objfile->psymtabs || !objfile->psymtabs_addrmap)
23270 return;
23271
4262abfb
JK
23272 if (stat (objfile_name (objfile), &st) < 0)
23273 perror_with_name (objfile_name (objfile));
9291a0cd 23274
4262abfb 23275 filename = concat (dir, SLASH_STRING, lbasename (objfile_name (objfile)),
9291a0cd
TT
23276 INDEX_SUFFIX, (char *) NULL);
23277 cleanup = make_cleanup (xfree, filename);
23278
614c279d 23279 out_file = gdb_fopen_cloexec (filename, "wb");
9291a0cd
TT
23280 if (!out_file)
23281 error (_("Can't open `%s' for writing"), filename);
23282
bef155c3 23283 gdb::unlinker unlink_file (filename);
9291a0cd
TT
23284
23285 symtab = create_mapped_symtab ();
23286 make_cleanup (cleanup_mapped_symtab, symtab);
23287
23288 obstack_init (&addr_obstack);
23289 make_cleanup_obstack_free (&addr_obstack);
23290
23291 obstack_init (&cu_list);
23292 make_cleanup_obstack_free (&cu_list);
23293
1fd400ff
TT
23294 obstack_init (&types_cu_list);
23295 make_cleanup_obstack_free (&types_cu_list);
23296
fc4007c9
TT
23297 htab_up psyms_seen (htab_create_alloc (100, htab_hash_pointer,
23298 htab_eq_pointer,
23299 NULL, xcalloc, xfree));
987d643c 23300
0a5429f6
DE
23301 /* While we're scanning CU's create a table that maps a psymtab pointer
23302 (which is what addrmap records) to its index (which is what is recorded
23303 in the index file). This will later be needed to write the address
23304 table. */
fc4007c9
TT
23305 htab_up cu_index_htab (htab_create_alloc (100,
23306 hash_psymtab_cu_index,
23307 eq_psymtab_cu_index,
23308 NULL, xcalloc, xfree));
8d749320
SM
23309 psymtab_cu_index_map = XNEWVEC (struct psymtab_cu_index_map,
23310 dwarf2_per_objfile->n_comp_units);
0a5429f6
DE
23311 make_cleanup (xfree, psymtab_cu_index_map);
23312
23313 /* The CU list is already sorted, so we don't need to do additional
1fd400ff
TT
23314 work here. Also, the debug_types entries do not appear in
23315 all_comp_units, but only in their own hash table. */
9291a0cd
TT
23316 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
23317 {
3e43a32a
MS
23318 struct dwarf2_per_cu_data *per_cu
23319 = dwarf2_per_objfile->all_comp_units[i];
e254ef6a 23320 struct partial_symtab *psymtab = per_cu->v.psymtab;
9291a0cd 23321 gdb_byte val[8];
0a5429f6
DE
23322 struct psymtab_cu_index_map *map;
23323 void **slot;
9291a0cd 23324
92fac807
JK
23325 /* CU of a shared file from 'dwz -m' may be unused by this main file.
23326 It may be referenced from a local scope but in such case it does not
23327 need to be present in .gdb_index. */
23328 if (psymtab == NULL)
23329 continue;
23330
95554aad 23331 if (psymtab->user == NULL)
fc4007c9
TT
23332 recursively_write_psymbols (objfile, psymtab, symtab,
23333 psyms_seen.get (), i);
9291a0cd 23334
0a5429f6
DE
23335 map = &psymtab_cu_index_map[i];
23336 map->psymtab = psymtab;
23337 map->cu_index = i;
fc4007c9 23338 slot = htab_find_slot (cu_index_htab.get (), map, INSERT);
0a5429f6
DE
23339 gdb_assert (slot != NULL);
23340 gdb_assert (*slot == NULL);
23341 *slot = map;
9291a0cd 23342
b64f50a1
JK
23343 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23344 per_cu->offset.sect_off);
9291a0cd 23345 obstack_grow (&cu_list, val, 8);
e254ef6a 23346 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, per_cu->length);
9291a0cd
TT
23347 obstack_grow (&cu_list, val, 8);
23348 }
23349
0a5429f6 23350 /* Dump the address map. */
fc4007c9 23351 write_address_map (objfile, &addr_obstack, cu_index_htab.get ());
0a5429f6 23352
1fd400ff
TT
23353 /* Write out the .debug_type entries, if any. */
23354 if (dwarf2_per_objfile->signatured_types)
23355 {
23356 struct signatured_type_index_data sig_data;
23357
23358 sig_data.objfile = objfile;
23359 sig_data.symtab = symtab;
23360 sig_data.types_list = &types_cu_list;
fc4007c9 23361 sig_data.psyms_seen = psyms_seen.get ();
1fd400ff
TT
23362 sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
23363 htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
23364 write_one_signatured_type, &sig_data);
23365 }
23366
156942c7
DE
23367 /* Now that we've processed all symbols we can shrink their cu_indices
23368 lists. */
23369 uniquify_cu_indices (symtab);
23370
9291a0cd
TT
23371 obstack_init (&constant_pool);
23372 make_cleanup_obstack_free (&constant_pool);
23373 obstack_init (&symtab_obstack);
23374 make_cleanup_obstack_free (&symtab_obstack);
23375 write_hash_table (symtab, &symtab_obstack, &constant_pool);
23376
23377 obstack_init (&contents);
23378 make_cleanup_obstack_free (&contents);
1fd400ff 23379 size_of_contents = 6 * sizeof (offset_type);
9291a0cd
TT
23380 total_len = size_of_contents;
23381
23382 /* The version number. */
796a7ff8 23383 val = MAYBE_SWAP (8);
9291a0cd
TT
23384 obstack_grow (&contents, &val, sizeof (val));
23385
23386 /* The offset of the CU list from the start of the file. */
23387 val = MAYBE_SWAP (total_len);
23388 obstack_grow (&contents, &val, sizeof (val));
23389 total_len += obstack_object_size (&cu_list);
23390
1fd400ff
TT
23391 /* The offset of the types CU list from the start of the file. */
23392 val = MAYBE_SWAP (total_len);
23393 obstack_grow (&contents, &val, sizeof (val));
23394 total_len += obstack_object_size (&types_cu_list);
23395
9291a0cd
TT
23396 /* The offset of the address table from the start of the file. */
23397 val = MAYBE_SWAP (total_len);
23398 obstack_grow (&contents, &val, sizeof (val));
23399 total_len += obstack_object_size (&addr_obstack);
23400
23401 /* The offset of the symbol table from the start of the file. */
23402 val = MAYBE_SWAP (total_len);
23403 obstack_grow (&contents, &val, sizeof (val));
23404 total_len += obstack_object_size (&symtab_obstack);
23405
23406 /* The offset of the constant pool from the start of the file. */
23407 val = MAYBE_SWAP (total_len);
23408 obstack_grow (&contents, &val, sizeof (val));
23409 total_len += obstack_object_size (&constant_pool);
23410
23411 gdb_assert (obstack_object_size (&contents) == size_of_contents);
23412
23413 write_obstack (out_file, &contents);
23414 write_obstack (out_file, &cu_list);
1fd400ff 23415 write_obstack (out_file, &types_cu_list);
9291a0cd
TT
23416 write_obstack (out_file, &addr_obstack);
23417 write_obstack (out_file, &symtab_obstack);
23418 write_obstack (out_file, &constant_pool);
23419
23420 fclose (out_file);
23421
bef155c3
TT
23422 /* We want to keep the file. */
23423 unlink_file.keep ();
9291a0cd
TT
23424
23425 do_cleanups (cleanup);
23426}
23427
90476074
TT
23428/* Implementation of the `save gdb-index' command.
23429
23430 Note that the file format used by this command is documented in the
23431 GDB manual. Any changes here must be documented there. */
11570e71 23432
9291a0cd
TT
23433static void
23434save_gdb_index_command (char *arg, int from_tty)
23435{
23436 struct objfile *objfile;
23437
23438 if (!arg || !*arg)
96d19272 23439 error (_("usage: save gdb-index DIRECTORY"));
9291a0cd
TT
23440
23441 ALL_OBJFILES (objfile)
23442 {
23443 struct stat st;
23444
23445 /* If the objfile does not correspond to an actual file, skip it. */
4262abfb 23446 if (stat (objfile_name (objfile), &st) < 0)
9291a0cd
TT
23447 continue;
23448
9a3c8263
SM
23449 dwarf2_per_objfile
23450 = (struct dwarf2_per_objfile *) objfile_data (objfile,
23451 dwarf2_objfile_data_key);
9291a0cd
TT
23452 if (dwarf2_per_objfile)
23453 {
9291a0cd 23454
492d29ea 23455 TRY
9291a0cd
TT
23456 {
23457 write_psymtabs_to_index (objfile, arg);
23458 }
492d29ea
PA
23459 CATCH (except, RETURN_MASK_ERROR)
23460 {
23461 exception_fprintf (gdb_stderr, except,
23462 _("Error while writing index for `%s': "),
23463 objfile_name (objfile));
23464 }
23465 END_CATCH
9291a0cd
TT
23466 }
23467 }
dce234bc
PP
23468}
23469
9291a0cd
TT
23470\f
23471
b4f54984 23472int dwarf_always_disassemble;
9eae7c52
TT
23473
23474static void
b4f54984
DE
23475show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
23476 struct cmd_list_element *c, const char *value)
9eae7c52 23477{
3e43a32a
MS
23478 fprintf_filtered (file,
23479 _("Whether to always disassemble "
23480 "DWARF expressions is %s.\n"),
9eae7c52
TT
23481 value);
23482}
23483
900e11f9
JK
23484static void
23485show_check_physname (struct ui_file *file, int from_tty,
23486 struct cmd_list_element *c, const char *value)
23487{
23488 fprintf_filtered (file,
23489 _("Whether to check \"physname\" is %s.\n"),
23490 value);
23491}
23492
6502dd73
DJ
23493void _initialize_dwarf2_read (void);
23494
23495void
23496_initialize_dwarf2_read (void)
23497{
96d19272
JK
23498 struct cmd_list_element *c;
23499
dce234bc 23500 dwarf2_objfile_data_key
c1bd65d0 23501 = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
ae038cb0 23502
b4f54984
DE
23503 add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
23504Set DWARF specific variables.\n\
23505Configure DWARF variables such as the cache size"),
23506 &set_dwarf_cmdlist, "maintenance set dwarf ",
ae038cb0
DJ
23507 0/*allow-unknown*/, &maintenance_set_cmdlist);
23508
b4f54984
DE
23509 add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
23510Show DWARF specific variables\n\
23511Show DWARF variables such as the cache size"),
23512 &show_dwarf_cmdlist, "maintenance show dwarf ",
ae038cb0
DJ
23513 0/*allow-unknown*/, &maintenance_show_cmdlist);
23514
23515 add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
b4f54984
DE
23516 &dwarf_max_cache_age, _("\
23517Set the upper bound on the age of cached DWARF compilation units."), _("\
23518Show the upper bound on the age of cached DWARF compilation units."), _("\
7915a72c
AC
23519A higher limit means that cached compilation units will be stored\n\
23520in memory longer, and more total memory will be used. Zero disables\n\
23521caching, which can slow down startup."),
2c5b56ce 23522 NULL,
b4f54984
DE
23523 show_dwarf_max_cache_age,
23524 &set_dwarf_cmdlist,
23525 &show_dwarf_cmdlist);
d97bc12b 23526
9eae7c52 23527 add_setshow_boolean_cmd ("always-disassemble", class_obscure,
b4f54984 23528 &dwarf_always_disassemble, _("\
9eae7c52
TT
23529Set whether `info address' always disassembles DWARF expressions."), _("\
23530Show whether `info address' always disassembles DWARF expressions."), _("\
23531When enabled, DWARF expressions are always printed in an assembly-like\n\
23532syntax. When disabled, expressions will be printed in a more\n\
23533conversational style, when possible."),
23534 NULL,
b4f54984
DE
23535 show_dwarf_always_disassemble,
23536 &set_dwarf_cmdlist,
23537 &show_dwarf_cmdlist);
23538
23539 add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
23540Set debugging of the DWARF reader."), _("\
23541Show debugging of the DWARF reader."), _("\
23542When enabled (non-zero), debugging messages are printed during DWARF\n\
73be47f5
DE
23543reading and symtab expansion. A value of 1 (one) provides basic\n\
23544information. A value greater than 1 provides more verbose information."),
45cfd468
DE
23545 NULL,
23546 NULL,
23547 &setdebuglist, &showdebuglist);
23548
b4f54984
DE
23549 add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
23550Set debugging of the DWARF DIE reader."), _("\
23551Show debugging of the DWARF DIE reader."), _("\
d97bc12b
DE
23552When enabled (non-zero), DIEs are dumped after they are read in.\n\
23553The value is the maximum depth to print."),
ccce17b0
YQ
23554 NULL,
23555 NULL,
23556 &setdebuglist, &showdebuglist);
9291a0cd 23557
27e0867f
DE
23558 add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
23559Set debugging of the dwarf line reader."), _("\
23560Show debugging of the dwarf line reader."), _("\
23561When enabled (non-zero), line number entries are dumped as they are read in.\n\
23562A value of 1 (one) provides basic information.\n\
23563A value greater than 1 provides more verbose information."),
23564 NULL,
23565 NULL,
23566 &setdebuglist, &showdebuglist);
23567
900e11f9
JK
23568 add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
23569Set cross-checking of \"physname\" code against demangler."), _("\
23570Show cross-checking of \"physname\" code against demangler."), _("\
23571When enabled, GDB's internal \"physname\" code is checked against\n\
23572the demangler."),
23573 NULL, show_check_physname,
23574 &setdebuglist, &showdebuglist);
23575
e615022a
DE
23576 add_setshow_boolean_cmd ("use-deprecated-index-sections",
23577 no_class, &use_deprecated_index_sections, _("\
23578Set whether to use deprecated gdb_index sections."), _("\
23579Show whether to use deprecated gdb_index sections."), _("\
23580When enabled, deprecated .gdb_index sections are used anyway.\n\
23581Normally they are ignored either because of a missing feature or\n\
23582performance issue.\n\
23583Warning: This option must be enabled before gdb reads the file."),
23584 NULL,
23585 NULL,
23586 &setlist, &showlist);
23587
96d19272 23588 c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
11570e71 23589 _("\
fc1a9d6e 23590Save a gdb-index file.\n\
11570e71 23591Usage: save gdb-index DIRECTORY"),
96d19272
JK
23592 &save_cmdlist);
23593 set_cmd_completer (c, filename_completer);
f1e6e072
TT
23594
23595 dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
23596 &dwarf2_locexpr_funcs);
23597 dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
23598 &dwarf2_loclist_funcs);
23599
23600 dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
23601 &dwarf2_block_frame_base_locexpr_funcs);
23602 dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
23603 &dwarf2_block_frame_base_loclist_funcs);
6502dd73 23604}
This page took 3.685782 seconds and 4 git commands to generate.