btrace: split record_btrace_step_thread
[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
8d749320 2051 = XOBNEW (&objfile->objfile_obstack, struct dwarf2_per_objfile);
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;
8d749320
SM
2822 dwarf2_per_objfile->all_comp_units =
2823 XOBNEWVEC (&objfile->objfile_obstack, struct dwarf2_per_cu_data *,
2824 dwarf2_per_objfile->n_comp_units);
2ec9a5e0 2825
74a0d9f6
JK
2826 create_cus_from_index_list (objfile, cu_list, cu_list_elements,
2827 &dwarf2_per_objfile->info, 0, 0);
2ec9a5e0
TT
2828
2829 if (dwz_elements == 0)
74a0d9f6 2830 return;
2ec9a5e0
TT
2831
2832 dwz = dwarf2_get_dwz_file ();
74a0d9f6
JK
2833 create_cus_from_index_list (objfile, dwz_list, dwz_elements, &dwz->info, 1,
2834 cu_list_elements / 2);
2ec9a5e0
TT
2835}
2836
1fd400ff 2837/* Create the signatured type hash table from the index. */
673bfd45 2838
74a0d9f6 2839static void
673bfd45 2840create_signatured_type_table_from_index (struct objfile *objfile,
8b70b953 2841 struct dwarf2_section_info *section,
673bfd45
DE
2842 const gdb_byte *bytes,
2843 offset_type elements)
1fd400ff
TT
2844{
2845 offset_type i;
673bfd45 2846 htab_t sig_types_hash;
1fd400ff 2847
6aa5f3a6
DE
2848 dwarf2_per_objfile->n_type_units
2849 = dwarf2_per_objfile->n_allocated_type_units
2850 = elements / 3;
8d749320
SM
2851 dwarf2_per_objfile->all_type_units =
2852 XNEWVEC (struct signatured_type *, dwarf2_per_objfile->n_type_units);
1fd400ff 2853
673bfd45 2854 sig_types_hash = allocate_signatured_type_table (objfile);
1fd400ff
TT
2855
2856 for (i = 0; i < elements; i += 3)
2857 {
52dc124a
DE
2858 struct signatured_type *sig_type;
2859 ULONGEST offset, type_offset_in_tu, signature;
1fd400ff
TT
2860 void **slot;
2861
74a0d9f6
JK
2862 gdb_static_assert (sizeof (ULONGEST) >= 8);
2863 offset = extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
2864 type_offset_in_tu = extract_unsigned_integer (bytes + 8, 8,
2865 BFD_ENDIAN_LITTLE);
1fd400ff
TT
2866 signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
2867 bytes += 3 * 8;
2868
52dc124a 2869 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
1fd400ff 2870 struct signatured_type);
52dc124a 2871 sig_type->signature = signature;
3019eac3
DE
2872 sig_type->type_offset_in_tu.cu_off = type_offset_in_tu;
2873 sig_type->per_cu.is_debug_types = 1;
8a0459fd 2874 sig_type->per_cu.section = section;
52dc124a
DE
2875 sig_type->per_cu.offset.sect_off = offset;
2876 sig_type->per_cu.objfile = objfile;
2877 sig_type->per_cu.v.quick
1fd400ff
TT
2878 = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2879 struct dwarf2_per_cu_quick_data);
2880
52dc124a
DE
2881 slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
2882 *slot = sig_type;
1fd400ff 2883
b4dd5633 2884 dwarf2_per_objfile->all_type_units[i / 3] = sig_type;
1fd400ff
TT
2885 }
2886
673bfd45 2887 dwarf2_per_objfile->signatured_types = sig_types_hash;
1fd400ff
TT
2888}
2889
9291a0cd
TT
2890/* Read the address map data from the mapped index, and use it to
2891 populate the objfile's psymtabs_addrmap. */
2fdf6df6 2892
9291a0cd
TT
2893static void
2894create_addrmap_from_index (struct objfile *objfile, struct mapped_index *index)
2895{
3e29f34a 2896 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9291a0cd
TT
2897 const gdb_byte *iter, *end;
2898 struct obstack temp_obstack;
2899 struct addrmap *mutable_map;
2900 struct cleanup *cleanup;
2901 CORE_ADDR baseaddr;
2902
2903 obstack_init (&temp_obstack);
2904 cleanup = make_cleanup_obstack_free (&temp_obstack);
2905 mutable_map = addrmap_create_mutable (&temp_obstack);
2906
2907 iter = index->address_table;
2908 end = iter + index->address_table_size;
2909
2910 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
2911
2912 while (iter < end)
2913 {
2914 ULONGEST hi, lo, cu_index;
2915 lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2916 iter += 8;
2917 hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2918 iter += 8;
2919 cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
2920 iter += 4;
f652bce2 2921
24a55014 2922 if (lo > hi)
f652bce2 2923 {
24a55014
DE
2924 complaint (&symfile_complaints,
2925 _(".gdb_index address table has invalid range (%s - %s)"),
c0cd8254 2926 hex_string (lo), hex_string (hi));
24a55014 2927 continue;
f652bce2 2928 }
24a55014
DE
2929
2930 if (cu_index >= dwarf2_per_objfile->n_comp_units)
f652bce2
DE
2931 {
2932 complaint (&symfile_complaints,
2933 _(".gdb_index address table has invalid CU number %u"),
2934 (unsigned) cu_index);
24a55014 2935 continue;
f652bce2 2936 }
24a55014 2937
3e29f34a
MR
2938 lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr);
2939 hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr);
2940 addrmap_set_empty (mutable_map, lo, hi - 1, dw2_get_cutu (cu_index));
9291a0cd
TT
2941 }
2942
2943 objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
2944 &objfile->objfile_obstack);
2945 do_cleanups (cleanup);
2946}
2947
59d7bcaf
JK
2948/* The hash function for strings in the mapped index. This is the same as
2949 SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
2950 implementation. This is necessary because the hash function is tied to the
2951 format of the mapped index file. The hash values do not have to match with
559a7a62
JK
2952 SYMBOL_HASH_NEXT.
2953
2954 Use INT_MAX for INDEX_VERSION if you generate the current index format. */
2fdf6df6 2955
9291a0cd 2956static hashval_t
559a7a62 2957mapped_index_string_hash (int index_version, const void *p)
9291a0cd
TT
2958{
2959 const unsigned char *str = (const unsigned char *) p;
2960 hashval_t r = 0;
2961 unsigned char c;
2962
2963 while ((c = *str++) != 0)
559a7a62
JK
2964 {
2965 if (index_version >= 5)
2966 c = tolower (c);
2967 r = r * 67 + c - 113;
2968 }
9291a0cd
TT
2969
2970 return r;
2971}
2972
2973/* Find a slot in the mapped index INDEX for the object named NAME.
2974 If NAME is found, set *VEC_OUT to point to the CU vector in the
2975 constant pool and return 1. If NAME cannot be found, return 0. */
2fdf6df6 2976
9291a0cd
TT
2977static int
2978find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
2979 offset_type **vec_out)
2980{
0cf03b49
JK
2981 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2982 offset_type hash;
9291a0cd 2983 offset_type slot, step;
559a7a62 2984 int (*cmp) (const char *, const char *);
9291a0cd 2985
0cf03b49
JK
2986 if (current_language->la_language == language_cplus
2987 || current_language->la_language == language_java
45280282
IB
2988 || current_language->la_language == language_fortran
2989 || current_language->la_language == language_d)
0cf03b49
JK
2990 {
2991 /* NAME is already canonical. Drop any qualifiers as .gdb_index does
2992 not contain any. */
a8719064 2993
72998fb3 2994 if (strchr (name, '(') != NULL)
0cf03b49 2995 {
72998fb3 2996 char *without_params = cp_remove_params (name);
0cf03b49 2997
72998fb3
DE
2998 if (without_params != NULL)
2999 {
3000 make_cleanup (xfree, without_params);
3001 name = without_params;
3002 }
0cf03b49
JK
3003 }
3004 }
3005
559a7a62 3006 /* Index version 4 did not support case insensitive searches. But the
feea76c2 3007 indices for case insensitive languages are built in lowercase, therefore
559a7a62
JK
3008 simulate our NAME being searched is also lowercased. */
3009 hash = mapped_index_string_hash ((index->version == 4
3010 && case_sensitivity == case_sensitive_off
3011 ? 5 : index->version),
3012 name);
3013
3876f04e
DE
3014 slot = hash & (index->symbol_table_slots - 1);
3015 step = ((hash * 17) & (index->symbol_table_slots - 1)) | 1;
559a7a62 3016 cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
9291a0cd
TT
3017
3018 for (;;)
3019 {
3020 /* Convert a slot number to an offset into the table. */
3021 offset_type i = 2 * slot;
3022 const char *str;
3876f04e 3023 if (index->symbol_table[i] == 0 && index->symbol_table[i + 1] == 0)
0cf03b49
JK
3024 {
3025 do_cleanups (back_to);
3026 return 0;
3027 }
9291a0cd 3028
3876f04e 3029 str = index->constant_pool + MAYBE_SWAP (index->symbol_table[i]);
559a7a62 3030 if (!cmp (name, str))
9291a0cd
TT
3031 {
3032 *vec_out = (offset_type *) (index->constant_pool
3876f04e 3033 + MAYBE_SWAP (index->symbol_table[i + 1]));
0cf03b49 3034 do_cleanups (back_to);
9291a0cd
TT
3035 return 1;
3036 }
3037
3876f04e 3038 slot = (slot + step) & (index->symbol_table_slots - 1);
9291a0cd
TT
3039 }
3040}
3041
2ec9a5e0
TT
3042/* A helper function that reads the .gdb_index from SECTION and fills
3043 in MAP. FILENAME is the name of the file containing the section;
3044 it is used for error reporting. DEPRECATED_OK is nonzero if it is
3045 ok to use deprecated sections.
3046
3047 CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3048 out parameters that are filled in with information about the CU and
3049 TU lists in the section.
3050
3051 Returns 1 if all went well, 0 otherwise. */
2fdf6df6 3052
9291a0cd 3053static int
2ec9a5e0
TT
3054read_index_from_section (struct objfile *objfile,
3055 const char *filename,
3056 int deprecated_ok,
3057 struct dwarf2_section_info *section,
3058 struct mapped_index *map,
3059 const gdb_byte **cu_list,
3060 offset_type *cu_list_elements,
3061 const gdb_byte **types_list,
3062 offset_type *types_list_elements)
9291a0cd 3063{
948f8e3d 3064 const gdb_byte *addr;
2ec9a5e0 3065 offset_type version;
b3b272e1 3066 offset_type *metadata;
1fd400ff 3067 int i;
9291a0cd 3068
2ec9a5e0 3069 if (dwarf2_section_empty_p (section))
9291a0cd 3070 return 0;
82430852
JK
3071
3072 /* Older elfutils strip versions could keep the section in the main
3073 executable while splitting it for the separate debug info file. */
a32a8923 3074 if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
82430852
JK
3075 return 0;
3076
2ec9a5e0 3077 dwarf2_read_section (objfile, section);
9291a0cd 3078
2ec9a5e0 3079 addr = section->buffer;
9291a0cd 3080 /* Version check. */
1fd400ff 3081 version = MAYBE_SWAP (*(offset_type *) addr);
987d643c 3082 /* Versions earlier than 3 emitted every copy of a psymbol. This
a6e293d1 3083 causes the index to behave very poorly for certain requests. Version 3
831adc1f 3084 contained incomplete addrmap. So, it seems better to just ignore such
481860b3 3085 indices. */
831adc1f 3086 if (version < 4)
481860b3
GB
3087 {
3088 static int warning_printed = 0;
3089 if (!warning_printed)
3090 {
3091 warning (_("Skipping obsolete .gdb_index section in %s."),
2ec9a5e0 3092 filename);
481860b3
GB
3093 warning_printed = 1;
3094 }
3095 return 0;
3096 }
3097 /* Index version 4 uses a different hash function than index version
3098 5 and later.
3099
3100 Versions earlier than 6 did not emit psymbols for inlined
3101 functions. Using these files will cause GDB not to be able to
3102 set breakpoints on inlined functions by name, so we ignore these
e615022a
DE
3103 indices unless the user has done
3104 "set use-deprecated-index-sections on". */
2ec9a5e0 3105 if (version < 6 && !deprecated_ok)
481860b3
GB
3106 {
3107 static int warning_printed = 0;
3108 if (!warning_printed)
3109 {
e615022a
DE
3110 warning (_("\
3111Skipping deprecated .gdb_index section in %s.\n\
3112Do \"set use-deprecated-index-sections on\" before the file is read\n\
3113to use the section anyway."),
2ec9a5e0 3114 filename);
481860b3
GB
3115 warning_printed = 1;
3116 }
3117 return 0;
3118 }
796a7ff8 3119 /* Version 7 indices generated by gold refer to the CU for a symbol instead
8943b874
DE
3120 of the TU (for symbols coming from TUs),
3121 http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3122 Plus gold-generated indices can have duplicate entries for global symbols,
3123 http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3124 These are just performance bugs, and we can't distinguish gdb-generated
3125 indices from gold-generated ones, so issue no warning here. */
796a7ff8 3126
481860b3 3127 /* Indexes with higher version than the one supported by GDB may be no
594e8718 3128 longer backward compatible. */
796a7ff8 3129 if (version > 8)
594e8718 3130 return 0;
9291a0cd 3131
559a7a62 3132 map->version = version;
2ec9a5e0 3133 map->total_size = section->size;
9291a0cd
TT
3134
3135 metadata = (offset_type *) (addr + sizeof (offset_type));
1fd400ff
TT
3136
3137 i = 0;
2ec9a5e0
TT
3138 *cu_list = addr + MAYBE_SWAP (metadata[i]);
3139 *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3140 / 8);
1fd400ff
TT
3141 ++i;
3142
2ec9a5e0
TT
3143 *types_list = addr + MAYBE_SWAP (metadata[i]);
3144 *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3145 - MAYBE_SWAP (metadata[i]))
3146 / 8);
987d643c 3147 ++i;
1fd400ff
TT
3148
3149 map->address_table = addr + MAYBE_SWAP (metadata[i]);
3150 map->address_table_size = (MAYBE_SWAP (metadata[i + 1])
3151 - MAYBE_SWAP (metadata[i]));
3152 ++i;
3153
3876f04e
DE
3154 map->symbol_table = (offset_type *) (addr + MAYBE_SWAP (metadata[i]));
3155 map->symbol_table_slots = ((MAYBE_SWAP (metadata[i + 1])
3156 - MAYBE_SWAP (metadata[i]))
3157 / (2 * sizeof (offset_type)));
1fd400ff 3158 ++i;
9291a0cd 3159
f9d83a0b 3160 map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
1fd400ff 3161
2ec9a5e0
TT
3162 return 1;
3163}
3164
3165
3166/* Read the index file. If everything went ok, initialize the "quick"
3167 elements of all the CUs and return 1. Otherwise, return 0. */
3168
3169static int
3170dwarf2_read_index (struct objfile *objfile)
3171{
3172 struct mapped_index local_map, *map;
3173 const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3174 offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
4db1a1dc 3175 struct dwz_file *dwz;
2ec9a5e0 3176
4262abfb 3177 if (!read_index_from_section (objfile, objfile_name (objfile),
2ec9a5e0
TT
3178 use_deprecated_index_sections,
3179 &dwarf2_per_objfile->gdb_index, &local_map,
3180 &cu_list, &cu_list_elements,
3181 &types_list, &types_list_elements))
3182 return 0;
3183
0fefef59 3184 /* Don't use the index if it's empty. */
2ec9a5e0 3185 if (local_map.symbol_table_slots == 0)
0fefef59
DE
3186 return 0;
3187
2ec9a5e0
TT
3188 /* If there is a .dwz file, read it so we can get its CU list as
3189 well. */
4db1a1dc
TT
3190 dwz = dwarf2_get_dwz_file ();
3191 if (dwz != NULL)
2ec9a5e0 3192 {
2ec9a5e0
TT
3193 struct mapped_index dwz_map;
3194 const gdb_byte *dwz_types_ignore;
3195 offset_type dwz_types_elements_ignore;
3196
3197 if (!read_index_from_section (objfile, bfd_get_filename (dwz->dwz_bfd),
3198 1,
3199 &dwz->gdb_index, &dwz_map,
3200 &dwz_list, &dwz_list_elements,
3201 &dwz_types_ignore,
3202 &dwz_types_elements_ignore))
3203 {
3204 warning (_("could not read '.gdb_index' section from %s; skipping"),
3205 bfd_get_filename (dwz->dwz_bfd));
3206 return 0;
3207 }
3208 }
3209
74a0d9f6
JK
3210 create_cus_from_index (objfile, cu_list, cu_list_elements, dwz_list,
3211 dwz_list_elements);
1fd400ff 3212
8b70b953
TT
3213 if (types_list_elements)
3214 {
3215 struct dwarf2_section_info *section;
3216
3217 /* We can only handle a single .debug_types when we have an
3218 index. */
3219 if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3220 return 0;
3221
3222 section = VEC_index (dwarf2_section_info_def,
3223 dwarf2_per_objfile->types, 0);
3224
74a0d9f6
JK
3225 create_signatured_type_table_from_index (objfile, section, types_list,
3226 types_list_elements);
8b70b953 3227 }
9291a0cd 3228
2ec9a5e0
TT
3229 create_addrmap_from_index (objfile, &local_map);
3230
8d749320 3231 map = XOBNEW (&objfile->objfile_obstack, struct mapped_index);
2ec9a5e0 3232 *map = local_map;
9291a0cd
TT
3233
3234 dwarf2_per_objfile->index_table = map;
3235 dwarf2_per_objfile->using_index = 1;
7b9f3c50
DE
3236 dwarf2_per_objfile->quick_file_names_table =
3237 create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
9291a0cd
TT
3238
3239 return 1;
3240}
3241
3242/* A helper for the "quick" functions which sets the global
3243 dwarf2_per_objfile according to OBJFILE. */
2fdf6df6 3244
9291a0cd
TT
3245static void
3246dw2_setup (struct objfile *objfile)
3247{
3248 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
3249 gdb_assert (dwarf2_per_objfile);
3250}
3251
dee91e82 3252/* die_reader_func for dw2_get_file_names. */
2fdf6df6 3253
dee91e82
DE
3254static void
3255dw2_get_file_names_reader (const struct die_reader_specs *reader,
d521ce57 3256 const gdb_byte *info_ptr,
dee91e82
DE
3257 struct die_info *comp_unit_die,
3258 int has_children,
3259 void *data)
9291a0cd 3260{
dee91e82
DE
3261 struct dwarf2_cu *cu = reader->cu;
3262 struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3263 struct objfile *objfile = dwarf2_per_objfile->objfile;
094b34ac 3264 struct dwarf2_per_cu_data *lh_cu;
7b9f3c50 3265 struct line_header *lh;
9291a0cd 3266 struct attribute *attr;
dee91e82 3267 int i;
15d034d0 3268 const char *name, *comp_dir;
7b9f3c50
DE
3269 void **slot;
3270 struct quick_file_names *qfn;
3271 unsigned int line_offset;
9291a0cd 3272
0186c6a7
DE
3273 gdb_assert (! this_cu->is_debug_types);
3274
07261596
TT
3275 /* Our callers never want to match partial units -- instead they
3276 will match the enclosing full CU. */
3277 if (comp_unit_die->tag == DW_TAG_partial_unit)
3278 {
3279 this_cu->v.quick->no_file_data = 1;
3280 return;
3281 }
3282
0186c6a7 3283 lh_cu = this_cu;
7b9f3c50
DE
3284 lh = NULL;
3285 slot = NULL;
3286 line_offset = 0;
dee91e82
DE
3287
3288 attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
9291a0cd
TT
3289 if (attr)
3290 {
7b9f3c50
DE
3291 struct quick_file_names find_entry;
3292
3293 line_offset = DW_UNSND (attr);
3294
3295 /* We may have already read in this line header (TU line header sharing).
3296 If we have we're done. */
094b34ac
DE
3297 find_entry.hash.dwo_unit = cu->dwo_unit;
3298 find_entry.hash.line_offset.sect_off = line_offset;
7b9f3c50
DE
3299 slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3300 &find_entry, INSERT);
3301 if (*slot != NULL)
3302 {
094b34ac 3303 lh_cu->v.quick->file_names = *slot;
dee91e82 3304 return;
7b9f3c50
DE
3305 }
3306
3019eac3 3307 lh = dwarf_decode_line_header (line_offset, cu);
9291a0cd
TT
3308 }
3309 if (lh == NULL)
3310 {
094b34ac 3311 lh_cu->v.quick->no_file_data = 1;
dee91e82 3312 return;
9291a0cd
TT
3313 }
3314
8d749320 3315 qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
094b34ac
DE
3316 qfn->hash.dwo_unit = cu->dwo_unit;
3317 qfn->hash.line_offset.sect_off = line_offset;
7b9f3c50
DE
3318 gdb_assert (slot != NULL);
3319 *slot = qfn;
9291a0cd 3320
dee91e82 3321 find_file_and_directory (comp_unit_die, cu, &name, &comp_dir);
9291a0cd 3322
7b9f3c50 3323 qfn->num_file_names = lh->num_file_names;
8d749320
SM
3324 qfn->file_names =
3325 XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->num_file_names);
9291a0cd 3326 for (i = 0; i < lh->num_file_names; ++i)
7b9f3c50
DE
3327 qfn->file_names[i] = file_full_name (i + 1, lh, comp_dir);
3328 qfn->real_names = NULL;
9291a0cd 3329
7b9f3c50 3330 free_line_header (lh);
7b9f3c50 3331
094b34ac 3332 lh_cu->v.quick->file_names = qfn;
dee91e82
DE
3333}
3334
3335/* A helper for the "quick" functions which attempts to read the line
3336 table for THIS_CU. */
3337
3338static struct quick_file_names *
e4a48d9d 3339dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
dee91e82 3340{
0186c6a7
DE
3341 /* This should never be called for TUs. */
3342 gdb_assert (! this_cu->is_debug_types);
3343 /* Nor type unit groups. */
3344 gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
f4dc4d17 3345
dee91e82
DE
3346 if (this_cu->v.quick->file_names != NULL)
3347 return this_cu->v.quick->file_names;
3348 /* If we know there is no line data, no point in looking again. */
3349 if (this_cu->v.quick->no_file_data)
3350 return NULL;
3351
0186c6a7 3352 init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
dee91e82
DE
3353
3354 if (this_cu->v.quick->no_file_data)
3355 return NULL;
3356 return this_cu->v.quick->file_names;
9291a0cd
TT
3357}
3358
3359/* A helper for the "quick" functions which computes and caches the
7b9f3c50 3360 real path for a given file name from the line table. */
2fdf6df6 3361
9291a0cd 3362static const char *
7b9f3c50
DE
3363dw2_get_real_path (struct objfile *objfile,
3364 struct quick_file_names *qfn, int index)
9291a0cd 3365{
7b9f3c50
DE
3366 if (qfn->real_names == NULL)
3367 qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
26f2dc30 3368 qfn->num_file_names, const char *);
9291a0cd 3369
7b9f3c50
DE
3370 if (qfn->real_names[index] == NULL)
3371 qfn->real_names[index] = gdb_realpath (qfn->file_names[index]);
9291a0cd 3372
7b9f3c50 3373 return qfn->real_names[index];
9291a0cd
TT
3374}
3375
3376static struct symtab *
3377dw2_find_last_source_symtab (struct objfile *objfile)
3378{
43f3e411 3379 struct compunit_symtab *cust;
9291a0cd 3380 int index;
ae2de4f8 3381
9291a0cd
TT
3382 dw2_setup (objfile);
3383 index = dwarf2_per_objfile->n_comp_units - 1;
43f3e411
DE
3384 cust = dw2_instantiate_symtab (dw2_get_cutu (index));
3385 if (cust == NULL)
3386 return NULL;
3387 return compunit_primary_filetab (cust);
9291a0cd
TT
3388}
3389
7b9f3c50
DE
3390/* Traversal function for dw2_forget_cached_source_info. */
3391
3392static int
3393dw2_free_cached_file_names (void **slot, void *info)
9291a0cd 3394{
7b9f3c50 3395 struct quick_file_names *file_data = (struct quick_file_names *) *slot;
9291a0cd 3396
7b9f3c50 3397 if (file_data->real_names)
9291a0cd 3398 {
7b9f3c50 3399 int i;
9291a0cd 3400
7b9f3c50 3401 for (i = 0; i < file_data->num_file_names; ++i)
9291a0cd 3402 {
7b9f3c50
DE
3403 xfree ((void*) file_data->real_names[i]);
3404 file_data->real_names[i] = NULL;
9291a0cd
TT
3405 }
3406 }
7b9f3c50
DE
3407
3408 return 1;
3409}
3410
3411static void
3412dw2_forget_cached_source_info (struct objfile *objfile)
3413{
3414 dw2_setup (objfile);
3415
3416 htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3417 dw2_free_cached_file_names, NULL);
9291a0cd
TT
3418}
3419
f8eba3c6
TT
3420/* Helper function for dw2_map_symtabs_matching_filename that expands
3421 the symtabs and calls the iterator. */
3422
3423static int
3424dw2_map_expand_apply (struct objfile *objfile,
3425 struct dwarf2_per_cu_data *per_cu,
f5b95b50 3426 const char *name, const char *real_path,
f8eba3c6
TT
3427 int (*callback) (struct symtab *, void *),
3428 void *data)
3429{
43f3e411 3430 struct compunit_symtab *last_made = objfile->compunit_symtabs;
f8eba3c6
TT
3431
3432 /* Don't visit already-expanded CUs. */
43f3e411 3433 if (per_cu->v.quick->compunit_symtab)
f8eba3c6
TT
3434 return 0;
3435
3436 /* This may expand more than one symtab, and we want to iterate over
3437 all of them. */
a0f42c21 3438 dw2_instantiate_symtab (per_cu);
f8eba3c6 3439
f5b95b50 3440 return iterate_over_some_symtabs (name, real_path, callback, data,
43f3e411 3441 objfile->compunit_symtabs, last_made);
f8eba3c6
TT
3442}
3443
3444/* Implementation of the map_symtabs_matching_filename method. */
3445
9291a0cd 3446static int
f8eba3c6 3447dw2_map_symtabs_matching_filename (struct objfile *objfile, const char *name,
f5b95b50 3448 const char *real_path,
f8eba3c6
TT
3449 int (*callback) (struct symtab *, void *),
3450 void *data)
9291a0cd
TT
3451{
3452 int i;
c011a4f4 3453 const char *name_basename = lbasename (name);
9291a0cd
TT
3454
3455 dw2_setup (objfile);
ae2de4f8 3456
848e3e78
DE
3457 /* The rule is CUs specify all the files, including those used by
3458 any TU, so there's no need to scan TUs here. */
f4dc4d17 3459
848e3e78 3460 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
3461 {
3462 int j;
8832e7e3 3463 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
7b9f3c50 3464 struct quick_file_names *file_data;
9291a0cd 3465
3d7bb9d9 3466 /* We only need to look at symtabs not already expanded. */
43f3e411 3467 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3468 continue;
3469
e4a48d9d 3470 file_data = dw2_get_file_names (per_cu);
7b9f3c50 3471 if (file_data == NULL)
9291a0cd
TT
3472 continue;
3473
7b9f3c50 3474 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 3475 {
7b9f3c50 3476 const char *this_name = file_data->file_names[j];
da235a7c 3477 const char *this_real_name;
9291a0cd 3478
af529f8f 3479 if (compare_filenames_for_search (this_name, name))
9291a0cd 3480 {
f5b95b50 3481 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
f8eba3c6
TT
3482 callback, data))
3483 return 1;
288e77a7 3484 continue;
4aac40c8 3485 }
9291a0cd 3486
c011a4f4
DE
3487 /* Before we invoke realpath, which can get expensive when many
3488 files are involved, do a quick comparison of the basenames. */
3489 if (! basenames_may_differ
3490 && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3491 continue;
3492
da235a7c
JK
3493 this_real_name = dw2_get_real_path (objfile, file_data, j);
3494 if (compare_filenames_for_search (this_real_name, name))
9291a0cd 3495 {
da235a7c
JK
3496 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3497 callback, data))
3498 return 1;
288e77a7 3499 continue;
da235a7c 3500 }
9291a0cd 3501
da235a7c
JK
3502 if (real_path != NULL)
3503 {
af529f8f
JK
3504 gdb_assert (IS_ABSOLUTE_PATH (real_path));
3505 gdb_assert (IS_ABSOLUTE_PATH (name));
7b9f3c50 3506 if (this_real_name != NULL
af529f8f 3507 && FILENAME_CMP (real_path, this_real_name) == 0)
9291a0cd 3508 {
f5b95b50 3509 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
f8eba3c6
TT
3510 callback, data))
3511 return 1;
288e77a7 3512 continue;
9291a0cd
TT
3513 }
3514 }
3515 }
3516 }
3517
9291a0cd
TT
3518 return 0;
3519}
3520
da51c347
DE
3521/* Struct used to manage iterating over all CUs looking for a symbol. */
3522
3523struct dw2_symtab_iterator
9291a0cd 3524{
da51c347
DE
3525 /* The internalized form of .gdb_index. */
3526 struct mapped_index *index;
3527 /* If non-zero, only look for symbols that match BLOCK_INDEX. */
3528 int want_specific_block;
3529 /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3530 Unused if !WANT_SPECIFIC_BLOCK. */
3531 int block_index;
3532 /* The kind of symbol we're looking for. */
3533 domain_enum domain;
3534 /* The list of CUs from the index entry of the symbol,
3535 or NULL if not found. */
3536 offset_type *vec;
3537 /* The next element in VEC to look at. */
3538 int next;
3539 /* The number of elements in VEC, or zero if there is no match. */
3540 int length;
8943b874
DE
3541 /* Have we seen a global version of the symbol?
3542 If so we can ignore all further global instances.
3543 This is to work around gold/15646, inefficient gold-generated
3544 indices. */
3545 int global_seen;
da51c347 3546};
9291a0cd 3547
da51c347
DE
3548/* Initialize the index symtab iterator ITER.
3549 If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3550 in block BLOCK_INDEX. Otherwise BLOCK_INDEX is ignored. */
2fdf6df6 3551
9291a0cd 3552static void
da51c347
DE
3553dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3554 struct mapped_index *index,
3555 int want_specific_block,
3556 int block_index,
3557 domain_enum domain,
3558 const char *name)
3559{
3560 iter->index = index;
3561 iter->want_specific_block = want_specific_block;
3562 iter->block_index = block_index;
3563 iter->domain = domain;
3564 iter->next = 0;
8943b874 3565 iter->global_seen = 0;
da51c347
DE
3566
3567 if (find_slot_in_mapped_hash (index, name, &iter->vec))
3568 iter->length = MAYBE_SWAP (*iter->vec);
3569 else
3570 {
3571 iter->vec = NULL;
3572 iter->length = 0;
3573 }
3574}
3575
3576/* Return the next matching CU or NULL if there are no more. */
3577
3578static struct dwarf2_per_cu_data *
3579dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3580{
3581 for ( ; iter->next < iter->length; ++iter->next)
3582 {
3583 offset_type cu_index_and_attrs =
3584 MAYBE_SWAP (iter->vec[iter->next + 1]);
3585 offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3190f0c6 3586 struct dwarf2_per_cu_data *per_cu;
da51c347
DE
3587 int want_static = iter->block_index != GLOBAL_BLOCK;
3588 /* This value is only valid for index versions >= 7. */
3589 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3590 gdb_index_symbol_kind symbol_kind =
3591 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3592 /* Only check the symbol attributes if they're present.
3593 Indices prior to version 7 don't record them,
3594 and indices >= 7 may elide them for certain symbols
3595 (gold does this). */
3596 int attrs_valid =
3597 (iter->index->version >= 7
3598 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3599
3190f0c6
DE
3600 /* Don't crash on bad data. */
3601 if (cu_index >= (dwarf2_per_objfile->n_comp_units
3602 + dwarf2_per_objfile->n_type_units))
3603 {
3604 complaint (&symfile_complaints,
3605 _(".gdb_index entry has bad CU index"
4262abfb
JK
3606 " [in module %s]"),
3607 objfile_name (dwarf2_per_objfile->objfile));
3190f0c6
DE
3608 continue;
3609 }
3610
8832e7e3 3611 per_cu = dw2_get_cutu (cu_index);
3190f0c6 3612
da51c347 3613 /* Skip if already read in. */
43f3e411 3614 if (per_cu->v.quick->compunit_symtab)
da51c347
DE
3615 continue;
3616
8943b874
DE
3617 /* Check static vs global. */
3618 if (attrs_valid)
3619 {
3620 if (iter->want_specific_block
3621 && want_static != is_static)
3622 continue;
3623 /* Work around gold/15646. */
3624 if (!is_static && iter->global_seen)
3625 continue;
3626 if (!is_static)
3627 iter->global_seen = 1;
3628 }
da51c347
DE
3629
3630 /* Only check the symbol's kind if it has one. */
3631 if (attrs_valid)
3632 {
3633 switch (iter->domain)
3634 {
3635 case VAR_DOMAIN:
3636 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
3637 && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
3638 /* Some types are also in VAR_DOMAIN. */
3639 && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3640 continue;
3641 break;
3642 case STRUCT_DOMAIN:
3643 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3644 continue;
3645 break;
3646 case LABEL_DOMAIN:
3647 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3648 continue;
3649 break;
3650 default:
3651 break;
3652 }
3653 }
3654
3655 ++iter->next;
3656 return per_cu;
3657 }
3658
3659 return NULL;
3660}
3661
43f3e411 3662static struct compunit_symtab *
da51c347
DE
3663dw2_lookup_symbol (struct objfile *objfile, int block_index,
3664 const char *name, domain_enum domain)
9291a0cd 3665{
43f3e411 3666 struct compunit_symtab *stab_best = NULL;
156942c7
DE
3667 struct mapped_index *index;
3668
9291a0cd
TT
3669 dw2_setup (objfile);
3670
156942c7
DE
3671 index = dwarf2_per_objfile->index_table;
3672
da51c347 3673 /* index is NULL if OBJF_READNOW. */
156942c7 3674 if (index)
9291a0cd 3675 {
da51c347
DE
3676 struct dw2_symtab_iterator iter;
3677 struct dwarf2_per_cu_data *per_cu;
3678
3679 dw2_symtab_iter_init (&iter, index, 1, block_index, domain, name);
9291a0cd 3680
da51c347 3681 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
9291a0cd 3682 {
b2e2f908 3683 struct symbol *sym, *with_opaque = NULL;
43f3e411
DE
3684 struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu);
3685 const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
f194fefb 3686 struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
da51c347 3687
b2e2f908
DE
3688 sym = block_find_symbol (block, name, domain,
3689 block_find_non_opaque_type_preferred,
3690 &with_opaque);
3691
da51c347
DE
3692 /* Some caution must be observed with overloaded functions
3693 and methods, since the index will not contain any overload
3694 information (but NAME might contain it). */
da51c347 3695
b2e2f908
DE
3696 if (sym != NULL
3697 && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
3698 return stab;
3699 if (with_opaque != NULL
3700 && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
3701 stab_best = stab;
da51c347
DE
3702
3703 /* Keep looking through other CUs. */
9291a0cd
TT
3704 }
3705 }
9291a0cd 3706
da51c347 3707 return stab_best;
9291a0cd
TT
3708}
3709
3710static void
3711dw2_print_stats (struct objfile *objfile)
3712{
e4a48d9d 3713 int i, total, count;
9291a0cd
TT
3714
3715 dw2_setup (objfile);
e4a48d9d 3716 total = dwarf2_per_objfile->n_comp_units + dwarf2_per_objfile->n_type_units;
9291a0cd 3717 count = 0;
e4a48d9d 3718 for (i = 0; i < total; ++i)
9291a0cd 3719 {
8832e7e3 3720 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 3721
43f3e411 3722 if (!per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3723 ++count;
3724 }
e4a48d9d 3725 printf_filtered (_(" Number of read CUs: %d\n"), total - count);
9291a0cd
TT
3726 printf_filtered (_(" Number of unread CUs: %d\n"), count);
3727}
3728
779bd270
DE
3729/* This dumps minimal information about the index.
3730 It is called via "mt print objfiles".
3731 One use is to verify .gdb_index has been loaded by the
3732 gdb.dwarf2/gdb-index.exp testcase. */
3733
9291a0cd
TT
3734static void
3735dw2_dump (struct objfile *objfile)
3736{
779bd270
DE
3737 dw2_setup (objfile);
3738 gdb_assert (dwarf2_per_objfile->using_index);
3739 printf_filtered (".gdb_index:");
3740 if (dwarf2_per_objfile->index_table != NULL)
3741 {
3742 printf_filtered (" version %d\n",
3743 dwarf2_per_objfile->index_table->version);
3744 }
3745 else
3746 printf_filtered (" faked for \"readnow\"\n");
3747 printf_filtered ("\n");
9291a0cd
TT
3748}
3749
3750static void
3189cb12
DE
3751dw2_relocate (struct objfile *objfile,
3752 const struct section_offsets *new_offsets,
3753 const struct section_offsets *delta)
9291a0cd
TT
3754{
3755 /* There's nothing to relocate here. */
3756}
3757
3758static void
3759dw2_expand_symtabs_for_function (struct objfile *objfile,
3760 const char *func_name)
3761{
da51c347
DE
3762 struct mapped_index *index;
3763
3764 dw2_setup (objfile);
3765
3766 index = dwarf2_per_objfile->index_table;
3767
3768 /* index is NULL if OBJF_READNOW. */
3769 if (index)
3770 {
3771 struct dw2_symtab_iterator iter;
3772 struct dwarf2_per_cu_data *per_cu;
3773
3774 /* Note: It doesn't matter what we pass for block_index here. */
3775 dw2_symtab_iter_init (&iter, index, 0, GLOBAL_BLOCK, VAR_DOMAIN,
3776 func_name);
3777
3778 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3779 dw2_instantiate_symtab (per_cu);
3780 }
9291a0cd
TT
3781}
3782
3783static void
3784dw2_expand_all_symtabs (struct objfile *objfile)
3785{
3786 int i;
3787
3788 dw2_setup (objfile);
1fd400ff
TT
3789
3790 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
d467dd73 3791 + dwarf2_per_objfile->n_type_units); ++i)
9291a0cd 3792 {
8832e7e3 3793 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 3794
a0f42c21 3795 dw2_instantiate_symtab (per_cu);
9291a0cd
TT
3796 }
3797}
3798
3799static void
652a8996
JK
3800dw2_expand_symtabs_with_fullname (struct objfile *objfile,
3801 const char *fullname)
9291a0cd
TT
3802{
3803 int i;
3804
3805 dw2_setup (objfile);
d4637a04
DE
3806
3807 /* We don't need to consider type units here.
3808 This is only called for examining code, e.g. expand_line_sal.
3809 There can be an order of magnitude (or more) more type units
3810 than comp units, and we avoid them if we can. */
3811
3812 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
3813 {
3814 int j;
8832e7e3 3815 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
7b9f3c50 3816 struct quick_file_names *file_data;
9291a0cd 3817
3d7bb9d9 3818 /* We only need to look at symtabs not already expanded. */
43f3e411 3819 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3820 continue;
3821
e4a48d9d 3822 file_data = dw2_get_file_names (per_cu);
7b9f3c50 3823 if (file_data == NULL)
9291a0cd
TT
3824 continue;
3825
7b9f3c50 3826 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 3827 {
652a8996
JK
3828 const char *this_fullname = file_data->file_names[j];
3829
3830 if (filename_cmp (this_fullname, fullname) == 0)
9291a0cd 3831 {
a0f42c21 3832 dw2_instantiate_symtab (per_cu);
9291a0cd
TT
3833 break;
3834 }
3835 }
3836 }
3837}
3838
9291a0cd 3839static void
ade7ed9e 3840dw2_map_matching_symbols (struct objfile *objfile,
fe978cb0 3841 const char * name, domain_enum domain,
ade7ed9e 3842 int global,
40658b94
PH
3843 int (*callback) (struct block *,
3844 struct symbol *, void *),
2edb89d3
JK
3845 void *data, symbol_compare_ftype *match,
3846 symbol_compare_ftype *ordered_compare)
9291a0cd 3847{
40658b94 3848 /* Currently unimplemented; used for Ada. The function can be called if the
a9e6a4bb
JK
3849 current language is Ada for a non-Ada objfile using GNU index. As Ada
3850 does not look for non-Ada symbols this function should just return. */
9291a0cd
TT
3851}
3852
3853static void
f8eba3c6
TT
3854dw2_expand_symtabs_matching
3855 (struct objfile *objfile,
206f2a57
DE
3856 expand_symtabs_file_matcher_ftype *file_matcher,
3857 expand_symtabs_symbol_matcher_ftype *symbol_matcher,
276d885b 3858 expand_symtabs_exp_notify_ftype *expansion_notify,
f8eba3c6
TT
3859 enum search_domain kind,
3860 void *data)
9291a0cd
TT
3861{
3862 int i;
3863 offset_type iter;
4b5246aa 3864 struct mapped_index *index;
9291a0cd
TT
3865
3866 dw2_setup (objfile);
ae2de4f8
DE
3867
3868 /* index_table is NULL if OBJF_READNOW. */
9291a0cd
TT
3869 if (!dwarf2_per_objfile->index_table)
3870 return;
4b5246aa 3871 index = dwarf2_per_objfile->index_table;
9291a0cd 3872
7b08b9eb 3873 if (file_matcher != NULL)
24c79950
TT
3874 {
3875 struct cleanup *cleanup;
3876 htab_t visited_found, visited_not_found;
3877
3878 visited_found = htab_create_alloc (10,
3879 htab_hash_pointer, htab_eq_pointer,
3880 NULL, xcalloc, xfree);
3881 cleanup = make_cleanup_htab_delete (visited_found);
3882 visited_not_found = htab_create_alloc (10,
3883 htab_hash_pointer, htab_eq_pointer,
3884 NULL, xcalloc, xfree);
3885 make_cleanup_htab_delete (visited_not_found);
3886
848e3e78
DE
3887 /* The rule is CUs specify all the files, including those used by
3888 any TU, so there's no need to scan TUs here. */
3889
3890 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
24c79950
TT
3891 {
3892 int j;
8832e7e3 3893 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
24c79950
TT
3894 struct quick_file_names *file_data;
3895 void **slot;
7b08b9eb 3896
61d96d7e
DE
3897 QUIT;
3898
24c79950 3899 per_cu->v.quick->mark = 0;
3d7bb9d9 3900
24c79950 3901 /* We only need to look at symtabs not already expanded. */
43f3e411 3902 if (per_cu->v.quick->compunit_symtab)
24c79950 3903 continue;
7b08b9eb 3904
e4a48d9d 3905 file_data = dw2_get_file_names (per_cu);
24c79950
TT
3906 if (file_data == NULL)
3907 continue;
7b08b9eb 3908
24c79950
TT
3909 if (htab_find (visited_not_found, file_data) != NULL)
3910 continue;
3911 else if (htab_find (visited_found, file_data) != NULL)
3912 {
3913 per_cu->v.quick->mark = 1;
3914 continue;
3915 }
3916
3917 for (j = 0; j < file_data->num_file_names; ++j)
3918 {
da235a7c
JK
3919 const char *this_real_name;
3920
fbd9ab74 3921 if (file_matcher (file_data->file_names[j], data, 0))
24c79950
TT
3922 {
3923 per_cu->v.quick->mark = 1;
3924 break;
3925 }
da235a7c
JK
3926
3927 /* Before we invoke realpath, which can get expensive when many
3928 files are involved, do a quick comparison of the basenames. */
3929 if (!basenames_may_differ
3930 && !file_matcher (lbasename (file_data->file_names[j]),
3931 data, 1))
3932 continue;
3933
3934 this_real_name = dw2_get_real_path (objfile, file_data, j);
3935 if (file_matcher (this_real_name, data, 0))
3936 {
3937 per_cu->v.quick->mark = 1;
3938 break;
3939 }
24c79950
TT
3940 }
3941
3942 slot = htab_find_slot (per_cu->v.quick->mark
3943 ? visited_found
3944 : visited_not_found,
3945 file_data, INSERT);
3946 *slot = file_data;
3947 }
3948
3949 do_cleanups (cleanup);
3950 }
9291a0cd 3951
3876f04e 3952 for (iter = 0; iter < index->symbol_table_slots; ++iter)
9291a0cd
TT
3953 {
3954 offset_type idx = 2 * iter;
3955 const char *name;
3956 offset_type *vec, vec_len, vec_idx;
8943b874 3957 int global_seen = 0;
9291a0cd 3958
61d96d7e
DE
3959 QUIT;
3960
3876f04e 3961 if (index->symbol_table[idx] == 0 && index->symbol_table[idx + 1] == 0)
9291a0cd
TT
3962 continue;
3963
3876f04e 3964 name = index->constant_pool + MAYBE_SWAP (index->symbol_table[idx]);
9291a0cd 3965
206f2a57 3966 if (! (*symbol_matcher) (name, data))
9291a0cd
TT
3967 continue;
3968
3969 /* The name was matched, now expand corresponding CUs that were
3970 marked. */
4b5246aa 3971 vec = (offset_type *) (index->constant_pool
3876f04e 3972 + MAYBE_SWAP (index->symbol_table[idx + 1]));
9291a0cd
TT
3973 vec_len = MAYBE_SWAP (vec[0]);
3974 for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
3975 {
e254ef6a 3976 struct dwarf2_per_cu_data *per_cu;
156942c7 3977 offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
8943b874
DE
3978 /* This value is only valid for index versions >= 7. */
3979 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
156942c7
DE
3980 gdb_index_symbol_kind symbol_kind =
3981 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3982 int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3190f0c6
DE
3983 /* Only check the symbol attributes if they're present.
3984 Indices prior to version 7 don't record them,
3985 and indices >= 7 may elide them for certain symbols
3986 (gold does this). */
3987 int attrs_valid =
3988 (index->version >= 7
3989 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3990
8943b874
DE
3991 /* Work around gold/15646. */
3992 if (attrs_valid)
3993 {
3994 if (!is_static && global_seen)
3995 continue;
3996 if (!is_static)
3997 global_seen = 1;
3998 }
3999
3190f0c6
DE
4000 /* Only check the symbol's kind if it has one. */
4001 if (attrs_valid)
156942c7
DE
4002 {
4003 switch (kind)
4004 {
4005 case VARIABLES_DOMAIN:
4006 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
4007 continue;
4008 break;
4009 case FUNCTIONS_DOMAIN:
4010 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
4011 continue;
4012 break;
4013 case TYPES_DOMAIN:
4014 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4015 continue;
4016 break;
4017 default:
4018 break;
4019 }
4020 }
4021
3190f0c6
DE
4022 /* Don't crash on bad data. */
4023 if (cu_index >= (dwarf2_per_objfile->n_comp_units
4024 + dwarf2_per_objfile->n_type_units))
4025 {
4026 complaint (&symfile_complaints,
4027 _(".gdb_index entry has bad CU index"
4262abfb 4028 " [in module %s]"), objfile_name (objfile));
3190f0c6
DE
4029 continue;
4030 }
4031
8832e7e3 4032 per_cu = dw2_get_cutu (cu_index);
7b08b9eb 4033 if (file_matcher == NULL || per_cu->v.quick->mark)
276d885b
GB
4034 {
4035 int symtab_was_null =
4036 (per_cu->v.quick->compunit_symtab == NULL);
4037
4038 dw2_instantiate_symtab (per_cu);
4039
4040 if (expansion_notify != NULL
4041 && symtab_was_null
4042 && per_cu->v.quick->compunit_symtab != NULL)
4043 {
4044 expansion_notify (per_cu->v.quick->compunit_symtab,
4045 data);
4046 }
4047 }
9291a0cd
TT
4048 }
4049 }
4050}
4051
43f3e411 4052/* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
9703b513
TT
4053 symtab. */
4054
43f3e411
DE
4055static struct compunit_symtab *
4056recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
4057 CORE_ADDR pc)
9703b513
TT
4058{
4059 int i;
4060
43f3e411
DE
4061 if (COMPUNIT_BLOCKVECTOR (cust) != NULL
4062 && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
4063 return cust;
9703b513 4064
43f3e411 4065 if (cust->includes == NULL)
a3ec0bb1
DE
4066 return NULL;
4067
43f3e411 4068 for (i = 0; cust->includes[i]; ++i)
9703b513 4069 {
43f3e411 4070 struct compunit_symtab *s = cust->includes[i];
9703b513 4071
43f3e411 4072 s = recursively_find_pc_sect_compunit_symtab (s, pc);
9703b513
TT
4073 if (s != NULL)
4074 return s;
4075 }
4076
4077 return NULL;
4078}
4079
43f3e411
DE
4080static struct compunit_symtab *
4081dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
4082 struct bound_minimal_symbol msymbol,
4083 CORE_ADDR pc,
4084 struct obj_section *section,
4085 int warn_if_readin)
9291a0cd
TT
4086{
4087 struct dwarf2_per_cu_data *data;
43f3e411 4088 struct compunit_symtab *result;
9291a0cd
TT
4089
4090 dw2_setup (objfile);
4091
4092 if (!objfile->psymtabs_addrmap)
4093 return NULL;
4094
4095 data = addrmap_find (objfile->psymtabs_addrmap, pc);
4096 if (!data)
4097 return NULL;
4098
43f3e411 4099 if (warn_if_readin && data->v.quick->compunit_symtab)
abebb8b0 4100 warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
9291a0cd
TT
4101 paddress (get_objfile_arch (objfile), pc));
4102
43f3e411
DE
4103 result
4104 = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data),
4105 pc);
9703b513
TT
4106 gdb_assert (result != NULL);
4107 return result;
9291a0cd
TT
4108}
4109
9291a0cd 4110static void
44b13c5a 4111dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
74e2f255 4112 void *data, int need_fullname)
9291a0cd
TT
4113{
4114 int i;
24c79950
TT
4115 struct cleanup *cleanup;
4116 htab_t visited = htab_create_alloc (10, htab_hash_pointer, htab_eq_pointer,
4117 NULL, xcalloc, xfree);
9291a0cd 4118
24c79950 4119 cleanup = make_cleanup_htab_delete (visited);
9291a0cd 4120 dw2_setup (objfile);
ae2de4f8 4121
848e3e78
DE
4122 /* The rule is CUs specify all the files, including those used by
4123 any TU, so there's no need to scan TUs here.
4124 We can ignore file names coming from already-expanded CUs. */
f4dc4d17 4125
848e3e78 4126 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
24c79950 4127 {
8832e7e3 4128 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
24c79950 4129
43f3e411 4130 if (per_cu->v.quick->compunit_symtab)
24c79950
TT
4131 {
4132 void **slot = htab_find_slot (visited, per_cu->v.quick->file_names,
4133 INSERT);
4134
4135 *slot = per_cu->v.quick->file_names;
4136 }
4137 }
4138
848e3e78 4139 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
4140 {
4141 int j;
8832e7e3 4142 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
7b9f3c50 4143 struct quick_file_names *file_data;
24c79950 4144 void **slot;
9291a0cd 4145
3d7bb9d9 4146 /* We only need to look at symtabs not already expanded. */
43f3e411 4147 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
4148 continue;
4149
e4a48d9d 4150 file_data = dw2_get_file_names (per_cu);
7b9f3c50 4151 if (file_data == NULL)
9291a0cd
TT
4152 continue;
4153
24c79950
TT
4154 slot = htab_find_slot (visited, file_data, INSERT);
4155 if (*slot)
4156 {
4157 /* Already visited. */
4158 continue;
4159 }
4160 *slot = file_data;
4161
7b9f3c50 4162 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 4163 {
74e2f255
DE
4164 const char *this_real_name;
4165
4166 if (need_fullname)
4167 this_real_name = dw2_get_real_path (objfile, file_data, j);
4168 else
4169 this_real_name = NULL;
7b9f3c50 4170 (*fun) (file_data->file_names[j], this_real_name, data);
9291a0cd
TT
4171 }
4172 }
24c79950
TT
4173
4174 do_cleanups (cleanup);
9291a0cd
TT
4175}
4176
4177static int
4178dw2_has_symbols (struct objfile *objfile)
4179{
4180 return 1;
4181}
4182
4183const struct quick_symbol_functions dwarf2_gdb_index_functions =
4184{
4185 dw2_has_symbols,
4186 dw2_find_last_source_symtab,
4187 dw2_forget_cached_source_info,
f8eba3c6 4188 dw2_map_symtabs_matching_filename,
9291a0cd 4189 dw2_lookup_symbol,
9291a0cd
TT
4190 dw2_print_stats,
4191 dw2_dump,
4192 dw2_relocate,
4193 dw2_expand_symtabs_for_function,
4194 dw2_expand_all_symtabs,
652a8996 4195 dw2_expand_symtabs_with_fullname,
40658b94 4196 dw2_map_matching_symbols,
9291a0cd 4197 dw2_expand_symtabs_matching,
43f3e411 4198 dw2_find_pc_sect_compunit_symtab,
9291a0cd
TT
4199 dw2_map_symbol_filenames
4200};
4201
4202/* Initialize for reading DWARF for this objfile. Return 0 if this
4203 file will use psymtabs, or 1 if using the GNU index. */
4204
4205int
4206dwarf2_initialize_objfile (struct objfile *objfile)
4207{
4208 /* If we're about to read full symbols, don't bother with the
4209 indices. In this case we also don't care if some other debug
4210 format is making psymtabs, because they are all about to be
4211 expanded anyway. */
4212 if ((objfile->flags & OBJF_READNOW))
4213 {
4214 int i;
4215
4216 dwarf2_per_objfile->using_index = 1;
4217 create_all_comp_units (objfile);
0e50663e 4218 create_all_type_units (objfile);
7b9f3c50
DE
4219 dwarf2_per_objfile->quick_file_names_table =
4220 create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
9291a0cd 4221
1fd400ff 4222 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
d467dd73 4223 + dwarf2_per_objfile->n_type_units); ++i)
9291a0cd 4224 {
8832e7e3 4225 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 4226
e254ef6a
DE
4227 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4228 struct dwarf2_per_cu_quick_data);
9291a0cd
TT
4229 }
4230
4231 /* Return 1 so that gdb sees the "quick" functions. However,
4232 these functions will be no-ops because we will have expanded
4233 all symtabs. */
4234 return 1;
4235 }
4236
4237 if (dwarf2_read_index (objfile))
4238 return 1;
4239
9291a0cd
TT
4240 return 0;
4241}
4242
4243\f
4244
dce234bc
PP
4245/* Build a partial symbol table. */
4246
4247void
f29dff0a 4248dwarf2_build_psymtabs (struct objfile *objfile)
dce234bc 4249{
c9bf0622 4250
f29dff0a 4251 if (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0)
c906108c
SS
4252 {
4253 init_psymbol_list (objfile, 1024);
4254 }
4255
492d29ea 4256 TRY
c9bf0622
TT
4257 {
4258 /* This isn't really ideal: all the data we allocate on the
4259 objfile's obstack is still uselessly kept around. However,
4260 freeing it seems unsafe. */
4261 struct cleanup *cleanups = make_cleanup_discard_psymtabs (objfile);
4262
4263 dwarf2_build_psymtabs_hard (objfile);
4264 discard_cleanups (cleanups);
4265 }
492d29ea
PA
4266 CATCH (except, RETURN_MASK_ERROR)
4267 {
4268 exception_print (gdb_stderr, except);
4269 }
4270 END_CATCH
c906108c 4271}
c906108c 4272
1ce1cefd
DE
4273/* Return the total length of the CU described by HEADER. */
4274
4275static unsigned int
4276get_cu_length (const struct comp_unit_head *header)
4277{
4278 return header->initial_length_size + header->length;
4279}
4280
45452591
DE
4281/* Return TRUE if OFFSET is within CU_HEADER. */
4282
4283static inline int
b64f50a1 4284offset_in_cu_p (const struct comp_unit_head *cu_header, sect_offset offset)
45452591 4285{
b64f50a1 4286 sect_offset bottom = { cu_header->offset.sect_off };
1ce1cefd 4287 sect_offset top = { cu_header->offset.sect_off + get_cu_length (cu_header) };
9a619af0 4288
b64f50a1 4289 return (offset.sect_off >= bottom.sect_off && offset.sect_off < top.sect_off);
45452591
DE
4290}
4291
3b80fe9b
DE
4292/* Find the base address of the compilation unit for range lists and
4293 location lists. It will normally be specified by DW_AT_low_pc.
4294 In DWARF-3 draft 4, the base address could be overridden by
4295 DW_AT_entry_pc. It's been removed, but GCC still uses this for
4296 compilation units with discontinuous ranges. */
4297
4298static void
4299dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
4300{
4301 struct attribute *attr;
4302
4303 cu->base_known = 0;
4304 cu->base_address = 0;
4305
4306 attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
4307 if (attr)
4308 {
31aa7e4e 4309 cu->base_address = attr_value_as_address (attr);
3b80fe9b
DE
4310 cu->base_known = 1;
4311 }
4312 else
4313 {
4314 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
4315 if (attr)
4316 {
31aa7e4e 4317 cu->base_address = attr_value_as_address (attr);
3b80fe9b
DE
4318 cu->base_known = 1;
4319 }
4320 }
4321}
4322
93311388
DE
4323/* Read in the comp unit header information from the debug_info at info_ptr.
4324 NOTE: This leaves members offset, first_die_offset to be filled in
4325 by the caller. */
107d2387 4326
d521ce57 4327static const gdb_byte *
107d2387 4328read_comp_unit_head (struct comp_unit_head *cu_header,
d521ce57 4329 const gdb_byte *info_ptr, bfd *abfd)
107d2387
AC
4330{
4331 int signed_addr;
891d2f0b 4332 unsigned int bytes_read;
c764a876
DE
4333
4334 cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
4335 cu_header->initial_length_size = bytes_read;
4336 cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
613e1657 4337 info_ptr += bytes_read;
107d2387
AC
4338 cu_header->version = read_2_bytes (abfd, info_ptr);
4339 info_ptr += 2;
b64f50a1
JK
4340 cu_header->abbrev_offset.sect_off = read_offset (abfd, info_ptr, cu_header,
4341 &bytes_read);
613e1657 4342 info_ptr += bytes_read;
107d2387
AC
4343 cu_header->addr_size = read_1_byte (abfd, info_ptr);
4344 info_ptr += 1;
4345 signed_addr = bfd_get_sign_extend_vma (abfd);
4346 if (signed_addr < 0)
8e65ff28 4347 internal_error (__FILE__, __LINE__,
e2e0b3e5 4348 _("read_comp_unit_head: dwarf from non elf file"));
107d2387 4349 cu_header->signed_addr_p = signed_addr;
c764a876 4350
107d2387
AC
4351 return info_ptr;
4352}
4353
36586728
TT
4354/* Helper function that returns the proper abbrev section for
4355 THIS_CU. */
4356
4357static struct dwarf2_section_info *
4358get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
4359{
4360 struct dwarf2_section_info *abbrev;
4361
4362 if (this_cu->is_dwz)
4363 abbrev = &dwarf2_get_dwz_file ()->abbrev;
4364 else
4365 abbrev = &dwarf2_per_objfile->abbrev;
4366
4367 return abbrev;
4368}
4369
9ff913ba
DE
4370/* Subroutine of read_and_check_comp_unit_head and
4371 read_and_check_type_unit_head to simplify them.
4372 Perform various error checking on the header. */
4373
4374static void
4375error_check_comp_unit_head (struct comp_unit_head *header,
4bdcc0c1
DE
4376 struct dwarf2_section_info *section,
4377 struct dwarf2_section_info *abbrev_section)
9ff913ba 4378{
a32a8923
DE
4379 bfd *abfd = get_section_bfd_owner (section);
4380 const char *filename = get_section_file_name (section);
9ff913ba
DE
4381
4382 if (header->version != 2 && header->version != 3 && header->version != 4)
4383 error (_("Dwarf Error: wrong version in compilation unit header "
4384 "(is %d, should be 2, 3, or 4) [in module %s]"), header->version,
4385 filename);
4386
b64f50a1 4387 if (header->abbrev_offset.sect_off
36586728 4388 >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
9ff913ba
DE
4389 error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
4390 "(offset 0x%lx + 6) [in module %s]"),
b64f50a1 4391 (long) header->abbrev_offset.sect_off, (long) header->offset.sect_off,
9ff913ba
DE
4392 filename);
4393
4394 /* Cast to unsigned long to use 64-bit arithmetic when possible to
4395 avoid potential 32-bit overflow. */
1ce1cefd 4396 if (((unsigned long) header->offset.sect_off + get_cu_length (header))
9ff913ba
DE
4397 > section->size)
4398 error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
4399 "(offset 0x%lx + 0) [in module %s]"),
b64f50a1 4400 (long) header->length, (long) header->offset.sect_off,
9ff913ba
DE
4401 filename);
4402}
4403
4404/* Read in a CU/TU header and perform some basic error checking.
4405 The contents of the header are stored in HEADER.
4406 The result is a pointer to the start of the first DIE. */
adabb602 4407
d521ce57 4408static const gdb_byte *
9ff913ba
DE
4409read_and_check_comp_unit_head (struct comp_unit_head *header,
4410 struct dwarf2_section_info *section,
4bdcc0c1 4411 struct dwarf2_section_info *abbrev_section,
d521ce57 4412 const gdb_byte *info_ptr,
9ff913ba 4413 int is_debug_types_section)
72bf9492 4414{
d521ce57 4415 const gdb_byte *beg_of_comp_unit = info_ptr;
a32a8923 4416 bfd *abfd = get_section_bfd_owner (section);
72bf9492 4417
b64f50a1 4418 header->offset.sect_off = beg_of_comp_unit - section->buffer;
adabb602 4419
72bf9492
DJ
4420 info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4421
460c1c54
CC
4422 /* If we're reading a type unit, skip over the signature and
4423 type_offset fields. */
b0df02fd 4424 if (is_debug_types_section)
460c1c54
CC
4425 info_ptr += 8 /*signature*/ + header->offset_size;
4426
b64f50a1 4427 header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
adabb602 4428
4bdcc0c1 4429 error_check_comp_unit_head (header, section, abbrev_section);
72bf9492
DJ
4430
4431 return info_ptr;
4432}
4433
348e048f
DE
4434/* Read in the types comp unit header information from .debug_types entry at
4435 types_ptr. The result is a pointer to one past the end of the header. */
4436
d521ce57 4437static const gdb_byte *
9ff913ba
DE
4438read_and_check_type_unit_head (struct comp_unit_head *header,
4439 struct dwarf2_section_info *section,
4bdcc0c1 4440 struct dwarf2_section_info *abbrev_section,
d521ce57 4441 const gdb_byte *info_ptr,
dee91e82
DE
4442 ULONGEST *signature,
4443 cu_offset *type_offset_in_tu)
348e048f 4444{
d521ce57 4445 const gdb_byte *beg_of_comp_unit = info_ptr;
a32a8923 4446 bfd *abfd = get_section_bfd_owner (section);
348e048f 4447
b64f50a1 4448 header->offset.sect_off = beg_of_comp_unit - section->buffer;
348e048f 4449
9ff913ba 4450 info_ptr = read_comp_unit_head (header, info_ptr, abfd);
348e048f 4451
9ff913ba
DE
4452 /* If we're reading a type unit, skip over the signature and
4453 type_offset fields. */
4454 if (signature != NULL)
4455 *signature = read_8_bytes (abfd, info_ptr);
4456 info_ptr += 8;
dee91e82
DE
4457 if (type_offset_in_tu != NULL)
4458 type_offset_in_tu->cu_off = read_offset_1 (abfd, info_ptr,
4459 header->offset_size);
9ff913ba
DE
4460 info_ptr += header->offset_size;
4461
b64f50a1 4462 header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
348e048f 4463
4bdcc0c1 4464 error_check_comp_unit_head (header, section, abbrev_section);
9ff913ba
DE
4465
4466 return info_ptr;
348e048f
DE
4467}
4468
f4dc4d17
DE
4469/* Fetch the abbreviation table offset from a comp or type unit header. */
4470
4471static sect_offset
4472read_abbrev_offset (struct dwarf2_section_info *section,
4473 sect_offset offset)
4474{
a32a8923 4475 bfd *abfd = get_section_bfd_owner (section);
d521ce57 4476 const gdb_byte *info_ptr;
f4dc4d17
DE
4477 unsigned int length, initial_length_size, offset_size;
4478 sect_offset abbrev_offset;
4479
4480 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
4481 info_ptr = section->buffer + offset.sect_off;
4482 length = read_initial_length (abfd, info_ptr, &initial_length_size);
4483 offset_size = initial_length_size == 4 ? 4 : 8;
4484 info_ptr += initial_length_size + 2 /*version*/;
4485 abbrev_offset.sect_off = read_offset_1 (abfd, info_ptr, offset_size);
4486 return abbrev_offset;
4487}
4488
aaa75496
JB
4489/* Allocate a new partial symtab for file named NAME and mark this new
4490 partial symtab as being an include of PST. */
4491
4492static void
d521ce57 4493dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
aaa75496
JB
4494 struct objfile *objfile)
4495{
4496 struct partial_symtab *subpst = allocate_psymtab (name, objfile);
4497
fbd9ab74
JK
4498 if (!IS_ABSOLUTE_PATH (subpst->filename))
4499 {
4500 /* It shares objfile->objfile_obstack. */
4501 subpst->dirname = pst->dirname;
4502 }
4503
aaa75496
JB
4504 subpst->textlow = 0;
4505 subpst->texthigh = 0;
4506
8d749320
SM
4507 subpst->dependencies
4508 = XOBNEW (&objfile->objfile_obstack, struct partial_symtab *);
aaa75496
JB
4509 subpst->dependencies[0] = pst;
4510 subpst->number_of_dependencies = 1;
4511
4512 subpst->globals_offset = 0;
4513 subpst->n_global_syms = 0;
4514 subpst->statics_offset = 0;
4515 subpst->n_static_syms = 0;
43f3e411 4516 subpst->compunit_symtab = NULL;
aaa75496
JB
4517 subpst->read_symtab = pst->read_symtab;
4518 subpst->readin = 0;
4519
4520 /* No private part is necessary for include psymtabs. This property
4521 can be used to differentiate between such include psymtabs and
10b3939b 4522 the regular ones. */
58a9656e 4523 subpst->read_symtab_private = NULL;
aaa75496
JB
4524}
4525
4526/* Read the Line Number Program data and extract the list of files
4527 included by the source file represented by PST. Build an include
d85a05f0 4528 partial symtab for each of these included files. */
aaa75496
JB
4529
4530static void
4531dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
dee91e82
DE
4532 struct die_info *die,
4533 struct partial_symtab *pst)
aaa75496 4534{
d85a05f0
DJ
4535 struct line_header *lh = NULL;
4536 struct attribute *attr;
aaa75496 4537
d85a05f0
DJ
4538 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
4539 if (attr)
3019eac3 4540 lh = dwarf_decode_line_header (DW_UNSND (attr), cu);
aaa75496
JB
4541 if (lh == NULL)
4542 return; /* No linetable, so no includes. */
4543
c6da4cef 4544 /* NOTE: pst->dirname is DW_AT_comp_dir (if present). */
527f3840 4545 dwarf_decode_lines (lh, pst->dirname, cu, pst, pst->textlow, 1);
aaa75496
JB
4546
4547 free_line_header (lh);
4548}
4549
348e048f 4550static hashval_t
52dc124a 4551hash_signatured_type (const void *item)
348e048f 4552{
52dc124a 4553 const struct signatured_type *sig_type = item;
9a619af0 4554
348e048f 4555 /* This drops the top 32 bits of the signature, but is ok for a hash. */
52dc124a 4556 return sig_type->signature;
348e048f
DE
4557}
4558
4559static int
52dc124a 4560eq_signatured_type (const void *item_lhs, const void *item_rhs)
348e048f
DE
4561{
4562 const struct signatured_type *lhs = item_lhs;
4563 const struct signatured_type *rhs = item_rhs;
9a619af0 4564
348e048f
DE
4565 return lhs->signature == rhs->signature;
4566}
4567
1fd400ff
TT
4568/* Allocate a hash table for signatured types. */
4569
4570static htab_t
673bfd45 4571allocate_signatured_type_table (struct objfile *objfile)
1fd400ff
TT
4572{
4573 return htab_create_alloc_ex (41,
52dc124a
DE
4574 hash_signatured_type,
4575 eq_signatured_type,
1fd400ff
TT
4576 NULL,
4577 &objfile->objfile_obstack,
4578 hashtab_obstack_allocate,
4579 dummy_obstack_deallocate);
4580}
4581
d467dd73 4582/* A helper function to add a signatured type CU to a table. */
1fd400ff
TT
4583
4584static int
d467dd73 4585add_signatured_type_cu_to_table (void **slot, void *datum)
1fd400ff
TT
4586{
4587 struct signatured_type *sigt = *slot;
b4dd5633 4588 struct signatured_type ***datap = datum;
1fd400ff 4589
b4dd5633 4590 **datap = sigt;
1fd400ff
TT
4591 ++*datap;
4592
4593 return 1;
4594}
4595
c88ee1f0
DE
4596/* Create the hash table of all entries in the .debug_types
4597 (or .debug_types.dwo) section(s).
4598 If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
4599 otherwise it is NULL.
4600
4601 The result is a pointer to the hash table or NULL if there are no types.
4602
4603 Note: This function processes DWO files only, not DWP files. */
348e048f 4604
3019eac3
DE
4605static htab_t
4606create_debug_types_hash_table (struct dwo_file *dwo_file,
4607 VEC (dwarf2_section_info_def) *types)
348e048f 4608{
3019eac3 4609 struct objfile *objfile = dwarf2_per_objfile->objfile;
8b70b953 4610 htab_t types_htab = NULL;
8b70b953
TT
4611 int ix;
4612 struct dwarf2_section_info *section;
4bdcc0c1 4613 struct dwarf2_section_info *abbrev_section;
348e048f 4614
3019eac3
DE
4615 if (VEC_empty (dwarf2_section_info_def, types))
4616 return NULL;
348e048f 4617
4bdcc0c1
DE
4618 abbrev_section = (dwo_file != NULL
4619 ? &dwo_file->sections.abbrev
4620 : &dwarf2_per_objfile->abbrev);
4621
b4f54984 4622 if (dwarf_read_debug)
09406207
DE
4623 fprintf_unfiltered (gdb_stdlog, "Reading .debug_types%s for %s:\n",
4624 dwo_file ? ".dwo" : "",
a32a8923 4625 get_section_file_name (abbrev_section));
09406207 4626
8b70b953 4627 for (ix = 0;
3019eac3 4628 VEC_iterate (dwarf2_section_info_def, types, ix, section);
8b70b953
TT
4629 ++ix)
4630 {
3019eac3 4631 bfd *abfd;
d521ce57 4632 const gdb_byte *info_ptr, *end_ptr;
348e048f 4633
8b70b953
TT
4634 dwarf2_read_section (objfile, section);
4635 info_ptr = section->buffer;
348e048f 4636
8b70b953
TT
4637 if (info_ptr == NULL)
4638 continue;
348e048f 4639
3019eac3 4640 /* We can't set abfd until now because the section may be empty or
a32a8923
DE
4641 not present, in which case the bfd is unknown. */
4642 abfd = get_section_bfd_owner (section);
3019eac3 4643
dee91e82
DE
4644 /* We don't use init_cutu_and_read_dies_simple, or some such, here
4645 because we don't need to read any dies: the signature is in the
4646 header. */
8b70b953
TT
4647
4648 end_ptr = info_ptr + section->size;
4649 while (info_ptr < end_ptr)
4650 {
b64f50a1 4651 sect_offset offset;
3019eac3 4652 cu_offset type_offset_in_tu;
8b70b953 4653 ULONGEST signature;
52dc124a 4654 struct signatured_type *sig_type;
3019eac3 4655 struct dwo_unit *dwo_tu;
8b70b953 4656 void **slot;
d521ce57 4657 const gdb_byte *ptr = info_ptr;
9ff913ba 4658 struct comp_unit_head header;
dee91e82 4659 unsigned int length;
348e048f 4660
b64f50a1 4661 offset.sect_off = ptr - section->buffer;
348e048f 4662
8b70b953 4663 /* We need to read the type's signature in order to build the hash
9ff913ba 4664 table, but we don't need anything else just yet. */
348e048f 4665
4bdcc0c1
DE
4666 ptr = read_and_check_type_unit_head (&header, section,
4667 abbrev_section, ptr,
3019eac3 4668 &signature, &type_offset_in_tu);
6caca83c 4669
1ce1cefd 4670 length = get_cu_length (&header);
dee91e82 4671
6caca83c 4672 /* Skip dummy type units. */
dee91e82
DE
4673 if (ptr >= info_ptr + length
4674 || peek_abbrev_code (abfd, ptr) == 0)
6caca83c 4675 {
1ce1cefd 4676 info_ptr += length;
6caca83c
CC
4677 continue;
4678 }
8b70b953 4679
0349ea22
DE
4680 if (types_htab == NULL)
4681 {
4682 if (dwo_file)
4683 types_htab = allocate_dwo_unit_table (objfile);
4684 else
4685 types_htab = allocate_signatured_type_table (objfile);
4686 }
4687
3019eac3
DE
4688 if (dwo_file)
4689 {
4690 sig_type = NULL;
4691 dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4692 struct dwo_unit);
4693 dwo_tu->dwo_file = dwo_file;
4694 dwo_tu->signature = signature;
4695 dwo_tu->type_offset_in_tu = type_offset_in_tu;
8a0459fd 4696 dwo_tu->section = section;
3019eac3
DE
4697 dwo_tu->offset = offset;
4698 dwo_tu->length = length;
4699 }
4700 else
4701 {
4702 /* N.B.: type_offset is not usable if this type uses a DWO file.
4703 The real type_offset is in the DWO file. */
4704 dwo_tu = NULL;
4705 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4706 struct signatured_type);
4707 sig_type->signature = signature;
4708 sig_type->type_offset_in_tu = type_offset_in_tu;
4709 sig_type->per_cu.objfile = objfile;
4710 sig_type->per_cu.is_debug_types = 1;
8a0459fd 4711 sig_type->per_cu.section = section;
3019eac3
DE
4712 sig_type->per_cu.offset = offset;
4713 sig_type->per_cu.length = length;
4714 }
8b70b953 4715
3019eac3
DE
4716 slot = htab_find_slot (types_htab,
4717 dwo_file ? (void*) dwo_tu : (void *) sig_type,
4718 INSERT);
8b70b953
TT
4719 gdb_assert (slot != NULL);
4720 if (*slot != NULL)
4721 {
3019eac3
DE
4722 sect_offset dup_offset;
4723
4724 if (dwo_file)
4725 {
4726 const struct dwo_unit *dup_tu = *slot;
4727
4728 dup_offset = dup_tu->offset;
4729 }
4730 else
4731 {
4732 const struct signatured_type *dup_tu = *slot;
4733
4734 dup_offset = dup_tu->per_cu.offset;
4735 }
b3c8eb43 4736
8b70b953 4737 complaint (&symfile_complaints,
c88ee1f0 4738 _("debug type entry at offset 0x%x is duplicate to"
4031ecc5 4739 " the entry at offset 0x%x, signature %s"),
3019eac3 4740 offset.sect_off, dup_offset.sect_off,
4031ecc5 4741 hex_string (signature));
8b70b953 4742 }
3019eac3 4743 *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
348e048f 4744
b4f54984 4745 if (dwarf_read_debug > 1)
4031ecc5 4746 fprintf_unfiltered (gdb_stdlog, " offset 0x%x, signature %s\n",
b64f50a1 4747 offset.sect_off,
4031ecc5 4748 hex_string (signature));
348e048f 4749
dee91e82 4750 info_ptr += length;
8b70b953 4751 }
348e048f
DE
4752 }
4753
3019eac3
DE
4754 return types_htab;
4755}
4756
4757/* Create the hash table of all entries in the .debug_types section,
4758 and initialize all_type_units.
4759 The result is zero if there is an error (e.g. missing .debug_types section),
4760 otherwise non-zero. */
4761
4762static int
4763create_all_type_units (struct objfile *objfile)
4764{
4765 htab_t types_htab;
b4dd5633 4766 struct signatured_type **iter;
3019eac3
DE
4767
4768 types_htab = create_debug_types_hash_table (NULL, dwarf2_per_objfile->types);
4769 if (types_htab == NULL)
4770 {
4771 dwarf2_per_objfile->signatured_types = NULL;
4772 return 0;
4773 }
4774
348e048f
DE
4775 dwarf2_per_objfile->signatured_types = types_htab;
4776
6aa5f3a6
DE
4777 dwarf2_per_objfile->n_type_units
4778 = dwarf2_per_objfile->n_allocated_type_units
4779 = htab_elements (types_htab);
8d749320
SM
4780 dwarf2_per_objfile->all_type_units =
4781 XNEWVEC (struct signatured_type *, dwarf2_per_objfile->n_type_units);
d467dd73
DE
4782 iter = &dwarf2_per_objfile->all_type_units[0];
4783 htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table, &iter);
4784 gdb_assert (iter - &dwarf2_per_objfile->all_type_units[0]
4785 == dwarf2_per_objfile->n_type_units);
1fd400ff 4786
348e048f
DE
4787 return 1;
4788}
4789
6aa5f3a6
DE
4790/* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
4791 If SLOT is non-NULL, it is the entry to use in the hash table.
4792 Otherwise we find one. */
4793
4794static struct signatured_type *
4795add_type_unit (ULONGEST sig, void **slot)
4796{
4797 struct objfile *objfile = dwarf2_per_objfile->objfile;
4798 int n_type_units = dwarf2_per_objfile->n_type_units;
4799 struct signatured_type *sig_type;
4800
4801 gdb_assert (n_type_units <= dwarf2_per_objfile->n_allocated_type_units);
4802 ++n_type_units;
4803 if (n_type_units > dwarf2_per_objfile->n_allocated_type_units)
4804 {
4805 if (dwarf2_per_objfile->n_allocated_type_units == 0)
4806 dwarf2_per_objfile->n_allocated_type_units = 1;
4807 dwarf2_per_objfile->n_allocated_type_units *= 2;
4808 dwarf2_per_objfile->all_type_units
4809 = xrealloc (dwarf2_per_objfile->all_type_units,
4810 dwarf2_per_objfile->n_allocated_type_units
4811 * sizeof (struct signatured_type *));
4812 ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
4813 }
4814 dwarf2_per_objfile->n_type_units = n_type_units;
4815
4816 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4817 struct signatured_type);
4818 dwarf2_per_objfile->all_type_units[n_type_units - 1] = sig_type;
4819 sig_type->signature = sig;
4820 sig_type->per_cu.is_debug_types = 1;
4821 if (dwarf2_per_objfile->using_index)
4822 {
4823 sig_type->per_cu.v.quick =
4824 OBSTACK_ZALLOC (&objfile->objfile_obstack,
4825 struct dwarf2_per_cu_quick_data);
4826 }
4827
4828 if (slot == NULL)
4829 {
4830 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4831 sig_type, INSERT);
4832 }
4833 gdb_assert (*slot == NULL);
4834 *slot = sig_type;
4835 /* The rest of sig_type must be filled in by the caller. */
4836 return sig_type;
4837}
4838
a2ce51a0
DE
4839/* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
4840 Fill in SIG_ENTRY with DWO_ENTRY. */
4841
4842static void
4843fill_in_sig_entry_from_dwo_entry (struct objfile *objfile,
4844 struct signatured_type *sig_entry,
4845 struct dwo_unit *dwo_entry)
4846{
7ee85ab1 4847 /* Make sure we're not clobbering something we don't expect to. */
a2ce51a0
DE
4848 gdb_assert (! sig_entry->per_cu.queued);
4849 gdb_assert (sig_entry->per_cu.cu == NULL);
6aa5f3a6
DE
4850 if (dwarf2_per_objfile->using_index)
4851 {
4852 gdb_assert (sig_entry->per_cu.v.quick != NULL);
43f3e411 4853 gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6aa5f3a6
DE
4854 }
4855 else
4856 gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
a2ce51a0
DE
4857 gdb_assert (sig_entry->signature == dwo_entry->signature);
4858 gdb_assert (sig_entry->type_offset_in_section.sect_off == 0);
4859 gdb_assert (sig_entry->type_unit_group == NULL);
7ee85ab1
DE
4860 gdb_assert (sig_entry->dwo_unit == NULL);
4861
4862 sig_entry->per_cu.section = dwo_entry->section;
4863 sig_entry->per_cu.offset = dwo_entry->offset;
4864 sig_entry->per_cu.length = dwo_entry->length;
4865 sig_entry->per_cu.reading_dwo_directly = 1;
4866 sig_entry->per_cu.objfile = objfile;
a2ce51a0
DE
4867 sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
4868 sig_entry->dwo_unit = dwo_entry;
4869}
4870
4871/* Subroutine of lookup_signatured_type.
7ee85ab1
DE
4872 If we haven't read the TU yet, create the signatured_type data structure
4873 for a TU to be read in directly from a DWO file, bypassing the stub.
4874 This is the "Stay in DWO Optimization": When there is no DWP file and we're
4875 using .gdb_index, then when reading a CU we want to stay in the DWO file
4876 containing that CU. Otherwise we could end up reading several other DWO
4877 files (due to comdat folding) to process the transitive closure of all the
4878 mentioned TUs, and that can be slow. The current DWO file will have every
4879 type signature that it needs.
a2ce51a0
DE
4880 We only do this for .gdb_index because in the psymtab case we already have
4881 to read all the DWOs to build the type unit groups. */
4882
4883static struct signatured_type *
4884lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4885{
4886 struct objfile *objfile = dwarf2_per_objfile->objfile;
4887 struct dwo_file *dwo_file;
4888 struct dwo_unit find_dwo_entry, *dwo_entry;
4889 struct signatured_type find_sig_entry, *sig_entry;
6aa5f3a6 4890 void **slot;
a2ce51a0
DE
4891
4892 gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4893
6aa5f3a6
DE
4894 /* If TU skeletons have been removed then we may not have read in any
4895 TUs yet. */
4896 if (dwarf2_per_objfile->signatured_types == NULL)
4897 {
4898 dwarf2_per_objfile->signatured_types
4899 = allocate_signatured_type_table (objfile);
4900 }
a2ce51a0
DE
4901
4902 /* We only ever need to read in one copy of a signatured type.
6aa5f3a6
DE
4903 Use the global signatured_types array to do our own comdat-folding
4904 of types. If this is the first time we're reading this TU, and
4905 the TU has an entry in .gdb_index, replace the recorded data from
4906 .gdb_index with this TU. */
a2ce51a0 4907
a2ce51a0 4908 find_sig_entry.signature = sig;
6aa5f3a6
DE
4909 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4910 &find_sig_entry, INSERT);
4911 sig_entry = *slot;
7ee85ab1
DE
4912
4913 /* We can get here with the TU already read, *or* in the process of being
6aa5f3a6
DE
4914 read. Don't reassign the global entry to point to this DWO if that's
4915 the case. Also note that if the TU is already being read, it may not
4916 have come from a DWO, the program may be a mix of Fission-compiled
4917 code and non-Fission-compiled code. */
4918
4919 /* Have we already tried to read this TU?
4920 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
4921 needn't exist in the global table yet). */
4922 if (sig_entry != NULL && sig_entry->per_cu.tu_read)
a2ce51a0
DE
4923 return sig_entry;
4924
6aa5f3a6
DE
4925 /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
4926 dwo_unit of the TU itself. */
4927 dwo_file = cu->dwo_unit->dwo_file;
4928
a2ce51a0
DE
4929 /* Ok, this is the first time we're reading this TU. */
4930 if (dwo_file->tus == NULL)
4931 return NULL;
4932 find_dwo_entry.signature = sig;
4933 dwo_entry = htab_find (dwo_file->tus, &find_dwo_entry);
4934 if (dwo_entry == NULL)
4935 return NULL;
4936
6aa5f3a6
DE
4937 /* If the global table doesn't have an entry for this TU, add one. */
4938 if (sig_entry == NULL)
4939 sig_entry = add_type_unit (sig, slot);
4940
a2ce51a0 4941 fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
89e63ee4 4942 sig_entry->per_cu.tu_read = 1;
a2ce51a0
DE
4943 return sig_entry;
4944}
4945
a2ce51a0
DE
4946/* Subroutine of lookup_signatured_type.
4947 Look up the type for signature SIG, and if we can't find SIG in .gdb_index
6aa5f3a6
DE
4948 then try the DWP file. If the TU stub (skeleton) has been removed then
4949 it won't be in .gdb_index. */
a2ce51a0
DE
4950
4951static struct signatured_type *
4952lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4953{
4954 struct objfile *objfile = dwarf2_per_objfile->objfile;
4955 struct dwp_file *dwp_file = get_dwp_file ();
4956 struct dwo_unit *dwo_entry;
4957 struct signatured_type find_sig_entry, *sig_entry;
6aa5f3a6 4958 void **slot;
a2ce51a0
DE
4959
4960 gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4961 gdb_assert (dwp_file != NULL);
4962
6aa5f3a6
DE
4963 /* If TU skeletons have been removed then we may not have read in any
4964 TUs yet. */
4965 if (dwarf2_per_objfile->signatured_types == NULL)
a2ce51a0 4966 {
6aa5f3a6
DE
4967 dwarf2_per_objfile->signatured_types
4968 = allocate_signatured_type_table (objfile);
a2ce51a0
DE
4969 }
4970
6aa5f3a6
DE
4971 find_sig_entry.signature = sig;
4972 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4973 &find_sig_entry, INSERT);
4974 sig_entry = *slot;
4975
4976 /* Have we already tried to read this TU?
4977 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
4978 needn't exist in the global table yet). */
4979 if (sig_entry != NULL)
4980 return sig_entry;
4981
a2ce51a0
DE
4982 if (dwp_file->tus == NULL)
4983 return NULL;
57d63ce2
DE
4984 dwo_entry = lookup_dwo_unit_in_dwp (dwp_file, NULL,
4985 sig, 1 /* is_debug_types */);
a2ce51a0
DE
4986 if (dwo_entry == NULL)
4987 return NULL;
4988
6aa5f3a6 4989 sig_entry = add_type_unit (sig, slot);
a2ce51a0
DE
4990 fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
4991
a2ce51a0
DE
4992 return sig_entry;
4993}
4994
380bca97 4995/* Lookup a signature based type for DW_FORM_ref_sig8.
5a8b3f62
DE
4996 Returns NULL if signature SIG is not present in the table.
4997 It is up to the caller to complain about this. */
348e048f
DE
4998
4999static struct signatured_type *
a2ce51a0 5000lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
348e048f 5001{
a2ce51a0
DE
5002 if (cu->dwo_unit
5003 && dwarf2_per_objfile->using_index)
5004 {
5005 /* We're in a DWO/DWP file, and we're using .gdb_index.
5006 These cases require special processing. */
5007 if (get_dwp_file () == NULL)
5008 return lookup_dwo_signatured_type (cu, sig);
5009 else
5010 return lookup_dwp_signatured_type (cu, sig);
5011 }
5012 else
5013 {
5014 struct signatured_type find_entry, *entry;
348e048f 5015
a2ce51a0
DE
5016 if (dwarf2_per_objfile->signatured_types == NULL)
5017 return NULL;
5018 find_entry.signature = sig;
5019 entry = htab_find (dwarf2_per_objfile->signatured_types, &find_entry);
5020 return entry;
5021 }
348e048f 5022}
42e7ad6c
DE
5023\f
5024/* Low level DIE reading support. */
348e048f 5025
d85a05f0
DJ
5026/* Initialize a die_reader_specs struct from a dwarf2_cu struct. */
5027
5028static void
5029init_cu_die_reader (struct die_reader_specs *reader,
dee91e82 5030 struct dwarf2_cu *cu,
3019eac3
DE
5031 struct dwarf2_section_info *section,
5032 struct dwo_file *dwo_file)
d85a05f0 5033{
fceca515 5034 gdb_assert (section->readin && section->buffer != NULL);
a32a8923 5035 reader->abfd = get_section_bfd_owner (section);
d85a05f0 5036 reader->cu = cu;
3019eac3 5037 reader->dwo_file = dwo_file;
dee91e82
DE
5038 reader->die_section = section;
5039 reader->buffer = section->buffer;
f664829e 5040 reader->buffer_end = section->buffer + section->size;
a2ce51a0 5041 reader->comp_dir = NULL;
d85a05f0
DJ
5042}
5043
b0c7bfa9
DE
5044/* Subroutine of init_cutu_and_read_dies to simplify it.
5045 Read in the rest of a CU/TU top level DIE from DWO_UNIT.
5046 There's just a lot of work to do, and init_cutu_and_read_dies is big enough
5047 already.
5048
5049 STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
5050 from it to the DIE in the DWO. If NULL we are skipping the stub.
a2ce51a0
DE
5051 STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
5052 from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
c54a1dd8
DE
5053 attribute of the referencing CU. At most one of STUB_COMP_UNIT_DIE and
5054 STUB_COMP_DIR may be non-NULL.
b0c7bfa9
DE
5055 *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
5056 are filled in with the info of the DIE from the DWO file.
5057 ABBREV_TABLE_PROVIDED is non-zero if the caller of init_cutu_and_read_dies
5058 provided an abbrev table to use.
5059 The result is non-zero if a valid (non-dummy) DIE was found. */
5060
5061static int
5062read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
5063 struct dwo_unit *dwo_unit,
5064 int abbrev_table_provided,
5065 struct die_info *stub_comp_unit_die,
a2ce51a0 5066 const char *stub_comp_dir,
b0c7bfa9 5067 struct die_reader_specs *result_reader,
d521ce57 5068 const gdb_byte **result_info_ptr,
b0c7bfa9
DE
5069 struct die_info **result_comp_unit_die,
5070 int *result_has_children)
5071{
5072 struct objfile *objfile = dwarf2_per_objfile->objfile;
5073 struct dwarf2_cu *cu = this_cu->cu;
5074 struct dwarf2_section_info *section;
5075 bfd *abfd;
d521ce57 5076 const gdb_byte *begin_info_ptr, *info_ptr;
b0c7bfa9
DE
5077 ULONGEST signature; /* Or dwo_id. */
5078 struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
5079 int i,num_extra_attrs;
5080 struct dwarf2_section_info *dwo_abbrev_section;
5081 struct attribute *attr;
5082 struct die_info *comp_unit_die;
5083
b0aeadb3
DE
5084 /* At most one of these may be provided. */
5085 gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
a2ce51a0 5086
b0c7bfa9
DE
5087 /* These attributes aren't processed until later:
5088 DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
0d60c288
DE
5089 DW_AT_comp_dir is used now, to find the DWO file, but it is also
5090 referenced later. However, these attributes are found in the stub
5091 which we won't have later. In order to not impose this complication
5092 on the rest of the code, we read them here and copy them to the
5093 DWO CU/TU die. */
b0c7bfa9
DE
5094
5095 stmt_list = NULL;
5096 low_pc = NULL;
5097 high_pc = NULL;
5098 ranges = NULL;
5099 comp_dir = NULL;
5100
5101 if (stub_comp_unit_die != NULL)
5102 {
5103 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
5104 DWO file. */
5105 if (! this_cu->is_debug_types)
5106 stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
5107 low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
5108 high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
5109 ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
5110 comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
5111
5112 /* There should be a DW_AT_addr_base attribute here (if needed).
5113 We need the value before we can process DW_FORM_GNU_addr_index. */
5114 cu->addr_base = 0;
5115 attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
5116 if (attr)
5117 cu->addr_base = DW_UNSND (attr);
5118
5119 /* There should be a DW_AT_ranges_base attribute here (if needed).
5120 We need the value before we can process DW_AT_ranges. */
5121 cu->ranges_base = 0;
5122 attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
5123 if (attr)
5124 cu->ranges_base = DW_UNSND (attr);
5125 }
a2ce51a0
DE
5126 else if (stub_comp_dir != NULL)
5127 {
5128 /* Reconstruct the comp_dir attribute to simplify the code below. */
8d749320 5129 comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
a2ce51a0
DE
5130 comp_dir->name = DW_AT_comp_dir;
5131 comp_dir->form = DW_FORM_string;
5132 DW_STRING_IS_CANONICAL (comp_dir) = 0;
5133 DW_STRING (comp_dir) = stub_comp_dir;
5134 }
b0c7bfa9
DE
5135
5136 /* Set up for reading the DWO CU/TU. */
5137 cu->dwo_unit = dwo_unit;
5138 section = dwo_unit->section;
5139 dwarf2_read_section (objfile, section);
a32a8923 5140 abfd = get_section_bfd_owner (section);
b0c7bfa9
DE
5141 begin_info_ptr = info_ptr = section->buffer + dwo_unit->offset.sect_off;
5142 dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
5143 init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file);
5144
5145 if (this_cu->is_debug_types)
5146 {
5147 ULONGEST header_signature;
5148 cu_offset type_offset_in_tu;
5149 struct signatured_type *sig_type = (struct signatured_type *) this_cu;
5150
5151 info_ptr = read_and_check_type_unit_head (&cu->header, section,
5152 dwo_abbrev_section,
5153 info_ptr,
5154 &header_signature,
5155 &type_offset_in_tu);
a2ce51a0
DE
5156 /* This is not an assert because it can be caused by bad debug info. */
5157 if (sig_type->signature != header_signature)
5158 {
5159 error (_("Dwarf Error: signature mismatch %s vs %s while reading"
5160 " TU at offset 0x%x [in module %s]"),
5161 hex_string (sig_type->signature),
5162 hex_string (header_signature),
5163 dwo_unit->offset.sect_off,
5164 bfd_get_filename (abfd));
5165 }
b0c7bfa9
DE
5166 gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5167 /* For DWOs coming from DWP files, we don't know the CU length
5168 nor the type's offset in the TU until now. */
5169 dwo_unit->length = get_cu_length (&cu->header);
5170 dwo_unit->type_offset_in_tu = type_offset_in_tu;
5171
5172 /* Establish the type offset that can be used to lookup the type.
5173 For DWO files, we don't know it until now. */
5174 sig_type->type_offset_in_section.sect_off =
5175 dwo_unit->offset.sect_off + dwo_unit->type_offset_in_tu.cu_off;
5176 }
5177 else
5178 {
5179 info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5180 dwo_abbrev_section,
5181 info_ptr, 0);
5182 gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5183 /* For DWOs coming from DWP files, we don't know the CU length
5184 until now. */
5185 dwo_unit->length = get_cu_length (&cu->header);
5186 }
5187
02142a6c
DE
5188 /* Replace the CU's original abbrev table with the DWO's.
5189 Reminder: We can't read the abbrev table until we've read the header. */
b0c7bfa9
DE
5190 if (abbrev_table_provided)
5191 {
5192 /* Don't free the provided abbrev table, the caller of
5193 init_cutu_and_read_dies owns it. */
5194 dwarf2_read_abbrevs (cu, dwo_abbrev_section);
02142a6c 5195 /* Ensure the DWO abbrev table gets freed. */
b0c7bfa9
DE
5196 make_cleanup (dwarf2_free_abbrev_table, cu);
5197 }
5198 else
5199 {
5200 dwarf2_free_abbrev_table (cu);
5201 dwarf2_read_abbrevs (cu, dwo_abbrev_section);
02142a6c 5202 /* Leave any existing abbrev table cleanup as is. */
b0c7bfa9
DE
5203 }
5204
5205 /* Read in the die, but leave space to copy over the attributes
5206 from the stub. This has the benefit of simplifying the rest of
5207 the code - all the work to maintain the illusion of a single
5208 DW_TAG_{compile,type}_unit DIE is done here. */
5209 num_extra_attrs = ((stmt_list != NULL)
5210 + (low_pc != NULL)
5211 + (high_pc != NULL)
5212 + (ranges != NULL)
5213 + (comp_dir != NULL));
5214 info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
5215 result_has_children, num_extra_attrs);
5216
5217 /* Copy over the attributes from the stub to the DIE we just read in. */
5218 comp_unit_die = *result_comp_unit_die;
5219 i = comp_unit_die->num_attrs;
5220 if (stmt_list != NULL)
5221 comp_unit_die->attrs[i++] = *stmt_list;
5222 if (low_pc != NULL)
5223 comp_unit_die->attrs[i++] = *low_pc;
5224 if (high_pc != NULL)
5225 comp_unit_die->attrs[i++] = *high_pc;
5226 if (ranges != NULL)
5227 comp_unit_die->attrs[i++] = *ranges;
5228 if (comp_dir != NULL)
5229 comp_unit_die->attrs[i++] = *comp_dir;
5230 comp_unit_die->num_attrs += num_extra_attrs;
5231
b4f54984 5232 if (dwarf_die_debug)
bf6af496
DE
5233 {
5234 fprintf_unfiltered (gdb_stdlog,
5235 "Read die from %s@0x%x of %s:\n",
a32a8923 5236 get_section_name (section),
bf6af496
DE
5237 (unsigned) (begin_info_ptr - section->buffer),
5238 bfd_get_filename (abfd));
b4f54984 5239 dump_die (comp_unit_die, dwarf_die_debug);
bf6af496
DE
5240 }
5241
a2ce51a0
DE
5242 /* Save the comp_dir attribute. If there is no DWP file then we'll read
5243 TUs by skipping the stub and going directly to the entry in the DWO file.
5244 However, skipping the stub means we won't get DW_AT_comp_dir, so we have
5245 to get it via circuitous means. Blech. */
5246 if (comp_dir != NULL)
5247 result_reader->comp_dir = DW_STRING (comp_dir);
5248
b0c7bfa9
DE
5249 /* Skip dummy compilation units. */
5250 if (info_ptr >= begin_info_ptr + dwo_unit->length
5251 || peek_abbrev_code (abfd, info_ptr) == 0)
5252 return 0;
5253
5254 *result_info_ptr = info_ptr;
5255 return 1;
5256}
5257
5258/* Subroutine of init_cutu_and_read_dies to simplify it.
5259 Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
6a506a2d 5260 Returns NULL if the specified DWO unit cannot be found. */
b0c7bfa9
DE
5261
5262static struct dwo_unit *
5263lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
5264 struct die_info *comp_unit_die)
5265{
5266 struct dwarf2_cu *cu = this_cu->cu;
5267 struct attribute *attr;
5268 ULONGEST signature;
5269 struct dwo_unit *dwo_unit;
5270 const char *comp_dir, *dwo_name;
5271
a2ce51a0
DE
5272 gdb_assert (cu != NULL);
5273
b0c7bfa9 5274 /* Yeah, we look dwo_name up again, but it simplifies the code. */
7d45c7c3
KB
5275 dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5276 comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
b0c7bfa9
DE
5277
5278 if (this_cu->is_debug_types)
5279 {
5280 struct signatured_type *sig_type;
5281
5282 /* Since this_cu is the first member of struct signatured_type,
5283 we can go from a pointer to one to a pointer to the other. */
5284 sig_type = (struct signatured_type *) this_cu;
5285 signature = sig_type->signature;
5286 dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
5287 }
5288 else
5289 {
5290 struct attribute *attr;
5291
5292 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
5293 if (! attr)
5294 error (_("Dwarf Error: missing dwo_id for dwo_name %s"
5295 " [in module %s]"),
4262abfb 5296 dwo_name, objfile_name (this_cu->objfile));
b0c7bfa9
DE
5297 signature = DW_UNSND (attr);
5298 dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
5299 signature);
5300 }
5301
b0c7bfa9
DE
5302 return dwo_unit;
5303}
5304
a2ce51a0 5305/* Subroutine of init_cutu_and_read_dies to simplify it.
6aa5f3a6
DE
5306 See it for a description of the parameters.
5307 Read a TU directly from a DWO file, bypassing the stub.
5308
5309 Note: This function could be a little bit simpler if we shared cleanups
5310 with our caller, init_cutu_and_read_dies. That's generally a fragile thing
5311 to do, so we keep this function self-contained. Or we could move this
5312 into our caller, but it's complex enough already. */
a2ce51a0
DE
5313
5314static void
6aa5f3a6
DE
5315init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
5316 int use_existing_cu, int keep,
a2ce51a0
DE
5317 die_reader_func_ftype *die_reader_func,
5318 void *data)
5319{
5320 struct dwarf2_cu *cu;
5321 struct signatured_type *sig_type;
6aa5f3a6 5322 struct cleanup *cleanups, *free_cu_cleanup = NULL;
a2ce51a0
DE
5323 struct die_reader_specs reader;
5324 const gdb_byte *info_ptr;
5325 struct die_info *comp_unit_die;
5326 int has_children;
5327
5328 /* Verify we can do the following downcast, and that we have the
5329 data we need. */
5330 gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
5331 sig_type = (struct signatured_type *) this_cu;
5332 gdb_assert (sig_type->dwo_unit != NULL);
5333
5334 cleanups = make_cleanup (null_cleanup, NULL);
5335
6aa5f3a6
DE
5336 if (use_existing_cu && this_cu->cu != NULL)
5337 {
5338 gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
5339 cu = this_cu->cu;
5340 /* There's no need to do the rereading_dwo_cu handling that
5341 init_cutu_and_read_dies does since we don't read the stub. */
5342 }
5343 else
5344 {
5345 /* If !use_existing_cu, this_cu->cu must be NULL. */
5346 gdb_assert (this_cu->cu == NULL);
8d749320 5347 cu = XNEW (struct dwarf2_cu);
6aa5f3a6
DE
5348 init_one_comp_unit (cu, this_cu);
5349 /* If an error occurs while loading, release our storage. */
5350 free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5351 }
5352
5353 /* A future optimization, if needed, would be to use an existing
5354 abbrev table. When reading DWOs with skeletonless TUs, all the TUs
5355 could share abbrev tables. */
a2ce51a0
DE
5356
5357 if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
5358 0 /* abbrev_table_provided */,
5359 NULL /* stub_comp_unit_die */,
5360 sig_type->dwo_unit->dwo_file->comp_dir,
5361 &reader, &info_ptr,
5362 &comp_unit_die, &has_children) == 0)
5363 {
5364 /* Dummy die. */
5365 do_cleanups (cleanups);
5366 return;
5367 }
5368
5369 /* All the "real" work is done here. */
5370 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5371
6aa5f3a6 5372 /* This duplicates the code in init_cutu_and_read_dies,
a2ce51a0
DE
5373 but the alternative is making the latter more complex.
5374 This function is only for the special case of using DWO files directly:
5375 no point in overly complicating the general case just to handle this. */
6aa5f3a6 5376 if (free_cu_cleanup != NULL)
a2ce51a0 5377 {
6aa5f3a6
DE
5378 if (keep)
5379 {
5380 /* We've successfully allocated this compilation unit. Let our
5381 caller clean it up when finished with it. */
5382 discard_cleanups (free_cu_cleanup);
a2ce51a0 5383
6aa5f3a6
DE
5384 /* We can only discard free_cu_cleanup and all subsequent cleanups.
5385 So we have to manually free the abbrev table. */
5386 dwarf2_free_abbrev_table (cu);
a2ce51a0 5387
6aa5f3a6
DE
5388 /* Link this CU into read_in_chain. */
5389 this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5390 dwarf2_per_objfile->read_in_chain = this_cu;
5391 }
5392 else
5393 do_cleanups (free_cu_cleanup);
a2ce51a0 5394 }
a2ce51a0
DE
5395
5396 do_cleanups (cleanups);
5397}
5398
fd820528 5399/* Initialize a CU (or TU) and read its DIEs.
3019eac3 5400 If the CU defers to a DWO file, read the DWO file as well.
dee91e82 5401
f4dc4d17
DE
5402 ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
5403 Otherwise the table specified in the comp unit header is read in and used.
5404 This is an optimization for when we already have the abbrev table.
5405
dee91e82
DE
5406 If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
5407 Otherwise, a new CU is allocated with xmalloc.
5408
5409 If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
5410 read_in_chain. Otherwise the dwarf2_cu data is freed at the end.
5411
5412 WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
fd820528 5413 linker) then DIE_READER_FUNC will not get called. */
aaa75496 5414
70221824 5415static void
fd820528 5416init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
f4dc4d17 5417 struct abbrev_table *abbrev_table,
fd820528
DE
5418 int use_existing_cu, int keep,
5419 die_reader_func_ftype *die_reader_func,
5420 void *data)
c906108c 5421{
dee91e82 5422 struct objfile *objfile = dwarf2_per_objfile->objfile;
8a0459fd 5423 struct dwarf2_section_info *section = this_cu->section;
a32a8923 5424 bfd *abfd = get_section_bfd_owner (section);
dee91e82 5425 struct dwarf2_cu *cu;
d521ce57 5426 const gdb_byte *begin_info_ptr, *info_ptr;
dee91e82 5427 struct die_reader_specs reader;
d85a05f0 5428 struct die_info *comp_unit_die;
dee91e82 5429 int has_children;
d85a05f0 5430 struct attribute *attr;
365156ad 5431 struct cleanup *cleanups, *free_cu_cleanup = NULL;
dee91e82 5432 struct signatured_type *sig_type = NULL;
4bdcc0c1 5433 struct dwarf2_section_info *abbrev_section;
42e7ad6c
DE
5434 /* Non-zero if CU currently points to a DWO file and we need to
5435 reread it. When this happens we need to reread the skeleton die
a2ce51a0 5436 before we can reread the DWO file (this only applies to CUs, not TUs). */
42e7ad6c 5437 int rereading_dwo_cu = 0;
c906108c 5438
b4f54984 5439 if (dwarf_die_debug)
09406207
DE
5440 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5441 this_cu->is_debug_types ? "type" : "comp",
5442 this_cu->offset.sect_off);
5443
dee91e82
DE
5444 if (use_existing_cu)
5445 gdb_assert (keep);
23745b47 5446
a2ce51a0
DE
5447 /* If we're reading a TU directly from a DWO file, including a virtual DWO
5448 file (instead of going through the stub), short-circuit all of this. */
5449 if (this_cu->reading_dwo_directly)
5450 {
5451 /* Narrow down the scope of possibilities to have to understand. */
5452 gdb_assert (this_cu->is_debug_types);
5453 gdb_assert (abbrev_table == NULL);
6aa5f3a6
DE
5454 init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
5455 die_reader_func, data);
a2ce51a0
DE
5456 return;
5457 }
5458
dee91e82
DE
5459 cleanups = make_cleanup (null_cleanup, NULL);
5460
5461 /* This is cheap if the section is already read in. */
5462 dwarf2_read_section (objfile, section);
5463
5464 begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
36586728
TT
5465
5466 abbrev_section = get_abbrev_section_for_cu (this_cu);
dee91e82
DE
5467
5468 if (use_existing_cu && this_cu->cu != NULL)
5469 {
5470 cu = this_cu->cu;
42e7ad6c
DE
5471 /* If this CU is from a DWO file we need to start over, we need to
5472 refetch the attributes from the skeleton CU.
5473 This could be optimized by retrieving those attributes from when we
5474 were here the first time: the previous comp_unit_die was stored in
5475 comp_unit_obstack. But there's no data yet that we need this
5476 optimization. */
5477 if (cu->dwo_unit != NULL)
5478 rereading_dwo_cu = 1;
dee91e82
DE
5479 }
5480 else
5481 {
5482 /* If !use_existing_cu, this_cu->cu must be NULL. */
5483 gdb_assert (this_cu->cu == NULL);
8d749320 5484 cu = XNEW (struct dwarf2_cu);
dee91e82 5485 init_one_comp_unit (cu, this_cu);
dee91e82 5486 /* If an error occurs while loading, release our storage. */
365156ad 5487 free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
42e7ad6c 5488 }
dee91e82 5489
b0c7bfa9 5490 /* Get the header. */
42e7ad6c
DE
5491 if (cu->header.first_die_offset.cu_off != 0 && ! rereading_dwo_cu)
5492 {
5493 /* We already have the header, there's no need to read it in again. */
5494 info_ptr += cu->header.first_die_offset.cu_off;
5495 }
5496 else
5497 {
3019eac3 5498 if (this_cu->is_debug_types)
dee91e82
DE
5499 {
5500 ULONGEST signature;
42e7ad6c 5501 cu_offset type_offset_in_tu;
dee91e82 5502
4bdcc0c1
DE
5503 info_ptr = read_and_check_type_unit_head (&cu->header, section,
5504 abbrev_section, info_ptr,
42e7ad6c
DE
5505 &signature,
5506 &type_offset_in_tu);
dee91e82 5507
42e7ad6c
DE
5508 /* Since per_cu is the first member of struct signatured_type,
5509 we can go from a pointer to one to a pointer to the other. */
5510 sig_type = (struct signatured_type *) this_cu;
5511 gdb_assert (sig_type->signature == signature);
5512 gdb_assert (sig_type->type_offset_in_tu.cu_off
5513 == type_offset_in_tu.cu_off);
dee91e82
DE
5514 gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5515
42e7ad6c
DE
5516 /* LENGTH has not been set yet for type units if we're
5517 using .gdb_index. */
1ce1cefd 5518 this_cu->length = get_cu_length (&cu->header);
3019eac3
DE
5519
5520 /* Establish the type offset that can be used to lookup the type. */
5521 sig_type->type_offset_in_section.sect_off =
5522 this_cu->offset.sect_off + sig_type->type_offset_in_tu.cu_off;
dee91e82
DE
5523 }
5524 else
5525 {
4bdcc0c1
DE
5526 info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5527 abbrev_section,
5528 info_ptr, 0);
dee91e82
DE
5529
5530 gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
1ce1cefd 5531 gdb_assert (this_cu->length == get_cu_length (&cu->header));
dee91e82
DE
5532 }
5533 }
10b3939b 5534
6caca83c 5535 /* Skip dummy compilation units. */
dee91e82 5536 if (info_ptr >= begin_info_ptr + this_cu->length
6caca83c
CC
5537 || peek_abbrev_code (abfd, info_ptr) == 0)
5538 {
dee91e82 5539 do_cleanups (cleanups);
21b2bd31 5540 return;
6caca83c
CC
5541 }
5542
433df2d4
DE
5543 /* If we don't have them yet, read the abbrevs for this compilation unit.
5544 And if we need to read them now, make sure they're freed when we're
42e7ad6c
DE
5545 done. Note that it's important that if the CU had an abbrev table
5546 on entry we don't free it when we're done: Somewhere up the call stack
5547 it may be in use. */
f4dc4d17
DE
5548 if (abbrev_table != NULL)
5549 {
5550 gdb_assert (cu->abbrev_table == NULL);
5551 gdb_assert (cu->header.abbrev_offset.sect_off
5552 == abbrev_table->offset.sect_off);
5553 cu->abbrev_table = abbrev_table;
5554 }
5555 else if (cu->abbrev_table == NULL)
dee91e82 5556 {
4bdcc0c1 5557 dwarf2_read_abbrevs (cu, abbrev_section);
dee91e82
DE
5558 make_cleanup (dwarf2_free_abbrev_table, cu);
5559 }
42e7ad6c
DE
5560 else if (rereading_dwo_cu)
5561 {
5562 dwarf2_free_abbrev_table (cu);
5563 dwarf2_read_abbrevs (cu, abbrev_section);
5564 }
af703f96 5565
dee91e82 5566 /* Read the top level CU/TU die. */
3019eac3 5567 init_cu_die_reader (&reader, cu, section, NULL);
dee91e82 5568 info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
93311388 5569
b0c7bfa9
DE
5570 /* If we are in a DWO stub, process it and then read in the "real" CU/TU
5571 from the DWO file.
5572 Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
5573 DWO CU, that this test will fail (the attribute will not be present). */
3019eac3
DE
5574 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5575 if (attr)
5576 {
3019eac3 5577 struct dwo_unit *dwo_unit;
b0c7bfa9 5578 struct die_info *dwo_comp_unit_die;
3019eac3
DE
5579
5580 if (has_children)
6a506a2d
DE
5581 {
5582 complaint (&symfile_complaints,
5583 _("compilation unit with DW_AT_GNU_dwo_name"
5584 " has children (offset 0x%x) [in module %s]"),
5585 this_cu->offset.sect_off, bfd_get_filename (abfd));
5586 }
b0c7bfa9 5587 dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
6a506a2d 5588 if (dwo_unit != NULL)
3019eac3 5589 {
6a506a2d
DE
5590 if (read_cutu_die_from_dwo (this_cu, dwo_unit,
5591 abbrev_table != NULL,
a2ce51a0 5592 comp_unit_die, NULL,
6a506a2d
DE
5593 &reader, &info_ptr,
5594 &dwo_comp_unit_die, &has_children) == 0)
5595 {
5596 /* Dummy die. */
5597 do_cleanups (cleanups);
5598 return;
5599 }
5600 comp_unit_die = dwo_comp_unit_die;
5601 }
5602 else
5603 {
5604 /* Yikes, we couldn't find the rest of the DIE, we only have
5605 the stub. A complaint has already been logged. There's
5606 not much more we can do except pass on the stub DIE to
5607 die_reader_func. We don't want to throw an error on bad
5608 debug info. */
3019eac3
DE
5609 }
5610 }
5611
b0c7bfa9 5612 /* All of the above is setup for this call. Yikes. */
dee91e82
DE
5613 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5614
b0c7bfa9 5615 /* Done, clean up. */
365156ad 5616 if (free_cu_cleanup != NULL)
348e048f 5617 {
365156ad
TT
5618 if (keep)
5619 {
5620 /* We've successfully allocated this compilation unit. Let our
5621 caller clean it up when finished with it. */
5622 discard_cleanups (free_cu_cleanup);
dee91e82 5623
365156ad
TT
5624 /* We can only discard free_cu_cleanup and all subsequent cleanups.
5625 So we have to manually free the abbrev table. */
5626 dwarf2_free_abbrev_table (cu);
dee91e82 5627
365156ad
TT
5628 /* Link this CU into read_in_chain. */
5629 this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5630 dwarf2_per_objfile->read_in_chain = this_cu;
5631 }
5632 else
5633 do_cleanups (free_cu_cleanup);
348e048f 5634 }
365156ad
TT
5635
5636 do_cleanups (cleanups);
dee91e82
DE
5637}
5638
33e80786
DE
5639/* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
5640 DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
5641 to have already done the lookup to find the DWO file).
dee91e82
DE
5642
5643 The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
3019eac3 5644 THIS_CU->is_debug_types, but nothing else.
dee91e82
DE
5645
5646 We fill in THIS_CU->length.
5647
5648 WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5649 linker) then DIE_READER_FUNC will not get called.
5650
5651 THIS_CU->cu is always freed when done.
3019eac3
DE
5652 This is done in order to not leave THIS_CU->cu in a state where we have
5653 to care whether it refers to the "main" CU or the DWO CU. */
dee91e82
DE
5654
5655static void
5656init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
3019eac3 5657 struct dwo_file *dwo_file,
dee91e82
DE
5658 die_reader_func_ftype *die_reader_func,
5659 void *data)
5660{
5661 struct objfile *objfile = dwarf2_per_objfile->objfile;
8a0459fd 5662 struct dwarf2_section_info *section = this_cu->section;
a32a8923 5663 bfd *abfd = get_section_bfd_owner (section);
33e80786 5664 struct dwarf2_section_info *abbrev_section;
dee91e82 5665 struct dwarf2_cu cu;
d521ce57 5666 const gdb_byte *begin_info_ptr, *info_ptr;
dee91e82
DE
5667 struct die_reader_specs reader;
5668 struct cleanup *cleanups;
5669 struct die_info *comp_unit_die;
5670 int has_children;
5671
b4f54984 5672 if (dwarf_die_debug)
09406207
DE
5673 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5674 this_cu->is_debug_types ? "type" : "comp",
5675 this_cu->offset.sect_off);
5676
dee91e82
DE
5677 gdb_assert (this_cu->cu == NULL);
5678
33e80786
DE
5679 abbrev_section = (dwo_file != NULL
5680 ? &dwo_file->sections.abbrev
5681 : get_abbrev_section_for_cu (this_cu));
5682
dee91e82
DE
5683 /* This is cheap if the section is already read in. */
5684 dwarf2_read_section (objfile, section);
5685
5686 init_one_comp_unit (&cu, this_cu);
5687
5688 cleanups = make_cleanup (free_stack_comp_unit, &cu);
5689
5690 begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
4bdcc0c1
DE
5691 info_ptr = read_and_check_comp_unit_head (&cu.header, section,
5692 abbrev_section, info_ptr,
3019eac3 5693 this_cu->is_debug_types);
dee91e82 5694
1ce1cefd 5695 this_cu->length = get_cu_length (&cu.header);
dee91e82
DE
5696
5697 /* Skip dummy compilation units. */
5698 if (info_ptr >= begin_info_ptr + this_cu->length
5699 || peek_abbrev_code (abfd, info_ptr) == 0)
c906108c 5700 {
dee91e82 5701 do_cleanups (cleanups);
21b2bd31 5702 return;
93311388 5703 }
72bf9492 5704
dee91e82
DE
5705 dwarf2_read_abbrevs (&cu, abbrev_section);
5706 make_cleanup (dwarf2_free_abbrev_table, &cu);
5707
3019eac3 5708 init_cu_die_reader (&reader, &cu, section, dwo_file);
dee91e82
DE
5709 info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5710
5711 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5712
5713 do_cleanups (cleanups);
5714}
5715
3019eac3
DE
5716/* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
5717 does not lookup the specified DWO file.
5718 This cannot be used to read DWO files.
dee91e82
DE
5719
5720 THIS_CU->cu is always freed when done.
3019eac3
DE
5721 This is done in order to not leave THIS_CU->cu in a state where we have
5722 to care whether it refers to the "main" CU or the DWO CU.
5723 We can revisit this if the data shows there's a performance issue. */
dee91e82
DE
5724
5725static void
5726init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
5727 die_reader_func_ftype *die_reader_func,
5728 void *data)
5729{
33e80786 5730 init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
dee91e82 5731}
0018ea6f
DE
5732\f
5733/* Type Unit Groups.
dee91e82 5734
0018ea6f
DE
5735 Type Unit Groups are a way to collapse the set of all TUs (type units) into
5736 a more manageable set. The grouping is done by DW_AT_stmt_list entry
5737 so that all types coming from the same compilation (.o file) are grouped
5738 together. A future step could be to put the types in the same symtab as
5739 the CU the types ultimately came from. */
ff013f42 5740
f4dc4d17
DE
5741static hashval_t
5742hash_type_unit_group (const void *item)
5743{
094b34ac 5744 const struct type_unit_group *tu_group = item;
f4dc4d17 5745
094b34ac 5746 return hash_stmt_list_entry (&tu_group->hash);
f4dc4d17 5747}
348e048f
DE
5748
5749static int
f4dc4d17 5750eq_type_unit_group (const void *item_lhs, const void *item_rhs)
348e048f 5751{
f4dc4d17
DE
5752 const struct type_unit_group *lhs = item_lhs;
5753 const struct type_unit_group *rhs = item_rhs;
348e048f 5754
094b34ac 5755 return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
f4dc4d17 5756}
348e048f 5757
f4dc4d17
DE
5758/* Allocate a hash table for type unit groups. */
5759
5760static htab_t
5761allocate_type_unit_groups_table (void)
5762{
5763 return htab_create_alloc_ex (3,
5764 hash_type_unit_group,
5765 eq_type_unit_group,
5766 NULL,
5767 &dwarf2_per_objfile->objfile->objfile_obstack,
5768 hashtab_obstack_allocate,
5769 dummy_obstack_deallocate);
5770}
dee91e82 5771
f4dc4d17
DE
5772/* Type units that don't have DW_AT_stmt_list are grouped into their own
5773 partial symtabs. We combine several TUs per psymtab to not let the size
5774 of any one psymtab grow too big. */
5775#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
5776#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
dee91e82 5777
094b34ac 5778/* Helper routine for get_type_unit_group.
f4dc4d17
DE
5779 Create the type_unit_group object used to hold one or more TUs. */
5780
5781static struct type_unit_group *
094b34ac 5782create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
f4dc4d17
DE
5783{
5784 struct objfile *objfile = dwarf2_per_objfile->objfile;
094b34ac 5785 struct dwarf2_per_cu_data *per_cu;
f4dc4d17 5786 struct type_unit_group *tu_group;
f4dc4d17
DE
5787
5788 tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5789 struct type_unit_group);
094b34ac 5790 per_cu = &tu_group->per_cu;
f4dc4d17 5791 per_cu->objfile = objfile;
f4dc4d17 5792
094b34ac
DE
5793 if (dwarf2_per_objfile->using_index)
5794 {
5795 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5796 struct dwarf2_per_cu_quick_data);
094b34ac
DE
5797 }
5798 else
5799 {
5800 unsigned int line_offset = line_offset_struct.sect_off;
5801 struct partial_symtab *pst;
5802 char *name;
5803
5804 /* Give the symtab a useful name for debug purposes. */
5805 if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
5806 name = xstrprintf ("<type_units_%d>",
5807 (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
5808 else
5809 name = xstrprintf ("<type_units_at_0x%x>", line_offset);
5810
5811 pst = create_partial_symtab (per_cu, name);
5812 pst->anonymous = 1;
f4dc4d17 5813
094b34ac
DE
5814 xfree (name);
5815 }
f4dc4d17 5816
094b34ac
DE
5817 tu_group->hash.dwo_unit = cu->dwo_unit;
5818 tu_group->hash.line_offset = line_offset_struct;
f4dc4d17
DE
5819
5820 return tu_group;
5821}
5822
094b34ac
DE
5823/* Look up the type_unit_group for type unit CU, and create it if necessary.
5824 STMT_LIST is a DW_AT_stmt_list attribute. */
f4dc4d17
DE
5825
5826static struct type_unit_group *
ff39bb5e 5827get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
f4dc4d17
DE
5828{
5829 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
5830 struct type_unit_group *tu_group;
5831 void **slot;
5832 unsigned int line_offset;
5833 struct type_unit_group type_unit_group_for_lookup;
5834
5835 if (dwarf2_per_objfile->type_unit_groups == NULL)
5836 {
5837 dwarf2_per_objfile->type_unit_groups =
5838 allocate_type_unit_groups_table ();
5839 }
5840
5841 /* Do we need to create a new group, or can we use an existing one? */
5842
5843 if (stmt_list)
5844 {
5845 line_offset = DW_UNSND (stmt_list);
5846 ++tu_stats->nr_symtab_sharers;
5847 }
5848 else
5849 {
5850 /* Ugh, no stmt_list. Rare, but we have to handle it.
5851 We can do various things here like create one group per TU or
5852 spread them over multiple groups to split up the expansion work.
5853 To avoid worst case scenarios (too many groups or too large groups)
5854 we, umm, group them in bunches. */
5855 line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
5856 | (tu_stats->nr_stmt_less_type_units
5857 / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
5858 ++tu_stats->nr_stmt_less_type_units;
5859 }
5860
094b34ac
DE
5861 type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
5862 type_unit_group_for_lookup.hash.line_offset.sect_off = line_offset;
f4dc4d17
DE
5863 slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
5864 &type_unit_group_for_lookup, INSERT);
5865 if (*slot != NULL)
5866 {
5867 tu_group = *slot;
5868 gdb_assert (tu_group != NULL);
5869 }
5870 else
5871 {
5872 sect_offset line_offset_struct;
5873
5874 line_offset_struct.sect_off = line_offset;
094b34ac 5875 tu_group = create_type_unit_group (cu, line_offset_struct);
f4dc4d17
DE
5876 *slot = tu_group;
5877 ++tu_stats->nr_symtabs;
5878 }
5879
5880 return tu_group;
5881}
0018ea6f
DE
5882\f
5883/* Partial symbol tables. */
5884
5885/* Create a psymtab named NAME and assign it to PER_CU.
5886
5887 The caller must fill in the following details:
5888 dirname, textlow, texthigh. */
5889
5890static struct partial_symtab *
5891create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
5892{
5893 struct objfile *objfile = per_cu->objfile;
5894 struct partial_symtab *pst;
5895
18a94d75 5896 pst = start_psymtab_common (objfile, name, 0,
0018ea6f
DE
5897 objfile->global_psymbols.next,
5898 objfile->static_psymbols.next);
5899
5900 pst->psymtabs_addrmap_supported = 1;
5901
5902 /* This is the glue that links PST into GDB's symbol API. */
5903 pst->read_symtab_private = per_cu;
5904 pst->read_symtab = dwarf2_read_symtab;
5905 per_cu->v.psymtab = pst;
5906
5907 return pst;
5908}
5909
b93601f3
TT
5910/* The DATA object passed to process_psymtab_comp_unit_reader has this
5911 type. */
5912
5913struct process_psymtab_comp_unit_data
5914{
5915 /* True if we are reading a DW_TAG_partial_unit. */
5916
5917 int want_partial_unit;
5918
5919 /* The "pretend" language that is used if the CU doesn't declare a
5920 language. */
5921
5922 enum language pretend_language;
5923};
5924
0018ea6f
DE
5925/* die_reader_func for process_psymtab_comp_unit. */
5926
5927static void
5928process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 5929 const gdb_byte *info_ptr,
0018ea6f
DE
5930 struct die_info *comp_unit_die,
5931 int has_children,
5932 void *data)
5933{
5934 struct dwarf2_cu *cu = reader->cu;
5935 struct objfile *objfile = cu->objfile;
3e29f34a 5936 struct gdbarch *gdbarch = get_objfile_arch (objfile);
0018ea6f 5937 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
0018ea6f
DE
5938 CORE_ADDR baseaddr;
5939 CORE_ADDR best_lowpc = 0, best_highpc = 0;
5940 struct partial_symtab *pst;
5941 int has_pc_info;
5942 const char *filename;
b93601f3 5943 struct process_psymtab_comp_unit_data *info = data;
0018ea6f 5944
b93601f3 5945 if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
0018ea6f
DE
5946 return;
5947
5948 gdb_assert (! per_cu->is_debug_types);
5949
b93601f3 5950 prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
0018ea6f
DE
5951
5952 cu->list_in_scope = &file_symbols;
5953
5954 /* Allocate a new partial symbol table structure. */
7d45c7c3
KB
5955 filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
5956 if (filename == NULL)
0018ea6f 5957 filename = "";
0018ea6f
DE
5958
5959 pst = create_partial_symtab (per_cu, filename);
5960
5961 /* This must be done before calling dwarf2_build_include_psymtabs. */
7d45c7c3 5962 pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
0018ea6f
DE
5963
5964 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5965
5966 dwarf2_find_base_address (comp_unit_die, cu);
5967
5968 /* Possibly set the default values of LOWPC and HIGHPC from
5969 `DW_AT_ranges'. */
5970 has_pc_info = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
5971 &best_highpc, cu, pst);
5972 if (has_pc_info == 1 && best_lowpc < best_highpc)
5973 /* Store the contiguous range if it is not empty; it can be empty for
5974 CUs with no code. */
5975 addrmap_set_empty (objfile->psymtabs_addrmap,
3e29f34a
MR
5976 gdbarch_adjust_dwarf2_addr (gdbarch,
5977 best_lowpc + baseaddr),
5978 gdbarch_adjust_dwarf2_addr (gdbarch,
5979 best_highpc + baseaddr) - 1,
5980 pst);
0018ea6f
DE
5981
5982 /* Check if comp unit has_children.
5983 If so, read the rest of the partial symbols from this comp unit.
5984 If not, there's no more debug_info for this comp unit. */
5985 if (has_children)
5986 {
5987 struct partial_die_info *first_die;
5988 CORE_ADDR lowpc, highpc;
5989
5990 lowpc = ((CORE_ADDR) -1);
5991 highpc = ((CORE_ADDR) 0);
5992
5993 first_die = load_partial_dies (reader, info_ptr, 1);
5994
5995 scan_partial_symbols (first_die, &lowpc, &highpc,
5996 ! has_pc_info, cu);
5997
5998 /* If we didn't find a lowpc, set it to highpc to avoid
5999 complaints from `maint check'. */
6000 if (lowpc == ((CORE_ADDR) -1))
6001 lowpc = highpc;
6002
6003 /* If the compilation unit didn't have an explicit address range,
6004 then use the information extracted from its child dies. */
6005 if (! has_pc_info)
6006 {
6007 best_lowpc = lowpc;
6008 best_highpc = highpc;
6009 }
6010 }
3e29f34a
MR
6011 pst->textlow = gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr);
6012 pst->texthigh = gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr);
0018ea6f 6013
8763cede 6014 end_psymtab_common (objfile, pst);
0018ea6f
DE
6015
6016 if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
6017 {
6018 int i;
6019 int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6020 struct dwarf2_per_cu_data *iter;
6021
6022 /* Fill in 'dependencies' here; we fill in 'users' in a
6023 post-pass. */
6024 pst->number_of_dependencies = len;
8d749320
SM
6025 pst->dependencies =
6026 XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
0018ea6f
DE
6027 for (i = 0;
6028 VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
6029 i, iter);
6030 ++i)
6031 pst->dependencies[i] = iter->v.psymtab;
6032
6033 VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6034 }
6035
6036 /* Get the list of files included in the current compilation unit,
6037 and build a psymtab for each of them. */
6038 dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
6039
b4f54984 6040 if (dwarf_read_debug)
0018ea6f
DE
6041 {
6042 struct gdbarch *gdbarch = get_objfile_arch (objfile);
6043
6044 fprintf_unfiltered (gdb_stdlog,
6045 "Psymtab for %s unit @0x%x: %s - %s"
6046 ", %d global, %d static syms\n",
6047 per_cu->is_debug_types ? "type" : "comp",
6048 per_cu->offset.sect_off,
6049 paddress (gdbarch, pst->textlow),
6050 paddress (gdbarch, pst->texthigh),
6051 pst->n_global_syms, pst->n_static_syms);
6052 }
6053}
6054
6055/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6056 Process compilation unit THIS_CU for a psymtab. */
6057
6058static void
6059process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
b93601f3
TT
6060 int want_partial_unit,
6061 enum language pretend_language)
0018ea6f 6062{
b93601f3
TT
6063 struct process_psymtab_comp_unit_data info;
6064
0018ea6f
DE
6065 /* If this compilation unit was already read in, free the
6066 cached copy in order to read it in again. This is
6067 necessary because we skipped some symbols when we first
6068 read in the compilation unit (see load_partial_dies).
6069 This problem could be avoided, but the benefit is unclear. */
6070 if (this_cu->cu != NULL)
6071 free_one_cached_comp_unit (this_cu);
6072
6073 gdb_assert (! this_cu->is_debug_types);
b93601f3
TT
6074 info.want_partial_unit = want_partial_unit;
6075 info.pretend_language = pretend_language;
0018ea6f
DE
6076 init_cutu_and_read_dies (this_cu, NULL, 0, 0,
6077 process_psymtab_comp_unit_reader,
b93601f3 6078 &info);
0018ea6f
DE
6079
6080 /* Age out any secondary CUs. */
6081 age_cached_comp_units ();
6082}
f4dc4d17
DE
6083
6084/* Reader function for build_type_psymtabs. */
6085
6086static void
6087build_type_psymtabs_reader (const struct die_reader_specs *reader,
d521ce57 6088 const gdb_byte *info_ptr,
f4dc4d17
DE
6089 struct die_info *type_unit_die,
6090 int has_children,
6091 void *data)
6092{
6093 struct objfile *objfile = dwarf2_per_objfile->objfile;
6094 struct dwarf2_cu *cu = reader->cu;
6095 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
0186c6a7 6096 struct signatured_type *sig_type;
f4dc4d17
DE
6097 struct type_unit_group *tu_group;
6098 struct attribute *attr;
6099 struct partial_die_info *first_die;
6100 CORE_ADDR lowpc, highpc;
6101 struct partial_symtab *pst;
6102
6103 gdb_assert (data == NULL);
0186c6a7
DE
6104 gdb_assert (per_cu->is_debug_types);
6105 sig_type = (struct signatured_type *) per_cu;
f4dc4d17
DE
6106
6107 if (! has_children)
6108 return;
6109
6110 attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
094b34ac 6111 tu_group = get_type_unit_group (cu, attr);
f4dc4d17 6112
0186c6a7 6113 VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
f4dc4d17
DE
6114
6115 prepare_one_comp_unit (cu, type_unit_die, language_minimal);
6116 cu->list_in_scope = &file_symbols;
6117 pst = create_partial_symtab (per_cu, "");
6118 pst->anonymous = 1;
6119
6120 first_die = load_partial_dies (reader, info_ptr, 1);
6121
6122 lowpc = (CORE_ADDR) -1;
6123 highpc = (CORE_ADDR) 0;
6124 scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
6125
8763cede 6126 end_psymtab_common (objfile, pst);
f4dc4d17
DE
6127}
6128
73051182
DE
6129/* Struct used to sort TUs by their abbreviation table offset. */
6130
6131struct tu_abbrev_offset
6132{
6133 struct signatured_type *sig_type;
6134 sect_offset abbrev_offset;
6135};
6136
6137/* Helper routine for build_type_psymtabs_1, passed to qsort. */
6138
6139static int
6140sort_tu_by_abbrev_offset (const void *ap, const void *bp)
6141{
6142 const struct tu_abbrev_offset * const *a = ap;
6143 const struct tu_abbrev_offset * const *b = bp;
6144 unsigned int aoff = (*a)->abbrev_offset.sect_off;
6145 unsigned int boff = (*b)->abbrev_offset.sect_off;
6146
6147 return (aoff > boff) - (aoff < boff);
6148}
6149
6150/* Efficiently read all the type units.
6151 This does the bulk of the work for build_type_psymtabs.
6152
6153 The efficiency is because we sort TUs by the abbrev table they use and
6154 only read each abbrev table once. In one program there are 200K TUs
6155 sharing 8K abbrev tables.
6156
6157 The main purpose of this function is to support building the
6158 dwarf2_per_objfile->type_unit_groups table.
6159 TUs typically share the DW_AT_stmt_list of the CU they came from, so we
6160 can collapse the search space by grouping them by stmt_list.
6161 The savings can be significant, in the same program from above the 200K TUs
6162 share 8K stmt_list tables.
6163
6164 FUNC is expected to call get_type_unit_group, which will create the
6165 struct type_unit_group if necessary and add it to
6166 dwarf2_per_objfile->type_unit_groups. */
6167
6168static void
6169build_type_psymtabs_1 (void)
6170{
6171 struct objfile *objfile = dwarf2_per_objfile->objfile;
6172 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6173 struct cleanup *cleanups;
6174 struct abbrev_table *abbrev_table;
6175 sect_offset abbrev_offset;
6176 struct tu_abbrev_offset *sorted_by_abbrev;
6177 struct type_unit_group **iter;
6178 int i;
6179
6180 /* It's up to the caller to not call us multiple times. */
6181 gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
6182
6183 if (dwarf2_per_objfile->n_type_units == 0)
6184 return;
6185
6186 /* TUs typically share abbrev tables, and there can be way more TUs than
6187 abbrev tables. Sort by abbrev table to reduce the number of times we
6188 read each abbrev table in.
6189 Alternatives are to punt or to maintain a cache of abbrev tables.
6190 This is simpler and efficient enough for now.
6191
6192 Later we group TUs by their DW_AT_stmt_list value (as this defines the
6193 symtab to use). Typically TUs with the same abbrev offset have the same
6194 stmt_list value too so in practice this should work well.
6195
6196 The basic algorithm here is:
6197
6198 sort TUs by abbrev table
6199 for each TU with same abbrev table:
6200 read abbrev table if first user
6201 read TU top level DIE
6202 [IWBN if DWO skeletons had DW_AT_stmt_list]
6203 call FUNC */
6204
b4f54984 6205 if (dwarf_read_debug)
73051182
DE
6206 fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
6207
6208 /* Sort in a separate table to maintain the order of all_type_units
6209 for .gdb_index: TU indices directly index all_type_units. */
6210 sorted_by_abbrev = XNEWVEC (struct tu_abbrev_offset,
6211 dwarf2_per_objfile->n_type_units);
6212 for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6213 {
6214 struct signatured_type *sig_type = dwarf2_per_objfile->all_type_units[i];
6215
6216 sorted_by_abbrev[i].sig_type = sig_type;
6217 sorted_by_abbrev[i].abbrev_offset =
6218 read_abbrev_offset (sig_type->per_cu.section,
6219 sig_type->per_cu.offset);
6220 }
6221 cleanups = make_cleanup (xfree, sorted_by_abbrev);
6222 qsort (sorted_by_abbrev, dwarf2_per_objfile->n_type_units,
6223 sizeof (struct tu_abbrev_offset), sort_tu_by_abbrev_offset);
6224
6225 abbrev_offset.sect_off = ~(unsigned) 0;
6226 abbrev_table = NULL;
6227 make_cleanup (abbrev_table_free_cleanup, &abbrev_table);
6228
6229 for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6230 {
6231 const struct tu_abbrev_offset *tu = &sorted_by_abbrev[i];
6232
6233 /* Switch to the next abbrev table if necessary. */
6234 if (abbrev_table == NULL
6235 || tu->abbrev_offset.sect_off != abbrev_offset.sect_off)
6236 {
6237 if (abbrev_table != NULL)
6238 {
6239 abbrev_table_free (abbrev_table);
6240 /* Reset to NULL in case abbrev_table_read_table throws
6241 an error: abbrev_table_free_cleanup will get called. */
6242 abbrev_table = NULL;
6243 }
6244 abbrev_offset = tu->abbrev_offset;
6245 abbrev_table =
6246 abbrev_table_read_table (&dwarf2_per_objfile->abbrev,
6247 abbrev_offset);
6248 ++tu_stats->nr_uniq_abbrev_tables;
6249 }
6250
6251 init_cutu_and_read_dies (&tu->sig_type->per_cu, abbrev_table, 0, 0,
6252 build_type_psymtabs_reader, NULL);
6253 }
6254
73051182 6255 do_cleanups (cleanups);
6aa5f3a6 6256}
73051182 6257
6aa5f3a6
DE
6258/* Print collected type unit statistics. */
6259
6260static void
6261print_tu_stats (void)
6262{
6263 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6264
6265 fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
6266 fprintf_unfiltered (gdb_stdlog, " %d TUs\n",
6267 dwarf2_per_objfile->n_type_units);
6268 fprintf_unfiltered (gdb_stdlog, " %d uniq abbrev tables\n",
6269 tu_stats->nr_uniq_abbrev_tables);
6270 fprintf_unfiltered (gdb_stdlog, " %d symtabs from stmt_list entries\n",
6271 tu_stats->nr_symtabs);
6272 fprintf_unfiltered (gdb_stdlog, " %d symtab sharers\n",
6273 tu_stats->nr_symtab_sharers);
6274 fprintf_unfiltered (gdb_stdlog, " %d type units without a stmt_list\n",
6275 tu_stats->nr_stmt_less_type_units);
6276 fprintf_unfiltered (gdb_stdlog, " %d all_type_units reallocs\n",
6277 tu_stats->nr_all_type_units_reallocs);
73051182
DE
6278}
6279
f4dc4d17
DE
6280/* Traversal function for build_type_psymtabs. */
6281
6282static int
6283build_type_psymtab_dependencies (void **slot, void *info)
6284{
6285 struct objfile *objfile = dwarf2_per_objfile->objfile;
6286 struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
094b34ac 6287 struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
f4dc4d17 6288 struct partial_symtab *pst = per_cu->v.psymtab;
0186c6a7
DE
6289 int len = VEC_length (sig_type_ptr, tu_group->tus);
6290 struct signatured_type *iter;
f4dc4d17
DE
6291 int i;
6292
6293 gdb_assert (len > 0);
0186c6a7 6294 gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
f4dc4d17
DE
6295
6296 pst->number_of_dependencies = len;
8d749320
SM
6297 pst->dependencies =
6298 XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
f4dc4d17 6299 for (i = 0;
0186c6a7 6300 VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
f4dc4d17
DE
6301 ++i)
6302 {
0186c6a7
DE
6303 gdb_assert (iter->per_cu.is_debug_types);
6304 pst->dependencies[i] = iter->per_cu.v.psymtab;
796a7ff8 6305 iter->type_unit_group = tu_group;
f4dc4d17
DE
6306 }
6307
0186c6a7 6308 VEC_free (sig_type_ptr, tu_group->tus);
348e048f
DE
6309
6310 return 1;
6311}
6312
6313/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6314 Build partial symbol tables for the .debug_types comp-units. */
6315
6316static void
6317build_type_psymtabs (struct objfile *objfile)
6318{
0e50663e 6319 if (! create_all_type_units (objfile))
348e048f
DE
6320 return;
6321
73051182 6322 build_type_psymtabs_1 ();
6aa5f3a6 6323}
f4dc4d17 6324
6aa5f3a6
DE
6325/* Traversal function for process_skeletonless_type_unit.
6326 Read a TU in a DWO file and build partial symbols for it. */
6327
6328static int
6329process_skeletonless_type_unit (void **slot, void *info)
6330{
6331 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
6332 struct objfile *objfile = info;
6333 struct signatured_type find_entry, *entry;
6334
6335 /* If this TU doesn't exist in the global table, add it and read it in. */
6336
6337 if (dwarf2_per_objfile->signatured_types == NULL)
6338 {
6339 dwarf2_per_objfile->signatured_types
6340 = allocate_signatured_type_table (objfile);
6341 }
6342
6343 find_entry.signature = dwo_unit->signature;
6344 slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
6345 INSERT);
6346 /* If we've already seen this type there's nothing to do. What's happening
6347 is we're doing our own version of comdat-folding here. */
6348 if (*slot != NULL)
6349 return 1;
6350
6351 /* This does the job that create_all_type_units would have done for
6352 this TU. */
6353 entry = add_type_unit (dwo_unit->signature, slot);
6354 fill_in_sig_entry_from_dwo_entry (objfile, entry, dwo_unit);
6355 *slot = entry;
6356
6357 /* This does the job that build_type_psymtabs_1 would have done. */
6358 init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0,
6359 build_type_psymtabs_reader, NULL);
6360
6361 return 1;
6362}
6363
6364/* Traversal function for process_skeletonless_type_units. */
6365
6366static int
6367process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
6368{
6369 struct dwo_file *dwo_file = (struct dwo_file *) *slot;
6370
6371 if (dwo_file->tus != NULL)
6372 {
6373 htab_traverse_noresize (dwo_file->tus,
6374 process_skeletonless_type_unit, info);
6375 }
6376
6377 return 1;
6378}
6379
6380/* Scan all TUs of DWO files, verifying we've processed them.
6381 This is needed in case a TU was emitted without its skeleton.
6382 Note: This can't be done until we know what all the DWO files are. */
6383
6384static void
6385process_skeletonless_type_units (struct objfile *objfile)
6386{
6387 /* Skeletonless TUs in DWP files without .gdb_index is not supported yet. */
6388 if (get_dwp_file () == NULL
6389 && dwarf2_per_objfile->dwo_files != NULL)
6390 {
6391 htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
6392 process_dwo_file_for_skeletonless_type_units,
6393 objfile);
6394 }
348e048f
DE
6395}
6396
60606b2c
TT
6397/* A cleanup function that clears objfile's psymtabs_addrmap field. */
6398
6399static void
6400psymtabs_addrmap_cleanup (void *o)
6401{
6402 struct objfile *objfile = o;
ec61707d 6403
60606b2c
TT
6404 objfile->psymtabs_addrmap = NULL;
6405}
6406
95554aad
TT
6407/* Compute the 'user' field for each psymtab in OBJFILE. */
6408
6409static void
6410set_partial_user (struct objfile *objfile)
6411{
6412 int i;
6413
6414 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6415 {
8832e7e3 6416 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
95554aad
TT
6417 struct partial_symtab *pst = per_cu->v.psymtab;
6418 int j;
6419
36586728
TT
6420 if (pst == NULL)
6421 continue;
6422
95554aad
TT
6423 for (j = 0; j < pst->number_of_dependencies; ++j)
6424 {
6425 /* Set the 'user' field only if it is not already set. */
6426 if (pst->dependencies[j]->user == NULL)
6427 pst->dependencies[j]->user = pst;
6428 }
6429 }
6430}
6431
93311388
DE
6432/* Build the partial symbol table by doing a quick pass through the
6433 .debug_info and .debug_abbrev sections. */
72bf9492 6434
93311388 6435static void
c67a9c90 6436dwarf2_build_psymtabs_hard (struct objfile *objfile)
93311388 6437{
60606b2c
TT
6438 struct cleanup *back_to, *addrmap_cleanup;
6439 struct obstack temp_obstack;
21b2bd31 6440 int i;
93311388 6441
b4f54984 6442 if (dwarf_read_debug)
45cfd468
DE
6443 {
6444 fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
4262abfb 6445 objfile_name (objfile));
45cfd468
DE
6446 }
6447
98bfdba5
PA
6448 dwarf2_per_objfile->reading_partial_symbols = 1;
6449
be391dca 6450 dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
91c24f0a 6451
93311388
DE
6452 /* Any cached compilation units will be linked by the per-objfile
6453 read_in_chain. Make sure to free them when we're done. */
6454 back_to = make_cleanup (free_cached_comp_units, NULL);
72bf9492 6455
348e048f
DE
6456 build_type_psymtabs (objfile);
6457
93311388 6458 create_all_comp_units (objfile);
c906108c 6459
60606b2c
TT
6460 /* Create a temporary address map on a temporary obstack. We later
6461 copy this to the final obstack. */
6462 obstack_init (&temp_obstack);
6463 make_cleanup_obstack_free (&temp_obstack);
6464 objfile->psymtabs_addrmap = addrmap_create_mutable (&temp_obstack);
6465 addrmap_cleanup = make_cleanup (psymtabs_addrmap_cleanup, objfile);
72bf9492 6466
21b2bd31 6467 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
93311388 6468 {
8832e7e3 6469 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
aaa75496 6470
b93601f3 6471 process_psymtab_comp_unit (per_cu, 0, language_minimal);
c906108c 6472 }
ff013f42 6473
6aa5f3a6
DE
6474 /* This has to wait until we read the CUs, we need the list of DWOs. */
6475 process_skeletonless_type_units (objfile);
6476
6477 /* Now that all TUs have been processed we can fill in the dependencies. */
6478 if (dwarf2_per_objfile->type_unit_groups != NULL)
6479 {
6480 htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
6481 build_type_psymtab_dependencies, NULL);
6482 }
6483
b4f54984 6484 if (dwarf_read_debug)
6aa5f3a6
DE
6485 print_tu_stats ();
6486
95554aad
TT
6487 set_partial_user (objfile);
6488
ff013f42
JK
6489 objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
6490 &objfile->objfile_obstack);
60606b2c 6491 discard_cleanups (addrmap_cleanup);
ff013f42 6492
ae038cb0 6493 do_cleanups (back_to);
45cfd468 6494
b4f54984 6495 if (dwarf_read_debug)
45cfd468 6496 fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
4262abfb 6497 objfile_name (objfile));
ae038cb0
DJ
6498}
6499
3019eac3 6500/* die_reader_func for load_partial_comp_unit. */
ae038cb0
DJ
6501
6502static void
dee91e82 6503load_partial_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 6504 const gdb_byte *info_ptr,
dee91e82
DE
6505 struct die_info *comp_unit_die,
6506 int has_children,
6507 void *data)
ae038cb0 6508{
dee91e82 6509 struct dwarf2_cu *cu = reader->cu;
ae038cb0 6510
95554aad 6511 prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
ae038cb0 6512
ae038cb0
DJ
6513 /* Check if comp unit has_children.
6514 If so, read the rest of the partial symbols from this comp unit.
0963b4bd 6515 If not, there's no more debug_info for this comp unit. */
d85a05f0 6516 if (has_children)
dee91e82
DE
6517 load_partial_dies (reader, info_ptr, 0);
6518}
98bfdba5 6519
dee91e82
DE
6520/* Load the partial DIEs for a secondary CU into memory.
6521 This is also used when rereading a primary CU with load_all_dies. */
c5b7e1cb 6522
dee91e82
DE
6523static void
6524load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
6525{
f4dc4d17
DE
6526 init_cutu_and_read_dies (this_cu, NULL, 1, 1,
6527 load_partial_comp_unit_reader, NULL);
ae038cb0
DJ
6528}
6529
ae038cb0 6530static void
36586728
TT
6531read_comp_units_from_section (struct objfile *objfile,
6532 struct dwarf2_section_info *section,
6533 unsigned int is_dwz,
6534 int *n_allocated,
6535 int *n_comp_units,
6536 struct dwarf2_per_cu_data ***all_comp_units)
ae038cb0 6537{
d521ce57 6538 const gdb_byte *info_ptr;
a32a8923 6539 bfd *abfd = get_section_bfd_owner (section);
be391dca 6540
b4f54984 6541 if (dwarf_read_debug)
bf6af496 6542 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
a32a8923
DE
6543 get_section_name (section),
6544 get_section_file_name (section));
bf6af496 6545
36586728 6546 dwarf2_read_section (objfile, section);
ae038cb0 6547
36586728 6548 info_ptr = section->buffer;
6e70227d 6549
36586728 6550 while (info_ptr < section->buffer + section->size)
ae038cb0 6551 {
c764a876 6552 unsigned int length, initial_length_size;
ae038cb0 6553 struct dwarf2_per_cu_data *this_cu;
b64f50a1 6554 sect_offset offset;
ae038cb0 6555
36586728 6556 offset.sect_off = info_ptr - section->buffer;
ae038cb0
DJ
6557
6558 /* Read just enough information to find out where the next
6559 compilation unit is. */
36586728 6560 length = read_initial_length (abfd, info_ptr, &initial_length_size);
ae038cb0
DJ
6561
6562 /* Save the compilation unit for later lookup. */
8d749320 6563 this_cu = XOBNEW (&objfile->objfile_obstack, struct dwarf2_per_cu_data);
ae038cb0
DJ
6564 memset (this_cu, 0, sizeof (*this_cu));
6565 this_cu->offset = offset;
c764a876 6566 this_cu->length = length + initial_length_size;
36586728 6567 this_cu->is_dwz = is_dwz;
9291a0cd 6568 this_cu->objfile = objfile;
8a0459fd 6569 this_cu->section = section;
ae038cb0 6570
36586728 6571 if (*n_comp_units == *n_allocated)
ae038cb0 6572 {
36586728
TT
6573 *n_allocated *= 2;
6574 *all_comp_units = xrealloc (*all_comp_units,
6575 *n_allocated
6576 * sizeof (struct dwarf2_per_cu_data *));
ae038cb0 6577 }
36586728
TT
6578 (*all_comp_units)[*n_comp_units] = this_cu;
6579 ++*n_comp_units;
ae038cb0
DJ
6580
6581 info_ptr = info_ptr + this_cu->length;
6582 }
36586728
TT
6583}
6584
6585/* Create a list of all compilation units in OBJFILE.
6586 This is only done for -readnow and building partial symtabs. */
6587
6588static void
6589create_all_comp_units (struct objfile *objfile)
6590{
6591 int n_allocated;
6592 int n_comp_units;
6593 struct dwarf2_per_cu_data **all_comp_units;
4db1a1dc 6594 struct dwz_file *dwz;
36586728
TT
6595
6596 n_comp_units = 0;
6597 n_allocated = 10;
8d749320 6598 all_comp_units = XNEWVEC (struct dwarf2_per_cu_data *, n_allocated);
36586728
TT
6599
6600 read_comp_units_from_section (objfile, &dwarf2_per_objfile->info, 0,
6601 &n_allocated, &n_comp_units, &all_comp_units);
6602
4db1a1dc
TT
6603 dwz = dwarf2_get_dwz_file ();
6604 if (dwz != NULL)
6605 read_comp_units_from_section (objfile, &dwz->info, 1,
6606 &n_allocated, &n_comp_units,
6607 &all_comp_units);
ae038cb0 6608
8d749320
SM
6609 dwarf2_per_objfile->all_comp_units = XOBNEWVEC (&objfile->objfile_obstack,
6610 struct dwarf2_per_cu_data *,
6611 n_comp_units);
ae038cb0
DJ
6612 memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
6613 n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6614 xfree (all_comp_units);
6615 dwarf2_per_objfile->n_comp_units = n_comp_units;
c906108c
SS
6616}
6617
5734ee8b 6618/* Process all loaded DIEs for compilation unit CU, starting at
cdc07690 6619 FIRST_DIE. The caller should pass SET_ADDRMAP == 1 if the compilation
5734ee8b 6620 unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
cdc07690
YQ
6621 DW_AT_ranges). See the comments of add_partial_subprogram on how
6622 SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated. */
c906108c 6623
72bf9492
DJ
6624static void
6625scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
cdc07690
YQ
6626 CORE_ADDR *highpc, int set_addrmap,
6627 struct dwarf2_cu *cu)
c906108c 6628{
72bf9492 6629 struct partial_die_info *pdi;
c906108c 6630
91c24f0a
DC
6631 /* Now, march along the PDI's, descending into ones which have
6632 interesting children but skipping the children of the other ones,
6633 until we reach the end of the compilation unit. */
c906108c 6634
72bf9492 6635 pdi = first_die;
91c24f0a 6636
72bf9492
DJ
6637 while (pdi != NULL)
6638 {
6639 fixup_partial_die (pdi, cu);
c906108c 6640
f55ee35c 6641 /* Anonymous namespaces or modules have no name but have interesting
91c24f0a
DC
6642 children, so we need to look at them. Ditto for anonymous
6643 enums. */
933c6fe4 6644
72bf9492 6645 if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
95554aad
TT
6646 || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
6647 || pdi->tag == DW_TAG_imported_unit)
c906108c 6648 {
72bf9492 6649 switch (pdi->tag)
c906108c
SS
6650 {
6651 case DW_TAG_subprogram:
cdc07690 6652 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
c906108c 6653 break;
72929c62 6654 case DW_TAG_constant:
c906108c
SS
6655 case DW_TAG_variable:
6656 case DW_TAG_typedef:
91c24f0a 6657 case DW_TAG_union_type:
72bf9492 6658 if (!pdi->is_declaration)
63d06c5c 6659 {
72bf9492 6660 add_partial_symbol (pdi, cu);
63d06c5c
DC
6661 }
6662 break;
c906108c 6663 case DW_TAG_class_type:
680b30c7 6664 case DW_TAG_interface_type:
c906108c 6665 case DW_TAG_structure_type:
72bf9492 6666 if (!pdi->is_declaration)
c906108c 6667 {
72bf9492 6668 add_partial_symbol (pdi, cu);
c906108c
SS
6669 }
6670 break;
91c24f0a 6671 case DW_TAG_enumeration_type:
72bf9492
DJ
6672 if (!pdi->is_declaration)
6673 add_partial_enumeration (pdi, cu);
c906108c
SS
6674 break;
6675 case DW_TAG_base_type:
a02abb62 6676 case DW_TAG_subrange_type:
c906108c 6677 /* File scope base type definitions are added to the partial
c5aa993b 6678 symbol table. */
72bf9492 6679 add_partial_symbol (pdi, cu);
c906108c 6680 break;
d9fa45fe 6681 case DW_TAG_namespace:
cdc07690 6682 add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
91c24f0a 6683 break;
5d7cb8df 6684 case DW_TAG_module:
cdc07690 6685 add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
5d7cb8df 6686 break;
95554aad
TT
6687 case DW_TAG_imported_unit:
6688 {
6689 struct dwarf2_per_cu_data *per_cu;
6690
f4dc4d17
DE
6691 /* For now we don't handle imported units in type units. */
6692 if (cu->per_cu->is_debug_types)
6693 {
6694 error (_("Dwarf Error: DW_TAG_imported_unit is not"
6695 " supported in type units [in module %s]"),
4262abfb 6696 objfile_name (cu->objfile));
f4dc4d17
DE
6697 }
6698
95554aad 6699 per_cu = dwarf2_find_containing_comp_unit (pdi->d.offset,
36586728 6700 pdi->is_dwz,
95554aad
TT
6701 cu->objfile);
6702
6703 /* Go read the partial unit, if needed. */
6704 if (per_cu->v.psymtab == NULL)
b93601f3 6705 process_psymtab_comp_unit (per_cu, 1, cu->language);
95554aad 6706
f4dc4d17 6707 VEC_safe_push (dwarf2_per_cu_ptr,
796a7ff8 6708 cu->per_cu->imported_symtabs, per_cu);
95554aad
TT
6709 }
6710 break;
74921315
KS
6711 case DW_TAG_imported_declaration:
6712 add_partial_symbol (pdi, cu);
6713 break;
c906108c
SS
6714 default:
6715 break;
6716 }
6717 }
6718
72bf9492
DJ
6719 /* If the die has a sibling, skip to the sibling. */
6720
6721 pdi = pdi->die_sibling;
6722 }
6723}
6724
6725/* Functions used to compute the fully scoped name of a partial DIE.
91c24f0a 6726
72bf9492 6727 Normally, this is simple. For C++, the parent DIE's fully scoped
987504bb
JJ
6728 name is concatenated with "::" and the partial DIE's name. For
6729 Java, the same thing occurs except that "." is used instead of "::".
72bf9492
DJ
6730 Enumerators are an exception; they use the scope of their parent
6731 enumeration type, i.e. the name of the enumeration type is not
6732 prepended to the enumerator.
91c24f0a 6733
72bf9492
DJ
6734 There are two complexities. One is DW_AT_specification; in this
6735 case "parent" means the parent of the target of the specification,
6736 instead of the direct parent of the DIE. The other is compilers
6737 which do not emit DW_TAG_namespace; in this case we try to guess
6738 the fully qualified name of structure types from their members'
6739 linkage names. This must be done using the DIE's children rather
6740 than the children of any DW_AT_specification target. We only need
6741 to do this for structures at the top level, i.e. if the target of
6742 any DW_AT_specification (if any; otherwise the DIE itself) does not
6743 have a parent. */
6744
6745/* Compute the scope prefix associated with PDI's parent, in
6746 compilation unit CU. The result will be allocated on CU's
6747 comp_unit_obstack, or a copy of the already allocated PDI->NAME
6748 field. NULL is returned if no prefix is necessary. */
15d034d0 6749static const char *
72bf9492
DJ
6750partial_die_parent_scope (struct partial_die_info *pdi,
6751 struct dwarf2_cu *cu)
6752{
15d034d0 6753 const char *grandparent_scope;
72bf9492 6754 struct partial_die_info *parent, *real_pdi;
91c24f0a 6755
72bf9492
DJ
6756 /* We need to look at our parent DIE; if we have a DW_AT_specification,
6757 then this means the parent of the specification DIE. */
6758
6759 real_pdi = pdi;
72bf9492 6760 while (real_pdi->has_specification)
36586728
TT
6761 real_pdi = find_partial_die (real_pdi->spec_offset,
6762 real_pdi->spec_is_dwz, cu);
72bf9492
DJ
6763
6764 parent = real_pdi->die_parent;
6765 if (parent == NULL)
6766 return NULL;
6767
6768 if (parent->scope_set)
6769 return parent->scope;
6770
6771 fixup_partial_die (parent, cu);
6772
10b3939b 6773 grandparent_scope = partial_die_parent_scope (parent, cu);
72bf9492 6774
acebe513
UW
6775 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
6776 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
6777 Work around this problem here. */
6778 if (cu->language == language_cplus
6e70227d 6779 && parent->tag == DW_TAG_namespace
acebe513
UW
6780 && strcmp (parent->name, "::") == 0
6781 && grandparent_scope == NULL)
6782 {
6783 parent->scope = NULL;
6784 parent->scope_set = 1;
6785 return NULL;
6786 }
6787
9c6c53f7
SA
6788 if (pdi->tag == DW_TAG_enumerator)
6789 /* Enumerators should not get the name of the enumeration as a prefix. */
6790 parent->scope = grandparent_scope;
6791 else if (parent->tag == DW_TAG_namespace
f55ee35c 6792 || parent->tag == DW_TAG_module
72bf9492
DJ
6793 || parent->tag == DW_TAG_structure_type
6794 || parent->tag == DW_TAG_class_type
680b30c7 6795 || parent->tag == DW_TAG_interface_type
ceeb3d5a
TT
6796 || parent->tag == DW_TAG_union_type
6797 || parent->tag == DW_TAG_enumeration_type)
72bf9492
DJ
6798 {
6799 if (grandparent_scope == NULL)
6800 parent->scope = parent->name;
6801 else
3e43a32a
MS
6802 parent->scope = typename_concat (&cu->comp_unit_obstack,
6803 grandparent_scope,
f55ee35c 6804 parent->name, 0, cu);
72bf9492 6805 }
72bf9492
DJ
6806 else
6807 {
6808 /* FIXME drow/2004-04-01: What should we be doing with
6809 function-local names? For partial symbols, we should probably be
6810 ignoring them. */
6811 complaint (&symfile_complaints,
e2e0b3e5 6812 _("unhandled containing DIE tag %d for DIE at %d"),
b64f50a1 6813 parent->tag, pdi->offset.sect_off);
72bf9492 6814 parent->scope = grandparent_scope;
c906108c
SS
6815 }
6816
72bf9492
DJ
6817 parent->scope_set = 1;
6818 return parent->scope;
6819}
6820
6821/* Return the fully scoped name associated with PDI, from compilation unit
6822 CU. The result will be allocated with malloc. */
4568ecf9 6823
72bf9492
DJ
6824static char *
6825partial_die_full_name (struct partial_die_info *pdi,
6826 struct dwarf2_cu *cu)
6827{
15d034d0 6828 const char *parent_scope;
72bf9492 6829
98bfdba5
PA
6830 /* If this is a template instantiation, we can not work out the
6831 template arguments from partial DIEs. So, unfortunately, we have
6832 to go through the full DIEs. At least any work we do building
6833 types here will be reused if full symbols are loaded later. */
6834 if (pdi->has_template_arguments)
6835 {
6836 fixup_partial_die (pdi, cu);
6837
6838 if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
6839 {
6840 struct die_info *die;
6841 struct attribute attr;
6842 struct dwarf2_cu *ref_cu = cu;
6843
b64f50a1 6844 /* DW_FORM_ref_addr is using section offset. */
98bfdba5
PA
6845 attr.name = 0;
6846 attr.form = DW_FORM_ref_addr;
4568ecf9 6847 attr.u.unsnd = pdi->offset.sect_off;
98bfdba5
PA
6848 die = follow_die_ref (NULL, &attr, &ref_cu);
6849
6850 return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
6851 }
6852 }
6853
72bf9492
DJ
6854 parent_scope = partial_die_parent_scope (pdi, cu);
6855 if (parent_scope == NULL)
6856 return NULL;
6857 else
f55ee35c 6858 return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
c906108c
SS
6859}
6860
6861static void
72bf9492 6862add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
c906108c 6863{
e7c27a73 6864 struct objfile *objfile = cu->objfile;
3e29f34a 6865 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c 6866 CORE_ADDR addr = 0;
15d034d0 6867 const char *actual_name = NULL;
e142c38c 6868 CORE_ADDR baseaddr;
15d034d0 6869 char *built_actual_name;
e142c38c
DJ
6870
6871 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 6872
15d034d0
TT
6873 built_actual_name = partial_die_full_name (pdi, cu);
6874 if (built_actual_name != NULL)
6875 actual_name = built_actual_name;
63d06c5c 6876
72bf9492
DJ
6877 if (actual_name == NULL)
6878 actual_name = pdi->name;
6879
c906108c
SS
6880 switch (pdi->tag)
6881 {
6882 case DW_TAG_subprogram:
3e29f34a 6883 addr = gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr);
2cfa0c8d 6884 if (pdi->is_external || cu->language == language_ada)
c906108c 6885 {
2cfa0c8d
JB
6886 /* brobecker/2007-12-26: Normally, only "external" DIEs are part
6887 of the global scope. But in Ada, we want to be able to access
6888 nested procedures globally. So all Ada subprograms are stored
6889 in the global scope. */
3e29f34a
MR
6890 /* prim_record_minimal_symbol (actual_name, addr, mst_text,
6891 objfile); */
f47fb265 6892 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6893 built_actual_name != NULL,
f47fb265
MS
6894 VAR_DOMAIN, LOC_BLOCK,
6895 &objfile->global_psymbols,
1762568f 6896 addr, cu->language, objfile);
c906108c
SS
6897 }
6898 else
6899 {
3e29f34a
MR
6900 /* prim_record_minimal_symbol (actual_name, addr, mst_file_text,
6901 objfile); */
f47fb265 6902 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6903 built_actual_name != NULL,
f47fb265
MS
6904 VAR_DOMAIN, LOC_BLOCK,
6905 &objfile->static_psymbols,
1762568f 6906 addr, cu->language, objfile);
c906108c
SS
6907 }
6908 break;
72929c62
JB
6909 case DW_TAG_constant:
6910 {
6911 struct psymbol_allocation_list *list;
6912
6913 if (pdi->is_external)
6914 list = &objfile->global_psymbols;
6915 else
6916 list = &objfile->static_psymbols;
f47fb265 6917 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6918 built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
1762568f 6919 list, 0, cu->language, objfile);
72929c62
JB
6920 }
6921 break;
c906108c 6922 case DW_TAG_variable:
95554aad
TT
6923 if (pdi->d.locdesc)
6924 addr = decode_locdesc (pdi->d.locdesc, cu);
caac4577 6925
95554aad 6926 if (pdi->d.locdesc
caac4577
JG
6927 && addr == 0
6928 && !dwarf2_per_objfile->has_section_at_zero)
6929 {
6930 /* A global or static variable may also have been stripped
6931 out by the linker if unused, in which case its address
6932 will be nullified; do not add such variables into partial
6933 symbol table then. */
6934 }
6935 else if (pdi->is_external)
c906108c
SS
6936 {
6937 /* Global Variable.
6938 Don't enter into the minimal symbol tables as there is
6939 a minimal symbol table entry from the ELF symbols already.
6940 Enter into partial symbol table if it has a location
6941 descriptor or a type.
6942 If the location descriptor is missing, new_symbol will create
6943 a LOC_UNRESOLVED symbol, the address of the variable will then
6944 be determined from the minimal symbol table whenever the variable
6945 is referenced.
6946 The address for the partial symbol table entry is not
6947 used by GDB, but it comes in handy for debugging partial symbol
6948 table building. */
6949
95554aad 6950 if (pdi->d.locdesc || pdi->has_type)
f47fb265 6951 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6952 built_actual_name != NULL,
f47fb265
MS
6953 VAR_DOMAIN, LOC_STATIC,
6954 &objfile->global_psymbols,
1762568f 6955 addr + baseaddr,
f47fb265 6956 cu->language, objfile);
c906108c
SS
6957 }
6958 else
6959 {
ff908ebf
AW
6960 int has_loc = pdi->d.locdesc != NULL;
6961
6962 /* Static Variable. Skip symbols whose value we cannot know (those
6963 without location descriptors or constant values). */
6964 if (!has_loc && !pdi->has_const_value)
decbce07 6965 {
15d034d0 6966 xfree (built_actual_name);
decbce07
MS
6967 return;
6968 }
ff908ebf 6969
f47fb265 6970 /* prim_record_minimal_symbol (actual_name, addr + baseaddr,
c5aa993b 6971 mst_file_data, objfile); */
f47fb265 6972 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6973 built_actual_name != NULL,
f47fb265
MS
6974 VAR_DOMAIN, LOC_STATIC,
6975 &objfile->static_psymbols,
ff908ebf 6976 has_loc ? addr + baseaddr : (CORE_ADDR) 0,
f47fb265 6977 cu->language, objfile);
c906108c
SS
6978 }
6979 break;
6980 case DW_TAG_typedef:
6981 case DW_TAG_base_type:
a02abb62 6982 case DW_TAG_subrange_type:
38d518c9 6983 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6984 built_actual_name != NULL,
176620f1 6985 VAR_DOMAIN, LOC_TYPEDEF,
c906108c 6986 &objfile->static_psymbols,
1762568f 6987 0, cu->language, objfile);
c906108c 6988 break;
74921315 6989 case DW_TAG_imported_declaration:
72bf9492
DJ
6990 case DW_TAG_namespace:
6991 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6992 built_actual_name != NULL,
72bf9492
DJ
6993 VAR_DOMAIN, LOC_TYPEDEF,
6994 &objfile->global_psymbols,
1762568f 6995 0, cu->language, objfile);
72bf9492 6996 break;
530e8392
KB
6997 case DW_TAG_module:
6998 add_psymbol_to_list (actual_name, strlen (actual_name),
6999 built_actual_name != NULL,
7000 MODULE_DOMAIN, LOC_TYPEDEF,
7001 &objfile->global_psymbols,
1762568f 7002 0, cu->language, objfile);
530e8392 7003 break;
c906108c 7004 case DW_TAG_class_type:
680b30c7 7005 case DW_TAG_interface_type:
c906108c
SS
7006 case DW_TAG_structure_type:
7007 case DW_TAG_union_type:
7008 case DW_TAG_enumeration_type:
fa4028e9
JB
7009 /* Skip external references. The DWARF standard says in the section
7010 about "Structure, Union, and Class Type Entries": "An incomplete
7011 structure, union or class type is represented by a structure,
7012 union or class entry that does not have a byte size attribute
7013 and that has a DW_AT_declaration attribute." */
7014 if (!pdi->has_byte_size && pdi->is_declaration)
decbce07 7015 {
15d034d0 7016 xfree (built_actual_name);
decbce07
MS
7017 return;
7018 }
fa4028e9 7019
63d06c5c
DC
7020 /* NOTE: carlton/2003-10-07: See comment in new_symbol about
7021 static vs. global. */
38d518c9 7022 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7023 built_actual_name != NULL,
176620f1 7024 STRUCT_DOMAIN, LOC_TYPEDEF,
987504bb
JJ
7025 (cu->language == language_cplus
7026 || cu->language == language_java)
63d06c5c
DC
7027 ? &objfile->global_psymbols
7028 : &objfile->static_psymbols,
1762568f 7029 0, cu->language, objfile);
c906108c 7030
c906108c
SS
7031 break;
7032 case DW_TAG_enumerator:
38d518c9 7033 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7034 built_actual_name != NULL,
176620f1 7035 VAR_DOMAIN, LOC_CONST,
987504bb
JJ
7036 (cu->language == language_cplus
7037 || cu->language == language_java)
f6fe98ef
DJ
7038 ? &objfile->global_psymbols
7039 : &objfile->static_psymbols,
1762568f 7040 0, cu->language, objfile);
c906108c
SS
7041 break;
7042 default:
7043 break;
7044 }
5c4e30ca 7045
15d034d0 7046 xfree (built_actual_name);
c906108c
SS
7047}
7048
5c4e30ca
DC
7049/* Read a partial die corresponding to a namespace; also, add a symbol
7050 corresponding to that namespace to the symbol table. NAMESPACE is
7051 the name of the enclosing namespace. */
91c24f0a 7052
72bf9492
DJ
7053static void
7054add_partial_namespace (struct partial_die_info *pdi,
91c24f0a 7055 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 7056 int set_addrmap, struct dwarf2_cu *cu)
91c24f0a 7057{
72bf9492 7058 /* Add a symbol for the namespace. */
e7c27a73 7059
72bf9492 7060 add_partial_symbol (pdi, cu);
5c4e30ca
DC
7061
7062 /* Now scan partial symbols in that namespace. */
7063
91c24f0a 7064 if (pdi->has_children)
cdc07690 7065 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
91c24f0a
DC
7066}
7067
5d7cb8df
JK
7068/* Read a partial die corresponding to a Fortran module. */
7069
7070static void
7071add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
cdc07690 7072 CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
5d7cb8df 7073{
530e8392
KB
7074 /* Add a symbol for the namespace. */
7075
7076 add_partial_symbol (pdi, cu);
7077
f55ee35c 7078 /* Now scan partial symbols in that module. */
5d7cb8df
JK
7079
7080 if (pdi->has_children)
cdc07690 7081 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
5d7cb8df
JK
7082}
7083
bc30ff58
JB
7084/* Read a partial die corresponding to a subprogram and create a partial
7085 symbol for that subprogram. When the CU language allows it, this
7086 routine also defines a partial symbol for each nested subprogram
cdc07690 7087 that this subprogram contains. If SET_ADDRMAP is true, record the
428fc5fc
YQ
7088 covered ranges in the addrmap. Set *LOWPC and *HIGHPC to the lowest
7089 and highest PC values found in PDI.
6e70227d 7090
cdc07690
YQ
7091 PDI may also be a lexical block, in which case we simply search
7092 recursively for subprograms defined inside that lexical block.
bc30ff58
JB
7093 Again, this is only performed when the CU language allows this
7094 type of definitions. */
7095
7096static void
7097add_partial_subprogram (struct partial_die_info *pdi,
7098 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 7099 int set_addrmap, struct dwarf2_cu *cu)
bc30ff58
JB
7100{
7101 if (pdi->tag == DW_TAG_subprogram)
7102 {
7103 if (pdi->has_pc_info)
7104 {
7105 if (pdi->lowpc < *lowpc)
7106 *lowpc = pdi->lowpc;
7107 if (pdi->highpc > *highpc)
7108 *highpc = pdi->highpc;
cdc07690 7109 if (set_addrmap)
5734ee8b 7110 {
5734ee8b 7111 struct objfile *objfile = cu->objfile;
3e29f34a
MR
7112 struct gdbarch *gdbarch = get_objfile_arch (objfile);
7113 CORE_ADDR baseaddr;
7114 CORE_ADDR highpc;
7115 CORE_ADDR lowpc;
5734ee8b
DJ
7116
7117 baseaddr = ANOFFSET (objfile->section_offsets,
7118 SECT_OFF_TEXT (objfile));
3e29f34a
MR
7119 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7120 pdi->lowpc + baseaddr);
7121 highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7122 pdi->highpc + baseaddr);
7123 addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
9291a0cd 7124 cu->per_cu->v.psymtab);
5734ee8b 7125 }
481860b3
GB
7126 }
7127
7128 if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
7129 {
bc30ff58 7130 if (!pdi->is_declaration)
e8d05480
JB
7131 /* Ignore subprogram DIEs that do not have a name, they are
7132 illegal. Do not emit a complaint at this point, we will
7133 do so when we convert this psymtab into a symtab. */
7134 if (pdi->name)
7135 add_partial_symbol (pdi, cu);
bc30ff58
JB
7136 }
7137 }
6e70227d 7138
bc30ff58
JB
7139 if (! pdi->has_children)
7140 return;
7141
7142 if (cu->language == language_ada)
7143 {
7144 pdi = pdi->die_child;
7145 while (pdi != NULL)
7146 {
7147 fixup_partial_die (pdi, cu);
7148 if (pdi->tag == DW_TAG_subprogram
7149 || pdi->tag == DW_TAG_lexical_block)
cdc07690 7150 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
bc30ff58
JB
7151 pdi = pdi->die_sibling;
7152 }
7153 }
7154}
7155
91c24f0a
DC
7156/* Read a partial die corresponding to an enumeration type. */
7157
72bf9492
DJ
7158static void
7159add_partial_enumeration (struct partial_die_info *enum_pdi,
7160 struct dwarf2_cu *cu)
91c24f0a 7161{
72bf9492 7162 struct partial_die_info *pdi;
91c24f0a
DC
7163
7164 if (enum_pdi->name != NULL)
72bf9492
DJ
7165 add_partial_symbol (enum_pdi, cu);
7166
7167 pdi = enum_pdi->die_child;
7168 while (pdi)
91c24f0a 7169 {
72bf9492 7170 if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
e2e0b3e5 7171 complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
91c24f0a 7172 else
72bf9492
DJ
7173 add_partial_symbol (pdi, cu);
7174 pdi = pdi->die_sibling;
91c24f0a 7175 }
91c24f0a
DC
7176}
7177
6caca83c
CC
7178/* Return the initial uleb128 in the die at INFO_PTR. */
7179
7180static unsigned int
d521ce57 7181peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
6caca83c
CC
7182{
7183 unsigned int bytes_read;
7184
7185 return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7186}
7187
4bb7a0a7
DJ
7188/* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
7189 Return the corresponding abbrev, or NULL if the number is zero (indicating
7190 an empty DIE). In either case *BYTES_READ will be set to the length of
7191 the initial number. */
7192
7193static struct abbrev_info *
d521ce57 7194peek_die_abbrev (const gdb_byte *info_ptr, unsigned int *bytes_read,
891d2f0b 7195 struct dwarf2_cu *cu)
4bb7a0a7
DJ
7196{
7197 bfd *abfd = cu->objfile->obfd;
7198 unsigned int abbrev_number;
7199 struct abbrev_info *abbrev;
7200
7201 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
7202
7203 if (abbrev_number == 0)
7204 return NULL;
7205
433df2d4 7206 abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
4bb7a0a7
DJ
7207 if (!abbrev)
7208 {
422b9917
DE
7209 error (_("Dwarf Error: Could not find abbrev number %d in %s"
7210 " at offset 0x%x [in module %s]"),
7211 abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
7212 cu->header.offset.sect_off, bfd_get_filename (abfd));
4bb7a0a7
DJ
7213 }
7214
7215 return abbrev;
7216}
7217
93311388
DE
7218/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7219 Returns a pointer to the end of a series of DIEs, terminated by an empty
4bb7a0a7
DJ
7220 DIE. Any children of the skipped DIEs will also be skipped. */
7221
d521ce57
TT
7222static const gdb_byte *
7223skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
4bb7a0a7 7224{
dee91e82 7225 struct dwarf2_cu *cu = reader->cu;
4bb7a0a7
DJ
7226 struct abbrev_info *abbrev;
7227 unsigned int bytes_read;
7228
7229 while (1)
7230 {
7231 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
7232 if (abbrev == NULL)
7233 return info_ptr + bytes_read;
7234 else
dee91e82 7235 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
4bb7a0a7
DJ
7236 }
7237}
7238
93311388
DE
7239/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7240 INFO_PTR should point just after the initial uleb128 of a DIE, and the
4bb7a0a7
DJ
7241 abbrev corresponding to that skipped uleb128 should be passed in
7242 ABBREV. Returns a pointer to this DIE's sibling, skipping any
7243 children. */
7244
d521ce57
TT
7245static const gdb_byte *
7246skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
dee91e82 7247 struct abbrev_info *abbrev)
4bb7a0a7
DJ
7248{
7249 unsigned int bytes_read;
7250 struct attribute attr;
dee91e82
DE
7251 bfd *abfd = reader->abfd;
7252 struct dwarf2_cu *cu = reader->cu;
d521ce57 7253 const gdb_byte *buffer = reader->buffer;
f664829e 7254 const gdb_byte *buffer_end = reader->buffer_end;
d521ce57 7255 const gdb_byte *start_info_ptr = info_ptr;
4bb7a0a7
DJ
7256 unsigned int form, i;
7257
7258 for (i = 0; i < abbrev->num_attrs; i++)
7259 {
7260 /* The only abbrev we care about is DW_AT_sibling. */
7261 if (abbrev->attrs[i].name == DW_AT_sibling)
7262 {
dee91e82 7263 read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
4bb7a0a7 7264 if (attr.form == DW_FORM_ref_addr)
3e43a32a
MS
7265 complaint (&symfile_complaints,
7266 _("ignoring absolute DW_AT_sibling"));
4bb7a0a7 7267 else
b9502d3f
WN
7268 {
7269 unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
7270 const gdb_byte *sibling_ptr = buffer + off;
7271
7272 if (sibling_ptr < info_ptr)
7273 complaint (&symfile_complaints,
7274 _("DW_AT_sibling points backwards"));
22869d73
KS
7275 else if (sibling_ptr > reader->buffer_end)
7276 dwarf2_section_buffer_overflow_complaint (reader->die_section);
b9502d3f
WN
7277 else
7278 return sibling_ptr;
7279 }
4bb7a0a7
DJ
7280 }
7281
7282 /* If it isn't DW_AT_sibling, skip this attribute. */
7283 form = abbrev->attrs[i].form;
7284 skip_attribute:
7285 switch (form)
7286 {
4bb7a0a7 7287 case DW_FORM_ref_addr:
ae411497
TT
7288 /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
7289 and later it is offset sized. */
7290 if (cu->header.version == 2)
7291 info_ptr += cu->header.addr_size;
7292 else
7293 info_ptr += cu->header.offset_size;
7294 break;
36586728
TT
7295 case DW_FORM_GNU_ref_alt:
7296 info_ptr += cu->header.offset_size;
7297 break;
ae411497 7298 case DW_FORM_addr:
4bb7a0a7
DJ
7299 info_ptr += cu->header.addr_size;
7300 break;
7301 case DW_FORM_data1:
7302 case DW_FORM_ref1:
7303 case DW_FORM_flag:
7304 info_ptr += 1;
7305 break;
2dc7f7b3
TT
7306 case DW_FORM_flag_present:
7307 break;
4bb7a0a7
DJ
7308 case DW_FORM_data2:
7309 case DW_FORM_ref2:
7310 info_ptr += 2;
7311 break;
7312 case DW_FORM_data4:
7313 case DW_FORM_ref4:
7314 info_ptr += 4;
7315 break;
7316 case DW_FORM_data8:
7317 case DW_FORM_ref8:
55f1336d 7318 case DW_FORM_ref_sig8:
4bb7a0a7
DJ
7319 info_ptr += 8;
7320 break;
7321 case DW_FORM_string:
9b1c24c8 7322 read_direct_string (abfd, info_ptr, &bytes_read);
4bb7a0a7
DJ
7323 info_ptr += bytes_read;
7324 break;
2dc7f7b3 7325 case DW_FORM_sec_offset:
4bb7a0a7 7326 case DW_FORM_strp:
36586728 7327 case DW_FORM_GNU_strp_alt:
4bb7a0a7
DJ
7328 info_ptr += cu->header.offset_size;
7329 break;
2dc7f7b3 7330 case DW_FORM_exprloc:
4bb7a0a7
DJ
7331 case DW_FORM_block:
7332 info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7333 info_ptr += bytes_read;
7334 break;
7335 case DW_FORM_block1:
7336 info_ptr += 1 + read_1_byte (abfd, info_ptr);
7337 break;
7338 case DW_FORM_block2:
7339 info_ptr += 2 + read_2_bytes (abfd, info_ptr);
7340 break;
7341 case DW_FORM_block4:
7342 info_ptr += 4 + read_4_bytes (abfd, info_ptr);
7343 break;
7344 case DW_FORM_sdata:
7345 case DW_FORM_udata:
7346 case DW_FORM_ref_udata:
3019eac3
DE
7347 case DW_FORM_GNU_addr_index:
7348 case DW_FORM_GNU_str_index:
d521ce57 7349 info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
4bb7a0a7
DJ
7350 break;
7351 case DW_FORM_indirect:
7352 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7353 info_ptr += bytes_read;
7354 /* We need to continue parsing from here, so just go back to
7355 the top. */
7356 goto skip_attribute;
7357
7358 default:
3e43a32a
MS
7359 error (_("Dwarf Error: Cannot handle %s "
7360 "in DWARF reader [in module %s]"),
4bb7a0a7
DJ
7361 dwarf_form_name (form),
7362 bfd_get_filename (abfd));
7363 }
7364 }
7365
7366 if (abbrev->has_children)
dee91e82 7367 return skip_children (reader, info_ptr);
4bb7a0a7
DJ
7368 else
7369 return info_ptr;
7370}
7371
93311388 7372/* Locate ORIG_PDI's sibling.
dee91e82 7373 INFO_PTR should point to the start of the next DIE after ORIG_PDI. */
91c24f0a 7374
d521ce57 7375static const gdb_byte *
dee91e82
DE
7376locate_pdi_sibling (const struct die_reader_specs *reader,
7377 struct partial_die_info *orig_pdi,
d521ce57 7378 const gdb_byte *info_ptr)
91c24f0a
DC
7379{
7380 /* Do we know the sibling already? */
72bf9492 7381
91c24f0a
DC
7382 if (orig_pdi->sibling)
7383 return orig_pdi->sibling;
7384
7385 /* Are there any children to deal with? */
7386
7387 if (!orig_pdi->has_children)
7388 return info_ptr;
7389
4bb7a0a7 7390 /* Skip the children the long way. */
91c24f0a 7391
dee91e82 7392 return skip_children (reader, info_ptr);
91c24f0a
DC
7393}
7394
257e7a09 7395/* Expand this partial symbol table into a full symbol table. SELF is
442e4d9c 7396 not NULL. */
c906108c
SS
7397
7398static void
257e7a09
YQ
7399dwarf2_read_symtab (struct partial_symtab *self,
7400 struct objfile *objfile)
c906108c 7401{
257e7a09 7402 if (self->readin)
c906108c 7403 {
442e4d9c 7404 warning (_("bug: psymtab for %s is already read in."),
257e7a09 7405 self->filename);
442e4d9c
YQ
7406 }
7407 else
7408 {
7409 if (info_verbose)
c906108c 7410 {
442e4d9c 7411 printf_filtered (_("Reading in symbols for %s..."),
257e7a09 7412 self->filename);
442e4d9c 7413 gdb_flush (gdb_stdout);
c906108c 7414 }
c906108c 7415
442e4d9c
YQ
7416 /* Restore our global data. */
7417 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
10b3939b 7418
442e4d9c
YQ
7419 /* If this psymtab is constructed from a debug-only objfile, the
7420 has_section_at_zero flag will not necessarily be correct. We
7421 can get the correct value for this flag by looking at the data
7422 associated with the (presumably stripped) associated objfile. */
7423 if (objfile->separate_debug_objfile_backlink)
7424 {
7425 struct dwarf2_per_objfile *dpo_backlink
7426 = objfile_data (objfile->separate_debug_objfile_backlink,
7427 dwarf2_objfile_data_key);
9a619af0 7428
442e4d9c
YQ
7429 dwarf2_per_objfile->has_section_at_zero
7430 = dpo_backlink->has_section_at_zero;
7431 }
b2ab525c 7432
442e4d9c 7433 dwarf2_per_objfile->reading_partial_symbols = 0;
98bfdba5 7434
257e7a09 7435 psymtab_to_symtab_1 (self);
c906108c 7436
442e4d9c
YQ
7437 /* Finish up the debug error message. */
7438 if (info_verbose)
7439 printf_filtered (_("done.\n"));
c906108c 7440 }
95554aad
TT
7441
7442 process_cu_includes ();
c906108c 7443}
9cdd5dbd
DE
7444\f
7445/* Reading in full CUs. */
c906108c 7446
10b3939b
DJ
7447/* Add PER_CU to the queue. */
7448
7449static void
95554aad
TT
7450queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
7451 enum language pretend_language)
10b3939b
DJ
7452{
7453 struct dwarf2_queue_item *item;
7454
7455 per_cu->queued = 1;
8d749320 7456 item = XNEW (struct dwarf2_queue_item);
10b3939b 7457 item->per_cu = per_cu;
95554aad 7458 item->pretend_language = pretend_language;
10b3939b
DJ
7459 item->next = NULL;
7460
7461 if (dwarf2_queue == NULL)
7462 dwarf2_queue = item;
7463 else
7464 dwarf2_queue_tail->next = item;
7465
7466 dwarf2_queue_tail = item;
7467}
7468
89e63ee4
DE
7469/* If PER_CU is not yet queued, add it to the queue.
7470 If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
7471 dependency.
0907af0c 7472 The result is non-zero if PER_CU was queued, otherwise the result is zero
69d751e3
DE
7473 meaning either PER_CU is already queued or it is already loaded.
7474
7475 N.B. There is an invariant here that if a CU is queued then it is loaded.
7476 The caller is required to load PER_CU if we return non-zero. */
0907af0c
DE
7477
7478static int
89e63ee4 7479maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
0907af0c
DE
7480 struct dwarf2_per_cu_data *per_cu,
7481 enum language pretend_language)
7482{
7483 /* We may arrive here during partial symbol reading, if we need full
7484 DIEs to process an unusual case (e.g. template arguments). Do
7485 not queue PER_CU, just tell our caller to load its DIEs. */
7486 if (dwarf2_per_objfile->reading_partial_symbols)
7487 {
7488 if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
7489 return 1;
7490 return 0;
7491 }
7492
7493 /* Mark the dependence relation so that we don't flush PER_CU
7494 too early. */
89e63ee4
DE
7495 if (dependent_cu != NULL)
7496 dwarf2_add_dependence (dependent_cu, per_cu);
0907af0c
DE
7497
7498 /* If it's already on the queue, we have nothing to do. */
7499 if (per_cu->queued)
7500 return 0;
7501
7502 /* If the compilation unit is already loaded, just mark it as
7503 used. */
7504 if (per_cu->cu != NULL)
7505 {
7506 per_cu->cu->last_used = 0;
7507 return 0;
7508 }
7509
7510 /* Add it to the queue. */
7511 queue_comp_unit (per_cu, pretend_language);
7512
7513 return 1;
7514}
7515
10b3939b
DJ
7516/* Process the queue. */
7517
7518static void
a0f42c21 7519process_queue (void)
10b3939b
DJ
7520{
7521 struct dwarf2_queue_item *item, *next_item;
7522
b4f54984 7523 if (dwarf_read_debug)
45cfd468
DE
7524 {
7525 fprintf_unfiltered (gdb_stdlog,
7526 "Expanding one or more symtabs of objfile %s ...\n",
4262abfb 7527 objfile_name (dwarf2_per_objfile->objfile));
45cfd468
DE
7528 }
7529
03dd20cc
DJ
7530 /* The queue starts out with one item, but following a DIE reference
7531 may load a new CU, adding it to the end of the queue. */
10b3939b
DJ
7532 for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
7533 {
cc12ce38
DE
7534 if ((dwarf2_per_objfile->using_index
7535 ? !item->per_cu->v.quick->compunit_symtab
7536 : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
7537 /* Skip dummy CUs. */
7538 && item->per_cu->cu != NULL)
f4dc4d17
DE
7539 {
7540 struct dwarf2_per_cu_data *per_cu = item->per_cu;
73be47f5 7541 unsigned int debug_print_threshold;
247f5c4f 7542 char buf[100];
f4dc4d17 7543
247f5c4f 7544 if (per_cu->is_debug_types)
f4dc4d17 7545 {
247f5c4f
DE
7546 struct signatured_type *sig_type =
7547 (struct signatured_type *) per_cu;
7548
7549 sprintf (buf, "TU %s at offset 0x%x",
73be47f5
DE
7550 hex_string (sig_type->signature),
7551 per_cu->offset.sect_off);
7552 /* There can be 100s of TUs.
7553 Only print them in verbose mode. */
7554 debug_print_threshold = 2;
f4dc4d17 7555 }
247f5c4f 7556 else
73be47f5
DE
7557 {
7558 sprintf (buf, "CU at offset 0x%x", per_cu->offset.sect_off);
7559 debug_print_threshold = 1;
7560 }
247f5c4f 7561
b4f54984 7562 if (dwarf_read_debug >= debug_print_threshold)
247f5c4f 7563 fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
f4dc4d17
DE
7564
7565 if (per_cu->is_debug_types)
7566 process_full_type_unit (per_cu, item->pretend_language);
7567 else
7568 process_full_comp_unit (per_cu, item->pretend_language);
7569
b4f54984 7570 if (dwarf_read_debug >= debug_print_threshold)
247f5c4f 7571 fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
f4dc4d17 7572 }
10b3939b
DJ
7573
7574 item->per_cu->queued = 0;
7575 next_item = item->next;
7576 xfree (item);
7577 }
7578
7579 dwarf2_queue_tail = NULL;
45cfd468 7580
b4f54984 7581 if (dwarf_read_debug)
45cfd468
DE
7582 {
7583 fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
4262abfb 7584 objfile_name (dwarf2_per_objfile->objfile));
45cfd468 7585 }
10b3939b
DJ
7586}
7587
7588/* Free all allocated queue entries. This function only releases anything if
7589 an error was thrown; if the queue was processed then it would have been
7590 freed as we went along. */
7591
7592static void
7593dwarf2_release_queue (void *dummy)
7594{
7595 struct dwarf2_queue_item *item, *last;
7596
7597 item = dwarf2_queue;
7598 while (item)
7599 {
7600 /* Anything still marked queued is likely to be in an
7601 inconsistent state, so discard it. */
7602 if (item->per_cu->queued)
7603 {
7604 if (item->per_cu->cu != NULL)
dee91e82 7605 free_one_cached_comp_unit (item->per_cu);
10b3939b
DJ
7606 item->per_cu->queued = 0;
7607 }
7608
7609 last = item;
7610 item = item->next;
7611 xfree (last);
7612 }
7613
7614 dwarf2_queue = dwarf2_queue_tail = NULL;
7615}
7616
7617/* Read in full symbols for PST, and anything it depends on. */
7618
c906108c 7619static void
fba45db2 7620psymtab_to_symtab_1 (struct partial_symtab *pst)
c906108c 7621{
10b3939b 7622 struct dwarf2_per_cu_data *per_cu;
aaa75496
JB
7623 int i;
7624
95554aad
TT
7625 if (pst->readin)
7626 return;
7627
aaa75496 7628 for (i = 0; i < pst->number_of_dependencies; i++)
95554aad
TT
7629 if (!pst->dependencies[i]->readin
7630 && pst->dependencies[i]->user == NULL)
aaa75496
JB
7631 {
7632 /* Inform about additional files that need to be read in. */
7633 if (info_verbose)
7634 {
a3f17187 7635 /* FIXME: i18n: Need to make this a single string. */
aaa75496
JB
7636 fputs_filtered (" ", gdb_stdout);
7637 wrap_here ("");
7638 fputs_filtered ("and ", gdb_stdout);
7639 wrap_here ("");
7640 printf_filtered ("%s...", pst->dependencies[i]->filename);
0963b4bd 7641 wrap_here (""); /* Flush output. */
aaa75496
JB
7642 gdb_flush (gdb_stdout);
7643 }
7644 psymtab_to_symtab_1 (pst->dependencies[i]);
7645 }
7646
e38df1d0 7647 per_cu = pst->read_symtab_private;
10b3939b
DJ
7648
7649 if (per_cu == NULL)
aaa75496
JB
7650 {
7651 /* It's an include file, no symbols to read for it.
7652 Everything is in the parent symtab. */
7653 pst->readin = 1;
7654 return;
7655 }
c906108c 7656
a0f42c21 7657 dw2_do_instantiate_symtab (per_cu);
10b3939b
DJ
7658}
7659
dee91e82
DE
7660/* Trivial hash function for die_info: the hash value of a DIE
7661 is its offset in .debug_info for this objfile. */
10b3939b 7662
dee91e82
DE
7663static hashval_t
7664die_hash (const void *item)
10b3939b 7665{
dee91e82 7666 const struct die_info *die = item;
6502dd73 7667
dee91e82
DE
7668 return die->offset.sect_off;
7669}
63d06c5c 7670
dee91e82
DE
7671/* Trivial comparison function for die_info structures: two DIEs
7672 are equal if they have the same offset. */
98bfdba5 7673
dee91e82
DE
7674static int
7675die_eq (const void *item_lhs, const void *item_rhs)
7676{
7677 const struct die_info *die_lhs = item_lhs;
7678 const struct die_info *die_rhs = item_rhs;
c906108c 7679
dee91e82
DE
7680 return die_lhs->offset.sect_off == die_rhs->offset.sect_off;
7681}
c906108c 7682
dee91e82
DE
7683/* die_reader_func for load_full_comp_unit.
7684 This is identical to read_signatured_type_reader,
7685 but is kept separate for now. */
c906108c 7686
dee91e82
DE
7687static void
7688load_full_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 7689 const gdb_byte *info_ptr,
dee91e82
DE
7690 struct die_info *comp_unit_die,
7691 int has_children,
7692 void *data)
7693{
7694 struct dwarf2_cu *cu = reader->cu;
95554aad 7695 enum language *language_ptr = data;
6caca83c 7696
dee91e82
DE
7697 gdb_assert (cu->die_hash == NULL);
7698 cu->die_hash =
7699 htab_create_alloc_ex (cu->header.length / 12,
7700 die_hash,
7701 die_eq,
7702 NULL,
7703 &cu->comp_unit_obstack,
7704 hashtab_obstack_allocate,
7705 dummy_obstack_deallocate);
e142c38c 7706
dee91e82
DE
7707 if (has_children)
7708 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
7709 &info_ptr, comp_unit_die);
7710 cu->dies = comp_unit_die;
7711 /* comp_unit_die is not stored in die_hash, no need. */
10b3939b
DJ
7712
7713 /* We try not to read any attributes in this function, because not
9cdd5dbd 7714 all CUs needed for references have been loaded yet, and symbol
10b3939b 7715 table processing isn't initialized. But we have to set the CU language,
dee91e82
DE
7716 or we won't be able to build types correctly.
7717 Similarly, if we do not read the producer, we can not apply
7718 producer-specific interpretation. */
95554aad 7719 prepare_one_comp_unit (cu, cu->dies, *language_ptr);
dee91e82 7720}
10b3939b 7721
dee91e82 7722/* Load the DIEs associated with PER_CU into memory. */
a6c727b2 7723
dee91e82 7724static void
95554aad
TT
7725load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
7726 enum language pretend_language)
dee91e82 7727{
3019eac3 7728 gdb_assert (! this_cu->is_debug_types);
c5b7e1cb 7729
f4dc4d17
DE
7730 init_cutu_and_read_dies (this_cu, NULL, 1, 1,
7731 load_full_comp_unit_reader, &pretend_language);
10b3939b
DJ
7732}
7733
3da10d80
KS
7734/* Add a DIE to the delayed physname list. */
7735
7736static void
7737add_to_method_list (struct type *type, int fnfield_index, int index,
7738 const char *name, struct die_info *die,
7739 struct dwarf2_cu *cu)
7740{
7741 struct delayed_method_info mi;
7742 mi.type = type;
7743 mi.fnfield_index = fnfield_index;
7744 mi.index = index;
7745 mi.name = name;
7746 mi.die = die;
7747 VEC_safe_push (delayed_method_info, cu->method_list, &mi);
7748}
7749
7750/* A cleanup for freeing the delayed method list. */
7751
7752static void
7753free_delayed_list (void *ptr)
7754{
7755 struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
7756 if (cu->method_list != NULL)
7757 {
7758 VEC_free (delayed_method_info, cu->method_list);
7759 cu->method_list = NULL;
7760 }
7761}
7762
7763/* Compute the physnames of any methods on the CU's method list.
7764
7765 The computation of method physnames is delayed in order to avoid the
7766 (bad) condition that one of the method's formal parameters is of an as yet
7767 incomplete type. */
7768
7769static void
7770compute_delayed_physnames (struct dwarf2_cu *cu)
7771{
7772 int i;
7773 struct delayed_method_info *mi;
7774 for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
7775 {
1d06ead6 7776 const char *physname;
3da10d80
KS
7777 struct fn_fieldlist *fn_flp
7778 = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
7d455152 7779 physname = dwarf2_physname (mi->name, mi->die, cu);
005e54bb
DE
7780 TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi->index)
7781 = physname ? physname : "";
3da10d80
KS
7782 }
7783}
7784
a766d390
DE
7785/* Go objects should be embedded in a DW_TAG_module DIE,
7786 and it's not clear if/how imported objects will appear.
7787 To keep Go support simple until that's worked out,
7788 go back through what we've read and create something usable.
7789 We could do this while processing each DIE, and feels kinda cleaner,
7790 but that way is more invasive.
7791 This is to, for example, allow the user to type "p var" or "b main"
7792 without having to specify the package name, and allow lookups
7793 of module.object to work in contexts that use the expression
7794 parser. */
7795
7796static void
7797fixup_go_packaging (struct dwarf2_cu *cu)
7798{
7799 char *package_name = NULL;
7800 struct pending *list;
7801 int i;
7802
7803 for (list = global_symbols; list != NULL; list = list->next)
7804 {
7805 for (i = 0; i < list->nsyms; ++i)
7806 {
7807 struct symbol *sym = list->symbol[i];
7808
7809 if (SYMBOL_LANGUAGE (sym) == language_go
7810 && SYMBOL_CLASS (sym) == LOC_BLOCK)
7811 {
7812 char *this_package_name = go_symbol_package_name (sym);
7813
7814 if (this_package_name == NULL)
7815 continue;
7816 if (package_name == NULL)
7817 package_name = this_package_name;
7818 else
7819 {
7820 if (strcmp (package_name, this_package_name) != 0)
7821 complaint (&symfile_complaints,
7822 _("Symtab %s has objects from two different Go packages: %s and %s"),
08be3fe3
DE
7823 (symbol_symtab (sym) != NULL
7824 ? symtab_to_filename_for_display
7825 (symbol_symtab (sym))
4262abfb 7826 : objfile_name (cu->objfile)),
a766d390
DE
7827 this_package_name, package_name);
7828 xfree (this_package_name);
7829 }
7830 }
7831 }
7832 }
7833
7834 if (package_name != NULL)
7835 {
7836 struct objfile *objfile = cu->objfile;
34a68019
TT
7837 const char *saved_package_name
7838 = obstack_copy0 (&objfile->per_bfd->storage_obstack,
7839 package_name,
7840 strlen (package_name));
a766d390 7841 struct type *type = init_type (TYPE_CODE_MODULE, 0, 0,
86f62fd7 7842 saved_package_name, objfile);
a766d390
DE
7843 struct symbol *sym;
7844
7845 TYPE_TAG_NAME (type) = TYPE_NAME (type);
7846
e623cf5d 7847 sym = allocate_symbol (objfile);
f85f34ed 7848 SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
86f62fd7
TT
7849 SYMBOL_SET_NAMES (sym, saved_package_name,
7850 strlen (saved_package_name), 0, objfile);
a766d390
DE
7851 /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
7852 e.g., "main" finds the "main" module and not C's main(). */
7853 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
f1e6e072 7854 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
a766d390
DE
7855 SYMBOL_TYPE (sym) = type;
7856
7857 add_symbol_to_list (sym, &global_symbols);
7858
7859 xfree (package_name);
7860 }
7861}
7862
95554aad
TT
7863/* Return the symtab for PER_CU. This works properly regardless of
7864 whether we're using the index or psymtabs. */
7865
43f3e411
DE
7866static struct compunit_symtab *
7867get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
95554aad
TT
7868{
7869 return (dwarf2_per_objfile->using_index
43f3e411
DE
7870 ? per_cu->v.quick->compunit_symtab
7871 : per_cu->v.psymtab->compunit_symtab);
95554aad
TT
7872}
7873
7874/* A helper function for computing the list of all symbol tables
7875 included by PER_CU. */
7876
7877static void
43f3e411 7878recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
ec94af83 7879 htab_t all_children, htab_t all_type_symtabs,
f9125b6c 7880 struct dwarf2_per_cu_data *per_cu,
43f3e411 7881 struct compunit_symtab *immediate_parent)
95554aad
TT
7882{
7883 void **slot;
7884 int ix;
43f3e411 7885 struct compunit_symtab *cust;
95554aad
TT
7886 struct dwarf2_per_cu_data *iter;
7887
7888 slot = htab_find_slot (all_children, per_cu, INSERT);
7889 if (*slot != NULL)
7890 {
7891 /* This inclusion and its children have been processed. */
7892 return;
7893 }
7894
7895 *slot = per_cu;
7896 /* Only add a CU if it has a symbol table. */
43f3e411
DE
7897 cust = get_compunit_symtab (per_cu);
7898 if (cust != NULL)
ec94af83
DE
7899 {
7900 /* If this is a type unit only add its symbol table if we haven't
7901 seen it yet (type unit per_cu's can share symtabs). */
7902 if (per_cu->is_debug_types)
7903 {
43f3e411 7904 slot = htab_find_slot (all_type_symtabs, cust, INSERT);
ec94af83
DE
7905 if (*slot == NULL)
7906 {
43f3e411
DE
7907 *slot = cust;
7908 VEC_safe_push (compunit_symtab_ptr, *result, cust);
7909 if (cust->user == NULL)
7910 cust->user = immediate_parent;
ec94af83
DE
7911 }
7912 }
7913 else
f9125b6c 7914 {
43f3e411
DE
7915 VEC_safe_push (compunit_symtab_ptr, *result, cust);
7916 if (cust->user == NULL)
7917 cust->user = immediate_parent;
f9125b6c 7918 }
ec94af83 7919 }
95554aad
TT
7920
7921 for (ix = 0;
796a7ff8 7922 VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
95554aad 7923 ++ix)
ec94af83
DE
7924 {
7925 recursively_compute_inclusions (result, all_children,
43f3e411 7926 all_type_symtabs, iter, cust);
ec94af83 7927 }
95554aad
TT
7928}
7929
43f3e411 7930/* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
95554aad
TT
7931 PER_CU. */
7932
7933static void
43f3e411 7934compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
95554aad 7935{
f4dc4d17
DE
7936 gdb_assert (! per_cu->is_debug_types);
7937
796a7ff8 7938 if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
95554aad
TT
7939 {
7940 int ix, len;
ec94af83 7941 struct dwarf2_per_cu_data *per_cu_iter;
43f3e411
DE
7942 struct compunit_symtab *compunit_symtab_iter;
7943 VEC (compunit_symtab_ptr) *result_symtabs = NULL;
ec94af83 7944 htab_t all_children, all_type_symtabs;
43f3e411 7945 struct compunit_symtab *cust = get_compunit_symtab (per_cu);
95554aad
TT
7946
7947 /* If we don't have a symtab, we can just skip this case. */
43f3e411 7948 if (cust == NULL)
95554aad
TT
7949 return;
7950
7951 all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7952 NULL, xcalloc, xfree);
ec94af83
DE
7953 all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7954 NULL, xcalloc, xfree);
95554aad
TT
7955
7956 for (ix = 0;
796a7ff8 7957 VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
ec94af83 7958 ix, per_cu_iter);
95554aad 7959 ++ix)
ec94af83
DE
7960 {
7961 recursively_compute_inclusions (&result_symtabs, all_children,
f9125b6c 7962 all_type_symtabs, per_cu_iter,
43f3e411 7963 cust);
ec94af83 7964 }
95554aad 7965
ec94af83 7966 /* Now we have a transitive closure of all the included symtabs. */
43f3e411
DE
7967 len = VEC_length (compunit_symtab_ptr, result_symtabs);
7968 cust->includes
8d749320
SM
7969 = XOBNEWVEC (&dwarf2_per_objfile->objfile->objfile_obstack,
7970 struct compunit_symtab *, len + 1);
95554aad 7971 for (ix = 0;
43f3e411
DE
7972 VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
7973 compunit_symtab_iter);
95554aad 7974 ++ix)
43f3e411
DE
7975 cust->includes[ix] = compunit_symtab_iter;
7976 cust->includes[len] = NULL;
95554aad 7977
43f3e411 7978 VEC_free (compunit_symtab_ptr, result_symtabs);
95554aad 7979 htab_delete (all_children);
ec94af83 7980 htab_delete (all_type_symtabs);
95554aad
TT
7981 }
7982}
7983
7984/* Compute the 'includes' field for the symtabs of all the CUs we just
7985 read. */
7986
7987static void
7988process_cu_includes (void)
7989{
7990 int ix;
7991 struct dwarf2_per_cu_data *iter;
7992
7993 for (ix = 0;
7994 VEC_iterate (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus,
7995 ix, iter);
7996 ++ix)
f4dc4d17
DE
7997 {
7998 if (! iter->is_debug_types)
43f3e411 7999 compute_compunit_symtab_includes (iter);
f4dc4d17 8000 }
95554aad
TT
8001
8002 VEC_free (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus);
8003}
8004
9cdd5dbd 8005/* Generate full symbol information for PER_CU, whose DIEs have
10b3939b
DJ
8006 already been loaded into memory. */
8007
8008static void
95554aad
TT
8009process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
8010 enum language pretend_language)
10b3939b 8011{
10b3939b 8012 struct dwarf2_cu *cu = per_cu->cu;
9291a0cd 8013 struct objfile *objfile = per_cu->objfile;
3e29f34a 8014 struct gdbarch *gdbarch = get_objfile_arch (objfile);
10b3939b 8015 CORE_ADDR lowpc, highpc;
43f3e411 8016 struct compunit_symtab *cust;
3da10d80 8017 struct cleanup *back_to, *delayed_list_cleanup;
10b3939b 8018 CORE_ADDR baseaddr;
4359dff1 8019 struct block *static_block;
3e29f34a 8020 CORE_ADDR addr;
10b3939b
DJ
8021
8022 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8023
10b3939b
DJ
8024 buildsym_init ();
8025 back_to = make_cleanup (really_free_pendings, NULL);
3da10d80 8026 delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
10b3939b
DJ
8027
8028 cu->list_in_scope = &file_symbols;
c906108c 8029
95554aad
TT
8030 cu->language = pretend_language;
8031 cu->language_defn = language_def (cu->language);
8032
c906108c 8033 /* Do line number decoding in read_file_scope () */
10b3939b 8034 process_die (cu->dies, cu);
c906108c 8035
a766d390
DE
8036 /* For now fudge the Go package. */
8037 if (cu->language == language_go)
8038 fixup_go_packaging (cu);
8039
3da10d80
KS
8040 /* Now that we have processed all the DIEs in the CU, all the types
8041 should be complete, and it should now be safe to compute all of the
8042 physnames. */
8043 compute_delayed_physnames (cu);
8044 do_cleanups (delayed_list_cleanup);
8045
fae299cd
DC
8046 /* Some compilers don't define a DW_AT_high_pc attribute for the
8047 compilation unit. If the DW_AT_high_pc is missing, synthesize
8048 it, by scanning the DIE's below the compilation unit. */
10b3939b 8049 get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
c906108c 8050
3e29f34a
MR
8051 addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
8052 static_block = end_symtab_get_static_block (addr, 0, 1);
4359dff1
JK
8053
8054 /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
8055 Also, DW_AT_ranges may record ranges not belonging to any child DIEs
8056 (such as virtual method tables). Record the ranges in STATIC_BLOCK's
8057 addrmap to help ensure it has an accurate map of pc values belonging to
8058 this comp unit. */
8059 dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
8060
43f3e411
DE
8061 cust = end_symtab_from_static_block (static_block,
8062 SECT_OFF_TEXT (objfile), 0);
c906108c 8063
43f3e411 8064 if (cust != NULL)
c906108c 8065 {
df15bd07 8066 int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
4632c0d0 8067
8be455d7
JK
8068 /* Set symtab language to language from DW_AT_language. If the
8069 compilation is from a C file generated by language preprocessors, do
8070 not set the language if it was already deduced by start_subfile. */
43f3e411 8071 if (!(cu->language == language_c
40e3ad0e 8072 && COMPUNIT_FILETABS (cust)->language != language_unknown))
43f3e411 8073 COMPUNIT_FILETABS (cust)->language = cu->language;
8be455d7
JK
8074
8075 /* GCC-4.0 has started to support -fvar-tracking. GCC-3.x still can
8076 produce DW_AT_location with location lists but it can be possibly
ab260dad
JK
8077 invalid without -fvar-tracking. Still up to GCC-4.4.x incl. 4.4.0
8078 there were bugs in prologue debug info, fixed later in GCC-4.5
8079 by "unwind info for epilogues" patch (which is not directly related).
8be455d7
JK
8080
8081 For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
8082 needed, it would be wrong due to missing DW_AT_producer there.
8083
8084 Still one can confuse GDB by using non-standard GCC compilation
8085 options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
8086 */
ab260dad 8087 if (cu->has_loclist && gcc_4_minor >= 5)
43f3e411 8088 cust->locations_valid = 1;
e0d00bc7
JK
8089
8090 if (gcc_4_minor >= 5)
43f3e411 8091 cust->epilogue_unwind_valid = 1;
96408a79 8092
43f3e411 8093 cust->call_site_htab = cu->call_site_htab;
c906108c 8094 }
9291a0cd
TT
8095
8096 if (dwarf2_per_objfile->using_index)
43f3e411 8097 per_cu->v.quick->compunit_symtab = cust;
9291a0cd
TT
8098 else
8099 {
8100 struct partial_symtab *pst = per_cu->v.psymtab;
43f3e411 8101 pst->compunit_symtab = cust;
9291a0cd
TT
8102 pst->readin = 1;
8103 }
c906108c 8104
95554aad
TT
8105 /* Push it for inclusion processing later. */
8106 VEC_safe_push (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus, per_cu);
8107
c906108c 8108 do_cleanups (back_to);
f4dc4d17 8109}
45cfd468 8110
f4dc4d17
DE
8111/* Generate full symbol information for type unit PER_CU, whose DIEs have
8112 already been loaded into memory. */
8113
8114static void
8115process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
8116 enum language pretend_language)
8117{
8118 struct dwarf2_cu *cu = per_cu->cu;
8119 struct objfile *objfile = per_cu->objfile;
43f3e411 8120 struct compunit_symtab *cust;
f4dc4d17 8121 struct cleanup *back_to, *delayed_list_cleanup;
0186c6a7
DE
8122 struct signatured_type *sig_type;
8123
8124 gdb_assert (per_cu->is_debug_types);
8125 sig_type = (struct signatured_type *) per_cu;
f4dc4d17
DE
8126
8127 buildsym_init ();
8128 back_to = make_cleanup (really_free_pendings, NULL);
8129 delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
8130
8131 cu->list_in_scope = &file_symbols;
8132
8133 cu->language = pretend_language;
8134 cu->language_defn = language_def (cu->language);
8135
8136 /* The symbol tables are set up in read_type_unit_scope. */
8137 process_die (cu->dies, cu);
8138
8139 /* For now fudge the Go package. */
8140 if (cu->language == language_go)
8141 fixup_go_packaging (cu);
8142
8143 /* Now that we have processed all the DIEs in the CU, all the types
8144 should be complete, and it should now be safe to compute all of the
8145 physnames. */
8146 compute_delayed_physnames (cu);
8147 do_cleanups (delayed_list_cleanup);
8148
8149 /* TUs share symbol tables.
8150 If this is the first TU to use this symtab, complete the construction
094b34ac
DE
8151 of it with end_expandable_symtab. Otherwise, complete the addition of
8152 this TU's symbols to the existing symtab. */
43f3e411 8153 if (sig_type->type_unit_group->compunit_symtab == NULL)
45cfd468 8154 {
43f3e411
DE
8155 cust = end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
8156 sig_type->type_unit_group->compunit_symtab = cust;
f4dc4d17 8157
43f3e411 8158 if (cust != NULL)
f4dc4d17
DE
8159 {
8160 /* Set symtab language to language from DW_AT_language. If the
8161 compilation is from a C file generated by language preprocessors,
8162 do not set the language if it was already deduced by
8163 start_subfile. */
43f3e411
DE
8164 if (!(cu->language == language_c
8165 && COMPUNIT_FILETABS (cust)->language != language_c))
8166 COMPUNIT_FILETABS (cust)->language = cu->language;
f4dc4d17
DE
8167 }
8168 }
8169 else
8170 {
0ab9ce85 8171 augment_type_symtab ();
43f3e411 8172 cust = sig_type->type_unit_group->compunit_symtab;
f4dc4d17
DE
8173 }
8174
8175 if (dwarf2_per_objfile->using_index)
43f3e411 8176 per_cu->v.quick->compunit_symtab = cust;
f4dc4d17
DE
8177 else
8178 {
8179 struct partial_symtab *pst = per_cu->v.psymtab;
43f3e411 8180 pst->compunit_symtab = cust;
f4dc4d17 8181 pst->readin = 1;
45cfd468 8182 }
f4dc4d17
DE
8183
8184 do_cleanups (back_to);
c906108c
SS
8185}
8186
95554aad
TT
8187/* Process an imported unit DIE. */
8188
8189static void
8190process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
8191{
8192 struct attribute *attr;
8193
f4dc4d17
DE
8194 /* For now we don't handle imported units in type units. */
8195 if (cu->per_cu->is_debug_types)
8196 {
8197 error (_("Dwarf Error: DW_TAG_imported_unit is not"
8198 " supported in type units [in module %s]"),
4262abfb 8199 objfile_name (cu->objfile));
f4dc4d17
DE
8200 }
8201
95554aad
TT
8202 attr = dwarf2_attr (die, DW_AT_import, cu);
8203 if (attr != NULL)
8204 {
8205 struct dwarf2_per_cu_data *per_cu;
8206 struct symtab *imported_symtab;
8207 sect_offset offset;
36586728 8208 int is_dwz;
95554aad
TT
8209
8210 offset = dwarf2_get_ref_die_offset (attr);
36586728
TT
8211 is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
8212 per_cu = dwarf2_find_containing_comp_unit (offset, is_dwz, cu->objfile);
95554aad 8213
69d751e3 8214 /* If necessary, add it to the queue and load its DIEs. */
95554aad
TT
8215 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
8216 load_full_comp_unit (per_cu, cu->language);
8217
796a7ff8 8218 VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
95554aad
TT
8219 per_cu);
8220 }
8221}
8222
adde2bff
DE
8223/* Reset the in_process bit of a die. */
8224
8225static void
8226reset_die_in_process (void *arg)
8227{
8228 struct die_info *die = arg;
8c3cb9fa 8229
adde2bff
DE
8230 die->in_process = 0;
8231}
8232
c906108c
SS
8233/* Process a die and its children. */
8234
8235static void
e7c27a73 8236process_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 8237{
adde2bff
DE
8238 struct cleanup *in_process;
8239
8240 /* We should only be processing those not already in process. */
8241 gdb_assert (!die->in_process);
8242
8243 die->in_process = 1;
8244 in_process = make_cleanup (reset_die_in_process,die);
8245
c906108c
SS
8246 switch (die->tag)
8247 {
8248 case DW_TAG_padding:
8249 break;
8250 case DW_TAG_compile_unit:
95554aad 8251 case DW_TAG_partial_unit:
e7c27a73 8252 read_file_scope (die, cu);
c906108c 8253 break;
348e048f
DE
8254 case DW_TAG_type_unit:
8255 read_type_unit_scope (die, cu);
8256 break;
c906108c 8257 case DW_TAG_subprogram:
c906108c 8258 case DW_TAG_inlined_subroutine:
edb3359d 8259 read_func_scope (die, cu);
c906108c
SS
8260 break;
8261 case DW_TAG_lexical_block:
14898363
L
8262 case DW_TAG_try_block:
8263 case DW_TAG_catch_block:
e7c27a73 8264 read_lexical_block_scope (die, cu);
c906108c 8265 break;
96408a79
SA
8266 case DW_TAG_GNU_call_site:
8267 read_call_site_scope (die, cu);
8268 break;
c906108c 8269 case DW_TAG_class_type:
680b30c7 8270 case DW_TAG_interface_type:
c906108c
SS
8271 case DW_TAG_structure_type:
8272 case DW_TAG_union_type:
134d01f1 8273 process_structure_scope (die, cu);
c906108c
SS
8274 break;
8275 case DW_TAG_enumeration_type:
134d01f1 8276 process_enumeration_scope (die, cu);
c906108c 8277 break;
134d01f1 8278
f792889a
DJ
8279 /* These dies have a type, but processing them does not create
8280 a symbol or recurse to process the children. Therefore we can
8281 read them on-demand through read_type_die. */
c906108c 8282 case DW_TAG_subroutine_type:
72019c9c 8283 case DW_TAG_set_type:
c906108c 8284 case DW_TAG_array_type:
c906108c 8285 case DW_TAG_pointer_type:
c906108c 8286 case DW_TAG_ptr_to_member_type:
c906108c 8287 case DW_TAG_reference_type:
c906108c 8288 case DW_TAG_string_type:
c906108c 8289 break;
134d01f1 8290
c906108c 8291 case DW_TAG_base_type:
a02abb62 8292 case DW_TAG_subrange_type:
cb249c71 8293 case DW_TAG_typedef:
134d01f1
DJ
8294 /* Add a typedef symbol for the type definition, if it has a
8295 DW_AT_name. */
f792889a 8296 new_symbol (die, read_type_die (die, cu), cu);
a02abb62 8297 break;
c906108c 8298 case DW_TAG_common_block:
e7c27a73 8299 read_common_block (die, cu);
c906108c
SS
8300 break;
8301 case DW_TAG_common_inclusion:
8302 break;
d9fa45fe 8303 case DW_TAG_namespace:
4d4ec4e5 8304 cu->processing_has_namespace_info = 1;
e7c27a73 8305 read_namespace (die, cu);
d9fa45fe 8306 break;
5d7cb8df 8307 case DW_TAG_module:
4d4ec4e5 8308 cu->processing_has_namespace_info = 1;
5d7cb8df
JK
8309 read_module (die, cu);
8310 break;
d9fa45fe 8311 case DW_TAG_imported_declaration:
74921315
KS
8312 cu->processing_has_namespace_info = 1;
8313 if (read_namespace_alias (die, cu))
8314 break;
8315 /* The declaration is not a global namespace alias: fall through. */
d9fa45fe 8316 case DW_TAG_imported_module:
4d4ec4e5 8317 cu->processing_has_namespace_info = 1;
27aa8d6a
SW
8318 if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
8319 || cu->language != language_fortran))
8320 complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
8321 dwarf_tag_name (die->tag));
8322 read_import_statement (die, cu);
d9fa45fe 8323 break;
95554aad
TT
8324
8325 case DW_TAG_imported_unit:
8326 process_imported_unit_die (die, cu);
8327 break;
8328
c906108c 8329 default:
e7c27a73 8330 new_symbol (die, NULL, cu);
c906108c
SS
8331 break;
8332 }
adde2bff
DE
8333
8334 do_cleanups (in_process);
c906108c 8335}
ca69b9e6
DE
8336\f
8337/* DWARF name computation. */
c906108c 8338
94af9270
KS
8339/* A helper function for dwarf2_compute_name which determines whether DIE
8340 needs to have the name of the scope prepended to the name listed in the
8341 die. */
8342
8343static int
8344die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
8345{
1c809c68
TT
8346 struct attribute *attr;
8347
94af9270
KS
8348 switch (die->tag)
8349 {
8350 case DW_TAG_namespace:
8351 case DW_TAG_typedef:
8352 case DW_TAG_class_type:
8353 case DW_TAG_interface_type:
8354 case DW_TAG_structure_type:
8355 case DW_TAG_union_type:
8356 case DW_TAG_enumeration_type:
8357 case DW_TAG_enumerator:
8358 case DW_TAG_subprogram:
08a76f8a 8359 case DW_TAG_inlined_subroutine:
94af9270 8360 case DW_TAG_member:
74921315 8361 case DW_TAG_imported_declaration:
94af9270
KS
8362 return 1;
8363
8364 case DW_TAG_variable:
c2b0a229 8365 case DW_TAG_constant:
94af9270
KS
8366 /* We only need to prefix "globally" visible variables. These include
8367 any variable marked with DW_AT_external or any variable that
8368 lives in a namespace. [Variables in anonymous namespaces
8369 require prefixing, but they are not DW_AT_external.] */
8370
8371 if (dwarf2_attr (die, DW_AT_specification, cu))
8372 {
8373 struct dwarf2_cu *spec_cu = cu;
9a619af0 8374
94af9270
KS
8375 return die_needs_namespace (die_specification (die, &spec_cu),
8376 spec_cu);
8377 }
8378
1c809c68 8379 attr = dwarf2_attr (die, DW_AT_external, cu);
f55ee35c
JK
8380 if (attr == NULL && die->parent->tag != DW_TAG_namespace
8381 && die->parent->tag != DW_TAG_module)
1c809c68
TT
8382 return 0;
8383 /* A variable in a lexical block of some kind does not need a
8384 namespace, even though in C++ such variables may be external
8385 and have a mangled name. */
8386 if (die->parent->tag == DW_TAG_lexical_block
8387 || die->parent->tag == DW_TAG_try_block
1054b214
TT
8388 || die->parent->tag == DW_TAG_catch_block
8389 || die->parent->tag == DW_TAG_subprogram)
1c809c68
TT
8390 return 0;
8391 return 1;
94af9270
KS
8392
8393 default:
8394 return 0;
8395 }
8396}
8397
98bfdba5
PA
8398/* Retrieve the last character from a mem_file. */
8399
8400static void
8401do_ui_file_peek_last (void *object, const char *buffer, long length)
8402{
8403 char *last_char_p = (char *) object;
8404
8405 if (length > 0)
8406 *last_char_p = buffer[length - 1];
8407}
8408
94af9270 8409/* Compute the fully qualified name of DIE in CU. If PHYSNAME is nonzero,
a766d390
DE
8410 compute the physname for the object, which include a method's:
8411 - formal parameters (C++/Java),
8412 - receiver type (Go),
8413 - return type (Java).
8414
8415 The term "physname" is a bit confusing.
8416 For C++, for example, it is the demangled name.
8417 For Go, for example, it's the mangled name.
94af9270 8418
af6b7be1
JB
8419 For Ada, return the DIE's linkage name rather than the fully qualified
8420 name. PHYSNAME is ignored..
8421
94af9270
KS
8422 The result is allocated on the objfile_obstack and canonicalized. */
8423
8424static const char *
15d034d0
TT
8425dwarf2_compute_name (const char *name,
8426 struct die_info *die, struct dwarf2_cu *cu,
94af9270
KS
8427 int physname)
8428{
bb5ed363
DE
8429 struct objfile *objfile = cu->objfile;
8430
94af9270
KS
8431 if (name == NULL)
8432 name = dwarf2_name (die, cu);
8433
f55ee35c
JK
8434 /* For Fortran GDB prefers DW_AT_*linkage_name if present but otherwise
8435 compute it by typename_concat inside GDB. */
8436 if (cu->language == language_ada
8437 || (cu->language == language_fortran && physname))
8438 {
8439 /* For Ada unit, we prefer the linkage name over the name, as
8440 the former contains the exported name, which the user expects
8441 to be able to reference. Ideally, we want the user to be able
8442 to reference this entity using either natural or linkage name,
8443 but we haven't started looking at this enhancement yet. */
7d45c7c3 8444 const char *name;
f55ee35c 8445
7d45c7c3
KB
8446 name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
8447 if (name == NULL)
8448 name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
8449 if (name != NULL)
8450 return name;
f55ee35c
JK
8451 }
8452
94af9270
KS
8453 /* These are the only languages we know how to qualify names in. */
8454 if (name != NULL
f55ee35c 8455 && (cu->language == language_cplus || cu->language == language_java
45280282 8456 || cu->language == language_fortran || cu->language == language_d))
94af9270
KS
8457 {
8458 if (die_needs_namespace (die, cu))
8459 {
8460 long length;
0d5cff50 8461 const char *prefix;
94af9270 8462 struct ui_file *buf;
34a68019
TT
8463 char *intermediate_name;
8464 const char *canonical_name = NULL;
94af9270
KS
8465
8466 prefix = determine_prefix (die, cu);
8467 buf = mem_fileopen ();
8468 if (*prefix != '\0')
8469 {
f55ee35c
JK
8470 char *prefixed_name = typename_concat (NULL, prefix, name,
8471 physname, cu);
9a619af0 8472
94af9270
KS
8473 fputs_unfiltered (prefixed_name, buf);
8474 xfree (prefixed_name);
8475 }
8476 else
62d5b8da 8477 fputs_unfiltered (name, buf);
94af9270 8478
98bfdba5
PA
8479 /* Template parameters may be specified in the DIE's DW_AT_name, or
8480 as children with DW_TAG_template_type_param or
8481 DW_TAG_value_type_param. If the latter, add them to the name
8482 here. If the name already has template parameters, then
8483 skip this step; some versions of GCC emit both, and
8484 it is more efficient to use the pre-computed name.
8485
8486 Something to keep in mind about this process: it is very
8487 unlikely, or in some cases downright impossible, to produce
8488 something that will match the mangled name of a function.
8489 If the definition of the function has the same debug info,
8490 we should be able to match up with it anyway. But fallbacks
8491 using the minimal symbol, for instance to find a method
8492 implemented in a stripped copy of libstdc++, will not work.
8493 If we do not have debug info for the definition, we will have to
8494 match them up some other way.
8495
8496 When we do name matching there is a related problem with function
8497 templates; two instantiated function templates are allowed to
8498 differ only by their return types, which we do not add here. */
8499
8500 if (cu->language == language_cplus && strchr (name, '<') == NULL)
8501 {
8502 struct attribute *attr;
8503 struct die_info *child;
8504 int first = 1;
8505
8506 die->building_fullname = 1;
8507
8508 for (child = die->child; child != NULL; child = child->sibling)
8509 {
8510 struct type *type;
12df843f 8511 LONGEST value;
d521ce57 8512 const gdb_byte *bytes;
98bfdba5
PA
8513 struct dwarf2_locexpr_baton *baton;
8514 struct value *v;
8515
8516 if (child->tag != DW_TAG_template_type_param
8517 && child->tag != DW_TAG_template_value_param)
8518 continue;
8519
8520 if (first)
8521 {
8522 fputs_unfiltered ("<", buf);
8523 first = 0;
8524 }
8525 else
8526 fputs_unfiltered (", ", buf);
8527
8528 attr = dwarf2_attr (child, DW_AT_type, cu);
8529 if (attr == NULL)
8530 {
8531 complaint (&symfile_complaints,
8532 _("template parameter missing DW_AT_type"));
8533 fputs_unfiltered ("UNKNOWN_TYPE", buf);
8534 continue;
8535 }
8536 type = die_type (child, cu);
8537
8538 if (child->tag == DW_TAG_template_type_param)
8539 {
79d43c61 8540 c_print_type (type, "", buf, -1, 0, &type_print_raw_options);
98bfdba5
PA
8541 continue;
8542 }
8543
8544 attr = dwarf2_attr (child, DW_AT_const_value, cu);
8545 if (attr == NULL)
8546 {
8547 complaint (&symfile_complaints,
3e43a32a
MS
8548 _("template parameter missing "
8549 "DW_AT_const_value"));
98bfdba5
PA
8550 fputs_unfiltered ("UNKNOWN_VALUE", buf);
8551 continue;
8552 }
8553
8554 dwarf2_const_value_attr (attr, type, name,
8555 &cu->comp_unit_obstack, cu,
8556 &value, &bytes, &baton);
8557
8558 if (TYPE_NOSIGN (type))
8559 /* GDB prints characters as NUMBER 'CHAR'. If that's
8560 changed, this can use value_print instead. */
8561 c_printchar (value, type, buf);
8562 else
8563 {
8564 struct value_print_options opts;
8565
8566 if (baton != NULL)
8567 v = dwarf2_evaluate_loc_desc (type, NULL,
8568 baton->data,
8569 baton->size,
8570 baton->per_cu);
8571 else if (bytes != NULL)
8572 {
8573 v = allocate_value (type);
8574 memcpy (value_contents_writeable (v), bytes,
8575 TYPE_LENGTH (type));
8576 }
8577 else
8578 v = value_from_longest (type, value);
8579
3e43a32a
MS
8580 /* Specify decimal so that we do not depend on
8581 the radix. */
98bfdba5
PA
8582 get_formatted_print_options (&opts, 'd');
8583 opts.raw = 1;
8584 value_print (v, buf, &opts);
8585 release_value (v);
8586 value_free (v);
8587 }
8588 }
8589
8590 die->building_fullname = 0;
8591
8592 if (!first)
8593 {
8594 /* Close the argument list, with a space if necessary
8595 (nested templates). */
8596 char last_char = '\0';
8597 ui_file_put (buf, do_ui_file_peek_last, &last_char);
8598 if (last_char == '>')
8599 fputs_unfiltered (" >", buf);
8600 else
8601 fputs_unfiltered (">", buf);
8602 }
8603 }
8604
94af9270
KS
8605 /* For Java and C++ methods, append formal parameter type
8606 information, if PHYSNAME. */
6e70227d 8607
94af9270
KS
8608 if (physname && die->tag == DW_TAG_subprogram
8609 && (cu->language == language_cplus
8610 || cu->language == language_java))
8611 {
8612 struct type *type = read_type_die (die, cu);
8613
79d43c61
TT
8614 c_type_print_args (type, buf, 1, cu->language,
8615 &type_print_raw_options);
94af9270
KS
8616
8617 if (cu->language == language_java)
8618 {
8619 /* For java, we must append the return type to method
0963b4bd 8620 names. */
94af9270
KS
8621 if (die->tag == DW_TAG_subprogram)
8622 java_print_type (TYPE_TARGET_TYPE (type), "", buf,
79d43c61 8623 0, 0, &type_print_raw_options);
94af9270
KS
8624 }
8625 else if (cu->language == language_cplus)
8626 {
60430eff
DJ
8627 /* Assume that an artificial first parameter is
8628 "this", but do not crash if it is not. RealView
8629 marks unnamed (and thus unused) parameters as
8630 artificial; there is no way to differentiate
8631 the two cases. */
94af9270
KS
8632 if (TYPE_NFIELDS (type) > 0
8633 && TYPE_FIELD_ARTIFICIAL (type, 0)
60430eff 8634 && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
3e43a32a
MS
8635 && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
8636 0))))
94af9270
KS
8637 fputs_unfiltered (" const", buf);
8638 }
8639 }
8640
34a68019 8641 intermediate_name = ui_file_xstrdup (buf, &length);
94af9270
KS
8642 ui_file_delete (buf);
8643
8644 if (cu->language == language_cplus)
34a68019
TT
8645 canonical_name
8646 = dwarf2_canonicalize_name (intermediate_name, cu,
8647 &objfile->per_bfd->storage_obstack);
8648
8649 /* If we only computed INTERMEDIATE_NAME, or if
8650 INTERMEDIATE_NAME is already canonical, then we need to
8651 copy it to the appropriate obstack. */
8652 if (canonical_name == NULL || canonical_name == intermediate_name)
8653 name = obstack_copy0 (&objfile->per_bfd->storage_obstack,
8654 intermediate_name,
8655 strlen (intermediate_name));
8656 else
8657 name = canonical_name;
9a619af0 8658
34a68019 8659 xfree (intermediate_name);
94af9270
KS
8660 }
8661 }
8662
8663 return name;
8664}
8665
0114d602
DJ
8666/* Return the fully qualified name of DIE, based on its DW_AT_name.
8667 If scope qualifiers are appropriate they will be added. The result
34a68019 8668 will be allocated on the storage_obstack, or NULL if the DIE does
94af9270
KS
8669 not have a name. NAME may either be from a previous call to
8670 dwarf2_name or NULL.
8671
0963b4bd 8672 The output string will be canonicalized (if C++/Java). */
0114d602
DJ
8673
8674static const char *
15d034d0 8675dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
0114d602 8676{
94af9270
KS
8677 return dwarf2_compute_name (name, die, cu, 0);
8678}
0114d602 8679
94af9270
KS
8680/* Construct a physname for the given DIE in CU. NAME may either be
8681 from a previous call to dwarf2_name or NULL. The result will be
8682 allocated on the objfile_objstack or NULL if the DIE does not have a
8683 name.
0114d602 8684
94af9270 8685 The output string will be canonicalized (if C++/Java). */
0114d602 8686
94af9270 8687static const char *
15d034d0 8688dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
94af9270 8689{
bb5ed363 8690 struct objfile *objfile = cu->objfile;
900e11f9
JK
8691 struct attribute *attr;
8692 const char *retval, *mangled = NULL, *canon = NULL;
8693 struct cleanup *back_to;
8694 int need_copy = 1;
8695
8696 /* In this case dwarf2_compute_name is just a shortcut not building anything
8697 on its own. */
8698 if (!die_needs_namespace (die, cu))
8699 return dwarf2_compute_name (name, die, cu, 1);
8700
8701 back_to = make_cleanup (null_cleanup, NULL);
8702
7d45c7c3
KB
8703 mangled = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
8704 if (mangled == NULL)
8705 mangled = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
900e11f9
JK
8706
8707 /* DW_AT_linkage_name is missing in some cases - depend on what GDB
8708 has computed. */
7d45c7c3 8709 if (mangled != NULL)
900e11f9
JK
8710 {
8711 char *demangled;
8712
900e11f9
JK
8713 /* Use DMGL_RET_DROP for C++ template functions to suppress their return
8714 type. It is easier for GDB users to search for such functions as
8715 `name(params)' than `long name(params)'. In such case the minimal
8716 symbol names do not match the full symbol names but for template
8717 functions there is never a need to look up their definition from their
8718 declaration so the only disadvantage remains the minimal symbol
8719 variant `long name(params)' does not have the proper inferior type.
8720 */
8721
a766d390
DE
8722 if (cu->language == language_go)
8723 {
8724 /* This is a lie, but we already lie to the caller new_symbol_full.
8725 new_symbol_full assumes we return the mangled name.
8726 This just undoes that lie until things are cleaned up. */
8727 demangled = NULL;
8728 }
8729 else
8730 {
8de20a37
TT
8731 demangled = gdb_demangle (mangled,
8732 (DMGL_PARAMS | DMGL_ANSI
8733 | (cu->language == language_java
8734 ? DMGL_JAVA | DMGL_RET_POSTFIX
8735 : DMGL_RET_DROP)));
a766d390 8736 }
900e11f9
JK
8737 if (demangled)
8738 {
8739 make_cleanup (xfree, demangled);
8740 canon = demangled;
8741 }
8742 else
8743 {
8744 canon = mangled;
8745 need_copy = 0;
8746 }
8747 }
8748
8749 if (canon == NULL || check_physname)
8750 {
8751 const char *physname = dwarf2_compute_name (name, die, cu, 1);
8752
8753 if (canon != NULL && strcmp (physname, canon) != 0)
8754 {
8755 /* It may not mean a bug in GDB. The compiler could also
8756 compute DW_AT_linkage_name incorrectly. But in such case
8757 GDB would need to be bug-to-bug compatible. */
8758
8759 complaint (&symfile_complaints,
8760 _("Computed physname <%s> does not match demangled <%s> "
8761 "(from linkage <%s>) - DIE at 0x%x [in module %s]"),
4262abfb
JK
8762 physname, canon, mangled, die->offset.sect_off,
8763 objfile_name (objfile));
900e11f9
JK
8764
8765 /* Prefer DW_AT_linkage_name (in the CANON form) - when it
8766 is available here - over computed PHYSNAME. It is safer
8767 against both buggy GDB and buggy compilers. */
8768
8769 retval = canon;
8770 }
8771 else
8772 {
8773 retval = physname;
8774 need_copy = 0;
8775 }
8776 }
8777 else
8778 retval = canon;
8779
8780 if (need_copy)
34a68019
TT
8781 retval = obstack_copy0 (&objfile->per_bfd->storage_obstack,
8782 retval, strlen (retval));
900e11f9
JK
8783
8784 do_cleanups (back_to);
8785 return retval;
0114d602
DJ
8786}
8787
74921315
KS
8788/* Inspect DIE in CU for a namespace alias. If one exists, record
8789 a new symbol for it.
8790
8791 Returns 1 if a namespace alias was recorded, 0 otherwise. */
8792
8793static int
8794read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
8795{
8796 struct attribute *attr;
8797
8798 /* If the die does not have a name, this is not a namespace
8799 alias. */
8800 attr = dwarf2_attr (die, DW_AT_name, cu);
8801 if (attr != NULL)
8802 {
8803 int num;
8804 struct die_info *d = die;
8805 struct dwarf2_cu *imported_cu = cu;
8806
8807 /* If the compiler has nested DW_AT_imported_declaration DIEs,
8808 keep inspecting DIEs until we hit the underlying import. */
8809#define MAX_NESTED_IMPORTED_DECLARATIONS 100
8810 for (num = 0; num < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
8811 {
8812 attr = dwarf2_attr (d, DW_AT_import, cu);
8813 if (attr == NULL)
8814 break;
8815
8816 d = follow_die_ref (d, attr, &imported_cu);
8817 if (d->tag != DW_TAG_imported_declaration)
8818 break;
8819 }
8820
8821 if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
8822 {
8823 complaint (&symfile_complaints,
8824 _("DIE at 0x%x has too many recursively imported "
8825 "declarations"), d->offset.sect_off);
8826 return 0;
8827 }
8828
8829 if (attr != NULL)
8830 {
8831 struct type *type;
8832 sect_offset offset = dwarf2_get_ref_die_offset (attr);
8833
8834 type = get_die_type_at_offset (offset, cu->per_cu);
8835 if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
8836 {
8837 /* This declaration is a global namespace alias. Add
8838 a symbol for it whose type is the aliased namespace. */
8839 new_symbol (die, type, cu);
8840 return 1;
8841 }
8842 }
8843 }
8844
8845 return 0;
8846}
8847
22cee43f
PMR
8848/* Return the using directives repository (global or local?) to use in the
8849 current context for LANGUAGE.
8850
8851 For Ada, imported declarations can materialize renamings, which *may* be
8852 global. However it is impossible (for now?) in DWARF to distinguish
8853 "external" imported declarations and "static" ones. As all imported
8854 declarations seem to be static in all other languages, make them all CU-wide
8855 global only in Ada. */
8856
8857static struct using_direct **
8858using_directives (enum language language)
8859{
8860 if (language == language_ada && context_stack_depth == 0)
8861 return &global_using_directives;
8862 else
8863 return &local_using_directives;
8864}
8865
27aa8d6a
SW
8866/* Read the import statement specified by the given die and record it. */
8867
8868static void
8869read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
8870{
bb5ed363 8871 struct objfile *objfile = cu->objfile;
27aa8d6a 8872 struct attribute *import_attr;
32019081 8873 struct die_info *imported_die, *child_die;
de4affc9 8874 struct dwarf2_cu *imported_cu;
27aa8d6a 8875 const char *imported_name;
794684b6 8876 const char *imported_name_prefix;
13387711
SW
8877 const char *canonical_name;
8878 const char *import_alias;
8879 const char *imported_declaration = NULL;
794684b6 8880 const char *import_prefix;
32019081
JK
8881 VEC (const_char_ptr) *excludes = NULL;
8882 struct cleanup *cleanups;
13387711 8883
27aa8d6a
SW
8884 import_attr = dwarf2_attr (die, DW_AT_import, cu);
8885 if (import_attr == NULL)
8886 {
8887 complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8888 dwarf_tag_name (die->tag));
8889 return;
8890 }
8891
de4affc9
CC
8892 imported_cu = cu;
8893 imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
8894 imported_name = dwarf2_name (imported_die, imported_cu);
27aa8d6a
SW
8895 if (imported_name == NULL)
8896 {
8897 /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
8898
8899 The import in the following code:
8900 namespace A
8901 {
8902 typedef int B;
8903 }
8904
8905 int main ()
8906 {
8907 using A::B;
8908 B b;
8909 return b;
8910 }
8911
8912 ...
8913 <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
8914 <52> DW_AT_decl_file : 1
8915 <53> DW_AT_decl_line : 6
8916 <54> DW_AT_import : <0x75>
8917 <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
8918 <59> DW_AT_name : B
8919 <5b> DW_AT_decl_file : 1
8920 <5c> DW_AT_decl_line : 2
8921 <5d> DW_AT_type : <0x6e>
8922 ...
8923 <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
8924 <76> DW_AT_byte_size : 4
8925 <77> DW_AT_encoding : 5 (signed)
8926
8927 imports the wrong die ( 0x75 instead of 0x58 ).
8928 This case will be ignored until the gcc bug is fixed. */
8929 return;
8930 }
8931
82856980
SW
8932 /* Figure out the local name after import. */
8933 import_alias = dwarf2_name (die, cu);
27aa8d6a 8934
794684b6
SW
8935 /* Figure out where the statement is being imported to. */
8936 import_prefix = determine_prefix (die, cu);
8937
8938 /* Figure out what the scope of the imported die is and prepend it
8939 to the name of the imported die. */
de4affc9 8940 imported_name_prefix = determine_prefix (imported_die, imported_cu);
794684b6 8941
f55ee35c
JK
8942 if (imported_die->tag != DW_TAG_namespace
8943 && imported_die->tag != DW_TAG_module)
794684b6 8944 {
13387711
SW
8945 imported_declaration = imported_name;
8946 canonical_name = imported_name_prefix;
794684b6 8947 }
13387711 8948 else if (strlen (imported_name_prefix) > 0)
12aaed36 8949 canonical_name = obconcat (&objfile->objfile_obstack,
45280282
IB
8950 imported_name_prefix,
8951 (cu->language == language_d ? "." : "::"),
8952 imported_name, (char *) NULL);
13387711
SW
8953 else
8954 canonical_name = imported_name;
794684b6 8955
32019081
JK
8956 cleanups = make_cleanup (VEC_cleanup (const_char_ptr), &excludes);
8957
8958 if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
8959 for (child_die = die->child; child_die && child_die->tag;
8960 child_die = sibling_die (child_die))
8961 {
8962 /* DWARF-4: A Fortran use statement with a “rename list” may be
8963 represented by an imported module entry with an import attribute
8964 referring to the module and owned entries corresponding to those
8965 entities that are renamed as part of being imported. */
8966
8967 if (child_die->tag != DW_TAG_imported_declaration)
8968 {
8969 complaint (&symfile_complaints,
8970 _("child DW_TAG_imported_declaration expected "
8971 "- DIE at 0x%x [in module %s]"),
4262abfb 8972 child_die->offset.sect_off, objfile_name (objfile));
32019081
JK
8973 continue;
8974 }
8975
8976 import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
8977 if (import_attr == NULL)
8978 {
8979 complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8980 dwarf_tag_name (child_die->tag));
8981 continue;
8982 }
8983
8984 imported_cu = cu;
8985 imported_die = follow_die_ref_or_sig (child_die, import_attr,
8986 &imported_cu);
8987 imported_name = dwarf2_name (imported_die, imported_cu);
8988 if (imported_name == NULL)
8989 {
8990 complaint (&symfile_complaints,
8991 _("child DW_TAG_imported_declaration has unknown "
8992 "imported name - DIE at 0x%x [in module %s]"),
4262abfb 8993 child_die->offset.sect_off, objfile_name (objfile));
32019081
JK
8994 continue;
8995 }
8996
8997 VEC_safe_push (const_char_ptr, excludes, imported_name);
8998
8999 process_die (child_die, cu);
9000 }
9001
22cee43f
PMR
9002 add_using_directive (using_directives (cu->language),
9003 import_prefix,
9004 canonical_name,
9005 import_alias,
9006 imported_declaration,
9007 excludes,
9008 0,
9009 &objfile->objfile_obstack);
32019081
JK
9010
9011 do_cleanups (cleanups);
27aa8d6a
SW
9012}
9013
f4dc4d17 9014/* Cleanup function for handle_DW_AT_stmt_list. */
ae2de4f8 9015
cb1df416
DJ
9016static void
9017free_cu_line_header (void *arg)
9018{
9019 struct dwarf2_cu *cu = arg;
9020
9021 free_line_header (cu->line_header);
9022 cu->line_header = NULL;
9023}
9024
1b80a9fa
JK
9025/* Check for possibly missing DW_AT_comp_dir with relative .debug_line
9026 directory paths. GCC SVN r127613 (new option -fdebug-prefix-map) fixed
9027 this, it was first present in GCC release 4.3.0. */
9028
9029static int
9030producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
9031{
9032 if (!cu->checked_producer)
9033 check_producer (cu);
9034
9035 return cu->producer_is_gcc_lt_4_3;
9036}
9037
9291a0cd
TT
9038static void
9039find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu,
15d034d0 9040 const char **name, const char **comp_dir)
9291a0cd 9041{
9291a0cd
TT
9042 /* Find the filename. Do not use dwarf2_name here, since the filename
9043 is not a source language identifier. */
7d45c7c3
KB
9044 *name = dwarf2_string_attr (die, DW_AT_name, cu);
9045 *comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
9291a0cd 9046
7d45c7c3
KB
9047 if (*comp_dir == NULL
9048 && producer_is_gcc_lt_4_3 (cu) && *name != NULL
9049 && IS_ABSOLUTE_PATH (*name))
9291a0cd 9050 {
15d034d0
TT
9051 char *d = ldirname (*name);
9052
9053 *comp_dir = d;
9054 if (d != NULL)
9055 make_cleanup (xfree, d);
9291a0cd
TT
9056 }
9057 if (*comp_dir != NULL)
9058 {
9059 /* Irix 6.2 native cc prepends <machine>.: to the compilation
9060 directory, get rid of it. */
9061 char *cp = strchr (*comp_dir, ':');
9062
9063 if (cp && cp != *comp_dir && cp[-1] == '.' && cp[1] == '/')
9064 *comp_dir = cp + 1;
9065 }
9066
9067 if (*name == NULL)
9068 *name = "<unknown>";
9069}
9070
f4dc4d17
DE
9071/* Handle DW_AT_stmt_list for a compilation unit.
9072 DIE is the DW_TAG_compile_unit die for CU.
c3b7b696
YQ
9073 COMP_DIR is the compilation directory. LOWPC is passed to
9074 dwarf_decode_lines. See dwarf_decode_lines comments about it. */
2ab95328
TT
9075
9076static void
9077handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
c3b7b696 9078 const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
2ab95328 9079{
527f3840 9080 struct objfile *objfile = dwarf2_per_objfile->objfile;
2ab95328 9081 struct attribute *attr;
527f3840
JK
9082 unsigned int line_offset;
9083 struct line_header line_header_local;
9084 hashval_t line_header_local_hash;
9085 unsigned u;
9086 void **slot;
9087 int decode_mapping;
2ab95328 9088
f4dc4d17
DE
9089 gdb_assert (! cu->per_cu->is_debug_types);
9090
2ab95328 9091 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
527f3840
JK
9092 if (attr == NULL)
9093 return;
9094
9095 line_offset = DW_UNSND (attr);
9096
9097 /* The line header hash table is only created if needed (it exists to
9098 prevent redundant reading of the line table for partial_units).
9099 If we're given a partial_unit, we'll need it. If we're given a
9100 compile_unit, then use the line header hash table if it's already
9101 created, but don't create one just yet. */
9102
9103 if (dwarf2_per_objfile->line_header_hash == NULL
9104 && die->tag == DW_TAG_partial_unit)
2ab95328 9105 {
527f3840
JK
9106 dwarf2_per_objfile->line_header_hash
9107 = htab_create_alloc_ex (127, line_header_hash_voidp,
9108 line_header_eq_voidp,
9109 free_line_header_voidp,
9110 &objfile->objfile_obstack,
9111 hashtab_obstack_allocate,
9112 dummy_obstack_deallocate);
9113 }
2ab95328 9114
527f3840
JK
9115 line_header_local.offset.sect_off = line_offset;
9116 line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
9117 line_header_local_hash = line_header_hash (&line_header_local);
9118 if (dwarf2_per_objfile->line_header_hash != NULL)
9119 {
9120 slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
9121 &line_header_local,
9122 line_header_local_hash, NO_INSERT);
9123
9124 /* For DW_TAG_compile_unit we need info like symtab::linetable which
9125 is not present in *SLOT (since if there is something in *SLOT then
9126 it will be for a partial_unit). */
9127 if (die->tag == DW_TAG_partial_unit && slot != NULL)
dee91e82 9128 {
527f3840
JK
9129 gdb_assert (*slot != NULL);
9130 cu->line_header = *slot;
9131 return;
dee91e82 9132 }
2ab95328 9133 }
527f3840
JK
9134
9135 /* dwarf_decode_line_header does not yet provide sufficient information.
9136 We always have to call also dwarf_decode_lines for it. */
9137 cu->line_header = dwarf_decode_line_header (line_offset, cu);
9138 if (cu->line_header == NULL)
9139 return;
9140
9141 if (dwarf2_per_objfile->line_header_hash == NULL)
9142 slot = NULL;
9143 else
9144 {
9145 slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
9146 &line_header_local,
9147 line_header_local_hash, INSERT);
9148 gdb_assert (slot != NULL);
9149 }
9150 if (slot != NULL && *slot == NULL)
9151 {
9152 /* This newly decoded line number information unit will be owned
9153 by line_header_hash hash table. */
9154 *slot = cu->line_header;
9155 }
9156 else
9157 {
9158 /* We cannot free any current entry in (*slot) as that struct line_header
9159 may be already used by multiple CUs. Create only temporary decoded
9160 line_header for this CU - it may happen at most once for each line
9161 number information unit. And if we're not using line_header_hash
9162 then this is what we want as well. */
9163 gdb_assert (die->tag != DW_TAG_partial_unit);
9164 make_cleanup (free_cu_line_header, cu);
9165 }
9166 decode_mapping = (die->tag != DW_TAG_partial_unit);
9167 dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
9168 decode_mapping);
2ab95328
TT
9169}
9170
95554aad 9171/* Process DW_TAG_compile_unit or DW_TAG_partial_unit. */
ae2de4f8 9172
c906108c 9173static void
e7c27a73 9174read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 9175{
dee91e82 9176 struct objfile *objfile = dwarf2_per_objfile->objfile;
3e29f34a 9177 struct gdbarch *gdbarch = get_objfile_arch (objfile);
debd256d 9178 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2acceee2 9179 CORE_ADDR lowpc = ((CORE_ADDR) -1);
c906108c
SS
9180 CORE_ADDR highpc = ((CORE_ADDR) 0);
9181 struct attribute *attr;
15d034d0
TT
9182 const char *name = NULL;
9183 const char *comp_dir = NULL;
c906108c
SS
9184 struct die_info *child_die;
9185 bfd *abfd = objfile->obfd;
e142c38c 9186 CORE_ADDR baseaddr;
6e70227d 9187
e142c38c 9188 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 9189
fae299cd 9190 get_scope_pc_bounds (die, &lowpc, &highpc, cu);
c906108c
SS
9191
9192 /* If we didn't find a lowpc, set it to highpc to avoid complaints
9193 from finish_block. */
2acceee2 9194 if (lowpc == ((CORE_ADDR) -1))
c906108c 9195 lowpc = highpc;
3e29f34a 9196 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
c906108c 9197
9291a0cd 9198 find_file_and_directory (die, cu, &name, &comp_dir);
e1024ff1 9199
95554aad 9200 prepare_one_comp_unit (cu, die, cu->language);
303b6f5d 9201
f4b8a18d
KW
9202 /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
9203 standardised yet. As a workaround for the language detection we fall
9204 back to the DW_AT_producer string. */
9205 if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
9206 cu->language = language_opencl;
9207
3019eac3
DE
9208 /* Similar hack for Go. */
9209 if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
9210 set_cu_language (DW_LANG_Go, cu);
9211
f4dc4d17 9212 dwarf2_start_symtab (cu, name, comp_dir, lowpc);
3019eac3
DE
9213
9214 /* Decode line number information if present. We do this before
9215 processing child DIEs, so that the line header table is available
9216 for DW_AT_decl_file. */
c3b7b696 9217 handle_DW_AT_stmt_list (die, cu, comp_dir, lowpc);
3019eac3
DE
9218
9219 /* Process all dies in compilation unit. */
9220 if (die->child != NULL)
9221 {
9222 child_die = die->child;
9223 while (child_die && child_die->tag)
9224 {
9225 process_die (child_die, cu);
9226 child_die = sibling_die (child_die);
9227 }
9228 }
9229
9230 /* Decode macro information, if present. Dwarf 2 macro information
9231 refers to information in the line number info statement program
9232 header, so we can only read it if we've read the header
9233 successfully. */
9234 attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
9235 if (attr && cu->line_header)
9236 {
9237 if (dwarf2_attr (die, DW_AT_macro_info, cu))
9238 complaint (&symfile_complaints,
9239 _("CU refers to both DW_AT_GNU_macros and DW_AT_macro_info"));
9240
43f3e411 9241 dwarf_decode_macros (cu, DW_UNSND (attr), 1);
3019eac3
DE
9242 }
9243 else
9244 {
9245 attr = dwarf2_attr (die, DW_AT_macro_info, cu);
9246 if (attr && cu->line_header)
9247 {
9248 unsigned int macro_offset = DW_UNSND (attr);
9249
43f3e411 9250 dwarf_decode_macros (cu, macro_offset, 0);
3019eac3
DE
9251 }
9252 }
9253
9254 do_cleanups (back_to);
9255}
9256
f4dc4d17
DE
9257/* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
9258 Create the set of symtabs used by this TU, or if this TU is sharing
9259 symtabs with another TU and the symtabs have already been created
9260 then restore those symtabs in the line header.
9261 We don't need the pc/line-number mapping for type units. */
3019eac3
DE
9262
9263static void
f4dc4d17 9264setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
3019eac3 9265{
f4dc4d17
DE
9266 struct objfile *objfile = dwarf2_per_objfile->objfile;
9267 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
9268 struct type_unit_group *tu_group;
9269 int first_time;
9270 struct line_header *lh;
3019eac3 9271 struct attribute *attr;
f4dc4d17 9272 unsigned int i, line_offset;
0186c6a7 9273 struct signatured_type *sig_type;
3019eac3 9274
f4dc4d17 9275 gdb_assert (per_cu->is_debug_types);
0186c6a7 9276 sig_type = (struct signatured_type *) per_cu;
3019eac3 9277
f4dc4d17 9278 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
3019eac3 9279
f4dc4d17 9280 /* If we're using .gdb_index (includes -readnow) then
74e04d1c 9281 per_cu->type_unit_group may not have been set up yet. */
0186c6a7
DE
9282 if (sig_type->type_unit_group == NULL)
9283 sig_type->type_unit_group = get_type_unit_group (cu, attr);
9284 tu_group = sig_type->type_unit_group;
f4dc4d17
DE
9285
9286 /* If we've already processed this stmt_list there's no real need to
9287 do it again, we could fake it and just recreate the part we need
9288 (file name,index -> symtab mapping). If data shows this optimization
9289 is useful we can do it then. */
43f3e411 9290 first_time = tu_group->compunit_symtab == NULL;
f4dc4d17
DE
9291
9292 /* We have to handle the case of both a missing DW_AT_stmt_list or bad
9293 debug info. */
9294 lh = NULL;
9295 if (attr != NULL)
3019eac3 9296 {
f4dc4d17
DE
9297 line_offset = DW_UNSND (attr);
9298 lh = dwarf_decode_line_header (line_offset, cu);
9299 }
9300 if (lh == NULL)
9301 {
9302 if (first_time)
9303 dwarf2_start_symtab (cu, "", NULL, 0);
9304 else
9305 {
9306 gdb_assert (tu_group->symtabs == NULL);
0ab9ce85 9307 restart_symtab (tu_group->compunit_symtab, "", 0);
f4dc4d17 9308 }
f4dc4d17 9309 return;
3019eac3
DE
9310 }
9311
f4dc4d17
DE
9312 cu->line_header = lh;
9313 make_cleanup (free_cu_line_header, cu);
3019eac3 9314
f4dc4d17
DE
9315 if (first_time)
9316 {
43f3e411 9317 struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
3019eac3 9318
f4dc4d17
DE
9319 tu_group->num_symtabs = lh->num_file_names;
9320 tu_group->symtabs = XNEWVEC (struct symtab *, lh->num_file_names);
3019eac3 9321
f4dc4d17
DE
9322 for (i = 0; i < lh->num_file_names; ++i)
9323 {
d521ce57 9324 const char *dir = NULL;
f4dc4d17 9325 struct file_entry *fe = &lh->file_names[i];
3019eac3 9326
afa6c9ab 9327 if (fe->dir_index && lh->include_dirs != NULL)
f4dc4d17 9328 dir = lh->include_dirs[fe->dir_index - 1];
4d663531 9329 dwarf2_start_subfile (fe->name, dir);
3019eac3 9330
f4dc4d17
DE
9331 if (current_subfile->symtab == NULL)
9332 {
9333 /* NOTE: start_subfile will recognize when it's been passed
9334 a file it has already seen. So we can't assume there's a
43f3e411 9335 simple mapping from lh->file_names to subfiles, plus
f4dc4d17 9336 lh->file_names may contain dups. */
43f3e411
DE
9337 current_subfile->symtab
9338 = allocate_symtab (cust, current_subfile->name);
f4dc4d17
DE
9339 }
9340
9341 fe->symtab = current_subfile->symtab;
9342 tu_group->symtabs[i] = fe->symtab;
9343 }
9344 }
9345 else
3019eac3 9346 {
0ab9ce85 9347 restart_symtab (tu_group->compunit_symtab, "", 0);
f4dc4d17
DE
9348
9349 for (i = 0; i < lh->num_file_names; ++i)
9350 {
9351 struct file_entry *fe = &lh->file_names[i];
9352
9353 fe->symtab = tu_group->symtabs[i];
9354 }
3019eac3
DE
9355 }
9356
f4dc4d17
DE
9357 /* The main symtab is allocated last. Type units don't have DW_AT_name
9358 so they don't have a "real" (so to speak) symtab anyway.
9359 There is later code that will assign the main symtab to all symbols
9360 that don't have one. We need to handle the case of a symbol with a
9361 missing symtab (DW_AT_decl_file) anyway. */
9362}
3019eac3 9363
f4dc4d17
DE
9364/* Process DW_TAG_type_unit.
9365 For TUs we want to skip the first top level sibling if it's not the
9366 actual type being defined by this TU. In this case the first top
9367 level sibling is there to provide context only. */
3019eac3 9368
f4dc4d17
DE
9369static void
9370read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
9371{
9372 struct die_info *child_die;
3019eac3 9373
f4dc4d17
DE
9374 prepare_one_comp_unit (cu, die, language_minimal);
9375
9376 /* Initialize (or reinitialize) the machinery for building symtabs.
9377 We do this before processing child DIEs, so that the line header table
9378 is available for DW_AT_decl_file. */
9379 setup_type_unit_groups (die, cu);
9380
9381 if (die->child != NULL)
9382 {
9383 child_die = die->child;
9384 while (child_die && child_die->tag)
9385 {
9386 process_die (child_die, cu);
9387 child_die = sibling_die (child_die);
9388 }
9389 }
3019eac3
DE
9390}
9391\f
80626a55
DE
9392/* DWO/DWP files.
9393
9394 http://gcc.gnu.org/wiki/DebugFission
9395 http://gcc.gnu.org/wiki/DebugFissionDWP
9396
9397 To simplify handling of both DWO files ("object" files with the DWARF info)
9398 and DWP files (a file with the DWOs packaged up into one file), we treat
9399 DWP files as having a collection of virtual DWO files. */
3019eac3
DE
9400
9401static hashval_t
9402hash_dwo_file (const void *item)
9403{
9404 const struct dwo_file *dwo_file = item;
a2ce51a0 9405 hashval_t hash;
3019eac3 9406
a2ce51a0
DE
9407 hash = htab_hash_string (dwo_file->dwo_name);
9408 if (dwo_file->comp_dir != NULL)
9409 hash += htab_hash_string (dwo_file->comp_dir);
9410 return hash;
3019eac3
DE
9411}
9412
9413static int
9414eq_dwo_file (const void *item_lhs, const void *item_rhs)
9415{
9416 const struct dwo_file *lhs = item_lhs;
9417 const struct dwo_file *rhs = item_rhs;
9418
a2ce51a0
DE
9419 if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
9420 return 0;
9421 if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
9422 return lhs->comp_dir == rhs->comp_dir;
9423 return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
3019eac3
DE
9424}
9425
9426/* Allocate a hash table for DWO files. */
9427
9428static htab_t
9429allocate_dwo_file_hash_table (void)
9430{
9431 struct objfile *objfile = dwarf2_per_objfile->objfile;
9432
9433 return htab_create_alloc_ex (41,
9434 hash_dwo_file,
9435 eq_dwo_file,
9436 NULL,
9437 &objfile->objfile_obstack,
9438 hashtab_obstack_allocate,
9439 dummy_obstack_deallocate);
9440}
9441
80626a55
DE
9442/* Lookup DWO file DWO_NAME. */
9443
9444static void **
0ac5b59e 9445lookup_dwo_file_slot (const char *dwo_name, const char *comp_dir)
80626a55
DE
9446{
9447 struct dwo_file find_entry;
9448 void **slot;
9449
9450 if (dwarf2_per_objfile->dwo_files == NULL)
9451 dwarf2_per_objfile->dwo_files = allocate_dwo_file_hash_table ();
9452
9453 memset (&find_entry, 0, sizeof (find_entry));
0ac5b59e
DE
9454 find_entry.dwo_name = dwo_name;
9455 find_entry.comp_dir = comp_dir;
80626a55
DE
9456 slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
9457
9458 return slot;
9459}
9460
3019eac3
DE
9461static hashval_t
9462hash_dwo_unit (const void *item)
9463{
9464 const struct dwo_unit *dwo_unit = item;
9465
9466 /* This drops the top 32 bits of the id, but is ok for a hash. */
9467 return dwo_unit->signature;
9468}
9469
9470static int
9471eq_dwo_unit (const void *item_lhs, const void *item_rhs)
9472{
9473 const struct dwo_unit *lhs = item_lhs;
9474 const struct dwo_unit *rhs = item_rhs;
9475
9476 /* The signature is assumed to be unique within the DWO file.
9477 So while object file CU dwo_id's always have the value zero,
9478 that's OK, assuming each object file DWO file has only one CU,
9479 and that's the rule for now. */
9480 return lhs->signature == rhs->signature;
9481}
9482
9483/* Allocate a hash table for DWO CUs,TUs.
9484 There is one of these tables for each of CUs,TUs for each DWO file. */
9485
9486static htab_t
9487allocate_dwo_unit_table (struct objfile *objfile)
9488{
9489 /* Start out with a pretty small number.
9490 Generally DWO files contain only one CU and maybe some TUs. */
9491 return htab_create_alloc_ex (3,
9492 hash_dwo_unit,
9493 eq_dwo_unit,
9494 NULL,
9495 &objfile->objfile_obstack,
9496 hashtab_obstack_allocate,
9497 dummy_obstack_deallocate);
9498}
9499
80626a55 9500/* Structure used to pass data to create_dwo_debug_info_hash_table_reader. */
3019eac3 9501
19c3d4c9 9502struct create_dwo_cu_data
3019eac3
DE
9503{
9504 struct dwo_file *dwo_file;
19c3d4c9 9505 struct dwo_unit dwo_unit;
3019eac3
DE
9506};
9507
19c3d4c9 9508/* die_reader_func for create_dwo_cu. */
3019eac3
DE
9509
9510static void
19c3d4c9
DE
9511create_dwo_cu_reader (const struct die_reader_specs *reader,
9512 const gdb_byte *info_ptr,
9513 struct die_info *comp_unit_die,
9514 int has_children,
9515 void *datap)
3019eac3
DE
9516{
9517 struct dwarf2_cu *cu = reader->cu;
9518 struct objfile *objfile = dwarf2_per_objfile->objfile;
9519 sect_offset offset = cu->per_cu->offset;
8a0459fd 9520 struct dwarf2_section_info *section = cu->per_cu->section;
19c3d4c9 9521 struct create_dwo_cu_data *data = datap;
3019eac3 9522 struct dwo_file *dwo_file = data->dwo_file;
19c3d4c9 9523 struct dwo_unit *dwo_unit = &data->dwo_unit;
3019eac3 9524 struct attribute *attr;
3019eac3
DE
9525
9526 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
9527 if (attr == NULL)
9528 {
19c3d4c9
DE
9529 complaint (&symfile_complaints,
9530 _("Dwarf Error: debug entry at offset 0x%x is missing"
9531 " its dwo_id [in module %s]"),
9532 offset.sect_off, dwo_file->dwo_name);
3019eac3
DE
9533 return;
9534 }
9535
3019eac3
DE
9536 dwo_unit->dwo_file = dwo_file;
9537 dwo_unit->signature = DW_UNSND (attr);
8a0459fd 9538 dwo_unit->section = section;
3019eac3
DE
9539 dwo_unit->offset = offset;
9540 dwo_unit->length = cu->per_cu->length;
9541
b4f54984 9542 if (dwarf_read_debug)
4031ecc5
DE
9543 fprintf_unfiltered (gdb_stdlog, " offset 0x%x, dwo_id %s\n",
9544 offset.sect_off, hex_string (dwo_unit->signature));
3019eac3
DE
9545}
9546
19c3d4c9
DE
9547/* Create the dwo_unit for the lone CU in DWO_FILE.
9548 Note: This function processes DWO files only, not DWP files. */
3019eac3 9549
19c3d4c9
DE
9550static struct dwo_unit *
9551create_dwo_cu (struct dwo_file *dwo_file)
3019eac3
DE
9552{
9553 struct objfile *objfile = dwarf2_per_objfile->objfile;
9554 struct dwarf2_section_info *section = &dwo_file->sections.info;
9555 bfd *abfd;
9556 htab_t cu_htab;
d521ce57 9557 const gdb_byte *info_ptr, *end_ptr;
19c3d4c9
DE
9558 struct create_dwo_cu_data create_dwo_cu_data;
9559 struct dwo_unit *dwo_unit;
3019eac3
DE
9560
9561 dwarf2_read_section (objfile, section);
9562 info_ptr = section->buffer;
9563
9564 if (info_ptr == NULL)
9565 return NULL;
9566
9567 /* We can't set abfd until now because the section may be empty or
9568 not present, in which case section->asection will be NULL. */
a32a8923 9569 abfd = get_section_bfd_owner (section);
3019eac3 9570
b4f54984 9571 if (dwarf_read_debug)
19c3d4c9
DE
9572 {
9573 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
a32a8923
DE
9574 get_section_name (section),
9575 get_section_file_name (section));
19c3d4c9 9576 }
3019eac3 9577
19c3d4c9
DE
9578 create_dwo_cu_data.dwo_file = dwo_file;
9579 dwo_unit = NULL;
3019eac3
DE
9580
9581 end_ptr = info_ptr + section->size;
9582 while (info_ptr < end_ptr)
9583 {
9584 struct dwarf2_per_cu_data per_cu;
9585
19c3d4c9
DE
9586 memset (&create_dwo_cu_data.dwo_unit, 0,
9587 sizeof (create_dwo_cu_data.dwo_unit));
3019eac3
DE
9588 memset (&per_cu, 0, sizeof (per_cu));
9589 per_cu.objfile = objfile;
9590 per_cu.is_debug_types = 0;
9591 per_cu.offset.sect_off = info_ptr - section->buffer;
8a0459fd 9592 per_cu.section = section;
3019eac3 9593
33e80786 9594 init_cutu_and_read_dies_no_follow (&per_cu, dwo_file,
19c3d4c9
DE
9595 create_dwo_cu_reader,
9596 &create_dwo_cu_data);
9597
9598 if (create_dwo_cu_data.dwo_unit.dwo_file != NULL)
9599 {
9600 /* If we've already found one, complain. We only support one
9601 because having more than one requires hacking the dwo_name of
9602 each to match, which is highly unlikely to happen. */
9603 if (dwo_unit != NULL)
9604 {
9605 complaint (&symfile_complaints,
9606 _("Multiple CUs in DWO file %s [in module %s]"),
4262abfb 9607 dwo_file->dwo_name, objfile_name (objfile));
19c3d4c9
DE
9608 break;
9609 }
9610
9611 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
9612 *dwo_unit = create_dwo_cu_data.dwo_unit;
9613 }
3019eac3
DE
9614
9615 info_ptr += per_cu.length;
9616 }
9617
19c3d4c9 9618 return dwo_unit;
3019eac3
DE
9619}
9620
80626a55
DE
9621/* DWP file .debug_{cu,tu}_index section format:
9622 [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
9623
d2415c6c
DE
9624 DWP Version 1:
9625
80626a55
DE
9626 Both index sections have the same format, and serve to map a 64-bit
9627 signature to a set of section numbers. Each section begins with a header,
9628 followed by a hash table of 64-bit signatures, a parallel table of 32-bit
9629 indexes, and a pool of 32-bit section numbers. The index sections will be
9630 aligned at 8-byte boundaries in the file.
9631
d2415c6c
DE
9632 The index section header consists of:
9633
9634 V, 32 bit version number
9635 -, 32 bits unused
9636 N, 32 bit number of compilation units or type units in the index
9637 M, 32 bit number of slots in the hash table
80626a55 9638
d2415c6c 9639 Numbers are recorded using the byte order of the application binary.
80626a55 9640
d2415c6c
DE
9641 The hash table begins at offset 16 in the section, and consists of an array
9642 of M 64-bit slots. Each slot contains a 64-bit signature (using the byte
9643 order of the application binary). Unused slots in the hash table are 0.
9644 (We rely on the extreme unlikeliness of a signature being exactly 0.)
80626a55 9645
d2415c6c
DE
9646 The parallel table begins immediately after the hash table
9647 (at offset 16 + 8 * M from the beginning of the section), and consists of an
9648 array of 32-bit indexes (using the byte order of the application binary),
9649 corresponding 1-1 with slots in the hash table. Each entry in the parallel
9650 table contains a 32-bit index into the pool of section numbers. For unused
9651 hash table slots, the corresponding entry in the parallel table will be 0.
80626a55 9652
73869dc2
DE
9653 The pool of section numbers begins immediately following the hash table
9654 (at offset 16 + 12 * M from the beginning of the section). The pool of
9655 section numbers consists of an array of 32-bit words (using the byte order
9656 of the application binary). Each item in the array is indexed starting
9657 from 0. The hash table entry provides the index of the first section
9658 number in the set. Additional section numbers in the set follow, and the
9659 set is terminated by a 0 entry (section number 0 is not used in ELF).
9660
9661 In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
9662 section must be the first entry in the set, and the .debug_abbrev.dwo must
9663 be the second entry. Other members of the set may follow in any order.
9664
9665 ---
9666
9667 DWP Version 2:
9668
9669 DWP Version 2 combines all the .debug_info, etc. sections into one,
9670 and the entries in the index tables are now offsets into these sections.
9671 CU offsets begin at 0. TU offsets begin at the size of the .debug_info
9672 section.
9673
9674 Index Section Contents:
9675 Header
9676 Hash Table of Signatures dwp_hash_table.hash_table
9677 Parallel Table of Indices dwp_hash_table.unit_table
9678 Table of Section Offsets dwp_hash_table.v2.{section_ids,offsets}
9679 Table of Section Sizes dwp_hash_table.v2.sizes
9680
9681 The index section header consists of:
9682
9683 V, 32 bit version number
9684 L, 32 bit number of columns in the table of section offsets
9685 N, 32 bit number of compilation units or type units in the index
9686 M, 32 bit number of slots in the hash table
9687
9688 Numbers are recorded using the byte order of the application binary.
9689
9690 The hash table has the same format as version 1.
9691 The parallel table of indices has the same format as version 1,
9692 except that the entries are origin-1 indices into the table of sections
9693 offsets and the table of section sizes.
9694
9695 The table of offsets begins immediately following the parallel table
9696 (at offset 16 + 12 * M from the beginning of the section). The table is
9697 a two-dimensional array of 32-bit words (using the byte order of the
9698 application binary), with L columns and N+1 rows, in row-major order.
9699 Each row in the array is indexed starting from 0. The first row provides
9700 a key to the remaining rows: each column in this row provides an identifier
9701 for a debug section, and the offsets in the same column of subsequent rows
9702 refer to that section. The section identifiers are:
9703
9704 DW_SECT_INFO 1 .debug_info.dwo
9705 DW_SECT_TYPES 2 .debug_types.dwo
9706 DW_SECT_ABBREV 3 .debug_abbrev.dwo
9707 DW_SECT_LINE 4 .debug_line.dwo
9708 DW_SECT_LOC 5 .debug_loc.dwo
9709 DW_SECT_STR_OFFSETS 6 .debug_str_offsets.dwo
9710 DW_SECT_MACINFO 7 .debug_macinfo.dwo
9711 DW_SECT_MACRO 8 .debug_macro.dwo
9712
9713 The offsets provided by the CU and TU index sections are the base offsets
9714 for the contributions made by each CU or TU to the corresponding section
9715 in the package file. Each CU and TU header contains an abbrev_offset
9716 field, used to find the abbreviations table for that CU or TU within the
9717 contribution to the .debug_abbrev.dwo section for that CU or TU, and should
9718 be interpreted as relative to the base offset given in the index section.
9719 Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
9720 should be interpreted as relative to the base offset for .debug_line.dwo,
9721 and offsets into other debug sections obtained from DWARF attributes should
9722 also be interpreted as relative to the corresponding base offset.
9723
9724 The table of sizes begins immediately following the table of offsets.
9725 Like the table of offsets, it is a two-dimensional array of 32-bit words,
9726 with L columns and N rows, in row-major order. Each row in the array is
9727 indexed starting from 1 (row 0 is shared by the two tables).
9728
9729 ---
9730
9731 Hash table lookup is handled the same in version 1 and 2:
9732
9733 We assume that N and M will not exceed 2^32 - 1.
9734 The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
9735
d2415c6c
DE
9736 Given a 64-bit compilation unit signature or a type signature S, an entry
9737 in the hash table is located as follows:
80626a55 9738
d2415c6c
DE
9739 1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
9740 the low-order k bits all set to 1.
80626a55 9741
d2415c6c 9742 2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
80626a55 9743
d2415c6c
DE
9744 3) If the hash table entry at index H matches the signature, use that
9745 entry. If the hash table entry at index H is unused (all zeroes),
9746 terminate the search: the signature is not present in the table.
80626a55 9747
d2415c6c 9748 4) Let H = (H + H') modulo M. Repeat at Step 3.
80626a55 9749
d2415c6c 9750 Because M > N and H' and M are relatively prime, the search is guaranteed
73869dc2 9751 to stop at an unused slot or find the match. */
80626a55
DE
9752
9753/* Create a hash table to map DWO IDs to their CU/TU entry in
9754 .debug_{info,types}.dwo in DWP_FILE.
9755 Returns NULL if there isn't one.
9756 Note: This function processes DWP files only, not DWO files. */
9757
9758static struct dwp_hash_table *
9759create_dwp_hash_table (struct dwp_file *dwp_file, int is_debug_types)
9760{
9761 struct objfile *objfile = dwarf2_per_objfile->objfile;
9762 bfd *dbfd = dwp_file->dbfd;
948f8e3d 9763 const gdb_byte *index_ptr, *index_end;
80626a55 9764 struct dwarf2_section_info *index;
73869dc2 9765 uint32_t version, nr_columns, nr_units, nr_slots;
80626a55
DE
9766 struct dwp_hash_table *htab;
9767
9768 if (is_debug_types)
9769 index = &dwp_file->sections.tu_index;
9770 else
9771 index = &dwp_file->sections.cu_index;
9772
9773 if (dwarf2_section_empty_p (index))
9774 return NULL;
9775 dwarf2_read_section (objfile, index);
9776
9777 index_ptr = index->buffer;
9778 index_end = index_ptr + index->size;
9779
9780 version = read_4_bytes (dbfd, index_ptr);
73869dc2
DE
9781 index_ptr += 4;
9782 if (version == 2)
9783 nr_columns = read_4_bytes (dbfd, index_ptr);
9784 else
9785 nr_columns = 0;
9786 index_ptr += 4;
80626a55
DE
9787 nr_units = read_4_bytes (dbfd, index_ptr);
9788 index_ptr += 4;
9789 nr_slots = read_4_bytes (dbfd, index_ptr);
9790 index_ptr += 4;
9791
73869dc2 9792 if (version != 1 && version != 2)
80626a55 9793 {
21aa081e 9794 error (_("Dwarf Error: unsupported DWP file version (%s)"
80626a55 9795 " [in module %s]"),
21aa081e 9796 pulongest (version), dwp_file->name);
80626a55
DE
9797 }
9798 if (nr_slots != (nr_slots & -nr_slots))
9799 {
21aa081e 9800 error (_("Dwarf Error: number of slots in DWP hash table (%s)"
80626a55 9801 " is not power of 2 [in module %s]"),
21aa081e 9802 pulongest (nr_slots), dwp_file->name);
80626a55
DE
9803 }
9804
9805 htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
73869dc2
DE
9806 htab->version = version;
9807 htab->nr_columns = nr_columns;
80626a55
DE
9808 htab->nr_units = nr_units;
9809 htab->nr_slots = nr_slots;
9810 htab->hash_table = index_ptr;
9811 htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
73869dc2
DE
9812
9813 /* Exit early if the table is empty. */
9814 if (nr_slots == 0 || nr_units == 0
9815 || (version == 2 && nr_columns == 0))
9816 {
9817 /* All must be zero. */
9818 if (nr_slots != 0 || nr_units != 0
9819 || (version == 2 && nr_columns != 0))
9820 {
9821 complaint (&symfile_complaints,
9822 _("Empty DWP but nr_slots,nr_units,nr_columns not"
9823 " all zero [in modules %s]"),
9824 dwp_file->name);
9825 }
9826 return htab;
9827 }
9828
9829 if (version == 1)
9830 {
9831 htab->section_pool.v1.indices =
9832 htab->unit_table + sizeof (uint32_t) * nr_slots;
9833 /* It's harder to decide whether the section is too small in v1.
9834 V1 is deprecated anyway so we punt. */
9835 }
9836 else
9837 {
9838 const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
9839 int *ids = htab->section_pool.v2.section_ids;
9840 /* Reverse map for error checking. */
9841 int ids_seen[DW_SECT_MAX + 1];
9842 int i;
9843
9844 if (nr_columns < 2)
9845 {
9846 error (_("Dwarf Error: bad DWP hash table, too few columns"
9847 " in section table [in module %s]"),
9848 dwp_file->name);
9849 }
9850 if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
9851 {
9852 error (_("Dwarf Error: bad DWP hash table, too many columns"
9853 " in section table [in module %s]"),
9854 dwp_file->name);
9855 }
9856 memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9857 memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9858 for (i = 0; i < nr_columns; ++i)
9859 {
9860 int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
9861
9862 if (id < DW_SECT_MIN || id > DW_SECT_MAX)
9863 {
9864 error (_("Dwarf Error: bad DWP hash table, bad section id %d"
9865 " in section table [in module %s]"),
9866 id, dwp_file->name);
9867 }
9868 if (ids_seen[id] != -1)
9869 {
9870 error (_("Dwarf Error: bad DWP hash table, duplicate section"
9871 " id %d in section table [in module %s]"),
9872 id, dwp_file->name);
9873 }
9874 ids_seen[id] = i;
9875 ids[i] = id;
9876 }
9877 /* Must have exactly one info or types section. */
9878 if (((ids_seen[DW_SECT_INFO] != -1)
9879 + (ids_seen[DW_SECT_TYPES] != -1))
9880 != 1)
9881 {
9882 error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
9883 " DWO info/types section [in module %s]"),
9884 dwp_file->name);
9885 }
9886 /* Must have an abbrev section. */
9887 if (ids_seen[DW_SECT_ABBREV] == -1)
9888 {
9889 error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
9890 " section [in module %s]"),
9891 dwp_file->name);
9892 }
9893 htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
9894 htab->section_pool.v2.sizes =
9895 htab->section_pool.v2.offsets + (sizeof (uint32_t)
9896 * nr_units * nr_columns);
9897 if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
9898 * nr_units * nr_columns))
9899 > index_end)
9900 {
9901 error (_("Dwarf Error: DWP index section is corrupt (too small)"
9902 " [in module %s]"),
9903 dwp_file->name);
9904 }
9905 }
80626a55
DE
9906
9907 return htab;
9908}
9909
9910/* Update SECTIONS with the data from SECTP.
9911
9912 This function is like the other "locate" section routines that are
9913 passed to bfd_map_over_sections, but in this context the sections to
73869dc2 9914 read comes from the DWP V1 hash table, not the full ELF section table.
80626a55
DE
9915
9916 The result is non-zero for success, or zero if an error was found. */
9917
9918static int
73869dc2
DE
9919locate_v1_virtual_dwo_sections (asection *sectp,
9920 struct virtual_v1_dwo_sections *sections)
80626a55
DE
9921{
9922 const struct dwop_section_names *names = &dwop_section_names;
9923
9924 if (section_is_p (sectp->name, &names->abbrev_dwo))
9925 {
9926 /* There can be only one. */
049412e3 9927 if (sections->abbrev.s.section != NULL)
80626a55 9928 return 0;
049412e3 9929 sections->abbrev.s.section = sectp;
80626a55
DE
9930 sections->abbrev.size = bfd_get_section_size (sectp);
9931 }
9932 else if (section_is_p (sectp->name, &names->info_dwo)
9933 || section_is_p (sectp->name, &names->types_dwo))
9934 {
9935 /* There can be only one. */
049412e3 9936 if (sections->info_or_types.s.section != NULL)
80626a55 9937 return 0;
049412e3 9938 sections->info_or_types.s.section = sectp;
80626a55
DE
9939 sections->info_or_types.size = bfd_get_section_size (sectp);
9940 }
9941 else if (section_is_p (sectp->name, &names->line_dwo))
9942 {
9943 /* There can be only one. */
049412e3 9944 if (sections->line.s.section != NULL)
80626a55 9945 return 0;
049412e3 9946 sections->line.s.section = sectp;
80626a55
DE
9947 sections->line.size = bfd_get_section_size (sectp);
9948 }
9949 else if (section_is_p (sectp->name, &names->loc_dwo))
9950 {
9951 /* There can be only one. */
049412e3 9952 if (sections->loc.s.section != NULL)
80626a55 9953 return 0;
049412e3 9954 sections->loc.s.section = sectp;
80626a55
DE
9955 sections->loc.size = bfd_get_section_size (sectp);
9956 }
9957 else if (section_is_p (sectp->name, &names->macinfo_dwo))
9958 {
9959 /* There can be only one. */
049412e3 9960 if (sections->macinfo.s.section != NULL)
80626a55 9961 return 0;
049412e3 9962 sections->macinfo.s.section = sectp;
80626a55
DE
9963 sections->macinfo.size = bfd_get_section_size (sectp);
9964 }
9965 else if (section_is_p (sectp->name, &names->macro_dwo))
9966 {
9967 /* There can be only one. */
049412e3 9968 if (sections->macro.s.section != NULL)
80626a55 9969 return 0;
049412e3 9970 sections->macro.s.section = sectp;
80626a55
DE
9971 sections->macro.size = bfd_get_section_size (sectp);
9972 }
9973 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
9974 {
9975 /* There can be only one. */
049412e3 9976 if (sections->str_offsets.s.section != NULL)
80626a55 9977 return 0;
049412e3 9978 sections->str_offsets.s.section = sectp;
80626a55
DE
9979 sections->str_offsets.size = bfd_get_section_size (sectp);
9980 }
9981 else
9982 {
9983 /* No other kind of section is valid. */
9984 return 0;
9985 }
9986
9987 return 1;
9988}
9989
73869dc2
DE
9990/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
9991 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
9992 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
9993 This is for DWP version 1 files. */
80626a55
DE
9994
9995static struct dwo_unit *
73869dc2
DE
9996create_dwo_unit_in_dwp_v1 (struct dwp_file *dwp_file,
9997 uint32_t unit_index,
9998 const char *comp_dir,
9999 ULONGEST signature, int is_debug_types)
80626a55
DE
10000{
10001 struct objfile *objfile = dwarf2_per_objfile->objfile;
73869dc2
DE
10002 const struct dwp_hash_table *dwp_htab =
10003 is_debug_types ? dwp_file->tus : dwp_file->cus;
80626a55
DE
10004 bfd *dbfd = dwp_file->dbfd;
10005 const char *kind = is_debug_types ? "TU" : "CU";
10006 struct dwo_file *dwo_file;
10007 struct dwo_unit *dwo_unit;
73869dc2 10008 struct virtual_v1_dwo_sections sections;
80626a55
DE
10009 void **dwo_file_slot;
10010 char *virtual_dwo_name;
10011 struct dwarf2_section_info *cutu;
10012 struct cleanup *cleanups;
10013 int i;
10014
73869dc2
DE
10015 gdb_assert (dwp_file->version == 1);
10016
b4f54984 10017 if (dwarf_read_debug)
80626a55 10018 {
73869dc2 10019 fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
80626a55 10020 kind,
73869dc2 10021 pulongest (unit_index), hex_string (signature),
80626a55
DE
10022 dwp_file->name);
10023 }
10024
19ac8c2e 10025 /* Fetch the sections of this DWO unit.
80626a55
DE
10026 Put a limit on the number of sections we look for so that bad data
10027 doesn't cause us to loop forever. */
10028
73869dc2 10029#define MAX_NR_V1_DWO_SECTIONS \
80626a55
DE
10030 (1 /* .debug_info or .debug_types */ \
10031 + 1 /* .debug_abbrev */ \
10032 + 1 /* .debug_line */ \
10033 + 1 /* .debug_loc */ \
10034 + 1 /* .debug_str_offsets */ \
19ac8c2e 10035 + 1 /* .debug_macro or .debug_macinfo */ \
80626a55
DE
10036 + 1 /* trailing zero */)
10037
10038 memset (&sections, 0, sizeof (sections));
10039 cleanups = make_cleanup (null_cleanup, 0);
10040
73869dc2 10041 for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
80626a55
DE
10042 {
10043 asection *sectp;
10044 uint32_t section_nr =
10045 read_4_bytes (dbfd,
73869dc2
DE
10046 dwp_htab->section_pool.v1.indices
10047 + (unit_index + i) * sizeof (uint32_t));
80626a55
DE
10048
10049 if (section_nr == 0)
10050 break;
10051 if (section_nr >= dwp_file->num_sections)
10052 {
10053 error (_("Dwarf Error: bad DWP hash table, section number too large"
10054 " [in module %s]"),
10055 dwp_file->name);
10056 }
10057
10058 sectp = dwp_file->elf_sections[section_nr];
73869dc2 10059 if (! locate_v1_virtual_dwo_sections (sectp, &sections))
80626a55
DE
10060 {
10061 error (_("Dwarf Error: bad DWP hash table, invalid section found"
10062 " [in module %s]"),
10063 dwp_file->name);
10064 }
10065 }
10066
10067 if (i < 2
a32a8923
DE
10068 || dwarf2_section_empty_p (&sections.info_or_types)
10069 || dwarf2_section_empty_p (&sections.abbrev))
80626a55
DE
10070 {
10071 error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
10072 " [in module %s]"),
10073 dwp_file->name);
10074 }
73869dc2 10075 if (i == MAX_NR_V1_DWO_SECTIONS)
80626a55
DE
10076 {
10077 error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
10078 " [in module %s]"),
10079 dwp_file->name);
10080 }
10081
10082 /* It's easier for the rest of the code if we fake a struct dwo_file and
10083 have dwo_unit "live" in that. At least for now.
10084
10085 The DWP file can be made up of a random collection of CUs and TUs.
c766f7ec 10086 However, for each CU + set of TUs that came from the same original DWO
57d63ce2
DE
10087 file, we can combine them back into a virtual DWO file to save space
10088 (fewer struct dwo_file objects to allocate). Remember that for really
80626a55
DE
10089 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
10090
2792b94d
PM
10091 virtual_dwo_name =
10092 xstrprintf ("virtual-dwo/%d-%d-%d-%d",
a32a8923
DE
10093 get_section_id (&sections.abbrev),
10094 get_section_id (&sections.line),
10095 get_section_id (&sections.loc),
10096 get_section_id (&sections.str_offsets));
80626a55
DE
10097 make_cleanup (xfree, virtual_dwo_name);
10098 /* Can we use an existing virtual DWO file? */
0ac5b59e 10099 dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
80626a55
DE
10100 /* Create one if necessary. */
10101 if (*dwo_file_slot == NULL)
10102 {
b4f54984 10103 if (dwarf_read_debug)
80626a55
DE
10104 {
10105 fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
10106 virtual_dwo_name);
10107 }
10108 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
0ac5b59e
DE
10109 dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
10110 virtual_dwo_name,
10111 strlen (virtual_dwo_name));
10112 dwo_file->comp_dir = comp_dir;
80626a55
DE
10113 dwo_file->sections.abbrev = sections.abbrev;
10114 dwo_file->sections.line = sections.line;
10115 dwo_file->sections.loc = sections.loc;
10116 dwo_file->sections.macinfo = sections.macinfo;
10117 dwo_file->sections.macro = sections.macro;
10118 dwo_file->sections.str_offsets = sections.str_offsets;
10119 /* The "str" section is global to the entire DWP file. */
10120 dwo_file->sections.str = dwp_file->sections.str;
57d63ce2 10121 /* The info or types section is assigned below to dwo_unit,
80626a55
DE
10122 there's no need to record it in dwo_file.
10123 Also, we can't simply record type sections in dwo_file because
10124 we record a pointer into the vector in dwo_unit. As we collect more
10125 types we'll grow the vector and eventually have to reallocate space
57d63ce2
DE
10126 for it, invalidating all copies of pointers into the previous
10127 contents. */
80626a55
DE
10128 *dwo_file_slot = dwo_file;
10129 }
10130 else
10131 {
b4f54984 10132 if (dwarf_read_debug)
80626a55
DE
10133 {
10134 fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10135 virtual_dwo_name);
10136 }
10137 dwo_file = *dwo_file_slot;
10138 }
10139 do_cleanups (cleanups);
10140
10141 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10142 dwo_unit->dwo_file = dwo_file;
10143 dwo_unit->signature = signature;
8d749320
SM
10144 dwo_unit->section =
10145 XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
8a0459fd 10146 *dwo_unit->section = sections.info_or_types;
57d63ce2 10147 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
80626a55
DE
10148
10149 return dwo_unit;
10150}
10151
73869dc2
DE
10152/* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
10153 Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
10154 piece within that section used by a TU/CU, return a virtual section
10155 of just that piece. */
10156
10157static struct dwarf2_section_info
10158create_dwp_v2_section (struct dwarf2_section_info *section,
10159 bfd_size_type offset, bfd_size_type size)
10160{
10161 struct dwarf2_section_info result;
10162 asection *sectp;
10163
10164 gdb_assert (section != NULL);
10165 gdb_assert (!section->is_virtual);
10166
10167 memset (&result, 0, sizeof (result));
10168 result.s.containing_section = section;
10169 result.is_virtual = 1;
10170
10171 if (size == 0)
10172 return result;
10173
10174 sectp = get_section_bfd_section (section);
10175
10176 /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
10177 bounds of the real section. This is a pretty-rare event, so just
10178 flag an error (easier) instead of a warning and trying to cope. */
10179 if (sectp == NULL
10180 || offset + size > bfd_get_section_size (sectp))
10181 {
10182 bfd *abfd = sectp->owner;
10183
10184 error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
10185 " in section %s [in module %s]"),
10186 sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
10187 objfile_name (dwarf2_per_objfile->objfile));
10188 }
10189
10190 result.virtual_offset = offset;
10191 result.size = size;
10192 return result;
10193}
10194
10195/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
10196 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
10197 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
10198 This is for DWP version 2 files. */
10199
10200static struct dwo_unit *
10201create_dwo_unit_in_dwp_v2 (struct dwp_file *dwp_file,
10202 uint32_t unit_index,
10203 const char *comp_dir,
10204 ULONGEST signature, int is_debug_types)
10205{
10206 struct objfile *objfile = dwarf2_per_objfile->objfile;
10207 const struct dwp_hash_table *dwp_htab =
10208 is_debug_types ? dwp_file->tus : dwp_file->cus;
10209 bfd *dbfd = dwp_file->dbfd;
10210 const char *kind = is_debug_types ? "TU" : "CU";
10211 struct dwo_file *dwo_file;
10212 struct dwo_unit *dwo_unit;
10213 struct virtual_v2_dwo_sections sections;
10214 void **dwo_file_slot;
10215 char *virtual_dwo_name;
10216 struct dwarf2_section_info *cutu;
10217 struct cleanup *cleanups;
10218 int i;
10219
10220 gdb_assert (dwp_file->version == 2);
10221
b4f54984 10222 if (dwarf_read_debug)
73869dc2
DE
10223 {
10224 fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
10225 kind,
10226 pulongest (unit_index), hex_string (signature),
10227 dwp_file->name);
10228 }
10229
10230 /* Fetch the section offsets of this DWO unit. */
10231
10232 memset (&sections, 0, sizeof (sections));
10233 cleanups = make_cleanup (null_cleanup, 0);
10234
10235 for (i = 0; i < dwp_htab->nr_columns; ++i)
10236 {
10237 uint32_t offset = read_4_bytes (dbfd,
10238 dwp_htab->section_pool.v2.offsets
10239 + (((unit_index - 1) * dwp_htab->nr_columns
10240 + i)
10241 * sizeof (uint32_t)));
10242 uint32_t size = read_4_bytes (dbfd,
10243 dwp_htab->section_pool.v2.sizes
10244 + (((unit_index - 1) * dwp_htab->nr_columns
10245 + i)
10246 * sizeof (uint32_t)));
10247
10248 switch (dwp_htab->section_pool.v2.section_ids[i])
10249 {
10250 case DW_SECT_INFO:
10251 case DW_SECT_TYPES:
10252 sections.info_or_types_offset = offset;
10253 sections.info_or_types_size = size;
10254 break;
10255 case DW_SECT_ABBREV:
10256 sections.abbrev_offset = offset;
10257 sections.abbrev_size = size;
10258 break;
10259 case DW_SECT_LINE:
10260 sections.line_offset = offset;
10261 sections.line_size = size;
10262 break;
10263 case DW_SECT_LOC:
10264 sections.loc_offset = offset;
10265 sections.loc_size = size;
10266 break;
10267 case DW_SECT_STR_OFFSETS:
10268 sections.str_offsets_offset = offset;
10269 sections.str_offsets_size = size;
10270 break;
10271 case DW_SECT_MACINFO:
10272 sections.macinfo_offset = offset;
10273 sections.macinfo_size = size;
10274 break;
10275 case DW_SECT_MACRO:
10276 sections.macro_offset = offset;
10277 sections.macro_size = size;
10278 break;
10279 }
10280 }
10281
10282 /* It's easier for the rest of the code if we fake a struct dwo_file and
10283 have dwo_unit "live" in that. At least for now.
10284
10285 The DWP file can be made up of a random collection of CUs and TUs.
10286 However, for each CU + set of TUs that came from the same original DWO
10287 file, we can combine them back into a virtual DWO file to save space
10288 (fewer struct dwo_file objects to allocate). Remember that for really
10289 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
10290
10291 virtual_dwo_name =
10292 xstrprintf ("virtual-dwo/%ld-%ld-%ld-%ld",
10293 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
10294 (long) (sections.line_size ? sections.line_offset : 0),
10295 (long) (sections.loc_size ? sections.loc_offset : 0),
10296 (long) (sections.str_offsets_size
10297 ? sections.str_offsets_offset : 0));
10298 make_cleanup (xfree, virtual_dwo_name);
10299 /* Can we use an existing virtual DWO file? */
10300 dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
10301 /* Create one if necessary. */
10302 if (*dwo_file_slot == NULL)
10303 {
b4f54984 10304 if (dwarf_read_debug)
73869dc2
DE
10305 {
10306 fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
10307 virtual_dwo_name);
10308 }
10309 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
10310 dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
10311 virtual_dwo_name,
10312 strlen (virtual_dwo_name));
10313 dwo_file->comp_dir = comp_dir;
10314 dwo_file->sections.abbrev =
10315 create_dwp_v2_section (&dwp_file->sections.abbrev,
10316 sections.abbrev_offset, sections.abbrev_size);
10317 dwo_file->sections.line =
10318 create_dwp_v2_section (&dwp_file->sections.line,
10319 sections.line_offset, sections.line_size);
10320 dwo_file->sections.loc =
10321 create_dwp_v2_section (&dwp_file->sections.loc,
10322 sections.loc_offset, sections.loc_size);
10323 dwo_file->sections.macinfo =
10324 create_dwp_v2_section (&dwp_file->sections.macinfo,
10325 sections.macinfo_offset, sections.macinfo_size);
10326 dwo_file->sections.macro =
10327 create_dwp_v2_section (&dwp_file->sections.macro,
10328 sections.macro_offset, sections.macro_size);
10329 dwo_file->sections.str_offsets =
10330 create_dwp_v2_section (&dwp_file->sections.str_offsets,
10331 sections.str_offsets_offset,
10332 sections.str_offsets_size);
10333 /* The "str" section is global to the entire DWP file. */
10334 dwo_file->sections.str = dwp_file->sections.str;
10335 /* The info or types section is assigned below to dwo_unit,
10336 there's no need to record it in dwo_file.
10337 Also, we can't simply record type sections in dwo_file because
10338 we record a pointer into the vector in dwo_unit. As we collect more
10339 types we'll grow the vector and eventually have to reallocate space
10340 for it, invalidating all copies of pointers into the previous
10341 contents. */
10342 *dwo_file_slot = dwo_file;
10343 }
10344 else
10345 {
b4f54984 10346 if (dwarf_read_debug)
73869dc2
DE
10347 {
10348 fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10349 virtual_dwo_name);
10350 }
10351 dwo_file = *dwo_file_slot;
10352 }
10353 do_cleanups (cleanups);
10354
10355 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10356 dwo_unit->dwo_file = dwo_file;
10357 dwo_unit->signature = signature;
8d749320
SM
10358 dwo_unit->section =
10359 XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
73869dc2
DE
10360 *dwo_unit->section = create_dwp_v2_section (is_debug_types
10361 ? &dwp_file->sections.types
10362 : &dwp_file->sections.info,
10363 sections.info_or_types_offset,
10364 sections.info_or_types_size);
10365 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
10366
10367 return dwo_unit;
10368}
10369
57d63ce2
DE
10370/* Lookup the DWO unit with SIGNATURE in DWP_FILE.
10371 Returns NULL if the signature isn't found. */
80626a55
DE
10372
10373static struct dwo_unit *
57d63ce2
DE
10374lookup_dwo_unit_in_dwp (struct dwp_file *dwp_file, const char *comp_dir,
10375 ULONGEST signature, int is_debug_types)
80626a55 10376{
57d63ce2
DE
10377 const struct dwp_hash_table *dwp_htab =
10378 is_debug_types ? dwp_file->tus : dwp_file->cus;
80626a55 10379 bfd *dbfd = dwp_file->dbfd;
57d63ce2 10380 uint32_t mask = dwp_htab->nr_slots - 1;
80626a55
DE
10381 uint32_t hash = signature & mask;
10382 uint32_t hash2 = ((signature >> 32) & mask) | 1;
10383 unsigned int i;
10384 void **slot;
10385 struct dwo_unit find_dwo_cu, *dwo_cu;
10386
10387 memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
10388 find_dwo_cu.signature = signature;
19ac8c2e
DE
10389 slot = htab_find_slot (is_debug_types
10390 ? dwp_file->loaded_tus
10391 : dwp_file->loaded_cus,
10392 &find_dwo_cu, INSERT);
80626a55
DE
10393
10394 if (*slot != NULL)
10395 return *slot;
10396
10397 /* Use a for loop so that we don't loop forever on bad debug info. */
57d63ce2 10398 for (i = 0; i < dwp_htab->nr_slots; ++i)
80626a55
DE
10399 {
10400 ULONGEST signature_in_table;
10401
10402 signature_in_table =
57d63ce2 10403 read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
80626a55
DE
10404 if (signature_in_table == signature)
10405 {
57d63ce2
DE
10406 uint32_t unit_index =
10407 read_4_bytes (dbfd,
10408 dwp_htab->unit_table + hash * sizeof (uint32_t));
80626a55 10409
73869dc2
DE
10410 if (dwp_file->version == 1)
10411 {
10412 *slot = create_dwo_unit_in_dwp_v1 (dwp_file, unit_index,
10413 comp_dir, signature,
10414 is_debug_types);
10415 }
10416 else
10417 {
10418 *slot = create_dwo_unit_in_dwp_v2 (dwp_file, unit_index,
10419 comp_dir, signature,
10420 is_debug_types);
10421 }
80626a55
DE
10422 return *slot;
10423 }
10424 if (signature_in_table == 0)
10425 return NULL;
10426 hash = (hash + hash2) & mask;
10427 }
10428
10429 error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
10430 " [in module %s]"),
10431 dwp_file->name);
10432}
10433
ab5088bf 10434/* Subroutine of open_dwo_file,open_dwp_file to simplify them.
3019eac3
DE
10435 Open the file specified by FILE_NAME and hand it off to BFD for
10436 preliminary analysis. Return a newly initialized bfd *, which
10437 includes a canonicalized copy of FILE_NAME.
80626a55 10438 If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
6ac97d4c
DE
10439 SEARCH_CWD is true if the current directory is to be searched.
10440 It will be searched before debug-file-directory.
13aaf454
DE
10441 If successful, the file is added to the bfd include table of the
10442 objfile's bfd (see gdb_bfd_record_inclusion).
6ac97d4c 10443 If unable to find/open the file, return NULL.
3019eac3
DE
10444 NOTE: This function is derived from symfile_bfd_open. */
10445
10446static bfd *
6ac97d4c 10447try_open_dwop_file (const char *file_name, int is_dwp, int search_cwd)
3019eac3
DE
10448{
10449 bfd *sym_bfd;
80626a55 10450 int desc, flags;
3019eac3 10451 char *absolute_name;
9c02c129
DE
10452 /* Blech. OPF_TRY_CWD_FIRST also disables searching the path list if
10453 FILE_NAME contains a '/'. So we can't use it. Instead prepend "."
10454 to debug_file_directory. */
10455 char *search_path;
10456 static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
10457
6ac97d4c
DE
10458 if (search_cwd)
10459 {
10460 if (*debug_file_directory != '\0')
10461 search_path = concat (".", dirname_separator_string,
10462 debug_file_directory, NULL);
10463 else
10464 search_path = xstrdup (".");
10465 }
9c02c129 10466 else
6ac97d4c 10467 search_path = xstrdup (debug_file_directory);
3019eac3 10468
492c0ab7 10469 flags = OPF_RETURN_REALPATH;
80626a55
DE
10470 if (is_dwp)
10471 flags |= OPF_SEARCH_IN_PATH;
9c02c129 10472 desc = openp (search_path, flags, file_name,
3019eac3 10473 O_RDONLY | O_BINARY, &absolute_name);
9c02c129 10474 xfree (search_path);
3019eac3
DE
10475 if (desc < 0)
10476 return NULL;
10477
bb397797 10478 sym_bfd = gdb_bfd_open (absolute_name, gnutarget, desc);
a4453b7e 10479 xfree (absolute_name);
9c02c129
DE
10480 if (sym_bfd == NULL)
10481 return NULL;
3019eac3
DE
10482 bfd_set_cacheable (sym_bfd, 1);
10483
10484 if (!bfd_check_format (sym_bfd, bfd_object))
10485 {
cbb099e8 10486 gdb_bfd_unref (sym_bfd); /* This also closes desc. */
3019eac3
DE
10487 return NULL;
10488 }
10489
13aaf454
DE
10490 /* Success. Record the bfd as having been included by the objfile's bfd.
10491 This is important because things like demangled_names_hash lives in the
10492 objfile's per_bfd space and may have references to things like symbol
10493 names that live in the DWO/DWP file's per_bfd space. PR 16426. */
10494 gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd);
10495
3019eac3
DE
10496 return sym_bfd;
10497}
10498
ab5088bf 10499/* Try to open DWO file FILE_NAME.
3019eac3
DE
10500 COMP_DIR is the DW_AT_comp_dir attribute.
10501 The result is the bfd handle of the file.
10502 If there is a problem finding or opening the file, return NULL.
10503 Upon success, the canonicalized path of the file is stored in the bfd,
10504 same as symfile_bfd_open. */
10505
10506static bfd *
ab5088bf 10507open_dwo_file (const char *file_name, const char *comp_dir)
3019eac3
DE
10508{
10509 bfd *abfd;
3019eac3 10510
80626a55 10511 if (IS_ABSOLUTE_PATH (file_name))
6ac97d4c 10512 return try_open_dwop_file (file_name, 0 /*is_dwp*/, 0 /*search_cwd*/);
3019eac3
DE
10513
10514 /* Before trying the search path, try DWO_NAME in COMP_DIR. */
10515
10516 if (comp_dir != NULL)
10517 {
80626a55 10518 char *path_to_try = concat (comp_dir, SLASH_STRING, file_name, NULL);
3019eac3
DE
10519
10520 /* NOTE: If comp_dir is a relative path, this will also try the
10521 search path, which seems useful. */
6ac97d4c 10522 abfd = try_open_dwop_file (path_to_try, 0 /*is_dwp*/, 1 /*search_cwd*/);
3019eac3
DE
10523 xfree (path_to_try);
10524 if (abfd != NULL)
10525 return abfd;
10526 }
10527
10528 /* That didn't work, try debug-file-directory, which, despite its name,
10529 is a list of paths. */
10530
10531 if (*debug_file_directory == '\0')
10532 return NULL;
10533
6ac97d4c 10534 return try_open_dwop_file (file_name, 0 /*is_dwp*/, 1 /*search_cwd*/);
3019eac3
DE
10535}
10536
80626a55
DE
10537/* This function is mapped across the sections and remembers the offset and
10538 size of each of the DWO debugging sections we are interested in. */
10539
10540static void
10541dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
10542{
10543 struct dwo_sections *dwo_sections = dwo_sections_ptr;
10544 const struct dwop_section_names *names = &dwop_section_names;
10545
10546 if (section_is_p (sectp->name, &names->abbrev_dwo))
10547 {
049412e3 10548 dwo_sections->abbrev.s.section = sectp;
80626a55
DE
10549 dwo_sections->abbrev.size = bfd_get_section_size (sectp);
10550 }
10551 else if (section_is_p (sectp->name, &names->info_dwo))
10552 {
049412e3 10553 dwo_sections->info.s.section = sectp;
80626a55
DE
10554 dwo_sections->info.size = bfd_get_section_size (sectp);
10555 }
10556 else if (section_is_p (sectp->name, &names->line_dwo))
10557 {
049412e3 10558 dwo_sections->line.s.section = sectp;
80626a55
DE
10559 dwo_sections->line.size = bfd_get_section_size (sectp);
10560 }
10561 else if (section_is_p (sectp->name, &names->loc_dwo))
10562 {
049412e3 10563 dwo_sections->loc.s.section = sectp;
80626a55
DE
10564 dwo_sections->loc.size = bfd_get_section_size (sectp);
10565 }
10566 else if (section_is_p (sectp->name, &names->macinfo_dwo))
10567 {
049412e3 10568 dwo_sections->macinfo.s.section = sectp;
80626a55
DE
10569 dwo_sections->macinfo.size = bfd_get_section_size (sectp);
10570 }
10571 else if (section_is_p (sectp->name, &names->macro_dwo))
10572 {
049412e3 10573 dwo_sections->macro.s.section = sectp;
80626a55
DE
10574 dwo_sections->macro.size = bfd_get_section_size (sectp);
10575 }
10576 else if (section_is_p (sectp->name, &names->str_dwo))
10577 {
049412e3 10578 dwo_sections->str.s.section = sectp;
80626a55
DE
10579 dwo_sections->str.size = bfd_get_section_size (sectp);
10580 }
10581 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10582 {
049412e3 10583 dwo_sections->str_offsets.s.section = sectp;
80626a55
DE
10584 dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
10585 }
10586 else if (section_is_p (sectp->name, &names->types_dwo))
10587 {
10588 struct dwarf2_section_info type_section;
10589
10590 memset (&type_section, 0, sizeof (type_section));
049412e3 10591 type_section.s.section = sectp;
80626a55
DE
10592 type_section.size = bfd_get_section_size (sectp);
10593 VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
10594 &type_section);
10595 }
10596}
10597
ab5088bf 10598/* Initialize the use of the DWO file specified by DWO_NAME and referenced
19c3d4c9 10599 by PER_CU. This is for the non-DWP case.
80626a55 10600 The result is NULL if DWO_NAME can't be found. */
3019eac3
DE
10601
10602static struct dwo_file *
0ac5b59e
DE
10603open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
10604 const char *dwo_name, const char *comp_dir)
3019eac3
DE
10605{
10606 struct objfile *objfile = dwarf2_per_objfile->objfile;
80626a55
DE
10607 struct dwo_file *dwo_file;
10608 bfd *dbfd;
3019eac3
DE
10609 struct cleanup *cleanups;
10610
ab5088bf 10611 dbfd = open_dwo_file (dwo_name, comp_dir);
80626a55
DE
10612 if (dbfd == NULL)
10613 {
b4f54984 10614 if (dwarf_read_debug)
80626a55
DE
10615 fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
10616 return NULL;
10617 }
10618 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
0ac5b59e
DE
10619 dwo_file->dwo_name = dwo_name;
10620 dwo_file->comp_dir = comp_dir;
80626a55 10621 dwo_file->dbfd = dbfd;
3019eac3
DE
10622
10623 cleanups = make_cleanup (free_dwo_file_cleanup, dwo_file);
10624
80626a55 10625 bfd_map_over_sections (dbfd, dwarf2_locate_dwo_sections, &dwo_file->sections);
3019eac3 10626
19c3d4c9 10627 dwo_file->cu = create_dwo_cu (dwo_file);
3019eac3
DE
10628
10629 dwo_file->tus = create_debug_types_hash_table (dwo_file,
10630 dwo_file->sections.types);
10631
10632 discard_cleanups (cleanups);
10633
b4f54984 10634 if (dwarf_read_debug)
80626a55
DE
10635 fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
10636
3019eac3
DE
10637 return dwo_file;
10638}
10639
80626a55 10640/* This function is mapped across the sections and remembers the offset and
73869dc2
DE
10641 size of each of the DWP debugging sections common to version 1 and 2 that
10642 we are interested in. */
3019eac3 10643
80626a55 10644static void
73869dc2
DE
10645dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
10646 void *dwp_file_ptr)
3019eac3 10647{
80626a55
DE
10648 struct dwp_file *dwp_file = dwp_file_ptr;
10649 const struct dwop_section_names *names = &dwop_section_names;
10650 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
3019eac3 10651
80626a55 10652 /* Record the ELF section number for later lookup: this is what the
73869dc2 10653 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
80626a55
DE
10654 gdb_assert (elf_section_nr < dwp_file->num_sections);
10655 dwp_file->elf_sections[elf_section_nr] = sectp;
3019eac3 10656
80626a55
DE
10657 /* Look for specific sections that we need. */
10658 if (section_is_p (sectp->name, &names->str_dwo))
10659 {
049412e3 10660 dwp_file->sections.str.s.section = sectp;
80626a55
DE
10661 dwp_file->sections.str.size = bfd_get_section_size (sectp);
10662 }
10663 else if (section_is_p (sectp->name, &names->cu_index))
10664 {
049412e3 10665 dwp_file->sections.cu_index.s.section = sectp;
80626a55
DE
10666 dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
10667 }
10668 else if (section_is_p (sectp->name, &names->tu_index))
10669 {
049412e3 10670 dwp_file->sections.tu_index.s.section = sectp;
80626a55
DE
10671 dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
10672 }
10673}
3019eac3 10674
73869dc2
DE
10675/* This function is mapped across the sections and remembers the offset and
10676 size of each of the DWP version 2 debugging sections that we are interested
10677 in. This is split into a separate function because we don't know if we
10678 have version 1 or 2 until we parse the cu_index/tu_index sections. */
10679
10680static void
10681dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
10682{
10683 struct dwp_file *dwp_file = dwp_file_ptr;
10684 const struct dwop_section_names *names = &dwop_section_names;
10685 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10686
10687 /* Record the ELF section number for later lookup: this is what the
10688 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
10689 gdb_assert (elf_section_nr < dwp_file->num_sections);
10690 dwp_file->elf_sections[elf_section_nr] = sectp;
10691
10692 /* Look for specific sections that we need. */
10693 if (section_is_p (sectp->name, &names->abbrev_dwo))
10694 {
049412e3 10695 dwp_file->sections.abbrev.s.section = sectp;
73869dc2
DE
10696 dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
10697 }
10698 else if (section_is_p (sectp->name, &names->info_dwo))
10699 {
049412e3 10700 dwp_file->sections.info.s.section = sectp;
73869dc2
DE
10701 dwp_file->sections.info.size = bfd_get_section_size (sectp);
10702 }
10703 else if (section_is_p (sectp->name, &names->line_dwo))
10704 {
049412e3 10705 dwp_file->sections.line.s.section = sectp;
73869dc2
DE
10706 dwp_file->sections.line.size = bfd_get_section_size (sectp);
10707 }
10708 else if (section_is_p (sectp->name, &names->loc_dwo))
10709 {
049412e3 10710 dwp_file->sections.loc.s.section = sectp;
73869dc2
DE
10711 dwp_file->sections.loc.size = bfd_get_section_size (sectp);
10712 }
10713 else if (section_is_p (sectp->name, &names->macinfo_dwo))
10714 {
049412e3 10715 dwp_file->sections.macinfo.s.section = sectp;
73869dc2
DE
10716 dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
10717 }
10718 else if (section_is_p (sectp->name, &names->macro_dwo))
10719 {
049412e3 10720 dwp_file->sections.macro.s.section = sectp;
73869dc2
DE
10721 dwp_file->sections.macro.size = bfd_get_section_size (sectp);
10722 }
10723 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10724 {
049412e3 10725 dwp_file->sections.str_offsets.s.section = sectp;
73869dc2
DE
10726 dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
10727 }
10728 else if (section_is_p (sectp->name, &names->types_dwo))
10729 {
049412e3 10730 dwp_file->sections.types.s.section = sectp;
73869dc2
DE
10731 dwp_file->sections.types.size = bfd_get_section_size (sectp);
10732 }
10733}
10734
80626a55 10735/* Hash function for dwp_file loaded CUs/TUs. */
3019eac3 10736
80626a55
DE
10737static hashval_t
10738hash_dwp_loaded_cutus (const void *item)
10739{
10740 const struct dwo_unit *dwo_unit = item;
3019eac3 10741
80626a55
DE
10742 /* This drops the top 32 bits of the signature, but is ok for a hash. */
10743 return dwo_unit->signature;
3019eac3
DE
10744}
10745
80626a55 10746/* Equality function for dwp_file loaded CUs/TUs. */
3019eac3 10747
80626a55
DE
10748static int
10749eq_dwp_loaded_cutus (const void *a, const void *b)
3019eac3 10750{
80626a55
DE
10751 const struct dwo_unit *dua = a;
10752 const struct dwo_unit *dub = b;
3019eac3 10753
80626a55
DE
10754 return dua->signature == dub->signature;
10755}
3019eac3 10756
80626a55 10757/* Allocate a hash table for dwp_file loaded CUs/TUs. */
3019eac3 10758
80626a55
DE
10759static htab_t
10760allocate_dwp_loaded_cutus_table (struct objfile *objfile)
10761{
10762 return htab_create_alloc_ex (3,
10763 hash_dwp_loaded_cutus,
10764 eq_dwp_loaded_cutus,
10765 NULL,
10766 &objfile->objfile_obstack,
10767 hashtab_obstack_allocate,
10768 dummy_obstack_deallocate);
10769}
3019eac3 10770
ab5088bf
DE
10771/* Try to open DWP file FILE_NAME.
10772 The result is the bfd handle of the file.
10773 If there is a problem finding or opening the file, return NULL.
10774 Upon success, the canonicalized path of the file is stored in the bfd,
10775 same as symfile_bfd_open. */
10776
10777static bfd *
10778open_dwp_file (const char *file_name)
10779{
6ac97d4c
DE
10780 bfd *abfd;
10781
10782 abfd = try_open_dwop_file (file_name, 1 /*is_dwp*/, 1 /*search_cwd*/);
10783 if (abfd != NULL)
10784 return abfd;
10785
10786 /* Work around upstream bug 15652.
10787 http://sourceware.org/bugzilla/show_bug.cgi?id=15652
10788 [Whether that's a "bug" is debatable, but it is getting in our way.]
10789 We have no real idea where the dwp file is, because gdb's realpath-ing
10790 of the executable's path may have discarded the needed info.
10791 [IWBN if the dwp file name was recorded in the executable, akin to
10792 .gnu_debuglink, but that doesn't exist yet.]
10793 Strip the directory from FILE_NAME and search again. */
10794 if (*debug_file_directory != '\0')
10795 {
10796 /* Don't implicitly search the current directory here.
10797 If the user wants to search "." to handle this case,
10798 it must be added to debug-file-directory. */
10799 return try_open_dwop_file (lbasename (file_name), 1 /*is_dwp*/,
10800 0 /*search_cwd*/);
10801 }
10802
10803 return NULL;
ab5088bf
DE
10804}
10805
80626a55
DE
10806/* Initialize the use of the DWP file for the current objfile.
10807 By convention the name of the DWP file is ${objfile}.dwp.
10808 The result is NULL if it can't be found. */
a766d390 10809
80626a55 10810static struct dwp_file *
ab5088bf 10811open_and_init_dwp_file (void)
80626a55
DE
10812{
10813 struct objfile *objfile = dwarf2_per_objfile->objfile;
10814 struct dwp_file *dwp_file;
10815 char *dwp_name;
10816 bfd *dbfd;
10817 struct cleanup *cleanups;
10818
82bf32bc
JK
10819 /* Try to find first .dwp for the binary file before any symbolic links
10820 resolving. */
10821 dwp_name = xstrprintf ("%s.dwp", objfile->original_name);
80626a55
DE
10822 cleanups = make_cleanup (xfree, dwp_name);
10823
ab5088bf 10824 dbfd = open_dwp_file (dwp_name);
82bf32bc
JK
10825 if (dbfd == NULL
10826 && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
10827 {
10828 /* Try to find .dwp for the binary file after gdb_realpath resolving. */
10829 dwp_name = xstrprintf ("%s.dwp", objfile_name (objfile));
10830 make_cleanup (xfree, dwp_name);
10831 dbfd = open_dwp_file (dwp_name);
10832 }
10833
80626a55
DE
10834 if (dbfd == NULL)
10835 {
b4f54984 10836 if (dwarf_read_debug)
80626a55
DE
10837 fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name);
10838 do_cleanups (cleanups);
10839 return NULL;
3019eac3 10840 }
80626a55 10841 dwp_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_file);
93417882 10842 dwp_file->name = bfd_get_filename (dbfd);
80626a55
DE
10843 dwp_file->dbfd = dbfd;
10844 do_cleanups (cleanups);
c906108c 10845
80626a55
DE
10846 /* +1: section 0 is unused */
10847 dwp_file->num_sections = bfd_count_sections (dbfd) + 1;
10848 dwp_file->elf_sections =
10849 OBSTACK_CALLOC (&objfile->objfile_obstack,
10850 dwp_file->num_sections, asection *);
10851
73869dc2 10852 bfd_map_over_sections (dbfd, dwarf2_locate_common_dwp_sections, dwp_file);
80626a55
DE
10853
10854 dwp_file->cus = create_dwp_hash_table (dwp_file, 0);
10855
10856 dwp_file->tus = create_dwp_hash_table (dwp_file, 1);
10857
73869dc2
DE
10858 /* The DWP file version is stored in the hash table. Oh well. */
10859 if (dwp_file->cus->version != dwp_file->tus->version)
10860 {
10861 /* Technically speaking, we should try to limp along, but this is
fbcbc3fd 10862 pretty bizarre. We use pulongest here because that's the established
4d65956b 10863 portability solution (e.g, we cannot use %u for uint32_t). */
fbcbc3fd
DE
10864 error (_("Dwarf Error: DWP file CU version %s doesn't match"
10865 " TU version %s [in DWP file %s]"),
10866 pulongest (dwp_file->cus->version),
10867 pulongest (dwp_file->tus->version), dwp_name);
73869dc2
DE
10868 }
10869 dwp_file->version = dwp_file->cus->version;
10870
10871 if (dwp_file->version == 2)
10872 bfd_map_over_sections (dbfd, dwarf2_locate_v2_dwp_sections, dwp_file);
10873
19ac8c2e
DE
10874 dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
10875 dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
80626a55 10876
b4f54984 10877 if (dwarf_read_debug)
80626a55
DE
10878 {
10879 fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
10880 fprintf_unfiltered (gdb_stdlog,
21aa081e
PA
10881 " %s CUs, %s TUs\n",
10882 pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
10883 pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
80626a55
DE
10884 }
10885
10886 return dwp_file;
3019eac3 10887}
c906108c 10888
ab5088bf
DE
10889/* Wrapper around open_and_init_dwp_file, only open it once. */
10890
10891static struct dwp_file *
10892get_dwp_file (void)
10893{
10894 if (! dwarf2_per_objfile->dwp_checked)
10895 {
10896 dwarf2_per_objfile->dwp_file = open_and_init_dwp_file ();
10897 dwarf2_per_objfile->dwp_checked = 1;
10898 }
10899 return dwarf2_per_objfile->dwp_file;
10900}
10901
80626a55
DE
10902/* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
10903 Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
10904 or in the DWP file for the objfile, referenced by THIS_UNIT.
3019eac3 10905 If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
80626a55
DE
10906 IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
10907
10908 This is called, for example, when wanting to read a variable with a
10909 complex location. Therefore we don't want to do file i/o for every call.
10910 Therefore we don't want to look for a DWO file on every call.
10911 Therefore we first see if we've already seen SIGNATURE in a DWP file,
10912 then we check if we've already seen DWO_NAME, and only THEN do we check
10913 for a DWO file.
10914
1c658ad5 10915 The result is a pointer to the dwo_unit object or NULL if we didn't find it
80626a55 10916 (dwo_id mismatch or couldn't find the DWO/DWP file). */
debd256d 10917
3019eac3 10918static struct dwo_unit *
80626a55
DE
10919lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
10920 const char *dwo_name, const char *comp_dir,
10921 ULONGEST signature, int is_debug_types)
3019eac3
DE
10922{
10923 struct objfile *objfile = dwarf2_per_objfile->objfile;
80626a55
DE
10924 const char *kind = is_debug_types ? "TU" : "CU";
10925 void **dwo_file_slot;
3019eac3 10926 struct dwo_file *dwo_file;
80626a55 10927 struct dwp_file *dwp_file;
cb1df416 10928
6a506a2d
DE
10929 /* First see if there's a DWP file.
10930 If we have a DWP file but didn't find the DWO inside it, don't
10931 look for the original DWO file. It makes gdb behave differently
10932 depending on whether one is debugging in the build tree. */
cf2c3c16 10933
ab5088bf 10934 dwp_file = get_dwp_file ();
80626a55 10935 if (dwp_file != NULL)
cf2c3c16 10936 {
80626a55
DE
10937 const struct dwp_hash_table *dwp_htab =
10938 is_debug_types ? dwp_file->tus : dwp_file->cus;
10939
10940 if (dwp_htab != NULL)
10941 {
10942 struct dwo_unit *dwo_cutu =
57d63ce2
DE
10943 lookup_dwo_unit_in_dwp (dwp_file, comp_dir,
10944 signature, is_debug_types);
80626a55
DE
10945
10946 if (dwo_cutu != NULL)
10947 {
b4f54984 10948 if (dwarf_read_debug)
80626a55
DE
10949 {
10950 fprintf_unfiltered (gdb_stdlog,
10951 "Virtual DWO %s %s found: @%s\n",
10952 kind, hex_string (signature),
10953 host_address_to_string (dwo_cutu));
10954 }
10955 return dwo_cutu;
10956 }
10957 }
10958 }
6a506a2d 10959 else
80626a55 10960 {
6a506a2d 10961 /* No DWP file, look for the DWO file. */
80626a55 10962
6a506a2d
DE
10963 dwo_file_slot = lookup_dwo_file_slot (dwo_name, comp_dir);
10964 if (*dwo_file_slot == NULL)
80626a55 10965 {
6a506a2d
DE
10966 /* Read in the file and build a table of the CUs/TUs it contains. */
10967 *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
19c3d4c9 10968 }
6a506a2d
DE
10969 /* NOTE: This will be NULL if unable to open the file. */
10970 dwo_file = *dwo_file_slot;
3019eac3 10971
6a506a2d 10972 if (dwo_file != NULL)
19c3d4c9 10973 {
6a506a2d
DE
10974 struct dwo_unit *dwo_cutu = NULL;
10975
10976 if (is_debug_types && dwo_file->tus)
10977 {
10978 struct dwo_unit find_dwo_cutu;
10979
10980 memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
10981 find_dwo_cutu.signature = signature;
10982 dwo_cutu = htab_find (dwo_file->tus, &find_dwo_cutu);
10983 }
10984 else if (!is_debug_types && dwo_file->cu)
80626a55 10985 {
6a506a2d
DE
10986 if (signature == dwo_file->cu->signature)
10987 dwo_cutu = dwo_file->cu;
10988 }
10989
10990 if (dwo_cutu != NULL)
10991 {
b4f54984 10992 if (dwarf_read_debug)
6a506a2d
DE
10993 {
10994 fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
10995 kind, dwo_name, hex_string (signature),
10996 host_address_to_string (dwo_cutu));
10997 }
10998 return dwo_cutu;
80626a55
DE
10999 }
11000 }
2e276125 11001 }
9cdd5dbd 11002
80626a55
DE
11003 /* We didn't find it. This could mean a dwo_id mismatch, or
11004 someone deleted the DWO/DWP file, or the search path isn't set up
11005 correctly to find the file. */
11006
b4f54984 11007 if (dwarf_read_debug)
80626a55
DE
11008 {
11009 fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
11010 kind, dwo_name, hex_string (signature));
11011 }
3019eac3 11012
6656a72d
DE
11013 /* This is a warning and not a complaint because it can be caused by
11014 pilot error (e.g., user accidentally deleting the DWO). */
43942612
DE
11015 {
11016 /* Print the name of the DWP file if we looked there, helps the user
11017 better diagnose the problem. */
11018 char *dwp_text = NULL;
11019 struct cleanup *cleanups;
11020
11021 if (dwp_file != NULL)
11022 dwp_text = xstrprintf (" [in DWP file %s]", lbasename (dwp_file->name));
11023 cleanups = make_cleanup (xfree, dwp_text);
11024
11025 warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset 0x%x"
11026 " [in module %s]"),
11027 kind, dwo_name, hex_string (signature),
11028 dwp_text != NULL ? dwp_text : "",
11029 this_unit->is_debug_types ? "TU" : "CU",
11030 this_unit->offset.sect_off, objfile_name (objfile));
11031
11032 do_cleanups (cleanups);
11033 }
3019eac3 11034 return NULL;
5fb290d7
DJ
11035}
11036
80626a55
DE
11037/* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
11038 See lookup_dwo_cutu_unit for details. */
11039
11040static struct dwo_unit *
11041lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
11042 const char *dwo_name, const char *comp_dir,
11043 ULONGEST signature)
11044{
11045 return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
11046}
11047
11048/* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
11049 See lookup_dwo_cutu_unit for details. */
11050
11051static struct dwo_unit *
11052lookup_dwo_type_unit (struct signatured_type *this_tu,
11053 const char *dwo_name, const char *comp_dir)
11054{
11055 return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
11056}
11057
89e63ee4
DE
11058/* Traversal function for queue_and_load_all_dwo_tus. */
11059
11060static int
11061queue_and_load_dwo_tu (void **slot, void *info)
11062{
11063 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
11064 struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
11065 ULONGEST signature = dwo_unit->signature;
11066 struct signatured_type *sig_type =
11067 lookup_dwo_signatured_type (per_cu->cu, signature);
11068
11069 if (sig_type != NULL)
11070 {
11071 struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
11072
11073 /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
11074 a real dependency of PER_CU on SIG_TYPE. That is detected later
11075 while processing PER_CU. */
11076 if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
11077 load_full_type_unit (sig_cu);
11078 VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
11079 }
11080
11081 return 1;
11082}
11083
11084/* Queue all TUs contained in the DWO of PER_CU to be read in.
11085 The DWO may have the only definition of the type, though it may not be
11086 referenced anywhere in PER_CU. Thus we have to load *all* its TUs.
11087 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
11088
11089static void
11090queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
11091{
11092 struct dwo_unit *dwo_unit;
11093 struct dwo_file *dwo_file;
11094
11095 gdb_assert (!per_cu->is_debug_types);
11096 gdb_assert (get_dwp_file () == NULL);
11097 gdb_assert (per_cu->cu != NULL);
11098
11099 dwo_unit = per_cu->cu->dwo_unit;
11100 gdb_assert (dwo_unit != NULL);
11101
11102 dwo_file = dwo_unit->dwo_file;
11103 if (dwo_file->tus != NULL)
11104 htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
11105}
11106
3019eac3
DE
11107/* Free all resources associated with DWO_FILE.
11108 Close the DWO file and munmap the sections.
11109 All memory should be on the objfile obstack. */
348e048f
DE
11110
11111static void
3019eac3 11112free_dwo_file (struct dwo_file *dwo_file, struct objfile *objfile)
348e048f 11113{
3019eac3
DE
11114 int ix;
11115 struct dwarf2_section_info *section;
348e048f 11116
5c6fa7ab 11117 /* Note: dbfd is NULL for virtual DWO files. */
80626a55 11118 gdb_bfd_unref (dwo_file->dbfd);
348e048f 11119
3019eac3
DE
11120 VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
11121}
348e048f 11122
3019eac3 11123/* Wrapper for free_dwo_file for use in cleanups. */
348e048f 11124
3019eac3
DE
11125static void
11126free_dwo_file_cleanup (void *arg)
11127{
11128 struct dwo_file *dwo_file = (struct dwo_file *) arg;
11129 struct objfile *objfile = dwarf2_per_objfile->objfile;
348e048f 11130
3019eac3
DE
11131 free_dwo_file (dwo_file, objfile);
11132}
348e048f 11133
3019eac3 11134/* Traversal function for free_dwo_files. */
2ab95328 11135
3019eac3
DE
11136static int
11137free_dwo_file_from_slot (void **slot, void *info)
11138{
11139 struct dwo_file *dwo_file = (struct dwo_file *) *slot;
11140 struct objfile *objfile = (struct objfile *) info;
348e048f 11141
3019eac3 11142 free_dwo_file (dwo_file, objfile);
348e048f 11143
3019eac3
DE
11144 return 1;
11145}
348e048f 11146
3019eac3 11147/* Free all resources associated with DWO_FILES. */
348e048f 11148
3019eac3
DE
11149static void
11150free_dwo_files (htab_t dwo_files, struct objfile *objfile)
11151{
11152 htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
348e048f 11153}
3019eac3
DE
11154\f
11155/* Read in various DIEs. */
348e048f 11156
d389af10
JK
11157/* qsort helper for inherit_abstract_dies. */
11158
11159static int
11160unsigned_int_compar (const void *ap, const void *bp)
11161{
11162 unsigned int a = *(unsigned int *) ap;
11163 unsigned int b = *(unsigned int *) bp;
11164
11165 return (a > b) - (b > a);
11166}
11167
11168/* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
3e43a32a
MS
11169 Inherit only the children of the DW_AT_abstract_origin DIE not being
11170 already referenced by DW_AT_abstract_origin from the children of the
11171 current DIE. */
d389af10
JK
11172
11173static void
11174inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
11175{
11176 struct die_info *child_die;
11177 unsigned die_children_count;
11178 /* CU offsets which were referenced by children of the current DIE. */
b64f50a1
JK
11179 sect_offset *offsets;
11180 sect_offset *offsets_end, *offsetp;
d389af10
JK
11181 /* Parent of DIE - referenced by DW_AT_abstract_origin. */
11182 struct die_info *origin_die;
11183 /* Iterator of the ORIGIN_DIE children. */
11184 struct die_info *origin_child_die;
11185 struct cleanup *cleanups;
11186 struct attribute *attr;
cd02d79d
PA
11187 struct dwarf2_cu *origin_cu;
11188 struct pending **origin_previous_list_in_scope;
d389af10
JK
11189
11190 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11191 if (!attr)
11192 return;
11193
cd02d79d
PA
11194 /* Note that following die references may follow to a die in a
11195 different cu. */
11196
11197 origin_cu = cu;
11198 origin_die = follow_die_ref (die, attr, &origin_cu);
11199
11200 /* We're inheriting ORIGIN's children into the scope we'd put DIE's
11201 symbols in. */
11202 origin_previous_list_in_scope = origin_cu->list_in_scope;
11203 origin_cu->list_in_scope = cu->list_in_scope;
11204
edb3359d
DJ
11205 if (die->tag != origin_die->tag
11206 && !(die->tag == DW_TAG_inlined_subroutine
11207 && origin_die->tag == DW_TAG_subprogram))
d389af10
JK
11208 complaint (&symfile_complaints,
11209 _("DIE 0x%x and its abstract origin 0x%x have different tags"),
b64f50a1 11210 die->offset.sect_off, origin_die->offset.sect_off);
d389af10
JK
11211
11212 child_die = die->child;
11213 die_children_count = 0;
11214 while (child_die && child_die->tag)
11215 {
11216 child_die = sibling_die (child_die);
11217 die_children_count++;
11218 }
8d749320 11219 offsets = XNEWVEC (sect_offset, die_children_count);
d389af10
JK
11220 cleanups = make_cleanup (xfree, offsets);
11221
11222 offsets_end = offsets;
3ea89b92
PMR
11223 for (child_die = die->child;
11224 child_die && child_die->tag;
11225 child_die = sibling_die (child_die))
11226 {
11227 struct die_info *child_origin_die;
11228 struct dwarf2_cu *child_origin_cu;
11229
11230 /* We are trying to process concrete instance entries:
11231 DW_TAG_GNU_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
11232 it's not relevant to our analysis here. i.e. detecting DIEs that are
11233 present in the abstract instance but not referenced in the concrete
11234 one. */
11235 if (child_die->tag == DW_TAG_GNU_call_site)
11236 continue;
11237
c38f313d
DJ
11238 /* For each CHILD_DIE, find the corresponding child of
11239 ORIGIN_DIE. If there is more than one layer of
11240 DW_AT_abstract_origin, follow them all; there shouldn't be,
11241 but GCC versions at least through 4.4 generate this (GCC PR
11242 40573). */
3ea89b92
PMR
11243 child_origin_die = child_die;
11244 child_origin_cu = cu;
c38f313d
DJ
11245 while (1)
11246 {
cd02d79d
PA
11247 attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
11248 child_origin_cu);
c38f313d
DJ
11249 if (attr == NULL)
11250 break;
cd02d79d
PA
11251 child_origin_die = follow_die_ref (child_origin_die, attr,
11252 &child_origin_cu);
c38f313d
DJ
11253 }
11254
d389af10
JK
11255 /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
11256 counterpart may exist. */
c38f313d 11257 if (child_origin_die != child_die)
d389af10 11258 {
edb3359d
DJ
11259 if (child_die->tag != child_origin_die->tag
11260 && !(child_die->tag == DW_TAG_inlined_subroutine
11261 && child_origin_die->tag == DW_TAG_subprogram))
d389af10
JK
11262 complaint (&symfile_complaints,
11263 _("Child DIE 0x%x and its abstract origin 0x%x have "
b64f50a1
JK
11264 "different tags"), child_die->offset.sect_off,
11265 child_origin_die->offset.sect_off);
c38f313d
DJ
11266 if (child_origin_die->parent != origin_die)
11267 complaint (&symfile_complaints,
11268 _("Child DIE 0x%x and its abstract origin 0x%x have "
b64f50a1
JK
11269 "different parents"), child_die->offset.sect_off,
11270 child_origin_die->offset.sect_off);
c38f313d
DJ
11271 else
11272 *offsets_end++ = child_origin_die->offset;
d389af10 11273 }
d389af10
JK
11274 }
11275 qsort (offsets, offsets_end - offsets, sizeof (*offsets),
11276 unsigned_int_compar);
11277 for (offsetp = offsets + 1; offsetp < offsets_end; offsetp++)
b64f50a1 11278 if (offsetp[-1].sect_off == offsetp->sect_off)
3e43a32a
MS
11279 complaint (&symfile_complaints,
11280 _("Multiple children of DIE 0x%x refer "
11281 "to DIE 0x%x as their abstract origin"),
b64f50a1 11282 die->offset.sect_off, offsetp->sect_off);
d389af10
JK
11283
11284 offsetp = offsets;
11285 origin_child_die = origin_die->child;
11286 while (origin_child_die && origin_child_die->tag)
11287 {
11288 /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children? */
b64f50a1
JK
11289 while (offsetp < offsets_end
11290 && offsetp->sect_off < origin_child_die->offset.sect_off)
d389af10 11291 offsetp++;
b64f50a1
JK
11292 if (offsetp >= offsets_end
11293 || offsetp->sect_off > origin_child_die->offset.sect_off)
d389af10 11294 {
adde2bff
DE
11295 /* Found that ORIGIN_CHILD_DIE is really not referenced.
11296 Check whether we're already processing ORIGIN_CHILD_DIE.
11297 This can happen with mutually referenced abstract_origins.
11298 PR 16581. */
11299 if (!origin_child_die->in_process)
11300 process_die (origin_child_die, origin_cu);
d389af10
JK
11301 }
11302 origin_child_die = sibling_die (origin_child_die);
11303 }
cd02d79d 11304 origin_cu->list_in_scope = origin_previous_list_in_scope;
d389af10
JK
11305
11306 do_cleanups (cleanups);
11307}
11308
c906108c 11309static void
e7c27a73 11310read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 11311{
e7c27a73 11312 struct objfile *objfile = cu->objfile;
3e29f34a 11313 struct gdbarch *gdbarch = get_objfile_arch (objfile);
fe978cb0 11314 struct context_stack *newobj;
c906108c
SS
11315 CORE_ADDR lowpc;
11316 CORE_ADDR highpc;
11317 struct die_info *child_die;
edb3359d 11318 struct attribute *attr, *call_line, *call_file;
15d034d0 11319 const char *name;
e142c38c 11320 CORE_ADDR baseaddr;
801e3a5b 11321 struct block *block;
edb3359d 11322 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
34eaf542
TT
11323 VEC (symbolp) *template_args = NULL;
11324 struct template_symbol *templ_func = NULL;
edb3359d
DJ
11325
11326 if (inlined_func)
11327 {
11328 /* If we do not have call site information, we can't show the
11329 caller of this inlined function. That's too confusing, so
11330 only use the scope for local variables. */
11331 call_line = dwarf2_attr (die, DW_AT_call_line, cu);
11332 call_file = dwarf2_attr (die, DW_AT_call_file, cu);
11333 if (call_line == NULL || call_file == NULL)
11334 {
11335 read_lexical_block_scope (die, cu);
11336 return;
11337 }
11338 }
c906108c 11339
e142c38c
DJ
11340 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11341
94af9270 11342 name = dwarf2_name (die, cu);
c906108c 11343
e8d05480
JB
11344 /* Ignore functions with missing or empty names. These are actually
11345 illegal according to the DWARF standard. */
11346 if (name == NULL)
11347 {
11348 complaint (&symfile_complaints,
b64f50a1
JK
11349 _("missing name for subprogram DIE at %d"),
11350 die->offset.sect_off);
e8d05480
JB
11351 return;
11352 }
11353
11354 /* Ignore functions with missing or invalid low and high pc attributes. */
11355 if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
11356 {
ae4d0c03
PM
11357 attr = dwarf2_attr (die, DW_AT_external, cu);
11358 if (!attr || !DW_UNSND (attr))
11359 complaint (&symfile_complaints,
3e43a32a
MS
11360 _("cannot get low and high bounds "
11361 "for subprogram DIE at %d"),
b64f50a1 11362 die->offset.sect_off);
e8d05480
JB
11363 return;
11364 }
c906108c 11365
3e29f34a
MR
11366 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11367 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
c906108c 11368
34eaf542
TT
11369 /* If we have any template arguments, then we must allocate a
11370 different sort of symbol. */
11371 for (child_die = die->child; child_die; child_die = sibling_die (child_die))
11372 {
11373 if (child_die->tag == DW_TAG_template_type_param
11374 || child_die->tag == DW_TAG_template_value_param)
11375 {
e623cf5d 11376 templ_func = allocate_template_symbol (objfile);
34eaf542
TT
11377 templ_func->base.is_cplus_template_function = 1;
11378 break;
11379 }
11380 }
11381
fe978cb0
PA
11382 newobj = push_context (0, lowpc);
11383 newobj->name = new_symbol_full (die, read_type_die (die, cu), cu,
34eaf542 11384 (struct symbol *) templ_func);
4c2df51b 11385
4cecd739
DJ
11386 /* If there is a location expression for DW_AT_frame_base, record
11387 it. */
e142c38c 11388 attr = dwarf2_attr (die, DW_AT_frame_base, cu);
4c2df51b 11389 if (attr)
fe978cb0 11390 dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
4c2df51b 11391
63e43d3a
PMR
11392 /* If there is a location for the static link, record it. */
11393 newobj->static_link = NULL;
11394 attr = dwarf2_attr (die, DW_AT_static_link, cu);
11395 if (attr)
11396 {
11397 newobj->static_link = obstack_alloc (&objfile->objfile_obstack,
11398 sizeof (*newobj->static_link));
11399 attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
11400 }
11401
e142c38c 11402 cu->list_in_scope = &local_symbols;
c906108c 11403
639d11d3 11404 if (die->child != NULL)
c906108c 11405 {
639d11d3 11406 child_die = die->child;
c906108c
SS
11407 while (child_die && child_die->tag)
11408 {
34eaf542
TT
11409 if (child_die->tag == DW_TAG_template_type_param
11410 || child_die->tag == DW_TAG_template_value_param)
11411 {
11412 struct symbol *arg = new_symbol (child_die, NULL, cu);
11413
f1078f66
DJ
11414 if (arg != NULL)
11415 VEC_safe_push (symbolp, template_args, arg);
34eaf542
TT
11416 }
11417 else
11418 process_die (child_die, cu);
c906108c
SS
11419 child_die = sibling_die (child_die);
11420 }
11421 }
11422
d389af10
JK
11423 inherit_abstract_dies (die, cu);
11424
4a811a97
UW
11425 /* If we have a DW_AT_specification, we might need to import using
11426 directives from the context of the specification DIE. See the
11427 comment in determine_prefix. */
11428 if (cu->language == language_cplus
11429 && dwarf2_attr (die, DW_AT_specification, cu))
11430 {
11431 struct dwarf2_cu *spec_cu = cu;
11432 struct die_info *spec_die = die_specification (die, &spec_cu);
11433
11434 while (spec_die)
11435 {
11436 child_die = spec_die->child;
11437 while (child_die && child_die->tag)
11438 {
11439 if (child_die->tag == DW_TAG_imported_module)
11440 process_die (child_die, spec_cu);
11441 child_die = sibling_die (child_die);
11442 }
11443
11444 /* In some cases, GCC generates specification DIEs that
11445 themselves contain DW_AT_specification attributes. */
11446 spec_die = die_specification (spec_die, &spec_cu);
11447 }
11448 }
11449
fe978cb0 11450 newobj = pop_context ();
c906108c 11451 /* Make a block for the local symbols within. */
fe978cb0 11452 block = finish_block (newobj->name, &local_symbols, newobj->old_blocks,
63e43d3a 11453 newobj->static_link, lowpc, highpc);
801e3a5b 11454
df8a16a1 11455 /* For C++, set the block's scope. */
45280282
IB
11456 if ((cu->language == language_cplus
11457 || cu->language == language_fortran
11458 || cu->language == language_d)
4d4ec4e5 11459 && cu->processing_has_namespace_info)
195a3f6c
TT
11460 block_set_scope (block, determine_prefix (die, cu),
11461 &objfile->objfile_obstack);
df8a16a1 11462
801e3a5b
JB
11463 /* If we have address ranges, record them. */
11464 dwarf2_record_block_ranges (die, block, baseaddr, cu);
6e70227d 11465
fe978cb0 11466 gdbarch_make_symbol_special (gdbarch, newobj->name, objfile);
3e29f34a 11467
34eaf542
TT
11468 /* Attach template arguments to function. */
11469 if (! VEC_empty (symbolp, template_args))
11470 {
11471 gdb_assert (templ_func != NULL);
11472
11473 templ_func->n_template_arguments = VEC_length (symbolp, template_args);
11474 templ_func->template_arguments
8d749320
SM
11475 = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
11476 templ_func->n_template_arguments);
34eaf542
TT
11477 memcpy (templ_func->template_arguments,
11478 VEC_address (symbolp, template_args),
11479 (templ_func->n_template_arguments * sizeof (struct symbol *)));
11480 VEC_free (symbolp, template_args);
11481 }
11482
208d8187
JB
11483 /* In C++, we can have functions nested inside functions (e.g., when
11484 a function declares a class that has methods). This means that
11485 when we finish processing a function scope, we may need to go
11486 back to building a containing block's symbol lists. */
fe978cb0 11487 local_symbols = newobj->locals;
22cee43f 11488 local_using_directives = newobj->local_using_directives;
208d8187 11489
921e78cf
JB
11490 /* If we've finished processing a top-level function, subsequent
11491 symbols go in the file symbol list. */
11492 if (outermost_context_p ())
e142c38c 11493 cu->list_in_scope = &file_symbols;
c906108c
SS
11494}
11495
11496/* Process all the DIES contained within a lexical block scope. Start
11497 a new scope, process the dies, and then close the scope. */
11498
11499static void
e7c27a73 11500read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 11501{
e7c27a73 11502 struct objfile *objfile = cu->objfile;
3e29f34a 11503 struct gdbarch *gdbarch = get_objfile_arch (objfile);
fe978cb0 11504 struct context_stack *newobj;
c906108c
SS
11505 CORE_ADDR lowpc, highpc;
11506 struct die_info *child_die;
e142c38c
DJ
11507 CORE_ADDR baseaddr;
11508
11509 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c
SS
11510
11511 /* Ignore blocks with missing or invalid low and high pc attributes. */
af34e669
DJ
11512 /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
11513 as multiple lexical blocks? Handling children in a sane way would
6e70227d 11514 be nasty. Might be easier to properly extend generic blocks to
af34e669 11515 describe ranges. */
d85a05f0 11516 if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
c906108c 11517 return;
3e29f34a
MR
11518 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11519 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
c906108c
SS
11520
11521 push_context (0, lowpc);
639d11d3 11522 if (die->child != NULL)
c906108c 11523 {
639d11d3 11524 child_die = die->child;
c906108c
SS
11525 while (child_die && child_die->tag)
11526 {
e7c27a73 11527 process_die (child_die, cu);
c906108c
SS
11528 child_die = sibling_die (child_die);
11529 }
11530 }
3ea89b92 11531 inherit_abstract_dies (die, cu);
fe978cb0 11532 newobj = pop_context ();
c906108c 11533
22cee43f 11534 if (local_symbols != NULL || local_using_directives != NULL)
c906108c 11535 {
801e3a5b 11536 struct block *block
63e43d3a 11537 = finish_block (0, &local_symbols, newobj->old_blocks, NULL,
fe978cb0 11538 newobj->start_addr, highpc);
801e3a5b
JB
11539
11540 /* Note that recording ranges after traversing children, as we
11541 do here, means that recording a parent's ranges entails
11542 walking across all its children's ranges as they appear in
11543 the address map, which is quadratic behavior.
11544
11545 It would be nicer to record the parent's ranges before
11546 traversing its children, simply overriding whatever you find
11547 there. But since we don't even decide whether to create a
11548 block until after we've traversed its children, that's hard
11549 to do. */
11550 dwarf2_record_block_ranges (die, block, baseaddr, cu);
c906108c 11551 }
fe978cb0 11552 local_symbols = newobj->locals;
22cee43f 11553 local_using_directives = newobj->local_using_directives;
c906108c
SS
11554}
11555
96408a79
SA
11556/* Read in DW_TAG_GNU_call_site and insert it to CU->call_site_htab. */
11557
11558static void
11559read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
11560{
11561 struct objfile *objfile = cu->objfile;
11562 struct gdbarch *gdbarch = get_objfile_arch (objfile);
11563 CORE_ADDR pc, baseaddr;
11564 struct attribute *attr;
11565 struct call_site *call_site, call_site_local;
11566 void **slot;
11567 int nparams;
11568 struct die_info *child_die;
11569
11570 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11571
11572 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11573 if (!attr)
11574 {
11575 complaint (&symfile_complaints,
11576 _("missing DW_AT_low_pc for DW_TAG_GNU_call_site "
11577 "DIE 0x%x [in module %s]"),
4262abfb 11578 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11579 return;
11580 }
31aa7e4e 11581 pc = attr_value_as_address (attr) + baseaddr;
3e29f34a 11582 pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
96408a79
SA
11583
11584 if (cu->call_site_htab == NULL)
11585 cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
11586 NULL, &objfile->objfile_obstack,
11587 hashtab_obstack_allocate, NULL);
11588 call_site_local.pc = pc;
11589 slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
11590 if (*slot != NULL)
11591 {
11592 complaint (&symfile_complaints,
11593 _("Duplicate PC %s for DW_TAG_GNU_call_site "
11594 "DIE 0x%x [in module %s]"),
4262abfb
JK
11595 paddress (gdbarch, pc), die->offset.sect_off,
11596 objfile_name (objfile));
96408a79
SA
11597 return;
11598 }
11599
11600 /* Count parameters at the caller. */
11601
11602 nparams = 0;
11603 for (child_die = die->child; child_die && child_die->tag;
11604 child_die = sibling_die (child_die))
11605 {
11606 if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11607 {
11608 complaint (&symfile_complaints,
11609 _("Tag %d is not DW_TAG_GNU_call_site_parameter in "
11610 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb
JK
11611 child_die->tag, child_die->offset.sect_off,
11612 objfile_name (objfile));
96408a79
SA
11613 continue;
11614 }
11615
11616 nparams++;
11617 }
11618
11619 call_site = obstack_alloc (&objfile->objfile_obstack,
11620 (sizeof (*call_site)
11621 + (sizeof (*call_site->parameter)
11622 * (nparams - 1))));
11623 *slot = call_site;
11624 memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
11625 call_site->pc = pc;
11626
11627 if (dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
11628 {
11629 struct die_info *func_die;
11630
11631 /* Skip also over DW_TAG_inlined_subroutine. */
11632 for (func_die = die->parent;
11633 func_die && func_die->tag != DW_TAG_subprogram
11634 && func_die->tag != DW_TAG_subroutine_type;
11635 func_die = func_die->parent);
11636
11637 /* DW_AT_GNU_all_call_sites is a superset
11638 of DW_AT_GNU_all_tail_call_sites. */
11639 if (func_die
11640 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
11641 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
11642 {
11643 /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
11644 not complete. But keep CALL_SITE for look ups via call_site_htab,
11645 both the initial caller containing the real return address PC and
11646 the final callee containing the current PC of a chain of tail
11647 calls do not need to have the tail call list complete. But any
11648 function candidate for a virtual tail call frame searched via
11649 TYPE_TAIL_CALL_LIST must have the tail call list complete to be
11650 determined unambiguously. */
11651 }
11652 else
11653 {
11654 struct type *func_type = NULL;
11655
11656 if (func_die)
11657 func_type = get_die_type (func_die, cu);
11658 if (func_type != NULL)
11659 {
11660 gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
11661
11662 /* Enlist this call site to the function. */
11663 call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
11664 TYPE_TAIL_CALL_LIST (func_type) = call_site;
11665 }
11666 else
11667 complaint (&symfile_complaints,
11668 _("Cannot find function owning DW_TAG_GNU_call_site "
11669 "DIE 0x%x [in module %s]"),
4262abfb 11670 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11671 }
11672 }
11673
11674 attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
11675 if (attr == NULL)
11676 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11677 SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
11678 if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
11679 /* Keep NULL DWARF_BLOCK. */;
11680 else if (attr_form_is_block (attr))
11681 {
11682 struct dwarf2_locexpr_baton *dlbaton;
11683
8d749320 11684 dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
96408a79
SA
11685 dlbaton->data = DW_BLOCK (attr)->data;
11686 dlbaton->size = DW_BLOCK (attr)->size;
11687 dlbaton->per_cu = cu->per_cu;
11688
11689 SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
11690 }
7771576e 11691 else if (attr_form_is_ref (attr))
96408a79 11692 {
96408a79
SA
11693 struct dwarf2_cu *target_cu = cu;
11694 struct die_info *target_die;
11695
ac9ec31b 11696 target_die = follow_die_ref (die, attr, &target_cu);
96408a79
SA
11697 gdb_assert (target_cu->objfile == objfile);
11698 if (die_is_declaration (target_die, target_cu))
11699 {
7d45c7c3 11700 const char *target_physname;
9112db09
JK
11701
11702 /* Prefer the mangled name; otherwise compute the demangled one. */
7d45c7c3
KB
11703 target_physname = dwarf2_string_attr (target_die,
11704 DW_AT_linkage_name,
11705 target_cu);
11706 if (target_physname == NULL)
11707 target_physname = dwarf2_string_attr (target_die,
11708 DW_AT_MIPS_linkage_name,
11709 target_cu);
11710 if (target_physname == NULL)
9112db09 11711 target_physname = dwarf2_physname (NULL, target_die, target_cu);
96408a79
SA
11712 if (target_physname == NULL)
11713 complaint (&symfile_complaints,
11714 _("DW_AT_GNU_call_site_target target DIE has invalid "
11715 "physname, for referencing DIE 0x%x [in module %s]"),
4262abfb 11716 die->offset.sect_off, objfile_name (objfile));
96408a79 11717 else
7d455152 11718 SET_FIELD_PHYSNAME (call_site->target, target_physname);
96408a79
SA
11719 }
11720 else
11721 {
11722 CORE_ADDR lowpc;
11723
11724 /* DW_AT_entry_pc should be preferred. */
11725 if (!dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL))
11726 complaint (&symfile_complaints,
11727 _("DW_AT_GNU_call_site_target target DIE has invalid "
11728 "low pc, for referencing DIE 0x%x [in module %s]"),
4262abfb 11729 die->offset.sect_off, objfile_name (objfile));
96408a79 11730 else
3e29f34a
MR
11731 {
11732 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11733 SET_FIELD_PHYSADDR (call_site->target, lowpc);
11734 }
96408a79
SA
11735 }
11736 }
11737 else
11738 complaint (&symfile_complaints,
11739 _("DW_TAG_GNU_call_site DW_AT_GNU_call_site_target is neither "
11740 "block nor reference, for DIE 0x%x [in module %s]"),
4262abfb 11741 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11742
11743 call_site->per_cu = cu->per_cu;
11744
11745 for (child_die = die->child;
11746 child_die && child_die->tag;
11747 child_die = sibling_die (child_die))
11748 {
96408a79 11749 struct call_site_parameter *parameter;
1788b2d3 11750 struct attribute *loc, *origin;
96408a79
SA
11751
11752 if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11753 {
11754 /* Already printed the complaint above. */
11755 continue;
11756 }
11757
11758 gdb_assert (call_site->parameter_count < nparams);
11759 parameter = &call_site->parameter[call_site->parameter_count];
11760
1788b2d3
JK
11761 /* DW_AT_location specifies the register number or DW_AT_abstract_origin
11762 specifies DW_TAG_formal_parameter. Value of the data assumed for the
11763 register is contained in DW_AT_GNU_call_site_value. */
96408a79 11764
24c5c679 11765 loc = dwarf2_attr (child_die, DW_AT_location, cu);
1788b2d3 11766 origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
7771576e 11767 if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
1788b2d3
JK
11768 {
11769 sect_offset offset;
11770
11771 parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
11772 offset = dwarf2_get_ref_die_offset (origin);
d76b7dbc
JK
11773 if (!offset_in_cu_p (&cu->header, offset))
11774 {
11775 /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
11776 binding can be done only inside one CU. Such referenced DIE
11777 therefore cannot be even moved to DW_TAG_partial_unit. */
11778 complaint (&symfile_complaints,
11779 _("DW_AT_abstract_origin offset is not in CU for "
11780 "DW_TAG_GNU_call_site child DIE 0x%x "
11781 "[in module %s]"),
4262abfb 11782 child_die->offset.sect_off, objfile_name (objfile));
d76b7dbc
JK
11783 continue;
11784 }
1788b2d3
JK
11785 parameter->u.param_offset.cu_off = (offset.sect_off
11786 - cu->header.offset.sect_off);
11787 }
11788 else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
96408a79
SA
11789 {
11790 complaint (&symfile_complaints,
11791 _("No DW_FORM_block* DW_AT_location for "
11792 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11793 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11794 continue;
11795 }
24c5c679 11796 else
96408a79 11797 {
24c5c679
JK
11798 parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
11799 (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
11800 if (parameter->u.dwarf_reg != -1)
11801 parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
11802 else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
11803 &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
11804 &parameter->u.fb_offset))
11805 parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
11806 else
11807 {
11808 complaint (&symfile_complaints,
11809 _("Only single DW_OP_reg or DW_OP_fbreg is supported "
11810 "for DW_FORM_block* DW_AT_location is supported for "
11811 "DW_TAG_GNU_call_site child DIE 0x%x "
11812 "[in module %s]"),
4262abfb 11813 child_die->offset.sect_off, objfile_name (objfile));
24c5c679
JK
11814 continue;
11815 }
96408a79
SA
11816 }
11817
11818 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
11819 if (!attr_form_is_block (attr))
11820 {
11821 complaint (&symfile_complaints,
11822 _("No DW_FORM_block* DW_AT_GNU_call_site_value for "
11823 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11824 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11825 continue;
11826 }
11827 parameter->value = DW_BLOCK (attr)->data;
11828 parameter->value_size = DW_BLOCK (attr)->size;
11829
11830 /* Parameters are not pre-cleared by memset above. */
11831 parameter->data_value = NULL;
11832 parameter->data_value_size = 0;
11833 call_site->parameter_count++;
11834
11835 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
11836 if (attr)
11837 {
11838 if (!attr_form_is_block (attr))
11839 complaint (&symfile_complaints,
11840 _("No DW_FORM_block* DW_AT_GNU_call_site_data_value for "
11841 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11842 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11843 else
11844 {
11845 parameter->data_value = DW_BLOCK (attr)->data;
11846 parameter->data_value_size = DW_BLOCK (attr)->size;
11847 }
11848 }
11849 }
11850}
11851
43039443 11852/* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
ff013f42
JK
11853 Return 1 if the attributes are present and valid, otherwise, return 0.
11854 If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'. */
43039443
JK
11855
11856static int
11857dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
ff013f42
JK
11858 CORE_ADDR *high_return, struct dwarf2_cu *cu,
11859 struct partial_symtab *ranges_pst)
43039443
JK
11860{
11861 struct objfile *objfile = cu->objfile;
3e29f34a 11862 struct gdbarch *gdbarch = get_objfile_arch (objfile);
43039443
JK
11863 struct comp_unit_head *cu_header = &cu->header;
11864 bfd *obfd = objfile->obfd;
11865 unsigned int addr_size = cu_header->addr_size;
11866 CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
11867 /* Base address selection entry. */
11868 CORE_ADDR base;
11869 int found_base;
11870 unsigned int dummy;
d521ce57 11871 const gdb_byte *buffer;
43039443
JK
11872 CORE_ADDR marker;
11873 int low_set;
11874 CORE_ADDR low = 0;
11875 CORE_ADDR high = 0;
ff013f42 11876 CORE_ADDR baseaddr;
43039443 11877
d00adf39
DE
11878 found_base = cu->base_known;
11879 base = cu->base_address;
43039443 11880
be391dca 11881 dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
dce234bc 11882 if (offset >= dwarf2_per_objfile->ranges.size)
43039443
JK
11883 {
11884 complaint (&symfile_complaints,
11885 _("Offset %d out of bounds for DW_AT_ranges attribute"),
11886 offset);
11887 return 0;
11888 }
dce234bc 11889 buffer = dwarf2_per_objfile->ranges.buffer + offset;
43039443
JK
11890
11891 /* Read in the largest possible address. */
11892 marker = read_address (obfd, buffer, cu, &dummy);
11893 if ((marker & mask) == mask)
11894 {
11895 /* If we found the largest possible address, then
11896 read the base address. */
11897 base = read_address (obfd, buffer + addr_size, cu, &dummy);
11898 buffer += 2 * addr_size;
11899 offset += 2 * addr_size;
11900 found_base = 1;
11901 }
11902
11903 low_set = 0;
11904
e7030f15 11905 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
ff013f42 11906
43039443
JK
11907 while (1)
11908 {
11909 CORE_ADDR range_beginning, range_end;
11910
11911 range_beginning = read_address (obfd, buffer, cu, &dummy);
11912 buffer += addr_size;
11913 range_end = read_address (obfd, buffer, cu, &dummy);
11914 buffer += addr_size;
11915 offset += 2 * addr_size;
11916
11917 /* An end of list marker is a pair of zero addresses. */
11918 if (range_beginning == 0 && range_end == 0)
11919 /* Found the end of list entry. */
11920 break;
11921
11922 /* Each base address selection entry is a pair of 2 values.
11923 The first is the largest possible address, the second is
11924 the base address. Check for a base address here. */
11925 if ((range_beginning & mask) == mask)
11926 {
11927 /* If we found the largest possible address, then
11928 read the base address. */
11929 base = read_address (obfd, buffer + addr_size, cu, &dummy);
11930 found_base = 1;
11931 continue;
11932 }
11933
11934 if (!found_base)
11935 {
11936 /* We have no valid base address for the ranges
11937 data. */
11938 complaint (&symfile_complaints,
11939 _("Invalid .debug_ranges data (no base address)"));
11940 return 0;
11941 }
11942
9277c30c
UW
11943 if (range_beginning > range_end)
11944 {
11945 /* Inverted range entries are invalid. */
11946 complaint (&symfile_complaints,
11947 _("Invalid .debug_ranges data (inverted range)"));
11948 return 0;
11949 }
11950
11951 /* Empty range entries have no effect. */
11952 if (range_beginning == range_end)
11953 continue;
11954
43039443
JK
11955 range_beginning += base;
11956 range_end += base;
11957
01093045
DE
11958 /* A not-uncommon case of bad debug info.
11959 Don't pollute the addrmap with bad data. */
11960 if (range_beginning + baseaddr == 0
11961 && !dwarf2_per_objfile->has_section_at_zero)
11962 {
11963 complaint (&symfile_complaints,
11964 _(".debug_ranges entry has start address of zero"
4262abfb 11965 " [in module %s]"), objfile_name (objfile));
01093045
DE
11966 continue;
11967 }
11968
9277c30c 11969 if (ranges_pst != NULL)
3e29f34a
MR
11970 {
11971 CORE_ADDR lowpc;
11972 CORE_ADDR highpc;
11973
11974 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
11975 range_beginning + baseaddr);
11976 highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
11977 range_end + baseaddr);
11978 addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
11979 ranges_pst);
11980 }
ff013f42 11981
43039443
JK
11982 /* FIXME: This is recording everything as a low-high
11983 segment of consecutive addresses. We should have a
11984 data structure for discontiguous block ranges
11985 instead. */
11986 if (! low_set)
11987 {
11988 low = range_beginning;
11989 high = range_end;
11990 low_set = 1;
11991 }
11992 else
11993 {
11994 if (range_beginning < low)
11995 low = range_beginning;
11996 if (range_end > high)
11997 high = range_end;
11998 }
11999 }
12000
12001 if (! low_set)
12002 /* If the first entry is an end-of-list marker, the range
12003 describes an empty scope, i.e. no instructions. */
12004 return 0;
12005
12006 if (low_return)
12007 *low_return = low;
12008 if (high_return)
12009 *high_return = high;
12010 return 1;
12011}
12012
af34e669
DJ
12013/* Get low and high pc attributes from a die. Return 1 if the attributes
12014 are present and valid, otherwise, return 0. Return -1 if the range is
12015 discontinuous, i.e. derived from DW_AT_ranges information. */
380bca97 12016
c906108c 12017static int
af34e669 12018dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
d85a05f0
DJ
12019 CORE_ADDR *highpc, struct dwarf2_cu *cu,
12020 struct partial_symtab *pst)
c906108c
SS
12021{
12022 struct attribute *attr;
91da1414 12023 struct attribute *attr_high;
af34e669
DJ
12024 CORE_ADDR low = 0;
12025 CORE_ADDR high = 0;
12026 int ret = 0;
c906108c 12027
91da1414
MW
12028 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
12029 if (attr_high)
af34e669 12030 {
e142c38c 12031 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
af34e669 12032 if (attr)
91da1414 12033 {
31aa7e4e
JB
12034 low = attr_value_as_address (attr);
12035 high = attr_value_as_address (attr_high);
12036 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12037 high += low;
91da1414 12038 }
af34e669
DJ
12039 else
12040 /* Found high w/o low attribute. */
12041 return 0;
12042
12043 /* Found consecutive range of addresses. */
12044 ret = 1;
12045 }
c906108c 12046 else
af34e669 12047 {
e142c38c 12048 attr = dwarf2_attr (die, DW_AT_ranges, cu);
af34e669
DJ
12049 if (attr != NULL)
12050 {
ab435259
DE
12051 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12052 We take advantage of the fact that DW_AT_ranges does not appear
12053 in DW_TAG_compile_unit of DWO files. */
12054 int need_ranges_base = die->tag != DW_TAG_compile_unit;
12055 unsigned int ranges_offset = (DW_UNSND (attr)
12056 + (need_ranges_base
12057 ? cu->ranges_base
12058 : 0));
2e3cf129 12059
af34e669 12060 /* Value of the DW_AT_ranges attribute is the offset in the
a604369a 12061 .debug_ranges section. */
2e3cf129 12062 if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
af34e669 12063 return 0;
43039443 12064 /* Found discontinuous range of addresses. */
af34e669
DJ
12065 ret = -1;
12066 }
12067 }
c906108c 12068
9373cf26
JK
12069 /* read_partial_die has also the strict LOW < HIGH requirement. */
12070 if (high <= low)
c906108c
SS
12071 return 0;
12072
12073 /* When using the GNU linker, .gnu.linkonce. sections are used to
12074 eliminate duplicate copies of functions and vtables and such.
12075 The linker will arbitrarily choose one and discard the others.
12076 The AT_*_pc values for such functions refer to local labels in
12077 these sections. If the section from that file was discarded, the
12078 labels are not in the output, so the relocs get a value of 0.
12079 If this is a discarded function, mark the pc bounds as invalid,
12080 so that GDB will ignore it. */
72dca2f5 12081 if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
c906108c
SS
12082 return 0;
12083
12084 *lowpc = low;
96408a79
SA
12085 if (highpc)
12086 *highpc = high;
af34e669 12087 return ret;
c906108c
SS
12088}
12089
b084d499
JB
12090/* Assuming that DIE represents a subprogram DIE or a lexical block, get
12091 its low and high PC addresses. Do nothing if these addresses could not
12092 be determined. Otherwise, set LOWPC to the low address if it is smaller,
12093 and HIGHPC to the high address if greater than HIGHPC. */
12094
12095static void
12096dwarf2_get_subprogram_pc_bounds (struct die_info *die,
12097 CORE_ADDR *lowpc, CORE_ADDR *highpc,
12098 struct dwarf2_cu *cu)
12099{
12100 CORE_ADDR low, high;
12101 struct die_info *child = die->child;
12102
d85a05f0 12103 if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL))
b084d499
JB
12104 {
12105 *lowpc = min (*lowpc, low);
12106 *highpc = max (*highpc, high);
12107 }
12108
12109 /* If the language does not allow nested subprograms (either inside
12110 subprograms or lexical blocks), we're done. */
12111 if (cu->language != language_ada)
12112 return;
6e70227d 12113
b084d499
JB
12114 /* Check all the children of the given DIE. If it contains nested
12115 subprograms, then check their pc bounds. Likewise, we need to
12116 check lexical blocks as well, as they may also contain subprogram
12117 definitions. */
12118 while (child && child->tag)
12119 {
12120 if (child->tag == DW_TAG_subprogram
12121 || child->tag == DW_TAG_lexical_block)
12122 dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
12123 child = sibling_die (child);
12124 }
12125}
12126
fae299cd
DC
12127/* Get the low and high pc's represented by the scope DIE, and store
12128 them in *LOWPC and *HIGHPC. If the correct values can't be
12129 determined, set *LOWPC to -1 and *HIGHPC to 0. */
12130
12131static void
12132get_scope_pc_bounds (struct die_info *die,
12133 CORE_ADDR *lowpc, CORE_ADDR *highpc,
12134 struct dwarf2_cu *cu)
12135{
12136 CORE_ADDR best_low = (CORE_ADDR) -1;
12137 CORE_ADDR best_high = (CORE_ADDR) 0;
12138 CORE_ADDR current_low, current_high;
12139
d85a05f0 12140 if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL))
fae299cd
DC
12141 {
12142 best_low = current_low;
12143 best_high = current_high;
12144 }
12145 else
12146 {
12147 struct die_info *child = die->child;
12148
12149 while (child && child->tag)
12150 {
12151 switch (child->tag) {
12152 case DW_TAG_subprogram:
b084d499 12153 dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
fae299cd
DC
12154 break;
12155 case DW_TAG_namespace:
f55ee35c 12156 case DW_TAG_module:
fae299cd
DC
12157 /* FIXME: carlton/2004-01-16: Should we do this for
12158 DW_TAG_class_type/DW_TAG_structure_type, too? I think
12159 that current GCC's always emit the DIEs corresponding
12160 to definitions of methods of classes as children of a
12161 DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
12162 the DIEs giving the declarations, which could be
12163 anywhere). But I don't see any reason why the
12164 standards says that they have to be there. */
12165 get_scope_pc_bounds (child, &current_low, &current_high, cu);
12166
12167 if (current_low != ((CORE_ADDR) -1))
12168 {
12169 best_low = min (best_low, current_low);
12170 best_high = max (best_high, current_high);
12171 }
12172 break;
12173 default:
0963b4bd 12174 /* Ignore. */
fae299cd
DC
12175 break;
12176 }
12177
12178 child = sibling_die (child);
12179 }
12180 }
12181
12182 *lowpc = best_low;
12183 *highpc = best_high;
12184}
12185
801e3a5b
JB
12186/* Record the address ranges for BLOCK, offset by BASEADDR, as given
12187 in DIE. */
380bca97 12188
801e3a5b
JB
12189static void
12190dwarf2_record_block_ranges (struct die_info *die, struct block *block,
12191 CORE_ADDR baseaddr, struct dwarf2_cu *cu)
12192{
bb5ed363 12193 struct objfile *objfile = cu->objfile;
3e29f34a 12194 struct gdbarch *gdbarch = get_objfile_arch (objfile);
801e3a5b 12195 struct attribute *attr;
91da1414 12196 struct attribute *attr_high;
801e3a5b 12197
91da1414
MW
12198 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
12199 if (attr_high)
801e3a5b 12200 {
801e3a5b
JB
12201 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
12202 if (attr)
12203 {
31aa7e4e
JB
12204 CORE_ADDR low = attr_value_as_address (attr);
12205 CORE_ADDR high = attr_value_as_address (attr_high);
12206
12207 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12208 high += low;
9a619af0 12209
3e29f34a
MR
12210 low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
12211 high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
12212 record_block_range (block, low, high - 1);
801e3a5b
JB
12213 }
12214 }
12215
12216 attr = dwarf2_attr (die, DW_AT_ranges, cu);
12217 if (attr)
12218 {
bb5ed363 12219 bfd *obfd = objfile->obfd;
ab435259
DE
12220 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12221 We take advantage of the fact that DW_AT_ranges does not appear
12222 in DW_TAG_compile_unit of DWO files. */
12223 int need_ranges_base = die->tag != DW_TAG_compile_unit;
801e3a5b
JB
12224
12225 /* The value of the DW_AT_ranges attribute is the offset of the
12226 address range list in the .debug_ranges section. */
ab435259
DE
12227 unsigned long offset = (DW_UNSND (attr)
12228 + (need_ranges_base ? cu->ranges_base : 0));
d62bfeaf 12229 const gdb_byte *buffer;
801e3a5b
JB
12230
12231 /* For some target architectures, but not others, the
12232 read_address function sign-extends the addresses it returns.
12233 To recognize base address selection entries, we need a
12234 mask. */
12235 unsigned int addr_size = cu->header.addr_size;
12236 CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
12237
12238 /* The base address, to which the next pair is relative. Note
12239 that this 'base' is a DWARF concept: most entries in a range
12240 list are relative, to reduce the number of relocs against the
12241 debugging information. This is separate from this function's
12242 'baseaddr' argument, which GDB uses to relocate debugging
12243 information from a shared library based on the address at
12244 which the library was loaded. */
d00adf39
DE
12245 CORE_ADDR base = cu->base_address;
12246 int base_known = cu->base_known;
801e3a5b 12247
d62bfeaf 12248 dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
dce234bc 12249 if (offset >= dwarf2_per_objfile->ranges.size)
801e3a5b
JB
12250 {
12251 complaint (&symfile_complaints,
12252 _("Offset %lu out of bounds for DW_AT_ranges attribute"),
12253 offset);
12254 return;
12255 }
d62bfeaf 12256 buffer = dwarf2_per_objfile->ranges.buffer + offset;
801e3a5b
JB
12257
12258 for (;;)
12259 {
12260 unsigned int bytes_read;
12261 CORE_ADDR start, end;
12262
12263 start = read_address (obfd, buffer, cu, &bytes_read);
12264 buffer += bytes_read;
12265 end = read_address (obfd, buffer, cu, &bytes_read);
12266 buffer += bytes_read;
12267
12268 /* Did we find the end of the range list? */
12269 if (start == 0 && end == 0)
12270 break;
12271
12272 /* Did we find a base address selection entry? */
12273 else if ((start & base_select_mask) == base_select_mask)
12274 {
12275 base = end;
12276 base_known = 1;
12277 }
12278
12279 /* We found an ordinary address range. */
12280 else
12281 {
12282 if (!base_known)
12283 {
12284 complaint (&symfile_complaints,
3e43a32a
MS
12285 _("Invalid .debug_ranges data "
12286 "(no base address)"));
801e3a5b
JB
12287 return;
12288 }
12289
9277c30c
UW
12290 if (start > end)
12291 {
12292 /* Inverted range entries are invalid. */
12293 complaint (&symfile_complaints,
12294 _("Invalid .debug_ranges data "
12295 "(inverted range)"));
12296 return;
12297 }
12298
12299 /* Empty range entries have no effect. */
12300 if (start == end)
12301 continue;
12302
01093045
DE
12303 start += base + baseaddr;
12304 end += base + baseaddr;
12305
12306 /* A not-uncommon case of bad debug info.
12307 Don't pollute the addrmap with bad data. */
12308 if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
12309 {
12310 complaint (&symfile_complaints,
12311 _(".debug_ranges entry has start address of zero"
4262abfb 12312 " [in module %s]"), objfile_name (objfile));
01093045
DE
12313 continue;
12314 }
12315
3e29f34a
MR
12316 start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
12317 end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
01093045 12318 record_block_range (block, start, end - 1);
801e3a5b
JB
12319 }
12320 }
12321 }
12322}
12323
685b1105
JK
12324/* Check whether the producer field indicates either of GCC < 4.6, or the
12325 Intel C/C++ compiler, and cache the result in CU. */
60d5a603 12326
685b1105
JK
12327static void
12328check_producer (struct dwarf2_cu *cu)
60d5a603
JK
12329{
12330 const char *cs;
38360086 12331 int major, minor;
60d5a603
JK
12332
12333 if (cu->producer == NULL)
12334 {
12335 /* For unknown compilers expect their behavior is DWARF version
12336 compliant.
12337
12338 GCC started to support .debug_types sections by -gdwarf-4 since
12339 gcc-4.5.x. As the .debug_types sections are missing DW_AT_producer
12340 for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
12341 combination. gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
12342 interpreted incorrectly by GDB now - GCC PR debug/48229. */
60d5a603 12343 }
b1ffba5a 12344 else if (producer_is_gcc (cu->producer, &major, &minor))
60d5a603 12345 {
38360086
MW
12346 cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
12347 cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
685b1105 12348 }
61012eef 12349 else if (startswith (cu->producer, "Intel(R) C"))
685b1105
JK
12350 cu->producer_is_icc = 1;
12351 else
12352 {
12353 /* For other non-GCC compilers, expect their behavior is DWARF version
12354 compliant. */
60d5a603
JK
12355 }
12356
ba919b58 12357 cu->checked_producer = 1;
685b1105 12358}
ba919b58 12359
685b1105
JK
12360/* Check for GCC PR debug/45124 fix which is not present in any G++ version up
12361 to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
12362 during 4.6.0 experimental. */
12363
12364static int
12365producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
12366{
12367 if (!cu->checked_producer)
12368 check_producer (cu);
12369
12370 return cu->producer_is_gxx_lt_4_6;
60d5a603
JK
12371}
12372
12373/* Return the default accessibility type if it is not overriden by
12374 DW_AT_accessibility. */
12375
12376static enum dwarf_access_attribute
12377dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
12378{
12379 if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
12380 {
12381 /* The default DWARF 2 accessibility for members is public, the default
12382 accessibility for inheritance is private. */
12383
12384 if (die->tag != DW_TAG_inheritance)
12385 return DW_ACCESS_public;
12386 else
12387 return DW_ACCESS_private;
12388 }
12389 else
12390 {
12391 /* DWARF 3+ defines the default accessibility a different way. The same
12392 rules apply now for DW_TAG_inheritance as for the members and it only
12393 depends on the container kind. */
12394
12395 if (die->parent->tag == DW_TAG_class_type)
12396 return DW_ACCESS_private;
12397 else
12398 return DW_ACCESS_public;
12399 }
12400}
12401
74ac6d43
TT
12402/* Look for DW_AT_data_member_location. Set *OFFSET to the byte
12403 offset. If the attribute was not found return 0, otherwise return
12404 1. If it was found but could not properly be handled, set *OFFSET
12405 to 0. */
12406
12407static int
12408handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
12409 LONGEST *offset)
12410{
12411 struct attribute *attr;
12412
12413 attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
12414 if (attr != NULL)
12415 {
12416 *offset = 0;
12417
12418 /* Note that we do not check for a section offset first here.
12419 This is because DW_AT_data_member_location is new in DWARF 4,
12420 so if we see it, we can assume that a constant form is really
12421 a constant and not a section offset. */
12422 if (attr_form_is_constant (attr))
12423 *offset = dwarf2_get_attr_constant_value (attr, 0);
12424 else if (attr_form_is_section_offset (attr))
12425 dwarf2_complex_location_expr_complaint ();
12426 else if (attr_form_is_block (attr))
12427 *offset = decode_locdesc (DW_BLOCK (attr), cu);
12428 else
12429 dwarf2_complex_location_expr_complaint ();
12430
12431 return 1;
12432 }
12433
12434 return 0;
12435}
12436
c906108c
SS
12437/* Add an aggregate field to the field list. */
12438
12439static void
107d2387 12440dwarf2_add_field (struct field_info *fip, struct die_info *die,
e7c27a73 12441 struct dwarf2_cu *cu)
6e70227d 12442{
e7c27a73 12443 struct objfile *objfile = cu->objfile;
5e2b427d 12444 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
12445 struct nextfield *new_field;
12446 struct attribute *attr;
12447 struct field *fp;
15d034d0 12448 const char *fieldname = "";
c906108c
SS
12449
12450 /* Allocate a new field list entry and link it in. */
8d749320 12451 new_field = XNEW (struct nextfield);
b8c9b27d 12452 make_cleanup (xfree, new_field);
c906108c 12453 memset (new_field, 0, sizeof (struct nextfield));
7d0ccb61
DJ
12454
12455 if (die->tag == DW_TAG_inheritance)
12456 {
12457 new_field->next = fip->baseclasses;
12458 fip->baseclasses = new_field;
12459 }
12460 else
12461 {
12462 new_field->next = fip->fields;
12463 fip->fields = new_field;
12464 }
c906108c
SS
12465 fip->nfields++;
12466
e142c38c 12467 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c
SS
12468 if (attr)
12469 new_field->accessibility = DW_UNSND (attr);
60d5a603
JK
12470 else
12471 new_field->accessibility = dwarf2_default_access_attribute (die, cu);
c906108c
SS
12472 if (new_field->accessibility != DW_ACCESS_public)
12473 fip->non_public_fields = 1;
60d5a603 12474
e142c38c 12475 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
c906108c
SS
12476 if (attr)
12477 new_field->virtuality = DW_UNSND (attr);
60d5a603
JK
12478 else
12479 new_field->virtuality = DW_VIRTUALITY_none;
c906108c
SS
12480
12481 fp = &new_field->field;
a9a9bd0f 12482
e142c38c 12483 if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
c906108c 12484 {
74ac6d43
TT
12485 LONGEST offset;
12486
a9a9bd0f 12487 /* Data member other than a C++ static data member. */
6e70227d 12488
c906108c 12489 /* Get type of field. */
e7c27a73 12490 fp->type = die_type (die, cu);
c906108c 12491
d6a843b5 12492 SET_FIELD_BITPOS (*fp, 0);
01ad7f36 12493
c906108c 12494 /* Get bit size of field (zero if none). */
e142c38c 12495 attr = dwarf2_attr (die, DW_AT_bit_size, cu);
c906108c
SS
12496 if (attr)
12497 {
12498 FIELD_BITSIZE (*fp) = DW_UNSND (attr);
12499 }
12500 else
12501 {
12502 FIELD_BITSIZE (*fp) = 0;
12503 }
12504
12505 /* Get bit offset of field. */
74ac6d43
TT
12506 if (handle_data_member_location (die, cu, &offset))
12507 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
e142c38c 12508 attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
c906108c
SS
12509 if (attr)
12510 {
5e2b427d 12511 if (gdbarch_bits_big_endian (gdbarch))
c906108c
SS
12512 {
12513 /* For big endian bits, the DW_AT_bit_offset gives the
c5aa993b
JM
12514 additional bit offset from the MSB of the containing
12515 anonymous object to the MSB of the field. We don't
12516 have to do anything special since we don't need to
12517 know the size of the anonymous object. */
f41f5e61 12518 SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
c906108c
SS
12519 }
12520 else
12521 {
12522 /* For little endian bits, compute the bit offset to the
c5aa993b
JM
12523 MSB of the anonymous object, subtract off the number of
12524 bits from the MSB of the field to the MSB of the
12525 object, and then subtract off the number of bits of
12526 the field itself. The result is the bit offset of
12527 the LSB of the field. */
c906108c
SS
12528 int anonymous_size;
12529 int bit_offset = DW_UNSND (attr);
12530
e142c38c 12531 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
12532 if (attr)
12533 {
12534 /* The size of the anonymous object containing
12535 the bit field is explicit, so use the
12536 indicated size (in bytes). */
12537 anonymous_size = DW_UNSND (attr);
12538 }
12539 else
12540 {
12541 /* The size of the anonymous object containing
12542 the bit field must be inferred from the type
12543 attribute of the data member containing the
12544 bit field. */
12545 anonymous_size = TYPE_LENGTH (fp->type);
12546 }
f41f5e61
PA
12547 SET_FIELD_BITPOS (*fp,
12548 (FIELD_BITPOS (*fp)
12549 + anonymous_size * bits_per_byte
12550 - bit_offset - FIELD_BITSIZE (*fp)));
c906108c
SS
12551 }
12552 }
12553
12554 /* Get name of field. */
39cbfefa
DJ
12555 fieldname = dwarf2_name (die, cu);
12556 if (fieldname == NULL)
12557 fieldname = "";
d8151005
DJ
12558
12559 /* The name is already allocated along with this objfile, so we don't
12560 need to duplicate it for the type. */
12561 fp->name = fieldname;
c906108c
SS
12562
12563 /* Change accessibility for artificial fields (e.g. virtual table
c5aa993b 12564 pointer or virtual base class pointer) to private. */
e142c38c 12565 if (dwarf2_attr (die, DW_AT_artificial, cu))
c906108c 12566 {
d48cc9dd 12567 FIELD_ARTIFICIAL (*fp) = 1;
c906108c
SS
12568 new_field->accessibility = DW_ACCESS_private;
12569 fip->non_public_fields = 1;
12570 }
12571 }
a9a9bd0f 12572 else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
c906108c 12573 {
a9a9bd0f
DC
12574 /* C++ static member. */
12575
12576 /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
12577 is a declaration, but all versions of G++ as of this writing
12578 (so through at least 3.2.1) incorrectly generate
12579 DW_TAG_variable tags. */
6e70227d 12580
ff355380 12581 const char *physname;
c906108c 12582
a9a9bd0f 12583 /* Get name of field. */
39cbfefa
DJ
12584 fieldname = dwarf2_name (die, cu);
12585 if (fieldname == NULL)
c906108c
SS
12586 return;
12587
254e6b9e 12588 attr = dwarf2_attr (die, DW_AT_const_value, cu);
3863f96c
DE
12589 if (attr
12590 /* Only create a symbol if this is an external value.
12591 new_symbol checks this and puts the value in the global symbol
12592 table, which we want. If it is not external, new_symbol
12593 will try to put the value in cu->list_in_scope which is wrong. */
12594 && dwarf2_flag_true_p (die, DW_AT_external, cu))
254e6b9e
DE
12595 {
12596 /* A static const member, not much different than an enum as far as
12597 we're concerned, except that we can support more types. */
12598 new_symbol (die, NULL, cu);
12599 }
12600
2df3850c 12601 /* Get physical name. */
ff355380 12602 physname = dwarf2_physname (fieldname, die, cu);
c906108c 12603
d8151005
DJ
12604 /* The name is already allocated along with this objfile, so we don't
12605 need to duplicate it for the type. */
12606 SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
e7c27a73 12607 FIELD_TYPE (*fp) = die_type (die, cu);
d8151005 12608 FIELD_NAME (*fp) = fieldname;
c906108c
SS
12609 }
12610 else if (die->tag == DW_TAG_inheritance)
12611 {
74ac6d43 12612 LONGEST offset;
d4b96c9a 12613
74ac6d43
TT
12614 /* C++ base class field. */
12615 if (handle_data_member_location (die, cu, &offset))
12616 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
c906108c 12617 FIELD_BITSIZE (*fp) = 0;
e7c27a73 12618 FIELD_TYPE (*fp) = die_type (die, cu);
c906108c
SS
12619 FIELD_NAME (*fp) = type_name_no_tag (fp->type);
12620 fip->nbaseclasses++;
12621 }
12622}
12623
98751a41
JK
12624/* Add a typedef defined in the scope of the FIP's class. */
12625
12626static void
12627dwarf2_add_typedef (struct field_info *fip, struct die_info *die,
12628 struct dwarf2_cu *cu)
6e70227d 12629{
98751a41 12630 struct objfile *objfile = cu->objfile;
98751a41
JK
12631 struct typedef_field_list *new_field;
12632 struct attribute *attr;
12633 struct typedef_field *fp;
12634 char *fieldname = "";
12635
12636 /* Allocate a new field list entry and link it in. */
8d749320 12637 new_field = XCNEW (struct typedef_field_list);
98751a41
JK
12638 make_cleanup (xfree, new_field);
12639
12640 gdb_assert (die->tag == DW_TAG_typedef);
12641
12642 fp = &new_field->field;
12643
12644 /* Get name of field. */
12645 fp->name = dwarf2_name (die, cu);
12646 if (fp->name == NULL)
12647 return;
12648
12649 fp->type = read_type_die (die, cu);
12650
12651 new_field->next = fip->typedef_field_list;
12652 fip->typedef_field_list = new_field;
12653 fip->typedef_field_list_count++;
12654}
12655
c906108c
SS
12656/* Create the vector of fields, and attach it to the type. */
12657
12658static void
fba45db2 12659dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 12660 struct dwarf2_cu *cu)
c906108c
SS
12661{
12662 int nfields = fip->nfields;
12663
12664 /* Record the field count, allocate space for the array of fields,
12665 and create blank accessibility bitfields if necessary. */
12666 TYPE_NFIELDS (type) = nfields;
12667 TYPE_FIELDS (type) = (struct field *)
12668 TYPE_ALLOC (type, sizeof (struct field) * nfields);
12669 memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
12670
b4ba55a1 12671 if (fip->non_public_fields && cu->language != language_ada)
c906108c
SS
12672 {
12673 ALLOCATE_CPLUS_STRUCT_TYPE (type);
12674
12675 TYPE_FIELD_PRIVATE_BITS (type) =
12676 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12677 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
12678
12679 TYPE_FIELD_PROTECTED_BITS (type) =
12680 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12681 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
12682
774b6a14
TT
12683 TYPE_FIELD_IGNORE_BITS (type) =
12684 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12685 B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
c906108c
SS
12686 }
12687
12688 /* If the type has baseclasses, allocate and clear a bit vector for
12689 TYPE_FIELD_VIRTUAL_BITS. */
b4ba55a1 12690 if (fip->nbaseclasses && cu->language != language_ada)
c906108c
SS
12691 {
12692 int num_bytes = B_BYTES (fip->nbaseclasses);
fe1b8b76 12693 unsigned char *pointer;
c906108c
SS
12694
12695 ALLOCATE_CPLUS_STRUCT_TYPE (type);
fe1b8b76
JB
12696 pointer = TYPE_ALLOC (type, num_bytes);
12697 TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
c906108c
SS
12698 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
12699 TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
12700 }
12701
3e43a32a
MS
12702 /* Copy the saved-up fields into the field vector. Start from the head of
12703 the list, adding to the tail of the field array, so that they end up in
12704 the same order in the array in which they were added to the list. */
c906108c
SS
12705 while (nfields-- > 0)
12706 {
7d0ccb61
DJ
12707 struct nextfield *fieldp;
12708
12709 if (fip->fields)
12710 {
12711 fieldp = fip->fields;
12712 fip->fields = fieldp->next;
12713 }
12714 else
12715 {
12716 fieldp = fip->baseclasses;
12717 fip->baseclasses = fieldp->next;
12718 }
12719
12720 TYPE_FIELD (type, nfields) = fieldp->field;
12721 switch (fieldp->accessibility)
c906108c 12722 {
c5aa993b 12723 case DW_ACCESS_private:
b4ba55a1
JB
12724 if (cu->language != language_ada)
12725 SET_TYPE_FIELD_PRIVATE (type, nfields);
c5aa993b 12726 break;
c906108c 12727
c5aa993b 12728 case DW_ACCESS_protected:
b4ba55a1
JB
12729 if (cu->language != language_ada)
12730 SET_TYPE_FIELD_PROTECTED (type, nfields);
c5aa993b 12731 break;
c906108c 12732
c5aa993b
JM
12733 case DW_ACCESS_public:
12734 break;
c906108c 12735
c5aa993b
JM
12736 default:
12737 /* Unknown accessibility. Complain and treat it as public. */
12738 {
e2e0b3e5 12739 complaint (&symfile_complaints, _("unsupported accessibility %d"),
7d0ccb61 12740 fieldp->accessibility);
c5aa993b
JM
12741 }
12742 break;
c906108c
SS
12743 }
12744 if (nfields < fip->nbaseclasses)
12745 {
7d0ccb61 12746 switch (fieldp->virtuality)
c906108c 12747 {
c5aa993b
JM
12748 case DW_VIRTUALITY_virtual:
12749 case DW_VIRTUALITY_pure_virtual:
b4ba55a1 12750 if (cu->language == language_ada)
a73c6dcd 12751 error (_("unexpected virtuality in component of Ada type"));
c5aa993b
JM
12752 SET_TYPE_FIELD_VIRTUAL (type, nfields);
12753 break;
c906108c
SS
12754 }
12755 }
c906108c
SS
12756 }
12757}
12758
7d27a96d
TT
12759/* Return true if this member function is a constructor, false
12760 otherwise. */
12761
12762static int
12763dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
12764{
12765 const char *fieldname;
fe978cb0 12766 const char *type_name;
7d27a96d
TT
12767 int len;
12768
12769 if (die->parent == NULL)
12770 return 0;
12771
12772 if (die->parent->tag != DW_TAG_structure_type
12773 && die->parent->tag != DW_TAG_union_type
12774 && die->parent->tag != DW_TAG_class_type)
12775 return 0;
12776
12777 fieldname = dwarf2_name (die, cu);
fe978cb0
PA
12778 type_name = dwarf2_name (die->parent, cu);
12779 if (fieldname == NULL || type_name == NULL)
7d27a96d
TT
12780 return 0;
12781
12782 len = strlen (fieldname);
fe978cb0
PA
12783 return (strncmp (fieldname, type_name, len) == 0
12784 && (type_name[len] == '\0' || type_name[len] == '<'));
7d27a96d
TT
12785}
12786
c906108c
SS
12787/* Add a member function to the proper fieldlist. */
12788
12789static void
107d2387 12790dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
e7c27a73 12791 struct type *type, struct dwarf2_cu *cu)
c906108c 12792{
e7c27a73 12793 struct objfile *objfile = cu->objfile;
c906108c
SS
12794 struct attribute *attr;
12795 struct fnfieldlist *flp;
12796 int i;
12797 struct fn_field *fnp;
15d034d0 12798 const char *fieldname;
c906108c 12799 struct nextfnfield *new_fnfield;
f792889a 12800 struct type *this_type;
60d5a603 12801 enum dwarf_access_attribute accessibility;
c906108c 12802
b4ba55a1 12803 if (cu->language == language_ada)
a73c6dcd 12804 error (_("unexpected member function in Ada type"));
b4ba55a1 12805
2df3850c 12806 /* Get name of member function. */
39cbfefa
DJ
12807 fieldname = dwarf2_name (die, cu);
12808 if (fieldname == NULL)
2df3850c 12809 return;
c906108c 12810
c906108c
SS
12811 /* Look up member function name in fieldlist. */
12812 for (i = 0; i < fip->nfnfields; i++)
12813 {
27bfe10e 12814 if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
c906108c
SS
12815 break;
12816 }
12817
12818 /* Create new list element if necessary. */
12819 if (i < fip->nfnfields)
12820 flp = &fip->fnfieldlists[i];
12821 else
12822 {
12823 if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
12824 {
12825 fip->fnfieldlists = (struct fnfieldlist *)
12826 xrealloc (fip->fnfieldlists,
12827 (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
c5aa993b 12828 * sizeof (struct fnfieldlist));
c906108c 12829 if (fip->nfnfields == 0)
c13c43fd 12830 make_cleanup (free_current_contents, &fip->fnfieldlists);
c906108c
SS
12831 }
12832 flp = &fip->fnfieldlists[fip->nfnfields];
12833 flp->name = fieldname;
12834 flp->length = 0;
12835 flp->head = NULL;
3da10d80 12836 i = fip->nfnfields++;
c906108c
SS
12837 }
12838
12839 /* Create a new member function field and chain it to the field list
0963b4bd 12840 entry. */
8d749320 12841 new_fnfield = XNEW (struct nextfnfield);
b8c9b27d 12842 make_cleanup (xfree, new_fnfield);
c906108c
SS
12843 memset (new_fnfield, 0, sizeof (struct nextfnfield));
12844 new_fnfield->next = flp->head;
12845 flp->head = new_fnfield;
12846 flp->length++;
12847
12848 /* Fill in the member function field info. */
12849 fnp = &new_fnfield->fnfield;
3da10d80
KS
12850
12851 /* Delay processing of the physname until later. */
12852 if (cu->language == language_cplus || cu->language == language_java)
12853 {
12854 add_to_method_list (type, i, flp->length - 1, fieldname,
12855 die, cu);
12856 }
12857 else
12858 {
1d06ead6 12859 const char *physname = dwarf2_physname (fieldname, die, cu);
3da10d80
KS
12860 fnp->physname = physname ? physname : "";
12861 }
12862
c906108c 12863 fnp->type = alloc_type (objfile);
f792889a
DJ
12864 this_type = read_type_die (die, cu);
12865 if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
c906108c 12866 {
f792889a 12867 int nparams = TYPE_NFIELDS (this_type);
c906108c 12868
f792889a 12869 /* TYPE is the domain of this method, and THIS_TYPE is the type
e26fb1d7
DC
12870 of the method itself (TYPE_CODE_METHOD). */
12871 smash_to_method_type (fnp->type, type,
f792889a
DJ
12872 TYPE_TARGET_TYPE (this_type),
12873 TYPE_FIELDS (this_type),
12874 TYPE_NFIELDS (this_type),
12875 TYPE_VARARGS (this_type));
c906108c
SS
12876
12877 /* Handle static member functions.
c5aa993b 12878 Dwarf2 has no clean way to discern C++ static and non-static
0963b4bd
MS
12879 member functions. G++ helps GDB by marking the first
12880 parameter for non-static member functions (which is the this
12881 pointer) as artificial. We obtain this information from
12882 read_subroutine_type via TYPE_FIELD_ARTIFICIAL. */
f792889a 12883 if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
c906108c
SS
12884 fnp->voffset = VOFFSET_STATIC;
12885 }
12886 else
e2e0b3e5 12887 complaint (&symfile_complaints, _("member function type missing for '%s'"),
3da10d80 12888 dwarf2_full_name (fieldname, die, cu));
c906108c
SS
12889
12890 /* Get fcontext from DW_AT_containing_type if present. */
e142c38c 12891 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
e7c27a73 12892 fnp->fcontext = die_containing_type (die, cu);
c906108c 12893
3e43a32a
MS
12894 /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
12895 is_volatile is irrelevant, as it is needed by gdb_mangle_name only. */
c906108c
SS
12896
12897 /* Get accessibility. */
e142c38c 12898 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c 12899 if (attr)
aead7601 12900 accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
60d5a603
JK
12901 else
12902 accessibility = dwarf2_default_access_attribute (die, cu);
12903 switch (accessibility)
c906108c 12904 {
60d5a603
JK
12905 case DW_ACCESS_private:
12906 fnp->is_private = 1;
12907 break;
12908 case DW_ACCESS_protected:
12909 fnp->is_protected = 1;
12910 break;
c906108c
SS
12911 }
12912
b02dede2 12913 /* Check for artificial methods. */
e142c38c 12914 attr = dwarf2_attr (die, DW_AT_artificial, cu);
b02dede2
DJ
12915 if (attr && DW_UNSND (attr) != 0)
12916 fnp->is_artificial = 1;
12917
7d27a96d
TT
12918 fnp->is_constructor = dwarf2_is_constructor (die, cu);
12919
0d564a31 12920 /* Get index in virtual function table if it is a virtual member
aec5aa8b
TT
12921 function. For older versions of GCC, this is an offset in the
12922 appropriate virtual table, as specified by DW_AT_containing_type.
12923 For everyone else, it is an expression to be evaluated relative
0d564a31
DJ
12924 to the object address. */
12925
e142c38c 12926 attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
aec5aa8b 12927 if (attr)
8e19ed76 12928 {
aec5aa8b 12929 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
8e19ed76 12930 {
aec5aa8b
TT
12931 if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
12932 {
12933 /* Old-style GCC. */
12934 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
12935 }
12936 else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
12937 || (DW_BLOCK (attr)->size > 1
12938 && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
12939 && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
12940 {
12941 struct dwarf_block blk;
12942 int offset;
12943
12944 offset = (DW_BLOCK (attr)->data[0] == DW_OP_deref
12945 ? 1 : 2);
12946 blk.size = DW_BLOCK (attr)->size - offset;
12947 blk.data = DW_BLOCK (attr)->data + offset;
12948 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
12949 if ((fnp->voffset % cu->header.addr_size) != 0)
12950 dwarf2_complex_location_expr_complaint ();
12951 else
12952 fnp->voffset /= cu->header.addr_size;
12953 fnp->voffset += 2;
12954 }
12955 else
12956 dwarf2_complex_location_expr_complaint ();
12957
12958 if (!fnp->fcontext)
7e993ebf
KS
12959 {
12960 /* If there is no `this' field and no DW_AT_containing_type,
12961 we cannot actually find a base class context for the
12962 vtable! */
12963 if (TYPE_NFIELDS (this_type) == 0
12964 || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
12965 {
12966 complaint (&symfile_complaints,
12967 _("cannot determine context for virtual member "
12968 "function \"%s\" (offset %d)"),
12969 fieldname, die->offset.sect_off);
12970 }
12971 else
12972 {
12973 fnp->fcontext
12974 = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
12975 }
12976 }
aec5aa8b 12977 }
3690dd37 12978 else if (attr_form_is_section_offset (attr))
8e19ed76 12979 {
4d3c2250 12980 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
12981 }
12982 else
12983 {
4d3c2250
KB
12984 dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
12985 fieldname);
8e19ed76 12986 }
0d564a31 12987 }
d48cc9dd
DJ
12988 else
12989 {
12990 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
12991 if (attr && DW_UNSND (attr))
12992 {
12993 /* GCC does this, as of 2008-08-25; PR debug/37237. */
12994 complaint (&symfile_complaints,
3e43a32a
MS
12995 _("Member function \"%s\" (offset %d) is virtual "
12996 "but the vtable offset is not specified"),
b64f50a1 12997 fieldname, die->offset.sect_off);
9655fd1a 12998 ALLOCATE_CPLUS_STRUCT_TYPE (type);
d48cc9dd
DJ
12999 TYPE_CPLUS_DYNAMIC (type) = 1;
13000 }
13001 }
c906108c
SS
13002}
13003
13004/* Create the vector of member function fields, and attach it to the type. */
13005
13006static void
fba45db2 13007dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 13008 struct dwarf2_cu *cu)
c906108c
SS
13009{
13010 struct fnfieldlist *flp;
c906108c
SS
13011 int i;
13012
b4ba55a1 13013 if (cu->language == language_ada)
a73c6dcd 13014 error (_("unexpected member functions in Ada type"));
b4ba55a1 13015
c906108c
SS
13016 ALLOCATE_CPLUS_STRUCT_TYPE (type);
13017 TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
13018 TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
13019
13020 for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
13021 {
13022 struct nextfnfield *nfp = flp->head;
13023 struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
13024 int k;
13025
13026 TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
13027 TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
13028 fn_flp->fn_fields = (struct fn_field *)
13029 TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
13030 for (k = flp->length; (k--, nfp); nfp = nfp->next)
c5aa993b 13031 fn_flp->fn_fields[k] = nfp->fnfield;
c906108c
SS
13032 }
13033
13034 TYPE_NFN_FIELDS (type) = fip->nfnfields;
c906108c
SS
13035}
13036
1168df01
JB
13037/* Returns non-zero if NAME is the name of a vtable member in CU's
13038 language, zero otherwise. */
13039static int
13040is_vtable_name (const char *name, struct dwarf2_cu *cu)
13041{
13042 static const char vptr[] = "_vptr";
987504bb 13043 static const char vtable[] = "vtable";
1168df01 13044
987504bb
JJ
13045 /* Look for the C++ and Java forms of the vtable. */
13046 if ((cu->language == language_java
61012eef
GB
13047 && startswith (name, vtable))
13048 || (startswith (name, vptr)
987504bb 13049 && is_cplus_marker (name[sizeof (vptr) - 1])))
1168df01
JB
13050 return 1;
13051
13052 return 0;
13053}
13054
c0dd20ea 13055/* GCC outputs unnamed structures that are really pointers to member
0b92b5bb
TT
13056 functions, with the ABI-specified layout. If TYPE describes
13057 such a structure, smash it into a member function type.
61049d3b
DJ
13058
13059 GCC shouldn't do this; it should just output pointer to member DIEs.
13060 This is GCC PR debug/28767. */
c0dd20ea 13061
0b92b5bb
TT
13062static void
13063quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
c0dd20ea 13064{
09e2d7c7 13065 struct type *pfn_type, *self_type, *new_type;
c0dd20ea
DJ
13066
13067 /* Check for a structure with no name and two children. */
0b92b5bb
TT
13068 if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
13069 return;
c0dd20ea
DJ
13070
13071 /* Check for __pfn and __delta members. */
0b92b5bb
TT
13072 if (TYPE_FIELD_NAME (type, 0) == NULL
13073 || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
13074 || TYPE_FIELD_NAME (type, 1) == NULL
13075 || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
13076 return;
c0dd20ea
DJ
13077
13078 /* Find the type of the method. */
0b92b5bb 13079 pfn_type = TYPE_FIELD_TYPE (type, 0);
c0dd20ea
DJ
13080 if (pfn_type == NULL
13081 || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
13082 || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
0b92b5bb 13083 return;
c0dd20ea
DJ
13084
13085 /* Look for the "this" argument. */
13086 pfn_type = TYPE_TARGET_TYPE (pfn_type);
13087 if (TYPE_NFIELDS (pfn_type) == 0
0b92b5bb 13088 /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
c0dd20ea 13089 || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
0b92b5bb 13090 return;
c0dd20ea 13091
09e2d7c7 13092 self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
0b92b5bb 13093 new_type = alloc_type (objfile);
09e2d7c7 13094 smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
c0dd20ea
DJ
13095 TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
13096 TYPE_VARARGS (pfn_type));
0b92b5bb 13097 smash_to_methodptr_type (type, new_type);
c0dd20ea 13098}
1168df01 13099
685b1105
JK
13100/* Return non-zero if the CU's PRODUCER string matches the Intel C/C++ compiler
13101 (icc). */
13102
13103static int
13104producer_is_icc (struct dwarf2_cu *cu)
13105{
13106 if (!cu->checked_producer)
13107 check_producer (cu);
13108
13109 return cu->producer_is_icc;
13110}
13111
c906108c 13112/* Called when we find the DIE that starts a structure or union scope
c767944b
DJ
13113 (definition) to create a type for the structure or union. Fill in
13114 the type's name and general properties; the members will not be
83655187
DE
13115 processed until process_structure_scope. A symbol table entry for
13116 the type will also not be done until process_structure_scope (assuming
13117 the type has a name).
c906108c 13118
c767944b
DJ
13119 NOTE: we need to call these functions regardless of whether or not the
13120 DIE has a DW_AT_name attribute, since it might be an anonymous
c906108c 13121 structure or union. This gets the type entered into our set of
83655187 13122 user defined types. */
c906108c 13123
f792889a 13124static struct type *
134d01f1 13125read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13126{
e7c27a73 13127 struct objfile *objfile = cu->objfile;
c906108c
SS
13128 struct type *type;
13129 struct attribute *attr;
15d034d0 13130 const char *name;
c906108c 13131
348e048f
DE
13132 /* If the definition of this type lives in .debug_types, read that type.
13133 Don't follow DW_AT_specification though, that will take us back up
13134 the chain and we want to go down. */
45e58e77 13135 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
348e048f
DE
13136 if (attr)
13137 {
ac9ec31b 13138 type = get_DW_AT_signature_type (die, attr, cu);
9dc481d3 13139
ac9ec31b 13140 /* The type's CU may not be the same as CU.
02142a6c 13141 Ensure TYPE is recorded with CU in die_type_hash. */
348e048f
DE
13142 return set_die_type (die, type, cu);
13143 }
13144
c0dd20ea 13145 type = alloc_type (objfile);
c906108c 13146 INIT_CPLUS_SPECIFIC (type);
93311388 13147
39cbfefa
DJ
13148 name = dwarf2_name (die, cu);
13149 if (name != NULL)
c906108c 13150 {
987504bb 13151 if (cu->language == language_cplus
45280282
IB
13152 || cu->language == language_java
13153 || cu->language == language_d)
63d06c5c 13154 {
15d034d0 13155 const char *full_name = dwarf2_full_name (name, die, cu);
3da10d80
KS
13156
13157 /* dwarf2_full_name might have already finished building the DIE's
13158 type. If so, there is no need to continue. */
13159 if (get_die_type (die, cu) != NULL)
13160 return get_die_type (die, cu);
13161
13162 TYPE_TAG_NAME (type) = full_name;
94af9270
KS
13163 if (die->tag == DW_TAG_structure_type
13164 || die->tag == DW_TAG_class_type)
13165 TYPE_NAME (type) = TYPE_TAG_NAME (type);
63d06c5c
DC
13166 }
13167 else
13168 {
d8151005
DJ
13169 /* The name is already allocated along with this objfile, so
13170 we don't need to duplicate it for the type. */
7d455152 13171 TYPE_TAG_NAME (type) = name;
94af9270
KS
13172 if (die->tag == DW_TAG_class_type)
13173 TYPE_NAME (type) = TYPE_TAG_NAME (type);
63d06c5c 13174 }
c906108c
SS
13175 }
13176
13177 if (die->tag == DW_TAG_structure_type)
13178 {
13179 TYPE_CODE (type) = TYPE_CODE_STRUCT;
13180 }
13181 else if (die->tag == DW_TAG_union_type)
13182 {
13183 TYPE_CODE (type) = TYPE_CODE_UNION;
13184 }
13185 else
13186 {
4753d33b 13187 TYPE_CODE (type) = TYPE_CODE_STRUCT;
c906108c
SS
13188 }
13189
0cc2414c
TT
13190 if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
13191 TYPE_DECLARED_CLASS (type) = 1;
13192
e142c38c 13193 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
13194 if (attr)
13195 {
13196 TYPE_LENGTH (type) = DW_UNSND (attr);
13197 }
13198 else
13199 {
13200 TYPE_LENGTH (type) = 0;
13201 }
13202
422b1cb0 13203 if (producer_is_icc (cu) && (TYPE_LENGTH (type) == 0))
685b1105
JK
13204 {
13205 /* ICC does not output the required DW_AT_declaration
13206 on incomplete types, but gives them a size of zero. */
422b1cb0 13207 TYPE_STUB (type) = 1;
685b1105
JK
13208 }
13209 else
13210 TYPE_STUB_SUPPORTED (type) = 1;
13211
dc718098 13212 if (die_is_declaration (die, cu))
876cecd0 13213 TYPE_STUB (type) = 1;
a6c727b2
DJ
13214 else if (attr == NULL && die->child == NULL
13215 && producer_is_realview (cu->producer))
13216 /* RealView does not output the required DW_AT_declaration
13217 on incomplete types. */
13218 TYPE_STUB (type) = 1;
dc718098 13219
c906108c
SS
13220 /* We need to add the type field to the die immediately so we don't
13221 infinitely recurse when dealing with pointers to the structure
0963b4bd 13222 type within the structure itself. */
1c379e20 13223 set_die_type (die, type, cu);
c906108c 13224
7e314c57
JK
13225 /* set_die_type should be already done. */
13226 set_descriptive_type (type, die, cu);
13227
c767944b
DJ
13228 return type;
13229}
13230
13231/* Finish creating a structure or union type, including filling in
13232 its members and creating a symbol for it. */
13233
13234static void
13235process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
13236{
13237 struct objfile *objfile = cu->objfile;
ca040673 13238 struct die_info *child_die;
c767944b
DJ
13239 struct type *type;
13240
13241 type = get_die_type (die, cu);
13242 if (type == NULL)
13243 type = read_structure_type (die, cu);
13244
e142c38c 13245 if (die->child != NULL && ! die_is_declaration (die, cu))
c906108c
SS
13246 {
13247 struct field_info fi;
34eaf542 13248 VEC (symbolp) *template_args = NULL;
c767944b 13249 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
c906108c
SS
13250
13251 memset (&fi, 0, sizeof (struct field_info));
13252
639d11d3 13253 child_die = die->child;
c906108c
SS
13254
13255 while (child_die && child_die->tag)
13256 {
a9a9bd0f
DC
13257 if (child_die->tag == DW_TAG_member
13258 || child_die->tag == DW_TAG_variable)
c906108c 13259 {
a9a9bd0f
DC
13260 /* NOTE: carlton/2002-11-05: A C++ static data member
13261 should be a DW_TAG_member that is a declaration, but
13262 all versions of G++ as of this writing (so through at
13263 least 3.2.1) incorrectly generate DW_TAG_variable
13264 tags for them instead. */
e7c27a73 13265 dwarf2_add_field (&fi, child_die, cu);
c906108c 13266 }
8713b1b1 13267 else if (child_die->tag == DW_TAG_subprogram)
c906108c 13268 {
0963b4bd 13269 /* C++ member function. */
e7c27a73 13270 dwarf2_add_member_fn (&fi, child_die, type, cu);
c906108c
SS
13271 }
13272 else if (child_die->tag == DW_TAG_inheritance)
13273 {
13274 /* C++ base class field. */
e7c27a73 13275 dwarf2_add_field (&fi, child_die, cu);
c906108c 13276 }
98751a41
JK
13277 else if (child_die->tag == DW_TAG_typedef)
13278 dwarf2_add_typedef (&fi, child_die, cu);
34eaf542
TT
13279 else if (child_die->tag == DW_TAG_template_type_param
13280 || child_die->tag == DW_TAG_template_value_param)
13281 {
13282 struct symbol *arg = new_symbol (child_die, NULL, cu);
13283
f1078f66
DJ
13284 if (arg != NULL)
13285 VEC_safe_push (symbolp, template_args, arg);
34eaf542
TT
13286 }
13287
c906108c
SS
13288 child_die = sibling_die (child_die);
13289 }
13290
34eaf542
TT
13291 /* Attach template arguments to type. */
13292 if (! VEC_empty (symbolp, template_args))
13293 {
13294 ALLOCATE_CPLUS_STRUCT_TYPE (type);
13295 TYPE_N_TEMPLATE_ARGUMENTS (type)
13296 = VEC_length (symbolp, template_args);
13297 TYPE_TEMPLATE_ARGUMENTS (type)
8d749320
SM
13298 = XOBNEWVEC (&objfile->objfile_obstack,
13299 struct symbol *,
13300 TYPE_N_TEMPLATE_ARGUMENTS (type));
34eaf542
TT
13301 memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
13302 VEC_address (symbolp, template_args),
13303 (TYPE_N_TEMPLATE_ARGUMENTS (type)
13304 * sizeof (struct symbol *)));
13305 VEC_free (symbolp, template_args);
13306 }
13307
c906108c
SS
13308 /* Attach fields and member functions to the type. */
13309 if (fi.nfields)
e7c27a73 13310 dwarf2_attach_fields_to_type (&fi, type, cu);
c906108c
SS
13311 if (fi.nfnfields)
13312 {
e7c27a73 13313 dwarf2_attach_fn_fields_to_type (&fi, type, cu);
c906108c 13314
c5aa993b 13315 /* Get the type which refers to the base class (possibly this
c906108c 13316 class itself) which contains the vtable pointer for the current
0d564a31
DJ
13317 class from the DW_AT_containing_type attribute. This use of
13318 DW_AT_containing_type is a GNU extension. */
c906108c 13319
e142c38c 13320 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
c906108c 13321 {
e7c27a73 13322 struct type *t = die_containing_type (die, cu);
c906108c 13323
ae6ae975 13324 set_type_vptr_basetype (type, t);
c906108c
SS
13325 if (type == t)
13326 {
c906108c
SS
13327 int i;
13328
13329 /* Our own class provides vtbl ptr. */
13330 for (i = TYPE_NFIELDS (t) - 1;
13331 i >= TYPE_N_BASECLASSES (t);
13332 --i)
13333 {
0d5cff50 13334 const char *fieldname = TYPE_FIELD_NAME (t, i);
c906108c 13335
1168df01 13336 if (is_vtable_name (fieldname, cu))
c906108c 13337 {
ae6ae975 13338 set_type_vptr_fieldno (type, i);
c906108c
SS
13339 break;
13340 }
13341 }
13342
13343 /* Complain if virtual function table field not found. */
13344 if (i < TYPE_N_BASECLASSES (t))
4d3c2250 13345 complaint (&symfile_complaints,
3e43a32a
MS
13346 _("virtual function table pointer "
13347 "not found when defining class '%s'"),
4d3c2250
KB
13348 TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
13349 "");
c906108c
SS
13350 }
13351 else
13352 {
ae6ae975 13353 set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
c906108c
SS
13354 }
13355 }
f6235d4c 13356 else if (cu->producer
61012eef 13357 && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
f6235d4c
EZ
13358 {
13359 /* The IBM XLC compiler does not provide direct indication
13360 of the containing type, but the vtable pointer is
13361 always named __vfp. */
13362
13363 int i;
13364
13365 for (i = TYPE_NFIELDS (type) - 1;
13366 i >= TYPE_N_BASECLASSES (type);
13367 --i)
13368 {
13369 if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
13370 {
ae6ae975
DE
13371 set_type_vptr_fieldno (type, i);
13372 set_type_vptr_basetype (type, type);
f6235d4c
EZ
13373 break;
13374 }
13375 }
13376 }
c906108c 13377 }
98751a41
JK
13378
13379 /* Copy fi.typedef_field_list linked list elements content into the
13380 allocated array TYPE_TYPEDEF_FIELD_ARRAY (type). */
13381 if (fi.typedef_field_list)
13382 {
13383 int i = fi.typedef_field_list_count;
13384
a0d7a4ff 13385 ALLOCATE_CPLUS_STRUCT_TYPE (type);
98751a41
JK
13386 TYPE_TYPEDEF_FIELD_ARRAY (type)
13387 = TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i);
13388 TYPE_TYPEDEF_FIELD_COUNT (type) = i;
13389
13390 /* Reverse the list order to keep the debug info elements order. */
13391 while (--i >= 0)
13392 {
13393 struct typedef_field *dest, *src;
6e70227d 13394
98751a41
JK
13395 dest = &TYPE_TYPEDEF_FIELD (type, i);
13396 src = &fi.typedef_field_list->field;
13397 fi.typedef_field_list = fi.typedef_field_list->next;
13398 *dest = *src;
13399 }
13400 }
c767944b
DJ
13401
13402 do_cleanups (back_to);
eb2a6f42
TT
13403
13404 if (HAVE_CPLUS_STRUCT (type))
13405 TYPE_CPLUS_REALLY_JAVA (type) = cu->language == language_java;
c906108c 13406 }
63d06c5c 13407
bb5ed363 13408 quirk_gcc_member_function_pointer (type, objfile);
0b92b5bb 13409
90aeadfc
DC
13410 /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
13411 snapshots) has been known to create a die giving a declaration
13412 for a class that has, as a child, a die giving a definition for a
13413 nested class. So we have to process our children even if the
13414 current die is a declaration. Normally, of course, a declaration
13415 won't have any children at all. */
134d01f1 13416
ca040673
DE
13417 child_die = die->child;
13418
90aeadfc
DC
13419 while (child_die != NULL && child_die->tag)
13420 {
13421 if (child_die->tag == DW_TAG_member
13422 || child_die->tag == DW_TAG_variable
34eaf542
TT
13423 || child_die->tag == DW_TAG_inheritance
13424 || child_die->tag == DW_TAG_template_value_param
13425 || child_die->tag == DW_TAG_template_type_param)
134d01f1 13426 {
90aeadfc 13427 /* Do nothing. */
134d01f1 13428 }
90aeadfc
DC
13429 else
13430 process_die (child_die, cu);
134d01f1 13431
90aeadfc 13432 child_die = sibling_die (child_die);
134d01f1
DJ
13433 }
13434
fa4028e9
JB
13435 /* Do not consider external references. According to the DWARF standard,
13436 these DIEs are identified by the fact that they have no byte_size
13437 attribute, and a declaration attribute. */
13438 if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
13439 || !die_is_declaration (die, cu))
c767944b 13440 new_symbol (die, type, cu);
134d01f1
DJ
13441}
13442
55426c9d
JB
13443/* Assuming DIE is an enumeration type, and TYPE is its associated type,
13444 update TYPE using some information only available in DIE's children. */
13445
13446static void
13447update_enumeration_type_from_children (struct die_info *die,
13448 struct type *type,
13449 struct dwarf2_cu *cu)
13450{
13451 struct obstack obstack;
60f7655a 13452 struct die_info *child_die;
55426c9d
JB
13453 int unsigned_enum = 1;
13454 int flag_enum = 1;
13455 ULONGEST mask = 0;
13456 struct cleanup *old_chain;
13457
13458 obstack_init (&obstack);
13459 old_chain = make_cleanup_obstack_free (&obstack);
13460
60f7655a
DE
13461 for (child_die = die->child;
13462 child_die != NULL && child_die->tag;
13463 child_die = sibling_die (child_die))
55426c9d
JB
13464 {
13465 struct attribute *attr;
13466 LONGEST value;
13467 const gdb_byte *bytes;
13468 struct dwarf2_locexpr_baton *baton;
13469 const char *name;
60f7655a 13470
55426c9d
JB
13471 if (child_die->tag != DW_TAG_enumerator)
13472 continue;
13473
13474 attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
13475 if (attr == NULL)
13476 continue;
13477
13478 name = dwarf2_name (child_die, cu);
13479 if (name == NULL)
13480 name = "<anonymous enumerator>";
13481
13482 dwarf2_const_value_attr (attr, type, name, &obstack, cu,
13483 &value, &bytes, &baton);
13484 if (value < 0)
13485 {
13486 unsigned_enum = 0;
13487 flag_enum = 0;
13488 }
13489 else if ((mask & value) != 0)
13490 flag_enum = 0;
13491 else
13492 mask |= value;
13493
13494 /* If we already know that the enum type is neither unsigned, nor
13495 a flag type, no need to look at the rest of the enumerates. */
13496 if (!unsigned_enum && !flag_enum)
13497 break;
55426c9d
JB
13498 }
13499
13500 if (unsigned_enum)
13501 TYPE_UNSIGNED (type) = 1;
13502 if (flag_enum)
13503 TYPE_FLAG_ENUM (type) = 1;
13504
13505 do_cleanups (old_chain);
13506}
13507
134d01f1
DJ
13508/* Given a DW_AT_enumeration_type die, set its type. We do not
13509 complete the type's fields yet, or create any symbols. */
c906108c 13510
f792889a 13511static struct type *
134d01f1 13512read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13513{
e7c27a73 13514 struct objfile *objfile = cu->objfile;
c906108c 13515 struct type *type;
c906108c 13516 struct attribute *attr;
0114d602 13517 const char *name;
134d01f1 13518
348e048f
DE
13519 /* If the definition of this type lives in .debug_types, read that type.
13520 Don't follow DW_AT_specification though, that will take us back up
13521 the chain and we want to go down. */
45e58e77 13522 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
348e048f
DE
13523 if (attr)
13524 {
ac9ec31b 13525 type = get_DW_AT_signature_type (die, attr, cu);
9dc481d3 13526
ac9ec31b 13527 /* The type's CU may not be the same as CU.
02142a6c 13528 Ensure TYPE is recorded with CU in die_type_hash. */
348e048f
DE
13529 return set_die_type (die, type, cu);
13530 }
13531
c906108c
SS
13532 type = alloc_type (objfile);
13533
13534 TYPE_CODE (type) = TYPE_CODE_ENUM;
94af9270 13535 name = dwarf2_full_name (NULL, die, cu);
39cbfefa 13536 if (name != NULL)
7d455152 13537 TYPE_TAG_NAME (type) = name;
c906108c 13538
0626fc76
TT
13539 attr = dwarf2_attr (die, DW_AT_type, cu);
13540 if (attr != NULL)
13541 {
13542 struct type *underlying_type = die_type (die, cu);
13543
13544 TYPE_TARGET_TYPE (type) = underlying_type;
13545 }
13546
e142c38c 13547 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
13548 if (attr)
13549 {
13550 TYPE_LENGTH (type) = DW_UNSND (attr);
13551 }
13552 else
13553 {
13554 TYPE_LENGTH (type) = 0;
13555 }
13556
137033e9
JB
13557 /* The enumeration DIE can be incomplete. In Ada, any type can be
13558 declared as private in the package spec, and then defined only
13559 inside the package body. Such types are known as Taft Amendment
13560 Types. When another package uses such a type, an incomplete DIE
13561 may be generated by the compiler. */
02eb380e 13562 if (die_is_declaration (die, cu))
876cecd0 13563 TYPE_STUB (type) = 1;
02eb380e 13564
0626fc76
TT
13565 /* Finish the creation of this type by using the enum's children.
13566 We must call this even when the underlying type has been provided
13567 so that we can determine if we're looking at a "flag" enum. */
55426c9d
JB
13568 update_enumeration_type_from_children (die, type, cu);
13569
0626fc76
TT
13570 /* If this type has an underlying type that is not a stub, then we
13571 may use its attributes. We always use the "unsigned" attribute
13572 in this situation, because ordinarily we guess whether the type
13573 is unsigned -- but the guess can be wrong and the underlying type
13574 can tell us the reality. However, we defer to a local size
13575 attribute if one exists, because this lets the compiler override
13576 the underlying type if needed. */
13577 if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
13578 {
13579 TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
13580 if (TYPE_LENGTH (type) == 0)
13581 TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
13582 }
13583
3d567982
TT
13584 TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
13585
f792889a 13586 return set_die_type (die, type, cu);
134d01f1
DJ
13587}
13588
13589/* Given a pointer to a die which begins an enumeration, process all
13590 the dies that define the members of the enumeration, and create the
13591 symbol for the enumeration type.
13592
13593 NOTE: We reverse the order of the element list. */
13594
13595static void
13596process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
13597{
f792889a 13598 struct type *this_type;
134d01f1 13599
f792889a
DJ
13600 this_type = get_die_type (die, cu);
13601 if (this_type == NULL)
13602 this_type = read_enumeration_type (die, cu);
9dc481d3 13603
639d11d3 13604 if (die->child != NULL)
c906108c 13605 {
9dc481d3
DE
13606 struct die_info *child_die;
13607 struct symbol *sym;
13608 struct field *fields = NULL;
13609 int num_fields = 0;
15d034d0 13610 const char *name;
9dc481d3 13611
639d11d3 13612 child_die = die->child;
c906108c
SS
13613 while (child_die && child_die->tag)
13614 {
13615 if (child_die->tag != DW_TAG_enumerator)
13616 {
e7c27a73 13617 process_die (child_die, cu);
c906108c
SS
13618 }
13619 else
13620 {
39cbfefa
DJ
13621 name = dwarf2_name (child_die, cu);
13622 if (name)
c906108c 13623 {
f792889a 13624 sym = new_symbol (child_die, this_type, cu);
c906108c
SS
13625
13626 if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
13627 {
13628 fields = (struct field *)
13629 xrealloc (fields,
13630 (num_fields + DW_FIELD_ALLOC_CHUNK)
c5aa993b 13631 * sizeof (struct field));
c906108c
SS
13632 }
13633
3567439c 13634 FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
c906108c 13635 FIELD_TYPE (fields[num_fields]) = NULL;
14e75d8e 13636 SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
c906108c
SS
13637 FIELD_BITSIZE (fields[num_fields]) = 0;
13638
13639 num_fields++;
13640 }
13641 }
13642
13643 child_die = sibling_die (child_die);
13644 }
13645
13646 if (num_fields)
13647 {
f792889a
DJ
13648 TYPE_NFIELDS (this_type) = num_fields;
13649 TYPE_FIELDS (this_type) = (struct field *)
13650 TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
13651 memcpy (TYPE_FIELDS (this_type), fields,
c906108c 13652 sizeof (struct field) * num_fields);
b8c9b27d 13653 xfree (fields);
c906108c 13654 }
c906108c 13655 }
134d01f1 13656
6c83ed52
TT
13657 /* If we are reading an enum from a .debug_types unit, and the enum
13658 is a declaration, and the enum is not the signatured type in the
13659 unit, then we do not want to add a symbol for it. Adding a
13660 symbol would in some cases obscure the true definition of the
13661 enum, giving users an incomplete type when the definition is
13662 actually available. Note that we do not want to do this for all
13663 enums which are just declarations, because C++0x allows forward
13664 enum declarations. */
3019eac3 13665 if (cu->per_cu->is_debug_types
6c83ed52
TT
13666 && die_is_declaration (die, cu))
13667 {
52dc124a 13668 struct signatured_type *sig_type;
6c83ed52 13669
c0f78cd4 13670 sig_type = (struct signatured_type *) cu->per_cu;
3019eac3
DE
13671 gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
13672 if (sig_type->type_offset_in_section.sect_off != die->offset.sect_off)
6c83ed52
TT
13673 return;
13674 }
13675
f792889a 13676 new_symbol (die, this_type, cu);
c906108c
SS
13677}
13678
13679/* Extract all information from a DW_TAG_array_type DIE and put it in
13680 the DIE's type field. For now, this only handles one dimensional
13681 arrays. */
13682
f792889a 13683static struct type *
e7c27a73 13684read_array_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13685{
e7c27a73 13686 struct objfile *objfile = cu->objfile;
c906108c 13687 struct die_info *child_die;
7e314c57 13688 struct type *type;
c906108c
SS
13689 struct type *element_type, *range_type, *index_type;
13690 struct type **range_types = NULL;
13691 struct attribute *attr;
13692 int ndim = 0;
13693 struct cleanup *back_to;
15d034d0 13694 const char *name;
dc53a7ad 13695 unsigned int bit_stride = 0;
c906108c 13696
e7c27a73 13697 element_type = die_type (die, cu);
c906108c 13698
7e314c57
JK
13699 /* The die_type call above may have already set the type for this DIE. */
13700 type = get_die_type (die, cu);
13701 if (type)
13702 return type;
13703
dc53a7ad
JB
13704 attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
13705 if (attr != NULL)
13706 bit_stride = DW_UNSND (attr) * 8;
13707
13708 attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
13709 if (attr != NULL)
13710 bit_stride = DW_UNSND (attr);
13711
c906108c
SS
13712 /* Irix 6.2 native cc creates array types without children for
13713 arrays with unspecified length. */
639d11d3 13714 if (die->child == NULL)
c906108c 13715 {
46bf5051 13716 index_type = objfile_type (objfile)->builtin_int;
0c9c3474 13717 range_type = create_static_range_type (NULL, index_type, 0, -1);
dc53a7ad
JB
13718 type = create_array_type_with_stride (NULL, element_type, range_type,
13719 bit_stride);
f792889a 13720 return set_die_type (die, type, cu);
c906108c
SS
13721 }
13722
13723 back_to = make_cleanup (null_cleanup, NULL);
639d11d3 13724 child_die = die->child;
c906108c
SS
13725 while (child_die && child_die->tag)
13726 {
13727 if (child_die->tag == DW_TAG_subrange_type)
13728 {
f792889a 13729 struct type *child_type = read_type_die (child_die, cu);
9a619af0 13730
f792889a 13731 if (child_type != NULL)
a02abb62 13732 {
0963b4bd
MS
13733 /* The range type was succesfully read. Save it for the
13734 array type creation. */
a02abb62
JB
13735 if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
13736 {
13737 range_types = (struct type **)
13738 xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
13739 * sizeof (struct type *));
13740 if (ndim == 0)
13741 make_cleanup (free_current_contents, &range_types);
13742 }
f792889a 13743 range_types[ndim++] = child_type;
a02abb62 13744 }
c906108c
SS
13745 }
13746 child_die = sibling_die (child_die);
13747 }
13748
13749 /* Dwarf2 dimensions are output from left to right, create the
13750 necessary array types in backwards order. */
7ca2d3a3 13751
c906108c 13752 type = element_type;
7ca2d3a3
DL
13753
13754 if (read_array_order (die, cu) == DW_ORD_col_major)
13755 {
13756 int i = 0;
9a619af0 13757
7ca2d3a3 13758 while (i < ndim)
dc53a7ad
JB
13759 type = create_array_type_with_stride (NULL, type, range_types[i++],
13760 bit_stride);
7ca2d3a3
DL
13761 }
13762 else
13763 {
13764 while (ndim-- > 0)
dc53a7ad
JB
13765 type = create_array_type_with_stride (NULL, type, range_types[ndim],
13766 bit_stride);
7ca2d3a3 13767 }
c906108c 13768
f5f8a009
EZ
13769 /* Understand Dwarf2 support for vector types (like they occur on
13770 the PowerPC w/ AltiVec). Gcc just adds another attribute to the
13771 array type. This is not part of the Dwarf2/3 standard yet, but a
13772 custom vendor extension. The main difference between a regular
13773 array and the vector variant is that vectors are passed by value
13774 to functions. */
e142c38c 13775 attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
f5f8a009 13776 if (attr)
ea37ba09 13777 make_vector_type (type);
f5f8a009 13778
dbc98a8b
KW
13779 /* The DIE may have DW_AT_byte_size set. For example an OpenCL
13780 implementation may choose to implement triple vectors using this
13781 attribute. */
13782 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13783 if (attr)
13784 {
13785 if (DW_UNSND (attr) >= TYPE_LENGTH (type))
13786 TYPE_LENGTH (type) = DW_UNSND (attr);
13787 else
3e43a32a
MS
13788 complaint (&symfile_complaints,
13789 _("DW_AT_byte_size for array type smaller "
13790 "than the total size of elements"));
dbc98a8b
KW
13791 }
13792
39cbfefa
DJ
13793 name = dwarf2_name (die, cu);
13794 if (name)
13795 TYPE_NAME (type) = name;
6e70227d 13796
0963b4bd 13797 /* Install the type in the die. */
7e314c57
JK
13798 set_die_type (die, type, cu);
13799
13800 /* set_die_type should be already done. */
b4ba55a1
JB
13801 set_descriptive_type (type, die, cu);
13802
c906108c
SS
13803 do_cleanups (back_to);
13804
7e314c57 13805 return type;
c906108c
SS
13806}
13807
7ca2d3a3 13808static enum dwarf_array_dim_ordering
6e70227d 13809read_array_order (struct die_info *die, struct dwarf2_cu *cu)
7ca2d3a3
DL
13810{
13811 struct attribute *attr;
13812
13813 attr = dwarf2_attr (die, DW_AT_ordering, cu);
13814
aead7601
SM
13815 if (attr)
13816 return (enum dwarf_array_dim_ordering) DW_SND (attr);
7ca2d3a3 13817
0963b4bd
MS
13818 /* GNU F77 is a special case, as at 08/2004 array type info is the
13819 opposite order to the dwarf2 specification, but data is still
13820 laid out as per normal fortran.
7ca2d3a3 13821
0963b4bd
MS
13822 FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
13823 version checking. */
7ca2d3a3 13824
905e0470
PM
13825 if (cu->language == language_fortran
13826 && cu->producer && strstr (cu->producer, "GNU F77"))
7ca2d3a3
DL
13827 {
13828 return DW_ORD_row_major;
13829 }
13830
6e70227d 13831 switch (cu->language_defn->la_array_ordering)
7ca2d3a3
DL
13832 {
13833 case array_column_major:
13834 return DW_ORD_col_major;
13835 case array_row_major:
13836 default:
13837 return DW_ORD_row_major;
13838 };
13839}
13840
72019c9c 13841/* Extract all information from a DW_TAG_set_type DIE and put it in
0963b4bd 13842 the DIE's type field. */
72019c9c 13843
f792889a 13844static struct type *
72019c9c
GM
13845read_set_type (struct die_info *die, struct dwarf2_cu *cu)
13846{
7e314c57
JK
13847 struct type *domain_type, *set_type;
13848 struct attribute *attr;
f792889a 13849
7e314c57
JK
13850 domain_type = die_type (die, cu);
13851
13852 /* The die_type call above may have already set the type for this DIE. */
13853 set_type = get_die_type (die, cu);
13854 if (set_type)
13855 return set_type;
13856
13857 set_type = create_set_type (NULL, domain_type);
13858
13859 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
d09039dd
PM
13860 if (attr)
13861 TYPE_LENGTH (set_type) = DW_UNSND (attr);
7e314c57 13862
f792889a 13863 return set_die_type (die, set_type, cu);
72019c9c 13864}
7ca2d3a3 13865
0971de02
TT
13866/* A helper for read_common_block that creates a locexpr baton.
13867 SYM is the symbol which we are marking as computed.
13868 COMMON_DIE is the DIE for the common block.
13869 COMMON_LOC is the location expression attribute for the common
13870 block itself.
13871 MEMBER_LOC is the location expression attribute for the particular
13872 member of the common block that we are processing.
13873 CU is the CU from which the above come. */
13874
13875static void
13876mark_common_block_symbol_computed (struct symbol *sym,
13877 struct die_info *common_die,
13878 struct attribute *common_loc,
13879 struct attribute *member_loc,
13880 struct dwarf2_cu *cu)
13881{
13882 struct objfile *objfile = dwarf2_per_objfile->objfile;
13883 struct dwarf2_locexpr_baton *baton;
13884 gdb_byte *ptr;
13885 unsigned int cu_off;
13886 enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
13887 LONGEST offset = 0;
13888
13889 gdb_assert (common_loc && member_loc);
13890 gdb_assert (attr_form_is_block (common_loc));
13891 gdb_assert (attr_form_is_block (member_loc)
13892 || attr_form_is_constant (member_loc));
13893
8d749320 13894 baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
0971de02
TT
13895 baton->per_cu = cu->per_cu;
13896 gdb_assert (baton->per_cu);
13897
13898 baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
13899
13900 if (attr_form_is_constant (member_loc))
13901 {
13902 offset = dwarf2_get_attr_constant_value (member_loc, 0);
13903 baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
13904 }
13905 else
13906 baton->size += DW_BLOCK (member_loc)->size;
13907
13908 ptr = obstack_alloc (&objfile->objfile_obstack, baton->size);
13909 baton->data = ptr;
13910
13911 *ptr++ = DW_OP_call4;
13912 cu_off = common_die->offset.sect_off - cu->per_cu->offset.sect_off;
13913 store_unsigned_integer (ptr, 4, byte_order, cu_off);
13914 ptr += 4;
13915
13916 if (attr_form_is_constant (member_loc))
13917 {
13918 *ptr++ = DW_OP_addr;
13919 store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
13920 ptr += cu->header.addr_size;
13921 }
13922 else
13923 {
13924 /* We have to copy the data here, because DW_OP_call4 will only
13925 use a DW_AT_location attribute. */
13926 memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
13927 ptr += DW_BLOCK (member_loc)->size;
13928 }
13929
13930 *ptr++ = DW_OP_plus;
13931 gdb_assert (ptr - baton->data == baton->size);
13932
0971de02 13933 SYMBOL_LOCATION_BATON (sym) = baton;
f1e6e072 13934 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
0971de02
TT
13935}
13936
4357ac6c
TT
13937/* Create appropriate locally-scoped variables for all the
13938 DW_TAG_common_block entries. Also create a struct common_block
13939 listing all such variables for `info common'. COMMON_BLOCK_DOMAIN
13940 is used to sepate the common blocks name namespace from regular
13941 variable names. */
c906108c
SS
13942
13943static void
e7c27a73 13944read_common_block (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13945{
0971de02
TT
13946 struct attribute *attr;
13947
13948 attr = dwarf2_attr (die, DW_AT_location, cu);
13949 if (attr)
13950 {
13951 /* Support the .debug_loc offsets. */
13952 if (attr_form_is_block (attr))
13953 {
13954 /* Ok. */
13955 }
13956 else if (attr_form_is_section_offset (attr))
13957 {
13958 dwarf2_complex_location_expr_complaint ();
13959 attr = NULL;
13960 }
13961 else
13962 {
13963 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
13964 "common block member");
13965 attr = NULL;
13966 }
13967 }
13968
639d11d3 13969 if (die->child != NULL)
c906108c 13970 {
4357ac6c
TT
13971 struct objfile *objfile = cu->objfile;
13972 struct die_info *child_die;
13973 size_t n_entries = 0, size;
13974 struct common_block *common_block;
13975 struct symbol *sym;
74ac6d43 13976
4357ac6c
TT
13977 for (child_die = die->child;
13978 child_die && child_die->tag;
13979 child_die = sibling_die (child_die))
13980 ++n_entries;
13981
13982 size = (sizeof (struct common_block)
13983 + (n_entries - 1) * sizeof (struct symbol *));
13984 common_block = obstack_alloc (&objfile->objfile_obstack, size);
13985 memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
13986 common_block->n_entries = 0;
13987
13988 for (child_die = die->child;
13989 child_die && child_die->tag;
13990 child_die = sibling_die (child_die))
13991 {
13992 /* Create the symbol in the DW_TAG_common_block block in the current
13993 symbol scope. */
e7c27a73 13994 sym = new_symbol (child_die, NULL, cu);
0971de02
TT
13995 if (sym != NULL)
13996 {
13997 struct attribute *member_loc;
13998
13999 common_block->contents[common_block->n_entries++] = sym;
14000
14001 member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
14002 cu);
14003 if (member_loc)
14004 {
14005 /* GDB has handled this for a long time, but it is
14006 not specified by DWARF. It seems to have been
14007 emitted by gfortran at least as recently as:
14008 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057. */
14009 complaint (&symfile_complaints,
14010 _("Variable in common block has "
14011 "DW_AT_data_member_location "
14012 "- DIE at 0x%x [in module %s]"),
4262abfb
JK
14013 child_die->offset.sect_off,
14014 objfile_name (cu->objfile));
0971de02
TT
14015
14016 if (attr_form_is_section_offset (member_loc))
14017 dwarf2_complex_location_expr_complaint ();
14018 else if (attr_form_is_constant (member_loc)
14019 || attr_form_is_block (member_loc))
14020 {
14021 if (attr)
14022 mark_common_block_symbol_computed (sym, die, attr,
14023 member_loc, cu);
14024 }
14025 else
14026 dwarf2_complex_location_expr_complaint ();
14027 }
14028 }
c906108c 14029 }
4357ac6c
TT
14030
14031 sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
14032 SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
c906108c
SS
14033 }
14034}
14035
0114d602 14036/* Create a type for a C++ namespace. */
d9fa45fe 14037
0114d602
DJ
14038static struct type *
14039read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
d9fa45fe 14040{
e7c27a73 14041 struct objfile *objfile = cu->objfile;
0114d602 14042 const char *previous_prefix, *name;
9219021c 14043 int is_anonymous;
0114d602
DJ
14044 struct type *type;
14045
14046 /* For extensions, reuse the type of the original namespace. */
14047 if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
14048 {
14049 struct die_info *ext_die;
14050 struct dwarf2_cu *ext_cu = cu;
9a619af0 14051
0114d602
DJ
14052 ext_die = dwarf2_extension (die, &ext_cu);
14053 type = read_type_die (ext_die, ext_cu);
9dc481d3
DE
14054
14055 /* EXT_CU may not be the same as CU.
02142a6c 14056 Ensure TYPE is recorded with CU in die_type_hash. */
0114d602
DJ
14057 return set_die_type (die, type, cu);
14058 }
9219021c 14059
e142c38c 14060 name = namespace_name (die, &is_anonymous, cu);
9219021c
DC
14061
14062 /* Now build the name of the current namespace. */
14063
0114d602
DJ
14064 previous_prefix = determine_prefix (die, cu);
14065 if (previous_prefix[0] != '\0')
14066 name = typename_concat (&objfile->objfile_obstack,
f55ee35c 14067 previous_prefix, name, 0, cu);
0114d602
DJ
14068
14069 /* Create the type. */
14070 type = init_type (TYPE_CODE_NAMESPACE, 0, 0, NULL,
14071 objfile);
abee88f2 14072 TYPE_NAME (type) = name;
0114d602
DJ
14073 TYPE_TAG_NAME (type) = TYPE_NAME (type);
14074
60531b24 14075 return set_die_type (die, type, cu);
0114d602
DJ
14076}
14077
22cee43f 14078/* Read a namespace scope. */
0114d602
DJ
14079
14080static void
14081read_namespace (struct die_info *die, struct dwarf2_cu *cu)
14082{
14083 struct objfile *objfile = cu->objfile;
0114d602 14084 int is_anonymous;
9219021c 14085
5c4e30ca
DC
14086 /* Add a symbol associated to this if we haven't seen the namespace
14087 before. Also, add a using directive if it's an anonymous
14088 namespace. */
9219021c 14089
f2f0e013 14090 if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
5c4e30ca
DC
14091 {
14092 struct type *type;
14093
0114d602 14094 type = read_type_die (die, cu);
e7c27a73 14095 new_symbol (die, type, cu);
5c4e30ca 14096
e8e80198 14097 namespace_name (die, &is_anonymous, cu);
5c4e30ca 14098 if (is_anonymous)
0114d602
DJ
14099 {
14100 const char *previous_prefix = determine_prefix (die, cu);
9a619af0 14101
22cee43f
PMR
14102 add_using_directive (using_directives (cu->language),
14103 previous_prefix, TYPE_NAME (type), NULL,
14104 NULL, NULL, 0, &objfile->objfile_obstack);
0114d602 14105 }
5c4e30ca 14106 }
9219021c 14107
639d11d3 14108 if (die->child != NULL)
d9fa45fe 14109 {
639d11d3 14110 struct die_info *child_die = die->child;
6e70227d 14111
d9fa45fe
DC
14112 while (child_die && child_die->tag)
14113 {
e7c27a73 14114 process_die (child_die, cu);
d9fa45fe
DC
14115 child_die = sibling_die (child_die);
14116 }
14117 }
38d518c9
EZ
14118}
14119
f55ee35c
JK
14120/* Read a Fortran module as type. This DIE can be only a declaration used for
14121 imported module. Still we need that type as local Fortran "use ... only"
14122 declaration imports depend on the created type in determine_prefix. */
14123
14124static struct type *
14125read_module_type (struct die_info *die, struct dwarf2_cu *cu)
14126{
14127 struct objfile *objfile = cu->objfile;
15d034d0 14128 const char *module_name;
f55ee35c
JK
14129 struct type *type;
14130
14131 module_name = dwarf2_name (die, cu);
14132 if (!module_name)
3e43a32a
MS
14133 complaint (&symfile_complaints,
14134 _("DW_TAG_module has no name, offset 0x%x"),
b64f50a1 14135 die->offset.sect_off);
f55ee35c
JK
14136 type = init_type (TYPE_CODE_MODULE, 0, 0, module_name, objfile);
14137
14138 /* determine_prefix uses TYPE_TAG_NAME. */
14139 TYPE_TAG_NAME (type) = TYPE_NAME (type);
14140
14141 return set_die_type (die, type, cu);
14142}
14143
5d7cb8df
JK
14144/* Read a Fortran module. */
14145
14146static void
14147read_module (struct die_info *die, struct dwarf2_cu *cu)
14148{
14149 struct die_info *child_die = die->child;
530e8392
KB
14150 struct type *type;
14151
14152 type = read_type_die (die, cu);
14153 new_symbol (die, type, cu);
5d7cb8df 14154
5d7cb8df
JK
14155 while (child_die && child_die->tag)
14156 {
14157 process_die (child_die, cu);
14158 child_die = sibling_die (child_die);
14159 }
14160}
14161
38d518c9
EZ
14162/* Return the name of the namespace represented by DIE. Set
14163 *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
14164 namespace. */
14165
14166static const char *
e142c38c 14167namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
38d518c9
EZ
14168{
14169 struct die_info *current_die;
14170 const char *name = NULL;
14171
14172 /* Loop through the extensions until we find a name. */
14173
14174 for (current_die = die;
14175 current_die != NULL;
f2f0e013 14176 current_die = dwarf2_extension (die, &cu))
38d518c9 14177 {
96553a0c
DE
14178 /* We don't use dwarf2_name here so that we can detect the absence
14179 of a name -> anonymous namespace. */
7d45c7c3 14180 name = dwarf2_string_attr (die, DW_AT_name, cu);
96553a0c 14181
38d518c9
EZ
14182 if (name != NULL)
14183 break;
14184 }
14185
14186 /* Is it an anonymous namespace? */
14187
14188 *is_anonymous = (name == NULL);
14189 if (*is_anonymous)
2b1dbab0 14190 name = CP_ANONYMOUS_NAMESPACE_STR;
38d518c9
EZ
14191
14192 return name;
d9fa45fe
DC
14193}
14194
c906108c
SS
14195/* Extract all information from a DW_TAG_pointer_type DIE and add to
14196 the user defined type vector. */
14197
f792889a 14198static struct type *
e7c27a73 14199read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14200{
5e2b427d 14201 struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
e7c27a73 14202 struct comp_unit_head *cu_header = &cu->header;
c906108c 14203 struct type *type;
8b2dbe47
KB
14204 struct attribute *attr_byte_size;
14205 struct attribute *attr_address_class;
14206 int byte_size, addr_class;
7e314c57
JK
14207 struct type *target_type;
14208
14209 target_type = die_type (die, cu);
c906108c 14210
7e314c57
JK
14211 /* The die_type call above may have already set the type for this DIE. */
14212 type = get_die_type (die, cu);
14213 if (type)
14214 return type;
14215
14216 type = lookup_pointer_type (target_type);
8b2dbe47 14217
e142c38c 14218 attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
8b2dbe47
KB
14219 if (attr_byte_size)
14220 byte_size = DW_UNSND (attr_byte_size);
c906108c 14221 else
8b2dbe47
KB
14222 byte_size = cu_header->addr_size;
14223
e142c38c 14224 attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
8b2dbe47
KB
14225 if (attr_address_class)
14226 addr_class = DW_UNSND (attr_address_class);
14227 else
14228 addr_class = DW_ADDR_none;
14229
14230 /* If the pointer size or address class is different than the
14231 default, create a type variant marked as such and set the
14232 length accordingly. */
14233 if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
c906108c 14234 {
5e2b427d 14235 if (gdbarch_address_class_type_flags_p (gdbarch))
8b2dbe47
KB
14236 {
14237 int type_flags;
14238
849957d9 14239 type_flags = gdbarch_address_class_type_flags
5e2b427d 14240 (gdbarch, byte_size, addr_class);
876cecd0
TT
14241 gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
14242 == 0);
8b2dbe47
KB
14243 type = make_type_with_address_space (type, type_flags);
14244 }
14245 else if (TYPE_LENGTH (type) != byte_size)
14246 {
3e43a32a
MS
14247 complaint (&symfile_complaints,
14248 _("invalid pointer size %d"), byte_size);
8b2dbe47 14249 }
6e70227d 14250 else
9a619af0
MS
14251 {
14252 /* Should we also complain about unhandled address classes? */
14253 }
c906108c 14254 }
8b2dbe47
KB
14255
14256 TYPE_LENGTH (type) = byte_size;
f792889a 14257 return set_die_type (die, type, cu);
c906108c
SS
14258}
14259
14260/* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
14261 the user defined type vector. */
14262
f792889a 14263static struct type *
e7c27a73 14264read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c
SS
14265{
14266 struct type *type;
14267 struct type *to_type;
14268 struct type *domain;
14269
e7c27a73
DJ
14270 to_type = die_type (die, cu);
14271 domain = die_containing_type (die, cu);
0d5de010 14272
7e314c57
JK
14273 /* The calls above may have already set the type for this DIE. */
14274 type = get_die_type (die, cu);
14275 if (type)
14276 return type;
14277
0d5de010
DJ
14278 if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
14279 type = lookup_methodptr_type (to_type);
7078baeb
TT
14280 else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
14281 {
14282 struct type *new_type = alloc_type (cu->objfile);
14283
14284 smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
14285 TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
14286 TYPE_VARARGS (to_type));
14287 type = lookup_methodptr_type (new_type);
14288 }
0d5de010
DJ
14289 else
14290 type = lookup_memberptr_type (to_type, domain);
c906108c 14291
f792889a 14292 return set_die_type (die, type, cu);
c906108c
SS
14293}
14294
14295/* Extract all information from a DW_TAG_reference_type DIE and add to
14296 the user defined type vector. */
14297
f792889a 14298static struct type *
e7c27a73 14299read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14300{
e7c27a73 14301 struct comp_unit_head *cu_header = &cu->header;
7e314c57 14302 struct type *type, *target_type;
c906108c
SS
14303 struct attribute *attr;
14304
7e314c57
JK
14305 target_type = die_type (die, cu);
14306
14307 /* The die_type call above may have already set the type for this DIE. */
14308 type = get_die_type (die, cu);
14309 if (type)
14310 return type;
14311
14312 type = lookup_reference_type (target_type);
e142c38c 14313 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
14314 if (attr)
14315 {
14316 TYPE_LENGTH (type) = DW_UNSND (attr);
14317 }
14318 else
14319 {
107d2387 14320 TYPE_LENGTH (type) = cu_header->addr_size;
c906108c 14321 }
f792889a 14322 return set_die_type (die, type, cu);
c906108c
SS
14323}
14324
cf363f18
MW
14325/* Add the given cv-qualifiers to the element type of the array. GCC
14326 outputs DWARF type qualifiers that apply to an array, not the
14327 element type. But GDB relies on the array element type to carry
14328 the cv-qualifiers. This mimics section 6.7.3 of the C99
14329 specification. */
14330
14331static struct type *
14332add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
14333 struct type *base_type, int cnst, int voltl)
14334{
14335 struct type *el_type, *inner_array;
14336
14337 base_type = copy_type (base_type);
14338 inner_array = base_type;
14339
14340 while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
14341 {
14342 TYPE_TARGET_TYPE (inner_array) =
14343 copy_type (TYPE_TARGET_TYPE (inner_array));
14344 inner_array = TYPE_TARGET_TYPE (inner_array);
14345 }
14346
14347 el_type = TYPE_TARGET_TYPE (inner_array);
14348 cnst |= TYPE_CONST (el_type);
14349 voltl |= TYPE_VOLATILE (el_type);
14350 TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
14351
14352 return set_die_type (die, base_type, cu);
14353}
14354
f792889a 14355static struct type *
e7c27a73 14356read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14357{
f792889a 14358 struct type *base_type, *cv_type;
c906108c 14359
e7c27a73 14360 base_type = die_type (die, cu);
7e314c57
JK
14361
14362 /* The die_type call above may have already set the type for this DIE. */
14363 cv_type = get_die_type (die, cu);
14364 if (cv_type)
14365 return cv_type;
14366
2f608a3a
KW
14367 /* In case the const qualifier is applied to an array type, the element type
14368 is so qualified, not the array type (section 6.7.3 of C99). */
14369 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
cf363f18 14370 return add_array_cv_type (die, cu, base_type, 1, 0);
2f608a3a 14371
f792889a
DJ
14372 cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
14373 return set_die_type (die, cv_type, cu);
c906108c
SS
14374}
14375
f792889a 14376static struct type *
e7c27a73 14377read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14378{
f792889a 14379 struct type *base_type, *cv_type;
c906108c 14380
e7c27a73 14381 base_type = die_type (die, cu);
7e314c57
JK
14382
14383 /* The die_type call above may have already set the type for this DIE. */
14384 cv_type = get_die_type (die, cu);
14385 if (cv_type)
14386 return cv_type;
14387
cf363f18
MW
14388 /* In case the volatile qualifier is applied to an array type, the
14389 element type is so qualified, not the array type (section 6.7.3
14390 of C99). */
14391 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
14392 return add_array_cv_type (die, cu, base_type, 0, 1);
14393
f792889a
DJ
14394 cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
14395 return set_die_type (die, cv_type, cu);
c906108c
SS
14396}
14397
06d66ee9
TT
14398/* Handle DW_TAG_restrict_type. */
14399
14400static struct type *
14401read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
14402{
14403 struct type *base_type, *cv_type;
14404
14405 base_type = die_type (die, cu);
14406
14407 /* The die_type call above may have already set the type for this DIE. */
14408 cv_type = get_die_type (die, cu);
14409 if (cv_type)
14410 return cv_type;
14411
14412 cv_type = make_restrict_type (base_type);
14413 return set_die_type (die, cv_type, cu);
14414}
14415
a2c2acaf
MW
14416/* Handle DW_TAG_atomic_type. */
14417
14418static struct type *
14419read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
14420{
14421 struct type *base_type, *cv_type;
14422
14423 base_type = die_type (die, cu);
14424
14425 /* The die_type call above may have already set the type for this DIE. */
14426 cv_type = get_die_type (die, cu);
14427 if (cv_type)
14428 return cv_type;
14429
14430 cv_type = make_atomic_type (base_type);
14431 return set_die_type (die, cv_type, cu);
14432}
14433
c906108c
SS
14434/* Extract all information from a DW_TAG_string_type DIE and add to
14435 the user defined type vector. It isn't really a user defined type,
14436 but it behaves like one, with other DIE's using an AT_user_def_type
14437 attribute to reference it. */
14438
f792889a 14439static struct type *
e7c27a73 14440read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14441{
e7c27a73 14442 struct objfile *objfile = cu->objfile;
3b7538c0 14443 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
14444 struct type *type, *range_type, *index_type, *char_type;
14445 struct attribute *attr;
14446 unsigned int length;
14447
e142c38c 14448 attr = dwarf2_attr (die, DW_AT_string_length, cu);
c906108c
SS
14449 if (attr)
14450 {
14451 length = DW_UNSND (attr);
14452 }
14453 else
14454 {
0963b4bd 14455 /* Check for the DW_AT_byte_size attribute. */
e142c38c 14456 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
b21b22e0
PS
14457 if (attr)
14458 {
14459 length = DW_UNSND (attr);
14460 }
14461 else
14462 {
14463 length = 1;
14464 }
c906108c 14465 }
6ccb9162 14466
46bf5051 14467 index_type = objfile_type (objfile)->builtin_int;
0c9c3474 14468 range_type = create_static_range_type (NULL, index_type, 1, length);
3b7538c0
UW
14469 char_type = language_string_char_type (cu->language_defn, gdbarch);
14470 type = create_string_type (NULL, char_type, range_type);
6ccb9162 14471
f792889a 14472 return set_die_type (die, type, cu);
c906108c
SS
14473}
14474
4d804846
JB
14475/* Assuming that DIE corresponds to a function, returns nonzero
14476 if the function is prototyped. */
14477
14478static int
14479prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
14480{
14481 struct attribute *attr;
14482
14483 attr = dwarf2_attr (die, DW_AT_prototyped, cu);
14484 if (attr && (DW_UNSND (attr) != 0))
14485 return 1;
14486
14487 /* The DWARF standard implies that the DW_AT_prototyped attribute
14488 is only meaninful for C, but the concept also extends to other
14489 languages that allow unprototyped functions (Eg: Objective C).
14490 For all other languages, assume that functions are always
14491 prototyped. */
14492 if (cu->language != language_c
14493 && cu->language != language_objc
14494 && cu->language != language_opencl)
14495 return 1;
14496
14497 /* RealView does not emit DW_AT_prototyped. We can not distinguish
14498 prototyped and unprototyped functions; default to prototyped,
14499 since that is more common in modern code (and RealView warns
14500 about unprototyped functions). */
14501 if (producer_is_realview (cu->producer))
14502 return 1;
14503
14504 return 0;
14505}
14506
c906108c
SS
14507/* Handle DIES due to C code like:
14508
14509 struct foo
c5aa993b
JM
14510 {
14511 int (*funcp)(int a, long l);
14512 int b;
14513 };
c906108c 14514
0963b4bd 14515 ('funcp' generates a DW_TAG_subroutine_type DIE). */
c906108c 14516
f792889a 14517static struct type *
e7c27a73 14518read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14519{
bb5ed363 14520 struct objfile *objfile = cu->objfile;
0963b4bd
MS
14521 struct type *type; /* Type that this function returns. */
14522 struct type *ftype; /* Function that returns above type. */
c906108c
SS
14523 struct attribute *attr;
14524
e7c27a73 14525 type = die_type (die, cu);
7e314c57
JK
14526
14527 /* The die_type call above may have already set the type for this DIE. */
14528 ftype = get_die_type (die, cu);
14529 if (ftype)
14530 return ftype;
14531
0c8b41f1 14532 ftype = lookup_function_type (type);
c906108c 14533
4d804846 14534 if (prototyped_function_p (die, cu))
a6c727b2 14535 TYPE_PROTOTYPED (ftype) = 1;
c906108c 14536
c055b101
CV
14537 /* Store the calling convention in the type if it's available in
14538 the subroutine die. Otherwise set the calling convention to
14539 the default value DW_CC_normal. */
14540 attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
54fcddd0
UW
14541 if (attr)
14542 TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
14543 else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
14544 TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
14545 else
14546 TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
76c10ea2 14547
743649fd
MW
14548 /* Record whether the function returns normally to its caller or not
14549 if the DWARF producer set that information. */
14550 attr = dwarf2_attr (die, DW_AT_noreturn, cu);
14551 if (attr && (DW_UNSND (attr) != 0))
14552 TYPE_NO_RETURN (ftype) = 1;
14553
76c10ea2
GM
14554 /* We need to add the subroutine type to the die immediately so
14555 we don't infinitely recurse when dealing with parameters
0963b4bd 14556 declared as the same subroutine type. */
76c10ea2 14557 set_die_type (die, ftype, cu);
6e70227d 14558
639d11d3 14559 if (die->child != NULL)
c906108c 14560 {
bb5ed363 14561 struct type *void_type = objfile_type (objfile)->builtin_void;
c906108c 14562 struct die_info *child_die;
8072405b 14563 int nparams, iparams;
c906108c
SS
14564
14565 /* Count the number of parameters.
14566 FIXME: GDB currently ignores vararg functions, but knows about
14567 vararg member functions. */
8072405b 14568 nparams = 0;
639d11d3 14569 child_die = die->child;
c906108c
SS
14570 while (child_die && child_die->tag)
14571 {
14572 if (child_die->tag == DW_TAG_formal_parameter)
14573 nparams++;
14574 else if (child_die->tag == DW_TAG_unspecified_parameters)
876cecd0 14575 TYPE_VARARGS (ftype) = 1;
c906108c
SS
14576 child_die = sibling_die (child_die);
14577 }
14578
14579 /* Allocate storage for parameters and fill them in. */
14580 TYPE_NFIELDS (ftype) = nparams;
14581 TYPE_FIELDS (ftype) = (struct field *)
ae5a43e0 14582 TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
c906108c 14583
8072405b
JK
14584 /* TYPE_FIELD_TYPE must never be NULL. Pre-fill the array to ensure it
14585 even if we error out during the parameters reading below. */
14586 for (iparams = 0; iparams < nparams; iparams++)
14587 TYPE_FIELD_TYPE (ftype, iparams) = void_type;
14588
14589 iparams = 0;
639d11d3 14590 child_die = die->child;
c906108c
SS
14591 while (child_die && child_die->tag)
14592 {
14593 if (child_die->tag == DW_TAG_formal_parameter)
14594 {
3ce3b1ba
PA
14595 struct type *arg_type;
14596
14597 /* DWARF version 2 has no clean way to discern C++
14598 static and non-static member functions. G++ helps
14599 GDB by marking the first parameter for non-static
14600 member functions (which is the this pointer) as
14601 artificial. We pass this information to
14602 dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
14603
14604 DWARF version 3 added DW_AT_object_pointer, which GCC
14605 4.5 does not yet generate. */
e142c38c 14606 attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
c906108c
SS
14607 if (attr)
14608 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
14609 else
418835cc
KS
14610 {
14611 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
14612
14613 /* GCC/43521: In java, the formal parameter
14614 "this" is sometimes not marked with DW_AT_artificial. */
14615 if (cu->language == language_java)
14616 {
14617 const char *name = dwarf2_name (child_die, cu);
9a619af0 14618
418835cc
KS
14619 if (name && !strcmp (name, "this"))
14620 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 1;
14621 }
14622 }
3ce3b1ba
PA
14623 arg_type = die_type (child_die, cu);
14624
14625 /* RealView does not mark THIS as const, which the testsuite
14626 expects. GCC marks THIS as const in method definitions,
14627 but not in the class specifications (GCC PR 43053). */
14628 if (cu->language == language_cplus && !TYPE_CONST (arg_type)
14629 && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
14630 {
14631 int is_this = 0;
14632 struct dwarf2_cu *arg_cu = cu;
14633 const char *name = dwarf2_name (child_die, cu);
14634
14635 attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
14636 if (attr)
14637 {
14638 /* If the compiler emits this, use it. */
14639 if (follow_die_ref (die, attr, &arg_cu) == child_die)
14640 is_this = 1;
14641 }
14642 else if (name && strcmp (name, "this") == 0)
14643 /* Function definitions will have the argument names. */
14644 is_this = 1;
14645 else if (name == NULL && iparams == 0)
14646 /* Declarations may not have the names, so like
14647 elsewhere in GDB, assume an artificial first
14648 argument is "this". */
14649 is_this = 1;
14650
14651 if (is_this)
14652 arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
14653 arg_type, 0);
14654 }
14655
14656 TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
c906108c
SS
14657 iparams++;
14658 }
14659 child_die = sibling_die (child_die);
14660 }
14661 }
14662
76c10ea2 14663 return ftype;
c906108c
SS
14664}
14665
f792889a 14666static struct type *
e7c27a73 14667read_typedef (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14668{
e7c27a73 14669 struct objfile *objfile = cu->objfile;
0114d602 14670 const char *name = NULL;
3c8e0968 14671 struct type *this_type, *target_type;
c906108c 14672
94af9270 14673 name = dwarf2_full_name (NULL, die, cu);
f792889a 14674 this_type = init_type (TYPE_CODE_TYPEDEF, 0,
0114d602 14675 TYPE_FLAG_TARGET_STUB, NULL, objfile);
abee88f2 14676 TYPE_NAME (this_type) = name;
f792889a 14677 set_die_type (die, this_type, cu);
3c8e0968
DE
14678 target_type = die_type (die, cu);
14679 if (target_type != this_type)
14680 TYPE_TARGET_TYPE (this_type) = target_type;
14681 else
14682 {
14683 /* Self-referential typedefs are, it seems, not allowed by the DWARF
14684 spec and cause infinite loops in GDB. */
14685 complaint (&symfile_complaints,
14686 _("Self-referential DW_TAG_typedef "
14687 "- DIE at 0x%x [in module %s]"),
4262abfb 14688 die->offset.sect_off, objfile_name (objfile));
3c8e0968
DE
14689 TYPE_TARGET_TYPE (this_type) = NULL;
14690 }
f792889a 14691 return this_type;
c906108c
SS
14692}
14693
14694/* Find a representation of a given base type and install
14695 it in the TYPE field of the die. */
14696
f792889a 14697static struct type *
e7c27a73 14698read_base_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14699{
e7c27a73 14700 struct objfile *objfile = cu->objfile;
c906108c
SS
14701 struct type *type;
14702 struct attribute *attr;
14703 int encoding = 0, size = 0;
15d034d0 14704 const char *name;
6ccb9162
UW
14705 enum type_code code = TYPE_CODE_INT;
14706 int type_flags = 0;
14707 struct type *target_type = NULL;
c906108c 14708
e142c38c 14709 attr = dwarf2_attr (die, DW_AT_encoding, cu);
c906108c
SS
14710 if (attr)
14711 {
14712 encoding = DW_UNSND (attr);
14713 }
e142c38c 14714 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
14715 if (attr)
14716 {
14717 size = DW_UNSND (attr);
14718 }
39cbfefa 14719 name = dwarf2_name (die, cu);
6ccb9162 14720 if (!name)
c906108c 14721 {
6ccb9162
UW
14722 complaint (&symfile_complaints,
14723 _("DW_AT_name missing from DW_TAG_base_type"));
c906108c 14724 }
6ccb9162
UW
14725
14726 switch (encoding)
c906108c 14727 {
6ccb9162
UW
14728 case DW_ATE_address:
14729 /* Turn DW_ATE_address into a void * pointer. */
14730 code = TYPE_CODE_PTR;
14731 type_flags |= TYPE_FLAG_UNSIGNED;
14732 target_type = init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
14733 break;
14734 case DW_ATE_boolean:
14735 code = TYPE_CODE_BOOL;
14736 type_flags |= TYPE_FLAG_UNSIGNED;
14737 break;
14738 case DW_ATE_complex_float:
14739 code = TYPE_CODE_COMPLEX;
14740 target_type = init_type (TYPE_CODE_FLT, size / 2, 0, NULL, objfile);
14741 break;
14742 case DW_ATE_decimal_float:
14743 code = TYPE_CODE_DECFLOAT;
14744 break;
14745 case DW_ATE_float:
14746 code = TYPE_CODE_FLT;
14747 break;
14748 case DW_ATE_signed:
14749 break;
14750 case DW_ATE_unsigned:
14751 type_flags |= TYPE_FLAG_UNSIGNED;
3b2b8fea
TT
14752 if (cu->language == language_fortran
14753 && name
61012eef 14754 && startswith (name, "character("))
3b2b8fea 14755 code = TYPE_CODE_CHAR;
6ccb9162
UW
14756 break;
14757 case DW_ATE_signed_char:
6e70227d 14758 if (cu->language == language_ada || cu->language == language_m2
3b2b8fea
TT
14759 || cu->language == language_pascal
14760 || cu->language == language_fortran)
6ccb9162
UW
14761 code = TYPE_CODE_CHAR;
14762 break;
14763 case DW_ATE_unsigned_char:
868a0084 14764 if (cu->language == language_ada || cu->language == language_m2
3b2b8fea
TT
14765 || cu->language == language_pascal
14766 || cu->language == language_fortran)
6ccb9162
UW
14767 code = TYPE_CODE_CHAR;
14768 type_flags |= TYPE_FLAG_UNSIGNED;
14769 break;
75079b2b
TT
14770 case DW_ATE_UTF:
14771 /* We just treat this as an integer and then recognize the
14772 type by name elsewhere. */
14773 break;
14774
6ccb9162
UW
14775 default:
14776 complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
14777 dwarf_type_encoding_name (encoding));
14778 break;
c906108c 14779 }
6ccb9162 14780
0114d602
DJ
14781 type = init_type (code, size, type_flags, NULL, objfile);
14782 TYPE_NAME (type) = name;
6ccb9162
UW
14783 TYPE_TARGET_TYPE (type) = target_type;
14784
0114d602 14785 if (name && strcmp (name, "char") == 0)
876cecd0 14786 TYPE_NOSIGN (type) = 1;
0114d602 14787
f792889a 14788 return set_die_type (die, type, cu);
c906108c
SS
14789}
14790
80180f79
SA
14791/* Parse dwarf attribute if it's a block, reference or constant and put the
14792 resulting value of the attribute into struct bound_prop.
14793 Returns 1 if ATTR could be resolved into PROP, 0 otherwise. */
14794
14795static int
14796attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
14797 struct dwarf2_cu *cu, struct dynamic_prop *prop)
14798{
14799 struct dwarf2_property_baton *baton;
14800 struct obstack *obstack = &cu->objfile->objfile_obstack;
14801
14802 if (attr == NULL || prop == NULL)
14803 return 0;
14804
14805 if (attr_form_is_block (attr))
14806 {
8d749320 14807 baton = XOBNEW (obstack, struct dwarf2_property_baton);
80180f79
SA
14808 baton->referenced_type = NULL;
14809 baton->locexpr.per_cu = cu->per_cu;
14810 baton->locexpr.size = DW_BLOCK (attr)->size;
14811 baton->locexpr.data = DW_BLOCK (attr)->data;
14812 prop->data.baton = baton;
14813 prop->kind = PROP_LOCEXPR;
14814 gdb_assert (prop->data.baton != NULL);
14815 }
14816 else if (attr_form_is_ref (attr))
14817 {
14818 struct dwarf2_cu *target_cu = cu;
14819 struct die_info *target_die;
14820 struct attribute *target_attr;
14821
14822 target_die = follow_die_ref (die, attr, &target_cu);
14823 target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
df25ebbd
JB
14824 if (target_attr == NULL)
14825 target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
14826 target_cu);
80180f79
SA
14827 if (target_attr == NULL)
14828 return 0;
14829
df25ebbd 14830 switch (target_attr->name)
80180f79 14831 {
df25ebbd
JB
14832 case DW_AT_location:
14833 if (attr_form_is_section_offset (target_attr))
14834 {
8d749320 14835 baton = XOBNEW (obstack, struct dwarf2_property_baton);
df25ebbd
JB
14836 baton->referenced_type = die_type (target_die, target_cu);
14837 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
14838 prop->data.baton = baton;
14839 prop->kind = PROP_LOCLIST;
14840 gdb_assert (prop->data.baton != NULL);
14841 }
14842 else if (attr_form_is_block (target_attr))
14843 {
8d749320 14844 baton = XOBNEW (obstack, struct dwarf2_property_baton);
df25ebbd
JB
14845 baton->referenced_type = die_type (target_die, target_cu);
14846 baton->locexpr.per_cu = cu->per_cu;
14847 baton->locexpr.size = DW_BLOCK (target_attr)->size;
14848 baton->locexpr.data = DW_BLOCK (target_attr)->data;
14849 prop->data.baton = baton;
14850 prop->kind = PROP_LOCEXPR;
14851 gdb_assert (prop->data.baton != NULL);
14852 }
14853 else
14854 {
14855 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
14856 "dynamic property");
14857 return 0;
14858 }
14859 break;
14860 case DW_AT_data_member_location:
14861 {
14862 LONGEST offset;
14863
14864 if (!handle_data_member_location (target_die, target_cu,
14865 &offset))
14866 return 0;
14867
8d749320 14868 baton = XOBNEW (obstack, struct dwarf2_property_baton);
6ad395a7
JB
14869 baton->referenced_type = read_type_die (target_die->parent,
14870 target_cu);
df25ebbd
JB
14871 baton->offset_info.offset = offset;
14872 baton->offset_info.type = die_type (target_die, target_cu);
14873 prop->data.baton = baton;
14874 prop->kind = PROP_ADDR_OFFSET;
14875 break;
14876 }
80180f79
SA
14877 }
14878 }
14879 else if (attr_form_is_constant (attr))
14880 {
14881 prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
14882 prop->kind = PROP_CONST;
14883 }
14884 else
14885 {
14886 dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
14887 dwarf2_name (die, cu));
14888 return 0;
14889 }
14890
14891 return 1;
14892}
14893
a02abb62
JB
14894/* Read the given DW_AT_subrange DIE. */
14895
f792889a 14896static struct type *
a02abb62
JB
14897read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
14898{
4c9ad8c2 14899 struct type *base_type, *orig_base_type;
a02abb62
JB
14900 struct type *range_type;
14901 struct attribute *attr;
729efb13 14902 struct dynamic_prop low, high;
4fae6e18 14903 int low_default_is_valid;
c451ebe5 14904 int high_bound_is_count = 0;
15d034d0 14905 const char *name;
43bbcdc2 14906 LONGEST negative_mask;
e77813c8 14907
4c9ad8c2
TT
14908 orig_base_type = die_type (die, cu);
14909 /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
14910 whereas the real type might be. So, we use ORIG_BASE_TYPE when
14911 creating the range type, but we use the result of check_typedef
14912 when examining properties of the type. */
14913 base_type = check_typedef (orig_base_type);
a02abb62 14914
7e314c57
JK
14915 /* The die_type call above may have already set the type for this DIE. */
14916 range_type = get_die_type (die, cu);
14917 if (range_type)
14918 return range_type;
14919
729efb13
SA
14920 low.kind = PROP_CONST;
14921 high.kind = PROP_CONST;
14922 high.data.const_val = 0;
14923
4fae6e18
JK
14924 /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
14925 omitting DW_AT_lower_bound. */
14926 switch (cu->language)
6e70227d 14927 {
4fae6e18
JK
14928 case language_c:
14929 case language_cplus:
729efb13 14930 low.data.const_val = 0;
4fae6e18
JK
14931 low_default_is_valid = 1;
14932 break;
14933 case language_fortran:
729efb13 14934 low.data.const_val = 1;
4fae6e18
JK
14935 low_default_is_valid = 1;
14936 break;
14937 case language_d:
14938 case language_java:
14939 case language_objc:
729efb13 14940 low.data.const_val = 0;
4fae6e18
JK
14941 low_default_is_valid = (cu->header.version >= 4);
14942 break;
14943 case language_ada:
14944 case language_m2:
14945 case language_pascal:
729efb13 14946 low.data.const_val = 1;
4fae6e18
JK
14947 low_default_is_valid = (cu->header.version >= 4);
14948 break;
14949 default:
729efb13 14950 low.data.const_val = 0;
4fae6e18
JK
14951 low_default_is_valid = 0;
14952 break;
a02abb62
JB
14953 }
14954
e142c38c 14955 attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
a02abb62 14956 if (attr)
11c1ba78 14957 attr_to_dynamic_prop (attr, die, cu, &low);
4fae6e18
JK
14958 else if (!low_default_is_valid)
14959 complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
14960 "- DIE at 0x%x [in module %s]"),
4262abfb 14961 die->offset.sect_off, objfile_name (cu->objfile));
a02abb62 14962
e142c38c 14963 attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
80180f79 14964 if (!attr_to_dynamic_prop (attr, die, cu, &high))
e77813c8
PM
14965 {
14966 attr = dwarf2_attr (die, DW_AT_count, cu);
c451ebe5 14967 if (attr_to_dynamic_prop (attr, die, cu, &high))
6b662e19 14968 {
c451ebe5
SA
14969 /* If bounds are constant do the final calculation here. */
14970 if (low.kind == PROP_CONST && high.kind == PROP_CONST)
14971 high.data.const_val = low.data.const_val + high.data.const_val - 1;
14972 else
14973 high_bound_is_count = 1;
c2ff108b 14974 }
e77813c8
PM
14975 }
14976
14977 /* Dwarf-2 specifications explicitly allows to create subrange types
14978 without specifying a base type.
14979 In that case, the base type must be set to the type of
14980 the lower bound, upper bound or count, in that order, if any of these
14981 three attributes references an object that has a type.
14982 If no base type is found, the Dwarf-2 specifications say that
14983 a signed integer type of size equal to the size of an address should
14984 be used.
14985 For the following C code: `extern char gdb_int [];'
14986 GCC produces an empty range DIE.
14987 FIXME: muller/2010-05-28: Possible references to object for low bound,
0963b4bd 14988 high bound or count are not yet handled by this code. */
e77813c8
PM
14989 if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
14990 {
14991 struct objfile *objfile = cu->objfile;
14992 struct gdbarch *gdbarch = get_objfile_arch (objfile);
14993 int addr_size = gdbarch_addr_bit (gdbarch) /8;
14994 struct type *int_type = objfile_type (objfile)->builtin_int;
14995
14996 /* Test "int", "long int", and "long long int" objfile types,
14997 and select the first one having a size above or equal to the
14998 architecture address size. */
14999 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15000 base_type = int_type;
15001 else
15002 {
15003 int_type = objfile_type (objfile)->builtin_long;
15004 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15005 base_type = int_type;
15006 else
15007 {
15008 int_type = objfile_type (objfile)->builtin_long_long;
15009 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15010 base_type = int_type;
15011 }
15012 }
15013 }
a02abb62 15014
dbb9c2b1
JB
15015 /* Normally, the DWARF producers are expected to use a signed
15016 constant form (Eg. DW_FORM_sdata) to express negative bounds.
15017 But this is unfortunately not always the case, as witnessed
15018 with GCC, for instance, where the ambiguous DW_FORM_dataN form
15019 is used instead. To work around that ambiguity, we treat
15020 the bounds as signed, and thus sign-extend their values, when
15021 the base type is signed. */
6e70227d 15022 negative_mask =
43bbcdc2 15023 (LONGEST) -1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1);
729efb13
SA
15024 if (low.kind == PROP_CONST
15025 && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
15026 low.data.const_val |= negative_mask;
15027 if (high.kind == PROP_CONST
15028 && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
15029 high.data.const_val |= negative_mask;
43bbcdc2 15030
729efb13 15031 range_type = create_range_type (NULL, orig_base_type, &low, &high);
a02abb62 15032
c451ebe5
SA
15033 if (high_bound_is_count)
15034 TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
15035
c2ff108b
JK
15036 /* Ada expects an empty array on no boundary attributes. */
15037 if (attr == NULL && cu->language != language_ada)
729efb13 15038 TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
c2ff108b 15039
39cbfefa
DJ
15040 name = dwarf2_name (die, cu);
15041 if (name)
15042 TYPE_NAME (range_type) = name;
6e70227d 15043
e142c38c 15044 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
a02abb62
JB
15045 if (attr)
15046 TYPE_LENGTH (range_type) = DW_UNSND (attr);
15047
7e314c57
JK
15048 set_die_type (die, range_type, cu);
15049
15050 /* set_die_type should be already done. */
b4ba55a1
JB
15051 set_descriptive_type (range_type, die, cu);
15052
7e314c57 15053 return range_type;
a02abb62 15054}
6e70227d 15055
f792889a 15056static struct type *
81a17f79
JB
15057read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
15058{
15059 struct type *type;
81a17f79 15060
81a17f79
JB
15061 /* For now, we only support the C meaning of an unspecified type: void. */
15062
0114d602
DJ
15063 type = init_type (TYPE_CODE_VOID, 0, 0, NULL, cu->objfile);
15064 TYPE_NAME (type) = dwarf2_name (die, cu);
81a17f79 15065
f792889a 15066 return set_die_type (die, type, cu);
81a17f79 15067}
a02abb62 15068
639d11d3
DC
15069/* Read a single die and all its descendents. Set the die's sibling
15070 field to NULL; set other fields in the die correctly, and set all
15071 of the descendents' fields correctly. Set *NEW_INFO_PTR to the
15072 location of the info_ptr after reading all of those dies. PARENT
15073 is the parent of the die in question. */
15074
15075static struct die_info *
dee91e82 15076read_die_and_children (const struct die_reader_specs *reader,
d521ce57
TT
15077 const gdb_byte *info_ptr,
15078 const gdb_byte **new_info_ptr,
dee91e82 15079 struct die_info *parent)
639d11d3
DC
15080{
15081 struct die_info *die;
d521ce57 15082 const gdb_byte *cur_ptr;
639d11d3
DC
15083 int has_children;
15084
bf6af496 15085 cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
1d325ec1
DJ
15086 if (die == NULL)
15087 {
15088 *new_info_ptr = cur_ptr;
15089 return NULL;
15090 }
93311388 15091 store_in_ref_table (die, reader->cu);
639d11d3
DC
15092
15093 if (has_children)
bf6af496 15094 die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
639d11d3
DC
15095 else
15096 {
15097 die->child = NULL;
15098 *new_info_ptr = cur_ptr;
15099 }
15100
15101 die->sibling = NULL;
15102 die->parent = parent;
15103 return die;
15104}
15105
15106/* Read a die, all of its descendents, and all of its siblings; set
15107 all of the fields of all of the dies correctly. Arguments are as
15108 in read_die_and_children. */
15109
15110static struct die_info *
bf6af496 15111read_die_and_siblings_1 (const struct die_reader_specs *reader,
d521ce57
TT
15112 const gdb_byte *info_ptr,
15113 const gdb_byte **new_info_ptr,
bf6af496 15114 struct die_info *parent)
639d11d3
DC
15115{
15116 struct die_info *first_die, *last_sibling;
d521ce57 15117 const gdb_byte *cur_ptr;
639d11d3 15118
c906108c 15119 cur_ptr = info_ptr;
639d11d3
DC
15120 first_die = last_sibling = NULL;
15121
15122 while (1)
c906108c 15123 {
639d11d3 15124 struct die_info *die
dee91e82 15125 = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
639d11d3 15126
1d325ec1 15127 if (die == NULL)
c906108c 15128 {
639d11d3
DC
15129 *new_info_ptr = cur_ptr;
15130 return first_die;
c906108c 15131 }
1d325ec1
DJ
15132
15133 if (!first_die)
15134 first_die = die;
c906108c 15135 else
1d325ec1
DJ
15136 last_sibling->sibling = die;
15137
15138 last_sibling = die;
c906108c 15139 }
c906108c
SS
15140}
15141
bf6af496
DE
15142/* Read a die, all of its descendents, and all of its siblings; set
15143 all of the fields of all of the dies correctly. Arguments are as
15144 in read_die_and_children.
15145 This the main entry point for reading a DIE and all its children. */
15146
15147static struct die_info *
15148read_die_and_siblings (const struct die_reader_specs *reader,
d521ce57
TT
15149 const gdb_byte *info_ptr,
15150 const gdb_byte **new_info_ptr,
bf6af496
DE
15151 struct die_info *parent)
15152{
15153 struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
15154 new_info_ptr, parent);
15155
b4f54984 15156 if (dwarf_die_debug)
bf6af496
DE
15157 {
15158 fprintf_unfiltered (gdb_stdlog,
15159 "Read die from %s@0x%x of %s:\n",
a32a8923 15160 get_section_name (reader->die_section),
bf6af496
DE
15161 (unsigned) (info_ptr - reader->die_section->buffer),
15162 bfd_get_filename (reader->abfd));
b4f54984 15163 dump_die (die, dwarf_die_debug);
bf6af496
DE
15164 }
15165
15166 return die;
15167}
15168
3019eac3
DE
15169/* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
15170 attributes.
15171 The caller is responsible for filling in the extra attributes
15172 and updating (*DIEP)->num_attrs.
15173 Set DIEP to point to a newly allocated die with its information,
15174 except for its child, sibling, and parent fields.
15175 Set HAS_CHILDREN to tell whether the die has children or not. */
93311388 15176
d521ce57 15177static const gdb_byte *
3019eac3 15178read_full_die_1 (const struct die_reader_specs *reader,
d521ce57 15179 struct die_info **diep, const gdb_byte *info_ptr,
3019eac3 15180 int *has_children, int num_extra_attrs)
93311388 15181{
b64f50a1
JK
15182 unsigned int abbrev_number, bytes_read, i;
15183 sect_offset offset;
93311388
DE
15184 struct abbrev_info *abbrev;
15185 struct die_info *die;
15186 struct dwarf2_cu *cu = reader->cu;
15187 bfd *abfd = reader->abfd;
15188
b64f50a1 15189 offset.sect_off = info_ptr - reader->buffer;
93311388
DE
15190 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15191 info_ptr += bytes_read;
15192 if (!abbrev_number)
15193 {
15194 *diep = NULL;
15195 *has_children = 0;
15196 return info_ptr;
15197 }
15198
433df2d4 15199 abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
93311388 15200 if (!abbrev)
348e048f
DE
15201 error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
15202 abbrev_number,
15203 bfd_get_filename (abfd));
15204
3019eac3 15205 die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
93311388
DE
15206 die->offset = offset;
15207 die->tag = abbrev->tag;
15208 die->abbrev = abbrev_number;
15209
3019eac3
DE
15210 /* Make the result usable.
15211 The caller needs to update num_attrs after adding the extra
15212 attributes. */
93311388
DE
15213 die->num_attrs = abbrev->num_attrs;
15214
15215 for (i = 0; i < abbrev->num_attrs; ++i)
dee91e82
DE
15216 info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
15217 info_ptr);
93311388
DE
15218
15219 *diep = die;
15220 *has_children = abbrev->has_children;
15221 return info_ptr;
15222}
15223
3019eac3
DE
15224/* Read a die and all its attributes.
15225 Set DIEP to point to a newly allocated die with its information,
15226 except for its child, sibling, and parent fields.
15227 Set HAS_CHILDREN to tell whether the die has children or not. */
15228
d521ce57 15229static const gdb_byte *
3019eac3 15230read_full_die (const struct die_reader_specs *reader,
d521ce57 15231 struct die_info **diep, const gdb_byte *info_ptr,
3019eac3
DE
15232 int *has_children)
15233{
d521ce57 15234 const gdb_byte *result;
bf6af496
DE
15235
15236 result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
15237
b4f54984 15238 if (dwarf_die_debug)
bf6af496
DE
15239 {
15240 fprintf_unfiltered (gdb_stdlog,
15241 "Read die from %s@0x%x of %s:\n",
a32a8923 15242 get_section_name (reader->die_section),
bf6af496
DE
15243 (unsigned) (info_ptr - reader->die_section->buffer),
15244 bfd_get_filename (reader->abfd));
b4f54984 15245 dump_die (*diep, dwarf_die_debug);
bf6af496
DE
15246 }
15247
15248 return result;
3019eac3 15249}
433df2d4
DE
15250\f
15251/* Abbreviation tables.
3019eac3 15252
433df2d4 15253 In DWARF version 2, the description of the debugging information is
c906108c
SS
15254 stored in a separate .debug_abbrev section. Before we read any
15255 dies from a section we read in all abbreviations and install them
433df2d4
DE
15256 in a hash table. */
15257
15258/* Allocate space for a struct abbrev_info object in ABBREV_TABLE. */
15259
15260static struct abbrev_info *
15261abbrev_table_alloc_abbrev (struct abbrev_table *abbrev_table)
15262{
15263 struct abbrev_info *abbrev;
15264
8d749320 15265 abbrev = XOBNEW (&abbrev_table->abbrev_obstack, struct abbrev_info);
433df2d4 15266 memset (abbrev, 0, sizeof (struct abbrev_info));
8d749320 15267
433df2d4
DE
15268 return abbrev;
15269}
15270
15271/* Add an abbreviation to the table. */
c906108c
SS
15272
15273static void
433df2d4
DE
15274abbrev_table_add_abbrev (struct abbrev_table *abbrev_table,
15275 unsigned int abbrev_number,
15276 struct abbrev_info *abbrev)
15277{
15278 unsigned int hash_number;
15279
15280 hash_number = abbrev_number % ABBREV_HASH_SIZE;
15281 abbrev->next = abbrev_table->abbrevs[hash_number];
15282 abbrev_table->abbrevs[hash_number] = abbrev;
15283}
dee91e82 15284
433df2d4
DE
15285/* Look up an abbrev in the table.
15286 Returns NULL if the abbrev is not found. */
15287
15288static struct abbrev_info *
15289abbrev_table_lookup_abbrev (const struct abbrev_table *abbrev_table,
15290 unsigned int abbrev_number)
c906108c 15291{
433df2d4
DE
15292 unsigned int hash_number;
15293 struct abbrev_info *abbrev;
15294
15295 hash_number = abbrev_number % ABBREV_HASH_SIZE;
15296 abbrev = abbrev_table->abbrevs[hash_number];
15297
15298 while (abbrev)
15299 {
15300 if (abbrev->number == abbrev_number)
15301 return abbrev;
15302 abbrev = abbrev->next;
15303 }
15304 return NULL;
15305}
15306
15307/* Read in an abbrev table. */
15308
15309static struct abbrev_table *
15310abbrev_table_read_table (struct dwarf2_section_info *section,
15311 sect_offset offset)
15312{
15313 struct objfile *objfile = dwarf2_per_objfile->objfile;
a32a8923 15314 bfd *abfd = get_section_bfd_owner (section);
433df2d4 15315 struct abbrev_table *abbrev_table;
d521ce57 15316 const gdb_byte *abbrev_ptr;
c906108c
SS
15317 struct abbrev_info *cur_abbrev;
15318 unsigned int abbrev_number, bytes_read, abbrev_name;
433df2d4 15319 unsigned int abbrev_form;
f3dd6933
DJ
15320 struct attr_abbrev *cur_attrs;
15321 unsigned int allocated_attrs;
c906108c 15322
70ba0933 15323 abbrev_table = XNEW (struct abbrev_table);
f4dc4d17 15324 abbrev_table->offset = offset;
433df2d4 15325 obstack_init (&abbrev_table->abbrev_obstack);
8d749320
SM
15326 abbrev_table->abbrevs =
15327 XOBNEWVEC (&abbrev_table->abbrev_obstack, struct abbrev_info *,
15328 ABBREV_HASH_SIZE);
433df2d4
DE
15329 memset (abbrev_table->abbrevs, 0,
15330 ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
c906108c 15331
433df2d4
DE
15332 dwarf2_read_section (objfile, section);
15333 abbrev_ptr = section->buffer + offset.sect_off;
c906108c
SS
15334 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15335 abbrev_ptr += bytes_read;
15336
f3dd6933 15337 allocated_attrs = ATTR_ALLOC_CHUNK;
8d749320 15338 cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
6e70227d 15339
0963b4bd 15340 /* Loop until we reach an abbrev number of 0. */
c906108c
SS
15341 while (abbrev_number)
15342 {
433df2d4 15343 cur_abbrev = abbrev_table_alloc_abbrev (abbrev_table);
c906108c
SS
15344
15345 /* read in abbrev header */
15346 cur_abbrev->number = abbrev_number;
aead7601
SM
15347 cur_abbrev->tag
15348 = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
c906108c
SS
15349 abbrev_ptr += bytes_read;
15350 cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
15351 abbrev_ptr += 1;
15352
15353 /* now read in declarations */
15354 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15355 abbrev_ptr += bytes_read;
15356 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15357 abbrev_ptr += bytes_read;
15358 while (abbrev_name)
15359 {
f3dd6933 15360 if (cur_abbrev->num_attrs == allocated_attrs)
c906108c 15361 {
f3dd6933
DJ
15362 allocated_attrs += ATTR_ALLOC_CHUNK;
15363 cur_attrs
15364 = xrealloc (cur_attrs, (allocated_attrs
15365 * sizeof (struct attr_abbrev)));
c906108c 15366 }
ae038cb0 15367
aead7601
SM
15368 cur_attrs[cur_abbrev->num_attrs].name
15369 = (enum dwarf_attribute) abbrev_name;
15370 cur_attrs[cur_abbrev->num_attrs++].form
15371 = (enum dwarf_form) abbrev_form;
c906108c
SS
15372 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15373 abbrev_ptr += bytes_read;
15374 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15375 abbrev_ptr += bytes_read;
15376 }
15377
8d749320
SM
15378 cur_abbrev->attrs =
15379 XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
15380 cur_abbrev->num_attrs);
f3dd6933
DJ
15381 memcpy (cur_abbrev->attrs, cur_attrs,
15382 cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
15383
433df2d4 15384 abbrev_table_add_abbrev (abbrev_table, abbrev_number, cur_abbrev);
c906108c
SS
15385
15386 /* Get next abbreviation.
15387 Under Irix6 the abbreviations for a compilation unit are not
c5aa993b
JM
15388 always properly terminated with an abbrev number of 0.
15389 Exit loop if we encounter an abbreviation which we have
15390 already read (which means we are about to read the abbreviations
15391 for the next compile unit) or if the end of the abbreviation
15392 table is reached. */
433df2d4 15393 if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
c906108c
SS
15394 break;
15395 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15396 abbrev_ptr += bytes_read;
433df2d4 15397 if (abbrev_table_lookup_abbrev (abbrev_table, abbrev_number) != NULL)
c906108c
SS
15398 break;
15399 }
f3dd6933
DJ
15400
15401 xfree (cur_attrs);
433df2d4 15402 return abbrev_table;
c906108c
SS
15403}
15404
433df2d4 15405/* Free the resources held by ABBREV_TABLE. */
c906108c 15406
c906108c 15407static void
433df2d4 15408abbrev_table_free (struct abbrev_table *abbrev_table)
c906108c 15409{
433df2d4
DE
15410 obstack_free (&abbrev_table->abbrev_obstack, NULL);
15411 xfree (abbrev_table);
c906108c
SS
15412}
15413
f4dc4d17
DE
15414/* Same as abbrev_table_free but as a cleanup.
15415 We pass in a pointer to the pointer to the table so that we can
15416 set the pointer to NULL when we're done. It also simplifies
73051182 15417 build_type_psymtabs_1. */
f4dc4d17
DE
15418
15419static void
15420abbrev_table_free_cleanup (void *table_ptr)
15421{
15422 struct abbrev_table **abbrev_table_ptr = table_ptr;
15423
15424 if (*abbrev_table_ptr != NULL)
15425 abbrev_table_free (*abbrev_table_ptr);
15426 *abbrev_table_ptr = NULL;
15427}
15428
433df2d4
DE
15429/* Read the abbrev table for CU from ABBREV_SECTION. */
15430
15431static void
15432dwarf2_read_abbrevs (struct dwarf2_cu *cu,
15433 struct dwarf2_section_info *abbrev_section)
c906108c 15434{
433df2d4
DE
15435 cu->abbrev_table =
15436 abbrev_table_read_table (abbrev_section, cu->header.abbrev_offset);
15437}
c906108c 15438
433df2d4 15439/* Release the memory used by the abbrev table for a compilation unit. */
c906108c 15440
433df2d4
DE
15441static void
15442dwarf2_free_abbrev_table (void *ptr_to_cu)
15443{
15444 struct dwarf2_cu *cu = ptr_to_cu;
c906108c 15445
a2ce51a0
DE
15446 if (cu->abbrev_table != NULL)
15447 abbrev_table_free (cu->abbrev_table);
433df2d4
DE
15448 /* Set this to NULL so that we SEGV if we try to read it later,
15449 and also because free_comp_unit verifies this is NULL. */
15450 cu->abbrev_table = NULL;
15451}
15452\f
72bf9492
DJ
15453/* Returns nonzero if TAG represents a type that we might generate a partial
15454 symbol for. */
15455
15456static int
15457is_type_tag_for_partial (int tag)
15458{
15459 switch (tag)
15460 {
15461#if 0
15462 /* Some types that would be reasonable to generate partial symbols for,
15463 that we don't at present. */
15464 case DW_TAG_array_type:
15465 case DW_TAG_file_type:
15466 case DW_TAG_ptr_to_member_type:
15467 case DW_TAG_set_type:
15468 case DW_TAG_string_type:
15469 case DW_TAG_subroutine_type:
15470#endif
15471 case DW_TAG_base_type:
15472 case DW_TAG_class_type:
680b30c7 15473 case DW_TAG_interface_type:
72bf9492
DJ
15474 case DW_TAG_enumeration_type:
15475 case DW_TAG_structure_type:
15476 case DW_TAG_subrange_type:
15477 case DW_TAG_typedef:
15478 case DW_TAG_union_type:
15479 return 1;
15480 default:
15481 return 0;
15482 }
15483}
15484
15485/* Load all DIEs that are interesting for partial symbols into memory. */
15486
15487static struct partial_die_info *
dee91e82 15488load_partial_dies (const struct die_reader_specs *reader,
d521ce57 15489 const gdb_byte *info_ptr, int building_psymtab)
72bf9492 15490{
dee91e82 15491 struct dwarf2_cu *cu = reader->cu;
bb5ed363 15492 struct objfile *objfile = cu->objfile;
72bf9492
DJ
15493 struct partial_die_info *part_die;
15494 struct partial_die_info *parent_die, *last_die, *first_die = NULL;
15495 struct abbrev_info *abbrev;
15496 unsigned int bytes_read;
5afb4e99 15497 unsigned int load_all = 0;
72bf9492
DJ
15498 int nesting_level = 1;
15499
15500 parent_die = NULL;
15501 last_die = NULL;
15502
7adf1e79
DE
15503 gdb_assert (cu->per_cu != NULL);
15504 if (cu->per_cu->load_all_dies)
5afb4e99
DJ
15505 load_all = 1;
15506
72bf9492
DJ
15507 cu->partial_dies
15508 = htab_create_alloc_ex (cu->header.length / 12,
15509 partial_die_hash,
15510 partial_die_eq,
15511 NULL,
15512 &cu->comp_unit_obstack,
15513 hashtab_obstack_allocate,
15514 dummy_obstack_deallocate);
15515
8d749320 15516 part_die = XOBNEW (&cu->comp_unit_obstack, struct partial_die_info);
72bf9492
DJ
15517
15518 while (1)
15519 {
15520 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
15521
15522 /* A NULL abbrev means the end of a series of children. */
15523 if (abbrev == NULL)
15524 {
15525 if (--nesting_level == 0)
15526 {
15527 /* PART_DIE was probably the last thing allocated on the
15528 comp_unit_obstack, so we could call obstack_free
15529 here. We don't do that because the waste is small,
15530 and will be cleaned up when we're done with this
15531 compilation unit. This way, we're also more robust
15532 against other users of the comp_unit_obstack. */
15533 return first_die;
15534 }
15535 info_ptr += bytes_read;
15536 last_die = parent_die;
15537 parent_die = parent_die->die_parent;
15538 continue;
15539 }
15540
98bfdba5
PA
15541 /* Check for template arguments. We never save these; if
15542 they're seen, we just mark the parent, and go on our way. */
15543 if (parent_die != NULL
15544 && cu->language == language_cplus
15545 && (abbrev->tag == DW_TAG_template_type_param
15546 || abbrev->tag == DW_TAG_template_value_param))
15547 {
15548 parent_die->has_template_arguments = 1;
15549
15550 if (!load_all)
15551 {
15552 /* We don't need a partial DIE for the template argument. */
dee91e82 15553 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
98bfdba5
PA
15554 continue;
15555 }
15556 }
15557
0d99eb77 15558 /* We only recurse into c++ subprograms looking for template arguments.
98bfdba5
PA
15559 Skip their other children. */
15560 if (!load_all
15561 && cu->language == language_cplus
15562 && parent_die != NULL
15563 && parent_die->tag == DW_TAG_subprogram)
15564 {
dee91e82 15565 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
98bfdba5
PA
15566 continue;
15567 }
15568
5afb4e99
DJ
15569 /* Check whether this DIE is interesting enough to save. Normally
15570 we would not be interested in members here, but there may be
15571 later variables referencing them via DW_AT_specification (for
15572 static members). */
15573 if (!load_all
15574 && !is_type_tag_for_partial (abbrev->tag)
72929c62 15575 && abbrev->tag != DW_TAG_constant
72bf9492
DJ
15576 && abbrev->tag != DW_TAG_enumerator
15577 && abbrev->tag != DW_TAG_subprogram
bc30ff58 15578 && abbrev->tag != DW_TAG_lexical_block
72bf9492 15579 && abbrev->tag != DW_TAG_variable
5afb4e99 15580 && abbrev->tag != DW_TAG_namespace
f55ee35c 15581 && abbrev->tag != DW_TAG_module
95554aad 15582 && abbrev->tag != DW_TAG_member
74921315
KS
15583 && abbrev->tag != DW_TAG_imported_unit
15584 && abbrev->tag != DW_TAG_imported_declaration)
72bf9492
DJ
15585 {
15586 /* Otherwise we skip to the next sibling, if any. */
dee91e82 15587 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
72bf9492
DJ
15588 continue;
15589 }
15590
dee91e82
DE
15591 info_ptr = read_partial_die (reader, part_die, abbrev, bytes_read,
15592 info_ptr);
72bf9492
DJ
15593
15594 /* This two-pass algorithm for processing partial symbols has a
15595 high cost in cache pressure. Thus, handle some simple cases
15596 here which cover the majority of C partial symbols. DIEs
15597 which neither have specification tags in them, nor could have
15598 specification tags elsewhere pointing at them, can simply be
15599 processed and discarded.
15600
15601 This segment is also optional; scan_partial_symbols and
15602 add_partial_symbol will handle these DIEs if we chain
15603 them in normally. When compilers which do not emit large
15604 quantities of duplicate debug information are more common,
15605 this code can probably be removed. */
15606
15607 /* Any complete simple types at the top level (pretty much all
15608 of them, for a language without namespaces), can be processed
15609 directly. */
15610 if (parent_die == NULL
15611 && part_die->has_specification == 0
15612 && part_die->is_declaration == 0
d8228535 15613 && ((part_die->tag == DW_TAG_typedef && !part_die->has_children)
72bf9492
DJ
15614 || part_die->tag == DW_TAG_base_type
15615 || part_die->tag == DW_TAG_subrange_type))
15616 {
15617 if (building_psymtab && part_die->name != NULL)
04a679b8 15618 add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
72bf9492 15619 VAR_DOMAIN, LOC_TYPEDEF,
bb5ed363 15620 &objfile->static_psymbols,
1762568f 15621 0, cu->language, objfile);
dee91e82 15622 info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
72bf9492
DJ
15623 continue;
15624 }
15625
d8228535
JK
15626 /* The exception for DW_TAG_typedef with has_children above is
15627 a workaround of GCC PR debug/47510. In the case of this complaint
15628 type_name_no_tag_or_error will error on such types later.
15629
15630 GDB skipped children of DW_TAG_typedef by the shortcut above and then
15631 it could not find the child DIEs referenced later, this is checked
15632 above. In correct DWARF DW_TAG_typedef should have no children. */
15633
15634 if (part_die->tag == DW_TAG_typedef && part_die->has_children)
15635 complaint (&symfile_complaints,
15636 _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
15637 "- DIE at 0x%x [in module %s]"),
4262abfb 15638 part_die->offset.sect_off, objfile_name (objfile));
d8228535 15639
72bf9492
DJ
15640 /* If we're at the second level, and we're an enumerator, and
15641 our parent has no specification (meaning possibly lives in a
15642 namespace elsewhere), then we can add the partial symbol now
15643 instead of queueing it. */
15644 if (part_die->tag == DW_TAG_enumerator
15645 && parent_die != NULL
15646 && parent_die->die_parent == NULL
15647 && parent_die->tag == DW_TAG_enumeration_type
15648 && parent_die->has_specification == 0)
15649 {
15650 if (part_die->name == NULL)
3e43a32a
MS
15651 complaint (&symfile_complaints,
15652 _("malformed enumerator DIE ignored"));
72bf9492 15653 else if (building_psymtab)
04a679b8 15654 add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
72bf9492 15655 VAR_DOMAIN, LOC_CONST,
987504bb
JJ
15656 (cu->language == language_cplus
15657 || cu->language == language_java)
bb5ed363
DE
15658 ? &objfile->global_psymbols
15659 : &objfile->static_psymbols,
1762568f 15660 0, cu->language, objfile);
72bf9492 15661
dee91e82 15662 info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
72bf9492
DJ
15663 continue;
15664 }
15665
15666 /* We'll save this DIE so link it in. */
15667 part_die->die_parent = parent_die;
15668 part_die->die_sibling = NULL;
15669 part_die->die_child = NULL;
15670
15671 if (last_die && last_die == parent_die)
15672 last_die->die_child = part_die;
15673 else if (last_die)
15674 last_die->die_sibling = part_die;
15675
15676 last_die = part_die;
15677
15678 if (first_die == NULL)
15679 first_die = part_die;
15680
15681 /* Maybe add the DIE to the hash table. Not all DIEs that we
15682 find interesting need to be in the hash table, because we
15683 also have the parent/sibling/child chains; only those that we
15684 might refer to by offset later during partial symbol reading.
15685
15686 For now this means things that might have be the target of a
15687 DW_AT_specification, DW_AT_abstract_origin, or
15688 DW_AT_extension. DW_AT_extension will refer only to
15689 namespaces; DW_AT_abstract_origin refers to functions (and
15690 many things under the function DIE, but we do not recurse
15691 into function DIEs during partial symbol reading) and
15692 possibly variables as well; DW_AT_specification refers to
15693 declarations. Declarations ought to have the DW_AT_declaration
15694 flag. It happens that GCC forgets to put it in sometimes, but
15695 only for functions, not for types.
15696
15697 Adding more things than necessary to the hash table is harmless
15698 except for the performance cost. Adding too few will result in
5afb4e99
DJ
15699 wasted time in find_partial_die, when we reread the compilation
15700 unit with load_all_dies set. */
72bf9492 15701
5afb4e99 15702 if (load_all
72929c62 15703 || abbrev->tag == DW_TAG_constant
5afb4e99 15704 || abbrev->tag == DW_TAG_subprogram
72bf9492
DJ
15705 || abbrev->tag == DW_TAG_variable
15706 || abbrev->tag == DW_TAG_namespace
15707 || part_die->is_declaration)
15708 {
15709 void **slot;
15710
15711 slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
b64f50a1 15712 part_die->offset.sect_off, INSERT);
72bf9492
DJ
15713 *slot = part_die;
15714 }
15715
8d749320 15716 part_die = XOBNEW (&cu->comp_unit_obstack, struct partial_die_info);
72bf9492
DJ
15717
15718 /* For some DIEs we want to follow their children (if any). For C
bc30ff58 15719 we have no reason to follow the children of structures; for other
98bfdba5
PA
15720 languages we have to, so that we can get at method physnames
15721 to infer fully qualified class names, for DW_AT_specification,
15722 and for C++ template arguments. For C++, we also look one level
15723 inside functions to find template arguments (if the name of the
15724 function does not already contain the template arguments).
bc30ff58
JB
15725
15726 For Ada, we need to scan the children of subprograms and lexical
15727 blocks as well because Ada allows the definition of nested
15728 entities that could be interesting for the debugger, such as
15729 nested subprograms for instance. */
72bf9492 15730 if (last_die->has_children
5afb4e99
DJ
15731 && (load_all
15732 || last_die->tag == DW_TAG_namespace
f55ee35c 15733 || last_die->tag == DW_TAG_module
72bf9492 15734 || last_die->tag == DW_TAG_enumeration_type
98bfdba5
PA
15735 || (cu->language == language_cplus
15736 && last_die->tag == DW_TAG_subprogram
15737 && (last_die->name == NULL
15738 || strchr (last_die->name, '<') == NULL))
72bf9492
DJ
15739 || (cu->language != language_c
15740 && (last_die->tag == DW_TAG_class_type
680b30c7 15741 || last_die->tag == DW_TAG_interface_type
72bf9492 15742 || last_die->tag == DW_TAG_structure_type
bc30ff58
JB
15743 || last_die->tag == DW_TAG_union_type))
15744 || (cu->language == language_ada
15745 && (last_die->tag == DW_TAG_subprogram
15746 || last_die->tag == DW_TAG_lexical_block))))
72bf9492
DJ
15747 {
15748 nesting_level++;
15749 parent_die = last_die;
15750 continue;
15751 }
15752
15753 /* Otherwise we skip to the next sibling, if any. */
dee91e82 15754 info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
72bf9492
DJ
15755
15756 /* Back to the top, do it again. */
15757 }
15758}
15759
c906108c
SS
15760/* Read a minimal amount of information into the minimal die structure. */
15761
d521ce57 15762static const gdb_byte *
dee91e82
DE
15763read_partial_die (const struct die_reader_specs *reader,
15764 struct partial_die_info *part_die,
15765 struct abbrev_info *abbrev, unsigned int abbrev_len,
d521ce57 15766 const gdb_byte *info_ptr)
c906108c 15767{
dee91e82 15768 struct dwarf2_cu *cu = reader->cu;
bb5ed363 15769 struct objfile *objfile = cu->objfile;
d521ce57 15770 const gdb_byte *buffer = reader->buffer;
fa238c03 15771 unsigned int i;
c906108c 15772 struct attribute attr;
c5aa993b 15773 int has_low_pc_attr = 0;
c906108c 15774 int has_high_pc_attr = 0;
91da1414 15775 int high_pc_relative = 0;
c906108c 15776
72bf9492 15777 memset (part_die, 0, sizeof (struct partial_die_info));
c906108c 15778
b64f50a1 15779 part_die->offset.sect_off = info_ptr - buffer;
72bf9492
DJ
15780
15781 info_ptr += abbrev_len;
15782
15783 if (abbrev == NULL)
15784 return info_ptr;
15785
c906108c
SS
15786 part_die->tag = abbrev->tag;
15787 part_die->has_children = abbrev->has_children;
c906108c
SS
15788
15789 for (i = 0; i < abbrev->num_attrs; ++i)
15790 {
dee91e82 15791 info_ptr = read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
c906108c
SS
15792
15793 /* Store the data if it is of an attribute we want to keep in a
c5aa993b 15794 partial symbol table. */
c906108c
SS
15795 switch (attr.name)
15796 {
15797 case DW_AT_name:
71c25dea
TT
15798 switch (part_die->tag)
15799 {
15800 case DW_TAG_compile_unit:
95554aad 15801 case DW_TAG_partial_unit:
348e048f 15802 case DW_TAG_type_unit:
71c25dea
TT
15803 /* Compilation units have a DW_AT_name that is a filename, not
15804 a source language identifier. */
15805 case DW_TAG_enumeration_type:
15806 case DW_TAG_enumerator:
15807 /* These tags always have simple identifiers already; no need
15808 to canonicalize them. */
15809 part_die->name = DW_STRING (&attr);
15810 break;
15811 default:
15812 part_die->name
15813 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
34a68019 15814 &objfile->per_bfd->storage_obstack);
71c25dea
TT
15815 break;
15816 }
c906108c 15817 break;
31ef98ae 15818 case DW_AT_linkage_name:
c906108c 15819 case DW_AT_MIPS_linkage_name:
31ef98ae
TT
15820 /* Note that both forms of linkage name might appear. We
15821 assume they will be the same, and we only store the last
15822 one we see. */
94af9270
KS
15823 if (cu->language == language_ada)
15824 part_die->name = DW_STRING (&attr);
abc72ce4 15825 part_die->linkage_name = DW_STRING (&attr);
c906108c
SS
15826 break;
15827 case DW_AT_low_pc:
15828 has_low_pc_attr = 1;
31aa7e4e 15829 part_die->lowpc = attr_value_as_address (&attr);
c906108c
SS
15830 break;
15831 case DW_AT_high_pc:
15832 has_high_pc_attr = 1;
31aa7e4e
JB
15833 part_die->highpc = attr_value_as_address (&attr);
15834 if (cu->header.version >= 4 && attr_form_is_constant (&attr))
15835 high_pc_relative = 1;
c906108c
SS
15836 break;
15837 case DW_AT_location:
0963b4bd 15838 /* Support the .debug_loc offsets. */
8e19ed76
PS
15839 if (attr_form_is_block (&attr))
15840 {
95554aad 15841 part_die->d.locdesc = DW_BLOCK (&attr);
8e19ed76 15842 }
3690dd37 15843 else if (attr_form_is_section_offset (&attr))
8e19ed76 15844 {
4d3c2250 15845 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
15846 }
15847 else
15848 {
4d3c2250
KB
15849 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
15850 "partial symbol information");
8e19ed76 15851 }
c906108c 15852 break;
c906108c
SS
15853 case DW_AT_external:
15854 part_die->is_external = DW_UNSND (&attr);
15855 break;
15856 case DW_AT_declaration:
15857 part_die->is_declaration = DW_UNSND (&attr);
15858 break;
15859 case DW_AT_type:
15860 part_die->has_type = 1;
15861 break;
15862 case DW_AT_abstract_origin:
15863 case DW_AT_specification:
72bf9492
DJ
15864 case DW_AT_extension:
15865 part_die->has_specification = 1;
c764a876 15866 part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
36586728
TT
15867 part_die->spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15868 || cu->per_cu->is_dwz);
c906108c
SS
15869 break;
15870 case DW_AT_sibling:
15871 /* Ignore absolute siblings, they might point outside of
15872 the current compile unit. */
15873 if (attr.form == DW_FORM_ref_addr)
3e43a32a
MS
15874 complaint (&symfile_complaints,
15875 _("ignoring absolute DW_AT_sibling"));
c906108c 15876 else
b9502d3f
WN
15877 {
15878 unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
15879 const gdb_byte *sibling_ptr = buffer + off;
15880
15881 if (sibling_ptr < info_ptr)
15882 complaint (&symfile_complaints,
15883 _("DW_AT_sibling points backwards"));
22869d73
KS
15884 else if (sibling_ptr > reader->buffer_end)
15885 dwarf2_section_buffer_overflow_complaint (reader->die_section);
b9502d3f
WN
15886 else
15887 part_die->sibling = sibling_ptr;
15888 }
c906108c 15889 break;
fa4028e9
JB
15890 case DW_AT_byte_size:
15891 part_die->has_byte_size = 1;
15892 break;
ff908ebf
AW
15893 case DW_AT_const_value:
15894 part_die->has_const_value = 1;
15895 break;
68511cec
CES
15896 case DW_AT_calling_convention:
15897 /* DWARF doesn't provide a way to identify a program's source-level
15898 entry point. DW_AT_calling_convention attributes are only meant
15899 to describe functions' calling conventions.
15900
15901 However, because it's a necessary piece of information in
15902 Fortran, and because DW_CC_program is the only piece of debugging
15903 information whose definition refers to a 'main program' at all,
15904 several compilers have begun marking Fortran main programs with
15905 DW_CC_program --- even when those functions use the standard
15906 calling conventions.
15907
15908 So until DWARF specifies a way to provide this information and
15909 compilers pick up the new representation, we'll support this
15910 practice. */
15911 if (DW_UNSND (&attr) == DW_CC_program
15912 && cu->language == language_fortran)
3d548a53 15913 set_objfile_main_name (objfile, part_die->name, language_fortran);
68511cec 15914 break;
481860b3
GB
15915 case DW_AT_inline:
15916 if (DW_UNSND (&attr) == DW_INL_inlined
15917 || DW_UNSND (&attr) == DW_INL_declared_inlined)
15918 part_die->may_be_inlined = 1;
15919 break;
95554aad
TT
15920
15921 case DW_AT_import:
15922 if (part_die->tag == DW_TAG_imported_unit)
36586728
TT
15923 {
15924 part_die->d.offset = dwarf2_get_ref_die_offset (&attr);
15925 part_die->is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15926 || cu->per_cu->is_dwz);
15927 }
95554aad
TT
15928 break;
15929
c906108c
SS
15930 default:
15931 break;
15932 }
15933 }
15934
91da1414
MW
15935 if (high_pc_relative)
15936 part_die->highpc += part_die->lowpc;
15937
9373cf26
JK
15938 if (has_low_pc_attr && has_high_pc_attr)
15939 {
15940 /* When using the GNU linker, .gnu.linkonce. sections are used to
15941 eliminate duplicate copies of functions and vtables and such.
15942 The linker will arbitrarily choose one and discard the others.
15943 The AT_*_pc values for such functions refer to local labels in
15944 these sections. If the section from that file was discarded, the
15945 labels are not in the output, so the relocs get a value of 0.
15946 If this is a discarded function, mark the pc bounds as invalid,
15947 so that GDB will ignore it. */
15948 if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
15949 {
bb5ed363 15950 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9373cf26
JK
15951
15952 complaint (&symfile_complaints,
15953 _("DW_AT_low_pc %s is zero "
15954 "for DIE at 0x%x [in module %s]"),
15955 paddress (gdbarch, part_die->lowpc),
4262abfb 15956 part_die->offset.sect_off, objfile_name (objfile));
9373cf26
JK
15957 }
15958 /* dwarf2_get_pc_bounds has also the strict low < high requirement. */
15959 else if (part_die->lowpc >= part_die->highpc)
15960 {
bb5ed363 15961 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9373cf26
JK
15962
15963 complaint (&symfile_complaints,
15964 _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
15965 "for DIE at 0x%x [in module %s]"),
15966 paddress (gdbarch, part_die->lowpc),
15967 paddress (gdbarch, part_die->highpc),
4262abfb 15968 part_die->offset.sect_off, objfile_name (objfile));
9373cf26
JK
15969 }
15970 else
15971 part_die->has_pc_info = 1;
15972 }
85cbf3d3 15973
c906108c
SS
15974 return info_ptr;
15975}
15976
72bf9492
DJ
15977/* Find a cached partial DIE at OFFSET in CU. */
15978
15979static struct partial_die_info *
b64f50a1 15980find_partial_die_in_comp_unit (sect_offset offset, struct dwarf2_cu *cu)
72bf9492
DJ
15981{
15982 struct partial_die_info *lookup_die = NULL;
15983 struct partial_die_info part_die;
15984
15985 part_die.offset = offset;
b64f50a1
JK
15986 lookup_die = htab_find_with_hash (cu->partial_dies, &part_die,
15987 offset.sect_off);
72bf9492 15988
72bf9492
DJ
15989 return lookup_die;
15990}
15991
348e048f
DE
15992/* Find a partial DIE at OFFSET, which may or may not be in CU,
15993 except in the case of .debug_types DIEs which do not reference
15994 outside their CU (they do however referencing other types via
55f1336d 15995 DW_FORM_ref_sig8). */
72bf9492
DJ
15996
15997static struct partial_die_info *
36586728 15998find_partial_die (sect_offset offset, int offset_in_dwz, struct dwarf2_cu *cu)
72bf9492 15999{
bb5ed363 16000 struct objfile *objfile = cu->objfile;
5afb4e99
DJ
16001 struct dwarf2_per_cu_data *per_cu = NULL;
16002 struct partial_die_info *pd = NULL;
72bf9492 16003
36586728
TT
16004 if (offset_in_dwz == cu->per_cu->is_dwz
16005 && offset_in_cu_p (&cu->header, offset))
5afb4e99
DJ
16006 {
16007 pd = find_partial_die_in_comp_unit (offset, cu);
16008 if (pd != NULL)
16009 return pd;
0d99eb77
DE
16010 /* We missed recording what we needed.
16011 Load all dies and try again. */
16012 per_cu = cu->per_cu;
5afb4e99 16013 }
0d99eb77
DE
16014 else
16015 {
16016 /* TUs don't reference other CUs/TUs (except via type signatures). */
3019eac3 16017 if (cu->per_cu->is_debug_types)
0d99eb77
DE
16018 {
16019 error (_("Dwarf Error: Type Unit at offset 0x%lx contains"
16020 " external reference to offset 0x%lx [in module %s].\n"),
16021 (long) cu->header.offset.sect_off, (long) offset.sect_off,
16022 bfd_get_filename (objfile->obfd));
16023 }
36586728
TT
16024 per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
16025 objfile);
72bf9492 16026
0d99eb77
DE
16027 if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
16028 load_partial_comp_unit (per_cu);
ae038cb0 16029
0d99eb77
DE
16030 per_cu->cu->last_used = 0;
16031 pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
16032 }
5afb4e99 16033
dee91e82
DE
16034 /* If we didn't find it, and not all dies have been loaded,
16035 load them all and try again. */
16036
5afb4e99
DJ
16037 if (pd == NULL && per_cu->load_all_dies == 0)
16038 {
5afb4e99 16039 per_cu->load_all_dies = 1;
fd820528
DE
16040
16041 /* This is nasty. When we reread the DIEs, somewhere up the call chain
16042 THIS_CU->cu may already be in use. So we can't just free it and
16043 replace its DIEs with the ones we read in. Instead, we leave those
16044 DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
16045 and clobber THIS_CU->cu->partial_dies with the hash table for the new
16046 set. */
dee91e82 16047 load_partial_comp_unit (per_cu);
5afb4e99
DJ
16048
16049 pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
16050 }
16051
16052 if (pd == NULL)
16053 internal_error (__FILE__, __LINE__,
3e43a32a
MS
16054 _("could not find partial DIE 0x%x "
16055 "in cache [from module %s]\n"),
b64f50a1 16056 offset.sect_off, bfd_get_filename (objfile->obfd));
5afb4e99 16057 return pd;
72bf9492
DJ
16058}
16059
abc72ce4
DE
16060/* See if we can figure out if the class lives in a namespace. We do
16061 this by looking for a member function; its demangled name will
16062 contain namespace info, if there is any. */
16063
16064static void
16065guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
16066 struct dwarf2_cu *cu)
16067{
16068 /* NOTE: carlton/2003-10-07: Getting the info this way changes
16069 what template types look like, because the demangler
16070 frequently doesn't give the same name as the debug info. We
16071 could fix this by only using the demangled name to get the
16072 prefix (but see comment in read_structure_type). */
16073
16074 struct partial_die_info *real_pdi;
16075 struct partial_die_info *child_pdi;
16076
16077 /* If this DIE (this DIE's specification, if any) has a parent, then
16078 we should not do this. We'll prepend the parent's fully qualified
16079 name when we create the partial symbol. */
16080
16081 real_pdi = struct_pdi;
16082 while (real_pdi->has_specification)
36586728
TT
16083 real_pdi = find_partial_die (real_pdi->spec_offset,
16084 real_pdi->spec_is_dwz, cu);
abc72ce4
DE
16085
16086 if (real_pdi->die_parent != NULL)
16087 return;
16088
16089 for (child_pdi = struct_pdi->die_child;
16090 child_pdi != NULL;
16091 child_pdi = child_pdi->die_sibling)
16092 {
16093 if (child_pdi->tag == DW_TAG_subprogram
16094 && child_pdi->linkage_name != NULL)
16095 {
16096 char *actual_class_name
16097 = language_class_name_from_physname (cu->language_defn,
16098 child_pdi->linkage_name);
16099 if (actual_class_name != NULL)
16100 {
16101 struct_pdi->name
34a68019 16102 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb
TT
16103 actual_class_name,
16104 strlen (actual_class_name));
abc72ce4
DE
16105 xfree (actual_class_name);
16106 }
16107 break;
16108 }
16109 }
16110}
16111
72bf9492
DJ
16112/* Adjust PART_DIE before generating a symbol for it. This function
16113 may set the is_external flag or change the DIE's name. */
16114
16115static void
16116fixup_partial_die (struct partial_die_info *part_die,
16117 struct dwarf2_cu *cu)
16118{
abc72ce4
DE
16119 /* Once we've fixed up a die, there's no point in doing so again.
16120 This also avoids a memory leak if we were to call
16121 guess_partial_die_structure_name multiple times. */
16122 if (part_die->fixup_called)
16123 return;
16124
72bf9492
DJ
16125 /* If we found a reference attribute and the DIE has no name, try
16126 to find a name in the referred to DIE. */
16127
16128 if (part_die->name == NULL && part_die->has_specification)
16129 {
16130 struct partial_die_info *spec_die;
72bf9492 16131
36586728
TT
16132 spec_die = find_partial_die (part_die->spec_offset,
16133 part_die->spec_is_dwz, cu);
72bf9492 16134
10b3939b 16135 fixup_partial_die (spec_die, cu);
72bf9492
DJ
16136
16137 if (spec_die->name)
16138 {
16139 part_die->name = spec_die->name;
16140
16141 /* Copy DW_AT_external attribute if it is set. */
16142 if (spec_die->is_external)
16143 part_die->is_external = spec_die->is_external;
16144 }
16145 }
16146
16147 /* Set default names for some unnamed DIEs. */
72bf9492
DJ
16148
16149 if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
2b1dbab0 16150 part_die->name = CP_ANONYMOUS_NAMESPACE_STR;
72bf9492 16151
abc72ce4
DE
16152 /* If there is no parent die to provide a namespace, and there are
16153 children, see if we can determine the namespace from their linkage
122d1940 16154 name. */
abc72ce4 16155 if (cu->language == language_cplus
8b70b953 16156 && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
abc72ce4
DE
16157 && part_die->die_parent == NULL
16158 && part_die->has_children
16159 && (part_die->tag == DW_TAG_class_type
16160 || part_die->tag == DW_TAG_structure_type
16161 || part_die->tag == DW_TAG_union_type))
16162 guess_partial_die_structure_name (part_die, cu);
16163
53832f31
TT
16164 /* GCC might emit a nameless struct or union that has a linkage
16165 name. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
16166 if (part_die->name == NULL
96408a79
SA
16167 && (part_die->tag == DW_TAG_class_type
16168 || part_die->tag == DW_TAG_interface_type
16169 || part_die->tag == DW_TAG_structure_type
16170 || part_die->tag == DW_TAG_union_type)
53832f31
TT
16171 && part_die->linkage_name != NULL)
16172 {
16173 char *demangled;
16174
8de20a37 16175 demangled = gdb_demangle (part_die->linkage_name, DMGL_TYPES);
53832f31
TT
16176 if (demangled)
16177 {
96408a79
SA
16178 const char *base;
16179
16180 /* Strip any leading namespaces/classes, keep only the base name.
16181 DW_AT_name for named DIEs does not contain the prefixes. */
16182 base = strrchr (demangled, ':');
16183 if (base && base > demangled && base[-1] == ':')
16184 base++;
16185 else
16186 base = demangled;
16187
34a68019
TT
16188 part_die->name
16189 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
16190 base, strlen (base));
53832f31
TT
16191 xfree (demangled);
16192 }
16193 }
16194
abc72ce4 16195 part_die->fixup_called = 1;
72bf9492
DJ
16196}
16197
a8329558 16198/* Read an attribute value described by an attribute form. */
c906108c 16199
d521ce57 16200static const gdb_byte *
dee91e82
DE
16201read_attribute_value (const struct die_reader_specs *reader,
16202 struct attribute *attr, unsigned form,
d521ce57 16203 const gdb_byte *info_ptr)
c906108c 16204{
dee91e82 16205 struct dwarf2_cu *cu = reader->cu;
3e29f34a
MR
16206 struct objfile *objfile = cu->objfile;
16207 struct gdbarch *gdbarch = get_objfile_arch (objfile);
dee91e82 16208 bfd *abfd = reader->abfd;
e7c27a73 16209 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
16210 unsigned int bytes_read;
16211 struct dwarf_block *blk;
16212
aead7601 16213 attr->form = (enum dwarf_form) form;
a8329558 16214 switch (form)
c906108c 16215 {
c906108c 16216 case DW_FORM_ref_addr:
ae411497 16217 if (cu->header.version == 2)
4568ecf9 16218 DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
ae411497 16219 else
4568ecf9
DE
16220 DW_UNSND (attr) = read_offset (abfd, info_ptr,
16221 &cu->header, &bytes_read);
ae411497
TT
16222 info_ptr += bytes_read;
16223 break;
36586728
TT
16224 case DW_FORM_GNU_ref_alt:
16225 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16226 info_ptr += bytes_read;
16227 break;
ae411497 16228 case DW_FORM_addr:
e7c27a73 16229 DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
3e29f34a 16230 DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
107d2387 16231 info_ptr += bytes_read;
c906108c
SS
16232 break;
16233 case DW_FORM_block2:
7b5a2f43 16234 blk = dwarf_alloc_block (cu);
c906108c
SS
16235 blk->size = read_2_bytes (abfd, info_ptr);
16236 info_ptr += 2;
16237 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16238 info_ptr += blk->size;
16239 DW_BLOCK (attr) = blk;
16240 break;
16241 case DW_FORM_block4:
7b5a2f43 16242 blk = dwarf_alloc_block (cu);
c906108c
SS
16243 blk->size = read_4_bytes (abfd, info_ptr);
16244 info_ptr += 4;
16245 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16246 info_ptr += blk->size;
16247 DW_BLOCK (attr) = blk;
16248 break;
16249 case DW_FORM_data2:
16250 DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
16251 info_ptr += 2;
16252 break;
16253 case DW_FORM_data4:
16254 DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
16255 info_ptr += 4;
16256 break;
16257 case DW_FORM_data8:
16258 DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
16259 info_ptr += 8;
16260 break;
2dc7f7b3
TT
16261 case DW_FORM_sec_offset:
16262 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16263 info_ptr += bytes_read;
16264 break;
c906108c 16265 case DW_FORM_string:
9b1c24c8 16266 DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
8285870a 16267 DW_STRING_IS_CANONICAL (attr) = 0;
c906108c
SS
16268 info_ptr += bytes_read;
16269 break;
4bdf3d34 16270 case DW_FORM_strp:
36586728
TT
16271 if (!cu->per_cu->is_dwz)
16272 {
16273 DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
16274 &bytes_read);
16275 DW_STRING_IS_CANONICAL (attr) = 0;
16276 info_ptr += bytes_read;
16277 break;
16278 }
16279 /* FALLTHROUGH */
16280 case DW_FORM_GNU_strp_alt:
16281 {
16282 struct dwz_file *dwz = dwarf2_get_dwz_file ();
16283 LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
16284 &bytes_read);
16285
16286 DW_STRING (attr) = read_indirect_string_from_dwz (dwz, str_offset);
16287 DW_STRING_IS_CANONICAL (attr) = 0;
16288 info_ptr += bytes_read;
16289 }
4bdf3d34 16290 break;
2dc7f7b3 16291 case DW_FORM_exprloc:
c906108c 16292 case DW_FORM_block:
7b5a2f43 16293 blk = dwarf_alloc_block (cu);
c906108c
SS
16294 blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16295 info_ptr += bytes_read;
16296 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16297 info_ptr += blk->size;
16298 DW_BLOCK (attr) = blk;
16299 break;
16300 case DW_FORM_block1:
7b5a2f43 16301 blk = dwarf_alloc_block (cu);
c906108c
SS
16302 blk->size = read_1_byte (abfd, info_ptr);
16303 info_ptr += 1;
16304 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16305 info_ptr += blk->size;
16306 DW_BLOCK (attr) = blk;
16307 break;
16308 case DW_FORM_data1:
16309 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16310 info_ptr += 1;
16311 break;
16312 case DW_FORM_flag:
16313 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16314 info_ptr += 1;
16315 break;
2dc7f7b3
TT
16316 case DW_FORM_flag_present:
16317 DW_UNSND (attr) = 1;
16318 break;
c906108c
SS
16319 case DW_FORM_sdata:
16320 DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
16321 info_ptr += bytes_read;
16322 break;
16323 case DW_FORM_udata:
16324 DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16325 info_ptr += bytes_read;
16326 break;
16327 case DW_FORM_ref1:
4568ecf9
DE
16328 DW_UNSND (attr) = (cu->header.offset.sect_off
16329 + read_1_byte (abfd, info_ptr));
c906108c
SS
16330 info_ptr += 1;
16331 break;
16332 case DW_FORM_ref2:
4568ecf9
DE
16333 DW_UNSND (attr) = (cu->header.offset.sect_off
16334 + read_2_bytes (abfd, info_ptr));
c906108c
SS
16335 info_ptr += 2;
16336 break;
16337 case DW_FORM_ref4:
4568ecf9
DE
16338 DW_UNSND (attr) = (cu->header.offset.sect_off
16339 + read_4_bytes (abfd, info_ptr));
c906108c
SS
16340 info_ptr += 4;
16341 break;
613e1657 16342 case DW_FORM_ref8:
4568ecf9
DE
16343 DW_UNSND (attr) = (cu->header.offset.sect_off
16344 + read_8_bytes (abfd, info_ptr));
613e1657
KB
16345 info_ptr += 8;
16346 break;
55f1336d 16347 case DW_FORM_ref_sig8:
ac9ec31b 16348 DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
348e048f
DE
16349 info_ptr += 8;
16350 break;
c906108c 16351 case DW_FORM_ref_udata:
4568ecf9
DE
16352 DW_UNSND (attr) = (cu->header.offset.sect_off
16353 + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
c906108c
SS
16354 info_ptr += bytes_read;
16355 break;
c906108c 16356 case DW_FORM_indirect:
a8329558
KW
16357 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16358 info_ptr += bytes_read;
dee91e82 16359 info_ptr = read_attribute_value (reader, attr, form, info_ptr);
a8329558 16360 break;
3019eac3
DE
16361 case DW_FORM_GNU_addr_index:
16362 if (reader->dwo_file == NULL)
16363 {
16364 /* For now flag a hard error.
16365 Later we can turn this into a complaint. */
16366 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16367 dwarf_form_name (form),
16368 bfd_get_filename (abfd));
16369 }
16370 DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
16371 info_ptr += bytes_read;
16372 break;
16373 case DW_FORM_GNU_str_index:
16374 if (reader->dwo_file == NULL)
16375 {
16376 /* For now flag a hard error.
16377 Later we can turn this into a complaint if warranted. */
16378 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16379 dwarf_form_name (form),
16380 bfd_get_filename (abfd));
16381 }
16382 {
16383 ULONGEST str_index =
16384 read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16385
342587c4 16386 DW_STRING (attr) = read_str_index (reader, str_index);
3019eac3
DE
16387 DW_STRING_IS_CANONICAL (attr) = 0;
16388 info_ptr += bytes_read;
16389 }
16390 break;
c906108c 16391 default:
8a3fe4f8 16392 error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
659b0389
ML
16393 dwarf_form_name (form),
16394 bfd_get_filename (abfd));
c906108c 16395 }
28e94949 16396
36586728 16397 /* Super hack. */
7771576e 16398 if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
36586728
TT
16399 attr->form = DW_FORM_GNU_ref_alt;
16400
28e94949
JB
16401 /* We have seen instances where the compiler tried to emit a byte
16402 size attribute of -1 which ended up being encoded as an unsigned
16403 0xffffffff. Although 0xffffffff is technically a valid size value,
16404 an object of this size seems pretty unlikely so we can relatively
16405 safely treat these cases as if the size attribute was invalid and
16406 treat them as zero by default. */
16407 if (attr->name == DW_AT_byte_size
16408 && form == DW_FORM_data4
16409 && DW_UNSND (attr) >= 0xffffffff)
01c66ae6
JB
16410 {
16411 complaint
16412 (&symfile_complaints,
43bbcdc2
PH
16413 _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
16414 hex_string (DW_UNSND (attr)));
01c66ae6
JB
16415 DW_UNSND (attr) = 0;
16416 }
28e94949 16417
c906108c
SS
16418 return info_ptr;
16419}
16420
a8329558
KW
16421/* Read an attribute described by an abbreviated attribute. */
16422
d521ce57 16423static const gdb_byte *
dee91e82
DE
16424read_attribute (const struct die_reader_specs *reader,
16425 struct attribute *attr, struct attr_abbrev *abbrev,
d521ce57 16426 const gdb_byte *info_ptr)
a8329558
KW
16427{
16428 attr->name = abbrev->name;
dee91e82 16429 return read_attribute_value (reader, attr, abbrev->form, info_ptr);
a8329558
KW
16430}
16431
0963b4bd 16432/* Read dwarf information from a buffer. */
c906108c
SS
16433
16434static unsigned int
a1855c1d 16435read_1_byte (bfd *abfd, const gdb_byte *buf)
c906108c 16436{
fe1b8b76 16437 return bfd_get_8 (abfd, buf);
c906108c
SS
16438}
16439
16440static int
a1855c1d 16441read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
c906108c 16442{
fe1b8b76 16443 return bfd_get_signed_8 (abfd, buf);
c906108c
SS
16444}
16445
16446static unsigned int
a1855c1d 16447read_2_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16448{
fe1b8b76 16449 return bfd_get_16 (abfd, buf);
c906108c
SS
16450}
16451
21ae7a4d 16452static int
a1855c1d 16453read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
21ae7a4d
JK
16454{
16455 return bfd_get_signed_16 (abfd, buf);
16456}
16457
c906108c 16458static unsigned int
a1855c1d 16459read_4_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16460{
fe1b8b76 16461 return bfd_get_32 (abfd, buf);
c906108c
SS
16462}
16463
21ae7a4d 16464static int
a1855c1d 16465read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
21ae7a4d
JK
16466{
16467 return bfd_get_signed_32 (abfd, buf);
16468}
16469
93311388 16470static ULONGEST
a1855c1d 16471read_8_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16472{
fe1b8b76 16473 return bfd_get_64 (abfd, buf);
c906108c
SS
16474}
16475
16476static CORE_ADDR
d521ce57 16477read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
891d2f0b 16478 unsigned int *bytes_read)
c906108c 16479{
e7c27a73 16480 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
16481 CORE_ADDR retval = 0;
16482
107d2387 16483 if (cu_header->signed_addr_p)
c906108c 16484 {
107d2387
AC
16485 switch (cu_header->addr_size)
16486 {
16487 case 2:
fe1b8b76 16488 retval = bfd_get_signed_16 (abfd, buf);
107d2387
AC
16489 break;
16490 case 4:
fe1b8b76 16491 retval = bfd_get_signed_32 (abfd, buf);
107d2387
AC
16492 break;
16493 case 8:
fe1b8b76 16494 retval = bfd_get_signed_64 (abfd, buf);
107d2387
AC
16495 break;
16496 default:
8e65ff28 16497 internal_error (__FILE__, __LINE__,
e2e0b3e5 16498 _("read_address: bad switch, signed [in module %s]"),
659b0389 16499 bfd_get_filename (abfd));
107d2387
AC
16500 }
16501 }
16502 else
16503 {
16504 switch (cu_header->addr_size)
16505 {
16506 case 2:
fe1b8b76 16507 retval = bfd_get_16 (abfd, buf);
107d2387
AC
16508 break;
16509 case 4:
fe1b8b76 16510 retval = bfd_get_32 (abfd, buf);
107d2387
AC
16511 break;
16512 case 8:
fe1b8b76 16513 retval = bfd_get_64 (abfd, buf);
107d2387
AC
16514 break;
16515 default:
8e65ff28 16516 internal_error (__FILE__, __LINE__,
a73c6dcd
MS
16517 _("read_address: bad switch, "
16518 "unsigned [in module %s]"),
659b0389 16519 bfd_get_filename (abfd));
107d2387 16520 }
c906108c 16521 }
64367e0a 16522
107d2387
AC
16523 *bytes_read = cu_header->addr_size;
16524 return retval;
c906108c
SS
16525}
16526
f7ef9339 16527/* Read the initial length from a section. The (draft) DWARF 3
613e1657
KB
16528 specification allows the initial length to take up either 4 bytes
16529 or 12 bytes. If the first 4 bytes are 0xffffffff, then the next 8
16530 bytes describe the length and all offsets will be 8 bytes in length
16531 instead of 4.
16532
f7ef9339
KB
16533 An older, non-standard 64-bit format is also handled by this
16534 function. The older format in question stores the initial length
16535 as an 8-byte quantity without an escape value. Lengths greater
16536 than 2^32 aren't very common which means that the initial 4 bytes
16537 is almost always zero. Since a length value of zero doesn't make
16538 sense for the 32-bit format, this initial zero can be considered to
16539 be an escape value which indicates the presence of the older 64-bit
16540 format. As written, the code can't detect (old format) lengths
917c78fc
MK
16541 greater than 4GB. If it becomes necessary to handle lengths
16542 somewhat larger than 4GB, we could allow other small values (such
16543 as the non-sensical values of 1, 2, and 3) to also be used as
16544 escape values indicating the presence of the old format.
f7ef9339 16545
917c78fc
MK
16546 The value returned via bytes_read should be used to increment the
16547 relevant pointer after calling read_initial_length().
c764a876 16548
613e1657
KB
16549 [ Note: read_initial_length() and read_offset() are based on the
16550 document entitled "DWARF Debugging Information Format", revision
f7ef9339 16551 3, draft 8, dated November 19, 2001. This document was obtained
613e1657
KB
16552 from:
16553
f7ef9339 16554 http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
6e70227d 16555
613e1657
KB
16556 This document is only a draft and is subject to change. (So beware.)
16557
f7ef9339 16558 Details regarding the older, non-standard 64-bit format were
917c78fc
MK
16559 determined empirically by examining 64-bit ELF files produced by
16560 the SGI toolchain on an IRIX 6.5 machine.
f7ef9339
KB
16561
16562 - Kevin, July 16, 2002
613e1657
KB
16563 ] */
16564
16565static LONGEST
d521ce57 16566read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
613e1657 16567{
fe1b8b76 16568 LONGEST length = bfd_get_32 (abfd, buf);
613e1657 16569
dd373385 16570 if (length == 0xffffffff)
613e1657 16571 {
fe1b8b76 16572 length = bfd_get_64 (abfd, buf + 4);
613e1657 16573 *bytes_read = 12;
613e1657 16574 }
dd373385 16575 else if (length == 0)
f7ef9339 16576 {
dd373385 16577 /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX. */
fe1b8b76 16578 length = bfd_get_64 (abfd, buf);
f7ef9339 16579 *bytes_read = 8;
f7ef9339 16580 }
613e1657
KB
16581 else
16582 {
16583 *bytes_read = 4;
613e1657
KB
16584 }
16585
c764a876
DE
16586 return length;
16587}
dd373385 16588
c764a876
DE
16589/* Cover function for read_initial_length.
16590 Returns the length of the object at BUF, and stores the size of the
16591 initial length in *BYTES_READ and stores the size that offsets will be in
16592 *OFFSET_SIZE.
16593 If the initial length size is not equivalent to that specified in
16594 CU_HEADER then issue a complaint.
16595 This is useful when reading non-comp-unit headers. */
dd373385 16596
c764a876 16597static LONGEST
d521ce57 16598read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
c764a876
DE
16599 const struct comp_unit_head *cu_header,
16600 unsigned int *bytes_read,
16601 unsigned int *offset_size)
16602{
16603 LONGEST length = read_initial_length (abfd, buf, bytes_read);
16604
16605 gdb_assert (cu_header->initial_length_size == 4
16606 || cu_header->initial_length_size == 8
16607 || cu_header->initial_length_size == 12);
16608
16609 if (cu_header->initial_length_size != *bytes_read)
16610 complaint (&symfile_complaints,
16611 _("intermixed 32-bit and 64-bit DWARF sections"));
dd373385 16612
c764a876 16613 *offset_size = (*bytes_read == 4) ? 4 : 8;
dd373385 16614 return length;
613e1657
KB
16615}
16616
16617/* Read an offset from the data stream. The size of the offset is
917c78fc 16618 given by cu_header->offset_size. */
613e1657
KB
16619
16620static LONGEST
d521ce57
TT
16621read_offset (bfd *abfd, const gdb_byte *buf,
16622 const struct comp_unit_head *cu_header,
891d2f0b 16623 unsigned int *bytes_read)
c764a876
DE
16624{
16625 LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
9a619af0 16626
c764a876
DE
16627 *bytes_read = cu_header->offset_size;
16628 return offset;
16629}
16630
16631/* Read an offset from the data stream. */
16632
16633static LONGEST
d521ce57 16634read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
613e1657
KB
16635{
16636 LONGEST retval = 0;
16637
c764a876 16638 switch (offset_size)
613e1657
KB
16639 {
16640 case 4:
fe1b8b76 16641 retval = bfd_get_32 (abfd, buf);
613e1657
KB
16642 break;
16643 case 8:
fe1b8b76 16644 retval = bfd_get_64 (abfd, buf);
613e1657
KB
16645 break;
16646 default:
8e65ff28 16647 internal_error (__FILE__, __LINE__,
c764a876 16648 _("read_offset_1: bad switch [in module %s]"),
659b0389 16649 bfd_get_filename (abfd));
613e1657
KB
16650 }
16651
917c78fc 16652 return retval;
613e1657
KB
16653}
16654
d521ce57
TT
16655static const gdb_byte *
16656read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
c906108c
SS
16657{
16658 /* If the size of a host char is 8 bits, we can return a pointer
16659 to the buffer, otherwise we have to copy the data to a buffer
16660 allocated on the temporary obstack. */
4bdf3d34 16661 gdb_assert (HOST_CHAR_BIT == 8);
c906108c 16662 return buf;
c906108c
SS
16663}
16664
d521ce57
TT
16665static const char *
16666read_direct_string (bfd *abfd, const gdb_byte *buf,
16667 unsigned int *bytes_read_ptr)
c906108c
SS
16668{
16669 /* If the size of a host char is 8 bits, we can return a pointer
16670 to the string, otherwise we have to copy the string to a buffer
16671 allocated on the temporary obstack. */
4bdf3d34 16672 gdb_assert (HOST_CHAR_BIT == 8);
c906108c
SS
16673 if (*buf == '\0')
16674 {
16675 *bytes_read_ptr = 1;
16676 return NULL;
16677 }
d521ce57
TT
16678 *bytes_read_ptr = strlen ((const char *) buf) + 1;
16679 return (const char *) buf;
4bdf3d34
JJ
16680}
16681
d521ce57 16682static const char *
cf2c3c16 16683read_indirect_string_at_offset (bfd *abfd, LONGEST str_offset)
4bdf3d34 16684{
be391dca 16685 dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->str);
dce234bc 16686 if (dwarf2_per_objfile->str.buffer == NULL)
cf2c3c16
TT
16687 error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
16688 bfd_get_filename (abfd));
dce234bc 16689 if (str_offset >= dwarf2_per_objfile->str.size)
cf2c3c16
TT
16690 error (_("DW_FORM_strp pointing outside of "
16691 ".debug_str section [in module %s]"),
16692 bfd_get_filename (abfd));
4bdf3d34 16693 gdb_assert (HOST_CHAR_BIT == 8);
dce234bc 16694 if (dwarf2_per_objfile->str.buffer[str_offset] == '\0')
4bdf3d34 16695 return NULL;
d521ce57 16696 return (const char *) (dwarf2_per_objfile->str.buffer + str_offset);
c906108c
SS
16697}
16698
36586728
TT
16699/* Read a string at offset STR_OFFSET in the .debug_str section from
16700 the .dwz file DWZ. Throw an error if the offset is too large. If
16701 the string consists of a single NUL byte, return NULL; otherwise
16702 return a pointer to the string. */
16703
d521ce57 16704static const char *
36586728
TT
16705read_indirect_string_from_dwz (struct dwz_file *dwz, LONGEST str_offset)
16706{
16707 dwarf2_read_section (dwarf2_per_objfile->objfile, &dwz->str);
16708
16709 if (dwz->str.buffer == NULL)
16710 error (_("DW_FORM_GNU_strp_alt used without .debug_str "
16711 "section [in module %s]"),
16712 bfd_get_filename (dwz->dwz_bfd));
16713 if (str_offset >= dwz->str.size)
16714 error (_("DW_FORM_GNU_strp_alt pointing outside of "
16715 ".debug_str section [in module %s]"),
16716 bfd_get_filename (dwz->dwz_bfd));
16717 gdb_assert (HOST_CHAR_BIT == 8);
16718 if (dwz->str.buffer[str_offset] == '\0')
16719 return NULL;
d521ce57 16720 return (const char *) (dwz->str.buffer + str_offset);
36586728
TT
16721}
16722
d521ce57
TT
16723static const char *
16724read_indirect_string (bfd *abfd, const gdb_byte *buf,
cf2c3c16
TT
16725 const struct comp_unit_head *cu_header,
16726 unsigned int *bytes_read_ptr)
16727{
16728 LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
16729
16730 return read_indirect_string_at_offset (abfd, str_offset);
16731}
16732
12df843f 16733static ULONGEST
d521ce57
TT
16734read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
16735 unsigned int *bytes_read_ptr)
c906108c 16736{
12df843f 16737 ULONGEST result;
ce5d95e1 16738 unsigned int num_read;
c906108c
SS
16739 int i, shift;
16740 unsigned char byte;
16741
16742 result = 0;
16743 shift = 0;
16744 num_read = 0;
16745 i = 0;
16746 while (1)
16747 {
fe1b8b76 16748 byte = bfd_get_8 (abfd, buf);
c906108c
SS
16749 buf++;
16750 num_read++;
12df843f 16751 result |= ((ULONGEST) (byte & 127) << shift);
c906108c
SS
16752 if ((byte & 128) == 0)
16753 {
16754 break;
16755 }
16756 shift += 7;
16757 }
16758 *bytes_read_ptr = num_read;
16759 return result;
16760}
16761
12df843f 16762static LONGEST
d521ce57
TT
16763read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
16764 unsigned int *bytes_read_ptr)
c906108c 16765{
12df843f 16766 LONGEST result;
77e0b926 16767 int i, shift, num_read;
c906108c
SS
16768 unsigned char byte;
16769
16770 result = 0;
16771 shift = 0;
c906108c
SS
16772 num_read = 0;
16773 i = 0;
16774 while (1)
16775 {
fe1b8b76 16776 byte = bfd_get_8 (abfd, buf);
c906108c
SS
16777 buf++;
16778 num_read++;
12df843f 16779 result |= ((LONGEST) (byte & 127) << shift);
c906108c
SS
16780 shift += 7;
16781 if ((byte & 128) == 0)
16782 {
16783 break;
16784 }
16785 }
77e0b926 16786 if ((shift < 8 * sizeof (result)) && (byte & 0x40))
12df843f 16787 result |= -(((LONGEST) 1) << shift);
c906108c
SS
16788 *bytes_read_ptr = num_read;
16789 return result;
16790}
16791
3019eac3
DE
16792/* Given index ADDR_INDEX in .debug_addr, fetch the value.
16793 ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
16794 ADDR_SIZE is the size of addresses from the CU header. */
16795
16796static CORE_ADDR
16797read_addr_index_1 (unsigned int addr_index, ULONGEST addr_base, int addr_size)
16798{
16799 struct objfile *objfile = dwarf2_per_objfile->objfile;
16800 bfd *abfd = objfile->obfd;
16801 const gdb_byte *info_ptr;
16802
16803 dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
16804 if (dwarf2_per_objfile->addr.buffer == NULL)
16805 error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
4262abfb 16806 objfile_name (objfile));
3019eac3
DE
16807 if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
16808 error (_("DW_FORM_addr_index pointing outside of "
16809 ".debug_addr section [in module %s]"),
4262abfb 16810 objfile_name (objfile));
3019eac3
DE
16811 info_ptr = (dwarf2_per_objfile->addr.buffer
16812 + addr_base + addr_index * addr_size);
16813 if (addr_size == 4)
16814 return bfd_get_32 (abfd, info_ptr);
16815 else
16816 return bfd_get_64 (abfd, info_ptr);
16817}
16818
16819/* Given index ADDR_INDEX in .debug_addr, fetch the value. */
16820
16821static CORE_ADDR
16822read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
16823{
16824 return read_addr_index_1 (addr_index, cu->addr_base, cu->header.addr_size);
16825}
16826
16827/* Given a pointer to an leb128 value, fetch the value from .debug_addr. */
16828
16829static CORE_ADDR
d521ce57 16830read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
3019eac3
DE
16831 unsigned int *bytes_read)
16832{
16833 bfd *abfd = cu->objfile->obfd;
16834 unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
16835
16836 return read_addr_index (cu, addr_index);
16837}
16838
16839/* Data structure to pass results from dwarf2_read_addr_index_reader
16840 back to dwarf2_read_addr_index. */
16841
16842struct dwarf2_read_addr_index_data
16843{
16844 ULONGEST addr_base;
16845 int addr_size;
16846};
16847
16848/* die_reader_func for dwarf2_read_addr_index. */
16849
16850static void
16851dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
d521ce57 16852 const gdb_byte *info_ptr,
3019eac3
DE
16853 struct die_info *comp_unit_die,
16854 int has_children,
16855 void *data)
16856{
16857 struct dwarf2_cu *cu = reader->cu;
16858 struct dwarf2_read_addr_index_data *aidata =
16859 (struct dwarf2_read_addr_index_data *) data;
16860
16861 aidata->addr_base = cu->addr_base;
16862 aidata->addr_size = cu->header.addr_size;
16863}
16864
16865/* Given an index in .debug_addr, fetch the value.
16866 NOTE: This can be called during dwarf expression evaluation,
16867 long after the debug information has been read, and thus per_cu->cu
16868 may no longer exist. */
16869
16870CORE_ADDR
16871dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
16872 unsigned int addr_index)
16873{
16874 struct objfile *objfile = per_cu->objfile;
16875 struct dwarf2_cu *cu = per_cu->cu;
16876 ULONGEST addr_base;
16877 int addr_size;
16878
16879 /* This is intended to be called from outside this file. */
16880 dw2_setup (objfile);
16881
16882 /* We need addr_base and addr_size.
16883 If we don't have PER_CU->cu, we have to get it.
16884 Nasty, but the alternative is storing the needed info in PER_CU,
16885 which at this point doesn't seem justified: it's not clear how frequently
16886 it would get used and it would increase the size of every PER_CU.
16887 Entry points like dwarf2_per_cu_addr_size do a similar thing
16888 so we're not in uncharted territory here.
16889 Alas we need to be a bit more complicated as addr_base is contained
16890 in the DIE.
16891
16892 We don't need to read the entire CU(/TU).
16893 We just need the header and top level die.
a1b64ce1 16894
3019eac3 16895 IWBN to use the aging mechanism to let us lazily later discard the CU.
a1b64ce1 16896 For now we skip this optimization. */
3019eac3
DE
16897
16898 if (cu != NULL)
16899 {
16900 addr_base = cu->addr_base;
16901 addr_size = cu->header.addr_size;
16902 }
16903 else
16904 {
16905 struct dwarf2_read_addr_index_data aidata;
16906
a1b64ce1
DE
16907 /* Note: We can't use init_cutu_and_read_dies_simple here,
16908 we need addr_base. */
16909 init_cutu_and_read_dies (per_cu, NULL, 0, 0,
16910 dwarf2_read_addr_index_reader, &aidata);
3019eac3
DE
16911 addr_base = aidata.addr_base;
16912 addr_size = aidata.addr_size;
16913 }
16914
16915 return read_addr_index_1 (addr_index, addr_base, addr_size);
16916}
16917
57d63ce2
DE
16918/* Given a DW_FORM_GNU_str_index, fetch the string.
16919 This is only used by the Fission support. */
3019eac3 16920
d521ce57 16921static const char *
342587c4 16922read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
3019eac3
DE
16923{
16924 struct objfile *objfile = dwarf2_per_objfile->objfile;
c5164cbc 16925 const char *objf_name = objfile_name (objfile);
3019eac3 16926 bfd *abfd = objfile->obfd;
342587c4 16927 struct dwarf2_cu *cu = reader->cu;
73869dc2
DE
16928 struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
16929 struct dwarf2_section_info *str_offsets_section =
16930 &reader->dwo_file->sections.str_offsets;
d521ce57 16931 const gdb_byte *info_ptr;
3019eac3 16932 ULONGEST str_offset;
57d63ce2 16933 static const char form_name[] = "DW_FORM_GNU_str_index";
3019eac3 16934
73869dc2
DE
16935 dwarf2_read_section (objfile, str_section);
16936 dwarf2_read_section (objfile, str_offsets_section);
16937 if (str_section->buffer == NULL)
57d63ce2 16938 error (_("%s used without .debug_str.dwo section"
3019eac3 16939 " in CU at offset 0x%lx [in module %s]"),
c5164cbc 16940 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16941 if (str_offsets_section->buffer == NULL)
57d63ce2 16942 error (_("%s used without .debug_str_offsets.dwo section"
3019eac3 16943 " in CU at offset 0x%lx [in module %s]"),
c5164cbc 16944 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16945 if (str_index * cu->header.offset_size >= str_offsets_section->size)
57d63ce2 16946 error (_("%s pointing outside of .debug_str_offsets.dwo"
3019eac3 16947 " section in CU at offset 0x%lx [in module %s]"),
c5164cbc 16948 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16949 info_ptr = (str_offsets_section->buffer
3019eac3
DE
16950 + str_index * cu->header.offset_size);
16951 if (cu->header.offset_size == 4)
16952 str_offset = bfd_get_32 (abfd, info_ptr);
16953 else
16954 str_offset = bfd_get_64 (abfd, info_ptr);
73869dc2 16955 if (str_offset >= str_section->size)
57d63ce2 16956 error (_("Offset from %s pointing outside of"
3019eac3 16957 " .debug_str.dwo section in CU at offset 0x%lx [in module %s]"),
c5164cbc 16958 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16959 return (const char *) (str_section->buffer + str_offset);
3019eac3
DE
16960}
16961
3019eac3
DE
16962/* Return the length of an LEB128 number in BUF. */
16963
16964static int
16965leb128_size (const gdb_byte *buf)
16966{
16967 const gdb_byte *begin = buf;
16968 gdb_byte byte;
16969
16970 while (1)
16971 {
16972 byte = *buf++;
16973 if ((byte & 128) == 0)
16974 return buf - begin;
16975 }
16976}
16977
c906108c 16978static void
e142c38c 16979set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
c906108c
SS
16980{
16981 switch (lang)
16982 {
16983 case DW_LANG_C89:
76bee0cc 16984 case DW_LANG_C99:
0cfd832f 16985 case DW_LANG_C11:
c906108c 16986 case DW_LANG_C:
d1be3247 16987 case DW_LANG_UPC:
e142c38c 16988 cu->language = language_c;
c906108c
SS
16989 break;
16990 case DW_LANG_C_plus_plus:
0cfd832f
MW
16991 case DW_LANG_C_plus_plus_11:
16992 case DW_LANG_C_plus_plus_14:
e142c38c 16993 cu->language = language_cplus;
c906108c 16994 break;
6aecb9c2
JB
16995 case DW_LANG_D:
16996 cu->language = language_d;
16997 break;
c906108c
SS
16998 case DW_LANG_Fortran77:
16999 case DW_LANG_Fortran90:
b21b22e0 17000 case DW_LANG_Fortran95:
f7de9aab
MW
17001 case DW_LANG_Fortran03:
17002 case DW_LANG_Fortran08:
e142c38c 17003 cu->language = language_fortran;
c906108c 17004 break;
a766d390
DE
17005 case DW_LANG_Go:
17006 cu->language = language_go;
17007 break;
c906108c 17008 case DW_LANG_Mips_Assembler:
e142c38c 17009 cu->language = language_asm;
c906108c 17010 break;
bebd888e 17011 case DW_LANG_Java:
e142c38c 17012 cu->language = language_java;
bebd888e 17013 break;
c906108c 17014 case DW_LANG_Ada83:
8aaf0b47 17015 case DW_LANG_Ada95:
bc5f45f8
JB
17016 cu->language = language_ada;
17017 break;
72019c9c
GM
17018 case DW_LANG_Modula2:
17019 cu->language = language_m2;
17020 break;
fe8e67fd
PM
17021 case DW_LANG_Pascal83:
17022 cu->language = language_pascal;
17023 break;
22566fbd
DJ
17024 case DW_LANG_ObjC:
17025 cu->language = language_objc;
17026 break;
c906108c
SS
17027 case DW_LANG_Cobol74:
17028 case DW_LANG_Cobol85:
c906108c 17029 default:
e142c38c 17030 cu->language = language_minimal;
c906108c
SS
17031 break;
17032 }
e142c38c 17033 cu->language_defn = language_def (cu->language);
c906108c
SS
17034}
17035
17036/* Return the named attribute or NULL if not there. */
17037
17038static struct attribute *
e142c38c 17039dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
c906108c 17040{
a48e046c 17041 for (;;)
c906108c 17042 {
a48e046c
TT
17043 unsigned int i;
17044 struct attribute *spec = NULL;
17045
17046 for (i = 0; i < die->num_attrs; ++i)
17047 {
17048 if (die->attrs[i].name == name)
17049 return &die->attrs[i];
17050 if (die->attrs[i].name == DW_AT_specification
17051 || die->attrs[i].name == DW_AT_abstract_origin)
17052 spec = &die->attrs[i];
17053 }
17054
17055 if (!spec)
17056 break;
c906108c 17057
f2f0e013 17058 die = follow_die_ref (die, spec, &cu);
f2f0e013 17059 }
c5aa993b 17060
c906108c
SS
17061 return NULL;
17062}
17063
348e048f
DE
17064/* Return the named attribute or NULL if not there,
17065 but do not follow DW_AT_specification, etc.
17066 This is for use in contexts where we're reading .debug_types dies.
17067 Following DW_AT_specification, DW_AT_abstract_origin will take us
17068 back up the chain, and we want to go down. */
17069
17070static struct attribute *
45e58e77 17071dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
348e048f
DE
17072{
17073 unsigned int i;
17074
17075 for (i = 0; i < die->num_attrs; ++i)
17076 if (die->attrs[i].name == name)
17077 return &die->attrs[i];
17078
17079 return NULL;
17080}
17081
7d45c7c3
KB
17082/* Return the string associated with a string-typed attribute, or NULL if it
17083 is either not found or is of an incorrect type. */
17084
17085static const char *
17086dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
17087{
17088 struct attribute *attr;
17089 const char *str = NULL;
17090
17091 attr = dwarf2_attr (die, name, cu);
17092
17093 if (attr != NULL)
17094 {
17095 if (attr->form == DW_FORM_strp || attr->form == DW_FORM_string
17096 || attr->form == DW_FORM_GNU_strp_alt)
17097 str = DW_STRING (attr);
17098 else
17099 complaint (&symfile_complaints,
17100 _("string type expected for attribute %s for "
17101 "DIE at 0x%x in module %s"),
17102 dwarf_attr_name (name), die->offset.sect_off,
17103 objfile_name (cu->objfile));
17104 }
17105
17106 return str;
17107}
17108
05cf31d1
JB
17109/* Return non-zero iff the attribute NAME is defined for the given DIE,
17110 and holds a non-zero value. This function should only be used for
2dc7f7b3 17111 DW_FORM_flag or DW_FORM_flag_present attributes. */
05cf31d1
JB
17112
17113static int
17114dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
17115{
17116 struct attribute *attr = dwarf2_attr (die, name, cu);
17117
17118 return (attr && DW_UNSND (attr));
17119}
17120
3ca72b44 17121static int
e142c38c 17122die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
3ca72b44 17123{
05cf31d1
JB
17124 /* A DIE is a declaration if it has a DW_AT_declaration attribute
17125 which value is non-zero. However, we have to be careful with
17126 DIEs having a DW_AT_specification attribute, because dwarf2_attr()
17127 (via dwarf2_flag_true_p) follows this attribute. So we may
17128 end up accidently finding a declaration attribute that belongs
17129 to a different DIE referenced by the specification attribute,
17130 even though the given DIE does not have a declaration attribute. */
17131 return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
17132 && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
3ca72b44
AC
17133}
17134
63d06c5c 17135/* Return the die giving the specification for DIE, if there is
f2f0e013 17136 one. *SPEC_CU is the CU containing DIE on input, and the CU
edb3359d
DJ
17137 containing the return value on output. If there is no
17138 specification, but there is an abstract origin, that is
17139 returned. */
63d06c5c
DC
17140
17141static struct die_info *
f2f0e013 17142die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
63d06c5c 17143{
f2f0e013
DJ
17144 struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
17145 *spec_cu);
63d06c5c 17146
edb3359d
DJ
17147 if (spec_attr == NULL)
17148 spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
17149
63d06c5c
DC
17150 if (spec_attr == NULL)
17151 return NULL;
17152 else
f2f0e013 17153 return follow_die_ref (die, spec_attr, spec_cu);
63d06c5c 17154}
c906108c 17155
debd256d 17156/* Free the line_header structure *LH, and any arrays and strings it
ae2de4f8
DE
17157 refers to.
17158 NOTE: This is also used as a "cleanup" function. */
17159
debd256d
JB
17160static void
17161free_line_header (struct line_header *lh)
17162{
17163 if (lh->standard_opcode_lengths)
a8bc7b56 17164 xfree (lh->standard_opcode_lengths);
debd256d
JB
17165
17166 /* Remember that all the lh->file_names[i].name pointers are
17167 pointers into debug_line_buffer, and don't need to be freed. */
17168 if (lh->file_names)
a8bc7b56 17169 xfree (lh->file_names);
debd256d
JB
17170
17171 /* Similarly for the include directory names. */
17172 if (lh->include_dirs)
a8bc7b56 17173 xfree (lh->include_dirs);
debd256d 17174
a8bc7b56 17175 xfree (lh);
debd256d
JB
17176}
17177
527f3840
JK
17178/* Stub for free_line_header to match void * callback types. */
17179
17180static void
17181free_line_header_voidp (void *arg)
17182{
17183 struct line_header *lh = arg;
17184
17185 free_line_header (lh);
17186}
17187
debd256d 17188/* Add an entry to LH's include directory table. */
ae2de4f8 17189
debd256d 17190static void
d521ce57 17191add_include_dir (struct line_header *lh, const char *include_dir)
c906108c 17192{
27e0867f
DE
17193 if (dwarf_line_debug >= 2)
17194 fprintf_unfiltered (gdb_stdlog, "Adding dir %u: %s\n",
17195 lh->num_include_dirs + 1, include_dir);
17196
debd256d
JB
17197 /* Grow the array if necessary. */
17198 if (lh->include_dirs_size == 0)
c5aa993b 17199 {
debd256d 17200 lh->include_dirs_size = 1; /* for testing */
8d749320 17201 lh->include_dirs = XNEWVEC (const char *, lh->include_dirs_size);
debd256d
JB
17202 }
17203 else if (lh->num_include_dirs >= lh->include_dirs_size)
17204 {
17205 lh->include_dirs_size *= 2;
8d749320
SM
17206 lh->include_dirs = XRESIZEVEC (const char *, lh->include_dirs,
17207 lh->include_dirs_size);
c5aa993b 17208 }
c906108c 17209
debd256d
JB
17210 lh->include_dirs[lh->num_include_dirs++] = include_dir;
17211}
6e70227d 17212
debd256d 17213/* Add an entry to LH's file name table. */
ae2de4f8 17214
debd256d
JB
17215static void
17216add_file_name (struct line_header *lh,
d521ce57 17217 const char *name,
debd256d
JB
17218 unsigned int dir_index,
17219 unsigned int mod_time,
17220 unsigned int length)
17221{
17222 struct file_entry *fe;
17223
27e0867f
DE
17224 if (dwarf_line_debug >= 2)
17225 fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
17226 lh->num_file_names + 1, name);
17227
debd256d
JB
17228 /* Grow the array if necessary. */
17229 if (lh->file_names_size == 0)
17230 {
17231 lh->file_names_size = 1; /* for testing */
8d749320 17232 lh->file_names = XNEWVEC (struct file_entry, lh->file_names_size);
debd256d
JB
17233 }
17234 else if (lh->num_file_names >= lh->file_names_size)
17235 {
17236 lh->file_names_size *= 2;
17237 lh->file_names = xrealloc (lh->file_names,
17238 (lh->file_names_size
17239 * sizeof (*lh->file_names)));
17240 }
17241
17242 fe = &lh->file_names[lh->num_file_names++];
17243 fe->name = name;
17244 fe->dir_index = dir_index;
17245 fe->mod_time = mod_time;
17246 fe->length = length;
aaa75496 17247 fe->included_p = 0;
cb1df416 17248 fe->symtab = NULL;
debd256d 17249}
6e70227d 17250
83769d0b 17251/* A convenience function to find the proper .debug_line section for a CU. */
36586728
TT
17252
17253static struct dwarf2_section_info *
17254get_debug_line_section (struct dwarf2_cu *cu)
17255{
17256 struct dwarf2_section_info *section;
17257
17258 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
17259 DWO file. */
17260 if (cu->dwo_unit && cu->per_cu->is_debug_types)
17261 section = &cu->dwo_unit->dwo_file->sections.line;
17262 else if (cu->per_cu->is_dwz)
17263 {
17264 struct dwz_file *dwz = dwarf2_get_dwz_file ();
17265
17266 section = &dwz->line;
17267 }
17268 else
17269 section = &dwarf2_per_objfile->line;
17270
17271 return section;
17272}
17273
debd256d 17274/* Read the statement program header starting at OFFSET in
3019eac3 17275 .debug_line, or .debug_line.dwo. Return a pointer
6502dd73 17276 to a struct line_header, allocated using xmalloc.
cd366ee8
DE
17277 Returns NULL if there is a problem reading the header, e.g., if it
17278 has a version we don't understand.
debd256d
JB
17279
17280 NOTE: the strings in the include directory and file name tables of
3019eac3
DE
17281 the returned object point into the dwarf line section buffer,
17282 and must not be freed. */
ae2de4f8 17283
debd256d 17284static struct line_header *
3019eac3 17285dwarf_decode_line_header (unsigned int offset, struct dwarf2_cu *cu)
debd256d
JB
17286{
17287 struct cleanup *back_to;
17288 struct line_header *lh;
d521ce57 17289 const gdb_byte *line_ptr;
c764a876 17290 unsigned int bytes_read, offset_size;
debd256d 17291 int i;
d521ce57 17292 const char *cur_dir, *cur_file;
3019eac3
DE
17293 struct dwarf2_section_info *section;
17294 bfd *abfd;
17295
36586728 17296 section = get_debug_line_section (cu);
3019eac3
DE
17297 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
17298 if (section->buffer == NULL)
debd256d 17299 {
3019eac3
DE
17300 if (cu->dwo_unit && cu->per_cu->is_debug_types)
17301 complaint (&symfile_complaints, _("missing .debug_line.dwo section"));
17302 else
17303 complaint (&symfile_complaints, _("missing .debug_line section"));
debd256d
JB
17304 return 0;
17305 }
17306
fceca515
DE
17307 /* We can't do this until we know the section is non-empty.
17308 Only then do we know we have such a section. */
a32a8923 17309 abfd = get_section_bfd_owner (section);
fceca515 17310
a738430d
MK
17311 /* Make sure that at least there's room for the total_length field.
17312 That could be 12 bytes long, but we're just going to fudge that. */
3019eac3 17313 if (offset + 4 >= section->size)
debd256d 17314 {
4d3c2250 17315 dwarf2_statement_list_fits_in_line_number_section_complaint ();
debd256d
JB
17316 return 0;
17317 }
17318
8d749320 17319 lh = XNEW (struct line_header);
debd256d
JB
17320 memset (lh, 0, sizeof (*lh));
17321 back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
17322 (void *) lh);
17323
527f3840
JK
17324 lh->offset.sect_off = offset;
17325 lh->offset_in_dwz = cu->per_cu->is_dwz;
17326
3019eac3 17327 line_ptr = section->buffer + offset;
debd256d 17328
a738430d 17329 /* Read in the header. */
6e70227d 17330 lh->total_length =
c764a876
DE
17331 read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
17332 &bytes_read, &offset_size);
debd256d 17333 line_ptr += bytes_read;
3019eac3 17334 if (line_ptr + lh->total_length > (section->buffer + section->size))
debd256d 17335 {
4d3c2250 17336 dwarf2_statement_list_fits_in_line_number_section_complaint ();
2f324bf6 17337 do_cleanups (back_to);
debd256d
JB
17338 return 0;
17339 }
17340 lh->statement_program_end = line_ptr + lh->total_length;
17341 lh->version = read_2_bytes (abfd, line_ptr);
17342 line_ptr += 2;
cd366ee8
DE
17343 if (lh->version > 4)
17344 {
17345 /* This is a version we don't understand. The format could have
17346 changed in ways we don't handle properly so just punt. */
17347 complaint (&symfile_complaints,
17348 _("unsupported version in .debug_line section"));
17349 return NULL;
17350 }
c764a876
DE
17351 lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
17352 line_ptr += offset_size;
debd256d
JB
17353 lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
17354 line_ptr += 1;
2dc7f7b3
TT
17355 if (lh->version >= 4)
17356 {
17357 lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
17358 line_ptr += 1;
17359 }
17360 else
17361 lh->maximum_ops_per_instruction = 1;
17362
17363 if (lh->maximum_ops_per_instruction == 0)
17364 {
17365 lh->maximum_ops_per_instruction = 1;
17366 complaint (&symfile_complaints,
3e43a32a
MS
17367 _("invalid maximum_ops_per_instruction "
17368 "in `.debug_line' section"));
2dc7f7b3
TT
17369 }
17370
debd256d
JB
17371 lh->default_is_stmt = read_1_byte (abfd, line_ptr);
17372 line_ptr += 1;
17373 lh->line_base = read_1_signed_byte (abfd, line_ptr);
17374 line_ptr += 1;
17375 lh->line_range = read_1_byte (abfd, line_ptr);
17376 line_ptr += 1;
17377 lh->opcode_base = read_1_byte (abfd, line_ptr);
17378 line_ptr += 1;
8d749320 17379 lh->standard_opcode_lengths = XNEWVEC (unsigned char, lh->opcode_base);
debd256d
JB
17380
17381 lh->standard_opcode_lengths[0] = 1; /* This should never be used anyway. */
17382 for (i = 1; i < lh->opcode_base; ++i)
17383 {
17384 lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
17385 line_ptr += 1;
17386 }
17387
a738430d 17388 /* Read directory table. */
9b1c24c8 17389 while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
debd256d
JB
17390 {
17391 line_ptr += bytes_read;
17392 add_include_dir (lh, cur_dir);
17393 }
17394 line_ptr += bytes_read;
17395
a738430d 17396 /* Read file name table. */
9b1c24c8 17397 while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
debd256d
JB
17398 {
17399 unsigned int dir_index, mod_time, length;
17400
17401 line_ptr += bytes_read;
17402 dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17403 line_ptr += bytes_read;
17404 mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17405 line_ptr += bytes_read;
17406 length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17407 line_ptr += bytes_read;
17408
17409 add_file_name (lh, cur_file, dir_index, mod_time, length);
17410 }
17411 line_ptr += bytes_read;
6e70227d 17412 lh->statement_program_start = line_ptr;
debd256d 17413
3019eac3 17414 if (line_ptr > (section->buffer + section->size))
4d3c2250 17415 complaint (&symfile_complaints,
3e43a32a
MS
17416 _("line number info header doesn't "
17417 "fit in `.debug_line' section"));
debd256d
JB
17418
17419 discard_cleanups (back_to);
17420 return lh;
17421}
c906108c 17422
c6da4cef
DE
17423/* Subroutine of dwarf_decode_lines to simplify it.
17424 Return the file name of the psymtab for included file FILE_INDEX
17425 in line header LH of PST.
17426 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
17427 If space for the result is malloc'd, it will be freed by a cleanup.
1ed59174
JK
17428 Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.
17429
17430 The function creates dangling cleanup registration. */
c6da4cef 17431
d521ce57 17432static const char *
c6da4cef
DE
17433psymtab_include_file_name (const struct line_header *lh, int file_index,
17434 const struct partial_symtab *pst,
17435 const char *comp_dir)
17436{
17437 const struct file_entry fe = lh->file_names [file_index];
d521ce57
TT
17438 const char *include_name = fe.name;
17439 const char *include_name_to_compare = include_name;
17440 const char *dir_name = NULL;
72b9f47f
TT
17441 const char *pst_filename;
17442 char *copied_name = NULL;
c6da4cef
DE
17443 int file_is_pst;
17444
afa6c9ab 17445 if (fe.dir_index && lh->include_dirs != NULL)
c6da4cef
DE
17446 dir_name = lh->include_dirs[fe.dir_index - 1];
17447
17448 if (!IS_ABSOLUTE_PATH (include_name)
17449 && (dir_name != NULL || comp_dir != NULL))
17450 {
17451 /* Avoid creating a duplicate psymtab for PST.
17452 We do this by comparing INCLUDE_NAME and PST_FILENAME.
17453 Before we do the comparison, however, we need to account
17454 for DIR_NAME and COMP_DIR.
17455 First prepend dir_name (if non-NULL). If we still don't
17456 have an absolute path prepend comp_dir (if non-NULL).
17457 However, the directory we record in the include-file's
17458 psymtab does not contain COMP_DIR (to match the
17459 corresponding symtab(s)).
17460
17461 Example:
17462
17463 bash$ cd /tmp
17464 bash$ gcc -g ./hello.c
17465 include_name = "hello.c"
17466 dir_name = "."
17467 DW_AT_comp_dir = comp_dir = "/tmp"
5f52445b
YQ
17468 DW_AT_name = "./hello.c"
17469
17470 */
c6da4cef
DE
17471
17472 if (dir_name != NULL)
17473 {
d521ce57
TT
17474 char *tem = concat (dir_name, SLASH_STRING,
17475 include_name, (char *)NULL);
17476
17477 make_cleanup (xfree, tem);
17478 include_name = tem;
c6da4cef 17479 include_name_to_compare = include_name;
c6da4cef
DE
17480 }
17481 if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
17482 {
d521ce57
TT
17483 char *tem = concat (comp_dir, SLASH_STRING,
17484 include_name, (char *)NULL);
17485
17486 make_cleanup (xfree, tem);
17487 include_name_to_compare = tem;
c6da4cef
DE
17488 }
17489 }
17490
17491 pst_filename = pst->filename;
17492 if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
17493 {
72b9f47f
TT
17494 copied_name = concat (pst->dirname, SLASH_STRING,
17495 pst_filename, (char *)NULL);
17496 pst_filename = copied_name;
c6da4cef
DE
17497 }
17498
1e3fad37 17499 file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
c6da4cef 17500
72b9f47f
TT
17501 if (copied_name != NULL)
17502 xfree (copied_name);
c6da4cef
DE
17503
17504 if (file_is_pst)
17505 return NULL;
17506 return include_name;
17507}
17508
d9b3de22
DE
17509/* State machine to track the state of the line number program. */
17510
17511typedef struct
17512{
17513 /* These are part of the standard DWARF line number state machine. */
17514
17515 unsigned char op_index;
17516 unsigned int file;
17517 unsigned int line;
17518 CORE_ADDR address;
17519 int is_stmt;
17520 unsigned int discriminator;
17521
17522 /* Additional bits of state we need to track. */
17523
17524 /* The last file that we called dwarf2_start_subfile for.
17525 This is only used for TLLs. */
17526 unsigned int last_file;
17527 /* The last file a line number was recorded for. */
17528 struct subfile *last_subfile;
17529
17530 /* The function to call to record a line. */
17531 record_line_ftype *record_line;
17532
17533 /* The last line number that was recorded, used to coalesce
17534 consecutive entries for the same line. This can happen, for
17535 example, when discriminators are present. PR 17276. */
17536 unsigned int last_line;
17537 int line_has_non_zero_discriminator;
17538} lnp_state_machine;
17539
17540/* There's a lot of static state to pass to dwarf_record_line.
17541 This keeps it all together. */
17542
17543typedef struct
17544{
17545 /* The gdbarch. */
17546 struct gdbarch *gdbarch;
17547
17548 /* The line number header. */
17549 struct line_header *line_header;
17550
17551 /* Non-zero if we're recording lines.
17552 Otherwise we're building partial symtabs and are just interested in
17553 finding include files mentioned by the line number program. */
17554 int record_lines_p;
17555} lnp_reader_state;
17556
c91513d8
PP
17557/* Ignore this record_line request. */
17558
17559static void
17560noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
17561{
17562 return;
17563}
17564
a05a36a5
DE
17565/* Return non-zero if we should add LINE to the line number table.
17566 LINE is the line to add, LAST_LINE is the last line that was added,
17567 LAST_SUBFILE is the subfile for LAST_LINE.
17568 LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
17569 had a non-zero discriminator.
17570
17571 We have to be careful in the presence of discriminators.
17572 E.g., for this line:
17573
17574 for (i = 0; i < 100000; i++);
17575
17576 clang can emit four line number entries for that one line,
17577 each with a different discriminator.
17578 See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
17579
17580 However, we want gdb to coalesce all four entries into one.
17581 Otherwise the user could stepi into the middle of the line and
17582 gdb would get confused about whether the pc really was in the
17583 middle of the line.
17584
17585 Things are further complicated by the fact that two consecutive
17586 line number entries for the same line is a heuristic used by gcc
17587 to denote the end of the prologue. So we can't just discard duplicate
17588 entries, we have to be selective about it. The heuristic we use is
17589 that we only collapse consecutive entries for the same line if at least
17590 one of those entries has a non-zero discriminator. PR 17276.
17591
17592 Note: Addresses in the line number state machine can never go backwards
17593 within one sequence, thus this coalescing is ok. */
17594
17595static int
17596dwarf_record_line_p (unsigned int line, unsigned int last_line,
17597 int line_has_non_zero_discriminator,
17598 struct subfile *last_subfile)
17599{
17600 if (current_subfile != last_subfile)
17601 return 1;
17602 if (line != last_line)
17603 return 1;
17604 /* Same line for the same file that we've seen already.
17605 As a last check, for pr 17276, only record the line if the line
17606 has never had a non-zero discriminator. */
17607 if (!line_has_non_zero_discriminator)
17608 return 1;
17609 return 0;
17610}
17611
252a6764
DE
17612/* Use P_RECORD_LINE to record line number LINE beginning at address ADDRESS
17613 in the line table of subfile SUBFILE. */
17614
17615static void
d9b3de22
DE
17616dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
17617 unsigned int line, CORE_ADDR address,
17618 record_line_ftype p_record_line)
252a6764
DE
17619{
17620 CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
17621
27e0867f
DE
17622 if (dwarf_line_debug)
17623 {
17624 fprintf_unfiltered (gdb_stdlog,
17625 "Recording line %u, file %s, address %s\n",
17626 line, lbasename (subfile->name),
17627 paddress (gdbarch, address));
17628 }
17629
d5962de5 17630 (*p_record_line) (subfile, line, addr);
252a6764
DE
17631}
17632
17633/* Subroutine of dwarf_decode_lines_1 to simplify it.
17634 Mark the end of a set of line number records.
d9b3de22 17635 The arguments are the same as for dwarf_record_line_1.
252a6764
DE
17636 If SUBFILE is NULL the request is ignored. */
17637
17638static void
17639dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
17640 CORE_ADDR address, record_line_ftype p_record_line)
17641{
27e0867f
DE
17642 if (subfile == NULL)
17643 return;
17644
17645 if (dwarf_line_debug)
17646 {
17647 fprintf_unfiltered (gdb_stdlog,
17648 "Finishing current line, file %s, address %s\n",
17649 lbasename (subfile->name),
17650 paddress (gdbarch, address));
17651 }
17652
d9b3de22
DE
17653 dwarf_record_line_1 (gdbarch, subfile, 0, address, p_record_line);
17654}
17655
17656/* Record the line in STATE.
17657 END_SEQUENCE is non-zero if we're processing the end of a sequence. */
17658
17659static void
17660dwarf_record_line (lnp_reader_state *reader, lnp_state_machine *state,
17661 int end_sequence)
17662{
17663 const struct line_header *lh = reader->line_header;
17664 unsigned int file, line, discriminator;
17665 int is_stmt;
17666
17667 file = state->file;
17668 line = state->line;
17669 is_stmt = state->is_stmt;
17670 discriminator = state->discriminator;
17671
17672 if (dwarf_line_debug)
17673 {
17674 fprintf_unfiltered (gdb_stdlog,
17675 "Processing actual line %u: file %u,"
17676 " address %s, is_stmt %u, discrim %u\n",
17677 line, file,
17678 paddress (reader->gdbarch, state->address),
17679 is_stmt, discriminator);
17680 }
17681
17682 if (file == 0 || file - 1 >= lh->num_file_names)
17683 dwarf2_debug_line_missing_file_complaint ();
17684 /* For now we ignore lines not starting on an instruction boundary.
17685 But not when processing end_sequence for compatibility with the
17686 previous version of the code. */
17687 else if (state->op_index == 0 || end_sequence)
17688 {
17689 lh->file_names[file - 1].included_p = 1;
17690 if (reader->record_lines_p && is_stmt)
17691 {
e815d2d2 17692 if (state->last_subfile != current_subfile || end_sequence)
d9b3de22
DE
17693 {
17694 dwarf_finish_line (reader->gdbarch, state->last_subfile,
17695 state->address, state->record_line);
17696 }
17697
17698 if (!end_sequence)
17699 {
17700 if (dwarf_record_line_p (line, state->last_line,
17701 state->line_has_non_zero_discriminator,
17702 state->last_subfile))
17703 {
17704 dwarf_record_line_1 (reader->gdbarch, current_subfile,
17705 line, state->address,
17706 state->record_line);
17707 }
17708 state->last_subfile = current_subfile;
17709 state->last_line = line;
17710 }
17711 }
17712 }
17713}
17714
17715/* Initialize STATE for the start of a line number program. */
17716
17717static void
17718init_lnp_state_machine (lnp_state_machine *state,
17719 const lnp_reader_state *reader)
17720{
17721 memset (state, 0, sizeof (*state));
17722
17723 /* Just starting, there is no "last file". */
17724 state->last_file = 0;
17725 state->last_subfile = NULL;
17726
17727 state->record_line = record_line;
17728
17729 state->last_line = 0;
17730 state->line_has_non_zero_discriminator = 0;
17731
17732 /* Initialize these according to the DWARF spec. */
17733 state->op_index = 0;
17734 state->file = 1;
17735 state->line = 1;
17736 /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
17737 was a line entry for it so that the backend has a chance to adjust it
17738 and also record it in case it needs it. This is currently used by MIPS
17739 code, cf. `mips_adjust_dwarf2_line'. */
17740 state->address = gdbarch_adjust_dwarf2_line (reader->gdbarch, 0, 0);
17741 state->is_stmt = reader->line_header->default_is_stmt;
17742 state->discriminator = 0;
252a6764
DE
17743}
17744
924c2928
DE
17745/* Check address and if invalid nop-out the rest of the lines in this
17746 sequence. */
17747
17748static void
d9b3de22 17749check_line_address (struct dwarf2_cu *cu, lnp_state_machine *state,
924c2928
DE
17750 const gdb_byte *line_ptr,
17751 CORE_ADDR lowpc, CORE_ADDR address)
17752{
17753 /* If address < lowpc then it's not a usable value, it's outside the
17754 pc range of the CU. However, we restrict the test to only address
17755 values of zero to preserve GDB's previous behaviour which is to
17756 handle the specific case of a function being GC'd by the linker. */
17757
17758 if (address == 0 && address < lowpc)
17759 {
17760 /* This line table is for a function which has been
17761 GCd by the linker. Ignore it. PR gdb/12528 */
17762
17763 struct objfile *objfile = cu->objfile;
17764 long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
17765
17766 complaint (&symfile_complaints,
17767 _(".debug_line address at offset 0x%lx is 0 [in module %s]"),
17768 line_offset, objfile_name (objfile));
d9b3de22
DE
17769 state->record_line = noop_record_line;
17770 /* Note: sm.record_line is left as noop_record_line
924c2928
DE
17771 until we see DW_LNE_end_sequence. */
17772 }
17773}
17774
f3f5162e 17775/* Subroutine of dwarf_decode_lines to simplify it.
d9b3de22
DE
17776 Process the line number information in LH.
17777 If DECODE_FOR_PST_P is non-zero, all we do is process the line number
17778 program in order to set included_p for every referenced header. */
debd256d 17779
c906108c 17780static void
43f3e411
DE
17781dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
17782 const int decode_for_pst_p, CORE_ADDR lowpc)
c906108c 17783{
d521ce57
TT
17784 const gdb_byte *line_ptr, *extended_end;
17785 const gdb_byte *line_end;
a8c50c1f 17786 unsigned int bytes_read, extended_len;
699ca60a 17787 unsigned char op_code, extended_op;
e142c38c
DJ
17788 CORE_ADDR baseaddr;
17789 struct objfile *objfile = cu->objfile;
f3f5162e 17790 bfd *abfd = objfile->obfd;
fbf65064 17791 struct gdbarch *gdbarch = get_objfile_arch (objfile);
d9b3de22
DE
17792 /* Non-zero if we're recording line info (as opposed to building partial
17793 symtabs). */
17794 int record_lines_p = !decode_for_pst_p;
17795 /* A collection of things we need to pass to dwarf_record_line. */
17796 lnp_reader_state reader_state;
e142c38c
DJ
17797
17798 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 17799
debd256d
JB
17800 line_ptr = lh->statement_program_start;
17801 line_end = lh->statement_program_end;
c906108c 17802
d9b3de22
DE
17803 reader_state.gdbarch = gdbarch;
17804 reader_state.line_header = lh;
17805 reader_state.record_lines_p = record_lines_p;
17806
c906108c
SS
17807 /* Read the statement sequences until there's nothing left. */
17808 while (line_ptr < line_end)
17809 {
d9b3de22
DE
17810 /* The DWARF line number program state machine. */
17811 lnp_state_machine state_machine;
c906108c 17812 int end_sequence = 0;
d9b3de22
DE
17813
17814 /* Reset the state machine at the start of each sequence. */
17815 init_lnp_state_machine (&state_machine, &reader_state);
17816
17817 if (record_lines_p && lh->num_file_names >= state_machine.file)
c906108c 17818 {
aaa75496 17819 /* Start a subfile for the current file of the state machine. */
debd256d
JB
17820 /* lh->include_dirs and lh->file_names are 0-based, but the
17821 directory and file name numbers in the statement program
17822 are 1-based. */
d9b3de22 17823 struct file_entry *fe = &lh->file_names[state_machine.file - 1];
d521ce57 17824 const char *dir = NULL;
a738430d 17825
afa6c9ab 17826 if (fe->dir_index && lh->include_dirs != NULL)
debd256d 17827 dir = lh->include_dirs[fe->dir_index - 1];
4f1520fb 17828
4d663531 17829 dwarf2_start_subfile (fe->name, dir);
c906108c
SS
17830 }
17831
a738430d 17832 /* Decode the table. */
d9b3de22 17833 while (line_ptr < line_end && !end_sequence)
c906108c
SS
17834 {
17835 op_code = read_1_byte (abfd, line_ptr);
17836 line_ptr += 1;
9aa1fe7e 17837
debd256d 17838 if (op_code >= lh->opcode_base)
6e70227d 17839 {
8e07a239 17840 /* Special opcode. */
699ca60a 17841 unsigned char adj_opcode;
3e29f34a 17842 CORE_ADDR addr_adj;
a05a36a5 17843 int line_delta;
8e07a239 17844
debd256d 17845 adj_opcode = op_code - lh->opcode_base;
d9b3de22
DE
17846 addr_adj = (((state_machine.op_index
17847 + (adj_opcode / lh->line_range))
2dc7f7b3
TT
17848 / lh->maximum_ops_per_instruction)
17849 * lh->minimum_instruction_length);
d9b3de22
DE
17850 state_machine.address
17851 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17852 state_machine.op_index = ((state_machine.op_index
17853 + (adj_opcode / lh->line_range))
17854 % lh->maximum_ops_per_instruction);
a05a36a5 17855 line_delta = lh->line_base + (adj_opcode % lh->line_range);
d9b3de22 17856 state_machine.line += line_delta;
a05a36a5 17857 if (line_delta != 0)
d9b3de22
DE
17858 state_machine.line_has_non_zero_discriminator
17859 = state_machine.discriminator != 0;
17860
17861 dwarf_record_line (&reader_state, &state_machine, 0);
17862 state_machine.discriminator = 0;
9aa1fe7e
GK
17863 }
17864 else switch (op_code)
c906108c
SS
17865 {
17866 case DW_LNS_extended_op:
3e43a32a
MS
17867 extended_len = read_unsigned_leb128 (abfd, line_ptr,
17868 &bytes_read);
473b7be6 17869 line_ptr += bytes_read;
a8c50c1f 17870 extended_end = line_ptr + extended_len;
c906108c
SS
17871 extended_op = read_1_byte (abfd, line_ptr);
17872 line_ptr += 1;
17873 switch (extended_op)
17874 {
17875 case DW_LNE_end_sequence:
d9b3de22 17876 state_machine.record_line = record_line;
c906108c 17877 end_sequence = 1;
c906108c
SS
17878 break;
17879 case DW_LNE_set_address:
d9b3de22
DE
17880 {
17881 CORE_ADDR address
17882 = read_address (abfd, line_ptr, cu, &bytes_read);
17883
17884 line_ptr += bytes_read;
17885 check_line_address (cu, &state_machine, line_ptr,
17886 lowpc, address);
17887 state_machine.op_index = 0;
17888 address += baseaddr;
17889 state_machine.address
17890 = gdbarch_adjust_dwarf2_line (gdbarch, address, 0);
17891 }
c906108c
SS
17892 break;
17893 case DW_LNE_define_file:
debd256d 17894 {
d521ce57 17895 const char *cur_file;
debd256d 17896 unsigned int dir_index, mod_time, length;
6e70227d 17897
3e43a32a
MS
17898 cur_file = read_direct_string (abfd, line_ptr,
17899 &bytes_read);
debd256d
JB
17900 line_ptr += bytes_read;
17901 dir_index =
17902 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17903 line_ptr += bytes_read;
17904 mod_time =
17905 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17906 line_ptr += bytes_read;
17907 length =
17908 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17909 line_ptr += bytes_read;
17910 add_file_name (lh, cur_file, dir_index, mod_time, length);
17911 }
c906108c 17912 break;
d0c6ba3d
CC
17913 case DW_LNE_set_discriminator:
17914 /* The discriminator is not interesting to the debugger;
a05a36a5
DE
17915 just ignore it. We still need to check its value though:
17916 if there are consecutive entries for the same
17917 (non-prologue) line we want to coalesce them.
17918 PR 17276. */
d9b3de22
DE
17919 state_machine.discriminator
17920 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17921 state_machine.line_has_non_zero_discriminator
17922 |= state_machine.discriminator != 0;
a05a36a5 17923 line_ptr += bytes_read;
d0c6ba3d 17924 break;
c906108c 17925 default:
4d3c2250 17926 complaint (&symfile_complaints,
e2e0b3e5 17927 _("mangled .debug_line section"));
debd256d 17928 return;
c906108c 17929 }
a8c50c1f
DJ
17930 /* Make sure that we parsed the extended op correctly. If e.g.
17931 we expected a different address size than the producer used,
17932 we may have read the wrong number of bytes. */
17933 if (line_ptr != extended_end)
17934 {
17935 complaint (&symfile_complaints,
17936 _("mangled .debug_line section"));
17937 return;
17938 }
c906108c
SS
17939 break;
17940 case DW_LNS_copy:
d9b3de22
DE
17941 dwarf_record_line (&reader_state, &state_machine, 0);
17942 state_machine.discriminator = 0;
c906108c
SS
17943 break;
17944 case DW_LNS_advance_pc:
2dc7f7b3
TT
17945 {
17946 CORE_ADDR adjust
17947 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
3e29f34a 17948 CORE_ADDR addr_adj;
2dc7f7b3 17949
d9b3de22 17950 addr_adj = (((state_machine.op_index + adjust)
2dc7f7b3
TT
17951 / lh->maximum_ops_per_instruction)
17952 * lh->minimum_instruction_length);
d9b3de22
DE
17953 state_machine.address
17954 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17955 state_machine.op_index = ((state_machine.op_index + adjust)
17956 % lh->maximum_ops_per_instruction);
2dc7f7b3
TT
17957 line_ptr += bytes_read;
17958 }
c906108c
SS
17959 break;
17960 case DW_LNS_advance_line:
a05a36a5
DE
17961 {
17962 int line_delta
17963 = read_signed_leb128 (abfd, line_ptr, &bytes_read);
17964
d9b3de22 17965 state_machine.line += line_delta;
a05a36a5 17966 if (line_delta != 0)
d9b3de22
DE
17967 state_machine.line_has_non_zero_discriminator
17968 = state_machine.discriminator != 0;
a05a36a5
DE
17969 line_ptr += bytes_read;
17970 }
c906108c
SS
17971 break;
17972 case DW_LNS_set_file:
d9b3de22
DE
17973 {
17974 /* The arrays lh->include_dirs and lh->file_names are
17975 0-based, but the directory and file name numbers in
17976 the statement program are 1-based. */
17977 struct file_entry *fe;
17978 const char *dir = NULL;
17979
17980 state_machine.file = read_unsigned_leb128 (abfd, line_ptr,
17981 &bytes_read);
17982 line_ptr += bytes_read;
17983 if (state_machine.file == 0
17984 || state_machine.file - 1 >= lh->num_file_names)
17985 dwarf2_debug_line_missing_file_complaint ();
17986 else
17987 {
17988 fe = &lh->file_names[state_machine.file - 1];
17989 if (fe->dir_index && lh->include_dirs != NULL)
17990 dir = lh->include_dirs[fe->dir_index - 1];
17991 if (record_lines_p)
17992 {
17993 state_machine.last_subfile = current_subfile;
17994 state_machine.line_has_non_zero_discriminator
17995 = state_machine.discriminator != 0;
17996 dwarf2_start_subfile (fe->name, dir);
17997 }
17998 }
17999 }
c906108c
SS
18000 break;
18001 case DW_LNS_set_column:
0ad93d4f 18002 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
c906108c
SS
18003 line_ptr += bytes_read;
18004 break;
18005 case DW_LNS_negate_stmt:
d9b3de22 18006 state_machine.is_stmt = (!state_machine.is_stmt);
c906108c
SS
18007 break;
18008 case DW_LNS_set_basic_block:
c906108c 18009 break;
c2c6d25f
JM
18010 /* Add to the address register of the state machine the
18011 address increment value corresponding to special opcode
a738430d
MK
18012 255. I.e., this value is scaled by the minimum
18013 instruction length since special opcode 255 would have
b021a221 18014 scaled the increment. */
c906108c 18015 case DW_LNS_const_add_pc:
2dc7f7b3
TT
18016 {
18017 CORE_ADDR adjust = (255 - lh->opcode_base) / lh->line_range;
3e29f34a 18018 CORE_ADDR addr_adj;
2dc7f7b3 18019
d9b3de22 18020 addr_adj = (((state_machine.op_index + adjust)
2dc7f7b3
TT
18021 / lh->maximum_ops_per_instruction)
18022 * lh->minimum_instruction_length);
d9b3de22
DE
18023 state_machine.address
18024 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
18025 state_machine.op_index = ((state_machine.op_index + adjust)
18026 % lh->maximum_ops_per_instruction);
2dc7f7b3 18027 }
c906108c
SS
18028 break;
18029 case DW_LNS_fixed_advance_pc:
3e29f34a
MR
18030 {
18031 CORE_ADDR addr_adj;
18032
18033 addr_adj = read_2_bytes (abfd, line_ptr);
d9b3de22
DE
18034 state_machine.address
18035 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
18036 state_machine.op_index = 0;
3e29f34a
MR
18037 line_ptr += 2;
18038 }
c906108c 18039 break;
9aa1fe7e 18040 default:
a738430d
MK
18041 {
18042 /* Unknown standard opcode, ignore it. */
9aa1fe7e 18043 int i;
a738430d 18044
debd256d 18045 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
9aa1fe7e
GK
18046 {
18047 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
18048 line_ptr += bytes_read;
18049 }
18050 }
c906108c
SS
18051 }
18052 }
d9b3de22
DE
18053
18054 if (!end_sequence)
18055 dwarf2_debug_line_missing_end_sequence_complaint ();
18056
18057 /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
18058 in which case we still finish recording the last line). */
18059 dwarf_record_line (&reader_state, &state_machine, 1);
c906108c 18060 }
f3f5162e
DE
18061}
18062
18063/* Decode the Line Number Program (LNP) for the given line_header
18064 structure and CU. The actual information extracted and the type
18065 of structures created from the LNP depends on the value of PST.
18066
18067 1. If PST is NULL, then this procedure uses the data from the program
18068 to create all necessary symbol tables, and their linetables.
18069
18070 2. If PST is not NULL, this procedure reads the program to determine
18071 the list of files included by the unit represented by PST, and
18072 builds all the associated partial symbol tables.
18073
18074 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
18075 It is used for relative paths in the line table.
18076 NOTE: When processing partial symtabs (pst != NULL),
18077 comp_dir == pst->dirname.
18078
18079 NOTE: It is important that psymtabs have the same file name (via strcmp)
18080 as the corresponding symtab. Since COMP_DIR is not used in the name of the
18081 symtab we don't use it in the name of the psymtabs we create.
18082 E.g. expand_line_sal requires this when finding psymtabs to expand.
c3b7b696
YQ
18083 A good testcase for this is mb-inline.exp.
18084
527f3840
JK
18085 LOWPC is the lowest address in CU (or 0 if not known).
18086
18087 Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
18088 for its PC<->lines mapping information. Otherwise only the filename
18089 table is read in. */
f3f5162e
DE
18090
18091static void
18092dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
c3b7b696 18093 struct dwarf2_cu *cu, struct partial_symtab *pst,
527f3840 18094 CORE_ADDR lowpc, int decode_mapping)
f3f5162e
DE
18095{
18096 struct objfile *objfile = cu->objfile;
18097 const int decode_for_pst_p = (pst != NULL);
f3f5162e 18098
527f3840
JK
18099 if (decode_mapping)
18100 dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
aaa75496
JB
18101
18102 if (decode_for_pst_p)
18103 {
18104 int file_index;
18105
18106 /* Now that we're done scanning the Line Header Program, we can
18107 create the psymtab of each included file. */
18108 for (file_index = 0; file_index < lh->num_file_names; file_index++)
18109 if (lh->file_names[file_index].included_p == 1)
18110 {
d521ce57 18111 const char *include_name =
c6da4cef
DE
18112 psymtab_include_file_name (lh, file_index, pst, comp_dir);
18113 if (include_name != NULL)
aaa75496
JB
18114 dwarf2_create_include_psymtab (include_name, pst, objfile);
18115 }
18116 }
cb1df416
DJ
18117 else
18118 {
18119 /* Make sure a symtab is created for every file, even files
18120 which contain only variables (i.e. no code with associated
18121 line numbers). */
43f3e411 18122 struct compunit_symtab *cust = buildsym_compunit_symtab ();
cb1df416 18123 int i;
cb1df416
DJ
18124
18125 for (i = 0; i < lh->num_file_names; i++)
18126 {
d521ce57 18127 const char *dir = NULL;
f3f5162e 18128 struct file_entry *fe;
9a619af0 18129
cb1df416 18130 fe = &lh->file_names[i];
afa6c9ab 18131 if (fe->dir_index && lh->include_dirs != NULL)
cb1df416 18132 dir = lh->include_dirs[fe->dir_index - 1];
4d663531 18133 dwarf2_start_subfile (fe->name, dir);
cb1df416 18134
cb1df416 18135 if (current_subfile->symtab == NULL)
43f3e411
DE
18136 {
18137 current_subfile->symtab
18138 = allocate_symtab (cust, current_subfile->name);
18139 }
cb1df416
DJ
18140 fe->symtab = current_subfile->symtab;
18141 }
18142 }
c906108c
SS
18143}
18144
18145/* Start a subfile for DWARF. FILENAME is the name of the file and
18146 DIRNAME the name of the source directory which contains FILENAME
4d663531 18147 or NULL if not known.
c906108c
SS
18148 This routine tries to keep line numbers from identical absolute and
18149 relative file names in a common subfile.
18150
18151 Using the `list' example from the GDB testsuite, which resides in
18152 /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
18153 of /srcdir/list0.c yields the following debugging information for list0.c:
18154
c5aa993b 18155 DW_AT_name: /srcdir/list0.c
4d663531 18156 DW_AT_comp_dir: /compdir
357e46e7 18157 files.files[0].name: list0.h
c5aa993b 18158 files.files[0].dir: /srcdir
357e46e7 18159 files.files[1].name: list0.c
c5aa993b 18160 files.files[1].dir: /srcdir
c906108c
SS
18161
18162 The line number information for list0.c has to end up in a single
4f1520fb
FR
18163 subfile, so that `break /srcdir/list0.c:1' works as expected.
18164 start_subfile will ensure that this happens provided that we pass the
18165 concatenation of files.files[1].dir and files.files[1].name as the
18166 subfile's name. */
c906108c
SS
18167
18168static void
4d663531 18169dwarf2_start_subfile (const char *filename, const char *dirname)
c906108c 18170{
d521ce57 18171 char *copy = NULL;
4f1520fb 18172
4d663531 18173 /* In order not to lose the line information directory,
4f1520fb
FR
18174 we concatenate it to the filename when it makes sense.
18175 Note that the Dwarf3 standard says (speaking of filenames in line
18176 information): ``The directory index is ignored for file names
18177 that represent full path names''. Thus ignoring dirname in the
18178 `else' branch below isn't an issue. */
c906108c 18179
d5166ae1 18180 if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
d521ce57
TT
18181 {
18182 copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
18183 filename = copy;
18184 }
c906108c 18185
4d663531 18186 start_subfile (filename);
4f1520fb 18187
d521ce57
TT
18188 if (copy != NULL)
18189 xfree (copy);
c906108c
SS
18190}
18191
f4dc4d17
DE
18192/* Start a symtab for DWARF.
18193 NAME, COMP_DIR, LOW_PC are passed to start_symtab. */
18194
43f3e411 18195static struct compunit_symtab *
f4dc4d17 18196dwarf2_start_symtab (struct dwarf2_cu *cu,
15d034d0 18197 const char *name, const char *comp_dir, CORE_ADDR low_pc)
f4dc4d17 18198{
43f3e411
DE
18199 struct compunit_symtab *cust
18200 = start_symtab (cu->objfile, name, comp_dir, low_pc);
18201
f4dc4d17
DE
18202 record_debugformat ("DWARF 2");
18203 record_producer (cu->producer);
18204
18205 /* We assume that we're processing GCC output. */
18206 processing_gcc_compilation = 2;
18207
4d4ec4e5 18208 cu->processing_has_namespace_info = 0;
43f3e411
DE
18209
18210 return cust;
f4dc4d17
DE
18211}
18212
4c2df51b
DJ
18213static void
18214var_decode_location (struct attribute *attr, struct symbol *sym,
e7c27a73 18215 struct dwarf2_cu *cu)
4c2df51b 18216{
e7c27a73
DJ
18217 struct objfile *objfile = cu->objfile;
18218 struct comp_unit_head *cu_header = &cu->header;
18219
4c2df51b
DJ
18220 /* NOTE drow/2003-01-30: There used to be a comment and some special
18221 code here to turn a symbol with DW_AT_external and a
18222 SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol. This was
18223 necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
18224 with some versions of binutils) where shared libraries could have
18225 relocations against symbols in their debug information - the
18226 minimal symbol would have the right address, but the debug info
18227 would not. It's no longer necessary, because we will explicitly
18228 apply relocations when we read in the debug information now. */
18229
18230 /* A DW_AT_location attribute with no contents indicates that a
18231 variable has been optimized away. */
18232 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
18233 {
f1e6e072 18234 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
4c2df51b
DJ
18235 return;
18236 }
18237
18238 /* Handle one degenerate form of location expression specially, to
18239 preserve GDB's previous behavior when section offsets are
3019eac3
DE
18240 specified. If this is just a DW_OP_addr or DW_OP_GNU_addr_index
18241 then mark this symbol as LOC_STATIC. */
4c2df51b
DJ
18242
18243 if (attr_form_is_block (attr)
3019eac3
DE
18244 && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
18245 && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
18246 || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
18247 && (DW_BLOCK (attr)->size
18248 == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
4c2df51b 18249 {
891d2f0b 18250 unsigned int dummy;
4c2df51b 18251
3019eac3
DE
18252 if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
18253 SYMBOL_VALUE_ADDRESS (sym) =
18254 read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
18255 else
18256 SYMBOL_VALUE_ADDRESS (sym) =
18257 read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
f1e6e072 18258 SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
4c2df51b
DJ
18259 fixup_symbol_section (sym, objfile);
18260 SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
18261 SYMBOL_SECTION (sym));
4c2df51b
DJ
18262 return;
18263 }
18264
18265 /* NOTE drow/2002-01-30: It might be worthwhile to have a static
18266 expression evaluator, and use LOC_COMPUTED only when necessary
18267 (i.e. when the value of a register or memory location is
18268 referenced, or a thread-local block, etc.). Then again, it might
18269 not be worthwhile. I'm assuming that it isn't unless performance
18270 or memory numbers show me otherwise. */
18271
f1e6e072 18272 dwarf2_symbol_mark_computed (attr, sym, cu, 0);
8be455d7 18273
f1e6e072 18274 if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
8be455d7 18275 cu->has_loclist = 1;
4c2df51b
DJ
18276}
18277
c906108c
SS
18278/* Given a pointer to a DWARF information entry, figure out if we need
18279 to make a symbol table entry for it, and if so, create a new entry
18280 and return a pointer to it.
18281 If TYPE is NULL, determine symbol type from the die, otherwise
34eaf542
TT
18282 used the passed type.
18283 If SPACE is not NULL, use it to hold the new symbol. If it is
18284 NULL, allocate a new symbol on the objfile's obstack. */
c906108c
SS
18285
18286static struct symbol *
34eaf542
TT
18287new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
18288 struct symbol *space)
c906108c 18289{
e7c27a73 18290 struct objfile *objfile = cu->objfile;
3e29f34a 18291 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c 18292 struct symbol *sym = NULL;
15d034d0 18293 const char *name;
c906108c
SS
18294 struct attribute *attr = NULL;
18295 struct attribute *attr2 = NULL;
e142c38c 18296 CORE_ADDR baseaddr;
e37fd15a
SW
18297 struct pending **list_to_add = NULL;
18298
edb3359d 18299 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
e142c38c
DJ
18300
18301 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 18302
94af9270 18303 name = dwarf2_name (die, cu);
c906108c
SS
18304 if (name)
18305 {
94af9270 18306 const char *linkagename;
34eaf542 18307 int suppress_add = 0;
94af9270 18308
34eaf542
TT
18309 if (space)
18310 sym = space;
18311 else
e623cf5d 18312 sym = allocate_symbol (objfile);
c906108c 18313 OBJSTAT (objfile, n_syms++);
2de7ced7
DJ
18314
18315 /* Cache this symbol's name and the name's demangled form (if any). */
f85f34ed 18316 SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
94af9270
KS
18317 linkagename = dwarf2_physname (name, die, cu);
18318 SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
c906108c 18319
f55ee35c
JK
18320 /* Fortran does not have mangling standard and the mangling does differ
18321 between gfortran, iFort etc. */
18322 if (cu->language == language_fortran
b250c185 18323 && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
29df156d 18324 symbol_set_demangled_name (&(sym->ginfo),
cfc594ee 18325 dwarf2_full_name (name, die, cu),
29df156d 18326 NULL);
f55ee35c 18327
c906108c 18328 /* Default assumptions.
c5aa993b 18329 Use the passed type or decode it from the die. */
176620f1 18330 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
f1e6e072 18331 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
c906108c
SS
18332 if (type != NULL)
18333 SYMBOL_TYPE (sym) = type;
18334 else
e7c27a73 18335 SYMBOL_TYPE (sym) = die_type (die, cu);
edb3359d
DJ
18336 attr = dwarf2_attr (die,
18337 inlined_func ? DW_AT_call_line : DW_AT_decl_line,
18338 cu);
c906108c
SS
18339 if (attr)
18340 {
18341 SYMBOL_LINE (sym) = DW_UNSND (attr);
18342 }
cb1df416 18343
edb3359d
DJ
18344 attr = dwarf2_attr (die,
18345 inlined_func ? DW_AT_call_file : DW_AT_decl_file,
18346 cu);
cb1df416
DJ
18347 if (attr)
18348 {
18349 int file_index = DW_UNSND (attr);
9a619af0 18350
cb1df416
DJ
18351 if (cu->line_header == NULL
18352 || file_index > cu->line_header->num_file_names)
18353 complaint (&symfile_complaints,
18354 _("file index out of range"));
1c3d648d 18355 else if (file_index > 0)
cb1df416
DJ
18356 {
18357 struct file_entry *fe;
9a619af0 18358
cb1df416 18359 fe = &cu->line_header->file_names[file_index - 1];
08be3fe3 18360 symbol_set_symtab (sym, fe->symtab);
cb1df416
DJ
18361 }
18362 }
18363
c906108c
SS
18364 switch (die->tag)
18365 {
18366 case DW_TAG_label:
e142c38c 18367 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
c906108c 18368 if (attr)
3e29f34a
MR
18369 {
18370 CORE_ADDR addr;
18371
18372 addr = attr_value_as_address (attr);
18373 addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
18374 SYMBOL_VALUE_ADDRESS (sym) = addr;
18375 }
0f5238ed
TT
18376 SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
18377 SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
f1e6e072 18378 SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
0f5238ed 18379 add_symbol_to_list (sym, cu->list_in_scope);
c906108c
SS
18380 break;
18381 case DW_TAG_subprogram:
18382 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18383 finish_block. */
f1e6e072 18384 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
e142c38c 18385 attr2 = dwarf2_attr (die, DW_AT_external, cu);
2cfa0c8d
JB
18386 if ((attr2 && (DW_UNSND (attr2) != 0))
18387 || cu->language == language_ada)
c906108c 18388 {
2cfa0c8d
JB
18389 /* Subprograms marked external are stored as a global symbol.
18390 Ada subprograms, whether marked external or not, are always
18391 stored as a global symbol, because we want to be able to
18392 access them globally. For instance, we want to be able
18393 to break on a nested subprogram without having to
18394 specify the context. */
e37fd15a 18395 list_to_add = &global_symbols;
c906108c
SS
18396 }
18397 else
18398 {
e37fd15a 18399 list_to_add = cu->list_in_scope;
c906108c
SS
18400 }
18401 break;
edb3359d
DJ
18402 case DW_TAG_inlined_subroutine:
18403 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18404 finish_block. */
f1e6e072 18405 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
edb3359d 18406 SYMBOL_INLINED (sym) = 1;
481860b3 18407 list_to_add = cu->list_in_scope;
edb3359d 18408 break;
34eaf542
TT
18409 case DW_TAG_template_value_param:
18410 suppress_add = 1;
18411 /* Fall through. */
72929c62 18412 case DW_TAG_constant:
c906108c 18413 case DW_TAG_variable:
254e6b9e 18414 case DW_TAG_member:
0963b4bd
MS
18415 /* Compilation with minimal debug info may result in
18416 variables with missing type entries. Change the
18417 misleading `void' type to something sensible. */
c906108c 18418 if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
64c50499 18419 SYMBOL_TYPE (sym)
46bf5051 18420 = objfile_type (objfile)->nodebug_data_symbol;
64c50499 18421
e142c38c 18422 attr = dwarf2_attr (die, DW_AT_const_value, cu);
254e6b9e
DE
18423 /* In the case of DW_TAG_member, we should only be called for
18424 static const members. */
18425 if (die->tag == DW_TAG_member)
18426 {
3863f96c
DE
18427 /* dwarf2_add_field uses die_is_declaration,
18428 so we do the same. */
254e6b9e
DE
18429 gdb_assert (die_is_declaration (die, cu));
18430 gdb_assert (attr);
18431 }
c906108c
SS
18432 if (attr)
18433 {
e7c27a73 18434 dwarf2_const_value (attr, sym, cu);
e142c38c 18435 attr2 = dwarf2_attr (die, DW_AT_external, cu);
e37fd15a 18436 if (!suppress_add)
34eaf542
TT
18437 {
18438 if (attr2 && (DW_UNSND (attr2) != 0))
e37fd15a 18439 list_to_add = &global_symbols;
34eaf542 18440 else
e37fd15a 18441 list_to_add = cu->list_in_scope;
34eaf542 18442 }
c906108c
SS
18443 break;
18444 }
e142c38c 18445 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
18446 if (attr)
18447 {
e7c27a73 18448 var_decode_location (attr, sym, cu);
e142c38c 18449 attr2 = dwarf2_attr (die, DW_AT_external, cu);
4357ac6c
TT
18450
18451 /* Fortran explicitly imports any global symbols to the local
18452 scope by DW_TAG_common_block. */
18453 if (cu->language == language_fortran && die->parent
18454 && die->parent->tag == DW_TAG_common_block)
18455 attr2 = NULL;
18456
caac4577
JG
18457 if (SYMBOL_CLASS (sym) == LOC_STATIC
18458 && SYMBOL_VALUE_ADDRESS (sym) == 0
18459 && !dwarf2_per_objfile->has_section_at_zero)
18460 {
18461 /* When a static variable is eliminated by the linker,
18462 the corresponding debug information is not stripped
18463 out, but the variable address is set to null;
18464 do not add such variables into symbol table. */
18465 }
18466 else if (attr2 && (DW_UNSND (attr2) != 0))
1c809c68 18467 {
f55ee35c
JK
18468 /* Workaround gfortran PR debug/40040 - it uses
18469 DW_AT_location for variables in -fPIC libraries which may
18470 get overriden by other libraries/executable and get
18471 a different address. Resolve it by the minimal symbol
18472 which may come from inferior's executable using copy
18473 relocation. Make this workaround only for gfortran as for
18474 other compilers GDB cannot guess the minimal symbol
18475 Fortran mangling kind. */
18476 if (cu->language == language_fortran && die->parent
18477 && die->parent->tag == DW_TAG_module
18478 && cu->producer
61012eef 18479 && startswith (cu->producer, "GNU Fortran "))
f1e6e072 18480 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
f55ee35c 18481
1c809c68
TT
18482 /* A variable with DW_AT_external is never static,
18483 but it may be block-scoped. */
18484 list_to_add = (cu->list_in_scope == &file_symbols
18485 ? &global_symbols : cu->list_in_scope);
1c809c68 18486 }
c906108c 18487 else
e37fd15a 18488 list_to_add = cu->list_in_scope;
c906108c
SS
18489 }
18490 else
18491 {
18492 /* We do not know the address of this symbol.
c5aa993b
JM
18493 If it is an external symbol and we have type information
18494 for it, enter the symbol as a LOC_UNRESOLVED symbol.
18495 The address of the variable will then be determined from
18496 the minimal symbol table whenever the variable is
18497 referenced. */
e142c38c 18498 attr2 = dwarf2_attr (die, DW_AT_external, cu);
0971de02
TT
18499
18500 /* Fortran explicitly imports any global symbols to the local
18501 scope by DW_TAG_common_block. */
18502 if (cu->language == language_fortran && die->parent
18503 && die->parent->tag == DW_TAG_common_block)
18504 {
18505 /* SYMBOL_CLASS doesn't matter here because
18506 read_common_block is going to reset it. */
18507 if (!suppress_add)
18508 list_to_add = cu->list_in_scope;
18509 }
18510 else if (attr2 && (DW_UNSND (attr2) != 0)
18511 && dwarf2_attr (die, DW_AT_type, cu) != NULL)
c906108c 18512 {
0fe7935b
DJ
18513 /* A variable with DW_AT_external is never static, but it
18514 may be block-scoped. */
18515 list_to_add = (cu->list_in_scope == &file_symbols
18516 ? &global_symbols : cu->list_in_scope);
18517
f1e6e072 18518 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
c906108c 18519 }
442ddf59
JK
18520 else if (!die_is_declaration (die, cu))
18521 {
18522 /* Use the default LOC_OPTIMIZED_OUT class. */
18523 gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
e37fd15a
SW
18524 if (!suppress_add)
18525 list_to_add = cu->list_in_scope;
442ddf59 18526 }
c906108c
SS
18527 }
18528 break;
18529 case DW_TAG_formal_parameter:
edb3359d
DJ
18530 /* If we are inside a function, mark this as an argument. If
18531 not, we might be looking at an argument to an inlined function
18532 when we do not have enough information to show inlined frames;
18533 pretend it's a local variable in that case so that the user can
18534 still see it. */
18535 if (context_stack_depth > 0
18536 && context_stack[context_stack_depth - 1].name != NULL)
18537 SYMBOL_IS_ARGUMENT (sym) = 1;
e142c38c 18538 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
18539 if (attr)
18540 {
e7c27a73 18541 var_decode_location (attr, sym, cu);
c906108c 18542 }
e142c38c 18543 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
18544 if (attr)
18545 {
e7c27a73 18546 dwarf2_const_value (attr, sym, cu);
c906108c 18547 }
f346a30d 18548
e37fd15a 18549 list_to_add = cu->list_in_scope;
c906108c
SS
18550 break;
18551 case DW_TAG_unspecified_parameters:
18552 /* From varargs functions; gdb doesn't seem to have any
18553 interest in this information, so just ignore it for now.
18554 (FIXME?) */
18555 break;
34eaf542
TT
18556 case DW_TAG_template_type_param:
18557 suppress_add = 1;
18558 /* Fall through. */
c906108c 18559 case DW_TAG_class_type:
680b30c7 18560 case DW_TAG_interface_type:
c906108c
SS
18561 case DW_TAG_structure_type:
18562 case DW_TAG_union_type:
72019c9c 18563 case DW_TAG_set_type:
c906108c 18564 case DW_TAG_enumeration_type:
f1e6e072 18565 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
176620f1 18566 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
c906108c 18567
63d06c5c 18568 {
987504bb 18569 /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't
63d06c5c
DC
18570 really ever be static objects: otherwise, if you try
18571 to, say, break of a class's method and you're in a file
18572 which doesn't mention that class, it won't work unless
18573 the check for all static symbols in lookup_symbol_aux
18574 saves you. See the OtherFileClass tests in
18575 gdb.c++/namespace.exp. */
18576
e37fd15a 18577 if (!suppress_add)
34eaf542 18578 {
34eaf542
TT
18579 list_to_add = (cu->list_in_scope == &file_symbols
18580 && (cu->language == language_cplus
18581 || cu->language == language_java)
18582 ? &global_symbols : cu->list_in_scope);
63d06c5c 18583
64382290
TT
18584 /* The semantics of C++ state that "struct foo {
18585 ... }" also defines a typedef for "foo". A Java
18586 class declaration also defines a typedef for the
18587 class. */
18588 if (cu->language == language_cplus
18589 || cu->language == language_java
45280282
IB
18590 || cu->language == language_ada
18591 || cu->language == language_d)
64382290
TT
18592 {
18593 /* The symbol's name is already allocated along
18594 with this objfile, so we don't need to
18595 duplicate it for the type. */
18596 if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
18597 TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
18598 }
63d06c5c
DC
18599 }
18600 }
c906108c
SS
18601 break;
18602 case DW_TAG_typedef:
f1e6e072 18603 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
63d06c5c 18604 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e37fd15a 18605 list_to_add = cu->list_in_scope;
63d06c5c 18606 break;
c906108c 18607 case DW_TAG_base_type:
a02abb62 18608 case DW_TAG_subrange_type:
f1e6e072 18609 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
176620f1 18610 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e37fd15a 18611 list_to_add = cu->list_in_scope;
c906108c
SS
18612 break;
18613 case DW_TAG_enumerator:
e142c38c 18614 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
18615 if (attr)
18616 {
e7c27a73 18617 dwarf2_const_value (attr, sym, cu);
c906108c 18618 }
63d06c5c
DC
18619 {
18620 /* NOTE: carlton/2003-11-10: See comment above in the
18621 DW_TAG_class_type, etc. block. */
18622
e142c38c 18623 list_to_add = (cu->list_in_scope == &file_symbols
987504bb
JJ
18624 && (cu->language == language_cplus
18625 || cu->language == language_java)
e142c38c 18626 ? &global_symbols : cu->list_in_scope);
63d06c5c 18627 }
c906108c 18628 break;
74921315 18629 case DW_TAG_imported_declaration:
5c4e30ca 18630 case DW_TAG_namespace:
f1e6e072 18631 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
e37fd15a 18632 list_to_add = &global_symbols;
5c4e30ca 18633 break;
530e8392
KB
18634 case DW_TAG_module:
18635 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18636 SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
18637 list_to_add = &global_symbols;
18638 break;
4357ac6c 18639 case DW_TAG_common_block:
f1e6e072 18640 SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
4357ac6c
TT
18641 SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
18642 add_symbol_to_list (sym, cu->list_in_scope);
18643 break;
c906108c
SS
18644 default:
18645 /* Not a tag we recognize. Hopefully we aren't processing
18646 trash data, but since we must specifically ignore things
18647 we don't recognize, there is nothing else we should do at
0963b4bd 18648 this point. */
e2e0b3e5 18649 complaint (&symfile_complaints, _("unsupported tag: '%s'"),
4d3c2250 18650 dwarf_tag_name (die->tag));
c906108c
SS
18651 break;
18652 }
df8a16a1 18653
e37fd15a
SW
18654 if (suppress_add)
18655 {
18656 sym->hash_next = objfile->template_symbols;
18657 objfile->template_symbols = sym;
18658 list_to_add = NULL;
18659 }
18660
18661 if (list_to_add != NULL)
18662 add_symbol_to_list (sym, list_to_add);
18663
df8a16a1
DJ
18664 /* For the benefit of old versions of GCC, check for anonymous
18665 namespaces based on the demangled name. */
4d4ec4e5 18666 if (!cu->processing_has_namespace_info
94af9270 18667 && cu->language == language_cplus)
a10964d1 18668 cp_scan_for_anonymous_namespaces (sym, objfile);
c906108c
SS
18669 }
18670 return (sym);
18671}
18672
34eaf542
TT
18673/* A wrapper for new_symbol_full that always allocates a new symbol. */
18674
18675static struct symbol *
18676new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
18677{
18678 return new_symbol_full (die, type, cu, NULL);
18679}
18680
98bfdba5
PA
18681/* Given an attr with a DW_FORM_dataN value in host byte order,
18682 zero-extend it as appropriate for the symbol's type. The DWARF
18683 standard (v4) is not entirely clear about the meaning of using
18684 DW_FORM_dataN for a constant with a signed type, where the type is
18685 wider than the data. The conclusion of a discussion on the DWARF
18686 list was that this is unspecified. We choose to always zero-extend
18687 because that is the interpretation long in use by GCC. */
c906108c 18688
98bfdba5 18689static gdb_byte *
ff39bb5e 18690dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
12df843f 18691 struct dwarf2_cu *cu, LONGEST *value, int bits)
c906108c 18692{
e7c27a73 18693 struct objfile *objfile = cu->objfile;
e17a4113
UW
18694 enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
18695 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
98bfdba5
PA
18696 LONGEST l = DW_UNSND (attr);
18697
18698 if (bits < sizeof (*value) * 8)
18699 {
18700 l &= ((LONGEST) 1 << bits) - 1;
18701 *value = l;
18702 }
18703 else if (bits == sizeof (*value) * 8)
18704 *value = l;
18705 else
18706 {
18707 gdb_byte *bytes = obstack_alloc (obstack, bits / 8);
18708 store_unsigned_integer (bytes, bits / 8, byte_order, l);
18709 return bytes;
18710 }
18711
18712 return NULL;
18713}
18714
18715/* Read a constant value from an attribute. Either set *VALUE, or if
18716 the value does not fit in *VALUE, set *BYTES - either already
18717 allocated on the objfile obstack, or newly allocated on OBSTACK,
18718 or, set *BATON, if we translated the constant to a location
18719 expression. */
18720
18721static void
ff39bb5e 18722dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
98bfdba5
PA
18723 const char *name, struct obstack *obstack,
18724 struct dwarf2_cu *cu,
d521ce57 18725 LONGEST *value, const gdb_byte **bytes,
98bfdba5
PA
18726 struct dwarf2_locexpr_baton **baton)
18727{
18728 struct objfile *objfile = cu->objfile;
18729 struct comp_unit_head *cu_header = &cu->header;
c906108c 18730 struct dwarf_block *blk;
98bfdba5
PA
18731 enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
18732 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
18733
18734 *value = 0;
18735 *bytes = NULL;
18736 *baton = NULL;
c906108c
SS
18737
18738 switch (attr->form)
18739 {
18740 case DW_FORM_addr:
3019eac3 18741 case DW_FORM_GNU_addr_index:
ac56253d 18742 {
ac56253d
TT
18743 gdb_byte *data;
18744
98bfdba5
PA
18745 if (TYPE_LENGTH (type) != cu_header->addr_size)
18746 dwarf2_const_value_length_mismatch_complaint (name,
ac56253d 18747 cu_header->addr_size,
98bfdba5 18748 TYPE_LENGTH (type));
ac56253d
TT
18749 /* Symbols of this form are reasonably rare, so we just
18750 piggyback on the existing location code rather than writing
18751 a new implementation of symbol_computed_ops. */
8d749320 18752 *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
98bfdba5
PA
18753 (*baton)->per_cu = cu->per_cu;
18754 gdb_assert ((*baton)->per_cu);
ac56253d 18755
98bfdba5 18756 (*baton)->size = 2 + cu_header->addr_size;
7919a973 18757 data = obstack_alloc (obstack, (*baton)->size);
98bfdba5 18758 (*baton)->data = data;
ac56253d
TT
18759
18760 data[0] = DW_OP_addr;
18761 store_unsigned_integer (&data[1], cu_header->addr_size,
18762 byte_order, DW_ADDR (attr));
18763 data[cu_header->addr_size + 1] = DW_OP_stack_value;
ac56253d 18764 }
c906108c 18765 break;
4ac36638 18766 case DW_FORM_string:
93b5768b 18767 case DW_FORM_strp:
3019eac3 18768 case DW_FORM_GNU_str_index:
36586728 18769 case DW_FORM_GNU_strp_alt:
98bfdba5
PA
18770 /* DW_STRING is already allocated on the objfile obstack, point
18771 directly to it. */
d521ce57 18772 *bytes = (const gdb_byte *) DW_STRING (attr);
93b5768b 18773 break;
c906108c
SS
18774 case DW_FORM_block1:
18775 case DW_FORM_block2:
18776 case DW_FORM_block4:
18777 case DW_FORM_block:
2dc7f7b3 18778 case DW_FORM_exprloc:
c906108c 18779 blk = DW_BLOCK (attr);
98bfdba5
PA
18780 if (TYPE_LENGTH (type) != blk->size)
18781 dwarf2_const_value_length_mismatch_complaint (name, blk->size,
18782 TYPE_LENGTH (type));
18783 *bytes = blk->data;
c906108c 18784 break;
2df3850c
JM
18785
18786 /* The DW_AT_const_value attributes are supposed to carry the
18787 symbol's value "represented as it would be on the target
18788 architecture." By the time we get here, it's already been
18789 converted to host endianness, so we just need to sign- or
18790 zero-extend it as appropriate. */
18791 case DW_FORM_data1:
3aef2284 18792 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
2df3850c 18793 break;
c906108c 18794 case DW_FORM_data2:
3aef2284 18795 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
2df3850c 18796 break;
c906108c 18797 case DW_FORM_data4:
3aef2284 18798 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
2df3850c 18799 break;
c906108c 18800 case DW_FORM_data8:
3aef2284 18801 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
2df3850c
JM
18802 break;
18803
c906108c 18804 case DW_FORM_sdata:
98bfdba5 18805 *value = DW_SND (attr);
2df3850c
JM
18806 break;
18807
c906108c 18808 case DW_FORM_udata:
98bfdba5 18809 *value = DW_UNSND (attr);
c906108c 18810 break;
2df3850c 18811
c906108c 18812 default:
4d3c2250 18813 complaint (&symfile_complaints,
e2e0b3e5 18814 _("unsupported const value attribute form: '%s'"),
4d3c2250 18815 dwarf_form_name (attr->form));
98bfdba5 18816 *value = 0;
c906108c
SS
18817 break;
18818 }
18819}
18820
2df3850c 18821
98bfdba5
PA
18822/* Copy constant value from an attribute to a symbol. */
18823
2df3850c 18824static void
ff39bb5e 18825dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
98bfdba5 18826 struct dwarf2_cu *cu)
2df3850c 18827{
98bfdba5
PA
18828 struct objfile *objfile = cu->objfile;
18829 struct comp_unit_head *cu_header = &cu->header;
12df843f 18830 LONGEST value;
d521ce57 18831 const gdb_byte *bytes;
98bfdba5 18832 struct dwarf2_locexpr_baton *baton;
2df3850c 18833
98bfdba5
PA
18834 dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
18835 SYMBOL_PRINT_NAME (sym),
18836 &objfile->objfile_obstack, cu,
18837 &value, &bytes, &baton);
2df3850c 18838
98bfdba5
PA
18839 if (baton != NULL)
18840 {
98bfdba5 18841 SYMBOL_LOCATION_BATON (sym) = baton;
f1e6e072 18842 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
98bfdba5
PA
18843 }
18844 else if (bytes != NULL)
18845 {
18846 SYMBOL_VALUE_BYTES (sym) = bytes;
f1e6e072 18847 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
98bfdba5
PA
18848 }
18849 else
18850 {
18851 SYMBOL_VALUE (sym) = value;
f1e6e072 18852 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
98bfdba5 18853 }
2df3850c
JM
18854}
18855
c906108c
SS
18856/* Return the type of the die in question using its DW_AT_type attribute. */
18857
18858static struct type *
e7c27a73 18859die_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 18860{
c906108c 18861 struct attribute *type_attr;
c906108c 18862
e142c38c 18863 type_attr = dwarf2_attr (die, DW_AT_type, cu);
c906108c
SS
18864 if (!type_attr)
18865 {
18866 /* A missing DW_AT_type represents a void type. */
46bf5051 18867 return objfile_type (cu->objfile)->builtin_void;
c906108c 18868 }
348e048f 18869
673bfd45 18870 return lookup_die_type (die, type_attr, cu);
c906108c
SS
18871}
18872
b4ba55a1
JB
18873/* True iff CU's producer generates GNAT Ada auxiliary information
18874 that allows to find parallel types through that information instead
18875 of having to do expensive parallel lookups by type name. */
18876
18877static int
18878need_gnat_info (struct dwarf2_cu *cu)
18879{
18880 /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
18881 of GNAT produces this auxiliary information, without any indication
18882 that it is produced. Part of enhancing the FSF version of GNAT
18883 to produce that information will be to put in place an indicator
18884 that we can use in order to determine whether the descriptive type
18885 info is available or not. One suggestion that has been made is
18886 to use a new attribute, attached to the CU die. For now, assume
18887 that the descriptive type info is not available. */
18888 return 0;
18889}
18890
b4ba55a1
JB
18891/* Return the auxiliary type of the die in question using its
18892 DW_AT_GNAT_descriptive_type attribute. Returns NULL if the
18893 attribute is not present. */
18894
18895static struct type *
18896die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
18897{
b4ba55a1 18898 struct attribute *type_attr;
b4ba55a1
JB
18899
18900 type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
18901 if (!type_attr)
18902 return NULL;
18903
673bfd45 18904 return lookup_die_type (die, type_attr, cu);
b4ba55a1
JB
18905}
18906
18907/* If DIE has a descriptive_type attribute, then set the TYPE's
18908 descriptive type accordingly. */
18909
18910static void
18911set_descriptive_type (struct type *type, struct die_info *die,
18912 struct dwarf2_cu *cu)
18913{
18914 struct type *descriptive_type = die_descriptive_type (die, cu);
18915
18916 if (descriptive_type)
18917 {
18918 ALLOCATE_GNAT_AUX_TYPE (type);
18919 TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
18920 }
18921}
18922
c906108c
SS
18923/* Return the containing type of the die in question using its
18924 DW_AT_containing_type attribute. */
18925
18926static struct type *
e7c27a73 18927die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 18928{
c906108c 18929 struct attribute *type_attr;
c906108c 18930
e142c38c 18931 type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
33ac96f0
JK
18932 if (!type_attr)
18933 error (_("Dwarf Error: Problem turning containing type into gdb type "
4262abfb 18934 "[in module %s]"), objfile_name (cu->objfile));
33ac96f0 18935
673bfd45 18936 return lookup_die_type (die, type_attr, cu);
c906108c
SS
18937}
18938
ac9ec31b
DE
18939/* Return an error marker type to use for the ill formed type in DIE/CU. */
18940
18941static struct type *
18942build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
18943{
18944 struct objfile *objfile = dwarf2_per_objfile->objfile;
18945 char *message, *saved;
18946
18947 message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
4262abfb 18948 objfile_name (objfile),
ac9ec31b
DE
18949 cu->header.offset.sect_off,
18950 die->offset.sect_off);
18951 saved = obstack_copy0 (&objfile->objfile_obstack,
18952 message, strlen (message));
18953 xfree (message);
18954
18955 return init_type (TYPE_CODE_ERROR, 0, 0, saved, objfile);
18956}
18957
673bfd45 18958/* Look up the type of DIE in CU using its type attribute ATTR.
ac9ec31b
DE
18959 ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
18960 DW_AT_containing_type.
673bfd45
DE
18961 If there is no type substitute an error marker. */
18962
c906108c 18963static struct type *
ff39bb5e 18964lookup_die_type (struct die_info *die, const struct attribute *attr,
673bfd45 18965 struct dwarf2_cu *cu)
c906108c 18966{
bb5ed363 18967 struct objfile *objfile = cu->objfile;
f792889a
DJ
18968 struct type *this_type;
18969
ac9ec31b
DE
18970 gdb_assert (attr->name == DW_AT_type
18971 || attr->name == DW_AT_GNAT_descriptive_type
18972 || attr->name == DW_AT_containing_type);
18973
673bfd45
DE
18974 /* First see if we have it cached. */
18975
36586728
TT
18976 if (attr->form == DW_FORM_GNU_ref_alt)
18977 {
18978 struct dwarf2_per_cu_data *per_cu;
18979 sect_offset offset = dwarf2_get_ref_die_offset (attr);
18980
18981 per_cu = dwarf2_find_containing_comp_unit (offset, 1, cu->objfile);
18982 this_type = get_die_type_at_offset (offset, per_cu);
18983 }
7771576e 18984 else if (attr_form_is_ref (attr))
673bfd45 18985 {
b64f50a1 18986 sect_offset offset = dwarf2_get_ref_die_offset (attr);
673bfd45
DE
18987
18988 this_type = get_die_type_at_offset (offset, cu->per_cu);
18989 }
55f1336d 18990 else if (attr->form == DW_FORM_ref_sig8)
673bfd45 18991 {
ac9ec31b 18992 ULONGEST signature = DW_SIGNATURE (attr);
673bfd45 18993
ac9ec31b 18994 return get_signatured_type (die, signature, cu);
673bfd45
DE
18995 }
18996 else
18997 {
ac9ec31b
DE
18998 complaint (&symfile_complaints,
18999 _("Dwarf Error: Bad type attribute %s in DIE"
19000 " at 0x%x [in module %s]"),
19001 dwarf_attr_name (attr->name), die->offset.sect_off,
4262abfb 19002 objfile_name (objfile));
ac9ec31b 19003 return build_error_marker_type (cu, die);
673bfd45
DE
19004 }
19005
19006 /* If not cached we need to read it in. */
19007
19008 if (this_type == NULL)
19009 {
ac9ec31b 19010 struct die_info *type_die = NULL;
673bfd45
DE
19011 struct dwarf2_cu *type_cu = cu;
19012
7771576e 19013 if (attr_form_is_ref (attr))
ac9ec31b
DE
19014 type_die = follow_die_ref (die, attr, &type_cu);
19015 if (type_die == NULL)
19016 return build_error_marker_type (cu, die);
19017 /* If we find the type now, it's probably because the type came
3019eac3
DE
19018 from an inter-CU reference and the type's CU got expanded before
19019 ours. */
ac9ec31b 19020 this_type = read_type_die (type_die, type_cu);
673bfd45
DE
19021 }
19022
19023 /* If we still don't have a type use an error marker. */
19024
19025 if (this_type == NULL)
ac9ec31b 19026 return build_error_marker_type (cu, die);
673bfd45 19027
f792889a 19028 return this_type;
c906108c
SS
19029}
19030
673bfd45
DE
19031/* Return the type in DIE, CU.
19032 Returns NULL for invalid types.
19033
02142a6c 19034 This first does a lookup in die_type_hash,
673bfd45
DE
19035 and only reads the die in if necessary.
19036
19037 NOTE: This can be called when reading in partial or full symbols. */
19038
f792889a 19039static struct type *
e7c27a73 19040read_type_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 19041{
f792889a
DJ
19042 struct type *this_type;
19043
19044 this_type = get_die_type (die, cu);
19045 if (this_type)
19046 return this_type;
19047
673bfd45
DE
19048 return read_type_die_1 (die, cu);
19049}
19050
19051/* Read the type in DIE, CU.
19052 Returns NULL for invalid types. */
19053
19054static struct type *
19055read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
19056{
19057 struct type *this_type = NULL;
19058
c906108c
SS
19059 switch (die->tag)
19060 {
19061 case DW_TAG_class_type:
680b30c7 19062 case DW_TAG_interface_type:
c906108c
SS
19063 case DW_TAG_structure_type:
19064 case DW_TAG_union_type:
f792889a 19065 this_type = read_structure_type (die, cu);
c906108c
SS
19066 break;
19067 case DW_TAG_enumeration_type:
f792889a 19068 this_type = read_enumeration_type (die, cu);
c906108c
SS
19069 break;
19070 case DW_TAG_subprogram:
19071 case DW_TAG_subroutine_type:
edb3359d 19072 case DW_TAG_inlined_subroutine:
f792889a 19073 this_type = read_subroutine_type (die, cu);
c906108c
SS
19074 break;
19075 case DW_TAG_array_type:
f792889a 19076 this_type = read_array_type (die, cu);
c906108c 19077 break;
72019c9c 19078 case DW_TAG_set_type:
f792889a 19079 this_type = read_set_type (die, cu);
72019c9c 19080 break;
c906108c 19081 case DW_TAG_pointer_type:
f792889a 19082 this_type = read_tag_pointer_type (die, cu);
c906108c
SS
19083 break;
19084 case DW_TAG_ptr_to_member_type:
f792889a 19085 this_type = read_tag_ptr_to_member_type (die, cu);
c906108c
SS
19086 break;
19087 case DW_TAG_reference_type:
f792889a 19088 this_type = read_tag_reference_type (die, cu);
c906108c
SS
19089 break;
19090 case DW_TAG_const_type:
f792889a 19091 this_type = read_tag_const_type (die, cu);
c906108c
SS
19092 break;
19093 case DW_TAG_volatile_type:
f792889a 19094 this_type = read_tag_volatile_type (die, cu);
c906108c 19095 break;
06d66ee9
TT
19096 case DW_TAG_restrict_type:
19097 this_type = read_tag_restrict_type (die, cu);
19098 break;
c906108c 19099 case DW_TAG_string_type:
f792889a 19100 this_type = read_tag_string_type (die, cu);
c906108c
SS
19101 break;
19102 case DW_TAG_typedef:
f792889a 19103 this_type = read_typedef (die, cu);
c906108c 19104 break;
a02abb62 19105 case DW_TAG_subrange_type:
f792889a 19106 this_type = read_subrange_type (die, cu);
a02abb62 19107 break;
c906108c 19108 case DW_TAG_base_type:
f792889a 19109 this_type = read_base_type (die, cu);
c906108c 19110 break;
81a17f79 19111 case DW_TAG_unspecified_type:
f792889a 19112 this_type = read_unspecified_type (die, cu);
81a17f79 19113 break;
0114d602
DJ
19114 case DW_TAG_namespace:
19115 this_type = read_namespace_type (die, cu);
19116 break;
f55ee35c
JK
19117 case DW_TAG_module:
19118 this_type = read_module_type (die, cu);
19119 break;
a2c2acaf
MW
19120 case DW_TAG_atomic_type:
19121 this_type = read_tag_atomic_type (die, cu);
19122 break;
c906108c 19123 default:
3e43a32a
MS
19124 complaint (&symfile_complaints,
19125 _("unexpected tag in read_type_die: '%s'"),
4d3c2250 19126 dwarf_tag_name (die->tag));
c906108c
SS
19127 break;
19128 }
63d06c5c 19129
f792889a 19130 return this_type;
63d06c5c
DC
19131}
19132
abc72ce4
DE
19133/* See if we can figure out if the class lives in a namespace. We do
19134 this by looking for a member function; its demangled name will
19135 contain namespace info, if there is any.
19136 Return the computed name or NULL.
19137 Space for the result is allocated on the objfile's obstack.
19138 This is the full-die version of guess_partial_die_structure_name.
19139 In this case we know DIE has no useful parent. */
19140
19141static char *
19142guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
19143{
19144 struct die_info *spec_die;
19145 struct dwarf2_cu *spec_cu;
19146 struct die_info *child;
19147
19148 spec_cu = cu;
19149 spec_die = die_specification (die, &spec_cu);
19150 if (spec_die != NULL)
19151 {
19152 die = spec_die;
19153 cu = spec_cu;
19154 }
19155
19156 for (child = die->child;
19157 child != NULL;
19158 child = child->sibling)
19159 {
19160 if (child->tag == DW_TAG_subprogram)
19161 {
7d45c7c3 19162 const char *linkage_name;
abc72ce4 19163
7d45c7c3
KB
19164 linkage_name = dwarf2_string_attr (child, DW_AT_linkage_name, cu);
19165 if (linkage_name == NULL)
19166 linkage_name = dwarf2_string_attr (child, DW_AT_MIPS_linkage_name,
19167 cu);
19168 if (linkage_name != NULL)
abc72ce4
DE
19169 {
19170 char *actual_name
19171 = language_class_name_from_physname (cu->language_defn,
7d45c7c3 19172 linkage_name);
abc72ce4
DE
19173 char *name = NULL;
19174
19175 if (actual_name != NULL)
19176 {
15d034d0 19177 const char *die_name = dwarf2_name (die, cu);
abc72ce4
DE
19178
19179 if (die_name != NULL
19180 && strcmp (die_name, actual_name) != 0)
19181 {
19182 /* Strip off the class name from the full name.
19183 We want the prefix. */
19184 int die_name_len = strlen (die_name);
19185 int actual_name_len = strlen (actual_name);
19186
19187 /* Test for '::' as a sanity check. */
19188 if (actual_name_len > die_name_len + 2
3e43a32a
MS
19189 && actual_name[actual_name_len
19190 - die_name_len - 1] == ':')
abc72ce4 19191 name =
34a68019 19192 obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb
TT
19193 actual_name,
19194 actual_name_len - die_name_len - 2);
abc72ce4
DE
19195 }
19196 }
19197 xfree (actual_name);
19198 return name;
19199 }
19200 }
19201 }
19202
19203 return NULL;
19204}
19205
96408a79
SA
19206/* GCC might emit a nameless typedef that has a linkage name. Determine the
19207 prefix part in such case. See
19208 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
19209
19210static char *
19211anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
19212{
19213 struct attribute *attr;
19214 char *base;
19215
19216 if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
19217 && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
19218 return NULL;
19219
7d45c7c3 19220 if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
96408a79
SA
19221 return NULL;
19222
19223 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19224 if (attr == NULL)
19225 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19226 if (attr == NULL || DW_STRING (attr) == NULL)
19227 return NULL;
19228
19229 /* dwarf2_name had to be already called. */
19230 gdb_assert (DW_STRING_IS_CANONICAL (attr));
19231
19232 /* Strip the base name, keep any leading namespaces/classes. */
19233 base = strrchr (DW_STRING (attr), ':');
19234 if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
19235 return "";
19236
34a68019 19237 return obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb 19238 DW_STRING (attr), &base[-1] - DW_STRING (attr));
96408a79
SA
19239}
19240
fdde2d81 19241/* Return the name of the namespace/class that DIE is defined within,
0114d602 19242 or "" if we can't tell. The caller should not xfree the result.
fdde2d81 19243
0114d602
DJ
19244 For example, if we're within the method foo() in the following
19245 code:
19246
19247 namespace N {
19248 class C {
19249 void foo () {
19250 }
19251 };
19252 }
19253
19254 then determine_prefix on foo's die will return "N::C". */
fdde2d81 19255
0d5cff50 19256static const char *
e142c38c 19257determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
63d06c5c 19258{
0114d602
DJ
19259 struct die_info *parent, *spec_die;
19260 struct dwarf2_cu *spec_cu;
19261 struct type *parent_type;
96408a79 19262 char *retval;
63d06c5c 19263
f55ee35c 19264 if (cu->language != language_cplus && cu->language != language_java
45280282 19265 && cu->language != language_fortran && cu->language != language_d)
0114d602
DJ
19266 return "";
19267
96408a79
SA
19268 retval = anonymous_struct_prefix (die, cu);
19269 if (retval)
19270 return retval;
19271
0114d602
DJ
19272 /* We have to be careful in the presence of DW_AT_specification.
19273 For example, with GCC 3.4, given the code
19274
19275 namespace N {
19276 void foo() {
19277 // Definition of N::foo.
19278 }
19279 }
19280
19281 then we'll have a tree of DIEs like this:
19282
19283 1: DW_TAG_compile_unit
19284 2: DW_TAG_namespace // N
19285 3: DW_TAG_subprogram // declaration of N::foo
19286 4: DW_TAG_subprogram // definition of N::foo
19287 DW_AT_specification // refers to die #3
19288
19289 Thus, when processing die #4, we have to pretend that we're in
19290 the context of its DW_AT_specification, namely the contex of die
19291 #3. */
19292 spec_cu = cu;
19293 spec_die = die_specification (die, &spec_cu);
19294 if (spec_die == NULL)
19295 parent = die->parent;
19296 else
63d06c5c 19297 {
0114d602
DJ
19298 parent = spec_die->parent;
19299 cu = spec_cu;
63d06c5c 19300 }
0114d602
DJ
19301
19302 if (parent == NULL)
19303 return "";
98bfdba5
PA
19304 else if (parent->building_fullname)
19305 {
19306 const char *name;
19307 const char *parent_name;
19308
19309 /* It has been seen on RealView 2.2 built binaries,
19310 DW_TAG_template_type_param types actually _defined_ as
19311 children of the parent class:
19312
19313 enum E {};
19314 template class <class Enum> Class{};
19315 Class<enum E> class_e;
19316
19317 1: DW_TAG_class_type (Class)
19318 2: DW_TAG_enumeration_type (E)
19319 3: DW_TAG_enumerator (enum1:0)
19320 3: DW_TAG_enumerator (enum2:1)
19321 ...
19322 2: DW_TAG_template_type_param
19323 DW_AT_type DW_FORM_ref_udata (E)
19324
19325 Besides being broken debug info, it can put GDB into an
19326 infinite loop. Consider:
19327
19328 When we're building the full name for Class<E>, we'll start
19329 at Class, and go look over its template type parameters,
19330 finding E. We'll then try to build the full name of E, and
19331 reach here. We're now trying to build the full name of E,
19332 and look over the parent DIE for containing scope. In the
19333 broken case, if we followed the parent DIE of E, we'd again
19334 find Class, and once again go look at its template type
19335 arguments, etc., etc. Simply don't consider such parent die
19336 as source-level parent of this die (it can't be, the language
19337 doesn't allow it), and break the loop here. */
19338 name = dwarf2_name (die, cu);
19339 parent_name = dwarf2_name (parent, cu);
19340 complaint (&symfile_complaints,
19341 _("template param type '%s' defined within parent '%s'"),
19342 name ? name : "<unknown>",
19343 parent_name ? parent_name : "<unknown>");
19344 return "";
19345 }
63d06c5c 19346 else
0114d602
DJ
19347 switch (parent->tag)
19348 {
63d06c5c 19349 case DW_TAG_namespace:
0114d602 19350 parent_type = read_type_die (parent, cu);
acebe513
UW
19351 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
19352 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
19353 Work around this problem here. */
19354 if (cu->language == language_cplus
19355 && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
19356 return "";
0114d602
DJ
19357 /* We give a name to even anonymous namespaces. */
19358 return TYPE_TAG_NAME (parent_type);
63d06c5c 19359 case DW_TAG_class_type:
680b30c7 19360 case DW_TAG_interface_type:
63d06c5c 19361 case DW_TAG_structure_type:
0114d602 19362 case DW_TAG_union_type:
f55ee35c 19363 case DW_TAG_module:
0114d602
DJ
19364 parent_type = read_type_die (parent, cu);
19365 if (TYPE_TAG_NAME (parent_type) != NULL)
19366 return TYPE_TAG_NAME (parent_type);
19367 else
19368 /* An anonymous structure is only allowed non-static data
19369 members; no typedefs, no member functions, et cetera.
19370 So it does not need a prefix. */
19371 return "";
abc72ce4 19372 case DW_TAG_compile_unit:
95554aad 19373 case DW_TAG_partial_unit:
abc72ce4
DE
19374 /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace. Cope. */
19375 if (cu->language == language_cplus
8b70b953 19376 && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
abc72ce4
DE
19377 && die->child != NULL
19378 && (die->tag == DW_TAG_class_type
19379 || die->tag == DW_TAG_structure_type
19380 || die->tag == DW_TAG_union_type))
19381 {
19382 char *name = guess_full_die_structure_name (die, cu);
19383 if (name != NULL)
19384 return name;
19385 }
19386 return "";
3d567982
TT
19387 case DW_TAG_enumeration_type:
19388 parent_type = read_type_die (parent, cu);
19389 if (TYPE_DECLARED_CLASS (parent_type))
19390 {
19391 if (TYPE_TAG_NAME (parent_type) != NULL)
19392 return TYPE_TAG_NAME (parent_type);
19393 return "";
19394 }
19395 /* Fall through. */
63d06c5c 19396 default:
8176b9b8 19397 return determine_prefix (parent, cu);
63d06c5c 19398 }
63d06c5c
DC
19399}
19400
3e43a32a
MS
19401/* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
19402 with appropriate separator. If PREFIX or SUFFIX is NULL or empty, then
19403 simply copy the SUFFIX or PREFIX, respectively. If OBS is non-null, perform
19404 an obconcat, otherwise allocate storage for the result. The CU argument is
19405 used to determine the language and hence, the appropriate separator. */
987504bb 19406
f55ee35c 19407#define MAX_SEP_LEN 7 /* strlen ("__") + strlen ("_MOD_") */
63d06c5c
DC
19408
19409static char *
f55ee35c
JK
19410typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
19411 int physname, struct dwarf2_cu *cu)
63d06c5c 19412{
f55ee35c 19413 const char *lead = "";
5c315b68 19414 const char *sep;
63d06c5c 19415
3e43a32a
MS
19416 if (suffix == NULL || suffix[0] == '\0'
19417 || prefix == NULL || prefix[0] == '\0')
987504bb
JJ
19418 sep = "";
19419 else if (cu->language == language_java)
19420 sep = ".";
45280282
IB
19421 else if (cu->language == language_d)
19422 {
19423 /* For D, the 'main' function could be defined in any module, but it
19424 should never be prefixed. */
19425 if (strcmp (suffix, "D main") == 0)
19426 {
19427 prefix = "";
19428 sep = "";
19429 }
19430 else
19431 sep = ".";
19432 }
f55ee35c
JK
19433 else if (cu->language == language_fortran && physname)
19434 {
19435 /* This is gfortran specific mangling. Normally DW_AT_linkage_name or
19436 DW_AT_MIPS_linkage_name is preferred and used instead. */
19437
19438 lead = "__";
19439 sep = "_MOD_";
19440 }
987504bb
JJ
19441 else
19442 sep = "::";
63d06c5c 19443
6dd47d34
DE
19444 if (prefix == NULL)
19445 prefix = "";
19446 if (suffix == NULL)
19447 suffix = "";
19448
987504bb
JJ
19449 if (obs == NULL)
19450 {
3e43a32a
MS
19451 char *retval
19452 = xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1);
9a619af0 19453
f55ee35c
JK
19454 strcpy (retval, lead);
19455 strcat (retval, prefix);
6dd47d34
DE
19456 strcat (retval, sep);
19457 strcat (retval, suffix);
63d06c5c
DC
19458 return retval;
19459 }
987504bb
JJ
19460 else
19461 {
19462 /* We have an obstack. */
f55ee35c 19463 return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
987504bb 19464 }
63d06c5c
DC
19465}
19466
c906108c
SS
19467/* Return sibling of die, NULL if no sibling. */
19468
f9aca02d 19469static struct die_info *
fba45db2 19470sibling_die (struct die_info *die)
c906108c 19471{
639d11d3 19472 return die->sibling;
c906108c
SS
19473}
19474
71c25dea
TT
19475/* Get name of a die, return NULL if not found. */
19476
15d034d0
TT
19477static const char *
19478dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
71c25dea
TT
19479 struct obstack *obstack)
19480{
19481 if (name && cu->language == language_cplus)
19482 {
19483 char *canon_name = cp_canonicalize_string (name);
19484
19485 if (canon_name != NULL)
19486 {
19487 if (strcmp (canon_name, name) != 0)
10f0c4bb 19488 name = obstack_copy0 (obstack, canon_name, strlen (canon_name));
71c25dea
TT
19489 xfree (canon_name);
19490 }
19491 }
19492
19493 return name;
c906108c
SS
19494}
19495
96553a0c
DE
19496/* Get name of a die, return NULL if not found.
19497 Anonymous namespaces are converted to their magic string. */
9219021c 19498
15d034d0 19499static const char *
e142c38c 19500dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
9219021c
DC
19501{
19502 struct attribute *attr;
19503
e142c38c 19504 attr = dwarf2_attr (die, DW_AT_name, cu);
53832f31 19505 if ((!attr || !DW_STRING (attr))
96553a0c 19506 && die->tag != DW_TAG_namespace
53832f31
TT
19507 && die->tag != DW_TAG_class_type
19508 && die->tag != DW_TAG_interface_type
19509 && die->tag != DW_TAG_structure_type
19510 && die->tag != DW_TAG_union_type)
71c25dea
TT
19511 return NULL;
19512
19513 switch (die->tag)
19514 {
19515 case DW_TAG_compile_unit:
95554aad 19516 case DW_TAG_partial_unit:
71c25dea
TT
19517 /* Compilation units have a DW_AT_name that is a filename, not
19518 a source language identifier. */
19519 case DW_TAG_enumeration_type:
19520 case DW_TAG_enumerator:
19521 /* These tags always have simple identifiers already; no need
19522 to canonicalize them. */
19523 return DW_STRING (attr);
907af001 19524
96553a0c
DE
19525 case DW_TAG_namespace:
19526 if (attr != NULL && DW_STRING (attr) != NULL)
19527 return DW_STRING (attr);
19528 return CP_ANONYMOUS_NAMESPACE_STR;
19529
418835cc
KS
19530 case DW_TAG_subprogram:
19531 /* Java constructors will all be named "<init>", so return
19532 the class name when we see this special case. */
19533 if (cu->language == language_java
19534 && DW_STRING (attr) != NULL
19535 && strcmp (DW_STRING (attr), "<init>") == 0)
19536 {
19537 struct dwarf2_cu *spec_cu = cu;
19538 struct die_info *spec_die;
19539
19540 /* GCJ will output '<init>' for Java constructor names.
19541 For this special case, return the name of the parent class. */
19542
cdc07690 19543 /* GCJ may output subprogram DIEs with AT_specification set.
418835cc
KS
19544 If so, use the name of the specified DIE. */
19545 spec_die = die_specification (die, &spec_cu);
19546 if (spec_die != NULL)
19547 return dwarf2_name (spec_die, spec_cu);
19548
19549 do
19550 {
19551 die = die->parent;
19552 if (die->tag == DW_TAG_class_type)
19553 return dwarf2_name (die, cu);
19554 }
95554aad
TT
19555 while (die->tag != DW_TAG_compile_unit
19556 && die->tag != DW_TAG_partial_unit);
418835cc 19557 }
907af001
UW
19558 break;
19559
19560 case DW_TAG_class_type:
19561 case DW_TAG_interface_type:
19562 case DW_TAG_structure_type:
19563 case DW_TAG_union_type:
19564 /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
19565 structures or unions. These were of the form "._%d" in GCC 4.1,
19566 or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
19567 and GCC 4.4. We work around this problem by ignoring these. */
53832f31 19568 if (attr && DW_STRING (attr)
61012eef
GB
19569 && (startswith (DW_STRING (attr), "._")
19570 || startswith (DW_STRING (attr), "<anonymous")))
907af001 19571 return NULL;
53832f31
TT
19572
19573 /* GCC might emit a nameless typedef that has a linkage name. See
19574 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
19575 if (!attr || DW_STRING (attr) == NULL)
19576 {
df5c6c50 19577 char *demangled = NULL;
53832f31
TT
19578
19579 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19580 if (attr == NULL)
19581 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19582
19583 if (attr == NULL || DW_STRING (attr) == NULL)
19584 return NULL;
19585
df5c6c50
JK
19586 /* Avoid demangling DW_STRING (attr) the second time on a second
19587 call for the same DIE. */
19588 if (!DW_STRING_IS_CANONICAL (attr))
8de20a37 19589 demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
53832f31
TT
19590
19591 if (demangled)
19592 {
96408a79
SA
19593 char *base;
19594
53832f31 19595 /* FIXME: we already did this for the partial symbol... */
34a68019
TT
19596 DW_STRING (attr)
19597 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
19598 demangled, strlen (demangled));
53832f31
TT
19599 DW_STRING_IS_CANONICAL (attr) = 1;
19600 xfree (demangled);
96408a79
SA
19601
19602 /* Strip any leading namespaces/classes, keep only the base name.
19603 DW_AT_name for named DIEs does not contain the prefixes. */
19604 base = strrchr (DW_STRING (attr), ':');
19605 if (base && base > DW_STRING (attr) && base[-1] == ':')
19606 return &base[1];
19607 else
19608 return DW_STRING (attr);
53832f31
TT
19609 }
19610 }
907af001
UW
19611 break;
19612
71c25dea 19613 default:
907af001
UW
19614 break;
19615 }
19616
19617 if (!DW_STRING_IS_CANONICAL (attr))
19618 {
19619 DW_STRING (attr)
19620 = dwarf2_canonicalize_name (DW_STRING (attr), cu,
34a68019 19621 &cu->objfile->per_bfd->storage_obstack);
907af001 19622 DW_STRING_IS_CANONICAL (attr) = 1;
71c25dea 19623 }
907af001 19624 return DW_STRING (attr);
9219021c
DC
19625}
19626
19627/* Return the die that this die in an extension of, or NULL if there
f2f0e013
DJ
19628 is none. *EXT_CU is the CU containing DIE on input, and the CU
19629 containing the return value on output. */
9219021c
DC
19630
19631static struct die_info *
f2f0e013 19632dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
9219021c
DC
19633{
19634 struct attribute *attr;
9219021c 19635
f2f0e013 19636 attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
9219021c
DC
19637 if (attr == NULL)
19638 return NULL;
19639
f2f0e013 19640 return follow_die_ref (die, attr, ext_cu);
9219021c
DC
19641}
19642
c906108c
SS
19643/* Convert a DIE tag into its string name. */
19644
f39c6ffd 19645static const char *
aa1ee363 19646dwarf_tag_name (unsigned tag)
c906108c 19647{
f39c6ffd
TT
19648 const char *name = get_DW_TAG_name (tag);
19649
19650 if (name == NULL)
19651 return "DW_TAG_<unknown>";
19652
19653 return name;
c906108c
SS
19654}
19655
19656/* Convert a DWARF attribute code into its string name. */
19657
f39c6ffd 19658static const char *
aa1ee363 19659dwarf_attr_name (unsigned attr)
c906108c 19660{
f39c6ffd
TT
19661 const char *name;
19662
c764a876 19663#ifdef MIPS /* collides with DW_AT_HP_block_index */
f39c6ffd
TT
19664 if (attr == DW_AT_MIPS_fde)
19665 return "DW_AT_MIPS_fde";
19666#else
19667 if (attr == DW_AT_HP_block_index)
19668 return "DW_AT_HP_block_index";
c764a876 19669#endif
f39c6ffd
TT
19670
19671 name = get_DW_AT_name (attr);
19672
19673 if (name == NULL)
19674 return "DW_AT_<unknown>";
19675
19676 return name;
c906108c
SS
19677}
19678
19679/* Convert a DWARF value form code into its string name. */
19680
f39c6ffd 19681static const char *
aa1ee363 19682dwarf_form_name (unsigned form)
c906108c 19683{
f39c6ffd
TT
19684 const char *name = get_DW_FORM_name (form);
19685
19686 if (name == NULL)
19687 return "DW_FORM_<unknown>";
19688
19689 return name;
c906108c
SS
19690}
19691
19692static char *
fba45db2 19693dwarf_bool_name (unsigned mybool)
c906108c
SS
19694{
19695 if (mybool)
19696 return "TRUE";
19697 else
19698 return "FALSE";
19699}
19700
19701/* Convert a DWARF type code into its string name. */
19702
f39c6ffd 19703static const char *
aa1ee363 19704dwarf_type_encoding_name (unsigned enc)
c906108c 19705{
f39c6ffd 19706 const char *name = get_DW_ATE_name (enc);
c906108c 19707
f39c6ffd
TT
19708 if (name == NULL)
19709 return "DW_ATE_<unknown>";
c906108c 19710
f39c6ffd 19711 return name;
c906108c 19712}
c906108c 19713
f9aca02d 19714static void
d97bc12b 19715dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
c906108c
SS
19716{
19717 unsigned int i;
19718
d97bc12b
DE
19719 print_spaces (indent, f);
19720 fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
b64f50a1 19721 dwarf_tag_name (die->tag), die->abbrev, die->offset.sect_off);
d97bc12b
DE
19722
19723 if (die->parent != NULL)
19724 {
19725 print_spaces (indent, f);
19726 fprintf_unfiltered (f, " parent at offset: 0x%x\n",
b64f50a1 19727 die->parent->offset.sect_off);
d97bc12b
DE
19728 }
19729
19730 print_spaces (indent, f);
19731 fprintf_unfiltered (f, " has children: %s\n",
639d11d3 19732 dwarf_bool_name (die->child != NULL));
c906108c 19733
d97bc12b
DE
19734 print_spaces (indent, f);
19735 fprintf_unfiltered (f, " attributes:\n");
19736
c906108c
SS
19737 for (i = 0; i < die->num_attrs; ++i)
19738 {
d97bc12b
DE
19739 print_spaces (indent, f);
19740 fprintf_unfiltered (f, " %s (%s) ",
c906108c
SS
19741 dwarf_attr_name (die->attrs[i].name),
19742 dwarf_form_name (die->attrs[i].form));
d97bc12b 19743
c906108c
SS
19744 switch (die->attrs[i].form)
19745 {
c906108c 19746 case DW_FORM_addr:
3019eac3 19747 case DW_FORM_GNU_addr_index:
d97bc12b 19748 fprintf_unfiltered (f, "address: ");
5af949e3 19749 fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
c906108c
SS
19750 break;
19751 case DW_FORM_block2:
19752 case DW_FORM_block4:
19753 case DW_FORM_block:
19754 case DW_FORM_block1:
56eb65bd
SP
19755 fprintf_unfiltered (f, "block: size %s",
19756 pulongest (DW_BLOCK (&die->attrs[i])->size));
c906108c 19757 break;
2dc7f7b3 19758 case DW_FORM_exprloc:
56eb65bd
SP
19759 fprintf_unfiltered (f, "expression: size %s",
19760 pulongest (DW_BLOCK (&die->attrs[i])->size));
2dc7f7b3 19761 break;
4568ecf9
DE
19762 case DW_FORM_ref_addr:
19763 fprintf_unfiltered (f, "ref address: ");
19764 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19765 break;
36586728
TT
19766 case DW_FORM_GNU_ref_alt:
19767 fprintf_unfiltered (f, "alt ref address: ");
19768 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19769 break;
10b3939b
DJ
19770 case DW_FORM_ref1:
19771 case DW_FORM_ref2:
19772 case DW_FORM_ref4:
4568ecf9
DE
19773 case DW_FORM_ref8:
19774 case DW_FORM_ref_udata:
d97bc12b 19775 fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
4568ecf9 19776 (long) (DW_UNSND (&die->attrs[i])));
10b3939b 19777 break;
c906108c
SS
19778 case DW_FORM_data1:
19779 case DW_FORM_data2:
19780 case DW_FORM_data4:
ce5d95e1 19781 case DW_FORM_data8:
c906108c
SS
19782 case DW_FORM_udata:
19783 case DW_FORM_sdata:
43bbcdc2
PH
19784 fprintf_unfiltered (f, "constant: %s",
19785 pulongest (DW_UNSND (&die->attrs[i])));
c906108c 19786 break;
2dc7f7b3
TT
19787 case DW_FORM_sec_offset:
19788 fprintf_unfiltered (f, "section offset: %s",
19789 pulongest (DW_UNSND (&die->attrs[i])));
19790 break;
55f1336d 19791 case DW_FORM_ref_sig8:
ac9ec31b
DE
19792 fprintf_unfiltered (f, "signature: %s",
19793 hex_string (DW_SIGNATURE (&die->attrs[i])));
348e048f 19794 break;
c906108c 19795 case DW_FORM_string:
4bdf3d34 19796 case DW_FORM_strp:
3019eac3 19797 case DW_FORM_GNU_str_index:
36586728 19798 case DW_FORM_GNU_strp_alt:
8285870a 19799 fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
c906108c 19800 DW_STRING (&die->attrs[i])
8285870a
JK
19801 ? DW_STRING (&die->attrs[i]) : "",
19802 DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
c906108c
SS
19803 break;
19804 case DW_FORM_flag:
19805 if (DW_UNSND (&die->attrs[i]))
d97bc12b 19806 fprintf_unfiltered (f, "flag: TRUE");
c906108c 19807 else
d97bc12b 19808 fprintf_unfiltered (f, "flag: FALSE");
c906108c 19809 break;
2dc7f7b3
TT
19810 case DW_FORM_flag_present:
19811 fprintf_unfiltered (f, "flag: TRUE");
19812 break;
a8329558 19813 case DW_FORM_indirect:
0963b4bd
MS
19814 /* The reader will have reduced the indirect form to
19815 the "base form" so this form should not occur. */
3e43a32a
MS
19816 fprintf_unfiltered (f,
19817 "unexpected attribute form: DW_FORM_indirect");
a8329558 19818 break;
c906108c 19819 default:
d97bc12b 19820 fprintf_unfiltered (f, "unsupported attribute form: %d.",
c5aa993b 19821 die->attrs[i].form);
d97bc12b 19822 break;
c906108c 19823 }
d97bc12b 19824 fprintf_unfiltered (f, "\n");
c906108c
SS
19825 }
19826}
19827
f9aca02d 19828static void
d97bc12b 19829dump_die_for_error (struct die_info *die)
c906108c 19830{
d97bc12b
DE
19831 dump_die_shallow (gdb_stderr, 0, die);
19832}
19833
19834static void
19835dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
19836{
19837 int indent = level * 4;
19838
19839 gdb_assert (die != NULL);
19840
19841 if (level >= max_level)
19842 return;
19843
19844 dump_die_shallow (f, indent, die);
19845
19846 if (die->child != NULL)
c906108c 19847 {
d97bc12b
DE
19848 print_spaces (indent, f);
19849 fprintf_unfiltered (f, " Children:");
19850 if (level + 1 < max_level)
19851 {
19852 fprintf_unfiltered (f, "\n");
19853 dump_die_1 (f, level + 1, max_level, die->child);
19854 }
19855 else
19856 {
3e43a32a
MS
19857 fprintf_unfiltered (f,
19858 " [not printed, max nesting level reached]\n");
d97bc12b
DE
19859 }
19860 }
19861
19862 if (die->sibling != NULL && level > 0)
19863 {
19864 dump_die_1 (f, level, max_level, die->sibling);
c906108c
SS
19865 }
19866}
19867
d97bc12b
DE
19868/* This is called from the pdie macro in gdbinit.in.
19869 It's not static so gcc will keep a copy callable from gdb. */
19870
19871void
19872dump_die (struct die_info *die, int max_level)
19873{
19874 dump_die_1 (gdb_stdlog, 0, max_level, die);
19875}
19876
f9aca02d 19877static void
51545339 19878store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
c906108c 19879{
51545339 19880 void **slot;
c906108c 19881
b64f50a1
JK
19882 slot = htab_find_slot_with_hash (cu->die_hash, die, die->offset.sect_off,
19883 INSERT);
51545339
DJ
19884
19885 *slot = die;
c906108c
SS
19886}
19887
b64f50a1
JK
19888/* Return DIE offset of ATTR. Return 0 with complaint if ATTR is not of the
19889 required kind. */
19890
19891static sect_offset
ff39bb5e 19892dwarf2_get_ref_die_offset (const struct attribute *attr)
93311388 19893{
4568ecf9 19894 sect_offset retval = { DW_UNSND (attr) };
b64f50a1 19895
7771576e 19896 if (attr_form_is_ref (attr))
b64f50a1 19897 return retval;
93311388 19898
b64f50a1 19899 retval.sect_off = 0;
93311388
DE
19900 complaint (&symfile_complaints,
19901 _("unsupported die ref attribute form: '%s'"),
19902 dwarf_form_name (attr->form));
b64f50a1 19903 return retval;
c906108c
SS
19904}
19905
43bbcdc2
PH
19906/* Return the constant value held by ATTR. Return DEFAULT_VALUE if
19907 * the value held by the attribute is not constant. */
a02abb62 19908
43bbcdc2 19909static LONGEST
ff39bb5e 19910dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
a02abb62
JB
19911{
19912 if (attr->form == DW_FORM_sdata)
19913 return DW_SND (attr);
19914 else if (attr->form == DW_FORM_udata
19915 || attr->form == DW_FORM_data1
19916 || attr->form == DW_FORM_data2
19917 || attr->form == DW_FORM_data4
19918 || attr->form == DW_FORM_data8)
19919 return DW_UNSND (attr);
19920 else
19921 {
3e43a32a
MS
19922 complaint (&symfile_complaints,
19923 _("Attribute value is not a constant (%s)"),
a02abb62
JB
19924 dwarf_form_name (attr->form));
19925 return default_value;
19926 }
19927}
19928
348e048f
DE
19929/* Follow reference or signature attribute ATTR of SRC_DIE.
19930 On entry *REF_CU is the CU of SRC_DIE.
19931 On exit *REF_CU is the CU of the result. */
19932
19933static struct die_info *
ff39bb5e 19934follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
348e048f
DE
19935 struct dwarf2_cu **ref_cu)
19936{
19937 struct die_info *die;
19938
7771576e 19939 if (attr_form_is_ref (attr))
348e048f 19940 die = follow_die_ref (src_die, attr, ref_cu);
55f1336d 19941 else if (attr->form == DW_FORM_ref_sig8)
348e048f
DE
19942 die = follow_die_sig (src_die, attr, ref_cu);
19943 else
19944 {
19945 dump_die_for_error (src_die);
19946 error (_("Dwarf Error: Expected reference attribute [in module %s]"),
4262abfb 19947 objfile_name ((*ref_cu)->objfile));
348e048f
DE
19948 }
19949
19950 return die;
03dd20cc
DJ
19951}
19952
5c631832 19953/* Follow reference OFFSET.
673bfd45
DE
19954 On entry *REF_CU is the CU of the source die referencing OFFSET.
19955 On exit *REF_CU is the CU of the result.
19956 Returns NULL if OFFSET is invalid. */
f504f079 19957
f9aca02d 19958static struct die_info *
36586728
TT
19959follow_die_offset (sect_offset offset, int offset_in_dwz,
19960 struct dwarf2_cu **ref_cu)
c906108c 19961{
10b3939b 19962 struct die_info temp_die;
f2f0e013 19963 struct dwarf2_cu *target_cu, *cu = *ref_cu;
10b3939b 19964
348e048f
DE
19965 gdb_assert (cu->per_cu != NULL);
19966
98bfdba5
PA
19967 target_cu = cu;
19968
3019eac3 19969 if (cu->per_cu->is_debug_types)
348e048f
DE
19970 {
19971 /* .debug_types CUs cannot reference anything outside their CU.
19972 If they need to, they have to reference a signatured type via
55f1336d 19973 DW_FORM_ref_sig8. */
348e048f 19974 if (! offset_in_cu_p (&cu->header, offset))
5c631832 19975 return NULL;
348e048f 19976 }
36586728
TT
19977 else if (offset_in_dwz != cu->per_cu->is_dwz
19978 || ! offset_in_cu_p (&cu->header, offset))
10b3939b
DJ
19979 {
19980 struct dwarf2_per_cu_data *per_cu;
9a619af0 19981
36586728
TT
19982 per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
19983 cu->objfile);
03dd20cc
DJ
19984
19985 /* If necessary, add it to the queue and load its DIEs. */
95554aad
TT
19986 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
19987 load_full_comp_unit (per_cu, cu->language);
03dd20cc 19988
10b3939b
DJ
19989 target_cu = per_cu->cu;
19990 }
98bfdba5
PA
19991 else if (cu->dies == NULL)
19992 {
19993 /* We're loading full DIEs during partial symbol reading. */
19994 gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
95554aad 19995 load_full_comp_unit (cu->per_cu, language_minimal);
98bfdba5 19996 }
c906108c 19997
f2f0e013 19998 *ref_cu = target_cu;
51545339 19999 temp_die.offset = offset;
b64f50a1 20000 return htab_find_with_hash (target_cu->die_hash, &temp_die, offset.sect_off);
5c631832 20001}
10b3939b 20002
5c631832
JK
20003/* Follow reference attribute ATTR of SRC_DIE.
20004 On entry *REF_CU is the CU of SRC_DIE.
20005 On exit *REF_CU is the CU of the result. */
20006
20007static struct die_info *
ff39bb5e 20008follow_die_ref (struct die_info *src_die, const struct attribute *attr,
5c631832
JK
20009 struct dwarf2_cu **ref_cu)
20010{
b64f50a1 20011 sect_offset offset = dwarf2_get_ref_die_offset (attr);
5c631832
JK
20012 struct dwarf2_cu *cu = *ref_cu;
20013 struct die_info *die;
20014
36586728
TT
20015 die = follow_die_offset (offset,
20016 (attr->form == DW_FORM_GNU_ref_alt
20017 || cu->per_cu->is_dwz),
20018 ref_cu);
5c631832
JK
20019 if (!die)
20020 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
20021 "at 0x%x [in module %s]"),
4262abfb
JK
20022 offset.sect_off, src_die->offset.sect_off,
20023 objfile_name (cu->objfile));
348e048f 20024
5c631832
JK
20025 return die;
20026}
20027
d83e736b
JK
20028/* Return DWARF block referenced by DW_AT_location of DIE at OFFSET at PER_CU.
20029 Returned value is intended for DW_OP_call*. Returned
20030 dwarf2_locexpr_baton->data has lifetime of PER_CU->OBJFILE. */
5c631832
JK
20031
20032struct dwarf2_locexpr_baton
8b9737bf
TT
20033dwarf2_fetch_die_loc_sect_off (sect_offset offset,
20034 struct dwarf2_per_cu_data *per_cu,
20035 CORE_ADDR (*get_frame_pc) (void *baton),
20036 void *baton)
5c631832 20037{
918dd910 20038 struct dwarf2_cu *cu;
5c631832
JK
20039 struct die_info *die;
20040 struct attribute *attr;
20041 struct dwarf2_locexpr_baton retval;
20042
8cf6f0b1
TT
20043 dw2_setup (per_cu->objfile);
20044
918dd910
JK
20045 if (per_cu->cu == NULL)
20046 load_cu (per_cu);
20047 cu = per_cu->cu;
cc12ce38
DE
20048 if (cu == NULL)
20049 {
20050 /* We shouldn't get here for a dummy CU, but don't crash on the user.
20051 Instead just throw an error, not much else we can do. */
20052 error (_("Dwarf Error: Dummy CU at 0x%x referenced in module %s"),
20053 offset.sect_off, objfile_name (per_cu->objfile));
20054 }
918dd910 20055
36586728 20056 die = follow_die_offset (offset, per_cu->is_dwz, &cu);
5c631832
JK
20057 if (!die)
20058 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
4262abfb 20059 offset.sect_off, objfile_name (per_cu->objfile));
5c631832
JK
20060
20061 attr = dwarf2_attr (die, DW_AT_location, cu);
20062 if (!attr)
20063 {
e103e986
JK
20064 /* DWARF: "If there is no such attribute, then there is no effect.".
20065 DATA is ignored if SIZE is 0. */
5c631832 20066
e103e986 20067 retval.data = NULL;
5c631832
JK
20068 retval.size = 0;
20069 }
8cf6f0b1
TT
20070 else if (attr_form_is_section_offset (attr))
20071 {
20072 struct dwarf2_loclist_baton loclist_baton;
20073 CORE_ADDR pc = (*get_frame_pc) (baton);
20074 size_t size;
20075
20076 fill_in_loclist_baton (cu, &loclist_baton, attr);
20077
20078 retval.data = dwarf2_find_location_expression (&loclist_baton,
20079 &size, pc);
20080 retval.size = size;
20081 }
5c631832
JK
20082 else
20083 {
20084 if (!attr_form_is_block (attr))
20085 error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
20086 "is neither DW_FORM_block* nor DW_FORM_exprloc"),
4262abfb 20087 offset.sect_off, objfile_name (per_cu->objfile));
5c631832
JK
20088
20089 retval.data = DW_BLOCK (attr)->data;
20090 retval.size = DW_BLOCK (attr)->size;
20091 }
20092 retval.per_cu = cu->per_cu;
918dd910 20093
918dd910
JK
20094 age_cached_comp_units ();
20095
5c631832 20096 return retval;
348e048f
DE
20097}
20098
8b9737bf
TT
20099/* Like dwarf2_fetch_die_loc_sect_off, but take a CU
20100 offset. */
20101
20102struct dwarf2_locexpr_baton
20103dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
20104 struct dwarf2_per_cu_data *per_cu,
20105 CORE_ADDR (*get_frame_pc) (void *baton),
20106 void *baton)
20107{
20108 sect_offset offset = { per_cu->offset.sect_off + offset_in_cu.cu_off };
20109
20110 return dwarf2_fetch_die_loc_sect_off (offset, per_cu, get_frame_pc, baton);
20111}
20112
b6807d98
TT
20113/* Write a constant of a given type as target-ordered bytes into
20114 OBSTACK. */
20115
20116static const gdb_byte *
20117write_constant_as_bytes (struct obstack *obstack,
20118 enum bfd_endian byte_order,
20119 struct type *type,
20120 ULONGEST value,
20121 LONGEST *len)
20122{
20123 gdb_byte *result;
20124
20125 *len = TYPE_LENGTH (type);
20126 result = obstack_alloc (obstack, *len);
20127 store_unsigned_integer (result, *len, byte_order, value);
20128
20129 return result;
20130}
20131
20132/* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
20133 pointer to the constant bytes and set LEN to the length of the
20134 data. If memory is needed, allocate it on OBSTACK. If the DIE
20135 does not have a DW_AT_const_value, return NULL. */
20136
20137const gdb_byte *
20138dwarf2_fetch_constant_bytes (sect_offset offset,
20139 struct dwarf2_per_cu_data *per_cu,
20140 struct obstack *obstack,
20141 LONGEST *len)
20142{
20143 struct dwarf2_cu *cu;
20144 struct die_info *die;
20145 struct attribute *attr;
20146 const gdb_byte *result = NULL;
20147 struct type *type;
20148 LONGEST value;
20149 enum bfd_endian byte_order;
20150
20151 dw2_setup (per_cu->objfile);
20152
20153 if (per_cu->cu == NULL)
20154 load_cu (per_cu);
20155 cu = per_cu->cu;
cc12ce38
DE
20156 if (cu == NULL)
20157 {
20158 /* We shouldn't get here for a dummy CU, but don't crash on the user.
20159 Instead just throw an error, not much else we can do. */
20160 error (_("Dwarf Error: Dummy CU at 0x%x referenced in module %s"),
20161 offset.sect_off, objfile_name (per_cu->objfile));
20162 }
b6807d98
TT
20163
20164 die = follow_die_offset (offset, per_cu->is_dwz, &cu);
20165 if (!die)
20166 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
4262abfb 20167 offset.sect_off, objfile_name (per_cu->objfile));
b6807d98
TT
20168
20169
20170 attr = dwarf2_attr (die, DW_AT_const_value, cu);
20171 if (attr == NULL)
20172 return NULL;
20173
20174 byte_order = (bfd_big_endian (per_cu->objfile->obfd)
20175 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
20176
20177 switch (attr->form)
20178 {
20179 case DW_FORM_addr:
20180 case DW_FORM_GNU_addr_index:
20181 {
20182 gdb_byte *tem;
20183
20184 *len = cu->header.addr_size;
20185 tem = obstack_alloc (obstack, *len);
20186 store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
20187 result = tem;
20188 }
20189 break;
20190 case DW_FORM_string:
20191 case DW_FORM_strp:
20192 case DW_FORM_GNU_str_index:
20193 case DW_FORM_GNU_strp_alt:
20194 /* DW_STRING is already allocated on the objfile obstack, point
20195 directly to it. */
20196 result = (const gdb_byte *) DW_STRING (attr);
20197 *len = strlen (DW_STRING (attr));
20198 break;
20199 case DW_FORM_block1:
20200 case DW_FORM_block2:
20201 case DW_FORM_block4:
20202 case DW_FORM_block:
20203 case DW_FORM_exprloc:
20204 result = DW_BLOCK (attr)->data;
20205 *len = DW_BLOCK (attr)->size;
20206 break;
20207
20208 /* The DW_AT_const_value attributes are supposed to carry the
20209 symbol's value "represented as it would be on the target
20210 architecture." By the time we get here, it's already been
20211 converted to host endianness, so we just need to sign- or
20212 zero-extend it as appropriate. */
20213 case DW_FORM_data1:
20214 type = die_type (die, cu);
20215 result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
20216 if (result == NULL)
20217 result = write_constant_as_bytes (obstack, byte_order,
20218 type, value, len);
20219 break;
20220 case DW_FORM_data2:
20221 type = die_type (die, cu);
20222 result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
20223 if (result == NULL)
20224 result = write_constant_as_bytes (obstack, byte_order,
20225 type, value, len);
20226 break;
20227 case DW_FORM_data4:
20228 type = die_type (die, cu);
20229 result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
20230 if (result == NULL)
20231 result = write_constant_as_bytes (obstack, byte_order,
20232 type, value, len);
20233 break;
20234 case DW_FORM_data8:
20235 type = die_type (die, cu);
20236 result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
20237 if (result == NULL)
20238 result = write_constant_as_bytes (obstack, byte_order,
20239 type, value, len);
20240 break;
20241
20242 case DW_FORM_sdata:
20243 type = die_type (die, cu);
20244 result = write_constant_as_bytes (obstack, byte_order,
20245 type, DW_SND (attr), len);
20246 break;
20247
20248 case DW_FORM_udata:
20249 type = die_type (die, cu);
20250 result = write_constant_as_bytes (obstack, byte_order,
20251 type, DW_UNSND (attr), len);
20252 break;
20253
20254 default:
20255 complaint (&symfile_complaints,
20256 _("unsupported const value attribute form: '%s'"),
20257 dwarf_form_name (attr->form));
20258 break;
20259 }
20260
20261 return result;
20262}
20263
8a9b8146
TT
20264/* Return the type of the DIE at DIE_OFFSET in the CU named by
20265 PER_CU. */
20266
20267struct type *
b64f50a1 20268dwarf2_get_die_type (cu_offset die_offset,
8a9b8146
TT
20269 struct dwarf2_per_cu_data *per_cu)
20270{
b64f50a1
JK
20271 sect_offset die_offset_sect;
20272
8a9b8146 20273 dw2_setup (per_cu->objfile);
b64f50a1
JK
20274
20275 die_offset_sect.sect_off = per_cu->offset.sect_off + die_offset.cu_off;
20276 return get_die_type_at_offset (die_offset_sect, per_cu);
8a9b8146
TT
20277}
20278
ac9ec31b 20279/* Follow type unit SIG_TYPE referenced by SRC_DIE.
348e048f 20280 On entry *REF_CU is the CU of SRC_DIE.
ac9ec31b
DE
20281 On exit *REF_CU is the CU of the result.
20282 Returns NULL if the referenced DIE isn't found. */
348e048f
DE
20283
20284static struct die_info *
ac9ec31b
DE
20285follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
20286 struct dwarf2_cu **ref_cu)
348e048f
DE
20287{
20288 struct objfile *objfile = (*ref_cu)->objfile;
20289 struct die_info temp_die;
348e048f
DE
20290 struct dwarf2_cu *sig_cu;
20291 struct die_info *die;
20292
ac9ec31b
DE
20293 /* While it might be nice to assert sig_type->type == NULL here,
20294 we can get here for DW_AT_imported_declaration where we need
20295 the DIE not the type. */
348e048f
DE
20296
20297 /* If necessary, add it to the queue and load its DIEs. */
20298
95554aad 20299 if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
a0f42c21 20300 read_signatured_type (sig_type);
348e048f 20301
348e048f 20302 sig_cu = sig_type->per_cu.cu;
69d751e3 20303 gdb_assert (sig_cu != NULL);
3019eac3
DE
20304 gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
20305 temp_die.offset = sig_type->type_offset_in_section;
b64f50a1
JK
20306 die = htab_find_with_hash (sig_cu->die_hash, &temp_die,
20307 temp_die.offset.sect_off);
348e048f
DE
20308 if (die)
20309 {
796a7ff8
DE
20310 /* For .gdb_index version 7 keep track of included TUs.
20311 http://sourceware.org/bugzilla/show_bug.cgi?id=15021. */
20312 if (dwarf2_per_objfile->index_table != NULL
20313 && dwarf2_per_objfile->index_table->version <= 7)
20314 {
20315 VEC_safe_push (dwarf2_per_cu_ptr,
20316 (*ref_cu)->per_cu->imported_symtabs,
20317 sig_cu->per_cu);
20318 }
20319
348e048f
DE
20320 *ref_cu = sig_cu;
20321 return die;
20322 }
20323
ac9ec31b
DE
20324 return NULL;
20325}
20326
20327/* Follow signatured type referenced by ATTR in SRC_DIE.
20328 On entry *REF_CU is the CU of SRC_DIE.
20329 On exit *REF_CU is the CU of the result.
20330 The result is the DIE of the type.
20331 If the referenced type cannot be found an error is thrown. */
20332
20333static struct die_info *
ff39bb5e 20334follow_die_sig (struct die_info *src_die, const struct attribute *attr,
ac9ec31b
DE
20335 struct dwarf2_cu **ref_cu)
20336{
20337 ULONGEST signature = DW_SIGNATURE (attr);
20338 struct signatured_type *sig_type;
20339 struct die_info *die;
20340
20341 gdb_assert (attr->form == DW_FORM_ref_sig8);
20342
a2ce51a0 20343 sig_type = lookup_signatured_type (*ref_cu, signature);
ac9ec31b
DE
20344 /* sig_type will be NULL if the signatured type is missing from
20345 the debug info. */
20346 if (sig_type == NULL)
20347 {
20348 error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
20349 " from DIE at 0x%x [in module %s]"),
20350 hex_string (signature), src_die->offset.sect_off,
4262abfb 20351 objfile_name ((*ref_cu)->objfile));
ac9ec31b
DE
20352 }
20353
20354 die = follow_die_sig_1 (src_die, sig_type, ref_cu);
20355 if (die == NULL)
20356 {
20357 dump_die_for_error (src_die);
20358 error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
20359 " from DIE at 0x%x [in module %s]"),
20360 hex_string (signature), src_die->offset.sect_off,
4262abfb 20361 objfile_name ((*ref_cu)->objfile));
ac9ec31b
DE
20362 }
20363
20364 return die;
20365}
20366
20367/* Get the type specified by SIGNATURE referenced in DIE/CU,
20368 reading in and processing the type unit if necessary. */
20369
20370static struct type *
20371get_signatured_type (struct die_info *die, ULONGEST signature,
20372 struct dwarf2_cu *cu)
20373{
20374 struct signatured_type *sig_type;
20375 struct dwarf2_cu *type_cu;
20376 struct die_info *type_die;
20377 struct type *type;
20378
a2ce51a0 20379 sig_type = lookup_signatured_type (cu, signature);
ac9ec31b
DE
20380 /* sig_type will be NULL if the signatured type is missing from
20381 the debug info. */
20382 if (sig_type == NULL)
20383 {
20384 complaint (&symfile_complaints,
20385 _("Dwarf Error: Cannot find signatured DIE %s referenced"
20386 " from DIE at 0x%x [in module %s]"),
20387 hex_string (signature), die->offset.sect_off,
4262abfb 20388 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20389 return build_error_marker_type (cu, die);
20390 }
20391
20392 /* If we already know the type we're done. */
20393 if (sig_type->type != NULL)
20394 return sig_type->type;
20395
20396 type_cu = cu;
20397 type_die = follow_die_sig_1 (die, sig_type, &type_cu);
20398 if (type_die != NULL)
20399 {
20400 /* N.B. We need to call get_die_type to ensure only one type for this DIE
20401 is created. This is important, for example, because for c++ classes
20402 we need TYPE_NAME set which is only done by new_symbol. Blech. */
20403 type = read_type_die (type_die, type_cu);
20404 if (type == NULL)
20405 {
20406 complaint (&symfile_complaints,
20407 _("Dwarf Error: Cannot build signatured type %s"
20408 " referenced from DIE at 0x%x [in module %s]"),
20409 hex_string (signature), die->offset.sect_off,
4262abfb 20410 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20411 type = build_error_marker_type (cu, die);
20412 }
20413 }
20414 else
20415 {
20416 complaint (&symfile_complaints,
20417 _("Dwarf Error: Problem reading signatured DIE %s referenced"
20418 " from DIE at 0x%x [in module %s]"),
20419 hex_string (signature), die->offset.sect_off,
4262abfb 20420 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20421 type = build_error_marker_type (cu, die);
20422 }
20423 sig_type->type = type;
20424
20425 return type;
20426}
20427
20428/* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
20429 reading in and processing the type unit if necessary. */
20430
20431static struct type *
ff39bb5e 20432get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
b385a60d 20433 struct dwarf2_cu *cu) /* ARI: editCase function */
ac9ec31b
DE
20434{
20435 /* Yes, DW_AT_signature can use a non-ref_sig8 reference. */
7771576e 20436 if (attr_form_is_ref (attr))
ac9ec31b
DE
20437 {
20438 struct dwarf2_cu *type_cu = cu;
20439 struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
20440
20441 return read_type_die (type_die, type_cu);
20442 }
20443 else if (attr->form == DW_FORM_ref_sig8)
20444 {
20445 return get_signatured_type (die, DW_SIGNATURE (attr), cu);
20446 }
20447 else
20448 {
20449 complaint (&symfile_complaints,
20450 _("Dwarf Error: DW_AT_signature has bad form %s in DIE"
20451 " at 0x%x [in module %s]"),
20452 dwarf_form_name (attr->form), die->offset.sect_off,
4262abfb 20453 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20454 return build_error_marker_type (cu, die);
20455 }
348e048f
DE
20456}
20457
e5fe5e75 20458/* Load the DIEs associated with type unit PER_CU into memory. */
348e048f
DE
20459
20460static void
e5fe5e75 20461load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
348e048f 20462{
52dc124a 20463 struct signatured_type *sig_type;
348e048f 20464
f4dc4d17
DE
20465 /* Caller is responsible for ensuring type_unit_groups don't get here. */
20466 gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
20467
6721b2ec
DE
20468 /* We have the per_cu, but we need the signatured_type.
20469 Fortunately this is an easy translation. */
20470 gdb_assert (per_cu->is_debug_types);
20471 sig_type = (struct signatured_type *) per_cu;
348e048f 20472
6721b2ec 20473 gdb_assert (per_cu->cu == NULL);
348e048f 20474
52dc124a 20475 read_signatured_type (sig_type);
348e048f 20476
6721b2ec 20477 gdb_assert (per_cu->cu != NULL);
348e048f
DE
20478}
20479
dee91e82
DE
20480/* die_reader_func for read_signatured_type.
20481 This is identical to load_full_comp_unit_reader,
20482 but is kept separate for now. */
348e048f
DE
20483
20484static void
dee91e82 20485read_signatured_type_reader (const struct die_reader_specs *reader,
d521ce57 20486 const gdb_byte *info_ptr,
dee91e82
DE
20487 struct die_info *comp_unit_die,
20488 int has_children,
20489 void *data)
348e048f 20490{
dee91e82 20491 struct dwarf2_cu *cu = reader->cu;
348e048f 20492
dee91e82
DE
20493 gdb_assert (cu->die_hash == NULL);
20494 cu->die_hash =
20495 htab_create_alloc_ex (cu->header.length / 12,
20496 die_hash,
20497 die_eq,
20498 NULL,
20499 &cu->comp_unit_obstack,
20500 hashtab_obstack_allocate,
20501 dummy_obstack_deallocate);
348e048f 20502
dee91e82
DE
20503 if (has_children)
20504 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
20505 &info_ptr, comp_unit_die);
20506 cu->dies = comp_unit_die;
20507 /* comp_unit_die is not stored in die_hash, no need. */
348e048f
DE
20508
20509 /* We try not to read any attributes in this function, because not
9cdd5dbd 20510 all CUs needed for references have been loaded yet, and symbol
348e048f 20511 table processing isn't initialized. But we have to set the CU language,
dee91e82
DE
20512 or we won't be able to build types correctly.
20513 Similarly, if we do not read the producer, we can not apply
20514 producer-specific interpretation. */
95554aad 20515 prepare_one_comp_unit (cu, cu->dies, language_minimal);
dee91e82 20516}
348e048f 20517
3019eac3
DE
20518/* Read in a signatured type and build its CU and DIEs.
20519 If the type is a stub for the real type in a DWO file,
20520 read in the real type from the DWO file as well. */
dee91e82
DE
20521
20522static void
20523read_signatured_type (struct signatured_type *sig_type)
20524{
20525 struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
348e048f 20526
3019eac3 20527 gdb_assert (per_cu->is_debug_types);
dee91e82 20528 gdb_assert (per_cu->cu == NULL);
348e048f 20529
f4dc4d17
DE
20530 init_cutu_and_read_dies (per_cu, NULL, 0, 1,
20531 read_signatured_type_reader, NULL);
7ee85ab1 20532 sig_type->per_cu.tu_read = 1;
c906108c
SS
20533}
20534
c906108c
SS
20535/* Decode simple location descriptions.
20536 Given a pointer to a dwarf block that defines a location, compute
20537 the location and return the value.
20538
4cecd739
DJ
20539 NOTE drow/2003-11-18: This function is called in two situations
20540 now: for the address of static or global variables (partial symbols
20541 only) and for offsets into structures which are expected to be
20542 (more or less) constant. The partial symbol case should go away,
20543 and only the constant case should remain. That will let this
20544 function complain more accurately. A few special modes are allowed
20545 without complaint for global variables (for instance, global
20546 register values and thread-local values).
c906108c
SS
20547
20548 A location description containing no operations indicates that the
4cecd739 20549 object is optimized out. The return value is 0 for that case.
6b992462
DJ
20550 FIXME drow/2003-11-16: No callers check for this case any more; soon all
20551 callers will only want a very basic result and this can become a
21ae7a4d
JK
20552 complaint.
20553
20554 Note that stack[0] is unused except as a default error return. */
c906108c
SS
20555
20556static CORE_ADDR
e7c27a73 20557decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
c906108c 20558{
e7c27a73 20559 struct objfile *objfile = cu->objfile;
56eb65bd
SP
20560 size_t i;
20561 size_t size = blk->size;
d521ce57 20562 const gdb_byte *data = blk->data;
21ae7a4d
JK
20563 CORE_ADDR stack[64];
20564 int stacki;
20565 unsigned int bytes_read, unsnd;
20566 gdb_byte op;
c906108c 20567
21ae7a4d
JK
20568 i = 0;
20569 stacki = 0;
20570 stack[stacki] = 0;
20571 stack[++stacki] = 0;
20572
20573 while (i < size)
20574 {
20575 op = data[i++];
20576 switch (op)
20577 {
20578 case DW_OP_lit0:
20579 case DW_OP_lit1:
20580 case DW_OP_lit2:
20581 case DW_OP_lit3:
20582 case DW_OP_lit4:
20583 case DW_OP_lit5:
20584 case DW_OP_lit6:
20585 case DW_OP_lit7:
20586 case DW_OP_lit8:
20587 case DW_OP_lit9:
20588 case DW_OP_lit10:
20589 case DW_OP_lit11:
20590 case DW_OP_lit12:
20591 case DW_OP_lit13:
20592 case DW_OP_lit14:
20593 case DW_OP_lit15:
20594 case DW_OP_lit16:
20595 case DW_OP_lit17:
20596 case DW_OP_lit18:
20597 case DW_OP_lit19:
20598 case DW_OP_lit20:
20599 case DW_OP_lit21:
20600 case DW_OP_lit22:
20601 case DW_OP_lit23:
20602 case DW_OP_lit24:
20603 case DW_OP_lit25:
20604 case DW_OP_lit26:
20605 case DW_OP_lit27:
20606 case DW_OP_lit28:
20607 case DW_OP_lit29:
20608 case DW_OP_lit30:
20609 case DW_OP_lit31:
20610 stack[++stacki] = op - DW_OP_lit0;
20611 break;
f1bea926 20612
21ae7a4d
JK
20613 case DW_OP_reg0:
20614 case DW_OP_reg1:
20615 case DW_OP_reg2:
20616 case DW_OP_reg3:
20617 case DW_OP_reg4:
20618 case DW_OP_reg5:
20619 case DW_OP_reg6:
20620 case DW_OP_reg7:
20621 case DW_OP_reg8:
20622 case DW_OP_reg9:
20623 case DW_OP_reg10:
20624 case DW_OP_reg11:
20625 case DW_OP_reg12:
20626 case DW_OP_reg13:
20627 case DW_OP_reg14:
20628 case DW_OP_reg15:
20629 case DW_OP_reg16:
20630 case DW_OP_reg17:
20631 case DW_OP_reg18:
20632 case DW_OP_reg19:
20633 case DW_OP_reg20:
20634 case DW_OP_reg21:
20635 case DW_OP_reg22:
20636 case DW_OP_reg23:
20637 case DW_OP_reg24:
20638 case DW_OP_reg25:
20639 case DW_OP_reg26:
20640 case DW_OP_reg27:
20641 case DW_OP_reg28:
20642 case DW_OP_reg29:
20643 case DW_OP_reg30:
20644 case DW_OP_reg31:
20645 stack[++stacki] = op - DW_OP_reg0;
20646 if (i < size)
20647 dwarf2_complex_location_expr_complaint ();
20648 break;
c906108c 20649
21ae7a4d
JK
20650 case DW_OP_regx:
20651 unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
20652 i += bytes_read;
20653 stack[++stacki] = unsnd;
20654 if (i < size)
20655 dwarf2_complex_location_expr_complaint ();
20656 break;
c906108c 20657
21ae7a4d
JK
20658 case DW_OP_addr:
20659 stack[++stacki] = read_address (objfile->obfd, &data[i],
20660 cu, &bytes_read);
20661 i += bytes_read;
20662 break;
d53d4ac5 20663
21ae7a4d
JK
20664 case DW_OP_const1u:
20665 stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
20666 i += 1;
20667 break;
20668
20669 case DW_OP_const1s:
20670 stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
20671 i += 1;
20672 break;
20673
20674 case DW_OP_const2u:
20675 stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
20676 i += 2;
20677 break;
20678
20679 case DW_OP_const2s:
20680 stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
20681 i += 2;
20682 break;
d53d4ac5 20683
21ae7a4d
JK
20684 case DW_OP_const4u:
20685 stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
20686 i += 4;
20687 break;
20688
20689 case DW_OP_const4s:
20690 stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
20691 i += 4;
20692 break;
20693
585861ea
JK
20694 case DW_OP_const8u:
20695 stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
20696 i += 8;
20697 break;
20698
21ae7a4d
JK
20699 case DW_OP_constu:
20700 stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
20701 &bytes_read);
20702 i += bytes_read;
20703 break;
20704
20705 case DW_OP_consts:
20706 stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
20707 i += bytes_read;
20708 break;
20709
20710 case DW_OP_dup:
20711 stack[stacki + 1] = stack[stacki];
20712 stacki++;
20713 break;
20714
20715 case DW_OP_plus:
20716 stack[stacki - 1] += stack[stacki];
20717 stacki--;
20718 break;
20719
20720 case DW_OP_plus_uconst:
20721 stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
20722 &bytes_read);
20723 i += bytes_read;
20724 break;
20725
20726 case DW_OP_minus:
20727 stack[stacki - 1] -= stack[stacki];
20728 stacki--;
20729 break;
20730
20731 case DW_OP_deref:
20732 /* If we're not the last op, then we definitely can't encode
20733 this using GDB's address_class enum. This is valid for partial
20734 global symbols, although the variable's address will be bogus
20735 in the psymtab. */
20736 if (i < size)
20737 dwarf2_complex_location_expr_complaint ();
20738 break;
20739
20740 case DW_OP_GNU_push_tls_address:
20741 /* The top of the stack has the offset from the beginning
20742 of the thread control block at which the variable is located. */
20743 /* Nothing should follow this operator, so the top of stack would
20744 be returned. */
20745 /* This is valid for partial global symbols, but the variable's
585861ea
JK
20746 address will be bogus in the psymtab. Make it always at least
20747 non-zero to not look as a variable garbage collected by linker
20748 which have DW_OP_addr 0. */
21ae7a4d
JK
20749 if (i < size)
20750 dwarf2_complex_location_expr_complaint ();
585861ea 20751 stack[stacki]++;
21ae7a4d
JK
20752 break;
20753
20754 case DW_OP_GNU_uninit:
20755 break;
20756
3019eac3 20757 case DW_OP_GNU_addr_index:
49f6c839 20758 case DW_OP_GNU_const_index:
3019eac3
DE
20759 stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
20760 &bytes_read);
20761 i += bytes_read;
20762 break;
20763
21ae7a4d
JK
20764 default:
20765 {
f39c6ffd 20766 const char *name = get_DW_OP_name (op);
21ae7a4d
JK
20767
20768 if (name)
20769 complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
20770 name);
20771 else
20772 complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
20773 op);
20774 }
20775
20776 return (stack[stacki]);
d53d4ac5 20777 }
3c6e0cb3 20778
21ae7a4d
JK
20779 /* Enforce maximum stack depth of SIZE-1 to avoid writing
20780 outside of the allocated space. Also enforce minimum>0. */
20781 if (stacki >= ARRAY_SIZE (stack) - 1)
20782 {
20783 complaint (&symfile_complaints,
20784 _("location description stack overflow"));
20785 return 0;
20786 }
20787
20788 if (stacki <= 0)
20789 {
20790 complaint (&symfile_complaints,
20791 _("location description stack underflow"));
20792 return 0;
20793 }
20794 }
20795 return (stack[stacki]);
c906108c
SS
20796}
20797
20798/* memory allocation interface */
20799
c906108c 20800static struct dwarf_block *
7b5a2f43 20801dwarf_alloc_block (struct dwarf2_cu *cu)
c906108c 20802{
8d749320 20803 return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
c906108c
SS
20804}
20805
c906108c 20806static struct die_info *
b60c80d6 20807dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
c906108c
SS
20808{
20809 struct die_info *die;
b60c80d6
DJ
20810 size_t size = sizeof (struct die_info);
20811
20812 if (num_attrs > 1)
20813 size += (num_attrs - 1) * sizeof (struct attribute);
c906108c 20814
b60c80d6 20815 die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
c906108c
SS
20816 memset (die, 0, sizeof (struct die_info));
20817 return (die);
20818}
2e276125
JB
20819
20820\f
20821/* Macro support. */
20822
233d95b5
JK
20823/* Return file name relative to the compilation directory of file number I in
20824 *LH's file name table. The result is allocated using xmalloc; the caller is
2e276125 20825 responsible for freeing it. */
233d95b5 20826
2e276125 20827static char *
233d95b5 20828file_file_name (int file, struct line_header *lh)
2e276125 20829{
6a83a1e6
EZ
20830 /* Is the file number a valid index into the line header's file name
20831 table? Remember that file numbers start with one, not zero. */
20832 if (1 <= file && file <= lh->num_file_names)
20833 {
20834 struct file_entry *fe = &lh->file_names[file - 1];
6e70227d 20835
afa6c9ab
SL
20836 if (IS_ABSOLUTE_PATH (fe->name) || fe->dir_index == 0
20837 || lh->include_dirs == NULL)
6a83a1e6 20838 return xstrdup (fe->name);
233d95b5
JK
20839 return concat (lh->include_dirs[fe->dir_index - 1], SLASH_STRING,
20840 fe->name, NULL);
6a83a1e6 20841 }
2e276125
JB
20842 else
20843 {
6a83a1e6
EZ
20844 /* The compiler produced a bogus file number. We can at least
20845 record the macro definitions made in the file, even if we
20846 won't be able to find the file by name. */
20847 char fake_name[80];
9a619af0 20848
8c042590
PM
20849 xsnprintf (fake_name, sizeof (fake_name),
20850 "<bad macro file number %d>", file);
2e276125 20851
6e70227d 20852 complaint (&symfile_complaints,
6a83a1e6
EZ
20853 _("bad file number in macro information (%d)"),
20854 file);
2e276125 20855
6a83a1e6 20856 return xstrdup (fake_name);
2e276125
JB
20857 }
20858}
20859
233d95b5
JK
20860/* Return the full name of file number I in *LH's file name table.
20861 Use COMP_DIR as the name of the current directory of the
20862 compilation. The result is allocated using xmalloc; the caller is
20863 responsible for freeing it. */
20864static char *
20865file_full_name (int file, struct line_header *lh, const char *comp_dir)
20866{
20867 /* Is the file number a valid index into the line header's file name
20868 table? Remember that file numbers start with one, not zero. */
20869 if (1 <= file && file <= lh->num_file_names)
20870 {
20871 char *relative = file_file_name (file, lh);
20872
20873 if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
20874 return relative;
20875 return reconcat (relative, comp_dir, SLASH_STRING, relative, NULL);
20876 }
20877 else
20878 return file_file_name (file, lh);
20879}
20880
2e276125
JB
20881
20882static struct macro_source_file *
20883macro_start_file (int file, int line,
20884 struct macro_source_file *current_file,
43f3e411 20885 struct line_header *lh)
2e276125 20886{
233d95b5
JK
20887 /* File name relative to the compilation directory of this source file. */
20888 char *file_name = file_file_name (file, lh);
2e276125 20889
2e276125 20890 if (! current_file)
abc9d0dc 20891 {
fc474241
DE
20892 /* Note: We don't create a macro table for this compilation unit
20893 at all until we actually get a filename. */
43f3e411 20894 struct macro_table *macro_table = get_macro_table ();
fc474241 20895
abc9d0dc
TT
20896 /* If we have no current file, then this must be the start_file
20897 directive for the compilation unit's main source file. */
fc474241
DE
20898 current_file = macro_set_main (macro_table, file_name);
20899 macro_define_special (macro_table);
abc9d0dc 20900 }
2e276125 20901 else
233d95b5 20902 current_file = macro_include (current_file, line, file_name);
2e276125 20903
233d95b5 20904 xfree (file_name);
6e70227d 20905
2e276125
JB
20906 return current_file;
20907}
20908
20909
20910/* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
20911 followed by a null byte. */
20912static char *
20913copy_string (const char *buf, int len)
20914{
20915 char *s = xmalloc (len + 1);
9a619af0 20916
2e276125
JB
20917 memcpy (s, buf, len);
20918 s[len] = '\0';
2e276125
JB
20919 return s;
20920}
20921
20922
20923static const char *
20924consume_improper_spaces (const char *p, const char *body)
20925{
20926 if (*p == ' ')
20927 {
4d3c2250 20928 complaint (&symfile_complaints,
3e43a32a
MS
20929 _("macro definition contains spaces "
20930 "in formal argument list:\n`%s'"),
4d3c2250 20931 body);
2e276125
JB
20932
20933 while (*p == ' ')
20934 p++;
20935 }
20936
20937 return p;
20938}
20939
20940
20941static void
20942parse_macro_definition (struct macro_source_file *file, int line,
20943 const char *body)
20944{
20945 const char *p;
20946
20947 /* The body string takes one of two forms. For object-like macro
20948 definitions, it should be:
20949
20950 <macro name> " " <definition>
20951
20952 For function-like macro definitions, it should be:
20953
20954 <macro name> "() " <definition>
20955 or
20956 <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
20957
20958 Spaces may appear only where explicitly indicated, and in the
20959 <definition>.
20960
20961 The Dwarf 2 spec says that an object-like macro's name is always
20962 followed by a space, but versions of GCC around March 2002 omit
6e70227d 20963 the space when the macro's definition is the empty string.
2e276125
JB
20964
20965 The Dwarf 2 spec says that there should be no spaces between the
20966 formal arguments in a function-like macro's formal argument list,
20967 but versions of GCC around March 2002 include spaces after the
20968 commas. */
20969
20970
20971 /* Find the extent of the macro name. The macro name is terminated
20972 by either a space or null character (for an object-like macro) or
20973 an opening paren (for a function-like macro). */
20974 for (p = body; *p; p++)
20975 if (*p == ' ' || *p == '(')
20976 break;
20977
20978 if (*p == ' ' || *p == '\0')
20979 {
20980 /* It's an object-like macro. */
20981 int name_len = p - body;
20982 char *name = copy_string (body, name_len);
20983 const char *replacement;
20984
20985 if (*p == ' ')
20986 replacement = body + name_len + 1;
20987 else
20988 {
4d3c2250 20989 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
20990 replacement = body + name_len;
20991 }
6e70227d 20992
2e276125
JB
20993 macro_define_object (file, line, name, replacement);
20994
20995 xfree (name);
20996 }
20997 else if (*p == '(')
20998 {
20999 /* It's a function-like macro. */
21000 char *name = copy_string (body, p - body);
21001 int argc = 0;
21002 int argv_size = 1;
8d749320 21003 char **argv = XNEWVEC (char *, argv_size);
2e276125
JB
21004
21005 p++;
21006
21007 p = consume_improper_spaces (p, body);
21008
21009 /* Parse the formal argument list. */
21010 while (*p && *p != ')')
21011 {
21012 /* Find the extent of the current argument name. */
21013 const char *arg_start = p;
21014
21015 while (*p && *p != ',' && *p != ')' && *p != ' ')
21016 p++;
21017
21018 if (! *p || p == arg_start)
4d3c2250 21019 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21020 else
21021 {
21022 /* Make sure argv has room for the new argument. */
21023 if (argc >= argv_size)
21024 {
21025 argv_size *= 2;
21026 argv = xrealloc (argv, argv_size * sizeof (*argv));
21027 }
21028
21029 argv[argc++] = copy_string (arg_start, p - arg_start);
21030 }
21031
21032 p = consume_improper_spaces (p, body);
21033
21034 /* Consume the comma, if present. */
21035 if (*p == ',')
21036 {
21037 p++;
21038
21039 p = consume_improper_spaces (p, body);
21040 }
21041 }
21042
21043 if (*p == ')')
21044 {
21045 p++;
21046
21047 if (*p == ' ')
21048 /* Perfectly formed definition, no complaints. */
21049 macro_define_function (file, line, name,
6e70227d 21050 argc, (const char **) argv,
2e276125
JB
21051 p + 1);
21052 else if (*p == '\0')
21053 {
21054 /* Complain, but do define it. */
4d3c2250 21055 dwarf2_macro_malformed_definition_complaint (body);
2e276125 21056 macro_define_function (file, line, name,
6e70227d 21057 argc, (const char **) argv,
2e276125
JB
21058 p);
21059 }
21060 else
21061 /* Just complain. */
4d3c2250 21062 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21063 }
21064 else
21065 /* Just complain. */
4d3c2250 21066 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21067
21068 xfree (name);
21069 {
21070 int i;
21071
21072 for (i = 0; i < argc; i++)
21073 xfree (argv[i]);
21074 }
21075 xfree (argv);
21076 }
21077 else
4d3c2250 21078 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21079}
21080
cf2c3c16
TT
21081/* Skip some bytes from BYTES according to the form given in FORM.
21082 Returns the new pointer. */
2e276125 21083
d521ce57
TT
21084static const gdb_byte *
21085skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
cf2c3c16
TT
21086 enum dwarf_form form,
21087 unsigned int offset_size,
21088 struct dwarf2_section_info *section)
2e276125 21089{
cf2c3c16 21090 unsigned int bytes_read;
2e276125 21091
cf2c3c16 21092 switch (form)
2e276125 21093 {
cf2c3c16
TT
21094 case DW_FORM_data1:
21095 case DW_FORM_flag:
21096 ++bytes;
21097 break;
21098
21099 case DW_FORM_data2:
21100 bytes += 2;
21101 break;
21102
21103 case DW_FORM_data4:
21104 bytes += 4;
21105 break;
21106
21107 case DW_FORM_data8:
21108 bytes += 8;
21109 break;
21110
21111 case DW_FORM_string:
21112 read_direct_string (abfd, bytes, &bytes_read);
21113 bytes += bytes_read;
21114 break;
21115
21116 case DW_FORM_sec_offset:
21117 case DW_FORM_strp:
36586728 21118 case DW_FORM_GNU_strp_alt:
cf2c3c16
TT
21119 bytes += offset_size;
21120 break;
21121
21122 case DW_FORM_block:
21123 bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
21124 bytes += bytes_read;
21125 break;
21126
21127 case DW_FORM_block1:
21128 bytes += 1 + read_1_byte (abfd, bytes);
21129 break;
21130 case DW_FORM_block2:
21131 bytes += 2 + read_2_bytes (abfd, bytes);
21132 break;
21133 case DW_FORM_block4:
21134 bytes += 4 + read_4_bytes (abfd, bytes);
21135 break;
21136
21137 case DW_FORM_sdata:
21138 case DW_FORM_udata:
3019eac3
DE
21139 case DW_FORM_GNU_addr_index:
21140 case DW_FORM_GNU_str_index:
d521ce57 21141 bytes = gdb_skip_leb128 (bytes, buffer_end);
f664829e
DE
21142 if (bytes == NULL)
21143 {
21144 dwarf2_section_buffer_overflow_complaint (section);
21145 return NULL;
21146 }
cf2c3c16
TT
21147 break;
21148
21149 default:
21150 {
21151 complain:
21152 complaint (&symfile_complaints,
21153 _("invalid form 0x%x in `%s'"),
a32a8923 21154 form, get_section_name (section));
cf2c3c16
TT
21155 return NULL;
21156 }
2e276125
JB
21157 }
21158
cf2c3c16
TT
21159 return bytes;
21160}
757a13d0 21161
cf2c3c16
TT
21162/* A helper for dwarf_decode_macros that handles skipping an unknown
21163 opcode. Returns an updated pointer to the macro data buffer; or,
21164 on error, issues a complaint and returns NULL. */
757a13d0 21165
d521ce57 21166static const gdb_byte *
cf2c3c16 21167skip_unknown_opcode (unsigned int opcode,
d521ce57
TT
21168 const gdb_byte **opcode_definitions,
21169 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
cf2c3c16
TT
21170 bfd *abfd,
21171 unsigned int offset_size,
21172 struct dwarf2_section_info *section)
21173{
21174 unsigned int bytes_read, i;
21175 unsigned long arg;
d521ce57 21176 const gdb_byte *defn;
2e276125 21177
cf2c3c16 21178 if (opcode_definitions[opcode] == NULL)
2e276125 21179 {
cf2c3c16
TT
21180 complaint (&symfile_complaints,
21181 _("unrecognized DW_MACFINO opcode 0x%x"),
21182 opcode);
21183 return NULL;
21184 }
2e276125 21185
cf2c3c16
TT
21186 defn = opcode_definitions[opcode];
21187 arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
21188 defn += bytes_read;
2e276125 21189
cf2c3c16
TT
21190 for (i = 0; i < arg; ++i)
21191 {
aead7601
SM
21192 mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
21193 (enum dwarf_form) defn[i], offset_size,
f664829e 21194 section);
cf2c3c16
TT
21195 if (mac_ptr == NULL)
21196 {
21197 /* skip_form_bytes already issued the complaint. */
21198 return NULL;
21199 }
21200 }
757a13d0 21201
cf2c3c16
TT
21202 return mac_ptr;
21203}
757a13d0 21204
cf2c3c16
TT
21205/* A helper function which parses the header of a macro section.
21206 If the macro section is the extended (for now called "GNU") type,
21207 then this updates *OFFSET_SIZE. Returns a pointer to just after
21208 the header, or issues a complaint and returns NULL on error. */
757a13d0 21209
d521ce57
TT
21210static const gdb_byte *
21211dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
cf2c3c16 21212 bfd *abfd,
d521ce57 21213 const gdb_byte *mac_ptr,
cf2c3c16
TT
21214 unsigned int *offset_size,
21215 int section_is_gnu)
21216{
21217 memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
757a13d0 21218
cf2c3c16
TT
21219 if (section_is_gnu)
21220 {
21221 unsigned int version, flags;
757a13d0 21222
cf2c3c16
TT
21223 version = read_2_bytes (abfd, mac_ptr);
21224 if (version != 4)
21225 {
21226 complaint (&symfile_complaints,
21227 _("unrecognized version `%d' in .debug_macro section"),
21228 version);
21229 return NULL;
21230 }
21231 mac_ptr += 2;
757a13d0 21232
cf2c3c16
TT
21233 flags = read_1_byte (abfd, mac_ptr);
21234 ++mac_ptr;
21235 *offset_size = (flags & 1) ? 8 : 4;
757a13d0 21236
cf2c3c16
TT
21237 if ((flags & 2) != 0)
21238 /* We don't need the line table offset. */
21239 mac_ptr += *offset_size;
757a13d0 21240
cf2c3c16
TT
21241 /* Vendor opcode descriptions. */
21242 if ((flags & 4) != 0)
21243 {
21244 unsigned int i, count;
757a13d0 21245
cf2c3c16
TT
21246 count = read_1_byte (abfd, mac_ptr);
21247 ++mac_ptr;
21248 for (i = 0; i < count; ++i)
21249 {
21250 unsigned int opcode, bytes_read;
21251 unsigned long arg;
21252
21253 opcode = read_1_byte (abfd, mac_ptr);
21254 ++mac_ptr;
21255 opcode_definitions[opcode] = mac_ptr;
21256 arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21257 mac_ptr += bytes_read;
21258 mac_ptr += arg;
21259 }
757a13d0 21260 }
cf2c3c16 21261 }
757a13d0 21262
cf2c3c16
TT
21263 return mac_ptr;
21264}
757a13d0 21265
cf2c3c16 21266/* A helper for dwarf_decode_macros that handles the GNU extensions,
8fc3fc34 21267 including DW_MACRO_GNU_transparent_include. */
cf2c3c16
TT
21268
21269static void
d521ce57
TT
21270dwarf_decode_macro_bytes (bfd *abfd,
21271 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
cf2c3c16 21272 struct macro_source_file *current_file,
43f3e411 21273 struct line_header *lh,
cf2c3c16 21274 struct dwarf2_section_info *section,
36586728 21275 int section_is_gnu, int section_is_dwz,
cf2c3c16 21276 unsigned int offset_size,
8fc3fc34 21277 htab_t include_hash)
cf2c3c16 21278{
4d663531 21279 struct objfile *objfile = dwarf2_per_objfile->objfile;
cf2c3c16
TT
21280 enum dwarf_macro_record_type macinfo_type;
21281 int at_commandline;
d521ce57 21282 const gdb_byte *opcode_definitions[256];
757a13d0 21283
cf2c3c16
TT
21284 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21285 &offset_size, section_is_gnu);
21286 if (mac_ptr == NULL)
21287 {
21288 /* We already issued a complaint. */
21289 return;
21290 }
757a13d0
JK
21291
21292 /* Determines if GDB is still before first DW_MACINFO_start_file. If true
21293 GDB is still reading the definitions from command line. First
21294 DW_MACINFO_start_file will need to be ignored as it was already executed
21295 to create CURRENT_FILE for the main source holding also the command line
21296 definitions. On first met DW_MACINFO_start_file this flag is reset to
21297 normally execute all the remaining DW_MACINFO_start_file macinfos. */
21298
21299 at_commandline = 1;
21300
21301 do
21302 {
21303 /* Do we at least have room for a macinfo type byte? */
21304 if (mac_ptr >= mac_end)
21305 {
f664829e 21306 dwarf2_section_buffer_overflow_complaint (section);
757a13d0
JK
21307 break;
21308 }
21309
aead7601 21310 macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
757a13d0
JK
21311 mac_ptr++;
21312
cf2c3c16
TT
21313 /* Note that we rely on the fact that the corresponding GNU and
21314 DWARF constants are the same. */
757a13d0
JK
21315 switch (macinfo_type)
21316 {
21317 /* A zero macinfo type indicates the end of the macro
21318 information. */
21319 case 0:
21320 break;
2e276125 21321
cf2c3c16
TT
21322 case DW_MACRO_GNU_define:
21323 case DW_MACRO_GNU_undef:
21324 case DW_MACRO_GNU_define_indirect:
21325 case DW_MACRO_GNU_undef_indirect:
36586728
TT
21326 case DW_MACRO_GNU_define_indirect_alt:
21327 case DW_MACRO_GNU_undef_indirect_alt:
2e276125 21328 {
891d2f0b 21329 unsigned int bytes_read;
2e276125 21330 int line;
d521ce57 21331 const char *body;
cf2c3c16 21332 int is_define;
2e276125 21333
cf2c3c16
TT
21334 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21335 mac_ptr += bytes_read;
21336
21337 if (macinfo_type == DW_MACRO_GNU_define
21338 || macinfo_type == DW_MACRO_GNU_undef)
21339 {
21340 body = read_direct_string (abfd, mac_ptr, &bytes_read);
21341 mac_ptr += bytes_read;
21342 }
21343 else
21344 {
21345 LONGEST str_offset;
21346
21347 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
21348 mac_ptr += offset_size;
2e276125 21349
36586728 21350 if (macinfo_type == DW_MACRO_GNU_define_indirect_alt
f7a35f02
TT
21351 || macinfo_type == DW_MACRO_GNU_undef_indirect_alt
21352 || section_is_dwz)
36586728
TT
21353 {
21354 struct dwz_file *dwz = dwarf2_get_dwz_file ();
21355
21356 body = read_indirect_string_from_dwz (dwz, str_offset);
21357 }
21358 else
21359 body = read_indirect_string_at_offset (abfd, str_offset);
cf2c3c16
TT
21360 }
21361
21362 is_define = (macinfo_type == DW_MACRO_GNU_define
36586728
TT
21363 || macinfo_type == DW_MACRO_GNU_define_indirect
21364 || macinfo_type == DW_MACRO_GNU_define_indirect_alt);
2e276125 21365 if (! current_file)
757a13d0
JK
21366 {
21367 /* DWARF violation as no main source is present. */
21368 complaint (&symfile_complaints,
21369 _("debug info with no main source gives macro %s "
21370 "on line %d: %s"),
cf2c3c16
TT
21371 is_define ? _("definition") : _("undefinition"),
21372 line, body);
757a13d0
JK
21373 break;
21374 }
3e43a32a
MS
21375 if ((line == 0 && !at_commandline)
21376 || (line != 0 && at_commandline))
4d3c2250 21377 complaint (&symfile_complaints,
757a13d0
JK
21378 _("debug info gives %s macro %s with %s line %d: %s"),
21379 at_commandline ? _("command-line") : _("in-file"),
cf2c3c16 21380 is_define ? _("definition") : _("undefinition"),
757a13d0
JK
21381 line == 0 ? _("zero") : _("non-zero"), line, body);
21382
cf2c3c16 21383 if (is_define)
757a13d0 21384 parse_macro_definition (current_file, line, body);
cf2c3c16
TT
21385 else
21386 {
21387 gdb_assert (macinfo_type == DW_MACRO_GNU_undef
36586728
TT
21388 || macinfo_type == DW_MACRO_GNU_undef_indirect
21389 || macinfo_type == DW_MACRO_GNU_undef_indirect_alt);
cf2c3c16
TT
21390 macro_undef (current_file, line, body);
21391 }
2e276125
JB
21392 }
21393 break;
21394
cf2c3c16 21395 case DW_MACRO_GNU_start_file:
2e276125 21396 {
891d2f0b 21397 unsigned int bytes_read;
2e276125
JB
21398 int line, file;
21399
21400 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21401 mac_ptr += bytes_read;
21402 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21403 mac_ptr += bytes_read;
21404
3e43a32a
MS
21405 if ((line == 0 && !at_commandline)
21406 || (line != 0 && at_commandline))
757a13d0
JK
21407 complaint (&symfile_complaints,
21408 _("debug info gives source %d included "
21409 "from %s at %s line %d"),
21410 file, at_commandline ? _("command-line") : _("file"),
21411 line == 0 ? _("zero") : _("non-zero"), line);
21412
21413 if (at_commandline)
21414 {
cf2c3c16
TT
21415 /* This DW_MACRO_GNU_start_file was executed in the
21416 pass one. */
757a13d0
JK
21417 at_commandline = 0;
21418 }
21419 else
43f3e411 21420 current_file = macro_start_file (file, line, current_file, lh);
2e276125
JB
21421 }
21422 break;
21423
cf2c3c16 21424 case DW_MACRO_GNU_end_file:
2e276125 21425 if (! current_file)
4d3c2250 21426 complaint (&symfile_complaints,
3e43a32a
MS
21427 _("macro debug info has an unmatched "
21428 "`close_file' directive"));
2e276125
JB
21429 else
21430 {
21431 current_file = current_file->included_by;
21432 if (! current_file)
21433 {
cf2c3c16 21434 enum dwarf_macro_record_type next_type;
2e276125
JB
21435
21436 /* GCC circa March 2002 doesn't produce the zero
21437 type byte marking the end of the compilation
21438 unit. Complain if it's not there, but exit no
21439 matter what. */
21440
21441 /* Do we at least have room for a macinfo type byte? */
21442 if (mac_ptr >= mac_end)
21443 {
f664829e 21444 dwarf2_section_buffer_overflow_complaint (section);
2e276125
JB
21445 return;
21446 }
21447
21448 /* We don't increment mac_ptr here, so this is just
21449 a look-ahead. */
aead7601
SM
21450 next_type
21451 = (enum dwarf_macro_record_type) read_1_byte (abfd,
21452 mac_ptr);
2e276125 21453 if (next_type != 0)
4d3c2250 21454 complaint (&symfile_complaints,
3e43a32a
MS
21455 _("no terminating 0-type entry for "
21456 "macros in `.debug_macinfo' section"));
2e276125
JB
21457
21458 return;
21459 }
21460 }
21461 break;
21462
cf2c3c16 21463 case DW_MACRO_GNU_transparent_include:
36586728 21464 case DW_MACRO_GNU_transparent_include_alt:
cf2c3c16
TT
21465 {
21466 LONGEST offset;
8fc3fc34 21467 void **slot;
a036ba48
TT
21468 bfd *include_bfd = abfd;
21469 struct dwarf2_section_info *include_section = section;
21470 struct dwarf2_section_info alt_section;
d521ce57 21471 const gdb_byte *include_mac_end = mac_end;
a036ba48 21472 int is_dwz = section_is_dwz;
d521ce57 21473 const gdb_byte *new_mac_ptr;
cf2c3c16
TT
21474
21475 offset = read_offset_1 (abfd, mac_ptr, offset_size);
21476 mac_ptr += offset_size;
21477
a036ba48
TT
21478 if (macinfo_type == DW_MACRO_GNU_transparent_include_alt)
21479 {
21480 struct dwz_file *dwz = dwarf2_get_dwz_file ();
21481
4d663531 21482 dwarf2_read_section (objfile, &dwz->macro);
a036ba48 21483
a036ba48 21484 include_section = &dwz->macro;
a32a8923 21485 include_bfd = get_section_bfd_owner (include_section);
a036ba48
TT
21486 include_mac_end = dwz->macro.buffer + dwz->macro.size;
21487 is_dwz = 1;
21488 }
21489
21490 new_mac_ptr = include_section->buffer + offset;
21491 slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
21492
8fc3fc34
TT
21493 if (*slot != NULL)
21494 {
21495 /* This has actually happened; see
21496 http://sourceware.org/bugzilla/show_bug.cgi?id=13568. */
21497 complaint (&symfile_complaints,
21498 _("recursive DW_MACRO_GNU_transparent_include in "
21499 ".debug_macro section"));
21500 }
21501 else
21502 {
d521ce57 21503 *slot = (void *) new_mac_ptr;
36586728 21504
a036ba48 21505 dwarf_decode_macro_bytes (include_bfd, new_mac_ptr,
43f3e411 21506 include_mac_end, current_file, lh,
36586728 21507 section, section_is_gnu, is_dwz,
4d663531 21508 offset_size, include_hash);
8fc3fc34 21509
d521ce57 21510 htab_remove_elt (include_hash, (void *) new_mac_ptr);
8fc3fc34 21511 }
cf2c3c16
TT
21512 }
21513 break;
21514
2e276125 21515 case DW_MACINFO_vendor_ext:
cf2c3c16
TT
21516 if (!section_is_gnu)
21517 {
21518 unsigned int bytes_read;
21519 int constant;
2e276125 21520
cf2c3c16
TT
21521 constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21522 mac_ptr += bytes_read;
21523 read_direct_string (abfd, mac_ptr, &bytes_read);
21524 mac_ptr += bytes_read;
2e276125 21525
cf2c3c16
TT
21526 /* We don't recognize any vendor extensions. */
21527 break;
21528 }
21529 /* FALLTHROUGH */
21530
21531 default:
21532 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
f664829e 21533 mac_ptr, mac_end, abfd, offset_size,
cf2c3c16
TT
21534 section);
21535 if (mac_ptr == NULL)
21536 return;
21537 break;
2e276125 21538 }
757a13d0 21539 } while (macinfo_type != 0);
2e276125 21540}
8e19ed76 21541
cf2c3c16 21542static void
09262596 21543dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
43f3e411 21544 int section_is_gnu)
cf2c3c16 21545{
bb5ed363 21546 struct objfile *objfile = dwarf2_per_objfile->objfile;
09262596
DE
21547 struct line_header *lh = cu->line_header;
21548 bfd *abfd;
d521ce57 21549 const gdb_byte *mac_ptr, *mac_end;
cf2c3c16
TT
21550 struct macro_source_file *current_file = 0;
21551 enum dwarf_macro_record_type macinfo_type;
21552 unsigned int offset_size = cu->header.offset_size;
d521ce57 21553 const gdb_byte *opcode_definitions[256];
8fc3fc34
TT
21554 struct cleanup *cleanup;
21555 htab_t include_hash;
21556 void **slot;
09262596
DE
21557 struct dwarf2_section_info *section;
21558 const char *section_name;
21559
21560 if (cu->dwo_unit != NULL)
21561 {
21562 if (section_is_gnu)
21563 {
21564 section = &cu->dwo_unit->dwo_file->sections.macro;
21565 section_name = ".debug_macro.dwo";
21566 }
21567 else
21568 {
21569 section = &cu->dwo_unit->dwo_file->sections.macinfo;
21570 section_name = ".debug_macinfo.dwo";
21571 }
21572 }
21573 else
21574 {
21575 if (section_is_gnu)
21576 {
21577 section = &dwarf2_per_objfile->macro;
21578 section_name = ".debug_macro";
21579 }
21580 else
21581 {
21582 section = &dwarf2_per_objfile->macinfo;
21583 section_name = ".debug_macinfo";
21584 }
21585 }
cf2c3c16 21586
bb5ed363 21587 dwarf2_read_section (objfile, section);
cf2c3c16
TT
21588 if (section->buffer == NULL)
21589 {
fceca515 21590 complaint (&symfile_complaints, _("missing %s section"), section_name);
cf2c3c16
TT
21591 return;
21592 }
a32a8923 21593 abfd = get_section_bfd_owner (section);
cf2c3c16
TT
21594
21595 /* First pass: Find the name of the base filename.
21596 This filename is needed in order to process all macros whose definition
21597 (or undefinition) comes from the command line. These macros are defined
21598 before the first DW_MACINFO_start_file entry, and yet still need to be
21599 associated to the base file.
21600
21601 To determine the base file name, we scan the macro definitions until we
21602 reach the first DW_MACINFO_start_file entry. We then initialize
21603 CURRENT_FILE accordingly so that any macro definition found before the
21604 first DW_MACINFO_start_file can still be associated to the base file. */
21605
21606 mac_ptr = section->buffer + offset;
21607 mac_end = section->buffer + section->size;
21608
21609 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21610 &offset_size, section_is_gnu);
21611 if (mac_ptr == NULL)
21612 {
21613 /* We already issued a complaint. */
21614 return;
21615 }
21616
21617 do
21618 {
21619 /* Do we at least have room for a macinfo type byte? */
21620 if (mac_ptr >= mac_end)
21621 {
21622 /* Complaint is printed during the second pass as GDB will probably
21623 stop the first pass earlier upon finding
21624 DW_MACINFO_start_file. */
21625 break;
21626 }
21627
aead7601 21628 macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
cf2c3c16
TT
21629 mac_ptr++;
21630
21631 /* Note that we rely on the fact that the corresponding GNU and
21632 DWARF constants are the same. */
21633 switch (macinfo_type)
21634 {
21635 /* A zero macinfo type indicates the end of the macro
21636 information. */
21637 case 0:
21638 break;
21639
21640 case DW_MACRO_GNU_define:
21641 case DW_MACRO_GNU_undef:
21642 /* Only skip the data by MAC_PTR. */
21643 {
21644 unsigned int bytes_read;
21645
21646 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21647 mac_ptr += bytes_read;
21648 read_direct_string (abfd, mac_ptr, &bytes_read);
21649 mac_ptr += bytes_read;
21650 }
21651 break;
21652
21653 case DW_MACRO_GNU_start_file:
21654 {
21655 unsigned int bytes_read;
21656 int line, file;
21657
21658 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21659 mac_ptr += bytes_read;
21660 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21661 mac_ptr += bytes_read;
21662
43f3e411 21663 current_file = macro_start_file (file, line, current_file, lh);
cf2c3c16
TT
21664 }
21665 break;
21666
21667 case DW_MACRO_GNU_end_file:
21668 /* No data to skip by MAC_PTR. */
21669 break;
21670
21671 case DW_MACRO_GNU_define_indirect:
21672 case DW_MACRO_GNU_undef_indirect:
f7a35f02
TT
21673 case DW_MACRO_GNU_define_indirect_alt:
21674 case DW_MACRO_GNU_undef_indirect_alt:
cf2c3c16
TT
21675 {
21676 unsigned int bytes_read;
21677
21678 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21679 mac_ptr += bytes_read;
21680 mac_ptr += offset_size;
21681 }
21682 break;
21683
21684 case DW_MACRO_GNU_transparent_include:
f7a35f02 21685 case DW_MACRO_GNU_transparent_include_alt:
cf2c3c16
TT
21686 /* Note that, according to the spec, a transparent include
21687 chain cannot call DW_MACRO_GNU_start_file. So, we can just
21688 skip this opcode. */
21689 mac_ptr += offset_size;
21690 break;
21691
21692 case DW_MACINFO_vendor_ext:
21693 /* Only skip the data by MAC_PTR. */
21694 if (!section_is_gnu)
21695 {
21696 unsigned int bytes_read;
21697
21698 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21699 mac_ptr += bytes_read;
21700 read_direct_string (abfd, mac_ptr, &bytes_read);
21701 mac_ptr += bytes_read;
21702 }
21703 /* FALLTHROUGH */
21704
21705 default:
21706 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
f664829e 21707 mac_ptr, mac_end, abfd, offset_size,
cf2c3c16
TT
21708 section);
21709 if (mac_ptr == NULL)
21710 return;
21711 break;
21712 }
21713 } while (macinfo_type != 0 && current_file == NULL);
21714
21715 /* Second pass: Process all entries.
21716
21717 Use the AT_COMMAND_LINE flag to determine whether we are still processing
21718 command-line macro definitions/undefinitions. This flag is unset when we
21719 reach the first DW_MACINFO_start_file entry. */
21720
8fc3fc34
TT
21721 include_hash = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
21722 NULL, xcalloc, xfree);
21723 cleanup = make_cleanup_htab_delete (include_hash);
21724 mac_ptr = section->buffer + offset;
21725 slot = htab_find_slot (include_hash, mac_ptr, INSERT);
d521ce57 21726 *slot = (void *) mac_ptr;
8fc3fc34 21727 dwarf_decode_macro_bytes (abfd, mac_ptr, mac_end,
43f3e411 21728 current_file, lh, section,
4d663531 21729 section_is_gnu, 0, offset_size, include_hash);
8fc3fc34 21730 do_cleanups (cleanup);
cf2c3c16
TT
21731}
21732
8e19ed76 21733/* Check if the attribute's form is a DW_FORM_block*
0963b4bd 21734 if so return true else false. */
380bca97 21735
8e19ed76 21736static int
6e5a29e1 21737attr_form_is_block (const struct attribute *attr)
8e19ed76
PS
21738{
21739 return (attr == NULL ? 0 :
21740 attr->form == DW_FORM_block1
21741 || attr->form == DW_FORM_block2
21742 || attr->form == DW_FORM_block4
2dc7f7b3
TT
21743 || attr->form == DW_FORM_block
21744 || attr->form == DW_FORM_exprloc);
8e19ed76 21745}
4c2df51b 21746
c6a0999f
JB
21747/* Return non-zero if ATTR's value is a section offset --- classes
21748 lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
21749 You may use DW_UNSND (attr) to retrieve such offsets.
21750
21751 Section 7.5.4, "Attribute Encodings", explains that no attribute
21752 may have a value that belongs to more than one of these classes; it
21753 would be ambiguous if we did, because we use the same forms for all
21754 of them. */
380bca97 21755
3690dd37 21756static int
6e5a29e1 21757attr_form_is_section_offset (const struct attribute *attr)
3690dd37
JB
21758{
21759 return (attr->form == DW_FORM_data4
2dc7f7b3
TT
21760 || attr->form == DW_FORM_data8
21761 || attr->form == DW_FORM_sec_offset);
3690dd37
JB
21762}
21763
3690dd37
JB
21764/* Return non-zero if ATTR's value falls in the 'constant' class, or
21765 zero otherwise. When this function returns true, you can apply
21766 dwarf2_get_attr_constant_value to it.
21767
21768 However, note that for some attributes you must check
21769 attr_form_is_section_offset before using this test. DW_FORM_data4
21770 and DW_FORM_data8 are members of both the constant class, and of
21771 the classes that contain offsets into other debug sections
21772 (lineptr, loclistptr, macptr or rangelistptr). The DWARF spec says
21773 that, if an attribute's can be either a constant or one of the
21774 section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
21775 taken as section offsets, not constants. */
380bca97 21776
3690dd37 21777static int
6e5a29e1 21778attr_form_is_constant (const struct attribute *attr)
3690dd37
JB
21779{
21780 switch (attr->form)
21781 {
21782 case DW_FORM_sdata:
21783 case DW_FORM_udata:
21784 case DW_FORM_data1:
21785 case DW_FORM_data2:
21786 case DW_FORM_data4:
21787 case DW_FORM_data8:
21788 return 1;
21789 default:
21790 return 0;
21791 }
21792}
21793
7771576e
SA
21794
21795/* DW_ADDR is always stored already as sect_offset; despite for the forms
21796 besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file. */
21797
21798static int
6e5a29e1 21799attr_form_is_ref (const struct attribute *attr)
7771576e
SA
21800{
21801 switch (attr->form)
21802 {
21803 case DW_FORM_ref_addr:
21804 case DW_FORM_ref1:
21805 case DW_FORM_ref2:
21806 case DW_FORM_ref4:
21807 case DW_FORM_ref8:
21808 case DW_FORM_ref_udata:
21809 case DW_FORM_GNU_ref_alt:
21810 return 1;
21811 default:
21812 return 0;
21813 }
21814}
21815
3019eac3
DE
21816/* Return the .debug_loc section to use for CU.
21817 For DWO files use .debug_loc.dwo. */
21818
21819static struct dwarf2_section_info *
21820cu_debug_loc_section (struct dwarf2_cu *cu)
21821{
21822 if (cu->dwo_unit)
21823 return &cu->dwo_unit->dwo_file->sections.loc;
21824 return &dwarf2_per_objfile->loc;
21825}
21826
8cf6f0b1
TT
21827/* A helper function that fills in a dwarf2_loclist_baton. */
21828
21829static void
21830fill_in_loclist_baton (struct dwarf2_cu *cu,
21831 struct dwarf2_loclist_baton *baton,
ff39bb5e 21832 const struct attribute *attr)
8cf6f0b1 21833{
3019eac3
DE
21834 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
21835
21836 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
8cf6f0b1
TT
21837
21838 baton->per_cu = cu->per_cu;
21839 gdb_assert (baton->per_cu);
21840 /* We don't know how long the location list is, but make sure we
21841 don't run off the edge of the section. */
3019eac3
DE
21842 baton->size = section->size - DW_UNSND (attr);
21843 baton->data = section->buffer + DW_UNSND (attr);
8cf6f0b1 21844 baton->base_address = cu->base_address;
f664829e 21845 baton->from_dwo = cu->dwo_unit != NULL;
8cf6f0b1
TT
21846}
21847
4c2df51b 21848static void
ff39bb5e 21849dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
f1e6e072 21850 struct dwarf2_cu *cu, int is_block)
4c2df51b 21851{
bb5ed363 21852 struct objfile *objfile = dwarf2_per_objfile->objfile;
3019eac3 21853 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
bb5ed363 21854
3690dd37 21855 if (attr_form_is_section_offset (attr)
3019eac3 21856 /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
99bcc461
DJ
21857 the section. If so, fall through to the complaint in the
21858 other branch. */
3019eac3 21859 && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
4c2df51b 21860 {
0d53c4c4 21861 struct dwarf2_loclist_baton *baton;
4c2df51b 21862
8d749320 21863 baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
4c2df51b 21864
8cf6f0b1 21865 fill_in_loclist_baton (cu, baton, attr);
be391dca 21866
d00adf39 21867 if (cu->base_known == 0)
0d53c4c4 21868 complaint (&symfile_complaints,
3e43a32a
MS
21869 _("Location list used without "
21870 "specifying the CU base address."));
4c2df51b 21871
f1e6e072
TT
21872 SYMBOL_ACLASS_INDEX (sym) = (is_block
21873 ? dwarf2_loclist_block_index
21874 : dwarf2_loclist_index);
0d53c4c4
DJ
21875 SYMBOL_LOCATION_BATON (sym) = baton;
21876 }
21877 else
21878 {
21879 struct dwarf2_locexpr_baton *baton;
21880
8d749320 21881 baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
ae0d2f24
UW
21882 baton->per_cu = cu->per_cu;
21883 gdb_assert (baton->per_cu);
0d53c4c4
DJ
21884
21885 if (attr_form_is_block (attr))
21886 {
21887 /* Note that we're just copying the block's data pointer
21888 here, not the actual data. We're still pointing into the
6502dd73
DJ
21889 info_buffer for SYM's objfile; right now we never release
21890 that buffer, but when we do clean up properly this may
21891 need to change. */
0d53c4c4
DJ
21892 baton->size = DW_BLOCK (attr)->size;
21893 baton->data = DW_BLOCK (attr)->data;
21894 }
21895 else
21896 {
21897 dwarf2_invalid_attrib_class_complaint ("location description",
21898 SYMBOL_NATURAL_NAME (sym));
21899 baton->size = 0;
0d53c4c4 21900 }
6e70227d 21901
f1e6e072
TT
21902 SYMBOL_ACLASS_INDEX (sym) = (is_block
21903 ? dwarf2_locexpr_block_index
21904 : dwarf2_locexpr_index);
0d53c4c4
DJ
21905 SYMBOL_LOCATION_BATON (sym) = baton;
21906 }
4c2df51b 21907}
6502dd73 21908
9aa1f1e3
TT
21909/* Return the OBJFILE associated with the compilation unit CU. If CU
21910 came from a separate debuginfo file, then the master objfile is
21911 returned. */
ae0d2f24
UW
21912
21913struct objfile *
21914dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
21915{
9291a0cd 21916 struct objfile *objfile = per_cu->objfile;
ae0d2f24
UW
21917
21918 /* Return the master objfile, so that we can report and look up the
21919 correct file containing this variable. */
21920 if (objfile->separate_debug_objfile_backlink)
21921 objfile = objfile->separate_debug_objfile_backlink;
21922
21923 return objfile;
21924}
21925
96408a79
SA
21926/* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
21927 (CU_HEADERP is unused in such case) or prepare a temporary copy at
21928 CU_HEADERP first. */
21929
21930static const struct comp_unit_head *
21931per_cu_header_read_in (struct comp_unit_head *cu_headerp,
21932 struct dwarf2_per_cu_data *per_cu)
21933{
d521ce57 21934 const gdb_byte *info_ptr;
96408a79
SA
21935
21936 if (per_cu->cu)
21937 return &per_cu->cu->header;
21938
8a0459fd 21939 info_ptr = per_cu->section->buffer + per_cu->offset.sect_off;
96408a79
SA
21940
21941 memset (cu_headerp, 0, sizeof (*cu_headerp));
0bc3a05c 21942 read_comp_unit_head (cu_headerp, info_ptr, per_cu->objfile->obfd);
96408a79
SA
21943
21944 return cu_headerp;
21945}
21946
ae0d2f24
UW
21947/* Return the address size given in the compilation unit header for CU. */
21948
98714339 21949int
ae0d2f24
UW
21950dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
21951{
96408a79
SA
21952 struct comp_unit_head cu_header_local;
21953 const struct comp_unit_head *cu_headerp;
c471e790 21954
96408a79
SA
21955 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21956
21957 return cu_headerp->addr_size;
ae0d2f24
UW
21958}
21959
9eae7c52
TT
21960/* Return the offset size given in the compilation unit header for CU. */
21961
21962int
21963dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
21964{
96408a79
SA
21965 struct comp_unit_head cu_header_local;
21966 const struct comp_unit_head *cu_headerp;
9c6c53f7 21967
96408a79
SA
21968 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21969
21970 return cu_headerp->offset_size;
21971}
21972
21973/* See its dwarf2loc.h declaration. */
21974
21975int
21976dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
21977{
21978 struct comp_unit_head cu_header_local;
21979 const struct comp_unit_head *cu_headerp;
21980
21981 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21982
21983 if (cu_headerp->version == 2)
21984 return cu_headerp->addr_size;
21985 else
21986 return cu_headerp->offset_size;
181cebd4
JK
21987}
21988
9aa1f1e3
TT
21989/* Return the text offset of the CU. The returned offset comes from
21990 this CU's objfile. If this objfile came from a separate debuginfo
21991 file, then the offset may be different from the corresponding
21992 offset in the parent objfile. */
21993
21994CORE_ADDR
21995dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
21996{
bb3fa9d0 21997 struct objfile *objfile = per_cu->objfile;
9aa1f1e3
TT
21998
21999 return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
22000}
22001
348e048f
DE
22002/* Locate the .debug_info compilation unit from CU's objfile which contains
22003 the DIE at OFFSET. Raises an error on failure. */
ae038cb0
DJ
22004
22005static struct dwarf2_per_cu_data *
b64f50a1 22006dwarf2_find_containing_comp_unit (sect_offset offset,
36586728 22007 unsigned int offset_in_dwz,
ae038cb0
DJ
22008 struct objfile *objfile)
22009{
22010 struct dwarf2_per_cu_data *this_cu;
22011 int low, high;
36586728 22012 const sect_offset *cu_off;
ae038cb0 22013
ae038cb0
DJ
22014 low = 0;
22015 high = dwarf2_per_objfile->n_comp_units - 1;
22016 while (high > low)
22017 {
36586728 22018 struct dwarf2_per_cu_data *mid_cu;
ae038cb0 22019 int mid = low + (high - low) / 2;
9a619af0 22020
36586728
TT
22021 mid_cu = dwarf2_per_objfile->all_comp_units[mid];
22022 cu_off = &mid_cu->offset;
22023 if (mid_cu->is_dwz > offset_in_dwz
22024 || (mid_cu->is_dwz == offset_in_dwz
22025 && cu_off->sect_off >= offset.sect_off))
ae038cb0
DJ
22026 high = mid;
22027 else
22028 low = mid + 1;
22029 }
22030 gdb_assert (low == high);
36586728
TT
22031 this_cu = dwarf2_per_objfile->all_comp_units[low];
22032 cu_off = &this_cu->offset;
22033 if (this_cu->is_dwz != offset_in_dwz || cu_off->sect_off > offset.sect_off)
ae038cb0 22034 {
36586728 22035 if (low == 0 || this_cu->is_dwz != offset_in_dwz)
8a3fe4f8
AC
22036 error (_("Dwarf Error: could not find partial DIE containing "
22037 "offset 0x%lx [in module %s]"),
b64f50a1 22038 (long) offset.sect_off, bfd_get_filename (objfile->obfd));
10b3939b 22039
b64f50a1
JK
22040 gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset.sect_off
22041 <= offset.sect_off);
ae038cb0
DJ
22042 return dwarf2_per_objfile->all_comp_units[low-1];
22043 }
22044 else
22045 {
22046 this_cu = dwarf2_per_objfile->all_comp_units[low];
22047 if (low == dwarf2_per_objfile->n_comp_units - 1
b64f50a1
JK
22048 && offset.sect_off >= this_cu->offset.sect_off + this_cu->length)
22049 error (_("invalid dwarf2 offset %u"), offset.sect_off);
22050 gdb_assert (offset.sect_off < this_cu->offset.sect_off + this_cu->length);
ae038cb0
DJ
22051 return this_cu;
22052 }
22053}
22054
23745b47 22055/* Initialize dwarf2_cu CU, owned by PER_CU. */
93311388 22056
9816fde3 22057static void
23745b47 22058init_one_comp_unit (struct dwarf2_cu *cu, struct dwarf2_per_cu_data *per_cu)
93311388 22059{
9816fde3 22060 memset (cu, 0, sizeof (*cu));
23745b47
DE
22061 per_cu->cu = cu;
22062 cu->per_cu = per_cu;
22063 cu->objfile = per_cu->objfile;
93311388 22064 obstack_init (&cu->comp_unit_obstack);
9816fde3
JK
22065}
22066
22067/* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE. */
22068
22069static void
95554aad
TT
22070prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
22071 enum language pretend_language)
9816fde3
JK
22072{
22073 struct attribute *attr;
22074
22075 /* Set the language we're debugging. */
22076 attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
22077 if (attr)
22078 set_cu_language (DW_UNSND (attr), cu);
22079 else
9cded63f 22080 {
95554aad 22081 cu->language = pretend_language;
9cded63f
TT
22082 cu->language_defn = language_def (cu->language);
22083 }
dee91e82 22084
7d45c7c3 22085 cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
93311388
DE
22086}
22087
ae038cb0
DJ
22088/* Release one cached compilation unit, CU. We unlink it from the tree
22089 of compilation units, but we don't remove it from the read_in_chain;
93311388
DE
22090 the caller is responsible for that.
22091 NOTE: DATA is a void * because this function is also used as a
22092 cleanup routine. */
ae038cb0
DJ
22093
22094static void
68dc6402 22095free_heap_comp_unit (void *data)
ae038cb0
DJ
22096{
22097 struct dwarf2_cu *cu = data;
22098
23745b47
DE
22099 gdb_assert (cu->per_cu != NULL);
22100 cu->per_cu->cu = NULL;
ae038cb0
DJ
22101 cu->per_cu = NULL;
22102
22103 obstack_free (&cu->comp_unit_obstack, NULL);
22104
22105 xfree (cu);
22106}
22107
72bf9492 22108/* This cleanup function is passed the address of a dwarf2_cu on the stack
ae038cb0 22109 when we're finished with it. We can't free the pointer itself, but be
dee91e82 22110 sure to unlink it from the cache. Also release any associated storage. */
72bf9492
DJ
22111
22112static void
22113free_stack_comp_unit (void *data)
22114{
22115 struct dwarf2_cu *cu = data;
22116
23745b47
DE
22117 gdb_assert (cu->per_cu != NULL);
22118 cu->per_cu->cu = NULL;
22119 cu->per_cu = NULL;
22120
72bf9492
DJ
22121 obstack_free (&cu->comp_unit_obstack, NULL);
22122 cu->partial_dies = NULL;
ae038cb0
DJ
22123}
22124
22125/* Free all cached compilation units. */
22126
22127static void
22128free_cached_comp_units (void *data)
22129{
22130 struct dwarf2_per_cu_data *per_cu, **last_chain;
22131
22132 per_cu = dwarf2_per_objfile->read_in_chain;
22133 last_chain = &dwarf2_per_objfile->read_in_chain;
22134 while (per_cu != NULL)
22135 {
22136 struct dwarf2_per_cu_data *next_cu;
22137
22138 next_cu = per_cu->cu->read_in_chain;
22139
68dc6402 22140 free_heap_comp_unit (per_cu->cu);
ae038cb0
DJ
22141 *last_chain = next_cu;
22142
22143 per_cu = next_cu;
22144 }
22145}
22146
22147/* Increase the age counter on each cached compilation unit, and free
22148 any that are too old. */
22149
22150static void
22151age_cached_comp_units (void)
22152{
22153 struct dwarf2_per_cu_data *per_cu, **last_chain;
22154
22155 dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
22156 per_cu = dwarf2_per_objfile->read_in_chain;
22157 while (per_cu != NULL)
22158 {
22159 per_cu->cu->last_used ++;
b4f54984 22160 if (per_cu->cu->last_used <= dwarf_max_cache_age)
ae038cb0
DJ
22161 dwarf2_mark (per_cu->cu);
22162 per_cu = per_cu->cu->read_in_chain;
22163 }
22164
22165 per_cu = dwarf2_per_objfile->read_in_chain;
22166 last_chain = &dwarf2_per_objfile->read_in_chain;
22167 while (per_cu != NULL)
22168 {
22169 struct dwarf2_per_cu_data *next_cu;
22170
22171 next_cu = per_cu->cu->read_in_chain;
22172
22173 if (!per_cu->cu->mark)
22174 {
68dc6402 22175 free_heap_comp_unit (per_cu->cu);
ae038cb0
DJ
22176 *last_chain = next_cu;
22177 }
22178 else
22179 last_chain = &per_cu->cu->read_in_chain;
22180
22181 per_cu = next_cu;
22182 }
22183}
22184
22185/* Remove a single compilation unit from the cache. */
22186
22187static void
dee91e82 22188free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
ae038cb0
DJ
22189{
22190 struct dwarf2_per_cu_data *per_cu, **last_chain;
22191
22192 per_cu = dwarf2_per_objfile->read_in_chain;
22193 last_chain = &dwarf2_per_objfile->read_in_chain;
22194 while (per_cu != NULL)
22195 {
22196 struct dwarf2_per_cu_data *next_cu;
22197
22198 next_cu = per_cu->cu->read_in_chain;
22199
dee91e82 22200 if (per_cu == target_per_cu)
ae038cb0 22201 {
68dc6402 22202 free_heap_comp_unit (per_cu->cu);
dee91e82 22203 per_cu->cu = NULL;
ae038cb0
DJ
22204 *last_chain = next_cu;
22205 break;
22206 }
22207 else
22208 last_chain = &per_cu->cu->read_in_chain;
22209
22210 per_cu = next_cu;
22211 }
22212}
22213
fe3e1990
DJ
22214/* Release all extra memory associated with OBJFILE. */
22215
22216void
22217dwarf2_free_objfile (struct objfile *objfile)
22218{
22219 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
22220
22221 if (dwarf2_per_objfile == NULL)
22222 return;
22223
22224 /* Cached DIE trees use xmalloc and the comp_unit_obstack. */
22225 free_cached_comp_units (NULL);
22226
7b9f3c50
DE
22227 if (dwarf2_per_objfile->quick_file_names_table)
22228 htab_delete (dwarf2_per_objfile->quick_file_names_table);
9291a0cd 22229
527f3840
JK
22230 if (dwarf2_per_objfile->line_header_hash)
22231 htab_delete (dwarf2_per_objfile->line_header_hash);
22232
fe3e1990
DJ
22233 /* Everything else should be on the objfile obstack. */
22234}
22235
dee91e82
DE
22236/* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
22237 We store these in a hash table separate from the DIEs, and preserve them
22238 when the DIEs are flushed out of cache.
22239
22240 The CU "per_cu" pointer is needed because offset alone is not enough to
3019eac3 22241 uniquely identify the type. A file may have multiple .debug_types sections,
c88ee1f0
DE
22242 or the type may come from a DWO file. Furthermore, while it's more logical
22243 to use per_cu->section+offset, with Fission the section with the data is in
22244 the DWO file but we don't know that section at the point we need it.
22245 We have to use something in dwarf2_per_cu_data (or the pointer to it)
22246 because we can enter the lookup routine, get_die_type_at_offset, from
22247 outside this file, and thus won't necessarily have PER_CU->cu.
22248 Fortunately, PER_CU is stable for the life of the objfile. */
1c379e20 22249
dee91e82 22250struct dwarf2_per_cu_offset_and_type
1c379e20 22251{
dee91e82 22252 const struct dwarf2_per_cu_data *per_cu;
b64f50a1 22253 sect_offset offset;
1c379e20
DJ
22254 struct type *type;
22255};
22256
dee91e82 22257/* Hash function for a dwarf2_per_cu_offset_and_type. */
1c379e20
DJ
22258
22259static hashval_t
dee91e82 22260per_cu_offset_and_type_hash (const void *item)
1c379e20 22261{
dee91e82 22262 const struct dwarf2_per_cu_offset_and_type *ofs = item;
9a619af0 22263
dee91e82 22264 return (uintptr_t) ofs->per_cu + ofs->offset.sect_off;
1c379e20
DJ
22265}
22266
dee91e82 22267/* Equality function for a dwarf2_per_cu_offset_and_type. */
1c379e20
DJ
22268
22269static int
dee91e82 22270per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
1c379e20 22271{
dee91e82
DE
22272 const struct dwarf2_per_cu_offset_and_type *ofs_lhs = item_lhs;
22273 const struct dwarf2_per_cu_offset_and_type *ofs_rhs = item_rhs;
9a619af0 22274
dee91e82
DE
22275 return (ofs_lhs->per_cu == ofs_rhs->per_cu
22276 && ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off);
1c379e20
DJ
22277}
22278
22279/* Set the type associated with DIE to TYPE. Save it in CU's hash
7e314c57
JK
22280 table if necessary. For convenience, return TYPE.
22281
22282 The DIEs reading must have careful ordering to:
22283 * Not cause infite loops trying to read in DIEs as a prerequisite for
22284 reading current DIE.
22285 * Not trying to dereference contents of still incompletely read in types
22286 while reading in other DIEs.
22287 * Enable referencing still incompletely read in types just by a pointer to
22288 the type without accessing its fields.
22289
22290 Therefore caller should follow these rules:
22291 * Try to fetch any prerequisite types we may need to build this DIE type
22292 before building the type and calling set_die_type.
e71ec853 22293 * After building type call set_die_type for current DIE as soon as
7e314c57
JK
22294 possible before fetching more types to complete the current type.
22295 * Make the type as complete as possible before fetching more types. */
1c379e20 22296
f792889a 22297static struct type *
1c379e20
DJ
22298set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
22299{
dee91e82 22300 struct dwarf2_per_cu_offset_and_type **slot, ofs;
673bfd45 22301 struct objfile *objfile = cu->objfile;
3cdcd0ce
JB
22302 struct attribute *attr;
22303 struct dynamic_prop prop;
1c379e20 22304
b4ba55a1
JB
22305 /* For Ada types, make sure that the gnat-specific data is always
22306 initialized (if not already set). There are a few types where
22307 we should not be doing so, because the type-specific area is
22308 already used to hold some other piece of info (eg: TYPE_CODE_FLT
22309 where the type-specific area is used to store the floatformat).
22310 But this is not a problem, because the gnat-specific information
22311 is actually not needed for these types. */
22312 if (need_gnat_info (cu)
22313 && TYPE_CODE (type) != TYPE_CODE_FUNC
22314 && TYPE_CODE (type) != TYPE_CODE_FLT
09e2d7c7
DE
22315 && TYPE_CODE (type) != TYPE_CODE_METHODPTR
22316 && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
22317 && TYPE_CODE (type) != TYPE_CODE_METHOD
b4ba55a1
JB
22318 && !HAVE_GNAT_AUX_INFO (type))
22319 INIT_GNAT_SPECIFIC (type);
22320
3cdcd0ce
JB
22321 /* Read DW_AT_data_location and set in type. */
22322 attr = dwarf2_attr (die, DW_AT_data_location, cu);
22323 if (attr_to_dynamic_prop (attr, die, cu, &prop))
93a8e227 22324 add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type, objfile);
3cdcd0ce 22325
dee91e82 22326 if (dwarf2_per_objfile->die_type_hash == NULL)
f792889a 22327 {
dee91e82
DE
22328 dwarf2_per_objfile->die_type_hash =
22329 htab_create_alloc_ex (127,
22330 per_cu_offset_and_type_hash,
22331 per_cu_offset_and_type_eq,
22332 NULL,
22333 &objfile->objfile_obstack,
22334 hashtab_obstack_allocate,
22335 dummy_obstack_deallocate);
f792889a 22336 }
1c379e20 22337
dee91e82 22338 ofs.per_cu = cu->per_cu;
1c379e20
DJ
22339 ofs.offset = die->offset;
22340 ofs.type = type;
dee91e82
DE
22341 slot = (struct dwarf2_per_cu_offset_and_type **)
22342 htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
7e314c57
JK
22343 if (*slot)
22344 complaint (&symfile_complaints,
22345 _("A problem internal to GDB: DIE 0x%x has type already set"),
b64f50a1 22346 die->offset.sect_off);
8d749320
SM
22347 *slot = XOBNEW (&objfile->objfile_obstack,
22348 struct dwarf2_per_cu_offset_and_type);
1c379e20 22349 **slot = ofs;
f792889a 22350 return type;
1c379e20
DJ
22351}
22352
02142a6c
DE
22353/* Look up the type for the die at OFFSET in PER_CU in die_type_hash,
22354 or return NULL if the die does not have a saved type. */
1c379e20
DJ
22355
22356static struct type *
b64f50a1 22357get_die_type_at_offset (sect_offset offset,
673bfd45 22358 struct dwarf2_per_cu_data *per_cu)
1c379e20 22359{
dee91e82 22360 struct dwarf2_per_cu_offset_and_type *slot, ofs;
f792889a 22361
dee91e82 22362 if (dwarf2_per_objfile->die_type_hash == NULL)
f792889a 22363 return NULL;
1c379e20 22364
dee91e82 22365 ofs.per_cu = per_cu;
673bfd45 22366 ofs.offset = offset;
dee91e82 22367 slot = htab_find (dwarf2_per_objfile->die_type_hash, &ofs);
1c379e20
DJ
22368 if (slot)
22369 return slot->type;
22370 else
22371 return NULL;
22372}
22373
02142a6c 22374/* Look up the type for DIE in CU in die_type_hash,
673bfd45
DE
22375 or return NULL if DIE does not have a saved type. */
22376
22377static struct type *
22378get_die_type (struct die_info *die, struct dwarf2_cu *cu)
22379{
22380 return get_die_type_at_offset (die->offset, cu->per_cu);
22381}
22382
10b3939b
DJ
22383/* Add a dependence relationship from CU to REF_PER_CU. */
22384
22385static void
22386dwarf2_add_dependence (struct dwarf2_cu *cu,
22387 struct dwarf2_per_cu_data *ref_per_cu)
22388{
22389 void **slot;
22390
22391 if (cu->dependencies == NULL)
22392 cu->dependencies
22393 = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
22394 NULL, &cu->comp_unit_obstack,
22395 hashtab_obstack_allocate,
22396 dummy_obstack_deallocate);
22397
22398 slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
22399 if (*slot == NULL)
22400 *slot = ref_per_cu;
22401}
1c379e20 22402
f504f079
DE
22403/* Subroutine of dwarf2_mark to pass to htab_traverse.
22404 Set the mark field in every compilation unit in the
ae038cb0
DJ
22405 cache that we must keep because we are keeping CU. */
22406
10b3939b
DJ
22407static int
22408dwarf2_mark_helper (void **slot, void *data)
22409{
22410 struct dwarf2_per_cu_data *per_cu;
22411
22412 per_cu = (struct dwarf2_per_cu_data *) *slot;
d07ed419
JK
22413
22414 /* cu->dependencies references may not yet have been ever read if QUIT aborts
22415 reading of the chain. As such dependencies remain valid it is not much
22416 useful to track and undo them during QUIT cleanups. */
22417 if (per_cu->cu == NULL)
22418 return 1;
22419
10b3939b
DJ
22420 if (per_cu->cu->mark)
22421 return 1;
22422 per_cu->cu->mark = 1;
22423
22424 if (per_cu->cu->dependencies != NULL)
22425 htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
22426
22427 return 1;
22428}
22429
f504f079
DE
22430/* Set the mark field in CU and in every other compilation unit in the
22431 cache that we must keep because we are keeping CU. */
22432
ae038cb0
DJ
22433static void
22434dwarf2_mark (struct dwarf2_cu *cu)
22435{
22436 if (cu->mark)
22437 return;
22438 cu->mark = 1;
10b3939b
DJ
22439 if (cu->dependencies != NULL)
22440 htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
ae038cb0
DJ
22441}
22442
22443static void
22444dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
22445{
22446 while (per_cu)
22447 {
22448 per_cu->cu->mark = 0;
22449 per_cu = per_cu->cu->read_in_chain;
22450 }
72bf9492
DJ
22451}
22452
72bf9492
DJ
22453/* Trivial hash function for partial_die_info: the hash value of a DIE
22454 is its offset in .debug_info for this objfile. */
22455
22456static hashval_t
22457partial_die_hash (const void *item)
22458{
22459 const struct partial_die_info *part_die = item;
9a619af0 22460
b64f50a1 22461 return part_die->offset.sect_off;
72bf9492
DJ
22462}
22463
22464/* Trivial comparison function for partial_die_info structures: two DIEs
22465 are equal if they have the same offset. */
22466
22467static int
22468partial_die_eq (const void *item_lhs, const void *item_rhs)
22469{
22470 const struct partial_die_info *part_die_lhs = item_lhs;
22471 const struct partial_die_info *part_die_rhs = item_rhs;
9a619af0 22472
b64f50a1 22473 return part_die_lhs->offset.sect_off == part_die_rhs->offset.sect_off;
72bf9492
DJ
22474}
22475
b4f54984
DE
22476static struct cmd_list_element *set_dwarf_cmdlist;
22477static struct cmd_list_element *show_dwarf_cmdlist;
ae038cb0
DJ
22478
22479static void
b4f54984 22480set_dwarf_cmd (char *args, int from_tty)
ae038cb0 22481{
b4f54984 22482 help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
635c7e8a 22483 gdb_stdout);
ae038cb0
DJ
22484}
22485
22486static void
b4f54984 22487show_dwarf_cmd (char *args, int from_tty)
6e70227d 22488{
b4f54984 22489 cmd_show_list (show_dwarf_cmdlist, from_tty, "");
ae038cb0
DJ
22490}
22491
4bf44c1c 22492/* Free data associated with OBJFILE, if necessary. */
dce234bc
PP
22493
22494static void
c1bd65d0 22495dwarf2_per_objfile_free (struct objfile *objfile, void *d)
dce234bc
PP
22496{
22497 struct dwarf2_per_objfile *data = d;
8b70b953 22498 int ix;
8b70b953 22499
626f2d1c
TT
22500 /* Make sure we don't accidentally use dwarf2_per_objfile while
22501 cleaning up. */
22502 dwarf2_per_objfile = NULL;
22503
59b0c7c1
JB
22504 for (ix = 0; ix < data->n_comp_units; ++ix)
22505 VEC_free (dwarf2_per_cu_ptr, data->all_comp_units[ix]->imported_symtabs);
796a7ff8 22506
59b0c7c1 22507 for (ix = 0; ix < data->n_type_units; ++ix)
796a7ff8 22508 VEC_free (dwarf2_per_cu_ptr,
59b0c7c1
JB
22509 data->all_type_units[ix]->per_cu.imported_symtabs);
22510 xfree (data->all_type_units);
95554aad 22511
8b70b953 22512 VEC_free (dwarf2_section_info_def, data->types);
3019eac3
DE
22513
22514 if (data->dwo_files)
22515 free_dwo_files (data->dwo_files, objfile);
5c6fa7ab
DE
22516 if (data->dwp_file)
22517 gdb_bfd_unref (data->dwp_file->dbfd);
36586728
TT
22518
22519 if (data->dwz_file && data->dwz_file->dwz_bfd)
22520 gdb_bfd_unref (data->dwz_file->dwz_bfd);
9291a0cd
TT
22521}
22522
22523\f
ae2de4f8 22524/* The "save gdb-index" command. */
9291a0cd
TT
22525
22526/* The contents of the hash table we create when building the string
22527 table. */
22528struct strtab_entry
22529{
22530 offset_type offset;
22531 const char *str;
22532};
22533
559a7a62
JK
22534/* Hash function for a strtab_entry.
22535
22536 Function is used only during write_hash_table so no index format backward
22537 compatibility is needed. */
b89be57b 22538
9291a0cd
TT
22539static hashval_t
22540hash_strtab_entry (const void *e)
22541{
22542 const struct strtab_entry *entry = e;
559a7a62 22543 return mapped_index_string_hash (INT_MAX, entry->str);
9291a0cd
TT
22544}
22545
22546/* Equality function for a strtab_entry. */
b89be57b 22547
9291a0cd
TT
22548static int
22549eq_strtab_entry (const void *a, const void *b)
22550{
22551 const struct strtab_entry *ea = a;
22552 const struct strtab_entry *eb = b;
22553 return !strcmp (ea->str, eb->str);
22554}
22555
22556/* Create a strtab_entry hash table. */
b89be57b 22557
9291a0cd
TT
22558static htab_t
22559create_strtab (void)
22560{
22561 return htab_create_alloc (100, hash_strtab_entry, eq_strtab_entry,
22562 xfree, xcalloc, xfree);
22563}
22564
22565/* Add a string to the constant pool. Return the string's offset in
22566 host order. */
b89be57b 22567
9291a0cd
TT
22568static offset_type
22569add_string (htab_t table, struct obstack *cpool, const char *str)
22570{
22571 void **slot;
22572 struct strtab_entry entry;
22573 struct strtab_entry *result;
22574
22575 entry.str = str;
22576 slot = htab_find_slot (table, &entry, INSERT);
22577 if (*slot)
22578 result = *slot;
22579 else
22580 {
22581 result = XNEW (struct strtab_entry);
22582 result->offset = obstack_object_size (cpool);
22583 result->str = str;
22584 obstack_grow_str0 (cpool, str);
22585 *slot = result;
22586 }
22587 return result->offset;
22588}
22589
22590/* An entry in the symbol table. */
22591struct symtab_index_entry
22592{
22593 /* The name of the symbol. */
22594 const char *name;
22595 /* The offset of the name in the constant pool. */
22596 offset_type index_offset;
22597 /* A sorted vector of the indices of all the CUs that hold an object
22598 of this name. */
22599 VEC (offset_type) *cu_indices;
22600};
22601
22602/* The symbol table. This is a power-of-2-sized hash table. */
22603struct mapped_symtab
22604{
22605 offset_type n_elements;
22606 offset_type size;
22607 struct symtab_index_entry **data;
22608};
22609
22610/* Hash function for a symtab_index_entry. */
b89be57b 22611
9291a0cd
TT
22612static hashval_t
22613hash_symtab_entry (const void *e)
22614{
22615 const struct symtab_index_entry *entry = e;
22616 return iterative_hash (VEC_address (offset_type, entry->cu_indices),
22617 sizeof (offset_type) * VEC_length (offset_type,
22618 entry->cu_indices),
22619 0);
22620}
22621
22622/* Equality function for a symtab_index_entry. */
b89be57b 22623
9291a0cd
TT
22624static int
22625eq_symtab_entry (const void *a, const void *b)
22626{
22627 const struct symtab_index_entry *ea = a;
22628 const struct symtab_index_entry *eb = b;
22629 int len = VEC_length (offset_type, ea->cu_indices);
22630 if (len != VEC_length (offset_type, eb->cu_indices))
22631 return 0;
22632 return !memcmp (VEC_address (offset_type, ea->cu_indices),
22633 VEC_address (offset_type, eb->cu_indices),
22634 sizeof (offset_type) * len);
22635}
22636
22637/* Destroy a symtab_index_entry. */
b89be57b 22638
9291a0cd
TT
22639static void
22640delete_symtab_entry (void *p)
22641{
22642 struct symtab_index_entry *entry = p;
22643 VEC_free (offset_type, entry->cu_indices);
22644 xfree (entry);
22645}
22646
22647/* Create a hash table holding symtab_index_entry objects. */
b89be57b 22648
9291a0cd 22649static htab_t
3876f04e 22650create_symbol_hash_table (void)
9291a0cd
TT
22651{
22652 return htab_create_alloc (100, hash_symtab_entry, eq_symtab_entry,
22653 delete_symtab_entry, xcalloc, xfree);
22654}
22655
22656/* Create a new mapped symtab object. */
b89be57b 22657
9291a0cd
TT
22658static struct mapped_symtab *
22659create_mapped_symtab (void)
22660{
22661 struct mapped_symtab *symtab = XNEW (struct mapped_symtab);
22662 symtab->n_elements = 0;
22663 symtab->size = 1024;
22664 symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22665 return symtab;
22666}
22667
22668/* Destroy a mapped_symtab. */
b89be57b 22669
9291a0cd
TT
22670static void
22671cleanup_mapped_symtab (void *p)
22672{
22673 struct mapped_symtab *symtab = p;
22674 /* The contents of the array are freed when the other hash table is
22675 destroyed. */
22676 xfree (symtab->data);
22677 xfree (symtab);
22678}
22679
22680/* Find a slot in SYMTAB for the symbol NAME. Returns a pointer to
559a7a62
JK
22681 the slot.
22682
22683 Function is used only during write_hash_table so no index format backward
22684 compatibility is needed. */
b89be57b 22685
9291a0cd
TT
22686static struct symtab_index_entry **
22687find_slot (struct mapped_symtab *symtab, const char *name)
22688{
559a7a62 22689 offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
9291a0cd
TT
22690
22691 index = hash & (symtab->size - 1);
22692 step = ((hash * 17) & (symtab->size - 1)) | 1;
22693
22694 for (;;)
22695 {
22696 if (!symtab->data[index] || !strcmp (name, symtab->data[index]->name))
22697 return &symtab->data[index];
22698 index = (index + step) & (symtab->size - 1);
22699 }
22700}
22701
22702/* Expand SYMTAB's hash table. */
b89be57b 22703
9291a0cd
TT
22704static void
22705hash_expand (struct mapped_symtab *symtab)
22706{
22707 offset_type old_size = symtab->size;
22708 offset_type i;
22709 struct symtab_index_entry **old_entries = symtab->data;
22710
22711 symtab->size *= 2;
22712 symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22713
22714 for (i = 0; i < old_size; ++i)
22715 {
22716 if (old_entries[i])
22717 {
22718 struct symtab_index_entry **slot = find_slot (symtab,
22719 old_entries[i]->name);
22720 *slot = old_entries[i];
22721 }
22722 }
22723
22724 xfree (old_entries);
22725}
22726
156942c7
DE
22727/* Add an entry to SYMTAB. NAME is the name of the symbol.
22728 CU_INDEX is the index of the CU in which the symbol appears.
22729 IS_STATIC is one if the symbol is static, otherwise zero (global). */
b89be57b 22730
9291a0cd
TT
22731static void
22732add_index_entry (struct mapped_symtab *symtab, const char *name,
156942c7 22733 int is_static, gdb_index_symbol_kind kind,
9291a0cd
TT
22734 offset_type cu_index)
22735{
22736 struct symtab_index_entry **slot;
156942c7 22737 offset_type cu_index_and_attrs;
9291a0cd
TT
22738
22739 ++symtab->n_elements;
22740 if (4 * symtab->n_elements / 3 >= symtab->size)
22741 hash_expand (symtab);
22742
22743 slot = find_slot (symtab, name);
22744 if (!*slot)
22745 {
22746 *slot = XNEW (struct symtab_index_entry);
22747 (*slot)->name = name;
156942c7 22748 /* index_offset is set later. */
9291a0cd
TT
22749 (*slot)->cu_indices = NULL;
22750 }
156942c7
DE
22751
22752 cu_index_and_attrs = 0;
22753 DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
22754 DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
22755 DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
22756
22757 /* We don't want to record an index value twice as we want to avoid the
22758 duplication.
22759 We process all global symbols and then all static symbols
22760 (which would allow us to avoid the duplication by only having to check
22761 the last entry pushed), but a symbol could have multiple kinds in one CU.
22762 To keep things simple we don't worry about the duplication here and
22763 sort and uniqufy the list after we've processed all symbols. */
22764 VEC_safe_push (offset_type, (*slot)->cu_indices, cu_index_and_attrs);
22765}
22766
22767/* qsort helper routine for uniquify_cu_indices. */
22768
22769static int
22770offset_type_compare (const void *ap, const void *bp)
22771{
22772 offset_type a = *(offset_type *) ap;
22773 offset_type b = *(offset_type *) bp;
22774
22775 return (a > b) - (b > a);
22776}
22777
22778/* Sort and remove duplicates of all symbols' cu_indices lists. */
22779
22780static void
22781uniquify_cu_indices (struct mapped_symtab *symtab)
22782{
22783 int i;
22784
22785 for (i = 0; i < symtab->size; ++i)
22786 {
22787 struct symtab_index_entry *entry = symtab->data[i];
22788
22789 if (entry
22790 && entry->cu_indices != NULL)
22791 {
22792 unsigned int next_to_insert, next_to_check;
22793 offset_type last_value;
22794
22795 qsort (VEC_address (offset_type, entry->cu_indices),
22796 VEC_length (offset_type, entry->cu_indices),
22797 sizeof (offset_type), offset_type_compare);
22798
22799 last_value = VEC_index (offset_type, entry->cu_indices, 0);
22800 next_to_insert = 1;
22801 for (next_to_check = 1;
22802 next_to_check < VEC_length (offset_type, entry->cu_indices);
22803 ++next_to_check)
22804 {
22805 if (VEC_index (offset_type, entry->cu_indices, next_to_check)
22806 != last_value)
22807 {
22808 last_value = VEC_index (offset_type, entry->cu_indices,
22809 next_to_check);
22810 VEC_replace (offset_type, entry->cu_indices, next_to_insert,
22811 last_value);
22812 ++next_to_insert;
22813 }
22814 }
22815 VEC_truncate (offset_type, entry->cu_indices, next_to_insert);
22816 }
22817 }
9291a0cd
TT
22818}
22819
22820/* Add a vector of indices to the constant pool. */
b89be57b 22821
9291a0cd 22822static offset_type
3876f04e 22823add_indices_to_cpool (htab_t symbol_hash_table, struct obstack *cpool,
9291a0cd
TT
22824 struct symtab_index_entry *entry)
22825{
22826 void **slot;
22827
3876f04e 22828 slot = htab_find_slot (symbol_hash_table, entry, INSERT);
9291a0cd
TT
22829 if (!*slot)
22830 {
22831 offset_type len = VEC_length (offset_type, entry->cu_indices);
22832 offset_type val = MAYBE_SWAP (len);
22833 offset_type iter;
22834 int i;
22835
22836 *slot = entry;
22837 entry->index_offset = obstack_object_size (cpool);
22838
22839 obstack_grow (cpool, &val, sizeof (val));
22840 for (i = 0;
22841 VEC_iterate (offset_type, entry->cu_indices, i, iter);
22842 ++i)
22843 {
22844 val = MAYBE_SWAP (iter);
22845 obstack_grow (cpool, &val, sizeof (val));
22846 }
22847 }
22848 else
22849 {
22850 struct symtab_index_entry *old_entry = *slot;
22851 entry->index_offset = old_entry->index_offset;
22852 entry = old_entry;
22853 }
22854 return entry->index_offset;
22855}
22856
22857/* Write the mapped hash table SYMTAB to the obstack OUTPUT, with
22858 constant pool entries going into the obstack CPOOL. */
b89be57b 22859
9291a0cd
TT
22860static void
22861write_hash_table (struct mapped_symtab *symtab,
22862 struct obstack *output, struct obstack *cpool)
22863{
22864 offset_type i;
3876f04e 22865 htab_t symbol_hash_table;
9291a0cd
TT
22866 htab_t str_table;
22867
3876f04e 22868 symbol_hash_table = create_symbol_hash_table ();
9291a0cd 22869 str_table = create_strtab ();
3876f04e 22870
9291a0cd
TT
22871 /* We add all the index vectors to the constant pool first, to
22872 ensure alignment is ok. */
22873 for (i = 0; i < symtab->size; ++i)
22874 {
22875 if (symtab->data[i])
3876f04e 22876 add_indices_to_cpool (symbol_hash_table, cpool, symtab->data[i]);
9291a0cd
TT
22877 }
22878
22879 /* Now write out the hash table. */
22880 for (i = 0; i < symtab->size; ++i)
22881 {
22882 offset_type str_off, vec_off;
22883
22884 if (symtab->data[i])
22885 {
22886 str_off = add_string (str_table, cpool, symtab->data[i]->name);
22887 vec_off = symtab->data[i]->index_offset;
22888 }
22889 else
22890 {
22891 /* While 0 is a valid constant pool index, it is not valid
22892 to have 0 for both offsets. */
22893 str_off = 0;
22894 vec_off = 0;
22895 }
22896
22897 str_off = MAYBE_SWAP (str_off);
22898 vec_off = MAYBE_SWAP (vec_off);
22899
22900 obstack_grow (output, &str_off, sizeof (str_off));
22901 obstack_grow (output, &vec_off, sizeof (vec_off));
22902 }
22903
22904 htab_delete (str_table);
3876f04e 22905 htab_delete (symbol_hash_table);
9291a0cd
TT
22906}
22907
0a5429f6
DE
22908/* Struct to map psymtab to CU index in the index file. */
22909struct psymtab_cu_index_map
22910{
22911 struct partial_symtab *psymtab;
22912 unsigned int cu_index;
22913};
22914
22915static hashval_t
22916hash_psymtab_cu_index (const void *item)
22917{
22918 const struct psymtab_cu_index_map *map = item;
22919
22920 return htab_hash_pointer (map->psymtab);
22921}
22922
22923static int
22924eq_psymtab_cu_index (const void *item_lhs, const void *item_rhs)
22925{
22926 const struct psymtab_cu_index_map *lhs = item_lhs;
22927 const struct psymtab_cu_index_map *rhs = item_rhs;
22928
22929 return lhs->psymtab == rhs->psymtab;
22930}
22931
22932/* Helper struct for building the address table. */
22933struct addrmap_index_data
22934{
22935 struct objfile *objfile;
22936 struct obstack *addr_obstack;
22937 htab_t cu_index_htab;
22938
22939 /* Non-zero if the previous_* fields are valid.
22940 We can't write an entry until we see the next entry (since it is only then
22941 that we know the end of the entry). */
22942 int previous_valid;
22943 /* Index of the CU in the table of all CUs in the index file. */
22944 unsigned int previous_cu_index;
0963b4bd 22945 /* Start address of the CU. */
0a5429f6
DE
22946 CORE_ADDR previous_cu_start;
22947};
22948
22949/* Write an address entry to OBSTACK. */
b89be57b 22950
9291a0cd 22951static void
0a5429f6
DE
22952add_address_entry (struct objfile *objfile, struct obstack *obstack,
22953 CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
9291a0cd 22954{
0a5429f6 22955 offset_type cu_index_to_write;
948f8e3d 22956 gdb_byte addr[8];
9291a0cd
TT
22957 CORE_ADDR baseaddr;
22958
22959 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
22960
0a5429f6
DE
22961 store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, start - baseaddr);
22962 obstack_grow (obstack, addr, 8);
22963 store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, end - baseaddr);
22964 obstack_grow (obstack, addr, 8);
22965 cu_index_to_write = MAYBE_SWAP (cu_index);
22966 obstack_grow (obstack, &cu_index_to_write, sizeof (offset_type));
22967}
22968
22969/* Worker function for traversing an addrmap to build the address table. */
22970
22971static int
22972add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
22973{
22974 struct addrmap_index_data *data = datap;
22975 struct partial_symtab *pst = obj;
0a5429f6
DE
22976
22977 if (data->previous_valid)
22978 add_address_entry (data->objfile, data->addr_obstack,
22979 data->previous_cu_start, start_addr,
22980 data->previous_cu_index);
22981
22982 data->previous_cu_start = start_addr;
22983 if (pst != NULL)
22984 {
22985 struct psymtab_cu_index_map find_map, *map;
22986 find_map.psymtab = pst;
22987 map = htab_find (data->cu_index_htab, &find_map);
22988 gdb_assert (map != NULL);
22989 data->previous_cu_index = map->cu_index;
22990 data->previous_valid = 1;
22991 }
22992 else
22993 data->previous_valid = 0;
22994
22995 return 0;
22996}
22997
22998/* Write OBJFILE's address map to OBSTACK.
22999 CU_INDEX_HTAB is used to map addrmap entries to their CU indices
23000 in the index file. */
23001
23002static void
23003write_address_map (struct objfile *objfile, struct obstack *obstack,
23004 htab_t cu_index_htab)
23005{
23006 struct addrmap_index_data addrmap_index_data;
23007
23008 /* When writing the address table, we have to cope with the fact that
23009 the addrmap iterator only provides the start of a region; we have to
23010 wait until the next invocation to get the start of the next region. */
23011
23012 addrmap_index_data.objfile = objfile;
23013 addrmap_index_data.addr_obstack = obstack;
23014 addrmap_index_data.cu_index_htab = cu_index_htab;
23015 addrmap_index_data.previous_valid = 0;
23016
23017 addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
23018 &addrmap_index_data);
23019
23020 /* It's highly unlikely the last entry (end address = 0xff...ff)
23021 is valid, but we should still handle it.
23022 The end address is recorded as the start of the next region, but that
23023 doesn't work here. To cope we pass 0xff...ff, this is a rare situation
23024 anyway. */
23025 if (addrmap_index_data.previous_valid)
23026 add_address_entry (objfile, obstack,
23027 addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
23028 addrmap_index_data.previous_cu_index);
9291a0cd
TT
23029}
23030
156942c7
DE
23031/* Return the symbol kind of PSYM. */
23032
23033static gdb_index_symbol_kind
23034symbol_kind (struct partial_symbol *psym)
23035{
23036 domain_enum domain = PSYMBOL_DOMAIN (psym);
23037 enum address_class aclass = PSYMBOL_CLASS (psym);
23038
23039 switch (domain)
23040 {
23041 case VAR_DOMAIN:
23042 switch (aclass)
23043 {
23044 case LOC_BLOCK:
23045 return GDB_INDEX_SYMBOL_KIND_FUNCTION;
23046 case LOC_TYPEDEF:
23047 return GDB_INDEX_SYMBOL_KIND_TYPE;
23048 case LOC_COMPUTED:
23049 case LOC_CONST_BYTES:
23050 case LOC_OPTIMIZED_OUT:
23051 case LOC_STATIC:
23052 return GDB_INDEX_SYMBOL_KIND_VARIABLE;
23053 case LOC_CONST:
23054 /* Note: It's currently impossible to recognize psyms as enum values
23055 short of reading the type info. For now punt. */
23056 return GDB_INDEX_SYMBOL_KIND_VARIABLE;
23057 default:
23058 /* There are other LOC_FOO values that one might want to classify
23059 as variables, but dwarf2read.c doesn't currently use them. */
23060 return GDB_INDEX_SYMBOL_KIND_OTHER;
23061 }
23062 case STRUCT_DOMAIN:
23063 return GDB_INDEX_SYMBOL_KIND_TYPE;
23064 default:
23065 return GDB_INDEX_SYMBOL_KIND_OTHER;
23066 }
23067}
23068
9291a0cd 23069/* Add a list of partial symbols to SYMTAB. */
b89be57b 23070
9291a0cd
TT
23071static void
23072write_psymbols (struct mapped_symtab *symtab,
987d643c 23073 htab_t psyms_seen,
9291a0cd
TT
23074 struct partial_symbol **psymp,
23075 int count,
987d643c
TT
23076 offset_type cu_index,
23077 int is_static)
9291a0cd
TT
23078{
23079 for (; count-- > 0; ++psymp)
23080 {
156942c7
DE
23081 struct partial_symbol *psym = *psymp;
23082 void **slot;
987d643c 23083
156942c7 23084 if (SYMBOL_LANGUAGE (psym) == language_ada)
9291a0cd 23085 error (_("Ada is not currently supported by the index"));
987d643c 23086
987d643c 23087 /* Only add a given psymbol once. */
156942c7 23088 slot = htab_find_slot (psyms_seen, psym, INSERT);
987d643c
TT
23089 if (!*slot)
23090 {
156942c7
DE
23091 gdb_index_symbol_kind kind = symbol_kind (psym);
23092
23093 *slot = psym;
23094 add_index_entry (symtab, SYMBOL_SEARCH_NAME (psym),
23095 is_static, kind, cu_index);
987d643c 23096 }
9291a0cd
TT
23097 }
23098}
23099
23100/* Write the contents of an ("unfinished") obstack to FILE. Throw an
23101 exception if there is an error. */
b89be57b 23102
9291a0cd
TT
23103static void
23104write_obstack (FILE *file, struct obstack *obstack)
23105{
23106 if (fwrite (obstack_base (obstack), 1, obstack_object_size (obstack),
23107 file)
23108 != obstack_object_size (obstack))
23109 error (_("couldn't data write to file"));
23110}
23111
23112/* Unlink a file if the argument is not NULL. */
b89be57b 23113
9291a0cd
TT
23114static void
23115unlink_if_set (void *p)
23116{
23117 char **filename = p;
23118 if (*filename)
23119 unlink (*filename);
23120}
23121
1fd400ff
TT
23122/* A helper struct used when iterating over debug_types. */
23123struct signatured_type_index_data
23124{
23125 struct objfile *objfile;
23126 struct mapped_symtab *symtab;
23127 struct obstack *types_list;
987d643c 23128 htab_t psyms_seen;
1fd400ff
TT
23129 int cu_index;
23130};
23131
23132/* A helper function that writes a single signatured_type to an
23133 obstack. */
b89be57b 23134
1fd400ff
TT
23135static int
23136write_one_signatured_type (void **slot, void *d)
23137{
23138 struct signatured_type_index_data *info = d;
23139 struct signatured_type *entry = (struct signatured_type *) *slot;
0186c6a7 23140 struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
1fd400ff
TT
23141 gdb_byte val[8];
23142
23143 write_psymbols (info->symtab,
987d643c 23144 info->psyms_seen,
3e43a32a
MS
23145 info->objfile->global_psymbols.list
23146 + psymtab->globals_offset,
987d643c
TT
23147 psymtab->n_global_syms, info->cu_index,
23148 0);
1fd400ff 23149 write_psymbols (info->symtab,
987d643c 23150 info->psyms_seen,
3e43a32a
MS
23151 info->objfile->static_psymbols.list
23152 + psymtab->statics_offset,
987d643c
TT
23153 psymtab->n_static_syms, info->cu_index,
23154 1);
1fd400ff 23155
b64f50a1
JK
23156 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23157 entry->per_cu.offset.sect_off);
1fd400ff 23158 obstack_grow (info->types_list, val, 8);
3019eac3
DE
23159 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23160 entry->type_offset_in_tu.cu_off);
1fd400ff
TT
23161 obstack_grow (info->types_list, val, 8);
23162 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->signature);
23163 obstack_grow (info->types_list, val, 8);
23164
23165 ++info->cu_index;
23166
23167 return 1;
23168}
23169
95554aad
TT
23170/* Recurse into all "included" dependencies and write their symbols as
23171 if they appeared in this psymtab. */
23172
23173static void
23174recursively_write_psymbols (struct objfile *objfile,
23175 struct partial_symtab *psymtab,
23176 struct mapped_symtab *symtab,
23177 htab_t psyms_seen,
23178 offset_type cu_index)
23179{
23180 int i;
23181
23182 for (i = 0; i < psymtab->number_of_dependencies; ++i)
23183 if (psymtab->dependencies[i]->user != NULL)
23184 recursively_write_psymbols (objfile, psymtab->dependencies[i],
23185 symtab, psyms_seen, cu_index);
23186
23187 write_psymbols (symtab,
23188 psyms_seen,
23189 objfile->global_psymbols.list + psymtab->globals_offset,
23190 psymtab->n_global_syms, cu_index,
23191 0);
23192 write_psymbols (symtab,
23193 psyms_seen,
23194 objfile->static_psymbols.list + psymtab->statics_offset,
23195 psymtab->n_static_syms, cu_index,
23196 1);
23197}
23198
9291a0cd 23199/* Create an index file for OBJFILE in the directory DIR. */
b89be57b 23200
9291a0cd
TT
23201static void
23202write_psymtabs_to_index (struct objfile *objfile, const char *dir)
23203{
23204 struct cleanup *cleanup;
23205 char *filename, *cleanup_filename;
1fd400ff
TT
23206 struct obstack contents, addr_obstack, constant_pool, symtab_obstack;
23207 struct obstack cu_list, types_cu_list;
9291a0cd
TT
23208 int i;
23209 FILE *out_file;
23210 struct mapped_symtab *symtab;
23211 offset_type val, size_of_contents, total_len;
23212 struct stat st;
987d643c 23213 htab_t psyms_seen;
0a5429f6
DE
23214 htab_t cu_index_htab;
23215 struct psymtab_cu_index_map *psymtab_cu_index_map;
9291a0cd 23216
9291a0cd
TT
23217 if (dwarf2_per_objfile->using_index)
23218 error (_("Cannot use an index to create the index"));
23219
8b70b953
TT
23220 if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) > 1)
23221 error (_("Cannot make an index when the file has multiple .debug_types sections"));
23222
260b681b
DE
23223 if (!objfile->psymtabs || !objfile->psymtabs_addrmap)
23224 return;
23225
4262abfb
JK
23226 if (stat (objfile_name (objfile), &st) < 0)
23227 perror_with_name (objfile_name (objfile));
9291a0cd 23228
4262abfb 23229 filename = concat (dir, SLASH_STRING, lbasename (objfile_name (objfile)),
9291a0cd
TT
23230 INDEX_SUFFIX, (char *) NULL);
23231 cleanup = make_cleanup (xfree, filename);
23232
614c279d 23233 out_file = gdb_fopen_cloexec (filename, "wb");
9291a0cd
TT
23234 if (!out_file)
23235 error (_("Can't open `%s' for writing"), filename);
23236
23237 cleanup_filename = filename;
23238 make_cleanup (unlink_if_set, &cleanup_filename);
23239
23240 symtab = create_mapped_symtab ();
23241 make_cleanup (cleanup_mapped_symtab, symtab);
23242
23243 obstack_init (&addr_obstack);
23244 make_cleanup_obstack_free (&addr_obstack);
23245
23246 obstack_init (&cu_list);
23247 make_cleanup_obstack_free (&cu_list);
23248
1fd400ff
TT
23249 obstack_init (&types_cu_list);
23250 make_cleanup_obstack_free (&types_cu_list);
23251
987d643c
TT
23252 psyms_seen = htab_create_alloc (100, htab_hash_pointer, htab_eq_pointer,
23253 NULL, xcalloc, xfree);
96408a79 23254 make_cleanup_htab_delete (psyms_seen);
987d643c 23255
0a5429f6
DE
23256 /* While we're scanning CU's create a table that maps a psymtab pointer
23257 (which is what addrmap records) to its index (which is what is recorded
23258 in the index file). This will later be needed to write the address
23259 table. */
23260 cu_index_htab = htab_create_alloc (100,
23261 hash_psymtab_cu_index,
23262 eq_psymtab_cu_index,
23263 NULL, xcalloc, xfree);
96408a79 23264 make_cleanup_htab_delete (cu_index_htab);
8d749320
SM
23265 psymtab_cu_index_map = XNEWVEC (struct psymtab_cu_index_map,
23266 dwarf2_per_objfile->n_comp_units);
0a5429f6
DE
23267 make_cleanup (xfree, psymtab_cu_index_map);
23268
23269 /* The CU list is already sorted, so we don't need to do additional
1fd400ff
TT
23270 work here. Also, the debug_types entries do not appear in
23271 all_comp_units, but only in their own hash table. */
9291a0cd
TT
23272 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
23273 {
3e43a32a
MS
23274 struct dwarf2_per_cu_data *per_cu
23275 = dwarf2_per_objfile->all_comp_units[i];
e254ef6a 23276 struct partial_symtab *psymtab = per_cu->v.psymtab;
9291a0cd 23277 gdb_byte val[8];
0a5429f6
DE
23278 struct psymtab_cu_index_map *map;
23279 void **slot;
9291a0cd 23280
92fac807
JK
23281 /* CU of a shared file from 'dwz -m' may be unused by this main file.
23282 It may be referenced from a local scope but in such case it does not
23283 need to be present in .gdb_index. */
23284 if (psymtab == NULL)
23285 continue;
23286
95554aad
TT
23287 if (psymtab->user == NULL)
23288 recursively_write_psymbols (objfile, psymtab, symtab, psyms_seen, i);
9291a0cd 23289
0a5429f6
DE
23290 map = &psymtab_cu_index_map[i];
23291 map->psymtab = psymtab;
23292 map->cu_index = i;
23293 slot = htab_find_slot (cu_index_htab, map, INSERT);
23294 gdb_assert (slot != NULL);
23295 gdb_assert (*slot == NULL);
23296 *slot = map;
9291a0cd 23297
b64f50a1
JK
23298 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23299 per_cu->offset.sect_off);
9291a0cd 23300 obstack_grow (&cu_list, val, 8);
e254ef6a 23301 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, per_cu->length);
9291a0cd
TT
23302 obstack_grow (&cu_list, val, 8);
23303 }
23304
0a5429f6
DE
23305 /* Dump the address map. */
23306 write_address_map (objfile, &addr_obstack, cu_index_htab);
23307
1fd400ff
TT
23308 /* Write out the .debug_type entries, if any. */
23309 if (dwarf2_per_objfile->signatured_types)
23310 {
23311 struct signatured_type_index_data sig_data;
23312
23313 sig_data.objfile = objfile;
23314 sig_data.symtab = symtab;
23315 sig_data.types_list = &types_cu_list;
987d643c 23316 sig_data.psyms_seen = psyms_seen;
1fd400ff
TT
23317 sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
23318 htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
23319 write_one_signatured_type, &sig_data);
23320 }
23321
156942c7
DE
23322 /* Now that we've processed all symbols we can shrink their cu_indices
23323 lists. */
23324 uniquify_cu_indices (symtab);
23325
9291a0cd
TT
23326 obstack_init (&constant_pool);
23327 make_cleanup_obstack_free (&constant_pool);
23328 obstack_init (&symtab_obstack);
23329 make_cleanup_obstack_free (&symtab_obstack);
23330 write_hash_table (symtab, &symtab_obstack, &constant_pool);
23331
23332 obstack_init (&contents);
23333 make_cleanup_obstack_free (&contents);
1fd400ff 23334 size_of_contents = 6 * sizeof (offset_type);
9291a0cd
TT
23335 total_len = size_of_contents;
23336
23337 /* The version number. */
796a7ff8 23338 val = MAYBE_SWAP (8);
9291a0cd
TT
23339 obstack_grow (&contents, &val, sizeof (val));
23340
23341 /* The offset of the CU list from the start of the file. */
23342 val = MAYBE_SWAP (total_len);
23343 obstack_grow (&contents, &val, sizeof (val));
23344 total_len += obstack_object_size (&cu_list);
23345
1fd400ff
TT
23346 /* The offset of the types CU list from the start of the file. */
23347 val = MAYBE_SWAP (total_len);
23348 obstack_grow (&contents, &val, sizeof (val));
23349 total_len += obstack_object_size (&types_cu_list);
23350
9291a0cd
TT
23351 /* The offset of the address table from the start of the file. */
23352 val = MAYBE_SWAP (total_len);
23353 obstack_grow (&contents, &val, sizeof (val));
23354 total_len += obstack_object_size (&addr_obstack);
23355
23356 /* The offset of the symbol table from the start of the file. */
23357 val = MAYBE_SWAP (total_len);
23358 obstack_grow (&contents, &val, sizeof (val));
23359 total_len += obstack_object_size (&symtab_obstack);
23360
23361 /* The offset of the constant pool from the start of the file. */
23362 val = MAYBE_SWAP (total_len);
23363 obstack_grow (&contents, &val, sizeof (val));
23364 total_len += obstack_object_size (&constant_pool);
23365
23366 gdb_assert (obstack_object_size (&contents) == size_of_contents);
23367
23368 write_obstack (out_file, &contents);
23369 write_obstack (out_file, &cu_list);
1fd400ff 23370 write_obstack (out_file, &types_cu_list);
9291a0cd
TT
23371 write_obstack (out_file, &addr_obstack);
23372 write_obstack (out_file, &symtab_obstack);
23373 write_obstack (out_file, &constant_pool);
23374
23375 fclose (out_file);
23376
23377 /* We want to keep the file, so we set cleanup_filename to NULL
23378 here. See unlink_if_set. */
23379 cleanup_filename = NULL;
23380
23381 do_cleanups (cleanup);
23382}
23383
90476074
TT
23384/* Implementation of the `save gdb-index' command.
23385
23386 Note that the file format used by this command is documented in the
23387 GDB manual. Any changes here must be documented there. */
11570e71 23388
9291a0cd
TT
23389static void
23390save_gdb_index_command (char *arg, int from_tty)
23391{
23392 struct objfile *objfile;
23393
23394 if (!arg || !*arg)
96d19272 23395 error (_("usage: save gdb-index DIRECTORY"));
9291a0cd
TT
23396
23397 ALL_OBJFILES (objfile)
23398 {
23399 struct stat st;
23400
23401 /* If the objfile does not correspond to an actual file, skip it. */
4262abfb 23402 if (stat (objfile_name (objfile), &st) < 0)
9291a0cd
TT
23403 continue;
23404
23405 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
23406 if (dwarf2_per_objfile)
23407 {
9291a0cd 23408
492d29ea 23409 TRY
9291a0cd
TT
23410 {
23411 write_psymtabs_to_index (objfile, arg);
23412 }
492d29ea
PA
23413 CATCH (except, RETURN_MASK_ERROR)
23414 {
23415 exception_fprintf (gdb_stderr, except,
23416 _("Error while writing index for `%s': "),
23417 objfile_name (objfile));
23418 }
23419 END_CATCH
9291a0cd
TT
23420 }
23421 }
dce234bc
PP
23422}
23423
9291a0cd
TT
23424\f
23425
b4f54984 23426int dwarf_always_disassemble;
9eae7c52
TT
23427
23428static void
b4f54984
DE
23429show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
23430 struct cmd_list_element *c, const char *value)
9eae7c52 23431{
3e43a32a
MS
23432 fprintf_filtered (file,
23433 _("Whether to always disassemble "
23434 "DWARF expressions is %s.\n"),
9eae7c52
TT
23435 value);
23436}
23437
900e11f9
JK
23438static void
23439show_check_physname (struct ui_file *file, int from_tty,
23440 struct cmd_list_element *c, const char *value)
23441{
23442 fprintf_filtered (file,
23443 _("Whether to check \"physname\" is %s.\n"),
23444 value);
23445}
23446
6502dd73
DJ
23447void _initialize_dwarf2_read (void);
23448
23449void
23450_initialize_dwarf2_read (void)
23451{
96d19272
JK
23452 struct cmd_list_element *c;
23453
dce234bc 23454 dwarf2_objfile_data_key
c1bd65d0 23455 = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
ae038cb0 23456
b4f54984
DE
23457 add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
23458Set DWARF specific variables.\n\
23459Configure DWARF variables such as the cache size"),
23460 &set_dwarf_cmdlist, "maintenance set dwarf ",
ae038cb0
DJ
23461 0/*allow-unknown*/, &maintenance_set_cmdlist);
23462
b4f54984
DE
23463 add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
23464Show DWARF specific variables\n\
23465Show DWARF variables such as the cache size"),
23466 &show_dwarf_cmdlist, "maintenance show dwarf ",
ae038cb0
DJ
23467 0/*allow-unknown*/, &maintenance_show_cmdlist);
23468
23469 add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
b4f54984
DE
23470 &dwarf_max_cache_age, _("\
23471Set the upper bound on the age of cached DWARF compilation units."), _("\
23472Show the upper bound on the age of cached DWARF compilation units."), _("\
7915a72c
AC
23473A higher limit means that cached compilation units will be stored\n\
23474in memory longer, and more total memory will be used. Zero disables\n\
23475caching, which can slow down startup."),
2c5b56ce 23476 NULL,
b4f54984
DE
23477 show_dwarf_max_cache_age,
23478 &set_dwarf_cmdlist,
23479 &show_dwarf_cmdlist);
d97bc12b 23480
9eae7c52 23481 add_setshow_boolean_cmd ("always-disassemble", class_obscure,
b4f54984 23482 &dwarf_always_disassemble, _("\
9eae7c52
TT
23483Set whether `info address' always disassembles DWARF expressions."), _("\
23484Show whether `info address' always disassembles DWARF expressions."), _("\
23485When enabled, DWARF expressions are always printed in an assembly-like\n\
23486syntax. When disabled, expressions will be printed in a more\n\
23487conversational style, when possible."),
23488 NULL,
b4f54984
DE
23489 show_dwarf_always_disassemble,
23490 &set_dwarf_cmdlist,
23491 &show_dwarf_cmdlist);
23492
23493 add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
23494Set debugging of the DWARF reader."), _("\
23495Show debugging of the DWARF reader."), _("\
23496When enabled (non-zero), debugging messages are printed during DWARF\n\
73be47f5
DE
23497reading and symtab expansion. A value of 1 (one) provides basic\n\
23498information. A value greater than 1 provides more verbose information."),
45cfd468
DE
23499 NULL,
23500 NULL,
23501 &setdebuglist, &showdebuglist);
23502
b4f54984
DE
23503 add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
23504Set debugging of the DWARF DIE reader."), _("\
23505Show debugging of the DWARF DIE reader."), _("\
d97bc12b
DE
23506When enabled (non-zero), DIEs are dumped after they are read in.\n\
23507The value is the maximum depth to print."),
ccce17b0
YQ
23508 NULL,
23509 NULL,
23510 &setdebuglist, &showdebuglist);
9291a0cd 23511
27e0867f
DE
23512 add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
23513Set debugging of the dwarf line reader."), _("\
23514Show debugging of the dwarf line reader."), _("\
23515When enabled (non-zero), line number entries are dumped as they are read in.\n\
23516A value of 1 (one) provides basic information.\n\
23517A value greater than 1 provides more verbose information."),
23518 NULL,
23519 NULL,
23520 &setdebuglist, &showdebuglist);
23521
900e11f9
JK
23522 add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
23523Set cross-checking of \"physname\" code against demangler."), _("\
23524Show cross-checking of \"physname\" code against demangler."), _("\
23525When enabled, GDB's internal \"physname\" code is checked against\n\
23526the demangler."),
23527 NULL, show_check_physname,
23528 &setdebuglist, &showdebuglist);
23529
e615022a
DE
23530 add_setshow_boolean_cmd ("use-deprecated-index-sections",
23531 no_class, &use_deprecated_index_sections, _("\
23532Set whether to use deprecated gdb_index sections."), _("\
23533Show whether to use deprecated gdb_index sections."), _("\
23534When enabled, deprecated .gdb_index sections are used anyway.\n\
23535Normally they are ignored either because of a missing feature or\n\
23536performance issue.\n\
23537Warning: This option must be enabled before gdb reads the file."),
23538 NULL,
23539 NULL,
23540 &setlist, &showlist);
23541
96d19272 23542 c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
11570e71 23543 _("\
fc1a9d6e 23544Save a gdb-index file.\n\
11570e71 23545Usage: save gdb-index DIRECTORY"),
96d19272
JK
23546 &save_cmdlist);
23547 set_cmd_completer (c, filename_completer);
f1e6e072
TT
23548
23549 dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
23550 &dwarf2_locexpr_funcs);
23551 dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
23552 &dwarf2_loclist_funcs);
23553
23554 dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
23555 &dwarf2_block_frame_base_locexpr_funcs);
23556 dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
23557 &dwarf2_block_frame_base_loclist_funcs);
6502dd73 23558}
This page took 3.475155 seconds and 4 git commands to generate.