DWARF: handle non-local references in nested functions
[deliverable/binutils-gdb.git] / gdb / dwarf2read.c
CommitLineData
c906108c 1/* DWARF 2 debugging format support for GDB.
917c78fc 2
32d0add0 3 Copyright (C) 1994-2015 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
KS
55#include "typeprint.h"
56#include "jv-lang.h"
ccefe4c4 57#include "psympriv.h"
53ce3c39 58#include <sys/stat.h>
96d19272 59#include "completer.h"
34eaf542 60#include "vec.h"
98bfdba5 61#include "c-lang.h"
a766d390 62#include "go-lang.h"
98bfdba5 63#include "valprint.h"
3019eac3 64#include "gdbcore.h" /* for gnutarget */
156942c7 65#include "gdb/gdb-index.h"
60d5a603 66#include <ctype.h>
cbb099e8 67#include "gdb_bfd.h"
4357ac6c 68#include "f-lang.h"
05cba821 69#include "source.h"
614c279d 70#include "filestuff.h"
dc294be5 71#include "build-id.h"
22cee43f 72#include "namespace.h"
4c2df51b 73
c906108c 74#include <fcntl.h>
c906108c 75#include <sys/types.h>
d8151005 76
34eaf542
TT
77typedef struct symbol *symbolp;
78DEF_VEC_P (symbolp);
79
73be47f5
DE
80/* When == 1, print basic high level tracing messages.
81 When > 1, be more verbose.
b4f54984
DE
82 This is in contrast to the low level DIE reading of dwarf_die_debug. */
83static unsigned int dwarf_read_debug = 0;
45cfd468 84
d97bc12b 85/* When non-zero, dump DIEs after they are read in. */
b4f54984 86static unsigned int dwarf_die_debug = 0;
d97bc12b 87
27e0867f
DE
88/* When non-zero, dump line number entries as they are read in. */
89static unsigned int dwarf_line_debug = 0;
90
900e11f9
JK
91/* When non-zero, cross-check physname against demangler. */
92static int check_physname = 0;
93
481860b3 94/* When non-zero, do not reject deprecated .gdb_index sections. */
e615022a 95static int use_deprecated_index_sections = 0;
481860b3 96
6502dd73
DJ
97static const struct objfile_data *dwarf2_objfile_data_key;
98
f1e6e072
TT
99/* The "aclass" indices for various kinds of computed DWARF symbols. */
100
101static int dwarf2_locexpr_index;
102static int dwarf2_loclist_index;
103static int dwarf2_locexpr_block_index;
104static int dwarf2_loclist_block_index;
105
73869dc2
DE
106/* A descriptor for dwarf sections.
107
108 S.ASECTION, SIZE are typically initialized when the objfile is first
109 scanned. BUFFER, READIN are filled in later when the section is read.
110 If the section contained compressed data then SIZE is updated to record
111 the uncompressed size of the section.
112
113 DWP file format V2 introduces a wrinkle that is easiest to handle by
114 creating the concept of virtual sections contained within a real section.
115 In DWP V2 the sections of the input DWO files are concatenated together
116 into one section, but section offsets are kept relative to the original
117 input section.
118 If this is a virtual dwp-v2 section, S.CONTAINING_SECTION is a backlink to
119 the real section this "virtual" section is contained in, and BUFFER,SIZE
120 describe the virtual section. */
121
dce234bc
PP
122struct dwarf2_section_info
123{
73869dc2
DE
124 union
125 {
e5aa3347 126 /* If this is a real section, the bfd section. */
049412e3 127 asection *section;
73869dc2 128 /* If this is a virtual section, pointer to the containing ("real")
e5aa3347 129 section. */
73869dc2
DE
130 struct dwarf2_section_info *containing_section;
131 } s;
19ac8c2e 132 /* Pointer to section data, only valid if readin. */
d521ce57 133 const gdb_byte *buffer;
73869dc2 134 /* The size of the section, real or virtual. */
dce234bc 135 bfd_size_type size;
73869dc2
DE
136 /* If this is a virtual section, the offset in the real section.
137 Only valid if is_virtual. */
138 bfd_size_type virtual_offset;
be391dca 139 /* True if we have tried to read this section. */
73869dc2
DE
140 char readin;
141 /* True if this is a virtual section, False otherwise.
049412e3 142 This specifies which of s.section and s.containing_section to use. */
73869dc2 143 char is_virtual;
dce234bc
PP
144};
145
8b70b953
TT
146typedef struct dwarf2_section_info dwarf2_section_info_def;
147DEF_VEC_O (dwarf2_section_info_def);
148
9291a0cd
TT
149/* All offsets in the index are of this type. It must be
150 architecture-independent. */
151typedef uint32_t offset_type;
152
153DEF_VEC_I (offset_type);
154
156942c7
DE
155/* Ensure only legit values are used. */
156#define DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE(cu_index, value) \
157 do { \
158 gdb_assert ((unsigned int) (value) <= 1); \
159 GDB_INDEX_SYMBOL_STATIC_SET_VALUE((cu_index), (value)); \
160 } while (0)
161
162/* Ensure only legit values are used. */
163#define DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE(cu_index, value) \
164 do { \
165 gdb_assert ((value) >= GDB_INDEX_SYMBOL_KIND_TYPE \
166 && (value) <= GDB_INDEX_SYMBOL_KIND_OTHER); \
167 GDB_INDEX_SYMBOL_KIND_SET_VALUE((cu_index), (value)); \
168 } while (0)
169
170/* Ensure we don't use more than the alloted nuber of bits for the CU. */
171#define DW2_GDB_INDEX_CU_SET_VALUE(cu_index, value) \
172 do { \
173 gdb_assert (((value) & ~GDB_INDEX_CU_MASK) == 0); \
174 GDB_INDEX_CU_SET_VALUE((cu_index), (value)); \
175 } while (0)
176
9291a0cd
TT
177/* A description of the mapped index. The file format is described in
178 a comment by the code that writes the index. */
179struct mapped_index
180{
559a7a62
JK
181 /* Index data format version. */
182 int version;
183
9291a0cd
TT
184 /* The total length of the buffer. */
185 off_t total_size;
b11b1f88 186
9291a0cd
TT
187 /* A pointer to the address table data. */
188 const gdb_byte *address_table;
b11b1f88 189
9291a0cd
TT
190 /* Size of the address table data in bytes. */
191 offset_type address_table_size;
b11b1f88 192
3876f04e
DE
193 /* The symbol table, implemented as a hash table. */
194 const offset_type *symbol_table;
b11b1f88 195
9291a0cd 196 /* Size in slots, each slot is 2 offset_types. */
3876f04e 197 offset_type symbol_table_slots;
b11b1f88 198
9291a0cd
TT
199 /* A pointer to the constant pool. */
200 const char *constant_pool;
201};
202
95554aad
TT
203typedef struct dwarf2_per_cu_data *dwarf2_per_cu_ptr;
204DEF_VEC_P (dwarf2_per_cu_ptr);
205
52059ffd
TT
206struct tu_stats
207{
208 int nr_uniq_abbrev_tables;
209 int nr_symtabs;
210 int nr_symtab_sharers;
211 int nr_stmt_less_type_units;
212 int nr_all_type_units_reallocs;
213};
214
9cdd5dbd
DE
215/* Collection of data recorded per objfile.
216 This hangs off of dwarf2_objfile_data_key. */
217
6502dd73
DJ
218struct dwarf2_per_objfile
219{
dce234bc
PP
220 struct dwarf2_section_info info;
221 struct dwarf2_section_info abbrev;
222 struct dwarf2_section_info line;
dce234bc
PP
223 struct dwarf2_section_info loc;
224 struct dwarf2_section_info macinfo;
cf2c3c16 225 struct dwarf2_section_info macro;
dce234bc
PP
226 struct dwarf2_section_info str;
227 struct dwarf2_section_info ranges;
3019eac3 228 struct dwarf2_section_info addr;
dce234bc
PP
229 struct dwarf2_section_info frame;
230 struct dwarf2_section_info eh_frame;
9291a0cd 231 struct dwarf2_section_info gdb_index;
ae038cb0 232
8b70b953
TT
233 VEC (dwarf2_section_info_def) *types;
234
be391dca
TT
235 /* Back link. */
236 struct objfile *objfile;
237
d467dd73 238 /* Table of all the compilation units. This is used to locate
10b3939b 239 the target compilation unit of a particular reference. */
ae038cb0
DJ
240 struct dwarf2_per_cu_data **all_comp_units;
241
242 /* The number of compilation units in ALL_COMP_UNITS. */
243 int n_comp_units;
244
1fd400ff 245 /* The number of .debug_types-related CUs. */
d467dd73 246 int n_type_units;
1fd400ff 247
6aa5f3a6
DE
248 /* The number of elements allocated in all_type_units.
249 If there are skeleton-less TUs, we add them to all_type_units lazily. */
250 int n_allocated_type_units;
251
a2ce51a0
DE
252 /* The .debug_types-related CUs (TUs).
253 This is stored in malloc space because we may realloc it. */
b4dd5633 254 struct signatured_type **all_type_units;
1fd400ff 255
f4dc4d17
DE
256 /* Table of struct type_unit_group objects.
257 The hash key is the DW_AT_stmt_list value. */
258 htab_t type_unit_groups;
72dca2f5 259
348e048f
DE
260 /* A table mapping .debug_types signatures to its signatured_type entry.
261 This is NULL if the .debug_types section hasn't been read in yet. */
262 htab_t signatured_types;
263
f4dc4d17
DE
264 /* Type unit statistics, to see how well the scaling improvements
265 are doing. */
52059ffd 266 struct tu_stats tu_stats;
f4dc4d17
DE
267
268 /* A chain of compilation units that are currently read in, so that
269 they can be freed later. */
270 struct dwarf2_per_cu_data *read_in_chain;
271
3019eac3
DE
272 /* A table mapping DW_AT_dwo_name values to struct dwo_file objects.
273 This is NULL if the table hasn't been allocated yet. */
274 htab_t dwo_files;
275
80626a55
DE
276 /* Non-zero if we've check for whether there is a DWP file. */
277 int dwp_checked;
278
279 /* The DWP file if there is one, or NULL. */
280 struct dwp_file *dwp_file;
281
36586728
TT
282 /* The shared '.dwz' file, if one exists. This is used when the
283 original data was compressed using 'dwz -m'. */
284 struct dwz_file *dwz_file;
285
72dca2f5
FR
286 /* A flag indicating wether this objfile has a section loaded at a
287 VMA of 0. */
288 int has_section_at_zero;
9291a0cd 289
ae2de4f8
DE
290 /* True if we are using the mapped index,
291 or we are faking it for OBJF_READNOW's sake. */
9291a0cd
TT
292 unsigned char using_index;
293
ae2de4f8 294 /* The mapped index, or NULL if .gdb_index is missing or not being used. */
9291a0cd 295 struct mapped_index *index_table;
98bfdba5 296
7b9f3c50 297 /* When using index_table, this keeps track of all quick_file_names entries.
56e64610
DE
298 TUs typically share line table entries with a CU, so we maintain a
299 separate table of all line table entries to support the sharing.
300 Note that while there can be way more TUs than CUs, we've already
301 sorted all the TUs into "type unit groups", grouped by their
302 DW_AT_stmt_list value. Therefore the only sharing done here is with a
303 CU and its associated TU group if there is one. */
7b9f3c50
DE
304 htab_t quick_file_names_table;
305
98bfdba5
PA
306 /* Set during partial symbol reading, to prevent queueing of full
307 symbols. */
308 int reading_partial_symbols;
673bfd45 309
dee91e82 310 /* Table mapping type DIEs to their struct type *.
673bfd45 311 This is NULL if not allocated yet.
02142a6c 312 The mapping is done via (CU/TU + DIE offset) -> type. */
dee91e82 313 htab_t die_type_hash;
95554aad
TT
314
315 /* The CUs we recently read. */
316 VEC (dwarf2_per_cu_ptr) *just_read_cus;
527f3840
JK
317
318 /* Table containing line_header indexed by offset and offset_in_dwz. */
319 htab_t line_header_hash;
6502dd73
DJ
320};
321
322static struct dwarf2_per_objfile *dwarf2_per_objfile;
c906108c 323
251d32d9 324/* Default names of the debugging sections. */
c906108c 325
233a11ab
CS
326/* Note that if the debugging section has been compressed, it might
327 have a name like .zdebug_info. */
328
9cdd5dbd
DE
329static const struct dwarf2_debug_sections dwarf2_elf_names =
330{
251d32d9
TG
331 { ".debug_info", ".zdebug_info" },
332 { ".debug_abbrev", ".zdebug_abbrev" },
333 { ".debug_line", ".zdebug_line" },
334 { ".debug_loc", ".zdebug_loc" },
335 { ".debug_macinfo", ".zdebug_macinfo" },
cf2c3c16 336 { ".debug_macro", ".zdebug_macro" },
251d32d9
TG
337 { ".debug_str", ".zdebug_str" },
338 { ".debug_ranges", ".zdebug_ranges" },
339 { ".debug_types", ".zdebug_types" },
3019eac3 340 { ".debug_addr", ".zdebug_addr" },
251d32d9
TG
341 { ".debug_frame", ".zdebug_frame" },
342 { ".eh_frame", NULL },
24d3216f
TT
343 { ".gdb_index", ".zgdb_index" },
344 23
251d32d9 345};
c906108c 346
80626a55 347/* List of DWO/DWP sections. */
3019eac3 348
80626a55 349static const struct dwop_section_names
3019eac3
DE
350{
351 struct dwarf2_section_names abbrev_dwo;
352 struct dwarf2_section_names info_dwo;
353 struct dwarf2_section_names line_dwo;
354 struct dwarf2_section_names loc_dwo;
09262596
DE
355 struct dwarf2_section_names macinfo_dwo;
356 struct dwarf2_section_names macro_dwo;
3019eac3
DE
357 struct dwarf2_section_names str_dwo;
358 struct dwarf2_section_names str_offsets_dwo;
359 struct dwarf2_section_names types_dwo;
80626a55
DE
360 struct dwarf2_section_names cu_index;
361 struct dwarf2_section_names tu_index;
3019eac3 362}
80626a55 363dwop_section_names =
3019eac3
DE
364{
365 { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
366 { ".debug_info.dwo", ".zdebug_info.dwo" },
367 { ".debug_line.dwo", ".zdebug_line.dwo" },
368 { ".debug_loc.dwo", ".zdebug_loc.dwo" },
09262596
DE
369 { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
370 { ".debug_macro.dwo", ".zdebug_macro.dwo" },
3019eac3
DE
371 { ".debug_str.dwo", ".zdebug_str.dwo" },
372 { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
373 { ".debug_types.dwo", ".zdebug_types.dwo" },
80626a55
DE
374 { ".debug_cu_index", ".zdebug_cu_index" },
375 { ".debug_tu_index", ".zdebug_tu_index" },
3019eac3
DE
376};
377
c906108c
SS
378/* local data types */
379
107d2387
AC
380/* The data in a compilation unit header, after target2host
381 translation, looks like this. */
c906108c 382struct comp_unit_head
a738430d 383{
c764a876 384 unsigned int length;
a738430d 385 short version;
a738430d
MK
386 unsigned char addr_size;
387 unsigned char signed_addr_p;
b64f50a1 388 sect_offset abbrev_offset;
57349743 389
a738430d
MK
390 /* Size of file offsets; either 4 or 8. */
391 unsigned int offset_size;
57349743 392
a738430d
MK
393 /* Size of the length field; either 4 or 12. */
394 unsigned int initial_length_size;
57349743 395
a738430d
MK
396 /* Offset to the first byte of this compilation unit header in the
397 .debug_info section, for resolving relative reference dies. */
b64f50a1 398 sect_offset offset;
57349743 399
d00adf39
DE
400 /* Offset to first die in this cu from the start of the cu.
401 This will be the first byte following the compilation unit header. */
b64f50a1 402 cu_offset first_die_offset;
a738430d 403};
c906108c 404
3da10d80
KS
405/* Type used for delaying computation of method physnames.
406 See comments for compute_delayed_physnames. */
407struct delayed_method_info
408{
409 /* The type to which the method is attached, i.e., its parent class. */
410 struct type *type;
411
412 /* The index of the method in the type's function fieldlists. */
413 int fnfield_index;
414
415 /* The index of the method in the fieldlist. */
416 int index;
417
418 /* The name of the DIE. */
419 const char *name;
420
421 /* The DIE associated with this method. */
422 struct die_info *die;
423};
424
425typedef struct delayed_method_info delayed_method_info;
426DEF_VEC_O (delayed_method_info);
427
e7c27a73
DJ
428/* Internal state when decoding a particular compilation unit. */
429struct dwarf2_cu
430{
431 /* The objfile containing this compilation unit. */
432 struct objfile *objfile;
433
d00adf39 434 /* The header of the compilation unit. */
e7c27a73 435 struct comp_unit_head header;
e142c38c 436
d00adf39
DE
437 /* Base address of this compilation unit. */
438 CORE_ADDR base_address;
439
440 /* Non-zero if base_address has been set. */
441 int base_known;
442
e142c38c
DJ
443 /* The language we are debugging. */
444 enum language language;
445 const struct language_defn *language_defn;
446
b0f35d58
DL
447 const char *producer;
448
e142c38c
DJ
449 /* The generic symbol table building routines have separate lists for
450 file scope symbols and all all other scopes (local scopes). So
451 we need to select the right one to pass to add_symbol_to_list().
452 We do it by keeping a pointer to the correct list in list_in_scope.
453
454 FIXME: The original dwarf code just treated the file scope as the
455 first local scope, and all other local scopes as nested local
456 scopes, and worked fine. Check to see if we really need to
457 distinguish these in buildsym.c. */
458 struct pending **list_in_scope;
459
433df2d4
DE
460 /* The abbrev table for this CU.
461 Normally this points to the abbrev table in the objfile.
462 But if DWO_UNIT is non-NULL this is the abbrev table in the DWO file. */
463 struct abbrev_table *abbrev_table;
72bf9492 464
b64f50a1
JK
465 /* Hash table holding all the loaded partial DIEs
466 with partial_die->offset.SECT_OFF as hash. */
72bf9492
DJ
467 htab_t partial_dies;
468
469 /* Storage for things with the same lifetime as this read-in compilation
470 unit, including partial DIEs. */
471 struct obstack comp_unit_obstack;
472
ae038cb0
DJ
473 /* When multiple dwarf2_cu structures are living in memory, this field
474 chains them all together, so that they can be released efficiently.
475 We will probably also want a generation counter so that most-recently-used
476 compilation units are cached... */
477 struct dwarf2_per_cu_data *read_in_chain;
478
69d751e3 479 /* Backlink to our per_cu entry. */
ae038cb0
DJ
480 struct dwarf2_per_cu_data *per_cu;
481
482 /* How many compilation units ago was this CU last referenced? */
483 int last_used;
484
b64f50a1
JK
485 /* A hash table of DIE cu_offset for following references with
486 die_info->offset.sect_off as hash. */
51545339 487 htab_t die_hash;
10b3939b
DJ
488
489 /* Full DIEs if read in. */
490 struct die_info *dies;
491
492 /* A set of pointers to dwarf2_per_cu_data objects for compilation
493 units referenced by this one. Only set during full symbol processing;
494 partial symbol tables do not have dependencies. */
495 htab_t dependencies;
496
cb1df416
DJ
497 /* Header data from the line table, during full symbol processing. */
498 struct line_header *line_header;
499
3da10d80
KS
500 /* A list of methods which need to have physnames computed
501 after all type information has been read. */
502 VEC (delayed_method_info) *method_list;
503
96408a79
SA
504 /* To be copied to symtab->call_site_htab. */
505 htab_t call_site_htab;
506
034e5797
DE
507 /* Non-NULL if this CU came from a DWO file.
508 There is an invariant here that is important to remember:
509 Except for attributes copied from the top level DIE in the "main"
510 (or "stub") file in preparation for reading the DWO file
511 (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
512 Either there isn't a DWO file (in which case this is NULL and the point
513 is moot), or there is and either we're not going to read it (in which
514 case this is NULL) or there is and we are reading it (in which case this
515 is non-NULL). */
3019eac3
DE
516 struct dwo_unit *dwo_unit;
517
518 /* The DW_AT_addr_base attribute if present, zero otherwise
519 (zero is a valid value though).
1dbab08b 520 Note this value comes from the Fission stub CU/TU's DIE. */
3019eac3
DE
521 ULONGEST addr_base;
522
2e3cf129
DE
523 /* The DW_AT_ranges_base attribute if present, zero otherwise
524 (zero is a valid value though).
1dbab08b 525 Note this value comes from the Fission stub CU/TU's DIE.
2e3cf129 526 Also note that the value is zero in the non-DWO case so this value can
ab435259
DE
527 be used without needing to know whether DWO files are in use or not.
528 N.B. This does not apply to DW_AT_ranges appearing in
529 DW_TAG_compile_unit dies. This is a bit of a wart, consider if ever
530 DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
531 DW_AT_ranges_base *would* have to be applied, and we'd have to care
532 whether the DW_AT_ranges attribute came from the skeleton or DWO. */
2e3cf129
DE
533 ULONGEST ranges_base;
534
ae038cb0
DJ
535 /* Mark used when releasing cached dies. */
536 unsigned int mark : 1;
537
8be455d7
JK
538 /* This CU references .debug_loc. See the symtab->locations_valid field.
539 This test is imperfect as there may exist optimized debug code not using
540 any location list and still facing inlining issues if handled as
541 unoptimized code. For a future better test see GCC PR other/32998. */
8be455d7 542 unsigned int has_loclist : 1;
ba919b58 543
1b80a9fa
JK
544 /* These cache the results for producer_is_* fields. CHECKED_PRODUCER is set
545 if all the producer_is_* fields are valid. This information is cached
546 because profiling CU expansion showed excessive time spent in
547 producer_is_gxx_lt_4_6. */
ba919b58
TT
548 unsigned int checked_producer : 1;
549 unsigned int producer_is_gxx_lt_4_6 : 1;
1b80a9fa 550 unsigned int producer_is_gcc_lt_4_3 : 1;
685b1105 551 unsigned int producer_is_icc : 1;
4d4ec4e5
TT
552
553 /* When set, the file that we're processing is known to have
554 debugging info for C++ namespaces. GCC 3.3.x did not produce
555 this information, but later versions do. */
556
557 unsigned int processing_has_namespace_info : 1;
e7c27a73
DJ
558};
559
10b3939b
DJ
560/* Persistent data held for a compilation unit, even when not
561 processing it. We put a pointer to this structure in the
28dee7f5 562 read_symtab_private field of the psymtab. */
10b3939b 563
ae038cb0
DJ
564struct dwarf2_per_cu_data
565{
36586728 566 /* The start offset and length of this compilation unit.
45452591 567 NOTE: Unlike comp_unit_head.length, this length includes
3019eac3
DE
568 initial_length_size.
569 If the DIE refers to a DWO file, this is always of the original die,
570 not the DWO file. */
b64f50a1 571 sect_offset offset;
36586728 572 unsigned int length;
ae038cb0
DJ
573
574 /* Flag indicating this compilation unit will be read in before
575 any of the current compilation units are processed. */
c764a876 576 unsigned int queued : 1;
ae038cb0 577
0d99eb77
DE
578 /* This flag will be set when reading partial DIEs if we need to load
579 absolutely all DIEs for this compilation unit, instead of just the ones
580 we think are interesting. It gets set if we look for a DIE in the
5afb4e99
DJ
581 hash table and don't find it. */
582 unsigned int load_all_dies : 1;
583
0186c6a7
DE
584 /* Non-zero if this CU is from .debug_types.
585 Struct dwarf2_per_cu_data is contained in struct signatured_type iff
586 this is non-zero. */
3019eac3
DE
587 unsigned int is_debug_types : 1;
588
36586728
TT
589 /* Non-zero if this CU is from the .dwz file. */
590 unsigned int is_dwz : 1;
591
a2ce51a0
DE
592 /* Non-zero if reading a TU directly from a DWO file, bypassing the stub.
593 This flag is only valid if is_debug_types is true.
594 We can't read a CU directly from a DWO file: There are required
595 attributes in the stub. */
596 unsigned int reading_dwo_directly : 1;
597
7ee85ab1
DE
598 /* Non-zero if the TU has been read.
599 This is used to assist the "Stay in DWO Optimization" for Fission:
600 When reading a DWO, it's faster to read TUs from the DWO instead of
601 fetching them from random other DWOs (due to comdat folding).
602 If the TU has already been read, the optimization is unnecessary
603 (and unwise - we don't want to change where gdb thinks the TU lives
604 "midflight").
605 This flag is only valid if is_debug_types is true. */
606 unsigned int tu_read : 1;
607
3019eac3
DE
608 /* The section this CU/TU lives in.
609 If the DIE refers to a DWO file, this is always the original die,
610 not the DWO file. */
8a0459fd 611 struct dwarf2_section_info *section;
348e048f 612
17ea53c3 613 /* Set to non-NULL iff this CU is currently loaded. When it gets freed out
cc12ce38
DE
614 of the CU cache it gets reset to NULL again. This is left as NULL for
615 dummy CUs (a CU header, but nothing else). */
ae038cb0 616 struct dwarf2_cu *cu;
1c379e20 617
9cdd5dbd
DE
618 /* The corresponding objfile.
619 Normally we can get the objfile from dwarf2_per_objfile.
620 However we can enter this file with just a "per_cu" handle. */
9291a0cd
TT
621 struct objfile *objfile;
622
fffbe6a8
YQ
623 /* When dwarf2_per_objfile->using_index is true, the 'quick' field
624 is active. Otherwise, the 'psymtab' field is active. */
9291a0cd
TT
625 union
626 {
627 /* The partial symbol table associated with this compilation unit,
95554aad 628 or NULL for unread partial units. */
9291a0cd
TT
629 struct partial_symtab *psymtab;
630
631 /* Data needed by the "quick" functions. */
632 struct dwarf2_per_cu_quick_data *quick;
633 } v;
95554aad 634
796a7ff8
DE
635 /* The CUs we import using DW_TAG_imported_unit. This is filled in
636 while reading psymtabs, used to compute the psymtab dependencies,
637 and then cleared. Then it is filled in again while reading full
638 symbols, and only deleted when the objfile is destroyed.
639
640 This is also used to work around a difference between the way gold
641 generates .gdb_index version <=7 and the way gdb does. Arguably this
642 is a gold bug. For symbols coming from TUs, gold records in the index
643 the CU that includes the TU instead of the TU itself. This breaks
644 dw2_lookup_symbol: It assumes that if the index says symbol X lives
645 in CU/TU Y, then one need only expand Y and a subsequent lookup in Y
646 will find X. Alas TUs live in their own symtab, so after expanding CU Y
647 we need to look in TU Z to find X. Fortunately, this is akin to
648 DW_TAG_imported_unit, so we just use the same mechanism: For
649 .gdb_index version <=7 this also records the TUs that the CU referred
650 to. Concurrently with this change gdb was modified to emit version 8
69d751e3
DE
651 indices so we only pay a price for gold generated indices.
652 http://sourceware.org/bugzilla/show_bug.cgi?id=15021. */
796a7ff8 653 VEC (dwarf2_per_cu_ptr) *imported_symtabs;
ae038cb0
DJ
654};
655
348e048f
DE
656/* Entry in the signatured_types hash table. */
657
658struct signatured_type
659{
42e7ad6c 660 /* The "per_cu" object of this type.
ac9ec31b 661 This struct is used iff per_cu.is_debug_types.
42e7ad6c
DE
662 N.B.: This is the first member so that it's easy to convert pointers
663 between them. */
664 struct dwarf2_per_cu_data per_cu;
665
3019eac3 666 /* The type's signature. */
348e048f
DE
667 ULONGEST signature;
668
3019eac3 669 /* Offset in the TU of the type's DIE, as read from the TU header.
c88ee1f0
DE
670 If this TU is a DWO stub and the definition lives in a DWO file
671 (specified by DW_AT_GNU_dwo_name), this value is unusable. */
3019eac3
DE
672 cu_offset type_offset_in_tu;
673
674 /* Offset in the section of the type's DIE.
675 If the definition lives in a DWO file, this is the offset in the
676 .debug_types.dwo section.
677 The value is zero until the actual value is known.
678 Zero is otherwise not a valid section offset. */
679 sect_offset type_offset_in_section;
0186c6a7
DE
680
681 /* Type units are grouped by their DW_AT_stmt_list entry so that they
682 can share them. This points to the containing symtab. */
683 struct type_unit_group *type_unit_group;
ac9ec31b
DE
684
685 /* The type.
686 The first time we encounter this type we fully read it in and install it
687 in the symbol tables. Subsequent times we only need the type. */
688 struct type *type;
a2ce51a0
DE
689
690 /* Containing DWO unit.
691 This field is valid iff per_cu.reading_dwo_directly. */
692 struct dwo_unit *dwo_unit;
348e048f
DE
693};
694
0186c6a7
DE
695typedef struct signatured_type *sig_type_ptr;
696DEF_VEC_P (sig_type_ptr);
697
094b34ac
DE
698/* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
699 This includes type_unit_group and quick_file_names. */
700
701struct stmt_list_hash
702{
703 /* The DWO unit this table is from or NULL if there is none. */
704 struct dwo_unit *dwo_unit;
705
706 /* Offset in .debug_line or .debug_line.dwo. */
707 sect_offset line_offset;
708};
709
f4dc4d17
DE
710/* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
711 an object of this type. */
712
713struct type_unit_group
714{
0186c6a7 715 /* dwarf2read.c's main "handle" on a TU symtab.
f4dc4d17
DE
716 To simplify things we create an artificial CU that "includes" all the
717 type units using this stmt_list so that the rest of the code still has
718 a "per_cu" handle on the symtab.
719 This PER_CU is recognized by having no section. */
8a0459fd 720#define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
094b34ac
DE
721 struct dwarf2_per_cu_data per_cu;
722
0186c6a7
DE
723 /* The TUs that share this DW_AT_stmt_list entry.
724 This is added to while parsing type units to build partial symtabs,
725 and is deleted afterwards and not used again. */
726 VEC (sig_type_ptr) *tus;
f4dc4d17 727
43f3e411 728 /* The compunit symtab.
094b34ac 729 Type units in a group needn't all be defined in the same source file,
43f3e411
DE
730 so we create an essentially anonymous symtab as the compunit symtab. */
731 struct compunit_symtab *compunit_symtab;
f4dc4d17 732
094b34ac
DE
733 /* The data used to construct the hash key. */
734 struct stmt_list_hash hash;
f4dc4d17
DE
735
736 /* The number of symtabs from the line header.
737 The value here must match line_header.num_file_names. */
738 unsigned int num_symtabs;
739
740 /* The symbol tables for this TU (obtained from the files listed in
741 DW_AT_stmt_list).
742 WARNING: The order of entries here must match the order of entries
743 in the line header. After the first TU using this type_unit_group, the
744 line header for the subsequent TUs is recreated from this. This is done
745 because we need to use the same symtabs for each TU using the same
746 DW_AT_stmt_list value. Also note that symtabs may be repeated here,
747 there's no guarantee the line header doesn't have duplicate entries. */
748 struct symtab **symtabs;
749};
750
73869dc2 751/* These sections are what may appear in a (real or virtual) DWO file. */
3019eac3
DE
752
753struct dwo_sections
754{
755 struct dwarf2_section_info abbrev;
3019eac3
DE
756 struct dwarf2_section_info line;
757 struct dwarf2_section_info loc;
09262596
DE
758 struct dwarf2_section_info macinfo;
759 struct dwarf2_section_info macro;
3019eac3
DE
760 struct dwarf2_section_info str;
761 struct dwarf2_section_info str_offsets;
80626a55
DE
762 /* In the case of a virtual DWO file, these two are unused. */
763 struct dwarf2_section_info info;
3019eac3
DE
764 VEC (dwarf2_section_info_def) *types;
765};
766
c88ee1f0 767/* CUs/TUs in DWP/DWO files. */
3019eac3
DE
768
769struct dwo_unit
770{
771 /* Backlink to the containing struct dwo_file. */
772 struct dwo_file *dwo_file;
773
774 /* The "id" that distinguishes this CU/TU.
775 .debug_info calls this "dwo_id", .debug_types calls this "signature".
776 Since signatures came first, we stick with it for consistency. */
777 ULONGEST signature;
778
779 /* The section this CU/TU lives in, in the DWO file. */
8a0459fd 780 struct dwarf2_section_info *section;
3019eac3 781
19ac8c2e 782 /* Same as dwarf2_per_cu_data:{offset,length} but in the DWO section. */
3019eac3
DE
783 sect_offset offset;
784 unsigned int length;
785
786 /* For types, offset in the type's DIE of the type defined by this TU. */
787 cu_offset type_offset_in_tu;
788};
789
73869dc2
DE
790/* include/dwarf2.h defines the DWP section codes.
791 It defines a max value but it doesn't define a min value, which we
792 use for error checking, so provide one. */
793
794enum dwp_v2_section_ids
795{
796 DW_SECT_MIN = 1
797};
798
80626a55 799/* Data for one DWO file.
57d63ce2
DE
800
801 This includes virtual DWO files (a virtual DWO file is a DWO file as it
802 appears in a DWP file). DWP files don't really have DWO files per se -
803 comdat folding of types "loses" the DWO file they came from, and from
804 a high level view DWP files appear to contain a mass of random types.
805 However, to maintain consistency with the non-DWP case we pretend DWP
806 files contain virtual DWO files, and we assign each TU with one virtual
807 DWO file (generally based on the line and abbrev section offsets -
808 a heuristic that seems to work in practice). */
3019eac3
DE
809
810struct dwo_file
811{
0ac5b59e 812 /* The DW_AT_GNU_dwo_name attribute.
80626a55
DE
813 For virtual DWO files the name is constructed from the section offsets
814 of abbrev,line,loc,str_offsets so that we combine virtual DWO files
815 from related CU+TUs. */
0ac5b59e
DE
816 const char *dwo_name;
817
818 /* The DW_AT_comp_dir attribute. */
819 const char *comp_dir;
3019eac3 820
80626a55
DE
821 /* The bfd, when the file is open. Otherwise this is NULL.
822 This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd. */
823 bfd *dbfd;
3019eac3 824
73869dc2
DE
825 /* The sections that make up this DWO file.
826 Remember that for virtual DWO files in DWP V2, these are virtual
827 sections (for lack of a better name). */
3019eac3
DE
828 struct dwo_sections sections;
829
19c3d4c9
DE
830 /* The CU in the file.
831 We only support one because having more than one requires hacking the
832 dwo_name of each to match, which is highly unlikely to happen.
833 Doing this means all TUs can share comp_dir: We also assume that
834 DW_AT_comp_dir across all TUs in a DWO file will be identical. */
835 struct dwo_unit *cu;
3019eac3
DE
836
837 /* Table of TUs in the file.
838 Each element is a struct dwo_unit. */
839 htab_t tus;
840};
841
80626a55
DE
842/* These sections are what may appear in a DWP file. */
843
844struct dwp_sections
845{
73869dc2 846 /* These are used by both DWP version 1 and 2. */
80626a55
DE
847 struct dwarf2_section_info str;
848 struct dwarf2_section_info cu_index;
849 struct dwarf2_section_info tu_index;
73869dc2
DE
850
851 /* These are only used by DWP version 2 files.
852 In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
853 sections are referenced by section number, and are not recorded here.
854 In DWP version 2 there is at most one copy of all these sections, each
855 section being (effectively) comprised of the concatenation of all of the
856 individual sections that exist in the version 1 format.
857 To keep the code simple we treat each of these concatenated pieces as a
858 section itself (a virtual section?). */
859 struct dwarf2_section_info abbrev;
860 struct dwarf2_section_info info;
861 struct dwarf2_section_info line;
862 struct dwarf2_section_info loc;
863 struct dwarf2_section_info macinfo;
864 struct dwarf2_section_info macro;
865 struct dwarf2_section_info str_offsets;
866 struct dwarf2_section_info types;
80626a55
DE
867};
868
73869dc2
DE
869/* These sections are what may appear in a virtual DWO file in DWP version 1.
870 A virtual DWO file is a DWO file as it appears in a DWP file. */
80626a55 871
73869dc2 872struct virtual_v1_dwo_sections
80626a55
DE
873{
874 struct dwarf2_section_info abbrev;
875 struct dwarf2_section_info line;
876 struct dwarf2_section_info loc;
877 struct dwarf2_section_info macinfo;
878 struct dwarf2_section_info macro;
879 struct dwarf2_section_info str_offsets;
880 /* Each DWP hash table entry records one CU or one TU.
8a0459fd 881 That is recorded here, and copied to dwo_unit.section. */
80626a55
DE
882 struct dwarf2_section_info info_or_types;
883};
884
73869dc2
DE
885/* Similar to virtual_v1_dwo_sections, but for DWP version 2.
886 In version 2, the sections of the DWO files are concatenated together
887 and stored in one section of that name. Thus each ELF section contains
888 several "virtual" sections. */
889
890struct virtual_v2_dwo_sections
891{
892 bfd_size_type abbrev_offset;
893 bfd_size_type abbrev_size;
894
895 bfd_size_type line_offset;
896 bfd_size_type line_size;
897
898 bfd_size_type loc_offset;
899 bfd_size_type loc_size;
900
901 bfd_size_type macinfo_offset;
902 bfd_size_type macinfo_size;
903
904 bfd_size_type macro_offset;
905 bfd_size_type macro_size;
906
907 bfd_size_type str_offsets_offset;
908 bfd_size_type str_offsets_size;
909
910 /* Each DWP hash table entry records one CU or one TU.
911 That is recorded here, and copied to dwo_unit.section. */
912 bfd_size_type info_or_types_offset;
913 bfd_size_type info_or_types_size;
914};
915
80626a55
DE
916/* Contents of DWP hash tables. */
917
918struct dwp_hash_table
919{
73869dc2 920 uint32_t version, nr_columns;
80626a55 921 uint32_t nr_units, nr_slots;
73869dc2
DE
922 const gdb_byte *hash_table, *unit_table;
923 union
924 {
925 struct
926 {
927 const gdb_byte *indices;
928 } v1;
929 struct
930 {
931 /* This is indexed by column number and gives the id of the section
932 in that column. */
933#define MAX_NR_V2_DWO_SECTIONS \
934 (1 /* .debug_info or .debug_types */ \
935 + 1 /* .debug_abbrev */ \
936 + 1 /* .debug_line */ \
937 + 1 /* .debug_loc */ \
938 + 1 /* .debug_str_offsets */ \
939 + 1 /* .debug_macro or .debug_macinfo */)
940 int section_ids[MAX_NR_V2_DWO_SECTIONS];
941 const gdb_byte *offsets;
942 const gdb_byte *sizes;
943 } v2;
944 } section_pool;
80626a55
DE
945};
946
947/* Data for one DWP file. */
948
949struct dwp_file
950{
951 /* Name of the file. */
952 const char *name;
953
73869dc2
DE
954 /* File format version. */
955 int version;
956
93417882 957 /* The bfd. */
80626a55
DE
958 bfd *dbfd;
959
960 /* Section info for this file. */
961 struct dwp_sections sections;
962
57d63ce2 963 /* Table of CUs in the file. */
80626a55
DE
964 const struct dwp_hash_table *cus;
965
966 /* Table of TUs in the file. */
967 const struct dwp_hash_table *tus;
968
19ac8c2e
DE
969 /* Tables of loaded CUs/TUs. Each entry is a struct dwo_unit *. */
970 htab_t loaded_cus;
971 htab_t loaded_tus;
80626a55 972
73869dc2
DE
973 /* Table to map ELF section numbers to their sections.
974 This is only needed for the DWP V1 file format. */
80626a55
DE
975 unsigned int num_sections;
976 asection **elf_sections;
977};
978
36586728
TT
979/* This represents a '.dwz' file. */
980
981struct dwz_file
982{
983 /* A dwz file can only contain a few sections. */
984 struct dwarf2_section_info abbrev;
985 struct dwarf2_section_info info;
986 struct dwarf2_section_info str;
987 struct dwarf2_section_info line;
988 struct dwarf2_section_info macro;
2ec9a5e0 989 struct dwarf2_section_info gdb_index;
36586728
TT
990
991 /* The dwz's BFD. */
992 bfd *dwz_bfd;
993};
994
0963b4bd
MS
995/* Struct used to pass misc. parameters to read_die_and_children, et
996 al. which are used for both .debug_info and .debug_types dies.
997 All parameters here are unchanging for the life of the call. This
dee91e82 998 struct exists to abstract away the constant parameters of die reading. */
93311388
DE
999
1000struct die_reader_specs
1001{
a32a8923 1002 /* The bfd of die_section. */
93311388
DE
1003 bfd* abfd;
1004
1005 /* The CU of the DIE we are parsing. */
1006 struct dwarf2_cu *cu;
1007
80626a55 1008 /* Non-NULL if reading a DWO file (including one packaged into a DWP). */
3019eac3
DE
1009 struct dwo_file *dwo_file;
1010
dee91e82 1011 /* The section the die comes from.
3019eac3 1012 This is either .debug_info or .debug_types, or the .dwo variants. */
dee91e82
DE
1013 struct dwarf2_section_info *die_section;
1014
1015 /* die_section->buffer. */
d521ce57 1016 const gdb_byte *buffer;
f664829e
DE
1017
1018 /* The end of the buffer. */
1019 const gdb_byte *buffer_end;
a2ce51a0
DE
1020
1021 /* The value of the DW_AT_comp_dir attribute. */
1022 const char *comp_dir;
93311388
DE
1023};
1024
fd820528 1025/* Type of function passed to init_cutu_and_read_dies, et.al. */
dee91e82 1026typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
d521ce57 1027 const gdb_byte *info_ptr,
dee91e82
DE
1028 struct die_info *comp_unit_die,
1029 int has_children,
1030 void *data);
1031
52059ffd
TT
1032struct file_entry
1033{
1034 const char *name;
1035 unsigned int dir_index;
1036 unsigned int mod_time;
1037 unsigned int length;
83769d0b
DE
1038 /* Non-zero if referenced by the Line Number Program. */
1039 int included_p;
1040 /* The associated symbol table, if any. */
1041 struct symtab *symtab;
52059ffd
TT
1042};
1043
debd256d
JB
1044/* The line number information for a compilation unit (found in the
1045 .debug_line section) begins with a "statement program header",
1046 which contains the following information. */
1047struct line_header
1048{
527f3840
JK
1049 /* Offset of line number information in .debug_line section. */
1050 sect_offset offset;
1051
1052 /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile. */
1053 unsigned offset_in_dwz : 1;
1054
debd256d
JB
1055 unsigned int total_length;
1056 unsigned short version;
1057 unsigned int header_length;
1058 unsigned char minimum_instruction_length;
2dc7f7b3 1059 unsigned char maximum_ops_per_instruction;
debd256d
JB
1060 unsigned char default_is_stmt;
1061 int line_base;
1062 unsigned char line_range;
1063 unsigned char opcode_base;
1064
1065 /* standard_opcode_lengths[i] is the number of operands for the
1066 standard opcode whose value is i. This means that
1067 standard_opcode_lengths[0] is unused, and the last meaningful
1068 element is standard_opcode_lengths[opcode_base - 1]. */
1069 unsigned char *standard_opcode_lengths;
1070
1071 /* The include_directories table. NOTE! These strings are not
1072 allocated with xmalloc; instead, they are pointers into
1073 debug_line_buffer. If you try to free them, `free' will get
1074 indigestion. */
1075 unsigned int num_include_dirs, include_dirs_size;
d521ce57 1076 const char **include_dirs;
debd256d
JB
1077
1078 /* The file_names table. NOTE! These strings are not allocated
1079 with xmalloc; instead, they are pointers into debug_line_buffer.
1080 Don't try to free them directly. */
1081 unsigned int num_file_names, file_names_size;
52059ffd 1082 struct file_entry *file_names;
debd256d
JB
1083
1084 /* The start and end of the statement program following this
6502dd73 1085 header. These point into dwarf2_per_objfile->line_buffer. */
d521ce57 1086 const gdb_byte *statement_program_start, *statement_program_end;
debd256d 1087};
c906108c
SS
1088
1089/* When we construct a partial symbol table entry we only
0963b4bd 1090 need this much information. */
c906108c
SS
1091struct partial_die_info
1092 {
72bf9492 1093 /* Offset of this DIE. */
b64f50a1 1094 sect_offset offset;
72bf9492
DJ
1095
1096 /* DWARF-2 tag for this DIE. */
1097 ENUM_BITFIELD(dwarf_tag) tag : 16;
1098
72bf9492
DJ
1099 /* Assorted flags describing the data found in this DIE. */
1100 unsigned int has_children : 1;
1101 unsigned int is_external : 1;
1102 unsigned int is_declaration : 1;
1103 unsigned int has_type : 1;
1104 unsigned int has_specification : 1;
1105 unsigned int has_pc_info : 1;
481860b3 1106 unsigned int may_be_inlined : 1;
72bf9492
DJ
1107
1108 /* Flag set if the SCOPE field of this structure has been
1109 computed. */
1110 unsigned int scope_set : 1;
1111
fa4028e9
JB
1112 /* Flag set if the DIE has a byte_size attribute. */
1113 unsigned int has_byte_size : 1;
1114
ff908ebf
AW
1115 /* Flag set if the DIE has a DW_AT_const_value attribute. */
1116 unsigned int has_const_value : 1;
1117
98bfdba5
PA
1118 /* Flag set if any of the DIE's children are template arguments. */
1119 unsigned int has_template_arguments : 1;
1120
abc72ce4
DE
1121 /* Flag set if fixup_partial_die has been called on this die. */
1122 unsigned int fixup_called : 1;
1123
36586728
TT
1124 /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt. */
1125 unsigned int is_dwz : 1;
1126
1127 /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt. */
1128 unsigned int spec_is_dwz : 1;
1129
72bf9492 1130 /* The name of this DIE. Normally the value of DW_AT_name, but
94af9270 1131 sometimes a default name for unnamed DIEs. */
15d034d0 1132 const char *name;
72bf9492 1133
abc72ce4
DE
1134 /* The linkage name, if present. */
1135 const char *linkage_name;
1136
72bf9492
DJ
1137 /* The scope to prepend to our children. This is generally
1138 allocated on the comp_unit_obstack, so will disappear
1139 when this compilation unit leaves the cache. */
15d034d0 1140 const char *scope;
72bf9492 1141
95554aad
TT
1142 /* Some data associated with the partial DIE. The tag determines
1143 which field is live. */
1144 union
1145 {
1146 /* The location description associated with this DIE, if any. */
1147 struct dwarf_block *locdesc;
1148 /* The offset of an import, for DW_TAG_imported_unit. */
1149 sect_offset offset;
1150 } d;
72bf9492
DJ
1151
1152 /* If HAS_PC_INFO, the PC range associated with this DIE. */
c906108c
SS
1153 CORE_ADDR lowpc;
1154 CORE_ADDR highpc;
72bf9492 1155
93311388 1156 /* Pointer into the info_buffer (or types_buffer) pointing at the target of
72bf9492 1157 DW_AT_sibling, if any. */
abc72ce4
DE
1158 /* NOTE: This member isn't strictly necessary, read_partial_die could
1159 return DW_AT_sibling values to its caller load_partial_dies. */
d521ce57 1160 const gdb_byte *sibling;
72bf9492
DJ
1161
1162 /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1163 DW_AT_specification (or DW_AT_abstract_origin or
1164 DW_AT_extension). */
b64f50a1 1165 sect_offset spec_offset;
72bf9492
DJ
1166
1167 /* Pointers to this DIE's parent, first child, and next sibling,
1168 if any. */
1169 struct partial_die_info *die_parent, *die_child, *die_sibling;
c906108c
SS
1170 };
1171
0963b4bd 1172/* This data structure holds the information of an abbrev. */
c906108c
SS
1173struct abbrev_info
1174 {
1175 unsigned int number; /* number identifying abbrev */
1176 enum dwarf_tag tag; /* dwarf tag */
f3dd6933
DJ
1177 unsigned short has_children; /* boolean */
1178 unsigned short num_attrs; /* number of attributes */
c906108c
SS
1179 struct attr_abbrev *attrs; /* an array of attribute descriptions */
1180 struct abbrev_info *next; /* next in chain */
1181 };
1182
1183struct attr_abbrev
1184 {
9d25dd43
DE
1185 ENUM_BITFIELD(dwarf_attribute) name : 16;
1186 ENUM_BITFIELD(dwarf_form) form : 16;
c906108c
SS
1187 };
1188
433df2d4
DE
1189/* Size of abbrev_table.abbrev_hash_table. */
1190#define ABBREV_HASH_SIZE 121
1191
1192/* Top level data structure to contain an abbreviation table. */
1193
1194struct abbrev_table
1195{
f4dc4d17
DE
1196 /* Where the abbrev table came from.
1197 This is used as a sanity check when the table is used. */
433df2d4
DE
1198 sect_offset offset;
1199
1200 /* Storage for the abbrev table. */
1201 struct obstack abbrev_obstack;
1202
1203 /* Hash table of abbrevs.
1204 This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1205 It could be statically allocated, but the previous code didn't so we
1206 don't either. */
1207 struct abbrev_info **abbrevs;
1208};
1209
0963b4bd 1210/* Attributes have a name and a value. */
b60c80d6
DJ
1211struct attribute
1212 {
9d25dd43 1213 ENUM_BITFIELD(dwarf_attribute) name : 16;
8285870a
JK
1214 ENUM_BITFIELD(dwarf_form) form : 15;
1215
1216 /* Has DW_STRING already been updated by dwarf2_canonicalize_name? This
1217 field should be in u.str (existing only for DW_STRING) but it is kept
1218 here for better struct attribute alignment. */
1219 unsigned int string_is_canonical : 1;
1220
b60c80d6
DJ
1221 union
1222 {
15d034d0 1223 const char *str;
b60c80d6 1224 struct dwarf_block *blk;
43bbcdc2
PH
1225 ULONGEST unsnd;
1226 LONGEST snd;
b60c80d6 1227 CORE_ADDR addr;
ac9ec31b 1228 ULONGEST signature;
b60c80d6
DJ
1229 }
1230 u;
1231 };
1232
0963b4bd 1233/* This data structure holds a complete die structure. */
c906108c
SS
1234struct die_info
1235 {
76815b17
DE
1236 /* DWARF-2 tag for this DIE. */
1237 ENUM_BITFIELD(dwarf_tag) tag : 16;
1238
1239 /* Number of attributes */
98bfdba5
PA
1240 unsigned char num_attrs;
1241
1242 /* True if we're presently building the full type name for the
1243 type derived from this DIE. */
1244 unsigned char building_fullname : 1;
76815b17 1245
adde2bff
DE
1246 /* True if this die is in process. PR 16581. */
1247 unsigned char in_process : 1;
1248
76815b17
DE
1249 /* Abbrev number */
1250 unsigned int abbrev;
1251
93311388 1252 /* Offset in .debug_info or .debug_types section. */
b64f50a1 1253 sect_offset offset;
78ba4af6
JB
1254
1255 /* The dies in a compilation unit form an n-ary tree. PARENT
1256 points to this die's parent; CHILD points to the first child of
1257 this node; and all the children of a given node are chained
4950bc1c 1258 together via their SIBLING fields. */
639d11d3
DC
1259 struct die_info *child; /* Its first child, if any. */
1260 struct die_info *sibling; /* Its next sibling, if any. */
1261 struct die_info *parent; /* Its parent, if any. */
c906108c 1262
b60c80d6
DJ
1263 /* An array of attributes, with NUM_ATTRS elements. There may be
1264 zero, but it's not common and zero-sized arrays are not
1265 sufficiently portable C. */
1266 struct attribute attrs[1];
c906108c
SS
1267 };
1268
0963b4bd 1269/* Get at parts of an attribute structure. */
c906108c
SS
1270
1271#define DW_STRING(attr) ((attr)->u.str)
8285870a 1272#define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
c906108c
SS
1273#define DW_UNSND(attr) ((attr)->u.unsnd)
1274#define DW_BLOCK(attr) ((attr)->u.blk)
1275#define DW_SND(attr) ((attr)->u.snd)
1276#define DW_ADDR(attr) ((attr)->u.addr)
ac9ec31b 1277#define DW_SIGNATURE(attr) ((attr)->u.signature)
c906108c 1278
0963b4bd 1279/* Blocks are a bunch of untyped bytes. */
c906108c
SS
1280struct dwarf_block
1281 {
56eb65bd 1282 size_t size;
1d6edc3c
JK
1283
1284 /* Valid only if SIZE is not zero. */
d521ce57 1285 const gdb_byte *data;
c906108c
SS
1286 };
1287
c906108c
SS
1288#ifndef ATTR_ALLOC_CHUNK
1289#define ATTR_ALLOC_CHUNK 4
1290#endif
1291
c906108c
SS
1292/* Allocate fields for structs, unions and enums in this size. */
1293#ifndef DW_FIELD_ALLOC_CHUNK
1294#define DW_FIELD_ALLOC_CHUNK 4
1295#endif
1296
c906108c
SS
1297/* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1298 but this would require a corresponding change in unpack_field_as_long
1299 and friends. */
1300static int bits_per_byte = 8;
1301
52059ffd
TT
1302struct nextfield
1303{
1304 struct nextfield *next;
1305 int accessibility;
1306 int virtuality;
1307 struct field field;
1308};
1309
1310struct nextfnfield
1311{
1312 struct nextfnfield *next;
1313 struct fn_field fnfield;
1314};
1315
1316struct fnfieldlist
1317{
1318 const char *name;
1319 int length;
1320 struct nextfnfield *head;
1321};
1322
1323struct typedef_field_list
1324{
1325 struct typedef_field field;
1326 struct typedef_field_list *next;
1327};
1328
c906108c
SS
1329/* The routines that read and process dies for a C struct or C++ class
1330 pass lists of data member fields and lists of member function fields
1331 in an instance of a field_info structure, as defined below. */
1332struct field_info
c5aa993b 1333 {
0963b4bd 1334 /* List of data member and baseclasses fields. */
52059ffd 1335 struct nextfield *fields, *baseclasses;
c906108c 1336
7d0ccb61 1337 /* Number of fields (including baseclasses). */
c5aa993b 1338 int nfields;
c906108c 1339
c5aa993b
JM
1340 /* Number of baseclasses. */
1341 int nbaseclasses;
c906108c 1342
c5aa993b
JM
1343 /* Set if the accesibility of one of the fields is not public. */
1344 int non_public_fields;
c906108c 1345
c5aa993b
JM
1346 /* Member function fields array, entries are allocated in the order they
1347 are encountered in the object file. */
52059ffd 1348 struct nextfnfield *fnfields;
c906108c 1349
c5aa993b
JM
1350 /* Member function fieldlist array, contains name of possibly overloaded
1351 member function, number of overloaded member functions and a pointer
1352 to the head of the member function field chain. */
52059ffd 1353 struct fnfieldlist *fnfieldlists;
c906108c 1354
c5aa993b
JM
1355 /* Number of entries in the fnfieldlists array. */
1356 int nfnfields;
98751a41
JK
1357
1358 /* typedefs defined inside this class. TYPEDEF_FIELD_LIST contains head of
1359 a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements. */
52059ffd 1360 struct typedef_field_list *typedef_field_list;
98751a41 1361 unsigned typedef_field_list_count;
c5aa993b 1362 };
c906108c 1363
10b3939b
DJ
1364/* One item on the queue of compilation units to read in full symbols
1365 for. */
1366struct dwarf2_queue_item
1367{
1368 struct dwarf2_per_cu_data *per_cu;
95554aad 1369 enum language pretend_language;
10b3939b
DJ
1370 struct dwarf2_queue_item *next;
1371};
1372
1373/* The current queue. */
1374static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1375
ae038cb0
DJ
1376/* Loaded secondary compilation units are kept in memory until they
1377 have not been referenced for the processing of this many
1378 compilation units. Set this to zero to disable caching. Cache
1379 sizes of up to at least twenty will improve startup time for
1380 typical inter-CU-reference binaries, at an obvious memory cost. */
b4f54984 1381static int dwarf_max_cache_age = 5;
920d2a44 1382static void
b4f54984
DE
1383show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1384 struct cmd_list_element *c, const char *value)
920d2a44 1385{
3e43a32a 1386 fprintf_filtered (file, _("The upper bound on the age of cached "
b4f54984 1387 "DWARF compilation units is %s.\n"),
920d2a44
AC
1388 value);
1389}
4390d890 1390\f
c906108c
SS
1391/* local function prototypes */
1392
a32a8923
DE
1393static const char *get_section_name (const struct dwarf2_section_info *);
1394
1395static const char *get_section_file_name (const struct dwarf2_section_info *);
1396
4efb68b1 1397static void dwarf2_locate_sections (bfd *, asection *, void *);
c906108c 1398
918dd910
JK
1399static void dwarf2_find_base_address (struct die_info *die,
1400 struct dwarf2_cu *cu);
1401
0018ea6f
DE
1402static struct partial_symtab *create_partial_symtab
1403 (struct dwarf2_per_cu_data *per_cu, const char *name);
1404
c67a9c90 1405static void dwarf2_build_psymtabs_hard (struct objfile *);
c906108c 1406
72bf9492
DJ
1407static void scan_partial_symbols (struct partial_die_info *,
1408 CORE_ADDR *, CORE_ADDR *,
5734ee8b 1409 int, struct dwarf2_cu *);
c906108c 1410
72bf9492
DJ
1411static void add_partial_symbol (struct partial_die_info *,
1412 struct dwarf2_cu *);
63d06c5c 1413
72bf9492
DJ
1414static void add_partial_namespace (struct partial_die_info *pdi,
1415 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 1416 int set_addrmap, struct dwarf2_cu *cu);
63d06c5c 1417
5d7cb8df 1418static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
cdc07690 1419 CORE_ADDR *highpc, int set_addrmap,
5d7cb8df
JK
1420 struct dwarf2_cu *cu);
1421
72bf9492
DJ
1422static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1423 struct dwarf2_cu *cu);
91c24f0a 1424
bc30ff58
JB
1425static void add_partial_subprogram (struct partial_die_info *pdi,
1426 CORE_ADDR *lowpc, CORE_ADDR *highpc,
5734ee8b 1427 int need_pc, struct dwarf2_cu *cu);
bc30ff58 1428
257e7a09
YQ
1429static void dwarf2_read_symtab (struct partial_symtab *,
1430 struct objfile *);
c906108c 1431
a14ed312 1432static void psymtab_to_symtab_1 (struct partial_symtab *);
c906108c 1433
433df2d4
DE
1434static struct abbrev_info *abbrev_table_lookup_abbrev
1435 (const struct abbrev_table *, unsigned int);
1436
1437static struct abbrev_table *abbrev_table_read_table
1438 (struct dwarf2_section_info *, sect_offset);
1439
1440static void abbrev_table_free (struct abbrev_table *);
1441
f4dc4d17
DE
1442static void abbrev_table_free_cleanup (void *);
1443
dee91e82
DE
1444static void dwarf2_read_abbrevs (struct dwarf2_cu *,
1445 struct dwarf2_section_info *);
c906108c 1446
f3dd6933 1447static void dwarf2_free_abbrev_table (void *);
c906108c 1448
d521ce57 1449static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
6caca83c 1450
dee91e82 1451static struct partial_die_info *load_partial_dies
d521ce57 1452 (const struct die_reader_specs *, const gdb_byte *, int);
72bf9492 1453
d521ce57
TT
1454static const gdb_byte *read_partial_die (const struct die_reader_specs *,
1455 struct partial_die_info *,
1456 struct abbrev_info *,
1457 unsigned int,
1458 const gdb_byte *);
c906108c 1459
36586728 1460static struct partial_die_info *find_partial_die (sect_offset, int,
10b3939b 1461 struct dwarf2_cu *);
72bf9492
DJ
1462
1463static void fixup_partial_die (struct partial_die_info *,
1464 struct dwarf2_cu *);
1465
d521ce57
TT
1466static const gdb_byte *read_attribute (const struct die_reader_specs *,
1467 struct attribute *, struct attr_abbrev *,
1468 const gdb_byte *);
a8329558 1469
a1855c1d 1470static unsigned int read_1_byte (bfd *, const gdb_byte *);
c906108c 1471
a1855c1d 1472static int read_1_signed_byte (bfd *, const gdb_byte *);
c906108c 1473
a1855c1d 1474static unsigned int read_2_bytes (bfd *, const gdb_byte *);
c906108c 1475
a1855c1d 1476static unsigned int read_4_bytes (bfd *, const gdb_byte *);
c906108c 1477
a1855c1d 1478static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
c906108c 1479
d521ce57 1480static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
891d2f0b 1481 unsigned int *);
c906108c 1482
d521ce57 1483static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
c764a876
DE
1484
1485static LONGEST read_checked_initial_length_and_offset
d521ce57 1486 (bfd *, const gdb_byte *, const struct comp_unit_head *,
c764a876 1487 unsigned int *, unsigned int *);
613e1657 1488
d521ce57
TT
1489static LONGEST read_offset (bfd *, const gdb_byte *,
1490 const struct comp_unit_head *,
c764a876
DE
1491 unsigned int *);
1492
d521ce57 1493static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
613e1657 1494
f4dc4d17
DE
1495static sect_offset read_abbrev_offset (struct dwarf2_section_info *,
1496 sect_offset);
1497
d521ce57 1498static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
c906108c 1499
d521ce57 1500static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
c906108c 1501
d521ce57
TT
1502static const char *read_indirect_string (bfd *, const gdb_byte *,
1503 const struct comp_unit_head *,
1504 unsigned int *);
4bdf3d34 1505
d521ce57 1506static const char *read_indirect_string_from_dwz (struct dwz_file *, LONGEST);
36586728 1507
d521ce57 1508static ULONGEST read_unsigned_leb128 (bfd *, const gdb_byte *, unsigned int *);
c906108c 1509
d521ce57 1510static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
c906108c 1511
d521ce57
TT
1512static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1513 const gdb_byte *,
3019eac3
DE
1514 unsigned int *);
1515
d521ce57 1516static const char *read_str_index (const struct die_reader_specs *reader,
342587c4 1517 ULONGEST str_index);
3019eac3 1518
e142c38c 1519static void set_cu_language (unsigned int, struct dwarf2_cu *);
c906108c 1520
e142c38c
DJ
1521static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1522 struct dwarf2_cu *);
c906108c 1523
348e048f 1524static struct attribute *dwarf2_attr_no_follow (struct die_info *,
45e58e77 1525 unsigned int);
348e048f 1526
7d45c7c3
KB
1527static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1528 struct dwarf2_cu *cu);
1529
05cf31d1
JB
1530static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1531 struct dwarf2_cu *cu);
1532
e142c38c 1533static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
3ca72b44 1534
e142c38c 1535static struct die_info *die_specification (struct die_info *die,
f2f0e013 1536 struct dwarf2_cu **);
63d06c5c 1537
debd256d
JB
1538static void free_line_header (struct line_header *lh);
1539
3019eac3
DE
1540static struct line_header *dwarf_decode_line_header (unsigned int offset,
1541 struct dwarf2_cu *cu);
debd256d 1542
f3f5162e 1543static void dwarf_decode_lines (struct line_header *, const char *,
c3b7b696 1544 struct dwarf2_cu *, struct partial_symtab *,
527f3840 1545 CORE_ADDR, int decode_mapping);
c906108c 1546
4d663531 1547static void dwarf2_start_subfile (const char *, const char *);
c906108c 1548
43f3e411
DE
1549static struct compunit_symtab *dwarf2_start_symtab (struct dwarf2_cu *,
1550 const char *, const char *,
1551 CORE_ADDR);
f4dc4d17 1552
a14ed312 1553static struct symbol *new_symbol (struct die_info *, struct type *,
e7c27a73 1554 struct dwarf2_cu *);
c906108c 1555
34eaf542
TT
1556static struct symbol *new_symbol_full (struct die_info *, struct type *,
1557 struct dwarf2_cu *, struct symbol *);
1558
ff39bb5e 1559static void dwarf2_const_value (const struct attribute *, struct symbol *,
e7c27a73 1560 struct dwarf2_cu *);
c906108c 1561
ff39bb5e 1562static void dwarf2_const_value_attr (const struct attribute *attr,
98bfdba5
PA
1563 struct type *type,
1564 const char *name,
1565 struct obstack *obstack,
12df843f 1566 struct dwarf2_cu *cu, LONGEST *value,
d521ce57 1567 const gdb_byte **bytes,
98bfdba5 1568 struct dwarf2_locexpr_baton **baton);
2df3850c 1569
e7c27a73 1570static struct type *die_type (struct die_info *, struct dwarf2_cu *);
c906108c 1571
b4ba55a1
JB
1572static int need_gnat_info (struct dwarf2_cu *);
1573
3e43a32a
MS
1574static struct type *die_descriptive_type (struct die_info *,
1575 struct dwarf2_cu *);
b4ba55a1
JB
1576
1577static void set_descriptive_type (struct type *, struct die_info *,
1578 struct dwarf2_cu *);
1579
e7c27a73
DJ
1580static struct type *die_containing_type (struct die_info *,
1581 struct dwarf2_cu *);
c906108c 1582
ff39bb5e 1583static struct type *lookup_die_type (struct die_info *, const struct attribute *,
673bfd45 1584 struct dwarf2_cu *);
c906108c 1585
f792889a 1586static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
c906108c 1587
673bfd45
DE
1588static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1589
0d5cff50 1590static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
63d06c5c 1591
6e70227d 1592static char *typename_concat (struct obstack *obs, const char *prefix,
f55ee35c
JK
1593 const char *suffix, int physname,
1594 struct dwarf2_cu *cu);
63d06c5c 1595
e7c27a73 1596static void read_file_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1597
348e048f
DE
1598static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1599
e7c27a73 1600static void read_func_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1601
e7c27a73 1602static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1603
96408a79
SA
1604static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1605
ff013f42
JK
1606static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1607 struct dwarf2_cu *, struct partial_symtab *);
1608
a14ed312 1609static int dwarf2_get_pc_bounds (struct die_info *,
d85a05f0
DJ
1610 CORE_ADDR *, CORE_ADDR *, struct dwarf2_cu *,
1611 struct partial_symtab *);
c906108c 1612
fae299cd
DC
1613static void get_scope_pc_bounds (struct die_info *,
1614 CORE_ADDR *, CORE_ADDR *,
1615 struct dwarf2_cu *);
1616
801e3a5b
JB
1617static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1618 CORE_ADDR, struct dwarf2_cu *);
1619
a14ed312 1620static void dwarf2_add_field (struct field_info *, struct die_info *,
e7c27a73 1621 struct dwarf2_cu *);
c906108c 1622
a14ed312 1623static void dwarf2_attach_fields_to_type (struct field_info *,
e7c27a73 1624 struct type *, struct dwarf2_cu *);
c906108c 1625
a14ed312 1626static void dwarf2_add_member_fn (struct field_info *,
e26fb1d7 1627 struct die_info *, struct type *,
e7c27a73 1628 struct dwarf2_cu *);
c906108c 1629
a14ed312 1630static void dwarf2_attach_fn_fields_to_type (struct field_info *,
3e43a32a
MS
1631 struct type *,
1632 struct dwarf2_cu *);
c906108c 1633
134d01f1 1634static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1635
e7c27a73 1636static void read_common_block (struct die_info *, struct dwarf2_cu *);
c906108c 1637
e7c27a73 1638static void read_namespace (struct die_info *die, struct dwarf2_cu *);
d9fa45fe 1639
5d7cb8df
JK
1640static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1641
22cee43f
PMR
1642static struct using_direct **using_directives (enum language);
1643
27aa8d6a
SW
1644static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1645
74921315
KS
1646static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1647
f55ee35c
JK
1648static struct type *read_module_type (struct die_info *die,
1649 struct dwarf2_cu *cu);
1650
38d518c9 1651static const char *namespace_name (struct die_info *die,
e142c38c 1652 int *is_anonymous, struct dwarf2_cu *);
38d518c9 1653
134d01f1 1654static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1655
e7c27a73 1656static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
c906108c 1657
6e70227d 1658static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
7ca2d3a3
DL
1659 struct dwarf2_cu *);
1660
bf6af496 1661static struct die_info *read_die_and_siblings_1
d521ce57 1662 (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
bf6af496 1663 struct die_info *);
639d11d3 1664
dee91e82 1665static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
d521ce57
TT
1666 const gdb_byte *info_ptr,
1667 const gdb_byte **new_info_ptr,
639d11d3
DC
1668 struct die_info *parent);
1669
d521ce57
TT
1670static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1671 struct die_info **, const gdb_byte *,
1672 int *, int);
3019eac3 1673
d521ce57
TT
1674static const gdb_byte *read_full_die (const struct die_reader_specs *,
1675 struct die_info **, const gdb_byte *,
1676 int *);
93311388 1677
e7c27a73 1678static void process_die (struct die_info *, struct dwarf2_cu *);
c906108c 1679
15d034d0
TT
1680static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1681 struct obstack *);
71c25dea 1682
15d034d0 1683static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
9219021c 1684
15d034d0 1685static const char *dwarf2_full_name (const char *name,
98bfdba5
PA
1686 struct die_info *die,
1687 struct dwarf2_cu *cu);
1688
ca69b9e6
DE
1689static const char *dwarf2_physname (const char *name, struct die_info *die,
1690 struct dwarf2_cu *cu);
1691
e142c38c 1692static struct die_info *dwarf2_extension (struct die_info *die,
f2f0e013 1693 struct dwarf2_cu **);
9219021c 1694
f39c6ffd 1695static const char *dwarf_tag_name (unsigned int);
c906108c 1696
f39c6ffd 1697static const char *dwarf_attr_name (unsigned int);
c906108c 1698
f39c6ffd 1699static const char *dwarf_form_name (unsigned int);
c906108c 1700
a14ed312 1701static char *dwarf_bool_name (unsigned int);
c906108c 1702
f39c6ffd 1703static const char *dwarf_type_encoding_name (unsigned int);
c906108c 1704
f9aca02d 1705static struct die_info *sibling_die (struct die_info *);
c906108c 1706
d97bc12b
DE
1707static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1708
1709static void dump_die_for_error (struct die_info *);
1710
1711static void dump_die_1 (struct ui_file *, int level, int max_level,
1712 struct die_info *);
c906108c 1713
d97bc12b 1714/*static*/ void dump_die (struct die_info *, int max_level);
c906108c 1715
51545339 1716static void store_in_ref_table (struct die_info *,
10b3939b 1717 struct dwarf2_cu *);
c906108c 1718
ff39bb5e 1719static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
c906108c 1720
ff39bb5e 1721static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
a02abb62 1722
348e048f 1723static struct die_info *follow_die_ref_or_sig (struct die_info *,
ff39bb5e 1724 const struct attribute *,
348e048f
DE
1725 struct dwarf2_cu **);
1726
10b3939b 1727static struct die_info *follow_die_ref (struct die_info *,
ff39bb5e 1728 const struct attribute *,
f2f0e013 1729 struct dwarf2_cu **);
c906108c 1730
348e048f 1731static struct die_info *follow_die_sig (struct die_info *,
ff39bb5e 1732 const struct attribute *,
348e048f
DE
1733 struct dwarf2_cu **);
1734
ac9ec31b
DE
1735static struct type *get_signatured_type (struct die_info *, ULONGEST,
1736 struct dwarf2_cu *);
1737
1738static struct type *get_DW_AT_signature_type (struct die_info *,
ff39bb5e 1739 const struct attribute *,
ac9ec31b
DE
1740 struct dwarf2_cu *);
1741
e5fe5e75 1742static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
348e048f 1743
52dc124a 1744static void read_signatured_type (struct signatured_type *);
348e048f 1745
63e43d3a
PMR
1746static int attr_to_dynamic_prop (const struct attribute *attr,
1747 struct die_info *die, struct dwarf2_cu *cu,
1748 struct dynamic_prop *prop);
1749
c906108c
SS
1750/* memory allocation interface */
1751
7b5a2f43 1752static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
c906108c 1753
b60c80d6 1754static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
c906108c 1755
43f3e411 1756static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
2e276125 1757
6e5a29e1 1758static int attr_form_is_block (const struct attribute *);
8e19ed76 1759
6e5a29e1 1760static int attr_form_is_section_offset (const struct attribute *);
3690dd37 1761
6e5a29e1 1762static int attr_form_is_constant (const struct attribute *);
3690dd37 1763
6e5a29e1 1764static int attr_form_is_ref (const struct attribute *);
7771576e 1765
8cf6f0b1
TT
1766static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1767 struct dwarf2_loclist_baton *baton,
ff39bb5e 1768 const struct attribute *attr);
8cf6f0b1 1769
ff39bb5e 1770static void dwarf2_symbol_mark_computed (const struct attribute *attr,
93e7bd98 1771 struct symbol *sym,
f1e6e072
TT
1772 struct dwarf2_cu *cu,
1773 int is_block);
4c2df51b 1774
d521ce57
TT
1775static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1776 const gdb_byte *info_ptr,
1777 struct abbrev_info *abbrev);
4bb7a0a7 1778
72bf9492
DJ
1779static void free_stack_comp_unit (void *);
1780
72bf9492
DJ
1781static hashval_t partial_die_hash (const void *item);
1782
1783static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1784
ae038cb0 1785static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
36586728 1786 (sect_offset offset, unsigned int offset_in_dwz, struct objfile *objfile);
ae038cb0 1787
9816fde3 1788static void init_one_comp_unit (struct dwarf2_cu *cu,
23745b47 1789 struct dwarf2_per_cu_data *per_cu);
9816fde3
JK
1790
1791static void prepare_one_comp_unit (struct dwarf2_cu *cu,
95554aad
TT
1792 struct die_info *comp_unit_die,
1793 enum language pretend_language);
93311388 1794
68dc6402 1795static void free_heap_comp_unit (void *);
ae038cb0
DJ
1796
1797static void free_cached_comp_units (void *);
1798
1799static void age_cached_comp_units (void);
1800
dee91e82 1801static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
ae038cb0 1802
f792889a
DJ
1803static struct type *set_die_type (struct die_info *, struct type *,
1804 struct dwarf2_cu *);
1c379e20 1805
ae038cb0
DJ
1806static void create_all_comp_units (struct objfile *);
1807
0e50663e 1808static int create_all_type_units (struct objfile *);
1fd400ff 1809
95554aad
TT
1810static void load_full_comp_unit (struct dwarf2_per_cu_data *,
1811 enum language);
10b3939b 1812
95554aad
TT
1813static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1814 enum language);
10b3939b 1815
f4dc4d17
DE
1816static void process_full_type_unit (struct dwarf2_per_cu_data *,
1817 enum language);
1818
10b3939b
DJ
1819static void dwarf2_add_dependence (struct dwarf2_cu *,
1820 struct dwarf2_per_cu_data *);
1821
ae038cb0
DJ
1822static void dwarf2_mark (struct dwarf2_cu *);
1823
1824static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1825
b64f50a1 1826static struct type *get_die_type_at_offset (sect_offset,
ac9ec31b 1827 struct dwarf2_per_cu_data *);
673bfd45 1828
f792889a 1829static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
72019c9c 1830
9291a0cd
TT
1831static void dwarf2_release_queue (void *dummy);
1832
95554aad
TT
1833static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1834 enum language pretend_language);
1835
a0f42c21 1836static void process_queue (void);
9291a0cd
TT
1837
1838static void find_file_and_directory (struct die_info *die,
1839 struct dwarf2_cu *cu,
15d034d0 1840 const char **name, const char **comp_dir);
9291a0cd
TT
1841
1842static char *file_full_name (int file, struct line_header *lh,
1843 const char *comp_dir);
1844
d521ce57 1845static const gdb_byte *read_and_check_comp_unit_head
36586728
TT
1846 (struct comp_unit_head *header,
1847 struct dwarf2_section_info *section,
d521ce57 1848 struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
36586728
TT
1849 int is_debug_types_section);
1850
fd820528 1851static void init_cutu_and_read_dies
f4dc4d17
DE
1852 (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1853 int use_existing_cu, int keep,
3019eac3
DE
1854 die_reader_func_ftype *die_reader_func, void *data);
1855
dee91e82
DE
1856static void init_cutu_and_read_dies_simple
1857 (struct dwarf2_per_cu_data *this_cu,
1858 die_reader_func_ftype *die_reader_func, void *data);
9291a0cd 1859
673bfd45 1860static htab_t allocate_signatured_type_table (struct objfile *objfile);
1fd400ff 1861
3019eac3
DE
1862static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1863
57d63ce2
DE
1864static struct dwo_unit *lookup_dwo_unit_in_dwp
1865 (struct dwp_file *dwp_file, const char *comp_dir,
1866 ULONGEST signature, int is_debug_types);
a2ce51a0
DE
1867
1868static struct dwp_file *get_dwp_file (void);
1869
3019eac3 1870static struct dwo_unit *lookup_dwo_comp_unit
a1855c1d 1871 (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
3019eac3
DE
1872
1873static struct dwo_unit *lookup_dwo_type_unit
a1855c1d 1874 (struct signatured_type *, const char *, const char *);
3019eac3 1875
89e63ee4
DE
1876static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1877
3019eac3
DE
1878static void free_dwo_file_cleanup (void *);
1879
95554aad
TT
1880static void process_cu_includes (void);
1881
1b80a9fa 1882static void check_producer (struct dwarf2_cu *cu);
527f3840
JK
1883
1884static void free_line_header_voidp (void *arg);
4390d890
DE
1885\f
1886/* Various complaints about symbol reading that don't abort the process. */
1887
1888static void
1889dwarf2_statement_list_fits_in_line_number_section_complaint (void)
1890{
1891 complaint (&symfile_complaints,
1892 _("statement list doesn't fit in .debug_line section"));
1893}
1894
1895static void
1896dwarf2_debug_line_missing_file_complaint (void)
1897{
1898 complaint (&symfile_complaints,
1899 _(".debug_line section has line data without a file"));
1900}
1901
1902static void
1903dwarf2_debug_line_missing_end_sequence_complaint (void)
1904{
1905 complaint (&symfile_complaints,
1906 _(".debug_line section has line "
1907 "program sequence without an end"));
1908}
1909
1910static void
1911dwarf2_complex_location_expr_complaint (void)
1912{
1913 complaint (&symfile_complaints, _("location expression too complex"));
1914}
1915
1916static void
1917dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
1918 int arg3)
1919{
1920 complaint (&symfile_complaints,
1921 _("const value length mismatch for '%s', got %d, expected %d"),
1922 arg1, arg2, arg3);
1923}
1924
1925static void
1926dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
1927{
1928 complaint (&symfile_complaints,
1929 _("debug info runs off end of %s section"
1930 " [in module %s]"),
a32a8923
DE
1931 get_section_name (section),
1932 get_section_file_name (section));
4390d890 1933}
1b80a9fa 1934
4390d890
DE
1935static void
1936dwarf2_macro_malformed_definition_complaint (const char *arg1)
1937{
1938 complaint (&symfile_complaints,
1939 _("macro debug info contains a "
1940 "malformed macro definition:\n`%s'"),
1941 arg1);
1942}
1943
1944static void
1945dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
1946{
1947 complaint (&symfile_complaints,
1948 _("invalid attribute class or form for '%s' in '%s'"),
1949 arg1, arg2);
1950}
527f3840
JK
1951
1952/* Hash function for line_header_hash. */
1953
1954static hashval_t
1955line_header_hash (const struct line_header *ofs)
1956{
1957 return ofs->offset.sect_off ^ ofs->offset_in_dwz;
1958}
1959
1960/* Hash function for htab_create_alloc_ex for line_header_hash. */
1961
1962static hashval_t
1963line_header_hash_voidp (const void *item)
1964{
1965 const struct line_header *ofs = item;
1966
1967 return line_header_hash (ofs);
1968}
1969
1970/* Equality function for line_header_hash. */
1971
1972static int
1973line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
1974{
1975 const struct line_header *ofs_lhs = item_lhs;
1976 const struct line_header *ofs_rhs = item_rhs;
1977
1978 return (ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off
1979 && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
1980}
1981
4390d890 1982\f
9291a0cd
TT
1983#if WORDS_BIGENDIAN
1984
1985/* Convert VALUE between big- and little-endian. */
1986static offset_type
1987byte_swap (offset_type value)
1988{
1989 offset_type result;
1990
1991 result = (value & 0xff) << 24;
1992 result |= (value & 0xff00) << 8;
1993 result |= (value & 0xff0000) >> 8;
1994 result |= (value & 0xff000000) >> 24;
1995 return result;
1996}
1997
1998#define MAYBE_SWAP(V) byte_swap (V)
1999
2000#else
2001#define MAYBE_SWAP(V) (V)
2002#endif /* WORDS_BIGENDIAN */
2003
31aa7e4e
JB
2004/* Read the given attribute value as an address, taking the attribute's
2005 form into account. */
2006
2007static CORE_ADDR
2008attr_value_as_address (struct attribute *attr)
2009{
2010 CORE_ADDR addr;
2011
2012 if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
2013 {
2014 /* Aside from a few clearly defined exceptions, attributes that
2015 contain an address must always be in DW_FORM_addr form.
2016 Unfortunately, some compilers happen to be violating this
2017 requirement by encoding addresses using other forms, such
2018 as DW_FORM_data4 for example. For those broken compilers,
2019 we try to do our best, without any guarantee of success,
2020 to interpret the address correctly. It would also be nice
2021 to generate a complaint, but that would require us to maintain
2022 a list of legitimate cases where a non-address form is allowed,
2023 as well as update callers to pass in at least the CU's DWARF
2024 version. This is more overhead than what we're willing to
2025 expand for a pretty rare case. */
2026 addr = DW_UNSND (attr);
2027 }
2028 else
2029 addr = DW_ADDR (attr);
2030
2031 return addr;
2032}
2033
9291a0cd
TT
2034/* The suffix for an index file. */
2035#define INDEX_SUFFIX ".gdb-index"
2036
c906108c 2037/* Try to locate the sections we need for DWARF 2 debugging
251d32d9
TG
2038 information and return true if we have enough to do something.
2039 NAMES points to the dwarf2 section names, or is NULL if the standard
2040 ELF names are used. */
c906108c
SS
2041
2042int
251d32d9
TG
2043dwarf2_has_info (struct objfile *objfile,
2044 const struct dwarf2_debug_sections *names)
c906108c 2045{
be391dca
TT
2046 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
2047 if (!dwarf2_per_objfile)
2048 {
2049 /* Initialize per-objfile state. */
2050 struct dwarf2_per_objfile *data
2051 = obstack_alloc (&objfile->objfile_obstack, sizeof (*data));
9a619af0 2052
be391dca
TT
2053 memset (data, 0, sizeof (*data));
2054 set_objfile_data (objfile, dwarf2_objfile_data_key, data);
2055 dwarf2_per_objfile = data;
6502dd73 2056
251d32d9
TG
2057 bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections,
2058 (void *) names);
be391dca
TT
2059 dwarf2_per_objfile->objfile = objfile;
2060 }
73869dc2 2061 return (!dwarf2_per_objfile->info.is_virtual
049412e3 2062 && dwarf2_per_objfile->info.s.section != NULL
73869dc2 2063 && !dwarf2_per_objfile->abbrev.is_virtual
049412e3 2064 && dwarf2_per_objfile->abbrev.s.section != NULL);
73869dc2
DE
2065}
2066
2067/* Return the containing section of virtual section SECTION. */
2068
2069static struct dwarf2_section_info *
2070get_containing_section (const struct dwarf2_section_info *section)
2071{
2072 gdb_assert (section->is_virtual);
2073 return section->s.containing_section;
c906108c
SS
2074}
2075
a32a8923
DE
2076/* Return the bfd owner of SECTION. */
2077
2078static struct bfd *
2079get_section_bfd_owner (const struct dwarf2_section_info *section)
2080{
73869dc2
DE
2081 if (section->is_virtual)
2082 {
2083 section = get_containing_section (section);
2084 gdb_assert (!section->is_virtual);
2085 }
049412e3 2086 return section->s.section->owner;
a32a8923
DE
2087}
2088
2089/* Return the bfd section of SECTION.
2090 Returns NULL if the section is not present. */
2091
2092static asection *
2093get_section_bfd_section (const struct dwarf2_section_info *section)
2094{
73869dc2
DE
2095 if (section->is_virtual)
2096 {
2097 section = get_containing_section (section);
2098 gdb_assert (!section->is_virtual);
2099 }
049412e3 2100 return section->s.section;
a32a8923
DE
2101}
2102
2103/* Return the name of SECTION. */
2104
2105static const char *
2106get_section_name (const struct dwarf2_section_info *section)
2107{
2108 asection *sectp = get_section_bfd_section (section);
2109
2110 gdb_assert (sectp != NULL);
2111 return bfd_section_name (get_section_bfd_owner (section), sectp);
2112}
2113
2114/* Return the name of the file SECTION is in. */
2115
2116static const char *
2117get_section_file_name (const struct dwarf2_section_info *section)
2118{
2119 bfd *abfd = get_section_bfd_owner (section);
2120
2121 return bfd_get_filename (abfd);
2122}
2123
2124/* Return the id of SECTION.
2125 Returns 0 if SECTION doesn't exist. */
2126
2127static int
2128get_section_id (const struct dwarf2_section_info *section)
2129{
2130 asection *sectp = get_section_bfd_section (section);
2131
2132 if (sectp == NULL)
2133 return 0;
2134 return sectp->id;
2135}
2136
2137/* Return the flags of SECTION.
73869dc2 2138 SECTION (or containing section if this is a virtual section) must exist. */
a32a8923
DE
2139
2140static int
2141get_section_flags (const struct dwarf2_section_info *section)
2142{
2143 asection *sectp = get_section_bfd_section (section);
2144
2145 gdb_assert (sectp != NULL);
2146 return bfd_get_section_flags (sectp->owner, sectp);
2147}
2148
251d32d9
TG
2149/* When loading sections, we look either for uncompressed section or for
2150 compressed section names. */
233a11ab
CS
2151
2152static int
251d32d9
TG
2153section_is_p (const char *section_name,
2154 const struct dwarf2_section_names *names)
233a11ab 2155{
251d32d9
TG
2156 if (names->normal != NULL
2157 && strcmp (section_name, names->normal) == 0)
2158 return 1;
2159 if (names->compressed != NULL
2160 && strcmp (section_name, names->compressed) == 0)
2161 return 1;
2162 return 0;
233a11ab
CS
2163}
2164
c906108c
SS
2165/* This function is mapped across the sections and remembers the
2166 offset and size of each of the debugging sections we are interested
2167 in. */
2168
2169static void
251d32d9 2170dwarf2_locate_sections (bfd *abfd, asection *sectp, void *vnames)
c906108c 2171{
251d32d9 2172 const struct dwarf2_debug_sections *names;
dc7650b8 2173 flagword aflag = bfd_get_section_flags (abfd, sectp);
251d32d9
TG
2174
2175 if (vnames == NULL)
2176 names = &dwarf2_elf_names;
2177 else
2178 names = (const struct dwarf2_debug_sections *) vnames;
2179
dc7650b8
JK
2180 if ((aflag & SEC_HAS_CONTENTS) == 0)
2181 {
2182 }
2183 else if (section_is_p (sectp->name, &names->info))
c906108c 2184 {
049412e3 2185 dwarf2_per_objfile->info.s.section = sectp;
dce234bc 2186 dwarf2_per_objfile->info.size = bfd_get_section_size (sectp);
c906108c 2187 }
251d32d9 2188 else if (section_is_p (sectp->name, &names->abbrev))
c906108c 2189 {
049412e3 2190 dwarf2_per_objfile->abbrev.s.section = sectp;
dce234bc 2191 dwarf2_per_objfile->abbrev.size = bfd_get_section_size (sectp);
c906108c 2192 }
251d32d9 2193 else if (section_is_p (sectp->name, &names->line))
c906108c 2194 {
049412e3 2195 dwarf2_per_objfile->line.s.section = sectp;
dce234bc 2196 dwarf2_per_objfile->line.size = bfd_get_section_size (sectp);
c906108c 2197 }
251d32d9 2198 else if (section_is_p (sectp->name, &names->loc))
c906108c 2199 {
049412e3 2200 dwarf2_per_objfile->loc.s.section = sectp;
dce234bc 2201 dwarf2_per_objfile->loc.size = bfd_get_section_size (sectp);
c906108c 2202 }
251d32d9 2203 else if (section_is_p (sectp->name, &names->macinfo))
c906108c 2204 {
049412e3 2205 dwarf2_per_objfile->macinfo.s.section = sectp;
dce234bc 2206 dwarf2_per_objfile->macinfo.size = bfd_get_section_size (sectp);
c906108c 2207 }
cf2c3c16
TT
2208 else if (section_is_p (sectp->name, &names->macro))
2209 {
049412e3 2210 dwarf2_per_objfile->macro.s.section = sectp;
cf2c3c16
TT
2211 dwarf2_per_objfile->macro.size = bfd_get_section_size (sectp);
2212 }
251d32d9 2213 else if (section_is_p (sectp->name, &names->str))
c906108c 2214 {
049412e3 2215 dwarf2_per_objfile->str.s.section = sectp;
dce234bc 2216 dwarf2_per_objfile->str.size = bfd_get_section_size (sectp);
c906108c 2217 }
3019eac3
DE
2218 else if (section_is_p (sectp->name, &names->addr))
2219 {
049412e3 2220 dwarf2_per_objfile->addr.s.section = sectp;
3019eac3
DE
2221 dwarf2_per_objfile->addr.size = bfd_get_section_size (sectp);
2222 }
251d32d9 2223 else if (section_is_p (sectp->name, &names->frame))
b6af0555 2224 {
049412e3 2225 dwarf2_per_objfile->frame.s.section = sectp;
dce234bc 2226 dwarf2_per_objfile->frame.size = bfd_get_section_size (sectp);
b6af0555 2227 }
251d32d9 2228 else if (section_is_p (sectp->name, &names->eh_frame))
b6af0555 2229 {
049412e3 2230 dwarf2_per_objfile->eh_frame.s.section = sectp;
dc7650b8 2231 dwarf2_per_objfile->eh_frame.size = bfd_get_section_size (sectp);
b6af0555 2232 }
251d32d9 2233 else if (section_is_p (sectp->name, &names->ranges))
af34e669 2234 {
049412e3 2235 dwarf2_per_objfile->ranges.s.section = sectp;
dce234bc 2236 dwarf2_per_objfile->ranges.size = bfd_get_section_size (sectp);
af34e669 2237 }
251d32d9 2238 else if (section_is_p (sectp->name, &names->types))
348e048f 2239 {
8b70b953
TT
2240 struct dwarf2_section_info type_section;
2241
2242 memset (&type_section, 0, sizeof (type_section));
049412e3 2243 type_section.s.section = sectp;
8b70b953
TT
2244 type_section.size = bfd_get_section_size (sectp);
2245
2246 VEC_safe_push (dwarf2_section_info_def, dwarf2_per_objfile->types,
2247 &type_section);
348e048f 2248 }
251d32d9 2249 else if (section_is_p (sectp->name, &names->gdb_index))
9291a0cd 2250 {
049412e3 2251 dwarf2_per_objfile->gdb_index.s.section = sectp;
9291a0cd
TT
2252 dwarf2_per_objfile->gdb_index.size = bfd_get_section_size (sectp);
2253 }
dce234bc 2254
b4e1fd61 2255 if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
72dca2f5
FR
2256 && bfd_section_vma (abfd, sectp) == 0)
2257 dwarf2_per_objfile->has_section_at_zero = 1;
c906108c
SS
2258}
2259
fceca515
DE
2260/* A helper function that decides whether a section is empty,
2261 or not present. */
9e0ac564
TT
2262
2263static int
19ac8c2e 2264dwarf2_section_empty_p (const struct dwarf2_section_info *section)
9e0ac564 2265{
73869dc2
DE
2266 if (section->is_virtual)
2267 return section->size == 0;
049412e3 2268 return section->s.section == NULL || section->size == 0;
9e0ac564
TT
2269}
2270
3019eac3
DE
2271/* Read the contents of the section INFO.
2272 OBJFILE is the main object file, but not necessarily the file where
a32a8923
DE
2273 the section comes from. E.g., for DWO files the bfd of INFO is the bfd
2274 of the DWO file.
dce234bc 2275 If the section is compressed, uncompress it before returning. */
c906108c 2276
dce234bc
PP
2277static void
2278dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info)
c906108c 2279{
a32a8923 2280 asection *sectp;
3019eac3 2281 bfd *abfd;
dce234bc 2282 gdb_byte *buf, *retbuf;
c906108c 2283
be391dca
TT
2284 if (info->readin)
2285 return;
dce234bc 2286 info->buffer = NULL;
be391dca 2287 info->readin = 1;
188dd5d6 2288
9e0ac564 2289 if (dwarf2_section_empty_p (info))
dce234bc 2290 return;
c906108c 2291
a32a8923 2292 sectp = get_section_bfd_section (info);
3019eac3 2293
73869dc2
DE
2294 /* If this is a virtual section we need to read in the real one first. */
2295 if (info->is_virtual)
2296 {
2297 struct dwarf2_section_info *containing_section =
2298 get_containing_section (info);
2299
2300 gdb_assert (sectp != NULL);
2301 if ((sectp->flags & SEC_RELOC) != 0)
2302 {
2303 error (_("Dwarf Error: DWP format V2 with relocations is not"
2304 " supported in section %s [in module %s]"),
2305 get_section_name (info), get_section_file_name (info));
2306 }
2307 dwarf2_read_section (objfile, containing_section);
2308 /* Other code should have already caught virtual sections that don't
2309 fit. */
2310 gdb_assert (info->virtual_offset + info->size
2311 <= containing_section->size);
2312 /* If the real section is empty or there was a problem reading the
2313 section we shouldn't get here. */
2314 gdb_assert (containing_section->buffer != NULL);
2315 info->buffer = containing_section->buffer + info->virtual_offset;
2316 return;
2317 }
2318
4bf44c1c
TT
2319 /* If the section has relocations, we must read it ourselves.
2320 Otherwise we attach it to the BFD. */
2321 if ((sectp->flags & SEC_RELOC) == 0)
dce234bc 2322 {
d521ce57 2323 info->buffer = gdb_bfd_map_section (sectp, &info->size);
4bf44c1c 2324 return;
dce234bc 2325 }
dce234bc 2326
4bf44c1c
TT
2327 buf = obstack_alloc (&objfile->objfile_obstack, info->size);
2328 info->buffer = buf;
dce234bc
PP
2329
2330 /* When debugging .o files, we may need to apply relocations; see
2331 http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2332 We never compress sections in .o files, so we only need to
2333 try this when the section is not compressed. */
ac8035ab 2334 retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
dce234bc
PP
2335 if (retbuf != NULL)
2336 {
2337 info->buffer = retbuf;
2338 return;
2339 }
2340
a32a8923
DE
2341 abfd = get_section_bfd_owner (info);
2342 gdb_assert (abfd != NULL);
2343
dce234bc
PP
2344 if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2345 || bfd_bread (buf, info->size, abfd) != info->size)
19ac8c2e
DE
2346 {
2347 error (_("Dwarf Error: Can't read DWARF data"
2348 " in section %s [in module %s]"),
2349 bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2350 }
dce234bc
PP
2351}
2352
9e0ac564
TT
2353/* A helper function that returns the size of a section in a safe way.
2354 If you are positive that the section has been read before using the
2355 size, then it is safe to refer to the dwarf2_section_info object's
2356 "size" field directly. In other cases, you must call this
2357 function, because for compressed sections the size field is not set
2358 correctly until the section has been read. */
2359
2360static bfd_size_type
2361dwarf2_section_size (struct objfile *objfile,
2362 struct dwarf2_section_info *info)
2363{
2364 if (!info->readin)
2365 dwarf2_read_section (objfile, info);
2366 return info->size;
2367}
2368
dce234bc 2369/* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
0963b4bd 2370 SECTION_NAME. */
af34e669 2371
dce234bc 2372void
3017a003
TG
2373dwarf2_get_section_info (struct objfile *objfile,
2374 enum dwarf2_section_enum sect,
d521ce57 2375 asection **sectp, const gdb_byte **bufp,
dce234bc
PP
2376 bfd_size_type *sizep)
2377{
2378 struct dwarf2_per_objfile *data
2379 = objfile_data (objfile, dwarf2_objfile_data_key);
2380 struct dwarf2_section_info *info;
a3b2a86b
TT
2381
2382 /* We may see an objfile without any DWARF, in which case we just
2383 return nothing. */
2384 if (data == NULL)
2385 {
2386 *sectp = NULL;
2387 *bufp = NULL;
2388 *sizep = 0;
2389 return;
2390 }
3017a003
TG
2391 switch (sect)
2392 {
2393 case DWARF2_DEBUG_FRAME:
2394 info = &data->frame;
2395 break;
2396 case DWARF2_EH_FRAME:
2397 info = &data->eh_frame;
2398 break;
2399 default:
2400 gdb_assert_not_reached ("unexpected section");
2401 }
dce234bc 2402
9e0ac564 2403 dwarf2_read_section (objfile, info);
dce234bc 2404
a32a8923 2405 *sectp = get_section_bfd_section (info);
dce234bc
PP
2406 *bufp = info->buffer;
2407 *sizep = info->size;
2408}
2409
36586728
TT
2410/* A helper function to find the sections for a .dwz file. */
2411
2412static void
2413locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2414{
2415 struct dwz_file *dwz_file = arg;
2416
2417 /* Note that we only support the standard ELF names, because .dwz
2418 is ELF-only (at the time of writing). */
2419 if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2420 {
049412e3 2421 dwz_file->abbrev.s.section = sectp;
36586728
TT
2422 dwz_file->abbrev.size = bfd_get_section_size (sectp);
2423 }
2424 else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2425 {
049412e3 2426 dwz_file->info.s.section = sectp;
36586728
TT
2427 dwz_file->info.size = bfd_get_section_size (sectp);
2428 }
2429 else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2430 {
049412e3 2431 dwz_file->str.s.section = sectp;
36586728
TT
2432 dwz_file->str.size = bfd_get_section_size (sectp);
2433 }
2434 else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2435 {
049412e3 2436 dwz_file->line.s.section = sectp;
36586728
TT
2437 dwz_file->line.size = bfd_get_section_size (sectp);
2438 }
2439 else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2440 {
049412e3 2441 dwz_file->macro.s.section = sectp;
36586728
TT
2442 dwz_file->macro.size = bfd_get_section_size (sectp);
2443 }
2ec9a5e0
TT
2444 else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2445 {
049412e3 2446 dwz_file->gdb_index.s.section = sectp;
2ec9a5e0
TT
2447 dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2448 }
36586728
TT
2449}
2450
4db1a1dc
TT
2451/* Open the separate '.dwz' debug file, if needed. Return NULL if
2452 there is no .gnu_debugaltlink section in the file. Error if there
2453 is such a section but the file cannot be found. */
36586728
TT
2454
2455static struct dwz_file *
2456dwarf2_get_dwz_file (void)
2457{
4db1a1dc
TT
2458 bfd *dwz_bfd;
2459 char *data;
36586728
TT
2460 struct cleanup *cleanup;
2461 const char *filename;
2462 struct dwz_file *result;
acd13123 2463 bfd_size_type buildid_len_arg;
dc294be5
TT
2464 size_t buildid_len;
2465 bfd_byte *buildid;
36586728
TT
2466
2467 if (dwarf2_per_objfile->dwz_file != NULL)
2468 return dwarf2_per_objfile->dwz_file;
2469
4db1a1dc
TT
2470 bfd_set_error (bfd_error_no_error);
2471 data = bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
acd13123 2472 &buildid_len_arg, &buildid);
4db1a1dc
TT
2473 if (data == NULL)
2474 {
2475 if (bfd_get_error () == bfd_error_no_error)
2476 return NULL;
2477 error (_("could not read '.gnu_debugaltlink' section: %s"),
2478 bfd_errmsg (bfd_get_error ()));
2479 }
36586728 2480 cleanup = make_cleanup (xfree, data);
dc294be5 2481 make_cleanup (xfree, buildid);
36586728 2482
acd13123
TT
2483 buildid_len = (size_t) buildid_len_arg;
2484
f9d83a0b 2485 filename = (const char *) data;
36586728
TT
2486 if (!IS_ABSOLUTE_PATH (filename))
2487 {
4262abfb 2488 char *abs = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
36586728
TT
2489 char *rel;
2490
2491 make_cleanup (xfree, abs);
2492 abs = ldirname (abs);
2493 make_cleanup (xfree, abs);
2494
2495 rel = concat (abs, SLASH_STRING, filename, (char *) NULL);
2496 make_cleanup (xfree, rel);
2497 filename = rel;
2498 }
2499
dc294be5
TT
2500 /* First try the file name given in the section. If that doesn't
2501 work, try to use the build-id instead. */
36586728 2502 dwz_bfd = gdb_bfd_open (filename, gnutarget, -1);
dc294be5 2503 if (dwz_bfd != NULL)
36586728 2504 {
dc294be5
TT
2505 if (!build_id_verify (dwz_bfd, buildid_len, buildid))
2506 {
2507 gdb_bfd_unref (dwz_bfd);
2508 dwz_bfd = NULL;
2509 }
36586728
TT
2510 }
2511
dc294be5
TT
2512 if (dwz_bfd == NULL)
2513 dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2514
2515 if (dwz_bfd == NULL)
2516 error (_("could not find '.gnu_debugaltlink' file for %s"),
2517 objfile_name (dwarf2_per_objfile->objfile));
2518
36586728
TT
2519 result = OBSTACK_ZALLOC (&dwarf2_per_objfile->objfile->objfile_obstack,
2520 struct dwz_file);
2521 result->dwz_bfd = dwz_bfd;
2522
2523 bfd_map_over_sections (dwz_bfd, locate_dwz_sections, result);
2524
2525 do_cleanups (cleanup);
2526
13aaf454 2527 gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, dwz_bfd);
8d2cc612 2528 dwarf2_per_objfile->dwz_file = result;
36586728
TT
2529 return result;
2530}
9291a0cd 2531\f
7b9f3c50
DE
2532/* DWARF quick_symbols_functions support. */
2533
2534/* TUs can share .debug_line entries, and there can be a lot more TUs than
2535 unique line tables, so we maintain a separate table of all .debug_line
2536 derived entries to support the sharing.
2537 All the quick functions need is the list of file names. We discard the
2538 line_header when we're done and don't need to record it here. */
2539struct quick_file_names
2540{
094b34ac
DE
2541 /* The data used to construct the hash key. */
2542 struct stmt_list_hash hash;
7b9f3c50
DE
2543
2544 /* The number of entries in file_names, real_names. */
2545 unsigned int num_file_names;
2546
2547 /* The file names from the line table, after being run through
2548 file_full_name. */
2549 const char **file_names;
2550
2551 /* The file names from the line table after being run through
2552 gdb_realpath. These are computed lazily. */
2553 const char **real_names;
2554};
2555
2556/* When using the index (and thus not using psymtabs), each CU has an
2557 object of this type. This is used to hold information needed by
2558 the various "quick" methods. */
2559struct dwarf2_per_cu_quick_data
2560{
2561 /* The file table. This can be NULL if there was no file table
2562 or it's currently not read in.
2563 NOTE: This points into dwarf2_per_objfile->quick_file_names_table. */
2564 struct quick_file_names *file_names;
2565
2566 /* The corresponding symbol table. This is NULL if symbols for this
2567 CU have not yet been read. */
43f3e411 2568 struct compunit_symtab *compunit_symtab;
7b9f3c50
DE
2569
2570 /* A temporary mark bit used when iterating over all CUs in
2571 expand_symtabs_matching. */
2572 unsigned int mark : 1;
2573
2574 /* True if we've tried to read the file table and found there isn't one.
2575 There will be no point in trying to read it again next time. */
2576 unsigned int no_file_data : 1;
2577};
2578
094b34ac
DE
2579/* Utility hash function for a stmt_list_hash. */
2580
2581static hashval_t
2582hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2583{
2584 hashval_t v = 0;
2585
2586 if (stmt_list_hash->dwo_unit != NULL)
2587 v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2588 v += stmt_list_hash->line_offset.sect_off;
2589 return v;
2590}
2591
2592/* Utility equality function for a stmt_list_hash. */
2593
2594static int
2595eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2596 const struct stmt_list_hash *rhs)
2597{
2598 if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2599 return 0;
2600 if (lhs->dwo_unit != NULL
2601 && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2602 return 0;
2603
2604 return lhs->line_offset.sect_off == rhs->line_offset.sect_off;
2605}
2606
7b9f3c50
DE
2607/* Hash function for a quick_file_names. */
2608
2609static hashval_t
2610hash_file_name_entry (const void *e)
2611{
2612 const struct quick_file_names *file_data = e;
2613
094b34ac 2614 return hash_stmt_list_entry (&file_data->hash);
7b9f3c50
DE
2615}
2616
2617/* Equality function for a quick_file_names. */
2618
2619static int
2620eq_file_name_entry (const void *a, const void *b)
2621{
2622 const struct quick_file_names *ea = a;
2623 const struct quick_file_names *eb = b;
2624
094b34ac 2625 return eq_stmt_list_entry (&ea->hash, &eb->hash);
7b9f3c50
DE
2626}
2627
2628/* Delete function for a quick_file_names. */
2629
2630static void
2631delete_file_name_entry (void *e)
2632{
2633 struct quick_file_names *file_data = e;
2634 int i;
2635
2636 for (i = 0; i < file_data->num_file_names; ++i)
2637 {
2638 xfree ((void*) file_data->file_names[i]);
2639 if (file_data->real_names)
2640 xfree ((void*) file_data->real_names[i]);
2641 }
2642
2643 /* The space for the struct itself lives on objfile_obstack,
2644 so we don't free it here. */
2645}
2646
2647/* Create a quick_file_names hash table. */
2648
2649static htab_t
2650create_quick_file_names_table (unsigned int nr_initial_entries)
2651{
2652 return htab_create_alloc (nr_initial_entries,
2653 hash_file_name_entry, eq_file_name_entry,
2654 delete_file_name_entry, xcalloc, xfree);
2655}
9291a0cd 2656
918dd910
JK
2657/* Read in PER_CU->CU. This function is unrelated to symtabs, symtab would
2658 have to be created afterwards. You should call age_cached_comp_units after
2659 processing PER_CU->CU. dw2_setup must have been already called. */
2660
2661static void
2662load_cu (struct dwarf2_per_cu_data *per_cu)
2663{
3019eac3 2664 if (per_cu->is_debug_types)
e5fe5e75 2665 load_full_type_unit (per_cu);
918dd910 2666 else
95554aad 2667 load_full_comp_unit (per_cu, language_minimal);
918dd910 2668
cc12ce38
DE
2669 if (per_cu->cu == NULL)
2670 return; /* Dummy CU. */
2dc860c0
DE
2671
2672 dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
918dd910
JK
2673}
2674
a0f42c21 2675/* Read in the symbols for PER_CU. */
2fdf6df6 2676
9291a0cd 2677static void
a0f42c21 2678dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
9291a0cd
TT
2679{
2680 struct cleanup *back_to;
2681
f4dc4d17
DE
2682 /* Skip type_unit_groups, reading the type units they contain
2683 is handled elsewhere. */
2684 if (IS_TYPE_UNIT_GROUP (per_cu))
2685 return;
2686
9291a0cd
TT
2687 back_to = make_cleanup (dwarf2_release_queue, NULL);
2688
95554aad 2689 if (dwarf2_per_objfile->using_index
43f3e411 2690 ? per_cu->v.quick->compunit_symtab == NULL
95554aad
TT
2691 : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2692 {
2693 queue_comp_unit (per_cu, language_minimal);
2694 load_cu (per_cu);
89e63ee4
DE
2695
2696 /* If we just loaded a CU from a DWO, and we're working with an index
2697 that may badly handle TUs, load all the TUs in that DWO as well.
2698 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
2699 if (!per_cu->is_debug_types
cc12ce38 2700 && per_cu->cu != NULL
89e63ee4
DE
2701 && per_cu->cu->dwo_unit != NULL
2702 && dwarf2_per_objfile->index_table != NULL
2703 && dwarf2_per_objfile->index_table->version <= 7
2704 /* DWP files aren't supported yet. */
2705 && get_dwp_file () == NULL)
2706 queue_and_load_all_dwo_tus (per_cu);
95554aad 2707 }
9291a0cd 2708
a0f42c21 2709 process_queue ();
9291a0cd
TT
2710
2711 /* Age the cache, releasing compilation units that have not
2712 been used recently. */
2713 age_cached_comp_units ();
2714
2715 do_cleanups (back_to);
2716}
2717
2718/* Ensure that the symbols for PER_CU have been read in. OBJFILE is
2719 the objfile from which this CU came. Returns the resulting symbol
2720 table. */
2fdf6df6 2721
43f3e411 2722static struct compunit_symtab *
a0f42c21 2723dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
9291a0cd 2724{
95554aad 2725 gdb_assert (dwarf2_per_objfile->using_index);
43f3e411 2726 if (!per_cu->v.quick->compunit_symtab)
9291a0cd
TT
2727 {
2728 struct cleanup *back_to = make_cleanup (free_cached_comp_units, NULL);
2729 increment_reading_symtab ();
a0f42c21 2730 dw2_do_instantiate_symtab (per_cu);
95554aad 2731 process_cu_includes ();
9291a0cd
TT
2732 do_cleanups (back_to);
2733 }
f194fefb 2734
43f3e411 2735 return per_cu->v.quick->compunit_symtab;
9291a0cd
TT
2736}
2737
8832e7e3 2738/* Return the CU/TU given its index.
f4dc4d17
DE
2739
2740 This is intended for loops like:
2741
2742 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2743 + dwarf2_per_objfile->n_type_units); ++i)
2744 {
8832e7e3 2745 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
f4dc4d17
DE
2746
2747 ...;
2748 }
2749*/
2fdf6df6 2750
1fd400ff 2751static struct dwarf2_per_cu_data *
8832e7e3 2752dw2_get_cutu (int index)
1fd400ff
TT
2753{
2754 if (index >= dwarf2_per_objfile->n_comp_units)
2755 {
f4dc4d17 2756 index -= dwarf2_per_objfile->n_comp_units;
094b34ac
DE
2757 gdb_assert (index < dwarf2_per_objfile->n_type_units);
2758 return &dwarf2_per_objfile->all_type_units[index]->per_cu;
f4dc4d17
DE
2759 }
2760
2761 return dwarf2_per_objfile->all_comp_units[index];
2762}
2763
8832e7e3
DE
2764/* Return the CU given its index.
2765 This differs from dw2_get_cutu in that it's for when you know INDEX
2766 refers to a CU. */
f4dc4d17
DE
2767
2768static struct dwarf2_per_cu_data *
8832e7e3 2769dw2_get_cu (int index)
f4dc4d17 2770{
8832e7e3 2771 gdb_assert (index >= 0 && index < dwarf2_per_objfile->n_comp_units);
f4dc4d17 2772
1fd400ff
TT
2773 return dwarf2_per_objfile->all_comp_units[index];
2774}
2775
2ec9a5e0
TT
2776/* A helper for create_cus_from_index that handles a given list of
2777 CUs. */
2fdf6df6 2778
74a0d9f6 2779static void
2ec9a5e0
TT
2780create_cus_from_index_list (struct objfile *objfile,
2781 const gdb_byte *cu_list, offset_type n_elements,
2782 struct dwarf2_section_info *section,
2783 int is_dwz,
2784 int base_offset)
9291a0cd
TT
2785{
2786 offset_type i;
9291a0cd 2787
2ec9a5e0 2788 for (i = 0; i < n_elements; i += 2)
9291a0cd
TT
2789 {
2790 struct dwarf2_per_cu_data *the_cu;
2791 ULONGEST offset, length;
2792
74a0d9f6
JK
2793 gdb_static_assert (sizeof (ULONGEST) >= 8);
2794 offset = extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2795 length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
9291a0cd
TT
2796 cu_list += 2 * 8;
2797
2798 the_cu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2799 struct dwarf2_per_cu_data);
b64f50a1 2800 the_cu->offset.sect_off = offset;
9291a0cd
TT
2801 the_cu->length = length;
2802 the_cu->objfile = objfile;
8a0459fd 2803 the_cu->section = section;
9291a0cd
TT
2804 the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2805 struct dwarf2_per_cu_quick_data);
2ec9a5e0
TT
2806 the_cu->is_dwz = is_dwz;
2807 dwarf2_per_objfile->all_comp_units[base_offset + i / 2] = the_cu;
9291a0cd 2808 }
9291a0cd
TT
2809}
2810
2ec9a5e0 2811/* Read the CU list from the mapped index, and use it to create all
74a0d9f6 2812 the CU objects for this objfile. */
2ec9a5e0 2813
74a0d9f6 2814static void
2ec9a5e0
TT
2815create_cus_from_index (struct objfile *objfile,
2816 const gdb_byte *cu_list, offset_type cu_list_elements,
2817 const gdb_byte *dwz_list, offset_type dwz_elements)
2818{
2819 struct dwz_file *dwz;
2820
2821 dwarf2_per_objfile->n_comp_units = (cu_list_elements + dwz_elements) / 2;
2822 dwarf2_per_objfile->all_comp_units
2823 = obstack_alloc (&objfile->objfile_obstack,
2824 dwarf2_per_objfile->n_comp_units
2825 * sizeof (struct dwarf2_per_cu_data *));
2826
74a0d9f6
JK
2827 create_cus_from_index_list (objfile, cu_list, cu_list_elements,
2828 &dwarf2_per_objfile->info, 0, 0);
2ec9a5e0
TT
2829
2830 if (dwz_elements == 0)
74a0d9f6 2831 return;
2ec9a5e0
TT
2832
2833 dwz = dwarf2_get_dwz_file ();
74a0d9f6
JK
2834 create_cus_from_index_list (objfile, dwz_list, dwz_elements, &dwz->info, 1,
2835 cu_list_elements / 2);
2ec9a5e0
TT
2836}
2837
1fd400ff 2838/* Create the signatured type hash table from the index. */
673bfd45 2839
74a0d9f6 2840static void
673bfd45 2841create_signatured_type_table_from_index (struct objfile *objfile,
8b70b953 2842 struct dwarf2_section_info *section,
673bfd45
DE
2843 const gdb_byte *bytes,
2844 offset_type elements)
1fd400ff
TT
2845{
2846 offset_type i;
673bfd45 2847 htab_t sig_types_hash;
1fd400ff 2848
6aa5f3a6
DE
2849 dwarf2_per_objfile->n_type_units
2850 = dwarf2_per_objfile->n_allocated_type_units
2851 = elements / 3;
d467dd73 2852 dwarf2_per_objfile->all_type_units
a2ce51a0
DE
2853 = xmalloc (dwarf2_per_objfile->n_type_units
2854 * sizeof (struct signatured_type *));
1fd400ff 2855
673bfd45 2856 sig_types_hash = allocate_signatured_type_table (objfile);
1fd400ff
TT
2857
2858 for (i = 0; i < elements; i += 3)
2859 {
52dc124a
DE
2860 struct signatured_type *sig_type;
2861 ULONGEST offset, type_offset_in_tu, signature;
1fd400ff
TT
2862 void **slot;
2863
74a0d9f6
JK
2864 gdb_static_assert (sizeof (ULONGEST) >= 8);
2865 offset = extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
2866 type_offset_in_tu = extract_unsigned_integer (bytes + 8, 8,
2867 BFD_ENDIAN_LITTLE);
1fd400ff
TT
2868 signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
2869 bytes += 3 * 8;
2870
52dc124a 2871 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
1fd400ff 2872 struct signatured_type);
52dc124a 2873 sig_type->signature = signature;
3019eac3
DE
2874 sig_type->type_offset_in_tu.cu_off = type_offset_in_tu;
2875 sig_type->per_cu.is_debug_types = 1;
8a0459fd 2876 sig_type->per_cu.section = section;
52dc124a
DE
2877 sig_type->per_cu.offset.sect_off = offset;
2878 sig_type->per_cu.objfile = objfile;
2879 sig_type->per_cu.v.quick
1fd400ff
TT
2880 = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2881 struct dwarf2_per_cu_quick_data);
2882
52dc124a
DE
2883 slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
2884 *slot = sig_type;
1fd400ff 2885
b4dd5633 2886 dwarf2_per_objfile->all_type_units[i / 3] = sig_type;
1fd400ff
TT
2887 }
2888
673bfd45 2889 dwarf2_per_objfile->signatured_types = sig_types_hash;
1fd400ff
TT
2890}
2891
9291a0cd
TT
2892/* Read the address map data from the mapped index, and use it to
2893 populate the objfile's psymtabs_addrmap. */
2fdf6df6 2894
9291a0cd
TT
2895static void
2896create_addrmap_from_index (struct objfile *objfile, struct mapped_index *index)
2897{
3e29f34a 2898 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9291a0cd
TT
2899 const gdb_byte *iter, *end;
2900 struct obstack temp_obstack;
2901 struct addrmap *mutable_map;
2902 struct cleanup *cleanup;
2903 CORE_ADDR baseaddr;
2904
2905 obstack_init (&temp_obstack);
2906 cleanup = make_cleanup_obstack_free (&temp_obstack);
2907 mutable_map = addrmap_create_mutable (&temp_obstack);
2908
2909 iter = index->address_table;
2910 end = iter + index->address_table_size;
2911
2912 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
2913
2914 while (iter < end)
2915 {
2916 ULONGEST hi, lo, cu_index;
2917 lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2918 iter += 8;
2919 hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2920 iter += 8;
2921 cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
2922 iter += 4;
f652bce2 2923
24a55014 2924 if (lo > hi)
f652bce2 2925 {
24a55014
DE
2926 complaint (&symfile_complaints,
2927 _(".gdb_index address table has invalid range (%s - %s)"),
c0cd8254 2928 hex_string (lo), hex_string (hi));
24a55014 2929 continue;
f652bce2 2930 }
24a55014
DE
2931
2932 if (cu_index >= dwarf2_per_objfile->n_comp_units)
f652bce2
DE
2933 {
2934 complaint (&symfile_complaints,
2935 _(".gdb_index address table has invalid CU number %u"),
2936 (unsigned) cu_index);
24a55014 2937 continue;
f652bce2 2938 }
24a55014 2939
3e29f34a
MR
2940 lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr);
2941 hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr);
2942 addrmap_set_empty (mutable_map, lo, hi - 1, dw2_get_cutu (cu_index));
9291a0cd
TT
2943 }
2944
2945 objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
2946 &objfile->objfile_obstack);
2947 do_cleanups (cleanup);
2948}
2949
59d7bcaf
JK
2950/* The hash function for strings in the mapped index. This is the same as
2951 SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
2952 implementation. This is necessary because the hash function is tied to the
2953 format of the mapped index file. The hash values do not have to match with
559a7a62
JK
2954 SYMBOL_HASH_NEXT.
2955
2956 Use INT_MAX for INDEX_VERSION if you generate the current index format. */
2fdf6df6 2957
9291a0cd 2958static hashval_t
559a7a62 2959mapped_index_string_hash (int index_version, const void *p)
9291a0cd
TT
2960{
2961 const unsigned char *str = (const unsigned char *) p;
2962 hashval_t r = 0;
2963 unsigned char c;
2964
2965 while ((c = *str++) != 0)
559a7a62
JK
2966 {
2967 if (index_version >= 5)
2968 c = tolower (c);
2969 r = r * 67 + c - 113;
2970 }
9291a0cd
TT
2971
2972 return r;
2973}
2974
2975/* Find a slot in the mapped index INDEX for the object named NAME.
2976 If NAME is found, set *VEC_OUT to point to the CU vector in the
2977 constant pool and return 1. If NAME cannot be found, return 0. */
2fdf6df6 2978
9291a0cd
TT
2979static int
2980find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
2981 offset_type **vec_out)
2982{
0cf03b49
JK
2983 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2984 offset_type hash;
9291a0cd 2985 offset_type slot, step;
559a7a62 2986 int (*cmp) (const char *, const char *);
9291a0cd 2987
0cf03b49
JK
2988 if (current_language->la_language == language_cplus
2989 || current_language->la_language == language_java
45280282
IB
2990 || current_language->la_language == language_fortran
2991 || current_language->la_language == language_d)
0cf03b49
JK
2992 {
2993 /* NAME is already canonical. Drop any qualifiers as .gdb_index does
2994 not contain any. */
a8719064 2995
72998fb3 2996 if (strchr (name, '(') != NULL)
0cf03b49 2997 {
72998fb3 2998 char *without_params = cp_remove_params (name);
0cf03b49 2999
72998fb3
DE
3000 if (without_params != NULL)
3001 {
3002 make_cleanup (xfree, without_params);
3003 name = without_params;
3004 }
0cf03b49
JK
3005 }
3006 }
3007
559a7a62 3008 /* Index version 4 did not support case insensitive searches. But the
feea76c2 3009 indices for case insensitive languages are built in lowercase, therefore
559a7a62
JK
3010 simulate our NAME being searched is also lowercased. */
3011 hash = mapped_index_string_hash ((index->version == 4
3012 && case_sensitivity == case_sensitive_off
3013 ? 5 : index->version),
3014 name);
3015
3876f04e
DE
3016 slot = hash & (index->symbol_table_slots - 1);
3017 step = ((hash * 17) & (index->symbol_table_slots - 1)) | 1;
559a7a62 3018 cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
9291a0cd
TT
3019
3020 for (;;)
3021 {
3022 /* Convert a slot number to an offset into the table. */
3023 offset_type i = 2 * slot;
3024 const char *str;
3876f04e 3025 if (index->symbol_table[i] == 0 && index->symbol_table[i + 1] == 0)
0cf03b49
JK
3026 {
3027 do_cleanups (back_to);
3028 return 0;
3029 }
9291a0cd 3030
3876f04e 3031 str = index->constant_pool + MAYBE_SWAP (index->symbol_table[i]);
559a7a62 3032 if (!cmp (name, str))
9291a0cd
TT
3033 {
3034 *vec_out = (offset_type *) (index->constant_pool
3876f04e 3035 + MAYBE_SWAP (index->symbol_table[i + 1]));
0cf03b49 3036 do_cleanups (back_to);
9291a0cd
TT
3037 return 1;
3038 }
3039
3876f04e 3040 slot = (slot + step) & (index->symbol_table_slots - 1);
9291a0cd
TT
3041 }
3042}
3043
2ec9a5e0
TT
3044/* A helper function that reads the .gdb_index from SECTION and fills
3045 in MAP. FILENAME is the name of the file containing the section;
3046 it is used for error reporting. DEPRECATED_OK is nonzero if it is
3047 ok to use deprecated sections.
3048
3049 CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3050 out parameters that are filled in with information about the CU and
3051 TU lists in the section.
3052
3053 Returns 1 if all went well, 0 otherwise. */
2fdf6df6 3054
9291a0cd 3055static int
2ec9a5e0
TT
3056read_index_from_section (struct objfile *objfile,
3057 const char *filename,
3058 int deprecated_ok,
3059 struct dwarf2_section_info *section,
3060 struct mapped_index *map,
3061 const gdb_byte **cu_list,
3062 offset_type *cu_list_elements,
3063 const gdb_byte **types_list,
3064 offset_type *types_list_elements)
9291a0cd 3065{
948f8e3d 3066 const gdb_byte *addr;
2ec9a5e0 3067 offset_type version;
b3b272e1 3068 offset_type *metadata;
1fd400ff 3069 int i;
9291a0cd 3070
2ec9a5e0 3071 if (dwarf2_section_empty_p (section))
9291a0cd 3072 return 0;
82430852
JK
3073
3074 /* Older elfutils strip versions could keep the section in the main
3075 executable while splitting it for the separate debug info file. */
a32a8923 3076 if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
82430852
JK
3077 return 0;
3078
2ec9a5e0 3079 dwarf2_read_section (objfile, section);
9291a0cd 3080
2ec9a5e0 3081 addr = section->buffer;
9291a0cd 3082 /* Version check. */
1fd400ff 3083 version = MAYBE_SWAP (*(offset_type *) addr);
987d643c 3084 /* Versions earlier than 3 emitted every copy of a psymbol. This
a6e293d1 3085 causes the index to behave very poorly for certain requests. Version 3
831adc1f 3086 contained incomplete addrmap. So, it seems better to just ignore such
481860b3 3087 indices. */
831adc1f 3088 if (version < 4)
481860b3
GB
3089 {
3090 static int warning_printed = 0;
3091 if (!warning_printed)
3092 {
3093 warning (_("Skipping obsolete .gdb_index section in %s."),
2ec9a5e0 3094 filename);
481860b3
GB
3095 warning_printed = 1;
3096 }
3097 return 0;
3098 }
3099 /* Index version 4 uses a different hash function than index version
3100 5 and later.
3101
3102 Versions earlier than 6 did not emit psymbols for inlined
3103 functions. Using these files will cause GDB not to be able to
3104 set breakpoints on inlined functions by name, so we ignore these
e615022a
DE
3105 indices unless the user has done
3106 "set use-deprecated-index-sections on". */
2ec9a5e0 3107 if (version < 6 && !deprecated_ok)
481860b3
GB
3108 {
3109 static int warning_printed = 0;
3110 if (!warning_printed)
3111 {
e615022a
DE
3112 warning (_("\
3113Skipping deprecated .gdb_index section in %s.\n\
3114Do \"set use-deprecated-index-sections on\" before the file is read\n\
3115to use the section anyway."),
2ec9a5e0 3116 filename);
481860b3
GB
3117 warning_printed = 1;
3118 }
3119 return 0;
3120 }
796a7ff8 3121 /* Version 7 indices generated by gold refer to the CU for a symbol instead
8943b874
DE
3122 of the TU (for symbols coming from TUs),
3123 http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3124 Plus gold-generated indices can have duplicate entries for global symbols,
3125 http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3126 These are just performance bugs, and we can't distinguish gdb-generated
3127 indices from gold-generated ones, so issue no warning here. */
796a7ff8 3128
481860b3 3129 /* Indexes with higher version than the one supported by GDB may be no
594e8718 3130 longer backward compatible. */
796a7ff8 3131 if (version > 8)
594e8718 3132 return 0;
9291a0cd 3133
559a7a62 3134 map->version = version;
2ec9a5e0 3135 map->total_size = section->size;
9291a0cd
TT
3136
3137 metadata = (offset_type *) (addr + sizeof (offset_type));
1fd400ff
TT
3138
3139 i = 0;
2ec9a5e0
TT
3140 *cu_list = addr + MAYBE_SWAP (metadata[i]);
3141 *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3142 / 8);
1fd400ff
TT
3143 ++i;
3144
2ec9a5e0
TT
3145 *types_list = addr + MAYBE_SWAP (metadata[i]);
3146 *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3147 - MAYBE_SWAP (metadata[i]))
3148 / 8);
987d643c 3149 ++i;
1fd400ff
TT
3150
3151 map->address_table = addr + MAYBE_SWAP (metadata[i]);
3152 map->address_table_size = (MAYBE_SWAP (metadata[i + 1])
3153 - MAYBE_SWAP (metadata[i]));
3154 ++i;
3155
3876f04e
DE
3156 map->symbol_table = (offset_type *) (addr + MAYBE_SWAP (metadata[i]));
3157 map->symbol_table_slots = ((MAYBE_SWAP (metadata[i + 1])
3158 - MAYBE_SWAP (metadata[i]))
3159 / (2 * sizeof (offset_type)));
1fd400ff 3160 ++i;
9291a0cd 3161
f9d83a0b 3162 map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
1fd400ff 3163
2ec9a5e0
TT
3164 return 1;
3165}
3166
3167
3168/* Read the index file. If everything went ok, initialize the "quick"
3169 elements of all the CUs and return 1. Otherwise, return 0. */
3170
3171static int
3172dwarf2_read_index (struct objfile *objfile)
3173{
3174 struct mapped_index local_map, *map;
3175 const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3176 offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
4db1a1dc 3177 struct dwz_file *dwz;
2ec9a5e0 3178
4262abfb 3179 if (!read_index_from_section (objfile, objfile_name (objfile),
2ec9a5e0
TT
3180 use_deprecated_index_sections,
3181 &dwarf2_per_objfile->gdb_index, &local_map,
3182 &cu_list, &cu_list_elements,
3183 &types_list, &types_list_elements))
3184 return 0;
3185
0fefef59 3186 /* Don't use the index if it's empty. */
2ec9a5e0 3187 if (local_map.symbol_table_slots == 0)
0fefef59
DE
3188 return 0;
3189
2ec9a5e0
TT
3190 /* If there is a .dwz file, read it so we can get its CU list as
3191 well. */
4db1a1dc
TT
3192 dwz = dwarf2_get_dwz_file ();
3193 if (dwz != NULL)
2ec9a5e0 3194 {
2ec9a5e0
TT
3195 struct mapped_index dwz_map;
3196 const gdb_byte *dwz_types_ignore;
3197 offset_type dwz_types_elements_ignore;
3198
3199 if (!read_index_from_section (objfile, bfd_get_filename (dwz->dwz_bfd),
3200 1,
3201 &dwz->gdb_index, &dwz_map,
3202 &dwz_list, &dwz_list_elements,
3203 &dwz_types_ignore,
3204 &dwz_types_elements_ignore))
3205 {
3206 warning (_("could not read '.gdb_index' section from %s; skipping"),
3207 bfd_get_filename (dwz->dwz_bfd));
3208 return 0;
3209 }
3210 }
3211
74a0d9f6
JK
3212 create_cus_from_index (objfile, cu_list, cu_list_elements, dwz_list,
3213 dwz_list_elements);
1fd400ff 3214
8b70b953
TT
3215 if (types_list_elements)
3216 {
3217 struct dwarf2_section_info *section;
3218
3219 /* We can only handle a single .debug_types when we have an
3220 index. */
3221 if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3222 return 0;
3223
3224 section = VEC_index (dwarf2_section_info_def,
3225 dwarf2_per_objfile->types, 0);
3226
74a0d9f6
JK
3227 create_signatured_type_table_from_index (objfile, section, types_list,
3228 types_list_elements);
8b70b953 3229 }
9291a0cd 3230
2ec9a5e0
TT
3231 create_addrmap_from_index (objfile, &local_map);
3232
3233 map = obstack_alloc (&objfile->objfile_obstack, sizeof (struct mapped_index));
3234 *map = local_map;
9291a0cd
TT
3235
3236 dwarf2_per_objfile->index_table = map;
3237 dwarf2_per_objfile->using_index = 1;
7b9f3c50
DE
3238 dwarf2_per_objfile->quick_file_names_table =
3239 create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
9291a0cd
TT
3240
3241 return 1;
3242}
3243
3244/* A helper for the "quick" functions which sets the global
3245 dwarf2_per_objfile according to OBJFILE. */
2fdf6df6 3246
9291a0cd
TT
3247static void
3248dw2_setup (struct objfile *objfile)
3249{
3250 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
3251 gdb_assert (dwarf2_per_objfile);
3252}
3253
dee91e82 3254/* die_reader_func for dw2_get_file_names. */
2fdf6df6 3255
dee91e82
DE
3256static void
3257dw2_get_file_names_reader (const struct die_reader_specs *reader,
d521ce57 3258 const gdb_byte *info_ptr,
dee91e82
DE
3259 struct die_info *comp_unit_die,
3260 int has_children,
3261 void *data)
9291a0cd 3262{
dee91e82
DE
3263 struct dwarf2_cu *cu = reader->cu;
3264 struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3265 struct objfile *objfile = dwarf2_per_objfile->objfile;
094b34ac 3266 struct dwarf2_per_cu_data *lh_cu;
7b9f3c50 3267 struct line_header *lh;
9291a0cd 3268 struct attribute *attr;
dee91e82 3269 int i;
15d034d0 3270 const char *name, *comp_dir;
7b9f3c50
DE
3271 void **slot;
3272 struct quick_file_names *qfn;
3273 unsigned int line_offset;
9291a0cd 3274
0186c6a7
DE
3275 gdb_assert (! this_cu->is_debug_types);
3276
07261596
TT
3277 /* Our callers never want to match partial units -- instead they
3278 will match the enclosing full CU. */
3279 if (comp_unit_die->tag == DW_TAG_partial_unit)
3280 {
3281 this_cu->v.quick->no_file_data = 1;
3282 return;
3283 }
3284
0186c6a7 3285 lh_cu = this_cu;
7b9f3c50
DE
3286 lh = NULL;
3287 slot = NULL;
3288 line_offset = 0;
dee91e82
DE
3289
3290 attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
9291a0cd
TT
3291 if (attr)
3292 {
7b9f3c50
DE
3293 struct quick_file_names find_entry;
3294
3295 line_offset = DW_UNSND (attr);
3296
3297 /* We may have already read in this line header (TU line header sharing).
3298 If we have we're done. */
094b34ac
DE
3299 find_entry.hash.dwo_unit = cu->dwo_unit;
3300 find_entry.hash.line_offset.sect_off = line_offset;
7b9f3c50
DE
3301 slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3302 &find_entry, INSERT);
3303 if (*slot != NULL)
3304 {
094b34ac 3305 lh_cu->v.quick->file_names = *slot;
dee91e82 3306 return;
7b9f3c50
DE
3307 }
3308
3019eac3 3309 lh = dwarf_decode_line_header (line_offset, cu);
9291a0cd
TT
3310 }
3311 if (lh == NULL)
3312 {
094b34ac 3313 lh_cu->v.quick->no_file_data = 1;
dee91e82 3314 return;
9291a0cd
TT
3315 }
3316
7b9f3c50 3317 qfn = obstack_alloc (&objfile->objfile_obstack, sizeof (*qfn));
094b34ac
DE
3318 qfn->hash.dwo_unit = cu->dwo_unit;
3319 qfn->hash.line_offset.sect_off = line_offset;
7b9f3c50
DE
3320 gdb_assert (slot != NULL);
3321 *slot = qfn;
9291a0cd 3322
dee91e82 3323 find_file_and_directory (comp_unit_die, cu, &name, &comp_dir);
9291a0cd 3324
7b9f3c50
DE
3325 qfn->num_file_names = lh->num_file_names;
3326 qfn->file_names = obstack_alloc (&objfile->objfile_obstack,
3327 lh->num_file_names * sizeof (char *));
9291a0cd 3328 for (i = 0; i < lh->num_file_names; ++i)
7b9f3c50
DE
3329 qfn->file_names[i] = file_full_name (i + 1, lh, comp_dir);
3330 qfn->real_names = NULL;
9291a0cd 3331
7b9f3c50 3332 free_line_header (lh);
7b9f3c50 3333
094b34ac 3334 lh_cu->v.quick->file_names = qfn;
dee91e82
DE
3335}
3336
3337/* A helper for the "quick" functions which attempts to read the line
3338 table for THIS_CU. */
3339
3340static struct quick_file_names *
e4a48d9d 3341dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
dee91e82 3342{
0186c6a7
DE
3343 /* This should never be called for TUs. */
3344 gdb_assert (! this_cu->is_debug_types);
3345 /* Nor type unit groups. */
3346 gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
f4dc4d17 3347
dee91e82
DE
3348 if (this_cu->v.quick->file_names != NULL)
3349 return this_cu->v.quick->file_names;
3350 /* If we know there is no line data, no point in looking again. */
3351 if (this_cu->v.quick->no_file_data)
3352 return NULL;
3353
0186c6a7 3354 init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
dee91e82
DE
3355
3356 if (this_cu->v.quick->no_file_data)
3357 return NULL;
3358 return this_cu->v.quick->file_names;
9291a0cd
TT
3359}
3360
3361/* A helper for the "quick" functions which computes and caches the
7b9f3c50 3362 real path for a given file name from the line table. */
2fdf6df6 3363
9291a0cd 3364static const char *
7b9f3c50
DE
3365dw2_get_real_path (struct objfile *objfile,
3366 struct quick_file_names *qfn, int index)
9291a0cd 3367{
7b9f3c50
DE
3368 if (qfn->real_names == NULL)
3369 qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
26f2dc30 3370 qfn->num_file_names, const char *);
9291a0cd 3371
7b9f3c50
DE
3372 if (qfn->real_names[index] == NULL)
3373 qfn->real_names[index] = gdb_realpath (qfn->file_names[index]);
9291a0cd 3374
7b9f3c50 3375 return qfn->real_names[index];
9291a0cd
TT
3376}
3377
3378static struct symtab *
3379dw2_find_last_source_symtab (struct objfile *objfile)
3380{
43f3e411 3381 struct compunit_symtab *cust;
9291a0cd 3382 int index;
ae2de4f8 3383
9291a0cd
TT
3384 dw2_setup (objfile);
3385 index = dwarf2_per_objfile->n_comp_units - 1;
43f3e411
DE
3386 cust = dw2_instantiate_symtab (dw2_get_cutu (index));
3387 if (cust == NULL)
3388 return NULL;
3389 return compunit_primary_filetab (cust);
9291a0cd
TT
3390}
3391
7b9f3c50
DE
3392/* Traversal function for dw2_forget_cached_source_info. */
3393
3394static int
3395dw2_free_cached_file_names (void **slot, void *info)
9291a0cd 3396{
7b9f3c50 3397 struct quick_file_names *file_data = (struct quick_file_names *) *slot;
9291a0cd 3398
7b9f3c50 3399 if (file_data->real_names)
9291a0cd 3400 {
7b9f3c50 3401 int i;
9291a0cd 3402
7b9f3c50 3403 for (i = 0; i < file_data->num_file_names; ++i)
9291a0cd 3404 {
7b9f3c50
DE
3405 xfree ((void*) file_data->real_names[i]);
3406 file_data->real_names[i] = NULL;
9291a0cd
TT
3407 }
3408 }
7b9f3c50
DE
3409
3410 return 1;
3411}
3412
3413static void
3414dw2_forget_cached_source_info (struct objfile *objfile)
3415{
3416 dw2_setup (objfile);
3417
3418 htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3419 dw2_free_cached_file_names, NULL);
9291a0cd
TT
3420}
3421
f8eba3c6
TT
3422/* Helper function for dw2_map_symtabs_matching_filename that expands
3423 the symtabs and calls the iterator. */
3424
3425static int
3426dw2_map_expand_apply (struct objfile *objfile,
3427 struct dwarf2_per_cu_data *per_cu,
f5b95b50 3428 const char *name, const char *real_path,
f8eba3c6
TT
3429 int (*callback) (struct symtab *, void *),
3430 void *data)
3431{
43f3e411 3432 struct compunit_symtab *last_made = objfile->compunit_symtabs;
f8eba3c6
TT
3433
3434 /* Don't visit already-expanded CUs. */
43f3e411 3435 if (per_cu->v.quick->compunit_symtab)
f8eba3c6
TT
3436 return 0;
3437
3438 /* This may expand more than one symtab, and we want to iterate over
3439 all of them. */
a0f42c21 3440 dw2_instantiate_symtab (per_cu);
f8eba3c6 3441
f5b95b50 3442 return iterate_over_some_symtabs (name, real_path, callback, data,
43f3e411 3443 objfile->compunit_symtabs, last_made);
f8eba3c6
TT
3444}
3445
3446/* Implementation of the map_symtabs_matching_filename method. */
3447
9291a0cd 3448static int
f8eba3c6 3449dw2_map_symtabs_matching_filename (struct objfile *objfile, const char *name,
f5b95b50 3450 const char *real_path,
f8eba3c6
TT
3451 int (*callback) (struct symtab *, void *),
3452 void *data)
9291a0cd
TT
3453{
3454 int i;
c011a4f4 3455 const char *name_basename = lbasename (name);
9291a0cd
TT
3456
3457 dw2_setup (objfile);
ae2de4f8 3458
848e3e78
DE
3459 /* The rule is CUs specify all the files, including those used by
3460 any TU, so there's no need to scan TUs here. */
f4dc4d17 3461
848e3e78 3462 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
3463 {
3464 int j;
8832e7e3 3465 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
7b9f3c50 3466 struct quick_file_names *file_data;
9291a0cd 3467
3d7bb9d9 3468 /* We only need to look at symtabs not already expanded. */
43f3e411 3469 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3470 continue;
3471
e4a48d9d 3472 file_data = dw2_get_file_names (per_cu);
7b9f3c50 3473 if (file_data == NULL)
9291a0cd
TT
3474 continue;
3475
7b9f3c50 3476 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 3477 {
7b9f3c50 3478 const char *this_name = file_data->file_names[j];
da235a7c 3479 const char *this_real_name;
9291a0cd 3480
af529f8f 3481 if (compare_filenames_for_search (this_name, name))
9291a0cd 3482 {
f5b95b50 3483 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
f8eba3c6
TT
3484 callback, data))
3485 return 1;
288e77a7 3486 continue;
4aac40c8 3487 }
9291a0cd 3488
c011a4f4
DE
3489 /* Before we invoke realpath, which can get expensive when many
3490 files are involved, do a quick comparison of the basenames. */
3491 if (! basenames_may_differ
3492 && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3493 continue;
3494
da235a7c
JK
3495 this_real_name = dw2_get_real_path (objfile, file_data, j);
3496 if (compare_filenames_for_search (this_real_name, name))
9291a0cd 3497 {
da235a7c
JK
3498 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3499 callback, data))
3500 return 1;
288e77a7 3501 continue;
da235a7c 3502 }
9291a0cd 3503
da235a7c
JK
3504 if (real_path != NULL)
3505 {
af529f8f
JK
3506 gdb_assert (IS_ABSOLUTE_PATH (real_path));
3507 gdb_assert (IS_ABSOLUTE_PATH (name));
7b9f3c50 3508 if (this_real_name != NULL
af529f8f 3509 && FILENAME_CMP (real_path, this_real_name) == 0)
9291a0cd 3510 {
f5b95b50 3511 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
f8eba3c6
TT
3512 callback, data))
3513 return 1;
288e77a7 3514 continue;
9291a0cd
TT
3515 }
3516 }
3517 }
3518 }
3519
9291a0cd
TT
3520 return 0;
3521}
3522
da51c347
DE
3523/* Struct used to manage iterating over all CUs looking for a symbol. */
3524
3525struct dw2_symtab_iterator
9291a0cd 3526{
da51c347
DE
3527 /* The internalized form of .gdb_index. */
3528 struct mapped_index *index;
3529 /* If non-zero, only look for symbols that match BLOCK_INDEX. */
3530 int want_specific_block;
3531 /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3532 Unused if !WANT_SPECIFIC_BLOCK. */
3533 int block_index;
3534 /* The kind of symbol we're looking for. */
3535 domain_enum domain;
3536 /* The list of CUs from the index entry of the symbol,
3537 or NULL if not found. */
3538 offset_type *vec;
3539 /* The next element in VEC to look at. */
3540 int next;
3541 /* The number of elements in VEC, or zero if there is no match. */
3542 int length;
8943b874
DE
3543 /* Have we seen a global version of the symbol?
3544 If so we can ignore all further global instances.
3545 This is to work around gold/15646, inefficient gold-generated
3546 indices. */
3547 int global_seen;
da51c347 3548};
9291a0cd 3549
da51c347
DE
3550/* Initialize the index symtab iterator ITER.
3551 If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3552 in block BLOCK_INDEX. Otherwise BLOCK_INDEX is ignored. */
2fdf6df6 3553
9291a0cd 3554static void
da51c347
DE
3555dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3556 struct mapped_index *index,
3557 int want_specific_block,
3558 int block_index,
3559 domain_enum domain,
3560 const char *name)
3561{
3562 iter->index = index;
3563 iter->want_specific_block = want_specific_block;
3564 iter->block_index = block_index;
3565 iter->domain = domain;
3566 iter->next = 0;
8943b874 3567 iter->global_seen = 0;
da51c347
DE
3568
3569 if (find_slot_in_mapped_hash (index, name, &iter->vec))
3570 iter->length = MAYBE_SWAP (*iter->vec);
3571 else
3572 {
3573 iter->vec = NULL;
3574 iter->length = 0;
3575 }
3576}
3577
3578/* Return the next matching CU or NULL if there are no more. */
3579
3580static struct dwarf2_per_cu_data *
3581dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3582{
3583 for ( ; iter->next < iter->length; ++iter->next)
3584 {
3585 offset_type cu_index_and_attrs =
3586 MAYBE_SWAP (iter->vec[iter->next + 1]);
3587 offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3190f0c6 3588 struct dwarf2_per_cu_data *per_cu;
da51c347
DE
3589 int want_static = iter->block_index != GLOBAL_BLOCK;
3590 /* This value is only valid for index versions >= 7. */
3591 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3592 gdb_index_symbol_kind symbol_kind =
3593 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3594 /* Only check the symbol attributes if they're present.
3595 Indices prior to version 7 don't record them,
3596 and indices >= 7 may elide them for certain symbols
3597 (gold does this). */
3598 int attrs_valid =
3599 (iter->index->version >= 7
3600 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3601
3190f0c6
DE
3602 /* Don't crash on bad data. */
3603 if (cu_index >= (dwarf2_per_objfile->n_comp_units
3604 + dwarf2_per_objfile->n_type_units))
3605 {
3606 complaint (&symfile_complaints,
3607 _(".gdb_index entry has bad CU index"
4262abfb
JK
3608 " [in module %s]"),
3609 objfile_name (dwarf2_per_objfile->objfile));
3190f0c6
DE
3610 continue;
3611 }
3612
8832e7e3 3613 per_cu = dw2_get_cutu (cu_index);
3190f0c6 3614
da51c347 3615 /* Skip if already read in. */
43f3e411 3616 if (per_cu->v.quick->compunit_symtab)
da51c347
DE
3617 continue;
3618
8943b874
DE
3619 /* Check static vs global. */
3620 if (attrs_valid)
3621 {
3622 if (iter->want_specific_block
3623 && want_static != is_static)
3624 continue;
3625 /* Work around gold/15646. */
3626 if (!is_static && iter->global_seen)
3627 continue;
3628 if (!is_static)
3629 iter->global_seen = 1;
3630 }
da51c347
DE
3631
3632 /* Only check the symbol's kind if it has one. */
3633 if (attrs_valid)
3634 {
3635 switch (iter->domain)
3636 {
3637 case VAR_DOMAIN:
3638 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
3639 && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
3640 /* Some types are also in VAR_DOMAIN. */
3641 && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3642 continue;
3643 break;
3644 case STRUCT_DOMAIN:
3645 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3646 continue;
3647 break;
3648 case LABEL_DOMAIN:
3649 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3650 continue;
3651 break;
3652 default:
3653 break;
3654 }
3655 }
3656
3657 ++iter->next;
3658 return per_cu;
3659 }
3660
3661 return NULL;
3662}
3663
43f3e411 3664static struct compunit_symtab *
da51c347
DE
3665dw2_lookup_symbol (struct objfile *objfile, int block_index,
3666 const char *name, domain_enum domain)
9291a0cd 3667{
43f3e411 3668 struct compunit_symtab *stab_best = NULL;
156942c7
DE
3669 struct mapped_index *index;
3670
9291a0cd
TT
3671 dw2_setup (objfile);
3672
156942c7
DE
3673 index = dwarf2_per_objfile->index_table;
3674
da51c347 3675 /* index is NULL if OBJF_READNOW. */
156942c7 3676 if (index)
9291a0cd 3677 {
da51c347
DE
3678 struct dw2_symtab_iterator iter;
3679 struct dwarf2_per_cu_data *per_cu;
3680
3681 dw2_symtab_iter_init (&iter, index, 1, block_index, domain, name);
9291a0cd 3682
da51c347 3683 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
9291a0cd 3684 {
b2e2f908 3685 struct symbol *sym, *with_opaque = NULL;
43f3e411
DE
3686 struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu);
3687 const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
f194fefb 3688 struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
da51c347 3689
b2e2f908
DE
3690 sym = block_find_symbol (block, name, domain,
3691 block_find_non_opaque_type_preferred,
3692 &with_opaque);
3693
da51c347
DE
3694 /* Some caution must be observed with overloaded functions
3695 and methods, since the index will not contain any overload
3696 information (but NAME might contain it). */
da51c347 3697
b2e2f908
DE
3698 if (sym != NULL
3699 && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
3700 return stab;
3701 if (with_opaque != NULL
3702 && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
3703 stab_best = stab;
da51c347
DE
3704
3705 /* Keep looking through other CUs. */
9291a0cd
TT
3706 }
3707 }
9291a0cd 3708
da51c347 3709 return stab_best;
9291a0cd
TT
3710}
3711
3712static void
3713dw2_print_stats (struct objfile *objfile)
3714{
e4a48d9d 3715 int i, total, count;
9291a0cd
TT
3716
3717 dw2_setup (objfile);
e4a48d9d 3718 total = dwarf2_per_objfile->n_comp_units + dwarf2_per_objfile->n_type_units;
9291a0cd 3719 count = 0;
e4a48d9d 3720 for (i = 0; i < total; ++i)
9291a0cd 3721 {
8832e7e3 3722 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 3723
43f3e411 3724 if (!per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3725 ++count;
3726 }
e4a48d9d 3727 printf_filtered (_(" Number of read CUs: %d\n"), total - count);
9291a0cd
TT
3728 printf_filtered (_(" Number of unread CUs: %d\n"), count);
3729}
3730
779bd270
DE
3731/* This dumps minimal information about the index.
3732 It is called via "mt print objfiles".
3733 One use is to verify .gdb_index has been loaded by the
3734 gdb.dwarf2/gdb-index.exp testcase. */
3735
9291a0cd
TT
3736static void
3737dw2_dump (struct objfile *objfile)
3738{
779bd270
DE
3739 dw2_setup (objfile);
3740 gdb_assert (dwarf2_per_objfile->using_index);
3741 printf_filtered (".gdb_index:");
3742 if (dwarf2_per_objfile->index_table != NULL)
3743 {
3744 printf_filtered (" version %d\n",
3745 dwarf2_per_objfile->index_table->version);
3746 }
3747 else
3748 printf_filtered (" faked for \"readnow\"\n");
3749 printf_filtered ("\n");
9291a0cd
TT
3750}
3751
3752static void
3189cb12
DE
3753dw2_relocate (struct objfile *objfile,
3754 const struct section_offsets *new_offsets,
3755 const struct section_offsets *delta)
9291a0cd
TT
3756{
3757 /* There's nothing to relocate here. */
3758}
3759
3760static void
3761dw2_expand_symtabs_for_function (struct objfile *objfile,
3762 const char *func_name)
3763{
da51c347
DE
3764 struct mapped_index *index;
3765
3766 dw2_setup (objfile);
3767
3768 index = dwarf2_per_objfile->index_table;
3769
3770 /* index is NULL if OBJF_READNOW. */
3771 if (index)
3772 {
3773 struct dw2_symtab_iterator iter;
3774 struct dwarf2_per_cu_data *per_cu;
3775
3776 /* Note: It doesn't matter what we pass for block_index here. */
3777 dw2_symtab_iter_init (&iter, index, 0, GLOBAL_BLOCK, VAR_DOMAIN,
3778 func_name);
3779
3780 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3781 dw2_instantiate_symtab (per_cu);
3782 }
9291a0cd
TT
3783}
3784
3785static void
3786dw2_expand_all_symtabs (struct objfile *objfile)
3787{
3788 int i;
3789
3790 dw2_setup (objfile);
1fd400ff
TT
3791
3792 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
d467dd73 3793 + dwarf2_per_objfile->n_type_units); ++i)
9291a0cd 3794 {
8832e7e3 3795 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 3796
a0f42c21 3797 dw2_instantiate_symtab (per_cu);
9291a0cd
TT
3798 }
3799}
3800
3801static void
652a8996
JK
3802dw2_expand_symtabs_with_fullname (struct objfile *objfile,
3803 const char *fullname)
9291a0cd
TT
3804{
3805 int i;
3806
3807 dw2_setup (objfile);
d4637a04
DE
3808
3809 /* We don't need to consider type units here.
3810 This is only called for examining code, e.g. expand_line_sal.
3811 There can be an order of magnitude (or more) more type units
3812 than comp units, and we avoid them if we can. */
3813
3814 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
3815 {
3816 int j;
8832e7e3 3817 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
7b9f3c50 3818 struct quick_file_names *file_data;
9291a0cd 3819
3d7bb9d9 3820 /* We only need to look at symtabs not already expanded. */
43f3e411 3821 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3822 continue;
3823
e4a48d9d 3824 file_data = dw2_get_file_names (per_cu);
7b9f3c50 3825 if (file_data == NULL)
9291a0cd
TT
3826 continue;
3827
7b9f3c50 3828 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 3829 {
652a8996
JK
3830 const char *this_fullname = file_data->file_names[j];
3831
3832 if (filename_cmp (this_fullname, fullname) == 0)
9291a0cd 3833 {
a0f42c21 3834 dw2_instantiate_symtab (per_cu);
9291a0cd
TT
3835 break;
3836 }
3837 }
3838 }
3839}
3840
9291a0cd 3841static void
ade7ed9e 3842dw2_map_matching_symbols (struct objfile *objfile,
fe978cb0 3843 const char * name, domain_enum domain,
ade7ed9e 3844 int global,
40658b94
PH
3845 int (*callback) (struct block *,
3846 struct symbol *, void *),
2edb89d3
JK
3847 void *data, symbol_compare_ftype *match,
3848 symbol_compare_ftype *ordered_compare)
9291a0cd 3849{
40658b94 3850 /* Currently unimplemented; used for Ada. The function can be called if the
a9e6a4bb
JK
3851 current language is Ada for a non-Ada objfile using GNU index. As Ada
3852 does not look for non-Ada symbols this function should just return. */
9291a0cd
TT
3853}
3854
3855static void
f8eba3c6
TT
3856dw2_expand_symtabs_matching
3857 (struct objfile *objfile,
206f2a57
DE
3858 expand_symtabs_file_matcher_ftype *file_matcher,
3859 expand_symtabs_symbol_matcher_ftype *symbol_matcher,
276d885b 3860 expand_symtabs_exp_notify_ftype *expansion_notify,
f8eba3c6
TT
3861 enum search_domain kind,
3862 void *data)
9291a0cd
TT
3863{
3864 int i;
3865 offset_type iter;
4b5246aa 3866 struct mapped_index *index;
9291a0cd
TT
3867
3868 dw2_setup (objfile);
ae2de4f8
DE
3869
3870 /* index_table is NULL if OBJF_READNOW. */
9291a0cd
TT
3871 if (!dwarf2_per_objfile->index_table)
3872 return;
4b5246aa 3873 index = dwarf2_per_objfile->index_table;
9291a0cd 3874
7b08b9eb 3875 if (file_matcher != NULL)
24c79950
TT
3876 {
3877 struct cleanup *cleanup;
3878 htab_t visited_found, visited_not_found;
3879
3880 visited_found = htab_create_alloc (10,
3881 htab_hash_pointer, htab_eq_pointer,
3882 NULL, xcalloc, xfree);
3883 cleanup = make_cleanup_htab_delete (visited_found);
3884 visited_not_found = htab_create_alloc (10,
3885 htab_hash_pointer, htab_eq_pointer,
3886 NULL, xcalloc, xfree);
3887 make_cleanup_htab_delete (visited_not_found);
3888
848e3e78
DE
3889 /* The rule is CUs specify all the files, including those used by
3890 any TU, so there's no need to scan TUs here. */
3891
3892 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
24c79950
TT
3893 {
3894 int j;
8832e7e3 3895 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
24c79950
TT
3896 struct quick_file_names *file_data;
3897 void **slot;
7b08b9eb 3898
61d96d7e
DE
3899 QUIT;
3900
24c79950 3901 per_cu->v.quick->mark = 0;
3d7bb9d9 3902
24c79950 3903 /* We only need to look at symtabs not already expanded. */
43f3e411 3904 if (per_cu->v.quick->compunit_symtab)
24c79950 3905 continue;
7b08b9eb 3906
e4a48d9d 3907 file_data = dw2_get_file_names (per_cu);
24c79950
TT
3908 if (file_data == NULL)
3909 continue;
7b08b9eb 3910
24c79950
TT
3911 if (htab_find (visited_not_found, file_data) != NULL)
3912 continue;
3913 else if (htab_find (visited_found, file_data) != NULL)
3914 {
3915 per_cu->v.quick->mark = 1;
3916 continue;
3917 }
3918
3919 for (j = 0; j < file_data->num_file_names; ++j)
3920 {
da235a7c
JK
3921 const char *this_real_name;
3922
fbd9ab74 3923 if (file_matcher (file_data->file_names[j], data, 0))
24c79950
TT
3924 {
3925 per_cu->v.quick->mark = 1;
3926 break;
3927 }
da235a7c
JK
3928
3929 /* Before we invoke realpath, which can get expensive when many
3930 files are involved, do a quick comparison of the basenames. */
3931 if (!basenames_may_differ
3932 && !file_matcher (lbasename (file_data->file_names[j]),
3933 data, 1))
3934 continue;
3935
3936 this_real_name = dw2_get_real_path (objfile, file_data, j);
3937 if (file_matcher (this_real_name, data, 0))
3938 {
3939 per_cu->v.quick->mark = 1;
3940 break;
3941 }
24c79950
TT
3942 }
3943
3944 slot = htab_find_slot (per_cu->v.quick->mark
3945 ? visited_found
3946 : visited_not_found,
3947 file_data, INSERT);
3948 *slot = file_data;
3949 }
3950
3951 do_cleanups (cleanup);
3952 }
9291a0cd 3953
3876f04e 3954 for (iter = 0; iter < index->symbol_table_slots; ++iter)
9291a0cd
TT
3955 {
3956 offset_type idx = 2 * iter;
3957 const char *name;
3958 offset_type *vec, vec_len, vec_idx;
8943b874 3959 int global_seen = 0;
9291a0cd 3960
61d96d7e
DE
3961 QUIT;
3962
3876f04e 3963 if (index->symbol_table[idx] == 0 && index->symbol_table[idx + 1] == 0)
9291a0cd
TT
3964 continue;
3965
3876f04e 3966 name = index->constant_pool + MAYBE_SWAP (index->symbol_table[idx]);
9291a0cd 3967
206f2a57 3968 if (! (*symbol_matcher) (name, data))
9291a0cd
TT
3969 continue;
3970
3971 /* The name was matched, now expand corresponding CUs that were
3972 marked. */
4b5246aa 3973 vec = (offset_type *) (index->constant_pool
3876f04e 3974 + MAYBE_SWAP (index->symbol_table[idx + 1]));
9291a0cd
TT
3975 vec_len = MAYBE_SWAP (vec[0]);
3976 for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
3977 {
e254ef6a 3978 struct dwarf2_per_cu_data *per_cu;
156942c7 3979 offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
8943b874
DE
3980 /* This value is only valid for index versions >= 7. */
3981 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
156942c7
DE
3982 gdb_index_symbol_kind symbol_kind =
3983 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3984 int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3190f0c6
DE
3985 /* Only check the symbol attributes if they're present.
3986 Indices prior to version 7 don't record them,
3987 and indices >= 7 may elide them for certain symbols
3988 (gold does this). */
3989 int attrs_valid =
3990 (index->version >= 7
3991 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3992
8943b874
DE
3993 /* Work around gold/15646. */
3994 if (attrs_valid)
3995 {
3996 if (!is_static && global_seen)
3997 continue;
3998 if (!is_static)
3999 global_seen = 1;
4000 }
4001
3190f0c6
DE
4002 /* Only check the symbol's kind if it has one. */
4003 if (attrs_valid)
156942c7
DE
4004 {
4005 switch (kind)
4006 {
4007 case VARIABLES_DOMAIN:
4008 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
4009 continue;
4010 break;
4011 case FUNCTIONS_DOMAIN:
4012 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
4013 continue;
4014 break;
4015 case TYPES_DOMAIN:
4016 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4017 continue;
4018 break;
4019 default:
4020 break;
4021 }
4022 }
4023
3190f0c6
DE
4024 /* Don't crash on bad data. */
4025 if (cu_index >= (dwarf2_per_objfile->n_comp_units
4026 + dwarf2_per_objfile->n_type_units))
4027 {
4028 complaint (&symfile_complaints,
4029 _(".gdb_index entry has bad CU index"
4262abfb 4030 " [in module %s]"), objfile_name (objfile));
3190f0c6
DE
4031 continue;
4032 }
4033
8832e7e3 4034 per_cu = dw2_get_cutu (cu_index);
7b08b9eb 4035 if (file_matcher == NULL || per_cu->v.quick->mark)
276d885b
GB
4036 {
4037 int symtab_was_null =
4038 (per_cu->v.quick->compunit_symtab == NULL);
4039
4040 dw2_instantiate_symtab (per_cu);
4041
4042 if (expansion_notify != NULL
4043 && symtab_was_null
4044 && per_cu->v.quick->compunit_symtab != NULL)
4045 {
4046 expansion_notify (per_cu->v.quick->compunit_symtab,
4047 data);
4048 }
4049 }
9291a0cd
TT
4050 }
4051 }
4052}
4053
43f3e411 4054/* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
9703b513
TT
4055 symtab. */
4056
43f3e411
DE
4057static struct compunit_symtab *
4058recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
4059 CORE_ADDR pc)
9703b513
TT
4060{
4061 int i;
4062
43f3e411
DE
4063 if (COMPUNIT_BLOCKVECTOR (cust) != NULL
4064 && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
4065 return cust;
9703b513 4066
43f3e411 4067 if (cust->includes == NULL)
a3ec0bb1
DE
4068 return NULL;
4069
43f3e411 4070 for (i = 0; cust->includes[i]; ++i)
9703b513 4071 {
43f3e411 4072 struct compunit_symtab *s = cust->includes[i];
9703b513 4073
43f3e411 4074 s = recursively_find_pc_sect_compunit_symtab (s, pc);
9703b513
TT
4075 if (s != NULL)
4076 return s;
4077 }
4078
4079 return NULL;
4080}
4081
43f3e411
DE
4082static struct compunit_symtab *
4083dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
4084 struct bound_minimal_symbol msymbol,
4085 CORE_ADDR pc,
4086 struct obj_section *section,
4087 int warn_if_readin)
9291a0cd
TT
4088{
4089 struct dwarf2_per_cu_data *data;
43f3e411 4090 struct compunit_symtab *result;
9291a0cd
TT
4091
4092 dw2_setup (objfile);
4093
4094 if (!objfile->psymtabs_addrmap)
4095 return NULL;
4096
4097 data = addrmap_find (objfile->psymtabs_addrmap, pc);
4098 if (!data)
4099 return NULL;
4100
43f3e411 4101 if (warn_if_readin && data->v.quick->compunit_symtab)
abebb8b0 4102 warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
9291a0cd
TT
4103 paddress (get_objfile_arch (objfile), pc));
4104
43f3e411
DE
4105 result
4106 = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data),
4107 pc);
9703b513
TT
4108 gdb_assert (result != NULL);
4109 return result;
9291a0cd
TT
4110}
4111
9291a0cd 4112static void
44b13c5a 4113dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
74e2f255 4114 void *data, int need_fullname)
9291a0cd
TT
4115{
4116 int i;
24c79950
TT
4117 struct cleanup *cleanup;
4118 htab_t visited = htab_create_alloc (10, htab_hash_pointer, htab_eq_pointer,
4119 NULL, xcalloc, xfree);
9291a0cd 4120
24c79950 4121 cleanup = make_cleanup_htab_delete (visited);
9291a0cd 4122 dw2_setup (objfile);
ae2de4f8 4123
848e3e78
DE
4124 /* The rule is CUs specify all the files, including those used by
4125 any TU, so there's no need to scan TUs here.
4126 We can ignore file names coming from already-expanded CUs. */
f4dc4d17 4127
848e3e78 4128 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
24c79950 4129 {
8832e7e3 4130 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
24c79950 4131
43f3e411 4132 if (per_cu->v.quick->compunit_symtab)
24c79950
TT
4133 {
4134 void **slot = htab_find_slot (visited, per_cu->v.quick->file_names,
4135 INSERT);
4136
4137 *slot = per_cu->v.quick->file_names;
4138 }
4139 }
4140
848e3e78 4141 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
4142 {
4143 int j;
8832e7e3 4144 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
7b9f3c50 4145 struct quick_file_names *file_data;
24c79950 4146 void **slot;
9291a0cd 4147
3d7bb9d9 4148 /* We only need to look at symtabs not already expanded. */
43f3e411 4149 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
4150 continue;
4151
e4a48d9d 4152 file_data = dw2_get_file_names (per_cu);
7b9f3c50 4153 if (file_data == NULL)
9291a0cd
TT
4154 continue;
4155
24c79950
TT
4156 slot = htab_find_slot (visited, file_data, INSERT);
4157 if (*slot)
4158 {
4159 /* Already visited. */
4160 continue;
4161 }
4162 *slot = file_data;
4163
7b9f3c50 4164 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 4165 {
74e2f255
DE
4166 const char *this_real_name;
4167
4168 if (need_fullname)
4169 this_real_name = dw2_get_real_path (objfile, file_data, j);
4170 else
4171 this_real_name = NULL;
7b9f3c50 4172 (*fun) (file_data->file_names[j], this_real_name, data);
9291a0cd
TT
4173 }
4174 }
24c79950
TT
4175
4176 do_cleanups (cleanup);
9291a0cd
TT
4177}
4178
4179static int
4180dw2_has_symbols (struct objfile *objfile)
4181{
4182 return 1;
4183}
4184
4185const struct quick_symbol_functions dwarf2_gdb_index_functions =
4186{
4187 dw2_has_symbols,
4188 dw2_find_last_source_symtab,
4189 dw2_forget_cached_source_info,
f8eba3c6 4190 dw2_map_symtabs_matching_filename,
9291a0cd 4191 dw2_lookup_symbol,
9291a0cd
TT
4192 dw2_print_stats,
4193 dw2_dump,
4194 dw2_relocate,
4195 dw2_expand_symtabs_for_function,
4196 dw2_expand_all_symtabs,
652a8996 4197 dw2_expand_symtabs_with_fullname,
40658b94 4198 dw2_map_matching_symbols,
9291a0cd 4199 dw2_expand_symtabs_matching,
43f3e411 4200 dw2_find_pc_sect_compunit_symtab,
9291a0cd
TT
4201 dw2_map_symbol_filenames
4202};
4203
4204/* Initialize for reading DWARF for this objfile. Return 0 if this
4205 file will use psymtabs, or 1 if using the GNU index. */
4206
4207int
4208dwarf2_initialize_objfile (struct objfile *objfile)
4209{
4210 /* If we're about to read full symbols, don't bother with the
4211 indices. In this case we also don't care if some other debug
4212 format is making psymtabs, because they are all about to be
4213 expanded anyway. */
4214 if ((objfile->flags & OBJF_READNOW))
4215 {
4216 int i;
4217
4218 dwarf2_per_objfile->using_index = 1;
4219 create_all_comp_units (objfile);
0e50663e 4220 create_all_type_units (objfile);
7b9f3c50
DE
4221 dwarf2_per_objfile->quick_file_names_table =
4222 create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
9291a0cd 4223
1fd400ff 4224 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
d467dd73 4225 + dwarf2_per_objfile->n_type_units); ++i)
9291a0cd 4226 {
8832e7e3 4227 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 4228
e254ef6a
DE
4229 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4230 struct dwarf2_per_cu_quick_data);
9291a0cd
TT
4231 }
4232
4233 /* Return 1 so that gdb sees the "quick" functions. However,
4234 these functions will be no-ops because we will have expanded
4235 all symtabs. */
4236 return 1;
4237 }
4238
4239 if (dwarf2_read_index (objfile))
4240 return 1;
4241
9291a0cd
TT
4242 return 0;
4243}
4244
4245\f
4246
dce234bc
PP
4247/* Build a partial symbol table. */
4248
4249void
f29dff0a 4250dwarf2_build_psymtabs (struct objfile *objfile)
dce234bc 4251{
c9bf0622 4252
f29dff0a 4253 if (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0)
c906108c
SS
4254 {
4255 init_psymbol_list (objfile, 1024);
4256 }
4257
492d29ea 4258 TRY
c9bf0622
TT
4259 {
4260 /* This isn't really ideal: all the data we allocate on the
4261 objfile's obstack is still uselessly kept around. However,
4262 freeing it seems unsafe. */
4263 struct cleanup *cleanups = make_cleanup_discard_psymtabs (objfile);
4264
4265 dwarf2_build_psymtabs_hard (objfile);
4266 discard_cleanups (cleanups);
4267 }
492d29ea
PA
4268 CATCH (except, RETURN_MASK_ERROR)
4269 {
4270 exception_print (gdb_stderr, except);
4271 }
4272 END_CATCH
c906108c 4273}
c906108c 4274
1ce1cefd
DE
4275/* Return the total length of the CU described by HEADER. */
4276
4277static unsigned int
4278get_cu_length (const struct comp_unit_head *header)
4279{
4280 return header->initial_length_size + header->length;
4281}
4282
45452591
DE
4283/* Return TRUE if OFFSET is within CU_HEADER. */
4284
4285static inline int
b64f50a1 4286offset_in_cu_p (const struct comp_unit_head *cu_header, sect_offset offset)
45452591 4287{
b64f50a1 4288 sect_offset bottom = { cu_header->offset.sect_off };
1ce1cefd 4289 sect_offset top = { cu_header->offset.sect_off + get_cu_length (cu_header) };
9a619af0 4290
b64f50a1 4291 return (offset.sect_off >= bottom.sect_off && offset.sect_off < top.sect_off);
45452591
DE
4292}
4293
3b80fe9b
DE
4294/* Find the base address of the compilation unit for range lists and
4295 location lists. It will normally be specified by DW_AT_low_pc.
4296 In DWARF-3 draft 4, the base address could be overridden by
4297 DW_AT_entry_pc. It's been removed, but GCC still uses this for
4298 compilation units with discontinuous ranges. */
4299
4300static void
4301dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
4302{
4303 struct attribute *attr;
4304
4305 cu->base_known = 0;
4306 cu->base_address = 0;
4307
4308 attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
4309 if (attr)
4310 {
31aa7e4e 4311 cu->base_address = attr_value_as_address (attr);
3b80fe9b
DE
4312 cu->base_known = 1;
4313 }
4314 else
4315 {
4316 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
4317 if (attr)
4318 {
31aa7e4e 4319 cu->base_address = attr_value_as_address (attr);
3b80fe9b
DE
4320 cu->base_known = 1;
4321 }
4322 }
4323}
4324
93311388
DE
4325/* Read in the comp unit header information from the debug_info at info_ptr.
4326 NOTE: This leaves members offset, first_die_offset to be filled in
4327 by the caller. */
107d2387 4328
d521ce57 4329static const gdb_byte *
107d2387 4330read_comp_unit_head (struct comp_unit_head *cu_header,
d521ce57 4331 const gdb_byte *info_ptr, bfd *abfd)
107d2387
AC
4332{
4333 int signed_addr;
891d2f0b 4334 unsigned int bytes_read;
c764a876
DE
4335
4336 cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
4337 cu_header->initial_length_size = bytes_read;
4338 cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
613e1657 4339 info_ptr += bytes_read;
107d2387
AC
4340 cu_header->version = read_2_bytes (abfd, info_ptr);
4341 info_ptr += 2;
b64f50a1
JK
4342 cu_header->abbrev_offset.sect_off = read_offset (abfd, info_ptr, cu_header,
4343 &bytes_read);
613e1657 4344 info_ptr += bytes_read;
107d2387
AC
4345 cu_header->addr_size = read_1_byte (abfd, info_ptr);
4346 info_ptr += 1;
4347 signed_addr = bfd_get_sign_extend_vma (abfd);
4348 if (signed_addr < 0)
8e65ff28 4349 internal_error (__FILE__, __LINE__,
e2e0b3e5 4350 _("read_comp_unit_head: dwarf from non elf file"));
107d2387 4351 cu_header->signed_addr_p = signed_addr;
c764a876 4352
107d2387
AC
4353 return info_ptr;
4354}
4355
36586728
TT
4356/* Helper function that returns the proper abbrev section for
4357 THIS_CU. */
4358
4359static struct dwarf2_section_info *
4360get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
4361{
4362 struct dwarf2_section_info *abbrev;
4363
4364 if (this_cu->is_dwz)
4365 abbrev = &dwarf2_get_dwz_file ()->abbrev;
4366 else
4367 abbrev = &dwarf2_per_objfile->abbrev;
4368
4369 return abbrev;
4370}
4371
9ff913ba
DE
4372/* Subroutine of read_and_check_comp_unit_head and
4373 read_and_check_type_unit_head to simplify them.
4374 Perform various error checking on the header. */
4375
4376static void
4377error_check_comp_unit_head (struct comp_unit_head *header,
4bdcc0c1
DE
4378 struct dwarf2_section_info *section,
4379 struct dwarf2_section_info *abbrev_section)
9ff913ba 4380{
a32a8923
DE
4381 bfd *abfd = get_section_bfd_owner (section);
4382 const char *filename = get_section_file_name (section);
9ff913ba
DE
4383
4384 if (header->version != 2 && header->version != 3 && header->version != 4)
4385 error (_("Dwarf Error: wrong version in compilation unit header "
4386 "(is %d, should be 2, 3, or 4) [in module %s]"), header->version,
4387 filename);
4388
b64f50a1 4389 if (header->abbrev_offset.sect_off
36586728 4390 >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
9ff913ba
DE
4391 error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
4392 "(offset 0x%lx + 6) [in module %s]"),
b64f50a1 4393 (long) header->abbrev_offset.sect_off, (long) header->offset.sect_off,
9ff913ba
DE
4394 filename);
4395
4396 /* Cast to unsigned long to use 64-bit arithmetic when possible to
4397 avoid potential 32-bit overflow. */
1ce1cefd 4398 if (((unsigned long) header->offset.sect_off + get_cu_length (header))
9ff913ba
DE
4399 > section->size)
4400 error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
4401 "(offset 0x%lx + 0) [in module %s]"),
b64f50a1 4402 (long) header->length, (long) header->offset.sect_off,
9ff913ba
DE
4403 filename);
4404}
4405
4406/* Read in a CU/TU header and perform some basic error checking.
4407 The contents of the header are stored in HEADER.
4408 The result is a pointer to the start of the first DIE. */
adabb602 4409
d521ce57 4410static const gdb_byte *
9ff913ba
DE
4411read_and_check_comp_unit_head (struct comp_unit_head *header,
4412 struct dwarf2_section_info *section,
4bdcc0c1 4413 struct dwarf2_section_info *abbrev_section,
d521ce57 4414 const gdb_byte *info_ptr,
9ff913ba 4415 int is_debug_types_section)
72bf9492 4416{
d521ce57 4417 const gdb_byte *beg_of_comp_unit = info_ptr;
a32a8923 4418 bfd *abfd = get_section_bfd_owner (section);
72bf9492 4419
b64f50a1 4420 header->offset.sect_off = beg_of_comp_unit - section->buffer;
adabb602 4421
72bf9492
DJ
4422 info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4423
460c1c54
CC
4424 /* If we're reading a type unit, skip over the signature and
4425 type_offset fields. */
b0df02fd 4426 if (is_debug_types_section)
460c1c54
CC
4427 info_ptr += 8 /*signature*/ + header->offset_size;
4428
b64f50a1 4429 header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
adabb602 4430
4bdcc0c1 4431 error_check_comp_unit_head (header, section, abbrev_section);
72bf9492
DJ
4432
4433 return info_ptr;
4434}
4435
348e048f
DE
4436/* Read in the types comp unit header information from .debug_types entry at
4437 types_ptr. The result is a pointer to one past the end of the header. */
4438
d521ce57 4439static const gdb_byte *
9ff913ba
DE
4440read_and_check_type_unit_head (struct comp_unit_head *header,
4441 struct dwarf2_section_info *section,
4bdcc0c1 4442 struct dwarf2_section_info *abbrev_section,
d521ce57 4443 const gdb_byte *info_ptr,
dee91e82
DE
4444 ULONGEST *signature,
4445 cu_offset *type_offset_in_tu)
348e048f 4446{
d521ce57 4447 const gdb_byte *beg_of_comp_unit = info_ptr;
a32a8923 4448 bfd *abfd = get_section_bfd_owner (section);
348e048f 4449
b64f50a1 4450 header->offset.sect_off = beg_of_comp_unit - section->buffer;
348e048f 4451
9ff913ba 4452 info_ptr = read_comp_unit_head (header, info_ptr, abfd);
348e048f 4453
9ff913ba
DE
4454 /* If we're reading a type unit, skip over the signature and
4455 type_offset fields. */
4456 if (signature != NULL)
4457 *signature = read_8_bytes (abfd, info_ptr);
4458 info_ptr += 8;
dee91e82
DE
4459 if (type_offset_in_tu != NULL)
4460 type_offset_in_tu->cu_off = read_offset_1 (abfd, info_ptr,
4461 header->offset_size);
9ff913ba
DE
4462 info_ptr += header->offset_size;
4463
b64f50a1 4464 header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
348e048f 4465
4bdcc0c1 4466 error_check_comp_unit_head (header, section, abbrev_section);
9ff913ba
DE
4467
4468 return info_ptr;
348e048f
DE
4469}
4470
f4dc4d17
DE
4471/* Fetch the abbreviation table offset from a comp or type unit header. */
4472
4473static sect_offset
4474read_abbrev_offset (struct dwarf2_section_info *section,
4475 sect_offset offset)
4476{
a32a8923 4477 bfd *abfd = get_section_bfd_owner (section);
d521ce57 4478 const gdb_byte *info_ptr;
f4dc4d17
DE
4479 unsigned int length, initial_length_size, offset_size;
4480 sect_offset abbrev_offset;
4481
4482 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
4483 info_ptr = section->buffer + offset.sect_off;
4484 length = read_initial_length (abfd, info_ptr, &initial_length_size);
4485 offset_size = initial_length_size == 4 ? 4 : 8;
4486 info_ptr += initial_length_size + 2 /*version*/;
4487 abbrev_offset.sect_off = read_offset_1 (abfd, info_ptr, offset_size);
4488 return abbrev_offset;
4489}
4490
aaa75496
JB
4491/* Allocate a new partial symtab for file named NAME and mark this new
4492 partial symtab as being an include of PST. */
4493
4494static void
d521ce57 4495dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
aaa75496
JB
4496 struct objfile *objfile)
4497{
4498 struct partial_symtab *subpst = allocate_psymtab (name, objfile);
4499
fbd9ab74
JK
4500 if (!IS_ABSOLUTE_PATH (subpst->filename))
4501 {
4502 /* It shares objfile->objfile_obstack. */
4503 subpst->dirname = pst->dirname;
4504 }
4505
aaa75496
JB
4506 subpst->textlow = 0;
4507 subpst->texthigh = 0;
4508
4509 subpst->dependencies = (struct partial_symtab **)
4510 obstack_alloc (&objfile->objfile_obstack,
4511 sizeof (struct partial_symtab *));
4512 subpst->dependencies[0] = pst;
4513 subpst->number_of_dependencies = 1;
4514
4515 subpst->globals_offset = 0;
4516 subpst->n_global_syms = 0;
4517 subpst->statics_offset = 0;
4518 subpst->n_static_syms = 0;
43f3e411 4519 subpst->compunit_symtab = NULL;
aaa75496
JB
4520 subpst->read_symtab = pst->read_symtab;
4521 subpst->readin = 0;
4522
4523 /* No private part is necessary for include psymtabs. This property
4524 can be used to differentiate between such include psymtabs and
10b3939b 4525 the regular ones. */
58a9656e 4526 subpst->read_symtab_private = NULL;
aaa75496
JB
4527}
4528
4529/* Read the Line Number Program data and extract the list of files
4530 included by the source file represented by PST. Build an include
d85a05f0 4531 partial symtab for each of these included files. */
aaa75496
JB
4532
4533static void
4534dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
dee91e82
DE
4535 struct die_info *die,
4536 struct partial_symtab *pst)
aaa75496 4537{
d85a05f0
DJ
4538 struct line_header *lh = NULL;
4539 struct attribute *attr;
aaa75496 4540
d85a05f0
DJ
4541 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
4542 if (attr)
3019eac3 4543 lh = dwarf_decode_line_header (DW_UNSND (attr), cu);
aaa75496
JB
4544 if (lh == NULL)
4545 return; /* No linetable, so no includes. */
4546
c6da4cef 4547 /* NOTE: pst->dirname is DW_AT_comp_dir (if present). */
527f3840 4548 dwarf_decode_lines (lh, pst->dirname, cu, pst, pst->textlow, 1);
aaa75496
JB
4549
4550 free_line_header (lh);
4551}
4552
348e048f 4553static hashval_t
52dc124a 4554hash_signatured_type (const void *item)
348e048f 4555{
52dc124a 4556 const struct signatured_type *sig_type = item;
9a619af0 4557
348e048f 4558 /* This drops the top 32 bits of the signature, but is ok for a hash. */
52dc124a 4559 return sig_type->signature;
348e048f
DE
4560}
4561
4562static int
52dc124a 4563eq_signatured_type (const void *item_lhs, const void *item_rhs)
348e048f
DE
4564{
4565 const struct signatured_type *lhs = item_lhs;
4566 const struct signatured_type *rhs = item_rhs;
9a619af0 4567
348e048f
DE
4568 return lhs->signature == rhs->signature;
4569}
4570
1fd400ff
TT
4571/* Allocate a hash table for signatured types. */
4572
4573static htab_t
673bfd45 4574allocate_signatured_type_table (struct objfile *objfile)
1fd400ff
TT
4575{
4576 return htab_create_alloc_ex (41,
52dc124a
DE
4577 hash_signatured_type,
4578 eq_signatured_type,
1fd400ff
TT
4579 NULL,
4580 &objfile->objfile_obstack,
4581 hashtab_obstack_allocate,
4582 dummy_obstack_deallocate);
4583}
4584
d467dd73 4585/* A helper function to add a signatured type CU to a table. */
1fd400ff
TT
4586
4587static int
d467dd73 4588add_signatured_type_cu_to_table (void **slot, void *datum)
1fd400ff
TT
4589{
4590 struct signatured_type *sigt = *slot;
b4dd5633 4591 struct signatured_type ***datap = datum;
1fd400ff 4592
b4dd5633 4593 **datap = sigt;
1fd400ff
TT
4594 ++*datap;
4595
4596 return 1;
4597}
4598
c88ee1f0
DE
4599/* Create the hash table of all entries in the .debug_types
4600 (or .debug_types.dwo) section(s).
4601 If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
4602 otherwise it is NULL.
4603
4604 The result is a pointer to the hash table or NULL if there are no types.
4605
4606 Note: This function processes DWO files only, not DWP files. */
348e048f 4607
3019eac3
DE
4608static htab_t
4609create_debug_types_hash_table (struct dwo_file *dwo_file,
4610 VEC (dwarf2_section_info_def) *types)
348e048f 4611{
3019eac3 4612 struct objfile *objfile = dwarf2_per_objfile->objfile;
8b70b953 4613 htab_t types_htab = NULL;
8b70b953
TT
4614 int ix;
4615 struct dwarf2_section_info *section;
4bdcc0c1 4616 struct dwarf2_section_info *abbrev_section;
348e048f 4617
3019eac3
DE
4618 if (VEC_empty (dwarf2_section_info_def, types))
4619 return NULL;
348e048f 4620
4bdcc0c1
DE
4621 abbrev_section = (dwo_file != NULL
4622 ? &dwo_file->sections.abbrev
4623 : &dwarf2_per_objfile->abbrev);
4624
b4f54984 4625 if (dwarf_read_debug)
09406207
DE
4626 fprintf_unfiltered (gdb_stdlog, "Reading .debug_types%s for %s:\n",
4627 dwo_file ? ".dwo" : "",
a32a8923 4628 get_section_file_name (abbrev_section));
09406207 4629
8b70b953 4630 for (ix = 0;
3019eac3 4631 VEC_iterate (dwarf2_section_info_def, types, ix, section);
8b70b953
TT
4632 ++ix)
4633 {
3019eac3 4634 bfd *abfd;
d521ce57 4635 const gdb_byte *info_ptr, *end_ptr;
348e048f 4636
8b70b953
TT
4637 dwarf2_read_section (objfile, section);
4638 info_ptr = section->buffer;
348e048f 4639
8b70b953
TT
4640 if (info_ptr == NULL)
4641 continue;
348e048f 4642
3019eac3 4643 /* We can't set abfd until now because the section may be empty or
a32a8923
DE
4644 not present, in which case the bfd is unknown. */
4645 abfd = get_section_bfd_owner (section);
3019eac3 4646
dee91e82
DE
4647 /* We don't use init_cutu_and_read_dies_simple, or some such, here
4648 because we don't need to read any dies: the signature is in the
4649 header. */
8b70b953
TT
4650
4651 end_ptr = info_ptr + section->size;
4652 while (info_ptr < end_ptr)
4653 {
b64f50a1 4654 sect_offset offset;
3019eac3 4655 cu_offset type_offset_in_tu;
8b70b953 4656 ULONGEST signature;
52dc124a 4657 struct signatured_type *sig_type;
3019eac3 4658 struct dwo_unit *dwo_tu;
8b70b953 4659 void **slot;
d521ce57 4660 const gdb_byte *ptr = info_ptr;
9ff913ba 4661 struct comp_unit_head header;
dee91e82 4662 unsigned int length;
348e048f 4663
b64f50a1 4664 offset.sect_off = ptr - section->buffer;
348e048f 4665
8b70b953 4666 /* We need to read the type's signature in order to build the hash
9ff913ba 4667 table, but we don't need anything else just yet. */
348e048f 4668
4bdcc0c1
DE
4669 ptr = read_and_check_type_unit_head (&header, section,
4670 abbrev_section, ptr,
3019eac3 4671 &signature, &type_offset_in_tu);
6caca83c 4672
1ce1cefd 4673 length = get_cu_length (&header);
dee91e82 4674
6caca83c 4675 /* Skip dummy type units. */
dee91e82
DE
4676 if (ptr >= info_ptr + length
4677 || peek_abbrev_code (abfd, ptr) == 0)
6caca83c 4678 {
1ce1cefd 4679 info_ptr += length;
6caca83c
CC
4680 continue;
4681 }
8b70b953 4682
0349ea22
DE
4683 if (types_htab == NULL)
4684 {
4685 if (dwo_file)
4686 types_htab = allocate_dwo_unit_table (objfile);
4687 else
4688 types_htab = allocate_signatured_type_table (objfile);
4689 }
4690
3019eac3
DE
4691 if (dwo_file)
4692 {
4693 sig_type = NULL;
4694 dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4695 struct dwo_unit);
4696 dwo_tu->dwo_file = dwo_file;
4697 dwo_tu->signature = signature;
4698 dwo_tu->type_offset_in_tu = type_offset_in_tu;
8a0459fd 4699 dwo_tu->section = section;
3019eac3
DE
4700 dwo_tu->offset = offset;
4701 dwo_tu->length = length;
4702 }
4703 else
4704 {
4705 /* N.B.: type_offset is not usable if this type uses a DWO file.
4706 The real type_offset is in the DWO file. */
4707 dwo_tu = NULL;
4708 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4709 struct signatured_type);
4710 sig_type->signature = signature;
4711 sig_type->type_offset_in_tu = type_offset_in_tu;
4712 sig_type->per_cu.objfile = objfile;
4713 sig_type->per_cu.is_debug_types = 1;
8a0459fd 4714 sig_type->per_cu.section = section;
3019eac3
DE
4715 sig_type->per_cu.offset = offset;
4716 sig_type->per_cu.length = length;
4717 }
8b70b953 4718
3019eac3
DE
4719 slot = htab_find_slot (types_htab,
4720 dwo_file ? (void*) dwo_tu : (void *) sig_type,
4721 INSERT);
8b70b953
TT
4722 gdb_assert (slot != NULL);
4723 if (*slot != NULL)
4724 {
3019eac3
DE
4725 sect_offset dup_offset;
4726
4727 if (dwo_file)
4728 {
4729 const struct dwo_unit *dup_tu = *slot;
4730
4731 dup_offset = dup_tu->offset;
4732 }
4733 else
4734 {
4735 const struct signatured_type *dup_tu = *slot;
4736
4737 dup_offset = dup_tu->per_cu.offset;
4738 }
b3c8eb43 4739
8b70b953 4740 complaint (&symfile_complaints,
c88ee1f0 4741 _("debug type entry at offset 0x%x is duplicate to"
4031ecc5 4742 " the entry at offset 0x%x, signature %s"),
3019eac3 4743 offset.sect_off, dup_offset.sect_off,
4031ecc5 4744 hex_string (signature));
8b70b953 4745 }
3019eac3 4746 *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
348e048f 4747
b4f54984 4748 if (dwarf_read_debug > 1)
4031ecc5 4749 fprintf_unfiltered (gdb_stdlog, " offset 0x%x, signature %s\n",
b64f50a1 4750 offset.sect_off,
4031ecc5 4751 hex_string (signature));
348e048f 4752
dee91e82 4753 info_ptr += length;
8b70b953 4754 }
348e048f
DE
4755 }
4756
3019eac3
DE
4757 return types_htab;
4758}
4759
4760/* Create the hash table of all entries in the .debug_types section,
4761 and initialize all_type_units.
4762 The result is zero if there is an error (e.g. missing .debug_types section),
4763 otherwise non-zero. */
4764
4765static int
4766create_all_type_units (struct objfile *objfile)
4767{
4768 htab_t types_htab;
b4dd5633 4769 struct signatured_type **iter;
3019eac3
DE
4770
4771 types_htab = create_debug_types_hash_table (NULL, dwarf2_per_objfile->types);
4772 if (types_htab == NULL)
4773 {
4774 dwarf2_per_objfile->signatured_types = NULL;
4775 return 0;
4776 }
4777
348e048f
DE
4778 dwarf2_per_objfile->signatured_types = types_htab;
4779
6aa5f3a6
DE
4780 dwarf2_per_objfile->n_type_units
4781 = dwarf2_per_objfile->n_allocated_type_units
4782 = htab_elements (types_htab);
d467dd73 4783 dwarf2_per_objfile->all_type_units
a2ce51a0
DE
4784 = xmalloc (dwarf2_per_objfile->n_type_units
4785 * sizeof (struct signatured_type *));
d467dd73
DE
4786 iter = &dwarf2_per_objfile->all_type_units[0];
4787 htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table, &iter);
4788 gdb_assert (iter - &dwarf2_per_objfile->all_type_units[0]
4789 == dwarf2_per_objfile->n_type_units);
1fd400ff 4790
348e048f
DE
4791 return 1;
4792}
4793
6aa5f3a6
DE
4794/* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
4795 If SLOT is non-NULL, it is the entry to use in the hash table.
4796 Otherwise we find one. */
4797
4798static struct signatured_type *
4799add_type_unit (ULONGEST sig, void **slot)
4800{
4801 struct objfile *objfile = dwarf2_per_objfile->objfile;
4802 int n_type_units = dwarf2_per_objfile->n_type_units;
4803 struct signatured_type *sig_type;
4804
4805 gdb_assert (n_type_units <= dwarf2_per_objfile->n_allocated_type_units);
4806 ++n_type_units;
4807 if (n_type_units > dwarf2_per_objfile->n_allocated_type_units)
4808 {
4809 if (dwarf2_per_objfile->n_allocated_type_units == 0)
4810 dwarf2_per_objfile->n_allocated_type_units = 1;
4811 dwarf2_per_objfile->n_allocated_type_units *= 2;
4812 dwarf2_per_objfile->all_type_units
4813 = xrealloc (dwarf2_per_objfile->all_type_units,
4814 dwarf2_per_objfile->n_allocated_type_units
4815 * sizeof (struct signatured_type *));
4816 ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
4817 }
4818 dwarf2_per_objfile->n_type_units = n_type_units;
4819
4820 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4821 struct signatured_type);
4822 dwarf2_per_objfile->all_type_units[n_type_units - 1] = sig_type;
4823 sig_type->signature = sig;
4824 sig_type->per_cu.is_debug_types = 1;
4825 if (dwarf2_per_objfile->using_index)
4826 {
4827 sig_type->per_cu.v.quick =
4828 OBSTACK_ZALLOC (&objfile->objfile_obstack,
4829 struct dwarf2_per_cu_quick_data);
4830 }
4831
4832 if (slot == NULL)
4833 {
4834 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4835 sig_type, INSERT);
4836 }
4837 gdb_assert (*slot == NULL);
4838 *slot = sig_type;
4839 /* The rest of sig_type must be filled in by the caller. */
4840 return sig_type;
4841}
4842
a2ce51a0
DE
4843/* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
4844 Fill in SIG_ENTRY with DWO_ENTRY. */
4845
4846static void
4847fill_in_sig_entry_from_dwo_entry (struct objfile *objfile,
4848 struct signatured_type *sig_entry,
4849 struct dwo_unit *dwo_entry)
4850{
7ee85ab1 4851 /* Make sure we're not clobbering something we don't expect to. */
a2ce51a0
DE
4852 gdb_assert (! sig_entry->per_cu.queued);
4853 gdb_assert (sig_entry->per_cu.cu == NULL);
6aa5f3a6
DE
4854 if (dwarf2_per_objfile->using_index)
4855 {
4856 gdb_assert (sig_entry->per_cu.v.quick != NULL);
43f3e411 4857 gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6aa5f3a6
DE
4858 }
4859 else
4860 gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
a2ce51a0
DE
4861 gdb_assert (sig_entry->signature == dwo_entry->signature);
4862 gdb_assert (sig_entry->type_offset_in_section.sect_off == 0);
4863 gdb_assert (sig_entry->type_unit_group == NULL);
7ee85ab1
DE
4864 gdb_assert (sig_entry->dwo_unit == NULL);
4865
4866 sig_entry->per_cu.section = dwo_entry->section;
4867 sig_entry->per_cu.offset = dwo_entry->offset;
4868 sig_entry->per_cu.length = dwo_entry->length;
4869 sig_entry->per_cu.reading_dwo_directly = 1;
4870 sig_entry->per_cu.objfile = objfile;
a2ce51a0
DE
4871 sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
4872 sig_entry->dwo_unit = dwo_entry;
4873}
4874
4875/* Subroutine of lookup_signatured_type.
7ee85ab1
DE
4876 If we haven't read the TU yet, create the signatured_type data structure
4877 for a TU to be read in directly from a DWO file, bypassing the stub.
4878 This is the "Stay in DWO Optimization": When there is no DWP file and we're
4879 using .gdb_index, then when reading a CU we want to stay in the DWO file
4880 containing that CU. Otherwise we could end up reading several other DWO
4881 files (due to comdat folding) to process the transitive closure of all the
4882 mentioned TUs, and that can be slow. The current DWO file will have every
4883 type signature that it needs.
a2ce51a0
DE
4884 We only do this for .gdb_index because in the psymtab case we already have
4885 to read all the DWOs to build the type unit groups. */
4886
4887static struct signatured_type *
4888lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4889{
4890 struct objfile *objfile = dwarf2_per_objfile->objfile;
4891 struct dwo_file *dwo_file;
4892 struct dwo_unit find_dwo_entry, *dwo_entry;
4893 struct signatured_type find_sig_entry, *sig_entry;
6aa5f3a6 4894 void **slot;
a2ce51a0
DE
4895
4896 gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4897
6aa5f3a6
DE
4898 /* If TU skeletons have been removed then we may not have read in any
4899 TUs yet. */
4900 if (dwarf2_per_objfile->signatured_types == NULL)
4901 {
4902 dwarf2_per_objfile->signatured_types
4903 = allocate_signatured_type_table (objfile);
4904 }
a2ce51a0
DE
4905
4906 /* We only ever need to read in one copy of a signatured type.
6aa5f3a6
DE
4907 Use the global signatured_types array to do our own comdat-folding
4908 of types. If this is the first time we're reading this TU, and
4909 the TU has an entry in .gdb_index, replace the recorded data from
4910 .gdb_index with this TU. */
a2ce51a0 4911
a2ce51a0 4912 find_sig_entry.signature = sig;
6aa5f3a6
DE
4913 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4914 &find_sig_entry, INSERT);
4915 sig_entry = *slot;
7ee85ab1
DE
4916
4917 /* We can get here with the TU already read, *or* in the process of being
6aa5f3a6
DE
4918 read. Don't reassign the global entry to point to this DWO if that's
4919 the case. Also note that if the TU is already being read, it may not
4920 have come from a DWO, the program may be a mix of Fission-compiled
4921 code and non-Fission-compiled code. */
4922
4923 /* Have we already tried to read this TU?
4924 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
4925 needn't exist in the global table yet). */
4926 if (sig_entry != NULL && sig_entry->per_cu.tu_read)
a2ce51a0
DE
4927 return sig_entry;
4928
6aa5f3a6
DE
4929 /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
4930 dwo_unit of the TU itself. */
4931 dwo_file = cu->dwo_unit->dwo_file;
4932
a2ce51a0
DE
4933 /* Ok, this is the first time we're reading this TU. */
4934 if (dwo_file->tus == NULL)
4935 return NULL;
4936 find_dwo_entry.signature = sig;
4937 dwo_entry = htab_find (dwo_file->tus, &find_dwo_entry);
4938 if (dwo_entry == NULL)
4939 return NULL;
4940
6aa5f3a6
DE
4941 /* If the global table doesn't have an entry for this TU, add one. */
4942 if (sig_entry == NULL)
4943 sig_entry = add_type_unit (sig, slot);
4944
a2ce51a0 4945 fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
89e63ee4 4946 sig_entry->per_cu.tu_read = 1;
a2ce51a0
DE
4947 return sig_entry;
4948}
4949
a2ce51a0
DE
4950/* Subroutine of lookup_signatured_type.
4951 Look up the type for signature SIG, and if we can't find SIG in .gdb_index
6aa5f3a6
DE
4952 then try the DWP file. If the TU stub (skeleton) has been removed then
4953 it won't be in .gdb_index. */
a2ce51a0
DE
4954
4955static struct signatured_type *
4956lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4957{
4958 struct objfile *objfile = dwarf2_per_objfile->objfile;
4959 struct dwp_file *dwp_file = get_dwp_file ();
4960 struct dwo_unit *dwo_entry;
4961 struct signatured_type find_sig_entry, *sig_entry;
6aa5f3a6 4962 void **slot;
a2ce51a0
DE
4963
4964 gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4965 gdb_assert (dwp_file != NULL);
4966
6aa5f3a6
DE
4967 /* If TU skeletons have been removed then we may not have read in any
4968 TUs yet. */
4969 if (dwarf2_per_objfile->signatured_types == NULL)
a2ce51a0 4970 {
6aa5f3a6
DE
4971 dwarf2_per_objfile->signatured_types
4972 = allocate_signatured_type_table (objfile);
a2ce51a0
DE
4973 }
4974
6aa5f3a6
DE
4975 find_sig_entry.signature = sig;
4976 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4977 &find_sig_entry, INSERT);
4978 sig_entry = *slot;
4979
4980 /* Have we already tried to read this TU?
4981 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
4982 needn't exist in the global table yet). */
4983 if (sig_entry != NULL)
4984 return sig_entry;
4985
a2ce51a0
DE
4986 if (dwp_file->tus == NULL)
4987 return NULL;
57d63ce2
DE
4988 dwo_entry = lookup_dwo_unit_in_dwp (dwp_file, NULL,
4989 sig, 1 /* is_debug_types */);
a2ce51a0
DE
4990 if (dwo_entry == NULL)
4991 return NULL;
4992
6aa5f3a6 4993 sig_entry = add_type_unit (sig, slot);
a2ce51a0
DE
4994 fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
4995
a2ce51a0
DE
4996 return sig_entry;
4997}
4998
380bca97 4999/* Lookup a signature based type for DW_FORM_ref_sig8.
5a8b3f62
DE
5000 Returns NULL if signature SIG is not present in the table.
5001 It is up to the caller to complain about this. */
348e048f
DE
5002
5003static struct signatured_type *
a2ce51a0 5004lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
348e048f 5005{
a2ce51a0
DE
5006 if (cu->dwo_unit
5007 && dwarf2_per_objfile->using_index)
5008 {
5009 /* We're in a DWO/DWP file, and we're using .gdb_index.
5010 These cases require special processing. */
5011 if (get_dwp_file () == NULL)
5012 return lookup_dwo_signatured_type (cu, sig);
5013 else
5014 return lookup_dwp_signatured_type (cu, sig);
5015 }
5016 else
5017 {
5018 struct signatured_type find_entry, *entry;
348e048f 5019
a2ce51a0
DE
5020 if (dwarf2_per_objfile->signatured_types == NULL)
5021 return NULL;
5022 find_entry.signature = sig;
5023 entry = htab_find (dwarf2_per_objfile->signatured_types, &find_entry);
5024 return entry;
5025 }
348e048f 5026}
42e7ad6c
DE
5027\f
5028/* Low level DIE reading support. */
348e048f 5029
d85a05f0
DJ
5030/* Initialize a die_reader_specs struct from a dwarf2_cu struct. */
5031
5032static void
5033init_cu_die_reader (struct die_reader_specs *reader,
dee91e82 5034 struct dwarf2_cu *cu,
3019eac3
DE
5035 struct dwarf2_section_info *section,
5036 struct dwo_file *dwo_file)
d85a05f0 5037{
fceca515 5038 gdb_assert (section->readin && section->buffer != NULL);
a32a8923 5039 reader->abfd = get_section_bfd_owner (section);
d85a05f0 5040 reader->cu = cu;
3019eac3 5041 reader->dwo_file = dwo_file;
dee91e82
DE
5042 reader->die_section = section;
5043 reader->buffer = section->buffer;
f664829e 5044 reader->buffer_end = section->buffer + section->size;
a2ce51a0 5045 reader->comp_dir = NULL;
d85a05f0
DJ
5046}
5047
b0c7bfa9
DE
5048/* Subroutine of init_cutu_and_read_dies to simplify it.
5049 Read in the rest of a CU/TU top level DIE from DWO_UNIT.
5050 There's just a lot of work to do, and init_cutu_and_read_dies is big enough
5051 already.
5052
5053 STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
5054 from it to the DIE in the DWO. If NULL we are skipping the stub.
a2ce51a0
DE
5055 STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
5056 from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
c54a1dd8
DE
5057 attribute of the referencing CU. At most one of STUB_COMP_UNIT_DIE and
5058 STUB_COMP_DIR may be non-NULL.
b0c7bfa9
DE
5059 *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
5060 are filled in with the info of the DIE from the DWO file.
5061 ABBREV_TABLE_PROVIDED is non-zero if the caller of init_cutu_and_read_dies
5062 provided an abbrev table to use.
5063 The result is non-zero if a valid (non-dummy) DIE was found. */
5064
5065static int
5066read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
5067 struct dwo_unit *dwo_unit,
5068 int abbrev_table_provided,
5069 struct die_info *stub_comp_unit_die,
a2ce51a0 5070 const char *stub_comp_dir,
b0c7bfa9 5071 struct die_reader_specs *result_reader,
d521ce57 5072 const gdb_byte **result_info_ptr,
b0c7bfa9
DE
5073 struct die_info **result_comp_unit_die,
5074 int *result_has_children)
5075{
5076 struct objfile *objfile = dwarf2_per_objfile->objfile;
5077 struct dwarf2_cu *cu = this_cu->cu;
5078 struct dwarf2_section_info *section;
5079 bfd *abfd;
d521ce57 5080 const gdb_byte *begin_info_ptr, *info_ptr;
b0c7bfa9
DE
5081 ULONGEST signature; /* Or dwo_id. */
5082 struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
5083 int i,num_extra_attrs;
5084 struct dwarf2_section_info *dwo_abbrev_section;
5085 struct attribute *attr;
5086 struct die_info *comp_unit_die;
5087
b0aeadb3
DE
5088 /* At most one of these may be provided. */
5089 gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
a2ce51a0 5090
b0c7bfa9
DE
5091 /* These attributes aren't processed until later:
5092 DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
0d60c288
DE
5093 DW_AT_comp_dir is used now, to find the DWO file, but it is also
5094 referenced later. However, these attributes are found in the stub
5095 which we won't have later. In order to not impose this complication
5096 on the rest of the code, we read them here and copy them to the
5097 DWO CU/TU die. */
b0c7bfa9
DE
5098
5099 stmt_list = NULL;
5100 low_pc = NULL;
5101 high_pc = NULL;
5102 ranges = NULL;
5103 comp_dir = NULL;
5104
5105 if (stub_comp_unit_die != NULL)
5106 {
5107 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
5108 DWO file. */
5109 if (! this_cu->is_debug_types)
5110 stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
5111 low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
5112 high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
5113 ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
5114 comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
5115
5116 /* There should be a DW_AT_addr_base attribute here (if needed).
5117 We need the value before we can process DW_FORM_GNU_addr_index. */
5118 cu->addr_base = 0;
5119 attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
5120 if (attr)
5121 cu->addr_base = DW_UNSND (attr);
5122
5123 /* There should be a DW_AT_ranges_base attribute here (if needed).
5124 We need the value before we can process DW_AT_ranges. */
5125 cu->ranges_base = 0;
5126 attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
5127 if (attr)
5128 cu->ranges_base = DW_UNSND (attr);
5129 }
a2ce51a0
DE
5130 else if (stub_comp_dir != NULL)
5131 {
5132 /* Reconstruct the comp_dir attribute to simplify the code below. */
5133 comp_dir = (struct attribute *)
5134 obstack_alloc (&cu->comp_unit_obstack, sizeof (*comp_dir));
5135 comp_dir->name = DW_AT_comp_dir;
5136 comp_dir->form = DW_FORM_string;
5137 DW_STRING_IS_CANONICAL (comp_dir) = 0;
5138 DW_STRING (comp_dir) = stub_comp_dir;
5139 }
b0c7bfa9
DE
5140
5141 /* Set up for reading the DWO CU/TU. */
5142 cu->dwo_unit = dwo_unit;
5143 section = dwo_unit->section;
5144 dwarf2_read_section (objfile, section);
a32a8923 5145 abfd = get_section_bfd_owner (section);
b0c7bfa9
DE
5146 begin_info_ptr = info_ptr = section->buffer + dwo_unit->offset.sect_off;
5147 dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
5148 init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file);
5149
5150 if (this_cu->is_debug_types)
5151 {
5152 ULONGEST header_signature;
5153 cu_offset type_offset_in_tu;
5154 struct signatured_type *sig_type = (struct signatured_type *) this_cu;
5155
5156 info_ptr = read_and_check_type_unit_head (&cu->header, section,
5157 dwo_abbrev_section,
5158 info_ptr,
5159 &header_signature,
5160 &type_offset_in_tu);
a2ce51a0
DE
5161 /* This is not an assert because it can be caused by bad debug info. */
5162 if (sig_type->signature != header_signature)
5163 {
5164 error (_("Dwarf Error: signature mismatch %s vs %s while reading"
5165 " TU at offset 0x%x [in module %s]"),
5166 hex_string (sig_type->signature),
5167 hex_string (header_signature),
5168 dwo_unit->offset.sect_off,
5169 bfd_get_filename (abfd));
5170 }
b0c7bfa9
DE
5171 gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5172 /* For DWOs coming from DWP files, we don't know the CU length
5173 nor the type's offset in the TU until now. */
5174 dwo_unit->length = get_cu_length (&cu->header);
5175 dwo_unit->type_offset_in_tu = type_offset_in_tu;
5176
5177 /* Establish the type offset that can be used to lookup the type.
5178 For DWO files, we don't know it until now. */
5179 sig_type->type_offset_in_section.sect_off =
5180 dwo_unit->offset.sect_off + dwo_unit->type_offset_in_tu.cu_off;
5181 }
5182 else
5183 {
5184 info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5185 dwo_abbrev_section,
5186 info_ptr, 0);
5187 gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5188 /* For DWOs coming from DWP files, we don't know the CU length
5189 until now. */
5190 dwo_unit->length = get_cu_length (&cu->header);
5191 }
5192
02142a6c
DE
5193 /* Replace the CU's original abbrev table with the DWO's.
5194 Reminder: We can't read the abbrev table until we've read the header. */
b0c7bfa9
DE
5195 if (abbrev_table_provided)
5196 {
5197 /* Don't free the provided abbrev table, the caller of
5198 init_cutu_and_read_dies owns it. */
5199 dwarf2_read_abbrevs (cu, dwo_abbrev_section);
02142a6c 5200 /* Ensure the DWO abbrev table gets freed. */
b0c7bfa9
DE
5201 make_cleanup (dwarf2_free_abbrev_table, cu);
5202 }
5203 else
5204 {
5205 dwarf2_free_abbrev_table (cu);
5206 dwarf2_read_abbrevs (cu, dwo_abbrev_section);
02142a6c 5207 /* Leave any existing abbrev table cleanup as is. */
b0c7bfa9
DE
5208 }
5209
5210 /* Read in the die, but leave space to copy over the attributes
5211 from the stub. This has the benefit of simplifying the rest of
5212 the code - all the work to maintain the illusion of a single
5213 DW_TAG_{compile,type}_unit DIE is done here. */
5214 num_extra_attrs = ((stmt_list != NULL)
5215 + (low_pc != NULL)
5216 + (high_pc != NULL)
5217 + (ranges != NULL)
5218 + (comp_dir != NULL));
5219 info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
5220 result_has_children, num_extra_attrs);
5221
5222 /* Copy over the attributes from the stub to the DIE we just read in. */
5223 comp_unit_die = *result_comp_unit_die;
5224 i = comp_unit_die->num_attrs;
5225 if (stmt_list != NULL)
5226 comp_unit_die->attrs[i++] = *stmt_list;
5227 if (low_pc != NULL)
5228 comp_unit_die->attrs[i++] = *low_pc;
5229 if (high_pc != NULL)
5230 comp_unit_die->attrs[i++] = *high_pc;
5231 if (ranges != NULL)
5232 comp_unit_die->attrs[i++] = *ranges;
5233 if (comp_dir != NULL)
5234 comp_unit_die->attrs[i++] = *comp_dir;
5235 comp_unit_die->num_attrs += num_extra_attrs;
5236
b4f54984 5237 if (dwarf_die_debug)
bf6af496
DE
5238 {
5239 fprintf_unfiltered (gdb_stdlog,
5240 "Read die from %s@0x%x of %s:\n",
a32a8923 5241 get_section_name (section),
bf6af496
DE
5242 (unsigned) (begin_info_ptr - section->buffer),
5243 bfd_get_filename (abfd));
b4f54984 5244 dump_die (comp_unit_die, dwarf_die_debug);
bf6af496
DE
5245 }
5246
a2ce51a0
DE
5247 /* Save the comp_dir attribute. If there is no DWP file then we'll read
5248 TUs by skipping the stub and going directly to the entry in the DWO file.
5249 However, skipping the stub means we won't get DW_AT_comp_dir, so we have
5250 to get it via circuitous means. Blech. */
5251 if (comp_dir != NULL)
5252 result_reader->comp_dir = DW_STRING (comp_dir);
5253
b0c7bfa9
DE
5254 /* Skip dummy compilation units. */
5255 if (info_ptr >= begin_info_ptr + dwo_unit->length
5256 || peek_abbrev_code (abfd, info_ptr) == 0)
5257 return 0;
5258
5259 *result_info_ptr = info_ptr;
5260 return 1;
5261}
5262
5263/* Subroutine of init_cutu_and_read_dies to simplify it.
5264 Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
6a506a2d 5265 Returns NULL if the specified DWO unit cannot be found. */
b0c7bfa9
DE
5266
5267static struct dwo_unit *
5268lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
5269 struct die_info *comp_unit_die)
5270{
5271 struct dwarf2_cu *cu = this_cu->cu;
5272 struct attribute *attr;
5273 ULONGEST signature;
5274 struct dwo_unit *dwo_unit;
5275 const char *comp_dir, *dwo_name;
5276
a2ce51a0
DE
5277 gdb_assert (cu != NULL);
5278
b0c7bfa9 5279 /* Yeah, we look dwo_name up again, but it simplifies the code. */
7d45c7c3
KB
5280 dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5281 comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
b0c7bfa9
DE
5282
5283 if (this_cu->is_debug_types)
5284 {
5285 struct signatured_type *sig_type;
5286
5287 /* Since this_cu is the first member of struct signatured_type,
5288 we can go from a pointer to one to a pointer to the other. */
5289 sig_type = (struct signatured_type *) this_cu;
5290 signature = sig_type->signature;
5291 dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
5292 }
5293 else
5294 {
5295 struct attribute *attr;
5296
5297 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
5298 if (! attr)
5299 error (_("Dwarf Error: missing dwo_id for dwo_name %s"
5300 " [in module %s]"),
4262abfb 5301 dwo_name, objfile_name (this_cu->objfile));
b0c7bfa9
DE
5302 signature = DW_UNSND (attr);
5303 dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
5304 signature);
5305 }
5306
b0c7bfa9
DE
5307 return dwo_unit;
5308}
5309
a2ce51a0 5310/* Subroutine of init_cutu_and_read_dies to simplify it.
6aa5f3a6
DE
5311 See it for a description of the parameters.
5312 Read a TU directly from a DWO file, bypassing the stub.
5313
5314 Note: This function could be a little bit simpler if we shared cleanups
5315 with our caller, init_cutu_and_read_dies. That's generally a fragile thing
5316 to do, so we keep this function self-contained. Or we could move this
5317 into our caller, but it's complex enough already. */
a2ce51a0
DE
5318
5319static void
6aa5f3a6
DE
5320init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
5321 int use_existing_cu, int keep,
a2ce51a0
DE
5322 die_reader_func_ftype *die_reader_func,
5323 void *data)
5324{
5325 struct dwarf2_cu *cu;
5326 struct signatured_type *sig_type;
6aa5f3a6 5327 struct cleanup *cleanups, *free_cu_cleanup = NULL;
a2ce51a0
DE
5328 struct die_reader_specs reader;
5329 const gdb_byte *info_ptr;
5330 struct die_info *comp_unit_die;
5331 int has_children;
5332
5333 /* Verify we can do the following downcast, and that we have the
5334 data we need. */
5335 gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
5336 sig_type = (struct signatured_type *) this_cu;
5337 gdb_assert (sig_type->dwo_unit != NULL);
5338
5339 cleanups = make_cleanup (null_cleanup, NULL);
5340
6aa5f3a6
DE
5341 if (use_existing_cu && this_cu->cu != NULL)
5342 {
5343 gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
5344 cu = this_cu->cu;
5345 /* There's no need to do the rereading_dwo_cu handling that
5346 init_cutu_and_read_dies does since we don't read the stub. */
5347 }
5348 else
5349 {
5350 /* If !use_existing_cu, this_cu->cu must be NULL. */
5351 gdb_assert (this_cu->cu == NULL);
5352 cu = xmalloc (sizeof (*cu));
5353 init_one_comp_unit (cu, this_cu);
5354 /* If an error occurs while loading, release our storage. */
5355 free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5356 }
5357
5358 /* A future optimization, if needed, would be to use an existing
5359 abbrev table. When reading DWOs with skeletonless TUs, all the TUs
5360 could share abbrev tables. */
a2ce51a0
DE
5361
5362 if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
5363 0 /* abbrev_table_provided */,
5364 NULL /* stub_comp_unit_die */,
5365 sig_type->dwo_unit->dwo_file->comp_dir,
5366 &reader, &info_ptr,
5367 &comp_unit_die, &has_children) == 0)
5368 {
5369 /* Dummy die. */
5370 do_cleanups (cleanups);
5371 return;
5372 }
5373
5374 /* All the "real" work is done here. */
5375 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5376
6aa5f3a6 5377 /* This duplicates the code in init_cutu_and_read_dies,
a2ce51a0
DE
5378 but the alternative is making the latter more complex.
5379 This function is only for the special case of using DWO files directly:
5380 no point in overly complicating the general case just to handle this. */
6aa5f3a6 5381 if (free_cu_cleanup != NULL)
a2ce51a0 5382 {
6aa5f3a6
DE
5383 if (keep)
5384 {
5385 /* We've successfully allocated this compilation unit. Let our
5386 caller clean it up when finished with it. */
5387 discard_cleanups (free_cu_cleanup);
a2ce51a0 5388
6aa5f3a6
DE
5389 /* We can only discard free_cu_cleanup and all subsequent cleanups.
5390 So we have to manually free the abbrev table. */
5391 dwarf2_free_abbrev_table (cu);
a2ce51a0 5392
6aa5f3a6
DE
5393 /* Link this CU into read_in_chain. */
5394 this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5395 dwarf2_per_objfile->read_in_chain = this_cu;
5396 }
5397 else
5398 do_cleanups (free_cu_cleanup);
a2ce51a0 5399 }
a2ce51a0
DE
5400
5401 do_cleanups (cleanups);
5402}
5403
fd820528 5404/* Initialize a CU (or TU) and read its DIEs.
3019eac3 5405 If the CU defers to a DWO file, read the DWO file as well.
dee91e82 5406
f4dc4d17
DE
5407 ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
5408 Otherwise the table specified in the comp unit header is read in and used.
5409 This is an optimization for when we already have the abbrev table.
5410
dee91e82
DE
5411 If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
5412 Otherwise, a new CU is allocated with xmalloc.
5413
5414 If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
5415 read_in_chain. Otherwise the dwarf2_cu data is freed at the end.
5416
5417 WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
fd820528 5418 linker) then DIE_READER_FUNC will not get called. */
aaa75496 5419
70221824 5420static void
fd820528 5421init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
f4dc4d17 5422 struct abbrev_table *abbrev_table,
fd820528
DE
5423 int use_existing_cu, int keep,
5424 die_reader_func_ftype *die_reader_func,
5425 void *data)
c906108c 5426{
dee91e82 5427 struct objfile *objfile = dwarf2_per_objfile->objfile;
8a0459fd 5428 struct dwarf2_section_info *section = this_cu->section;
a32a8923 5429 bfd *abfd = get_section_bfd_owner (section);
dee91e82 5430 struct dwarf2_cu *cu;
d521ce57 5431 const gdb_byte *begin_info_ptr, *info_ptr;
dee91e82 5432 struct die_reader_specs reader;
d85a05f0 5433 struct die_info *comp_unit_die;
dee91e82 5434 int has_children;
d85a05f0 5435 struct attribute *attr;
365156ad 5436 struct cleanup *cleanups, *free_cu_cleanup = NULL;
dee91e82 5437 struct signatured_type *sig_type = NULL;
4bdcc0c1 5438 struct dwarf2_section_info *abbrev_section;
42e7ad6c
DE
5439 /* Non-zero if CU currently points to a DWO file and we need to
5440 reread it. When this happens we need to reread the skeleton die
a2ce51a0 5441 before we can reread the DWO file (this only applies to CUs, not TUs). */
42e7ad6c 5442 int rereading_dwo_cu = 0;
c906108c 5443
b4f54984 5444 if (dwarf_die_debug)
09406207
DE
5445 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5446 this_cu->is_debug_types ? "type" : "comp",
5447 this_cu->offset.sect_off);
5448
dee91e82
DE
5449 if (use_existing_cu)
5450 gdb_assert (keep);
23745b47 5451
a2ce51a0
DE
5452 /* If we're reading a TU directly from a DWO file, including a virtual DWO
5453 file (instead of going through the stub), short-circuit all of this. */
5454 if (this_cu->reading_dwo_directly)
5455 {
5456 /* Narrow down the scope of possibilities to have to understand. */
5457 gdb_assert (this_cu->is_debug_types);
5458 gdb_assert (abbrev_table == NULL);
6aa5f3a6
DE
5459 init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
5460 die_reader_func, data);
a2ce51a0
DE
5461 return;
5462 }
5463
dee91e82
DE
5464 cleanups = make_cleanup (null_cleanup, NULL);
5465
5466 /* This is cheap if the section is already read in. */
5467 dwarf2_read_section (objfile, section);
5468
5469 begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
36586728
TT
5470
5471 abbrev_section = get_abbrev_section_for_cu (this_cu);
dee91e82
DE
5472
5473 if (use_existing_cu && this_cu->cu != NULL)
5474 {
5475 cu = this_cu->cu;
42e7ad6c
DE
5476 /* If this CU is from a DWO file we need to start over, we need to
5477 refetch the attributes from the skeleton CU.
5478 This could be optimized by retrieving those attributes from when we
5479 were here the first time: the previous comp_unit_die was stored in
5480 comp_unit_obstack. But there's no data yet that we need this
5481 optimization. */
5482 if (cu->dwo_unit != NULL)
5483 rereading_dwo_cu = 1;
dee91e82
DE
5484 }
5485 else
5486 {
5487 /* If !use_existing_cu, this_cu->cu must be NULL. */
5488 gdb_assert (this_cu->cu == NULL);
dee91e82
DE
5489 cu = xmalloc (sizeof (*cu));
5490 init_one_comp_unit (cu, this_cu);
dee91e82 5491 /* If an error occurs while loading, release our storage. */
365156ad 5492 free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
42e7ad6c 5493 }
dee91e82 5494
b0c7bfa9 5495 /* Get the header. */
42e7ad6c
DE
5496 if (cu->header.first_die_offset.cu_off != 0 && ! rereading_dwo_cu)
5497 {
5498 /* We already have the header, there's no need to read it in again. */
5499 info_ptr += cu->header.first_die_offset.cu_off;
5500 }
5501 else
5502 {
3019eac3 5503 if (this_cu->is_debug_types)
dee91e82
DE
5504 {
5505 ULONGEST signature;
42e7ad6c 5506 cu_offset type_offset_in_tu;
dee91e82 5507
4bdcc0c1
DE
5508 info_ptr = read_and_check_type_unit_head (&cu->header, section,
5509 abbrev_section, info_ptr,
42e7ad6c
DE
5510 &signature,
5511 &type_offset_in_tu);
dee91e82 5512
42e7ad6c
DE
5513 /* Since per_cu is the first member of struct signatured_type,
5514 we can go from a pointer to one to a pointer to the other. */
5515 sig_type = (struct signatured_type *) this_cu;
5516 gdb_assert (sig_type->signature == signature);
5517 gdb_assert (sig_type->type_offset_in_tu.cu_off
5518 == type_offset_in_tu.cu_off);
dee91e82
DE
5519 gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5520
42e7ad6c
DE
5521 /* LENGTH has not been set yet for type units if we're
5522 using .gdb_index. */
1ce1cefd 5523 this_cu->length = get_cu_length (&cu->header);
3019eac3
DE
5524
5525 /* Establish the type offset that can be used to lookup the type. */
5526 sig_type->type_offset_in_section.sect_off =
5527 this_cu->offset.sect_off + sig_type->type_offset_in_tu.cu_off;
dee91e82
DE
5528 }
5529 else
5530 {
4bdcc0c1
DE
5531 info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5532 abbrev_section,
5533 info_ptr, 0);
dee91e82
DE
5534
5535 gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
1ce1cefd 5536 gdb_assert (this_cu->length == get_cu_length (&cu->header));
dee91e82
DE
5537 }
5538 }
10b3939b 5539
6caca83c 5540 /* Skip dummy compilation units. */
dee91e82 5541 if (info_ptr >= begin_info_ptr + this_cu->length
6caca83c
CC
5542 || peek_abbrev_code (abfd, info_ptr) == 0)
5543 {
dee91e82 5544 do_cleanups (cleanups);
21b2bd31 5545 return;
6caca83c
CC
5546 }
5547
433df2d4
DE
5548 /* If we don't have them yet, read the abbrevs for this compilation unit.
5549 And if we need to read them now, make sure they're freed when we're
42e7ad6c
DE
5550 done. Note that it's important that if the CU had an abbrev table
5551 on entry we don't free it when we're done: Somewhere up the call stack
5552 it may be in use. */
f4dc4d17
DE
5553 if (abbrev_table != NULL)
5554 {
5555 gdb_assert (cu->abbrev_table == NULL);
5556 gdb_assert (cu->header.abbrev_offset.sect_off
5557 == abbrev_table->offset.sect_off);
5558 cu->abbrev_table = abbrev_table;
5559 }
5560 else if (cu->abbrev_table == NULL)
dee91e82 5561 {
4bdcc0c1 5562 dwarf2_read_abbrevs (cu, abbrev_section);
dee91e82
DE
5563 make_cleanup (dwarf2_free_abbrev_table, cu);
5564 }
42e7ad6c
DE
5565 else if (rereading_dwo_cu)
5566 {
5567 dwarf2_free_abbrev_table (cu);
5568 dwarf2_read_abbrevs (cu, abbrev_section);
5569 }
af703f96 5570
dee91e82 5571 /* Read the top level CU/TU die. */
3019eac3 5572 init_cu_die_reader (&reader, cu, section, NULL);
dee91e82 5573 info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
93311388 5574
b0c7bfa9
DE
5575 /* If we are in a DWO stub, process it and then read in the "real" CU/TU
5576 from the DWO file.
5577 Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
5578 DWO CU, that this test will fail (the attribute will not be present). */
3019eac3
DE
5579 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5580 if (attr)
5581 {
3019eac3 5582 struct dwo_unit *dwo_unit;
b0c7bfa9 5583 struct die_info *dwo_comp_unit_die;
3019eac3
DE
5584
5585 if (has_children)
6a506a2d
DE
5586 {
5587 complaint (&symfile_complaints,
5588 _("compilation unit with DW_AT_GNU_dwo_name"
5589 " has children (offset 0x%x) [in module %s]"),
5590 this_cu->offset.sect_off, bfd_get_filename (abfd));
5591 }
b0c7bfa9 5592 dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
6a506a2d 5593 if (dwo_unit != NULL)
3019eac3 5594 {
6a506a2d
DE
5595 if (read_cutu_die_from_dwo (this_cu, dwo_unit,
5596 abbrev_table != NULL,
a2ce51a0 5597 comp_unit_die, NULL,
6a506a2d
DE
5598 &reader, &info_ptr,
5599 &dwo_comp_unit_die, &has_children) == 0)
5600 {
5601 /* Dummy die. */
5602 do_cleanups (cleanups);
5603 return;
5604 }
5605 comp_unit_die = dwo_comp_unit_die;
5606 }
5607 else
5608 {
5609 /* Yikes, we couldn't find the rest of the DIE, we only have
5610 the stub. A complaint has already been logged. There's
5611 not much more we can do except pass on the stub DIE to
5612 die_reader_func. We don't want to throw an error on bad
5613 debug info. */
3019eac3
DE
5614 }
5615 }
5616
b0c7bfa9 5617 /* All of the above is setup for this call. Yikes. */
dee91e82
DE
5618 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5619
b0c7bfa9 5620 /* Done, clean up. */
365156ad 5621 if (free_cu_cleanup != NULL)
348e048f 5622 {
365156ad
TT
5623 if (keep)
5624 {
5625 /* We've successfully allocated this compilation unit. Let our
5626 caller clean it up when finished with it. */
5627 discard_cleanups (free_cu_cleanup);
dee91e82 5628
365156ad
TT
5629 /* We can only discard free_cu_cleanup and all subsequent cleanups.
5630 So we have to manually free the abbrev table. */
5631 dwarf2_free_abbrev_table (cu);
dee91e82 5632
365156ad
TT
5633 /* Link this CU into read_in_chain. */
5634 this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5635 dwarf2_per_objfile->read_in_chain = this_cu;
5636 }
5637 else
5638 do_cleanups (free_cu_cleanup);
348e048f 5639 }
365156ad
TT
5640
5641 do_cleanups (cleanups);
dee91e82
DE
5642}
5643
33e80786
DE
5644/* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
5645 DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
5646 to have already done the lookup to find the DWO file).
dee91e82
DE
5647
5648 The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
3019eac3 5649 THIS_CU->is_debug_types, but nothing else.
dee91e82
DE
5650
5651 We fill in THIS_CU->length.
5652
5653 WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5654 linker) then DIE_READER_FUNC will not get called.
5655
5656 THIS_CU->cu is always freed when done.
3019eac3
DE
5657 This is done in order to not leave THIS_CU->cu in a state where we have
5658 to care whether it refers to the "main" CU or the DWO CU. */
dee91e82
DE
5659
5660static void
5661init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
3019eac3 5662 struct dwo_file *dwo_file,
dee91e82
DE
5663 die_reader_func_ftype *die_reader_func,
5664 void *data)
5665{
5666 struct objfile *objfile = dwarf2_per_objfile->objfile;
8a0459fd 5667 struct dwarf2_section_info *section = this_cu->section;
a32a8923 5668 bfd *abfd = get_section_bfd_owner (section);
33e80786 5669 struct dwarf2_section_info *abbrev_section;
dee91e82 5670 struct dwarf2_cu cu;
d521ce57 5671 const gdb_byte *begin_info_ptr, *info_ptr;
dee91e82
DE
5672 struct die_reader_specs reader;
5673 struct cleanup *cleanups;
5674 struct die_info *comp_unit_die;
5675 int has_children;
5676
b4f54984 5677 if (dwarf_die_debug)
09406207
DE
5678 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5679 this_cu->is_debug_types ? "type" : "comp",
5680 this_cu->offset.sect_off);
5681
dee91e82
DE
5682 gdb_assert (this_cu->cu == NULL);
5683
33e80786
DE
5684 abbrev_section = (dwo_file != NULL
5685 ? &dwo_file->sections.abbrev
5686 : get_abbrev_section_for_cu (this_cu));
5687
dee91e82
DE
5688 /* This is cheap if the section is already read in. */
5689 dwarf2_read_section (objfile, section);
5690
5691 init_one_comp_unit (&cu, this_cu);
5692
5693 cleanups = make_cleanup (free_stack_comp_unit, &cu);
5694
5695 begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
4bdcc0c1
DE
5696 info_ptr = read_and_check_comp_unit_head (&cu.header, section,
5697 abbrev_section, info_ptr,
3019eac3 5698 this_cu->is_debug_types);
dee91e82 5699
1ce1cefd 5700 this_cu->length = get_cu_length (&cu.header);
dee91e82
DE
5701
5702 /* Skip dummy compilation units. */
5703 if (info_ptr >= begin_info_ptr + this_cu->length
5704 || peek_abbrev_code (abfd, info_ptr) == 0)
c906108c 5705 {
dee91e82 5706 do_cleanups (cleanups);
21b2bd31 5707 return;
93311388 5708 }
72bf9492 5709
dee91e82
DE
5710 dwarf2_read_abbrevs (&cu, abbrev_section);
5711 make_cleanup (dwarf2_free_abbrev_table, &cu);
5712
3019eac3 5713 init_cu_die_reader (&reader, &cu, section, dwo_file);
dee91e82
DE
5714 info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5715
5716 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5717
5718 do_cleanups (cleanups);
5719}
5720
3019eac3
DE
5721/* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
5722 does not lookup the specified DWO file.
5723 This cannot be used to read DWO files.
dee91e82
DE
5724
5725 THIS_CU->cu is always freed when done.
3019eac3
DE
5726 This is done in order to not leave THIS_CU->cu in a state where we have
5727 to care whether it refers to the "main" CU or the DWO CU.
5728 We can revisit this if the data shows there's a performance issue. */
dee91e82
DE
5729
5730static void
5731init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
5732 die_reader_func_ftype *die_reader_func,
5733 void *data)
5734{
33e80786 5735 init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
dee91e82 5736}
0018ea6f
DE
5737\f
5738/* Type Unit Groups.
dee91e82 5739
0018ea6f
DE
5740 Type Unit Groups are a way to collapse the set of all TUs (type units) into
5741 a more manageable set. The grouping is done by DW_AT_stmt_list entry
5742 so that all types coming from the same compilation (.o file) are grouped
5743 together. A future step could be to put the types in the same symtab as
5744 the CU the types ultimately came from. */
ff013f42 5745
f4dc4d17
DE
5746static hashval_t
5747hash_type_unit_group (const void *item)
5748{
094b34ac 5749 const struct type_unit_group *tu_group = item;
f4dc4d17 5750
094b34ac 5751 return hash_stmt_list_entry (&tu_group->hash);
f4dc4d17 5752}
348e048f
DE
5753
5754static int
f4dc4d17 5755eq_type_unit_group (const void *item_lhs, const void *item_rhs)
348e048f 5756{
f4dc4d17
DE
5757 const struct type_unit_group *lhs = item_lhs;
5758 const struct type_unit_group *rhs = item_rhs;
348e048f 5759
094b34ac 5760 return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
f4dc4d17 5761}
348e048f 5762
f4dc4d17
DE
5763/* Allocate a hash table for type unit groups. */
5764
5765static htab_t
5766allocate_type_unit_groups_table (void)
5767{
5768 return htab_create_alloc_ex (3,
5769 hash_type_unit_group,
5770 eq_type_unit_group,
5771 NULL,
5772 &dwarf2_per_objfile->objfile->objfile_obstack,
5773 hashtab_obstack_allocate,
5774 dummy_obstack_deallocate);
5775}
dee91e82 5776
f4dc4d17
DE
5777/* Type units that don't have DW_AT_stmt_list are grouped into their own
5778 partial symtabs. We combine several TUs per psymtab to not let the size
5779 of any one psymtab grow too big. */
5780#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
5781#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
dee91e82 5782
094b34ac 5783/* Helper routine for get_type_unit_group.
f4dc4d17
DE
5784 Create the type_unit_group object used to hold one or more TUs. */
5785
5786static struct type_unit_group *
094b34ac 5787create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
f4dc4d17
DE
5788{
5789 struct objfile *objfile = dwarf2_per_objfile->objfile;
094b34ac 5790 struct dwarf2_per_cu_data *per_cu;
f4dc4d17 5791 struct type_unit_group *tu_group;
f4dc4d17
DE
5792
5793 tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5794 struct type_unit_group);
094b34ac 5795 per_cu = &tu_group->per_cu;
f4dc4d17 5796 per_cu->objfile = objfile;
f4dc4d17 5797
094b34ac
DE
5798 if (dwarf2_per_objfile->using_index)
5799 {
5800 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5801 struct dwarf2_per_cu_quick_data);
094b34ac
DE
5802 }
5803 else
5804 {
5805 unsigned int line_offset = line_offset_struct.sect_off;
5806 struct partial_symtab *pst;
5807 char *name;
5808
5809 /* Give the symtab a useful name for debug purposes. */
5810 if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
5811 name = xstrprintf ("<type_units_%d>",
5812 (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
5813 else
5814 name = xstrprintf ("<type_units_at_0x%x>", line_offset);
5815
5816 pst = create_partial_symtab (per_cu, name);
5817 pst->anonymous = 1;
f4dc4d17 5818
094b34ac
DE
5819 xfree (name);
5820 }
f4dc4d17 5821
094b34ac
DE
5822 tu_group->hash.dwo_unit = cu->dwo_unit;
5823 tu_group->hash.line_offset = line_offset_struct;
f4dc4d17
DE
5824
5825 return tu_group;
5826}
5827
094b34ac
DE
5828/* Look up the type_unit_group for type unit CU, and create it if necessary.
5829 STMT_LIST is a DW_AT_stmt_list attribute. */
f4dc4d17
DE
5830
5831static struct type_unit_group *
ff39bb5e 5832get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
f4dc4d17
DE
5833{
5834 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
5835 struct type_unit_group *tu_group;
5836 void **slot;
5837 unsigned int line_offset;
5838 struct type_unit_group type_unit_group_for_lookup;
5839
5840 if (dwarf2_per_objfile->type_unit_groups == NULL)
5841 {
5842 dwarf2_per_objfile->type_unit_groups =
5843 allocate_type_unit_groups_table ();
5844 }
5845
5846 /* Do we need to create a new group, or can we use an existing one? */
5847
5848 if (stmt_list)
5849 {
5850 line_offset = DW_UNSND (stmt_list);
5851 ++tu_stats->nr_symtab_sharers;
5852 }
5853 else
5854 {
5855 /* Ugh, no stmt_list. Rare, but we have to handle it.
5856 We can do various things here like create one group per TU or
5857 spread them over multiple groups to split up the expansion work.
5858 To avoid worst case scenarios (too many groups or too large groups)
5859 we, umm, group them in bunches. */
5860 line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
5861 | (tu_stats->nr_stmt_less_type_units
5862 / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
5863 ++tu_stats->nr_stmt_less_type_units;
5864 }
5865
094b34ac
DE
5866 type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
5867 type_unit_group_for_lookup.hash.line_offset.sect_off = line_offset;
f4dc4d17
DE
5868 slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
5869 &type_unit_group_for_lookup, INSERT);
5870 if (*slot != NULL)
5871 {
5872 tu_group = *slot;
5873 gdb_assert (tu_group != NULL);
5874 }
5875 else
5876 {
5877 sect_offset line_offset_struct;
5878
5879 line_offset_struct.sect_off = line_offset;
094b34ac 5880 tu_group = create_type_unit_group (cu, line_offset_struct);
f4dc4d17
DE
5881 *slot = tu_group;
5882 ++tu_stats->nr_symtabs;
5883 }
5884
5885 return tu_group;
5886}
0018ea6f
DE
5887\f
5888/* Partial symbol tables. */
5889
5890/* Create a psymtab named NAME and assign it to PER_CU.
5891
5892 The caller must fill in the following details:
5893 dirname, textlow, texthigh. */
5894
5895static struct partial_symtab *
5896create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
5897{
5898 struct objfile *objfile = per_cu->objfile;
5899 struct partial_symtab *pst;
5900
18a94d75 5901 pst = start_psymtab_common (objfile, name, 0,
0018ea6f
DE
5902 objfile->global_psymbols.next,
5903 objfile->static_psymbols.next);
5904
5905 pst->psymtabs_addrmap_supported = 1;
5906
5907 /* This is the glue that links PST into GDB's symbol API. */
5908 pst->read_symtab_private = per_cu;
5909 pst->read_symtab = dwarf2_read_symtab;
5910 per_cu->v.psymtab = pst;
5911
5912 return pst;
5913}
5914
b93601f3
TT
5915/* The DATA object passed to process_psymtab_comp_unit_reader has this
5916 type. */
5917
5918struct process_psymtab_comp_unit_data
5919{
5920 /* True if we are reading a DW_TAG_partial_unit. */
5921
5922 int want_partial_unit;
5923
5924 /* The "pretend" language that is used if the CU doesn't declare a
5925 language. */
5926
5927 enum language pretend_language;
5928};
5929
0018ea6f
DE
5930/* die_reader_func for process_psymtab_comp_unit. */
5931
5932static void
5933process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 5934 const gdb_byte *info_ptr,
0018ea6f
DE
5935 struct die_info *comp_unit_die,
5936 int has_children,
5937 void *data)
5938{
5939 struct dwarf2_cu *cu = reader->cu;
5940 struct objfile *objfile = cu->objfile;
3e29f34a 5941 struct gdbarch *gdbarch = get_objfile_arch (objfile);
0018ea6f 5942 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
0018ea6f
DE
5943 CORE_ADDR baseaddr;
5944 CORE_ADDR best_lowpc = 0, best_highpc = 0;
5945 struct partial_symtab *pst;
5946 int has_pc_info;
5947 const char *filename;
b93601f3 5948 struct process_psymtab_comp_unit_data *info = data;
0018ea6f 5949
b93601f3 5950 if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
0018ea6f
DE
5951 return;
5952
5953 gdb_assert (! per_cu->is_debug_types);
5954
b93601f3 5955 prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
0018ea6f
DE
5956
5957 cu->list_in_scope = &file_symbols;
5958
5959 /* Allocate a new partial symbol table structure. */
7d45c7c3
KB
5960 filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
5961 if (filename == NULL)
0018ea6f 5962 filename = "";
0018ea6f
DE
5963
5964 pst = create_partial_symtab (per_cu, filename);
5965
5966 /* This must be done before calling dwarf2_build_include_psymtabs. */
7d45c7c3 5967 pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
0018ea6f
DE
5968
5969 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5970
5971 dwarf2_find_base_address (comp_unit_die, cu);
5972
5973 /* Possibly set the default values of LOWPC and HIGHPC from
5974 `DW_AT_ranges'. */
5975 has_pc_info = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
5976 &best_highpc, cu, pst);
5977 if (has_pc_info == 1 && best_lowpc < best_highpc)
5978 /* Store the contiguous range if it is not empty; it can be empty for
5979 CUs with no code. */
5980 addrmap_set_empty (objfile->psymtabs_addrmap,
3e29f34a
MR
5981 gdbarch_adjust_dwarf2_addr (gdbarch,
5982 best_lowpc + baseaddr),
5983 gdbarch_adjust_dwarf2_addr (gdbarch,
5984 best_highpc + baseaddr) - 1,
5985 pst);
0018ea6f
DE
5986
5987 /* Check if comp unit has_children.
5988 If so, read the rest of the partial symbols from this comp unit.
5989 If not, there's no more debug_info for this comp unit. */
5990 if (has_children)
5991 {
5992 struct partial_die_info *first_die;
5993 CORE_ADDR lowpc, highpc;
5994
5995 lowpc = ((CORE_ADDR) -1);
5996 highpc = ((CORE_ADDR) 0);
5997
5998 first_die = load_partial_dies (reader, info_ptr, 1);
5999
6000 scan_partial_symbols (first_die, &lowpc, &highpc,
6001 ! has_pc_info, cu);
6002
6003 /* If we didn't find a lowpc, set it to highpc to avoid
6004 complaints from `maint check'. */
6005 if (lowpc == ((CORE_ADDR) -1))
6006 lowpc = highpc;
6007
6008 /* If the compilation unit didn't have an explicit address range,
6009 then use the information extracted from its child dies. */
6010 if (! has_pc_info)
6011 {
6012 best_lowpc = lowpc;
6013 best_highpc = highpc;
6014 }
6015 }
3e29f34a
MR
6016 pst->textlow = gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr);
6017 pst->texthigh = gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr);
0018ea6f 6018
8763cede 6019 end_psymtab_common (objfile, pst);
0018ea6f
DE
6020
6021 if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
6022 {
6023 int i;
6024 int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6025 struct dwarf2_per_cu_data *iter;
6026
6027 /* Fill in 'dependencies' here; we fill in 'users' in a
6028 post-pass. */
6029 pst->number_of_dependencies = len;
6030 pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
6031 len * sizeof (struct symtab *));
6032 for (i = 0;
6033 VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
6034 i, iter);
6035 ++i)
6036 pst->dependencies[i] = iter->v.psymtab;
6037
6038 VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6039 }
6040
6041 /* Get the list of files included in the current compilation unit,
6042 and build a psymtab for each of them. */
6043 dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
6044
b4f54984 6045 if (dwarf_read_debug)
0018ea6f
DE
6046 {
6047 struct gdbarch *gdbarch = get_objfile_arch (objfile);
6048
6049 fprintf_unfiltered (gdb_stdlog,
6050 "Psymtab for %s unit @0x%x: %s - %s"
6051 ", %d global, %d static syms\n",
6052 per_cu->is_debug_types ? "type" : "comp",
6053 per_cu->offset.sect_off,
6054 paddress (gdbarch, pst->textlow),
6055 paddress (gdbarch, pst->texthigh),
6056 pst->n_global_syms, pst->n_static_syms);
6057 }
6058}
6059
6060/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6061 Process compilation unit THIS_CU for a psymtab. */
6062
6063static void
6064process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
b93601f3
TT
6065 int want_partial_unit,
6066 enum language pretend_language)
0018ea6f 6067{
b93601f3
TT
6068 struct process_psymtab_comp_unit_data info;
6069
0018ea6f
DE
6070 /* If this compilation unit was already read in, free the
6071 cached copy in order to read it in again. This is
6072 necessary because we skipped some symbols when we first
6073 read in the compilation unit (see load_partial_dies).
6074 This problem could be avoided, but the benefit is unclear. */
6075 if (this_cu->cu != NULL)
6076 free_one_cached_comp_unit (this_cu);
6077
6078 gdb_assert (! this_cu->is_debug_types);
b93601f3
TT
6079 info.want_partial_unit = want_partial_unit;
6080 info.pretend_language = pretend_language;
0018ea6f
DE
6081 init_cutu_and_read_dies (this_cu, NULL, 0, 0,
6082 process_psymtab_comp_unit_reader,
b93601f3 6083 &info);
0018ea6f
DE
6084
6085 /* Age out any secondary CUs. */
6086 age_cached_comp_units ();
6087}
f4dc4d17
DE
6088
6089/* Reader function for build_type_psymtabs. */
6090
6091static void
6092build_type_psymtabs_reader (const struct die_reader_specs *reader,
d521ce57 6093 const gdb_byte *info_ptr,
f4dc4d17
DE
6094 struct die_info *type_unit_die,
6095 int has_children,
6096 void *data)
6097{
6098 struct objfile *objfile = dwarf2_per_objfile->objfile;
6099 struct dwarf2_cu *cu = reader->cu;
6100 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
0186c6a7 6101 struct signatured_type *sig_type;
f4dc4d17
DE
6102 struct type_unit_group *tu_group;
6103 struct attribute *attr;
6104 struct partial_die_info *first_die;
6105 CORE_ADDR lowpc, highpc;
6106 struct partial_symtab *pst;
6107
6108 gdb_assert (data == NULL);
0186c6a7
DE
6109 gdb_assert (per_cu->is_debug_types);
6110 sig_type = (struct signatured_type *) per_cu;
f4dc4d17
DE
6111
6112 if (! has_children)
6113 return;
6114
6115 attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
094b34ac 6116 tu_group = get_type_unit_group (cu, attr);
f4dc4d17 6117
0186c6a7 6118 VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
f4dc4d17
DE
6119
6120 prepare_one_comp_unit (cu, type_unit_die, language_minimal);
6121 cu->list_in_scope = &file_symbols;
6122 pst = create_partial_symtab (per_cu, "");
6123 pst->anonymous = 1;
6124
6125 first_die = load_partial_dies (reader, info_ptr, 1);
6126
6127 lowpc = (CORE_ADDR) -1;
6128 highpc = (CORE_ADDR) 0;
6129 scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
6130
8763cede 6131 end_psymtab_common (objfile, pst);
f4dc4d17
DE
6132}
6133
73051182
DE
6134/* Struct used to sort TUs by their abbreviation table offset. */
6135
6136struct tu_abbrev_offset
6137{
6138 struct signatured_type *sig_type;
6139 sect_offset abbrev_offset;
6140};
6141
6142/* Helper routine for build_type_psymtabs_1, passed to qsort. */
6143
6144static int
6145sort_tu_by_abbrev_offset (const void *ap, const void *bp)
6146{
6147 const struct tu_abbrev_offset * const *a = ap;
6148 const struct tu_abbrev_offset * const *b = bp;
6149 unsigned int aoff = (*a)->abbrev_offset.sect_off;
6150 unsigned int boff = (*b)->abbrev_offset.sect_off;
6151
6152 return (aoff > boff) - (aoff < boff);
6153}
6154
6155/* Efficiently read all the type units.
6156 This does the bulk of the work for build_type_psymtabs.
6157
6158 The efficiency is because we sort TUs by the abbrev table they use and
6159 only read each abbrev table once. In one program there are 200K TUs
6160 sharing 8K abbrev tables.
6161
6162 The main purpose of this function is to support building the
6163 dwarf2_per_objfile->type_unit_groups table.
6164 TUs typically share the DW_AT_stmt_list of the CU they came from, so we
6165 can collapse the search space by grouping them by stmt_list.
6166 The savings can be significant, in the same program from above the 200K TUs
6167 share 8K stmt_list tables.
6168
6169 FUNC is expected to call get_type_unit_group, which will create the
6170 struct type_unit_group if necessary and add it to
6171 dwarf2_per_objfile->type_unit_groups. */
6172
6173static void
6174build_type_psymtabs_1 (void)
6175{
6176 struct objfile *objfile = dwarf2_per_objfile->objfile;
6177 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6178 struct cleanup *cleanups;
6179 struct abbrev_table *abbrev_table;
6180 sect_offset abbrev_offset;
6181 struct tu_abbrev_offset *sorted_by_abbrev;
6182 struct type_unit_group **iter;
6183 int i;
6184
6185 /* It's up to the caller to not call us multiple times. */
6186 gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
6187
6188 if (dwarf2_per_objfile->n_type_units == 0)
6189 return;
6190
6191 /* TUs typically share abbrev tables, and there can be way more TUs than
6192 abbrev tables. Sort by abbrev table to reduce the number of times we
6193 read each abbrev table in.
6194 Alternatives are to punt or to maintain a cache of abbrev tables.
6195 This is simpler and efficient enough for now.
6196
6197 Later we group TUs by their DW_AT_stmt_list value (as this defines the
6198 symtab to use). Typically TUs with the same abbrev offset have the same
6199 stmt_list value too so in practice this should work well.
6200
6201 The basic algorithm here is:
6202
6203 sort TUs by abbrev table
6204 for each TU with same abbrev table:
6205 read abbrev table if first user
6206 read TU top level DIE
6207 [IWBN if DWO skeletons had DW_AT_stmt_list]
6208 call FUNC */
6209
b4f54984 6210 if (dwarf_read_debug)
73051182
DE
6211 fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
6212
6213 /* Sort in a separate table to maintain the order of all_type_units
6214 for .gdb_index: TU indices directly index all_type_units. */
6215 sorted_by_abbrev = XNEWVEC (struct tu_abbrev_offset,
6216 dwarf2_per_objfile->n_type_units);
6217 for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6218 {
6219 struct signatured_type *sig_type = dwarf2_per_objfile->all_type_units[i];
6220
6221 sorted_by_abbrev[i].sig_type = sig_type;
6222 sorted_by_abbrev[i].abbrev_offset =
6223 read_abbrev_offset (sig_type->per_cu.section,
6224 sig_type->per_cu.offset);
6225 }
6226 cleanups = make_cleanup (xfree, sorted_by_abbrev);
6227 qsort (sorted_by_abbrev, dwarf2_per_objfile->n_type_units,
6228 sizeof (struct tu_abbrev_offset), sort_tu_by_abbrev_offset);
6229
6230 abbrev_offset.sect_off = ~(unsigned) 0;
6231 abbrev_table = NULL;
6232 make_cleanup (abbrev_table_free_cleanup, &abbrev_table);
6233
6234 for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6235 {
6236 const struct tu_abbrev_offset *tu = &sorted_by_abbrev[i];
6237
6238 /* Switch to the next abbrev table if necessary. */
6239 if (abbrev_table == NULL
6240 || tu->abbrev_offset.sect_off != abbrev_offset.sect_off)
6241 {
6242 if (abbrev_table != NULL)
6243 {
6244 abbrev_table_free (abbrev_table);
6245 /* Reset to NULL in case abbrev_table_read_table throws
6246 an error: abbrev_table_free_cleanup will get called. */
6247 abbrev_table = NULL;
6248 }
6249 abbrev_offset = tu->abbrev_offset;
6250 abbrev_table =
6251 abbrev_table_read_table (&dwarf2_per_objfile->abbrev,
6252 abbrev_offset);
6253 ++tu_stats->nr_uniq_abbrev_tables;
6254 }
6255
6256 init_cutu_and_read_dies (&tu->sig_type->per_cu, abbrev_table, 0, 0,
6257 build_type_psymtabs_reader, NULL);
6258 }
6259
73051182 6260 do_cleanups (cleanups);
6aa5f3a6 6261}
73051182 6262
6aa5f3a6
DE
6263/* Print collected type unit statistics. */
6264
6265static void
6266print_tu_stats (void)
6267{
6268 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6269
6270 fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
6271 fprintf_unfiltered (gdb_stdlog, " %d TUs\n",
6272 dwarf2_per_objfile->n_type_units);
6273 fprintf_unfiltered (gdb_stdlog, " %d uniq abbrev tables\n",
6274 tu_stats->nr_uniq_abbrev_tables);
6275 fprintf_unfiltered (gdb_stdlog, " %d symtabs from stmt_list entries\n",
6276 tu_stats->nr_symtabs);
6277 fprintf_unfiltered (gdb_stdlog, " %d symtab sharers\n",
6278 tu_stats->nr_symtab_sharers);
6279 fprintf_unfiltered (gdb_stdlog, " %d type units without a stmt_list\n",
6280 tu_stats->nr_stmt_less_type_units);
6281 fprintf_unfiltered (gdb_stdlog, " %d all_type_units reallocs\n",
6282 tu_stats->nr_all_type_units_reallocs);
73051182
DE
6283}
6284
f4dc4d17
DE
6285/* Traversal function for build_type_psymtabs. */
6286
6287static int
6288build_type_psymtab_dependencies (void **slot, void *info)
6289{
6290 struct objfile *objfile = dwarf2_per_objfile->objfile;
6291 struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
094b34ac 6292 struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
f4dc4d17 6293 struct partial_symtab *pst = per_cu->v.psymtab;
0186c6a7
DE
6294 int len = VEC_length (sig_type_ptr, tu_group->tus);
6295 struct signatured_type *iter;
f4dc4d17
DE
6296 int i;
6297
6298 gdb_assert (len > 0);
0186c6a7 6299 gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
f4dc4d17
DE
6300
6301 pst->number_of_dependencies = len;
6302 pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
6303 len * sizeof (struct psymtab *));
6304 for (i = 0;
0186c6a7 6305 VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
f4dc4d17
DE
6306 ++i)
6307 {
0186c6a7
DE
6308 gdb_assert (iter->per_cu.is_debug_types);
6309 pst->dependencies[i] = iter->per_cu.v.psymtab;
796a7ff8 6310 iter->type_unit_group = tu_group;
f4dc4d17
DE
6311 }
6312
0186c6a7 6313 VEC_free (sig_type_ptr, tu_group->tus);
348e048f
DE
6314
6315 return 1;
6316}
6317
6318/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6319 Build partial symbol tables for the .debug_types comp-units. */
6320
6321static void
6322build_type_psymtabs (struct objfile *objfile)
6323{
0e50663e 6324 if (! create_all_type_units (objfile))
348e048f
DE
6325 return;
6326
73051182 6327 build_type_psymtabs_1 ();
6aa5f3a6 6328}
f4dc4d17 6329
6aa5f3a6
DE
6330/* Traversal function for process_skeletonless_type_unit.
6331 Read a TU in a DWO file and build partial symbols for it. */
6332
6333static int
6334process_skeletonless_type_unit (void **slot, void *info)
6335{
6336 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
6337 struct objfile *objfile = info;
6338 struct signatured_type find_entry, *entry;
6339
6340 /* If this TU doesn't exist in the global table, add it and read it in. */
6341
6342 if (dwarf2_per_objfile->signatured_types == NULL)
6343 {
6344 dwarf2_per_objfile->signatured_types
6345 = allocate_signatured_type_table (objfile);
6346 }
6347
6348 find_entry.signature = dwo_unit->signature;
6349 slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
6350 INSERT);
6351 /* If we've already seen this type there's nothing to do. What's happening
6352 is we're doing our own version of comdat-folding here. */
6353 if (*slot != NULL)
6354 return 1;
6355
6356 /* This does the job that create_all_type_units would have done for
6357 this TU. */
6358 entry = add_type_unit (dwo_unit->signature, slot);
6359 fill_in_sig_entry_from_dwo_entry (objfile, entry, dwo_unit);
6360 *slot = entry;
6361
6362 /* This does the job that build_type_psymtabs_1 would have done. */
6363 init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0,
6364 build_type_psymtabs_reader, NULL);
6365
6366 return 1;
6367}
6368
6369/* Traversal function for process_skeletonless_type_units. */
6370
6371static int
6372process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
6373{
6374 struct dwo_file *dwo_file = (struct dwo_file *) *slot;
6375
6376 if (dwo_file->tus != NULL)
6377 {
6378 htab_traverse_noresize (dwo_file->tus,
6379 process_skeletonless_type_unit, info);
6380 }
6381
6382 return 1;
6383}
6384
6385/* Scan all TUs of DWO files, verifying we've processed them.
6386 This is needed in case a TU was emitted without its skeleton.
6387 Note: This can't be done until we know what all the DWO files are. */
6388
6389static void
6390process_skeletonless_type_units (struct objfile *objfile)
6391{
6392 /* Skeletonless TUs in DWP files without .gdb_index is not supported yet. */
6393 if (get_dwp_file () == NULL
6394 && dwarf2_per_objfile->dwo_files != NULL)
6395 {
6396 htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
6397 process_dwo_file_for_skeletonless_type_units,
6398 objfile);
6399 }
348e048f
DE
6400}
6401
60606b2c
TT
6402/* A cleanup function that clears objfile's psymtabs_addrmap field. */
6403
6404static void
6405psymtabs_addrmap_cleanup (void *o)
6406{
6407 struct objfile *objfile = o;
ec61707d 6408
60606b2c
TT
6409 objfile->psymtabs_addrmap = NULL;
6410}
6411
95554aad
TT
6412/* Compute the 'user' field for each psymtab in OBJFILE. */
6413
6414static void
6415set_partial_user (struct objfile *objfile)
6416{
6417 int i;
6418
6419 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6420 {
8832e7e3 6421 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
95554aad
TT
6422 struct partial_symtab *pst = per_cu->v.psymtab;
6423 int j;
6424
36586728
TT
6425 if (pst == NULL)
6426 continue;
6427
95554aad
TT
6428 for (j = 0; j < pst->number_of_dependencies; ++j)
6429 {
6430 /* Set the 'user' field only if it is not already set. */
6431 if (pst->dependencies[j]->user == NULL)
6432 pst->dependencies[j]->user = pst;
6433 }
6434 }
6435}
6436
93311388
DE
6437/* Build the partial symbol table by doing a quick pass through the
6438 .debug_info and .debug_abbrev sections. */
72bf9492 6439
93311388 6440static void
c67a9c90 6441dwarf2_build_psymtabs_hard (struct objfile *objfile)
93311388 6442{
60606b2c
TT
6443 struct cleanup *back_to, *addrmap_cleanup;
6444 struct obstack temp_obstack;
21b2bd31 6445 int i;
93311388 6446
b4f54984 6447 if (dwarf_read_debug)
45cfd468
DE
6448 {
6449 fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
4262abfb 6450 objfile_name (objfile));
45cfd468
DE
6451 }
6452
98bfdba5
PA
6453 dwarf2_per_objfile->reading_partial_symbols = 1;
6454
be391dca 6455 dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
91c24f0a 6456
93311388
DE
6457 /* Any cached compilation units will be linked by the per-objfile
6458 read_in_chain. Make sure to free them when we're done. */
6459 back_to = make_cleanup (free_cached_comp_units, NULL);
72bf9492 6460
348e048f
DE
6461 build_type_psymtabs (objfile);
6462
93311388 6463 create_all_comp_units (objfile);
c906108c 6464
60606b2c
TT
6465 /* Create a temporary address map on a temporary obstack. We later
6466 copy this to the final obstack. */
6467 obstack_init (&temp_obstack);
6468 make_cleanup_obstack_free (&temp_obstack);
6469 objfile->psymtabs_addrmap = addrmap_create_mutable (&temp_obstack);
6470 addrmap_cleanup = make_cleanup (psymtabs_addrmap_cleanup, objfile);
72bf9492 6471
21b2bd31 6472 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
93311388 6473 {
8832e7e3 6474 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
aaa75496 6475
b93601f3 6476 process_psymtab_comp_unit (per_cu, 0, language_minimal);
c906108c 6477 }
ff013f42 6478
6aa5f3a6
DE
6479 /* This has to wait until we read the CUs, we need the list of DWOs. */
6480 process_skeletonless_type_units (objfile);
6481
6482 /* Now that all TUs have been processed we can fill in the dependencies. */
6483 if (dwarf2_per_objfile->type_unit_groups != NULL)
6484 {
6485 htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
6486 build_type_psymtab_dependencies, NULL);
6487 }
6488
b4f54984 6489 if (dwarf_read_debug)
6aa5f3a6
DE
6490 print_tu_stats ();
6491
95554aad
TT
6492 set_partial_user (objfile);
6493
ff013f42
JK
6494 objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
6495 &objfile->objfile_obstack);
60606b2c 6496 discard_cleanups (addrmap_cleanup);
ff013f42 6497
ae038cb0 6498 do_cleanups (back_to);
45cfd468 6499
b4f54984 6500 if (dwarf_read_debug)
45cfd468 6501 fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
4262abfb 6502 objfile_name (objfile));
ae038cb0
DJ
6503}
6504
3019eac3 6505/* die_reader_func for load_partial_comp_unit. */
ae038cb0
DJ
6506
6507static void
dee91e82 6508load_partial_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 6509 const gdb_byte *info_ptr,
dee91e82
DE
6510 struct die_info *comp_unit_die,
6511 int has_children,
6512 void *data)
ae038cb0 6513{
dee91e82 6514 struct dwarf2_cu *cu = reader->cu;
ae038cb0 6515
95554aad 6516 prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
ae038cb0 6517
ae038cb0
DJ
6518 /* Check if comp unit has_children.
6519 If so, read the rest of the partial symbols from this comp unit.
0963b4bd 6520 If not, there's no more debug_info for this comp unit. */
d85a05f0 6521 if (has_children)
dee91e82
DE
6522 load_partial_dies (reader, info_ptr, 0);
6523}
98bfdba5 6524
dee91e82
DE
6525/* Load the partial DIEs for a secondary CU into memory.
6526 This is also used when rereading a primary CU with load_all_dies. */
c5b7e1cb 6527
dee91e82
DE
6528static void
6529load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
6530{
f4dc4d17
DE
6531 init_cutu_and_read_dies (this_cu, NULL, 1, 1,
6532 load_partial_comp_unit_reader, NULL);
ae038cb0
DJ
6533}
6534
ae038cb0 6535static void
36586728
TT
6536read_comp_units_from_section (struct objfile *objfile,
6537 struct dwarf2_section_info *section,
6538 unsigned int is_dwz,
6539 int *n_allocated,
6540 int *n_comp_units,
6541 struct dwarf2_per_cu_data ***all_comp_units)
ae038cb0 6542{
d521ce57 6543 const gdb_byte *info_ptr;
a32a8923 6544 bfd *abfd = get_section_bfd_owner (section);
be391dca 6545
b4f54984 6546 if (dwarf_read_debug)
bf6af496 6547 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
a32a8923
DE
6548 get_section_name (section),
6549 get_section_file_name (section));
bf6af496 6550
36586728 6551 dwarf2_read_section (objfile, section);
ae038cb0 6552
36586728 6553 info_ptr = section->buffer;
6e70227d 6554
36586728 6555 while (info_ptr < section->buffer + section->size)
ae038cb0 6556 {
c764a876 6557 unsigned int length, initial_length_size;
ae038cb0 6558 struct dwarf2_per_cu_data *this_cu;
b64f50a1 6559 sect_offset offset;
ae038cb0 6560
36586728 6561 offset.sect_off = info_ptr - section->buffer;
ae038cb0
DJ
6562
6563 /* Read just enough information to find out where the next
6564 compilation unit is. */
36586728 6565 length = read_initial_length (abfd, info_ptr, &initial_length_size);
ae038cb0
DJ
6566
6567 /* Save the compilation unit for later lookup. */
6568 this_cu = obstack_alloc (&objfile->objfile_obstack,
6569 sizeof (struct dwarf2_per_cu_data));
6570 memset (this_cu, 0, sizeof (*this_cu));
6571 this_cu->offset = offset;
c764a876 6572 this_cu->length = length + initial_length_size;
36586728 6573 this_cu->is_dwz = is_dwz;
9291a0cd 6574 this_cu->objfile = objfile;
8a0459fd 6575 this_cu->section = section;
ae038cb0 6576
36586728 6577 if (*n_comp_units == *n_allocated)
ae038cb0 6578 {
36586728
TT
6579 *n_allocated *= 2;
6580 *all_comp_units = xrealloc (*all_comp_units,
6581 *n_allocated
6582 * sizeof (struct dwarf2_per_cu_data *));
ae038cb0 6583 }
36586728
TT
6584 (*all_comp_units)[*n_comp_units] = this_cu;
6585 ++*n_comp_units;
ae038cb0
DJ
6586
6587 info_ptr = info_ptr + this_cu->length;
6588 }
36586728
TT
6589}
6590
6591/* Create a list of all compilation units in OBJFILE.
6592 This is only done for -readnow and building partial symtabs. */
6593
6594static void
6595create_all_comp_units (struct objfile *objfile)
6596{
6597 int n_allocated;
6598 int n_comp_units;
6599 struct dwarf2_per_cu_data **all_comp_units;
4db1a1dc 6600 struct dwz_file *dwz;
36586728
TT
6601
6602 n_comp_units = 0;
6603 n_allocated = 10;
6604 all_comp_units = xmalloc (n_allocated
6605 * sizeof (struct dwarf2_per_cu_data *));
6606
6607 read_comp_units_from_section (objfile, &dwarf2_per_objfile->info, 0,
6608 &n_allocated, &n_comp_units, &all_comp_units);
6609
4db1a1dc
TT
6610 dwz = dwarf2_get_dwz_file ();
6611 if (dwz != NULL)
6612 read_comp_units_from_section (objfile, &dwz->info, 1,
6613 &n_allocated, &n_comp_units,
6614 &all_comp_units);
ae038cb0
DJ
6615
6616 dwarf2_per_objfile->all_comp_units
6617 = obstack_alloc (&objfile->objfile_obstack,
6618 n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6619 memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
6620 n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6621 xfree (all_comp_units);
6622 dwarf2_per_objfile->n_comp_units = n_comp_units;
c906108c
SS
6623}
6624
5734ee8b 6625/* Process all loaded DIEs for compilation unit CU, starting at
cdc07690 6626 FIRST_DIE. The caller should pass SET_ADDRMAP == 1 if the compilation
5734ee8b 6627 unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
cdc07690
YQ
6628 DW_AT_ranges). See the comments of add_partial_subprogram on how
6629 SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated. */
c906108c 6630
72bf9492
DJ
6631static void
6632scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
cdc07690
YQ
6633 CORE_ADDR *highpc, int set_addrmap,
6634 struct dwarf2_cu *cu)
c906108c 6635{
72bf9492 6636 struct partial_die_info *pdi;
c906108c 6637
91c24f0a
DC
6638 /* Now, march along the PDI's, descending into ones which have
6639 interesting children but skipping the children of the other ones,
6640 until we reach the end of the compilation unit. */
c906108c 6641
72bf9492 6642 pdi = first_die;
91c24f0a 6643
72bf9492
DJ
6644 while (pdi != NULL)
6645 {
6646 fixup_partial_die (pdi, cu);
c906108c 6647
f55ee35c 6648 /* Anonymous namespaces or modules have no name but have interesting
91c24f0a
DC
6649 children, so we need to look at them. Ditto for anonymous
6650 enums. */
933c6fe4 6651
72bf9492 6652 if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
95554aad
TT
6653 || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
6654 || pdi->tag == DW_TAG_imported_unit)
c906108c 6655 {
72bf9492 6656 switch (pdi->tag)
c906108c
SS
6657 {
6658 case DW_TAG_subprogram:
cdc07690 6659 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
c906108c 6660 break;
72929c62 6661 case DW_TAG_constant:
c906108c
SS
6662 case DW_TAG_variable:
6663 case DW_TAG_typedef:
91c24f0a 6664 case DW_TAG_union_type:
72bf9492 6665 if (!pdi->is_declaration)
63d06c5c 6666 {
72bf9492 6667 add_partial_symbol (pdi, cu);
63d06c5c
DC
6668 }
6669 break;
c906108c 6670 case DW_TAG_class_type:
680b30c7 6671 case DW_TAG_interface_type:
c906108c 6672 case DW_TAG_structure_type:
72bf9492 6673 if (!pdi->is_declaration)
c906108c 6674 {
72bf9492 6675 add_partial_symbol (pdi, cu);
c906108c
SS
6676 }
6677 break;
91c24f0a 6678 case DW_TAG_enumeration_type:
72bf9492
DJ
6679 if (!pdi->is_declaration)
6680 add_partial_enumeration (pdi, cu);
c906108c
SS
6681 break;
6682 case DW_TAG_base_type:
a02abb62 6683 case DW_TAG_subrange_type:
c906108c 6684 /* File scope base type definitions are added to the partial
c5aa993b 6685 symbol table. */
72bf9492 6686 add_partial_symbol (pdi, cu);
c906108c 6687 break;
d9fa45fe 6688 case DW_TAG_namespace:
cdc07690 6689 add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
91c24f0a 6690 break;
5d7cb8df 6691 case DW_TAG_module:
cdc07690 6692 add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
5d7cb8df 6693 break;
95554aad
TT
6694 case DW_TAG_imported_unit:
6695 {
6696 struct dwarf2_per_cu_data *per_cu;
6697
f4dc4d17
DE
6698 /* For now we don't handle imported units in type units. */
6699 if (cu->per_cu->is_debug_types)
6700 {
6701 error (_("Dwarf Error: DW_TAG_imported_unit is not"
6702 " supported in type units [in module %s]"),
4262abfb 6703 objfile_name (cu->objfile));
f4dc4d17
DE
6704 }
6705
95554aad 6706 per_cu = dwarf2_find_containing_comp_unit (pdi->d.offset,
36586728 6707 pdi->is_dwz,
95554aad
TT
6708 cu->objfile);
6709
6710 /* Go read the partial unit, if needed. */
6711 if (per_cu->v.psymtab == NULL)
b93601f3 6712 process_psymtab_comp_unit (per_cu, 1, cu->language);
95554aad 6713
f4dc4d17 6714 VEC_safe_push (dwarf2_per_cu_ptr,
796a7ff8 6715 cu->per_cu->imported_symtabs, per_cu);
95554aad
TT
6716 }
6717 break;
74921315
KS
6718 case DW_TAG_imported_declaration:
6719 add_partial_symbol (pdi, cu);
6720 break;
c906108c
SS
6721 default:
6722 break;
6723 }
6724 }
6725
72bf9492
DJ
6726 /* If the die has a sibling, skip to the sibling. */
6727
6728 pdi = pdi->die_sibling;
6729 }
6730}
6731
6732/* Functions used to compute the fully scoped name of a partial DIE.
91c24f0a 6733
72bf9492 6734 Normally, this is simple. For C++, the parent DIE's fully scoped
987504bb
JJ
6735 name is concatenated with "::" and the partial DIE's name. For
6736 Java, the same thing occurs except that "." is used instead of "::".
72bf9492
DJ
6737 Enumerators are an exception; they use the scope of their parent
6738 enumeration type, i.e. the name of the enumeration type is not
6739 prepended to the enumerator.
91c24f0a 6740
72bf9492
DJ
6741 There are two complexities. One is DW_AT_specification; in this
6742 case "parent" means the parent of the target of the specification,
6743 instead of the direct parent of the DIE. The other is compilers
6744 which do not emit DW_TAG_namespace; in this case we try to guess
6745 the fully qualified name of structure types from their members'
6746 linkage names. This must be done using the DIE's children rather
6747 than the children of any DW_AT_specification target. We only need
6748 to do this for structures at the top level, i.e. if the target of
6749 any DW_AT_specification (if any; otherwise the DIE itself) does not
6750 have a parent. */
6751
6752/* Compute the scope prefix associated with PDI's parent, in
6753 compilation unit CU. The result will be allocated on CU's
6754 comp_unit_obstack, or a copy of the already allocated PDI->NAME
6755 field. NULL is returned if no prefix is necessary. */
15d034d0 6756static const char *
72bf9492
DJ
6757partial_die_parent_scope (struct partial_die_info *pdi,
6758 struct dwarf2_cu *cu)
6759{
15d034d0 6760 const char *grandparent_scope;
72bf9492 6761 struct partial_die_info *parent, *real_pdi;
91c24f0a 6762
72bf9492
DJ
6763 /* We need to look at our parent DIE; if we have a DW_AT_specification,
6764 then this means the parent of the specification DIE. */
6765
6766 real_pdi = pdi;
72bf9492 6767 while (real_pdi->has_specification)
36586728
TT
6768 real_pdi = find_partial_die (real_pdi->spec_offset,
6769 real_pdi->spec_is_dwz, cu);
72bf9492
DJ
6770
6771 parent = real_pdi->die_parent;
6772 if (parent == NULL)
6773 return NULL;
6774
6775 if (parent->scope_set)
6776 return parent->scope;
6777
6778 fixup_partial_die (parent, cu);
6779
10b3939b 6780 grandparent_scope = partial_die_parent_scope (parent, cu);
72bf9492 6781
acebe513
UW
6782 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
6783 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
6784 Work around this problem here. */
6785 if (cu->language == language_cplus
6e70227d 6786 && parent->tag == DW_TAG_namespace
acebe513
UW
6787 && strcmp (parent->name, "::") == 0
6788 && grandparent_scope == NULL)
6789 {
6790 parent->scope = NULL;
6791 parent->scope_set = 1;
6792 return NULL;
6793 }
6794
9c6c53f7
SA
6795 if (pdi->tag == DW_TAG_enumerator)
6796 /* Enumerators should not get the name of the enumeration as a prefix. */
6797 parent->scope = grandparent_scope;
6798 else if (parent->tag == DW_TAG_namespace
f55ee35c 6799 || parent->tag == DW_TAG_module
72bf9492
DJ
6800 || parent->tag == DW_TAG_structure_type
6801 || parent->tag == DW_TAG_class_type
680b30c7 6802 || parent->tag == DW_TAG_interface_type
ceeb3d5a
TT
6803 || parent->tag == DW_TAG_union_type
6804 || parent->tag == DW_TAG_enumeration_type)
72bf9492
DJ
6805 {
6806 if (grandparent_scope == NULL)
6807 parent->scope = parent->name;
6808 else
3e43a32a
MS
6809 parent->scope = typename_concat (&cu->comp_unit_obstack,
6810 grandparent_scope,
f55ee35c 6811 parent->name, 0, cu);
72bf9492 6812 }
72bf9492
DJ
6813 else
6814 {
6815 /* FIXME drow/2004-04-01: What should we be doing with
6816 function-local names? For partial symbols, we should probably be
6817 ignoring them. */
6818 complaint (&symfile_complaints,
e2e0b3e5 6819 _("unhandled containing DIE tag %d for DIE at %d"),
b64f50a1 6820 parent->tag, pdi->offset.sect_off);
72bf9492 6821 parent->scope = grandparent_scope;
c906108c
SS
6822 }
6823
72bf9492
DJ
6824 parent->scope_set = 1;
6825 return parent->scope;
6826}
6827
6828/* Return the fully scoped name associated with PDI, from compilation unit
6829 CU. The result will be allocated with malloc. */
4568ecf9 6830
72bf9492
DJ
6831static char *
6832partial_die_full_name (struct partial_die_info *pdi,
6833 struct dwarf2_cu *cu)
6834{
15d034d0 6835 const char *parent_scope;
72bf9492 6836
98bfdba5
PA
6837 /* If this is a template instantiation, we can not work out the
6838 template arguments from partial DIEs. So, unfortunately, we have
6839 to go through the full DIEs. At least any work we do building
6840 types here will be reused if full symbols are loaded later. */
6841 if (pdi->has_template_arguments)
6842 {
6843 fixup_partial_die (pdi, cu);
6844
6845 if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
6846 {
6847 struct die_info *die;
6848 struct attribute attr;
6849 struct dwarf2_cu *ref_cu = cu;
6850
b64f50a1 6851 /* DW_FORM_ref_addr is using section offset. */
98bfdba5
PA
6852 attr.name = 0;
6853 attr.form = DW_FORM_ref_addr;
4568ecf9 6854 attr.u.unsnd = pdi->offset.sect_off;
98bfdba5
PA
6855 die = follow_die_ref (NULL, &attr, &ref_cu);
6856
6857 return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
6858 }
6859 }
6860
72bf9492
DJ
6861 parent_scope = partial_die_parent_scope (pdi, cu);
6862 if (parent_scope == NULL)
6863 return NULL;
6864 else
f55ee35c 6865 return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
c906108c
SS
6866}
6867
6868static void
72bf9492 6869add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
c906108c 6870{
e7c27a73 6871 struct objfile *objfile = cu->objfile;
3e29f34a 6872 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c 6873 CORE_ADDR addr = 0;
15d034d0 6874 const char *actual_name = NULL;
e142c38c 6875 CORE_ADDR baseaddr;
15d034d0 6876 char *built_actual_name;
e142c38c
DJ
6877
6878 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 6879
15d034d0
TT
6880 built_actual_name = partial_die_full_name (pdi, cu);
6881 if (built_actual_name != NULL)
6882 actual_name = built_actual_name;
63d06c5c 6883
72bf9492
DJ
6884 if (actual_name == NULL)
6885 actual_name = pdi->name;
6886
c906108c
SS
6887 switch (pdi->tag)
6888 {
6889 case DW_TAG_subprogram:
3e29f34a 6890 addr = gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr);
2cfa0c8d 6891 if (pdi->is_external || cu->language == language_ada)
c906108c 6892 {
2cfa0c8d
JB
6893 /* brobecker/2007-12-26: Normally, only "external" DIEs are part
6894 of the global scope. But in Ada, we want to be able to access
6895 nested procedures globally. So all Ada subprograms are stored
6896 in the global scope. */
3e29f34a
MR
6897 /* prim_record_minimal_symbol (actual_name, addr, mst_text,
6898 objfile); */
f47fb265 6899 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6900 built_actual_name != NULL,
f47fb265
MS
6901 VAR_DOMAIN, LOC_BLOCK,
6902 &objfile->global_psymbols,
1762568f 6903 addr, cu->language, objfile);
c906108c
SS
6904 }
6905 else
6906 {
3e29f34a
MR
6907 /* prim_record_minimal_symbol (actual_name, addr, mst_file_text,
6908 objfile); */
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->static_psymbols,
1762568f 6913 addr, cu->language, objfile);
c906108c
SS
6914 }
6915 break;
72929c62
JB
6916 case DW_TAG_constant:
6917 {
6918 struct psymbol_allocation_list *list;
6919
6920 if (pdi->is_external)
6921 list = &objfile->global_psymbols;
6922 else
6923 list = &objfile->static_psymbols;
f47fb265 6924 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6925 built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
1762568f 6926 list, 0, cu->language, objfile);
72929c62
JB
6927 }
6928 break;
c906108c 6929 case DW_TAG_variable:
95554aad
TT
6930 if (pdi->d.locdesc)
6931 addr = decode_locdesc (pdi->d.locdesc, cu);
caac4577 6932
95554aad 6933 if (pdi->d.locdesc
caac4577
JG
6934 && addr == 0
6935 && !dwarf2_per_objfile->has_section_at_zero)
6936 {
6937 /* A global or static variable may also have been stripped
6938 out by the linker if unused, in which case its address
6939 will be nullified; do not add such variables into partial
6940 symbol table then. */
6941 }
6942 else if (pdi->is_external)
c906108c
SS
6943 {
6944 /* Global Variable.
6945 Don't enter into the minimal symbol tables as there is
6946 a minimal symbol table entry from the ELF symbols already.
6947 Enter into partial symbol table if it has a location
6948 descriptor or a type.
6949 If the location descriptor is missing, new_symbol will create
6950 a LOC_UNRESOLVED symbol, the address of the variable will then
6951 be determined from the minimal symbol table whenever the variable
6952 is referenced.
6953 The address for the partial symbol table entry is not
6954 used by GDB, but it comes in handy for debugging partial symbol
6955 table building. */
6956
95554aad 6957 if (pdi->d.locdesc || pdi->has_type)
f47fb265 6958 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6959 built_actual_name != NULL,
f47fb265
MS
6960 VAR_DOMAIN, LOC_STATIC,
6961 &objfile->global_psymbols,
1762568f 6962 addr + baseaddr,
f47fb265 6963 cu->language, objfile);
c906108c
SS
6964 }
6965 else
6966 {
ff908ebf
AW
6967 int has_loc = pdi->d.locdesc != NULL;
6968
6969 /* Static Variable. Skip symbols whose value we cannot know (those
6970 without location descriptors or constant values). */
6971 if (!has_loc && !pdi->has_const_value)
decbce07 6972 {
15d034d0 6973 xfree (built_actual_name);
decbce07
MS
6974 return;
6975 }
ff908ebf 6976
f47fb265 6977 /* prim_record_minimal_symbol (actual_name, addr + baseaddr,
c5aa993b 6978 mst_file_data, objfile); */
f47fb265 6979 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6980 built_actual_name != NULL,
f47fb265
MS
6981 VAR_DOMAIN, LOC_STATIC,
6982 &objfile->static_psymbols,
ff908ebf 6983 has_loc ? addr + baseaddr : (CORE_ADDR) 0,
f47fb265 6984 cu->language, objfile);
c906108c
SS
6985 }
6986 break;
6987 case DW_TAG_typedef:
6988 case DW_TAG_base_type:
a02abb62 6989 case DW_TAG_subrange_type:
38d518c9 6990 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6991 built_actual_name != NULL,
176620f1 6992 VAR_DOMAIN, LOC_TYPEDEF,
c906108c 6993 &objfile->static_psymbols,
1762568f 6994 0, cu->language, objfile);
c906108c 6995 break;
74921315 6996 case DW_TAG_imported_declaration:
72bf9492
DJ
6997 case DW_TAG_namespace:
6998 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6999 built_actual_name != NULL,
72bf9492
DJ
7000 VAR_DOMAIN, LOC_TYPEDEF,
7001 &objfile->global_psymbols,
1762568f 7002 0, cu->language, objfile);
72bf9492 7003 break;
530e8392
KB
7004 case DW_TAG_module:
7005 add_psymbol_to_list (actual_name, strlen (actual_name),
7006 built_actual_name != NULL,
7007 MODULE_DOMAIN, LOC_TYPEDEF,
7008 &objfile->global_psymbols,
1762568f 7009 0, cu->language, objfile);
530e8392 7010 break;
c906108c 7011 case DW_TAG_class_type:
680b30c7 7012 case DW_TAG_interface_type:
c906108c
SS
7013 case DW_TAG_structure_type:
7014 case DW_TAG_union_type:
7015 case DW_TAG_enumeration_type:
fa4028e9
JB
7016 /* Skip external references. The DWARF standard says in the section
7017 about "Structure, Union, and Class Type Entries": "An incomplete
7018 structure, union or class type is represented by a structure,
7019 union or class entry that does not have a byte size attribute
7020 and that has a DW_AT_declaration attribute." */
7021 if (!pdi->has_byte_size && pdi->is_declaration)
decbce07 7022 {
15d034d0 7023 xfree (built_actual_name);
decbce07
MS
7024 return;
7025 }
fa4028e9 7026
63d06c5c
DC
7027 /* NOTE: carlton/2003-10-07: See comment in new_symbol about
7028 static vs. global. */
38d518c9 7029 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7030 built_actual_name != NULL,
176620f1 7031 STRUCT_DOMAIN, LOC_TYPEDEF,
987504bb
JJ
7032 (cu->language == language_cplus
7033 || cu->language == language_java)
63d06c5c
DC
7034 ? &objfile->global_psymbols
7035 : &objfile->static_psymbols,
1762568f 7036 0, cu->language, objfile);
c906108c 7037
c906108c
SS
7038 break;
7039 case DW_TAG_enumerator:
38d518c9 7040 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7041 built_actual_name != NULL,
176620f1 7042 VAR_DOMAIN, LOC_CONST,
987504bb
JJ
7043 (cu->language == language_cplus
7044 || cu->language == language_java)
f6fe98ef
DJ
7045 ? &objfile->global_psymbols
7046 : &objfile->static_psymbols,
1762568f 7047 0, cu->language, objfile);
c906108c
SS
7048 break;
7049 default:
7050 break;
7051 }
5c4e30ca 7052
15d034d0 7053 xfree (built_actual_name);
c906108c
SS
7054}
7055
5c4e30ca
DC
7056/* Read a partial die corresponding to a namespace; also, add a symbol
7057 corresponding to that namespace to the symbol table. NAMESPACE is
7058 the name of the enclosing namespace. */
91c24f0a 7059
72bf9492
DJ
7060static void
7061add_partial_namespace (struct partial_die_info *pdi,
91c24f0a 7062 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 7063 int set_addrmap, struct dwarf2_cu *cu)
91c24f0a 7064{
72bf9492 7065 /* Add a symbol for the namespace. */
e7c27a73 7066
72bf9492 7067 add_partial_symbol (pdi, cu);
5c4e30ca
DC
7068
7069 /* Now scan partial symbols in that namespace. */
7070
91c24f0a 7071 if (pdi->has_children)
cdc07690 7072 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
91c24f0a
DC
7073}
7074
5d7cb8df
JK
7075/* Read a partial die corresponding to a Fortran module. */
7076
7077static void
7078add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
cdc07690 7079 CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
5d7cb8df 7080{
530e8392
KB
7081 /* Add a symbol for the namespace. */
7082
7083 add_partial_symbol (pdi, cu);
7084
f55ee35c 7085 /* Now scan partial symbols in that module. */
5d7cb8df
JK
7086
7087 if (pdi->has_children)
cdc07690 7088 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
5d7cb8df
JK
7089}
7090
bc30ff58
JB
7091/* Read a partial die corresponding to a subprogram and create a partial
7092 symbol for that subprogram. When the CU language allows it, this
7093 routine also defines a partial symbol for each nested subprogram
cdc07690 7094 that this subprogram contains. If SET_ADDRMAP is true, record the
428fc5fc
YQ
7095 covered ranges in the addrmap. Set *LOWPC and *HIGHPC to the lowest
7096 and highest PC values found in PDI.
6e70227d 7097
cdc07690
YQ
7098 PDI may also be a lexical block, in which case we simply search
7099 recursively for subprograms defined inside that lexical block.
bc30ff58
JB
7100 Again, this is only performed when the CU language allows this
7101 type of definitions. */
7102
7103static void
7104add_partial_subprogram (struct partial_die_info *pdi,
7105 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 7106 int set_addrmap, struct dwarf2_cu *cu)
bc30ff58
JB
7107{
7108 if (pdi->tag == DW_TAG_subprogram)
7109 {
7110 if (pdi->has_pc_info)
7111 {
7112 if (pdi->lowpc < *lowpc)
7113 *lowpc = pdi->lowpc;
7114 if (pdi->highpc > *highpc)
7115 *highpc = pdi->highpc;
cdc07690 7116 if (set_addrmap)
5734ee8b 7117 {
5734ee8b 7118 struct objfile *objfile = cu->objfile;
3e29f34a
MR
7119 struct gdbarch *gdbarch = get_objfile_arch (objfile);
7120 CORE_ADDR baseaddr;
7121 CORE_ADDR highpc;
7122 CORE_ADDR lowpc;
5734ee8b
DJ
7123
7124 baseaddr = ANOFFSET (objfile->section_offsets,
7125 SECT_OFF_TEXT (objfile));
3e29f34a
MR
7126 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7127 pdi->lowpc + baseaddr);
7128 highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7129 pdi->highpc + baseaddr);
7130 addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
9291a0cd 7131 cu->per_cu->v.psymtab);
5734ee8b 7132 }
481860b3
GB
7133 }
7134
7135 if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
7136 {
bc30ff58 7137 if (!pdi->is_declaration)
e8d05480
JB
7138 /* Ignore subprogram DIEs that do not have a name, they are
7139 illegal. Do not emit a complaint at this point, we will
7140 do so when we convert this psymtab into a symtab. */
7141 if (pdi->name)
7142 add_partial_symbol (pdi, cu);
bc30ff58
JB
7143 }
7144 }
6e70227d 7145
bc30ff58
JB
7146 if (! pdi->has_children)
7147 return;
7148
7149 if (cu->language == language_ada)
7150 {
7151 pdi = pdi->die_child;
7152 while (pdi != NULL)
7153 {
7154 fixup_partial_die (pdi, cu);
7155 if (pdi->tag == DW_TAG_subprogram
7156 || pdi->tag == DW_TAG_lexical_block)
cdc07690 7157 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
bc30ff58
JB
7158 pdi = pdi->die_sibling;
7159 }
7160 }
7161}
7162
91c24f0a
DC
7163/* Read a partial die corresponding to an enumeration type. */
7164
72bf9492
DJ
7165static void
7166add_partial_enumeration (struct partial_die_info *enum_pdi,
7167 struct dwarf2_cu *cu)
91c24f0a 7168{
72bf9492 7169 struct partial_die_info *pdi;
91c24f0a
DC
7170
7171 if (enum_pdi->name != NULL)
72bf9492
DJ
7172 add_partial_symbol (enum_pdi, cu);
7173
7174 pdi = enum_pdi->die_child;
7175 while (pdi)
91c24f0a 7176 {
72bf9492 7177 if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
e2e0b3e5 7178 complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
91c24f0a 7179 else
72bf9492
DJ
7180 add_partial_symbol (pdi, cu);
7181 pdi = pdi->die_sibling;
91c24f0a 7182 }
91c24f0a
DC
7183}
7184
6caca83c
CC
7185/* Return the initial uleb128 in the die at INFO_PTR. */
7186
7187static unsigned int
d521ce57 7188peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
6caca83c
CC
7189{
7190 unsigned int bytes_read;
7191
7192 return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7193}
7194
4bb7a0a7
DJ
7195/* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
7196 Return the corresponding abbrev, or NULL if the number is zero (indicating
7197 an empty DIE). In either case *BYTES_READ will be set to the length of
7198 the initial number. */
7199
7200static struct abbrev_info *
d521ce57 7201peek_die_abbrev (const gdb_byte *info_ptr, unsigned int *bytes_read,
891d2f0b 7202 struct dwarf2_cu *cu)
4bb7a0a7
DJ
7203{
7204 bfd *abfd = cu->objfile->obfd;
7205 unsigned int abbrev_number;
7206 struct abbrev_info *abbrev;
7207
7208 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
7209
7210 if (abbrev_number == 0)
7211 return NULL;
7212
433df2d4 7213 abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
4bb7a0a7
DJ
7214 if (!abbrev)
7215 {
422b9917
DE
7216 error (_("Dwarf Error: Could not find abbrev number %d in %s"
7217 " at offset 0x%x [in module %s]"),
7218 abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
7219 cu->header.offset.sect_off, bfd_get_filename (abfd));
4bb7a0a7
DJ
7220 }
7221
7222 return abbrev;
7223}
7224
93311388
DE
7225/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7226 Returns a pointer to the end of a series of DIEs, terminated by an empty
4bb7a0a7
DJ
7227 DIE. Any children of the skipped DIEs will also be skipped. */
7228
d521ce57
TT
7229static const gdb_byte *
7230skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
4bb7a0a7 7231{
dee91e82 7232 struct dwarf2_cu *cu = reader->cu;
4bb7a0a7
DJ
7233 struct abbrev_info *abbrev;
7234 unsigned int bytes_read;
7235
7236 while (1)
7237 {
7238 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
7239 if (abbrev == NULL)
7240 return info_ptr + bytes_read;
7241 else
dee91e82 7242 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
4bb7a0a7
DJ
7243 }
7244}
7245
93311388
DE
7246/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7247 INFO_PTR should point just after the initial uleb128 of a DIE, and the
4bb7a0a7
DJ
7248 abbrev corresponding to that skipped uleb128 should be passed in
7249 ABBREV. Returns a pointer to this DIE's sibling, skipping any
7250 children. */
7251
d521ce57
TT
7252static const gdb_byte *
7253skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
dee91e82 7254 struct abbrev_info *abbrev)
4bb7a0a7
DJ
7255{
7256 unsigned int bytes_read;
7257 struct attribute attr;
dee91e82
DE
7258 bfd *abfd = reader->abfd;
7259 struct dwarf2_cu *cu = reader->cu;
d521ce57 7260 const gdb_byte *buffer = reader->buffer;
f664829e 7261 const gdb_byte *buffer_end = reader->buffer_end;
d521ce57 7262 const gdb_byte *start_info_ptr = info_ptr;
4bb7a0a7
DJ
7263 unsigned int form, i;
7264
7265 for (i = 0; i < abbrev->num_attrs; i++)
7266 {
7267 /* The only abbrev we care about is DW_AT_sibling. */
7268 if (abbrev->attrs[i].name == DW_AT_sibling)
7269 {
dee91e82 7270 read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
4bb7a0a7 7271 if (attr.form == DW_FORM_ref_addr)
3e43a32a
MS
7272 complaint (&symfile_complaints,
7273 _("ignoring absolute DW_AT_sibling"));
4bb7a0a7 7274 else
b9502d3f
WN
7275 {
7276 unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
7277 const gdb_byte *sibling_ptr = buffer + off;
7278
7279 if (sibling_ptr < info_ptr)
7280 complaint (&symfile_complaints,
7281 _("DW_AT_sibling points backwards"));
22869d73
KS
7282 else if (sibling_ptr > reader->buffer_end)
7283 dwarf2_section_buffer_overflow_complaint (reader->die_section);
b9502d3f
WN
7284 else
7285 return sibling_ptr;
7286 }
4bb7a0a7
DJ
7287 }
7288
7289 /* If it isn't DW_AT_sibling, skip this attribute. */
7290 form = abbrev->attrs[i].form;
7291 skip_attribute:
7292 switch (form)
7293 {
4bb7a0a7 7294 case DW_FORM_ref_addr:
ae411497
TT
7295 /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
7296 and later it is offset sized. */
7297 if (cu->header.version == 2)
7298 info_ptr += cu->header.addr_size;
7299 else
7300 info_ptr += cu->header.offset_size;
7301 break;
36586728
TT
7302 case DW_FORM_GNU_ref_alt:
7303 info_ptr += cu->header.offset_size;
7304 break;
ae411497 7305 case DW_FORM_addr:
4bb7a0a7
DJ
7306 info_ptr += cu->header.addr_size;
7307 break;
7308 case DW_FORM_data1:
7309 case DW_FORM_ref1:
7310 case DW_FORM_flag:
7311 info_ptr += 1;
7312 break;
2dc7f7b3
TT
7313 case DW_FORM_flag_present:
7314 break;
4bb7a0a7
DJ
7315 case DW_FORM_data2:
7316 case DW_FORM_ref2:
7317 info_ptr += 2;
7318 break;
7319 case DW_FORM_data4:
7320 case DW_FORM_ref4:
7321 info_ptr += 4;
7322 break;
7323 case DW_FORM_data8:
7324 case DW_FORM_ref8:
55f1336d 7325 case DW_FORM_ref_sig8:
4bb7a0a7
DJ
7326 info_ptr += 8;
7327 break;
7328 case DW_FORM_string:
9b1c24c8 7329 read_direct_string (abfd, info_ptr, &bytes_read);
4bb7a0a7
DJ
7330 info_ptr += bytes_read;
7331 break;
2dc7f7b3 7332 case DW_FORM_sec_offset:
4bb7a0a7 7333 case DW_FORM_strp:
36586728 7334 case DW_FORM_GNU_strp_alt:
4bb7a0a7
DJ
7335 info_ptr += cu->header.offset_size;
7336 break;
2dc7f7b3 7337 case DW_FORM_exprloc:
4bb7a0a7
DJ
7338 case DW_FORM_block:
7339 info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7340 info_ptr += bytes_read;
7341 break;
7342 case DW_FORM_block1:
7343 info_ptr += 1 + read_1_byte (abfd, info_ptr);
7344 break;
7345 case DW_FORM_block2:
7346 info_ptr += 2 + read_2_bytes (abfd, info_ptr);
7347 break;
7348 case DW_FORM_block4:
7349 info_ptr += 4 + read_4_bytes (abfd, info_ptr);
7350 break;
7351 case DW_FORM_sdata:
7352 case DW_FORM_udata:
7353 case DW_FORM_ref_udata:
3019eac3
DE
7354 case DW_FORM_GNU_addr_index:
7355 case DW_FORM_GNU_str_index:
d521ce57 7356 info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
4bb7a0a7
DJ
7357 break;
7358 case DW_FORM_indirect:
7359 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7360 info_ptr += bytes_read;
7361 /* We need to continue parsing from here, so just go back to
7362 the top. */
7363 goto skip_attribute;
7364
7365 default:
3e43a32a
MS
7366 error (_("Dwarf Error: Cannot handle %s "
7367 "in DWARF reader [in module %s]"),
4bb7a0a7
DJ
7368 dwarf_form_name (form),
7369 bfd_get_filename (abfd));
7370 }
7371 }
7372
7373 if (abbrev->has_children)
dee91e82 7374 return skip_children (reader, info_ptr);
4bb7a0a7
DJ
7375 else
7376 return info_ptr;
7377}
7378
93311388 7379/* Locate ORIG_PDI's sibling.
dee91e82 7380 INFO_PTR should point to the start of the next DIE after ORIG_PDI. */
91c24f0a 7381
d521ce57 7382static const gdb_byte *
dee91e82
DE
7383locate_pdi_sibling (const struct die_reader_specs *reader,
7384 struct partial_die_info *orig_pdi,
d521ce57 7385 const gdb_byte *info_ptr)
91c24f0a
DC
7386{
7387 /* Do we know the sibling already? */
72bf9492 7388
91c24f0a
DC
7389 if (orig_pdi->sibling)
7390 return orig_pdi->sibling;
7391
7392 /* Are there any children to deal with? */
7393
7394 if (!orig_pdi->has_children)
7395 return info_ptr;
7396
4bb7a0a7 7397 /* Skip the children the long way. */
91c24f0a 7398
dee91e82 7399 return skip_children (reader, info_ptr);
91c24f0a
DC
7400}
7401
257e7a09 7402/* Expand this partial symbol table into a full symbol table. SELF is
442e4d9c 7403 not NULL. */
c906108c
SS
7404
7405static void
257e7a09
YQ
7406dwarf2_read_symtab (struct partial_symtab *self,
7407 struct objfile *objfile)
c906108c 7408{
257e7a09 7409 if (self->readin)
c906108c 7410 {
442e4d9c 7411 warning (_("bug: psymtab for %s is already read in."),
257e7a09 7412 self->filename);
442e4d9c
YQ
7413 }
7414 else
7415 {
7416 if (info_verbose)
c906108c 7417 {
442e4d9c 7418 printf_filtered (_("Reading in symbols for %s..."),
257e7a09 7419 self->filename);
442e4d9c 7420 gdb_flush (gdb_stdout);
c906108c 7421 }
c906108c 7422
442e4d9c
YQ
7423 /* Restore our global data. */
7424 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
10b3939b 7425
442e4d9c
YQ
7426 /* If this psymtab is constructed from a debug-only objfile, the
7427 has_section_at_zero flag will not necessarily be correct. We
7428 can get the correct value for this flag by looking at the data
7429 associated with the (presumably stripped) associated objfile. */
7430 if (objfile->separate_debug_objfile_backlink)
7431 {
7432 struct dwarf2_per_objfile *dpo_backlink
7433 = objfile_data (objfile->separate_debug_objfile_backlink,
7434 dwarf2_objfile_data_key);
9a619af0 7435
442e4d9c
YQ
7436 dwarf2_per_objfile->has_section_at_zero
7437 = dpo_backlink->has_section_at_zero;
7438 }
b2ab525c 7439
442e4d9c 7440 dwarf2_per_objfile->reading_partial_symbols = 0;
98bfdba5 7441
257e7a09 7442 psymtab_to_symtab_1 (self);
c906108c 7443
442e4d9c
YQ
7444 /* Finish up the debug error message. */
7445 if (info_verbose)
7446 printf_filtered (_("done.\n"));
c906108c 7447 }
95554aad
TT
7448
7449 process_cu_includes ();
c906108c 7450}
9cdd5dbd
DE
7451\f
7452/* Reading in full CUs. */
c906108c 7453
10b3939b
DJ
7454/* Add PER_CU to the queue. */
7455
7456static void
95554aad
TT
7457queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
7458 enum language pretend_language)
10b3939b
DJ
7459{
7460 struct dwarf2_queue_item *item;
7461
7462 per_cu->queued = 1;
7463 item = xmalloc (sizeof (*item));
7464 item->per_cu = per_cu;
95554aad 7465 item->pretend_language = pretend_language;
10b3939b
DJ
7466 item->next = NULL;
7467
7468 if (dwarf2_queue == NULL)
7469 dwarf2_queue = item;
7470 else
7471 dwarf2_queue_tail->next = item;
7472
7473 dwarf2_queue_tail = item;
7474}
7475
89e63ee4
DE
7476/* If PER_CU is not yet queued, add it to the queue.
7477 If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
7478 dependency.
0907af0c 7479 The result is non-zero if PER_CU was queued, otherwise the result is zero
69d751e3
DE
7480 meaning either PER_CU is already queued or it is already loaded.
7481
7482 N.B. There is an invariant here that if a CU is queued then it is loaded.
7483 The caller is required to load PER_CU if we return non-zero. */
0907af0c
DE
7484
7485static int
89e63ee4 7486maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
0907af0c
DE
7487 struct dwarf2_per_cu_data *per_cu,
7488 enum language pretend_language)
7489{
7490 /* We may arrive here during partial symbol reading, if we need full
7491 DIEs to process an unusual case (e.g. template arguments). Do
7492 not queue PER_CU, just tell our caller to load its DIEs. */
7493 if (dwarf2_per_objfile->reading_partial_symbols)
7494 {
7495 if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
7496 return 1;
7497 return 0;
7498 }
7499
7500 /* Mark the dependence relation so that we don't flush PER_CU
7501 too early. */
89e63ee4
DE
7502 if (dependent_cu != NULL)
7503 dwarf2_add_dependence (dependent_cu, per_cu);
0907af0c
DE
7504
7505 /* If it's already on the queue, we have nothing to do. */
7506 if (per_cu->queued)
7507 return 0;
7508
7509 /* If the compilation unit is already loaded, just mark it as
7510 used. */
7511 if (per_cu->cu != NULL)
7512 {
7513 per_cu->cu->last_used = 0;
7514 return 0;
7515 }
7516
7517 /* Add it to the queue. */
7518 queue_comp_unit (per_cu, pretend_language);
7519
7520 return 1;
7521}
7522
10b3939b
DJ
7523/* Process the queue. */
7524
7525static void
a0f42c21 7526process_queue (void)
10b3939b
DJ
7527{
7528 struct dwarf2_queue_item *item, *next_item;
7529
b4f54984 7530 if (dwarf_read_debug)
45cfd468
DE
7531 {
7532 fprintf_unfiltered (gdb_stdlog,
7533 "Expanding one or more symtabs of objfile %s ...\n",
4262abfb 7534 objfile_name (dwarf2_per_objfile->objfile));
45cfd468
DE
7535 }
7536
03dd20cc
DJ
7537 /* The queue starts out with one item, but following a DIE reference
7538 may load a new CU, adding it to the end of the queue. */
10b3939b
DJ
7539 for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
7540 {
cc12ce38
DE
7541 if ((dwarf2_per_objfile->using_index
7542 ? !item->per_cu->v.quick->compunit_symtab
7543 : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
7544 /* Skip dummy CUs. */
7545 && item->per_cu->cu != NULL)
f4dc4d17
DE
7546 {
7547 struct dwarf2_per_cu_data *per_cu = item->per_cu;
73be47f5 7548 unsigned int debug_print_threshold;
247f5c4f 7549 char buf[100];
f4dc4d17 7550
247f5c4f 7551 if (per_cu->is_debug_types)
f4dc4d17 7552 {
247f5c4f
DE
7553 struct signatured_type *sig_type =
7554 (struct signatured_type *) per_cu;
7555
7556 sprintf (buf, "TU %s at offset 0x%x",
73be47f5
DE
7557 hex_string (sig_type->signature),
7558 per_cu->offset.sect_off);
7559 /* There can be 100s of TUs.
7560 Only print them in verbose mode. */
7561 debug_print_threshold = 2;
f4dc4d17 7562 }
247f5c4f 7563 else
73be47f5
DE
7564 {
7565 sprintf (buf, "CU at offset 0x%x", per_cu->offset.sect_off);
7566 debug_print_threshold = 1;
7567 }
247f5c4f 7568
b4f54984 7569 if (dwarf_read_debug >= debug_print_threshold)
247f5c4f 7570 fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
f4dc4d17
DE
7571
7572 if (per_cu->is_debug_types)
7573 process_full_type_unit (per_cu, item->pretend_language);
7574 else
7575 process_full_comp_unit (per_cu, item->pretend_language);
7576
b4f54984 7577 if (dwarf_read_debug >= debug_print_threshold)
247f5c4f 7578 fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
f4dc4d17 7579 }
10b3939b
DJ
7580
7581 item->per_cu->queued = 0;
7582 next_item = item->next;
7583 xfree (item);
7584 }
7585
7586 dwarf2_queue_tail = NULL;
45cfd468 7587
b4f54984 7588 if (dwarf_read_debug)
45cfd468
DE
7589 {
7590 fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
4262abfb 7591 objfile_name (dwarf2_per_objfile->objfile));
45cfd468 7592 }
10b3939b
DJ
7593}
7594
7595/* Free all allocated queue entries. This function only releases anything if
7596 an error was thrown; if the queue was processed then it would have been
7597 freed as we went along. */
7598
7599static void
7600dwarf2_release_queue (void *dummy)
7601{
7602 struct dwarf2_queue_item *item, *last;
7603
7604 item = dwarf2_queue;
7605 while (item)
7606 {
7607 /* Anything still marked queued is likely to be in an
7608 inconsistent state, so discard it. */
7609 if (item->per_cu->queued)
7610 {
7611 if (item->per_cu->cu != NULL)
dee91e82 7612 free_one_cached_comp_unit (item->per_cu);
10b3939b
DJ
7613 item->per_cu->queued = 0;
7614 }
7615
7616 last = item;
7617 item = item->next;
7618 xfree (last);
7619 }
7620
7621 dwarf2_queue = dwarf2_queue_tail = NULL;
7622}
7623
7624/* Read in full symbols for PST, and anything it depends on. */
7625
c906108c 7626static void
fba45db2 7627psymtab_to_symtab_1 (struct partial_symtab *pst)
c906108c 7628{
10b3939b 7629 struct dwarf2_per_cu_data *per_cu;
aaa75496
JB
7630 int i;
7631
95554aad
TT
7632 if (pst->readin)
7633 return;
7634
aaa75496 7635 for (i = 0; i < pst->number_of_dependencies; i++)
95554aad
TT
7636 if (!pst->dependencies[i]->readin
7637 && pst->dependencies[i]->user == NULL)
aaa75496
JB
7638 {
7639 /* Inform about additional files that need to be read in. */
7640 if (info_verbose)
7641 {
a3f17187 7642 /* FIXME: i18n: Need to make this a single string. */
aaa75496
JB
7643 fputs_filtered (" ", gdb_stdout);
7644 wrap_here ("");
7645 fputs_filtered ("and ", gdb_stdout);
7646 wrap_here ("");
7647 printf_filtered ("%s...", pst->dependencies[i]->filename);
0963b4bd 7648 wrap_here (""); /* Flush output. */
aaa75496
JB
7649 gdb_flush (gdb_stdout);
7650 }
7651 psymtab_to_symtab_1 (pst->dependencies[i]);
7652 }
7653
e38df1d0 7654 per_cu = pst->read_symtab_private;
10b3939b
DJ
7655
7656 if (per_cu == NULL)
aaa75496
JB
7657 {
7658 /* It's an include file, no symbols to read for it.
7659 Everything is in the parent symtab. */
7660 pst->readin = 1;
7661 return;
7662 }
c906108c 7663
a0f42c21 7664 dw2_do_instantiate_symtab (per_cu);
10b3939b
DJ
7665}
7666
dee91e82
DE
7667/* Trivial hash function for die_info: the hash value of a DIE
7668 is its offset in .debug_info for this objfile. */
10b3939b 7669
dee91e82
DE
7670static hashval_t
7671die_hash (const void *item)
10b3939b 7672{
dee91e82 7673 const struct die_info *die = item;
6502dd73 7674
dee91e82
DE
7675 return die->offset.sect_off;
7676}
63d06c5c 7677
dee91e82
DE
7678/* Trivial comparison function for die_info structures: two DIEs
7679 are equal if they have the same offset. */
98bfdba5 7680
dee91e82
DE
7681static int
7682die_eq (const void *item_lhs, const void *item_rhs)
7683{
7684 const struct die_info *die_lhs = item_lhs;
7685 const struct die_info *die_rhs = item_rhs;
c906108c 7686
dee91e82
DE
7687 return die_lhs->offset.sect_off == die_rhs->offset.sect_off;
7688}
c906108c 7689
dee91e82
DE
7690/* die_reader_func for load_full_comp_unit.
7691 This is identical to read_signatured_type_reader,
7692 but is kept separate for now. */
c906108c 7693
dee91e82
DE
7694static void
7695load_full_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 7696 const gdb_byte *info_ptr,
dee91e82
DE
7697 struct die_info *comp_unit_die,
7698 int has_children,
7699 void *data)
7700{
7701 struct dwarf2_cu *cu = reader->cu;
95554aad 7702 enum language *language_ptr = data;
6caca83c 7703
dee91e82
DE
7704 gdb_assert (cu->die_hash == NULL);
7705 cu->die_hash =
7706 htab_create_alloc_ex (cu->header.length / 12,
7707 die_hash,
7708 die_eq,
7709 NULL,
7710 &cu->comp_unit_obstack,
7711 hashtab_obstack_allocate,
7712 dummy_obstack_deallocate);
e142c38c 7713
dee91e82
DE
7714 if (has_children)
7715 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
7716 &info_ptr, comp_unit_die);
7717 cu->dies = comp_unit_die;
7718 /* comp_unit_die is not stored in die_hash, no need. */
10b3939b
DJ
7719
7720 /* We try not to read any attributes in this function, because not
9cdd5dbd 7721 all CUs needed for references have been loaded yet, and symbol
10b3939b 7722 table processing isn't initialized. But we have to set the CU language,
dee91e82
DE
7723 or we won't be able to build types correctly.
7724 Similarly, if we do not read the producer, we can not apply
7725 producer-specific interpretation. */
95554aad 7726 prepare_one_comp_unit (cu, cu->dies, *language_ptr);
dee91e82 7727}
10b3939b 7728
dee91e82 7729/* Load the DIEs associated with PER_CU into memory. */
a6c727b2 7730
dee91e82 7731static void
95554aad
TT
7732load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
7733 enum language pretend_language)
dee91e82 7734{
3019eac3 7735 gdb_assert (! this_cu->is_debug_types);
c5b7e1cb 7736
f4dc4d17
DE
7737 init_cutu_and_read_dies (this_cu, NULL, 1, 1,
7738 load_full_comp_unit_reader, &pretend_language);
10b3939b
DJ
7739}
7740
3da10d80
KS
7741/* Add a DIE to the delayed physname list. */
7742
7743static void
7744add_to_method_list (struct type *type, int fnfield_index, int index,
7745 const char *name, struct die_info *die,
7746 struct dwarf2_cu *cu)
7747{
7748 struct delayed_method_info mi;
7749 mi.type = type;
7750 mi.fnfield_index = fnfield_index;
7751 mi.index = index;
7752 mi.name = name;
7753 mi.die = die;
7754 VEC_safe_push (delayed_method_info, cu->method_list, &mi);
7755}
7756
7757/* A cleanup for freeing the delayed method list. */
7758
7759static void
7760free_delayed_list (void *ptr)
7761{
7762 struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
7763 if (cu->method_list != NULL)
7764 {
7765 VEC_free (delayed_method_info, cu->method_list);
7766 cu->method_list = NULL;
7767 }
7768}
7769
7770/* Compute the physnames of any methods on the CU's method list.
7771
7772 The computation of method physnames is delayed in order to avoid the
7773 (bad) condition that one of the method's formal parameters is of an as yet
7774 incomplete type. */
7775
7776static void
7777compute_delayed_physnames (struct dwarf2_cu *cu)
7778{
7779 int i;
7780 struct delayed_method_info *mi;
7781 for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
7782 {
1d06ead6 7783 const char *physname;
3da10d80
KS
7784 struct fn_fieldlist *fn_flp
7785 = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
7d455152 7786 physname = dwarf2_physname (mi->name, mi->die, cu);
005e54bb
DE
7787 TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi->index)
7788 = physname ? physname : "";
3da10d80
KS
7789 }
7790}
7791
a766d390
DE
7792/* Go objects should be embedded in a DW_TAG_module DIE,
7793 and it's not clear if/how imported objects will appear.
7794 To keep Go support simple until that's worked out,
7795 go back through what we've read and create something usable.
7796 We could do this while processing each DIE, and feels kinda cleaner,
7797 but that way is more invasive.
7798 This is to, for example, allow the user to type "p var" or "b main"
7799 without having to specify the package name, and allow lookups
7800 of module.object to work in contexts that use the expression
7801 parser. */
7802
7803static void
7804fixup_go_packaging (struct dwarf2_cu *cu)
7805{
7806 char *package_name = NULL;
7807 struct pending *list;
7808 int i;
7809
7810 for (list = global_symbols; list != NULL; list = list->next)
7811 {
7812 for (i = 0; i < list->nsyms; ++i)
7813 {
7814 struct symbol *sym = list->symbol[i];
7815
7816 if (SYMBOL_LANGUAGE (sym) == language_go
7817 && SYMBOL_CLASS (sym) == LOC_BLOCK)
7818 {
7819 char *this_package_name = go_symbol_package_name (sym);
7820
7821 if (this_package_name == NULL)
7822 continue;
7823 if (package_name == NULL)
7824 package_name = this_package_name;
7825 else
7826 {
7827 if (strcmp (package_name, this_package_name) != 0)
7828 complaint (&symfile_complaints,
7829 _("Symtab %s has objects from two different Go packages: %s and %s"),
08be3fe3
DE
7830 (symbol_symtab (sym) != NULL
7831 ? symtab_to_filename_for_display
7832 (symbol_symtab (sym))
4262abfb 7833 : objfile_name (cu->objfile)),
a766d390
DE
7834 this_package_name, package_name);
7835 xfree (this_package_name);
7836 }
7837 }
7838 }
7839 }
7840
7841 if (package_name != NULL)
7842 {
7843 struct objfile *objfile = cu->objfile;
34a68019
TT
7844 const char *saved_package_name
7845 = obstack_copy0 (&objfile->per_bfd->storage_obstack,
7846 package_name,
7847 strlen (package_name));
a766d390 7848 struct type *type = init_type (TYPE_CODE_MODULE, 0, 0,
86f62fd7 7849 saved_package_name, objfile);
a766d390
DE
7850 struct symbol *sym;
7851
7852 TYPE_TAG_NAME (type) = TYPE_NAME (type);
7853
e623cf5d 7854 sym = allocate_symbol (objfile);
f85f34ed 7855 SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
86f62fd7
TT
7856 SYMBOL_SET_NAMES (sym, saved_package_name,
7857 strlen (saved_package_name), 0, objfile);
a766d390
DE
7858 /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
7859 e.g., "main" finds the "main" module and not C's main(). */
7860 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
f1e6e072 7861 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
a766d390
DE
7862 SYMBOL_TYPE (sym) = type;
7863
7864 add_symbol_to_list (sym, &global_symbols);
7865
7866 xfree (package_name);
7867 }
7868}
7869
95554aad
TT
7870/* Return the symtab for PER_CU. This works properly regardless of
7871 whether we're using the index or psymtabs. */
7872
43f3e411
DE
7873static struct compunit_symtab *
7874get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
95554aad
TT
7875{
7876 return (dwarf2_per_objfile->using_index
43f3e411
DE
7877 ? per_cu->v.quick->compunit_symtab
7878 : per_cu->v.psymtab->compunit_symtab);
95554aad
TT
7879}
7880
7881/* A helper function for computing the list of all symbol tables
7882 included by PER_CU. */
7883
7884static void
43f3e411 7885recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
ec94af83 7886 htab_t all_children, htab_t all_type_symtabs,
f9125b6c 7887 struct dwarf2_per_cu_data *per_cu,
43f3e411 7888 struct compunit_symtab *immediate_parent)
95554aad
TT
7889{
7890 void **slot;
7891 int ix;
43f3e411 7892 struct compunit_symtab *cust;
95554aad
TT
7893 struct dwarf2_per_cu_data *iter;
7894
7895 slot = htab_find_slot (all_children, per_cu, INSERT);
7896 if (*slot != NULL)
7897 {
7898 /* This inclusion and its children have been processed. */
7899 return;
7900 }
7901
7902 *slot = per_cu;
7903 /* Only add a CU if it has a symbol table. */
43f3e411
DE
7904 cust = get_compunit_symtab (per_cu);
7905 if (cust != NULL)
ec94af83
DE
7906 {
7907 /* If this is a type unit only add its symbol table if we haven't
7908 seen it yet (type unit per_cu's can share symtabs). */
7909 if (per_cu->is_debug_types)
7910 {
43f3e411 7911 slot = htab_find_slot (all_type_symtabs, cust, INSERT);
ec94af83
DE
7912 if (*slot == NULL)
7913 {
43f3e411
DE
7914 *slot = cust;
7915 VEC_safe_push (compunit_symtab_ptr, *result, cust);
7916 if (cust->user == NULL)
7917 cust->user = immediate_parent;
ec94af83
DE
7918 }
7919 }
7920 else
f9125b6c 7921 {
43f3e411
DE
7922 VEC_safe_push (compunit_symtab_ptr, *result, cust);
7923 if (cust->user == NULL)
7924 cust->user = immediate_parent;
f9125b6c 7925 }
ec94af83 7926 }
95554aad
TT
7927
7928 for (ix = 0;
796a7ff8 7929 VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
95554aad 7930 ++ix)
ec94af83
DE
7931 {
7932 recursively_compute_inclusions (result, all_children,
43f3e411 7933 all_type_symtabs, iter, cust);
ec94af83 7934 }
95554aad
TT
7935}
7936
43f3e411 7937/* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
95554aad
TT
7938 PER_CU. */
7939
7940static void
43f3e411 7941compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
95554aad 7942{
f4dc4d17
DE
7943 gdb_assert (! per_cu->is_debug_types);
7944
796a7ff8 7945 if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
95554aad
TT
7946 {
7947 int ix, len;
ec94af83 7948 struct dwarf2_per_cu_data *per_cu_iter;
43f3e411
DE
7949 struct compunit_symtab *compunit_symtab_iter;
7950 VEC (compunit_symtab_ptr) *result_symtabs = NULL;
ec94af83 7951 htab_t all_children, all_type_symtabs;
43f3e411 7952 struct compunit_symtab *cust = get_compunit_symtab (per_cu);
95554aad
TT
7953
7954 /* If we don't have a symtab, we can just skip this case. */
43f3e411 7955 if (cust == NULL)
95554aad
TT
7956 return;
7957
7958 all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7959 NULL, xcalloc, xfree);
ec94af83
DE
7960 all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7961 NULL, xcalloc, xfree);
95554aad
TT
7962
7963 for (ix = 0;
796a7ff8 7964 VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
ec94af83 7965 ix, per_cu_iter);
95554aad 7966 ++ix)
ec94af83
DE
7967 {
7968 recursively_compute_inclusions (&result_symtabs, all_children,
f9125b6c 7969 all_type_symtabs, per_cu_iter,
43f3e411 7970 cust);
ec94af83 7971 }
95554aad 7972
ec94af83 7973 /* Now we have a transitive closure of all the included symtabs. */
43f3e411
DE
7974 len = VEC_length (compunit_symtab_ptr, result_symtabs);
7975 cust->includes
95554aad 7976 = obstack_alloc (&dwarf2_per_objfile->objfile->objfile_obstack,
666fcf91 7977 (len + 1) * sizeof (struct compunit_symtab *));
95554aad 7978 for (ix = 0;
43f3e411
DE
7979 VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
7980 compunit_symtab_iter);
95554aad 7981 ++ix)
43f3e411
DE
7982 cust->includes[ix] = compunit_symtab_iter;
7983 cust->includes[len] = NULL;
95554aad 7984
43f3e411 7985 VEC_free (compunit_symtab_ptr, result_symtabs);
95554aad 7986 htab_delete (all_children);
ec94af83 7987 htab_delete (all_type_symtabs);
95554aad
TT
7988 }
7989}
7990
7991/* Compute the 'includes' field for the symtabs of all the CUs we just
7992 read. */
7993
7994static void
7995process_cu_includes (void)
7996{
7997 int ix;
7998 struct dwarf2_per_cu_data *iter;
7999
8000 for (ix = 0;
8001 VEC_iterate (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus,
8002 ix, iter);
8003 ++ix)
f4dc4d17
DE
8004 {
8005 if (! iter->is_debug_types)
43f3e411 8006 compute_compunit_symtab_includes (iter);
f4dc4d17 8007 }
95554aad
TT
8008
8009 VEC_free (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus);
8010}
8011
9cdd5dbd 8012/* Generate full symbol information for PER_CU, whose DIEs have
10b3939b
DJ
8013 already been loaded into memory. */
8014
8015static void
95554aad
TT
8016process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
8017 enum language pretend_language)
10b3939b 8018{
10b3939b 8019 struct dwarf2_cu *cu = per_cu->cu;
9291a0cd 8020 struct objfile *objfile = per_cu->objfile;
3e29f34a 8021 struct gdbarch *gdbarch = get_objfile_arch (objfile);
10b3939b 8022 CORE_ADDR lowpc, highpc;
43f3e411 8023 struct compunit_symtab *cust;
3da10d80 8024 struct cleanup *back_to, *delayed_list_cleanup;
10b3939b 8025 CORE_ADDR baseaddr;
4359dff1 8026 struct block *static_block;
3e29f34a 8027 CORE_ADDR addr;
10b3939b
DJ
8028
8029 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8030
10b3939b
DJ
8031 buildsym_init ();
8032 back_to = make_cleanup (really_free_pendings, NULL);
3da10d80 8033 delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
10b3939b
DJ
8034
8035 cu->list_in_scope = &file_symbols;
c906108c 8036
95554aad
TT
8037 cu->language = pretend_language;
8038 cu->language_defn = language_def (cu->language);
8039
c906108c 8040 /* Do line number decoding in read_file_scope () */
10b3939b 8041 process_die (cu->dies, cu);
c906108c 8042
a766d390
DE
8043 /* For now fudge the Go package. */
8044 if (cu->language == language_go)
8045 fixup_go_packaging (cu);
8046
3da10d80
KS
8047 /* Now that we have processed all the DIEs in the CU, all the types
8048 should be complete, and it should now be safe to compute all of the
8049 physnames. */
8050 compute_delayed_physnames (cu);
8051 do_cleanups (delayed_list_cleanup);
8052
fae299cd
DC
8053 /* Some compilers don't define a DW_AT_high_pc attribute for the
8054 compilation unit. If the DW_AT_high_pc is missing, synthesize
8055 it, by scanning the DIE's below the compilation unit. */
10b3939b 8056 get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
c906108c 8057
3e29f34a
MR
8058 addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
8059 static_block = end_symtab_get_static_block (addr, 0, 1);
4359dff1
JK
8060
8061 /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
8062 Also, DW_AT_ranges may record ranges not belonging to any child DIEs
8063 (such as virtual method tables). Record the ranges in STATIC_BLOCK's
8064 addrmap to help ensure it has an accurate map of pc values belonging to
8065 this comp unit. */
8066 dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
8067
43f3e411
DE
8068 cust = end_symtab_from_static_block (static_block,
8069 SECT_OFF_TEXT (objfile), 0);
c906108c 8070
43f3e411 8071 if (cust != NULL)
c906108c 8072 {
df15bd07 8073 int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
4632c0d0 8074
8be455d7
JK
8075 /* Set symtab language to language from DW_AT_language. If the
8076 compilation is from a C file generated by language preprocessors, do
8077 not set the language if it was already deduced by start_subfile. */
43f3e411 8078 if (!(cu->language == language_c
40e3ad0e 8079 && COMPUNIT_FILETABS (cust)->language != language_unknown))
43f3e411 8080 COMPUNIT_FILETABS (cust)->language = cu->language;
8be455d7
JK
8081
8082 /* GCC-4.0 has started to support -fvar-tracking. GCC-3.x still can
8083 produce DW_AT_location with location lists but it can be possibly
ab260dad
JK
8084 invalid without -fvar-tracking. Still up to GCC-4.4.x incl. 4.4.0
8085 there were bugs in prologue debug info, fixed later in GCC-4.5
8086 by "unwind info for epilogues" patch (which is not directly related).
8be455d7
JK
8087
8088 For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
8089 needed, it would be wrong due to missing DW_AT_producer there.
8090
8091 Still one can confuse GDB by using non-standard GCC compilation
8092 options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
8093 */
ab260dad 8094 if (cu->has_loclist && gcc_4_minor >= 5)
43f3e411 8095 cust->locations_valid = 1;
e0d00bc7
JK
8096
8097 if (gcc_4_minor >= 5)
43f3e411 8098 cust->epilogue_unwind_valid = 1;
96408a79 8099
43f3e411 8100 cust->call_site_htab = cu->call_site_htab;
c906108c 8101 }
9291a0cd
TT
8102
8103 if (dwarf2_per_objfile->using_index)
43f3e411 8104 per_cu->v.quick->compunit_symtab = cust;
9291a0cd
TT
8105 else
8106 {
8107 struct partial_symtab *pst = per_cu->v.psymtab;
43f3e411 8108 pst->compunit_symtab = cust;
9291a0cd
TT
8109 pst->readin = 1;
8110 }
c906108c 8111
95554aad
TT
8112 /* Push it for inclusion processing later. */
8113 VEC_safe_push (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus, per_cu);
8114
c906108c 8115 do_cleanups (back_to);
f4dc4d17 8116}
45cfd468 8117
f4dc4d17
DE
8118/* Generate full symbol information for type unit PER_CU, whose DIEs have
8119 already been loaded into memory. */
8120
8121static void
8122process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
8123 enum language pretend_language)
8124{
8125 struct dwarf2_cu *cu = per_cu->cu;
8126 struct objfile *objfile = per_cu->objfile;
43f3e411 8127 struct compunit_symtab *cust;
f4dc4d17 8128 struct cleanup *back_to, *delayed_list_cleanup;
0186c6a7
DE
8129 struct signatured_type *sig_type;
8130
8131 gdb_assert (per_cu->is_debug_types);
8132 sig_type = (struct signatured_type *) per_cu;
f4dc4d17
DE
8133
8134 buildsym_init ();
8135 back_to = make_cleanup (really_free_pendings, NULL);
8136 delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
8137
8138 cu->list_in_scope = &file_symbols;
8139
8140 cu->language = pretend_language;
8141 cu->language_defn = language_def (cu->language);
8142
8143 /* The symbol tables are set up in read_type_unit_scope. */
8144 process_die (cu->dies, cu);
8145
8146 /* For now fudge the Go package. */
8147 if (cu->language == language_go)
8148 fixup_go_packaging (cu);
8149
8150 /* Now that we have processed all the DIEs in the CU, all the types
8151 should be complete, and it should now be safe to compute all of the
8152 physnames. */
8153 compute_delayed_physnames (cu);
8154 do_cleanups (delayed_list_cleanup);
8155
8156 /* TUs share symbol tables.
8157 If this is the first TU to use this symtab, complete the construction
094b34ac
DE
8158 of it with end_expandable_symtab. Otherwise, complete the addition of
8159 this TU's symbols to the existing symtab. */
43f3e411 8160 if (sig_type->type_unit_group->compunit_symtab == NULL)
45cfd468 8161 {
43f3e411
DE
8162 cust = end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
8163 sig_type->type_unit_group->compunit_symtab = cust;
f4dc4d17 8164
43f3e411 8165 if (cust != NULL)
f4dc4d17
DE
8166 {
8167 /* Set symtab language to language from DW_AT_language. If the
8168 compilation is from a C file generated by language preprocessors,
8169 do not set the language if it was already deduced by
8170 start_subfile. */
43f3e411
DE
8171 if (!(cu->language == language_c
8172 && COMPUNIT_FILETABS (cust)->language != language_c))
8173 COMPUNIT_FILETABS (cust)->language = cu->language;
f4dc4d17
DE
8174 }
8175 }
8176 else
8177 {
0ab9ce85 8178 augment_type_symtab ();
43f3e411 8179 cust = sig_type->type_unit_group->compunit_symtab;
f4dc4d17
DE
8180 }
8181
8182 if (dwarf2_per_objfile->using_index)
43f3e411 8183 per_cu->v.quick->compunit_symtab = cust;
f4dc4d17
DE
8184 else
8185 {
8186 struct partial_symtab *pst = per_cu->v.psymtab;
43f3e411 8187 pst->compunit_symtab = cust;
f4dc4d17 8188 pst->readin = 1;
45cfd468 8189 }
f4dc4d17
DE
8190
8191 do_cleanups (back_to);
c906108c
SS
8192}
8193
95554aad
TT
8194/* Process an imported unit DIE. */
8195
8196static void
8197process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
8198{
8199 struct attribute *attr;
8200
f4dc4d17
DE
8201 /* For now we don't handle imported units in type units. */
8202 if (cu->per_cu->is_debug_types)
8203 {
8204 error (_("Dwarf Error: DW_TAG_imported_unit is not"
8205 " supported in type units [in module %s]"),
4262abfb 8206 objfile_name (cu->objfile));
f4dc4d17
DE
8207 }
8208
95554aad
TT
8209 attr = dwarf2_attr (die, DW_AT_import, cu);
8210 if (attr != NULL)
8211 {
8212 struct dwarf2_per_cu_data *per_cu;
8213 struct symtab *imported_symtab;
8214 sect_offset offset;
36586728 8215 int is_dwz;
95554aad
TT
8216
8217 offset = dwarf2_get_ref_die_offset (attr);
36586728
TT
8218 is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
8219 per_cu = dwarf2_find_containing_comp_unit (offset, is_dwz, cu->objfile);
95554aad 8220
69d751e3 8221 /* If necessary, add it to the queue and load its DIEs. */
95554aad
TT
8222 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
8223 load_full_comp_unit (per_cu, cu->language);
8224
796a7ff8 8225 VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
95554aad
TT
8226 per_cu);
8227 }
8228}
8229
adde2bff
DE
8230/* Reset the in_process bit of a die. */
8231
8232static void
8233reset_die_in_process (void *arg)
8234{
8235 struct die_info *die = arg;
8c3cb9fa 8236
adde2bff
DE
8237 die->in_process = 0;
8238}
8239
c906108c
SS
8240/* Process a die and its children. */
8241
8242static void
e7c27a73 8243process_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 8244{
adde2bff
DE
8245 struct cleanup *in_process;
8246
8247 /* We should only be processing those not already in process. */
8248 gdb_assert (!die->in_process);
8249
8250 die->in_process = 1;
8251 in_process = make_cleanup (reset_die_in_process,die);
8252
c906108c
SS
8253 switch (die->tag)
8254 {
8255 case DW_TAG_padding:
8256 break;
8257 case DW_TAG_compile_unit:
95554aad 8258 case DW_TAG_partial_unit:
e7c27a73 8259 read_file_scope (die, cu);
c906108c 8260 break;
348e048f
DE
8261 case DW_TAG_type_unit:
8262 read_type_unit_scope (die, cu);
8263 break;
c906108c 8264 case DW_TAG_subprogram:
c906108c 8265 case DW_TAG_inlined_subroutine:
edb3359d 8266 read_func_scope (die, cu);
c906108c
SS
8267 break;
8268 case DW_TAG_lexical_block:
14898363
L
8269 case DW_TAG_try_block:
8270 case DW_TAG_catch_block:
e7c27a73 8271 read_lexical_block_scope (die, cu);
c906108c 8272 break;
96408a79
SA
8273 case DW_TAG_GNU_call_site:
8274 read_call_site_scope (die, cu);
8275 break;
c906108c 8276 case DW_TAG_class_type:
680b30c7 8277 case DW_TAG_interface_type:
c906108c
SS
8278 case DW_TAG_structure_type:
8279 case DW_TAG_union_type:
134d01f1 8280 process_structure_scope (die, cu);
c906108c
SS
8281 break;
8282 case DW_TAG_enumeration_type:
134d01f1 8283 process_enumeration_scope (die, cu);
c906108c 8284 break;
134d01f1 8285
f792889a
DJ
8286 /* These dies have a type, but processing them does not create
8287 a symbol or recurse to process the children. Therefore we can
8288 read them on-demand through read_type_die. */
c906108c 8289 case DW_TAG_subroutine_type:
72019c9c 8290 case DW_TAG_set_type:
c906108c 8291 case DW_TAG_array_type:
c906108c 8292 case DW_TAG_pointer_type:
c906108c 8293 case DW_TAG_ptr_to_member_type:
c906108c 8294 case DW_TAG_reference_type:
c906108c 8295 case DW_TAG_string_type:
c906108c 8296 break;
134d01f1 8297
c906108c 8298 case DW_TAG_base_type:
a02abb62 8299 case DW_TAG_subrange_type:
cb249c71 8300 case DW_TAG_typedef:
134d01f1
DJ
8301 /* Add a typedef symbol for the type definition, if it has a
8302 DW_AT_name. */
f792889a 8303 new_symbol (die, read_type_die (die, cu), cu);
a02abb62 8304 break;
c906108c 8305 case DW_TAG_common_block:
e7c27a73 8306 read_common_block (die, cu);
c906108c
SS
8307 break;
8308 case DW_TAG_common_inclusion:
8309 break;
d9fa45fe 8310 case DW_TAG_namespace:
4d4ec4e5 8311 cu->processing_has_namespace_info = 1;
e7c27a73 8312 read_namespace (die, cu);
d9fa45fe 8313 break;
5d7cb8df 8314 case DW_TAG_module:
4d4ec4e5 8315 cu->processing_has_namespace_info = 1;
5d7cb8df
JK
8316 read_module (die, cu);
8317 break;
d9fa45fe 8318 case DW_TAG_imported_declaration:
74921315
KS
8319 cu->processing_has_namespace_info = 1;
8320 if (read_namespace_alias (die, cu))
8321 break;
8322 /* The declaration is not a global namespace alias: fall through. */
d9fa45fe 8323 case DW_TAG_imported_module:
4d4ec4e5 8324 cu->processing_has_namespace_info = 1;
27aa8d6a
SW
8325 if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
8326 || cu->language != language_fortran))
8327 complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
8328 dwarf_tag_name (die->tag));
8329 read_import_statement (die, cu);
d9fa45fe 8330 break;
95554aad
TT
8331
8332 case DW_TAG_imported_unit:
8333 process_imported_unit_die (die, cu);
8334 break;
8335
c906108c 8336 default:
e7c27a73 8337 new_symbol (die, NULL, cu);
c906108c
SS
8338 break;
8339 }
adde2bff
DE
8340
8341 do_cleanups (in_process);
c906108c 8342}
ca69b9e6
DE
8343\f
8344/* DWARF name computation. */
c906108c 8345
94af9270
KS
8346/* A helper function for dwarf2_compute_name which determines whether DIE
8347 needs to have the name of the scope prepended to the name listed in the
8348 die. */
8349
8350static int
8351die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
8352{
1c809c68
TT
8353 struct attribute *attr;
8354
94af9270
KS
8355 switch (die->tag)
8356 {
8357 case DW_TAG_namespace:
8358 case DW_TAG_typedef:
8359 case DW_TAG_class_type:
8360 case DW_TAG_interface_type:
8361 case DW_TAG_structure_type:
8362 case DW_TAG_union_type:
8363 case DW_TAG_enumeration_type:
8364 case DW_TAG_enumerator:
8365 case DW_TAG_subprogram:
08a76f8a 8366 case DW_TAG_inlined_subroutine:
94af9270 8367 case DW_TAG_member:
74921315 8368 case DW_TAG_imported_declaration:
94af9270
KS
8369 return 1;
8370
8371 case DW_TAG_variable:
c2b0a229 8372 case DW_TAG_constant:
94af9270
KS
8373 /* We only need to prefix "globally" visible variables. These include
8374 any variable marked with DW_AT_external or any variable that
8375 lives in a namespace. [Variables in anonymous namespaces
8376 require prefixing, but they are not DW_AT_external.] */
8377
8378 if (dwarf2_attr (die, DW_AT_specification, cu))
8379 {
8380 struct dwarf2_cu *spec_cu = cu;
9a619af0 8381
94af9270
KS
8382 return die_needs_namespace (die_specification (die, &spec_cu),
8383 spec_cu);
8384 }
8385
1c809c68 8386 attr = dwarf2_attr (die, DW_AT_external, cu);
f55ee35c
JK
8387 if (attr == NULL && die->parent->tag != DW_TAG_namespace
8388 && die->parent->tag != DW_TAG_module)
1c809c68
TT
8389 return 0;
8390 /* A variable in a lexical block of some kind does not need a
8391 namespace, even though in C++ such variables may be external
8392 and have a mangled name. */
8393 if (die->parent->tag == DW_TAG_lexical_block
8394 || die->parent->tag == DW_TAG_try_block
1054b214
TT
8395 || die->parent->tag == DW_TAG_catch_block
8396 || die->parent->tag == DW_TAG_subprogram)
1c809c68
TT
8397 return 0;
8398 return 1;
94af9270
KS
8399
8400 default:
8401 return 0;
8402 }
8403}
8404
98bfdba5
PA
8405/* Retrieve the last character from a mem_file. */
8406
8407static void
8408do_ui_file_peek_last (void *object, const char *buffer, long length)
8409{
8410 char *last_char_p = (char *) object;
8411
8412 if (length > 0)
8413 *last_char_p = buffer[length - 1];
8414}
8415
94af9270 8416/* Compute the fully qualified name of DIE in CU. If PHYSNAME is nonzero,
a766d390
DE
8417 compute the physname for the object, which include a method's:
8418 - formal parameters (C++/Java),
8419 - receiver type (Go),
8420 - return type (Java).
8421
8422 The term "physname" is a bit confusing.
8423 For C++, for example, it is the demangled name.
8424 For Go, for example, it's the mangled name.
94af9270 8425
af6b7be1
JB
8426 For Ada, return the DIE's linkage name rather than the fully qualified
8427 name. PHYSNAME is ignored..
8428
94af9270
KS
8429 The result is allocated on the objfile_obstack and canonicalized. */
8430
8431static const char *
15d034d0
TT
8432dwarf2_compute_name (const char *name,
8433 struct die_info *die, struct dwarf2_cu *cu,
94af9270
KS
8434 int physname)
8435{
bb5ed363
DE
8436 struct objfile *objfile = cu->objfile;
8437
94af9270
KS
8438 if (name == NULL)
8439 name = dwarf2_name (die, cu);
8440
f55ee35c
JK
8441 /* For Fortran GDB prefers DW_AT_*linkage_name if present but otherwise
8442 compute it by typename_concat inside GDB. */
8443 if (cu->language == language_ada
8444 || (cu->language == language_fortran && physname))
8445 {
8446 /* For Ada unit, we prefer the linkage name over the name, as
8447 the former contains the exported name, which the user expects
8448 to be able to reference. Ideally, we want the user to be able
8449 to reference this entity using either natural or linkage name,
8450 but we haven't started looking at this enhancement yet. */
7d45c7c3 8451 const char *name;
f55ee35c 8452
7d45c7c3
KB
8453 name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
8454 if (name == NULL)
8455 name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
8456 if (name != NULL)
8457 return name;
f55ee35c
JK
8458 }
8459
94af9270
KS
8460 /* These are the only languages we know how to qualify names in. */
8461 if (name != NULL
f55ee35c 8462 && (cu->language == language_cplus || cu->language == language_java
45280282 8463 || cu->language == language_fortran || cu->language == language_d))
94af9270
KS
8464 {
8465 if (die_needs_namespace (die, cu))
8466 {
8467 long length;
0d5cff50 8468 const char *prefix;
94af9270 8469 struct ui_file *buf;
34a68019
TT
8470 char *intermediate_name;
8471 const char *canonical_name = NULL;
94af9270
KS
8472
8473 prefix = determine_prefix (die, cu);
8474 buf = mem_fileopen ();
8475 if (*prefix != '\0')
8476 {
f55ee35c
JK
8477 char *prefixed_name = typename_concat (NULL, prefix, name,
8478 physname, cu);
9a619af0 8479
94af9270
KS
8480 fputs_unfiltered (prefixed_name, buf);
8481 xfree (prefixed_name);
8482 }
8483 else
62d5b8da 8484 fputs_unfiltered (name, buf);
94af9270 8485
98bfdba5
PA
8486 /* Template parameters may be specified in the DIE's DW_AT_name, or
8487 as children with DW_TAG_template_type_param or
8488 DW_TAG_value_type_param. If the latter, add them to the name
8489 here. If the name already has template parameters, then
8490 skip this step; some versions of GCC emit both, and
8491 it is more efficient to use the pre-computed name.
8492
8493 Something to keep in mind about this process: it is very
8494 unlikely, or in some cases downright impossible, to produce
8495 something that will match the mangled name of a function.
8496 If the definition of the function has the same debug info,
8497 we should be able to match up with it anyway. But fallbacks
8498 using the minimal symbol, for instance to find a method
8499 implemented in a stripped copy of libstdc++, will not work.
8500 If we do not have debug info for the definition, we will have to
8501 match them up some other way.
8502
8503 When we do name matching there is a related problem with function
8504 templates; two instantiated function templates are allowed to
8505 differ only by their return types, which we do not add here. */
8506
8507 if (cu->language == language_cplus && strchr (name, '<') == NULL)
8508 {
8509 struct attribute *attr;
8510 struct die_info *child;
8511 int first = 1;
8512
8513 die->building_fullname = 1;
8514
8515 for (child = die->child; child != NULL; child = child->sibling)
8516 {
8517 struct type *type;
12df843f 8518 LONGEST value;
d521ce57 8519 const gdb_byte *bytes;
98bfdba5
PA
8520 struct dwarf2_locexpr_baton *baton;
8521 struct value *v;
8522
8523 if (child->tag != DW_TAG_template_type_param
8524 && child->tag != DW_TAG_template_value_param)
8525 continue;
8526
8527 if (first)
8528 {
8529 fputs_unfiltered ("<", buf);
8530 first = 0;
8531 }
8532 else
8533 fputs_unfiltered (", ", buf);
8534
8535 attr = dwarf2_attr (child, DW_AT_type, cu);
8536 if (attr == NULL)
8537 {
8538 complaint (&symfile_complaints,
8539 _("template parameter missing DW_AT_type"));
8540 fputs_unfiltered ("UNKNOWN_TYPE", buf);
8541 continue;
8542 }
8543 type = die_type (child, cu);
8544
8545 if (child->tag == DW_TAG_template_type_param)
8546 {
79d43c61 8547 c_print_type (type, "", buf, -1, 0, &type_print_raw_options);
98bfdba5
PA
8548 continue;
8549 }
8550
8551 attr = dwarf2_attr (child, DW_AT_const_value, cu);
8552 if (attr == NULL)
8553 {
8554 complaint (&symfile_complaints,
3e43a32a
MS
8555 _("template parameter missing "
8556 "DW_AT_const_value"));
98bfdba5
PA
8557 fputs_unfiltered ("UNKNOWN_VALUE", buf);
8558 continue;
8559 }
8560
8561 dwarf2_const_value_attr (attr, type, name,
8562 &cu->comp_unit_obstack, cu,
8563 &value, &bytes, &baton);
8564
8565 if (TYPE_NOSIGN (type))
8566 /* GDB prints characters as NUMBER 'CHAR'. If that's
8567 changed, this can use value_print instead. */
8568 c_printchar (value, type, buf);
8569 else
8570 {
8571 struct value_print_options opts;
8572
8573 if (baton != NULL)
8574 v = dwarf2_evaluate_loc_desc (type, NULL,
8575 baton->data,
8576 baton->size,
8577 baton->per_cu);
8578 else if (bytes != NULL)
8579 {
8580 v = allocate_value (type);
8581 memcpy (value_contents_writeable (v), bytes,
8582 TYPE_LENGTH (type));
8583 }
8584 else
8585 v = value_from_longest (type, value);
8586
3e43a32a
MS
8587 /* Specify decimal so that we do not depend on
8588 the radix. */
98bfdba5
PA
8589 get_formatted_print_options (&opts, 'd');
8590 opts.raw = 1;
8591 value_print (v, buf, &opts);
8592 release_value (v);
8593 value_free (v);
8594 }
8595 }
8596
8597 die->building_fullname = 0;
8598
8599 if (!first)
8600 {
8601 /* Close the argument list, with a space if necessary
8602 (nested templates). */
8603 char last_char = '\0';
8604 ui_file_put (buf, do_ui_file_peek_last, &last_char);
8605 if (last_char == '>')
8606 fputs_unfiltered (" >", buf);
8607 else
8608 fputs_unfiltered (">", buf);
8609 }
8610 }
8611
94af9270
KS
8612 /* For Java and C++ methods, append formal parameter type
8613 information, if PHYSNAME. */
6e70227d 8614
94af9270
KS
8615 if (physname && die->tag == DW_TAG_subprogram
8616 && (cu->language == language_cplus
8617 || cu->language == language_java))
8618 {
8619 struct type *type = read_type_die (die, cu);
8620
79d43c61
TT
8621 c_type_print_args (type, buf, 1, cu->language,
8622 &type_print_raw_options);
94af9270
KS
8623
8624 if (cu->language == language_java)
8625 {
8626 /* For java, we must append the return type to method
0963b4bd 8627 names. */
94af9270
KS
8628 if (die->tag == DW_TAG_subprogram)
8629 java_print_type (TYPE_TARGET_TYPE (type), "", buf,
79d43c61 8630 0, 0, &type_print_raw_options);
94af9270
KS
8631 }
8632 else if (cu->language == language_cplus)
8633 {
60430eff
DJ
8634 /* Assume that an artificial first parameter is
8635 "this", but do not crash if it is not. RealView
8636 marks unnamed (and thus unused) parameters as
8637 artificial; there is no way to differentiate
8638 the two cases. */
94af9270
KS
8639 if (TYPE_NFIELDS (type) > 0
8640 && TYPE_FIELD_ARTIFICIAL (type, 0)
60430eff 8641 && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
3e43a32a
MS
8642 && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
8643 0))))
94af9270
KS
8644 fputs_unfiltered (" const", buf);
8645 }
8646 }
8647
34a68019 8648 intermediate_name = ui_file_xstrdup (buf, &length);
94af9270
KS
8649 ui_file_delete (buf);
8650
8651 if (cu->language == language_cplus)
34a68019
TT
8652 canonical_name
8653 = dwarf2_canonicalize_name (intermediate_name, cu,
8654 &objfile->per_bfd->storage_obstack);
8655
8656 /* If we only computed INTERMEDIATE_NAME, or if
8657 INTERMEDIATE_NAME is already canonical, then we need to
8658 copy it to the appropriate obstack. */
8659 if (canonical_name == NULL || canonical_name == intermediate_name)
8660 name = obstack_copy0 (&objfile->per_bfd->storage_obstack,
8661 intermediate_name,
8662 strlen (intermediate_name));
8663 else
8664 name = canonical_name;
9a619af0 8665
34a68019 8666 xfree (intermediate_name);
94af9270
KS
8667 }
8668 }
8669
8670 return name;
8671}
8672
0114d602
DJ
8673/* Return the fully qualified name of DIE, based on its DW_AT_name.
8674 If scope qualifiers are appropriate they will be added. The result
34a68019 8675 will be allocated on the storage_obstack, or NULL if the DIE does
94af9270
KS
8676 not have a name. NAME may either be from a previous call to
8677 dwarf2_name or NULL.
8678
0963b4bd 8679 The output string will be canonicalized (if C++/Java). */
0114d602
DJ
8680
8681static const char *
15d034d0 8682dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
0114d602 8683{
94af9270
KS
8684 return dwarf2_compute_name (name, die, cu, 0);
8685}
0114d602 8686
94af9270
KS
8687/* Construct a physname for the given DIE in CU. NAME may either be
8688 from a previous call to dwarf2_name or NULL. The result will be
8689 allocated on the objfile_objstack or NULL if the DIE does not have a
8690 name.
0114d602 8691
94af9270 8692 The output string will be canonicalized (if C++/Java). */
0114d602 8693
94af9270 8694static const char *
15d034d0 8695dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
94af9270 8696{
bb5ed363 8697 struct objfile *objfile = cu->objfile;
900e11f9
JK
8698 struct attribute *attr;
8699 const char *retval, *mangled = NULL, *canon = NULL;
8700 struct cleanup *back_to;
8701 int need_copy = 1;
8702
8703 /* In this case dwarf2_compute_name is just a shortcut not building anything
8704 on its own. */
8705 if (!die_needs_namespace (die, cu))
8706 return dwarf2_compute_name (name, die, cu, 1);
8707
8708 back_to = make_cleanup (null_cleanup, NULL);
8709
7d45c7c3
KB
8710 mangled = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
8711 if (mangled == NULL)
8712 mangled = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
900e11f9
JK
8713
8714 /* DW_AT_linkage_name is missing in some cases - depend on what GDB
8715 has computed. */
7d45c7c3 8716 if (mangled != NULL)
900e11f9
JK
8717 {
8718 char *demangled;
8719
900e11f9
JK
8720 /* Use DMGL_RET_DROP for C++ template functions to suppress their return
8721 type. It is easier for GDB users to search for such functions as
8722 `name(params)' than `long name(params)'. In such case the minimal
8723 symbol names do not match the full symbol names but for template
8724 functions there is never a need to look up their definition from their
8725 declaration so the only disadvantage remains the minimal symbol
8726 variant `long name(params)' does not have the proper inferior type.
8727 */
8728
a766d390
DE
8729 if (cu->language == language_go)
8730 {
8731 /* This is a lie, but we already lie to the caller new_symbol_full.
8732 new_symbol_full assumes we return the mangled name.
8733 This just undoes that lie until things are cleaned up. */
8734 demangled = NULL;
8735 }
8736 else
8737 {
8de20a37
TT
8738 demangled = gdb_demangle (mangled,
8739 (DMGL_PARAMS | DMGL_ANSI
8740 | (cu->language == language_java
8741 ? DMGL_JAVA | DMGL_RET_POSTFIX
8742 : DMGL_RET_DROP)));
a766d390 8743 }
900e11f9
JK
8744 if (demangled)
8745 {
8746 make_cleanup (xfree, demangled);
8747 canon = demangled;
8748 }
8749 else
8750 {
8751 canon = mangled;
8752 need_copy = 0;
8753 }
8754 }
8755
8756 if (canon == NULL || check_physname)
8757 {
8758 const char *physname = dwarf2_compute_name (name, die, cu, 1);
8759
8760 if (canon != NULL && strcmp (physname, canon) != 0)
8761 {
8762 /* It may not mean a bug in GDB. The compiler could also
8763 compute DW_AT_linkage_name incorrectly. But in such case
8764 GDB would need to be bug-to-bug compatible. */
8765
8766 complaint (&symfile_complaints,
8767 _("Computed physname <%s> does not match demangled <%s> "
8768 "(from linkage <%s>) - DIE at 0x%x [in module %s]"),
4262abfb
JK
8769 physname, canon, mangled, die->offset.sect_off,
8770 objfile_name (objfile));
900e11f9
JK
8771
8772 /* Prefer DW_AT_linkage_name (in the CANON form) - when it
8773 is available here - over computed PHYSNAME. It is safer
8774 against both buggy GDB and buggy compilers. */
8775
8776 retval = canon;
8777 }
8778 else
8779 {
8780 retval = physname;
8781 need_copy = 0;
8782 }
8783 }
8784 else
8785 retval = canon;
8786
8787 if (need_copy)
34a68019
TT
8788 retval = obstack_copy0 (&objfile->per_bfd->storage_obstack,
8789 retval, strlen (retval));
900e11f9
JK
8790
8791 do_cleanups (back_to);
8792 return retval;
0114d602
DJ
8793}
8794
74921315
KS
8795/* Inspect DIE in CU for a namespace alias. If one exists, record
8796 a new symbol for it.
8797
8798 Returns 1 if a namespace alias was recorded, 0 otherwise. */
8799
8800static int
8801read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
8802{
8803 struct attribute *attr;
8804
8805 /* If the die does not have a name, this is not a namespace
8806 alias. */
8807 attr = dwarf2_attr (die, DW_AT_name, cu);
8808 if (attr != NULL)
8809 {
8810 int num;
8811 struct die_info *d = die;
8812 struct dwarf2_cu *imported_cu = cu;
8813
8814 /* If the compiler has nested DW_AT_imported_declaration DIEs,
8815 keep inspecting DIEs until we hit the underlying import. */
8816#define MAX_NESTED_IMPORTED_DECLARATIONS 100
8817 for (num = 0; num < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
8818 {
8819 attr = dwarf2_attr (d, DW_AT_import, cu);
8820 if (attr == NULL)
8821 break;
8822
8823 d = follow_die_ref (d, attr, &imported_cu);
8824 if (d->tag != DW_TAG_imported_declaration)
8825 break;
8826 }
8827
8828 if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
8829 {
8830 complaint (&symfile_complaints,
8831 _("DIE at 0x%x has too many recursively imported "
8832 "declarations"), d->offset.sect_off);
8833 return 0;
8834 }
8835
8836 if (attr != NULL)
8837 {
8838 struct type *type;
8839 sect_offset offset = dwarf2_get_ref_die_offset (attr);
8840
8841 type = get_die_type_at_offset (offset, cu->per_cu);
8842 if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
8843 {
8844 /* This declaration is a global namespace alias. Add
8845 a symbol for it whose type is the aliased namespace. */
8846 new_symbol (die, type, cu);
8847 return 1;
8848 }
8849 }
8850 }
8851
8852 return 0;
8853}
8854
22cee43f
PMR
8855/* Return the using directives repository (global or local?) to use in the
8856 current context for LANGUAGE.
8857
8858 For Ada, imported declarations can materialize renamings, which *may* be
8859 global. However it is impossible (for now?) in DWARF to distinguish
8860 "external" imported declarations and "static" ones. As all imported
8861 declarations seem to be static in all other languages, make them all CU-wide
8862 global only in Ada. */
8863
8864static struct using_direct **
8865using_directives (enum language language)
8866{
8867 if (language == language_ada && context_stack_depth == 0)
8868 return &global_using_directives;
8869 else
8870 return &local_using_directives;
8871}
8872
27aa8d6a
SW
8873/* Read the import statement specified by the given die and record it. */
8874
8875static void
8876read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
8877{
bb5ed363 8878 struct objfile *objfile = cu->objfile;
27aa8d6a 8879 struct attribute *import_attr;
32019081 8880 struct die_info *imported_die, *child_die;
de4affc9 8881 struct dwarf2_cu *imported_cu;
27aa8d6a 8882 const char *imported_name;
794684b6 8883 const char *imported_name_prefix;
13387711
SW
8884 const char *canonical_name;
8885 const char *import_alias;
8886 const char *imported_declaration = NULL;
794684b6 8887 const char *import_prefix;
32019081
JK
8888 VEC (const_char_ptr) *excludes = NULL;
8889 struct cleanup *cleanups;
13387711 8890
27aa8d6a
SW
8891 import_attr = dwarf2_attr (die, DW_AT_import, cu);
8892 if (import_attr == NULL)
8893 {
8894 complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8895 dwarf_tag_name (die->tag));
8896 return;
8897 }
8898
de4affc9
CC
8899 imported_cu = cu;
8900 imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
8901 imported_name = dwarf2_name (imported_die, imported_cu);
27aa8d6a
SW
8902 if (imported_name == NULL)
8903 {
8904 /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
8905
8906 The import in the following code:
8907 namespace A
8908 {
8909 typedef int B;
8910 }
8911
8912 int main ()
8913 {
8914 using A::B;
8915 B b;
8916 return b;
8917 }
8918
8919 ...
8920 <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
8921 <52> DW_AT_decl_file : 1
8922 <53> DW_AT_decl_line : 6
8923 <54> DW_AT_import : <0x75>
8924 <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
8925 <59> DW_AT_name : B
8926 <5b> DW_AT_decl_file : 1
8927 <5c> DW_AT_decl_line : 2
8928 <5d> DW_AT_type : <0x6e>
8929 ...
8930 <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
8931 <76> DW_AT_byte_size : 4
8932 <77> DW_AT_encoding : 5 (signed)
8933
8934 imports the wrong die ( 0x75 instead of 0x58 ).
8935 This case will be ignored until the gcc bug is fixed. */
8936 return;
8937 }
8938
82856980
SW
8939 /* Figure out the local name after import. */
8940 import_alias = dwarf2_name (die, cu);
27aa8d6a 8941
794684b6
SW
8942 /* Figure out where the statement is being imported to. */
8943 import_prefix = determine_prefix (die, cu);
8944
8945 /* Figure out what the scope of the imported die is and prepend it
8946 to the name of the imported die. */
de4affc9 8947 imported_name_prefix = determine_prefix (imported_die, imported_cu);
794684b6 8948
f55ee35c
JK
8949 if (imported_die->tag != DW_TAG_namespace
8950 && imported_die->tag != DW_TAG_module)
794684b6 8951 {
13387711
SW
8952 imported_declaration = imported_name;
8953 canonical_name = imported_name_prefix;
794684b6 8954 }
13387711 8955 else if (strlen (imported_name_prefix) > 0)
12aaed36 8956 canonical_name = obconcat (&objfile->objfile_obstack,
45280282
IB
8957 imported_name_prefix,
8958 (cu->language == language_d ? "." : "::"),
8959 imported_name, (char *) NULL);
13387711
SW
8960 else
8961 canonical_name = imported_name;
794684b6 8962
32019081
JK
8963 cleanups = make_cleanup (VEC_cleanup (const_char_ptr), &excludes);
8964
8965 if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
8966 for (child_die = die->child; child_die && child_die->tag;
8967 child_die = sibling_die (child_die))
8968 {
8969 /* DWARF-4: A Fortran use statement with a “rename list” may be
8970 represented by an imported module entry with an import attribute
8971 referring to the module and owned entries corresponding to those
8972 entities that are renamed as part of being imported. */
8973
8974 if (child_die->tag != DW_TAG_imported_declaration)
8975 {
8976 complaint (&symfile_complaints,
8977 _("child DW_TAG_imported_declaration expected "
8978 "- DIE at 0x%x [in module %s]"),
4262abfb 8979 child_die->offset.sect_off, objfile_name (objfile));
32019081
JK
8980 continue;
8981 }
8982
8983 import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
8984 if (import_attr == NULL)
8985 {
8986 complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8987 dwarf_tag_name (child_die->tag));
8988 continue;
8989 }
8990
8991 imported_cu = cu;
8992 imported_die = follow_die_ref_or_sig (child_die, import_attr,
8993 &imported_cu);
8994 imported_name = dwarf2_name (imported_die, imported_cu);
8995 if (imported_name == NULL)
8996 {
8997 complaint (&symfile_complaints,
8998 _("child DW_TAG_imported_declaration has unknown "
8999 "imported name - DIE at 0x%x [in module %s]"),
4262abfb 9000 child_die->offset.sect_off, objfile_name (objfile));
32019081
JK
9001 continue;
9002 }
9003
9004 VEC_safe_push (const_char_ptr, excludes, imported_name);
9005
9006 process_die (child_die, cu);
9007 }
9008
22cee43f
PMR
9009 add_using_directive (using_directives (cu->language),
9010 import_prefix,
9011 canonical_name,
9012 import_alias,
9013 imported_declaration,
9014 excludes,
9015 0,
9016 &objfile->objfile_obstack);
32019081
JK
9017
9018 do_cleanups (cleanups);
27aa8d6a
SW
9019}
9020
f4dc4d17 9021/* Cleanup function for handle_DW_AT_stmt_list. */
ae2de4f8 9022
cb1df416
DJ
9023static void
9024free_cu_line_header (void *arg)
9025{
9026 struct dwarf2_cu *cu = arg;
9027
9028 free_line_header (cu->line_header);
9029 cu->line_header = NULL;
9030}
9031
1b80a9fa
JK
9032/* Check for possibly missing DW_AT_comp_dir with relative .debug_line
9033 directory paths. GCC SVN r127613 (new option -fdebug-prefix-map) fixed
9034 this, it was first present in GCC release 4.3.0. */
9035
9036static int
9037producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
9038{
9039 if (!cu->checked_producer)
9040 check_producer (cu);
9041
9042 return cu->producer_is_gcc_lt_4_3;
9043}
9044
9291a0cd
TT
9045static void
9046find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu,
15d034d0 9047 const char **name, const char **comp_dir)
9291a0cd 9048{
9291a0cd
TT
9049 /* Find the filename. Do not use dwarf2_name here, since the filename
9050 is not a source language identifier. */
7d45c7c3
KB
9051 *name = dwarf2_string_attr (die, DW_AT_name, cu);
9052 *comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
9291a0cd 9053
7d45c7c3
KB
9054 if (*comp_dir == NULL
9055 && producer_is_gcc_lt_4_3 (cu) && *name != NULL
9056 && IS_ABSOLUTE_PATH (*name))
9291a0cd 9057 {
15d034d0
TT
9058 char *d = ldirname (*name);
9059
9060 *comp_dir = d;
9061 if (d != NULL)
9062 make_cleanup (xfree, d);
9291a0cd
TT
9063 }
9064 if (*comp_dir != NULL)
9065 {
9066 /* Irix 6.2 native cc prepends <machine>.: to the compilation
9067 directory, get rid of it. */
9068 char *cp = strchr (*comp_dir, ':');
9069
9070 if (cp && cp != *comp_dir && cp[-1] == '.' && cp[1] == '/')
9071 *comp_dir = cp + 1;
9072 }
9073
9074 if (*name == NULL)
9075 *name = "<unknown>";
9076}
9077
f4dc4d17
DE
9078/* Handle DW_AT_stmt_list for a compilation unit.
9079 DIE is the DW_TAG_compile_unit die for CU.
c3b7b696
YQ
9080 COMP_DIR is the compilation directory. LOWPC is passed to
9081 dwarf_decode_lines. See dwarf_decode_lines comments about it. */
2ab95328
TT
9082
9083static void
9084handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
c3b7b696 9085 const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
2ab95328 9086{
527f3840 9087 struct objfile *objfile = dwarf2_per_objfile->objfile;
2ab95328 9088 struct attribute *attr;
527f3840
JK
9089 unsigned int line_offset;
9090 struct line_header line_header_local;
9091 hashval_t line_header_local_hash;
9092 unsigned u;
9093 void **slot;
9094 int decode_mapping;
2ab95328 9095
f4dc4d17
DE
9096 gdb_assert (! cu->per_cu->is_debug_types);
9097
2ab95328 9098 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
527f3840
JK
9099 if (attr == NULL)
9100 return;
9101
9102 line_offset = DW_UNSND (attr);
9103
9104 /* The line header hash table is only created if needed (it exists to
9105 prevent redundant reading of the line table for partial_units).
9106 If we're given a partial_unit, we'll need it. If we're given a
9107 compile_unit, then use the line header hash table if it's already
9108 created, but don't create one just yet. */
9109
9110 if (dwarf2_per_objfile->line_header_hash == NULL
9111 && die->tag == DW_TAG_partial_unit)
2ab95328 9112 {
527f3840
JK
9113 dwarf2_per_objfile->line_header_hash
9114 = htab_create_alloc_ex (127, line_header_hash_voidp,
9115 line_header_eq_voidp,
9116 free_line_header_voidp,
9117 &objfile->objfile_obstack,
9118 hashtab_obstack_allocate,
9119 dummy_obstack_deallocate);
9120 }
2ab95328 9121
527f3840
JK
9122 line_header_local.offset.sect_off = line_offset;
9123 line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
9124 line_header_local_hash = line_header_hash (&line_header_local);
9125 if (dwarf2_per_objfile->line_header_hash != NULL)
9126 {
9127 slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
9128 &line_header_local,
9129 line_header_local_hash, NO_INSERT);
9130
9131 /* For DW_TAG_compile_unit we need info like symtab::linetable which
9132 is not present in *SLOT (since if there is something in *SLOT then
9133 it will be for a partial_unit). */
9134 if (die->tag == DW_TAG_partial_unit && slot != NULL)
dee91e82 9135 {
527f3840
JK
9136 gdb_assert (*slot != NULL);
9137 cu->line_header = *slot;
9138 return;
dee91e82 9139 }
2ab95328 9140 }
527f3840
JK
9141
9142 /* dwarf_decode_line_header does not yet provide sufficient information.
9143 We always have to call also dwarf_decode_lines for it. */
9144 cu->line_header = dwarf_decode_line_header (line_offset, cu);
9145 if (cu->line_header == NULL)
9146 return;
9147
9148 if (dwarf2_per_objfile->line_header_hash == NULL)
9149 slot = NULL;
9150 else
9151 {
9152 slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
9153 &line_header_local,
9154 line_header_local_hash, INSERT);
9155 gdb_assert (slot != NULL);
9156 }
9157 if (slot != NULL && *slot == NULL)
9158 {
9159 /* This newly decoded line number information unit will be owned
9160 by line_header_hash hash table. */
9161 *slot = cu->line_header;
9162 }
9163 else
9164 {
9165 /* We cannot free any current entry in (*slot) as that struct line_header
9166 may be already used by multiple CUs. Create only temporary decoded
9167 line_header for this CU - it may happen at most once for each line
9168 number information unit. And if we're not using line_header_hash
9169 then this is what we want as well. */
9170 gdb_assert (die->tag != DW_TAG_partial_unit);
9171 make_cleanup (free_cu_line_header, cu);
9172 }
9173 decode_mapping = (die->tag != DW_TAG_partial_unit);
9174 dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
9175 decode_mapping);
2ab95328
TT
9176}
9177
95554aad 9178/* Process DW_TAG_compile_unit or DW_TAG_partial_unit. */
ae2de4f8 9179
c906108c 9180static void
e7c27a73 9181read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 9182{
dee91e82 9183 struct objfile *objfile = dwarf2_per_objfile->objfile;
3e29f34a 9184 struct gdbarch *gdbarch = get_objfile_arch (objfile);
debd256d 9185 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2acceee2 9186 CORE_ADDR lowpc = ((CORE_ADDR) -1);
c906108c
SS
9187 CORE_ADDR highpc = ((CORE_ADDR) 0);
9188 struct attribute *attr;
15d034d0
TT
9189 const char *name = NULL;
9190 const char *comp_dir = NULL;
c906108c
SS
9191 struct die_info *child_die;
9192 bfd *abfd = objfile->obfd;
e142c38c 9193 CORE_ADDR baseaddr;
6e70227d 9194
e142c38c 9195 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 9196
fae299cd 9197 get_scope_pc_bounds (die, &lowpc, &highpc, cu);
c906108c
SS
9198
9199 /* If we didn't find a lowpc, set it to highpc to avoid complaints
9200 from finish_block. */
2acceee2 9201 if (lowpc == ((CORE_ADDR) -1))
c906108c 9202 lowpc = highpc;
3e29f34a 9203 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
c906108c 9204
9291a0cd 9205 find_file_and_directory (die, cu, &name, &comp_dir);
e1024ff1 9206
95554aad 9207 prepare_one_comp_unit (cu, die, cu->language);
303b6f5d 9208
f4b8a18d
KW
9209 /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
9210 standardised yet. As a workaround for the language detection we fall
9211 back to the DW_AT_producer string. */
9212 if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
9213 cu->language = language_opencl;
9214
3019eac3
DE
9215 /* Similar hack for Go. */
9216 if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
9217 set_cu_language (DW_LANG_Go, cu);
9218
f4dc4d17 9219 dwarf2_start_symtab (cu, name, comp_dir, lowpc);
3019eac3
DE
9220
9221 /* Decode line number information if present. We do this before
9222 processing child DIEs, so that the line header table is available
9223 for DW_AT_decl_file. */
c3b7b696 9224 handle_DW_AT_stmt_list (die, cu, comp_dir, lowpc);
3019eac3
DE
9225
9226 /* Process all dies in compilation unit. */
9227 if (die->child != NULL)
9228 {
9229 child_die = die->child;
9230 while (child_die && child_die->tag)
9231 {
9232 process_die (child_die, cu);
9233 child_die = sibling_die (child_die);
9234 }
9235 }
9236
9237 /* Decode macro information, if present. Dwarf 2 macro information
9238 refers to information in the line number info statement program
9239 header, so we can only read it if we've read the header
9240 successfully. */
9241 attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
9242 if (attr && cu->line_header)
9243 {
9244 if (dwarf2_attr (die, DW_AT_macro_info, cu))
9245 complaint (&symfile_complaints,
9246 _("CU refers to both DW_AT_GNU_macros and DW_AT_macro_info"));
9247
43f3e411 9248 dwarf_decode_macros (cu, DW_UNSND (attr), 1);
3019eac3
DE
9249 }
9250 else
9251 {
9252 attr = dwarf2_attr (die, DW_AT_macro_info, cu);
9253 if (attr && cu->line_header)
9254 {
9255 unsigned int macro_offset = DW_UNSND (attr);
9256
43f3e411 9257 dwarf_decode_macros (cu, macro_offset, 0);
3019eac3
DE
9258 }
9259 }
9260
9261 do_cleanups (back_to);
9262}
9263
f4dc4d17
DE
9264/* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
9265 Create the set of symtabs used by this TU, or if this TU is sharing
9266 symtabs with another TU and the symtabs have already been created
9267 then restore those symtabs in the line header.
9268 We don't need the pc/line-number mapping for type units. */
3019eac3
DE
9269
9270static void
f4dc4d17 9271setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
3019eac3 9272{
f4dc4d17
DE
9273 struct objfile *objfile = dwarf2_per_objfile->objfile;
9274 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
9275 struct type_unit_group *tu_group;
9276 int first_time;
9277 struct line_header *lh;
3019eac3 9278 struct attribute *attr;
f4dc4d17 9279 unsigned int i, line_offset;
0186c6a7 9280 struct signatured_type *sig_type;
3019eac3 9281
f4dc4d17 9282 gdb_assert (per_cu->is_debug_types);
0186c6a7 9283 sig_type = (struct signatured_type *) per_cu;
3019eac3 9284
f4dc4d17 9285 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
3019eac3 9286
f4dc4d17 9287 /* If we're using .gdb_index (includes -readnow) then
74e04d1c 9288 per_cu->type_unit_group may not have been set up yet. */
0186c6a7
DE
9289 if (sig_type->type_unit_group == NULL)
9290 sig_type->type_unit_group = get_type_unit_group (cu, attr);
9291 tu_group = sig_type->type_unit_group;
f4dc4d17
DE
9292
9293 /* If we've already processed this stmt_list there's no real need to
9294 do it again, we could fake it and just recreate the part we need
9295 (file name,index -> symtab mapping). If data shows this optimization
9296 is useful we can do it then. */
43f3e411 9297 first_time = tu_group->compunit_symtab == NULL;
f4dc4d17
DE
9298
9299 /* We have to handle the case of both a missing DW_AT_stmt_list or bad
9300 debug info. */
9301 lh = NULL;
9302 if (attr != NULL)
3019eac3 9303 {
f4dc4d17
DE
9304 line_offset = DW_UNSND (attr);
9305 lh = dwarf_decode_line_header (line_offset, cu);
9306 }
9307 if (lh == NULL)
9308 {
9309 if (first_time)
9310 dwarf2_start_symtab (cu, "", NULL, 0);
9311 else
9312 {
9313 gdb_assert (tu_group->symtabs == NULL);
0ab9ce85 9314 restart_symtab (tu_group->compunit_symtab, "", 0);
f4dc4d17 9315 }
f4dc4d17 9316 return;
3019eac3
DE
9317 }
9318
f4dc4d17
DE
9319 cu->line_header = lh;
9320 make_cleanup (free_cu_line_header, cu);
3019eac3 9321
f4dc4d17
DE
9322 if (first_time)
9323 {
43f3e411 9324 struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
3019eac3 9325
f4dc4d17
DE
9326 tu_group->num_symtabs = lh->num_file_names;
9327 tu_group->symtabs = XNEWVEC (struct symtab *, lh->num_file_names);
3019eac3 9328
f4dc4d17
DE
9329 for (i = 0; i < lh->num_file_names; ++i)
9330 {
d521ce57 9331 const char *dir = NULL;
f4dc4d17 9332 struct file_entry *fe = &lh->file_names[i];
3019eac3 9333
afa6c9ab 9334 if (fe->dir_index && lh->include_dirs != NULL)
f4dc4d17 9335 dir = lh->include_dirs[fe->dir_index - 1];
4d663531 9336 dwarf2_start_subfile (fe->name, dir);
3019eac3 9337
f4dc4d17
DE
9338 if (current_subfile->symtab == NULL)
9339 {
9340 /* NOTE: start_subfile will recognize when it's been passed
9341 a file it has already seen. So we can't assume there's a
43f3e411 9342 simple mapping from lh->file_names to subfiles, plus
f4dc4d17 9343 lh->file_names may contain dups. */
43f3e411
DE
9344 current_subfile->symtab
9345 = allocate_symtab (cust, current_subfile->name);
f4dc4d17
DE
9346 }
9347
9348 fe->symtab = current_subfile->symtab;
9349 tu_group->symtabs[i] = fe->symtab;
9350 }
9351 }
9352 else
3019eac3 9353 {
0ab9ce85 9354 restart_symtab (tu_group->compunit_symtab, "", 0);
f4dc4d17
DE
9355
9356 for (i = 0; i < lh->num_file_names; ++i)
9357 {
9358 struct file_entry *fe = &lh->file_names[i];
9359
9360 fe->symtab = tu_group->symtabs[i];
9361 }
3019eac3
DE
9362 }
9363
f4dc4d17
DE
9364 /* The main symtab is allocated last. Type units don't have DW_AT_name
9365 so they don't have a "real" (so to speak) symtab anyway.
9366 There is later code that will assign the main symtab to all symbols
9367 that don't have one. We need to handle the case of a symbol with a
9368 missing symtab (DW_AT_decl_file) anyway. */
9369}
3019eac3 9370
f4dc4d17
DE
9371/* Process DW_TAG_type_unit.
9372 For TUs we want to skip the first top level sibling if it's not the
9373 actual type being defined by this TU. In this case the first top
9374 level sibling is there to provide context only. */
3019eac3 9375
f4dc4d17
DE
9376static void
9377read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
9378{
9379 struct die_info *child_die;
3019eac3 9380
f4dc4d17
DE
9381 prepare_one_comp_unit (cu, die, language_minimal);
9382
9383 /* Initialize (or reinitialize) the machinery for building symtabs.
9384 We do this before processing child DIEs, so that the line header table
9385 is available for DW_AT_decl_file. */
9386 setup_type_unit_groups (die, cu);
9387
9388 if (die->child != NULL)
9389 {
9390 child_die = die->child;
9391 while (child_die && child_die->tag)
9392 {
9393 process_die (child_die, cu);
9394 child_die = sibling_die (child_die);
9395 }
9396 }
3019eac3
DE
9397}
9398\f
80626a55
DE
9399/* DWO/DWP files.
9400
9401 http://gcc.gnu.org/wiki/DebugFission
9402 http://gcc.gnu.org/wiki/DebugFissionDWP
9403
9404 To simplify handling of both DWO files ("object" files with the DWARF info)
9405 and DWP files (a file with the DWOs packaged up into one file), we treat
9406 DWP files as having a collection of virtual DWO files. */
3019eac3
DE
9407
9408static hashval_t
9409hash_dwo_file (const void *item)
9410{
9411 const struct dwo_file *dwo_file = item;
a2ce51a0 9412 hashval_t hash;
3019eac3 9413
a2ce51a0
DE
9414 hash = htab_hash_string (dwo_file->dwo_name);
9415 if (dwo_file->comp_dir != NULL)
9416 hash += htab_hash_string (dwo_file->comp_dir);
9417 return hash;
3019eac3
DE
9418}
9419
9420static int
9421eq_dwo_file (const void *item_lhs, const void *item_rhs)
9422{
9423 const struct dwo_file *lhs = item_lhs;
9424 const struct dwo_file *rhs = item_rhs;
9425
a2ce51a0
DE
9426 if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
9427 return 0;
9428 if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
9429 return lhs->comp_dir == rhs->comp_dir;
9430 return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
3019eac3
DE
9431}
9432
9433/* Allocate a hash table for DWO files. */
9434
9435static htab_t
9436allocate_dwo_file_hash_table (void)
9437{
9438 struct objfile *objfile = dwarf2_per_objfile->objfile;
9439
9440 return htab_create_alloc_ex (41,
9441 hash_dwo_file,
9442 eq_dwo_file,
9443 NULL,
9444 &objfile->objfile_obstack,
9445 hashtab_obstack_allocate,
9446 dummy_obstack_deallocate);
9447}
9448
80626a55
DE
9449/* Lookup DWO file DWO_NAME. */
9450
9451static void **
0ac5b59e 9452lookup_dwo_file_slot (const char *dwo_name, const char *comp_dir)
80626a55
DE
9453{
9454 struct dwo_file find_entry;
9455 void **slot;
9456
9457 if (dwarf2_per_objfile->dwo_files == NULL)
9458 dwarf2_per_objfile->dwo_files = allocate_dwo_file_hash_table ();
9459
9460 memset (&find_entry, 0, sizeof (find_entry));
0ac5b59e
DE
9461 find_entry.dwo_name = dwo_name;
9462 find_entry.comp_dir = comp_dir;
80626a55
DE
9463 slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
9464
9465 return slot;
9466}
9467
3019eac3
DE
9468static hashval_t
9469hash_dwo_unit (const void *item)
9470{
9471 const struct dwo_unit *dwo_unit = item;
9472
9473 /* This drops the top 32 bits of the id, but is ok for a hash. */
9474 return dwo_unit->signature;
9475}
9476
9477static int
9478eq_dwo_unit (const void *item_lhs, const void *item_rhs)
9479{
9480 const struct dwo_unit *lhs = item_lhs;
9481 const struct dwo_unit *rhs = item_rhs;
9482
9483 /* The signature is assumed to be unique within the DWO file.
9484 So while object file CU dwo_id's always have the value zero,
9485 that's OK, assuming each object file DWO file has only one CU,
9486 and that's the rule for now. */
9487 return lhs->signature == rhs->signature;
9488}
9489
9490/* Allocate a hash table for DWO CUs,TUs.
9491 There is one of these tables for each of CUs,TUs for each DWO file. */
9492
9493static htab_t
9494allocate_dwo_unit_table (struct objfile *objfile)
9495{
9496 /* Start out with a pretty small number.
9497 Generally DWO files contain only one CU and maybe some TUs. */
9498 return htab_create_alloc_ex (3,
9499 hash_dwo_unit,
9500 eq_dwo_unit,
9501 NULL,
9502 &objfile->objfile_obstack,
9503 hashtab_obstack_allocate,
9504 dummy_obstack_deallocate);
9505}
9506
80626a55 9507/* Structure used to pass data to create_dwo_debug_info_hash_table_reader. */
3019eac3 9508
19c3d4c9 9509struct create_dwo_cu_data
3019eac3
DE
9510{
9511 struct dwo_file *dwo_file;
19c3d4c9 9512 struct dwo_unit dwo_unit;
3019eac3
DE
9513};
9514
19c3d4c9 9515/* die_reader_func for create_dwo_cu. */
3019eac3
DE
9516
9517static void
19c3d4c9
DE
9518create_dwo_cu_reader (const struct die_reader_specs *reader,
9519 const gdb_byte *info_ptr,
9520 struct die_info *comp_unit_die,
9521 int has_children,
9522 void *datap)
3019eac3
DE
9523{
9524 struct dwarf2_cu *cu = reader->cu;
9525 struct objfile *objfile = dwarf2_per_objfile->objfile;
9526 sect_offset offset = cu->per_cu->offset;
8a0459fd 9527 struct dwarf2_section_info *section = cu->per_cu->section;
19c3d4c9 9528 struct create_dwo_cu_data *data = datap;
3019eac3 9529 struct dwo_file *dwo_file = data->dwo_file;
19c3d4c9 9530 struct dwo_unit *dwo_unit = &data->dwo_unit;
3019eac3 9531 struct attribute *attr;
3019eac3
DE
9532
9533 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
9534 if (attr == NULL)
9535 {
19c3d4c9
DE
9536 complaint (&symfile_complaints,
9537 _("Dwarf Error: debug entry at offset 0x%x is missing"
9538 " its dwo_id [in module %s]"),
9539 offset.sect_off, dwo_file->dwo_name);
3019eac3
DE
9540 return;
9541 }
9542
3019eac3
DE
9543 dwo_unit->dwo_file = dwo_file;
9544 dwo_unit->signature = DW_UNSND (attr);
8a0459fd 9545 dwo_unit->section = section;
3019eac3
DE
9546 dwo_unit->offset = offset;
9547 dwo_unit->length = cu->per_cu->length;
9548
b4f54984 9549 if (dwarf_read_debug)
4031ecc5
DE
9550 fprintf_unfiltered (gdb_stdlog, " offset 0x%x, dwo_id %s\n",
9551 offset.sect_off, hex_string (dwo_unit->signature));
3019eac3
DE
9552}
9553
19c3d4c9
DE
9554/* Create the dwo_unit for the lone CU in DWO_FILE.
9555 Note: This function processes DWO files only, not DWP files. */
3019eac3 9556
19c3d4c9
DE
9557static struct dwo_unit *
9558create_dwo_cu (struct dwo_file *dwo_file)
3019eac3
DE
9559{
9560 struct objfile *objfile = dwarf2_per_objfile->objfile;
9561 struct dwarf2_section_info *section = &dwo_file->sections.info;
9562 bfd *abfd;
9563 htab_t cu_htab;
d521ce57 9564 const gdb_byte *info_ptr, *end_ptr;
19c3d4c9
DE
9565 struct create_dwo_cu_data create_dwo_cu_data;
9566 struct dwo_unit *dwo_unit;
3019eac3
DE
9567
9568 dwarf2_read_section (objfile, section);
9569 info_ptr = section->buffer;
9570
9571 if (info_ptr == NULL)
9572 return NULL;
9573
9574 /* We can't set abfd until now because the section may be empty or
9575 not present, in which case section->asection will be NULL. */
a32a8923 9576 abfd = get_section_bfd_owner (section);
3019eac3 9577
b4f54984 9578 if (dwarf_read_debug)
19c3d4c9
DE
9579 {
9580 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
a32a8923
DE
9581 get_section_name (section),
9582 get_section_file_name (section));
19c3d4c9 9583 }
3019eac3 9584
19c3d4c9
DE
9585 create_dwo_cu_data.dwo_file = dwo_file;
9586 dwo_unit = NULL;
3019eac3
DE
9587
9588 end_ptr = info_ptr + section->size;
9589 while (info_ptr < end_ptr)
9590 {
9591 struct dwarf2_per_cu_data per_cu;
9592
19c3d4c9
DE
9593 memset (&create_dwo_cu_data.dwo_unit, 0,
9594 sizeof (create_dwo_cu_data.dwo_unit));
3019eac3
DE
9595 memset (&per_cu, 0, sizeof (per_cu));
9596 per_cu.objfile = objfile;
9597 per_cu.is_debug_types = 0;
9598 per_cu.offset.sect_off = info_ptr - section->buffer;
8a0459fd 9599 per_cu.section = section;
3019eac3 9600
33e80786 9601 init_cutu_and_read_dies_no_follow (&per_cu, dwo_file,
19c3d4c9
DE
9602 create_dwo_cu_reader,
9603 &create_dwo_cu_data);
9604
9605 if (create_dwo_cu_data.dwo_unit.dwo_file != NULL)
9606 {
9607 /* If we've already found one, complain. We only support one
9608 because having more than one requires hacking the dwo_name of
9609 each to match, which is highly unlikely to happen. */
9610 if (dwo_unit != NULL)
9611 {
9612 complaint (&symfile_complaints,
9613 _("Multiple CUs in DWO file %s [in module %s]"),
4262abfb 9614 dwo_file->dwo_name, objfile_name (objfile));
19c3d4c9
DE
9615 break;
9616 }
9617
9618 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
9619 *dwo_unit = create_dwo_cu_data.dwo_unit;
9620 }
3019eac3
DE
9621
9622 info_ptr += per_cu.length;
9623 }
9624
19c3d4c9 9625 return dwo_unit;
3019eac3
DE
9626}
9627
80626a55
DE
9628/* DWP file .debug_{cu,tu}_index section format:
9629 [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
9630
d2415c6c
DE
9631 DWP Version 1:
9632
80626a55
DE
9633 Both index sections have the same format, and serve to map a 64-bit
9634 signature to a set of section numbers. Each section begins with a header,
9635 followed by a hash table of 64-bit signatures, a parallel table of 32-bit
9636 indexes, and a pool of 32-bit section numbers. The index sections will be
9637 aligned at 8-byte boundaries in the file.
9638
d2415c6c
DE
9639 The index section header consists of:
9640
9641 V, 32 bit version number
9642 -, 32 bits unused
9643 N, 32 bit number of compilation units or type units in the index
9644 M, 32 bit number of slots in the hash table
80626a55 9645
d2415c6c 9646 Numbers are recorded using the byte order of the application binary.
80626a55 9647
d2415c6c
DE
9648 The hash table begins at offset 16 in the section, and consists of an array
9649 of M 64-bit slots. Each slot contains a 64-bit signature (using the byte
9650 order of the application binary). Unused slots in the hash table are 0.
9651 (We rely on the extreme unlikeliness of a signature being exactly 0.)
80626a55 9652
d2415c6c
DE
9653 The parallel table begins immediately after the hash table
9654 (at offset 16 + 8 * M from the beginning of the section), and consists of an
9655 array of 32-bit indexes (using the byte order of the application binary),
9656 corresponding 1-1 with slots in the hash table. Each entry in the parallel
9657 table contains a 32-bit index into the pool of section numbers. For unused
9658 hash table slots, the corresponding entry in the parallel table will be 0.
80626a55 9659
73869dc2
DE
9660 The pool of section numbers begins immediately following the hash table
9661 (at offset 16 + 12 * M from the beginning of the section). The pool of
9662 section numbers consists of an array of 32-bit words (using the byte order
9663 of the application binary). Each item in the array is indexed starting
9664 from 0. The hash table entry provides the index of the first section
9665 number in the set. Additional section numbers in the set follow, and the
9666 set is terminated by a 0 entry (section number 0 is not used in ELF).
9667
9668 In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
9669 section must be the first entry in the set, and the .debug_abbrev.dwo must
9670 be the second entry. Other members of the set may follow in any order.
9671
9672 ---
9673
9674 DWP Version 2:
9675
9676 DWP Version 2 combines all the .debug_info, etc. sections into one,
9677 and the entries in the index tables are now offsets into these sections.
9678 CU offsets begin at 0. TU offsets begin at the size of the .debug_info
9679 section.
9680
9681 Index Section Contents:
9682 Header
9683 Hash Table of Signatures dwp_hash_table.hash_table
9684 Parallel Table of Indices dwp_hash_table.unit_table
9685 Table of Section Offsets dwp_hash_table.v2.{section_ids,offsets}
9686 Table of Section Sizes dwp_hash_table.v2.sizes
9687
9688 The index section header consists of:
9689
9690 V, 32 bit version number
9691 L, 32 bit number of columns in the table of section offsets
9692 N, 32 bit number of compilation units or type units in the index
9693 M, 32 bit number of slots in the hash table
9694
9695 Numbers are recorded using the byte order of the application binary.
9696
9697 The hash table has the same format as version 1.
9698 The parallel table of indices has the same format as version 1,
9699 except that the entries are origin-1 indices into the table of sections
9700 offsets and the table of section sizes.
9701
9702 The table of offsets begins immediately following the parallel table
9703 (at offset 16 + 12 * M from the beginning of the section). The table is
9704 a two-dimensional array of 32-bit words (using the byte order of the
9705 application binary), with L columns and N+1 rows, in row-major order.
9706 Each row in the array is indexed starting from 0. The first row provides
9707 a key to the remaining rows: each column in this row provides an identifier
9708 for a debug section, and the offsets in the same column of subsequent rows
9709 refer to that section. The section identifiers are:
9710
9711 DW_SECT_INFO 1 .debug_info.dwo
9712 DW_SECT_TYPES 2 .debug_types.dwo
9713 DW_SECT_ABBREV 3 .debug_abbrev.dwo
9714 DW_SECT_LINE 4 .debug_line.dwo
9715 DW_SECT_LOC 5 .debug_loc.dwo
9716 DW_SECT_STR_OFFSETS 6 .debug_str_offsets.dwo
9717 DW_SECT_MACINFO 7 .debug_macinfo.dwo
9718 DW_SECT_MACRO 8 .debug_macro.dwo
9719
9720 The offsets provided by the CU and TU index sections are the base offsets
9721 for the contributions made by each CU or TU to the corresponding section
9722 in the package file. Each CU and TU header contains an abbrev_offset
9723 field, used to find the abbreviations table for that CU or TU within the
9724 contribution to the .debug_abbrev.dwo section for that CU or TU, and should
9725 be interpreted as relative to the base offset given in the index section.
9726 Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
9727 should be interpreted as relative to the base offset for .debug_line.dwo,
9728 and offsets into other debug sections obtained from DWARF attributes should
9729 also be interpreted as relative to the corresponding base offset.
9730
9731 The table of sizes begins immediately following the table of offsets.
9732 Like the table of offsets, it is a two-dimensional array of 32-bit words,
9733 with L columns and N rows, in row-major order. Each row in the array is
9734 indexed starting from 1 (row 0 is shared by the two tables).
9735
9736 ---
9737
9738 Hash table lookup is handled the same in version 1 and 2:
9739
9740 We assume that N and M will not exceed 2^32 - 1.
9741 The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
9742
d2415c6c
DE
9743 Given a 64-bit compilation unit signature or a type signature S, an entry
9744 in the hash table is located as follows:
80626a55 9745
d2415c6c
DE
9746 1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
9747 the low-order k bits all set to 1.
80626a55 9748
d2415c6c 9749 2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
80626a55 9750
d2415c6c
DE
9751 3) If the hash table entry at index H matches the signature, use that
9752 entry. If the hash table entry at index H is unused (all zeroes),
9753 terminate the search: the signature is not present in the table.
80626a55 9754
d2415c6c 9755 4) Let H = (H + H') modulo M. Repeat at Step 3.
80626a55 9756
d2415c6c 9757 Because M > N and H' and M are relatively prime, the search is guaranteed
73869dc2 9758 to stop at an unused slot or find the match. */
80626a55
DE
9759
9760/* Create a hash table to map DWO IDs to their CU/TU entry in
9761 .debug_{info,types}.dwo in DWP_FILE.
9762 Returns NULL if there isn't one.
9763 Note: This function processes DWP files only, not DWO files. */
9764
9765static struct dwp_hash_table *
9766create_dwp_hash_table (struct dwp_file *dwp_file, int is_debug_types)
9767{
9768 struct objfile *objfile = dwarf2_per_objfile->objfile;
9769 bfd *dbfd = dwp_file->dbfd;
948f8e3d 9770 const gdb_byte *index_ptr, *index_end;
80626a55 9771 struct dwarf2_section_info *index;
73869dc2 9772 uint32_t version, nr_columns, nr_units, nr_slots;
80626a55
DE
9773 struct dwp_hash_table *htab;
9774
9775 if (is_debug_types)
9776 index = &dwp_file->sections.tu_index;
9777 else
9778 index = &dwp_file->sections.cu_index;
9779
9780 if (dwarf2_section_empty_p (index))
9781 return NULL;
9782 dwarf2_read_section (objfile, index);
9783
9784 index_ptr = index->buffer;
9785 index_end = index_ptr + index->size;
9786
9787 version = read_4_bytes (dbfd, index_ptr);
73869dc2
DE
9788 index_ptr += 4;
9789 if (version == 2)
9790 nr_columns = read_4_bytes (dbfd, index_ptr);
9791 else
9792 nr_columns = 0;
9793 index_ptr += 4;
80626a55
DE
9794 nr_units = read_4_bytes (dbfd, index_ptr);
9795 index_ptr += 4;
9796 nr_slots = read_4_bytes (dbfd, index_ptr);
9797 index_ptr += 4;
9798
73869dc2 9799 if (version != 1 && version != 2)
80626a55 9800 {
21aa081e 9801 error (_("Dwarf Error: unsupported DWP file version (%s)"
80626a55 9802 " [in module %s]"),
21aa081e 9803 pulongest (version), dwp_file->name);
80626a55
DE
9804 }
9805 if (nr_slots != (nr_slots & -nr_slots))
9806 {
21aa081e 9807 error (_("Dwarf Error: number of slots in DWP hash table (%s)"
80626a55 9808 " is not power of 2 [in module %s]"),
21aa081e 9809 pulongest (nr_slots), dwp_file->name);
80626a55
DE
9810 }
9811
9812 htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
73869dc2
DE
9813 htab->version = version;
9814 htab->nr_columns = nr_columns;
80626a55
DE
9815 htab->nr_units = nr_units;
9816 htab->nr_slots = nr_slots;
9817 htab->hash_table = index_ptr;
9818 htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
73869dc2
DE
9819
9820 /* Exit early if the table is empty. */
9821 if (nr_slots == 0 || nr_units == 0
9822 || (version == 2 && nr_columns == 0))
9823 {
9824 /* All must be zero. */
9825 if (nr_slots != 0 || nr_units != 0
9826 || (version == 2 && nr_columns != 0))
9827 {
9828 complaint (&symfile_complaints,
9829 _("Empty DWP but nr_slots,nr_units,nr_columns not"
9830 " all zero [in modules %s]"),
9831 dwp_file->name);
9832 }
9833 return htab;
9834 }
9835
9836 if (version == 1)
9837 {
9838 htab->section_pool.v1.indices =
9839 htab->unit_table + sizeof (uint32_t) * nr_slots;
9840 /* It's harder to decide whether the section is too small in v1.
9841 V1 is deprecated anyway so we punt. */
9842 }
9843 else
9844 {
9845 const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
9846 int *ids = htab->section_pool.v2.section_ids;
9847 /* Reverse map for error checking. */
9848 int ids_seen[DW_SECT_MAX + 1];
9849 int i;
9850
9851 if (nr_columns < 2)
9852 {
9853 error (_("Dwarf Error: bad DWP hash table, too few columns"
9854 " in section table [in module %s]"),
9855 dwp_file->name);
9856 }
9857 if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
9858 {
9859 error (_("Dwarf Error: bad DWP hash table, too many columns"
9860 " in section table [in module %s]"),
9861 dwp_file->name);
9862 }
9863 memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9864 memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9865 for (i = 0; i < nr_columns; ++i)
9866 {
9867 int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
9868
9869 if (id < DW_SECT_MIN || id > DW_SECT_MAX)
9870 {
9871 error (_("Dwarf Error: bad DWP hash table, bad section id %d"
9872 " in section table [in module %s]"),
9873 id, dwp_file->name);
9874 }
9875 if (ids_seen[id] != -1)
9876 {
9877 error (_("Dwarf Error: bad DWP hash table, duplicate section"
9878 " id %d in section table [in module %s]"),
9879 id, dwp_file->name);
9880 }
9881 ids_seen[id] = i;
9882 ids[i] = id;
9883 }
9884 /* Must have exactly one info or types section. */
9885 if (((ids_seen[DW_SECT_INFO] != -1)
9886 + (ids_seen[DW_SECT_TYPES] != -1))
9887 != 1)
9888 {
9889 error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
9890 " DWO info/types section [in module %s]"),
9891 dwp_file->name);
9892 }
9893 /* Must have an abbrev section. */
9894 if (ids_seen[DW_SECT_ABBREV] == -1)
9895 {
9896 error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
9897 " section [in module %s]"),
9898 dwp_file->name);
9899 }
9900 htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
9901 htab->section_pool.v2.sizes =
9902 htab->section_pool.v2.offsets + (sizeof (uint32_t)
9903 * nr_units * nr_columns);
9904 if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
9905 * nr_units * nr_columns))
9906 > index_end)
9907 {
9908 error (_("Dwarf Error: DWP index section is corrupt (too small)"
9909 " [in module %s]"),
9910 dwp_file->name);
9911 }
9912 }
80626a55
DE
9913
9914 return htab;
9915}
9916
9917/* Update SECTIONS with the data from SECTP.
9918
9919 This function is like the other "locate" section routines that are
9920 passed to bfd_map_over_sections, but in this context the sections to
73869dc2 9921 read comes from the DWP V1 hash table, not the full ELF section table.
80626a55
DE
9922
9923 The result is non-zero for success, or zero if an error was found. */
9924
9925static int
73869dc2
DE
9926locate_v1_virtual_dwo_sections (asection *sectp,
9927 struct virtual_v1_dwo_sections *sections)
80626a55
DE
9928{
9929 const struct dwop_section_names *names = &dwop_section_names;
9930
9931 if (section_is_p (sectp->name, &names->abbrev_dwo))
9932 {
9933 /* There can be only one. */
049412e3 9934 if (sections->abbrev.s.section != NULL)
80626a55 9935 return 0;
049412e3 9936 sections->abbrev.s.section = sectp;
80626a55
DE
9937 sections->abbrev.size = bfd_get_section_size (sectp);
9938 }
9939 else if (section_is_p (sectp->name, &names->info_dwo)
9940 || section_is_p (sectp->name, &names->types_dwo))
9941 {
9942 /* There can be only one. */
049412e3 9943 if (sections->info_or_types.s.section != NULL)
80626a55 9944 return 0;
049412e3 9945 sections->info_or_types.s.section = sectp;
80626a55
DE
9946 sections->info_or_types.size = bfd_get_section_size (sectp);
9947 }
9948 else if (section_is_p (sectp->name, &names->line_dwo))
9949 {
9950 /* There can be only one. */
049412e3 9951 if (sections->line.s.section != NULL)
80626a55 9952 return 0;
049412e3 9953 sections->line.s.section = sectp;
80626a55
DE
9954 sections->line.size = bfd_get_section_size (sectp);
9955 }
9956 else if (section_is_p (sectp->name, &names->loc_dwo))
9957 {
9958 /* There can be only one. */
049412e3 9959 if (sections->loc.s.section != NULL)
80626a55 9960 return 0;
049412e3 9961 sections->loc.s.section = sectp;
80626a55
DE
9962 sections->loc.size = bfd_get_section_size (sectp);
9963 }
9964 else if (section_is_p (sectp->name, &names->macinfo_dwo))
9965 {
9966 /* There can be only one. */
049412e3 9967 if (sections->macinfo.s.section != NULL)
80626a55 9968 return 0;
049412e3 9969 sections->macinfo.s.section = sectp;
80626a55
DE
9970 sections->macinfo.size = bfd_get_section_size (sectp);
9971 }
9972 else if (section_is_p (sectp->name, &names->macro_dwo))
9973 {
9974 /* There can be only one. */
049412e3 9975 if (sections->macro.s.section != NULL)
80626a55 9976 return 0;
049412e3 9977 sections->macro.s.section = sectp;
80626a55
DE
9978 sections->macro.size = bfd_get_section_size (sectp);
9979 }
9980 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
9981 {
9982 /* There can be only one. */
049412e3 9983 if (sections->str_offsets.s.section != NULL)
80626a55 9984 return 0;
049412e3 9985 sections->str_offsets.s.section = sectp;
80626a55
DE
9986 sections->str_offsets.size = bfd_get_section_size (sectp);
9987 }
9988 else
9989 {
9990 /* No other kind of section is valid. */
9991 return 0;
9992 }
9993
9994 return 1;
9995}
9996
73869dc2
DE
9997/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
9998 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
9999 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
10000 This is for DWP version 1 files. */
80626a55
DE
10001
10002static struct dwo_unit *
73869dc2
DE
10003create_dwo_unit_in_dwp_v1 (struct dwp_file *dwp_file,
10004 uint32_t unit_index,
10005 const char *comp_dir,
10006 ULONGEST signature, int is_debug_types)
80626a55
DE
10007{
10008 struct objfile *objfile = dwarf2_per_objfile->objfile;
73869dc2
DE
10009 const struct dwp_hash_table *dwp_htab =
10010 is_debug_types ? dwp_file->tus : dwp_file->cus;
80626a55
DE
10011 bfd *dbfd = dwp_file->dbfd;
10012 const char *kind = is_debug_types ? "TU" : "CU";
10013 struct dwo_file *dwo_file;
10014 struct dwo_unit *dwo_unit;
73869dc2 10015 struct virtual_v1_dwo_sections sections;
80626a55
DE
10016 void **dwo_file_slot;
10017 char *virtual_dwo_name;
10018 struct dwarf2_section_info *cutu;
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);
0ac5b59e
DE
10116 dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
10117 virtual_dwo_name,
10118 strlen (virtual_dwo_name));
10119 dwo_file->comp_dir = comp_dir;
80626a55
DE
10120 dwo_file->sections.abbrev = sections.abbrev;
10121 dwo_file->sections.line = sections.line;
10122 dwo_file->sections.loc = sections.loc;
10123 dwo_file->sections.macinfo = sections.macinfo;
10124 dwo_file->sections.macro = sections.macro;
10125 dwo_file->sections.str_offsets = sections.str_offsets;
10126 /* The "str" section is global to the entire DWP file. */
10127 dwo_file->sections.str = dwp_file->sections.str;
57d63ce2 10128 /* The info or types section is assigned below to dwo_unit,
80626a55
DE
10129 there's no need to record it in dwo_file.
10130 Also, we can't simply record type sections in dwo_file because
10131 we record a pointer into the vector in dwo_unit. As we collect more
10132 types we'll grow the vector and eventually have to reallocate space
57d63ce2
DE
10133 for it, invalidating all copies of pointers into the previous
10134 contents. */
80626a55
DE
10135 *dwo_file_slot = dwo_file;
10136 }
10137 else
10138 {
b4f54984 10139 if (dwarf_read_debug)
80626a55
DE
10140 {
10141 fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10142 virtual_dwo_name);
10143 }
10144 dwo_file = *dwo_file_slot;
10145 }
10146 do_cleanups (cleanups);
10147
10148 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10149 dwo_unit->dwo_file = dwo_file;
10150 dwo_unit->signature = signature;
8a0459fd
DE
10151 dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
10152 sizeof (struct dwarf2_section_info));
10153 *dwo_unit->section = sections.info_or_types;
57d63ce2 10154 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
80626a55
DE
10155
10156 return dwo_unit;
10157}
10158
73869dc2
DE
10159/* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
10160 Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
10161 piece within that section used by a TU/CU, return a virtual section
10162 of just that piece. */
10163
10164static struct dwarf2_section_info
10165create_dwp_v2_section (struct dwarf2_section_info *section,
10166 bfd_size_type offset, bfd_size_type size)
10167{
10168 struct dwarf2_section_info result;
10169 asection *sectp;
10170
10171 gdb_assert (section != NULL);
10172 gdb_assert (!section->is_virtual);
10173
10174 memset (&result, 0, sizeof (result));
10175 result.s.containing_section = section;
10176 result.is_virtual = 1;
10177
10178 if (size == 0)
10179 return result;
10180
10181 sectp = get_section_bfd_section (section);
10182
10183 /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
10184 bounds of the real section. This is a pretty-rare event, so just
10185 flag an error (easier) instead of a warning and trying to cope. */
10186 if (sectp == NULL
10187 || offset + size > bfd_get_section_size (sectp))
10188 {
10189 bfd *abfd = sectp->owner;
10190
10191 error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
10192 " in section %s [in module %s]"),
10193 sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
10194 objfile_name (dwarf2_per_objfile->objfile));
10195 }
10196
10197 result.virtual_offset = offset;
10198 result.size = size;
10199 return result;
10200}
10201
10202/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
10203 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
10204 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
10205 This is for DWP version 2 files. */
10206
10207static struct dwo_unit *
10208create_dwo_unit_in_dwp_v2 (struct dwp_file *dwp_file,
10209 uint32_t unit_index,
10210 const char *comp_dir,
10211 ULONGEST signature, int is_debug_types)
10212{
10213 struct objfile *objfile = dwarf2_per_objfile->objfile;
10214 const struct dwp_hash_table *dwp_htab =
10215 is_debug_types ? dwp_file->tus : dwp_file->cus;
10216 bfd *dbfd = dwp_file->dbfd;
10217 const char *kind = is_debug_types ? "TU" : "CU";
10218 struct dwo_file *dwo_file;
10219 struct dwo_unit *dwo_unit;
10220 struct virtual_v2_dwo_sections sections;
10221 void **dwo_file_slot;
10222 char *virtual_dwo_name;
10223 struct dwarf2_section_info *cutu;
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);
10317 dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
10318 virtual_dwo_name,
10319 strlen (virtual_dwo_name));
10320 dwo_file->comp_dir = comp_dir;
10321 dwo_file->sections.abbrev =
10322 create_dwp_v2_section (&dwp_file->sections.abbrev,
10323 sections.abbrev_offset, sections.abbrev_size);
10324 dwo_file->sections.line =
10325 create_dwp_v2_section (&dwp_file->sections.line,
10326 sections.line_offset, sections.line_size);
10327 dwo_file->sections.loc =
10328 create_dwp_v2_section (&dwp_file->sections.loc,
10329 sections.loc_offset, sections.loc_size);
10330 dwo_file->sections.macinfo =
10331 create_dwp_v2_section (&dwp_file->sections.macinfo,
10332 sections.macinfo_offset, sections.macinfo_size);
10333 dwo_file->sections.macro =
10334 create_dwp_v2_section (&dwp_file->sections.macro,
10335 sections.macro_offset, sections.macro_size);
10336 dwo_file->sections.str_offsets =
10337 create_dwp_v2_section (&dwp_file->sections.str_offsets,
10338 sections.str_offsets_offset,
10339 sections.str_offsets_size);
10340 /* The "str" section is global to the entire DWP file. */
10341 dwo_file->sections.str = dwp_file->sections.str;
10342 /* The info or types section is assigned below to dwo_unit,
10343 there's no need to record it in dwo_file.
10344 Also, we can't simply record type sections in dwo_file because
10345 we record a pointer into the vector in dwo_unit. As we collect more
10346 types we'll grow the vector and eventually have to reallocate space
10347 for it, invalidating all copies of pointers into the previous
10348 contents. */
10349 *dwo_file_slot = dwo_file;
10350 }
10351 else
10352 {
b4f54984 10353 if (dwarf_read_debug)
73869dc2
DE
10354 {
10355 fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10356 virtual_dwo_name);
10357 }
10358 dwo_file = *dwo_file_slot;
10359 }
10360 do_cleanups (cleanups);
10361
10362 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10363 dwo_unit->dwo_file = dwo_file;
10364 dwo_unit->signature = signature;
10365 dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
10366 sizeof (struct dwarf2_section_info));
10367 *dwo_unit->section = create_dwp_v2_section (is_debug_types
10368 ? &dwp_file->sections.types
10369 : &dwp_file->sections.info,
10370 sections.info_or_types_offset,
10371 sections.info_or_types_size);
10372 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
10373
10374 return dwo_unit;
10375}
10376
57d63ce2
DE
10377/* Lookup the DWO unit with SIGNATURE in DWP_FILE.
10378 Returns NULL if the signature isn't found. */
80626a55
DE
10379
10380static struct dwo_unit *
57d63ce2
DE
10381lookup_dwo_unit_in_dwp (struct dwp_file *dwp_file, const char *comp_dir,
10382 ULONGEST signature, int is_debug_types)
80626a55 10383{
57d63ce2
DE
10384 const struct dwp_hash_table *dwp_htab =
10385 is_debug_types ? dwp_file->tus : dwp_file->cus;
80626a55 10386 bfd *dbfd = dwp_file->dbfd;
57d63ce2 10387 uint32_t mask = dwp_htab->nr_slots - 1;
80626a55
DE
10388 uint32_t hash = signature & mask;
10389 uint32_t hash2 = ((signature >> 32) & mask) | 1;
10390 unsigned int i;
10391 void **slot;
10392 struct dwo_unit find_dwo_cu, *dwo_cu;
10393
10394 memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
10395 find_dwo_cu.signature = signature;
19ac8c2e
DE
10396 slot = htab_find_slot (is_debug_types
10397 ? dwp_file->loaded_tus
10398 : dwp_file->loaded_cus,
10399 &find_dwo_cu, INSERT);
80626a55
DE
10400
10401 if (*slot != NULL)
10402 return *slot;
10403
10404 /* Use a for loop so that we don't loop forever on bad debug info. */
57d63ce2 10405 for (i = 0; i < dwp_htab->nr_slots; ++i)
80626a55
DE
10406 {
10407 ULONGEST signature_in_table;
10408
10409 signature_in_table =
57d63ce2 10410 read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
80626a55
DE
10411 if (signature_in_table == signature)
10412 {
57d63ce2
DE
10413 uint32_t unit_index =
10414 read_4_bytes (dbfd,
10415 dwp_htab->unit_table + hash * sizeof (uint32_t));
80626a55 10416
73869dc2
DE
10417 if (dwp_file->version == 1)
10418 {
10419 *slot = create_dwo_unit_in_dwp_v1 (dwp_file, unit_index,
10420 comp_dir, signature,
10421 is_debug_types);
10422 }
10423 else
10424 {
10425 *slot = create_dwo_unit_in_dwp_v2 (dwp_file, unit_index,
10426 comp_dir, signature,
10427 is_debug_types);
10428 }
80626a55
DE
10429 return *slot;
10430 }
10431 if (signature_in_table == 0)
10432 return NULL;
10433 hash = (hash + hash2) & mask;
10434 }
10435
10436 error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
10437 " [in module %s]"),
10438 dwp_file->name);
10439}
10440
ab5088bf 10441/* Subroutine of open_dwo_file,open_dwp_file to simplify them.
3019eac3
DE
10442 Open the file specified by FILE_NAME and hand it off to BFD for
10443 preliminary analysis. Return a newly initialized bfd *, which
10444 includes a canonicalized copy of FILE_NAME.
80626a55 10445 If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
6ac97d4c
DE
10446 SEARCH_CWD is true if the current directory is to be searched.
10447 It will be searched before debug-file-directory.
13aaf454
DE
10448 If successful, the file is added to the bfd include table of the
10449 objfile's bfd (see gdb_bfd_record_inclusion).
6ac97d4c 10450 If unable to find/open the file, return NULL.
3019eac3
DE
10451 NOTE: This function is derived from symfile_bfd_open. */
10452
10453static bfd *
6ac97d4c 10454try_open_dwop_file (const char *file_name, int is_dwp, int search_cwd)
3019eac3
DE
10455{
10456 bfd *sym_bfd;
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,
10469 debug_file_directory, NULL);
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
bb397797 10485 sym_bfd = gdb_bfd_open (absolute_name, gnutarget, desc);
a4453b7e 10486 xfree (absolute_name);
9c02c129
DE
10487 if (sym_bfd == NULL)
10488 return NULL;
3019eac3
DE
10489 bfd_set_cacheable (sym_bfd, 1);
10490
10491 if (!bfd_check_format (sym_bfd, bfd_object))
10492 {
cbb099e8 10493 gdb_bfd_unref (sym_bfd); /* This also closes desc. */
3019eac3
DE
10494 return NULL;
10495 }
10496
13aaf454
DE
10497 /* Success. Record the bfd as having been included by the objfile's bfd.
10498 This is important because things like demangled_names_hash lives in the
10499 objfile's per_bfd space and may have references to things like symbol
10500 names that live in the DWO/DWP file's per_bfd space. PR 16426. */
10501 gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd);
10502
3019eac3
DE
10503 return sym_bfd;
10504}
10505
ab5088bf 10506/* Try to open DWO file FILE_NAME.
3019eac3
DE
10507 COMP_DIR is the DW_AT_comp_dir attribute.
10508 The result is the bfd handle of the file.
10509 If there is a problem finding or opening the file, return NULL.
10510 Upon success, the canonicalized path of the file is stored in the bfd,
10511 same as symfile_bfd_open. */
10512
10513static bfd *
ab5088bf 10514open_dwo_file (const char *file_name, const char *comp_dir)
3019eac3
DE
10515{
10516 bfd *abfd;
3019eac3 10517
80626a55 10518 if (IS_ABSOLUTE_PATH (file_name))
6ac97d4c 10519 return try_open_dwop_file (file_name, 0 /*is_dwp*/, 0 /*search_cwd*/);
3019eac3
DE
10520
10521 /* Before trying the search path, try DWO_NAME in COMP_DIR. */
10522
10523 if (comp_dir != NULL)
10524 {
80626a55 10525 char *path_to_try = concat (comp_dir, SLASH_STRING, file_name, NULL);
3019eac3
DE
10526
10527 /* NOTE: If comp_dir is a relative path, this will also try the
10528 search path, which seems useful. */
6ac97d4c 10529 abfd = try_open_dwop_file (path_to_try, 0 /*is_dwp*/, 1 /*search_cwd*/);
3019eac3
DE
10530 xfree (path_to_try);
10531 if (abfd != NULL)
10532 return abfd;
10533 }
10534
10535 /* That didn't work, try debug-file-directory, which, despite its name,
10536 is a list of paths. */
10537
10538 if (*debug_file_directory == '\0')
10539 return NULL;
10540
6ac97d4c 10541 return try_open_dwop_file (file_name, 0 /*is_dwp*/, 1 /*search_cwd*/);
3019eac3
DE
10542}
10543
80626a55
DE
10544/* This function is mapped across the sections and remembers the offset and
10545 size of each of the DWO debugging sections we are interested in. */
10546
10547static void
10548dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
10549{
10550 struct dwo_sections *dwo_sections = dwo_sections_ptr;
10551 const struct dwop_section_names *names = &dwop_section_names;
10552
10553 if (section_is_p (sectp->name, &names->abbrev_dwo))
10554 {
049412e3 10555 dwo_sections->abbrev.s.section = sectp;
80626a55
DE
10556 dwo_sections->abbrev.size = bfd_get_section_size (sectp);
10557 }
10558 else if (section_is_p (sectp->name, &names->info_dwo))
10559 {
049412e3 10560 dwo_sections->info.s.section = sectp;
80626a55
DE
10561 dwo_sections->info.size = bfd_get_section_size (sectp);
10562 }
10563 else if (section_is_p (sectp->name, &names->line_dwo))
10564 {
049412e3 10565 dwo_sections->line.s.section = sectp;
80626a55
DE
10566 dwo_sections->line.size = bfd_get_section_size (sectp);
10567 }
10568 else if (section_is_p (sectp->name, &names->loc_dwo))
10569 {
049412e3 10570 dwo_sections->loc.s.section = sectp;
80626a55
DE
10571 dwo_sections->loc.size = bfd_get_section_size (sectp);
10572 }
10573 else if (section_is_p (sectp->name, &names->macinfo_dwo))
10574 {
049412e3 10575 dwo_sections->macinfo.s.section = sectp;
80626a55
DE
10576 dwo_sections->macinfo.size = bfd_get_section_size (sectp);
10577 }
10578 else if (section_is_p (sectp->name, &names->macro_dwo))
10579 {
049412e3 10580 dwo_sections->macro.s.section = sectp;
80626a55
DE
10581 dwo_sections->macro.size = bfd_get_section_size (sectp);
10582 }
10583 else if (section_is_p (sectp->name, &names->str_dwo))
10584 {
049412e3 10585 dwo_sections->str.s.section = sectp;
80626a55
DE
10586 dwo_sections->str.size = bfd_get_section_size (sectp);
10587 }
10588 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10589 {
049412e3 10590 dwo_sections->str_offsets.s.section = sectp;
80626a55
DE
10591 dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
10592 }
10593 else if (section_is_p (sectp->name, &names->types_dwo))
10594 {
10595 struct dwarf2_section_info type_section;
10596
10597 memset (&type_section, 0, sizeof (type_section));
049412e3 10598 type_section.s.section = sectp;
80626a55
DE
10599 type_section.size = bfd_get_section_size (sectp);
10600 VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
10601 &type_section);
10602 }
10603}
10604
ab5088bf 10605/* Initialize the use of the DWO file specified by DWO_NAME and referenced
19c3d4c9 10606 by PER_CU. This is for the non-DWP case.
80626a55 10607 The result is NULL if DWO_NAME can't be found. */
3019eac3
DE
10608
10609static struct dwo_file *
0ac5b59e
DE
10610open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
10611 const char *dwo_name, const char *comp_dir)
3019eac3
DE
10612{
10613 struct objfile *objfile = dwarf2_per_objfile->objfile;
80626a55
DE
10614 struct dwo_file *dwo_file;
10615 bfd *dbfd;
3019eac3
DE
10616 struct cleanup *cleanups;
10617
ab5088bf 10618 dbfd = open_dwo_file (dwo_name, comp_dir);
80626a55
DE
10619 if (dbfd == NULL)
10620 {
b4f54984 10621 if (dwarf_read_debug)
80626a55
DE
10622 fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
10623 return NULL;
10624 }
10625 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
0ac5b59e
DE
10626 dwo_file->dwo_name = dwo_name;
10627 dwo_file->comp_dir = comp_dir;
80626a55 10628 dwo_file->dbfd = dbfd;
3019eac3
DE
10629
10630 cleanups = make_cleanup (free_dwo_file_cleanup, dwo_file);
10631
80626a55 10632 bfd_map_over_sections (dbfd, dwarf2_locate_dwo_sections, &dwo_file->sections);
3019eac3 10633
19c3d4c9 10634 dwo_file->cu = create_dwo_cu (dwo_file);
3019eac3
DE
10635
10636 dwo_file->tus = create_debug_types_hash_table (dwo_file,
10637 dwo_file->sections.types);
10638
10639 discard_cleanups (cleanups);
10640
b4f54984 10641 if (dwarf_read_debug)
80626a55
DE
10642 fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
10643
3019eac3
DE
10644 return dwo_file;
10645}
10646
80626a55 10647/* This function is mapped across the sections and remembers the offset and
73869dc2
DE
10648 size of each of the DWP debugging sections common to version 1 and 2 that
10649 we are interested in. */
3019eac3 10650
80626a55 10651static void
73869dc2
DE
10652dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
10653 void *dwp_file_ptr)
3019eac3 10654{
80626a55
DE
10655 struct dwp_file *dwp_file = dwp_file_ptr;
10656 const struct dwop_section_names *names = &dwop_section_names;
10657 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
3019eac3 10658
80626a55 10659 /* Record the ELF section number for later lookup: this is what the
73869dc2 10660 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
80626a55
DE
10661 gdb_assert (elf_section_nr < dwp_file->num_sections);
10662 dwp_file->elf_sections[elf_section_nr] = sectp;
3019eac3 10663
80626a55
DE
10664 /* Look for specific sections that we need. */
10665 if (section_is_p (sectp->name, &names->str_dwo))
10666 {
049412e3 10667 dwp_file->sections.str.s.section = sectp;
80626a55
DE
10668 dwp_file->sections.str.size = bfd_get_section_size (sectp);
10669 }
10670 else if (section_is_p (sectp->name, &names->cu_index))
10671 {
049412e3 10672 dwp_file->sections.cu_index.s.section = sectp;
80626a55
DE
10673 dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
10674 }
10675 else if (section_is_p (sectp->name, &names->tu_index))
10676 {
049412e3 10677 dwp_file->sections.tu_index.s.section = sectp;
80626a55
DE
10678 dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
10679 }
10680}
3019eac3 10681
73869dc2
DE
10682/* This function is mapped across the sections and remembers the offset and
10683 size of each of the DWP version 2 debugging sections that we are interested
10684 in. This is split into a separate function because we don't know if we
10685 have version 1 or 2 until we parse the cu_index/tu_index sections. */
10686
10687static void
10688dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
10689{
10690 struct dwp_file *dwp_file = dwp_file_ptr;
10691 const struct dwop_section_names *names = &dwop_section_names;
10692 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10693
10694 /* Record the ELF section number for later lookup: this is what the
10695 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
10696 gdb_assert (elf_section_nr < dwp_file->num_sections);
10697 dwp_file->elf_sections[elf_section_nr] = sectp;
10698
10699 /* Look for specific sections that we need. */
10700 if (section_is_p (sectp->name, &names->abbrev_dwo))
10701 {
049412e3 10702 dwp_file->sections.abbrev.s.section = sectp;
73869dc2
DE
10703 dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
10704 }
10705 else if (section_is_p (sectp->name, &names->info_dwo))
10706 {
049412e3 10707 dwp_file->sections.info.s.section = sectp;
73869dc2
DE
10708 dwp_file->sections.info.size = bfd_get_section_size (sectp);
10709 }
10710 else if (section_is_p (sectp->name, &names->line_dwo))
10711 {
049412e3 10712 dwp_file->sections.line.s.section = sectp;
73869dc2
DE
10713 dwp_file->sections.line.size = bfd_get_section_size (sectp);
10714 }
10715 else if (section_is_p (sectp->name, &names->loc_dwo))
10716 {
049412e3 10717 dwp_file->sections.loc.s.section = sectp;
73869dc2
DE
10718 dwp_file->sections.loc.size = bfd_get_section_size (sectp);
10719 }
10720 else if (section_is_p (sectp->name, &names->macinfo_dwo))
10721 {
049412e3 10722 dwp_file->sections.macinfo.s.section = sectp;
73869dc2
DE
10723 dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
10724 }
10725 else if (section_is_p (sectp->name, &names->macro_dwo))
10726 {
049412e3 10727 dwp_file->sections.macro.s.section = sectp;
73869dc2
DE
10728 dwp_file->sections.macro.size = bfd_get_section_size (sectp);
10729 }
10730 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10731 {
049412e3 10732 dwp_file->sections.str_offsets.s.section = sectp;
73869dc2
DE
10733 dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
10734 }
10735 else if (section_is_p (sectp->name, &names->types_dwo))
10736 {
049412e3 10737 dwp_file->sections.types.s.section = sectp;
73869dc2
DE
10738 dwp_file->sections.types.size = bfd_get_section_size (sectp);
10739 }
10740}
10741
80626a55 10742/* Hash function for dwp_file loaded CUs/TUs. */
3019eac3 10743
80626a55
DE
10744static hashval_t
10745hash_dwp_loaded_cutus (const void *item)
10746{
10747 const struct dwo_unit *dwo_unit = item;
3019eac3 10748
80626a55
DE
10749 /* This drops the top 32 bits of the signature, but is ok for a hash. */
10750 return dwo_unit->signature;
3019eac3
DE
10751}
10752
80626a55 10753/* Equality function for dwp_file loaded CUs/TUs. */
3019eac3 10754
80626a55
DE
10755static int
10756eq_dwp_loaded_cutus (const void *a, const void *b)
3019eac3 10757{
80626a55
DE
10758 const struct dwo_unit *dua = a;
10759 const struct dwo_unit *dub = b;
3019eac3 10760
80626a55
DE
10761 return dua->signature == dub->signature;
10762}
3019eac3 10763
80626a55 10764/* Allocate a hash table for dwp_file loaded CUs/TUs. */
3019eac3 10765
80626a55
DE
10766static htab_t
10767allocate_dwp_loaded_cutus_table (struct objfile *objfile)
10768{
10769 return htab_create_alloc_ex (3,
10770 hash_dwp_loaded_cutus,
10771 eq_dwp_loaded_cutus,
10772 NULL,
10773 &objfile->objfile_obstack,
10774 hashtab_obstack_allocate,
10775 dummy_obstack_deallocate);
10776}
3019eac3 10777
ab5088bf
DE
10778/* Try to open DWP file FILE_NAME.
10779 The result is the bfd handle of the file.
10780 If there is a problem finding or opening the file, return NULL.
10781 Upon success, the canonicalized path of the file is stored in the bfd,
10782 same as symfile_bfd_open. */
10783
10784static bfd *
10785open_dwp_file (const char *file_name)
10786{
6ac97d4c
DE
10787 bfd *abfd;
10788
10789 abfd = try_open_dwop_file (file_name, 1 /*is_dwp*/, 1 /*search_cwd*/);
10790 if (abfd != NULL)
10791 return abfd;
10792
10793 /* Work around upstream bug 15652.
10794 http://sourceware.org/bugzilla/show_bug.cgi?id=15652
10795 [Whether that's a "bug" is debatable, but it is getting in our way.]
10796 We have no real idea where the dwp file is, because gdb's realpath-ing
10797 of the executable's path may have discarded the needed info.
10798 [IWBN if the dwp file name was recorded in the executable, akin to
10799 .gnu_debuglink, but that doesn't exist yet.]
10800 Strip the directory from FILE_NAME and search again. */
10801 if (*debug_file_directory != '\0')
10802 {
10803 /* Don't implicitly search the current directory here.
10804 If the user wants to search "." to handle this case,
10805 it must be added to debug-file-directory. */
10806 return try_open_dwop_file (lbasename (file_name), 1 /*is_dwp*/,
10807 0 /*search_cwd*/);
10808 }
10809
10810 return NULL;
ab5088bf
DE
10811}
10812
80626a55
DE
10813/* Initialize the use of the DWP file for the current objfile.
10814 By convention the name of the DWP file is ${objfile}.dwp.
10815 The result is NULL if it can't be found. */
a766d390 10816
80626a55 10817static struct dwp_file *
ab5088bf 10818open_and_init_dwp_file (void)
80626a55
DE
10819{
10820 struct objfile *objfile = dwarf2_per_objfile->objfile;
10821 struct dwp_file *dwp_file;
10822 char *dwp_name;
10823 bfd *dbfd;
10824 struct cleanup *cleanups;
10825
82bf32bc
JK
10826 /* Try to find first .dwp for the binary file before any symbolic links
10827 resolving. */
10828 dwp_name = xstrprintf ("%s.dwp", objfile->original_name);
80626a55
DE
10829 cleanups = make_cleanup (xfree, dwp_name);
10830
ab5088bf 10831 dbfd = open_dwp_file (dwp_name);
82bf32bc
JK
10832 if (dbfd == NULL
10833 && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
10834 {
10835 /* Try to find .dwp for the binary file after gdb_realpath resolving. */
10836 dwp_name = xstrprintf ("%s.dwp", objfile_name (objfile));
10837 make_cleanup (xfree, dwp_name);
10838 dbfd = open_dwp_file (dwp_name);
10839 }
10840
80626a55
DE
10841 if (dbfd == NULL)
10842 {
b4f54984 10843 if (dwarf_read_debug)
80626a55
DE
10844 fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name);
10845 do_cleanups (cleanups);
10846 return NULL;
3019eac3 10847 }
80626a55 10848 dwp_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_file);
93417882 10849 dwp_file->name = bfd_get_filename (dbfd);
80626a55
DE
10850 dwp_file->dbfd = dbfd;
10851 do_cleanups (cleanups);
c906108c 10852
80626a55
DE
10853 /* +1: section 0 is unused */
10854 dwp_file->num_sections = bfd_count_sections (dbfd) + 1;
10855 dwp_file->elf_sections =
10856 OBSTACK_CALLOC (&objfile->objfile_obstack,
10857 dwp_file->num_sections, asection *);
10858
73869dc2 10859 bfd_map_over_sections (dbfd, dwarf2_locate_common_dwp_sections, dwp_file);
80626a55
DE
10860
10861 dwp_file->cus = create_dwp_hash_table (dwp_file, 0);
10862
10863 dwp_file->tus = create_dwp_hash_table (dwp_file, 1);
10864
73869dc2
DE
10865 /* The DWP file version is stored in the hash table. Oh well. */
10866 if (dwp_file->cus->version != dwp_file->tus->version)
10867 {
10868 /* Technically speaking, we should try to limp along, but this is
fbcbc3fd 10869 pretty bizarre. We use pulongest here because that's the established
4d65956b 10870 portability solution (e.g, we cannot use %u for uint32_t). */
fbcbc3fd
DE
10871 error (_("Dwarf Error: DWP file CU version %s doesn't match"
10872 " TU version %s [in DWP file %s]"),
10873 pulongest (dwp_file->cus->version),
10874 pulongest (dwp_file->tus->version), dwp_name);
73869dc2
DE
10875 }
10876 dwp_file->version = dwp_file->cus->version;
10877
10878 if (dwp_file->version == 2)
10879 bfd_map_over_sections (dbfd, dwarf2_locate_v2_dwp_sections, dwp_file);
10880
19ac8c2e
DE
10881 dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
10882 dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
80626a55 10883
b4f54984 10884 if (dwarf_read_debug)
80626a55
DE
10885 {
10886 fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
10887 fprintf_unfiltered (gdb_stdlog,
21aa081e
PA
10888 " %s CUs, %s TUs\n",
10889 pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
10890 pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
80626a55
DE
10891 }
10892
10893 return dwp_file;
3019eac3 10894}
c906108c 10895
ab5088bf
DE
10896/* Wrapper around open_and_init_dwp_file, only open it once. */
10897
10898static struct dwp_file *
10899get_dwp_file (void)
10900{
10901 if (! dwarf2_per_objfile->dwp_checked)
10902 {
10903 dwarf2_per_objfile->dwp_file = open_and_init_dwp_file ();
10904 dwarf2_per_objfile->dwp_checked = 1;
10905 }
10906 return dwarf2_per_objfile->dwp_file;
10907}
10908
80626a55
DE
10909/* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
10910 Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
10911 or in the DWP file for the objfile, referenced by THIS_UNIT.
3019eac3 10912 If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
80626a55
DE
10913 IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
10914
10915 This is called, for example, when wanting to read a variable with a
10916 complex location. Therefore we don't want to do file i/o for every call.
10917 Therefore we don't want to look for a DWO file on every call.
10918 Therefore we first see if we've already seen SIGNATURE in a DWP file,
10919 then we check if we've already seen DWO_NAME, and only THEN do we check
10920 for a DWO file.
10921
1c658ad5 10922 The result is a pointer to the dwo_unit object or NULL if we didn't find it
80626a55 10923 (dwo_id mismatch or couldn't find the DWO/DWP file). */
debd256d 10924
3019eac3 10925static struct dwo_unit *
80626a55
DE
10926lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
10927 const char *dwo_name, const char *comp_dir,
10928 ULONGEST signature, int is_debug_types)
3019eac3
DE
10929{
10930 struct objfile *objfile = dwarf2_per_objfile->objfile;
80626a55
DE
10931 const char *kind = is_debug_types ? "TU" : "CU";
10932 void **dwo_file_slot;
3019eac3 10933 struct dwo_file *dwo_file;
80626a55 10934 struct dwp_file *dwp_file;
cb1df416 10935
6a506a2d
DE
10936 /* First see if there's a DWP file.
10937 If we have a DWP file but didn't find the DWO inside it, don't
10938 look for the original DWO file. It makes gdb behave differently
10939 depending on whether one is debugging in the build tree. */
cf2c3c16 10940
ab5088bf 10941 dwp_file = get_dwp_file ();
80626a55 10942 if (dwp_file != NULL)
cf2c3c16 10943 {
80626a55
DE
10944 const struct dwp_hash_table *dwp_htab =
10945 is_debug_types ? dwp_file->tus : dwp_file->cus;
10946
10947 if (dwp_htab != NULL)
10948 {
10949 struct dwo_unit *dwo_cutu =
57d63ce2
DE
10950 lookup_dwo_unit_in_dwp (dwp_file, comp_dir,
10951 signature, is_debug_types);
80626a55
DE
10952
10953 if (dwo_cutu != NULL)
10954 {
b4f54984 10955 if (dwarf_read_debug)
80626a55
DE
10956 {
10957 fprintf_unfiltered (gdb_stdlog,
10958 "Virtual DWO %s %s found: @%s\n",
10959 kind, hex_string (signature),
10960 host_address_to_string (dwo_cutu));
10961 }
10962 return dwo_cutu;
10963 }
10964 }
10965 }
6a506a2d 10966 else
80626a55 10967 {
6a506a2d 10968 /* No DWP file, look for the DWO file. */
80626a55 10969
6a506a2d
DE
10970 dwo_file_slot = lookup_dwo_file_slot (dwo_name, comp_dir);
10971 if (*dwo_file_slot == NULL)
80626a55 10972 {
6a506a2d
DE
10973 /* Read in the file and build a table of the CUs/TUs it contains. */
10974 *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
19c3d4c9 10975 }
6a506a2d
DE
10976 /* NOTE: This will be NULL if unable to open the file. */
10977 dwo_file = *dwo_file_slot;
3019eac3 10978
6a506a2d 10979 if (dwo_file != NULL)
19c3d4c9 10980 {
6a506a2d
DE
10981 struct dwo_unit *dwo_cutu = NULL;
10982
10983 if (is_debug_types && dwo_file->tus)
10984 {
10985 struct dwo_unit find_dwo_cutu;
10986
10987 memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
10988 find_dwo_cutu.signature = signature;
10989 dwo_cutu = htab_find (dwo_file->tus, &find_dwo_cutu);
10990 }
10991 else if (!is_debug_types && dwo_file->cu)
80626a55 10992 {
6a506a2d
DE
10993 if (signature == dwo_file->cu->signature)
10994 dwo_cutu = dwo_file->cu;
10995 }
10996
10997 if (dwo_cutu != NULL)
10998 {
b4f54984 10999 if (dwarf_read_debug)
6a506a2d
DE
11000 {
11001 fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
11002 kind, dwo_name, hex_string (signature),
11003 host_address_to_string (dwo_cutu));
11004 }
11005 return dwo_cutu;
80626a55
DE
11006 }
11007 }
2e276125 11008 }
9cdd5dbd 11009
80626a55
DE
11010 /* We didn't find it. This could mean a dwo_id mismatch, or
11011 someone deleted the DWO/DWP file, or the search path isn't set up
11012 correctly to find the file. */
11013
b4f54984 11014 if (dwarf_read_debug)
80626a55
DE
11015 {
11016 fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
11017 kind, dwo_name, hex_string (signature));
11018 }
3019eac3 11019
6656a72d
DE
11020 /* This is a warning and not a complaint because it can be caused by
11021 pilot error (e.g., user accidentally deleting the DWO). */
43942612
DE
11022 {
11023 /* Print the name of the DWP file if we looked there, helps the user
11024 better diagnose the problem. */
11025 char *dwp_text = NULL;
11026 struct cleanup *cleanups;
11027
11028 if (dwp_file != NULL)
11029 dwp_text = xstrprintf (" [in DWP file %s]", lbasename (dwp_file->name));
11030 cleanups = make_cleanup (xfree, dwp_text);
11031
11032 warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset 0x%x"
11033 " [in module %s]"),
11034 kind, dwo_name, hex_string (signature),
11035 dwp_text != NULL ? dwp_text : "",
11036 this_unit->is_debug_types ? "TU" : "CU",
11037 this_unit->offset.sect_off, objfile_name (objfile));
11038
11039 do_cleanups (cleanups);
11040 }
3019eac3 11041 return NULL;
5fb290d7
DJ
11042}
11043
80626a55
DE
11044/* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
11045 See lookup_dwo_cutu_unit for details. */
11046
11047static struct dwo_unit *
11048lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
11049 const char *dwo_name, const char *comp_dir,
11050 ULONGEST signature)
11051{
11052 return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
11053}
11054
11055/* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
11056 See lookup_dwo_cutu_unit for details. */
11057
11058static struct dwo_unit *
11059lookup_dwo_type_unit (struct signatured_type *this_tu,
11060 const char *dwo_name, const char *comp_dir)
11061{
11062 return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
11063}
11064
89e63ee4
DE
11065/* Traversal function for queue_and_load_all_dwo_tus. */
11066
11067static int
11068queue_and_load_dwo_tu (void **slot, void *info)
11069{
11070 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
11071 struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
11072 ULONGEST signature = dwo_unit->signature;
11073 struct signatured_type *sig_type =
11074 lookup_dwo_signatured_type (per_cu->cu, signature);
11075
11076 if (sig_type != NULL)
11077 {
11078 struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
11079
11080 /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
11081 a real dependency of PER_CU on SIG_TYPE. That is detected later
11082 while processing PER_CU. */
11083 if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
11084 load_full_type_unit (sig_cu);
11085 VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
11086 }
11087
11088 return 1;
11089}
11090
11091/* Queue all TUs contained in the DWO of PER_CU to be read in.
11092 The DWO may have the only definition of the type, though it may not be
11093 referenced anywhere in PER_CU. Thus we have to load *all* its TUs.
11094 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
11095
11096static void
11097queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
11098{
11099 struct dwo_unit *dwo_unit;
11100 struct dwo_file *dwo_file;
11101
11102 gdb_assert (!per_cu->is_debug_types);
11103 gdb_assert (get_dwp_file () == NULL);
11104 gdb_assert (per_cu->cu != NULL);
11105
11106 dwo_unit = per_cu->cu->dwo_unit;
11107 gdb_assert (dwo_unit != NULL);
11108
11109 dwo_file = dwo_unit->dwo_file;
11110 if (dwo_file->tus != NULL)
11111 htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
11112}
11113
3019eac3
DE
11114/* Free all resources associated with DWO_FILE.
11115 Close the DWO file and munmap the sections.
11116 All memory should be on the objfile obstack. */
348e048f
DE
11117
11118static void
3019eac3 11119free_dwo_file (struct dwo_file *dwo_file, struct objfile *objfile)
348e048f 11120{
3019eac3
DE
11121 int ix;
11122 struct dwarf2_section_info *section;
348e048f 11123
5c6fa7ab 11124 /* Note: dbfd is NULL for virtual DWO files. */
80626a55 11125 gdb_bfd_unref (dwo_file->dbfd);
348e048f 11126
3019eac3
DE
11127 VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
11128}
348e048f 11129
3019eac3 11130/* Wrapper for free_dwo_file for use in cleanups. */
348e048f 11131
3019eac3
DE
11132static void
11133free_dwo_file_cleanup (void *arg)
11134{
11135 struct dwo_file *dwo_file = (struct dwo_file *) arg;
11136 struct objfile *objfile = dwarf2_per_objfile->objfile;
348e048f 11137
3019eac3
DE
11138 free_dwo_file (dwo_file, objfile);
11139}
348e048f 11140
3019eac3 11141/* Traversal function for free_dwo_files. */
2ab95328 11142
3019eac3
DE
11143static int
11144free_dwo_file_from_slot (void **slot, void *info)
11145{
11146 struct dwo_file *dwo_file = (struct dwo_file *) *slot;
11147 struct objfile *objfile = (struct objfile *) info;
348e048f 11148
3019eac3 11149 free_dwo_file (dwo_file, objfile);
348e048f 11150
3019eac3
DE
11151 return 1;
11152}
348e048f 11153
3019eac3 11154/* Free all resources associated with DWO_FILES. */
348e048f 11155
3019eac3
DE
11156static void
11157free_dwo_files (htab_t dwo_files, struct objfile *objfile)
11158{
11159 htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
348e048f 11160}
3019eac3
DE
11161\f
11162/* Read in various DIEs. */
348e048f 11163
d389af10
JK
11164/* qsort helper for inherit_abstract_dies. */
11165
11166static int
11167unsigned_int_compar (const void *ap, const void *bp)
11168{
11169 unsigned int a = *(unsigned int *) ap;
11170 unsigned int b = *(unsigned int *) bp;
11171
11172 return (a > b) - (b > a);
11173}
11174
11175/* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
3e43a32a
MS
11176 Inherit only the children of the DW_AT_abstract_origin DIE not being
11177 already referenced by DW_AT_abstract_origin from the children of the
11178 current DIE. */
d389af10
JK
11179
11180static void
11181inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
11182{
11183 struct die_info *child_die;
11184 unsigned die_children_count;
11185 /* CU offsets which were referenced by children of the current DIE. */
b64f50a1
JK
11186 sect_offset *offsets;
11187 sect_offset *offsets_end, *offsetp;
d389af10
JK
11188 /* Parent of DIE - referenced by DW_AT_abstract_origin. */
11189 struct die_info *origin_die;
11190 /* Iterator of the ORIGIN_DIE children. */
11191 struct die_info *origin_child_die;
11192 struct cleanup *cleanups;
11193 struct attribute *attr;
cd02d79d
PA
11194 struct dwarf2_cu *origin_cu;
11195 struct pending **origin_previous_list_in_scope;
d389af10
JK
11196
11197 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11198 if (!attr)
11199 return;
11200
cd02d79d
PA
11201 /* Note that following die references may follow to a die in a
11202 different cu. */
11203
11204 origin_cu = cu;
11205 origin_die = follow_die_ref (die, attr, &origin_cu);
11206
11207 /* We're inheriting ORIGIN's children into the scope we'd put DIE's
11208 symbols in. */
11209 origin_previous_list_in_scope = origin_cu->list_in_scope;
11210 origin_cu->list_in_scope = cu->list_in_scope;
11211
edb3359d
DJ
11212 if (die->tag != origin_die->tag
11213 && !(die->tag == DW_TAG_inlined_subroutine
11214 && origin_die->tag == DW_TAG_subprogram))
d389af10
JK
11215 complaint (&symfile_complaints,
11216 _("DIE 0x%x and its abstract origin 0x%x have different tags"),
b64f50a1 11217 die->offset.sect_off, origin_die->offset.sect_off);
d389af10
JK
11218
11219 child_die = die->child;
11220 die_children_count = 0;
11221 while (child_die && child_die->tag)
11222 {
11223 child_die = sibling_die (child_die);
11224 die_children_count++;
11225 }
11226 offsets = xmalloc (sizeof (*offsets) * die_children_count);
11227 cleanups = make_cleanup (xfree, offsets);
11228
11229 offsets_end = offsets;
3ea89b92
PMR
11230 for (child_die = die->child;
11231 child_die && child_die->tag;
11232 child_die = sibling_die (child_die))
11233 {
11234 struct die_info *child_origin_die;
11235 struct dwarf2_cu *child_origin_cu;
11236
11237 /* We are trying to process concrete instance entries:
11238 DW_TAG_GNU_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
11239 it's not relevant to our analysis here. i.e. detecting DIEs that are
11240 present in the abstract instance but not referenced in the concrete
11241 one. */
11242 if (child_die->tag == DW_TAG_GNU_call_site)
11243 continue;
11244
c38f313d
DJ
11245 /* For each CHILD_DIE, find the corresponding child of
11246 ORIGIN_DIE. If there is more than one layer of
11247 DW_AT_abstract_origin, follow them all; there shouldn't be,
11248 but GCC versions at least through 4.4 generate this (GCC PR
11249 40573). */
3ea89b92
PMR
11250 child_origin_die = child_die;
11251 child_origin_cu = cu;
c38f313d
DJ
11252 while (1)
11253 {
cd02d79d
PA
11254 attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
11255 child_origin_cu);
c38f313d
DJ
11256 if (attr == NULL)
11257 break;
cd02d79d
PA
11258 child_origin_die = follow_die_ref (child_origin_die, attr,
11259 &child_origin_cu);
c38f313d
DJ
11260 }
11261
d389af10
JK
11262 /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
11263 counterpart may exist. */
c38f313d 11264 if (child_origin_die != child_die)
d389af10 11265 {
edb3359d
DJ
11266 if (child_die->tag != child_origin_die->tag
11267 && !(child_die->tag == DW_TAG_inlined_subroutine
11268 && child_origin_die->tag == DW_TAG_subprogram))
d389af10
JK
11269 complaint (&symfile_complaints,
11270 _("Child DIE 0x%x and its abstract origin 0x%x have "
b64f50a1
JK
11271 "different tags"), child_die->offset.sect_off,
11272 child_origin_die->offset.sect_off);
c38f313d
DJ
11273 if (child_origin_die->parent != origin_die)
11274 complaint (&symfile_complaints,
11275 _("Child DIE 0x%x and its abstract origin 0x%x have "
b64f50a1
JK
11276 "different parents"), child_die->offset.sect_off,
11277 child_origin_die->offset.sect_off);
c38f313d
DJ
11278 else
11279 *offsets_end++ = child_origin_die->offset;
d389af10 11280 }
d389af10
JK
11281 }
11282 qsort (offsets, offsets_end - offsets, sizeof (*offsets),
11283 unsigned_int_compar);
11284 for (offsetp = offsets + 1; offsetp < offsets_end; offsetp++)
b64f50a1 11285 if (offsetp[-1].sect_off == offsetp->sect_off)
3e43a32a
MS
11286 complaint (&symfile_complaints,
11287 _("Multiple children of DIE 0x%x refer "
11288 "to DIE 0x%x as their abstract origin"),
b64f50a1 11289 die->offset.sect_off, offsetp->sect_off);
d389af10
JK
11290
11291 offsetp = offsets;
11292 origin_child_die = origin_die->child;
11293 while (origin_child_die && origin_child_die->tag)
11294 {
11295 /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children? */
b64f50a1
JK
11296 while (offsetp < offsets_end
11297 && offsetp->sect_off < origin_child_die->offset.sect_off)
d389af10 11298 offsetp++;
b64f50a1
JK
11299 if (offsetp >= offsets_end
11300 || offsetp->sect_off > origin_child_die->offset.sect_off)
d389af10 11301 {
adde2bff
DE
11302 /* Found that ORIGIN_CHILD_DIE is really not referenced.
11303 Check whether we're already processing ORIGIN_CHILD_DIE.
11304 This can happen with mutually referenced abstract_origins.
11305 PR 16581. */
11306 if (!origin_child_die->in_process)
11307 process_die (origin_child_die, origin_cu);
d389af10
JK
11308 }
11309 origin_child_die = sibling_die (origin_child_die);
11310 }
cd02d79d 11311 origin_cu->list_in_scope = origin_previous_list_in_scope;
d389af10
JK
11312
11313 do_cleanups (cleanups);
11314}
11315
c906108c 11316static void
e7c27a73 11317read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 11318{
e7c27a73 11319 struct objfile *objfile = cu->objfile;
3e29f34a 11320 struct gdbarch *gdbarch = get_objfile_arch (objfile);
fe978cb0 11321 struct context_stack *newobj;
c906108c
SS
11322 CORE_ADDR lowpc;
11323 CORE_ADDR highpc;
11324 struct die_info *child_die;
edb3359d 11325 struct attribute *attr, *call_line, *call_file;
15d034d0 11326 const char *name;
e142c38c 11327 CORE_ADDR baseaddr;
801e3a5b 11328 struct block *block;
edb3359d 11329 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
34eaf542
TT
11330 VEC (symbolp) *template_args = NULL;
11331 struct template_symbol *templ_func = NULL;
edb3359d
DJ
11332
11333 if (inlined_func)
11334 {
11335 /* If we do not have call site information, we can't show the
11336 caller of this inlined function. That's too confusing, so
11337 only use the scope for local variables. */
11338 call_line = dwarf2_attr (die, DW_AT_call_line, cu);
11339 call_file = dwarf2_attr (die, DW_AT_call_file, cu);
11340 if (call_line == NULL || call_file == NULL)
11341 {
11342 read_lexical_block_scope (die, cu);
11343 return;
11344 }
11345 }
c906108c 11346
e142c38c
DJ
11347 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11348
94af9270 11349 name = dwarf2_name (die, cu);
c906108c 11350
e8d05480
JB
11351 /* Ignore functions with missing or empty names. These are actually
11352 illegal according to the DWARF standard. */
11353 if (name == NULL)
11354 {
11355 complaint (&symfile_complaints,
b64f50a1
JK
11356 _("missing name for subprogram DIE at %d"),
11357 die->offset.sect_off);
e8d05480
JB
11358 return;
11359 }
11360
11361 /* Ignore functions with missing or invalid low and high pc attributes. */
11362 if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
11363 {
ae4d0c03
PM
11364 attr = dwarf2_attr (die, DW_AT_external, cu);
11365 if (!attr || !DW_UNSND (attr))
11366 complaint (&symfile_complaints,
3e43a32a
MS
11367 _("cannot get low and high bounds "
11368 "for subprogram DIE at %d"),
b64f50a1 11369 die->offset.sect_off);
e8d05480
JB
11370 return;
11371 }
c906108c 11372
3e29f34a
MR
11373 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11374 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
c906108c 11375
34eaf542
TT
11376 /* If we have any template arguments, then we must allocate a
11377 different sort of symbol. */
11378 for (child_die = die->child; child_die; child_die = sibling_die (child_die))
11379 {
11380 if (child_die->tag == DW_TAG_template_type_param
11381 || child_die->tag == DW_TAG_template_value_param)
11382 {
e623cf5d 11383 templ_func = allocate_template_symbol (objfile);
34eaf542
TT
11384 templ_func->base.is_cplus_template_function = 1;
11385 break;
11386 }
11387 }
11388
fe978cb0
PA
11389 newobj = push_context (0, lowpc);
11390 newobj->name = new_symbol_full (die, read_type_die (die, cu), cu,
34eaf542 11391 (struct symbol *) templ_func);
4c2df51b 11392
4cecd739
DJ
11393 /* If there is a location expression for DW_AT_frame_base, record
11394 it. */
e142c38c 11395 attr = dwarf2_attr (die, DW_AT_frame_base, cu);
4c2df51b 11396 if (attr)
fe978cb0 11397 dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
4c2df51b 11398
63e43d3a
PMR
11399 /* If there is a location for the static link, record it. */
11400 newobj->static_link = NULL;
11401 attr = dwarf2_attr (die, DW_AT_static_link, cu);
11402 if (attr)
11403 {
11404 newobj->static_link = obstack_alloc (&objfile->objfile_obstack,
11405 sizeof (*newobj->static_link));
11406 attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
11407 }
11408
e142c38c 11409 cu->list_in_scope = &local_symbols;
c906108c 11410
639d11d3 11411 if (die->child != NULL)
c906108c 11412 {
639d11d3 11413 child_die = die->child;
c906108c
SS
11414 while (child_die && child_die->tag)
11415 {
34eaf542
TT
11416 if (child_die->tag == DW_TAG_template_type_param
11417 || child_die->tag == DW_TAG_template_value_param)
11418 {
11419 struct symbol *arg = new_symbol (child_die, NULL, cu);
11420
f1078f66
DJ
11421 if (arg != NULL)
11422 VEC_safe_push (symbolp, template_args, arg);
34eaf542
TT
11423 }
11424 else
11425 process_die (child_die, cu);
c906108c
SS
11426 child_die = sibling_die (child_die);
11427 }
11428 }
11429
d389af10
JK
11430 inherit_abstract_dies (die, cu);
11431
4a811a97
UW
11432 /* If we have a DW_AT_specification, we might need to import using
11433 directives from the context of the specification DIE. See the
11434 comment in determine_prefix. */
11435 if (cu->language == language_cplus
11436 && dwarf2_attr (die, DW_AT_specification, cu))
11437 {
11438 struct dwarf2_cu *spec_cu = cu;
11439 struct die_info *spec_die = die_specification (die, &spec_cu);
11440
11441 while (spec_die)
11442 {
11443 child_die = spec_die->child;
11444 while (child_die && child_die->tag)
11445 {
11446 if (child_die->tag == DW_TAG_imported_module)
11447 process_die (child_die, spec_cu);
11448 child_die = sibling_die (child_die);
11449 }
11450
11451 /* In some cases, GCC generates specification DIEs that
11452 themselves contain DW_AT_specification attributes. */
11453 spec_die = die_specification (spec_die, &spec_cu);
11454 }
11455 }
11456
fe978cb0 11457 newobj = pop_context ();
c906108c 11458 /* Make a block for the local symbols within. */
fe978cb0 11459 block = finish_block (newobj->name, &local_symbols, newobj->old_blocks,
63e43d3a 11460 newobj->static_link, lowpc, highpc);
801e3a5b 11461
df8a16a1 11462 /* For C++, set the block's scope. */
45280282
IB
11463 if ((cu->language == language_cplus
11464 || cu->language == language_fortran
11465 || cu->language == language_d)
4d4ec4e5 11466 && cu->processing_has_namespace_info)
195a3f6c
TT
11467 block_set_scope (block, determine_prefix (die, cu),
11468 &objfile->objfile_obstack);
df8a16a1 11469
801e3a5b
JB
11470 /* If we have address ranges, record them. */
11471 dwarf2_record_block_ranges (die, block, baseaddr, cu);
6e70227d 11472
fe978cb0 11473 gdbarch_make_symbol_special (gdbarch, newobj->name, objfile);
3e29f34a 11474
34eaf542
TT
11475 /* Attach template arguments to function. */
11476 if (! VEC_empty (symbolp, template_args))
11477 {
11478 gdb_assert (templ_func != NULL);
11479
11480 templ_func->n_template_arguments = VEC_length (symbolp, template_args);
11481 templ_func->template_arguments
11482 = obstack_alloc (&objfile->objfile_obstack,
11483 (templ_func->n_template_arguments
11484 * sizeof (struct symbol *)));
11485 memcpy (templ_func->template_arguments,
11486 VEC_address (symbolp, template_args),
11487 (templ_func->n_template_arguments * sizeof (struct symbol *)));
11488 VEC_free (symbolp, template_args);
11489 }
11490
208d8187
JB
11491 /* In C++, we can have functions nested inside functions (e.g., when
11492 a function declares a class that has methods). This means that
11493 when we finish processing a function scope, we may need to go
11494 back to building a containing block's symbol lists. */
fe978cb0 11495 local_symbols = newobj->locals;
22cee43f 11496 local_using_directives = newobj->local_using_directives;
208d8187 11497
921e78cf
JB
11498 /* If we've finished processing a top-level function, subsequent
11499 symbols go in the file symbol list. */
11500 if (outermost_context_p ())
e142c38c 11501 cu->list_in_scope = &file_symbols;
c906108c
SS
11502}
11503
11504/* Process all the DIES contained within a lexical block scope. Start
11505 a new scope, process the dies, and then close the scope. */
11506
11507static void
e7c27a73 11508read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 11509{
e7c27a73 11510 struct objfile *objfile = cu->objfile;
3e29f34a 11511 struct gdbarch *gdbarch = get_objfile_arch (objfile);
fe978cb0 11512 struct context_stack *newobj;
c906108c
SS
11513 CORE_ADDR lowpc, highpc;
11514 struct die_info *child_die;
e142c38c
DJ
11515 CORE_ADDR baseaddr;
11516
11517 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c
SS
11518
11519 /* Ignore blocks with missing or invalid low and high pc attributes. */
af34e669
DJ
11520 /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
11521 as multiple lexical blocks? Handling children in a sane way would
6e70227d 11522 be nasty. Might be easier to properly extend generic blocks to
af34e669 11523 describe ranges. */
d85a05f0 11524 if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
c906108c 11525 return;
3e29f34a
MR
11526 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11527 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
c906108c
SS
11528
11529 push_context (0, lowpc);
639d11d3 11530 if (die->child != NULL)
c906108c 11531 {
639d11d3 11532 child_die = die->child;
c906108c
SS
11533 while (child_die && child_die->tag)
11534 {
e7c27a73 11535 process_die (child_die, cu);
c906108c
SS
11536 child_die = sibling_die (child_die);
11537 }
11538 }
3ea89b92 11539 inherit_abstract_dies (die, cu);
fe978cb0 11540 newobj = pop_context ();
c906108c 11541
22cee43f 11542 if (local_symbols != NULL || local_using_directives != NULL)
c906108c 11543 {
801e3a5b 11544 struct block *block
63e43d3a 11545 = finish_block (0, &local_symbols, newobj->old_blocks, NULL,
fe978cb0 11546 newobj->start_addr, highpc);
801e3a5b
JB
11547
11548 /* Note that recording ranges after traversing children, as we
11549 do here, means that recording a parent's ranges entails
11550 walking across all its children's ranges as they appear in
11551 the address map, which is quadratic behavior.
11552
11553 It would be nicer to record the parent's ranges before
11554 traversing its children, simply overriding whatever you find
11555 there. But since we don't even decide whether to create a
11556 block until after we've traversed its children, that's hard
11557 to do. */
11558 dwarf2_record_block_ranges (die, block, baseaddr, cu);
c906108c 11559 }
fe978cb0 11560 local_symbols = newobj->locals;
22cee43f 11561 local_using_directives = newobj->local_using_directives;
c906108c
SS
11562}
11563
96408a79
SA
11564/* Read in DW_TAG_GNU_call_site and insert it to CU->call_site_htab. */
11565
11566static void
11567read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
11568{
11569 struct objfile *objfile = cu->objfile;
11570 struct gdbarch *gdbarch = get_objfile_arch (objfile);
11571 CORE_ADDR pc, baseaddr;
11572 struct attribute *attr;
11573 struct call_site *call_site, call_site_local;
11574 void **slot;
11575 int nparams;
11576 struct die_info *child_die;
11577
11578 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11579
11580 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11581 if (!attr)
11582 {
11583 complaint (&symfile_complaints,
11584 _("missing DW_AT_low_pc for DW_TAG_GNU_call_site "
11585 "DIE 0x%x [in module %s]"),
4262abfb 11586 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11587 return;
11588 }
31aa7e4e 11589 pc = attr_value_as_address (attr) + baseaddr;
3e29f34a 11590 pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
96408a79
SA
11591
11592 if (cu->call_site_htab == NULL)
11593 cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
11594 NULL, &objfile->objfile_obstack,
11595 hashtab_obstack_allocate, NULL);
11596 call_site_local.pc = pc;
11597 slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
11598 if (*slot != NULL)
11599 {
11600 complaint (&symfile_complaints,
11601 _("Duplicate PC %s for DW_TAG_GNU_call_site "
11602 "DIE 0x%x [in module %s]"),
4262abfb
JK
11603 paddress (gdbarch, pc), die->offset.sect_off,
11604 objfile_name (objfile));
96408a79
SA
11605 return;
11606 }
11607
11608 /* Count parameters at the caller. */
11609
11610 nparams = 0;
11611 for (child_die = die->child; child_die && child_die->tag;
11612 child_die = sibling_die (child_die))
11613 {
11614 if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11615 {
11616 complaint (&symfile_complaints,
11617 _("Tag %d is not DW_TAG_GNU_call_site_parameter in "
11618 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb
JK
11619 child_die->tag, child_die->offset.sect_off,
11620 objfile_name (objfile));
96408a79
SA
11621 continue;
11622 }
11623
11624 nparams++;
11625 }
11626
11627 call_site = obstack_alloc (&objfile->objfile_obstack,
11628 (sizeof (*call_site)
11629 + (sizeof (*call_site->parameter)
11630 * (nparams - 1))));
11631 *slot = call_site;
11632 memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
11633 call_site->pc = pc;
11634
11635 if (dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
11636 {
11637 struct die_info *func_die;
11638
11639 /* Skip also over DW_TAG_inlined_subroutine. */
11640 for (func_die = die->parent;
11641 func_die && func_die->tag != DW_TAG_subprogram
11642 && func_die->tag != DW_TAG_subroutine_type;
11643 func_die = func_die->parent);
11644
11645 /* DW_AT_GNU_all_call_sites is a superset
11646 of DW_AT_GNU_all_tail_call_sites. */
11647 if (func_die
11648 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
11649 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
11650 {
11651 /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
11652 not complete. But keep CALL_SITE for look ups via call_site_htab,
11653 both the initial caller containing the real return address PC and
11654 the final callee containing the current PC of a chain of tail
11655 calls do not need to have the tail call list complete. But any
11656 function candidate for a virtual tail call frame searched via
11657 TYPE_TAIL_CALL_LIST must have the tail call list complete to be
11658 determined unambiguously. */
11659 }
11660 else
11661 {
11662 struct type *func_type = NULL;
11663
11664 if (func_die)
11665 func_type = get_die_type (func_die, cu);
11666 if (func_type != NULL)
11667 {
11668 gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
11669
11670 /* Enlist this call site to the function. */
11671 call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
11672 TYPE_TAIL_CALL_LIST (func_type) = call_site;
11673 }
11674 else
11675 complaint (&symfile_complaints,
11676 _("Cannot find function owning DW_TAG_GNU_call_site "
11677 "DIE 0x%x [in module %s]"),
4262abfb 11678 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11679 }
11680 }
11681
11682 attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
11683 if (attr == NULL)
11684 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11685 SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
11686 if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
11687 /* Keep NULL DWARF_BLOCK. */;
11688 else if (attr_form_is_block (attr))
11689 {
11690 struct dwarf2_locexpr_baton *dlbaton;
11691
11692 dlbaton = obstack_alloc (&objfile->objfile_obstack, sizeof (*dlbaton));
11693 dlbaton->data = DW_BLOCK (attr)->data;
11694 dlbaton->size = DW_BLOCK (attr)->size;
11695 dlbaton->per_cu = cu->per_cu;
11696
11697 SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
11698 }
7771576e 11699 else if (attr_form_is_ref (attr))
96408a79 11700 {
96408a79
SA
11701 struct dwarf2_cu *target_cu = cu;
11702 struct die_info *target_die;
11703
ac9ec31b 11704 target_die = follow_die_ref (die, attr, &target_cu);
96408a79
SA
11705 gdb_assert (target_cu->objfile == objfile);
11706 if (die_is_declaration (target_die, target_cu))
11707 {
7d45c7c3 11708 const char *target_physname;
9112db09
JK
11709
11710 /* Prefer the mangled name; otherwise compute the demangled one. */
7d45c7c3
KB
11711 target_physname = dwarf2_string_attr (target_die,
11712 DW_AT_linkage_name,
11713 target_cu);
11714 if (target_physname == NULL)
11715 target_physname = dwarf2_string_attr (target_die,
11716 DW_AT_MIPS_linkage_name,
11717 target_cu);
11718 if (target_physname == NULL)
9112db09 11719 target_physname = dwarf2_physname (NULL, target_die, target_cu);
96408a79
SA
11720 if (target_physname == NULL)
11721 complaint (&symfile_complaints,
11722 _("DW_AT_GNU_call_site_target target DIE has invalid "
11723 "physname, for referencing DIE 0x%x [in module %s]"),
4262abfb 11724 die->offset.sect_off, objfile_name (objfile));
96408a79 11725 else
7d455152 11726 SET_FIELD_PHYSNAME (call_site->target, target_physname);
96408a79
SA
11727 }
11728 else
11729 {
11730 CORE_ADDR lowpc;
11731
11732 /* DW_AT_entry_pc should be preferred. */
11733 if (!dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL))
11734 complaint (&symfile_complaints,
11735 _("DW_AT_GNU_call_site_target target DIE has invalid "
11736 "low pc, for referencing DIE 0x%x [in module %s]"),
4262abfb 11737 die->offset.sect_off, objfile_name (objfile));
96408a79 11738 else
3e29f34a
MR
11739 {
11740 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11741 SET_FIELD_PHYSADDR (call_site->target, lowpc);
11742 }
96408a79
SA
11743 }
11744 }
11745 else
11746 complaint (&symfile_complaints,
11747 _("DW_TAG_GNU_call_site DW_AT_GNU_call_site_target is neither "
11748 "block nor reference, for DIE 0x%x [in module %s]"),
4262abfb 11749 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11750
11751 call_site->per_cu = cu->per_cu;
11752
11753 for (child_die = die->child;
11754 child_die && child_die->tag;
11755 child_die = sibling_die (child_die))
11756 {
96408a79 11757 struct call_site_parameter *parameter;
1788b2d3 11758 struct attribute *loc, *origin;
96408a79
SA
11759
11760 if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11761 {
11762 /* Already printed the complaint above. */
11763 continue;
11764 }
11765
11766 gdb_assert (call_site->parameter_count < nparams);
11767 parameter = &call_site->parameter[call_site->parameter_count];
11768
1788b2d3
JK
11769 /* DW_AT_location specifies the register number or DW_AT_abstract_origin
11770 specifies DW_TAG_formal_parameter. Value of the data assumed for the
11771 register is contained in DW_AT_GNU_call_site_value. */
96408a79 11772
24c5c679 11773 loc = dwarf2_attr (child_die, DW_AT_location, cu);
1788b2d3 11774 origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
7771576e 11775 if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
1788b2d3
JK
11776 {
11777 sect_offset offset;
11778
11779 parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
11780 offset = dwarf2_get_ref_die_offset (origin);
d76b7dbc
JK
11781 if (!offset_in_cu_p (&cu->header, offset))
11782 {
11783 /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
11784 binding can be done only inside one CU. Such referenced DIE
11785 therefore cannot be even moved to DW_TAG_partial_unit. */
11786 complaint (&symfile_complaints,
11787 _("DW_AT_abstract_origin offset is not in CU for "
11788 "DW_TAG_GNU_call_site child DIE 0x%x "
11789 "[in module %s]"),
4262abfb 11790 child_die->offset.sect_off, objfile_name (objfile));
d76b7dbc
JK
11791 continue;
11792 }
1788b2d3
JK
11793 parameter->u.param_offset.cu_off = (offset.sect_off
11794 - cu->header.offset.sect_off);
11795 }
11796 else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
96408a79
SA
11797 {
11798 complaint (&symfile_complaints,
11799 _("No DW_FORM_block* DW_AT_location for "
11800 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11801 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11802 continue;
11803 }
24c5c679 11804 else
96408a79 11805 {
24c5c679
JK
11806 parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
11807 (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
11808 if (parameter->u.dwarf_reg != -1)
11809 parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
11810 else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
11811 &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
11812 &parameter->u.fb_offset))
11813 parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
11814 else
11815 {
11816 complaint (&symfile_complaints,
11817 _("Only single DW_OP_reg or DW_OP_fbreg is supported "
11818 "for DW_FORM_block* DW_AT_location is supported for "
11819 "DW_TAG_GNU_call_site child DIE 0x%x "
11820 "[in module %s]"),
4262abfb 11821 child_die->offset.sect_off, objfile_name (objfile));
24c5c679
JK
11822 continue;
11823 }
96408a79
SA
11824 }
11825
11826 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
11827 if (!attr_form_is_block (attr))
11828 {
11829 complaint (&symfile_complaints,
11830 _("No DW_FORM_block* DW_AT_GNU_call_site_value for "
11831 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11832 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11833 continue;
11834 }
11835 parameter->value = DW_BLOCK (attr)->data;
11836 parameter->value_size = DW_BLOCK (attr)->size;
11837
11838 /* Parameters are not pre-cleared by memset above. */
11839 parameter->data_value = NULL;
11840 parameter->data_value_size = 0;
11841 call_site->parameter_count++;
11842
11843 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
11844 if (attr)
11845 {
11846 if (!attr_form_is_block (attr))
11847 complaint (&symfile_complaints,
11848 _("No DW_FORM_block* DW_AT_GNU_call_site_data_value for "
11849 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11850 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11851 else
11852 {
11853 parameter->data_value = DW_BLOCK (attr)->data;
11854 parameter->data_value_size = DW_BLOCK (attr)->size;
11855 }
11856 }
11857 }
11858}
11859
43039443 11860/* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
ff013f42
JK
11861 Return 1 if the attributes are present and valid, otherwise, return 0.
11862 If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'. */
43039443
JK
11863
11864static int
11865dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
ff013f42
JK
11866 CORE_ADDR *high_return, struct dwarf2_cu *cu,
11867 struct partial_symtab *ranges_pst)
43039443
JK
11868{
11869 struct objfile *objfile = cu->objfile;
3e29f34a 11870 struct gdbarch *gdbarch = get_objfile_arch (objfile);
43039443
JK
11871 struct comp_unit_head *cu_header = &cu->header;
11872 bfd *obfd = objfile->obfd;
11873 unsigned int addr_size = cu_header->addr_size;
11874 CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
11875 /* Base address selection entry. */
11876 CORE_ADDR base;
11877 int found_base;
11878 unsigned int dummy;
d521ce57 11879 const gdb_byte *buffer;
43039443
JK
11880 CORE_ADDR marker;
11881 int low_set;
11882 CORE_ADDR low = 0;
11883 CORE_ADDR high = 0;
ff013f42 11884 CORE_ADDR baseaddr;
43039443 11885
d00adf39
DE
11886 found_base = cu->base_known;
11887 base = cu->base_address;
43039443 11888
be391dca 11889 dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
dce234bc 11890 if (offset >= dwarf2_per_objfile->ranges.size)
43039443
JK
11891 {
11892 complaint (&symfile_complaints,
11893 _("Offset %d out of bounds for DW_AT_ranges attribute"),
11894 offset);
11895 return 0;
11896 }
dce234bc 11897 buffer = dwarf2_per_objfile->ranges.buffer + offset;
43039443
JK
11898
11899 /* Read in the largest possible address. */
11900 marker = read_address (obfd, buffer, cu, &dummy);
11901 if ((marker & mask) == mask)
11902 {
11903 /* If we found the largest possible address, then
11904 read the base address. */
11905 base = read_address (obfd, buffer + addr_size, cu, &dummy);
11906 buffer += 2 * addr_size;
11907 offset += 2 * addr_size;
11908 found_base = 1;
11909 }
11910
11911 low_set = 0;
11912
e7030f15 11913 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
ff013f42 11914
43039443
JK
11915 while (1)
11916 {
11917 CORE_ADDR range_beginning, range_end;
11918
11919 range_beginning = read_address (obfd, buffer, cu, &dummy);
11920 buffer += addr_size;
11921 range_end = read_address (obfd, buffer, cu, &dummy);
11922 buffer += addr_size;
11923 offset += 2 * addr_size;
11924
11925 /* An end of list marker is a pair of zero addresses. */
11926 if (range_beginning == 0 && range_end == 0)
11927 /* Found the end of list entry. */
11928 break;
11929
11930 /* Each base address selection entry is a pair of 2 values.
11931 The first is the largest possible address, the second is
11932 the base address. Check for a base address here. */
11933 if ((range_beginning & mask) == mask)
11934 {
11935 /* If we found the largest possible address, then
11936 read the base address. */
11937 base = read_address (obfd, buffer + addr_size, cu, &dummy);
11938 found_base = 1;
11939 continue;
11940 }
11941
11942 if (!found_base)
11943 {
11944 /* We have no valid base address for the ranges
11945 data. */
11946 complaint (&symfile_complaints,
11947 _("Invalid .debug_ranges data (no base address)"));
11948 return 0;
11949 }
11950
9277c30c
UW
11951 if (range_beginning > range_end)
11952 {
11953 /* Inverted range entries are invalid. */
11954 complaint (&symfile_complaints,
11955 _("Invalid .debug_ranges data (inverted range)"));
11956 return 0;
11957 }
11958
11959 /* Empty range entries have no effect. */
11960 if (range_beginning == range_end)
11961 continue;
11962
43039443
JK
11963 range_beginning += base;
11964 range_end += base;
11965
01093045
DE
11966 /* A not-uncommon case of bad debug info.
11967 Don't pollute the addrmap with bad data. */
11968 if (range_beginning + baseaddr == 0
11969 && !dwarf2_per_objfile->has_section_at_zero)
11970 {
11971 complaint (&symfile_complaints,
11972 _(".debug_ranges entry has start address of zero"
4262abfb 11973 " [in module %s]"), objfile_name (objfile));
01093045
DE
11974 continue;
11975 }
11976
9277c30c 11977 if (ranges_pst != NULL)
3e29f34a
MR
11978 {
11979 CORE_ADDR lowpc;
11980 CORE_ADDR highpc;
11981
11982 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
11983 range_beginning + baseaddr);
11984 highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
11985 range_end + baseaddr);
11986 addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
11987 ranges_pst);
11988 }
ff013f42 11989
43039443
JK
11990 /* FIXME: This is recording everything as a low-high
11991 segment of consecutive addresses. We should have a
11992 data structure for discontiguous block ranges
11993 instead. */
11994 if (! low_set)
11995 {
11996 low = range_beginning;
11997 high = range_end;
11998 low_set = 1;
11999 }
12000 else
12001 {
12002 if (range_beginning < low)
12003 low = range_beginning;
12004 if (range_end > high)
12005 high = range_end;
12006 }
12007 }
12008
12009 if (! low_set)
12010 /* If the first entry is an end-of-list marker, the range
12011 describes an empty scope, i.e. no instructions. */
12012 return 0;
12013
12014 if (low_return)
12015 *low_return = low;
12016 if (high_return)
12017 *high_return = high;
12018 return 1;
12019}
12020
af34e669
DJ
12021/* Get low and high pc attributes from a die. Return 1 if the attributes
12022 are present and valid, otherwise, return 0. Return -1 if the range is
12023 discontinuous, i.e. derived from DW_AT_ranges information. */
380bca97 12024
c906108c 12025static int
af34e669 12026dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
d85a05f0
DJ
12027 CORE_ADDR *highpc, struct dwarf2_cu *cu,
12028 struct partial_symtab *pst)
c906108c
SS
12029{
12030 struct attribute *attr;
91da1414 12031 struct attribute *attr_high;
af34e669
DJ
12032 CORE_ADDR low = 0;
12033 CORE_ADDR high = 0;
12034 int ret = 0;
c906108c 12035
91da1414
MW
12036 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
12037 if (attr_high)
af34e669 12038 {
e142c38c 12039 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
af34e669 12040 if (attr)
91da1414 12041 {
31aa7e4e
JB
12042 low = attr_value_as_address (attr);
12043 high = attr_value_as_address (attr_high);
12044 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12045 high += low;
91da1414 12046 }
af34e669
DJ
12047 else
12048 /* Found high w/o low attribute. */
12049 return 0;
12050
12051 /* Found consecutive range of addresses. */
12052 ret = 1;
12053 }
c906108c 12054 else
af34e669 12055 {
e142c38c 12056 attr = dwarf2_attr (die, DW_AT_ranges, cu);
af34e669
DJ
12057 if (attr != NULL)
12058 {
ab435259
DE
12059 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12060 We take advantage of the fact that DW_AT_ranges does not appear
12061 in DW_TAG_compile_unit of DWO files. */
12062 int need_ranges_base = die->tag != DW_TAG_compile_unit;
12063 unsigned int ranges_offset = (DW_UNSND (attr)
12064 + (need_ranges_base
12065 ? cu->ranges_base
12066 : 0));
2e3cf129 12067
af34e669 12068 /* Value of the DW_AT_ranges attribute is the offset in the
a604369a 12069 .debug_ranges section. */
2e3cf129 12070 if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
af34e669 12071 return 0;
43039443 12072 /* Found discontinuous range of addresses. */
af34e669
DJ
12073 ret = -1;
12074 }
12075 }
c906108c 12076
9373cf26
JK
12077 /* read_partial_die has also the strict LOW < HIGH requirement. */
12078 if (high <= low)
c906108c
SS
12079 return 0;
12080
12081 /* When using the GNU linker, .gnu.linkonce. sections are used to
12082 eliminate duplicate copies of functions and vtables and such.
12083 The linker will arbitrarily choose one and discard the others.
12084 The AT_*_pc values for such functions refer to local labels in
12085 these sections. If the section from that file was discarded, the
12086 labels are not in the output, so the relocs get a value of 0.
12087 If this is a discarded function, mark the pc bounds as invalid,
12088 so that GDB will ignore it. */
72dca2f5 12089 if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
c906108c
SS
12090 return 0;
12091
12092 *lowpc = low;
96408a79
SA
12093 if (highpc)
12094 *highpc = high;
af34e669 12095 return ret;
c906108c
SS
12096}
12097
b084d499
JB
12098/* Assuming that DIE represents a subprogram DIE or a lexical block, get
12099 its low and high PC addresses. Do nothing if these addresses could not
12100 be determined. Otherwise, set LOWPC to the low address if it is smaller,
12101 and HIGHPC to the high address if greater than HIGHPC. */
12102
12103static void
12104dwarf2_get_subprogram_pc_bounds (struct die_info *die,
12105 CORE_ADDR *lowpc, CORE_ADDR *highpc,
12106 struct dwarf2_cu *cu)
12107{
12108 CORE_ADDR low, high;
12109 struct die_info *child = die->child;
12110
d85a05f0 12111 if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL))
b084d499
JB
12112 {
12113 *lowpc = min (*lowpc, low);
12114 *highpc = max (*highpc, high);
12115 }
12116
12117 /* If the language does not allow nested subprograms (either inside
12118 subprograms or lexical blocks), we're done. */
12119 if (cu->language != language_ada)
12120 return;
6e70227d 12121
b084d499
JB
12122 /* Check all the children of the given DIE. If it contains nested
12123 subprograms, then check their pc bounds. Likewise, we need to
12124 check lexical blocks as well, as they may also contain subprogram
12125 definitions. */
12126 while (child && child->tag)
12127 {
12128 if (child->tag == DW_TAG_subprogram
12129 || child->tag == DW_TAG_lexical_block)
12130 dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
12131 child = sibling_die (child);
12132 }
12133}
12134
fae299cd
DC
12135/* Get the low and high pc's represented by the scope DIE, and store
12136 them in *LOWPC and *HIGHPC. If the correct values can't be
12137 determined, set *LOWPC to -1 and *HIGHPC to 0. */
12138
12139static void
12140get_scope_pc_bounds (struct die_info *die,
12141 CORE_ADDR *lowpc, CORE_ADDR *highpc,
12142 struct dwarf2_cu *cu)
12143{
12144 CORE_ADDR best_low = (CORE_ADDR) -1;
12145 CORE_ADDR best_high = (CORE_ADDR) 0;
12146 CORE_ADDR current_low, current_high;
12147
d85a05f0 12148 if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL))
fae299cd
DC
12149 {
12150 best_low = current_low;
12151 best_high = current_high;
12152 }
12153 else
12154 {
12155 struct die_info *child = die->child;
12156
12157 while (child && child->tag)
12158 {
12159 switch (child->tag) {
12160 case DW_TAG_subprogram:
b084d499 12161 dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
fae299cd
DC
12162 break;
12163 case DW_TAG_namespace:
f55ee35c 12164 case DW_TAG_module:
fae299cd
DC
12165 /* FIXME: carlton/2004-01-16: Should we do this for
12166 DW_TAG_class_type/DW_TAG_structure_type, too? I think
12167 that current GCC's always emit the DIEs corresponding
12168 to definitions of methods of classes as children of a
12169 DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
12170 the DIEs giving the declarations, which could be
12171 anywhere). But I don't see any reason why the
12172 standards says that they have to be there. */
12173 get_scope_pc_bounds (child, &current_low, &current_high, cu);
12174
12175 if (current_low != ((CORE_ADDR) -1))
12176 {
12177 best_low = min (best_low, current_low);
12178 best_high = max (best_high, current_high);
12179 }
12180 break;
12181 default:
0963b4bd 12182 /* Ignore. */
fae299cd
DC
12183 break;
12184 }
12185
12186 child = sibling_die (child);
12187 }
12188 }
12189
12190 *lowpc = best_low;
12191 *highpc = best_high;
12192}
12193
801e3a5b
JB
12194/* Record the address ranges for BLOCK, offset by BASEADDR, as given
12195 in DIE. */
380bca97 12196
801e3a5b
JB
12197static void
12198dwarf2_record_block_ranges (struct die_info *die, struct block *block,
12199 CORE_ADDR baseaddr, struct dwarf2_cu *cu)
12200{
bb5ed363 12201 struct objfile *objfile = cu->objfile;
3e29f34a 12202 struct gdbarch *gdbarch = get_objfile_arch (objfile);
801e3a5b 12203 struct attribute *attr;
91da1414 12204 struct attribute *attr_high;
801e3a5b 12205
91da1414
MW
12206 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
12207 if (attr_high)
801e3a5b 12208 {
801e3a5b
JB
12209 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
12210 if (attr)
12211 {
31aa7e4e
JB
12212 CORE_ADDR low = attr_value_as_address (attr);
12213 CORE_ADDR high = attr_value_as_address (attr_high);
12214
12215 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12216 high += low;
9a619af0 12217
3e29f34a
MR
12218 low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
12219 high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
12220 record_block_range (block, low, high - 1);
801e3a5b
JB
12221 }
12222 }
12223
12224 attr = dwarf2_attr (die, DW_AT_ranges, cu);
12225 if (attr)
12226 {
bb5ed363 12227 bfd *obfd = objfile->obfd;
ab435259
DE
12228 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12229 We take advantage of the fact that DW_AT_ranges does not appear
12230 in DW_TAG_compile_unit of DWO files. */
12231 int need_ranges_base = die->tag != DW_TAG_compile_unit;
801e3a5b
JB
12232
12233 /* The value of the DW_AT_ranges attribute is the offset of the
12234 address range list in the .debug_ranges section. */
ab435259
DE
12235 unsigned long offset = (DW_UNSND (attr)
12236 + (need_ranges_base ? cu->ranges_base : 0));
d62bfeaf 12237 const gdb_byte *buffer;
801e3a5b
JB
12238
12239 /* For some target architectures, but not others, the
12240 read_address function sign-extends the addresses it returns.
12241 To recognize base address selection entries, we need a
12242 mask. */
12243 unsigned int addr_size = cu->header.addr_size;
12244 CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
12245
12246 /* The base address, to which the next pair is relative. Note
12247 that this 'base' is a DWARF concept: most entries in a range
12248 list are relative, to reduce the number of relocs against the
12249 debugging information. This is separate from this function's
12250 'baseaddr' argument, which GDB uses to relocate debugging
12251 information from a shared library based on the address at
12252 which the library was loaded. */
d00adf39
DE
12253 CORE_ADDR base = cu->base_address;
12254 int base_known = cu->base_known;
801e3a5b 12255
d62bfeaf 12256 dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
dce234bc 12257 if (offset >= dwarf2_per_objfile->ranges.size)
801e3a5b
JB
12258 {
12259 complaint (&symfile_complaints,
12260 _("Offset %lu out of bounds for DW_AT_ranges attribute"),
12261 offset);
12262 return;
12263 }
d62bfeaf 12264 buffer = dwarf2_per_objfile->ranges.buffer + offset;
801e3a5b
JB
12265
12266 for (;;)
12267 {
12268 unsigned int bytes_read;
12269 CORE_ADDR start, end;
12270
12271 start = read_address (obfd, buffer, cu, &bytes_read);
12272 buffer += bytes_read;
12273 end = read_address (obfd, buffer, cu, &bytes_read);
12274 buffer += bytes_read;
12275
12276 /* Did we find the end of the range list? */
12277 if (start == 0 && end == 0)
12278 break;
12279
12280 /* Did we find a base address selection entry? */
12281 else if ((start & base_select_mask) == base_select_mask)
12282 {
12283 base = end;
12284 base_known = 1;
12285 }
12286
12287 /* We found an ordinary address range. */
12288 else
12289 {
12290 if (!base_known)
12291 {
12292 complaint (&symfile_complaints,
3e43a32a
MS
12293 _("Invalid .debug_ranges data "
12294 "(no base address)"));
801e3a5b
JB
12295 return;
12296 }
12297
9277c30c
UW
12298 if (start > end)
12299 {
12300 /* Inverted range entries are invalid. */
12301 complaint (&symfile_complaints,
12302 _("Invalid .debug_ranges data "
12303 "(inverted range)"));
12304 return;
12305 }
12306
12307 /* Empty range entries have no effect. */
12308 if (start == end)
12309 continue;
12310
01093045
DE
12311 start += base + baseaddr;
12312 end += base + baseaddr;
12313
12314 /* A not-uncommon case of bad debug info.
12315 Don't pollute the addrmap with bad data. */
12316 if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
12317 {
12318 complaint (&symfile_complaints,
12319 _(".debug_ranges entry has start address of zero"
4262abfb 12320 " [in module %s]"), objfile_name (objfile));
01093045
DE
12321 continue;
12322 }
12323
3e29f34a
MR
12324 start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
12325 end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
01093045 12326 record_block_range (block, start, end - 1);
801e3a5b
JB
12327 }
12328 }
12329 }
12330}
12331
685b1105
JK
12332/* Check whether the producer field indicates either of GCC < 4.6, or the
12333 Intel C/C++ compiler, and cache the result in CU. */
60d5a603 12334
685b1105
JK
12335static void
12336check_producer (struct dwarf2_cu *cu)
60d5a603
JK
12337{
12338 const char *cs;
38360086 12339 int major, minor;
60d5a603
JK
12340
12341 if (cu->producer == NULL)
12342 {
12343 /* For unknown compilers expect their behavior is DWARF version
12344 compliant.
12345
12346 GCC started to support .debug_types sections by -gdwarf-4 since
12347 gcc-4.5.x. As the .debug_types sections are missing DW_AT_producer
12348 for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
12349 combination. gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
12350 interpreted incorrectly by GDB now - GCC PR debug/48229. */
60d5a603 12351 }
b1ffba5a 12352 else if (producer_is_gcc (cu->producer, &major, &minor))
60d5a603 12353 {
38360086
MW
12354 cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
12355 cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
685b1105 12356 }
61012eef 12357 else if (startswith (cu->producer, "Intel(R) C"))
685b1105
JK
12358 cu->producer_is_icc = 1;
12359 else
12360 {
12361 /* For other non-GCC compilers, expect their behavior is DWARF version
12362 compliant. */
60d5a603
JK
12363 }
12364
ba919b58 12365 cu->checked_producer = 1;
685b1105 12366}
ba919b58 12367
685b1105
JK
12368/* Check for GCC PR debug/45124 fix which is not present in any G++ version up
12369 to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
12370 during 4.6.0 experimental. */
12371
12372static int
12373producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
12374{
12375 if (!cu->checked_producer)
12376 check_producer (cu);
12377
12378 return cu->producer_is_gxx_lt_4_6;
60d5a603
JK
12379}
12380
12381/* Return the default accessibility type if it is not overriden by
12382 DW_AT_accessibility. */
12383
12384static enum dwarf_access_attribute
12385dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
12386{
12387 if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
12388 {
12389 /* The default DWARF 2 accessibility for members is public, the default
12390 accessibility for inheritance is private. */
12391
12392 if (die->tag != DW_TAG_inheritance)
12393 return DW_ACCESS_public;
12394 else
12395 return DW_ACCESS_private;
12396 }
12397 else
12398 {
12399 /* DWARF 3+ defines the default accessibility a different way. The same
12400 rules apply now for DW_TAG_inheritance as for the members and it only
12401 depends on the container kind. */
12402
12403 if (die->parent->tag == DW_TAG_class_type)
12404 return DW_ACCESS_private;
12405 else
12406 return DW_ACCESS_public;
12407 }
12408}
12409
74ac6d43
TT
12410/* Look for DW_AT_data_member_location. Set *OFFSET to the byte
12411 offset. If the attribute was not found return 0, otherwise return
12412 1. If it was found but could not properly be handled, set *OFFSET
12413 to 0. */
12414
12415static int
12416handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
12417 LONGEST *offset)
12418{
12419 struct attribute *attr;
12420
12421 attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
12422 if (attr != NULL)
12423 {
12424 *offset = 0;
12425
12426 /* Note that we do not check for a section offset first here.
12427 This is because DW_AT_data_member_location is new in DWARF 4,
12428 so if we see it, we can assume that a constant form is really
12429 a constant and not a section offset. */
12430 if (attr_form_is_constant (attr))
12431 *offset = dwarf2_get_attr_constant_value (attr, 0);
12432 else if (attr_form_is_section_offset (attr))
12433 dwarf2_complex_location_expr_complaint ();
12434 else if (attr_form_is_block (attr))
12435 *offset = decode_locdesc (DW_BLOCK (attr), cu);
12436 else
12437 dwarf2_complex_location_expr_complaint ();
12438
12439 return 1;
12440 }
12441
12442 return 0;
12443}
12444
c906108c
SS
12445/* Add an aggregate field to the field list. */
12446
12447static void
107d2387 12448dwarf2_add_field (struct field_info *fip, struct die_info *die,
e7c27a73 12449 struct dwarf2_cu *cu)
6e70227d 12450{
e7c27a73 12451 struct objfile *objfile = cu->objfile;
5e2b427d 12452 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
12453 struct nextfield *new_field;
12454 struct attribute *attr;
12455 struct field *fp;
15d034d0 12456 const char *fieldname = "";
c906108c
SS
12457
12458 /* Allocate a new field list entry and link it in. */
12459 new_field = (struct nextfield *) xmalloc (sizeof (struct nextfield));
b8c9b27d 12460 make_cleanup (xfree, new_field);
c906108c 12461 memset (new_field, 0, sizeof (struct nextfield));
7d0ccb61
DJ
12462
12463 if (die->tag == DW_TAG_inheritance)
12464 {
12465 new_field->next = fip->baseclasses;
12466 fip->baseclasses = new_field;
12467 }
12468 else
12469 {
12470 new_field->next = fip->fields;
12471 fip->fields = new_field;
12472 }
c906108c
SS
12473 fip->nfields++;
12474
e142c38c 12475 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c
SS
12476 if (attr)
12477 new_field->accessibility = DW_UNSND (attr);
60d5a603
JK
12478 else
12479 new_field->accessibility = dwarf2_default_access_attribute (die, cu);
c906108c
SS
12480 if (new_field->accessibility != DW_ACCESS_public)
12481 fip->non_public_fields = 1;
60d5a603 12482
e142c38c 12483 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
c906108c
SS
12484 if (attr)
12485 new_field->virtuality = DW_UNSND (attr);
60d5a603
JK
12486 else
12487 new_field->virtuality = DW_VIRTUALITY_none;
c906108c
SS
12488
12489 fp = &new_field->field;
a9a9bd0f 12490
e142c38c 12491 if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
c906108c 12492 {
74ac6d43
TT
12493 LONGEST offset;
12494
a9a9bd0f 12495 /* Data member other than a C++ static data member. */
6e70227d 12496
c906108c 12497 /* Get type of field. */
e7c27a73 12498 fp->type = die_type (die, cu);
c906108c 12499
d6a843b5 12500 SET_FIELD_BITPOS (*fp, 0);
01ad7f36 12501
c906108c 12502 /* Get bit size of field (zero if none). */
e142c38c 12503 attr = dwarf2_attr (die, DW_AT_bit_size, cu);
c906108c
SS
12504 if (attr)
12505 {
12506 FIELD_BITSIZE (*fp) = DW_UNSND (attr);
12507 }
12508 else
12509 {
12510 FIELD_BITSIZE (*fp) = 0;
12511 }
12512
12513 /* Get bit offset of field. */
74ac6d43
TT
12514 if (handle_data_member_location (die, cu, &offset))
12515 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
e142c38c 12516 attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
c906108c
SS
12517 if (attr)
12518 {
5e2b427d 12519 if (gdbarch_bits_big_endian (gdbarch))
c906108c
SS
12520 {
12521 /* For big endian bits, the DW_AT_bit_offset gives the
c5aa993b
JM
12522 additional bit offset from the MSB of the containing
12523 anonymous object to the MSB of the field. We don't
12524 have to do anything special since we don't need to
12525 know the size of the anonymous object. */
f41f5e61 12526 SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
c906108c
SS
12527 }
12528 else
12529 {
12530 /* For little endian bits, compute the bit offset to the
c5aa993b
JM
12531 MSB of the anonymous object, subtract off the number of
12532 bits from the MSB of the field to the MSB of the
12533 object, and then subtract off the number of bits of
12534 the field itself. The result is the bit offset of
12535 the LSB of the field. */
c906108c
SS
12536 int anonymous_size;
12537 int bit_offset = DW_UNSND (attr);
12538
e142c38c 12539 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
12540 if (attr)
12541 {
12542 /* The size of the anonymous object containing
12543 the bit field is explicit, so use the
12544 indicated size (in bytes). */
12545 anonymous_size = DW_UNSND (attr);
12546 }
12547 else
12548 {
12549 /* The size of the anonymous object containing
12550 the bit field must be inferred from the type
12551 attribute of the data member containing the
12552 bit field. */
12553 anonymous_size = TYPE_LENGTH (fp->type);
12554 }
f41f5e61
PA
12555 SET_FIELD_BITPOS (*fp,
12556 (FIELD_BITPOS (*fp)
12557 + anonymous_size * bits_per_byte
12558 - bit_offset - FIELD_BITSIZE (*fp)));
c906108c
SS
12559 }
12560 }
12561
12562 /* Get name of field. */
39cbfefa
DJ
12563 fieldname = dwarf2_name (die, cu);
12564 if (fieldname == NULL)
12565 fieldname = "";
d8151005
DJ
12566
12567 /* The name is already allocated along with this objfile, so we don't
12568 need to duplicate it for the type. */
12569 fp->name = fieldname;
c906108c
SS
12570
12571 /* Change accessibility for artificial fields (e.g. virtual table
c5aa993b 12572 pointer or virtual base class pointer) to private. */
e142c38c 12573 if (dwarf2_attr (die, DW_AT_artificial, cu))
c906108c 12574 {
d48cc9dd 12575 FIELD_ARTIFICIAL (*fp) = 1;
c906108c
SS
12576 new_field->accessibility = DW_ACCESS_private;
12577 fip->non_public_fields = 1;
12578 }
12579 }
a9a9bd0f 12580 else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
c906108c 12581 {
a9a9bd0f
DC
12582 /* C++ static member. */
12583
12584 /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
12585 is a declaration, but all versions of G++ as of this writing
12586 (so through at least 3.2.1) incorrectly generate
12587 DW_TAG_variable tags. */
6e70227d 12588
ff355380 12589 const char *physname;
c906108c 12590
a9a9bd0f 12591 /* Get name of field. */
39cbfefa
DJ
12592 fieldname = dwarf2_name (die, cu);
12593 if (fieldname == NULL)
c906108c
SS
12594 return;
12595
254e6b9e 12596 attr = dwarf2_attr (die, DW_AT_const_value, cu);
3863f96c
DE
12597 if (attr
12598 /* Only create a symbol if this is an external value.
12599 new_symbol checks this and puts the value in the global symbol
12600 table, which we want. If it is not external, new_symbol
12601 will try to put the value in cu->list_in_scope which is wrong. */
12602 && dwarf2_flag_true_p (die, DW_AT_external, cu))
254e6b9e
DE
12603 {
12604 /* A static const member, not much different than an enum as far as
12605 we're concerned, except that we can support more types. */
12606 new_symbol (die, NULL, cu);
12607 }
12608
2df3850c 12609 /* Get physical name. */
ff355380 12610 physname = dwarf2_physname (fieldname, die, cu);
c906108c 12611
d8151005
DJ
12612 /* The name is already allocated along with this objfile, so we don't
12613 need to duplicate it for the type. */
12614 SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
e7c27a73 12615 FIELD_TYPE (*fp) = die_type (die, cu);
d8151005 12616 FIELD_NAME (*fp) = fieldname;
c906108c
SS
12617 }
12618 else if (die->tag == DW_TAG_inheritance)
12619 {
74ac6d43 12620 LONGEST offset;
d4b96c9a 12621
74ac6d43
TT
12622 /* C++ base class field. */
12623 if (handle_data_member_location (die, cu, &offset))
12624 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
c906108c 12625 FIELD_BITSIZE (*fp) = 0;
e7c27a73 12626 FIELD_TYPE (*fp) = die_type (die, cu);
c906108c
SS
12627 FIELD_NAME (*fp) = type_name_no_tag (fp->type);
12628 fip->nbaseclasses++;
12629 }
12630}
12631
98751a41
JK
12632/* Add a typedef defined in the scope of the FIP's class. */
12633
12634static void
12635dwarf2_add_typedef (struct field_info *fip, struct die_info *die,
12636 struct dwarf2_cu *cu)
6e70227d 12637{
98751a41 12638 struct objfile *objfile = cu->objfile;
98751a41
JK
12639 struct typedef_field_list *new_field;
12640 struct attribute *attr;
12641 struct typedef_field *fp;
12642 char *fieldname = "";
12643
12644 /* Allocate a new field list entry and link it in. */
12645 new_field = xzalloc (sizeof (*new_field));
12646 make_cleanup (xfree, new_field);
12647
12648 gdb_assert (die->tag == DW_TAG_typedef);
12649
12650 fp = &new_field->field;
12651
12652 /* Get name of field. */
12653 fp->name = dwarf2_name (die, cu);
12654 if (fp->name == NULL)
12655 return;
12656
12657 fp->type = read_type_die (die, cu);
12658
12659 new_field->next = fip->typedef_field_list;
12660 fip->typedef_field_list = new_field;
12661 fip->typedef_field_list_count++;
12662}
12663
c906108c
SS
12664/* Create the vector of fields, and attach it to the type. */
12665
12666static void
fba45db2 12667dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 12668 struct dwarf2_cu *cu)
c906108c
SS
12669{
12670 int nfields = fip->nfields;
12671
12672 /* Record the field count, allocate space for the array of fields,
12673 and create blank accessibility bitfields if necessary. */
12674 TYPE_NFIELDS (type) = nfields;
12675 TYPE_FIELDS (type) = (struct field *)
12676 TYPE_ALLOC (type, sizeof (struct field) * nfields);
12677 memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
12678
b4ba55a1 12679 if (fip->non_public_fields && cu->language != language_ada)
c906108c
SS
12680 {
12681 ALLOCATE_CPLUS_STRUCT_TYPE (type);
12682
12683 TYPE_FIELD_PRIVATE_BITS (type) =
12684 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12685 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
12686
12687 TYPE_FIELD_PROTECTED_BITS (type) =
12688 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12689 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
12690
774b6a14
TT
12691 TYPE_FIELD_IGNORE_BITS (type) =
12692 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12693 B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
c906108c
SS
12694 }
12695
12696 /* If the type has baseclasses, allocate and clear a bit vector for
12697 TYPE_FIELD_VIRTUAL_BITS. */
b4ba55a1 12698 if (fip->nbaseclasses && cu->language != language_ada)
c906108c
SS
12699 {
12700 int num_bytes = B_BYTES (fip->nbaseclasses);
fe1b8b76 12701 unsigned char *pointer;
c906108c
SS
12702
12703 ALLOCATE_CPLUS_STRUCT_TYPE (type);
fe1b8b76
JB
12704 pointer = TYPE_ALLOC (type, num_bytes);
12705 TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
c906108c
SS
12706 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
12707 TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
12708 }
12709
3e43a32a
MS
12710 /* Copy the saved-up fields into the field vector. Start from the head of
12711 the list, adding to the tail of the field array, so that they end up in
12712 the same order in the array in which they were added to the list. */
c906108c
SS
12713 while (nfields-- > 0)
12714 {
7d0ccb61
DJ
12715 struct nextfield *fieldp;
12716
12717 if (fip->fields)
12718 {
12719 fieldp = fip->fields;
12720 fip->fields = fieldp->next;
12721 }
12722 else
12723 {
12724 fieldp = fip->baseclasses;
12725 fip->baseclasses = fieldp->next;
12726 }
12727
12728 TYPE_FIELD (type, nfields) = fieldp->field;
12729 switch (fieldp->accessibility)
c906108c 12730 {
c5aa993b 12731 case DW_ACCESS_private:
b4ba55a1
JB
12732 if (cu->language != language_ada)
12733 SET_TYPE_FIELD_PRIVATE (type, nfields);
c5aa993b 12734 break;
c906108c 12735
c5aa993b 12736 case DW_ACCESS_protected:
b4ba55a1
JB
12737 if (cu->language != language_ada)
12738 SET_TYPE_FIELD_PROTECTED (type, nfields);
c5aa993b 12739 break;
c906108c 12740
c5aa993b
JM
12741 case DW_ACCESS_public:
12742 break;
c906108c 12743
c5aa993b
JM
12744 default:
12745 /* Unknown accessibility. Complain and treat it as public. */
12746 {
e2e0b3e5 12747 complaint (&symfile_complaints, _("unsupported accessibility %d"),
7d0ccb61 12748 fieldp->accessibility);
c5aa993b
JM
12749 }
12750 break;
c906108c
SS
12751 }
12752 if (nfields < fip->nbaseclasses)
12753 {
7d0ccb61 12754 switch (fieldp->virtuality)
c906108c 12755 {
c5aa993b
JM
12756 case DW_VIRTUALITY_virtual:
12757 case DW_VIRTUALITY_pure_virtual:
b4ba55a1 12758 if (cu->language == language_ada)
a73c6dcd 12759 error (_("unexpected virtuality in component of Ada type"));
c5aa993b
JM
12760 SET_TYPE_FIELD_VIRTUAL (type, nfields);
12761 break;
c906108c
SS
12762 }
12763 }
c906108c
SS
12764 }
12765}
12766
7d27a96d
TT
12767/* Return true if this member function is a constructor, false
12768 otherwise. */
12769
12770static int
12771dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
12772{
12773 const char *fieldname;
fe978cb0 12774 const char *type_name;
7d27a96d
TT
12775 int len;
12776
12777 if (die->parent == NULL)
12778 return 0;
12779
12780 if (die->parent->tag != DW_TAG_structure_type
12781 && die->parent->tag != DW_TAG_union_type
12782 && die->parent->tag != DW_TAG_class_type)
12783 return 0;
12784
12785 fieldname = dwarf2_name (die, cu);
fe978cb0
PA
12786 type_name = dwarf2_name (die->parent, cu);
12787 if (fieldname == NULL || type_name == NULL)
7d27a96d
TT
12788 return 0;
12789
12790 len = strlen (fieldname);
fe978cb0
PA
12791 return (strncmp (fieldname, type_name, len) == 0
12792 && (type_name[len] == '\0' || type_name[len] == '<'));
7d27a96d
TT
12793}
12794
c906108c
SS
12795/* Add a member function to the proper fieldlist. */
12796
12797static void
107d2387 12798dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
e7c27a73 12799 struct type *type, struct dwarf2_cu *cu)
c906108c 12800{
e7c27a73 12801 struct objfile *objfile = cu->objfile;
c906108c
SS
12802 struct attribute *attr;
12803 struct fnfieldlist *flp;
12804 int i;
12805 struct fn_field *fnp;
15d034d0 12806 const char *fieldname;
c906108c 12807 struct nextfnfield *new_fnfield;
f792889a 12808 struct type *this_type;
60d5a603 12809 enum dwarf_access_attribute accessibility;
c906108c 12810
b4ba55a1 12811 if (cu->language == language_ada)
a73c6dcd 12812 error (_("unexpected member function in Ada type"));
b4ba55a1 12813
2df3850c 12814 /* Get name of member function. */
39cbfefa
DJ
12815 fieldname = dwarf2_name (die, cu);
12816 if (fieldname == NULL)
2df3850c 12817 return;
c906108c 12818
c906108c
SS
12819 /* Look up member function name in fieldlist. */
12820 for (i = 0; i < fip->nfnfields; i++)
12821 {
27bfe10e 12822 if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
c906108c
SS
12823 break;
12824 }
12825
12826 /* Create new list element if necessary. */
12827 if (i < fip->nfnfields)
12828 flp = &fip->fnfieldlists[i];
12829 else
12830 {
12831 if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
12832 {
12833 fip->fnfieldlists = (struct fnfieldlist *)
12834 xrealloc (fip->fnfieldlists,
12835 (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
c5aa993b 12836 * sizeof (struct fnfieldlist));
c906108c 12837 if (fip->nfnfields == 0)
c13c43fd 12838 make_cleanup (free_current_contents, &fip->fnfieldlists);
c906108c
SS
12839 }
12840 flp = &fip->fnfieldlists[fip->nfnfields];
12841 flp->name = fieldname;
12842 flp->length = 0;
12843 flp->head = NULL;
3da10d80 12844 i = fip->nfnfields++;
c906108c
SS
12845 }
12846
12847 /* Create a new member function field and chain it to the field list
0963b4bd 12848 entry. */
c906108c 12849 new_fnfield = (struct nextfnfield *) xmalloc (sizeof (struct nextfnfield));
b8c9b27d 12850 make_cleanup (xfree, new_fnfield);
c906108c
SS
12851 memset (new_fnfield, 0, sizeof (struct nextfnfield));
12852 new_fnfield->next = flp->head;
12853 flp->head = new_fnfield;
12854 flp->length++;
12855
12856 /* Fill in the member function field info. */
12857 fnp = &new_fnfield->fnfield;
3da10d80
KS
12858
12859 /* Delay processing of the physname until later. */
12860 if (cu->language == language_cplus || cu->language == language_java)
12861 {
12862 add_to_method_list (type, i, flp->length - 1, fieldname,
12863 die, cu);
12864 }
12865 else
12866 {
1d06ead6 12867 const char *physname = dwarf2_physname (fieldname, die, cu);
3da10d80
KS
12868 fnp->physname = physname ? physname : "";
12869 }
12870
c906108c 12871 fnp->type = alloc_type (objfile);
f792889a
DJ
12872 this_type = read_type_die (die, cu);
12873 if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
c906108c 12874 {
f792889a 12875 int nparams = TYPE_NFIELDS (this_type);
c906108c 12876
f792889a 12877 /* TYPE is the domain of this method, and THIS_TYPE is the type
e26fb1d7
DC
12878 of the method itself (TYPE_CODE_METHOD). */
12879 smash_to_method_type (fnp->type, type,
f792889a
DJ
12880 TYPE_TARGET_TYPE (this_type),
12881 TYPE_FIELDS (this_type),
12882 TYPE_NFIELDS (this_type),
12883 TYPE_VARARGS (this_type));
c906108c
SS
12884
12885 /* Handle static member functions.
c5aa993b 12886 Dwarf2 has no clean way to discern C++ static and non-static
0963b4bd
MS
12887 member functions. G++ helps GDB by marking the first
12888 parameter for non-static member functions (which is the this
12889 pointer) as artificial. We obtain this information from
12890 read_subroutine_type via TYPE_FIELD_ARTIFICIAL. */
f792889a 12891 if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
c906108c
SS
12892 fnp->voffset = VOFFSET_STATIC;
12893 }
12894 else
e2e0b3e5 12895 complaint (&symfile_complaints, _("member function type missing for '%s'"),
3da10d80 12896 dwarf2_full_name (fieldname, die, cu));
c906108c
SS
12897
12898 /* Get fcontext from DW_AT_containing_type if present. */
e142c38c 12899 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
e7c27a73 12900 fnp->fcontext = die_containing_type (die, cu);
c906108c 12901
3e43a32a
MS
12902 /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
12903 is_volatile is irrelevant, as it is needed by gdb_mangle_name only. */
c906108c
SS
12904
12905 /* Get accessibility. */
e142c38c 12906 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c 12907 if (attr)
aead7601 12908 accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
60d5a603
JK
12909 else
12910 accessibility = dwarf2_default_access_attribute (die, cu);
12911 switch (accessibility)
c906108c 12912 {
60d5a603
JK
12913 case DW_ACCESS_private:
12914 fnp->is_private = 1;
12915 break;
12916 case DW_ACCESS_protected:
12917 fnp->is_protected = 1;
12918 break;
c906108c
SS
12919 }
12920
b02dede2 12921 /* Check for artificial methods. */
e142c38c 12922 attr = dwarf2_attr (die, DW_AT_artificial, cu);
b02dede2
DJ
12923 if (attr && DW_UNSND (attr) != 0)
12924 fnp->is_artificial = 1;
12925
7d27a96d
TT
12926 fnp->is_constructor = dwarf2_is_constructor (die, cu);
12927
0d564a31 12928 /* Get index in virtual function table if it is a virtual member
aec5aa8b
TT
12929 function. For older versions of GCC, this is an offset in the
12930 appropriate virtual table, as specified by DW_AT_containing_type.
12931 For everyone else, it is an expression to be evaluated relative
0d564a31
DJ
12932 to the object address. */
12933
e142c38c 12934 attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
aec5aa8b 12935 if (attr)
8e19ed76 12936 {
aec5aa8b 12937 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
8e19ed76 12938 {
aec5aa8b
TT
12939 if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
12940 {
12941 /* Old-style GCC. */
12942 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
12943 }
12944 else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
12945 || (DW_BLOCK (attr)->size > 1
12946 && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
12947 && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
12948 {
12949 struct dwarf_block blk;
12950 int offset;
12951
12952 offset = (DW_BLOCK (attr)->data[0] == DW_OP_deref
12953 ? 1 : 2);
12954 blk.size = DW_BLOCK (attr)->size - offset;
12955 blk.data = DW_BLOCK (attr)->data + offset;
12956 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
12957 if ((fnp->voffset % cu->header.addr_size) != 0)
12958 dwarf2_complex_location_expr_complaint ();
12959 else
12960 fnp->voffset /= cu->header.addr_size;
12961 fnp->voffset += 2;
12962 }
12963 else
12964 dwarf2_complex_location_expr_complaint ();
12965
12966 if (!fnp->fcontext)
7e993ebf
KS
12967 {
12968 /* If there is no `this' field and no DW_AT_containing_type,
12969 we cannot actually find a base class context for the
12970 vtable! */
12971 if (TYPE_NFIELDS (this_type) == 0
12972 || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
12973 {
12974 complaint (&symfile_complaints,
12975 _("cannot determine context for virtual member "
12976 "function \"%s\" (offset %d)"),
12977 fieldname, die->offset.sect_off);
12978 }
12979 else
12980 {
12981 fnp->fcontext
12982 = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
12983 }
12984 }
aec5aa8b 12985 }
3690dd37 12986 else if (attr_form_is_section_offset (attr))
8e19ed76 12987 {
4d3c2250 12988 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
12989 }
12990 else
12991 {
4d3c2250
KB
12992 dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
12993 fieldname);
8e19ed76 12994 }
0d564a31 12995 }
d48cc9dd
DJ
12996 else
12997 {
12998 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
12999 if (attr && DW_UNSND (attr))
13000 {
13001 /* GCC does this, as of 2008-08-25; PR debug/37237. */
13002 complaint (&symfile_complaints,
3e43a32a
MS
13003 _("Member function \"%s\" (offset %d) is virtual "
13004 "but the vtable offset is not specified"),
b64f50a1 13005 fieldname, die->offset.sect_off);
9655fd1a 13006 ALLOCATE_CPLUS_STRUCT_TYPE (type);
d48cc9dd
DJ
13007 TYPE_CPLUS_DYNAMIC (type) = 1;
13008 }
13009 }
c906108c
SS
13010}
13011
13012/* Create the vector of member function fields, and attach it to the type. */
13013
13014static void
fba45db2 13015dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 13016 struct dwarf2_cu *cu)
c906108c
SS
13017{
13018 struct fnfieldlist *flp;
c906108c
SS
13019 int i;
13020
b4ba55a1 13021 if (cu->language == language_ada)
a73c6dcd 13022 error (_("unexpected member functions in Ada type"));
b4ba55a1 13023
c906108c
SS
13024 ALLOCATE_CPLUS_STRUCT_TYPE (type);
13025 TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
13026 TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
13027
13028 for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
13029 {
13030 struct nextfnfield *nfp = flp->head;
13031 struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
13032 int k;
13033
13034 TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
13035 TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
13036 fn_flp->fn_fields = (struct fn_field *)
13037 TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
13038 for (k = flp->length; (k--, nfp); nfp = nfp->next)
c5aa993b 13039 fn_flp->fn_fields[k] = nfp->fnfield;
c906108c
SS
13040 }
13041
13042 TYPE_NFN_FIELDS (type) = fip->nfnfields;
c906108c
SS
13043}
13044
1168df01
JB
13045/* Returns non-zero if NAME is the name of a vtable member in CU's
13046 language, zero otherwise. */
13047static int
13048is_vtable_name (const char *name, struct dwarf2_cu *cu)
13049{
13050 static const char vptr[] = "_vptr";
987504bb 13051 static const char vtable[] = "vtable";
1168df01 13052
987504bb
JJ
13053 /* Look for the C++ and Java forms of the vtable. */
13054 if ((cu->language == language_java
61012eef
GB
13055 && startswith (name, vtable))
13056 || (startswith (name, vptr)
987504bb 13057 && is_cplus_marker (name[sizeof (vptr) - 1])))
1168df01
JB
13058 return 1;
13059
13060 return 0;
13061}
13062
c0dd20ea 13063/* GCC outputs unnamed structures that are really pointers to member
0b92b5bb
TT
13064 functions, with the ABI-specified layout. If TYPE describes
13065 such a structure, smash it into a member function type.
61049d3b
DJ
13066
13067 GCC shouldn't do this; it should just output pointer to member DIEs.
13068 This is GCC PR debug/28767. */
c0dd20ea 13069
0b92b5bb
TT
13070static void
13071quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
c0dd20ea 13072{
09e2d7c7 13073 struct type *pfn_type, *self_type, *new_type;
c0dd20ea
DJ
13074
13075 /* Check for a structure with no name and two children. */
0b92b5bb
TT
13076 if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
13077 return;
c0dd20ea
DJ
13078
13079 /* Check for __pfn and __delta members. */
0b92b5bb
TT
13080 if (TYPE_FIELD_NAME (type, 0) == NULL
13081 || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
13082 || TYPE_FIELD_NAME (type, 1) == NULL
13083 || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
13084 return;
c0dd20ea
DJ
13085
13086 /* Find the type of the method. */
0b92b5bb 13087 pfn_type = TYPE_FIELD_TYPE (type, 0);
c0dd20ea
DJ
13088 if (pfn_type == NULL
13089 || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
13090 || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
0b92b5bb 13091 return;
c0dd20ea
DJ
13092
13093 /* Look for the "this" argument. */
13094 pfn_type = TYPE_TARGET_TYPE (pfn_type);
13095 if (TYPE_NFIELDS (pfn_type) == 0
0b92b5bb 13096 /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
c0dd20ea 13097 || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
0b92b5bb 13098 return;
c0dd20ea 13099
09e2d7c7 13100 self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
0b92b5bb 13101 new_type = alloc_type (objfile);
09e2d7c7 13102 smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
c0dd20ea
DJ
13103 TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
13104 TYPE_VARARGS (pfn_type));
0b92b5bb 13105 smash_to_methodptr_type (type, new_type);
c0dd20ea 13106}
1168df01 13107
685b1105
JK
13108/* Return non-zero if the CU's PRODUCER string matches the Intel C/C++ compiler
13109 (icc). */
13110
13111static int
13112producer_is_icc (struct dwarf2_cu *cu)
13113{
13114 if (!cu->checked_producer)
13115 check_producer (cu);
13116
13117 return cu->producer_is_icc;
13118}
13119
c906108c 13120/* Called when we find the DIE that starts a structure or union scope
c767944b
DJ
13121 (definition) to create a type for the structure or union. Fill in
13122 the type's name and general properties; the members will not be
83655187
DE
13123 processed until process_structure_scope. A symbol table entry for
13124 the type will also not be done until process_structure_scope (assuming
13125 the type has a name).
c906108c 13126
c767944b
DJ
13127 NOTE: we need to call these functions regardless of whether or not the
13128 DIE has a DW_AT_name attribute, since it might be an anonymous
c906108c 13129 structure or union. This gets the type entered into our set of
83655187 13130 user defined types. */
c906108c 13131
f792889a 13132static struct type *
134d01f1 13133read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13134{
e7c27a73 13135 struct objfile *objfile = cu->objfile;
c906108c
SS
13136 struct type *type;
13137 struct attribute *attr;
15d034d0 13138 const char *name;
c906108c 13139
348e048f
DE
13140 /* If the definition of this type lives in .debug_types, read that type.
13141 Don't follow DW_AT_specification though, that will take us back up
13142 the chain and we want to go down. */
45e58e77 13143 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
348e048f
DE
13144 if (attr)
13145 {
ac9ec31b 13146 type = get_DW_AT_signature_type (die, attr, cu);
9dc481d3 13147
ac9ec31b 13148 /* The type's CU may not be the same as CU.
02142a6c 13149 Ensure TYPE is recorded with CU in die_type_hash. */
348e048f
DE
13150 return set_die_type (die, type, cu);
13151 }
13152
c0dd20ea 13153 type = alloc_type (objfile);
c906108c 13154 INIT_CPLUS_SPECIFIC (type);
93311388 13155
39cbfefa
DJ
13156 name = dwarf2_name (die, cu);
13157 if (name != NULL)
c906108c 13158 {
987504bb 13159 if (cu->language == language_cplus
45280282
IB
13160 || cu->language == language_java
13161 || cu->language == language_d)
63d06c5c 13162 {
15d034d0 13163 const char *full_name = dwarf2_full_name (name, die, cu);
3da10d80
KS
13164
13165 /* dwarf2_full_name might have already finished building the DIE's
13166 type. If so, there is no need to continue. */
13167 if (get_die_type (die, cu) != NULL)
13168 return get_die_type (die, cu);
13169
13170 TYPE_TAG_NAME (type) = full_name;
94af9270
KS
13171 if (die->tag == DW_TAG_structure_type
13172 || die->tag == DW_TAG_class_type)
13173 TYPE_NAME (type) = TYPE_TAG_NAME (type);
63d06c5c
DC
13174 }
13175 else
13176 {
d8151005
DJ
13177 /* The name is already allocated along with this objfile, so
13178 we don't need to duplicate it for the type. */
7d455152 13179 TYPE_TAG_NAME (type) = name;
94af9270
KS
13180 if (die->tag == DW_TAG_class_type)
13181 TYPE_NAME (type) = TYPE_TAG_NAME (type);
63d06c5c 13182 }
c906108c
SS
13183 }
13184
13185 if (die->tag == DW_TAG_structure_type)
13186 {
13187 TYPE_CODE (type) = TYPE_CODE_STRUCT;
13188 }
13189 else if (die->tag == DW_TAG_union_type)
13190 {
13191 TYPE_CODE (type) = TYPE_CODE_UNION;
13192 }
13193 else
13194 {
4753d33b 13195 TYPE_CODE (type) = TYPE_CODE_STRUCT;
c906108c
SS
13196 }
13197
0cc2414c
TT
13198 if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
13199 TYPE_DECLARED_CLASS (type) = 1;
13200
e142c38c 13201 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
13202 if (attr)
13203 {
13204 TYPE_LENGTH (type) = DW_UNSND (attr);
13205 }
13206 else
13207 {
13208 TYPE_LENGTH (type) = 0;
13209 }
13210
422b1cb0 13211 if (producer_is_icc (cu) && (TYPE_LENGTH (type) == 0))
685b1105
JK
13212 {
13213 /* ICC does not output the required DW_AT_declaration
13214 on incomplete types, but gives them a size of zero. */
422b1cb0 13215 TYPE_STUB (type) = 1;
685b1105
JK
13216 }
13217 else
13218 TYPE_STUB_SUPPORTED (type) = 1;
13219
dc718098 13220 if (die_is_declaration (die, cu))
876cecd0 13221 TYPE_STUB (type) = 1;
a6c727b2
DJ
13222 else if (attr == NULL && die->child == NULL
13223 && producer_is_realview (cu->producer))
13224 /* RealView does not output the required DW_AT_declaration
13225 on incomplete types. */
13226 TYPE_STUB (type) = 1;
dc718098 13227
c906108c
SS
13228 /* We need to add the type field to the die immediately so we don't
13229 infinitely recurse when dealing with pointers to the structure
0963b4bd 13230 type within the structure itself. */
1c379e20 13231 set_die_type (die, type, cu);
c906108c 13232
7e314c57
JK
13233 /* set_die_type should be already done. */
13234 set_descriptive_type (type, die, cu);
13235
c767944b
DJ
13236 return type;
13237}
13238
13239/* Finish creating a structure or union type, including filling in
13240 its members and creating a symbol for it. */
13241
13242static void
13243process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
13244{
13245 struct objfile *objfile = cu->objfile;
ca040673 13246 struct die_info *child_die;
c767944b
DJ
13247 struct type *type;
13248
13249 type = get_die_type (die, cu);
13250 if (type == NULL)
13251 type = read_structure_type (die, cu);
13252
e142c38c 13253 if (die->child != NULL && ! die_is_declaration (die, cu))
c906108c
SS
13254 {
13255 struct field_info fi;
34eaf542 13256 VEC (symbolp) *template_args = NULL;
c767944b 13257 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
c906108c
SS
13258
13259 memset (&fi, 0, sizeof (struct field_info));
13260
639d11d3 13261 child_die = die->child;
c906108c
SS
13262
13263 while (child_die && child_die->tag)
13264 {
a9a9bd0f
DC
13265 if (child_die->tag == DW_TAG_member
13266 || child_die->tag == DW_TAG_variable)
c906108c 13267 {
a9a9bd0f
DC
13268 /* NOTE: carlton/2002-11-05: A C++ static data member
13269 should be a DW_TAG_member that is a declaration, but
13270 all versions of G++ as of this writing (so through at
13271 least 3.2.1) incorrectly generate DW_TAG_variable
13272 tags for them instead. */
e7c27a73 13273 dwarf2_add_field (&fi, child_die, cu);
c906108c 13274 }
8713b1b1 13275 else if (child_die->tag == DW_TAG_subprogram)
c906108c 13276 {
0963b4bd 13277 /* C++ member function. */
e7c27a73 13278 dwarf2_add_member_fn (&fi, child_die, type, cu);
c906108c
SS
13279 }
13280 else if (child_die->tag == DW_TAG_inheritance)
13281 {
13282 /* C++ base class field. */
e7c27a73 13283 dwarf2_add_field (&fi, child_die, cu);
c906108c 13284 }
98751a41
JK
13285 else if (child_die->tag == DW_TAG_typedef)
13286 dwarf2_add_typedef (&fi, child_die, cu);
34eaf542
TT
13287 else if (child_die->tag == DW_TAG_template_type_param
13288 || child_die->tag == DW_TAG_template_value_param)
13289 {
13290 struct symbol *arg = new_symbol (child_die, NULL, cu);
13291
f1078f66
DJ
13292 if (arg != NULL)
13293 VEC_safe_push (symbolp, template_args, arg);
34eaf542
TT
13294 }
13295
c906108c
SS
13296 child_die = sibling_die (child_die);
13297 }
13298
34eaf542
TT
13299 /* Attach template arguments to type. */
13300 if (! VEC_empty (symbolp, template_args))
13301 {
13302 ALLOCATE_CPLUS_STRUCT_TYPE (type);
13303 TYPE_N_TEMPLATE_ARGUMENTS (type)
13304 = VEC_length (symbolp, template_args);
13305 TYPE_TEMPLATE_ARGUMENTS (type)
13306 = obstack_alloc (&objfile->objfile_obstack,
13307 (TYPE_N_TEMPLATE_ARGUMENTS (type)
13308 * sizeof (struct symbol *)));
13309 memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
13310 VEC_address (symbolp, template_args),
13311 (TYPE_N_TEMPLATE_ARGUMENTS (type)
13312 * sizeof (struct symbol *)));
13313 VEC_free (symbolp, template_args);
13314 }
13315
c906108c
SS
13316 /* Attach fields and member functions to the type. */
13317 if (fi.nfields)
e7c27a73 13318 dwarf2_attach_fields_to_type (&fi, type, cu);
c906108c
SS
13319 if (fi.nfnfields)
13320 {
e7c27a73 13321 dwarf2_attach_fn_fields_to_type (&fi, type, cu);
c906108c 13322
c5aa993b 13323 /* Get the type which refers to the base class (possibly this
c906108c 13324 class itself) which contains the vtable pointer for the current
0d564a31
DJ
13325 class from the DW_AT_containing_type attribute. This use of
13326 DW_AT_containing_type is a GNU extension. */
c906108c 13327
e142c38c 13328 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
c906108c 13329 {
e7c27a73 13330 struct type *t = die_containing_type (die, cu);
c906108c 13331
ae6ae975 13332 set_type_vptr_basetype (type, t);
c906108c
SS
13333 if (type == t)
13334 {
c906108c
SS
13335 int i;
13336
13337 /* Our own class provides vtbl ptr. */
13338 for (i = TYPE_NFIELDS (t) - 1;
13339 i >= TYPE_N_BASECLASSES (t);
13340 --i)
13341 {
0d5cff50 13342 const char *fieldname = TYPE_FIELD_NAME (t, i);
c906108c 13343
1168df01 13344 if (is_vtable_name (fieldname, cu))
c906108c 13345 {
ae6ae975 13346 set_type_vptr_fieldno (type, i);
c906108c
SS
13347 break;
13348 }
13349 }
13350
13351 /* Complain if virtual function table field not found. */
13352 if (i < TYPE_N_BASECLASSES (t))
4d3c2250 13353 complaint (&symfile_complaints,
3e43a32a
MS
13354 _("virtual function table pointer "
13355 "not found when defining class '%s'"),
4d3c2250
KB
13356 TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
13357 "");
c906108c
SS
13358 }
13359 else
13360 {
ae6ae975 13361 set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
c906108c
SS
13362 }
13363 }
f6235d4c 13364 else if (cu->producer
61012eef 13365 && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
f6235d4c
EZ
13366 {
13367 /* The IBM XLC compiler does not provide direct indication
13368 of the containing type, but the vtable pointer is
13369 always named __vfp. */
13370
13371 int i;
13372
13373 for (i = TYPE_NFIELDS (type) - 1;
13374 i >= TYPE_N_BASECLASSES (type);
13375 --i)
13376 {
13377 if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
13378 {
ae6ae975
DE
13379 set_type_vptr_fieldno (type, i);
13380 set_type_vptr_basetype (type, type);
f6235d4c
EZ
13381 break;
13382 }
13383 }
13384 }
c906108c 13385 }
98751a41
JK
13386
13387 /* Copy fi.typedef_field_list linked list elements content into the
13388 allocated array TYPE_TYPEDEF_FIELD_ARRAY (type). */
13389 if (fi.typedef_field_list)
13390 {
13391 int i = fi.typedef_field_list_count;
13392
a0d7a4ff 13393 ALLOCATE_CPLUS_STRUCT_TYPE (type);
98751a41
JK
13394 TYPE_TYPEDEF_FIELD_ARRAY (type)
13395 = TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i);
13396 TYPE_TYPEDEF_FIELD_COUNT (type) = i;
13397
13398 /* Reverse the list order to keep the debug info elements order. */
13399 while (--i >= 0)
13400 {
13401 struct typedef_field *dest, *src;
6e70227d 13402
98751a41
JK
13403 dest = &TYPE_TYPEDEF_FIELD (type, i);
13404 src = &fi.typedef_field_list->field;
13405 fi.typedef_field_list = fi.typedef_field_list->next;
13406 *dest = *src;
13407 }
13408 }
c767944b
DJ
13409
13410 do_cleanups (back_to);
eb2a6f42
TT
13411
13412 if (HAVE_CPLUS_STRUCT (type))
13413 TYPE_CPLUS_REALLY_JAVA (type) = cu->language == language_java;
c906108c 13414 }
63d06c5c 13415
bb5ed363 13416 quirk_gcc_member_function_pointer (type, objfile);
0b92b5bb 13417
90aeadfc
DC
13418 /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
13419 snapshots) has been known to create a die giving a declaration
13420 for a class that has, as a child, a die giving a definition for a
13421 nested class. So we have to process our children even if the
13422 current die is a declaration. Normally, of course, a declaration
13423 won't have any children at all. */
134d01f1 13424
ca040673
DE
13425 child_die = die->child;
13426
90aeadfc
DC
13427 while (child_die != NULL && child_die->tag)
13428 {
13429 if (child_die->tag == DW_TAG_member
13430 || child_die->tag == DW_TAG_variable
34eaf542
TT
13431 || child_die->tag == DW_TAG_inheritance
13432 || child_die->tag == DW_TAG_template_value_param
13433 || child_die->tag == DW_TAG_template_type_param)
134d01f1 13434 {
90aeadfc 13435 /* Do nothing. */
134d01f1 13436 }
90aeadfc
DC
13437 else
13438 process_die (child_die, cu);
134d01f1 13439
90aeadfc 13440 child_die = sibling_die (child_die);
134d01f1
DJ
13441 }
13442
fa4028e9
JB
13443 /* Do not consider external references. According to the DWARF standard,
13444 these DIEs are identified by the fact that they have no byte_size
13445 attribute, and a declaration attribute. */
13446 if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
13447 || !die_is_declaration (die, cu))
c767944b 13448 new_symbol (die, type, cu);
134d01f1
DJ
13449}
13450
55426c9d
JB
13451/* Assuming DIE is an enumeration type, and TYPE is its associated type,
13452 update TYPE using some information only available in DIE's children. */
13453
13454static void
13455update_enumeration_type_from_children (struct die_info *die,
13456 struct type *type,
13457 struct dwarf2_cu *cu)
13458{
13459 struct obstack obstack;
60f7655a 13460 struct die_info *child_die;
55426c9d
JB
13461 int unsigned_enum = 1;
13462 int flag_enum = 1;
13463 ULONGEST mask = 0;
13464 struct cleanup *old_chain;
13465
13466 obstack_init (&obstack);
13467 old_chain = make_cleanup_obstack_free (&obstack);
13468
60f7655a
DE
13469 for (child_die = die->child;
13470 child_die != NULL && child_die->tag;
13471 child_die = sibling_die (child_die))
55426c9d
JB
13472 {
13473 struct attribute *attr;
13474 LONGEST value;
13475 const gdb_byte *bytes;
13476 struct dwarf2_locexpr_baton *baton;
13477 const char *name;
60f7655a 13478
55426c9d
JB
13479 if (child_die->tag != DW_TAG_enumerator)
13480 continue;
13481
13482 attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
13483 if (attr == NULL)
13484 continue;
13485
13486 name = dwarf2_name (child_die, cu);
13487 if (name == NULL)
13488 name = "<anonymous enumerator>";
13489
13490 dwarf2_const_value_attr (attr, type, name, &obstack, cu,
13491 &value, &bytes, &baton);
13492 if (value < 0)
13493 {
13494 unsigned_enum = 0;
13495 flag_enum = 0;
13496 }
13497 else if ((mask & value) != 0)
13498 flag_enum = 0;
13499 else
13500 mask |= value;
13501
13502 /* If we already know that the enum type is neither unsigned, nor
13503 a flag type, no need to look at the rest of the enumerates. */
13504 if (!unsigned_enum && !flag_enum)
13505 break;
55426c9d
JB
13506 }
13507
13508 if (unsigned_enum)
13509 TYPE_UNSIGNED (type) = 1;
13510 if (flag_enum)
13511 TYPE_FLAG_ENUM (type) = 1;
13512
13513 do_cleanups (old_chain);
13514}
13515
134d01f1
DJ
13516/* Given a DW_AT_enumeration_type die, set its type. We do not
13517 complete the type's fields yet, or create any symbols. */
c906108c 13518
f792889a 13519static struct type *
134d01f1 13520read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13521{
e7c27a73 13522 struct objfile *objfile = cu->objfile;
c906108c 13523 struct type *type;
c906108c 13524 struct attribute *attr;
0114d602 13525 const char *name;
134d01f1 13526
348e048f
DE
13527 /* If the definition of this type lives in .debug_types, read that type.
13528 Don't follow DW_AT_specification though, that will take us back up
13529 the chain and we want to go down. */
45e58e77 13530 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
348e048f
DE
13531 if (attr)
13532 {
ac9ec31b 13533 type = get_DW_AT_signature_type (die, attr, cu);
9dc481d3 13534
ac9ec31b 13535 /* The type's CU may not be the same as CU.
02142a6c 13536 Ensure TYPE is recorded with CU in die_type_hash. */
348e048f
DE
13537 return set_die_type (die, type, cu);
13538 }
13539
c906108c
SS
13540 type = alloc_type (objfile);
13541
13542 TYPE_CODE (type) = TYPE_CODE_ENUM;
94af9270 13543 name = dwarf2_full_name (NULL, die, cu);
39cbfefa 13544 if (name != NULL)
7d455152 13545 TYPE_TAG_NAME (type) = name;
c906108c 13546
0626fc76
TT
13547 attr = dwarf2_attr (die, DW_AT_type, cu);
13548 if (attr != NULL)
13549 {
13550 struct type *underlying_type = die_type (die, cu);
13551
13552 TYPE_TARGET_TYPE (type) = underlying_type;
13553 }
13554
e142c38c 13555 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
13556 if (attr)
13557 {
13558 TYPE_LENGTH (type) = DW_UNSND (attr);
13559 }
13560 else
13561 {
13562 TYPE_LENGTH (type) = 0;
13563 }
13564
137033e9
JB
13565 /* The enumeration DIE can be incomplete. In Ada, any type can be
13566 declared as private in the package spec, and then defined only
13567 inside the package body. Such types are known as Taft Amendment
13568 Types. When another package uses such a type, an incomplete DIE
13569 may be generated by the compiler. */
02eb380e 13570 if (die_is_declaration (die, cu))
876cecd0 13571 TYPE_STUB (type) = 1;
02eb380e 13572
0626fc76
TT
13573 /* Finish the creation of this type by using the enum's children.
13574 We must call this even when the underlying type has been provided
13575 so that we can determine if we're looking at a "flag" enum. */
55426c9d
JB
13576 update_enumeration_type_from_children (die, type, cu);
13577
0626fc76
TT
13578 /* If this type has an underlying type that is not a stub, then we
13579 may use its attributes. We always use the "unsigned" attribute
13580 in this situation, because ordinarily we guess whether the type
13581 is unsigned -- but the guess can be wrong and the underlying type
13582 can tell us the reality. However, we defer to a local size
13583 attribute if one exists, because this lets the compiler override
13584 the underlying type if needed. */
13585 if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
13586 {
13587 TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
13588 if (TYPE_LENGTH (type) == 0)
13589 TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
13590 }
13591
3d567982
TT
13592 TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
13593
f792889a 13594 return set_die_type (die, type, cu);
134d01f1
DJ
13595}
13596
13597/* Given a pointer to a die which begins an enumeration, process all
13598 the dies that define the members of the enumeration, and create the
13599 symbol for the enumeration type.
13600
13601 NOTE: We reverse the order of the element list. */
13602
13603static void
13604process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
13605{
f792889a 13606 struct type *this_type;
134d01f1 13607
f792889a
DJ
13608 this_type = get_die_type (die, cu);
13609 if (this_type == NULL)
13610 this_type = read_enumeration_type (die, cu);
9dc481d3 13611
639d11d3 13612 if (die->child != NULL)
c906108c 13613 {
9dc481d3
DE
13614 struct die_info *child_die;
13615 struct symbol *sym;
13616 struct field *fields = NULL;
13617 int num_fields = 0;
15d034d0 13618 const char *name;
9dc481d3 13619
639d11d3 13620 child_die = die->child;
c906108c
SS
13621 while (child_die && child_die->tag)
13622 {
13623 if (child_die->tag != DW_TAG_enumerator)
13624 {
e7c27a73 13625 process_die (child_die, cu);
c906108c
SS
13626 }
13627 else
13628 {
39cbfefa
DJ
13629 name = dwarf2_name (child_die, cu);
13630 if (name)
c906108c 13631 {
f792889a 13632 sym = new_symbol (child_die, this_type, cu);
c906108c
SS
13633
13634 if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
13635 {
13636 fields = (struct field *)
13637 xrealloc (fields,
13638 (num_fields + DW_FIELD_ALLOC_CHUNK)
c5aa993b 13639 * sizeof (struct field));
c906108c
SS
13640 }
13641
3567439c 13642 FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
c906108c 13643 FIELD_TYPE (fields[num_fields]) = NULL;
14e75d8e 13644 SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
c906108c
SS
13645 FIELD_BITSIZE (fields[num_fields]) = 0;
13646
13647 num_fields++;
13648 }
13649 }
13650
13651 child_die = sibling_die (child_die);
13652 }
13653
13654 if (num_fields)
13655 {
f792889a
DJ
13656 TYPE_NFIELDS (this_type) = num_fields;
13657 TYPE_FIELDS (this_type) = (struct field *)
13658 TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
13659 memcpy (TYPE_FIELDS (this_type), fields,
c906108c 13660 sizeof (struct field) * num_fields);
b8c9b27d 13661 xfree (fields);
c906108c 13662 }
c906108c 13663 }
134d01f1 13664
6c83ed52
TT
13665 /* If we are reading an enum from a .debug_types unit, and the enum
13666 is a declaration, and the enum is not the signatured type in the
13667 unit, then we do not want to add a symbol for it. Adding a
13668 symbol would in some cases obscure the true definition of the
13669 enum, giving users an incomplete type when the definition is
13670 actually available. Note that we do not want to do this for all
13671 enums which are just declarations, because C++0x allows forward
13672 enum declarations. */
3019eac3 13673 if (cu->per_cu->is_debug_types
6c83ed52
TT
13674 && die_is_declaration (die, cu))
13675 {
52dc124a 13676 struct signatured_type *sig_type;
6c83ed52 13677
c0f78cd4 13678 sig_type = (struct signatured_type *) cu->per_cu;
3019eac3
DE
13679 gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
13680 if (sig_type->type_offset_in_section.sect_off != die->offset.sect_off)
6c83ed52
TT
13681 return;
13682 }
13683
f792889a 13684 new_symbol (die, this_type, cu);
c906108c
SS
13685}
13686
13687/* Extract all information from a DW_TAG_array_type DIE and put it in
13688 the DIE's type field. For now, this only handles one dimensional
13689 arrays. */
13690
f792889a 13691static struct type *
e7c27a73 13692read_array_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13693{
e7c27a73 13694 struct objfile *objfile = cu->objfile;
c906108c 13695 struct die_info *child_die;
7e314c57 13696 struct type *type;
c906108c
SS
13697 struct type *element_type, *range_type, *index_type;
13698 struct type **range_types = NULL;
13699 struct attribute *attr;
13700 int ndim = 0;
13701 struct cleanup *back_to;
15d034d0 13702 const char *name;
dc53a7ad 13703 unsigned int bit_stride = 0;
c906108c 13704
e7c27a73 13705 element_type = die_type (die, cu);
c906108c 13706
7e314c57
JK
13707 /* The die_type call above may have already set the type for this DIE. */
13708 type = get_die_type (die, cu);
13709 if (type)
13710 return type;
13711
dc53a7ad
JB
13712 attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
13713 if (attr != NULL)
13714 bit_stride = DW_UNSND (attr) * 8;
13715
13716 attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
13717 if (attr != NULL)
13718 bit_stride = DW_UNSND (attr);
13719
c906108c
SS
13720 /* Irix 6.2 native cc creates array types without children for
13721 arrays with unspecified length. */
639d11d3 13722 if (die->child == NULL)
c906108c 13723 {
46bf5051 13724 index_type = objfile_type (objfile)->builtin_int;
0c9c3474 13725 range_type = create_static_range_type (NULL, index_type, 0, -1);
dc53a7ad
JB
13726 type = create_array_type_with_stride (NULL, element_type, range_type,
13727 bit_stride);
f792889a 13728 return set_die_type (die, type, cu);
c906108c
SS
13729 }
13730
13731 back_to = make_cleanup (null_cleanup, NULL);
639d11d3 13732 child_die = die->child;
c906108c
SS
13733 while (child_die && child_die->tag)
13734 {
13735 if (child_die->tag == DW_TAG_subrange_type)
13736 {
f792889a 13737 struct type *child_type = read_type_die (child_die, cu);
9a619af0 13738
f792889a 13739 if (child_type != NULL)
a02abb62 13740 {
0963b4bd
MS
13741 /* The range type was succesfully read. Save it for the
13742 array type creation. */
a02abb62
JB
13743 if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
13744 {
13745 range_types = (struct type **)
13746 xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
13747 * sizeof (struct type *));
13748 if (ndim == 0)
13749 make_cleanup (free_current_contents, &range_types);
13750 }
f792889a 13751 range_types[ndim++] = child_type;
a02abb62 13752 }
c906108c
SS
13753 }
13754 child_die = sibling_die (child_die);
13755 }
13756
13757 /* Dwarf2 dimensions are output from left to right, create the
13758 necessary array types in backwards order. */
7ca2d3a3 13759
c906108c 13760 type = element_type;
7ca2d3a3
DL
13761
13762 if (read_array_order (die, cu) == DW_ORD_col_major)
13763 {
13764 int i = 0;
9a619af0 13765
7ca2d3a3 13766 while (i < ndim)
dc53a7ad
JB
13767 type = create_array_type_with_stride (NULL, type, range_types[i++],
13768 bit_stride);
7ca2d3a3
DL
13769 }
13770 else
13771 {
13772 while (ndim-- > 0)
dc53a7ad
JB
13773 type = create_array_type_with_stride (NULL, type, range_types[ndim],
13774 bit_stride);
7ca2d3a3 13775 }
c906108c 13776
f5f8a009
EZ
13777 /* Understand Dwarf2 support for vector types (like they occur on
13778 the PowerPC w/ AltiVec). Gcc just adds another attribute to the
13779 array type. This is not part of the Dwarf2/3 standard yet, but a
13780 custom vendor extension. The main difference between a regular
13781 array and the vector variant is that vectors are passed by value
13782 to functions. */
e142c38c 13783 attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
f5f8a009 13784 if (attr)
ea37ba09 13785 make_vector_type (type);
f5f8a009 13786
dbc98a8b
KW
13787 /* The DIE may have DW_AT_byte_size set. For example an OpenCL
13788 implementation may choose to implement triple vectors using this
13789 attribute. */
13790 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13791 if (attr)
13792 {
13793 if (DW_UNSND (attr) >= TYPE_LENGTH (type))
13794 TYPE_LENGTH (type) = DW_UNSND (attr);
13795 else
3e43a32a
MS
13796 complaint (&symfile_complaints,
13797 _("DW_AT_byte_size for array type smaller "
13798 "than the total size of elements"));
dbc98a8b
KW
13799 }
13800
39cbfefa
DJ
13801 name = dwarf2_name (die, cu);
13802 if (name)
13803 TYPE_NAME (type) = name;
6e70227d 13804
0963b4bd 13805 /* Install the type in the die. */
7e314c57
JK
13806 set_die_type (die, type, cu);
13807
13808 /* set_die_type should be already done. */
b4ba55a1
JB
13809 set_descriptive_type (type, die, cu);
13810
c906108c
SS
13811 do_cleanups (back_to);
13812
7e314c57 13813 return type;
c906108c
SS
13814}
13815
7ca2d3a3 13816static enum dwarf_array_dim_ordering
6e70227d 13817read_array_order (struct die_info *die, struct dwarf2_cu *cu)
7ca2d3a3
DL
13818{
13819 struct attribute *attr;
13820
13821 attr = dwarf2_attr (die, DW_AT_ordering, cu);
13822
aead7601
SM
13823 if (attr)
13824 return (enum dwarf_array_dim_ordering) DW_SND (attr);
7ca2d3a3 13825
0963b4bd
MS
13826 /* GNU F77 is a special case, as at 08/2004 array type info is the
13827 opposite order to the dwarf2 specification, but data is still
13828 laid out as per normal fortran.
7ca2d3a3 13829
0963b4bd
MS
13830 FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
13831 version checking. */
7ca2d3a3 13832
905e0470
PM
13833 if (cu->language == language_fortran
13834 && cu->producer && strstr (cu->producer, "GNU F77"))
7ca2d3a3
DL
13835 {
13836 return DW_ORD_row_major;
13837 }
13838
6e70227d 13839 switch (cu->language_defn->la_array_ordering)
7ca2d3a3
DL
13840 {
13841 case array_column_major:
13842 return DW_ORD_col_major;
13843 case array_row_major:
13844 default:
13845 return DW_ORD_row_major;
13846 };
13847}
13848
72019c9c 13849/* Extract all information from a DW_TAG_set_type DIE and put it in
0963b4bd 13850 the DIE's type field. */
72019c9c 13851
f792889a 13852static struct type *
72019c9c
GM
13853read_set_type (struct die_info *die, struct dwarf2_cu *cu)
13854{
7e314c57
JK
13855 struct type *domain_type, *set_type;
13856 struct attribute *attr;
f792889a 13857
7e314c57
JK
13858 domain_type = die_type (die, cu);
13859
13860 /* The die_type call above may have already set the type for this DIE. */
13861 set_type = get_die_type (die, cu);
13862 if (set_type)
13863 return set_type;
13864
13865 set_type = create_set_type (NULL, domain_type);
13866
13867 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
d09039dd
PM
13868 if (attr)
13869 TYPE_LENGTH (set_type) = DW_UNSND (attr);
7e314c57 13870
f792889a 13871 return set_die_type (die, set_type, cu);
72019c9c 13872}
7ca2d3a3 13873
0971de02
TT
13874/* A helper for read_common_block that creates a locexpr baton.
13875 SYM is the symbol which we are marking as computed.
13876 COMMON_DIE is the DIE for the common block.
13877 COMMON_LOC is the location expression attribute for the common
13878 block itself.
13879 MEMBER_LOC is the location expression attribute for the particular
13880 member of the common block that we are processing.
13881 CU is the CU from which the above come. */
13882
13883static void
13884mark_common_block_symbol_computed (struct symbol *sym,
13885 struct die_info *common_die,
13886 struct attribute *common_loc,
13887 struct attribute *member_loc,
13888 struct dwarf2_cu *cu)
13889{
13890 struct objfile *objfile = dwarf2_per_objfile->objfile;
13891 struct dwarf2_locexpr_baton *baton;
13892 gdb_byte *ptr;
13893 unsigned int cu_off;
13894 enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
13895 LONGEST offset = 0;
13896
13897 gdb_assert (common_loc && member_loc);
13898 gdb_assert (attr_form_is_block (common_loc));
13899 gdb_assert (attr_form_is_block (member_loc)
13900 || attr_form_is_constant (member_loc));
13901
13902 baton = obstack_alloc (&objfile->objfile_obstack,
13903 sizeof (struct dwarf2_locexpr_baton));
13904 baton->per_cu = cu->per_cu;
13905 gdb_assert (baton->per_cu);
13906
13907 baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
13908
13909 if (attr_form_is_constant (member_loc))
13910 {
13911 offset = dwarf2_get_attr_constant_value (member_loc, 0);
13912 baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
13913 }
13914 else
13915 baton->size += DW_BLOCK (member_loc)->size;
13916
13917 ptr = obstack_alloc (&objfile->objfile_obstack, baton->size);
13918 baton->data = ptr;
13919
13920 *ptr++ = DW_OP_call4;
13921 cu_off = common_die->offset.sect_off - cu->per_cu->offset.sect_off;
13922 store_unsigned_integer (ptr, 4, byte_order, cu_off);
13923 ptr += 4;
13924
13925 if (attr_form_is_constant (member_loc))
13926 {
13927 *ptr++ = DW_OP_addr;
13928 store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
13929 ptr += cu->header.addr_size;
13930 }
13931 else
13932 {
13933 /* We have to copy the data here, because DW_OP_call4 will only
13934 use a DW_AT_location attribute. */
13935 memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
13936 ptr += DW_BLOCK (member_loc)->size;
13937 }
13938
13939 *ptr++ = DW_OP_plus;
13940 gdb_assert (ptr - baton->data == baton->size);
13941
0971de02 13942 SYMBOL_LOCATION_BATON (sym) = baton;
f1e6e072 13943 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
0971de02
TT
13944}
13945
4357ac6c
TT
13946/* Create appropriate locally-scoped variables for all the
13947 DW_TAG_common_block entries. Also create a struct common_block
13948 listing all such variables for `info common'. COMMON_BLOCK_DOMAIN
13949 is used to sepate the common blocks name namespace from regular
13950 variable names. */
c906108c
SS
13951
13952static void
e7c27a73 13953read_common_block (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13954{
0971de02
TT
13955 struct attribute *attr;
13956
13957 attr = dwarf2_attr (die, DW_AT_location, cu);
13958 if (attr)
13959 {
13960 /* Support the .debug_loc offsets. */
13961 if (attr_form_is_block (attr))
13962 {
13963 /* Ok. */
13964 }
13965 else if (attr_form_is_section_offset (attr))
13966 {
13967 dwarf2_complex_location_expr_complaint ();
13968 attr = NULL;
13969 }
13970 else
13971 {
13972 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
13973 "common block member");
13974 attr = NULL;
13975 }
13976 }
13977
639d11d3 13978 if (die->child != NULL)
c906108c 13979 {
4357ac6c
TT
13980 struct objfile *objfile = cu->objfile;
13981 struct die_info *child_die;
13982 size_t n_entries = 0, size;
13983 struct common_block *common_block;
13984 struct symbol *sym;
74ac6d43 13985
4357ac6c
TT
13986 for (child_die = die->child;
13987 child_die && child_die->tag;
13988 child_die = sibling_die (child_die))
13989 ++n_entries;
13990
13991 size = (sizeof (struct common_block)
13992 + (n_entries - 1) * sizeof (struct symbol *));
13993 common_block = obstack_alloc (&objfile->objfile_obstack, size);
13994 memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
13995 common_block->n_entries = 0;
13996
13997 for (child_die = die->child;
13998 child_die && child_die->tag;
13999 child_die = sibling_die (child_die))
14000 {
14001 /* Create the symbol in the DW_TAG_common_block block in the current
14002 symbol scope. */
e7c27a73 14003 sym = new_symbol (child_die, NULL, cu);
0971de02
TT
14004 if (sym != NULL)
14005 {
14006 struct attribute *member_loc;
14007
14008 common_block->contents[common_block->n_entries++] = sym;
14009
14010 member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
14011 cu);
14012 if (member_loc)
14013 {
14014 /* GDB has handled this for a long time, but it is
14015 not specified by DWARF. It seems to have been
14016 emitted by gfortran at least as recently as:
14017 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057. */
14018 complaint (&symfile_complaints,
14019 _("Variable in common block has "
14020 "DW_AT_data_member_location "
14021 "- DIE at 0x%x [in module %s]"),
4262abfb
JK
14022 child_die->offset.sect_off,
14023 objfile_name (cu->objfile));
0971de02
TT
14024
14025 if (attr_form_is_section_offset (member_loc))
14026 dwarf2_complex_location_expr_complaint ();
14027 else if (attr_form_is_constant (member_loc)
14028 || attr_form_is_block (member_loc))
14029 {
14030 if (attr)
14031 mark_common_block_symbol_computed (sym, die, attr,
14032 member_loc, cu);
14033 }
14034 else
14035 dwarf2_complex_location_expr_complaint ();
14036 }
14037 }
c906108c 14038 }
4357ac6c
TT
14039
14040 sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
14041 SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
c906108c
SS
14042 }
14043}
14044
0114d602 14045/* Create a type for a C++ namespace. */
d9fa45fe 14046
0114d602
DJ
14047static struct type *
14048read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
d9fa45fe 14049{
e7c27a73 14050 struct objfile *objfile = cu->objfile;
0114d602 14051 const char *previous_prefix, *name;
9219021c 14052 int is_anonymous;
0114d602
DJ
14053 struct type *type;
14054
14055 /* For extensions, reuse the type of the original namespace. */
14056 if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
14057 {
14058 struct die_info *ext_die;
14059 struct dwarf2_cu *ext_cu = cu;
9a619af0 14060
0114d602
DJ
14061 ext_die = dwarf2_extension (die, &ext_cu);
14062 type = read_type_die (ext_die, ext_cu);
9dc481d3
DE
14063
14064 /* EXT_CU may not be the same as CU.
02142a6c 14065 Ensure TYPE is recorded with CU in die_type_hash. */
0114d602
DJ
14066 return set_die_type (die, type, cu);
14067 }
9219021c 14068
e142c38c 14069 name = namespace_name (die, &is_anonymous, cu);
9219021c
DC
14070
14071 /* Now build the name of the current namespace. */
14072
0114d602
DJ
14073 previous_prefix = determine_prefix (die, cu);
14074 if (previous_prefix[0] != '\0')
14075 name = typename_concat (&objfile->objfile_obstack,
f55ee35c 14076 previous_prefix, name, 0, cu);
0114d602
DJ
14077
14078 /* Create the type. */
14079 type = init_type (TYPE_CODE_NAMESPACE, 0, 0, NULL,
14080 objfile);
abee88f2 14081 TYPE_NAME (type) = name;
0114d602
DJ
14082 TYPE_TAG_NAME (type) = TYPE_NAME (type);
14083
60531b24 14084 return set_die_type (die, type, cu);
0114d602
DJ
14085}
14086
22cee43f 14087/* Read a namespace scope. */
0114d602
DJ
14088
14089static void
14090read_namespace (struct die_info *die, struct dwarf2_cu *cu)
14091{
14092 struct objfile *objfile = cu->objfile;
0114d602 14093 int is_anonymous;
9219021c 14094
5c4e30ca
DC
14095 /* Add a symbol associated to this if we haven't seen the namespace
14096 before. Also, add a using directive if it's an anonymous
14097 namespace. */
9219021c 14098
f2f0e013 14099 if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
5c4e30ca
DC
14100 {
14101 struct type *type;
14102
0114d602 14103 type = read_type_die (die, cu);
e7c27a73 14104 new_symbol (die, type, cu);
5c4e30ca 14105
e8e80198 14106 namespace_name (die, &is_anonymous, cu);
5c4e30ca 14107 if (is_anonymous)
0114d602
DJ
14108 {
14109 const char *previous_prefix = determine_prefix (die, cu);
9a619af0 14110
22cee43f
PMR
14111 add_using_directive (using_directives (cu->language),
14112 previous_prefix, TYPE_NAME (type), NULL,
14113 NULL, NULL, 0, &objfile->objfile_obstack);
0114d602 14114 }
5c4e30ca 14115 }
9219021c 14116
639d11d3 14117 if (die->child != NULL)
d9fa45fe 14118 {
639d11d3 14119 struct die_info *child_die = die->child;
6e70227d 14120
d9fa45fe
DC
14121 while (child_die && child_die->tag)
14122 {
e7c27a73 14123 process_die (child_die, cu);
d9fa45fe
DC
14124 child_die = sibling_die (child_die);
14125 }
14126 }
38d518c9
EZ
14127}
14128
f55ee35c
JK
14129/* Read a Fortran module as type. This DIE can be only a declaration used for
14130 imported module. Still we need that type as local Fortran "use ... only"
14131 declaration imports depend on the created type in determine_prefix. */
14132
14133static struct type *
14134read_module_type (struct die_info *die, struct dwarf2_cu *cu)
14135{
14136 struct objfile *objfile = cu->objfile;
15d034d0 14137 const char *module_name;
f55ee35c
JK
14138 struct type *type;
14139
14140 module_name = dwarf2_name (die, cu);
14141 if (!module_name)
3e43a32a
MS
14142 complaint (&symfile_complaints,
14143 _("DW_TAG_module has no name, offset 0x%x"),
b64f50a1 14144 die->offset.sect_off);
f55ee35c
JK
14145 type = init_type (TYPE_CODE_MODULE, 0, 0, module_name, objfile);
14146
14147 /* determine_prefix uses TYPE_TAG_NAME. */
14148 TYPE_TAG_NAME (type) = TYPE_NAME (type);
14149
14150 return set_die_type (die, type, cu);
14151}
14152
5d7cb8df
JK
14153/* Read a Fortran module. */
14154
14155static void
14156read_module (struct die_info *die, struct dwarf2_cu *cu)
14157{
14158 struct die_info *child_die = die->child;
530e8392
KB
14159 struct type *type;
14160
14161 type = read_type_die (die, cu);
14162 new_symbol (die, type, cu);
5d7cb8df 14163
5d7cb8df
JK
14164 while (child_die && child_die->tag)
14165 {
14166 process_die (child_die, cu);
14167 child_die = sibling_die (child_die);
14168 }
14169}
14170
38d518c9
EZ
14171/* Return the name of the namespace represented by DIE. Set
14172 *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
14173 namespace. */
14174
14175static const char *
e142c38c 14176namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
38d518c9
EZ
14177{
14178 struct die_info *current_die;
14179 const char *name = NULL;
14180
14181 /* Loop through the extensions until we find a name. */
14182
14183 for (current_die = die;
14184 current_die != NULL;
f2f0e013 14185 current_die = dwarf2_extension (die, &cu))
38d518c9 14186 {
96553a0c
DE
14187 /* We don't use dwarf2_name here so that we can detect the absence
14188 of a name -> anonymous namespace. */
7d45c7c3 14189 name = dwarf2_string_attr (die, DW_AT_name, cu);
96553a0c 14190
38d518c9
EZ
14191 if (name != NULL)
14192 break;
14193 }
14194
14195 /* Is it an anonymous namespace? */
14196
14197 *is_anonymous = (name == NULL);
14198 if (*is_anonymous)
2b1dbab0 14199 name = CP_ANONYMOUS_NAMESPACE_STR;
38d518c9
EZ
14200
14201 return name;
d9fa45fe
DC
14202}
14203
c906108c
SS
14204/* Extract all information from a DW_TAG_pointer_type DIE and add to
14205 the user defined type vector. */
14206
f792889a 14207static struct type *
e7c27a73 14208read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14209{
5e2b427d 14210 struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
e7c27a73 14211 struct comp_unit_head *cu_header = &cu->header;
c906108c 14212 struct type *type;
8b2dbe47
KB
14213 struct attribute *attr_byte_size;
14214 struct attribute *attr_address_class;
14215 int byte_size, addr_class;
7e314c57
JK
14216 struct type *target_type;
14217
14218 target_type = die_type (die, cu);
c906108c 14219
7e314c57
JK
14220 /* The die_type call above may have already set the type for this DIE. */
14221 type = get_die_type (die, cu);
14222 if (type)
14223 return type;
14224
14225 type = lookup_pointer_type (target_type);
8b2dbe47 14226
e142c38c 14227 attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
8b2dbe47
KB
14228 if (attr_byte_size)
14229 byte_size = DW_UNSND (attr_byte_size);
c906108c 14230 else
8b2dbe47
KB
14231 byte_size = cu_header->addr_size;
14232
e142c38c 14233 attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
8b2dbe47
KB
14234 if (attr_address_class)
14235 addr_class = DW_UNSND (attr_address_class);
14236 else
14237 addr_class = DW_ADDR_none;
14238
14239 /* If the pointer size or address class is different than the
14240 default, create a type variant marked as such and set the
14241 length accordingly. */
14242 if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
c906108c 14243 {
5e2b427d 14244 if (gdbarch_address_class_type_flags_p (gdbarch))
8b2dbe47
KB
14245 {
14246 int type_flags;
14247
849957d9 14248 type_flags = gdbarch_address_class_type_flags
5e2b427d 14249 (gdbarch, byte_size, addr_class);
876cecd0
TT
14250 gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
14251 == 0);
8b2dbe47
KB
14252 type = make_type_with_address_space (type, type_flags);
14253 }
14254 else if (TYPE_LENGTH (type) != byte_size)
14255 {
3e43a32a
MS
14256 complaint (&symfile_complaints,
14257 _("invalid pointer size %d"), byte_size);
8b2dbe47 14258 }
6e70227d 14259 else
9a619af0
MS
14260 {
14261 /* Should we also complain about unhandled address classes? */
14262 }
c906108c 14263 }
8b2dbe47
KB
14264
14265 TYPE_LENGTH (type) = byte_size;
f792889a 14266 return set_die_type (die, type, cu);
c906108c
SS
14267}
14268
14269/* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
14270 the user defined type vector. */
14271
f792889a 14272static struct type *
e7c27a73 14273read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c
SS
14274{
14275 struct type *type;
14276 struct type *to_type;
14277 struct type *domain;
14278
e7c27a73
DJ
14279 to_type = die_type (die, cu);
14280 domain = die_containing_type (die, cu);
0d5de010 14281
7e314c57
JK
14282 /* The calls above may have already set the type for this DIE. */
14283 type = get_die_type (die, cu);
14284 if (type)
14285 return type;
14286
0d5de010
DJ
14287 if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
14288 type = lookup_methodptr_type (to_type);
7078baeb
TT
14289 else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
14290 {
14291 struct type *new_type = alloc_type (cu->objfile);
14292
14293 smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
14294 TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
14295 TYPE_VARARGS (to_type));
14296 type = lookup_methodptr_type (new_type);
14297 }
0d5de010
DJ
14298 else
14299 type = lookup_memberptr_type (to_type, domain);
c906108c 14300
f792889a 14301 return set_die_type (die, type, cu);
c906108c
SS
14302}
14303
14304/* Extract all information from a DW_TAG_reference_type DIE and add to
14305 the user defined type vector. */
14306
f792889a 14307static struct type *
e7c27a73 14308read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14309{
e7c27a73 14310 struct comp_unit_head *cu_header = &cu->header;
7e314c57 14311 struct type *type, *target_type;
c906108c
SS
14312 struct attribute *attr;
14313
7e314c57
JK
14314 target_type = die_type (die, cu);
14315
14316 /* The die_type call above may have already set the type for this DIE. */
14317 type = get_die_type (die, cu);
14318 if (type)
14319 return type;
14320
14321 type = lookup_reference_type (target_type);
e142c38c 14322 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
14323 if (attr)
14324 {
14325 TYPE_LENGTH (type) = DW_UNSND (attr);
14326 }
14327 else
14328 {
107d2387 14329 TYPE_LENGTH (type) = cu_header->addr_size;
c906108c 14330 }
f792889a 14331 return set_die_type (die, type, cu);
c906108c
SS
14332}
14333
cf363f18
MW
14334/* Add the given cv-qualifiers to the element type of the array. GCC
14335 outputs DWARF type qualifiers that apply to an array, not the
14336 element type. But GDB relies on the array element type to carry
14337 the cv-qualifiers. This mimics section 6.7.3 of the C99
14338 specification. */
14339
14340static struct type *
14341add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
14342 struct type *base_type, int cnst, int voltl)
14343{
14344 struct type *el_type, *inner_array;
14345
14346 base_type = copy_type (base_type);
14347 inner_array = base_type;
14348
14349 while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
14350 {
14351 TYPE_TARGET_TYPE (inner_array) =
14352 copy_type (TYPE_TARGET_TYPE (inner_array));
14353 inner_array = TYPE_TARGET_TYPE (inner_array);
14354 }
14355
14356 el_type = TYPE_TARGET_TYPE (inner_array);
14357 cnst |= TYPE_CONST (el_type);
14358 voltl |= TYPE_VOLATILE (el_type);
14359 TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
14360
14361 return set_die_type (die, base_type, cu);
14362}
14363
f792889a 14364static struct type *
e7c27a73 14365read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14366{
f792889a 14367 struct type *base_type, *cv_type;
c906108c 14368
e7c27a73 14369 base_type = die_type (die, cu);
7e314c57
JK
14370
14371 /* The die_type call above may have already set the type for this DIE. */
14372 cv_type = get_die_type (die, cu);
14373 if (cv_type)
14374 return cv_type;
14375
2f608a3a
KW
14376 /* In case the const qualifier is applied to an array type, the element type
14377 is so qualified, not the array type (section 6.7.3 of C99). */
14378 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
cf363f18 14379 return add_array_cv_type (die, cu, base_type, 1, 0);
2f608a3a 14380
f792889a
DJ
14381 cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
14382 return set_die_type (die, cv_type, cu);
c906108c
SS
14383}
14384
f792889a 14385static struct type *
e7c27a73 14386read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14387{
f792889a 14388 struct type *base_type, *cv_type;
c906108c 14389
e7c27a73 14390 base_type = die_type (die, cu);
7e314c57
JK
14391
14392 /* The die_type call above may have already set the type for this DIE. */
14393 cv_type = get_die_type (die, cu);
14394 if (cv_type)
14395 return cv_type;
14396
cf363f18
MW
14397 /* In case the volatile qualifier is applied to an array type, the
14398 element type is so qualified, not the array type (section 6.7.3
14399 of C99). */
14400 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
14401 return add_array_cv_type (die, cu, base_type, 0, 1);
14402
f792889a
DJ
14403 cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
14404 return set_die_type (die, cv_type, cu);
c906108c
SS
14405}
14406
06d66ee9
TT
14407/* Handle DW_TAG_restrict_type. */
14408
14409static struct type *
14410read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
14411{
14412 struct type *base_type, *cv_type;
14413
14414 base_type = die_type (die, cu);
14415
14416 /* The die_type call above may have already set the type for this DIE. */
14417 cv_type = get_die_type (die, cu);
14418 if (cv_type)
14419 return cv_type;
14420
14421 cv_type = make_restrict_type (base_type);
14422 return set_die_type (die, cv_type, cu);
14423}
14424
a2c2acaf
MW
14425/* Handle DW_TAG_atomic_type. */
14426
14427static struct type *
14428read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
14429{
14430 struct type *base_type, *cv_type;
14431
14432 base_type = die_type (die, cu);
14433
14434 /* The die_type call above may have already set the type for this DIE. */
14435 cv_type = get_die_type (die, cu);
14436 if (cv_type)
14437 return cv_type;
14438
14439 cv_type = make_atomic_type (base_type);
14440 return set_die_type (die, cv_type, cu);
14441}
14442
c906108c
SS
14443/* Extract all information from a DW_TAG_string_type DIE and add to
14444 the user defined type vector. It isn't really a user defined type,
14445 but it behaves like one, with other DIE's using an AT_user_def_type
14446 attribute to reference it. */
14447
f792889a 14448static struct type *
e7c27a73 14449read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14450{
e7c27a73 14451 struct objfile *objfile = cu->objfile;
3b7538c0 14452 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
14453 struct type *type, *range_type, *index_type, *char_type;
14454 struct attribute *attr;
14455 unsigned int length;
14456
e142c38c 14457 attr = dwarf2_attr (die, DW_AT_string_length, cu);
c906108c
SS
14458 if (attr)
14459 {
14460 length = DW_UNSND (attr);
14461 }
14462 else
14463 {
0963b4bd 14464 /* Check for the DW_AT_byte_size attribute. */
e142c38c 14465 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
b21b22e0
PS
14466 if (attr)
14467 {
14468 length = DW_UNSND (attr);
14469 }
14470 else
14471 {
14472 length = 1;
14473 }
c906108c 14474 }
6ccb9162 14475
46bf5051 14476 index_type = objfile_type (objfile)->builtin_int;
0c9c3474 14477 range_type = create_static_range_type (NULL, index_type, 1, length);
3b7538c0
UW
14478 char_type = language_string_char_type (cu->language_defn, gdbarch);
14479 type = create_string_type (NULL, char_type, range_type);
6ccb9162 14480
f792889a 14481 return set_die_type (die, type, cu);
c906108c
SS
14482}
14483
4d804846
JB
14484/* Assuming that DIE corresponds to a function, returns nonzero
14485 if the function is prototyped. */
14486
14487static int
14488prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
14489{
14490 struct attribute *attr;
14491
14492 attr = dwarf2_attr (die, DW_AT_prototyped, cu);
14493 if (attr && (DW_UNSND (attr) != 0))
14494 return 1;
14495
14496 /* The DWARF standard implies that the DW_AT_prototyped attribute
14497 is only meaninful for C, but the concept also extends to other
14498 languages that allow unprototyped functions (Eg: Objective C).
14499 For all other languages, assume that functions are always
14500 prototyped. */
14501 if (cu->language != language_c
14502 && cu->language != language_objc
14503 && cu->language != language_opencl)
14504 return 1;
14505
14506 /* RealView does not emit DW_AT_prototyped. We can not distinguish
14507 prototyped and unprototyped functions; default to prototyped,
14508 since that is more common in modern code (and RealView warns
14509 about unprototyped functions). */
14510 if (producer_is_realview (cu->producer))
14511 return 1;
14512
14513 return 0;
14514}
14515
c906108c
SS
14516/* Handle DIES due to C code like:
14517
14518 struct foo
c5aa993b
JM
14519 {
14520 int (*funcp)(int a, long l);
14521 int b;
14522 };
c906108c 14523
0963b4bd 14524 ('funcp' generates a DW_TAG_subroutine_type DIE). */
c906108c 14525
f792889a 14526static struct type *
e7c27a73 14527read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14528{
bb5ed363 14529 struct objfile *objfile = cu->objfile;
0963b4bd
MS
14530 struct type *type; /* Type that this function returns. */
14531 struct type *ftype; /* Function that returns above type. */
c906108c
SS
14532 struct attribute *attr;
14533
e7c27a73 14534 type = die_type (die, cu);
7e314c57
JK
14535
14536 /* The die_type call above may have already set the type for this DIE. */
14537 ftype = get_die_type (die, cu);
14538 if (ftype)
14539 return ftype;
14540
0c8b41f1 14541 ftype = lookup_function_type (type);
c906108c 14542
4d804846 14543 if (prototyped_function_p (die, cu))
a6c727b2 14544 TYPE_PROTOTYPED (ftype) = 1;
c906108c 14545
c055b101
CV
14546 /* Store the calling convention in the type if it's available in
14547 the subroutine die. Otherwise set the calling convention to
14548 the default value DW_CC_normal. */
14549 attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
54fcddd0
UW
14550 if (attr)
14551 TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
14552 else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
14553 TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
14554 else
14555 TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
76c10ea2 14556
743649fd
MW
14557 /* Record whether the function returns normally to its caller or not
14558 if the DWARF producer set that information. */
14559 attr = dwarf2_attr (die, DW_AT_noreturn, cu);
14560 if (attr && (DW_UNSND (attr) != 0))
14561 TYPE_NO_RETURN (ftype) = 1;
14562
76c10ea2
GM
14563 /* We need to add the subroutine type to the die immediately so
14564 we don't infinitely recurse when dealing with parameters
0963b4bd 14565 declared as the same subroutine type. */
76c10ea2 14566 set_die_type (die, ftype, cu);
6e70227d 14567
639d11d3 14568 if (die->child != NULL)
c906108c 14569 {
bb5ed363 14570 struct type *void_type = objfile_type (objfile)->builtin_void;
c906108c 14571 struct die_info *child_die;
8072405b 14572 int nparams, iparams;
c906108c
SS
14573
14574 /* Count the number of parameters.
14575 FIXME: GDB currently ignores vararg functions, but knows about
14576 vararg member functions. */
8072405b 14577 nparams = 0;
639d11d3 14578 child_die = die->child;
c906108c
SS
14579 while (child_die && child_die->tag)
14580 {
14581 if (child_die->tag == DW_TAG_formal_parameter)
14582 nparams++;
14583 else if (child_die->tag == DW_TAG_unspecified_parameters)
876cecd0 14584 TYPE_VARARGS (ftype) = 1;
c906108c
SS
14585 child_die = sibling_die (child_die);
14586 }
14587
14588 /* Allocate storage for parameters and fill them in. */
14589 TYPE_NFIELDS (ftype) = nparams;
14590 TYPE_FIELDS (ftype) = (struct field *)
ae5a43e0 14591 TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
c906108c 14592
8072405b
JK
14593 /* TYPE_FIELD_TYPE must never be NULL. Pre-fill the array to ensure it
14594 even if we error out during the parameters reading below. */
14595 for (iparams = 0; iparams < nparams; iparams++)
14596 TYPE_FIELD_TYPE (ftype, iparams) = void_type;
14597
14598 iparams = 0;
639d11d3 14599 child_die = die->child;
c906108c
SS
14600 while (child_die && child_die->tag)
14601 {
14602 if (child_die->tag == DW_TAG_formal_parameter)
14603 {
3ce3b1ba
PA
14604 struct type *arg_type;
14605
14606 /* DWARF version 2 has no clean way to discern C++
14607 static and non-static member functions. G++ helps
14608 GDB by marking the first parameter for non-static
14609 member functions (which is the this pointer) as
14610 artificial. We pass this information to
14611 dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
14612
14613 DWARF version 3 added DW_AT_object_pointer, which GCC
14614 4.5 does not yet generate. */
e142c38c 14615 attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
c906108c
SS
14616 if (attr)
14617 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
14618 else
418835cc
KS
14619 {
14620 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
14621
14622 /* GCC/43521: In java, the formal parameter
14623 "this" is sometimes not marked with DW_AT_artificial. */
14624 if (cu->language == language_java)
14625 {
14626 const char *name = dwarf2_name (child_die, cu);
9a619af0 14627
418835cc
KS
14628 if (name && !strcmp (name, "this"))
14629 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 1;
14630 }
14631 }
3ce3b1ba
PA
14632 arg_type = die_type (child_die, cu);
14633
14634 /* RealView does not mark THIS as const, which the testsuite
14635 expects. GCC marks THIS as const in method definitions,
14636 but not in the class specifications (GCC PR 43053). */
14637 if (cu->language == language_cplus && !TYPE_CONST (arg_type)
14638 && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
14639 {
14640 int is_this = 0;
14641 struct dwarf2_cu *arg_cu = cu;
14642 const char *name = dwarf2_name (child_die, cu);
14643
14644 attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
14645 if (attr)
14646 {
14647 /* If the compiler emits this, use it. */
14648 if (follow_die_ref (die, attr, &arg_cu) == child_die)
14649 is_this = 1;
14650 }
14651 else if (name && strcmp (name, "this") == 0)
14652 /* Function definitions will have the argument names. */
14653 is_this = 1;
14654 else if (name == NULL && iparams == 0)
14655 /* Declarations may not have the names, so like
14656 elsewhere in GDB, assume an artificial first
14657 argument is "this". */
14658 is_this = 1;
14659
14660 if (is_this)
14661 arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
14662 arg_type, 0);
14663 }
14664
14665 TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
c906108c
SS
14666 iparams++;
14667 }
14668 child_die = sibling_die (child_die);
14669 }
14670 }
14671
76c10ea2 14672 return ftype;
c906108c
SS
14673}
14674
f792889a 14675static struct type *
e7c27a73 14676read_typedef (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14677{
e7c27a73 14678 struct objfile *objfile = cu->objfile;
0114d602 14679 const char *name = NULL;
3c8e0968 14680 struct type *this_type, *target_type;
c906108c 14681
94af9270 14682 name = dwarf2_full_name (NULL, die, cu);
f792889a 14683 this_type = init_type (TYPE_CODE_TYPEDEF, 0,
0114d602 14684 TYPE_FLAG_TARGET_STUB, NULL, objfile);
abee88f2 14685 TYPE_NAME (this_type) = name;
f792889a 14686 set_die_type (die, this_type, cu);
3c8e0968
DE
14687 target_type = die_type (die, cu);
14688 if (target_type != this_type)
14689 TYPE_TARGET_TYPE (this_type) = target_type;
14690 else
14691 {
14692 /* Self-referential typedefs are, it seems, not allowed by the DWARF
14693 spec and cause infinite loops in GDB. */
14694 complaint (&symfile_complaints,
14695 _("Self-referential DW_TAG_typedef "
14696 "- DIE at 0x%x [in module %s]"),
4262abfb 14697 die->offset.sect_off, objfile_name (objfile));
3c8e0968
DE
14698 TYPE_TARGET_TYPE (this_type) = NULL;
14699 }
f792889a 14700 return this_type;
c906108c
SS
14701}
14702
14703/* Find a representation of a given base type and install
14704 it in the TYPE field of the die. */
14705
f792889a 14706static struct type *
e7c27a73 14707read_base_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14708{
e7c27a73 14709 struct objfile *objfile = cu->objfile;
c906108c
SS
14710 struct type *type;
14711 struct attribute *attr;
14712 int encoding = 0, size = 0;
15d034d0 14713 const char *name;
6ccb9162
UW
14714 enum type_code code = TYPE_CODE_INT;
14715 int type_flags = 0;
14716 struct type *target_type = NULL;
c906108c 14717
e142c38c 14718 attr = dwarf2_attr (die, DW_AT_encoding, cu);
c906108c
SS
14719 if (attr)
14720 {
14721 encoding = DW_UNSND (attr);
14722 }
e142c38c 14723 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
14724 if (attr)
14725 {
14726 size = DW_UNSND (attr);
14727 }
39cbfefa 14728 name = dwarf2_name (die, cu);
6ccb9162 14729 if (!name)
c906108c 14730 {
6ccb9162
UW
14731 complaint (&symfile_complaints,
14732 _("DW_AT_name missing from DW_TAG_base_type"));
c906108c 14733 }
6ccb9162
UW
14734
14735 switch (encoding)
c906108c 14736 {
6ccb9162
UW
14737 case DW_ATE_address:
14738 /* Turn DW_ATE_address into a void * pointer. */
14739 code = TYPE_CODE_PTR;
14740 type_flags |= TYPE_FLAG_UNSIGNED;
14741 target_type = init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
14742 break;
14743 case DW_ATE_boolean:
14744 code = TYPE_CODE_BOOL;
14745 type_flags |= TYPE_FLAG_UNSIGNED;
14746 break;
14747 case DW_ATE_complex_float:
14748 code = TYPE_CODE_COMPLEX;
14749 target_type = init_type (TYPE_CODE_FLT, size / 2, 0, NULL, objfile);
14750 break;
14751 case DW_ATE_decimal_float:
14752 code = TYPE_CODE_DECFLOAT;
14753 break;
14754 case DW_ATE_float:
14755 code = TYPE_CODE_FLT;
14756 break;
14757 case DW_ATE_signed:
14758 break;
14759 case DW_ATE_unsigned:
14760 type_flags |= TYPE_FLAG_UNSIGNED;
3b2b8fea
TT
14761 if (cu->language == language_fortran
14762 && name
61012eef 14763 && startswith (name, "character("))
3b2b8fea 14764 code = TYPE_CODE_CHAR;
6ccb9162
UW
14765 break;
14766 case DW_ATE_signed_char:
6e70227d 14767 if (cu->language == language_ada || cu->language == language_m2
3b2b8fea
TT
14768 || cu->language == language_pascal
14769 || cu->language == language_fortran)
6ccb9162
UW
14770 code = TYPE_CODE_CHAR;
14771 break;
14772 case DW_ATE_unsigned_char:
868a0084 14773 if (cu->language == language_ada || cu->language == language_m2
3b2b8fea
TT
14774 || cu->language == language_pascal
14775 || cu->language == language_fortran)
6ccb9162
UW
14776 code = TYPE_CODE_CHAR;
14777 type_flags |= TYPE_FLAG_UNSIGNED;
14778 break;
75079b2b
TT
14779 case DW_ATE_UTF:
14780 /* We just treat this as an integer and then recognize the
14781 type by name elsewhere. */
14782 break;
14783
6ccb9162
UW
14784 default:
14785 complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
14786 dwarf_type_encoding_name (encoding));
14787 break;
c906108c 14788 }
6ccb9162 14789
0114d602
DJ
14790 type = init_type (code, size, type_flags, NULL, objfile);
14791 TYPE_NAME (type) = name;
6ccb9162
UW
14792 TYPE_TARGET_TYPE (type) = target_type;
14793
0114d602 14794 if (name && strcmp (name, "char") == 0)
876cecd0 14795 TYPE_NOSIGN (type) = 1;
0114d602 14796
f792889a 14797 return set_die_type (die, type, cu);
c906108c
SS
14798}
14799
80180f79
SA
14800/* Parse dwarf attribute if it's a block, reference or constant and put the
14801 resulting value of the attribute into struct bound_prop.
14802 Returns 1 if ATTR could be resolved into PROP, 0 otherwise. */
14803
14804static int
14805attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
14806 struct dwarf2_cu *cu, struct dynamic_prop *prop)
14807{
14808 struct dwarf2_property_baton *baton;
14809 struct obstack *obstack = &cu->objfile->objfile_obstack;
14810
14811 if (attr == NULL || prop == NULL)
14812 return 0;
14813
14814 if (attr_form_is_block (attr))
14815 {
14816 baton = obstack_alloc (obstack, sizeof (*baton));
14817 baton->referenced_type = NULL;
14818 baton->locexpr.per_cu = cu->per_cu;
14819 baton->locexpr.size = DW_BLOCK (attr)->size;
14820 baton->locexpr.data = DW_BLOCK (attr)->data;
14821 prop->data.baton = baton;
14822 prop->kind = PROP_LOCEXPR;
14823 gdb_assert (prop->data.baton != NULL);
14824 }
14825 else if (attr_form_is_ref (attr))
14826 {
14827 struct dwarf2_cu *target_cu = cu;
14828 struct die_info *target_die;
14829 struct attribute *target_attr;
14830
14831 target_die = follow_die_ref (die, attr, &target_cu);
14832 target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
df25ebbd
JB
14833 if (target_attr == NULL)
14834 target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
14835 target_cu);
80180f79
SA
14836 if (target_attr == NULL)
14837 return 0;
14838
df25ebbd 14839 switch (target_attr->name)
80180f79 14840 {
df25ebbd
JB
14841 case DW_AT_location:
14842 if (attr_form_is_section_offset (target_attr))
14843 {
14844 baton = obstack_alloc (obstack, sizeof (*baton));
14845 baton->referenced_type = die_type (target_die, target_cu);
14846 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
14847 prop->data.baton = baton;
14848 prop->kind = PROP_LOCLIST;
14849 gdb_assert (prop->data.baton != NULL);
14850 }
14851 else if (attr_form_is_block (target_attr))
14852 {
14853 baton = obstack_alloc (obstack, sizeof (*baton));
14854 baton->referenced_type = die_type (target_die, target_cu);
14855 baton->locexpr.per_cu = cu->per_cu;
14856 baton->locexpr.size = DW_BLOCK (target_attr)->size;
14857 baton->locexpr.data = DW_BLOCK (target_attr)->data;
14858 prop->data.baton = baton;
14859 prop->kind = PROP_LOCEXPR;
14860 gdb_assert (prop->data.baton != NULL);
14861 }
14862 else
14863 {
14864 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
14865 "dynamic property");
14866 return 0;
14867 }
14868 break;
14869 case DW_AT_data_member_location:
14870 {
14871 LONGEST offset;
14872
14873 if (!handle_data_member_location (target_die, target_cu,
14874 &offset))
14875 return 0;
14876
14877 baton = obstack_alloc (obstack, sizeof (*baton));
6ad395a7
JB
14878 baton->referenced_type = read_type_die (target_die->parent,
14879 target_cu);
df25ebbd
JB
14880 baton->offset_info.offset = offset;
14881 baton->offset_info.type = die_type (target_die, target_cu);
14882 prop->data.baton = baton;
14883 prop->kind = PROP_ADDR_OFFSET;
14884 break;
14885 }
80180f79
SA
14886 }
14887 }
14888 else if (attr_form_is_constant (attr))
14889 {
14890 prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
14891 prop->kind = PROP_CONST;
14892 }
14893 else
14894 {
14895 dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
14896 dwarf2_name (die, cu));
14897 return 0;
14898 }
14899
14900 return 1;
14901}
14902
a02abb62
JB
14903/* Read the given DW_AT_subrange DIE. */
14904
f792889a 14905static struct type *
a02abb62
JB
14906read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
14907{
4c9ad8c2 14908 struct type *base_type, *orig_base_type;
a02abb62
JB
14909 struct type *range_type;
14910 struct attribute *attr;
729efb13 14911 struct dynamic_prop low, high;
4fae6e18 14912 int low_default_is_valid;
c451ebe5 14913 int high_bound_is_count = 0;
15d034d0 14914 const char *name;
43bbcdc2 14915 LONGEST negative_mask;
e77813c8 14916
4c9ad8c2
TT
14917 orig_base_type = die_type (die, cu);
14918 /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
14919 whereas the real type might be. So, we use ORIG_BASE_TYPE when
14920 creating the range type, but we use the result of check_typedef
14921 when examining properties of the type. */
14922 base_type = check_typedef (orig_base_type);
a02abb62 14923
7e314c57
JK
14924 /* The die_type call above may have already set the type for this DIE. */
14925 range_type = get_die_type (die, cu);
14926 if (range_type)
14927 return range_type;
14928
729efb13
SA
14929 low.kind = PROP_CONST;
14930 high.kind = PROP_CONST;
14931 high.data.const_val = 0;
14932
4fae6e18
JK
14933 /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
14934 omitting DW_AT_lower_bound. */
14935 switch (cu->language)
6e70227d 14936 {
4fae6e18
JK
14937 case language_c:
14938 case language_cplus:
729efb13 14939 low.data.const_val = 0;
4fae6e18
JK
14940 low_default_is_valid = 1;
14941 break;
14942 case language_fortran:
729efb13 14943 low.data.const_val = 1;
4fae6e18
JK
14944 low_default_is_valid = 1;
14945 break;
14946 case language_d:
14947 case language_java:
14948 case language_objc:
729efb13 14949 low.data.const_val = 0;
4fae6e18
JK
14950 low_default_is_valid = (cu->header.version >= 4);
14951 break;
14952 case language_ada:
14953 case language_m2:
14954 case language_pascal:
729efb13 14955 low.data.const_val = 1;
4fae6e18
JK
14956 low_default_is_valid = (cu->header.version >= 4);
14957 break;
14958 default:
729efb13 14959 low.data.const_val = 0;
4fae6e18
JK
14960 low_default_is_valid = 0;
14961 break;
a02abb62
JB
14962 }
14963
e142c38c 14964 attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
a02abb62 14965 if (attr)
11c1ba78 14966 attr_to_dynamic_prop (attr, die, cu, &low);
4fae6e18
JK
14967 else if (!low_default_is_valid)
14968 complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
14969 "- DIE at 0x%x [in module %s]"),
4262abfb 14970 die->offset.sect_off, objfile_name (cu->objfile));
a02abb62 14971
e142c38c 14972 attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
80180f79 14973 if (!attr_to_dynamic_prop (attr, die, cu, &high))
e77813c8
PM
14974 {
14975 attr = dwarf2_attr (die, DW_AT_count, cu);
c451ebe5 14976 if (attr_to_dynamic_prop (attr, die, cu, &high))
6b662e19 14977 {
c451ebe5
SA
14978 /* If bounds are constant do the final calculation here. */
14979 if (low.kind == PROP_CONST && high.kind == PROP_CONST)
14980 high.data.const_val = low.data.const_val + high.data.const_val - 1;
14981 else
14982 high_bound_is_count = 1;
c2ff108b 14983 }
e77813c8
PM
14984 }
14985
14986 /* Dwarf-2 specifications explicitly allows to create subrange types
14987 without specifying a base type.
14988 In that case, the base type must be set to the type of
14989 the lower bound, upper bound or count, in that order, if any of these
14990 three attributes references an object that has a type.
14991 If no base type is found, the Dwarf-2 specifications say that
14992 a signed integer type of size equal to the size of an address should
14993 be used.
14994 For the following C code: `extern char gdb_int [];'
14995 GCC produces an empty range DIE.
14996 FIXME: muller/2010-05-28: Possible references to object for low bound,
0963b4bd 14997 high bound or count are not yet handled by this code. */
e77813c8
PM
14998 if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
14999 {
15000 struct objfile *objfile = cu->objfile;
15001 struct gdbarch *gdbarch = get_objfile_arch (objfile);
15002 int addr_size = gdbarch_addr_bit (gdbarch) /8;
15003 struct type *int_type = objfile_type (objfile)->builtin_int;
15004
15005 /* Test "int", "long int", and "long long int" objfile types,
15006 and select the first one having a size above or equal to the
15007 architecture address size. */
15008 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15009 base_type = int_type;
15010 else
15011 {
15012 int_type = objfile_type (objfile)->builtin_long;
15013 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15014 base_type = int_type;
15015 else
15016 {
15017 int_type = objfile_type (objfile)->builtin_long_long;
15018 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15019 base_type = int_type;
15020 }
15021 }
15022 }
a02abb62 15023
dbb9c2b1
JB
15024 /* Normally, the DWARF producers are expected to use a signed
15025 constant form (Eg. DW_FORM_sdata) to express negative bounds.
15026 But this is unfortunately not always the case, as witnessed
15027 with GCC, for instance, where the ambiguous DW_FORM_dataN form
15028 is used instead. To work around that ambiguity, we treat
15029 the bounds as signed, and thus sign-extend their values, when
15030 the base type is signed. */
6e70227d 15031 negative_mask =
43bbcdc2 15032 (LONGEST) -1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1);
729efb13
SA
15033 if (low.kind == PROP_CONST
15034 && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
15035 low.data.const_val |= negative_mask;
15036 if (high.kind == PROP_CONST
15037 && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
15038 high.data.const_val |= negative_mask;
43bbcdc2 15039
729efb13 15040 range_type = create_range_type (NULL, orig_base_type, &low, &high);
a02abb62 15041
c451ebe5
SA
15042 if (high_bound_is_count)
15043 TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
15044
c2ff108b
JK
15045 /* Ada expects an empty array on no boundary attributes. */
15046 if (attr == NULL && cu->language != language_ada)
729efb13 15047 TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
c2ff108b 15048
39cbfefa
DJ
15049 name = dwarf2_name (die, cu);
15050 if (name)
15051 TYPE_NAME (range_type) = name;
6e70227d 15052
e142c38c 15053 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
a02abb62
JB
15054 if (attr)
15055 TYPE_LENGTH (range_type) = DW_UNSND (attr);
15056
7e314c57
JK
15057 set_die_type (die, range_type, cu);
15058
15059 /* set_die_type should be already done. */
b4ba55a1
JB
15060 set_descriptive_type (range_type, die, cu);
15061
7e314c57 15062 return range_type;
a02abb62 15063}
6e70227d 15064
f792889a 15065static struct type *
81a17f79
JB
15066read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
15067{
15068 struct type *type;
81a17f79 15069
81a17f79
JB
15070 /* For now, we only support the C meaning of an unspecified type: void. */
15071
0114d602
DJ
15072 type = init_type (TYPE_CODE_VOID, 0, 0, NULL, cu->objfile);
15073 TYPE_NAME (type) = dwarf2_name (die, cu);
81a17f79 15074
f792889a 15075 return set_die_type (die, type, cu);
81a17f79 15076}
a02abb62 15077
639d11d3
DC
15078/* Read a single die and all its descendents. Set the die's sibling
15079 field to NULL; set other fields in the die correctly, and set all
15080 of the descendents' fields correctly. Set *NEW_INFO_PTR to the
15081 location of the info_ptr after reading all of those dies. PARENT
15082 is the parent of the die in question. */
15083
15084static struct die_info *
dee91e82 15085read_die_and_children (const struct die_reader_specs *reader,
d521ce57
TT
15086 const gdb_byte *info_ptr,
15087 const gdb_byte **new_info_ptr,
dee91e82 15088 struct die_info *parent)
639d11d3
DC
15089{
15090 struct die_info *die;
d521ce57 15091 const gdb_byte *cur_ptr;
639d11d3
DC
15092 int has_children;
15093
bf6af496 15094 cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
1d325ec1
DJ
15095 if (die == NULL)
15096 {
15097 *new_info_ptr = cur_ptr;
15098 return NULL;
15099 }
93311388 15100 store_in_ref_table (die, reader->cu);
639d11d3
DC
15101
15102 if (has_children)
bf6af496 15103 die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
639d11d3
DC
15104 else
15105 {
15106 die->child = NULL;
15107 *new_info_ptr = cur_ptr;
15108 }
15109
15110 die->sibling = NULL;
15111 die->parent = parent;
15112 return die;
15113}
15114
15115/* Read a die, all of its descendents, and all of its siblings; set
15116 all of the fields of all of the dies correctly. Arguments are as
15117 in read_die_and_children. */
15118
15119static struct die_info *
bf6af496 15120read_die_and_siblings_1 (const struct die_reader_specs *reader,
d521ce57
TT
15121 const gdb_byte *info_ptr,
15122 const gdb_byte **new_info_ptr,
bf6af496 15123 struct die_info *parent)
639d11d3
DC
15124{
15125 struct die_info *first_die, *last_sibling;
d521ce57 15126 const gdb_byte *cur_ptr;
639d11d3 15127
c906108c 15128 cur_ptr = info_ptr;
639d11d3
DC
15129 first_die = last_sibling = NULL;
15130
15131 while (1)
c906108c 15132 {
639d11d3 15133 struct die_info *die
dee91e82 15134 = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
639d11d3 15135
1d325ec1 15136 if (die == NULL)
c906108c 15137 {
639d11d3
DC
15138 *new_info_ptr = cur_ptr;
15139 return first_die;
c906108c 15140 }
1d325ec1
DJ
15141
15142 if (!first_die)
15143 first_die = die;
c906108c 15144 else
1d325ec1
DJ
15145 last_sibling->sibling = die;
15146
15147 last_sibling = die;
c906108c 15148 }
c906108c
SS
15149}
15150
bf6af496
DE
15151/* Read a die, all of its descendents, and all of its siblings; set
15152 all of the fields of all of the dies correctly. Arguments are as
15153 in read_die_and_children.
15154 This the main entry point for reading a DIE and all its children. */
15155
15156static struct die_info *
15157read_die_and_siblings (const struct die_reader_specs *reader,
d521ce57
TT
15158 const gdb_byte *info_ptr,
15159 const gdb_byte **new_info_ptr,
bf6af496
DE
15160 struct die_info *parent)
15161{
15162 struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
15163 new_info_ptr, parent);
15164
b4f54984 15165 if (dwarf_die_debug)
bf6af496
DE
15166 {
15167 fprintf_unfiltered (gdb_stdlog,
15168 "Read die from %s@0x%x of %s:\n",
a32a8923 15169 get_section_name (reader->die_section),
bf6af496
DE
15170 (unsigned) (info_ptr - reader->die_section->buffer),
15171 bfd_get_filename (reader->abfd));
b4f54984 15172 dump_die (die, dwarf_die_debug);
bf6af496
DE
15173 }
15174
15175 return die;
15176}
15177
3019eac3
DE
15178/* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
15179 attributes.
15180 The caller is responsible for filling in the extra attributes
15181 and updating (*DIEP)->num_attrs.
15182 Set DIEP to point to a newly allocated die with its information,
15183 except for its child, sibling, and parent fields.
15184 Set HAS_CHILDREN to tell whether the die has children or not. */
93311388 15185
d521ce57 15186static const gdb_byte *
3019eac3 15187read_full_die_1 (const struct die_reader_specs *reader,
d521ce57 15188 struct die_info **diep, const gdb_byte *info_ptr,
3019eac3 15189 int *has_children, int num_extra_attrs)
93311388 15190{
b64f50a1
JK
15191 unsigned int abbrev_number, bytes_read, i;
15192 sect_offset offset;
93311388
DE
15193 struct abbrev_info *abbrev;
15194 struct die_info *die;
15195 struct dwarf2_cu *cu = reader->cu;
15196 bfd *abfd = reader->abfd;
15197
b64f50a1 15198 offset.sect_off = info_ptr - reader->buffer;
93311388
DE
15199 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15200 info_ptr += bytes_read;
15201 if (!abbrev_number)
15202 {
15203 *diep = NULL;
15204 *has_children = 0;
15205 return info_ptr;
15206 }
15207
433df2d4 15208 abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
93311388 15209 if (!abbrev)
348e048f
DE
15210 error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
15211 abbrev_number,
15212 bfd_get_filename (abfd));
15213
3019eac3 15214 die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
93311388
DE
15215 die->offset = offset;
15216 die->tag = abbrev->tag;
15217 die->abbrev = abbrev_number;
15218
3019eac3
DE
15219 /* Make the result usable.
15220 The caller needs to update num_attrs after adding the extra
15221 attributes. */
93311388
DE
15222 die->num_attrs = abbrev->num_attrs;
15223
15224 for (i = 0; i < abbrev->num_attrs; ++i)
dee91e82
DE
15225 info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
15226 info_ptr);
93311388
DE
15227
15228 *diep = die;
15229 *has_children = abbrev->has_children;
15230 return info_ptr;
15231}
15232
3019eac3
DE
15233/* Read a die and all its attributes.
15234 Set DIEP to point to a newly allocated die with its information,
15235 except for its child, sibling, and parent fields.
15236 Set HAS_CHILDREN to tell whether the die has children or not. */
15237
d521ce57 15238static const gdb_byte *
3019eac3 15239read_full_die (const struct die_reader_specs *reader,
d521ce57 15240 struct die_info **diep, const gdb_byte *info_ptr,
3019eac3
DE
15241 int *has_children)
15242{
d521ce57 15243 const gdb_byte *result;
bf6af496
DE
15244
15245 result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
15246
b4f54984 15247 if (dwarf_die_debug)
bf6af496
DE
15248 {
15249 fprintf_unfiltered (gdb_stdlog,
15250 "Read die from %s@0x%x of %s:\n",
a32a8923 15251 get_section_name (reader->die_section),
bf6af496
DE
15252 (unsigned) (info_ptr - reader->die_section->buffer),
15253 bfd_get_filename (reader->abfd));
b4f54984 15254 dump_die (*diep, dwarf_die_debug);
bf6af496
DE
15255 }
15256
15257 return result;
3019eac3 15258}
433df2d4
DE
15259\f
15260/* Abbreviation tables.
3019eac3 15261
433df2d4 15262 In DWARF version 2, the description of the debugging information is
c906108c
SS
15263 stored in a separate .debug_abbrev section. Before we read any
15264 dies from a section we read in all abbreviations and install them
433df2d4
DE
15265 in a hash table. */
15266
15267/* Allocate space for a struct abbrev_info object in ABBREV_TABLE. */
15268
15269static struct abbrev_info *
15270abbrev_table_alloc_abbrev (struct abbrev_table *abbrev_table)
15271{
15272 struct abbrev_info *abbrev;
15273
15274 abbrev = (struct abbrev_info *)
15275 obstack_alloc (&abbrev_table->abbrev_obstack, sizeof (struct abbrev_info));
15276 memset (abbrev, 0, sizeof (struct abbrev_info));
15277 return abbrev;
15278}
15279
15280/* Add an abbreviation to the table. */
c906108c
SS
15281
15282static void
433df2d4
DE
15283abbrev_table_add_abbrev (struct abbrev_table *abbrev_table,
15284 unsigned int abbrev_number,
15285 struct abbrev_info *abbrev)
15286{
15287 unsigned int hash_number;
15288
15289 hash_number = abbrev_number % ABBREV_HASH_SIZE;
15290 abbrev->next = abbrev_table->abbrevs[hash_number];
15291 abbrev_table->abbrevs[hash_number] = abbrev;
15292}
dee91e82 15293
433df2d4
DE
15294/* Look up an abbrev in the table.
15295 Returns NULL if the abbrev is not found. */
15296
15297static struct abbrev_info *
15298abbrev_table_lookup_abbrev (const struct abbrev_table *abbrev_table,
15299 unsigned int abbrev_number)
c906108c 15300{
433df2d4
DE
15301 unsigned int hash_number;
15302 struct abbrev_info *abbrev;
15303
15304 hash_number = abbrev_number % ABBREV_HASH_SIZE;
15305 abbrev = abbrev_table->abbrevs[hash_number];
15306
15307 while (abbrev)
15308 {
15309 if (abbrev->number == abbrev_number)
15310 return abbrev;
15311 abbrev = abbrev->next;
15312 }
15313 return NULL;
15314}
15315
15316/* Read in an abbrev table. */
15317
15318static struct abbrev_table *
15319abbrev_table_read_table (struct dwarf2_section_info *section,
15320 sect_offset offset)
15321{
15322 struct objfile *objfile = dwarf2_per_objfile->objfile;
a32a8923 15323 bfd *abfd = get_section_bfd_owner (section);
433df2d4 15324 struct abbrev_table *abbrev_table;
d521ce57 15325 const gdb_byte *abbrev_ptr;
c906108c
SS
15326 struct abbrev_info *cur_abbrev;
15327 unsigned int abbrev_number, bytes_read, abbrev_name;
433df2d4 15328 unsigned int abbrev_form;
f3dd6933
DJ
15329 struct attr_abbrev *cur_attrs;
15330 unsigned int allocated_attrs;
c906108c 15331
70ba0933 15332 abbrev_table = XNEW (struct abbrev_table);
f4dc4d17 15333 abbrev_table->offset = offset;
433df2d4
DE
15334 obstack_init (&abbrev_table->abbrev_obstack);
15335 abbrev_table->abbrevs = obstack_alloc (&abbrev_table->abbrev_obstack,
15336 (ABBREV_HASH_SIZE
15337 * sizeof (struct abbrev_info *)));
15338 memset (abbrev_table->abbrevs, 0,
15339 ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
c906108c 15340
433df2d4
DE
15341 dwarf2_read_section (objfile, section);
15342 abbrev_ptr = section->buffer + offset.sect_off;
c906108c
SS
15343 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15344 abbrev_ptr += bytes_read;
15345
f3dd6933
DJ
15346 allocated_attrs = ATTR_ALLOC_CHUNK;
15347 cur_attrs = xmalloc (allocated_attrs * sizeof (struct attr_abbrev));
6e70227d 15348
0963b4bd 15349 /* Loop until we reach an abbrev number of 0. */
c906108c
SS
15350 while (abbrev_number)
15351 {
433df2d4 15352 cur_abbrev = abbrev_table_alloc_abbrev (abbrev_table);
c906108c
SS
15353
15354 /* read in abbrev header */
15355 cur_abbrev->number = abbrev_number;
aead7601
SM
15356 cur_abbrev->tag
15357 = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
c906108c
SS
15358 abbrev_ptr += bytes_read;
15359 cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
15360 abbrev_ptr += 1;
15361
15362 /* now read in declarations */
15363 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15364 abbrev_ptr += bytes_read;
15365 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15366 abbrev_ptr += bytes_read;
15367 while (abbrev_name)
15368 {
f3dd6933 15369 if (cur_abbrev->num_attrs == allocated_attrs)
c906108c 15370 {
f3dd6933
DJ
15371 allocated_attrs += ATTR_ALLOC_CHUNK;
15372 cur_attrs
15373 = xrealloc (cur_attrs, (allocated_attrs
15374 * sizeof (struct attr_abbrev)));
c906108c 15375 }
ae038cb0 15376
aead7601
SM
15377 cur_attrs[cur_abbrev->num_attrs].name
15378 = (enum dwarf_attribute) abbrev_name;
15379 cur_attrs[cur_abbrev->num_attrs++].form
15380 = (enum dwarf_form) abbrev_form;
c906108c
SS
15381 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15382 abbrev_ptr += bytes_read;
15383 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15384 abbrev_ptr += bytes_read;
15385 }
15386
433df2d4 15387 cur_abbrev->attrs = obstack_alloc (&abbrev_table->abbrev_obstack,
f3dd6933
DJ
15388 (cur_abbrev->num_attrs
15389 * sizeof (struct attr_abbrev)));
15390 memcpy (cur_abbrev->attrs, cur_attrs,
15391 cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
15392
433df2d4 15393 abbrev_table_add_abbrev (abbrev_table, abbrev_number, cur_abbrev);
c906108c
SS
15394
15395 /* Get next abbreviation.
15396 Under Irix6 the abbreviations for a compilation unit are not
c5aa993b
JM
15397 always properly terminated with an abbrev number of 0.
15398 Exit loop if we encounter an abbreviation which we have
15399 already read (which means we are about to read the abbreviations
15400 for the next compile unit) or if the end of the abbreviation
15401 table is reached. */
433df2d4 15402 if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
c906108c
SS
15403 break;
15404 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15405 abbrev_ptr += bytes_read;
433df2d4 15406 if (abbrev_table_lookup_abbrev (abbrev_table, abbrev_number) != NULL)
c906108c
SS
15407 break;
15408 }
f3dd6933
DJ
15409
15410 xfree (cur_attrs);
433df2d4 15411 return abbrev_table;
c906108c
SS
15412}
15413
433df2d4 15414/* Free the resources held by ABBREV_TABLE. */
c906108c 15415
c906108c 15416static void
433df2d4 15417abbrev_table_free (struct abbrev_table *abbrev_table)
c906108c 15418{
433df2d4
DE
15419 obstack_free (&abbrev_table->abbrev_obstack, NULL);
15420 xfree (abbrev_table);
c906108c
SS
15421}
15422
f4dc4d17
DE
15423/* Same as abbrev_table_free but as a cleanup.
15424 We pass in a pointer to the pointer to the table so that we can
15425 set the pointer to NULL when we're done. It also simplifies
73051182 15426 build_type_psymtabs_1. */
f4dc4d17
DE
15427
15428static void
15429abbrev_table_free_cleanup (void *table_ptr)
15430{
15431 struct abbrev_table **abbrev_table_ptr = table_ptr;
15432
15433 if (*abbrev_table_ptr != NULL)
15434 abbrev_table_free (*abbrev_table_ptr);
15435 *abbrev_table_ptr = NULL;
15436}
15437
433df2d4
DE
15438/* Read the abbrev table for CU from ABBREV_SECTION. */
15439
15440static void
15441dwarf2_read_abbrevs (struct dwarf2_cu *cu,
15442 struct dwarf2_section_info *abbrev_section)
c906108c 15443{
433df2d4
DE
15444 cu->abbrev_table =
15445 abbrev_table_read_table (abbrev_section, cu->header.abbrev_offset);
15446}
c906108c 15447
433df2d4 15448/* Release the memory used by the abbrev table for a compilation unit. */
c906108c 15449
433df2d4
DE
15450static void
15451dwarf2_free_abbrev_table (void *ptr_to_cu)
15452{
15453 struct dwarf2_cu *cu = ptr_to_cu;
c906108c 15454
a2ce51a0
DE
15455 if (cu->abbrev_table != NULL)
15456 abbrev_table_free (cu->abbrev_table);
433df2d4
DE
15457 /* Set this to NULL so that we SEGV if we try to read it later,
15458 and also because free_comp_unit verifies this is NULL. */
15459 cu->abbrev_table = NULL;
15460}
15461\f
72bf9492
DJ
15462/* Returns nonzero if TAG represents a type that we might generate a partial
15463 symbol for. */
15464
15465static int
15466is_type_tag_for_partial (int tag)
15467{
15468 switch (tag)
15469 {
15470#if 0
15471 /* Some types that would be reasonable to generate partial symbols for,
15472 that we don't at present. */
15473 case DW_TAG_array_type:
15474 case DW_TAG_file_type:
15475 case DW_TAG_ptr_to_member_type:
15476 case DW_TAG_set_type:
15477 case DW_TAG_string_type:
15478 case DW_TAG_subroutine_type:
15479#endif
15480 case DW_TAG_base_type:
15481 case DW_TAG_class_type:
680b30c7 15482 case DW_TAG_interface_type:
72bf9492
DJ
15483 case DW_TAG_enumeration_type:
15484 case DW_TAG_structure_type:
15485 case DW_TAG_subrange_type:
15486 case DW_TAG_typedef:
15487 case DW_TAG_union_type:
15488 return 1;
15489 default:
15490 return 0;
15491 }
15492}
15493
15494/* Load all DIEs that are interesting for partial symbols into memory. */
15495
15496static struct partial_die_info *
dee91e82 15497load_partial_dies (const struct die_reader_specs *reader,
d521ce57 15498 const gdb_byte *info_ptr, int building_psymtab)
72bf9492 15499{
dee91e82 15500 struct dwarf2_cu *cu = reader->cu;
bb5ed363 15501 struct objfile *objfile = cu->objfile;
72bf9492
DJ
15502 struct partial_die_info *part_die;
15503 struct partial_die_info *parent_die, *last_die, *first_die = NULL;
15504 struct abbrev_info *abbrev;
15505 unsigned int bytes_read;
5afb4e99 15506 unsigned int load_all = 0;
72bf9492
DJ
15507 int nesting_level = 1;
15508
15509 parent_die = NULL;
15510 last_die = NULL;
15511
7adf1e79
DE
15512 gdb_assert (cu->per_cu != NULL);
15513 if (cu->per_cu->load_all_dies)
5afb4e99
DJ
15514 load_all = 1;
15515
72bf9492
DJ
15516 cu->partial_dies
15517 = htab_create_alloc_ex (cu->header.length / 12,
15518 partial_die_hash,
15519 partial_die_eq,
15520 NULL,
15521 &cu->comp_unit_obstack,
15522 hashtab_obstack_allocate,
15523 dummy_obstack_deallocate);
15524
15525 part_die = obstack_alloc (&cu->comp_unit_obstack,
15526 sizeof (struct partial_die_info));
15527
15528 while (1)
15529 {
15530 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
15531
15532 /* A NULL abbrev means the end of a series of children. */
15533 if (abbrev == NULL)
15534 {
15535 if (--nesting_level == 0)
15536 {
15537 /* PART_DIE was probably the last thing allocated on the
15538 comp_unit_obstack, so we could call obstack_free
15539 here. We don't do that because the waste is small,
15540 and will be cleaned up when we're done with this
15541 compilation unit. This way, we're also more robust
15542 against other users of the comp_unit_obstack. */
15543 return first_die;
15544 }
15545 info_ptr += bytes_read;
15546 last_die = parent_die;
15547 parent_die = parent_die->die_parent;
15548 continue;
15549 }
15550
98bfdba5
PA
15551 /* Check for template arguments. We never save these; if
15552 they're seen, we just mark the parent, and go on our way. */
15553 if (parent_die != NULL
15554 && cu->language == language_cplus
15555 && (abbrev->tag == DW_TAG_template_type_param
15556 || abbrev->tag == DW_TAG_template_value_param))
15557 {
15558 parent_die->has_template_arguments = 1;
15559
15560 if (!load_all)
15561 {
15562 /* We don't need a partial DIE for the template argument. */
dee91e82 15563 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
98bfdba5
PA
15564 continue;
15565 }
15566 }
15567
0d99eb77 15568 /* We only recurse into c++ subprograms looking for template arguments.
98bfdba5
PA
15569 Skip their other children. */
15570 if (!load_all
15571 && cu->language == language_cplus
15572 && parent_die != NULL
15573 && parent_die->tag == DW_TAG_subprogram)
15574 {
dee91e82 15575 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
98bfdba5
PA
15576 continue;
15577 }
15578
5afb4e99
DJ
15579 /* Check whether this DIE is interesting enough to save. Normally
15580 we would not be interested in members here, but there may be
15581 later variables referencing them via DW_AT_specification (for
15582 static members). */
15583 if (!load_all
15584 && !is_type_tag_for_partial (abbrev->tag)
72929c62 15585 && abbrev->tag != DW_TAG_constant
72bf9492
DJ
15586 && abbrev->tag != DW_TAG_enumerator
15587 && abbrev->tag != DW_TAG_subprogram
bc30ff58 15588 && abbrev->tag != DW_TAG_lexical_block
72bf9492 15589 && abbrev->tag != DW_TAG_variable
5afb4e99 15590 && abbrev->tag != DW_TAG_namespace
f55ee35c 15591 && abbrev->tag != DW_TAG_module
95554aad 15592 && abbrev->tag != DW_TAG_member
74921315
KS
15593 && abbrev->tag != DW_TAG_imported_unit
15594 && abbrev->tag != DW_TAG_imported_declaration)
72bf9492
DJ
15595 {
15596 /* Otherwise we skip to the next sibling, if any. */
dee91e82 15597 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
72bf9492
DJ
15598 continue;
15599 }
15600
dee91e82
DE
15601 info_ptr = read_partial_die (reader, part_die, abbrev, bytes_read,
15602 info_ptr);
72bf9492
DJ
15603
15604 /* This two-pass algorithm for processing partial symbols has a
15605 high cost in cache pressure. Thus, handle some simple cases
15606 here which cover the majority of C partial symbols. DIEs
15607 which neither have specification tags in them, nor could have
15608 specification tags elsewhere pointing at them, can simply be
15609 processed and discarded.
15610
15611 This segment is also optional; scan_partial_symbols and
15612 add_partial_symbol will handle these DIEs if we chain
15613 them in normally. When compilers which do not emit large
15614 quantities of duplicate debug information are more common,
15615 this code can probably be removed. */
15616
15617 /* Any complete simple types at the top level (pretty much all
15618 of them, for a language without namespaces), can be processed
15619 directly. */
15620 if (parent_die == NULL
15621 && part_die->has_specification == 0
15622 && part_die->is_declaration == 0
d8228535 15623 && ((part_die->tag == DW_TAG_typedef && !part_die->has_children)
72bf9492
DJ
15624 || part_die->tag == DW_TAG_base_type
15625 || part_die->tag == DW_TAG_subrange_type))
15626 {
15627 if (building_psymtab && part_die->name != NULL)
04a679b8 15628 add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
72bf9492 15629 VAR_DOMAIN, LOC_TYPEDEF,
bb5ed363 15630 &objfile->static_psymbols,
1762568f 15631 0, cu->language, objfile);
dee91e82 15632 info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
72bf9492
DJ
15633 continue;
15634 }
15635
d8228535
JK
15636 /* The exception for DW_TAG_typedef with has_children above is
15637 a workaround of GCC PR debug/47510. In the case of this complaint
15638 type_name_no_tag_or_error will error on such types later.
15639
15640 GDB skipped children of DW_TAG_typedef by the shortcut above and then
15641 it could not find the child DIEs referenced later, this is checked
15642 above. In correct DWARF DW_TAG_typedef should have no children. */
15643
15644 if (part_die->tag == DW_TAG_typedef && part_die->has_children)
15645 complaint (&symfile_complaints,
15646 _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
15647 "- DIE at 0x%x [in module %s]"),
4262abfb 15648 part_die->offset.sect_off, objfile_name (objfile));
d8228535 15649
72bf9492
DJ
15650 /* If we're at the second level, and we're an enumerator, and
15651 our parent has no specification (meaning possibly lives in a
15652 namespace elsewhere), then we can add the partial symbol now
15653 instead of queueing it. */
15654 if (part_die->tag == DW_TAG_enumerator
15655 && parent_die != NULL
15656 && parent_die->die_parent == NULL
15657 && parent_die->tag == DW_TAG_enumeration_type
15658 && parent_die->has_specification == 0)
15659 {
15660 if (part_die->name == NULL)
3e43a32a
MS
15661 complaint (&symfile_complaints,
15662 _("malformed enumerator DIE ignored"));
72bf9492 15663 else if (building_psymtab)
04a679b8 15664 add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
72bf9492 15665 VAR_DOMAIN, LOC_CONST,
987504bb
JJ
15666 (cu->language == language_cplus
15667 || cu->language == language_java)
bb5ed363
DE
15668 ? &objfile->global_psymbols
15669 : &objfile->static_psymbols,
1762568f 15670 0, cu->language, objfile);
72bf9492 15671
dee91e82 15672 info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
72bf9492
DJ
15673 continue;
15674 }
15675
15676 /* We'll save this DIE so link it in. */
15677 part_die->die_parent = parent_die;
15678 part_die->die_sibling = NULL;
15679 part_die->die_child = NULL;
15680
15681 if (last_die && last_die == parent_die)
15682 last_die->die_child = part_die;
15683 else if (last_die)
15684 last_die->die_sibling = part_die;
15685
15686 last_die = part_die;
15687
15688 if (first_die == NULL)
15689 first_die = part_die;
15690
15691 /* Maybe add the DIE to the hash table. Not all DIEs that we
15692 find interesting need to be in the hash table, because we
15693 also have the parent/sibling/child chains; only those that we
15694 might refer to by offset later during partial symbol reading.
15695
15696 For now this means things that might have be the target of a
15697 DW_AT_specification, DW_AT_abstract_origin, or
15698 DW_AT_extension. DW_AT_extension will refer only to
15699 namespaces; DW_AT_abstract_origin refers to functions (and
15700 many things under the function DIE, but we do not recurse
15701 into function DIEs during partial symbol reading) and
15702 possibly variables as well; DW_AT_specification refers to
15703 declarations. Declarations ought to have the DW_AT_declaration
15704 flag. It happens that GCC forgets to put it in sometimes, but
15705 only for functions, not for types.
15706
15707 Adding more things than necessary to the hash table is harmless
15708 except for the performance cost. Adding too few will result in
5afb4e99
DJ
15709 wasted time in find_partial_die, when we reread the compilation
15710 unit with load_all_dies set. */
72bf9492 15711
5afb4e99 15712 if (load_all
72929c62 15713 || abbrev->tag == DW_TAG_constant
5afb4e99 15714 || abbrev->tag == DW_TAG_subprogram
72bf9492
DJ
15715 || abbrev->tag == DW_TAG_variable
15716 || abbrev->tag == DW_TAG_namespace
15717 || part_die->is_declaration)
15718 {
15719 void **slot;
15720
15721 slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
b64f50a1 15722 part_die->offset.sect_off, INSERT);
72bf9492
DJ
15723 *slot = part_die;
15724 }
15725
15726 part_die = obstack_alloc (&cu->comp_unit_obstack,
15727 sizeof (struct partial_die_info));
15728
15729 /* For some DIEs we want to follow their children (if any). For C
bc30ff58 15730 we have no reason to follow the children of structures; for other
98bfdba5
PA
15731 languages we have to, so that we can get at method physnames
15732 to infer fully qualified class names, for DW_AT_specification,
15733 and for C++ template arguments. For C++, we also look one level
15734 inside functions to find template arguments (if the name of the
15735 function does not already contain the template arguments).
bc30ff58
JB
15736
15737 For Ada, we need to scan the children of subprograms and lexical
15738 blocks as well because Ada allows the definition of nested
15739 entities that could be interesting for the debugger, such as
15740 nested subprograms for instance. */
72bf9492 15741 if (last_die->has_children
5afb4e99
DJ
15742 && (load_all
15743 || last_die->tag == DW_TAG_namespace
f55ee35c 15744 || last_die->tag == DW_TAG_module
72bf9492 15745 || last_die->tag == DW_TAG_enumeration_type
98bfdba5
PA
15746 || (cu->language == language_cplus
15747 && last_die->tag == DW_TAG_subprogram
15748 && (last_die->name == NULL
15749 || strchr (last_die->name, '<') == NULL))
72bf9492
DJ
15750 || (cu->language != language_c
15751 && (last_die->tag == DW_TAG_class_type
680b30c7 15752 || last_die->tag == DW_TAG_interface_type
72bf9492 15753 || last_die->tag == DW_TAG_structure_type
bc30ff58
JB
15754 || last_die->tag == DW_TAG_union_type))
15755 || (cu->language == language_ada
15756 && (last_die->tag == DW_TAG_subprogram
15757 || last_die->tag == DW_TAG_lexical_block))))
72bf9492
DJ
15758 {
15759 nesting_level++;
15760 parent_die = last_die;
15761 continue;
15762 }
15763
15764 /* Otherwise we skip to the next sibling, if any. */
dee91e82 15765 info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
72bf9492
DJ
15766
15767 /* Back to the top, do it again. */
15768 }
15769}
15770
c906108c
SS
15771/* Read a minimal amount of information into the minimal die structure. */
15772
d521ce57 15773static const gdb_byte *
dee91e82
DE
15774read_partial_die (const struct die_reader_specs *reader,
15775 struct partial_die_info *part_die,
15776 struct abbrev_info *abbrev, unsigned int abbrev_len,
d521ce57 15777 const gdb_byte *info_ptr)
c906108c 15778{
dee91e82 15779 struct dwarf2_cu *cu = reader->cu;
bb5ed363 15780 struct objfile *objfile = cu->objfile;
d521ce57 15781 const gdb_byte *buffer = reader->buffer;
fa238c03 15782 unsigned int i;
c906108c 15783 struct attribute attr;
c5aa993b 15784 int has_low_pc_attr = 0;
c906108c 15785 int has_high_pc_attr = 0;
91da1414 15786 int high_pc_relative = 0;
c906108c 15787
72bf9492 15788 memset (part_die, 0, sizeof (struct partial_die_info));
c906108c 15789
b64f50a1 15790 part_die->offset.sect_off = info_ptr - buffer;
72bf9492
DJ
15791
15792 info_ptr += abbrev_len;
15793
15794 if (abbrev == NULL)
15795 return info_ptr;
15796
c906108c
SS
15797 part_die->tag = abbrev->tag;
15798 part_die->has_children = abbrev->has_children;
c906108c
SS
15799
15800 for (i = 0; i < abbrev->num_attrs; ++i)
15801 {
dee91e82 15802 info_ptr = read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
c906108c
SS
15803
15804 /* Store the data if it is of an attribute we want to keep in a
c5aa993b 15805 partial symbol table. */
c906108c
SS
15806 switch (attr.name)
15807 {
15808 case DW_AT_name:
71c25dea
TT
15809 switch (part_die->tag)
15810 {
15811 case DW_TAG_compile_unit:
95554aad 15812 case DW_TAG_partial_unit:
348e048f 15813 case DW_TAG_type_unit:
71c25dea
TT
15814 /* Compilation units have a DW_AT_name that is a filename, not
15815 a source language identifier. */
15816 case DW_TAG_enumeration_type:
15817 case DW_TAG_enumerator:
15818 /* These tags always have simple identifiers already; no need
15819 to canonicalize them. */
15820 part_die->name = DW_STRING (&attr);
15821 break;
15822 default:
15823 part_die->name
15824 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
34a68019 15825 &objfile->per_bfd->storage_obstack);
71c25dea
TT
15826 break;
15827 }
c906108c 15828 break;
31ef98ae 15829 case DW_AT_linkage_name:
c906108c 15830 case DW_AT_MIPS_linkage_name:
31ef98ae
TT
15831 /* Note that both forms of linkage name might appear. We
15832 assume they will be the same, and we only store the last
15833 one we see. */
94af9270
KS
15834 if (cu->language == language_ada)
15835 part_die->name = DW_STRING (&attr);
abc72ce4 15836 part_die->linkage_name = DW_STRING (&attr);
c906108c
SS
15837 break;
15838 case DW_AT_low_pc:
15839 has_low_pc_attr = 1;
31aa7e4e 15840 part_die->lowpc = attr_value_as_address (&attr);
c906108c
SS
15841 break;
15842 case DW_AT_high_pc:
15843 has_high_pc_attr = 1;
31aa7e4e
JB
15844 part_die->highpc = attr_value_as_address (&attr);
15845 if (cu->header.version >= 4 && attr_form_is_constant (&attr))
15846 high_pc_relative = 1;
c906108c
SS
15847 break;
15848 case DW_AT_location:
0963b4bd 15849 /* Support the .debug_loc offsets. */
8e19ed76
PS
15850 if (attr_form_is_block (&attr))
15851 {
95554aad 15852 part_die->d.locdesc = DW_BLOCK (&attr);
8e19ed76 15853 }
3690dd37 15854 else if (attr_form_is_section_offset (&attr))
8e19ed76 15855 {
4d3c2250 15856 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
15857 }
15858 else
15859 {
4d3c2250
KB
15860 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
15861 "partial symbol information");
8e19ed76 15862 }
c906108c 15863 break;
c906108c
SS
15864 case DW_AT_external:
15865 part_die->is_external = DW_UNSND (&attr);
15866 break;
15867 case DW_AT_declaration:
15868 part_die->is_declaration = DW_UNSND (&attr);
15869 break;
15870 case DW_AT_type:
15871 part_die->has_type = 1;
15872 break;
15873 case DW_AT_abstract_origin:
15874 case DW_AT_specification:
72bf9492
DJ
15875 case DW_AT_extension:
15876 part_die->has_specification = 1;
c764a876 15877 part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
36586728
TT
15878 part_die->spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15879 || cu->per_cu->is_dwz);
c906108c
SS
15880 break;
15881 case DW_AT_sibling:
15882 /* Ignore absolute siblings, they might point outside of
15883 the current compile unit. */
15884 if (attr.form == DW_FORM_ref_addr)
3e43a32a
MS
15885 complaint (&symfile_complaints,
15886 _("ignoring absolute DW_AT_sibling"));
c906108c 15887 else
b9502d3f
WN
15888 {
15889 unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
15890 const gdb_byte *sibling_ptr = buffer + off;
15891
15892 if (sibling_ptr < info_ptr)
15893 complaint (&symfile_complaints,
15894 _("DW_AT_sibling points backwards"));
22869d73
KS
15895 else if (sibling_ptr > reader->buffer_end)
15896 dwarf2_section_buffer_overflow_complaint (reader->die_section);
b9502d3f
WN
15897 else
15898 part_die->sibling = sibling_ptr;
15899 }
c906108c 15900 break;
fa4028e9
JB
15901 case DW_AT_byte_size:
15902 part_die->has_byte_size = 1;
15903 break;
ff908ebf
AW
15904 case DW_AT_const_value:
15905 part_die->has_const_value = 1;
15906 break;
68511cec
CES
15907 case DW_AT_calling_convention:
15908 /* DWARF doesn't provide a way to identify a program's source-level
15909 entry point. DW_AT_calling_convention attributes are only meant
15910 to describe functions' calling conventions.
15911
15912 However, because it's a necessary piece of information in
15913 Fortran, and because DW_CC_program is the only piece of debugging
15914 information whose definition refers to a 'main program' at all,
15915 several compilers have begun marking Fortran main programs with
15916 DW_CC_program --- even when those functions use the standard
15917 calling conventions.
15918
15919 So until DWARF specifies a way to provide this information and
15920 compilers pick up the new representation, we'll support this
15921 practice. */
15922 if (DW_UNSND (&attr) == DW_CC_program
15923 && cu->language == language_fortran)
3d548a53 15924 set_objfile_main_name (objfile, part_die->name, language_fortran);
68511cec 15925 break;
481860b3
GB
15926 case DW_AT_inline:
15927 if (DW_UNSND (&attr) == DW_INL_inlined
15928 || DW_UNSND (&attr) == DW_INL_declared_inlined)
15929 part_die->may_be_inlined = 1;
15930 break;
95554aad
TT
15931
15932 case DW_AT_import:
15933 if (part_die->tag == DW_TAG_imported_unit)
36586728
TT
15934 {
15935 part_die->d.offset = dwarf2_get_ref_die_offset (&attr);
15936 part_die->is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15937 || cu->per_cu->is_dwz);
15938 }
95554aad
TT
15939 break;
15940
c906108c
SS
15941 default:
15942 break;
15943 }
15944 }
15945
91da1414
MW
15946 if (high_pc_relative)
15947 part_die->highpc += part_die->lowpc;
15948
9373cf26
JK
15949 if (has_low_pc_attr && has_high_pc_attr)
15950 {
15951 /* When using the GNU linker, .gnu.linkonce. sections are used to
15952 eliminate duplicate copies of functions and vtables and such.
15953 The linker will arbitrarily choose one and discard the others.
15954 The AT_*_pc values for such functions refer to local labels in
15955 these sections. If the section from that file was discarded, the
15956 labels are not in the output, so the relocs get a value of 0.
15957 If this is a discarded function, mark the pc bounds as invalid,
15958 so that GDB will ignore it. */
15959 if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
15960 {
bb5ed363 15961 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9373cf26
JK
15962
15963 complaint (&symfile_complaints,
15964 _("DW_AT_low_pc %s is zero "
15965 "for DIE at 0x%x [in module %s]"),
15966 paddress (gdbarch, part_die->lowpc),
4262abfb 15967 part_die->offset.sect_off, objfile_name (objfile));
9373cf26
JK
15968 }
15969 /* dwarf2_get_pc_bounds has also the strict low < high requirement. */
15970 else if (part_die->lowpc >= part_die->highpc)
15971 {
bb5ed363 15972 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9373cf26
JK
15973
15974 complaint (&symfile_complaints,
15975 _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
15976 "for DIE at 0x%x [in module %s]"),
15977 paddress (gdbarch, part_die->lowpc),
15978 paddress (gdbarch, part_die->highpc),
4262abfb 15979 part_die->offset.sect_off, objfile_name (objfile));
9373cf26
JK
15980 }
15981 else
15982 part_die->has_pc_info = 1;
15983 }
85cbf3d3 15984
c906108c
SS
15985 return info_ptr;
15986}
15987
72bf9492
DJ
15988/* Find a cached partial DIE at OFFSET in CU. */
15989
15990static struct partial_die_info *
b64f50a1 15991find_partial_die_in_comp_unit (sect_offset offset, struct dwarf2_cu *cu)
72bf9492
DJ
15992{
15993 struct partial_die_info *lookup_die = NULL;
15994 struct partial_die_info part_die;
15995
15996 part_die.offset = offset;
b64f50a1
JK
15997 lookup_die = htab_find_with_hash (cu->partial_dies, &part_die,
15998 offset.sect_off);
72bf9492 15999
72bf9492
DJ
16000 return lookup_die;
16001}
16002
348e048f
DE
16003/* Find a partial DIE at OFFSET, which may or may not be in CU,
16004 except in the case of .debug_types DIEs which do not reference
16005 outside their CU (they do however referencing other types via
55f1336d 16006 DW_FORM_ref_sig8). */
72bf9492
DJ
16007
16008static struct partial_die_info *
36586728 16009find_partial_die (sect_offset offset, int offset_in_dwz, struct dwarf2_cu *cu)
72bf9492 16010{
bb5ed363 16011 struct objfile *objfile = cu->objfile;
5afb4e99
DJ
16012 struct dwarf2_per_cu_data *per_cu = NULL;
16013 struct partial_die_info *pd = NULL;
72bf9492 16014
36586728
TT
16015 if (offset_in_dwz == cu->per_cu->is_dwz
16016 && offset_in_cu_p (&cu->header, offset))
5afb4e99
DJ
16017 {
16018 pd = find_partial_die_in_comp_unit (offset, cu);
16019 if (pd != NULL)
16020 return pd;
0d99eb77
DE
16021 /* We missed recording what we needed.
16022 Load all dies and try again. */
16023 per_cu = cu->per_cu;
5afb4e99 16024 }
0d99eb77
DE
16025 else
16026 {
16027 /* TUs don't reference other CUs/TUs (except via type signatures). */
3019eac3 16028 if (cu->per_cu->is_debug_types)
0d99eb77
DE
16029 {
16030 error (_("Dwarf Error: Type Unit at offset 0x%lx contains"
16031 " external reference to offset 0x%lx [in module %s].\n"),
16032 (long) cu->header.offset.sect_off, (long) offset.sect_off,
16033 bfd_get_filename (objfile->obfd));
16034 }
36586728
TT
16035 per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
16036 objfile);
72bf9492 16037
0d99eb77
DE
16038 if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
16039 load_partial_comp_unit (per_cu);
ae038cb0 16040
0d99eb77
DE
16041 per_cu->cu->last_used = 0;
16042 pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
16043 }
5afb4e99 16044
dee91e82
DE
16045 /* If we didn't find it, and not all dies have been loaded,
16046 load them all and try again. */
16047
5afb4e99
DJ
16048 if (pd == NULL && per_cu->load_all_dies == 0)
16049 {
5afb4e99 16050 per_cu->load_all_dies = 1;
fd820528
DE
16051
16052 /* This is nasty. When we reread the DIEs, somewhere up the call chain
16053 THIS_CU->cu may already be in use. So we can't just free it and
16054 replace its DIEs with the ones we read in. Instead, we leave those
16055 DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
16056 and clobber THIS_CU->cu->partial_dies with the hash table for the new
16057 set. */
dee91e82 16058 load_partial_comp_unit (per_cu);
5afb4e99
DJ
16059
16060 pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
16061 }
16062
16063 if (pd == NULL)
16064 internal_error (__FILE__, __LINE__,
3e43a32a
MS
16065 _("could not find partial DIE 0x%x "
16066 "in cache [from module %s]\n"),
b64f50a1 16067 offset.sect_off, bfd_get_filename (objfile->obfd));
5afb4e99 16068 return pd;
72bf9492
DJ
16069}
16070
abc72ce4
DE
16071/* See if we can figure out if the class lives in a namespace. We do
16072 this by looking for a member function; its demangled name will
16073 contain namespace info, if there is any. */
16074
16075static void
16076guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
16077 struct dwarf2_cu *cu)
16078{
16079 /* NOTE: carlton/2003-10-07: Getting the info this way changes
16080 what template types look like, because the demangler
16081 frequently doesn't give the same name as the debug info. We
16082 could fix this by only using the demangled name to get the
16083 prefix (but see comment in read_structure_type). */
16084
16085 struct partial_die_info *real_pdi;
16086 struct partial_die_info *child_pdi;
16087
16088 /* If this DIE (this DIE's specification, if any) has a parent, then
16089 we should not do this. We'll prepend the parent's fully qualified
16090 name when we create the partial symbol. */
16091
16092 real_pdi = struct_pdi;
16093 while (real_pdi->has_specification)
36586728
TT
16094 real_pdi = find_partial_die (real_pdi->spec_offset,
16095 real_pdi->spec_is_dwz, cu);
abc72ce4
DE
16096
16097 if (real_pdi->die_parent != NULL)
16098 return;
16099
16100 for (child_pdi = struct_pdi->die_child;
16101 child_pdi != NULL;
16102 child_pdi = child_pdi->die_sibling)
16103 {
16104 if (child_pdi->tag == DW_TAG_subprogram
16105 && child_pdi->linkage_name != NULL)
16106 {
16107 char *actual_class_name
16108 = language_class_name_from_physname (cu->language_defn,
16109 child_pdi->linkage_name);
16110 if (actual_class_name != NULL)
16111 {
16112 struct_pdi->name
34a68019 16113 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb
TT
16114 actual_class_name,
16115 strlen (actual_class_name));
abc72ce4
DE
16116 xfree (actual_class_name);
16117 }
16118 break;
16119 }
16120 }
16121}
16122
72bf9492
DJ
16123/* Adjust PART_DIE before generating a symbol for it. This function
16124 may set the is_external flag or change the DIE's name. */
16125
16126static void
16127fixup_partial_die (struct partial_die_info *part_die,
16128 struct dwarf2_cu *cu)
16129{
abc72ce4
DE
16130 /* Once we've fixed up a die, there's no point in doing so again.
16131 This also avoids a memory leak if we were to call
16132 guess_partial_die_structure_name multiple times. */
16133 if (part_die->fixup_called)
16134 return;
16135
72bf9492
DJ
16136 /* If we found a reference attribute and the DIE has no name, try
16137 to find a name in the referred to DIE. */
16138
16139 if (part_die->name == NULL && part_die->has_specification)
16140 {
16141 struct partial_die_info *spec_die;
72bf9492 16142
36586728
TT
16143 spec_die = find_partial_die (part_die->spec_offset,
16144 part_die->spec_is_dwz, cu);
72bf9492 16145
10b3939b 16146 fixup_partial_die (spec_die, cu);
72bf9492
DJ
16147
16148 if (spec_die->name)
16149 {
16150 part_die->name = spec_die->name;
16151
16152 /* Copy DW_AT_external attribute if it is set. */
16153 if (spec_die->is_external)
16154 part_die->is_external = spec_die->is_external;
16155 }
16156 }
16157
16158 /* Set default names for some unnamed DIEs. */
72bf9492
DJ
16159
16160 if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
2b1dbab0 16161 part_die->name = CP_ANONYMOUS_NAMESPACE_STR;
72bf9492 16162
abc72ce4
DE
16163 /* If there is no parent die to provide a namespace, and there are
16164 children, see if we can determine the namespace from their linkage
122d1940 16165 name. */
abc72ce4 16166 if (cu->language == language_cplus
8b70b953 16167 && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
abc72ce4
DE
16168 && part_die->die_parent == NULL
16169 && part_die->has_children
16170 && (part_die->tag == DW_TAG_class_type
16171 || part_die->tag == DW_TAG_structure_type
16172 || part_die->tag == DW_TAG_union_type))
16173 guess_partial_die_structure_name (part_die, cu);
16174
53832f31
TT
16175 /* GCC might emit a nameless struct or union that has a linkage
16176 name. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
16177 if (part_die->name == NULL
96408a79
SA
16178 && (part_die->tag == DW_TAG_class_type
16179 || part_die->tag == DW_TAG_interface_type
16180 || part_die->tag == DW_TAG_structure_type
16181 || part_die->tag == DW_TAG_union_type)
53832f31
TT
16182 && part_die->linkage_name != NULL)
16183 {
16184 char *demangled;
16185
8de20a37 16186 demangled = gdb_demangle (part_die->linkage_name, DMGL_TYPES);
53832f31
TT
16187 if (demangled)
16188 {
96408a79
SA
16189 const char *base;
16190
16191 /* Strip any leading namespaces/classes, keep only the base name.
16192 DW_AT_name for named DIEs does not contain the prefixes. */
16193 base = strrchr (demangled, ':');
16194 if (base && base > demangled && base[-1] == ':')
16195 base++;
16196 else
16197 base = demangled;
16198
34a68019
TT
16199 part_die->name
16200 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
16201 base, strlen (base));
53832f31
TT
16202 xfree (demangled);
16203 }
16204 }
16205
abc72ce4 16206 part_die->fixup_called = 1;
72bf9492
DJ
16207}
16208
a8329558 16209/* Read an attribute value described by an attribute form. */
c906108c 16210
d521ce57 16211static const gdb_byte *
dee91e82
DE
16212read_attribute_value (const struct die_reader_specs *reader,
16213 struct attribute *attr, unsigned form,
d521ce57 16214 const gdb_byte *info_ptr)
c906108c 16215{
dee91e82 16216 struct dwarf2_cu *cu = reader->cu;
3e29f34a
MR
16217 struct objfile *objfile = cu->objfile;
16218 struct gdbarch *gdbarch = get_objfile_arch (objfile);
dee91e82 16219 bfd *abfd = reader->abfd;
e7c27a73 16220 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
16221 unsigned int bytes_read;
16222 struct dwarf_block *blk;
16223
aead7601 16224 attr->form = (enum dwarf_form) form;
a8329558 16225 switch (form)
c906108c 16226 {
c906108c 16227 case DW_FORM_ref_addr:
ae411497 16228 if (cu->header.version == 2)
4568ecf9 16229 DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
ae411497 16230 else
4568ecf9
DE
16231 DW_UNSND (attr) = read_offset (abfd, info_ptr,
16232 &cu->header, &bytes_read);
ae411497
TT
16233 info_ptr += bytes_read;
16234 break;
36586728
TT
16235 case DW_FORM_GNU_ref_alt:
16236 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16237 info_ptr += bytes_read;
16238 break;
ae411497 16239 case DW_FORM_addr:
e7c27a73 16240 DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
3e29f34a 16241 DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
107d2387 16242 info_ptr += bytes_read;
c906108c
SS
16243 break;
16244 case DW_FORM_block2:
7b5a2f43 16245 blk = dwarf_alloc_block (cu);
c906108c
SS
16246 blk->size = read_2_bytes (abfd, info_ptr);
16247 info_ptr += 2;
16248 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16249 info_ptr += blk->size;
16250 DW_BLOCK (attr) = blk;
16251 break;
16252 case DW_FORM_block4:
7b5a2f43 16253 blk = dwarf_alloc_block (cu);
c906108c
SS
16254 blk->size = read_4_bytes (abfd, info_ptr);
16255 info_ptr += 4;
16256 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16257 info_ptr += blk->size;
16258 DW_BLOCK (attr) = blk;
16259 break;
16260 case DW_FORM_data2:
16261 DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
16262 info_ptr += 2;
16263 break;
16264 case DW_FORM_data4:
16265 DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
16266 info_ptr += 4;
16267 break;
16268 case DW_FORM_data8:
16269 DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
16270 info_ptr += 8;
16271 break;
2dc7f7b3
TT
16272 case DW_FORM_sec_offset:
16273 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16274 info_ptr += bytes_read;
16275 break;
c906108c 16276 case DW_FORM_string:
9b1c24c8 16277 DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
8285870a 16278 DW_STRING_IS_CANONICAL (attr) = 0;
c906108c
SS
16279 info_ptr += bytes_read;
16280 break;
4bdf3d34 16281 case DW_FORM_strp:
36586728
TT
16282 if (!cu->per_cu->is_dwz)
16283 {
16284 DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
16285 &bytes_read);
16286 DW_STRING_IS_CANONICAL (attr) = 0;
16287 info_ptr += bytes_read;
16288 break;
16289 }
16290 /* FALLTHROUGH */
16291 case DW_FORM_GNU_strp_alt:
16292 {
16293 struct dwz_file *dwz = dwarf2_get_dwz_file ();
16294 LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
16295 &bytes_read);
16296
16297 DW_STRING (attr) = read_indirect_string_from_dwz (dwz, str_offset);
16298 DW_STRING_IS_CANONICAL (attr) = 0;
16299 info_ptr += bytes_read;
16300 }
4bdf3d34 16301 break;
2dc7f7b3 16302 case DW_FORM_exprloc:
c906108c 16303 case DW_FORM_block:
7b5a2f43 16304 blk = dwarf_alloc_block (cu);
c906108c
SS
16305 blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16306 info_ptr += bytes_read;
16307 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16308 info_ptr += blk->size;
16309 DW_BLOCK (attr) = blk;
16310 break;
16311 case DW_FORM_block1:
7b5a2f43 16312 blk = dwarf_alloc_block (cu);
c906108c
SS
16313 blk->size = read_1_byte (abfd, info_ptr);
16314 info_ptr += 1;
16315 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16316 info_ptr += blk->size;
16317 DW_BLOCK (attr) = blk;
16318 break;
16319 case DW_FORM_data1:
16320 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16321 info_ptr += 1;
16322 break;
16323 case DW_FORM_flag:
16324 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16325 info_ptr += 1;
16326 break;
2dc7f7b3
TT
16327 case DW_FORM_flag_present:
16328 DW_UNSND (attr) = 1;
16329 break;
c906108c
SS
16330 case DW_FORM_sdata:
16331 DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
16332 info_ptr += bytes_read;
16333 break;
16334 case DW_FORM_udata:
16335 DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16336 info_ptr += bytes_read;
16337 break;
16338 case DW_FORM_ref1:
4568ecf9
DE
16339 DW_UNSND (attr) = (cu->header.offset.sect_off
16340 + read_1_byte (abfd, info_ptr));
c906108c
SS
16341 info_ptr += 1;
16342 break;
16343 case DW_FORM_ref2:
4568ecf9
DE
16344 DW_UNSND (attr) = (cu->header.offset.sect_off
16345 + read_2_bytes (abfd, info_ptr));
c906108c
SS
16346 info_ptr += 2;
16347 break;
16348 case DW_FORM_ref4:
4568ecf9
DE
16349 DW_UNSND (attr) = (cu->header.offset.sect_off
16350 + read_4_bytes (abfd, info_ptr));
c906108c
SS
16351 info_ptr += 4;
16352 break;
613e1657 16353 case DW_FORM_ref8:
4568ecf9
DE
16354 DW_UNSND (attr) = (cu->header.offset.sect_off
16355 + read_8_bytes (abfd, info_ptr));
613e1657
KB
16356 info_ptr += 8;
16357 break;
55f1336d 16358 case DW_FORM_ref_sig8:
ac9ec31b 16359 DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
348e048f
DE
16360 info_ptr += 8;
16361 break;
c906108c 16362 case DW_FORM_ref_udata:
4568ecf9
DE
16363 DW_UNSND (attr) = (cu->header.offset.sect_off
16364 + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
c906108c
SS
16365 info_ptr += bytes_read;
16366 break;
c906108c 16367 case DW_FORM_indirect:
a8329558
KW
16368 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16369 info_ptr += bytes_read;
dee91e82 16370 info_ptr = read_attribute_value (reader, attr, form, info_ptr);
a8329558 16371 break;
3019eac3
DE
16372 case DW_FORM_GNU_addr_index:
16373 if (reader->dwo_file == NULL)
16374 {
16375 /* For now flag a hard error.
16376 Later we can turn this into a complaint. */
16377 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16378 dwarf_form_name (form),
16379 bfd_get_filename (abfd));
16380 }
16381 DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
16382 info_ptr += bytes_read;
16383 break;
16384 case DW_FORM_GNU_str_index:
16385 if (reader->dwo_file == NULL)
16386 {
16387 /* For now flag a hard error.
16388 Later we can turn this into a complaint if warranted. */
16389 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16390 dwarf_form_name (form),
16391 bfd_get_filename (abfd));
16392 }
16393 {
16394 ULONGEST str_index =
16395 read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16396
342587c4 16397 DW_STRING (attr) = read_str_index (reader, str_index);
3019eac3
DE
16398 DW_STRING_IS_CANONICAL (attr) = 0;
16399 info_ptr += bytes_read;
16400 }
16401 break;
c906108c 16402 default:
8a3fe4f8 16403 error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
659b0389
ML
16404 dwarf_form_name (form),
16405 bfd_get_filename (abfd));
c906108c 16406 }
28e94949 16407
36586728 16408 /* Super hack. */
7771576e 16409 if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
36586728
TT
16410 attr->form = DW_FORM_GNU_ref_alt;
16411
28e94949
JB
16412 /* We have seen instances where the compiler tried to emit a byte
16413 size attribute of -1 which ended up being encoded as an unsigned
16414 0xffffffff. Although 0xffffffff is technically a valid size value,
16415 an object of this size seems pretty unlikely so we can relatively
16416 safely treat these cases as if the size attribute was invalid and
16417 treat them as zero by default. */
16418 if (attr->name == DW_AT_byte_size
16419 && form == DW_FORM_data4
16420 && DW_UNSND (attr) >= 0xffffffff)
01c66ae6
JB
16421 {
16422 complaint
16423 (&symfile_complaints,
43bbcdc2
PH
16424 _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
16425 hex_string (DW_UNSND (attr)));
01c66ae6
JB
16426 DW_UNSND (attr) = 0;
16427 }
28e94949 16428
c906108c
SS
16429 return info_ptr;
16430}
16431
a8329558
KW
16432/* Read an attribute described by an abbreviated attribute. */
16433
d521ce57 16434static const gdb_byte *
dee91e82
DE
16435read_attribute (const struct die_reader_specs *reader,
16436 struct attribute *attr, struct attr_abbrev *abbrev,
d521ce57 16437 const gdb_byte *info_ptr)
a8329558
KW
16438{
16439 attr->name = abbrev->name;
dee91e82 16440 return read_attribute_value (reader, attr, abbrev->form, info_ptr);
a8329558
KW
16441}
16442
0963b4bd 16443/* Read dwarf information from a buffer. */
c906108c
SS
16444
16445static unsigned int
a1855c1d 16446read_1_byte (bfd *abfd, const gdb_byte *buf)
c906108c 16447{
fe1b8b76 16448 return bfd_get_8 (abfd, buf);
c906108c
SS
16449}
16450
16451static int
a1855c1d 16452read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
c906108c 16453{
fe1b8b76 16454 return bfd_get_signed_8 (abfd, buf);
c906108c
SS
16455}
16456
16457static unsigned int
a1855c1d 16458read_2_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16459{
fe1b8b76 16460 return bfd_get_16 (abfd, buf);
c906108c
SS
16461}
16462
21ae7a4d 16463static int
a1855c1d 16464read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
21ae7a4d
JK
16465{
16466 return bfd_get_signed_16 (abfd, buf);
16467}
16468
c906108c 16469static unsigned int
a1855c1d 16470read_4_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16471{
fe1b8b76 16472 return bfd_get_32 (abfd, buf);
c906108c
SS
16473}
16474
21ae7a4d 16475static int
a1855c1d 16476read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
21ae7a4d
JK
16477{
16478 return bfd_get_signed_32 (abfd, buf);
16479}
16480
93311388 16481static ULONGEST
a1855c1d 16482read_8_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16483{
fe1b8b76 16484 return bfd_get_64 (abfd, buf);
c906108c
SS
16485}
16486
16487static CORE_ADDR
d521ce57 16488read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
891d2f0b 16489 unsigned int *bytes_read)
c906108c 16490{
e7c27a73 16491 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
16492 CORE_ADDR retval = 0;
16493
107d2387 16494 if (cu_header->signed_addr_p)
c906108c 16495 {
107d2387
AC
16496 switch (cu_header->addr_size)
16497 {
16498 case 2:
fe1b8b76 16499 retval = bfd_get_signed_16 (abfd, buf);
107d2387
AC
16500 break;
16501 case 4:
fe1b8b76 16502 retval = bfd_get_signed_32 (abfd, buf);
107d2387
AC
16503 break;
16504 case 8:
fe1b8b76 16505 retval = bfd_get_signed_64 (abfd, buf);
107d2387
AC
16506 break;
16507 default:
8e65ff28 16508 internal_error (__FILE__, __LINE__,
e2e0b3e5 16509 _("read_address: bad switch, signed [in module %s]"),
659b0389 16510 bfd_get_filename (abfd));
107d2387
AC
16511 }
16512 }
16513 else
16514 {
16515 switch (cu_header->addr_size)
16516 {
16517 case 2:
fe1b8b76 16518 retval = bfd_get_16 (abfd, buf);
107d2387
AC
16519 break;
16520 case 4:
fe1b8b76 16521 retval = bfd_get_32 (abfd, buf);
107d2387
AC
16522 break;
16523 case 8:
fe1b8b76 16524 retval = bfd_get_64 (abfd, buf);
107d2387
AC
16525 break;
16526 default:
8e65ff28 16527 internal_error (__FILE__, __LINE__,
a73c6dcd
MS
16528 _("read_address: bad switch, "
16529 "unsigned [in module %s]"),
659b0389 16530 bfd_get_filename (abfd));
107d2387 16531 }
c906108c 16532 }
64367e0a 16533
107d2387
AC
16534 *bytes_read = cu_header->addr_size;
16535 return retval;
c906108c
SS
16536}
16537
f7ef9339 16538/* Read the initial length from a section. The (draft) DWARF 3
613e1657
KB
16539 specification allows the initial length to take up either 4 bytes
16540 or 12 bytes. If the first 4 bytes are 0xffffffff, then the next 8
16541 bytes describe the length and all offsets will be 8 bytes in length
16542 instead of 4.
16543
f7ef9339
KB
16544 An older, non-standard 64-bit format is also handled by this
16545 function. The older format in question stores the initial length
16546 as an 8-byte quantity without an escape value. Lengths greater
16547 than 2^32 aren't very common which means that the initial 4 bytes
16548 is almost always zero. Since a length value of zero doesn't make
16549 sense for the 32-bit format, this initial zero can be considered to
16550 be an escape value which indicates the presence of the older 64-bit
16551 format. As written, the code can't detect (old format) lengths
917c78fc
MK
16552 greater than 4GB. If it becomes necessary to handle lengths
16553 somewhat larger than 4GB, we could allow other small values (such
16554 as the non-sensical values of 1, 2, and 3) to also be used as
16555 escape values indicating the presence of the old format.
f7ef9339 16556
917c78fc
MK
16557 The value returned via bytes_read should be used to increment the
16558 relevant pointer after calling read_initial_length().
c764a876 16559
613e1657
KB
16560 [ Note: read_initial_length() and read_offset() are based on the
16561 document entitled "DWARF Debugging Information Format", revision
f7ef9339 16562 3, draft 8, dated November 19, 2001. This document was obtained
613e1657
KB
16563 from:
16564
f7ef9339 16565 http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
6e70227d 16566
613e1657
KB
16567 This document is only a draft and is subject to change. (So beware.)
16568
f7ef9339 16569 Details regarding the older, non-standard 64-bit format were
917c78fc
MK
16570 determined empirically by examining 64-bit ELF files produced by
16571 the SGI toolchain on an IRIX 6.5 machine.
f7ef9339
KB
16572
16573 - Kevin, July 16, 2002
613e1657
KB
16574 ] */
16575
16576static LONGEST
d521ce57 16577read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
613e1657 16578{
fe1b8b76 16579 LONGEST length = bfd_get_32 (abfd, buf);
613e1657 16580
dd373385 16581 if (length == 0xffffffff)
613e1657 16582 {
fe1b8b76 16583 length = bfd_get_64 (abfd, buf + 4);
613e1657 16584 *bytes_read = 12;
613e1657 16585 }
dd373385 16586 else if (length == 0)
f7ef9339 16587 {
dd373385 16588 /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX. */
fe1b8b76 16589 length = bfd_get_64 (abfd, buf);
f7ef9339 16590 *bytes_read = 8;
f7ef9339 16591 }
613e1657
KB
16592 else
16593 {
16594 *bytes_read = 4;
613e1657
KB
16595 }
16596
c764a876
DE
16597 return length;
16598}
dd373385 16599
c764a876
DE
16600/* Cover function for read_initial_length.
16601 Returns the length of the object at BUF, and stores the size of the
16602 initial length in *BYTES_READ and stores the size that offsets will be in
16603 *OFFSET_SIZE.
16604 If the initial length size is not equivalent to that specified in
16605 CU_HEADER then issue a complaint.
16606 This is useful when reading non-comp-unit headers. */
dd373385 16607
c764a876 16608static LONGEST
d521ce57 16609read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
c764a876
DE
16610 const struct comp_unit_head *cu_header,
16611 unsigned int *bytes_read,
16612 unsigned int *offset_size)
16613{
16614 LONGEST length = read_initial_length (abfd, buf, bytes_read);
16615
16616 gdb_assert (cu_header->initial_length_size == 4
16617 || cu_header->initial_length_size == 8
16618 || cu_header->initial_length_size == 12);
16619
16620 if (cu_header->initial_length_size != *bytes_read)
16621 complaint (&symfile_complaints,
16622 _("intermixed 32-bit and 64-bit DWARF sections"));
dd373385 16623
c764a876 16624 *offset_size = (*bytes_read == 4) ? 4 : 8;
dd373385 16625 return length;
613e1657
KB
16626}
16627
16628/* Read an offset from the data stream. The size of the offset is
917c78fc 16629 given by cu_header->offset_size. */
613e1657
KB
16630
16631static LONGEST
d521ce57
TT
16632read_offset (bfd *abfd, const gdb_byte *buf,
16633 const struct comp_unit_head *cu_header,
891d2f0b 16634 unsigned int *bytes_read)
c764a876
DE
16635{
16636 LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
9a619af0 16637
c764a876
DE
16638 *bytes_read = cu_header->offset_size;
16639 return offset;
16640}
16641
16642/* Read an offset from the data stream. */
16643
16644static LONGEST
d521ce57 16645read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
613e1657
KB
16646{
16647 LONGEST retval = 0;
16648
c764a876 16649 switch (offset_size)
613e1657
KB
16650 {
16651 case 4:
fe1b8b76 16652 retval = bfd_get_32 (abfd, buf);
613e1657
KB
16653 break;
16654 case 8:
fe1b8b76 16655 retval = bfd_get_64 (abfd, buf);
613e1657
KB
16656 break;
16657 default:
8e65ff28 16658 internal_error (__FILE__, __LINE__,
c764a876 16659 _("read_offset_1: bad switch [in module %s]"),
659b0389 16660 bfd_get_filename (abfd));
613e1657
KB
16661 }
16662
917c78fc 16663 return retval;
613e1657
KB
16664}
16665
d521ce57
TT
16666static const gdb_byte *
16667read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
c906108c
SS
16668{
16669 /* If the size of a host char is 8 bits, we can return a pointer
16670 to the buffer, otherwise we have to copy the data to a buffer
16671 allocated on the temporary obstack. */
4bdf3d34 16672 gdb_assert (HOST_CHAR_BIT == 8);
c906108c 16673 return buf;
c906108c
SS
16674}
16675
d521ce57
TT
16676static const char *
16677read_direct_string (bfd *abfd, const gdb_byte *buf,
16678 unsigned int *bytes_read_ptr)
c906108c
SS
16679{
16680 /* If the size of a host char is 8 bits, we can return a pointer
16681 to the string, otherwise we have to copy the string to a buffer
16682 allocated on the temporary obstack. */
4bdf3d34 16683 gdb_assert (HOST_CHAR_BIT == 8);
c906108c
SS
16684 if (*buf == '\0')
16685 {
16686 *bytes_read_ptr = 1;
16687 return NULL;
16688 }
d521ce57
TT
16689 *bytes_read_ptr = strlen ((const char *) buf) + 1;
16690 return (const char *) buf;
4bdf3d34
JJ
16691}
16692
d521ce57 16693static const char *
cf2c3c16 16694read_indirect_string_at_offset (bfd *abfd, LONGEST str_offset)
4bdf3d34 16695{
be391dca 16696 dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->str);
dce234bc 16697 if (dwarf2_per_objfile->str.buffer == NULL)
cf2c3c16
TT
16698 error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
16699 bfd_get_filename (abfd));
dce234bc 16700 if (str_offset >= dwarf2_per_objfile->str.size)
cf2c3c16
TT
16701 error (_("DW_FORM_strp pointing outside of "
16702 ".debug_str section [in module %s]"),
16703 bfd_get_filename (abfd));
4bdf3d34 16704 gdb_assert (HOST_CHAR_BIT == 8);
dce234bc 16705 if (dwarf2_per_objfile->str.buffer[str_offset] == '\0')
4bdf3d34 16706 return NULL;
d521ce57 16707 return (const char *) (dwarf2_per_objfile->str.buffer + str_offset);
c906108c
SS
16708}
16709
36586728
TT
16710/* Read a string at offset STR_OFFSET in the .debug_str section from
16711 the .dwz file DWZ. Throw an error if the offset is too large. If
16712 the string consists of a single NUL byte, return NULL; otherwise
16713 return a pointer to the string. */
16714
d521ce57 16715static const char *
36586728
TT
16716read_indirect_string_from_dwz (struct dwz_file *dwz, LONGEST str_offset)
16717{
16718 dwarf2_read_section (dwarf2_per_objfile->objfile, &dwz->str);
16719
16720 if (dwz->str.buffer == NULL)
16721 error (_("DW_FORM_GNU_strp_alt used without .debug_str "
16722 "section [in module %s]"),
16723 bfd_get_filename (dwz->dwz_bfd));
16724 if (str_offset >= dwz->str.size)
16725 error (_("DW_FORM_GNU_strp_alt pointing outside of "
16726 ".debug_str section [in module %s]"),
16727 bfd_get_filename (dwz->dwz_bfd));
16728 gdb_assert (HOST_CHAR_BIT == 8);
16729 if (dwz->str.buffer[str_offset] == '\0')
16730 return NULL;
d521ce57 16731 return (const char *) (dwz->str.buffer + str_offset);
36586728
TT
16732}
16733
d521ce57
TT
16734static const char *
16735read_indirect_string (bfd *abfd, const gdb_byte *buf,
cf2c3c16
TT
16736 const struct comp_unit_head *cu_header,
16737 unsigned int *bytes_read_ptr)
16738{
16739 LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
16740
16741 return read_indirect_string_at_offset (abfd, str_offset);
16742}
16743
12df843f 16744static ULONGEST
d521ce57
TT
16745read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
16746 unsigned int *bytes_read_ptr)
c906108c 16747{
12df843f 16748 ULONGEST result;
ce5d95e1 16749 unsigned int num_read;
c906108c
SS
16750 int i, shift;
16751 unsigned char byte;
16752
16753 result = 0;
16754 shift = 0;
16755 num_read = 0;
16756 i = 0;
16757 while (1)
16758 {
fe1b8b76 16759 byte = bfd_get_8 (abfd, buf);
c906108c
SS
16760 buf++;
16761 num_read++;
12df843f 16762 result |= ((ULONGEST) (byte & 127) << shift);
c906108c
SS
16763 if ((byte & 128) == 0)
16764 {
16765 break;
16766 }
16767 shift += 7;
16768 }
16769 *bytes_read_ptr = num_read;
16770 return result;
16771}
16772
12df843f 16773static LONGEST
d521ce57
TT
16774read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
16775 unsigned int *bytes_read_ptr)
c906108c 16776{
12df843f 16777 LONGEST result;
77e0b926 16778 int i, shift, num_read;
c906108c
SS
16779 unsigned char byte;
16780
16781 result = 0;
16782 shift = 0;
c906108c
SS
16783 num_read = 0;
16784 i = 0;
16785 while (1)
16786 {
fe1b8b76 16787 byte = bfd_get_8 (abfd, buf);
c906108c
SS
16788 buf++;
16789 num_read++;
12df843f 16790 result |= ((LONGEST) (byte & 127) << shift);
c906108c
SS
16791 shift += 7;
16792 if ((byte & 128) == 0)
16793 {
16794 break;
16795 }
16796 }
77e0b926 16797 if ((shift < 8 * sizeof (result)) && (byte & 0x40))
12df843f 16798 result |= -(((LONGEST) 1) << shift);
c906108c
SS
16799 *bytes_read_ptr = num_read;
16800 return result;
16801}
16802
3019eac3
DE
16803/* Given index ADDR_INDEX in .debug_addr, fetch the value.
16804 ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
16805 ADDR_SIZE is the size of addresses from the CU header. */
16806
16807static CORE_ADDR
16808read_addr_index_1 (unsigned int addr_index, ULONGEST addr_base, int addr_size)
16809{
16810 struct objfile *objfile = dwarf2_per_objfile->objfile;
16811 bfd *abfd = objfile->obfd;
16812 const gdb_byte *info_ptr;
16813
16814 dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
16815 if (dwarf2_per_objfile->addr.buffer == NULL)
16816 error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
4262abfb 16817 objfile_name (objfile));
3019eac3
DE
16818 if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
16819 error (_("DW_FORM_addr_index pointing outside of "
16820 ".debug_addr section [in module %s]"),
4262abfb 16821 objfile_name (objfile));
3019eac3
DE
16822 info_ptr = (dwarf2_per_objfile->addr.buffer
16823 + addr_base + addr_index * addr_size);
16824 if (addr_size == 4)
16825 return bfd_get_32 (abfd, info_ptr);
16826 else
16827 return bfd_get_64 (abfd, info_ptr);
16828}
16829
16830/* Given index ADDR_INDEX in .debug_addr, fetch the value. */
16831
16832static CORE_ADDR
16833read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
16834{
16835 return read_addr_index_1 (addr_index, cu->addr_base, cu->header.addr_size);
16836}
16837
16838/* Given a pointer to an leb128 value, fetch the value from .debug_addr. */
16839
16840static CORE_ADDR
d521ce57 16841read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
3019eac3
DE
16842 unsigned int *bytes_read)
16843{
16844 bfd *abfd = cu->objfile->obfd;
16845 unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
16846
16847 return read_addr_index (cu, addr_index);
16848}
16849
16850/* Data structure to pass results from dwarf2_read_addr_index_reader
16851 back to dwarf2_read_addr_index. */
16852
16853struct dwarf2_read_addr_index_data
16854{
16855 ULONGEST addr_base;
16856 int addr_size;
16857};
16858
16859/* die_reader_func for dwarf2_read_addr_index. */
16860
16861static void
16862dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
d521ce57 16863 const gdb_byte *info_ptr,
3019eac3
DE
16864 struct die_info *comp_unit_die,
16865 int has_children,
16866 void *data)
16867{
16868 struct dwarf2_cu *cu = reader->cu;
16869 struct dwarf2_read_addr_index_data *aidata =
16870 (struct dwarf2_read_addr_index_data *) data;
16871
16872 aidata->addr_base = cu->addr_base;
16873 aidata->addr_size = cu->header.addr_size;
16874}
16875
16876/* Given an index in .debug_addr, fetch the value.
16877 NOTE: This can be called during dwarf expression evaluation,
16878 long after the debug information has been read, and thus per_cu->cu
16879 may no longer exist. */
16880
16881CORE_ADDR
16882dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
16883 unsigned int addr_index)
16884{
16885 struct objfile *objfile = per_cu->objfile;
16886 struct dwarf2_cu *cu = per_cu->cu;
16887 ULONGEST addr_base;
16888 int addr_size;
16889
16890 /* This is intended to be called from outside this file. */
16891 dw2_setup (objfile);
16892
16893 /* We need addr_base and addr_size.
16894 If we don't have PER_CU->cu, we have to get it.
16895 Nasty, but the alternative is storing the needed info in PER_CU,
16896 which at this point doesn't seem justified: it's not clear how frequently
16897 it would get used and it would increase the size of every PER_CU.
16898 Entry points like dwarf2_per_cu_addr_size do a similar thing
16899 so we're not in uncharted territory here.
16900 Alas we need to be a bit more complicated as addr_base is contained
16901 in the DIE.
16902
16903 We don't need to read the entire CU(/TU).
16904 We just need the header and top level die.
a1b64ce1 16905
3019eac3 16906 IWBN to use the aging mechanism to let us lazily later discard the CU.
a1b64ce1 16907 For now we skip this optimization. */
3019eac3
DE
16908
16909 if (cu != NULL)
16910 {
16911 addr_base = cu->addr_base;
16912 addr_size = cu->header.addr_size;
16913 }
16914 else
16915 {
16916 struct dwarf2_read_addr_index_data aidata;
16917
a1b64ce1
DE
16918 /* Note: We can't use init_cutu_and_read_dies_simple here,
16919 we need addr_base. */
16920 init_cutu_and_read_dies (per_cu, NULL, 0, 0,
16921 dwarf2_read_addr_index_reader, &aidata);
3019eac3
DE
16922 addr_base = aidata.addr_base;
16923 addr_size = aidata.addr_size;
16924 }
16925
16926 return read_addr_index_1 (addr_index, addr_base, addr_size);
16927}
16928
57d63ce2
DE
16929/* Given a DW_FORM_GNU_str_index, fetch the string.
16930 This is only used by the Fission support. */
3019eac3 16931
d521ce57 16932static const char *
342587c4 16933read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
3019eac3
DE
16934{
16935 struct objfile *objfile = dwarf2_per_objfile->objfile;
c5164cbc 16936 const char *objf_name = objfile_name (objfile);
3019eac3 16937 bfd *abfd = objfile->obfd;
342587c4 16938 struct dwarf2_cu *cu = reader->cu;
73869dc2
DE
16939 struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
16940 struct dwarf2_section_info *str_offsets_section =
16941 &reader->dwo_file->sections.str_offsets;
d521ce57 16942 const gdb_byte *info_ptr;
3019eac3 16943 ULONGEST str_offset;
57d63ce2 16944 static const char form_name[] = "DW_FORM_GNU_str_index";
3019eac3 16945
73869dc2
DE
16946 dwarf2_read_section (objfile, str_section);
16947 dwarf2_read_section (objfile, str_offsets_section);
16948 if (str_section->buffer == NULL)
57d63ce2 16949 error (_("%s used without .debug_str.dwo section"
3019eac3 16950 " in CU at offset 0x%lx [in module %s]"),
c5164cbc 16951 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16952 if (str_offsets_section->buffer == NULL)
57d63ce2 16953 error (_("%s used without .debug_str_offsets.dwo section"
3019eac3 16954 " in CU at offset 0x%lx [in module %s]"),
c5164cbc 16955 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16956 if (str_index * cu->header.offset_size >= str_offsets_section->size)
57d63ce2 16957 error (_("%s pointing outside of .debug_str_offsets.dwo"
3019eac3 16958 " section in CU at offset 0x%lx [in module %s]"),
c5164cbc 16959 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16960 info_ptr = (str_offsets_section->buffer
3019eac3
DE
16961 + str_index * cu->header.offset_size);
16962 if (cu->header.offset_size == 4)
16963 str_offset = bfd_get_32 (abfd, info_ptr);
16964 else
16965 str_offset = bfd_get_64 (abfd, info_ptr);
73869dc2 16966 if (str_offset >= str_section->size)
57d63ce2 16967 error (_("Offset from %s pointing outside of"
3019eac3 16968 " .debug_str.dwo section in CU at offset 0x%lx [in module %s]"),
c5164cbc 16969 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16970 return (const char *) (str_section->buffer + str_offset);
3019eac3
DE
16971}
16972
3019eac3
DE
16973/* Return the length of an LEB128 number in BUF. */
16974
16975static int
16976leb128_size (const gdb_byte *buf)
16977{
16978 const gdb_byte *begin = buf;
16979 gdb_byte byte;
16980
16981 while (1)
16982 {
16983 byte = *buf++;
16984 if ((byte & 128) == 0)
16985 return buf - begin;
16986 }
16987}
16988
c906108c 16989static void
e142c38c 16990set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
c906108c
SS
16991{
16992 switch (lang)
16993 {
16994 case DW_LANG_C89:
76bee0cc 16995 case DW_LANG_C99:
0cfd832f 16996 case DW_LANG_C11:
c906108c 16997 case DW_LANG_C:
d1be3247 16998 case DW_LANG_UPC:
e142c38c 16999 cu->language = language_c;
c906108c
SS
17000 break;
17001 case DW_LANG_C_plus_plus:
0cfd832f
MW
17002 case DW_LANG_C_plus_plus_11:
17003 case DW_LANG_C_plus_plus_14:
e142c38c 17004 cu->language = language_cplus;
c906108c 17005 break;
6aecb9c2
JB
17006 case DW_LANG_D:
17007 cu->language = language_d;
17008 break;
c906108c
SS
17009 case DW_LANG_Fortran77:
17010 case DW_LANG_Fortran90:
b21b22e0 17011 case DW_LANG_Fortran95:
f7de9aab
MW
17012 case DW_LANG_Fortran03:
17013 case DW_LANG_Fortran08:
e142c38c 17014 cu->language = language_fortran;
c906108c 17015 break;
a766d390
DE
17016 case DW_LANG_Go:
17017 cu->language = language_go;
17018 break;
c906108c 17019 case DW_LANG_Mips_Assembler:
e142c38c 17020 cu->language = language_asm;
c906108c 17021 break;
bebd888e 17022 case DW_LANG_Java:
e142c38c 17023 cu->language = language_java;
bebd888e 17024 break;
c906108c 17025 case DW_LANG_Ada83:
8aaf0b47 17026 case DW_LANG_Ada95:
bc5f45f8
JB
17027 cu->language = language_ada;
17028 break;
72019c9c
GM
17029 case DW_LANG_Modula2:
17030 cu->language = language_m2;
17031 break;
fe8e67fd
PM
17032 case DW_LANG_Pascal83:
17033 cu->language = language_pascal;
17034 break;
22566fbd
DJ
17035 case DW_LANG_ObjC:
17036 cu->language = language_objc;
17037 break;
c906108c
SS
17038 case DW_LANG_Cobol74:
17039 case DW_LANG_Cobol85:
c906108c 17040 default:
e142c38c 17041 cu->language = language_minimal;
c906108c
SS
17042 break;
17043 }
e142c38c 17044 cu->language_defn = language_def (cu->language);
c906108c
SS
17045}
17046
17047/* Return the named attribute or NULL if not there. */
17048
17049static struct attribute *
e142c38c 17050dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
c906108c 17051{
a48e046c 17052 for (;;)
c906108c 17053 {
a48e046c
TT
17054 unsigned int i;
17055 struct attribute *spec = NULL;
17056
17057 for (i = 0; i < die->num_attrs; ++i)
17058 {
17059 if (die->attrs[i].name == name)
17060 return &die->attrs[i];
17061 if (die->attrs[i].name == DW_AT_specification
17062 || die->attrs[i].name == DW_AT_abstract_origin)
17063 spec = &die->attrs[i];
17064 }
17065
17066 if (!spec)
17067 break;
c906108c 17068
f2f0e013 17069 die = follow_die_ref (die, spec, &cu);
f2f0e013 17070 }
c5aa993b 17071
c906108c
SS
17072 return NULL;
17073}
17074
348e048f
DE
17075/* Return the named attribute or NULL if not there,
17076 but do not follow DW_AT_specification, etc.
17077 This is for use in contexts where we're reading .debug_types dies.
17078 Following DW_AT_specification, DW_AT_abstract_origin will take us
17079 back up the chain, and we want to go down. */
17080
17081static struct attribute *
45e58e77 17082dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
348e048f
DE
17083{
17084 unsigned int i;
17085
17086 for (i = 0; i < die->num_attrs; ++i)
17087 if (die->attrs[i].name == name)
17088 return &die->attrs[i];
17089
17090 return NULL;
17091}
17092
7d45c7c3
KB
17093/* Return the string associated with a string-typed attribute, or NULL if it
17094 is either not found or is of an incorrect type. */
17095
17096static const char *
17097dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
17098{
17099 struct attribute *attr;
17100 const char *str = NULL;
17101
17102 attr = dwarf2_attr (die, name, cu);
17103
17104 if (attr != NULL)
17105 {
17106 if (attr->form == DW_FORM_strp || attr->form == DW_FORM_string
17107 || attr->form == DW_FORM_GNU_strp_alt)
17108 str = DW_STRING (attr);
17109 else
17110 complaint (&symfile_complaints,
17111 _("string type expected for attribute %s for "
17112 "DIE at 0x%x in module %s"),
17113 dwarf_attr_name (name), die->offset.sect_off,
17114 objfile_name (cu->objfile));
17115 }
17116
17117 return str;
17118}
17119
05cf31d1
JB
17120/* Return non-zero iff the attribute NAME is defined for the given DIE,
17121 and holds a non-zero value. This function should only be used for
2dc7f7b3 17122 DW_FORM_flag or DW_FORM_flag_present attributes. */
05cf31d1
JB
17123
17124static int
17125dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
17126{
17127 struct attribute *attr = dwarf2_attr (die, name, cu);
17128
17129 return (attr && DW_UNSND (attr));
17130}
17131
3ca72b44 17132static int
e142c38c 17133die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
3ca72b44 17134{
05cf31d1
JB
17135 /* A DIE is a declaration if it has a DW_AT_declaration attribute
17136 which value is non-zero. However, we have to be careful with
17137 DIEs having a DW_AT_specification attribute, because dwarf2_attr()
17138 (via dwarf2_flag_true_p) follows this attribute. So we may
17139 end up accidently finding a declaration attribute that belongs
17140 to a different DIE referenced by the specification attribute,
17141 even though the given DIE does not have a declaration attribute. */
17142 return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
17143 && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
3ca72b44
AC
17144}
17145
63d06c5c 17146/* Return the die giving the specification for DIE, if there is
f2f0e013 17147 one. *SPEC_CU is the CU containing DIE on input, and the CU
edb3359d
DJ
17148 containing the return value on output. If there is no
17149 specification, but there is an abstract origin, that is
17150 returned. */
63d06c5c
DC
17151
17152static struct die_info *
f2f0e013 17153die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
63d06c5c 17154{
f2f0e013
DJ
17155 struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
17156 *spec_cu);
63d06c5c 17157
edb3359d
DJ
17158 if (spec_attr == NULL)
17159 spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
17160
63d06c5c
DC
17161 if (spec_attr == NULL)
17162 return NULL;
17163 else
f2f0e013 17164 return follow_die_ref (die, spec_attr, spec_cu);
63d06c5c 17165}
c906108c 17166
debd256d 17167/* Free the line_header structure *LH, and any arrays and strings it
ae2de4f8
DE
17168 refers to.
17169 NOTE: This is also used as a "cleanup" function. */
17170
debd256d
JB
17171static void
17172free_line_header (struct line_header *lh)
17173{
17174 if (lh->standard_opcode_lengths)
a8bc7b56 17175 xfree (lh->standard_opcode_lengths);
debd256d
JB
17176
17177 /* Remember that all the lh->file_names[i].name pointers are
17178 pointers into debug_line_buffer, and don't need to be freed. */
17179 if (lh->file_names)
a8bc7b56 17180 xfree (lh->file_names);
debd256d
JB
17181
17182 /* Similarly for the include directory names. */
17183 if (lh->include_dirs)
a8bc7b56 17184 xfree (lh->include_dirs);
debd256d 17185
a8bc7b56 17186 xfree (lh);
debd256d
JB
17187}
17188
527f3840
JK
17189/* Stub for free_line_header to match void * callback types. */
17190
17191static void
17192free_line_header_voidp (void *arg)
17193{
17194 struct line_header *lh = arg;
17195
17196 free_line_header (lh);
17197}
17198
debd256d 17199/* Add an entry to LH's include directory table. */
ae2de4f8 17200
debd256d 17201static void
d521ce57 17202add_include_dir (struct line_header *lh, const char *include_dir)
c906108c 17203{
27e0867f
DE
17204 if (dwarf_line_debug >= 2)
17205 fprintf_unfiltered (gdb_stdlog, "Adding dir %u: %s\n",
17206 lh->num_include_dirs + 1, include_dir);
17207
debd256d
JB
17208 /* Grow the array if necessary. */
17209 if (lh->include_dirs_size == 0)
c5aa993b 17210 {
debd256d
JB
17211 lh->include_dirs_size = 1; /* for testing */
17212 lh->include_dirs = xmalloc (lh->include_dirs_size
17213 * sizeof (*lh->include_dirs));
17214 }
17215 else if (lh->num_include_dirs >= lh->include_dirs_size)
17216 {
17217 lh->include_dirs_size *= 2;
17218 lh->include_dirs = xrealloc (lh->include_dirs,
17219 (lh->include_dirs_size
17220 * sizeof (*lh->include_dirs)));
c5aa993b 17221 }
c906108c 17222
debd256d
JB
17223 lh->include_dirs[lh->num_include_dirs++] = include_dir;
17224}
6e70227d 17225
debd256d 17226/* Add an entry to LH's file name table. */
ae2de4f8 17227
debd256d
JB
17228static void
17229add_file_name (struct line_header *lh,
d521ce57 17230 const char *name,
debd256d
JB
17231 unsigned int dir_index,
17232 unsigned int mod_time,
17233 unsigned int length)
17234{
17235 struct file_entry *fe;
17236
27e0867f
DE
17237 if (dwarf_line_debug >= 2)
17238 fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
17239 lh->num_file_names + 1, name);
17240
debd256d
JB
17241 /* Grow the array if necessary. */
17242 if (lh->file_names_size == 0)
17243 {
17244 lh->file_names_size = 1; /* for testing */
17245 lh->file_names = xmalloc (lh->file_names_size
17246 * sizeof (*lh->file_names));
17247 }
17248 else if (lh->num_file_names >= lh->file_names_size)
17249 {
17250 lh->file_names_size *= 2;
17251 lh->file_names = xrealloc (lh->file_names,
17252 (lh->file_names_size
17253 * sizeof (*lh->file_names)));
17254 }
17255
17256 fe = &lh->file_names[lh->num_file_names++];
17257 fe->name = name;
17258 fe->dir_index = dir_index;
17259 fe->mod_time = mod_time;
17260 fe->length = length;
aaa75496 17261 fe->included_p = 0;
cb1df416 17262 fe->symtab = NULL;
debd256d 17263}
6e70227d 17264
83769d0b 17265/* A convenience function to find the proper .debug_line section for a CU. */
36586728
TT
17266
17267static struct dwarf2_section_info *
17268get_debug_line_section (struct dwarf2_cu *cu)
17269{
17270 struct dwarf2_section_info *section;
17271
17272 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
17273 DWO file. */
17274 if (cu->dwo_unit && cu->per_cu->is_debug_types)
17275 section = &cu->dwo_unit->dwo_file->sections.line;
17276 else if (cu->per_cu->is_dwz)
17277 {
17278 struct dwz_file *dwz = dwarf2_get_dwz_file ();
17279
17280 section = &dwz->line;
17281 }
17282 else
17283 section = &dwarf2_per_objfile->line;
17284
17285 return section;
17286}
17287
debd256d 17288/* Read the statement program header starting at OFFSET in
3019eac3 17289 .debug_line, or .debug_line.dwo. Return a pointer
6502dd73 17290 to a struct line_header, allocated using xmalloc.
cd366ee8
DE
17291 Returns NULL if there is a problem reading the header, e.g., if it
17292 has a version we don't understand.
debd256d
JB
17293
17294 NOTE: the strings in the include directory and file name tables of
3019eac3
DE
17295 the returned object point into the dwarf line section buffer,
17296 and must not be freed. */
ae2de4f8 17297
debd256d 17298static struct line_header *
3019eac3 17299dwarf_decode_line_header (unsigned int offset, struct dwarf2_cu *cu)
debd256d
JB
17300{
17301 struct cleanup *back_to;
17302 struct line_header *lh;
d521ce57 17303 const gdb_byte *line_ptr;
c764a876 17304 unsigned int bytes_read, offset_size;
debd256d 17305 int i;
d521ce57 17306 const char *cur_dir, *cur_file;
3019eac3
DE
17307 struct dwarf2_section_info *section;
17308 bfd *abfd;
17309
36586728 17310 section = get_debug_line_section (cu);
3019eac3
DE
17311 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
17312 if (section->buffer == NULL)
debd256d 17313 {
3019eac3
DE
17314 if (cu->dwo_unit && cu->per_cu->is_debug_types)
17315 complaint (&symfile_complaints, _("missing .debug_line.dwo section"));
17316 else
17317 complaint (&symfile_complaints, _("missing .debug_line section"));
debd256d
JB
17318 return 0;
17319 }
17320
fceca515
DE
17321 /* We can't do this until we know the section is non-empty.
17322 Only then do we know we have such a section. */
a32a8923 17323 abfd = get_section_bfd_owner (section);
fceca515 17324
a738430d
MK
17325 /* Make sure that at least there's room for the total_length field.
17326 That could be 12 bytes long, but we're just going to fudge that. */
3019eac3 17327 if (offset + 4 >= section->size)
debd256d 17328 {
4d3c2250 17329 dwarf2_statement_list_fits_in_line_number_section_complaint ();
debd256d
JB
17330 return 0;
17331 }
17332
17333 lh = xmalloc (sizeof (*lh));
17334 memset (lh, 0, sizeof (*lh));
17335 back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
17336 (void *) lh);
17337
527f3840
JK
17338 lh->offset.sect_off = offset;
17339 lh->offset_in_dwz = cu->per_cu->is_dwz;
17340
3019eac3 17341 line_ptr = section->buffer + offset;
debd256d 17342
a738430d 17343 /* Read in the header. */
6e70227d 17344 lh->total_length =
c764a876
DE
17345 read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
17346 &bytes_read, &offset_size);
debd256d 17347 line_ptr += bytes_read;
3019eac3 17348 if (line_ptr + lh->total_length > (section->buffer + section->size))
debd256d 17349 {
4d3c2250 17350 dwarf2_statement_list_fits_in_line_number_section_complaint ();
2f324bf6 17351 do_cleanups (back_to);
debd256d
JB
17352 return 0;
17353 }
17354 lh->statement_program_end = line_ptr + lh->total_length;
17355 lh->version = read_2_bytes (abfd, line_ptr);
17356 line_ptr += 2;
cd366ee8
DE
17357 if (lh->version > 4)
17358 {
17359 /* This is a version we don't understand. The format could have
17360 changed in ways we don't handle properly so just punt. */
17361 complaint (&symfile_complaints,
17362 _("unsupported version in .debug_line section"));
17363 return NULL;
17364 }
c764a876
DE
17365 lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
17366 line_ptr += offset_size;
debd256d
JB
17367 lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
17368 line_ptr += 1;
2dc7f7b3
TT
17369 if (lh->version >= 4)
17370 {
17371 lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
17372 line_ptr += 1;
17373 }
17374 else
17375 lh->maximum_ops_per_instruction = 1;
17376
17377 if (lh->maximum_ops_per_instruction == 0)
17378 {
17379 lh->maximum_ops_per_instruction = 1;
17380 complaint (&symfile_complaints,
3e43a32a
MS
17381 _("invalid maximum_ops_per_instruction "
17382 "in `.debug_line' section"));
2dc7f7b3
TT
17383 }
17384
debd256d
JB
17385 lh->default_is_stmt = read_1_byte (abfd, line_ptr);
17386 line_ptr += 1;
17387 lh->line_base = read_1_signed_byte (abfd, line_ptr);
17388 line_ptr += 1;
17389 lh->line_range = read_1_byte (abfd, line_ptr);
17390 line_ptr += 1;
17391 lh->opcode_base = read_1_byte (abfd, line_ptr);
17392 line_ptr += 1;
17393 lh->standard_opcode_lengths
fe1b8b76 17394 = xmalloc (lh->opcode_base * sizeof (lh->standard_opcode_lengths[0]));
debd256d
JB
17395
17396 lh->standard_opcode_lengths[0] = 1; /* This should never be used anyway. */
17397 for (i = 1; i < lh->opcode_base; ++i)
17398 {
17399 lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
17400 line_ptr += 1;
17401 }
17402
a738430d 17403 /* Read directory table. */
9b1c24c8 17404 while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
debd256d
JB
17405 {
17406 line_ptr += bytes_read;
17407 add_include_dir (lh, cur_dir);
17408 }
17409 line_ptr += bytes_read;
17410
a738430d 17411 /* Read file name table. */
9b1c24c8 17412 while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
debd256d
JB
17413 {
17414 unsigned int dir_index, mod_time, length;
17415
17416 line_ptr += bytes_read;
17417 dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17418 line_ptr += bytes_read;
17419 mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17420 line_ptr += bytes_read;
17421 length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17422 line_ptr += bytes_read;
17423
17424 add_file_name (lh, cur_file, dir_index, mod_time, length);
17425 }
17426 line_ptr += bytes_read;
6e70227d 17427 lh->statement_program_start = line_ptr;
debd256d 17428
3019eac3 17429 if (line_ptr > (section->buffer + section->size))
4d3c2250 17430 complaint (&symfile_complaints,
3e43a32a
MS
17431 _("line number info header doesn't "
17432 "fit in `.debug_line' section"));
debd256d
JB
17433
17434 discard_cleanups (back_to);
17435 return lh;
17436}
c906108c 17437
c6da4cef
DE
17438/* Subroutine of dwarf_decode_lines to simplify it.
17439 Return the file name of the psymtab for included file FILE_INDEX
17440 in line header LH of PST.
17441 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
17442 If space for the result is malloc'd, it will be freed by a cleanup.
1ed59174
JK
17443 Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.
17444
17445 The function creates dangling cleanup registration. */
c6da4cef 17446
d521ce57 17447static const char *
c6da4cef
DE
17448psymtab_include_file_name (const struct line_header *lh, int file_index,
17449 const struct partial_symtab *pst,
17450 const char *comp_dir)
17451{
17452 const struct file_entry fe = lh->file_names [file_index];
d521ce57
TT
17453 const char *include_name = fe.name;
17454 const char *include_name_to_compare = include_name;
17455 const char *dir_name = NULL;
72b9f47f
TT
17456 const char *pst_filename;
17457 char *copied_name = NULL;
c6da4cef
DE
17458 int file_is_pst;
17459
afa6c9ab 17460 if (fe.dir_index && lh->include_dirs != NULL)
c6da4cef
DE
17461 dir_name = lh->include_dirs[fe.dir_index - 1];
17462
17463 if (!IS_ABSOLUTE_PATH (include_name)
17464 && (dir_name != NULL || comp_dir != NULL))
17465 {
17466 /* Avoid creating a duplicate psymtab for PST.
17467 We do this by comparing INCLUDE_NAME and PST_FILENAME.
17468 Before we do the comparison, however, we need to account
17469 for DIR_NAME and COMP_DIR.
17470 First prepend dir_name (if non-NULL). If we still don't
17471 have an absolute path prepend comp_dir (if non-NULL).
17472 However, the directory we record in the include-file's
17473 psymtab does not contain COMP_DIR (to match the
17474 corresponding symtab(s)).
17475
17476 Example:
17477
17478 bash$ cd /tmp
17479 bash$ gcc -g ./hello.c
17480 include_name = "hello.c"
17481 dir_name = "."
17482 DW_AT_comp_dir = comp_dir = "/tmp"
5f52445b
YQ
17483 DW_AT_name = "./hello.c"
17484
17485 */
c6da4cef
DE
17486
17487 if (dir_name != NULL)
17488 {
d521ce57
TT
17489 char *tem = concat (dir_name, SLASH_STRING,
17490 include_name, (char *)NULL);
17491
17492 make_cleanup (xfree, tem);
17493 include_name = tem;
c6da4cef 17494 include_name_to_compare = include_name;
c6da4cef
DE
17495 }
17496 if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
17497 {
d521ce57
TT
17498 char *tem = concat (comp_dir, SLASH_STRING,
17499 include_name, (char *)NULL);
17500
17501 make_cleanup (xfree, tem);
17502 include_name_to_compare = tem;
c6da4cef
DE
17503 }
17504 }
17505
17506 pst_filename = pst->filename;
17507 if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
17508 {
72b9f47f
TT
17509 copied_name = concat (pst->dirname, SLASH_STRING,
17510 pst_filename, (char *)NULL);
17511 pst_filename = copied_name;
c6da4cef
DE
17512 }
17513
1e3fad37 17514 file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
c6da4cef 17515
72b9f47f
TT
17516 if (copied_name != NULL)
17517 xfree (copied_name);
c6da4cef
DE
17518
17519 if (file_is_pst)
17520 return NULL;
17521 return include_name;
17522}
17523
d9b3de22
DE
17524/* State machine to track the state of the line number program. */
17525
17526typedef struct
17527{
17528 /* These are part of the standard DWARF line number state machine. */
17529
17530 unsigned char op_index;
17531 unsigned int file;
17532 unsigned int line;
17533 CORE_ADDR address;
17534 int is_stmt;
17535 unsigned int discriminator;
17536
17537 /* Additional bits of state we need to track. */
17538
17539 /* The last file that we called dwarf2_start_subfile for.
17540 This is only used for TLLs. */
17541 unsigned int last_file;
17542 /* The last file a line number was recorded for. */
17543 struct subfile *last_subfile;
17544
17545 /* The function to call to record a line. */
17546 record_line_ftype *record_line;
17547
17548 /* The last line number that was recorded, used to coalesce
17549 consecutive entries for the same line. This can happen, for
17550 example, when discriminators are present. PR 17276. */
17551 unsigned int last_line;
17552 int line_has_non_zero_discriminator;
17553} lnp_state_machine;
17554
17555/* There's a lot of static state to pass to dwarf_record_line.
17556 This keeps it all together. */
17557
17558typedef struct
17559{
17560 /* The gdbarch. */
17561 struct gdbarch *gdbarch;
17562
17563 /* The line number header. */
17564 struct line_header *line_header;
17565
17566 /* Non-zero if we're recording lines.
17567 Otherwise we're building partial symtabs and are just interested in
17568 finding include files mentioned by the line number program. */
17569 int record_lines_p;
17570} lnp_reader_state;
17571
c91513d8
PP
17572/* Ignore this record_line request. */
17573
17574static void
17575noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
17576{
17577 return;
17578}
17579
a05a36a5
DE
17580/* Return non-zero if we should add LINE to the line number table.
17581 LINE is the line to add, LAST_LINE is the last line that was added,
17582 LAST_SUBFILE is the subfile for LAST_LINE.
17583 LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
17584 had a non-zero discriminator.
17585
17586 We have to be careful in the presence of discriminators.
17587 E.g., for this line:
17588
17589 for (i = 0; i < 100000; i++);
17590
17591 clang can emit four line number entries for that one line,
17592 each with a different discriminator.
17593 See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
17594
17595 However, we want gdb to coalesce all four entries into one.
17596 Otherwise the user could stepi into the middle of the line and
17597 gdb would get confused about whether the pc really was in the
17598 middle of the line.
17599
17600 Things are further complicated by the fact that two consecutive
17601 line number entries for the same line is a heuristic used by gcc
17602 to denote the end of the prologue. So we can't just discard duplicate
17603 entries, we have to be selective about it. The heuristic we use is
17604 that we only collapse consecutive entries for the same line if at least
17605 one of those entries has a non-zero discriminator. PR 17276.
17606
17607 Note: Addresses in the line number state machine can never go backwards
17608 within one sequence, thus this coalescing is ok. */
17609
17610static int
17611dwarf_record_line_p (unsigned int line, unsigned int last_line,
17612 int line_has_non_zero_discriminator,
17613 struct subfile *last_subfile)
17614{
17615 if (current_subfile != last_subfile)
17616 return 1;
17617 if (line != last_line)
17618 return 1;
17619 /* Same line for the same file that we've seen already.
17620 As a last check, for pr 17276, only record the line if the line
17621 has never had a non-zero discriminator. */
17622 if (!line_has_non_zero_discriminator)
17623 return 1;
17624 return 0;
17625}
17626
252a6764
DE
17627/* Use P_RECORD_LINE to record line number LINE beginning at address ADDRESS
17628 in the line table of subfile SUBFILE. */
17629
17630static void
d9b3de22
DE
17631dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
17632 unsigned int line, CORE_ADDR address,
17633 record_line_ftype p_record_line)
252a6764
DE
17634{
17635 CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
17636
27e0867f
DE
17637 if (dwarf_line_debug)
17638 {
17639 fprintf_unfiltered (gdb_stdlog,
17640 "Recording line %u, file %s, address %s\n",
17641 line, lbasename (subfile->name),
17642 paddress (gdbarch, address));
17643 }
17644
d5962de5 17645 (*p_record_line) (subfile, line, addr);
252a6764
DE
17646}
17647
17648/* Subroutine of dwarf_decode_lines_1 to simplify it.
17649 Mark the end of a set of line number records.
d9b3de22 17650 The arguments are the same as for dwarf_record_line_1.
252a6764
DE
17651 If SUBFILE is NULL the request is ignored. */
17652
17653static void
17654dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
17655 CORE_ADDR address, record_line_ftype p_record_line)
17656{
27e0867f
DE
17657 if (subfile == NULL)
17658 return;
17659
17660 if (dwarf_line_debug)
17661 {
17662 fprintf_unfiltered (gdb_stdlog,
17663 "Finishing current line, file %s, address %s\n",
17664 lbasename (subfile->name),
17665 paddress (gdbarch, address));
17666 }
17667
d9b3de22
DE
17668 dwarf_record_line_1 (gdbarch, subfile, 0, address, p_record_line);
17669}
17670
17671/* Record the line in STATE.
17672 END_SEQUENCE is non-zero if we're processing the end of a sequence. */
17673
17674static void
17675dwarf_record_line (lnp_reader_state *reader, lnp_state_machine *state,
17676 int end_sequence)
17677{
17678 const struct line_header *lh = reader->line_header;
17679 unsigned int file, line, discriminator;
17680 int is_stmt;
17681
17682 file = state->file;
17683 line = state->line;
17684 is_stmt = state->is_stmt;
17685 discriminator = state->discriminator;
17686
17687 if (dwarf_line_debug)
17688 {
17689 fprintf_unfiltered (gdb_stdlog,
17690 "Processing actual line %u: file %u,"
17691 " address %s, is_stmt %u, discrim %u\n",
17692 line, file,
17693 paddress (reader->gdbarch, state->address),
17694 is_stmt, discriminator);
17695 }
17696
17697 if (file == 0 || file - 1 >= lh->num_file_names)
17698 dwarf2_debug_line_missing_file_complaint ();
17699 /* For now we ignore lines not starting on an instruction boundary.
17700 But not when processing end_sequence for compatibility with the
17701 previous version of the code. */
17702 else if (state->op_index == 0 || end_sequence)
17703 {
17704 lh->file_names[file - 1].included_p = 1;
17705 if (reader->record_lines_p && is_stmt)
17706 {
e815d2d2 17707 if (state->last_subfile != current_subfile || end_sequence)
d9b3de22
DE
17708 {
17709 dwarf_finish_line (reader->gdbarch, state->last_subfile,
17710 state->address, state->record_line);
17711 }
17712
17713 if (!end_sequence)
17714 {
17715 if (dwarf_record_line_p (line, state->last_line,
17716 state->line_has_non_zero_discriminator,
17717 state->last_subfile))
17718 {
17719 dwarf_record_line_1 (reader->gdbarch, current_subfile,
17720 line, state->address,
17721 state->record_line);
17722 }
17723 state->last_subfile = current_subfile;
17724 state->last_line = line;
17725 }
17726 }
17727 }
17728}
17729
17730/* Initialize STATE for the start of a line number program. */
17731
17732static void
17733init_lnp_state_machine (lnp_state_machine *state,
17734 const lnp_reader_state *reader)
17735{
17736 memset (state, 0, sizeof (*state));
17737
17738 /* Just starting, there is no "last file". */
17739 state->last_file = 0;
17740 state->last_subfile = NULL;
17741
17742 state->record_line = record_line;
17743
17744 state->last_line = 0;
17745 state->line_has_non_zero_discriminator = 0;
17746
17747 /* Initialize these according to the DWARF spec. */
17748 state->op_index = 0;
17749 state->file = 1;
17750 state->line = 1;
17751 /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
17752 was a line entry for it so that the backend has a chance to adjust it
17753 and also record it in case it needs it. This is currently used by MIPS
17754 code, cf. `mips_adjust_dwarf2_line'. */
17755 state->address = gdbarch_adjust_dwarf2_line (reader->gdbarch, 0, 0);
17756 state->is_stmt = reader->line_header->default_is_stmt;
17757 state->discriminator = 0;
252a6764
DE
17758}
17759
924c2928
DE
17760/* Check address and if invalid nop-out the rest of the lines in this
17761 sequence. */
17762
17763static void
d9b3de22 17764check_line_address (struct dwarf2_cu *cu, lnp_state_machine *state,
924c2928
DE
17765 const gdb_byte *line_ptr,
17766 CORE_ADDR lowpc, CORE_ADDR address)
17767{
17768 /* If address < lowpc then it's not a usable value, it's outside the
17769 pc range of the CU. However, we restrict the test to only address
17770 values of zero to preserve GDB's previous behaviour which is to
17771 handle the specific case of a function being GC'd by the linker. */
17772
17773 if (address == 0 && address < lowpc)
17774 {
17775 /* This line table is for a function which has been
17776 GCd by the linker. Ignore it. PR gdb/12528 */
17777
17778 struct objfile *objfile = cu->objfile;
17779 long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
17780
17781 complaint (&symfile_complaints,
17782 _(".debug_line address at offset 0x%lx is 0 [in module %s]"),
17783 line_offset, objfile_name (objfile));
d9b3de22
DE
17784 state->record_line = noop_record_line;
17785 /* Note: sm.record_line is left as noop_record_line
924c2928
DE
17786 until we see DW_LNE_end_sequence. */
17787 }
17788}
17789
f3f5162e 17790/* Subroutine of dwarf_decode_lines to simplify it.
d9b3de22
DE
17791 Process the line number information in LH.
17792 If DECODE_FOR_PST_P is non-zero, all we do is process the line number
17793 program in order to set included_p for every referenced header. */
debd256d 17794
c906108c 17795static void
43f3e411
DE
17796dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
17797 const int decode_for_pst_p, CORE_ADDR lowpc)
c906108c 17798{
d521ce57
TT
17799 const gdb_byte *line_ptr, *extended_end;
17800 const gdb_byte *line_end;
a8c50c1f 17801 unsigned int bytes_read, extended_len;
699ca60a 17802 unsigned char op_code, extended_op;
e142c38c
DJ
17803 CORE_ADDR baseaddr;
17804 struct objfile *objfile = cu->objfile;
f3f5162e 17805 bfd *abfd = objfile->obfd;
fbf65064 17806 struct gdbarch *gdbarch = get_objfile_arch (objfile);
d9b3de22
DE
17807 /* Non-zero if we're recording line info (as opposed to building partial
17808 symtabs). */
17809 int record_lines_p = !decode_for_pst_p;
17810 /* A collection of things we need to pass to dwarf_record_line. */
17811 lnp_reader_state reader_state;
e142c38c
DJ
17812
17813 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 17814
debd256d
JB
17815 line_ptr = lh->statement_program_start;
17816 line_end = lh->statement_program_end;
c906108c 17817
d9b3de22
DE
17818 reader_state.gdbarch = gdbarch;
17819 reader_state.line_header = lh;
17820 reader_state.record_lines_p = record_lines_p;
17821
c906108c
SS
17822 /* Read the statement sequences until there's nothing left. */
17823 while (line_ptr < line_end)
17824 {
d9b3de22
DE
17825 /* The DWARF line number program state machine. */
17826 lnp_state_machine state_machine;
c906108c 17827 int end_sequence = 0;
d9b3de22
DE
17828
17829 /* Reset the state machine at the start of each sequence. */
17830 init_lnp_state_machine (&state_machine, &reader_state);
17831
17832 if (record_lines_p && lh->num_file_names >= state_machine.file)
c906108c 17833 {
aaa75496 17834 /* Start a subfile for the current file of the state machine. */
debd256d
JB
17835 /* lh->include_dirs and lh->file_names are 0-based, but the
17836 directory and file name numbers in the statement program
17837 are 1-based. */
d9b3de22 17838 struct file_entry *fe = &lh->file_names[state_machine.file - 1];
d521ce57 17839 const char *dir = NULL;
a738430d 17840
afa6c9ab 17841 if (fe->dir_index && lh->include_dirs != NULL)
debd256d 17842 dir = lh->include_dirs[fe->dir_index - 1];
4f1520fb 17843
4d663531 17844 dwarf2_start_subfile (fe->name, dir);
c906108c
SS
17845 }
17846
a738430d 17847 /* Decode the table. */
d9b3de22 17848 while (line_ptr < line_end && !end_sequence)
c906108c
SS
17849 {
17850 op_code = read_1_byte (abfd, line_ptr);
17851 line_ptr += 1;
9aa1fe7e 17852
debd256d 17853 if (op_code >= lh->opcode_base)
6e70227d 17854 {
8e07a239 17855 /* Special opcode. */
699ca60a 17856 unsigned char adj_opcode;
3e29f34a 17857 CORE_ADDR addr_adj;
a05a36a5 17858 int line_delta;
8e07a239 17859
debd256d 17860 adj_opcode = op_code - lh->opcode_base;
d9b3de22
DE
17861 addr_adj = (((state_machine.op_index
17862 + (adj_opcode / lh->line_range))
2dc7f7b3
TT
17863 / lh->maximum_ops_per_instruction)
17864 * lh->minimum_instruction_length);
d9b3de22
DE
17865 state_machine.address
17866 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17867 state_machine.op_index = ((state_machine.op_index
17868 + (adj_opcode / lh->line_range))
17869 % lh->maximum_ops_per_instruction);
a05a36a5 17870 line_delta = lh->line_base + (adj_opcode % lh->line_range);
d9b3de22 17871 state_machine.line += line_delta;
a05a36a5 17872 if (line_delta != 0)
d9b3de22
DE
17873 state_machine.line_has_non_zero_discriminator
17874 = state_machine.discriminator != 0;
17875
17876 dwarf_record_line (&reader_state, &state_machine, 0);
17877 state_machine.discriminator = 0;
9aa1fe7e
GK
17878 }
17879 else switch (op_code)
c906108c
SS
17880 {
17881 case DW_LNS_extended_op:
3e43a32a
MS
17882 extended_len = read_unsigned_leb128 (abfd, line_ptr,
17883 &bytes_read);
473b7be6 17884 line_ptr += bytes_read;
a8c50c1f 17885 extended_end = line_ptr + extended_len;
c906108c
SS
17886 extended_op = read_1_byte (abfd, line_ptr);
17887 line_ptr += 1;
17888 switch (extended_op)
17889 {
17890 case DW_LNE_end_sequence:
d9b3de22 17891 state_machine.record_line = record_line;
c906108c 17892 end_sequence = 1;
c906108c
SS
17893 break;
17894 case DW_LNE_set_address:
d9b3de22
DE
17895 {
17896 CORE_ADDR address
17897 = read_address (abfd, line_ptr, cu, &bytes_read);
17898
17899 line_ptr += bytes_read;
17900 check_line_address (cu, &state_machine, line_ptr,
17901 lowpc, address);
17902 state_machine.op_index = 0;
17903 address += baseaddr;
17904 state_machine.address
17905 = gdbarch_adjust_dwarf2_line (gdbarch, address, 0);
17906 }
c906108c
SS
17907 break;
17908 case DW_LNE_define_file:
debd256d 17909 {
d521ce57 17910 const char *cur_file;
debd256d 17911 unsigned int dir_index, mod_time, length;
6e70227d 17912
3e43a32a
MS
17913 cur_file = read_direct_string (abfd, line_ptr,
17914 &bytes_read);
debd256d
JB
17915 line_ptr += bytes_read;
17916 dir_index =
17917 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17918 line_ptr += bytes_read;
17919 mod_time =
17920 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17921 line_ptr += bytes_read;
17922 length =
17923 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17924 line_ptr += bytes_read;
17925 add_file_name (lh, cur_file, dir_index, mod_time, length);
17926 }
c906108c 17927 break;
d0c6ba3d
CC
17928 case DW_LNE_set_discriminator:
17929 /* The discriminator is not interesting to the debugger;
a05a36a5
DE
17930 just ignore it. We still need to check its value though:
17931 if there are consecutive entries for the same
17932 (non-prologue) line we want to coalesce them.
17933 PR 17276. */
d9b3de22
DE
17934 state_machine.discriminator
17935 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17936 state_machine.line_has_non_zero_discriminator
17937 |= state_machine.discriminator != 0;
a05a36a5 17938 line_ptr += bytes_read;
d0c6ba3d 17939 break;
c906108c 17940 default:
4d3c2250 17941 complaint (&symfile_complaints,
e2e0b3e5 17942 _("mangled .debug_line section"));
debd256d 17943 return;
c906108c 17944 }
a8c50c1f
DJ
17945 /* Make sure that we parsed the extended op correctly. If e.g.
17946 we expected a different address size than the producer used,
17947 we may have read the wrong number of bytes. */
17948 if (line_ptr != extended_end)
17949 {
17950 complaint (&symfile_complaints,
17951 _("mangled .debug_line section"));
17952 return;
17953 }
c906108c
SS
17954 break;
17955 case DW_LNS_copy:
d9b3de22
DE
17956 dwarf_record_line (&reader_state, &state_machine, 0);
17957 state_machine.discriminator = 0;
c906108c
SS
17958 break;
17959 case DW_LNS_advance_pc:
2dc7f7b3
TT
17960 {
17961 CORE_ADDR adjust
17962 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
3e29f34a 17963 CORE_ADDR addr_adj;
2dc7f7b3 17964
d9b3de22 17965 addr_adj = (((state_machine.op_index + adjust)
2dc7f7b3
TT
17966 / lh->maximum_ops_per_instruction)
17967 * lh->minimum_instruction_length);
d9b3de22
DE
17968 state_machine.address
17969 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17970 state_machine.op_index = ((state_machine.op_index + adjust)
17971 % lh->maximum_ops_per_instruction);
2dc7f7b3
TT
17972 line_ptr += bytes_read;
17973 }
c906108c
SS
17974 break;
17975 case DW_LNS_advance_line:
a05a36a5
DE
17976 {
17977 int line_delta
17978 = read_signed_leb128 (abfd, line_ptr, &bytes_read);
17979
d9b3de22 17980 state_machine.line += line_delta;
a05a36a5 17981 if (line_delta != 0)
d9b3de22
DE
17982 state_machine.line_has_non_zero_discriminator
17983 = state_machine.discriminator != 0;
a05a36a5
DE
17984 line_ptr += bytes_read;
17985 }
c906108c
SS
17986 break;
17987 case DW_LNS_set_file:
d9b3de22
DE
17988 {
17989 /* The arrays lh->include_dirs and lh->file_names are
17990 0-based, but the directory and file name numbers in
17991 the statement program are 1-based. */
17992 struct file_entry *fe;
17993 const char *dir = NULL;
17994
17995 state_machine.file = read_unsigned_leb128 (abfd, line_ptr,
17996 &bytes_read);
17997 line_ptr += bytes_read;
17998 if (state_machine.file == 0
17999 || state_machine.file - 1 >= lh->num_file_names)
18000 dwarf2_debug_line_missing_file_complaint ();
18001 else
18002 {
18003 fe = &lh->file_names[state_machine.file - 1];
18004 if (fe->dir_index && lh->include_dirs != NULL)
18005 dir = lh->include_dirs[fe->dir_index - 1];
18006 if (record_lines_p)
18007 {
18008 state_machine.last_subfile = current_subfile;
18009 state_machine.line_has_non_zero_discriminator
18010 = state_machine.discriminator != 0;
18011 dwarf2_start_subfile (fe->name, dir);
18012 }
18013 }
18014 }
c906108c
SS
18015 break;
18016 case DW_LNS_set_column:
0ad93d4f 18017 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
c906108c
SS
18018 line_ptr += bytes_read;
18019 break;
18020 case DW_LNS_negate_stmt:
d9b3de22 18021 state_machine.is_stmt = (!state_machine.is_stmt);
c906108c
SS
18022 break;
18023 case DW_LNS_set_basic_block:
c906108c 18024 break;
c2c6d25f
JM
18025 /* Add to the address register of the state machine the
18026 address increment value corresponding to special opcode
a738430d
MK
18027 255. I.e., this value is scaled by the minimum
18028 instruction length since special opcode 255 would have
b021a221 18029 scaled the increment. */
c906108c 18030 case DW_LNS_const_add_pc:
2dc7f7b3
TT
18031 {
18032 CORE_ADDR adjust = (255 - lh->opcode_base) / lh->line_range;
3e29f34a 18033 CORE_ADDR addr_adj;
2dc7f7b3 18034
d9b3de22 18035 addr_adj = (((state_machine.op_index + adjust)
2dc7f7b3
TT
18036 / lh->maximum_ops_per_instruction)
18037 * lh->minimum_instruction_length);
d9b3de22
DE
18038 state_machine.address
18039 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
18040 state_machine.op_index = ((state_machine.op_index + adjust)
18041 % lh->maximum_ops_per_instruction);
2dc7f7b3 18042 }
c906108c
SS
18043 break;
18044 case DW_LNS_fixed_advance_pc:
3e29f34a
MR
18045 {
18046 CORE_ADDR addr_adj;
18047
18048 addr_adj = read_2_bytes (abfd, line_ptr);
d9b3de22
DE
18049 state_machine.address
18050 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
18051 state_machine.op_index = 0;
3e29f34a
MR
18052 line_ptr += 2;
18053 }
c906108c 18054 break;
9aa1fe7e 18055 default:
a738430d
MK
18056 {
18057 /* Unknown standard opcode, ignore it. */
9aa1fe7e 18058 int i;
a738430d 18059
debd256d 18060 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
9aa1fe7e
GK
18061 {
18062 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
18063 line_ptr += bytes_read;
18064 }
18065 }
c906108c
SS
18066 }
18067 }
d9b3de22
DE
18068
18069 if (!end_sequence)
18070 dwarf2_debug_line_missing_end_sequence_complaint ();
18071
18072 /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
18073 in which case we still finish recording the last line). */
18074 dwarf_record_line (&reader_state, &state_machine, 1);
c906108c 18075 }
f3f5162e
DE
18076}
18077
18078/* Decode the Line Number Program (LNP) for the given line_header
18079 structure and CU. The actual information extracted and the type
18080 of structures created from the LNP depends on the value of PST.
18081
18082 1. If PST is NULL, then this procedure uses the data from the program
18083 to create all necessary symbol tables, and their linetables.
18084
18085 2. If PST is not NULL, this procedure reads the program to determine
18086 the list of files included by the unit represented by PST, and
18087 builds all the associated partial symbol tables.
18088
18089 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
18090 It is used for relative paths in the line table.
18091 NOTE: When processing partial symtabs (pst != NULL),
18092 comp_dir == pst->dirname.
18093
18094 NOTE: It is important that psymtabs have the same file name (via strcmp)
18095 as the corresponding symtab. Since COMP_DIR is not used in the name of the
18096 symtab we don't use it in the name of the psymtabs we create.
18097 E.g. expand_line_sal requires this when finding psymtabs to expand.
c3b7b696
YQ
18098 A good testcase for this is mb-inline.exp.
18099
527f3840
JK
18100 LOWPC is the lowest address in CU (or 0 if not known).
18101
18102 Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
18103 for its PC<->lines mapping information. Otherwise only the filename
18104 table is read in. */
f3f5162e
DE
18105
18106static void
18107dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
c3b7b696 18108 struct dwarf2_cu *cu, struct partial_symtab *pst,
527f3840 18109 CORE_ADDR lowpc, int decode_mapping)
f3f5162e
DE
18110{
18111 struct objfile *objfile = cu->objfile;
18112 const int decode_for_pst_p = (pst != NULL);
f3f5162e 18113
527f3840
JK
18114 if (decode_mapping)
18115 dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
aaa75496
JB
18116
18117 if (decode_for_pst_p)
18118 {
18119 int file_index;
18120
18121 /* Now that we're done scanning the Line Header Program, we can
18122 create the psymtab of each included file. */
18123 for (file_index = 0; file_index < lh->num_file_names; file_index++)
18124 if (lh->file_names[file_index].included_p == 1)
18125 {
d521ce57 18126 const char *include_name =
c6da4cef
DE
18127 psymtab_include_file_name (lh, file_index, pst, comp_dir);
18128 if (include_name != NULL)
aaa75496
JB
18129 dwarf2_create_include_psymtab (include_name, pst, objfile);
18130 }
18131 }
cb1df416
DJ
18132 else
18133 {
18134 /* Make sure a symtab is created for every file, even files
18135 which contain only variables (i.e. no code with associated
18136 line numbers). */
43f3e411 18137 struct compunit_symtab *cust = buildsym_compunit_symtab ();
cb1df416 18138 int i;
cb1df416
DJ
18139
18140 for (i = 0; i < lh->num_file_names; i++)
18141 {
d521ce57 18142 const char *dir = NULL;
f3f5162e 18143 struct file_entry *fe;
9a619af0 18144
cb1df416 18145 fe = &lh->file_names[i];
afa6c9ab 18146 if (fe->dir_index && lh->include_dirs != NULL)
cb1df416 18147 dir = lh->include_dirs[fe->dir_index - 1];
4d663531 18148 dwarf2_start_subfile (fe->name, dir);
cb1df416 18149
cb1df416 18150 if (current_subfile->symtab == NULL)
43f3e411
DE
18151 {
18152 current_subfile->symtab
18153 = allocate_symtab (cust, current_subfile->name);
18154 }
cb1df416
DJ
18155 fe->symtab = current_subfile->symtab;
18156 }
18157 }
c906108c
SS
18158}
18159
18160/* Start a subfile for DWARF. FILENAME is the name of the file and
18161 DIRNAME the name of the source directory which contains FILENAME
4d663531 18162 or NULL if not known.
c906108c
SS
18163 This routine tries to keep line numbers from identical absolute and
18164 relative file names in a common subfile.
18165
18166 Using the `list' example from the GDB testsuite, which resides in
18167 /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
18168 of /srcdir/list0.c yields the following debugging information for list0.c:
18169
c5aa993b 18170 DW_AT_name: /srcdir/list0.c
4d663531 18171 DW_AT_comp_dir: /compdir
357e46e7 18172 files.files[0].name: list0.h
c5aa993b 18173 files.files[0].dir: /srcdir
357e46e7 18174 files.files[1].name: list0.c
c5aa993b 18175 files.files[1].dir: /srcdir
c906108c
SS
18176
18177 The line number information for list0.c has to end up in a single
4f1520fb
FR
18178 subfile, so that `break /srcdir/list0.c:1' works as expected.
18179 start_subfile will ensure that this happens provided that we pass the
18180 concatenation of files.files[1].dir and files.files[1].name as the
18181 subfile's name. */
c906108c
SS
18182
18183static void
4d663531 18184dwarf2_start_subfile (const char *filename, const char *dirname)
c906108c 18185{
d521ce57 18186 char *copy = NULL;
4f1520fb 18187
4d663531 18188 /* In order not to lose the line information directory,
4f1520fb
FR
18189 we concatenate it to the filename when it makes sense.
18190 Note that the Dwarf3 standard says (speaking of filenames in line
18191 information): ``The directory index is ignored for file names
18192 that represent full path names''. Thus ignoring dirname in the
18193 `else' branch below isn't an issue. */
c906108c 18194
d5166ae1 18195 if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
d521ce57
TT
18196 {
18197 copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
18198 filename = copy;
18199 }
c906108c 18200
4d663531 18201 start_subfile (filename);
4f1520fb 18202
d521ce57
TT
18203 if (copy != NULL)
18204 xfree (copy);
c906108c
SS
18205}
18206
f4dc4d17
DE
18207/* Start a symtab for DWARF.
18208 NAME, COMP_DIR, LOW_PC are passed to start_symtab. */
18209
43f3e411 18210static struct compunit_symtab *
f4dc4d17 18211dwarf2_start_symtab (struct dwarf2_cu *cu,
15d034d0 18212 const char *name, const char *comp_dir, CORE_ADDR low_pc)
f4dc4d17 18213{
43f3e411
DE
18214 struct compunit_symtab *cust
18215 = start_symtab (cu->objfile, name, comp_dir, low_pc);
18216
f4dc4d17
DE
18217 record_debugformat ("DWARF 2");
18218 record_producer (cu->producer);
18219
18220 /* We assume that we're processing GCC output. */
18221 processing_gcc_compilation = 2;
18222
4d4ec4e5 18223 cu->processing_has_namespace_info = 0;
43f3e411
DE
18224
18225 return cust;
f4dc4d17
DE
18226}
18227
4c2df51b
DJ
18228static void
18229var_decode_location (struct attribute *attr, struct symbol *sym,
e7c27a73 18230 struct dwarf2_cu *cu)
4c2df51b 18231{
e7c27a73
DJ
18232 struct objfile *objfile = cu->objfile;
18233 struct comp_unit_head *cu_header = &cu->header;
18234
4c2df51b
DJ
18235 /* NOTE drow/2003-01-30: There used to be a comment and some special
18236 code here to turn a symbol with DW_AT_external and a
18237 SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol. This was
18238 necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
18239 with some versions of binutils) where shared libraries could have
18240 relocations against symbols in their debug information - the
18241 minimal symbol would have the right address, but the debug info
18242 would not. It's no longer necessary, because we will explicitly
18243 apply relocations when we read in the debug information now. */
18244
18245 /* A DW_AT_location attribute with no contents indicates that a
18246 variable has been optimized away. */
18247 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
18248 {
f1e6e072 18249 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
4c2df51b
DJ
18250 return;
18251 }
18252
18253 /* Handle one degenerate form of location expression specially, to
18254 preserve GDB's previous behavior when section offsets are
3019eac3
DE
18255 specified. If this is just a DW_OP_addr or DW_OP_GNU_addr_index
18256 then mark this symbol as LOC_STATIC. */
4c2df51b
DJ
18257
18258 if (attr_form_is_block (attr)
3019eac3
DE
18259 && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
18260 && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
18261 || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
18262 && (DW_BLOCK (attr)->size
18263 == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
4c2df51b 18264 {
891d2f0b 18265 unsigned int dummy;
4c2df51b 18266
3019eac3
DE
18267 if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
18268 SYMBOL_VALUE_ADDRESS (sym) =
18269 read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
18270 else
18271 SYMBOL_VALUE_ADDRESS (sym) =
18272 read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
f1e6e072 18273 SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
4c2df51b
DJ
18274 fixup_symbol_section (sym, objfile);
18275 SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
18276 SYMBOL_SECTION (sym));
4c2df51b
DJ
18277 return;
18278 }
18279
18280 /* NOTE drow/2002-01-30: It might be worthwhile to have a static
18281 expression evaluator, and use LOC_COMPUTED only when necessary
18282 (i.e. when the value of a register or memory location is
18283 referenced, or a thread-local block, etc.). Then again, it might
18284 not be worthwhile. I'm assuming that it isn't unless performance
18285 or memory numbers show me otherwise. */
18286
f1e6e072 18287 dwarf2_symbol_mark_computed (attr, sym, cu, 0);
8be455d7 18288
f1e6e072 18289 if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
8be455d7 18290 cu->has_loclist = 1;
4c2df51b
DJ
18291}
18292
c906108c
SS
18293/* Given a pointer to a DWARF information entry, figure out if we need
18294 to make a symbol table entry for it, and if so, create a new entry
18295 and return a pointer to it.
18296 If TYPE is NULL, determine symbol type from the die, otherwise
34eaf542
TT
18297 used the passed type.
18298 If SPACE is not NULL, use it to hold the new symbol. If it is
18299 NULL, allocate a new symbol on the objfile's obstack. */
c906108c
SS
18300
18301static struct symbol *
34eaf542
TT
18302new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
18303 struct symbol *space)
c906108c 18304{
e7c27a73 18305 struct objfile *objfile = cu->objfile;
3e29f34a 18306 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c 18307 struct symbol *sym = NULL;
15d034d0 18308 const char *name;
c906108c
SS
18309 struct attribute *attr = NULL;
18310 struct attribute *attr2 = NULL;
e142c38c 18311 CORE_ADDR baseaddr;
e37fd15a
SW
18312 struct pending **list_to_add = NULL;
18313
edb3359d 18314 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
e142c38c
DJ
18315
18316 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 18317
94af9270 18318 name = dwarf2_name (die, cu);
c906108c
SS
18319 if (name)
18320 {
94af9270 18321 const char *linkagename;
34eaf542 18322 int suppress_add = 0;
94af9270 18323
34eaf542
TT
18324 if (space)
18325 sym = space;
18326 else
e623cf5d 18327 sym = allocate_symbol (objfile);
c906108c 18328 OBJSTAT (objfile, n_syms++);
2de7ced7
DJ
18329
18330 /* Cache this symbol's name and the name's demangled form (if any). */
f85f34ed 18331 SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
94af9270
KS
18332 linkagename = dwarf2_physname (name, die, cu);
18333 SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
c906108c 18334
f55ee35c
JK
18335 /* Fortran does not have mangling standard and the mangling does differ
18336 between gfortran, iFort etc. */
18337 if (cu->language == language_fortran
b250c185 18338 && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
29df156d 18339 symbol_set_demangled_name (&(sym->ginfo),
cfc594ee 18340 dwarf2_full_name (name, die, cu),
29df156d 18341 NULL);
f55ee35c 18342
c906108c 18343 /* Default assumptions.
c5aa993b 18344 Use the passed type or decode it from the die. */
176620f1 18345 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
f1e6e072 18346 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
c906108c
SS
18347 if (type != NULL)
18348 SYMBOL_TYPE (sym) = type;
18349 else
e7c27a73 18350 SYMBOL_TYPE (sym) = die_type (die, cu);
edb3359d
DJ
18351 attr = dwarf2_attr (die,
18352 inlined_func ? DW_AT_call_line : DW_AT_decl_line,
18353 cu);
c906108c
SS
18354 if (attr)
18355 {
18356 SYMBOL_LINE (sym) = DW_UNSND (attr);
18357 }
cb1df416 18358
edb3359d
DJ
18359 attr = dwarf2_attr (die,
18360 inlined_func ? DW_AT_call_file : DW_AT_decl_file,
18361 cu);
cb1df416
DJ
18362 if (attr)
18363 {
18364 int file_index = DW_UNSND (attr);
9a619af0 18365
cb1df416
DJ
18366 if (cu->line_header == NULL
18367 || file_index > cu->line_header->num_file_names)
18368 complaint (&symfile_complaints,
18369 _("file index out of range"));
1c3d648d 18370 else if (file_index > 0)
cb1df416
DJ
18371 {
18372 struct file_entry *fe;
9a619af0 18373
cb1df416 18374 fe = &cu->line_header->file_names[file_index - 1];
08be3fe3 18375 symbol_set_symtab (sym, fe->symtab);
cb1df416
DJ
18376 }
18377 }
18378
c906108c
SS
18379 switch (die->tag)
18380 {
18381 case DW_TAG_label:
e142c38c 18382 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
c906108c 18383 if (attr)
3e29f34a
MR
18384 {
18385 CORE_ADDR addr;
18386
18387 addr = attr_value_as_address (attr);
18388 addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
18389 SYMBOL_VALUE_ADDRESS (sym) = addr;
18390 }
0f5238ed
TT
18391 SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
18392 SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
f1e6e072 18393 SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
0f5238ed 18394 add_symbol_to_list (sym, cu->list_in_scope);
c906108c
SS
18395 break;
18396 case DW_TAG_subprogram:
18397 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18398 finish_block. */
f1e6e072 18399 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
e142c38c 18400 attr2 = dwarf2_attr (die, DW_AT_external, cu);
2cfa0c8d
JB
18401 if ((attr2 && (DW_UNSND (attr2) != 0))
18402 || cu->language == language_ada)
c906108c 18403 {
2cfa0c8d
JB
18404 /* Subprograms marked external are stored as a global symbol.
18405 Ada subprograms, whether marked external or not, are always
18406 stored as a global symbol, because we want to be able to
18407 access them globally. For instance, we want to be able
18408 to break on a nested subprogram without having to
18409 specify the context. */
e37fd15a 18410 list_to_add = &global_symbols;
c906108c
SS
18411 }
18412 else
18413 {
e37fd15a 18414 list_to_add = cu->list_in_scope;
c906108c
SS
18415 }
18416 break;
edb3359d
DJ
18417 case DW_TAG_inlined_subroutine:
18418 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18419 finish_block. */
f1e6e072 18420 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
edb3359d 18421 SYMBOL_INLINED (sym) = 1;
481860b3 18422 list_to_add = cu->list_in_scope;
edb3359d 18423 break;
34eaf542
TT
18424 case DW_TAG_template_value_param:
18425 suppress_add = 1;
18426 /* Fall through. */
72929c62 18427 case DW_TAG_constant:
c906108c 18428 case DW_TAG_variable:
254e6b9e 18429 case DW_TAG_member:
0963b4bd
MS
18430 /* Compilation with minimal debug info may result in
18431 variables with missing type entries. Change the
18432 misleading `void' type to something sensible. */
c906108c 18433 if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
64c50499 18434 SYMBOL_TYPE (sym)
46bf5051 18435 = objfile_type (objfile)->nodebug_data_symbol;
64c50499 18436
e142c38c 18437 attr = dwarf2_attr (die, DW_AT_const_value, cu);
254e6b9e
DE
18438 /* In the case of DW_TAG_member, we should only be called for
18439 static const members. */
18440 if (die->tag == DW_TAG_member)
18441 {
3863f96c
DE
18442 /* dwarf2_add_field uses die_is_declaration,
18443 so we do the same. */
254e6b9e
DE
18444 gdb_assert (die_is_declaration (die, cu));
18445 gdb_assert (attr);
18446 }
c906108c
SS
18447 if (attr)
18448 {
e7c27a73 18449 dwarf2_const_value (attr, sym, cu);
e142c38c 18450 attr2 = dwarf2_attr (die, DW_AT_external, cu);
e37fd15a 18451 if (!suppress_add)
34eaf542
TT
18452 {
18453 if (attr2 && (DW_UNSND (attr2) != 0))
e37fd15a 18454 list_to_add = &global_symbols;
34eaf542 18455 else
e37fd15a 18456 list_to_add = cu->list_in_scope;
34eaf542 18457 }
c906108c
SS
18458 break;
18459 }
e142c38c 18460 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
18461 if (attr)
18462 {
e7c27a73 18463 var_decode_location (attr, sym, cu);
e142c38c 18464 attr2 = dwarf2_attr (die, DW_AT_external, cu);
4357ac6c
TT
18465
18466 /* Fortran explicitly imports any global symbols to the local
18467 scope by DW_TAG_common_block. */
18468 if (cu->language == language_fortran && die->parent
18469 && die->parent->tag == DW_TAG_common_block)
18470 attr2 = NULL;
18471
caac4577
JG
18472 if (SYMBOL_CLASS (sym) == LOC_STATIC
18473 && SYMBOL_VALUE_ADDRESS (sym) == 0
18474 && !dwarf2_per_objfile->has_section_at_zero)
18475 {
18476 /* When a static variable is eliminated by the linker,
18477 the corresponding debug information is not stripped
18478 out, but the variable address is set to null;
18479 do not add such variables into symbol table. */
18480 }
18481 else if (attr2 && (DW_UNSND (attr2) != 0))
1c809c68 18482 {
f55ee35c
JK
18483 /* Workaround gfortran PR debug/40040 - it uses
18484 DW_AT_location for variables in -fPIC libraries which may
18485 get overriden by other libraries/executable and get
18486 a different address. Resolve it by the minimal symbol
18487 which may come from inferior's executable using copy
18488 relocation. Make this workaround only for gfortran as for
18489 other compilers GDB cannot guess the minimal symbol
18490 Fortran mangling kind. */
18491 if (cu->language == language_fortran && die->parent
18492 && die->parent->tag == DW_TAG_module
18493 && cu->producer
61012eef 18494 && startswith (cu->producer, "GNU Fortran "))
f1e6e072 18495 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
f55ee35c 18496
1c809c68
TT
18497 /* A variable with DW_AT_external is never static,
18498 but it may be block-scoped. */
18499 list_to_add = (cu->list_in_scope == &file_symbols
18500 ? &global_symbols : cu->list_in_scope);
1c809c68 18501 }
c906108c 18502 else
e37fd15a 18503 list_to_add = cu->list_in_scope;
c906108c
SS
18504 }
18505 else
18506 {
18507 /* We do not know the address of this symbol.
c5aa993b
JM
18508 If it is an external symbol and we have type information
18509 for it, enter the symbol as a LOC_UNRESOLVED symbol.
18510 The address of the variable will then be determined from
18511 the minimal symbol table whenever the variable is
18512 referenced. */
e142c38c 18513 attr2 = dwarf2_attr (die, DW_AT_external, cu);
0971de02
TT
18514
18515 /* Fortran explicitly imports any global symbols to the local
18516 scope by DW_TAG_common_block. */
18517 if (cu->language == language_fortran && die->parent
18518 && die->parent->tag == DW_TAG_common_block)
18519 {
18520 /* SYMBOL_CLASS doesn't matter here because
18521 read_common_block is going to reset it. */
18522 if (!suppress_add)
18523 list_to_add = cu->list_in_scope;
18524 }
18525 else if (attr2 && (DW_UNSND (attr2) != 0)
18526 && dwarf2_attr (die, DW_AT_type, cu) != NULL)
c906108c 18527 {
0fe7935b
DJ
18528 /* A variable with DW_AT_external is never static, but it
18529 may be block-scoped. */
18530 list_to_add = (cu->list_in_scope == &file_symbols
18531 ? &global_symbols : cu->list_in_scope);
18532
f1e6e072 18533 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
c906108c 18534 }
442ddf59
JK
18535 else if (!die_is_declaration (die, cu))
18536 {
18537 /* Use the default LOC_OPTIMIZED_OUT class. */
18538 gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
e37fd15a
SW
18539 if (!suppress_add)
18540 list_to_add = cu->list_in_scope;
442ddf59 18541 }
c906108c
SS
18542 }
18543 break;
18544 case DW_TAG_formal_parameter:
edb3359d
DJ
18545 /* If we are inside a function, mark this as an argument. If
18546 not, we might be looking at an argument to an inlined function
18547 when we do not have enough information to show inlined frames;
18548 pretend it's a local variable in that case so that the user can
18549 still see it. */
18550 if (context_stack_depth > 0
18551 && context_stack[context_stack_depth - 1].name != NULL)
18552 SYMBOL_IS_ARGUMENT (sym) = 1;
e142c38c 18553 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
18554 if (attr)
18555 {
e7c27a73 18556 var_decode_location (attr, sym, cu);
c906108c 18557 }
e142c38c 18558 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
18559 if (attr)
18560 {
e7c27a73 18561 dwarf2_const_value (attr, sym, cu);
c906108c 18562 }
f346a30d 18563
e37fd15a 18564 list_to_add = cu->list_in_scope;
c906108c
SS
18565 break;
18566 case DW_TAG_unspecified_parameters:
18567 /* From varargs functions; gdb doesn't seem to have any
18568 interest in this information, so just ignore it for now.
18569 (FIXME?) */
18570 break;
34eaf542
TT
18571 case DW_TAG_template_type_param:
18572 suppress_add = 1;
18573 /* Fall through. */
c906108c 18574 case DW_TAG_class_type:
680b30c7 18575 case DW_TAG_interface_type:
c906108c
SS
18576 case DW_TAG_structure_type:
18577 case DW_TAG_union_type:
72019c9c 18578 case DW_TAG_set_type:
c906108c 18579 case DW_TAG_enumeration_type:
f1e6e072 18580 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
176620f1 18581 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
c906108c 18582
63d06c5c 18583 {
987504bb 18584 /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't
63d06c5c
DC
18585 really ever be static objects: otherwise, if you try
18586 to, say, break of a class's method and you're in a file
18587 which doesn't mention that class, it won't work unless
18588 the check for all static symbols in lookup_symbol_aux
18589 saves you. See the OtherFileClass tests in
18590 gdb.c++/namespace.exp. */
18591
e37fd15a 18592 if (!suppress_add)
34eaf542 18593 {
34eaf542
TT
18594 list_to_add = (cu->list_in_scope == &file_symbols
18595 && (cu->language == language_cplus
18596 || cu->language == language_java)
18597 ? &global_symbols : cu->list_in_scope);
63d06c5c 18598
64382290
TT
18599 /* The semantics of C++ state that "struct foo {
18600 ... }" also defines a typedef for "foo". A Java
18601 class declaration also defines a typedef for the
18602 class. */
18603 if (cu->language == language_cplus
18604 || cu->language == language_java
45280282
IB
18605 || cu->language == language_ada
18606 || cu->language == language_d)
64382290
TT
18607 {
18608 /* The symbol's name is already allocated along
18609 with this objfile, so we don't need to
18610 duplicate it for the type. */
18611 if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
18612 TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
18613 }
63d06c5c
DC
18614 }
18615 }
c906108c
SS
18616 break;
18617 case DW_TAG_typedef:
f1e6e072 18618 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
63d06c5c 18619 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e37fd15a 18620 list_to_add = cu->list_in_scope;
63d06c5c 18621 break;
c906108c 18622 case DW_TAG_base_type:
a02abb62 18623 case DW_TAG_subrange_type:
f1e6e072 18624 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
176620f1 18625 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e37fd15a 18626 list_to_add = cu->list_in_scope;
c906108c
SS
18627 break;
18628 case DW_TAG_enumerator:
e142c38c 18629 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
18630 if (attr)
18631 {
e7c27a73 18632 dwarf2_const_value (attr, sym, cu);
c906108c 18633 }
63d06c5c
DC
18634 {
18635 /* NOTE: carlton/2003-11-10: See comment above in the
18636 DW_TAG_class_type, etc. block. */
18637
e142c38c 18638 list_to_add = (cu->list_in_scope == &file_symbols
987504bb
JJ
18639 && (cu->language == language_cplus
18640 || cu->language == language_java)
e142c38c 18641 ? &global_symbols : cu->list_in_scope);
63d06c5c 18642 }
c906108c 18643 break;
74921315 18644 case DW_TAG_imported_declaration:
5c4e30ca 18645 case DW_TAG_namespace:
f1e6e072 18646 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
e37fd15a 18647 list_to_add = &global_symbols;
5c4e30ca 18648 break;
530e8392
KB
18649 case DW_TAG_module:
18650 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18651 SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
18652 list_to_add = &global_symbols;
18653 break;
4357ac6c 18654 case DW_TAG_common_block:
f1e6e072 18655 SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
4357ac6c
TT
18656 SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
18657 add_symbol_to_list (sym, cu->list_in_scope);
18658 break;
c906108c
SS
18659 default:
18660 /* Not a tag we recognize. Hopefully we aren't processing
18661 trash data, but since we must specifically ignore things
18662 we don't recognize, there is nothing else we should do at
0963b4bd 18663 this point. */
e2e0b3e5 18664 complaint (&symfile_complaints, _("unsupported tag: '%s'"),
4d3c2250 18665 dwarf_tag_name (die->tag));
c906108c
SS
18666 break;
18667 }
df8a16a1 18668
e37fd15a
SW
18669 if (suppress_add)
18670 {
18671 sym->hash_next = objfile->template_symbols;
18672 objfile->template_symbols = sym;
18673 list_to_add = NULL;
18674 }
18675
18676 if (list_to_add != NULL)
18677 add_symbol_to_list (sym, list_to_add);
18678
df8a16a1
DJ
18679 /* For the benefit of old versions of GCC, check for anonymous
18680 namespaces based on the demangled name. */
4d4ec4e5 18681 if (!cu->processing_has_namespace_info
94af9270 18682 && cu->language == language_cplus)
a10964d1 18683 cp_scan_for_anonymous_namespaces (sym, objfile);
c906108c
SS
18684 }
18685 return (sym);
18686}
18687
34eaf542
TT
18688/* A wrapper for new_symbol_full that always allocates a new symbol. */
18689
18690static struct symbol *
18691new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
18692{
18693 return new_symbol_full (die, type, cu, NULL);
18694}
18695
98bfdba5
PA
18696/* Given an attr with a DW_FORM_dataN value in host byte order,
18697 zero-extend it as appropriate for the symbol's type. The DWARF
18698 standard (v4) is not entirely clear about the meaning of using
18699 DW_FORM_dataN for a constant with a signed type, where the type is
18700 wider than the data. The conclusion of a discussion on the DWARF
18701 list was that this is unspecified. We choose to always zero-extend
18702 because that is the interpretation long in use by GCC. */
c906108c 18703
98bfdba5 18704static gdb_byte *
ff39bb5e 18705dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
12df843f 18706 struct dwarf2_cu *cu, LONGEST *value, int bits)
c906108c 18707{
e7c27a73 18708 struct objfile *objfile = cu->objfile;
e17a4113
UW
18709 enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
18710 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
98bfdba5
PA
18711 LONGEST l = DW_UNSND (attr);
18712
18713 if (bits < sizeof (*value) * 8)
18714 {
18715 l &= ((LONGEST) 1 << bits) - 1;
18716 *value = l;
18717 }
18718 else if (bits == sizeof (*value) * 8)
18719 *value = l;
18720 else
18721 {
18722 gdb_byte *bytes = obstack_alloc (obstack, bits / 8);
18723 store_unsigned_integer (bytes, bits / 8, byte_order, l);
18724 return bytes;
18725 }
18726
18727 return NULL;
18728}
18729
18730/* Read a constant value from an attribute. Either set *VALUE, or if
18731 the value does not fit in *VALUE, set *BYTES - either already
18732 allocated on the objfile obstack, or newly allocated on OBSTACK,
18733 or, set *BATON, if we translated the constant to a location
18734 expression. */
18735
18736static void
ff39bb5e 18737dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
98bfdba5
PA
18738 const char *name, struct obstack *obstack,
18739 struct dwarf2_cu *cu,
d521ce57 18740 LONGEST *value, const gdb_byte **bytes,
98bfdba5
PA
18741 struct dwarf2_locexpr_baton **baton)
18742{
18743 struct objfile *objfile = cu->objfile;
18744 struct comp_unit_head *cu_header = &cu->header;
c906108c 18745 struct dwarf_block *blk;
98bfdba5
PA
18746 enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
18747 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
18748
18749 *value = 0;
18750 *bytes = NULL;
18751 *baton = NULL;
c906108c
SS
18752
18753 switch (attr->form)
18754 {
18755 case DW_FORM_addr:
3019eac3 18756 case DW_FORM_GNU_addr_index:
ac56253d 18757 {
ac56253d
TT
18758 gdb_byte *data;
18759
98bfdba5
PA
18760 if (TYPE_LENGTH (type) != cu_header->addr_size)
18761 dwarf2_const_value_length_mismatch_complaint (name,
ac56253d 18762 cu_header->addr_size,
98bfdba5 18763 TYPE_LENGTH (type));
ac56253d
TT
18764 /* Symbols of this form are reasonably rare, so we just
18765 piggyback on the existing location code rather than writing
18766 a new implementation of symbol_computed_ops. */
7919a973 18767 *baton = obstack_alloc (obstack, sizeof (struct dwarf2_locexpr_baton));
98bfdba5
PA
18768 (*baton)->per_cu = cu->per_cu;
18769 gdb_assert ((*baton)->per_cu);
ac56253d 18770
98bfdba5 18771 (*baton)->size = 2 + cu_header->addr_size;
7919a973 18772 data = obstack_alloc (obstack, (*baton)->size);
98bfdba5 18773 (*baton)->data = data;
ac56253d
TT
18774
18775 data[0] = DW_OP_addr;
18776 store_unsigned_integer (&data[1], cu_header->addr_size,
18777 byte_order, DW_ADDR (attr));
18778 data[cu_header->addr_size + 1] = DW_OP_stack_value;
ac56253d 18779 }
c906108c 18780 break;
4ac36638 18781 case DW_FORM_string:
93b5768b 18782 case DW_FORM_strp:
3019eac3 18783 case DW_FORM_GNU_str_index:
36586728 18784 case DW_FORM_GNU_strp_alt:
98bfdba5
PA
18785 /* DW_STRING is already allocated on the objfile obstack, point
18786 directly to it. */
d521ce57 18787 *bytes = (const gdb_byte *) DW_STRING (attr);
93b5768b 18788 break;
c906108c
SS
18789 case DW_FORM_block1:
18790 case DW_FORM_block2:
18791 case DW_FORM_block4:
18792 case DW_FORM_block:
2dc7f7b3 18793 case DW_FORM_exprloc:
c906108c 18794 blk = DW_BLOCK (attr);
98bfdba5
PA
18795 if (TYPE_LENGTH (type) != blk->size)
18796 dwarf2_const_value_length_mismatch_complaint (name, blk->size,
18797 TYPE_LENGTH (type));
18798 *bytes = blk->data;
c906108c 18799 break;
2df3850c
JM
18800
18801 /* The DW_AT_const_value attributes are supposed to carry the
18802 symbol's value "represented as it would be on the target
18803 architecture." By the time we get here, it's already been
18804 converted to host endianness, so we just need to sign- or
18805 zero-extend it as appropriate. */
18806 case DW_FORM_data1:
3aef2284 18807 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
2df3850c 18808 break;
c906108c 18809 case DW_FORM_data2:
3aef2284 18810 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
2df3850c 18811 break;
c906108c 18812 case DW_FORM_data4:
3aef2284 18813 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
2df3850c 18814 break;
c906108c 18815 case DW_FORM_data8:
3aef2284 18816 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
2df3850c
JM
18817 break;
18818
c906108c 18819 case DW_FORM_sdata:
98bfdba5 18820 *value = DW_SND (attr);
2df3850c
JM
18821 break;
18822
c906108c 18823 case DW_FORM_udata:
98bfdba5 18824 *value = DW_UNSND (attr);
c906108c 18825 break;
2df3850c 18826
c906108c 18827 default:
4d3c2250 18828 complaint (&symfile_complaints,
e2e0b3e5 18829 _("unsupported const value attribute form: '%s'"),
4d3c2250 18830 dwarf_form_name (attr->form));
98bfdba5 18831 *value = 0;
c906108c
SS
18832 break;
18833 }
18834}
18835
2df3850c 18836
98bfdba5
PA
18837/* Copy constant value from an attribute to a symbol. */
18838
2df3850c 18839static void
ff39bb5e 18840dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
98bfdba5 18841 struct dwarf2_cu *cu)
2df3850c 18842{
98bfdba5
PA
18843 struct objfile *objfile = cu->objfile;
18844 struct comp_unit_head *cu_header = &cu->header;
12df843f 18845 LONGEST value;
d521ce57 18846 const gdb_byte *bytes;
98bfdba5 18847 struct dwarf2_locexpr_baton *baton;
2df3850c 18848
98bfdba5
PA
18849 dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
18850 SYMBOL_PRINT_NAME (sym),
18851 &objfile->objfile_obstack, cu,
18852 &value, &bytes, &baton);
2df3850c 18853
98bfdba5
PA
18854 if (baton != NULL)
18855 {
98bfdba5 18856 SYMBOL_LOCATION_BATON (sym) = baton;
f1e6e072 18857 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
98bfdba5
PA
18858 }
18859 else if (bytes != NULL)
18860 {
18861 SYMBOL_VALUE_BYTES (sym) = bytes;
f1e6e072 18862 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
98bfdba5
PA
18863 }
18864 else
18865 {
18866 SYMBOL_VALUE (sym) = value;
f1e6e072 18867 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
98bfdba5 18868 }
2df3850c
JM
18869}
18870
c906108c
SS
18871/* Return the type of the die in question using its DW_AT_type attribute. */
18872
18873static struct type *
e7c27a73 18874die_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 18875{
c906108c 18876 struct attribute *type_attr;
c906108c 18877
e142c38c 18878 type_attr = dwarf2_attr (die, DW_AT_type, cu);
c906108c
SS
18879 if (!type_attr)
18880 {
18881 /* A missing DW_AT_type represents a void type. */
46bf5051 18882 return objfile_type (cu->objfile)->builtin_void;
c906108c 18883 }
348e048f 18884
673bfd45 18885 return lookup_die_type (die, type_attr, cu);
c906108c
SS
18886}
18887
b4ba55a1
JB
18888/* True iff CU's producer generates GNAT Ada auxiliary information
18889 that allows to find parallel types through that information instead
18890 of having to do expensive parallel lookups by type name. */
18891
18892static int
18893need_gnat_info (struct dwarf2_cu *cu)
18894{
18895 /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
18896 of GNAT produces this auxiliary information, without any indication
18897 that it is produced. Part of enhancing the FSF version of GNAT
18898 to produce that information will be to put in place an indicator
18899 that we can use in order to determine whether the descriptive type
18900 info is available or not. One suggestion that has been made is
18901 to use a new attribute, attached to the CU die. For now, assume
18902 that the descriptive type info is not available. */
18903 return 0;
18904}
18905
b4ba55a1
JB
18906/* Return the auxiliary type of the die in question using its
18907 DW_AT_GNAT_descriptive_type attribute. Returns NULL if the
18908 attribute is not present. */
18909
18910static struct type *
18911die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
18912{
b4ba55a1 18913 struct attribute *type_attr;
b4ba55a1
JB
18914
18915 type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
18916 if (!type_attr)
18917 return NULL;
18918
673bfd45 18919 return lookup_die_type (die, type_attr, cu);
b4ba55a1
JB
18920}
18921
18922/* If DIE has a descriptive_type attribute, then set the TYPE's
18923 descriptive type accordingly. */
18924
18925static void
18926set_descriptive_type (struct type *type, struct die_info *die,
18927 struct dwarf2_cu *cu)
18928{
18929 struct type *descriptive_type = die_descriptive_type (die, cu);
18930
18931 if (descriptive_type)
18932 {
18933 ALLOCATE_GNAT_AUX_TYPE (type);
18934 TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
18935 }
18936}
18937
c906108c
SS
18938/* Return the containing type of the die in question using its
18939 DW_AT_containing_type attribute. */
18940
18941static struct type *
e7c27a73 18942die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 18943{
c906108c 18944 struct attribute *type_attr;
c906108c 18945
e142c38c 18946 type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
33ac96f0
JK
18947 if (!type_attr)
18948 error (_("Dwarf Error: Problem turning containing type into gdb type "
4262abfb 18949 "[in module %s]"), objfile_name (cu->objfile));
33ac96f0 18950
673bfd45 18951 return lookup_die_type (die, type_attr, cu);
c906108c
SS
18952}
18953
ac9ec31b
DE
18954/* Return an error marker type to use for the ill formed type in DIE/CU. */
18955
18956static struct type *
18957build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
18958{
18959 struct objfile *objfile = dwarf2_per_objfile->objfile;
18960 char *message, *saved;
18961
18962 message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
4262abfb 18963 objfile_name (objfile),
ac9ec31b
DE
18964 cu->header.offset.sect_off,
18965 die->offset.sect_off);
18966 saved = obstack_copy0 (&objfile->objfile_obstack,
18967 message, strlen (message));
18968 xfree (message);
18969
18970 return init_type (TYPE_CODE_ERROR, 0, 0, saved, objfile);
18971}
18972
673bfd45 18973/* Look up the type of DIE in CU using its type attribute ATTR.
ac9ec31b
DE
18974 ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
18975 DW_AT_containing_type.
673bfd45
DE
18976 If there is no type substitute an error marker. */
18977
c906108c 18978static struct type *
ff39bb5e 18979lookup_die_type (struct die_info *die, const struct attribute *attr,
673bfd45 18980 struct dwarf2_cu *cu)
c906108c 18981{
bb5ed363 18982 struct objfile *objfile = cu->objfile;
f792889a
DJ
18983 struct type *this_type;
18984
ac9ec31b
DE
18985 gdb_assert (attr->name == DW_AT_type
18986 || attr->name == DW_AT_GNAT_descriptive_type
18987 || attr->name == DW_AT_containing_type);
18988
673bfd45
DE
18989 /* First see if we have it cached. */
18990
36586728
TT
18991 if (attr->form == DW_FORM_GNU_ref_alt)
18992 {
18993 struct dwarf2_per_cu_data *per_cu;
18994 sect_offset offset = dwarf2_get_ref_die_offset (attr);
18995
18996 per_cu = dwarf2_find_containing_comp_unit (offset, 1, cu->objfile);
18997 this_type = get_die_type_at_offset (offset, per_cu);
18998 }
7771576e 18999 else if (attr_form_is_ref (attr))
673bfd45 19000 {
b64f50a1 19001 sect_offset offset = dwarf2_get_ref_die_offset (attr);
673bfd45
DE
19002
19003 this_type = get_die_type_at_offset (offset, cu->per_cu);
19004 }
55f1336d 19005 else if (attr->form == DW_FORM_ref_sig8)
673bfd45 19006 {
ac9ec31b 19007 ULONGEST signature = DW_SIGNATURE (attr);
673bfd45 19008
ac9ec31b 19009 return get_signatured_type (die, signature, cu);
673bfd45
DE
19010 }
19011 else
19012 {
ac9ec31b
DE
19013 complaint (&symfile_complaints,
19014 _("Dwarf Error: Bad type attribute %s in DIE"
19015 " at 0x%x [in module %s]"),
19016 dwarf_attr_name (attr->name), die->offset.sect_off,
4262abfb 19017 objfile_name (objfile));
ac9ec31b 19018 return build_error_marker_type (cu, die);
673bfd45
DE
19019 }
19020
19021 /* If not cached we need to read it in. */
19022
19023 if (this_type == NULL)
19024 {
ac9ec31b 19025 struct die_info *type_die = NULL;
673bfd45
DE
19026 struct dwarf2_cu *type_cu = cu;
19027
7771576e 19028 if (attr_form_is_ref (attr))
ac9ec31b
DE
19029 type_die = follow_die_ref (die, attr, &type_cu);
19030 if (type_die == NULL)
19031 return build_error_marker_type (cu, die);
19032 /* If we find the type now, it's probably because the type came
3019eac3
DE
19033 from an inter-CU reference and the type's CU got expanded before
19034 ours. */
ac9ec31b 19035 this_type = read_type_die (type_die, type_cu);
673bfd45
DE
19036 }
19037
19038 /* If we still don't have a type use an error marker. */
19039
19040 if (this_type == NULL)
ac9ec31b 19041 return build_error_marker_type (cu, die);
673bfd45 19042
f792889a 19043 return this_type;
c906108c
SS
19044}
19045
673bfd45
DE
19046/* Return the type in DIE, CU.
19047 Returns NULL for invalid types.
19048
02142a6c 19049 This first does a lookup in die_type_hash,
673bfd45
DE
19050 and only reads the die in if necessary.
19051
19052 NOTE: This can be called when reading in partial or full symbols. */
19053
f792889a 19054static struct type *
e7c27a73 19055read_type_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 19056{
f792889a
DJ
19057 struct type *this_type;
19058
19059 this_type = get_die_type (die, cu);
19060 if (this_type)
19061 return this_type;
19062
673bfd45
DE
19063 return read_type_die_1 (die, cu);
19064}
19065
19066/* Read the type in DIE, CU.
19067 Returns NULL for invalid types. */
19068
19069static struct type *
19070read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
19071{
19072 struct type *this_type = NULL;
19073
c906108c
SS
19074 switch (die->tag)
19075 {
19076 case DW_TAG_class_type:
680b30c7 19077 case DW_TAG_interface_type:
c906108c
SS
19078 case DW_TAG_structure_type:
19079 case DW_TAG_union_type:
f792889a 19080 this_type = read_structure_type (die, cu);
c906108c
SS
19081 break;
19082 case DW_TAG_enumeration_type:
f792889a 19083 this_type = read_enumeration_type (die, cu);
c906108c
SS
19084 break;
19085 case DW_TAG_subprogram:
19086 case DW_TAG_subroutine_type:
edb3359d 19087 case DW_TAG_inlined_subroutine:
f792889a 19088 this_type = read_subroutine_type (die, cu);
c906108c
SS
19089 break;
19090 case DW_TAG_array_type:
f792889a 19091 this_type = read_array_type (die, cu);
c906108c 19092 break;
72019c9c 19093 case DW_TAG_set_type:
f792889a 19094 this_type = read_set_type (die, cu);
72019c9c 19095 break;
c906108c 19096 case DW_TAG_pointer_type:
f792889a 19097 this_type = read_tag_pointer_type (die, cu);
c906108c
SS
19098 break;
19099 case DW_TAG_ptr_to_member_type:
f792889a 19100 this_type = read_tag_ptr_to_member_type (die, cu);
c906108c
SS
19101 break;
19102 case DW_TAG_reference_type:
f792889a 19103 this_type = read_tag_reference_type (die, cu);
c906108c
SS
19104 break;
19105 case DW_TAG_const_type:
f792889a 19106 this_type = read_tag_const_type (die, cu);
c906108c
SS
19107 break;
19108 case DW_TAG_volatile_type:
f792889a 19109 this_type = read_tag_volatile_type (die, cu);
c906108c 19110 break;
06d66ee9
TT
19111 case DW_TAG_restrict_type:
19112 this_type = read_tag_restrict_type (die, cu);
19113 break;
c906108c 19114 case DW_TAG_string_type:
f792889a 19115 this_type = read_tag_string_type (die, cu);
c906108c
SS
19116 break;
19117 case DW_TAG_typedef:
f792889a 19118 this_type = read_typedef (die, cu);
c906108c 19119 break;
a02abb62 19120 case DW_TAG_subrange_type:
f792889a 19121 this_type = read_subrange_type (die, cu);
a02abb62 19122 break;
c906108c 19123 case DW_TAG_base_type:
f792889a 19124 this_type = read_base_type (die, cu);
c906108c 19125 break;
81a17f79 19126 case DW_TAG_unspecified_type:
f792889a 19127 this_type = read_unspecified_type (die, cu);
81a17f79 19128 break;
0114d602
DJ
19129 case DW_TAG_namespace:
19130 this_type = read_namespace_type (die, cu);
19131 break;
f55ee35c
JK
19132 case DW_TAG_module:
19133 this_type = read_module_type (die, cu);
19134 break;
a2c2acaf
MW
19135 case DW_TAG_atomic_type:
19136 this_type = read_tag_atomic_type (die, cu);
19137 break;
c906108c 19138 default:
3e43a32a
MS
19139 complaint (&symfile_complaints,
19140 _("unexpected tag in read_type_die: '%s'"),
4d3c2250 19141 dwarf_tag_name (die->tag));
c906108c
SS
19142 break;
19143 }
63d06c5c 19144
f792889a 19145 return this_type;
63d06c5c
DC
19146}
19147
abc72ce4
DE
19148/* See if we can figure out if the class lives in a namespace. We do
19149 this by looking for a member function; its demangled name will
19150 contain namespace info, if there is any.
19151 Return the computed name or NULL.
19152 Space for the result is allocated on the objfile's obstack.
19153 This is the full-die version of guess_partial_die_structure_name.
19154 In this case we know DIE has no useful parent. */
19155
19156static char *
19157guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
19158{
19159 struct die_info *spec_die;
19160 struct dwarf2_cu *spec_cu;
19161 struct die_info *child;
19162
19163 spec_cu = cu;
19164 spec_die = die_specification (die, &spec_cu);
19165 if (spec_die != NULL)
19166 {
19167 die = spec_die;
19168 cu = spec_cu;
19169 }
19170
19171 for (child = die->child;
19172 child != NULL;
19173 child = child->sibling)
19174 {
19175 if (child->tag == DW_TAG_subprogram)
19176 {
7d45c7c3 19177 const char *linkage_name;
abc72ce4 19178
7d45c7c3
KB
19179 linkage_name = dwarf2_string_attr (child, DW_AT_linkage_name, cu);
19180 if (linkage_name == NULL)
19181 linkage_name = dwarf2_string_attr (child, DW_AT_MIPS_linkage_name,
19182 cu);
19183 if (linkage_name != NULL)
abc72ce4
DE
19184 {
19185 char *actual_name
19186 = language_class_name_from_physname (cu->language_defn,
7d45c7c3 19187 linkage_name);
abc72ce4
DE
19188 char *name = NULL;
19189
19190 if (actual_name != NULL)
19191 {
15d034d0 19192 const char *die_name = dwarf2_name (die, cu);
abc72ce4
DE
19193
19194 if (die_name != NULL
19195 && strcmp (die_name, actual_name) != 0)
19196 {
19197 /* Strip off the class name from the full name.
19198 We want the prefix. */
19199 int die_name_len = strlen (die_name);
19200 int actual_name_len = strlen (actual_name);
19201
19202 /* Test for '::' as a sanity check. */
19203 if (actual_name_len > die_name_len + 2
3e43a32a
MS
19204 && actual_name[actual_name_len
19205 - die_name_len - 1] == ':')
abc72ce4 19206 name =
34a68019 19207 obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb
TT
19208 actual_name,
19209 actual_name_len - die_name_len - 2);
abc72ce4
DE
19210 }
19211 }
19212 xfree (actual_name);
19213 return name;
19214 }
19215 }
19216 }
19217
19218 return NULL;
19219}
19220
96408a79
SA
19221/* GCC might emit a nameless typedef that has a linkage name. Determine the
19222 prefix part in such case. See
19223 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
19224
19225static char *
19226anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
19227{
19228 struct attribute *attr;
19229 char *base;
19230
19231 if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
19232 && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
19233 return NULL;
19234
7d45c7c3 19235 if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
96408a79
SA
19236 return NULL;
19237
19238 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19239 if (attr == NULL)
19240 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19241 if (attr == NULL || DW_STRING (attr) == NULL)
19242 return NULL;
19243
19244 /* dwarf2_name had to be already called. */
19245 gdb_assert (DW_STRING_IS_CANONICAL (attr));
19246
19247 /* Strip the base name, keep any leading namespaces/classes. */
19248 base = strrchr (DW_STRING (attr), ':');
19249 if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
19250 return "";
19251
34a68019 19252 return obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb 19253 DW_STRING (attr), &base[-1] - DW_STRING (attr));
96408a79
SA
19254}
19255
fdde2d81 19256/* Return the name of the namespace/class that DIE is defined within,
0114d602 19257 or "" if we can't tell. The caller should not xfree the result.
fdde2d81 19258
0114d602
DJ
19259 For example, if we're within the method foo() in the following
19260 code:
19261
19262 namespace N {
19263 class C {
19264 void foo () {
19265 }
19266 };
19267 }
19268
19269 then determine_prefix on foo's die will return "N::C". */
fdde2d81 19270
0d5cff50 19271static const char *
e142c38c 19272determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
63d06c5c 19273{
0114d602
DJ
19274 struct die_info *parent, *spec_die;
19275 struct dwarf2_cu *spec_cu;
19276 struct type *parent_type;
96408a79 19277 char *retval;
63d06c5c 19278
f55ee35c 19279 if (cu->language != language_cplus && cu->language != language_java
45280282 19280 && cu->language != language_fortran && cu->language != language_d)
0114d602
DJ
19281 return "";
19282
96408a79
SA
19283 retval = anonymous_struct_prefix (die, cu);
19284 if (retval)
19285 return retval;
19286
0114d602
DJ
19287 /* We have to be careful in the presence of DW_AT_specification.
19288 For example, with GCC 3.4, given the code
19289
19290 namespace N {
19291 void foo() {
19292 // Definition of N::foo.
19293 }
19294 }
19295
19296 then we'll have a tree of DIEs like this:
19297
19298 1: DW_TAG_compile_unit
19299 2: DW_TAG_namespace // N
19300 3: DW_TAG_subprogram // declaration of N::foo
19301 4: DW_TAG_subprogram // definition of N::foo
19302 DW_AT_specification // refers to die #3
19303
19304 Thus, when processing die #4, we have to pretend that we're in
19305 the context of its DW_AT_specification, namely the contex of die
19306 #3. */
19307 spec_cu = cu;
19308 spec_die = die_specification (die, &spec_cu);
19309 if (spec_die == NULL)
19310 parent = die->parent;
19311 else
63d06c5c 19312 {
0114d602
DJ
19313 parent = spec_die->parent;
19314 cu = spec_cu;
63d06c5c 19315 }
0114d602
DJ
19316
19317 if (parent == NULL)
19318 return "";
98bfdba5
PA
19319 else if (parent->building_fullname)
19320 {
19321 const char *name;
19322 const char *parent_name;
19323
19324 /* It has been seen on RealView 2.2 built binaries,
19325 DW_TAG_template_type_param types actually _defined_ as
19326 children of the parent class:
19327
19328 enum E {};
19329 template class <class Enum> Class{};
19330 Class<enum E> class_e;
19331
19332 1: DW_TAG_class_type (Class)
19333 2: DW_TAG_enumeration_type (E)
19334 3: DW_TAG_enumerator (enum1:0)
19335 3: DW_TAG_enumerator (enum2:1)
19336 ...
19337 2: DW_TAG_template_type_param
19338 DW_AT_type DW_FORM_ref_udata (E)
19339
19340 Besides being broken debug info, it can put GDB into an
19341 infinite loop. Consider:
19342
19343 When we're building the full name for Class<E>, we'll start
19344 at Class, and go look over its template type parameters,
19345 finding E. We'll then try to build the full name of E, and
19346 reach here. We're now trying to build the full name of E,
19347 and look over the parent DIE for containing scope. In the
19348 broken case, if we followed the parent DIE of E, we'd again
19349 find Class, and once again go look at its template type
19350 arguments, etc., etc. Simply don't consider such parent die
19351 as source-level parent of this die (it can't be, the language
19352 doesn't allow it), and break the loop here. */
19353 name = dwarf2_name (die, cu);
19354 parent_name = dwarf2_name (parent, cu);
19355 complaint (&symfile_complaints,
19356 _("template param type '%s' defined within parent '%s'"),
19357 name ? name : "<unknown>",
19358 parent_name ? parent_name : "<unknown>");
19359 return "";
19360 }
63d06c5c 19361 else
0114d602
DJ
19362 switch (parent->tag)
19363 {
63d06c5c 19364 case DW_TAG_namespace:
0114d602 19365 parent_type = read_type_die (parent, cu);
acebe513
UW
19366 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
19367 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
19368 Work around this problem here. */
19369 if (cu->language == language_cplus
19370 && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
19371 return "";
0114d602
DJ
19372 /* We give a name to even anonymous namespaces. */
19373 return TYPE_TAG_NAME (parent_type);
63d06c5c 19374 case DW_TAG_class_type:
680b30c7 19375 case DW_TAG_interface_type:
63d06c5c 19376 case DW_TAG_structure_type:
0114d602 19377 case DW_TAG_union_type:
f55ee35c 19378 case DW_TAG_module:
0114d602
DJ
19379 parent_type = read_type_die (parent, cu);
19380 if (TYPE_TAG_NAME (parent_type) != NULL)
19381 return TYPE_TAG_NAME (parent_type);
19382 else
19383 /* An anonymous structure is only allowed non-static data
19384 members; no typedefs, no member functions, et cetera.
19385 So it does not need a prefix. */
19386 return "";
abc72ce4 19387 case DW_TAG_compile_unit:
95554aad 19388 case DW_TAG_partial_unit:
abc72ce4
DE
19389 /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace. Cope. */
19390 if (cu->language == language_cplus
8b70b953 19391 && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
abc72ce4
DE
19392 && die->child != NULL
19393 && (die->tag == DW_TAG_class_type
19394 || die->tag == DW_TAG_structure_type
19395 || die->tag == DW_TAG_union_type))
19396 {
19397 char *name = guess_full_die_structure_name (die, cu);
19398 if (name != NULL)
19399 return name;
19400 }
19401 return "";
3d567982
TT
19402 case DW_TAG_enumeration_type:
19403 parent_type = read_type_die (parent, cu);
19404 if (TYPE_DECLARED_CLASS (parent_type))
19405 {
19406 if (TYPE_TAG_NAME (parent_type) != NULL)
19407 return TYPE_TAG_NAME (parent_type);
19408 return "";
19409 }
19410 /* Fall through. */
63d06c5c 19411 default:
8176b9b8 19412 return determine_prefix (parent, cu);
63d06c5c 19413 }
63d06c5c
DC
19414}
19415
3e43a32a
MS
19416/* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
19417 with appropriate separator. If PREFIX or SUFFIX is NULL or empty, then
19418 simply copy the SUFFIX or PREFIX, respectively. If OBS is non-null, perform
19419 an obconcat, otherwise allocate storage for the result. The CU argument is
19420 used to determine the language and hence, the appropriate separator. */
987504bb 19421
f55ee35c 19422#define MAX_SEP_LEN 7 /* strlen ("__") + strlen ("_MOD_") */
63d06c5c
DC
19423
19424static char *
f55ee35c
JK
19425typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
19426 int physname, struct dwarf2_cu *cu)
63d06c5c 19427{
f55ee35c 19428 const char *lead = "";
5c315b68 19429 const char *sep;
63d06c5c 19430
3e43a32a
MS
19431 if (suffix == NULL || suffix[0] == '\0'
19432 || prefix == NULL || prefix[0] == '\0')
987504bb
JJ
19433 sep = "";
19434 else if (cu->language == language_java)
19435 sep = ".";
45280282
IB
19436 else if (cu->language == language_d)
19437 {
19438 /* For D, the 'main' function could be defined in any module, but it
19439 should never be prefixed. */
19440 if (strcmp (suffix, "D main") == 0)
19441 {
19442 prefix = "";
19443 sep = "";
19444 }
19445 else
19446 sep = ".";
19447 }
f55ee35c
JK
19448 else if (cu->language == language_fortran && physname)
19449 {
19450 /* This is gfortran specific mangling. Normally DW_AT_linkage_name or
19451 DW_AT_MIPS_linkage_name is preferred and used instead. */
19452
19453 lead = "__";
19454 sep = "_MOD_";
19455 }
987504bb
JJ
19456 else
19457 sep = "::";
63d06c5c 19458
6dd47d34
DE
19459 if (prefix == NULL)
19460 prefix = "";
19461 if (suffix == NULL)
19462 suffix = "";
19463
987504bb
JJ
19464 if (obs == NULL)
19465 {
3e43a32a
MS
19466 char *retval
19467 = xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1);
9a619af0 19468
f55ee35c
JK
19469 strcpy (retval, lead);
19470 strcat (retval, prefix);
6dd47d34
DE
19471 strcat (retval, sep);
19472 strcat (retval, suffix);
63d06c5c
DC
19473 return retval;
19474 }
987504bb
JJ
19475 else
19476 {
19477 /* We have an obstack. */
f55ee35c 19478 return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
987504bb 19479 }
63d06c5c
DC
19480}
19481
c906108c
SS
19482/* Return sibling of die, NULL if no sibling. */
19483
f9aca02d 19484static struct die_info *
fba45db2 19485sibling_die (struct die_info *die)
c906108c 19486{
639d11d3 19487 return die->sibling;
c906108c
SS
19488}
19489
71c25dea
TT
19490/* Get name of a die, return NULL if not found. */
19491
15d034d0
TT
19492static const char *
19493dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
71c25dea
TT
19494 struct obstack *obstack)
19495{
19496 if (name && cu->language == language_cplus)
19497 {
19498 char *canon_name = cp_canonicalize_string (name);
19499
19500 if (canon_name != NULL)
19501 {
19502 if (strcmp (canon_name, name) != 0)
10f0c4bb 19503 name = obstack_copy0 (obstack, canon_name, strlen (canon_name));
71c25dea
TT
19504 xfree (canon_name);
19505 }
19506 }
19507
19508 return name;
c906108c
SS
19509}
19510
96553a0c
DE
19511/* Get name of a die, return NULL if not found.
19512 Anonymous namespaces are converted to their magic string. */
9219021c 19513
15d034d0 19514static const char *
e142c38c 19515dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
9219021c
DC
19516{
19517 struct attribute *attr;
19518
e142c38c 19519 attr = dwarf2_attr (die, DW_AT_name, cu);
53832f31 19520 if ((!attr || !DW_STRING (attr))
96553a0c 19521 && die->tag != DW_TAG_namespace
53832f31
TT
19522 && die->tag != DW_TAG_class_type
19523 && die->tag != DW_TAG_interface_type
19524 && die->tag != DW_TAG_structure_type
19525 && die->tag != DW_TAG_union_type)
71c25dea
TT
19526 return NULL;
19527
19528 switch (die->tag)
19529 {
19530 case DW_TAG_compile_unit:
95554aad 19531 case DW_TAG_partial_unit:
71c25dea
TT
19532 /* Compilation units have a DW_AT_name that is a filename, not
19533 a source language identifier. */
19534 case DW_TAG_enumeration_type:
19535 case DW_TAG_enumerator:
19536 /* These tags always have simple identifiers already; no need
19537 to canonicalize them. */
19538 return DW_STRING (attr);
907af001 19539
96553a0c
DE
19540 case DW_TAG_namespace:
19541 if (attr != NULL && DW_STRING (attr) != NULL)
19542 return DW_STRING (attr);
19543 return CP_ANONYMOUS_NAMESPACE_STR;
19544
418835cc
KS
19545 case DW_TAG_subprogram:
19546 /* Java constructors will all be named "<init>", so return
19547 the class name when we see this special case. */
19548 if (cu->language == language_java
19549 && DW_STRING (attr) != NULL
19550 && strcmp (DW_STRING (attr), "<init>") == 0)
19551 {
19552 struct dwarf2_cu *spec_cu = cu;
19553 struct die_info *spec_die;
19554
19555 /* GCJ will output '<init>' for Java constructor names.
19556 For this special case, return the name of the parent class. */
19557
cdc07690 19558 /* GCJ may output subprogram DIEs with AT_specification set.
418835cc
KS
19559 If so, use the name of the specified DIE. */
19560 spec_die = die_specification (die, &spec_cu);
19561 if (spec_die != NULL)
19562 return dwarf2_name (spec_die, spec_cu);
19563
19564 do
19565 {
19566 die = die->parent;
19567 if (die->tag == DW_TAG_class_type)
19568 return dwarf2_name (die, cu);
19569 }
95554aad
TT
19570 while (die->tag != DW_TAG_compile_unit
19571 && die->tag != DW_TAG_partial_unit);
418835cc 19572 }
907af001
UW
19573 break;
19574
19575 case DW_TAG_class_type:
19576 case DW_TAG_interface_type:
19577 case DW_TAG_structure_type:
19578 case DW_TAG_union_type:
19579 /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
19580 structures or unions. These were of the form "._%d" in GCC 4.1,
19581 or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
19582 and GCC 4.4. We work around this problem by ignoring these. */
53832f31 19583 if (attr && DW_STRING (attr)
61012eef
GB
19584 && (startswith (DW_STRING (attr), "._")
19585 || startswith (DW_STRING (attr), "<anonymous")))
907af001 19586 return NULL;
53832f31
TT
19587
19588 /* GCC might emit a nameless typedef that has a linkage name. See
19589 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
19590 if (!attr || DW_STRING (attr) == NULL)
19591 {
df5c6c50 19592 char *demangled = NULL;
53832f31
TT
19593
19594 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19595 if (attr == NULL)
19596 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19597
19598 if (attr == NULL || DW_STRING (attr) == NULL)
19599 return NULL;
19600
df5c6c50
JK
19601 /* Avoid demangling DW_STRING (attr) the second time on a second
19602 call for the same DIE. */
19603 if (!DW_STRING_IS_CANONICAL (attr))
8de20a37 19604 demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
53832f31
TT
19605
19606 if (demangled)
19607 {
96408a79
SA
19608 char *base;
19609
53832f31 19610 /* FIXME: we already did this for the partial symbol... */
34a68019
TT
19611 DW_STRING (attr)
19612 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
19613 demangled, strlen (demangled));
53832f31
TT
19614 DW_STRING_IS_CANONICAL (attr) = 1;
19615 xfree (demangled);
96408a79
SA
19616
19617 /* Strip any leading namespaces/classes, keep only the base name.
19618 DW_AT_name for named DIEs does not contain the prefixes. */
19619 base = strrchr (DW_STRING (attr), ':');
19620 if (base && base > DW_STRING (attr) && base[-1] == ':')
19621 return &base[1];
19622 else
19623 return DW_STRING (attr);
53832f31
TT
19624 }
19625 }
907af001
UW
19626 break;
19627
71c25dea 19628 default:
907af001
UW
19629 break;
19630 }
19631
19632 if (!DW_STRING_IS_CANONICAL (attr))
19633 {
19634 DW_STRING (attr)
19635 = dwarf2_canonicalize_name (DW_STRING (attr), cu,
34a68019 19636 &cu->objfile->per_bfd->storage_obstack);
907af001 19637 DW_STRING_IS_CANONICAL (attr) = 1;
71c25dea 19638 }
907af001 19639 return DW_STRING (attr);
9219021c
DC
19640}
19641
19642/* Return the die that this die in an extension of, or NULL if there
f2f0e013
DJ
19643 is none. *EXT_CU is the CU containing DIE on input, and the CU
19644 containing the return value on output. */
9219021c
DC
19645
19646static struct die_info *
f2f0e013 19647dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
9219021c
DC
19648{
19649 struct attribute *attr;
9219021c 19650
f2f0e013 19651 attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
9219021c
DC
19652 if (attr == NULL)
19653 return NULL;
19654
f2f0e013 19655 return follow_die_ref (die, attr, ext_cu);
9219021c
DC
19656}
19657
c906108c
SS
19658/* Convert a DIE tag into its string name. */
19659
f39c6ffd 19660static const char *
aa1ee363 19661dwarf_tag_name (unsigned tag)
c906108c 19662{
f39c6ffd
TT
19663 const char *name = get_DW_TAG_name (tag);
19664
19665 if (name == NULL)
19666 return "DW_TAG_<unknown>";
19667
19668 return name;
c906108c
SS
19669}
19670
19671/* Convert a DWARF attribute code into its string name. */
19672
f39c6ffd 19673static const char *
aa1ee363 19674dwarf_attr_name (unsigned attr)
c906108c 19675{
f39c6ffd
TT
19676 const char *name;
19677
c764a876 19678#ifdef MIPS /* collides with DW_AT_HP_block_index */
f39c6ffd
TT
19679 if (attr == DW_AT_MIPS_fde)
19680 return "DW_AT_MIPS_fde";
19681#else
19682 if (attr == DW_AT_HP_block_index)
19683 return "DW_AT_HP_block_index";
c764a876 19684#endif
f39c6ffd
TT
19685
19686 name = get_DW_AT_name (attr);
19687
19688 if (name == NULL)
19689 return "DW_AT_<unknown>";
19690
19691 return name;
c906108c
SS
19692}
19693
19694/* Convert a DWARF value form code into its string name. */
19695
f39c6ffd 19696static const char *
aa1ee363 19697dwarf_form_name (unsigned form)
c906108c 19698{
f39c6ffd
TT
19699 const char *name = get_DW_FORM_name (form);
19700
19701 if (name == NULL)
19702 return "DW_FORM_<unknown>";
19703
19704 return name;
c906108c
SS
19705}
19706
19707static char *
fba45db2 19708dwarf_bool_name (unsigned mybool)
c906108c
SS
19709{
19710 if (mybool)
19711 return "TRUE";
19712 else
19713 return "FALSE";
19714}
19715
19716/* Convert a DWARF type code into its string name. */
19717
f39c6ffd 19718static const char *
aa1ee363 19719dwarf_type_encoding_name (unsigned enc)
c906108c 19720{
f39c6ffd 19721 const char *name = get_DW_ATE_name (enc);
c906108c 19722
f39c6ffd
TT
19723 if (name == NULL)
19724 return "DW_ATE_<unknown>";
c906108c 19725
f39c6ffd 19726 return name;
c906108c 19727}
c906108c 19728
f9aca02d 19729static void
d97bc12b 19730dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
c906108c
SS
19731{
19732 unsigned int i;
19733
d97bc12b
DE
19734 print_spaces (indent, f);
19735 fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
b64f50a1 19736 dwarf_tag_name (die->tag), die->abbrev, die->offset.sect_off);
d97bc12b
DE
19737
19738 if (die->parent != NULL)
19739 {
19740 print_spaces (indent, f);
19741 fprintf_unfiltered (f, " parent at offset: 0x%x\n",
b64f50a1 19742 die->parent->offset.sect_off);
d97bc12b
DE
19743 }
19744
19745 print_spaces (indent, f);
19746 fprintf_unfiltered (f, " has children: %s\n",
639d11d3 19747 dwarf_bool_name (die->child != NULL));
c906108c 19748
d97bc12b
DE
19749 print_spaces (indent, f);
19750 fprintf_unfiltered (f, " attributes:\n");
19751
c906108c
SS
19752 for (i = 0; i < die->num_attrs; ++i)
19753 {
d97bc12b
DE
19754 print_spaces (indent, f);
19755 fprintf_unfiltered (f, " %s (%s) ",
c906108c
SS
19756 dwarf_attr_name (die->attrs[i].name),
19757 dwarf_form_name (die->attrs[i].form));
d97bc12b 19758
c906108c
SS
19759 switch (die->attrs[i].form)
19760 {
c906108c 19761 case DW_FORM_addr:
3019eac3 19762 case DW_FORM_GNU_addr_index:
d97bc12b 19763 fprintf_unfiltered (f, "address: ");
5af949e3 19764 fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
c906108c
SS
19765 break;
19766 case DW_FORM_block2:
19767 case DW_FORM_block4:
19768 case DW_FORM_block:
19769 case DW_FORM_block1:
56eb65bd
SP
19770 fprintf_unfiltered (f, "block: size %s",
19771 pulongest (DW_BLOCK (&die->attrs[i])->size));
c906108c 19772 break;
2dc7f7b3 19773 case DW_FORM_exprloc:
56eb65bd
SP
19774 fprintf_unfiltered (f, "expression: size %s",
19775 pulongest (DW_BLOCK (&die->attrs[i])->size));
2dc7f7b3 19776 break;
4568ecf9
DE
19777 case DW_FORM_ref_addr:
19778 fprintf_unfiltered (f, "ref address: ");
19779 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19780 break;
36586728
TT
19781 case DW_FORM_GNU_ref_alt:
19782 fprintf_unfiltered (f, "alt ref address: ");
19783 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19784 break;
10b3939b
DJ
19785 case DW_FORM_ref1:
19786 case DW_FORM_ref2:
19787 case DW_FORM_ref4:
4568ecf9
DE
19788 case DW_FORM_ref8:
19789 case DW_FORM_ref_udata:
d97bc12b 19790 fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
4568ecf9 19791 (long) (DW_UNSND (&die->attrs[i])));
10b3939b 19792 break;
c906108c
SS
19793 case DW_FORM_data1:
19794 case DW_FORM_data2:
19795 case DW_FORM_data4:
ce5d95e1 19796 case DW_FORM_data8:
c906108c
SS
19797 case DW_FORM_udata:
19798 case DW_FORM_sdata:
43bbcdc2
PH
19799 fprintf_unfiltered (f, "constant: %s",
19800 pulongest (DW_UNSND (&die->attrs[i])));
c906108c 19801 break;
2dc7f7b3
TT
19802 case DW_FORM_sec_offset:
19803 fprintf_unfiltered (f, "section offset: %s",
19804 pulongest (DW_UNSND (&die->attrs[i])));
19805 break;
55f1336d 19806 case DW_FORM_ref_sig8:
ac9ec31b
DE
19807 fprintf_unfiltered (f, "signature: %s",
19808 hex_string (DW_SIGNATURE (&die->attrs[i])));
348e048f 19809 break;
c906108c 19810 case DW_FORM_string:
4bdf3d34 19811 case DW_FORM_strp:
3019eac3 19812 case DW_FORM_GNU_str_index:
36586728 19813 case DW_FORM_GNU_strp_alt:
8285870a 19814 fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
c906108c 19815 DW_STRING (&die->attrs[i])
8285870a
JK
19816 ? DW_STRING (&die->attrs[i]) : "",
19817 DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
c906108c
SS
19818 break;
19819 case DW_FORM_flag:
19820 if (DW_UNSND (&die->attrs[i]))
d97bc12b 19821 fprintf_unfiltered (f, "flag: TRUE");
c906108c 19822 else
d97bc12b 19823 fprintf_unfiltered (f, "flag: FALSE");
c906108c 19824 break;
2dc7f7b3
TT
19825 case DW_FORM_flag_present:
19826 fprintf_unfiltered (f, "flag: TRUE");
19827 break;
a8329558 19828 case DW_FORM_indirect:
0963b4bd
MS
19829 /* The reader will have reduced the indirect form to
19830 the "base form" so this form should not occur. */
3e43a32a
MS
19831 fprintf_unfiltered (f,
19832 "unexpected attribute form: DW_FORM_indirect");
a8329558 19833 break;
c906108c 19834 default:
d97bc12b 19835 fprintf_unfiltered (f, "unsupported attribute form: %d.",
c5aa993b 19836 die->attrs[i].form);
d97bc12b 19837 break;
c906108c 19838 }
d97bc12b 19839 fprintf_unfiltered (f, "\n");
c906108c
SS
19840 }
19841}
19842
f9aca02d 19843static void
d97bc12b 19844dump_die_for_error (struct die_info *die)
c906108c 19845{
d97bc12b
DE
19846 dump_die_shallow (gdb_stderr, 0, die);
19847}
19848
19849static void
19850dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
19851{
19852 int indent = level * 4;
19853
19854 gdb_assert (die != NULL);
19855
19856 if (level >= max_level)
19857 return;
19858
19859 dump_die_shallow (f, indent, die);
19860
19861 if (die->child != NULL)
c906108c 19862 {
d97bc12b
DE
19863 print_spaces (indent, f);
19864 fprintf_unfiltered (f, " Children:");
19865 if (level + 1 < max_level)
19866 {
19867 fprintf_unfiltered (f, "\n");
19868 dump_die_1 (f, level + 1, max_level, die->child);
19869 }
19870 else
19871 {
3e43a32a
MS
19872 fprintf_unfiltered (f,
19873 " [not printed, max nesting level reached]\n");
d97bc12b
DE
19874 }
19875 }
19876
19877 if (die->sibling != NULL && level > 0)
19878 {
19879 dump_die_1 (f, level, max_level, die->sibling);
c906108c
SS
19880 }
19881}
19882
d97bc12b
DE
19883/* This is called from the pdie macro in gdbinit.in.
19884 It's not static so gcc will keep a copy callable from gdb. */
19885
19886void
19887dump_die (struct die_info *die, int max_level)
19888{
19889 dump_die_1 (gdb_stdlog, 0, max_level, die);
19890}
19891
f9aca02d 19892static void
51545339 19893store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
c906108c 19894{
51545339 19895 void **slot;
c906108c 19896
b64f50a1
JK
19897 slot = htab_find_slot_with_hash (cu->die_hash, die, die->offset.sect_off,
19898 INSERT);
51545339
DJ
19899
19900 *slot = die;
c906108c
SS
19901}
19902
b64f50a1
JK
19903/* Return DIE offset of ATTR. Return 0 with complaint if ATTR is not of the
19904 required kind. */
19905
19906static sect_offset
ff39bb5e 19907dwarf2_get_ref_die_offset (const struct attribute *attr)
93311388 19908{
4568ecf9 19909 sect_offset retval = { DW_UNSND (attr) };
b64f50a1 19910
7771576e 19911 if (attr_form_is_ref (attr))
b64f50a1 19912 return retval;
93311388 19913
b64f50a1 19914 retval.sect_off = 0;
93311388
DE
19915 complaint (&symfile_complaints,
19916 _("unsupported die ref attribute form: '%s'"),
19917 dwarf_form_name (attr->form));
b64f50a1 19918 return retval;
c906108c
SS
19919}
19920
43bbcdc2
PH
19921/* Return the constant value held by ATTR. Return DEFAULT_VALUE if
19922 * the value held by the attribute is not constant. */
a02abb62 19923
43bbcdc2 19924static LONGEST
ff39bb5e 19925dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
a02abb62
JB
19926{
19927 if (attr->form == DW_FORM_sdata)
19928 return DW_SND (attr);
19929 else if (attr->form == DW_FORM_udata
19930 || attr->form == DW_FORM_data1
19931 || attr->form == DW_FORM_data2
19932 || attr->form == DW_FORM_data4
19933 || attr->form == DW_FORM_data8)
19934 return DW_UNSND (attr);
19935 else
19936 {
3e43a32a
MS
19937 complaint (&symfile_complaints,
19938 _("Attribute value is not a constant (%s)"),
a02abb62
JB
19939 dwarf_form_name (attr->form));
19940 return default_value;
19941 }
19942}
19943
348e048f
DE
19944/* Follow reference or signature attribute ATTR of SRC_DIE.
19945 On entry *REF_CU is the CU of SRC_DIE.
19946 On exit *REF_CU is the CU of the result. */
19947
19948static struct die_info *
ff39bb5e 19949follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
348e048f
DE
19950 struct dwarf2_cu **ref_cu)
19951{
19952 struct die_info *die;
19953
7771576e 19954 if (attr_form_is_ref (attr))
348e048f 19955 die = follow_die_ref (src_die, attr, ref_cu);
55f1336d 19956 else if (attr->form == DW_FORM_ref_sig8)
348e048f
DE
19957 die = follow_die_sig (src_die, attr, ref_cu);
19958 else
19959 {
19960 dump_die_for_error (src_die);
19961 error (_("Dwarf Error: Expected reference attribute [in module %s]"),
4262abfb 19962 objfile_name ((*ref_cu)->objfile));
348e048f
DE
19963 }
19964
19965 return die;
03dd20cc
DJ
19966}
19967
5c631832 19968/* Follow reference OFFSET.
673bfd45
DE
19969 On entry *REF_CU is the CU of the source die referencing OFFSET.
19970 On exit *REF_CU is the CU of the result.
19971 Returns NULL if OFFSET is invalid. */
f504f079 19972
f9aca02d 19973static struct die_info *
36586728
TT
19974follow_die_offset (sect_offset offset, int offset_in_dwz,
19975 struct dwarf2_cu **ref_cu)
c906108c 19976{
10b3939b 19977 struct die_info temp_die;
f2f0e013 19978 struct dwarf2_cu *target_cu, *cu = *ref_cu;
10b3939b 19979
348e048f
DE
19980 gdb_assert (cu->per_cu != NULL);
19981
98bfdba5
PA
19982 target_cu = cu;
19983
3019eac3 19984 if (cu->per_cu->is_debug_types)
348e048f
DE
19985 {
19986 /* .debug_types CUs cannot reference anything outside their CU.
19987 If they need to, they have to reference a signatured type via
55f1336d 19988 DW_FORM_ref_sig8. */
348e048f 19989 if (! offset_in_cu_p (&cu->header, offset))
5c631832 19990 return NULL;
348e048f 19991 }
36586728
TT
19992 else if (offset_in_dwz != cu->per_cu->is_dwz
19993 || ! offset_in_cu_p (&cu->header, offset))
10b3939b
DJ
19994 {
19995 struct dwarf2_per_cu_data *per_cu;
9a619af0 19996
36586728
TT
19997 per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
19998 cu->objfile);
03dd20cc
DJ
19999
20000 /* If necessary, add it to the queue and load its DIEs. */
95554aad
TT
20001 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
20002 load_full_comp_unit (per_cu, cu->language);
03dd20cc 20003
10b3939b
DJ
20004 target_cu = per_cu->cu;
20005 }
98bfdba5
PA
20006 else if (cu->dies == NULL)
20007 {
20008 /* We're loading full DIEs during partial symbol reading. */
20009 gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
95554aad 20010 load_full_comp_unit (cu->per_cu, language_minimal);
98bfdba5 20011 }
c906108c 20012
f2f0e013 20013 *ref_cu = target_cu;
51545339 20014 temp_die.offset = offset;
b64f50a1 20015 return htab_find_with_hash (target_cu->die_hash, &temp_die, offset.sect_off);
5c631832 20016}
10b3939b 20017
5c631832
JK
20018/* Follow reference attribute ATTR of SRC_DIE.
20019 On entry *REF_CU is the CU of SRC_DIE.
20020 On exit *REF_CU is the CU of the result. */
20021
20022static struct die_info *
ff39bb5e 20023follow_die_ref (struct die_info *src_die, const struct attribute *attr,
5c631832
JK
20024 struct dwarf2_cu **ref_cu)
20025{
b64f50a1 20026 sect_offset offset = dwarf2_get_ref_die_offset (attr);
5c631832
JK
20027 struct dwarf2_cu *cu = *ref_cu;
20028 struct die_info *die;
20029
36586728
TT
20030 die = follow_die_offset (offset,
20031 (attr->form == DW_FORM_GNU_ref_alt
20032 || cu->per_cu->is_dwz),
20033 ref_cu);
5c631832
JK
20034 if (!die)
20035 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
20036 "at 0x%x [in module %s]"),
4262abfb
JK
20037 offset.sect_off, src_die->offset.sect_off,
20038 objfile_name (cu->objfile));
348e048f 20039
5c631832
JK
20040 return die;
20041}
20042
d83e736b
JK
20043/* Return DWARF block referenced by DW_AT_location of DIE at OFFSET at PER_CU.
20044 Returned value is intended for DW_OP_call*. Returned
20045 dwarf2_locexpr_baton->data has lifetime of PER_CU->OBJFILE. */
5c631832
JK
20046
20047struct dwarf2_locexpr_baton
8b9737bf
TT
20048dwarf2_fetch_die_loc_sect_off (sect_offset offset,
20049 struct dwarf2_per_cu_data *per_cu,
20050 CORE_ADDR (*get_frame_pc) (void *baton),
20051 void *baton)
5c631832 20052{
918dd910 20053 struct dwarf2_cu *cu;
5c631832
JK
20054 struct die_info *die;
20055 struct attribute *attr;
20056 struct dwarf2_locexpr_baton retval;
20057
8cf6f0b1
TT
20058 dw2_setup (per_cu->objfile);
20059
918dd910
JK
20060 if (per_cu->cu == NULL)
20061 load_cu (per_cu);
20062 cu = per_cu->cu;
cc12ce38
DE
20063 if (cu == NULL)
20064 {
20065 /* We shouldn't get here for a dummy CU, but don't crash on the user.
20066 Instead just throw an error, not much else we can do. */
20067 error (_("Dwarf Error: Dummy CU at 0x%x referenced in module %s"),
20068 offset.sect_off, objfile_name (per_cu->objfile));
20069 }
918dd910 20070
36586728 20071 die = follow_die_offset (offset, per_cu->is_dwz, &cu);
5c631832
JK
20072 if (!die)
20073 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
4262abfb 20074 offset.sect_off, objfile_name (per_cu->objfile));
5c631832
JK
20075
20076 attr = dwarf2_attr (die, DW_AT_location, cu);
20077 if (!attr)
20078 {
e103e986
JK
20079 /* DWARF: "If there is no such attribute, then there is no effect.".
20080 DATA is ignored if SIZE is 0. */
5c631832 20081
e103e986 20082 retval.data = NULL;
5c631832
JK
20083 retval.size = 0;
20084 }
8cf6f0b1
TT
20085 else if (attr_form_is_section_offset (attr))
20086 {
20087 struct dwarf2_loclist_baton loclist_baton;
20088 CORE_ADDR pc = (*get_frame_pc) (baton);
20089 size_t size;
20090
20091 fill_in_loclist_baton (cu, &loclist_baton, attr);
20092
20093 retval.data = dwarf2_find_location_expression (&loclist_baton,
20094 &size, pc);
20095 retval.size = size;
20096 }
5c631832
JK
20097 else
20098 {
20099 if (!attr_form_is_block (attr))
20100 error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
20101 "is neither DW_FORM_block* nor DW_FORM_exprloc"),
4262abfb 20102 offset.sect_off, objfile_name (per_cu->objfile));
5c631832
JK
20103
20104 retval.data = DW_BLOCK (attr)->data;
20105 retval.size = DW_BLOCK (attr)->size;
20106 }
20107 retval.per_cu = cu->per_cu;
918dd910 20108
918dd910
JK
20109 age_cached_comp_units ();
20110
5c631832 20111 return retval;
348e048f
DE
20112}
20113
8b9737bf
TT
20114/* Like dwarf2_fetch_die_loc_sect_off, but take a CU
20115 offset. */
20116
20117struct dwarf2_locexpr_baton
20118dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
20119 struct dwarf2_per_cu_data *per_cu,
20120 CORE_ADDR (*get_frame_pc) (void *baton),
20121 void *baton)
20122{
20123 sect_offset offset = { per_cu->offset.sect_off + offset_in_cu.cu_off };
20124
20125 return dwarf2_fetch_die_loc_sect_off (offset, per_cu, get_frame_pc, baton);
20126}
20127
b6807d98
TT
20128/* Write a constant of a given type as target-ordered bytes into
20129 OBSTACK. */
20130
20131static const gdb_byte *
20132write_constant_as_bytes (struct obstack *obstack,
20133 enum bfd_endian byte_order,
20134 struct type *type,
20135 ULONGEST value,
20136 LONGEST *len)
20137{
20138 gdb_byte *result;
20139
20140 *len = TYPE_LENGTH (type);
20141 result = obstack_alloc (obstack, *len);
20142 store_unsigned_integer (result, *len, byte_order, value);
20143
20144 return result;
20145}
20146
20147/* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
20148 pointer to the constant bytes and set LEN to the length of the
20149 data. If memory is needed, allocate it on OBSTACK. If the DIE
20150 does not have a DW_AT_const_value, return NULL. */
20151
20152const gdb_byte *
20153dwarf2_fetch_constant_bytes (sect_offset offset,
20154 struct dwarf2_per_cu_data *per_cu,
20155 struct obstack *obstack,
20156 LONGEST *len)
20157{
20158 struct dwarf2_cu *cu;
20159 struct die_info *die;
20160 struct attribute *attr;
20161 const gdb_byte *result = NULL;
20162 struct type *type;
20163 LONGEST value;
20164 enum bfd_endian byte_order;
20165
20166 dw2_setup (per_cu->objfile);
20167
20168 if (per_cu->cu == NULL)
20169 load_cu (per_cu);
20170 cu = per_cu->cu;
cc12ce38
DE
20171 if (cu == NULL)
20172 {
20173 /* We shouldn't get here for a dummy CU, but don't crash on the user.
20174 Instead just throw an error, not much else we can do. */
20175 error (_("Dwarf Error: Dummy CU at 0x%x referenced in module %s"),
20176 offset.sect_off, objfile_name (per_cu->objfile));
20177 }
b6807d98
TT
20178
20179 die = follow_die_offset (offset, per_cu->is_dwz, &cu);
20180 if (!die)
20181 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
4262abfb 20182 offset.sect_off, objfile_name (per_cu->objfile));
b6807d98
TT
20183
20184
20185 attr = dwarf2_attr (die, DW_AT_const_value, cu);
20186 if (attr == NULL)
20187 return NULL;
20188
20189 byte_order = (bfd_big_endian (per_cu->objfile->obfd)
20190 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
20191
20192 switch (attr->form)
20193 {
20194 case DW_FORM_addr:
20195 case DW_FORM_GNU_addr_index:
20196 {
20197 gdb_byte *tem;
20198
20199 *len = cu->header.addr_size;
20200 tem = obstack_alloc (obstack, *len);
20201 store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
20202 result = tem;
20203 }
20204 break;
20205 case DW_FORM_string:
20206 case DW_FORM_strp:
20207 case DW_FORM_GNU_str_index:
20208 case DW_FORM_GNU_strp_alt:
20209 /* DW_STRING is already allocated on the objfile obstack, point
20210 directly to it. */
20211 result = (const gdb_byte *) DW_STRING (attr);
20212 *len = strlen (DW_STRING (attr));
20213 break;
20214 case DW_FORM_block1:
20215 case DW_FORM_block2:
20216 case DW_FORM_block4:
20217 case DW_FORM_block:
20218 case DW_FORM_exprloc:
20219 result = DW_BLOCK (attr)->data;
20220 *len = DW_BLOCK (attr)->size;
20221 break;
20222
20223 /* The DW_AT_const_value attributes are supposed to carry the
20224 symbol's value "represented as it would be on the target
20225 architecture." By the time we get here, it's already been
20226 converted to host endianness, so we just need to sign- or
20227 zero-extend it as appropriate. */
20228 case DW_FORM_data1:
20229 type = die_type (die, cu);
20230 result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
20231 if (result == NULL)
20232 result = write_constant_as_bytes (obstack, byte_order,
20233 type, value, len);
20234 break;
20235 case DW_FORM_data2:
20236 type = die_type (die, cu);
20237 result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
20238 if (result == NULL)
20239 result = write_constant_as_bytes (obstack, byte_order,
20240 type, value, len);
20241 break;
20242 case DW_FORM_data4:
20243 type = die_type (die, cu);
20244 result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
20245 if (result == NULL)
20246 result = write_constant_as_bytes (obstack, byte_order,
20247 type, value, len);
20248 break;
20249 case DW_FORM_data8:
20250 type = die_type (die, cu);
20251 result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
20252 if (result == NULL)
20253 result = write_constant_as_bytes (obstack, byte_order,
20254 type, value, len);
20255 break;
20256
20257 case DW_FORM_sdata:
20258 type = die_type (die, cu);
20259 result = write_constant_as_bytes (obstack, byte_order,
20260 type, DW_SND (attr), len);
20261 break;
20262
20263 case DW_FORM_udata:
20264 type = die_type (die, cu);
20265 result = write_constant_as_bytes (obstack, byte_order,
20266 type, DW_UNSND (attr), len);
20267 break;
20268
20269 default:
20270 complaint (&symfile_complaints,
20271 _("unsupported const value attribute form: '%s'"),
20272 dwarf_form_name (attr->form));
20273 break;
20274 }
20275
20276 return result;
20277}
20278
8a9b8146
TT
20279/* Return the type of the DIE at DIE_OFFSET in the CU named by
20280 PER_CU. */
20281
20282struct type *
b64f50a1 20283dwarf2_get_die_type (cu_offset die_offset,
8a9b8146
TT
20284 struct dwarf2_per_cu_data *per_cu)
20285{
b64f50a1
JK
20286 sect_offset die_offset_sect;
20287
8a9b8146 20288 dw2_setup (per_cu->objfile);
b64f50a1
JK
20289
20290 die_offset_sect.sect_off = per_cu->offset.sect_off + die_offset.cu_off;
20291 return get_die_type_at_offset (die_offset_sect, per_cu);
8a9b8146
TT
20292}
20293
ac9ec31b 20294/* Follow type unit SIG_TYPE referenced by SRC_DIE.
348e048f 20295 On entry *REF_CU is the CU of SRC_DIE.
ac9ec31b
DE
20296 On exit *REF_CU is the CU of the result.
20297 Returns NULL if the referenced DIE isn't found. */
348e048f
DE
20298
20299static struct die_info *
ac9ec31b
DE
20300follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
20301 struct dwarf2_cu **ref_cu)
348e048f
DE
20302{
20303 struct objfile *objfile = (*ref_cu)->objfile;
20304 struct die_info temp_die;
348e048f
DE
20305 struct dwarf2_cu *sig_cu;
20306 struct die_info *die;
20307
ac9ec31b
DE
20308 /* While it might be nice to assert sig_type->type == NULL here,
20309 we can get here for DW_AT_imported_declaration where we need
20310 the DIE not the type. */
348e048f
DE
20311
20312 /* If necessary, add it to the queue and load its DIEs. */
20313
95554aad 20314 if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
a0f42c21 20315 read_signatured_type (sig_type);
348e048f 20316
348e048f 20317 sig_cu = sig_type->per_cu.cu;
69d751e3 20318 gdb_assert (sig_cu != NULL);
3019eac3
DE
20319 gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
20320 temp_die.offset = sig_type->type_offset_in_section;
b64f50a1
JK
20321 die = htab_find_with_hash (sig_cu->die_hash, &temp_die,
20322 temp_die.offset.sect_off);
348e048f
DE
20323 if (die)
20324 {
796a7ff8
DE
20325 /* For .gdb_index version 7 keep track of included TUs.
20326 http://sourceware.org/bugzilla/show_bug.cgi?id=15021. */
20327 if (dwarf2_per_objfile->index_table != NULL
20328 && dwarf2_per_objfile->index_table->version <= 7)
20329 {
20330 VEC_safe_push (dwarf2_per_cu_ptr,
20331 (*ref_cu)->per_cu->imported_symtabs,
20332 sig_cu->per_cu);
20333 }
20334
348e048f
DE
20335 *ref_cu = sig_cu;
20336 return die;
20337 }
20338
ac9ec31b
DE
20339 return NULL;
20340}
20341
20342/* Follow signatured type referenced by ATTR in SRC_DIE.
20343 On entry *REF_CU is the CU of SRC_DIE.
20344 On exit *REF_CU is the CU of the result.
20345 The result is the DIE of the type.
20346 If the referenced type cannot be found an error is thrown. */
20347
20348static struct die_info *
ff39bb5e 20349follow_die_sig (struct die_info *src_die, const struct attribute *attr,
ac9ec31b
DE
20350 struct dwarf2_cu **ref_cu)
20351{
20352 ULONGEST signature = DW_SIGNATURE (attr);
20353 struct signatured_type *sig_type;
20354 struct die_info *die;
20355
20356 gdb_assert (attr->form == DW_FORM_ref_sig8);
20357
a2ce51a0 20358 sig_type = lookup_signatured_type (*ref_cu, signature);
ac9ec31b
DE
20359 /* sig_type will be NULL if the signatured type is missing from
20360 the debug info. */
20361 if (sig_type == NULL)
20362 {
20363 error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
20364 " from DIE at 0x%x [in module %s]"),
20365 hex_string (signature), src_die->offset.sect_off,
4262abfb 20366 objfile_name ((*ref_cu)->objfile));
ac9ec31b
DE
20367 }
20368
20369 die = follow_die_sig_1 (src_die, sig_type, ref_cu);
20370 if (die == NULL)
20371 {
20372 dump_die_for_error (src_die);
20373 error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
20374 " from DIE at 0x%x [in module %s]"),
20375 hex_string (signature), src_die->offset.sect_off,
4262abfb 20376 objfile_name ((*ref_cu)->objfile));
ac9ec31b
DE
20377 }
20378
20379 return die;
20380}
20381
20382/* Get the type specified by SIGNATURE referenced in DIE/CU,
20383 reading in and processing the type unit if necessary. */
20384
20385static struct type *
20386get_signatured_type (struct die_info *die, ULONGEST signature,
20387 struct dwarf2_cu *cu)
20388{
20389 struct signatured_type *sig_type;
20390 struct dwarf2_cu *type_cu;
20391 struct die_info *type_die;
20392 struct type *type;
20393
a2ce51a0 20394 sig_type = lookup_signatured_type (cu, signature);
ac9ec31b
DE
20395 /* sig_type will be NULL if the signatured type is missing from
20396 the debug info. */
20397 if (sig_type == NULL)
20398 {
20399 complaint (&symfile_complaints,
20400 _("Dwarf Error: Cannot find signatured DIE %s referenced"
20401 " from DIE at 0x%x [in module %s]"),
20402 hex_string (signature), die->offset.sect_off,
4262abfb 20403 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20404 return build_error_marker_type (cu, die);
20405 }
20406
20407 /* If we already know the type we're done. */
20408 if (sig_type->type != NULL)
20409 return sig_type->type;
20410
20411 type_cu = cu;
20412 type_die = follow_die_sig_1 (die, sig_type, &type_cu);
20413 if (type_die != NULL)
20414 {
20415 /* N.B. We need to call get_die_type to ensure only one type for this DIE
20416 is created. This is important, for example, because for c++ classes
20417 we need TYPE_NAME set which is only done by new_symbol. Blech. */
20418 type = read_type_die (type_die, type_cu);
20419 if (type == NULL)
20420 {
20421 complaint (&symfile_complaints,
20422 _("Dwarf Error: Cannot build signatured type %s"
20423 " referenced from DIE at 0x%x [in module %s]"),
20424 hex_string (signature), die->offset.sect_off,
4262abfb 20425 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20426 type = build_error_marker_type (cu, die);
20427 }
20428 }
20429 else
20430 {
20431 complaint (&symfile_complaints,
20432 _("Dwarf Error: Problem reading signatured DIE %s referenced"
20433 " from DIE at 0x%x [in module %s]"),
20434 hex_string (signature), die->offset.sect_off,
4262abfb 20435 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20436 type = build_error_marker_type (cu, die);
20437 }
20438 sig_type->type = type;
20439
20440 return type;
20441}
20442
20443/* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
20444 reading in and processing the type unit if necessary. */
20445
20446static struct type *
ff39bb5e 20447get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
b385a60d 20448 struct dwarf2_cu *cu) /* ARI: editCase function */
ac9ec31b
DE
20449{
20450 /* Yes, DW_AT_signature can use a non-ref_sig8 reference. */
7771576e 20451 if (attr_form_is_ref (attr))
ac9ec31b
DE
20452 {
20453 struct dwarf2_cu *type_cu = cu;
20454 struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
20455
20456 return read_type_die (type_die, type_cu);
20457 }
20458 else if (attr->form == DW_FORM_ref_sig8)
20459 {
20460 return get_signatured_type (die, DW_SIGNATURE (attr), cu);
20461 }
20462 else
20463 {
20464 complaint (&symfile_complaints,
20465 _("Dwarf Error: DW_AT_signature has bad form %s in DIE"
20466 " at 0x%x [in module %s]"),
20467 dwarf_form_name (attr->form), die->offset.sect_off,
4262abfb 20468 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20469 return build_error_marker_type (cu, die);
20470 }
348e048f
DE
20471}
20472
e5fe5e75 20473/* Load the DIEs associated with type unit PER_CU into memory. */
348e048f
DE
20474
20475static void
e5fe5e75 20476load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
348e048f 20477{
52dc124a 20478 struct signatured_type *sig_type;
348e048f 20479
f4dc4d17
DE
20480 /* Caller is responsible for ensuring type_unit_groups don't get here. */
20481 gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
20482
6721b2ec
DE
20483 /* We have the per_cu, but we need the signatured_type.
20484 Fortunately this is an easy translation. */
20485 gdb_assert (per_cu->is_debug_types);
20486 sig_type = (struct signatured_type *) per_cu;
348e048f 20487
6721b2ec 20488 gdb_assert (per_cu->cu == NULL);
348e048f 20489
52dc124a 20490 read_signatured_type (sig_type);
348e048f 20491
6721b2ec 20492 gdb_assert (per_cu->cu != NULL);
348e048f
DE
20493}
20494
dee91e82
DE
20495/* die_reader_func for read_signatured_type.
20496 This is identical to load_full_comp_unit_reader,
20497 but is kept separate for now. */
348e048f
DE
20498
20499static void
dee91e82 20500read_signatured_type_reader (const struct die_reader_specs *reader,
d521ce57 20501 const gdb_byte *info_ptr,
dee91e82
DE
20502 struct die_info *comp_unit_die,
20503 int has_children,
20504 void *data)
348e048f 20505{
dee91e82 20506 struct dwarf2_cu *cu = reader->cu;
348e048f 20507
dee91e82
DE
20508 gdb_assert (cu->die_hash == NULL);
20509 cu->die_hash =
20510 htab_create_alloc_ex (cu->header.length / 12,
20511 die_hash,
20512 die_eq,
20513 NULL,
20514 &cu->comp_unit_obstack,
20515 hashtab_obstack_allocate,
20516 dummy_obstack_deallocate);
348e048f 20517
dee91e82
DE
20518 if (has_children)
20519 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
20520 &info_ptr, comp_unit_die);
20521 cu->dies = comp_unit_die;
20522 /* comp_unit_die is not stored in die_hash, no need. */
348e048f
DE
20523
20524 /* We try not to read any attributes in this function, because not
9cdd5dbd 20525 all CUs needed for references have been loaded yet, and symbol
348e048f 20526 table processing isn't initialized. But we have to set the CU language,
dee91e82
DE
20527 or we won't be able to build types correctly.
20528 Similarly, if we do not read the producer, we can not apply
20529 producer-specific interpretation. */
95554aad 20530 prepare_one_comp_unit (cu, cu->dies, language_minimal);
dee91e82 20531}
348e048f 20532
3019eac3
DE
20533/* Read in a signatured type and build its CU and DIEs.
20534 If the type is a stub for the real type in a DWO file,
20535 read in the real type from the DWO file as well. */
dee91e82
DE
20536
20537static void
20538read_signatured_type (struct signatured_type *sig_type)
20539{
20540 struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
348e048f 20541
3019eac3 20542 gdb_assert (per_cu->is_debug_types);
dee91e82 20543 gdb_assert (per_cu->cu == NULL);
348e048f 20544
f4dc4d17
DE
20545 init_cutu_and_read_dies (per_cu, NULL, 0, 1,
20546 read_signatured_type_reader, NULL);
7ee85ab1 20547 sig_type->per_cu.tu_read = 1;
c906108c
SS
20548}
20549
c906108c
SS
20550/* Decode simple location descriptions.
20551 Given a pointer to a dwarf block that defines a location, compute
20552 the location and return the value.
20553
4cecd739
DJ
20554 NOTE drow/2003-11-18: This function is called in two situations
20555 now: for the address of static or global variables (partial symbols
20556 only) and for offsets into structures which are expected to be
20557 (more or less) constant. The partial symbol case should go away,
20558 and only the constant case should remain. That will let this
20559 function complain more accurately. A few special modes are allowed
20560 without complaint for global variables (for instance, global
20561 register values and thread-local values).
c906108c
SS
20562
20563 A location description containing no operations indicates that the
4cecd739 20564 object is optimized out. The return value is 0 for that case.
6b992462
DJ
20565 FIXME drow/2003-11-16: No callers check for this case any more; soon all
20566 callers will only want a very basic result and this can become a
21ae7a4d
JK
20567 complaint.
20568
20569 Note that stack[0] is unused except as a default error return. */
c906108c
SS
20570
20571static CORE_ADDR
e7c27a73 20572decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
c906108c 20573{
e7c27a73 20574 struct objfile *objfile = cu->objfile;
56eb65bd
SP
20575 size_t i;
20576 size_t size = blk->size;
d521ce57 20577 const gdb_byte *data = blk->data;
21ae7a4d
JK
20578 CORE_ADDR stack[64];
20579 int stacki;
20580 unsigned int bytes_read, unsnd;
20581 gdb_byte op;
c906108c 20582
21ae7a4d
JK
20583 i = 0;
20584 stacki = 0;
20585 stack[stacki] = 0;
20586 stack[++stacki] = 0;
20587
20588 while (i < size)
20589 {
20590 op = data[i++];
20591 switch (op)
20592 {
20593 case DW_OP_lit0:
20594 case DW_OP_lit1:
20595 case DW_OP_lit2:
20596 case DW_OP_lit3:
20597 case DW_OP_lit4:
20598 case DW_OP_lit5:
20599 case DW_OP_lit6:
20600 case DW_OP_lit7:
20601 case DW_OP_lit8:
20602 case DW_OP_lit9:
20603 case DW_OP_lit10:
20604 case DW_OP_lit11:
20605 case DW_OP_lit12:
20606 case DW_OP_lit13:
20607 case DW_OP_lit14:
20608 case DW_OP_lit15:
20609 case DW_OP_lit16:
20610 case DW_OP_lit17:
20611 case DW_OP_lit18:
20612 case DW_OP_lit19:
20613 case DW_OP_lit20:
20614 case DW_OP_lit21:
20615 case DW_OP_lit22:
20616 case DW_OP_lit23:
20617 case DW_OP_lit24:
20618 case DW_OP_lit25:
20619 case DW_OP_lit26:
20620 case DW_OP_lit27:
20621 case DW_OP_lit28:
20622 case DW_OP_lit29:
20623 case DW_OP_lit30:
20624 case DW_OP_lit31:
20625 stack[++stacki] = op - DW_OP_lit0;
20626 break;
f1bea926 20627
21ae7a4d
JK
20628 case DW_OP_reg0:
20629 case DW_OP_reg1:
20630 case DW_OP_reg2:
20631 case DW_OP_reg3:
20632 case DW_OP_reg4:
20633 case DW_OP_reg5:
20634 case DW_OP_reg6:
20635 case DW_OP_reg7:
20636 case DW_OP_reg8:
20637 case DW_OP_reg9:
20638 case DW_OP_reg10:
20639 case DW_OP_reg11:
20640 case DW_OP_reg12:
20641 case DW_OP_reg13:
20642 case DW_OP_reg14:
20643 case DW_OP_reg15:
20644 case DW_OP_reg16:
20645 case DW_OP_reg17:
20646 case DW_OP_reg18:
20647 case DW_OP_reg19:
20648 case DW_OP_reg20:
20649 case DW_OP_reg21:
20650 case DW_OP_reg22:
20651 case DW_OP_reg23:
20652 case DW_OP_reg24:
20653 case DW_OP_reg25:
20654 case DW_OP_reg26:
20655 case DW_OP_reg27:
20656 case DW_OP_reg28:
20657 case DW_OP_reg29:
20658 case DW_OP_reg30:
20659 case DW_OP_reg31:
20660 stack[++stacki] = op - DW_OP_reg0;
20661 if (i < size)
20662 dwarf2_complex_location_expr_complaint ();
20663 break;
c906108c 20664
21ae7a4d
JK
20665 case DW_OP_regx:
20666 unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
20667 i += bytes_read;
20668 stack[++stacki] = unsnd;
20669 if (i < size)
20670 dwarf2_complex_location_expr_complaint ();
20671 break;
c906108c 20672
21ae7a4d
JK
20673 case DW_OP_addr:
20674 stack[++stacki] = read_address (objfile->obfd, &data[i],
20675 cu, &bytes_read);
20676 i += bytes_read;
20677 break;
d53d4ac5 20678
21ae7a4d
JK
20679 case DW_OP_const1u:
20680 stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
20681 i += 1;
20682 break;
20683
20684 case DW_OP_const1s:
20685 stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
20686 i += 1;
20687 break;
20688
20689 case DW_OP_const2u:
20690 stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
20691 i += 2;
20692 break;
20693
20694 case DW_OP_const2s:
20695 stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
20696 i += 2;
20697 break;
d53d4ac5 20698
21ae7a4d
JK
20699 case DW_OP_const4u:
20700 stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
20701 i += 4;
20702 break;
20703
20704 case DW_OP_const4s:
20705 stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
20706 i += 4;
20707 break;
20708
585861ea
JK
20709 case DW_OP_const8u:
20710 stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
20711 i += 8;
20712 break;
20713
21ae7a4d
JK
20714 case DW_OP_constu:
20715 stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
20716 &bytes_read);
20717 i += bytes_read;
20718 break;
20719
20720 case DW_OP_consts:
20721 stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
20722 i += bytes_read;
20723 break;
20724
20725 case DW_OP_dup:
20726 stack[stacki + 1] = stack[stacki];
20727 stacki++;
20728 break;
20729
20730 case DW_OP_plus:
20731 stack[stacki - 1] += stack[stacki];
20732 stacki--;
20733 break;
20734
20735 case DW_OP_plus_uconst:
20736 stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
20737 &bytes_read);
20738 i += bytes_read;
20739 break;
20740
20741 case DW_OP_minus:
20742 stack[stacki - 1] -= stack[stacki];
20743 stacki--;
20744 break;
20745
20746 case DW_OP_deref:
20747 /* If we're not the last op, then we definitely can't encode
20748 this using GDB's address_class enum. This is valid for partial
20749 global symbols, although the variable's address will be bogus
20750 in the psymtab. */
20751 if (i < size)
20752 dwarf2_complex_location_expr_complaint ();
20753 break;
20754
20755 case DW_OP_GNU_push_tls_address:
20756 /* The top of the stack has the offset from the beginning
20757 of the thread control block at which the variable is located. */
20758 /* Nothing should follow this operator, so the top of stack would
20759 be returned. */
20760 /* This is valid for partial global symbols, but the variable's
585861ea
JK
20761 address will be bogus in the psymtab. Make it always at least
20762 non-zero to not look as a variable garbage collected by linker
20763 which have DW_OP_addr 0. */
21ae7a4d
JK
20764 if (i < size)
20765 dwarf2_complex_location_expr_complaint ();
585861ea 20766 stack[stacki]++;
21ae7a4d
JK
20767 break;
20768
20769 case DW_OP_GNU_uninit:
20770 break;
20771
3019eac3 20772 case DW_OP_GNU_addr_index:
49f6c839 20773 case DW_OP_GNU_const_index:
3019eac3
DE
20774 stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
20775 &bytes_read);
20776 i += bytes_read;
20777 break;
20778
21ae7a4d
JK
20779 default:
20780 {
f39c6ffd 20781 const char *name = get_DW_OP_name (op);
21ae7a4d
JK
20782
20783 if (name)
20784 complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
20785 name);
20786 else
20787 complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
20788 op);
20789 }
20790
20791 return (stack[stacki]);
d53d4ac5 20792 }
3c6e0cb3 20793
21ae7a4d
JK
20794 /* Enforce maximum stack depth of SIZE-1 to avoid writing
20795 outside of the allocated space. Also enforce minimum>0. */
20796 if (stacki >= ARRAY_SIZE (stack) - 1)
20797 {
20798 complaint (&symfile_complaints,
20799 _("location description stack overflow"));
20800 return 0;
20801 }
20802
20803 if (stacki <= 0)
20804 {
20805 complaint (&symfile_complaints,
20806 _("location description stack underflow"));
20807 return 0;
20808 }
20809 }
20810 return (stack[stacki]);
c906108c
SS
20811}
20812
20813/* memory allocation interface */
20814
c906108c 20815static struct dwarf_block *
7b5a2f43 20816dwarf_alloc_block (struct dwarf2_cu *cu)
c906108c
SS
20817{
20818 struct dwarf_block *blk;
20819
20820 blk = (struct dwarf_block *)
7b5a2f43 20821 obstack_alloc (&cu->comp_unit_obstack, sizeof (struct dwarf_block));
c906108c
SS
20822 return (blk);
20823}
20824
c906108c 20825static struct die_info *
b60c80d6 20826dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
c906108c
SS
20827{
20828 struct die_info *die;
b60c80d6
DJ
20829 size_t size = sizeof (struct die_info);
20830
20831 if (num_attrs > 1)
20832 size += (num_attrs - 1) * sizeof (struct attribute);
c906108c 20833
b60c80d6 20834 die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
c906108c
SS
20835 memset (die, 0, sizeof (struct die_info));
20836 return (die);
20837}
2e276125
JB
20838
20839\f
20840/* Macro support. */
20841
233d95b5
JK
20842/* Return file name relative to the compilation directory of file number I in
20843 *LH's file name table. The result is allocated using xmalloc; the caller is
2e276125 20844 responsible for freeing it. */
233d95b5 20845
2e276125 20846static char *
233d95b5 20847file_file_name (int file, struct line_header *lh)
2e276125 20848{
6a83a1e6
EZ
20849 /* Is the file number a valid index into the line header's file name
20850 table? Remember that file numbers start with one, not zero. */
20851 if (1 <= file && file <= lh->num_file_names)
20852 {
20853 struct file_entry *fe = &lh->file_names[file - 1];
6e70227d 20854
afa6c9ab
SL
20855 if (IS_ABSOLUTE_PATH (fe->name) || fe->dir_index == 0
20856 || lh->include_dirs == NULL)
6a83a1e6 20857 return xstrdup (fe->name);
233d95b5
JK
20858 return concat (lh->include_dirs[fe->dir_index - 1], SLASH_STRING,
20859 fe->name, NULL);
6a83a1e6 20860 }
2e276125
JB
20861 else
20862 {
6a83a1e6
EZ
20863 /* The compiler produced a bogus file number. We can at least
20864 record the macro definitions made in the file, even if we
20865 won't be able to find the file by name. */
20866 char fake_name[80];
9a619af0 20867
8c042590
PM
20868 xsnprintf (fake_name, sizeof (fake_name),
20869 "<bad macro file number %d>", file);
2e276125 20870
6e70227d 20871 complaint (&symfile_complaints,
6a83a1e6
EZ
20872 _("bad file number in macro information (%d)"),
20873 file);
2e276125 20874
6a83a1e6 20875 return xstrdup (fake_name);
2e276125
JB
20876 }
20877}
20878
233d95b5
JK
20879/* Return the full name of file number I in *LH's file name table.
20880 Use COMP_DIR as the name of the current directory of the
20881 compilation. The result is allocated using xmalloc; the caller is
20882 responsible for freeing it. */
20883static char *
20884file_full_name (int file, struct line_header *lh, const char *comp_dir)
20885{
20886 /* Is the file number a valid index into the line header's file name
20887 table? Remember that file numbers start with one, not zero. */
20888 if (1 <= file && file <= lh->num_file_names)
20889 {
20890 char *relative = file_file_name (file, lh);
20891
20892 if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
20893 return relative;
20894 return reconcat (relative, comp_dir, SLASH_STRING, relative, NULL);
20895 }
20896 else
20897 return file_file_name (file, lh);
20898}
20899
2e276125
JB
20900
20901static struct macro_source_file *
20902macro_start_file (int file, int line,
20903 struct macro_source_file *current_file,
43f3e411 20904 struct line_header *lh)
2e276125 20905{
233d95b5
JK
20906 /* File name relative to the compilation directory of this source file. */
20907 char *file_name = file_file_name (file, lh);
2e276125 20908
2e276125 20909 if (! current_file)
abc9d0dc 20910 {
fc474241
DE
20911 /* Note: We don't create a macro table for this compilation unit
20912 at all until we actually get a filename. */
43f3e411 20913 struct macro_table *macro_table = get_macro_table ();
fc474241 20914
abc9d0dc
TT
20915 /* If we have no current file, then this must be the start_file
20916 directive for the compilation unit's main source file. */
fc474241
DE
20917 current_file = macro_set_main (macro_table, file_name);
20918 macro_define_special (macro_table);
abc9d0dc 20919 }
2e276125 20920 else
233d95b5 20921 current_file = macro_include (current_file, line, file_name);
2e276125 20922
233d95b5 20923 xfree (file_name);
6e70227d 20924
2e276125
JB
20925 return current_file;
20926}
20927
20928
20929/* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
20930 followed by a null byte. */
20931static char *
20932copy_string (const char *buf, int len)
20933{
20934 char *s = xmalloc (len + 1);
9a619af0 20935
2e276125
JB
20936 memcpy (s, buf, len);
20937 s[len] = '\0';
2e276125
JB
20938 return s;
20939}
20940
20941
20942static const char *
20943consume_improper_spaces (const char *p, const char *body)
20944{
20945 if (*p == ' ')
20946 {
4d3c2250 20947 complaint (&symfile_complaints,
3e43a32a
MS
20948 _("macro definition contains spaces "
20949 "in formal argument list:\n`%s'"),
4d3c2250 20950 body);
2e276125
JB
20951
20952 while (*p == ' ')
20953 p++;
20954 }
20955
20956 return p;
20957}
20958
20959
20960static void
20961parse_macro_definition (struct macro_source_file *file, int line,
20962 const char *body)
20963{
20964 const char *p;
20965
20966 /* The body string takes one of two forms. For object-like macro
20967 definitions, it should be:
20968
20969 <macro name> " " <definition>
20970
20971 For function-like macro definitions, it should be:
20972
20973 <macro name> "() " <definition>
20974 or
20975 <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
20976
20977 Spaces may appear only where explicitly indicated, and in the
20978 <definition>.
20979
20980 The Dwarf 2 spec says that an object-like macro's name is always
20981 followed by a space, but versions of GCC around March 2002 omit
6e70227d 20982 the space when the macro's definition is the empty string.
2e276125
JB
20983
20984 The Dwarf 2 spec says that there should be no spaces between the
20985 formal arguments in a function-like macro's formal argument list,
20986 but versions of GCC around March 2002 include spaces after the
20987 commas. */
20988
20989
20990 /* Find the extent of the macro name. The macro name is terminated
20991 by either a space or null character (for an object-like macro) or
20992 an opening paren (for a function-like macro). */
20993 for (p = body; *p; p++)
20994 if (*p == ' ' || *p == '(')
20995 break;
20996
20997 if (*p == ' ' || *p == '\0')
20998 {
20999 /* It's an object-like macro. */
21000 int name_len = p - body;
21001 char *name = copy_string (body, name_len);
21002 const char *replacement;
21003
21004 if (*p == ' ')
21005 replacement = body + name_len + 1;
21006 else
21007 {
4d3c2250 21008 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21009 replacement = body + name_len;
21010 }
6e70227d 21011
2e276125
JB
21012 macro_define_object (file, line, name, replacement);
21013
21014 xfree (name);
21015 }
21016 else if (*p == '(')
21017 {
21018 /* It's a function-like macro. */
21019 char *name = copy_string (body, p - body);
21020 int argc = 0;
21021 int argv_size = 1;
21022 char **argv = xmalloc (argv_size * sizeof (*argv));
21023
21024 p++;
21025
21026 p = consume_improper_spaces (p, body);
21027
21028 /* Parse the formal argument list. */
21029 while (*p && *p != ')')
21030 {
21031 /* Find the extent of the current argument name. */
21032 const char *arg_start = p;
21033
21034 while (*p && *p != ',' && *p != ')' && *p != ' ')
21035 p++;
21036
21037 if (! *p || p == arg_start)
4d3c2250 21038 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21039 else
21040 {
21041 /* Make sure argv has room for the new argument. */
21042 if (argc >= argv_size)
21043 {
21044 argv_size *= 2;
21045 argv = xrealloc (argv, argv_size * sizeof (*argv));
21046 }
21047
21048 argv[argc++] = copy_string (arg_start, p - arg_start);
21049 }
21050
21051 p = consume_improper_spaces (p, body);
21052
21053 /* Consume the comma, if present. */
21054 if (*p == ',')
21055 {
21056 p++;
21057
21058 p = consume_improper_spaces (p, body);
21059 }
21060 }
21061
21062 if (*p == ')')
21063 {
21064 p++;
21065
21066 if (*p == ' ')
21067 /* Perfectly formed definition, no complaints. */
21068 macro_define_function (file, line, name,
6e70227d 21069 argc, (const char **) argv,
2e276125
JB
21070 p + 1);
21071 else if (*p == '\0')
21072 {
21073 /* Complain, but do define it. */
4d3c2250 21074 dwarf2_macro_malformed_definition_complaint (body);
2e276125 21075 macro_define_function (file, line, name,
6e70227d 21076 argc, (const char **) argv,
2e276125
JB
21077 p);
21078 }
21079 else
21080 /* Just complain. */
4d3c2250 21081 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21082 }
21083 else
21084 /* Just complain. */
4d3c2250 21085 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21086
21087 xfree (name);
21088 {
21089 int i;
21090
21091 for (i = 0; i < argc; i++)
21092 xfree (argv[i]);
21093 }
21094 xfree (argv);
21095 }
21096 else
4d3c2250 21097 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21098}
21099
cf2c3c16
TT
21100/* Skip some bytes from BYTES according to the form given in FORM.
21101 Returns the new pointer. */
2e276125 21102
d521ce57
TT
21103static const gdb_byte *
21104skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
cf2c3c16
TT
21105 enum dwarf_form form,
21106 unsigned int offset_size,
21107 struct dwarf2_section_info *section)
2e276125 21108{
cf2c3c16 21109 unsigned int bytes_read;
2e276125 21110
cf2c3c16 21111 switch (form)
2e276125 21112 {
cf2c3c16
TT
21113 case DW_FORM_data1:
21114 case DW_FORM_flag:
21115 ++bytes;
21116 break;
21117
21118 case DW_FORM_data2:
21119 bytes += 2;
21120 break;
21121
21122 case DW_FORM_data4:
21123 bytes += 4;
21124 break;
21125
21126 case DW_FORM_data8:
21127 bytes += 8;
21128 break;
21129
21130 case DW_FORM_string:
21131 read_direct_string (abfd, bytes, &bytes_read);
21132 bytes += bytes_read;
21133 break;
21134
21135 case DW_FORM_sec_offset:
21136 case DW_FORM_strp:
36586728 21137 case DW_FORM_GNU_strp_alt:
cf2c3c16
TT
21138 bytes += offset_size;
21139 break;
21140
21141 case DW_FORM_block:
21142 bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
21143 bytes += bytes_read;
21144 break;
21145
21146 case DW_FORM_block1:
21147 bytes += 1 + read_1_byte (abfd, bytes);
21148 break;
21149 case DW_FORM_block2:
21150 bytes += 2 + read_2_bytes (abfd, bytes);
21151 break;
21152 case DW_FORM_block4:
21153 bytes += 4 + read_4_bytes (abfd, bytes);
21154 break;
21155
21156 case DW_FORM_sdata:
21157 case DW_FORM_udata:
3019eac3
DE
21158 case DW_FORM_GNU_addr_index:
21159 case DW_FORM_GNU_str_index:
d521ce57 21160 bytes = gdb_skip_leb128 (bytes, buffer_end);
f664829e
DE
21161 if (bytes == NULL)
21162 {
21163 dwarf2_section_buffer_overflow_complaint (section);
21164 return NULL;
21165 }
cf2c3c16
TT
21166 break;
21167
21168 default:
21169 {
21170 complain:
21171 complaint (&symfile_complaints,
21172 _("invalid form 0x%x in `%s'"),
a32a8923 21173 form, get_section_name (section));
cf2c3c16
TT
21174 return NULL;
21175 }
2e276125
JB
21176 }
21177
cf2c3c16
TT
21178 return bytes;
21179}
757a13d0 21180
cf2c3c16
TT
21181/* A helper for dwarf_decode_macros that handles skipping an unknown
21182 opcode. Returns an updated pointer to the macro data buffer; or,
21183 on error, issues a complaint and returns NULL. */
757a13d0 21184
d521ce57 21185static const gdb_byte *
cf2c3c16 21186skip_unknown_opcode (unsigned int opcode,
d521ce57
TT
21187 const gdb_byte **opcode_definitions,
21188 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
cf2c3c16
TT
21189 bfd *abfd,
21190 unsigned int offset_size,
21191 struct dwarf2_section_info *section)
21192{
21193 unsigned int bytes_read, i;
21194 unsigned long arg;
d521ce57 21195 const gdb_byte *defn;
2e276125 21196
cf2c3c16 21197 if (opcode_definitions[opcode] == NULL)
2e276125 21198 {
cf2c3c16
TT
21199 complaint (&symfile_complaints,
21200 _("unrecognized DW_MACFINO opcode 0x%x"),
21201 opcode);
21202 return NULL;
21203 }
2e276125 21204
cf2c3c16
TT
21205 defn = opcode_definitions[opcode];
21206 arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
21207 defn += bytes_read;
2e276125 21208
cf2c3c16
TT
21209 for (i = 0; i < arg; ++i)
21210 {
aead7601
SM
21211 mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
21212 (enum dwarf_form) defn[i], offset_size,
f664829e 21213 section);
cf2c3c16
TT
21214 if (mac_ptr == NULL)
21215 {
21216 /* skip_form_bytes already issued the complaint. */
21217 return NULL;
21218 }
21219 }
757a13d0 21220
cf2c3c16
TT
21221 return mac_ptr;
21222}
757a13d0 21223
cf2c3c16
TT
21224/* A helper function which parses the header of a macro section.
21225 If the macro section is the extended (for now called "GNU") type,
21226 then this updates *OFFSET_SIZE. Returns a pointer to just after
21227 the header, or issues a complaint and returns NULL on error. */
757a13d0 21228
d521ce57
TT
21229static const gdb_byte *
21230dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
cf2c3c16 21231 bfd *abfd,
d521ce57 21232 const gdb_byte *mac_ptr,
cf2c3c16
TT
21233 unsigned int *offset_size,
21234 int section_is_gnu)
21235{
21236 memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
757a13d0 21237
cf2c3c16
TT
21238 if (section_is_gnu)
21239 {
21240 unsigned int version, flags;
757a13d0 21241
cf2c3c16
TT
21242 version = read_2_bytes (abfd, mac_ptr);
21243 if (version != 4)
21244 {
21245 complaint (&symfile_complaints,
21246 _("unrecognized version `%d' in .debug_macro section"),
21247 version);
21248 return NULL;
21249 }
21250 mac_ptr += 2;
757a13d0 21251
cf2c3c16
TT
21252 flags = read_1_byte (abfd, mac_ptr);
21253 ++mac_ptr;
21254 *offset_size = (flags & 1) ? 8 : 4;
757a13d0 21255
cf2c3c16
TT
21256 if ((flags & 2) != 0)
21257 /* We don't need the line table offset. */
21258 mac_ptr += *offset_size;
757a13d0 21259
cf2c3c16
TT
21260 /* Vendor opcode descriptions. */
21261 if ((flags & 4) != 0)
21262 {
21263 unsigned int i, count;
757a13d0 21264
cf2c3c16
TT
21265 count = read_1_byte (abfd, mac_ptr);
21266 ++mac_ptr;
21267 for (i = 0; i < count; ++i)
21268 {
21269 unsigned int opcode, bytes_read;
21270 unsigned long arg;
21271
21272 opcode = read_1_byte (abfd, mac_ptr);
21273 ++mac_ptr;
21274 opcode_definitions[opcode] = mac_ptr;
21275 arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21276 mac_ptr += bytes_read;
21277 mac_ptr += arg;
21278 }
757a13d0 21279 }
cf2c3c16 21280 }
757a13d0 21281
cf2c3c16
TT
21282 return mac_ptr;
21283}
757a13d0 21284
cf2c3c16 21285/* A helper for dwarf_decode_macros that handles the GNU extensions,
8fc3fc34 21286 including DW_MACRO_GNU_transparent_include. */
cf2c3c16
TT
21287
21288static void
d521ce57
TT
21289dwarf_decode_macro_bytes (bfd *abfd,
21290 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
cf2c3c16 21291 struct macro_source_file *current_file,
43f3e411 21292 struct line_header *lh,
cf2c3c16 21293 struct dwarf2_section_info *section,
36586728 21294 int section_is_gnu, int section_is_dwz,
cf2c3c16 21295 unsigned int offset_size,
8fc3fc34 21296 htab_t include_hash)
cf2c3c16 21297{
4d663531 21298 struct objfile *objfile = dwarf2_per_objfile->objfile;
cf2c3c16
TT
21299 enum dwarf_macro_record_type macinfo_type;
21300 int at_commandline;
d521ce57 21301 const gdb_byte *opcode_definitions[256];
757a13d0 21302
cf2c3c16
TT
21303 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21304 &offset_size, section_is_gnu);
21305 if (mac_ptr == NULL)
21306 {
21307 /* We already issued a complaint. */
21308 return;
21309 }
757a13d0
JK
21310
21311 /* Determines if GDB is still before first DW_MACINFO_start_file. If true
21312 GDB is still reading the definitions from command line. First
21313 DW_MACINFO_start_file will need to be ignored as it was already executed
21314 to create CURRENT_FILE for the main source holding also the command line
21315 definitions. On first met DW_MACINFO_start_file this flag is reset to
21316 normally execute all the remaining DW_MACINFO_start_file macinfos. */
21317
21318 at_commandline = 1;
21319
21320 do
21321 {
21322 /* Do we at least have room for a macinfo type byte? */
21323 if (mac_ptr >= mac_end)
21324 {
f664829e 21325 dwarf2_section_buffer_overflow_complaint (section);
757a13d0
JK
21326 break;
21327 }
21328
aead7601 21329 macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
757a13d0
JK
21330 mac_ptr++;
21331
cf2c3c16
TT
21332 /* Note that we rely on the fact that the corresponding GNU and
21333 DWARF constants are the same. */
757a13d0
JK
21334 switch (macinfo_type)
21335 {
21336 /* A zero macinfo type indicates the end of the macro
21337 information. */
21338 case 0:
21339 break;
2e276125 21340
cf2c3c16
TT
21341 case DW_MACRO_GNU_define:
21342 case DW_MACRO_GNU_undef:
21343 case DW_MACRO_GNU_define_indirect:
21344 case DW_MACRO_GNU_undef_indirect:
36586728
TT
21345 case DW_MACRO_GNU_define_indirect_alt:
21346 case DW_MACRO_GNU_undef_indirect_alt:
2e276125 21347 {
891d2f0b 21348 unsigned int bytes_read;
2e276125 21349 int line;
d521ce57 21350 const char *body;
cf2c3c16 21351 int is_define;
2e276125 21352
cf2c3c16
TT
21353 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21354 mac_ptr += bytes_read;
21355
21356 if (macinfo_type == DW_MACRO_GNU_define
21357 || macinfo_type == DW_MACRO_GNU_undef)
21358 {
21359 body = read_direct_string (abfd, mac_ptr, &bytes_read);
21360 mac_ptr += bytes_read;
21361 }
21362 else
21363 {
21364 LONGEST str_offset;
21365
21366 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
21367 mac_ptr += offset_size;
2e276125 21368
36586728 21369 if (macinfo_type == DW_MACRO_GNU_define_indirect_alt
f7a35f02
TT
21370 || macinfo_type == DW_MACRO_GNU_undef_indirect_alt
21371 || section_is_dwz)
36586728
TT
21372 {
21373 struct dwz_file *dwz = dwarf2_get_dwz_file ();
21374
21375 body = read_indirect_string_from_dwz (dwz, str_offset);
21376 }
21377 else
21378 body = read_indirect_string_at_offset (abfd, str_offset);
cf2c3c16
TT
21379 }
21380
21381 is_define = (macinfo_type == DW_MACRO_GNU_define
36586728
TT
21382 || macinfo_type == DW_MACRO_GNU_define_indirect
21383 || macinfo_type == DW_MACRO_GNU_define_indirect_alt);
2e276125 21384 if (! current_file)
757a13d0
JK
21385 {
21386 /* DWARF violation as no main source is present. */
21387 complaint (&symfile_complaints,
21388 _("debug info with no main source gives macro %s "
21389 "on line %d: %s"),
cf2c3c16
TT
21390 is_define ? _("definition") : _("undefinition"),
21391 line, body);
757a13d0
JK
21392 break;
21393 }
3e43a32a
MS
21394 if ((line == 0 && !at_commandline)
21395 || (line != 0 && at_commandline))
4d3c2250 21396 complaint (&symfile_complaints,
757a13d0
JK
21397 _("debug info gives %s macro %s with %s line %d: %s"),
21398 at_commandline ? _("command-line") : _("in-file"),
cf2c3c16 21399 is_define ? _("definition") : _("undefinition"),
757a13d0
JK
21400 line == 0 ? _("zero") : _("non-zero"), line, body);
21401
cf2c3c16 21402 if (is_define)
757a13d0 21403 parse_macro_definition (current_file, line, body);
cf2c3c16
TT
21404 else
21405 {
21406 gdb_assert (macinfo_type == DW_MACRO_GNU_undef
36586728
TT
21407 || macinfo_type == DW_MACRO_GNU_undef_indirect
21408 || macinfo_type == DW_MACRO_GNU_undef_indirect_alt);
cf2c3c16
TT
21409 macro_undef (current_file, line, body);
21410 }
2e276125
JB
21411 }
21412 break;
21413
cf2c3c16 21414 case DW_MACRO_GNU_start_file:
2e276125 21415 {
891d2f0b 21416 unsigned int bytes_read;
2e276125
JB
21417 int line, file;
21418
21419 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21420 mac_ptr += bytes_read;
21421 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21422 mac_ptr += bytes_read;
21423
3e43a32a
MS
21424 if ((line == 0 && !at_commandline)
21425 || (line != 0 && at_commandline))
757a13d0
JK
21426 complaint (&symfile_complaints,
21427 _("debug info gives source %d included "
21428 "from %s at %s line %d"),
21429 file, at_commandline ? _("command-line") : _("file"),
21430 line == 0 ? _("zero") : _("non-zero"), line);
21431
21432 if (at_commandline)
21433 {
cf2c3c16
TT
21434 /* This DW_MACRO_GNU_start_file was executed in the
21435 pass one. */
757a13d0
JK
21436 at_commandline = 0;
21437 }
21438 else
43f3e411 21439 current_file = macro_start_file (file, line, current_file, lh);
2e276125
JB
21440 }
21441 break;
21442
cf2c3c16 21443 case DW_MACRO_GNU_end_file:
2e276125 21444 if (! current_file)
4d3c2250 21445 complaint (&symfile_complaints,
3e43a32a
MS
21446 _("macro debug info has an unmatched "
21447 "`close_file' directive"));
2e276125
JB
21448 else
21449 {
21450 current_file = current_file->included_by;
21451 if (! current_file)
21452 {
cf2c3c16 21453 enum dwarf_macro_record_type next_type;
2e276125
JB
21454
21455 /* GCC circa March 2002 doesn't produce the zero
21456 type byte marking the end of the compilation
21457 unit. Complain if it's not there, but exit no
21458 matter what. */
21459
21460 /* Do we at least have room for a macinfo type byte? */
21461 if (mac_ptr >= mac_end)
21462 {
f664829e 21463 dwarf2_section_buffer_overflow_complaint (section);
2e276125
JB
21464 return;
21465 }
21466
21467 /* We don't increment mac_ptr here, so this is just
21468 a look-ahead. */
aead7601
SM
21469 next_type
21470 = (enum dwarf_macro_record_type) read_1_byte (abfd,
21471 mac_ptr);
2e276125 21472 if (next_type != 0)
4d3c2250 21473 complaint (&symfile_complaints,
3e43a32a
MS
21474 _("no terminating 0-type entry for "
21475 "macros in `.debug_macinfo' section"));
2e276125
JB
21476
21477 return;
21478 }
21479 }
21480 break;
21481
cf2c3c16 21482 case DW_MACRO_GNU_transparent_include:
36586728 21483 case DW_MACRO_GNU_transparent_include_alt:
cf2c3c16
TT
21484 {
21485 LONGEST offset;
8fc3fc34 21486 void **slot;
a036ba48
TT
21487 bfd *include_bfd = abfd;
21488 struct dwarf2_section_info *include_section = section;
21489 struct dwarf2_section_info alt_section;
d521ce57 21490 const gdb_byte *include_mac_end = mac_end;
a036ba48 21491 int is_dwz = section_is_dwz;
d521ce57 21492 const gdb_byte *new_mac_ptr;
cf2c3c16
TT
21493
21494 offset = read_offset_1 (abfd, mac_ptr, offset_size);
21495 mac_ptr += offset_size;
21496
a036ba48
TT
21497 if (macinfo_type == DW_MACRO_GNU_transparent_include_alt)
21498 {
21499 struct dwz_file *dwz = dwarf2_get_dwz_file ();
21500
4d663531 21501 dwarf2_read_section (objfile, &dwz->macro);
a036ba48 21502
a036ba48 21503 include_section = &dwz->macro;
a32a8923 21504 include_bfd = get_section_bfd_owner (include_section);
a036ba48
TT
21505 include_mac_end = dwz->macro.buffer + dwz->macro.size;
21506 is_dwz = 1;
21507 }
21508
21509 new_mac_ptr = include_section->buffer + offset;
21510 slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
21511
8fc3fc34
TT
21512 if (*slot != NULL)
21513 {
21514 /* This has actually happened; see
21515 http://sourceware.org/bugzilla/show_bug.cgi?id=13568. */
21516 complaint (&symfile_complaints,
21517 _("recursive DW_MACRO_GNU_transparent_include in "
21518 ".debug_macro section"));
21519 }
21520 else
21521 {
d521ce57 21522 *slot = (void *) new_mac_ptr;
36586728 21523
a036ba48 21524 dwarf_decode_macro_bytes (include_bfd, new_mac_ptr,
43f3e411 21525 include_mac_end, current_file, lh,
36586728 21526 section, section_is_gnu, is_dwz,
4d663531 21527 offset_size, include_hash);
8fc3fc34 21528
d521ce57 21529 htab_remove_elt (include_hash, (void *) new_mac_ptr);
8fc3fc34 21530 }
cf2c3c16
TT
21531 }
21532 break;
21533
2e276125 21534 case DW_MACINFO_vendor_ext:
cf2c3c16
TT
21535 if (!section_is_gnu)
21536 {
21537 unsigned int bytes_read;
21538 int constant;
2e276125 21539
cf2c3c16
TT
21540 constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21541 mac_ptr += bytes_read;
21542 read_direct_string (abfd, mac_ptr, &bytes_read);
21543 mac_ptr += bytes_read;
2e276125 21544
cf2c3c16
TT
21545 /* We don't recognize any vendor extensions. */
21546 break;
21547 }
21548 /* FALLTHROUGH */
21549
21550 default:
21551 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
f664829e 21552 mac_ptr, mac_end, abfd, offset_size,
cf2c3c16
TT
21553 section);
21554 if (mac_ptr == NULL)
21555 return;
21556 break;
2e276125 21557 }
757a13d0 21558 } while (macinfo_type != 0);
2e276125 21559}
8e19ed76 21560
cf2c3c16 21561static void
09262596 21562dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
43f3e411 21563 int section_is_gnu)
cf2c3c16 21564{
bb5ed363 21565 struct objfile *objfile = dwarf2_per_objfile->objfile;
09262596
DE
21566 struct line_header *lh = cu->line_header;
21567 bfd *abfd;
d521ce57 21568 const gdb_byte *mac_ptr, *mac_end;
cf2c3c16
TT
21569 struct macro_source_file *current_file = 0;
21570 enum dwarf_macro_record_type macinfo_type;
21571 unsigned int offset_size = cu->header.offset_size;
d521ce57 21572 const gdb_byte *opcode_definitions[256];
8fc3fc34
TT
21573 struct cleanup *cleanup;
21574 htab_t include_hash;
21575 void **slot;
09262596
DE
21576 struct dwarf2_section_info *section;
21577 const char *section_name;
21578
21579 if (cu->dwo_unit != NULL)
21580 {
21581 if (section_is_gnu)
21582 {
21583 section = &cu->dwo_unit->dwo_file->sections.macro;
21584 section_name = ".debug_macro.dwo";
21585 }
21586 else
21587 {
21588 section = &cu->dwo_unit->dwo_file->sections.macinfo;
21589 section_name = ".debug_macinfo.dwo";
21590 }
21591 }
21592 else
21593 {
21594 if (section_is_gnu)
21595 {
21596 section = &dwarf2_per_objfile->macro;
21597 section_name = ".debug_macro";
21598 }
21599 else
21600 {
21601 section = &dwarf2_per_objfile->macinfo;
21602 section_name = ".debug_macinfo";
21603 }
21604 }
cf2c3c16 21605
bb5ed363 21606 dwarf2_read_section (objfile, section);
cf2c3c16
TT
21607 if (section->buffer == NULL)
21608 {
fceca515 21609 complaint (&symfile_complaints, _("missing %s section"), section_name);
cf2c3c16
TT
21610 return;
21611 }
a32a8923 21612 abfd = get_section_bfd_owner (section);
cf2c3c16
TT
21613
21614 /* First pass: Find the name of the base filename.
21615 This filename is needed in order to process all macros whose definition
21616 (or undefinition) comes from the command line. These macros are defined
21617 before the first DW_MACINFO_start_file entry, and yet still need to be
21618 associated to the base file.
21619
21620 To determine the base file name, we scan the macro definitions until we
21621 reach the first DW_MACINFO_start_file entry. We then initialize
21622 CURRENT_FILE accordingly so that any macro definition found before the
21623 first DW_MACINFO_start_file can still be associated to the base file. */
21624
21625 mac_ptr = section->buffer + offset;
21626 mac_end = section->buffer + section->size;
21627
21628 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21629 &offset_size, section_is_gnu);
21630 if (mac_ptr == NULL)
21631 {
21632 /* We already issued a complaint. */
21633 return;
21634 }
21635
21636 do
21637 {
21638 /* Do we at least have room for a macinfo type byte? */
21639 if (mac_ptr >= mac_end)
21640 {
21641 /* Complaint is printed during the second pass as GDB will probably
21642 stop the first pass earlier upon finding
21643 DW_MACINFO_start_file. */
21644 break;
21645 }
21646
aead7601 21647 macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
cf2c3c16
TT
21648 mac_ptr++;
21649
21650 /* Note that we rely on the fact that the corresponding GNU and
21651 DWARF constants are the same. */
21652 switch (macinfo_type)
21653 {
21654 /* A zero macinfo type indicates the end of the macro
21655 information. */
21656 case 0:
21657 break;
21658
21659 case DW_MACRO_GNU_define:
21660 case DW_MACRO_GNU_undef:
21661 /* Only skip the data by MAC_PTR. */
21662 {
21663 unsigned int bytes_read;
21664
21665 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21666 mac_ptr += bytes_read;
21667 read_direct_string (abfd, mac_ptr, &bytes_read);
21668 mac_ptr += bytes_read;
21669 }
21670 break;
21671
21672 case DW_MACRO_GNU_start_file:
21673 {
21674 unsigned int bytes_read;
21675 int line, file;
21676
21677 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21678 mac_ptr += bytes_read;
21679 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21680 mac_ptr += bytes_read;
21681
43f3e411 21682 current_file = macro_start_file (file, line, current_file, lh);
cf2c3c16
TT
21683 }
21684 break;
21685
21686 case DW_MACRO_GNU_end_file:
21687 /* No data to skip by MAC_PTR. */
21688 break;
21689
21690 case DW_MACRO_GNU_define_indirect:
21691 case DW_MACRO_GNU_undef_indirect:
f7a35f02
TT
21692 case DW_MACRO_GNU_define_indirect_alt:
21693 case DW_MACRO_GNU_undef_indirect_alt:
cf2c3c16
TT
21694 {
21695 unsigned int bytes_read;
21696
21697 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21698 mac_ptr += bytes_read;
21699 mac_ptr += offset_size;
21700 }
21701 break;
21702
21703 case DW_MACRO_GNU_transparent_include:
f7a35f02 21704 case DW_MACRO_GNU_transparent_include_alt:
cf2c3c16
TT
21705 /* Note that, according to the spec, a transparent include
21706 chain cannot call DW_MACRO_GNU_start_file. So, we can just
21707 skip this opcode. */
21708 mac_ptr += offset_size;
21709 break;
21710
21711 case DW_MACINFO_vendor_ext:
21712 /* Only skip the data by MAC_PTR. */
21713 if (!section_is_gnu)
21714 {
21715 unsigned int bytes_read;
21716
21717 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21718 mac_ptr += bytes_read;
21719 read_direct_string (abfd, mac_ptr, &bytes_read);
21720 mac_ptr += bytes_read;
21721 }
21722 /* FALLTHROUGH */
21723
21724 default:
21725 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
f664829e 21726 mac_ptr, mac_end, abfd, offset_size,
cf2c3c16
TT
21727 section);
21728 if (mac_ptr == NULL)
21729 return;
21730 break;
21731 }
21732 } while (macinfo_type != 0 && current_file == NULL);
21733
21734 /* Second pass: Process all entries.
21735
21736 Use the AT_COMMAND_LINE flag to determine whether we are still processing
21737 command-line macro definitions/undefinitions. This flag is unset when we
21738 reach the first DW_MACINFO_start_file entry. */
21739
8fc3fc34
TT
21740 include_hash = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
21741 NULL, xcalloc, xfree);
21742 cleanup = make_cleanup_htab_delete (include_hash);
21743 mac_ptr = section->buffer + offset;
21744 slot = htab_find_slot (include_hash, mac_ptr, INSERT);
d521ce57 21745 *slot = (void *) mac_ptr;
8fc3fc34 21746 dwarf_decode_macro_bytes (abfd, mac_ptr, mac_end,
43f3e411 21747 current_file, lh, section,
4d663531 21748 section_is_gnu, 0, offset_size, include_hash);
8fc3fc34 21749 do_cleanups (cleanup);
cf2c3c16
TT
21750}
21751
8e19ed76 21752/* Check if the attribute's form is a DW_FORM_block*
0963b4bd 21753 if so return true else false. */
380bca97 21754
8e19ed76 21755static int
6e5a29e1 21756attr_form_is_block (const struct attribute *attr)
8e19ed76
PS
21757{
21758 return (attr == NULL ? 0 :
21759 attr->form == DW_FORM_block1
21760 || attr->form == DW_FORM_block2
21761 || attr->form == DW_FORM_block4
2dc7f7b3
TT
21762 || attr->form == DW_FORM_block
21763 || attr->form == DW_FORM_exprloc);
8e19ed76 21764}
4c2df51b 21765
c6a0999f
JB
21766/* Return non-zero if ATTR's value is a section offset --- classes
21767 lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
21768 You may use DW_UNSND (attr) to retrieve such offsets.
21769
21770 Section 7.5.4, "Attribute Encodings", explains that no attribute
21771 may have a value that belongs to more than one of these classes; it
21772 would be ambiguous if we did, because we use the same forms for all
21773 of them. */
380bca97 21774
3690dd37 21775static int
6e5a29e1 21776attr_form_is_section_offset (const struct attribute *attr)
3690dd37
JB
21777{
21778 return (attr->form == DW_FORM_data4
2dc7f7b3
TT
21779 || attr->form == DW_FORM_data8
21780 || attr->form == DW_FORM_sec_offset);
3690dd37
JB
21781}
21782
3690dd37
JB
21783/* Return non-zero if ATTR's value falls in the 'constant' class, or
21784 zero otherwise. When this function returns true, you can apply
21785 dwarf2_get_attr_constant_value to it.
21786
21787 However, note that for some attributes you must check
21788 attr_form_is_section_offset before using this test. DW_FORM_data4
21789 and DW_FORM_data8 are members of both the constant class, and of
21790 the classes that contain offsets into other debug sections
21791 (lineptr, loclistptr, macptr or rangelistptr). The DWARF spec says
21792 that, if an attribute's can be either a constant or one of the
21793 section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
21794 taken as section offsets, not constants. */
380bca97 21795
3690dd37 21796static int
6e5a29e1 21797attr_form_is_constant (const struct attribute *attr)
3690dd37
JB
21798{
21799 switch (attr->form)
21800 {
21801 case DW_FORM_sdata:
21802 case DW_FORM_udata:
21803 case DW_FORM_data1:
21804 case DW_FORM_data2:
21805 case DW_FORM_data4:
21806 case DW_FORM_data8:
21807 return 1;
21808 default:
21809 return 0;
21810 }
21811}
21812
7771576e
SA
21813
21814/* DW_ADDR is always stored already as sect_offset; despite for the forms
21815 besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file. */
21816
21817static int
6e5a29e1 21818attr_form_is_ref (const struct attribute *attr)
7771576e
SA
21819{
21820 switch (attr->form)
21821 {
21822 case DW_FORM_ref_addr:
21823 case DW_FORM_ref1:
21824 case DW_FORM_ref2:
21825 case DW_FORM_ref4:
21826 case DW_FORM_ref8:
21827 case DW_FORM_ref_udata:
21828 case DW_FORM_GNU_ref_alt:
21829 return 1;
21830 default:
21831 return 0;
21832 }
21833}
21834
3019eac3
DE
21835/* Return the .debug_loc section to use for CU.
21836 For DWO files use .debug_loc.dwo. */
21837
21838static struct dwarf2_section_info *
21839cu_debug_loc_section (struct dwarf2_cu *cu)
21840{
21841 if (cu->dwo_unit)
21842 return &cu->dwo_unit->dwo_file->sections.loc;
21843 return &dwarf2_per_objfile->loc;
21844}
21845
8cf6f0b1
TT
21846/* A helper function that fills in a dwarf2_loclist_baton. */
21847
21848static void
21849fill_in_loclist_baton (struct dwarf2_cu *cu,
21850 struct dwarf2_loclist_baton *baton,
ff39bb5e 21851 const struct attribute *attr)
8cf6f0b1 21852{
3019eac3
DE
21853 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
21854
21855 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
8cf6f0b1
TT
21856
21857 baton->per_cu = cu->per_cu;
21858 gdb_assert (baton->per_cu);
21859 /* We don't know how long the location list is, but make sure we
21860 don't run off the edge of the section. */
3019eac3
DE
21861 baton->size = section->size - DW_UNSND (attr);
21862 baton->data = section->buffer + DW_UNSND (attr);
8cf6f0b1 21863 baton->base_address = cu->base_address;
f664829e 21864 baton->from_dwo = cu->dwo_unit != NULL;
8cf6f0b1
TT
21865}
21866
4c2df51b 21867static void
ff39bb5e 21868dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
f1e6e072 21869 struct dwarf2_cu *cu, int is_block)
4c2df51b 21870{
bb5ed363 21871 struct objfile *objfile = dwarf2_per_objfile->objfile;
3019eac3 21872 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
bb5ed363 21873
3690dd37 21874 if (attr_form_is_section_offset (attr)
3019eac3 21875 /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
99bcc461
DJ
21876 the section. If so, fall through to the complaint in the
21877 other branch. */
3019eac3 21878 && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
4c2df51b 21879 {
0d53c4c4 21880 struct dwarf2_loclist_baton *baton;
4c2df51b 21881
bb5ed363 21882 baton = obstack_alloc (&objfile->objfile_obstack,
0d53c4c4 21883 sizeof (struct dwarf2_loclist_baton));
4c2df51b 21884
8cf6f0b1 21885 fill_in_loclist_baton (cu, baton, attr);
be391dca 21886
d00adf39 21887 if (cu->base_known == 0)
0d53c4c4 21888 complaint (&symfile_complaints,
3e43a32a
MS
21889 _("Location list used without "
21890 "specifying the CU base address."));
4c2df51b 21891
f1e6e072
TT
21892 SYMBOL_ACLASS_INDEX (sym) = (is_block
21893 ? dwarf2_loclist_block_index
21894 : dwarf2_loclist_index);
0d53c4c4
DJ
21895 SYMBOL_LOCATION_BATON (sym) = baton;
21896 }
21897 else
21898 {
21899 struct dwarf2_locexpr_baton *baton;
21900
bb5ed363 21901 baton = obstack_alloc (&objfile->objfile_obstack,
0d53c4c4 21902 sizeof (struct dwarf2_locexpr_baton));
ae0d2f24
UW
21903 baton->per_cu = cu->per_cu;
21904 gdb_assert (baton->per_cu);
0d53c4c4
DJ
21905
21906 if (attr_form_is_block (attr))
21907 {
21908 /* Note that we're just copying the block's data pointer
21909 here, not the actual data. We're still pointing into the
6502dd73
DJ
21910 info_buffer for SYM's objfile; right now we never release
21911 that buffer, but when we do clean up properly this may
21912 need to change. */
0d53c4c4
DJ
21913 baton->size = DW_BLOCK (attr)->size;
21914 baton->data = DW_BLOCK (attr)->data;
21915 }
21916 else
21917 {
21918 dwarf2_invalid_attrib_class_complaint ("location description",
21919 SYMBOL_NATURAL_NAME (sym));
21920 baton->size = 0;
0d53c4c4 21921 }
6e70227d 21922
f1e6e072
TT
21923 SYMBOL_ACLASS_INDEX (sym) = (is_block
21924 ? dwarf2_locexpr_block_index
21925 : dwarf2_locexpr_index);
0d53c4c4
DJ
21926 SYMBOL_LOCATION_BATON (sym) = baton;
21927 }
4c2df51b 21928}
6502dd73 21929
9aa1f1e3
TT
21930/* Return the OBJFILE associated with the compilation unit CU. If CU
21931 came from a separate debuginfo file, then the master objfile is
21932 returned. */
ae0d2f24
UW
21933
21934struct objfile *
21935dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
21936{
9291a0cd 21937 struct objfile *objfile = per_cu->objfile;
ae0d2f24
UW
21938
21939 /* Return the master objfile, so that we can report and look up the
21940 correct file containing this variable. */
21941 if (objfile->separate_debug_objfile_backlink)
21942 objfile = objfile->separate_debug_objfile_backlink;
21943
21944 return objfile;
21945}
21946
96408a79
SA
21947/* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
21948 (CU_HEADERP is unused in such case) or prepare a temporary copy at
21949 CU_HEADERP first. */
21950
21951static const struct comp_unit_head *
21952per_cu_header_read_in (struct comp_unit_head *cu_headerp,
21953 struct dwarf2_per_cu_data *per_cu)
21954{
d521ce57 21955 const gdb_byte *info_ptr;
96408a79
SA
21956
21957 if (per_cu->cu)
21958 return &per_cu->cu->header;
21959
8a0459fd 21960 info_ptr = per_cu->section->buffer + per_cu->offset.sect_off;
96408a79
SA
21961
21962 memset (cu_headerp, 0, sizeof (*cu_headerp));
0bc3a05c 21963 read_comp_unit_head (cu_headerp, info_ptr, per_cu->objfile->obfd);
96408a79
SA
21964
21965 return cu_headerp;
21966}
21967
ae0d2f24
UW
21968/* Return the address size given in the compilation unit header for CU. */
21969
98714339 21970int
ae0d2f24
UW
21971dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
21972{
96408a79
SA
21973 struct comp_unit_head cu_header_local;
21974 const struct comp_unit_head *cu_headerp;
c471e790 21975
96408a79
SA
21976 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21977
21978 return cu_headerp->addr_size;
ae0d2f24
UW
21979}
21980
9eae7c52
TT
21981/* Return the offset size given in the compilation unit header for CU. */
21982
21983int
21984dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
21985{
96408a79
SA
21986 struct comp_unit_head cu_header_local;
21987 const struct comp_unit_head *cu_headerp;
9c6c53f7 21988
96408a79
SA
21989 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21990
21991 return cu_headerp->offset_size;
21992}
21993
21994/* See its dwarf2loc.h declaration. */
21995
21996int
21997dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
21998{
21999 struct comp_unit_head cu_header_local;
22000 const struct comp_unit_head *cu_headerp;
22001
22002 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
22003
22004 if (cu_headerp->version == 2)
22005 return cu_headerp->addr_size;
22006 else
22007 return cu_headerp->offset_size;
181cebd4
JK
22008}
22009
9aa1f1e3
TT
22010/* Return the text offset of the CU. The returned offset comes from
22011 this CU's objfile. If this objfile came from a separate debuginfo
22012 file, then the offset may be different from the corresponding
22013 offset in the parent objfile. */
22014
22015CORE_ADDR
22016dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
22017{
bb3fa9d0 22018 struct objfile *objfile = per_cu->objfile;
9aa1f1e3
TT
22019
22020 return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
22021}
22022
348e048f
DE
22023/* Locate the .debug_info compilation unit from CU's objfile which contains
22024 the DIE at OFFSET. Raises an error on failure. */
ae038cb0
DJ
22025
22026static struct dwarf2_per_cu_data *
b64f50a1 22027dwarf2_find_containing_comp_unit (sect_offset offset,
36586728 22028 unsigned int offset_in_dwz,
ae038cb0
DJ
22029 struct objfile *objfile)
22030{
22031 struct dwarf2_per_cu_data *this_cu;
22032 int low, high;
36586728 22033 const sect_offset *cu_off;
ae038cb0 22034
ae038cb0
DJ
22035 low = 0;
22036 high = dwarf2_per_objfile->n_comp_units - 1;
22037 while (high > low)
22038 {
36586728 22039 struct dwarf2_per_cu_data *mid_cu;
ae038cb0 22040 int mid = low + (high - low) / 2;
9a619af0 22041
36586728
TT
22042 mid_cu = dwarf2_per_objfile->all_comp_units[mid];
22043 cu_off = &mid_cu->offset;
22044 if (mid_cu->is_dwz > offset_in_dwz
22045 || (mid_cu->is_dwz == offset_in_dwz
22046 && cu_off->sect_off >= offset.sect_off))
ae038cb0
DJ
22047 high = mid;
22048 else
22049 low = mid + 1;
22050 }
22051 gdb_assert (low == high);
36586728
TT
22052 this_cu = dwarf2_per_objfile->all_comp_units[low];
22053 cu_off = &this_cu->offset;
22054 if (this_cu->is_dwz != offset_in_dwz || cu_off->sect_off > offset.sect_off)
ae038cb0 22055 {
36586728 22056 if (low == 0 || this_cu->is_dwz != offset_in_dwz)
8a3fe4f8
AC
22057 error (_("Dwarf Error: could not find partial DIE containing "
22058 "offset 0x%lx [in module %s]"),
b64f50a1 22059 (long) offset.sect_off, bfd_get_filename (objfile->obfd));
10b3939b 22060
b64f50a1
JK
22061 gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset.sect_off
22062 <= offset.sect_off);
ae038cb0
DJ
22063 return dwarf2_per_objfile->all_comp_units[low-1];
22064 }
22065 else
22066 {
22067 this_cu = dwarf2_per_objfile->all_comp_units[low];
22068 if (low == dwarf2_per_objfile->n_comp_units - 1
b64f50a1
JK
22069 && offset.sect_off >= this_cu->offset.sect_off + this_cu->length)
22070 error (_("invalid dwarf2 offset %u"), offset.sect_off);
22071 gdb_assert (offset.sect_off < this_cu->offset.sect_off + this_cu->length);
ae038cb0
DJ
22072 return this_cu;
22073 }
22074}
22075
23745b47 22076/* Initialize dwarf2_cu CU, owned by PER_CU. */
93311388 22077
9816fde3 22078static void
23745b47 22079init_one_comp_unit (struct dwarf2_cu *cu, struct dwarf2_per_cu_data *per_cu)
93311388 22080{
9816fde3 22081 memset (cu, 0, sizeof (*cu));
23745b47
DE
22082 per_cu->cu = cu;
22083 cu->per_cu = per_cu;
22084 cu->objfile = per_cu->objfile;
93311388 22085 obstack_init (&cu->comp_unit_obstack);
9816fde3
JK
22086}
22087
22088/* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE. */
22089
22090static void
95554aad
TT
22091prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
22092 enum language pretend_language)
9816fde3
JK
22093{
22094 struct attribute *attr;
22095
22096 /* Set the language we're debugging. */
22097 attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
22098 if (attr)
22099 set_cu_language (DW_UNSND (attr), cu);
22100 else
9cded63f 22101 {
95554aad 22102 cu->language = pretend_language;
9cded63f
TT
22103 cu->language_defn = language_def (cu->language);
22104 }
dee91e82 22105
7d45c7c3 22106 cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
93311388
DE
22107}
22108
ae038cb0
DJ
22109/* Release one cached compilation unit, CU. We unlink it from the tree
22110 of compilation units, but we don't remove it from the read_in_chain;
93311388
DE
22111 the caller is responsible for that.
22112 NOTE: DATA is a void * because this function is also used as a
22113 cleanup routine. */
ae038cb0
DJ
22114
22115static void
68dc6402 22116free_heap_comp_unit (void *data)
ae038cb0
DJ
22117{
22118 struct dwarf2_cu *cu = data;
22119
23745b47
DE
22120 gdb_assert (cu->per_cu != NULL);
22121 cu->per_cu->cu = NULL;
ae038cb0
DJ
22122 cu->per_cu = NULL;
22123
22124 obstack_free (&cu->comp_unit_obstack, NULL);
22125
22126 xfree (cu);
22127}
22128
72bf9492 22129/* This cleanup function is passed the address of a dwarf2_cu on the stack
ae038cb0 22130 when we're finished with it. We can't free the pointer itself, but be
dee91e82 22131 sure to unlink it from the cache. Also release any associated storage. */
72bf9492
DJ
22132
22133static void
22134free_stack_comp_unit (void *data)
22135{
22136 struct dwarf2_cu *cu = data;
22137
23745b47
DE
22138 gdb_assert (cu->per_cu != NULL);
22139 cu->per_cu->cu = NULL;
22140 cu->per_cu = NULL;
22141
72bf9492
DJ
22142 obstack_free (&cu->comp_unit_obstack, NULL);
22143 cu->partial_dies = NULL;
ae038cb0
DJ
22144}
22145
22146/* Free all cached compilation units. */
22147
22148static void
22149free_cached_comp_units (void *data)
22150{
22151 struct dwarf2_per_cu_data *per_cu, **last_chain;
22152
22153 per_cu = dwarf2_per_objfile->read_in_chain;
22154 last_chain = &dwarf2_per_objfile->read_in_chain;
22155 while (per_cu != NULL)
22156 {
22157 struct dwarf2_per_cu_data *next_cu;
22158
22159 next_cu = per_cu->cu->read_in_chain;
22160
68dc6402 22161 free_heap_comp_unit (per_cu->cu);
ae038cb0
DJ
22162 *last_chain = next_cu;
22163
22164 per_cu = next_cu;
22165 }
22166}
22167
22168/* Increase the age counter on each cached compilation unit, and free
22169 any that are too old. */
22170
22171static void
22172age_cached_comp_units (void)
22173{
22174 struct dwarf2_per_cu_data *per_cu, **last_chain;
22175
22176 dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
22177 per_cu = dwarf2_per_objfile->read_in_chain;
22178 while (per_cu != NULL)
22179 {
22180 per_cu->cu->last_used ++;
b4f54984 22181 if (per_cu->cu->last_used <= dwarf_max_cache_age)
ae038cb0
DJ
22182 dwarf2_mark (per_cu->cu);
22183 per_cu = per_cu->cu->read_in_chain;
22184 }
22185
22186 per_cu = dwarf2_per_objfile->read_in_chain;
22187 last_chain = &dwarf2_per_objfile->read_in_chain;
22188 while (per_cu != NULL)
22189 {
22190 struct dwarf2_per_cu_data *next_cu;
22191
22192 next_cu = per_cu->cu->read_in_chain;
22193
22194 if (!per_cu->cu->mark)
22195 {
68dc6402 22196 free_heap_comp_unit (per_cu->cu);
ae038cb0
DJ
22197 *last_chain = next_cu;
22198 }
22199 else
22200 last_chain = &per_cu->cu->read_in_chain;
22201
22202 per_cu = next_cu;
22203 }
22204}
22205
22206/* Remove a single compilation unit from the cache. */
22207
22208static void
dee91e82 22209free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
ae038cb0
DJ
22210{
22211 struct dwarf2_per_cu_data *per_cu, **last_chain;
22212
22213 per_cu = dwarf2_per_objfile->read_in_chain;
22214 last_chain = &dwarf2_per_objfile->read_in_chain;
22215 while (per_cu != NULL)
22216 {
22217 struct dwarf2_per_cu_data *next_cu;
22218
22219 next_cu = per_cu->cu->read_in_chain;
22220
dee91e82 22221 if (per_cu == target_per_cu)
ae038cb0 22222 {
68dc6402 22223 free_heap_comp_unit (per_cu->cu);
dee91e82 22224 per_cu->cu = NULL;
ae038cb0
DJ
22225 *last_chain = next_cu;
22226 break;
22227 }
22228 else
22229 last_chain = &per_cu->cu->read_in_chain;
22230
22231 per_cu = next_cu;
22232 }
22233}
22234
fe3e1990
DJ
22235/* Release all extra memory associated with OBJFILE. */
22236
22237void
22238dwarf2_free_objfile (struct objfile *objfile)
22239{
22240 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
22241
22242 if (dwarf2_per_objfile == NULL)
22243 return;
22244
22245 /* Cached DIE trees use xmalloc and the comp_unit_obstack. */
22246 free_cached_comp_units (NULL);
22247
7b9f3c50
DE
22248 if (dwarf2_per_objfile->quick_file_names_table)
22249 htab_delete (dwarf2_per_objfile->quick_file_names_table);
9291a0cd 22250
527f3840
JK
22251 if (dwarf2_per_objfile->line_header_hash)
22252 htab_delete (dwarf2_per_objfile->line_header_hash);
22253
fe3e1990
DJ
22254 /* Everything else should be on the objfile obstack. */
22255}
22256
dee91e82
DE
22257/* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
22258 We store these in a hash table separate from the DIEs, and preserve them
22259 when the DIEs are flushed out of cache.
22260
22261 The CU "per_cu" pointer is needed because offset alone is not enough to
3019eac3 22262 uniquely identify the type. A file may have multiple .debug_types sections,
c88ee1f0
DE
22263 or the type may come from a DWO file. Furthermore, while it's more logical
22264 to use per_cu->section+offset, with Fission the section with the data is in
22265 the DWO file but we don't know that section at the point we need it.
22266 We have to use something in dwarf2_per_cu_data (or the pointer to it)
22267 because we can enter the lookup routine, get_die_type_at_offset, from
22268 outside this file, and thus won't necessarily have PER_CU->cu.
22269 Fortunately, PER_CU is stable for the life of the objfile. */
1c379e20 22270
dee91e82 22271struct dwarf2_per_cu_offset_and_type
1c379e20 22272{
dee91e82 22273 const struct dwarf2_per_cu_data *per_cu;
b64f50a1 22274 sect_offset offset;
1c379e20
DJ
22275 struct type *type;
22276};
22277
dee91e82 22278/* Hash function for a dwarf2_per_cu_offset_and_type. */
1c379e20
DJ
22279
22280static hashval_t
dee91e82 22281per_cu_offset_and_type_hash (const void *item)
1c379e20 22282{
dee91e82 22283 const struct dwarf2_per_cu_offset_and_type *ofs = item;
9a619af0 22284
dee91e82 22285 return (uintptr_t) ofs->per_cu + ofs->offset.sect_off;
1c379e20
DJ
22286}
22287
dee91e82 22288/* Equality function for a dwarf2_per_cu_offset_and_type. */
1c379e20
DJ
22289
22290static int
dee91e82 22291per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
1c379e20 22292{
dee91e82
DE
22293 const struct dwarf2_per_cu_offset_and_type *ofs_lhs = item_lhs;
22294 const struct dwarf2_per_cu_offset_and_type *ofs_rhs = item_rhs;
9a619af0 22295
dee91e82
DE
22296 return (ofs_lhs->per_cu == ofs_rhs->per_cu
22297 && ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off);
1c379e20
DJ
22298}
22299
22300/* Set the type associated with DIE to TYPE. Save it in CU's hash
7e314c57
JK
22301 table if necessary. For convenience, return TYPE.
22302
22303 The DIEs reading must have careful ordering to:
22304 * Not cause infite loops trying to read in DIEs as a prerequisite for
22305 reading current DIE.
22306 * Not trying to dereference contents of still incompletely read in types
22307 while reading in other DIEs.
22308 * Enable referencing still incompletely read in types just by a pointer to
22309 the type without accessing its fields.
22310
22311 Therefore caller should follow these rules:
22312 * Try to fetch any prerequisite types we may need to build this DIE type
22313 before building the type and calling set_die_type.
e71ec853 22314 * After building type call set_die_type for current DIE as soon as
7e314c57
JK
22315 possible before fetching more types to complete the current type.
22316 * Make the type as complete as possible before fetching more types. */
1c379e20 22317
f792889a 22318static struct type *
1c379e20
DJ
22319set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
22320{
dee91e82 22321 struct dwarf2_per_cu_offset_and_type **slot, ofs;
673bfd45 22322 struct objfile *objfile = cu->objfile;
3cdcd0ce
JB
22323 struct attribute *attr;
22324 struct dynamic_prop prop;
1c379e20 22325
b4ba55a1
JB
22326 /* For Ada types, make sure that the gnat-specific data is always
22327 initialized (if not already set). There are a few types where
22328 we should not be doing so, because the type-specific area is
22329 already used to hold some other piece of info (eg: TYPE_CODE_FLT
22330 where the type-specific area is used to store the floatformat).
22331 But this is not a problem, because the gnat-specific information
22332 is actually not needed for these types. */
22333 if (need_gnat_info (cu)
22334 && TYPE_CODE (type) != TYPE_CODE_FUNC
22335 && TYPE_CODE (type) != TYPE_CODE_FLT
09e2d7c7
DE
22336 && TYPE_CODE (type) != TYPE_CODE_METHODPTR
22337 && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
22338 && TYPE_CODE (type) != TYPE_CODE_METHOD
b4ba55a1
JB
22339 && !HAVE_GNAT_AUX_INFO (type))
22340 INIT_GNAT_SPECIFIC (type);
22341
3cdcd0ce
JB
22342 /* Read DW_AT_data_location and set in type. */
22343 attr = dwarf2_attr (die, DW_AT_data_location, cu);
22344 if (attr_to_dynamic_prop (attr, die, cu, &prop))
93a8e227 22345 add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type, objfile);
3cdcd0ce 22346
dee91e82 22347 if (dwarf2_per_objfile->die_type_hash == NULL)
f792889a 22348 {
dee91e82
DE
22349 dwarf2_per_objfile->die_type_hash =
22350 htab_create_alloc_ex (127,
22351 per_cu_offset_and_type_hash,
22352 per_cu_offset_and_type_eq,
22353 NULL,
22354 &objfile->objfile_obstack,
22355 hashtab_obstack_allocate,
22356 dummy_obstack_deallocate);
f792889a 22357 }
1c379e20 22358
dee91e82 22359 ofs.per_cu = cu->per_cu;
1c379e20
DJ
22360 ofs.offset = die->offset;
22361 ofs.type = type;
dee91e82
DE
22362 slot = (struct dwarf2_per_cu_offset_and_type **)
22363 htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
7e314c57
JK
22364 if (*slot)
22365 complaint (&symfile_complaints,
22366 _("A problem internal to GDB: DIE 0x%x has type already set"),
b64f50a1 22367 die->offset.sect_off);
673bfd45 22368 *slot = obstack_alloc (&objfile->objfile_obstack, sizeof (**slot));
1c379e20 22369 **slot = ofs;
f792889a 22370 return type;
1c379e20
DJ
22371}
22372
02142a6c
DE
22373/* Look up the type for the die at OFFSET in PER_CU in die_type_hash,
22374 or return NULL if the die does not have a saved type. */
1c379e20
DJ
22375
22376static struct type *
b64f50a1 22377get_die_type_at_offset (sect_offset offset,
673bfd45 22378 struct dwarf2_per_cu_data *per_cu)
1c379e20 22379{
dee91e82 22380 struct dwarf2_per_cu_offset_and_type *slot, ofs;
f792889a 22381
dee91e82 22382 if (dwarf2_per_objfile->die_type_hash == NULL)
f792889a 22383 return NULL;
1c379e20 22384
dee91e82 22385 ofs.per_cu = per_cu;
673bfd45 22386 ofs.offset = offset;
dee91e82 22387 slot = htab_find (dwarf2_per_objfile->die_type_hash, &ofs);
1c379e20
DJ
22388 if (slot)
22389 return slot->type;
22390 else
22391 return NULL;
22392}
22393
02142a6c 22394/* Look up the type for DIE in CU in die_type_hash,
673bfd45
DE
22395 or return NULL if DIE does not have a saved type. */
22396
22397static struct type *
22398get_die_type (struct die_info *die, struct dwarf2_cu *cu)
22399{
22400 return get_die_type_at_offset (die->offset, cu->per_cu);
22401}
22402
10b3939b
DJ
22403/* Add a dependence relationship from CU to REF_PER_CU. */
22404
22405static void
22406dwarf2_add_dependence (struct dwarf2_cu *cu,
22407 struct dwarf2_per_cu_data *ref_per_cu)
22408{
22409 void **slot;
22410
22411 if (cu->dependencies == NULL)
22412 cu->dependencies
22413 = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
22414 NULL, &cu->comp_unit_obstack,
22415 hashtab_obstack_allocate,
22416 dummy_obstack_deallocate);
22417
22418 slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
22419 if (*slot == NULL)
22420 *slot = ref_per_cu;
22421}
1c379e20 22422
f504f079
DE
22423/* Subroutine of dwarf2_mark to pass to htab_traverse.
22424 Set the mark field in every compilation unit in the
ae038cb0
DJ
22425 cache that we must keep because we are keeping CU. */
22426
10b3939b
DJ
22427static int
22428dwarf2_mark_helper (void **slot, void *data)
22429{
22430 struct dwarf2_per_cu_data *per_cu;
22431
22432 per_cu = (struct dwarf2_per_cu_data *) *slot;
d07ed419
JK
22433
22434 /* cu->dependencies references may not yet have been ever read if QUIT aborts
22435 reading of the chain. As such dependencies remain valid it is not much
22436 useful to track and undo them during QUIT cleanups. */
22437 if (per_cu->cu == NULL)
22438 return 1;
22439
10b3939b
DJ
22440 if (per_cu->cu->mark)
22441 return 1;
22442 per_cu->cu->mark = 1;
22443
22444 if (per_cu->cu->dependencies != NULL)
22445 htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
22446
22447 return 1;
22448}
22449
f504f079
DE
22450/* Set the mark field in CU and in every other compilation unit in the
22451 cache that we must keep because we are keeping CU. */
22452
ae038cb0
DJ
22453static void
22454dwarf2_mark (struct dwarf2_cu *cu)
22455{
22456 if (cu->mark)
22457 return;
22458 cu->mark = 1;
10b3939b
DJ
22459 if (cu->dependencies != NULL)
22460 htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
ae038cb0
DJ
22461}
22462
22463static void
22464dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
22465{
22466 while (per_cu)
22467 {
22468 per_cu->cu->mark = 0;
22469 per_cu = per_cu->cu->read_in_chain;
22470 }
72bf9492
DJ
22471}
22472
72bf9492
DJ
22473/* Trivial hash function for partial_die_info: the hash value of a DIE
22474 is its offset in .debug_info for this objfile. */
22475
22476static hashval_t
22477partial_die_hash (const void *item)
22478{
22479 const struct partial_die_info *part_die = item;
9a619af0 22480
b64f50a1 22481 return part_die->offset.sect_off;
72bf9492
DJ
22482}
22483
22484/* Trivial comparison function for partial_die_info structures: two DIEs
22485 are equal if they have the same offset. */
22486
22487static int
22488partial_die_eq (const void *item_lhs, const void *item_rhs)
22489{
22490 const struct partial_die_info *part_die_lhs = item_lhs;
22491 const struct partial_die_info *part_die_rhs = item_rhs;
9a619af0 22492
b64f50a1 22493 return part_die_lhs->offset.sect_off == part_die_rhs->offset.sect_off;
72bf9492
DJ
22494}
22495
b4f54984
DE
22496static struct cmd_list_element *set_dwarf_cmdlist;
22497static struct cmd_list_element *show_dwarf_cmdlist;
ae038cb0
DJ
22498
22499static void
b4f54984 22500set_dwarf_cmd (char *args, int from_tty)
ae038cb0 22501{
b4f54984 22502 help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
635c7e8a 22503 gdb_stdout);
ae038cb0
DJ
22504}
22505
22506static void
b4f54984 22507show_dwarf_cmd (char *args, int from_tty)
6e70227d 22508{
b4f54984 22509 cmd_show_list (show_dwarf_cmdlist, from_tty, "");
ae038cb0
DJ
22510}
22511
4bf44c1c 22512/* Free data associated with OBJFILE, if necessary. */
dce234bc
PP
22513
22514static void
c1bd65d0 22515dwarf2_per_objfile_free (struct objfile *objfile, void *d)
dce234bc
PP
22516{
22517 struct dwarf2_per_objfile *data = d;
8b70b953 22518 int ix;
8b70b953 22519
626f2d1c
TT
22520 /* Make sure we don't accidentally use dwarf2_per_objfile while
22521 cleaning up. */
22522 dwarf2_per_objfile = NULL;
22523
59b0c7c1
JB
22524 for (ix = 0; ix < data->n_comp_units; ++ix)
22525 VEC_free (dwarf2_per_cu_ptr, data->all_comp_units[ix]->imported_symtabs);
796a7ff8 22526
59b0c7c1 22527 for (ix = 0; ix < data->n_type_units; ++ix)
796a7ff8 22528 VEC_free (dwarf2_per_cu_ptr,
59b0c7c1
JB
22529 data->all_type_units[ix]->per_cu.imported_symtabs);
22530 xfree (data->all_type_units);
95554aad 22531
8b70b953 22532 VEC_free (dwarf2_section_info_def, data->types);
3019eac3
DE
22533
22534 if (data->dwo_files)
22535 free_dwo_files (data->dwo_files, objfile);
5c6fa7ab
DE
22536 if (data->dwp_file)
22537 gdb_bfd_unref (data->dwp_file->dbfd);
36586728
TT
22538
22539 if (data->dwz_file && data->dwz_file->dwz_bfd)
22540 gdb_bfd_unref (data->dwz_file->dwz_bfd);
9291a0cd
TT
22541}
22542
22543\f
ae2de4f8 22544/* The "save gdb-index" command. */
9291a0cd
TT
22545
22546/* The contents of the hash table we create when building the string
22547 table. */
22548struct strtab_entry
22549{
22550 offset_type offset;
22551 const char *str;
22552};
22553
559a7a62
JK
22554/* Hash function for a strtab_entry.
22555
22556 Function is used only during write_hash_table so no index format backward
22557 compatibility is needed. */
b89be57b 22558
9291a0cd
TT
22559static hashval_t
22560hash_strtab_entry (const void *e)
22561{
22562 const struct strtab_entry *entry = e;
559a7a62 22563 return mapped_index_string_hash (INT_MAX, entry->str);
9291a0cd
TT
22564}
22565
22566/* Equality function for a strtab_entry. */
b89be57b 22567
9291a0cd
TT
22568static int
22569eq_strtab_entry (const void *a, const void *b)
22570{
22571 const struct strtab_entry *ea = a;
22572 const struct strtab_entry *eb = b;
22573 return !strcmp (ea->str, eb->str);
22574}
22575
22576/* Create a strtab_entry hash table. */
b89be57b 22577
9291a0cd
TT
22578static htab_t
22579create_strtab (void)
22580{
22581 return htab_create_alloc (100, hash_strtab_entry, eq_strtab_entry,
22582 xfree, xcalloc, xfree);
22583}
22584
22585/* Add a string to the constant pool. Return the string's offset in
22586 host order. */
b89be57b 22587
9291a0cd
TT
22588static offset_type
22589add_string (htab_t table, struct obstack *cpool, const char *str)
22590{
22591 void **slot;
22592 struct strtab_entry entry;
22593 struct strtab_entry *result;
22594
22595 entry.str = str;
22596 slot = htab_find_slot (table, &entry, INSERT);
22597 if (*slot)
22598 result = *slot;
22599 else
22600 {
22601 result = XNEW (struct strtab_entry);
22602 result->offset = obstack_object_size (cpool);
22603 result->str = str;
22604 obstack_grow_str0 (cpool, str);
22605 *slot = result;
22606 }
22607 return result->offset;
22608}
22609
22610/* An entry in the symbol table. */
22611struct symtab_index_entry
22612{
22613 /* The name of the symbol. */
22614 const char *name;
22615 /* The offset of the name in the constant pool. */
22616 offset_type index_offset;
22617 /* A sorted vector of the indices of all the CUs that hold an object
22618 of this name. */
22619 VEC (offset_type) *cu_indices;
22620};
22621
22622/* The symbol table. This is a power-of-2-sized hash table. */
22623struct mapped_symtab
22624{
22625 offset_type n_elements;
22626 offset_type size;
22627 struct symtab_index_entry **data;
22628};
22629
22630/* Hash function for a symtab_index_entry. */
b89be57b 22631
9291a0cd
TT
22632static hashval_t
22633hash_symtab_entry (const void *e)
22634{
22635 const struct symtab_index_entry *entry = e;
22636 return iterative_hash (VEC_address (offset_type, entry->cu_indices),
22637 sizeof (offset_type) * VEC_length (offset_type,
22638 entry->cu_indices),
22639 0);
22640}
22641
22642/* Equality function for a symtab_index_entry. */
b89be57b 22643
9291a0cd
TT
22644static int
22645eq_symtab_entry (const void *a, const void *b)
22646{
22647 const struct symtab_index_entry *ea = a;
22648 const struct symtab_index_entry *eb = b;
22649 int len = VEC_length (offset_type, ea->cu_indices);
22650 if (len != VEC_length (offset_type, eb->cu_indices))
22651 return 0;
22652 return !memcmp (VEC_address (offset_type, ea->cu_indices),
22653 VEC_address (offset_type, eb->cu_indices),
22654 sizeof (offset_type) * len);
22655}
22656
22657/* Destroy a symtab_index_entry. */
b89be57b 22658
9291a0cd
TT
22659static void
22660delete_symtab_entry (void *p)
22661{
22662 struct symtab_index_entry *entry = p;
22663 VEC_free (offset_type, entry->cu_indices);
22664 xfree (entry);
22665}
22666
22667/* Create a hash table holding symtab_index_entry objects. */
b89be57b 22668
9291a0cd 22669static htab_t
3876f04e 22670create_symbol_hash_table (void)
9291a0cd
TT
22671{
22672 return htab_create_alloc (100, hash_symtab_entry, eq_symtab_entry,
22673 delete_symtab_entry, xcalloc, xfree);
22674}
22675
22676/* Create a new mapped symtab object. */
b89be57b 22677
9291a0cd
TT
22678static struct mapped_symtab *
22679create_mapped_symtab (void)
22680{
22681 struct mapped_symtab *symtab = XNEW (struct mapped_symtab);
22682 symtab->n_elements = 0;
22683 symtab->size = 1024;
22684 symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22685 return symtab;
22686}
22687
22688/* Destroy a mapped_symtab. */
b89be57b 22689
9291a0cd
TT
22690static void
22691cleanup_mapped_symtab (void *p)
22692{
22693 struct mapped_symtab *symtab = p;
22694 /* The contents of the array are freed when the other hash table is
22695 destroyed. */
22696 xfree (symtab->data);
22697 xfree (symtab);
22698}
22699
22700/* Find a slot in SYMTAB for the symbol NAME. Returns a pointer to
559a7a62
JK
22701 the slot.
22702
22703 Function is used only during write_hash_table so no index format backward
22704 compatibility is needed. */
b89be57b 22705
9291a0cd
TT
22706static struct symtab_index_entry **
22707find_slot (struct mapped_symtab *symtab, const char *name)
22708{
559a7a62 22709 offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
9291a0cd
TT
22710
22711 index = hash & (symtab->size - 1);
22712 step = ((hash * 17) & (symtab->size - 1)) | 1;
22713
22714 for (;;)
22715 {
22716 if (!symtab->data[index] || !strcmp (name, symtab->data[index]->name))
22717 return &symtab->data[index];
22718 index = (index + step) & (symtab->size - 1);
22719 }
22720}
22721
22722/* Expand SYMTAB's hash table. */
b89be57b 22723
9291a0cd
TT
22724static void
22725hash_expand (struct mapped_symtab *symtab)
22726{
22727 offset_type old_size = symtab->size;
22728 offset_type i;
22729 struct symtab_index_entry **old_entries = symtab->data;
22730
22731 symtab->size *= 2;
22732 symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22733
22734 for (i = 0; i < old_size; ++i)
22735 {
22736 if (old_entries[i])
22737 {
22738 struct symtab_index_entry **slot = find_slot (symtab,
22739 old_entries[i]->name);
22740 *slot = old_entries[i];
22741 }
22742 }
22743
22744 xfree (old_entries);
22745}
22746
156942c7
DE
22747/* Add an entry to SYMTAB. NAME is the name of the symbol.
22748 CU_INDEX is the index of the CU in which the symbol appears.
22749 IS_STATIC is one if the symbol is static, otherwise zero (global). */
b89be57b 22750
9291a0cd
TT
22751static void
22752add_index_entry (struct mapped_symtab *symtab, const char *name,
156942c7 22753 int is_static, gdb_index_symbol_kind kind,
9291a0cd
TT
22754 offset_type cu_index)
22755{
22756 struct symtab_index_entry **slot;
156942c7 22757 offset_type cu_index_and_attrs;
9291a0cd
TT
22758
22759 ++symtab->n_elements;
22760 if (4 * symtab->n_elements / 3 >= symtab->size)
22761 hash_expand (symtab);
22762
22763 slot = find_slot (symtab, name);
22764 if (!*slot)
22765 {
22766 *slot = XNEW (struct symtab_index_entry);
22767 (*slot)->name = name;
156942c7 22768 /* index_offset is set later. */
9291a0cd
TT
22769 (*slot)->cu_indices = NULL;
22770 }
156942c7
DE
22771
22772 cu_index_and_attrs = 0;
22773 DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
22774 DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
22775 DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
22776
22777 /* We don't want to record an index value twice as we want to avoid the
22778 duplication.
22779 We process all global symbols and then all static symbols
22780 (which would allow us to avoid the duplication by only having to check
22781 the last entry pushed), but a symbol could have multiple kinds in one CU.
22782 To keep things simple we don't worry about the duplication here and
22783 sort and uniqufy the list after we've processed all symbols. */
22784 VEC_safe_push (offset_type, (*slot)->cu_indices, cu_index_and_attrs);
22785}
22786
22787/* qsort helper routine for uniquify_cu_indices. */
22788
22789static int
22790offset_type_compare (const void *ap, const void *bp)
22791{
22792 offset_type a = *(offset_type *) ap;
22793 offset_type b = *(offset_type *) bp;
22794
22795 return (a > b) - (b > a);
22796}
22797
22798/* Sort and remove duplicates of all symbols' cu_indices lists. */
22799
22800static void
22801uniquify_cu_indices (struct mapped_symtab *symtab)
22802{
22803 int i;
22804
22805 for (i = 0; i < symtab->size; ++i)
22806 {
22807 struct symtab_index_entry *entry = symtab->data[i];
22808
22809 if (entry
22810 && entry->cu_indices != NULL)
22811 {
22812 unsigned int next_to_insert, next_to_check;
22813 offset_type last_value;
22814
22815 qsort (VEC_address (offset_type, entry->cu_indices),
22816 VEC_length (offset_type, entry->cu_indices),
22817 sizeof (offset_type), offset_type_compare);
22818
22819 last_value = VEC_index (offset_type, entry->cu_indices, 0);
22820 next_to_insert = 1;
22821 for (next_to_check = 1;
22822 next_to_check < VEC_length (offset_type, entry->cu_indices);
22823 ++next_to_check)
22824 {
22825 if (VEC_index (offset_type, entry->cu_indices, next_to_check)
22826 != last_value)
22827 {
22828 last_value = VEC_index (offset_type, entry->cu_indices,
22829 next_to_check);
22830 VEC_replace (offset_type, entry->cu_indices, next_to_insert,
22831 last_value);
22832 ++next_to_insert;
22833 }
22834 }
22835 VEC_truncate (offset_type, entry->cu_indices, next_to_insert);
22836 }
22837 }
9291a0cd
TT
22838}
22839
22840/* Add a vector of indices to the constant pool. */
b89be57b 22841
9291a0cd 22842static offset_type
3876f04e 22843add_indices_to_cpool (htab_t symbol_hash_table, struct obstack *cpool,
9291a0cd
TT
22844 struct symtab_index_entry *entry)
22845{
22846 void **slot;
22847
3876f04e 22848 slot = htab_find_slot (symbol_hash_table, entry, INSERT);
9291a0cd
TT
22849 if (!*slot)
22850 {
22851 offset_type len = VEC_length (offset_type, entry->cu_indices);
22852 offset_type val = MAYBE_SWAP (len);
22853 offset_type iter;
22854 int i;
22855
22856 *slot = entry;
22857 entry->index_offset = obstack_object_size (cpool);
22858
22859 obstack_grow (cpool, &val, sizeof (val));
22860 for (i = 0;
22861 VEC_iterate (offset_type, entry->cu_indices, i, iter);
22862 ++i)
22863 {
22864 val = MAYBE_SWAP (iter);
22865 obstack_grow (cpool, &val, sizeof (val));
22866 }
22867 }
22868 else
22869 {
22870 struct symtab_index_entry *old_entry = *slot;
22871 entry->index_offset = old_entry->index_offset;
22872 entry = old_entry;
22873 }
22874 return entry->index_offset;
22875}
22876
22877/* Write the mapped hash table SYMTAB to the obstack OUTPUT, with
22878 constant pool entries going into the obstack CPOOL. */
b89be57b 22879
9291a0cd
TT
22880static void
22881write_hash_table (struct mapped_symtab *symtab,
22882 struct obstack *output, struct obstack *cpool)
22883{
22884 offset_type i;
3876f04e 22885 htab_t symbol_hash_table;
9291a0cd
TT
22886 htab_t str_table;
22887
3876f04e 22888 symbol_hash_table = create_symbol_hash_table ();
9291a0cd 22889 str_table = create_strtab ();
3876f04e 22890
9291a0cd
TT
22891 /* We add all the index vectors to the constant pool first, to
22892 ensure alignment is ok. */
22893 for (i = 0; i < symtab->size; ++i)
22894 {
22895 if (symtab->data[i])
3876f04e 22896 add_indices_to_cpool (symbol_hash_table, cpool, symtab->data[i]);
9291a0cd
TT
22897 }
22898
22899 /* Now write out the hash table. */
22900 for (i = 0; i < symtab->size; ++i)
22901 {
22902 offset_type str_off, vec_off;
22903
22904 if (symtab->data[i])
22905 {
22906 str_off = add_string (str_table, cpool, symtab->data[i]->name);
22907 vec_off = symtab->data[i]->index_offset;
22908 }
22909 else
22910 {
22911 /* While 0 is a valid constant pool index, it is not valid
22912 to have 0 for both offsets. */
22913 str_off = 0;
22914 vec_off = 0;
22915 }
22916
22917 str_off = MAYBE_SWAP (str_off);
22918 vec_off = MAYBE_SWAP (vec_off);
22919
22920 obstack_grow (output, &str_off, sizeof (str_off));
22921 obstack_grow (output, &vec_off, sizeof (vec_off));
22922 }
22923
22924 htab_delete (str_table);
3876f04e 22925 htab_delete (symbol_hash_table);
9291a0cd
TT
22926}
22927
0a5429f6
DE
22928/* Struct to map psymtab to CU index in the index file. */
22929struct psymtab_cu_index_map
22930{
22931 struct partial_symtab *psymtab;
22932 unsigned int cu_index;
22933};
22934
22935static hashval_t
22936hash_psymtab_cu_index (const void *item)
22937{
22938 const struct psymtab_cu_index_map *map = item;
22939
22940 return htab_hash_pointer (map->psymtab);
22941}
22942
22943static int
22944eq_psymtab_cu_index (const void *item_lhs, const void *item_rhs)
22945{
22946 const struct psymtab_cu_index_map *lhs = item_lhs;
22947 const struct psymtab_cu_index_map *rhs = item_rhs;
22948
22949 return lhs->psymtab == rhs->psymtab;
22950}
22951
22952/* Helper struct for building the address table. */
22953struct addrmap_index_data
22954{
22955 struct objfile *objfile;
22956 struct obstack *addr_obstack;
22957 htab_t cu_index_htab;
22958
22959 /* Non-zero if the previous_* fields are valid.
22960 We can't write an entry until we see the next entry (since it is only then
22961 that we know the end of the entry). */
22962 int previous_valid;
22963 /* Index of the CU in the table of all CUs in the index file. */
22964 unsigned int previous_cu_index;
0963b4bd 22965 /* Start address of the CU. */
0a5429f6
DE
22966 CORE_ADDR previous_cu_start;
22967};
22968
22969/* Write an address entry to OBSTACK. */
b89be57b 22970
9291a0cd 22971static void
0a5429f6
DE
22972add_address_entry (struct objfile *objfile, struct obstack *obstack,
22973 CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
9291a0cd 22974{
0a5429f6 22975 offset_type cu_index_to_write;
948f8e3d 22976 gdb_byte addr[8];
9291a0cd
TT
22977 CORE_ADDR baseaddr;
22978
22979 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
22980
0a5429f6
DE
22981 store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, start - baseaddr);
22982 obstack_grow (obstack, addr, 8);
22983 store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, end - baseaddr);
22984 obstack_grow (obstack, addr, 8);
22985 cu_index_to_write = MAYBE_SWAP (cu_index);
22986 obstack_grow (obstack, &cu_index_to_write, sizeof (offset_type));
22987}
22988
22989/* Worker function for traversing an addrmap to build the address table. */
22990
22991static int
22992add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
22993{
22994 struct addrmap_index_data *data = datap;
22995 struct partial_symtab *pst = obj;
0a5429f6
DE
22996
22997 if (data->previous_valid)
22998 add_address_entry (data->objfile, data->addr_obstack,
22999 data->previous_cu_start, start_addr,
23000 data->previous_cu_index);
23001
23002 data->previous_cu_start = start_addr;
23003 if (pst != NULL)
23004 {
23005 struct psymtab_cu_index_map find_map, *map;
23006 find_map.psymtab = pst;
23007 map = htab_find (data->cu_index_htab, &find_map);
23008 gdb_assert (map != NULL);
23009 data->previous_cu_index = map->cu_index;
23010 data->previous_valid = 1;
23011 }
23012 else
23013 data->previous_valid = 0;
23014
23015 return 0;
23016}
23017
23018/* Write OBJFILE's address map to OBSTACK.
23019 CU_INDEX_HTAB is used to map addrmap entries to their CU indices
23020 in the index file. */
23021
23022static void
23023write_address_map (struct objfile *objfile, struct obstack *obstack,
23024 htab_t cu_index_htab)
23025{
23026 struct addrmap_index_data addrmap_index_data;
23027
23028 /* When writing the address table, we have to cope with the fact that
23029 the addrmap iterator only provides the start of a region; we have to
23030 wait until the next invocation to get the start of the next region. */
23031
23032 addrmap_index_data.objfile = objfile;
23033 addrmap_index_data.addr_obstack = obstack;
23034 addrmap_index_data.cu_index_htab = cu_index_htab;
23035 addrmap_index_data.previous_valid = 0;
23036
23037 addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
23038 &addrmap_index_data);
23039
23040 /* It's highly unlikely the last entry (end address = 0xff...ff)
23041 is valid, but we should still handle it.
23042 The end address is recorded as the start of the next region, but that
23043 doesn't work here. To cope we pass 0xff...ff, this is a rare situation
23044 anyway. */
23045 if (addrmap_index_data.previous_valid)
23046 add_address_entry (objfile, obstack,
23047 addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
23048 addrmap_index_data.previous_cu_index);
9291a0cd
TT
23049}
23050
156942c7
DE
23051/* Return the symbol kind of PSYM. */
23052
23053static gdb_index_symbol_kind
23054symbol_kind (struct partial_symbol *psym)
23055{
23056 domain_enum domain = PSYMBOL_DOMAIN (psym);
23057 enum address_class aclass = PSYMBOL_CLASS (psym);
23058
23059 switch (domain)
23060 {
23061 case VAR_DOMAIN:
23062 switch (aclass)
23063 {
23064 case LOC_BLOCK:
23065 return GDB_INDEX_SYMBOL_KIND_FUNCTION;
23066 case LOC_TYPEDEF:
23067 return GDB_INDEX_SYMBOL_KIND_TYPE;
23068 case LOC_COMPUTED:
23069 case LOC_CONST_BYTES:
23070 case LOC_OPTIMIZED_OUT:
23071 case LOC_STATIC:
23072 return GDB_INDEX_SYMBOL_KIND_VARIABLE;
23073 case LOC_CONST:
23074 /* Note: It's currently impossible to recognize psyms as enum values
23075 short of reading the type info. For now punt. */
23076 return GDB_INDEX_SYMBOL_KIND_VARIABLE;
23077 default:
23078 /* There are other LOC_FOO values that one might want to classify
23079 as variables, but dwarf2read.c doesn't currently use them. */
23080 return GDB_INDEX_SYMBOL_KIND_OTHER;
23081 }
23082 case STRUCT_DOMAIN:
23083 return GDB_INDEX_SYMBOL_KIND_TYPE;
23084 default:
23085 return GDB_INDEX_SYMBOL_KIND_OTHER;
23086 }
23087}
23088
9291a0cd 23089/* Add a list of partial symbols to SYMTAB. */
b89be57b 23090
9291a0cd
TT
23091static void
23092write_psymbols (struct mapped_symtab *symtab,
987d643c 23093 htab_t psyms_seen,
9291a0cd
TT
23094 struct partial_symbol **psymp,
23095 int count,
987d643c
TT
23096 offset_type cu_index,
23097 int is_static)
9291a0cd
TT
23098{
23099 for (; count-- > 0; ++psymp)
23100 {
156942c7
DE
23101 struct partial_symbol *psym = *psymp;
23102 void **slot;
987d643c 23103
156942c7 23104 if (SYMBOL_LANGUAGE (psym) == language_ada)
9291a0cd 23105 error (_("Ada is not currently supported by the index"));
987d643c 23106
987d643c 23107 /* Only add a given psymbol once. */
156942c7 23108 slot = htab_find_slot (psyms_seen, psym, INSERT);
987d643c
TT
23109 if (!*slot)
23110 {
156942c7
DE
23111 gdb_index_symbol_kind kind = symbol_kind (psym);
23112
23113 *slot = psym;
23114 add_index_entry (symtab, SYMBOL_SEARCH_NAME (psym),
23115 is_static, kind, cu_index);
987d643c 23116 }
9291a0cd
TT
23117 }
23118}
23119
23120/* Write the contents of an ("unfinished") obstack to FILE. Throw an
23121 exception if there is an error. */
b89be57b 23122
9291a0cd
TT
23123static void
23124write_obstack (FILE *file, struct obstack *obstack)
23125{
23126 if (fwrite (obstack_base (obstack), 1, obstack_object_size (obstack),
23127 file)
23128 != obstack_object_size (obstack))
23129 error (_("couldn't data write to file"));
23130}
23131
23132/* Unlink a file if the argument is not NULL. */
b89be57b 23133
9291a0cd
TT
23134static void
23135unlink_if_set (void *p)
23136{
23137 char **filename = p;
23138 if (*filename)
23139 unlink (*filename);
23140}
23141
1fd400ff
TT
23142/* A helper struct used when iterating over debug_types. */
23143struct signatured_type_index_data
23144{
23145 struct objfile *objfile;
23146 struct mapped_symtab *symtab;
23147 struct obstack *types_list;
987d643c 23148 htab_t psyms_seen;
1fd400ff
TT
23149 int cu_index;
23150};
23151
23152/* A helper function that writes a single signatured_type to an
23153 obstack. */
b89be57b 23154
1fd400ff
TT
23155static int
23156write_one_signatured_type (void **slot, void *d)
23157{
23158 struct signatured_type_index_data *info = d;
23159 struct signatured_type *entry = (struct signatured_type *) *slot;
0186c6a7 23160 struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
1fd400ff
TT
23161 gdb_byte val[8];
23162
23163 write_psymbols (info->symtab,
987d643c 23164 info->psyms_seen,
3e43a32a
MS
23165 info->objfile->global_psymbols.list
23166 + psymtab->globals_offset,
987d643c
TT
23167 psymtab->n_global_syms, info->cu_index,
23168 0);
1fd400ff 23169 write_psymbols (info->symtab,
987d643c 23170 info->psyms_seen,
3e43a32a
MS
23171 info->objfile->static_psymbols.list
23172 + psymtab->statics_offset,
987d643c
TT
23173 psymtab->n_static_syms, info->cu_index,
23174 1);
1fd400ff 23175
b64f50a1
JK
23176 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23177 entry->per_cu.offset.sect_off);
1fd400ff 23178 obstack_grow (info->types_list, val, 8);
3019eac3
DE
23179 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23180 entry->type_offset_in_tu.cu_off);
1fd400ff
TT
23181 obstack_grow (info->types_list, val, 8);
23182 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->signature);
23183 obstack_grow (info->types_list, val, 8);
23184
23185 ++info->cu_index;
23186
23187 return 1;
23188}
23189
95554aad
TT
23190/* Recurse into all "included" dependencies and write their symbols as
23191 if they appeared in this psymtab. */
23192
23193static void
23194recursively_write_psymbols (struct objfile *objfile,
23195 struct partial_symtab *psymtab,
23196 struct mapped_symtab *symtab,
23197 htab_t psyms_seen,
23198 offset_type cu_index)
23199{
23200 int i;
23201
23202 for (i = 0; i < psymtab->number_of_dependencies; ++i)
23203 if (psymtab->dependencies[i]->user != NULL)
23204 recursively_write_psymbols (objfile, psymtab->dependencies[i],
23205 symtab, psyms_seen, cu_index);
23206
23207 write_psymbols (symtab,
23208 psyms_seen,
23209 objfile->global_psymbols.list + psymtab->globals_offset,
23210 psymtab->n_global_syms, cu_index,
23211 0);
23212 write_psymbols (symtab,
23213 psyms_seen,
23214 objfile->static_psymbols.list + psymtab->statics_offset,
23215 psymtab->n_static_syms, cu_index,
23216 1);
23217}
23218
9291a0cd 23219/* Create an index file for OBJFILE in the directory DIR. */
b89be57b 23220
9291a0cd
TT
23221static void
23222write_psymtabs_to_index (struct objfile *objfile, const char *dir)
23223{
23224 struct cleanup *cleanup;
23225 char *filename, *cleanup_filename;
1fd400ff
TT
23226 struct obstack contents, addr_obstack, constant_pool, symtab_obstack;
23227 struct obstack cu_list, types_cu_list;
9291a0cd
TT
23228 int i;
23229 FILE *out_file;
23230 struct mapped_symtab *symtab;
23231 offset_type val, size_of_contents, total_len;
23232 struct stat st;
987d643c 23233 htab_t psyms_seen;
0a5429f6
DE
23234 htab_t cu_index_htab;
23235 struct psymtab_cu_index_map *psymtab_cu_index_map;
9291a0cd 23236
9291a0cd
TT
23237 if (dwarf2_per_objfile->using_index)
23238 error (_("Cannot use an index to create the index"));
23239
8b70b953
TT
23240 if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) > 1)
23241 error (_("Cannot make an index when the file has multiple .debug_types sections"));
23242
260b681b
DE
23243 if (!objfile->psymtabs || !objfile->psymtabs_addrmap)
23244 return;
23245
4262abfb
JK
23246 if (stat (objfile_name (objfile), &st) < 0)
23247 perror_with_name (objfile_name (objfile));
9291a0cd 23248
4262abfb 23249 filename = concat (dir, SLASH_STRING, lbasename (objfile_name (objfile)),
9291a0cd
TT
23250 INDEX_SUFFIX, (char *) NULL);
23251 cleanup = make_cleanup (xfree, filename);
23252
614c279d 23253 out_file = gdb_fopen_cloexec (filename, "wb");
9291a0cd
TT
23254 if (!out_file)
23255 error (_("Can't open `%s' for writing"), filename);
23256
23257 cleanup_filename = filename;
23258 make_cleanup (unlink_if_set, &cleanup_filename);
23259
23260 symtab = create_mapped_symtab ();
23261 make_cleanup (cleanup_mapped_symtab, symtab);
23262
23263 obstack_init (&addr_obstack);
23264 make_cleanup_obstack_free (&addr_obstack);
23265
23266 obstack_init (&cu_list);
23267 make_cleanup_obstack_free (&cu_list);
23268
1fd400ff
TT
23269 obstack_init (&types_cu_list);
23270 make_cleanup_obstack_free (&types_cu_list);
23271
987d643c
TT
23272 psyms_seen = htab_create_alloc (100, htab_hash_pointer, htab_eq_pointer,
23273 NULL, xcalloc, xfree);
96408a79 23274 make_cleanup_htab_delete (psyms_seen);
987d643c 23275
0a5429f6
DE
23276 /* While we're scanning CU's create a table that maps a psymtab pointer
23277 (which is what addrmap records) to its index (which is what is recorded
23278 in the index file). This will later be needed to write the address
23279 table. */
23280 cu_index_htab = htab_create_alloc (100,
23281 hash_psymtab_cu_index,
23282 eq_psymtab_cu_index,
23283 NULL, xcalloc, xfree);
96408a79 23284 make_cleanup_htab_delete (cu_index_htab);
0a5429f6
DE
23285 psymtab_cu_index_map = (struct psymtab_cu_index_map *)
23286 xmalloc (sizeof (struct psymtab_cu_index_map)
23287 * dwarf2_per_objfile->n_comp_units);
23288 make_cleanup (xfree, psymtab_cu_index_map);
23289
23290 /* The CU list is already sorted, so we don't need to do additional
1fd400ff
TT
23291 work here. Also, the debug_types entries do not appear in
23292 all_comp_units, but only in their own hash table. */
9291a0cd
TT
23293 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
23294 {
3e43a32a
MS
23295 struct dwarf2_per_cu_data *per_cu
23296 = dwarf2_per_objfile->all_comp_units[i];
e254ef6a 23297 struct partial_symtab *psymtab = per_cu->v.psymtab;
9291a0cd 23298 gdb_byte val[8];
0a5429f6
DE
23299 struct psymtab_cu_index_map *map;
23300 void **slot;
9291a0cd 23301
92fac807
JK
23302 /* CU of a shared file from 'dwz -m' may be unused by this main file.
23303 It may be referenced from a local scope but in such case it does not
23304 need to be present in .gdb_index. */
23305 if (psymtab == NULL)
23306 continue;
23307
95554aad
TT
23308 if (psymtab->user == NULL)
23309 recursively_write_psymbols (objfile, psymtab, symtab, psyms_seen, i);
9291a0cd 23310
0a5429f6
DE
23311 map = &psymtab_cu_index_map[i];
23312 map->psymtab = psymtab;
23313 map->cu_index = i;
23314 slot = htab_find_slot (cu_index_htab, map, INSERT);
23315 gdb_assert (slot != NULL);
23316 gdb_assert (*slot == NULL);
23317 *slot = map;
9291a0cd 23318
b64f50a1
JK
23319 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23320 per_cu->offset.sect_off);
9291a0cd 23321 obstack_grow (&cu_list, val, 8);
e254ef6a 23322 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, per_cu->length);
9291a0cd
TT
23323 obstack_grow (&cu_list, val, 8);
23324 }
23325
0a5429f6
DE
23326 /* Dump the address map. */
23327 write_address_map (objfile, &addr_obstack, cu_index_htab);
23328
1fd400ff
TT
23329 /* Write out the .debug_type entries, if any. */
23330 if (dwarf2_per_objfile->signatured_types)
23331 {
23332 struct signatured_type_index_data sig_data;
23333
23334 sig_data.objfile = objfile;
23335 sig_data.symtab = symtab;
23336 sig_data.types_list = &types_cu_list;
987d643c 23337 sig_data.psyms_seen = psyms_seen;
1fd400ff
TT
23338 sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
23339 htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
23340 write_one_signatured_type, &sig_data);
23341 }
23342
156942c7
DE
23343 /* Now that we've processed all symbols we can shrink their cu_indices
23344 lists. */
23345 uniquify_cu_indices (symtab);
23346
9291a0cd
TT
23347 obstack_init (&constant_pool);
23348 make_cleanup_obstack_free (&constant_pool);
23349 obstack_init (&symtab_obstack);
23350 make_cleanup_obstack_free (&symtab_obstack);
23351 write_hash_table (symtab, &symtab_obstack, &constant_pool);
23352
23353 obstack_init (&contents);
23354 make_cleanup_obstack_free (&contents);
1fd400ff 23355 size_of_contents = 6 * sizeof (offset_type);
9291a0cd
TT
23356 total_len = size_of_contents;
23357
23358 /* The version number. */
796a7ff8 23359 val = MAYBE_SWAP (8);
9291a0cd
TT
23360 obstack_grow (&contents, &val, sizeof (val));
23361
23362 /* The offset of the CU list from the start of the file. */
23363 val = MAYBE_SWAP (total_len);
23364 obstack_grow (&contents, &val, sizeof (val));
23365 total_len += obstack_object_size (&cu_list);
23366
1fd400ff
TT
23367 /* The offset of the types CU list from the start of the file. */
23368 val = MAYBE_SWAP (total_len);
23369 obstack_grow (&contents, &val, sizeof (val));
23370 total_len += obstack_object_size (&types_cu_list);
23371
9291a0cd
TT
23372 /* The offset of the address table from the start of the file. */
23373 val = MAYBE_SWAP (total_len);
23374 obstack_grow (&contents, &val, sizeof (val));
23375 total_len += obstack_object_size (&addr_obstack);
23376
23377 /* The offset of the symbol table from the start of the file. */
23378 val = MAYBE_SWAP (total_len);
23379 obstack_grow (&contents, &val, sizeof (val));
23380 total_len += obstack_object_size (&symtab_obstack);
23381
23382 /* The offset of the constant pool from the start of the file. */
23383 val = MAYBE_SWAP (total_len);
23384 obstack_grow (&contents, &val, sizeof (val));
23385 total_len += obstack_object_size (&constant_pool);
23386
23387 gdb_assert (obstack_object_size (&contents) == size_of_contents);
23388
23389 write_obstack (out_file, &contents);
23390 write_obstack (out_file, &cu_list);
1fd400ff 23391 write_obstack (out_file, &types_cu_list);
9291a0cd
TT
23392 write_obstack (out_file, &addr_obstack);
23393 write_obstack (out_file, &symtab_obstack);
23394 write_obstack (out_file, &constant_pool);
23395
23396 fclose (out_file);
23397
23398 /* We want to keep the file, so we set cleanup_filename to NULL
23399 here. See unlink_if_set. */
23400 cleanup_filename = NULL;
23401
23402 do_cleanups (cleanup);
23403}
23404
90476074
TT
23405/* Implementation of the `save gdb-index' command.
23406
23407 Note that the file format used by this command is documented in the
23408 GDB manual. Any changes here must be documented there. */
11570e71 23409
9291a0cd
TT
23410static void
23411save_gdb_index_command (char *arg, int from_tty)
23412{
23413 struct objfile *objfile;
23414
23415 if (!arg || !*arg)
96d19272 23416 error (_("usage: save gdb-index DIRECTORY"));
9291a0cd
TT
23417
23418 ALL_OBJFILES (objfile)
23419 {
23420 struct stat st;
23421
23422 /* If the objfile does not correspond to an actual file, skip it. */
4262abfb 23423 if (stat (objfile_name (objfile), &st) < 0)
9291a0cd
TT
23424 continue;
23425
23426 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
23427 if (dwarf2_per_objfile)
23428 {
9291a0cd 23429
492d29ea 23430 TRY
9291a0cd
TT
23431 {
23432 write_psymtabs_to_index (objfile, arg);
23433 }
492d29ea
PA
23434 CATCH (except, RETURN_MASK_ERROR)
23435 {
23436 exception_fprintf (gdb_stderr, except,
23437 _("Error while writing index for `%s': "),
23438 objfile_name (objfile));
23439 }
23440 END_CATCH
9291a0cd
TT
23441 }
23442 }
dce234bc
PP
23443}
23444
9291a0cd
TT
23445\f
23446
b4f54984 23447int dwarf_always_disassemble;
9eae7c52
TT
23448
23449static void
b4f54984
DE
23450show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
23451 struct cmd_list_element *c, const char *value)
9eae7c52 23452{
3e43a32a
MS
23453 fprintf_filtered (file,
23454 _("Whether to always disassemble "
23455 "DWARF expressions is %s.\n"),
9eae7c52
TT
23456 value);
23457}
23458
900e11f9
JK
23459static void
23460show_check_physname (struct ui_file *file, int from_tty,
23461 struct cmd_list_element *c, const char *value)
23462{
23463 fprintf_filtered (file,
23464 _("Whether to check \"physname\" is %s.\n"),
23465 value);
23466}
23467
6502dd73
DJ
23468void _initialize_dwarf2_read (void);
23469
23470void
23471_initialize_dwarf2_read (void)
23472{
96d19272
JK
23473 struct cmd_list_element *c;
23474
dce234bc 23475 dwarf2_objfile_data_key
c1bd65d0 23476 = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
ae038cb0 23477
b4f54984
DE
23478 add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
23479Set DWARF specific variables.\n\
23480Configure DWARF variables such as the cache size"),
23481 &set_dwarf_cmdlist, "maintenance set dwarf ",
ae038cb0
DJ
23482 0/*allow-unknown*/, &maintenance_set_cmdlist);
23483
b4f54984
DE
23484 add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
23485Show DWARF specific variables\n\
23486Show DWARF variables such as the cache size"),
23487 &show_dwarf_cmdlist, "maintenance show dwarf ",
ae038cb0
DJ
23488 0/*allow-unknown*/, &maintenance_show_cmdlist);
23489
23490 add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
b4f54984
DE
23491 &dwarf_max_cache_age, _("\
23492Set the upper bound on the age of cached DWARF compilation units."), _("\
23493Show the upper bound on the age of cached DWARF compilation units."), _("\
7915a72c
AC
23494A higher limit means that cached compilation units will be stored\n\
23495in memory longer, and more total memory will be used. Zero disables\n\
23496caching, which can slow down startup."),
2c5b56ce 23497 NULL,
b4f54984
DE
23498 show_dwarf_max_cache_age,
23499 &set_dwarf_cmdlist,
23500 &show_dwarf_cmdlist);
d97bc12b 23501
9eae7c52 23502 add_setshow_boolean_cmd ("always-disassemble", class_obscure,
b4f54984 23503 &dwarf_always_disassemble, _("\
9eae7c52
TT
23504Set whether `info address' always disassembles DWARF expressions."), _("\
23505Show whether `info address' always disassembles DWARF expressions."), _("\
23506When enabled, DWARF expressions are always printed in an assembly-like\n\
23507syntax. When disabled, expressions will be printed in a more\n\
23508conversational style, when possible."),
23509 NULL,
b4f54984
DE
23510 show_dwarf_always_disassemble,
23511 &set_dwarf_cmdlist,
23512 &show_dwarf_cmdlist);
23513
23514 add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
23515Set debugging of the DWARF reader."), _("\
23516Show debugging of the DWARF reader."), _("\
23517When enabled (non-zero), debugging messages are printed during DWARF\n\
73be47f5
DE
23518reading and symtab expansion. A value of 1 (one) provides basic\n\
23519information. A value greater than 1 provides more verbose information."),
45cfd468
DE
23520 NULL,
23521 NULL,
23522 &setdebuglist, &showdebuglist);
23523
b4f54984
DE
23524 add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
23525Set debugging of the DWARF DIE reader."), _("\
23526Show debugging of the DWARF DIE reader."), _("\
d97bc12b
DE
23527When enabled (non-zero), DIEs are dumped after they are read in.\n\
23528The value is the maximum depth to print."),
ccce17b0
YQ
23529 NULL,
23530 NULL,
23531 &setdebuglist, &showdebuglist);
9291a0cd 23532
27e0867f
DE
23533 add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
23534Set debugging of the dwarf line reader."), _("\
23535Show debugging of the dwarf line reader."), _("\
23536When enabled (non-zero), line number entries are dumped as they are read in.\n\
23537A value of 1 (one) provides basic information.\n\
23538A value greater than 1 provides more verbose information."),
23539 NULL,
23540 NULL,
23541 &setdebuglist, &showdebuglist);
23542
900e11f9
JK
23543 add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
23544Set cross-checking of \"physname\" code against demangler."), _("\
23545Show cross-checking of \"physname\" code against demangler."), _("\
23546When enabled, GDB's internal \"physname\" code is checked against\n\
23547the demangler."),
23548 NULL, show_check_physname,
23549 &setdebuglist, &showdebuglist);
23550
e615022a
DE
23551 add_setshow_boolean_cmd ("use-deprecated-index-sections",
23552 no_class, &use_deprecated_index_sections, _("\
23553Set whether to use deprecated gdb_index sections."), _("\
23554Show whether to use deprecated gdb_index sections."), _("\
23555When enabled, deprecated .gdb_index sections are used anyway.\n\
23556Normally they are ignored either because of a missing feature or\n\
23557performance issue.\n\
23558Warning: This option must be enabled before gdb reads the file."),
23559 NULL,
23560 NULL,
23561 &setlist, &showlist);
23562
96d19272 23563 c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
11570e71 23564 _("\
fc1a9d6e 23565Save a gdb-index file.\n\
11570e71 23566Usage: save gdb-index DIRECTORY"),
96d19272
JK
23567 &save_cmdlist);
23568 set_cmd_completer (c, filename_completer);
f1e6e072
TT
23569
23570 dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
23571 &dwarf2_locexpr_funcs);
23572 dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
23573 &dwarf2_loclist_funcs);
23574
23575 dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
23576 &dwarf2_block_frame_base_locexpr_funcs);
23577 dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
23578 &dwarf2_block_frame_base_loclist_funcs);
6502dd73 23579}
This page took 3.539943 seconds and 4 git commands to generate.