Check dp->prefix_requirement instead
[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"
4c2df51b 72
c906108c 73#include <fcntl.h>
c906108c 74#include <sys/types.h>
d8151005 75
34eaf542
TT
76typedef struct symbol *symbolp;
77DEF_VEC_P (symbolp);
78
73be47f5
DE
79/* When == 1, print basic high level tracing messages.
80 When > 1, be more verbose.
45cfd468 81 This is in contrast to the low level DIE reading of dwarf2_die_debug. */
73be47f5 82static unsigned int dwarf2_read_debug = 0;
45cfd468 83
d97bc12b 84/* When non-zero, dump DIEs after they are read in. */
ccce17b0 85static unsigned int dwarf2_die_debug = 0;
d97bc12b 86
900e11f9
JK
87/* When non-zero, cross-check physname against demangler. */
88static int check_physname = 0;
89
481860b3 90/* When non-zero, do not reject deprecated .gdb_index sections. */
e615022a 91static int use_deprecated_index_sections = 0;
481860b3 92
6502dd73
DJ
93static const struct objfile_data *dwarf2_objfile_data_key;
94
f1e6e072
TT
95/* The "aclass" indices for various kinds of computed DWARF symbols. */
96
97static int dwarf2_locexpr_index;
98static int dwarf2_loclist_index;
99static int dwarf2_locexpr_block_index;
100static int dwarf2_loclist_block_index;
101
73869dc2
DE
102/* A descriptor for dwarf sections.
103
104 S.ASECTION, SIZE are typically initialized when the objfile is first
105 scanned. BUFFER, READIN are filled in later when the section is read.
106 If the section contained compressed data then SIZE is updated to record
107 the uncompressed size of the section.
108
109 DWP file format V2 introduces a wrinkle that is easiest to handle by
110 creating the concept of virtual sections contained within a real section.
111 In DWP V2 the sections of the input DWO files are concatenated together
112 into one section, but section offsets are kept relative to the original
113 input section.
114 If this is a virtual dwp-v2 section, S.CONTAINING_SECTION is a backlink to
115 the real section this "virtual" section is contained in, and BUFFER,SIZE
116 describe the virtual section. */
117
dce234bc
PP
118struct dwarf2_section_info
119{
73869dc2
DE
120 union
121 {
e5aa3347 122 /* If this is a real section, the bfd section. */
73869dc2
DE
123 asection *asection;
124 /* If this is a virtual section, pointer to the containing ("real")
e5aa3347 125 section. */
73869dc2
DE
126 struct dwarf2_section_info *containing_section;
127 } s;
19ac8c2e 128 /* Pointer to section data, only valid if readin. */
d521ce57 129 const gdb_byte *buffer;
73869dc2 130 /* The size of the section, real or virtual. */
dce234bc 131 bfd_size_type size;
73869dc2
DE
132 /* If this is a virtual section, the offset in the real section.
133 Only valid if is_virtual. */
134 bfd_size_type virtual_offset;
be391dca 135 /* True if we have tried to read this section. */
73869dc2
DE
136 char readin;
137 /* True if this is a virtual section, False otherwise.
138 This specifies which of s.asection and s.containing_section to use. */
139 char is_virtual;
dce234bc
PP
140};
141
8b70b953
TT
142typedef struct dwarf2_section_info dwarf2_section_info_def;
143DEF_VEC_O (dwarf2_section_info_def);
144
9291a0cd
TT
145/* All offsets in the index are of this type. It must be
146 architecture-independent. */
147typedef uint32_t offset_type;
148
149DEF_VEC_I (offset_type);
150
156942c7
DE
151/* Ensure only legit values are used. */
152#define DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE(cu_index, value) \
153 do { \
154 gdb_assert ((unsigned int) (value) <= 1); \
155 GDB_INDEX_SYMBOL_STATIC_SET_VALUE((cu_index), (value)); \
156 } while (0)
157
158/* Ensure only legit values are used. */
159#define DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE(cu_index, value) \
160 do { \
161 gdb_assert ((value) >= GDB_INDEX_SYMBOL_KIND_TYPE \
162 && (value) <= GDB_INDEX_SYMBOL_KIND_OTHER); \
163 GDB_INDEX_SYMBOL_KIND_SET_VALUE((cu_index), (value)); \
164 } while (0)
165
166/* Ensure we don't use more than the alloted nuber of bits for the CU. */
167#define DW2_GDB_INDEX_CU_SET_VALUE(cu_index, value) \
168 do { \
169 gdb_assert (((value) & ~GDB_INDEX_CU_MASK) == 0); \
170 GDB_INDEX_CU_SET_VALUE((cu_index), (value)); \
171 } while (0)
172
9291a0cd
TT
173/* A description of the mapped index. The file format is described in
174 a comment by the code that writes the index. */
175struct mapped_index
176{
559a7a62
JK
177 /* Index data format version. */
178 int version;
179
9291a0cd
TT
180 /* The total length of the buffer. */
181 off_t total_size;
b11b1f88 182
9291a0cd
TT
183 /* A pointer to the address table data. */
184 const gdb_byte *address_table;
b11b1f88 185
9291a0cd
TT
186 /* Size of the address table data in bytes. */
187 offset_type address_table_size;
b11b1f88 188
3876f04e
DE
189 /* The symbol table, implemented as a hash table. */
190 const offset_type *symbol_table;
b11b1f88 191
9291a0cd 192 /* Size in slots, each slot is 2 offset_types. */
3876f04e 193 offset_type symbol_table_slots;
b11b1f88 194
9291a0cd
TT
195 /* A pointer to the constant pool. */
196 const char *constant_pool;
197};
198
95554aad
TT
199typedef struct dwarf2_per_cu_data *dwarf2_per_cu_ptr;
200DEF_VEC_P (dwarf2_per_cu_ptr);
201
52059ffd
TT
202struct tu_stats
203{
204 int nr_uniq_abbrev_tables;
205 int nr_symtabs;
206 int nr_symtab_sharers;
207 int nr_stmt_less_type_units;
208 int nr_all_type_units_reallocs;
209};
210
9cdd5dbd
DE
211/* Collection of data recorded per objfile.
212 This hangs off of dwarf2_objfile_data_key. */
213
6502dd73
DJ
214struct dwarf2_per_objfile
215{
dce234bc
PP
216 struct dwarf2_section_info info;
217 struct dwarf2_section_info abbrev;
218 struct dwarf2_section_info line;
dce234bc
PP
219 struct dwarf2_section_info loc;
220 struct dwarf2_section_info macinfo;
cf2c3c16 221 struct dwarf2_section_info macro;
dce234bc
PP
222 struct dwarf2_section_info str;
223 struct dwarf2_section_info ranges;
3019eac3 224 struct dwarf2_section_info addr;
dce234bc
PP
225 struct dwarf2_section_info frame;
226 struct dwarf2_section_info eh_frame;
9291a0cd 227 struct dwarf2_section_info gdb_index;
ae038cb0 228
8b70b953
TT
229 VEC (dwarf2_section_info_def) *types;
230
be391dca
TT
231 /* Back link. */
232 struct objfile *objfile;
233
d467dd73 234 /* Table of all the compilation units. This is used to locate
10b3939b 235 the target compilation unit of a particular reference. */
ae038cb0
DJ
236 struct dwarf2_per_cu_data **all_comp_units;
237
238 /* The number of compilation units in ALL_COMP_UNITS. */
239 int n_comp_units;
240
1fd400ff 241 /* The number of .debug_types-related CUs. */
d467dd73 242 int n_type_units;
1fd400ff 243
6aa5f3a6
DE
244 /* The number of elements allocated in all_type_units.
245 If there are skeleton-less TUs, we add them to all_type_units lazily. */
246 int n_allocated_type_units;
247
a2ce51a0
DE
248 /* The .debug_types-related CUs (TUs).
249 This is stored in malloc space because we may realloc it. */
b4dd5633 250 struct signatured_type **all_type_units;
1fd400ff 251
f4dc4d17
DE
252 /* Table of struct type_unit_group objects.
253 The hash key is the DW_AT_stmt_list value. */
254 htab_t type_unit_groups;
72dca2f5 255
348e048f
DE
256 /* A table mapping .debug_types signatures to its signatured_type entry.
257 This is NULL if the .debug_types section hasn't been read in yet. */
258 htab_t signatured_types;
259
f4dc4d17
DE
260 /* Type unit statistics, to see how well the scaling improvements
261 are doing. */
52059ffd 262 struct tu_stats tu_stats;
f4dc4d17
DE
263
264 /* A chain of compilation units that are currently read in, so that
265 they can be freed later. */
266 struct dwarf2_per_cu_data *read_in_chain;
267
3019eac3
DE
268 /* A table mapping DW_AT_dwo_name values to struct dwo_file objects.
269 This is NULL if the table hasn't been allocated yet. */
270 htab_t dwo_files;
271
80626a55
DE
272 /* Non-zero if we've check for whether there is a DWP file. */
273 int dwp_checked;
274
275 /* The DWP file if there is one, or NULL. */
276 struct dwp_file *dwp_file;
277
36586728
TT
278 /* The shared '.dwz' file, if one exists. This is used when the
279 original data was compressed using 'dwz -m'. */
280 struct dwz_file *dwz_file;
281
72dca2f5
FR
282 /* A flag indicating wether this objfile has a section loaded at a
283 VMA of 0. */
284 int has_section_at_zero;
9291a0cd 285
ae2de4f8
DE
286 /* True if we are using the mapped index,
287 or we are faking it for OBJF_READNOW's sake. */
9291a0cd
TT
288 unsigned char using_index;
289
ae2de4f8 290 /* The mapped index, or NULL if .gdb_index is missing or not being used. */
9291a0cd 291 struct mapped_index *index_table;
98bfdba5 292
7b9f3c50 293 /* When using index_table, this keeps track of all quick_file_names entries.
56e64610
DE
294 TUs typically share line table entries with a CU, so we maintain a
295 separate table of all line table entries to support the sharing.
296 Note that while there can be way more TUs than CUs, we've already
297 sorted all the TUs into "type unit groups", grouped by their
298 DW_AT_stmt_list value. Therefore the only sharing done here is with a
299 CU and its associated TU group if there is one. */
7b9f3c50
DE
300 htab_t quick_file_names_table;
301
98bfdba5
PA
302 /* Set during partial symbol reading, to prevent queueing of full
303 symbols. */
304 int reading_partial_symbols;
673bfd45 305
dee91e82 306 /* Table mapping type DIEs to their struct type *.
673bfd45 307 This is NULL if not allocated yet.
02142a6c 308 The mapping is done via (CU/TU + DIE offset) -> type. */
dee91e82 309 htab_t die_type_hash;
95554aad
TT
310
311 /* The CUs we recently read. */
312 VEC (dwarf2_per_cu_ptr) *just_read_cus;
527f3840
JK
313
314 /* Table containing line_header indexed by offset and offset_in_dwz. */
315 htab_t line_header_hash;
6502dd73
DJ
316};
317
318static struct dwarf2_per_objfile *dwarf2_per_objfile;
c906108c 319
251d32d9 320/* Default names of the debugging sections. */
c906108c 321
233a11ab
CS
322/* Note that if the debugging section has been compressed, it might
323 have a name like .zdebug_info. */
324
9cdd5dbd
DE
325static const struct dwarf2_debug_sections dwarf2_elf_names =
326{
251d32d9
TG
327 { ".debug_info", ".zdebug_info" },
328 { ".debug_abbrev", ".zdebug_abbrev" },
329 { ".debug_line", ".zdebug_line" },
330 { ".debug_loc", ".zdebug_loc" },
331 { ".debug_macinfo", ".zdebug_macinfo" },
cf2c3c16 332 { ".debug_macro", ".zdebug_macro" },
251d32d9
TG
333 { ".debug_str", ".zdebug_str" },
334 { ".debug_ranges", ".zdebug_ranges" },
335 { ".debug_types", ".zdebug_types" },
3019eac3 336 { ".debug_addr", ".zdebug_addr" },
251d32d9
TG
337 { ".debug_frame", ".zdebug_frame" },
338 { ".eh_frame", NULL },
24d3216f
TT
339 { ".gdb_index", ".zgdb_index" },
340 23
251d32d9 341};
c906108c 342
80626a55 343/* List of DWO/DWP sections. */
3019eac3 344
80626a55 345static const struct dwop_section_names
3019eac3
DE
346{
347 struct dwarf2_section_names abbrev_dwo;
348 struct dwarf2_section_names info_dwo;
349 struct dwarf2_section_names line_dwo;
350 struct dwarf2_section_names loc_dwo;
09262596
DE
351 struct dwarf2_section_names macinfo_dwo;
352 struct dwarf2_section_names macro_dwo;
3019eac3
DE
353 struct dwarf2_section_names str_dwo;
354 struct dwarf2_section_names str_offsets_dwo;
355 struct dwarf2_section_names types_dwo;
80626a55
DE
356 struct dwarf2_section_names cu_index;
357 struct dwarf2_section_names tu_index;
3019eac3 358}
80626a55 359dwop_section_names =
3019eac3
DE
360{
361 { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
362 { ".debug_info.dwo", ".zdebug_info.dwo" },
363 { ".debug_line.dwo", ".zdebug_line.dwo" },
364 { ".debug_loc.dwo", ".zdebug_loc.dwo" },
09262596
DE
365 { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
366 { ".debug_macro.dwo", ".zdebug_macro.dwo" },
3019eac3
DE
367 { ".debug_str.dwo", ".zdebug_str.dwo" },
368 { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
369 { ".debug_types.dwo", ".zdebug_types.dwo" },
80626a55
DE
370 { ".debug_cu_index", ".zdebug_cu_index" },
371 { ".debug_tu_index", ".zdebug_tu_index" },
3019eac3
DE
372};
373
c906108c
SS
374/* local data types */
375
107d2387
AC
376/* The data in a compilation unit header, after target2host
377 translation, looks like this. */
c906108c 378struct comp_unit_head
a738430d 379{
c764a876 380 unsigned int length;
a738430d 381 short version;
a738430d
MK
382 unsigned char addr_size;
383 unsigned char signed_addr_p;
b64f50a1 384 sect_offset abbrev_offset;
57349743 385
a738430d
MK
386 /* Size of file offsets; either 4 or 8. */
387 unsigned int offset_size;
57349743 388
a738430d
MK
389 /* Size of the length field; either 4 or 12. */
390 unsigned int initial_length_size;
57349743 391
a738430d
MK
392 /* Offset to the first byte of this compilation unit header in the
393 .debug_info section, for resolving relative reference dies. */
b64f50a1 394 sect_offset offset;
57349743 395
d00adf39
DE
396 /* Offset to first die in this cu from the start of the cu.
397 This will be the first byte following the compilation unit header. */
b64f50a1 398 cu_offset first_die_offset;
a738430d 399};
c906108c 400
3da10d80
KS
401/* Type used for delaying computation of method physnames.
402 See comments for compute_delayed_physnames. */
403struct delayed_method_info
404{
405 /* The type to which the method is attached, i.e., its parent class. */
406 struct type *type;
407
408 /* The index of the method in the type's function fieldlists. */
409 int fnfield_index;
410
411 /* The index of the method in the fieldlist. */
412 int index;
413
414 /* The name of the DIE. */
415 const char *name;
416
417 /* The DIE associated with this method. */
418 struct die_info *die;
419};
420
421typedef struct delayed_method_info delayed_method_info;
422DEF_VEC_O (delayed_method_info);
423
e7c27a73
DJ
424/* Internal state when decoding a particular compilation unit. */
425struct dwarf2_cu
426{
427 /* The objfile containing this compilation unit. */
428 struct objfile *objfile;
429
d00adf39 430 /* The header of the compilation unit. */
e7c27a73 431 struct comp_unit_head header;
e142c38c 432
d00adf39
DE
433 /* Base address of this compilation unit. */
434 CORE_ADDR base_address;
435
436 /* Non-zero if base_address has been set. */
437 int base_known;
438
e142c38c
DJ
439 /* The language we are debugging. */
440 enum language language;
441 const struct language_defn *language_defn;
442
b0f35d58
DL
443 const char *producer;
444
e142c38c
DJ
445 /* The generic symbol table building routines have separate lists for
446 file scope symbols and all all other scopes (local scopes). So
447 we need to select the right one to pass to add_symbol_to_list().
448 We do it by keeping a pointer to the correct list in list_in_scope.
449
450 FIXME: The original dwarf code just treated the file scope as the
451 first local scope, and all other local scopes as nested local
452 scopes, and worked fine. Check to see if we really need to
453 distinguish these in buildsym.c. */
454 struct pending **list_in_scope;
455
433df2d4
DE
456 /* The abbrev table for this CU.
457 Normally this points to the abbrev table in the objfile.
458 But if DWO_UNIT is non-NULL this is the abbrev table in the DWO file. */
459 struct abbrev_table *abbrev_table;
72bf9492 460
b64f50a1
JK
461 /* Hash table holding all the loaded partial DIEs
462 with partial_die->offset.SECT_OFF as hash. */
72bf9492
DJ
463 htab_t partial_dies;
464
465 /* Storage for things with the same lifetime as this read-in compilation
466 unit, including partial DIEs. */
467 struct obstack comp_unit_obstack;
468
ae038cb0
DJ
469 /* When multiple dwarf2_cu structures are living in memory, this field
470 chains them all together, so that they can be released efficiently.
471 We will probably also want a generation counter so that most-recently-used
472 compilation units are cached... */
473 struct dwarf2_per_cu_data *read_in_chain;
474
69d751e3 475 /* Backlink to our per_cu entry. */
ae038cb0
DJ
476 struct dwarf2_per_cu_data *per_cu;
477
478 /* How many compilation units ago was this CU last referenced? */
479 int last_used;
480
b64f50a1
JK
481 /* A hash table of DIE cu_offset for following references with
482 die_info->offset.sect_off as hash. */
51545339 483 htab_t die_hash;
10b3939b
DJ
484
485 /* Full DIEs if read in. */
486 struct die_info *dies;
487
488 /* A set of pointers to dwarf2_per_cu_data objects for compilation
489 units referenced by this one. Only set during full symbol processing;
490 partial symbol tables do not have dependencies. */
491 htab_t dependencies;
492
cb1df416
DJ
493 /* Header data from the line table, during full symbol processing. */
494 struct line_header *line_header;
495
3da10d80
KS
496 /* A list of methods which need to have physnames computed
497 after all type information has been read. */
498 VEC (delayed_method_info) *method_list;
499
96408a79
SA
500 /* To be copied to symtab->call_site_htab. */
501 htab_t call_site_htab;
502
034e5797
DE
503 /* Non-NULL if this CU came from a DWO file.
504 There is an invariant here that is important to remember:
505 Except for attributes copied from the top level DIE in the "main"
506 (or "stub") file in preparation for reading the DWO file
507 (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
508 Either there isn't a DWO file (in which case this is NULL and the point
509 is moot), or there is and either we're not going to read it (in which
510 case this is NULL) or there is and we are reading it (in which case this
511 is non-NULL). */
3019eac3
DE
512 struct dwo_unit *dwo_unit;
513
514 /* The DW_AT_addr_base attribute if present, zero otherwise
515 (zero is a valid value though).
1dbab08b 516 Note this value comes from the Fission stub CU/TU's DIE. */
3019eac3
DE
517 ULONGEST addr_base;
518
2e3cf129
DE
519 /* The DW_AT_ranges_base attribute if present, zero otherwise
520 (zero is a valid value though).
1dbab08b 521 Note this value comes from the Fission stub CU/TU's DIE.
2e3cf129 522 Also note that the value is zero in the non-DWO case so this value can
ab435259
DE
523 be used without needing to know whether DWO files are in use or not.
524 N.B. This does not apply to DW_AT_ranges appearing in
525 DW_TAG_compile_unit dies. This is a bit of a wart, consider if ever
526 DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
527 DW_AT_ranges_base *would* have to be applied, and we'd have to care
528 whether the DW_AT_ranges attribute came from the skeleton or DWO. */
2e3cf129
DE
529 ULONGEST ranges_base;
530
ae038cb0
DJ
531 /* Mark used when releasing cached dies. */
532 unsigned int mark : 1;
533
8be455d7
JK
534 /* This CU references .debug_loc. See the symtab->locations_valid field.
535 This test is imperfect as there may exist optimized debug code not using
536 any location list and still facing inlining issues if handled as
537 unoptimized code. For a future better test see GCC PR other/32998. */
8be455d7 538 unsigned int has_loclist : 1;
ba919b58 539
1b80a9fa
JK
540 /* These cache the results for producer_is_* fields. CHECKED_PRODUCER is set
541 if all the producer_is_* fields are valid. This information is cached
542 because profiling CU expansion showed excessive time spent in
543 producer_is_gxx_lt_4_6. */
ba919b58
TT
544 unsigned int checked_producer : 1;
545 unsigned int producer_is_gxx_lt_4_6 : 1;
1b80a9fa 546 unsigned int producer_is_gcc_lt_4_3 : 1;
685b1105 547 unsigned int producer_is_icc : 1;
4d4ec4e5
TT
548
549 /* When set, the file that we're processing is known to have
550 debugging info for C++ namespaces. GCC 3.3.x did not produce
551 this information, but later versions do. */
552
553 unsigned int processing_has_namespace_info : 1;
e7c27a73
DJ
554};
555
10b3939b
DJ
556/* Persistent data held for a compilation unit, even when not
557 processing it. We put a pointer to this structure in the
28dee7f5 558 read_symtab_private field of the psymtab. */
10b3939b 559
ae038cb0
DJ
560struct dwarf2_per_cu_data
561{
36586728 562 /* The start offset and length of this compilation unit.
45452591 563 NOTE: Unlike comp_unit_head.length, this length includes
3019eac3
DE
564 initial_length_size.
565 If the DIE refers to a DWO file, this is always of the original die,
566 not the DWO file. */
b64f50a1 567 sect_offset offset;
36586728 568 unsigned int length;
ae038cb0
DJ
569
570 /* Flag indicating this compilation unit will be read in before
571 any of the current compilation units are processed. */
c764a876 572 unsigned int queued : 1;
ae038cb0 573
0d99eb77
DE
574 /* This flag will be set when reading partial DIEs if we need to load
575 absolutely all DIEs for this compilation unit, instead of just the ones
576 we think are interesting. It gets set if we look for a DIE in the
5afb4e99
DJ
577 hash table and don't find it. */
578 unsigned int load_all_dies : 1;
579
0186c6a7
DE
580 /* Non-zero if this CU is from .debug_types.
581 Struct dwarf2_per_cu_data is contained in struct signatured_type iff
582 this is non-zero. */
3019eac3
DE
583 unsigned int is_debug_types : 1;
584
36586728
TT
585 /* Non-zero if this CU is from the .dwz file. */
586 unsigned int is_dwz : 1;
587
a2ce51a0
DE
588 /* Non-zero if reading a TU directly from a DWO file, bypassing the stub.
589 This flag is only valid if is_debug_types is true.
590 We can't read a CU directly from a DWO file: There are required
591 attributes in the stub. */
592 unsigned int reading_dwo_directly : 1;
593
7ee85ab1
DE
594 /* Non-zero if the TU has been read.
595 This is used to assist the "Stay in DWO Optimization" for Fission:
596 When reading a DWO, it's faster to read TUs from the DWO instead of
597 fetching them from random other DWOs (due to comdat folding).
598 If the TU has already been read, the optimization is unnecessary
599 (and unwise - we don't want to change where gdb thinks the TU lives
600 "midflight").
601 This flag is only valid if is_debug_types is true. */
602 unsigned int tu_read : 1;
603
3019eac3
DE
604 /* The section this CU/TU lives in.
605 If the DIE refers to a DWO file, this is always the original die,
606 not the DWO file. */
8a0459fd 607 struct dwarf2_section_info *section;
348e048f 608
17ea53c3
JK
609 /* Set to non-NULL iff this CU is currently loaded. When it gets freed out
610 of the CU cache it gets reset to NULL again. */
ae038cb0 611 struct dwarf2_cu *cu;
1c379e20 612
9cdd5dbd
DE
613 /* The corresponding objfile.
614 Normally we can get the objfile from dwarf2_per_objfile.
615 However we can enter this file with just a "per_cu" handle. */
9291a0cd
TT
616 struct objfile *objfile;
617
fffbe6a8
YQ
618 /* When dwarf2_per_objfile->using_index is true, the 'quick' field
619 is active. Otherwise, the 'psymtab' field is active. */
9291a0cd
TT
620 union
621 {
622 /* The partial symbol table associated with this compilation unit,
95554aad 623 or NULL for unread partial units. */
9291a0cd
TT
624 struct partial_symtab *psymtab;
625
626 /* Data needed by the "quick" functions. */
627 struct dwarf2_per_cu_quick_data *quick;
628 } v;
95554aad 629
796a7ff8
DE
630 /* The CUs we import using DW_TAG_imported_unit. This is filled in
631 while reading psymtabs, used to compute the psymtab dependencies,
632 and then cleared. Then it is filled in again while reading full
633 symbols, and only deleted when the objfile is destroyed.
634
635 This is also used to work around a difference between the way gold
636 generates .gdb_index version <=7 and the way gdb does. Arguably this
637 is a gold bug. For symbols coming from TUs, gold records in the index
638 the CU that includes the TU instead of the TU itself. This breaks
639 dw2_lookup_symbol: It assumes that if the index says symbol X lives
640 in CU/TU Y, then one need only expand Y and a subsequent lookup in Y
641 will find X. Alas TUs live in their own symtab, so after expanding CU Y
642 we need to look in TU Z to find X. Fortunately, this is akin to
643 DW_TAG_imported_unit, so we just use the same mechanism: For
644 .gdb_index version <=7 this also records the TUs that the CU referred
645 to. Concurrently with this change gdb was modified to emit version 8
69d751e3
DE
646 indices so we only pay a price for gold generated indices.
647 http://sourceware.org/bugzilla/show_bug.cgi?id=15021. */
796a7ff8 648 VEC (dwarf2_per_cu_ptr) *imported_symtabs;
ae038cb0
DJ
649};
650
348e048f
DE
651/* Entry in the signatured_types hash table. */
652
653struct signatured_type
654{
42e7ad6c 655 /* The "per_cu" object of this type.
ac9ec31b 656 This struct is used iff per_cu.is_debug_types.
42e7ad6c
DE
657 N.B.: This is the first member so that it's easy to convert pointers
658 between them. */
659 struct dwarf2_per_cu_data per_cu;
660
3019eac3 661 /* The type's signature. */
348e048f
DE
662 ULONGEST signature;
663
3019eac3 664 /* Offset in the TU of the type's DIE, as read from the TU header.
c88ee1f0
DE
665 If this TU is a DWO stub and the definition lives in a DWO file
666 (specified by DW_AT_GNU_dwo_name), this value is unusable. */
3019eac3
DE
667 cu_offset type_offset_in_tu;
668
669 /* Offset in the section of the type's DIE.
670 If the definition lives in a DWO file, this is the offset in the
671 .debug_types.dwo section.
672 The value is zero until the actual value is known.
673 Zero is otherwise not a valid section offset. */
674 sect_offset type_offset_in_section;
0186c6a7
DE
675
676 /* Type units are grouped by their DW_AT_stmt_list entry so that they
677 can share them. This points to the containing symtab. */
678 struct type_unit_group *type_unit_group;
ac9ec31b
DE
679
680 /* The type.
681 The first time we encounter this type we fully read it in and install it
682 in the symbol tables. Subsequent times we only need the type. */
683 struct type *type;
a2ce51a0
DE
684
685 /* Containing DWO unit.
686 This field is valid iff per_cu.reading_dwo_directly. */
687 struct dwo_unit *dwo_unit;
348e048f
DE
688};
689
0186c6a7
DE
690typedef struct signatured_type *sig_type_ptr;
691DEF_VEC_P (sig_type_ptr);
692
094b34ac
DE
693/* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
694 This includes type_unit_group and quick_file_names. */
695
696struct stmt_list_hash
697{
698 /* The DWO unit this table is from or NULL if there is none. */
699 struct dwo_unit *dwo_unit;
700
701 /* Offset in .debug_line or .debug_line.dwo. */
702 sect_offset line_offset;
703};
704
f4dc4d17
DE
705/* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
706 an object of this type. */
707
708struct type_unit_group
709{
0186c6a7 710 /* dwarf2read.c's main "handle" on a TU symtab.
f4dc4d17
DE
711 To simplify things we create an artificial CU that "includes" all the
712 type units using this stmt_list so that the rest of the code still has
713 a "per_cu" handle on the symtab.
714 This PER_CU is recognized by having no section. */
8a0459fd 715#define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
094b34ac
DE
716 struct dwarf2_per_cu_data per_cu;
717
0186c6a7
DE
718 /* The TUs that share this DW_AT_stmt_list entry.
719 This is added to while parsing type units to build partial symtabs,
720 and is deleted afterwards and not used again. */
721 VEC (sig_type_ptr) *tus;
f4dc4d17 722
43f3e411 723 /* The compunit symtab.
094b34ac 724 Type units in a group needn't all be defined in the same source file,
43f3e411
DE
725 so we create an essentially anonymous symtab as the compunit symtab. */
726 struct compunit_symtab *compunit_symtab;
f4dc4d17 727
094b34ac
DE
728 /* The data used to construct the hash key. */
729 struct stmt_list_hash hash;
f4dc4d17
DE
730
731 /* The number of symtabs from the line header.
732 The value here must match line_header.num_file_names. */
733 unsigned int num_symtabs;
734
735 /* The symbol tables for this TU (obtained from the files listed in
736 DW_AT_stmt_list).
737 WARNING: The order of entries here must match the order of entries
738 in the line header. After the first TU using this type_unit_group, the
739 line header for the subsequent TUs is recreated from this. This is done
740 because we need to use the same symtabs for each TU using the same
741 DW_AT_stmt_list value. Also note that symtabs may be repeated here,
742 there's no guarantee the line header doesn't have duplicate entries. */
743 struct symtab **symtabs;
744};
745
73869dc2 746/* These sections are what may appear in a (real or virtual) DWO file. */
3019eac3
DE
747
748struct dwo_sections
749{
750 struct dwarf2_section_info abbrev;
3019eac3
DE
751 struct dwarf2_section_info line;
752 struct dwarf2_section_info loc;
09262596
DE
753 struct dwarf2_section_info macinfo;
754 struct dwarf2_section_info macro;
3019eac3
DE
755 struct dwarf2_section_info str;
756 struct dwarf2_section_info str_offsets;
80626a55
DE
757 /* In the case of a virtual DWO file, these two are unused. */
758 struct dwarf2_section_info info;
3019eac3
DE
759 VEC (dwarf2_section_info_def) *types;
760};
761
c88ee1f0 762/* CUs/TUs in DWP/DWO files. */
3019eac3
DE
763
764struct dwo_unit
765{
766 /* Backlink to the containing struct dwo_file. */
767 struct dwo_file *dwo_file;
768
769 /* The "id" that distinguishes this CU/TU.
770 .debug_info calls this "dwo_id", .debug_types calls this "signature".
771 Since signatures came first, we stick with it for consistency. */
772 ULONGEST signature;
773
774 /* The section this CU/TU lives in, in the DWO file. */
8a0459fd 775 struct dwarf2_section_info *section;
3019eac3 776
19ac8c2e 777 /* Same as dwarf2_per_cu_data:{offset,length} but in the DWO section. */
3019eac3
DE
778 sect_offset offset;
779 unsigned int length;
780
781 /* For types, offset in the type's DIE of the type defined by this TU. */
782 cu_offset type_offset_in_tu;
783};
784
73869dc2
DE
785/* include/dwarf2.h defines the DWP section codes.
786 It defines a max value but it doesn't define a min value, which we
787 use for error checking, so provide one. */
788
789enum dwp_v2_section_ids
790{
791 DW_SECT_MIN = 1
792};
793
80626a55 794/* Data for one DWO file.
57d63ce2
DE
795
796 This includes virtual DWO files (a virtual DWO file is a DWO file as it
797 appears in a DWP file). DWP files don't really have DWO files per se -
798 comdat folding of types "loses" the DWO file they came from, and from
799 a high level view DWP files appear to contain a mass of random types.
800 However, to maintain consistency with the non-DWP case we pretend DWP
801 files contain virtual DWO files, and we assign each TU with one virtual
802 DWO file (generally based on the line and abbrev section offsets -
803 a heuristic that seems to work in practice). */
3019eac3
DE
804
805struct dwo_file
806{
0ac5b59e 807 /* The DW_AT_GNU_dwo_name attribute.
80626a55
DE
808 For virtual DWO files the name is constructed from the section offsets
809 of abbrev,line,loc,str_offsets so that we combine virtual DWO files
810 from related CU+TUs. */
0ac5b59e
DE
811 const char *dwo_name;
812
813 /* The DW_AT_comp_dir attribute. */
814 const char *comp_dir;
3019eac3 815
80626a55
DE
816 /* The bfd, when the file is open. Otherwise this is NULL.
817 This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd. */
818 bfd *dbfd;
3019eac3 819
73869dc2
DE
820 /* The sections that make up this DWO file.
821 Remember that for virtual DWO files in DWP V2, these are virtual
822 sections (for lack of a better name). */
3019eac3
DE
823 struct dwo_sections sections;
824
19c3d4c9
DE
825 /* The CU in the file.
826 We only support one because having more than one requires hacking the
827 dwo_name of each to match, which is highly unlikely to happen.
828 Doing this means all TUs can share comp_dir: We also assume that
829 DW_AT_comp_dir across all TUs in a DWO file will be identical. */
830 struct dwo_unit *cu;
3019eac3
DE
831
832 /* Table of TUs in the file.
833 Each element is a struct dwo_unit. */
834 htab_t tus;
835};
836
80626a55
DE
837/* These sections are what may appear in a DWP file. */
838
839struct dwp_sections
840{
73869dc2 841 /* These are used by both DWP version 1 and 2. */
80626a55
DE
842 struct dwarf2_section_info str;
843 struct dwarf2_section_info cu_index;
844 struct dwarf2_section_info tu_index;
73869dc2
DE
845
846 /* These are only used by DWP version 2 files.
847 In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
848 sections are referenced by section number, and are not recorded here.
849 In DWP version 2 there is at most one copy of all these sections, each
850 section being (effectively) comprised of the concatenation of all of the
851 individual sections that exist in the version 1 format.
852 To keep the code simple we treat each of these concatenated pieces as a
853 section itself (a virtual section?). */
854 struct dwarf2_section_info abbrev;
855 struct dwarf2_section_info info;
856 struct dwarf2_section_info line;
857 struct dwarf2_section_info loc;
858 struct dwarf2_section_info macinfo;
859 struct dwarf2_section_info macro;
860 struct dwarf2_section_info str_offsets;
861 struct dwarf2_section_info types;
80626a55
DE
862};
863
73869dc2
DE
864/* These sections are what may appear in a virtual DWO file in DWP version 1.
865 A virtual DWO file is a DWO file as it appears in a DWP file. */
80626a55 866
73869dc2 867struct virtual_v1_dwo_sections
80626a55
DE
868{
869 struct dwarf2_section_info abbrev;
870 struct dwarf2_section_info line;
871 struct dwarf2_section_info loc;
872 struct dwarf2_section_info macinfo;
873 struct dwarf2_section_info macro;
874 struct dwarf2_section_info str_offsets;
875 /* Each DWP hash table entry records one CU or one TU.
8a0459fd 876 That is recorded here, and copied to dwo_unit.section. */
80626a55
DE
877 struct dwarf2_section_info info_or_types;
878};
879
73869dc2
DE
880/* Similar to virtual_v1_dwo_sections, but for DWP version 2.
881 In version 2, the sections of the DWO files are concatenated together
882 and stored in one section of that name. Thus each ELF section contains
883 several "virtual" sections. */
884
885struct virtual_v2_dwo_sections
886{
887 bfd_size_type abbrev_offset;
888 bfd_size_type abbrev_size;
889
890 bfd_size_type line_offset;
891 bfd_size_type line_size;
892
893 bfd_size_type loc_offset;
894 bfd_size_type loc_size;
895
896 bfd_size_type macinfo_offset;
897 bfd_size_type macinfo_size;
898
899 bfd_size_type macro_offset;
900 bfd_size_type macro_size;
901
902 bfd_size_type str_offsets_offset;
903 bfd_size_type str_offsets_size;
904
905 /* Each DWP hash table entry records one CU or one TU.
906 That is recorded here, and copied to dwo_unit.section. */
907 bfd_size_type info_or_types_offset;
908 bfd_size_type info_or_types_size;
909};
910
80626a55
DE
911/* Contents of DWP hash tables. */
912
913struct dwp_hash_table
914{
73869dc2 915 uint32_t version, nr_columns;
80626a55 916 uint32_t nr_units, nr_slots;
73869dc2
DE
917 const gdb_byte *hash_table, *unit_table;
918 union
919 {
920 struct
921 {
922 const gdb_byte *indices;
923 } v1;
924 struct
925 {
926 /* This is indexed by column number and gives the id of the section
927 in that column. */
928#define MAX_NR_V2_DWO_SECTIONS \
929 (1 /* .debug_info or .debug_types */ \
930 + 1 /* .debug_abbrev */ \
931 + 1 /* .debug_line */ \
932 + 1 /* .debug_loc */ \
933 + 1 /* .debug_str_offsets */ \
934 + 1 /* .debug_macro or .debug_macinfo */)
935 int section_ids[MAX_NR_V2_DWO_SECTIONS];
936 const gdb_byte *offsets;
937 const gdb_byte *sizes;
938 } v2;
939 } section_pool;
80626a55
DE
940};
941
942/* Data for one DWP file. */
943
944struct dwp_file
945{
946 /* Name of the file. */
947 const char *name;
948
73869dc2
DE
949 /* File format version. */
950 int version;
951
93417882 952 /* The bfd. */
80626a55
DE
953 bfd *dbfd;
954
955 /* Section info for this file. */
956 struct dwp_sections sections;
957
57d63ce2 958 /* Table of CUs in the file. */
80626a55
DE
959 const struct dwp_hash_table *cus;
960
961 /* Table of TUs in the file. */
962 const struct dwp_hash_table *tus;
963
19ac8c2e
DE
964 /* Tables of loaded CUs/TUs. Each entry is a struct dwo_unit *. */
965 htab_t loaded_cus;
966 htab_t loaded_tus;
80626a55 967
73869dc2
DE
968 /* Table to map ELF section numbers to their sections.
969 This is only needed for the DWP V1 file format. */
80626a55
DE
970 unsigned int num_sections;
971 asection **elf_sections;
972};
973
36586728
TT
974/* This represents a '.dwz' file. */
975
976struct dwz_file
977{
978 /* A dwz file can only contain a few sections. */
979 struct dwarf2_section_info abbrev;
980 struct dwarf2_section_info info;
981 struct dwarf2_section_info str;
982 struct dwarf2_section_info line;
983 struct dwarf2_section_info macro;
2ec9a5e0 984 struct dwarf2_section_info gdb_index;
36586728
TT
985
986 /* The dwz's BFD. */
987 bfd *dwz_bfd;
988};
989
0963b4bd
MS
990/* Struct used to pass misc. parameters to read_die_and_children, et
991 al. which are used for both .debug_info and .debug_types dies.
992 All parameters here are unchanging for the life of the call. This
dee91e82 993 struct exists to abstract away the constant parameters of die reading. */
93311388
DE
994
995struct die_reader_specs
996{
a32a8923 997 /* The bfd of die_section. */
93311388
DE
998 bfd* abfd;
999
1000 /* The CU of the DIE we are parsing. */
1001 struct dwarf2_cu *cu;
1002
80626a55 1003 /* Non-NULL if reading a DWO file (including one packaged into a DWP). */
3019eac3
DE
1004 struct dwo_file *dwo_file;
1005
dee91e82 1006 /* The section the die comes from.
3019eac3 1007 This is either .debug_info or .debug_types, or the .dwo variants. */
dee91e82
DE
1008 struct dwarf2_section_info *die_section;
1009
1010 /* die_section->buffer. */
d521ce57 1011 const gdb_byte *buffer;
f664829e
DE
1012
1013 /* The end of the buffer. */
1014 const gdb_byte *buffer_end;
a2ce51a0
DE
1015
1016 /* The value of the DW_AT_comp_dir attribute. */
1017 const char *comp_dir;
93311388
DE
1018};
1019
fd820528 1020/* Type of function passed to init_cutu_and_read_dies, et.al. */
dee91e82 1021typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
d521ce57 1022 const gdb_byte *info_ptr,
dee91e82
DE
1023 struct die_info *comp_unit_die,
1024 int has_children,
1025 void *data);
1026
52059ffd
TT
1027struct file_entry
1028{
1029 const char *name;
1030 unsigned int dir_index;
1031 unsigned int mod_time;
1032 unsigned int length;
1033 int included_p; /* Non-zero if referenced by the Line Number Program. */
1034 struct symtab *symtab; /* The associated symbol table, if any. */
1035};
1036
debd256d
JB
1037/* The line number information for a compilation unit (found in the
1038 .debug_line section) begins with a "statement program header",
1039 which contains the following information. */
1040struct line_header
1041{
527f3840
JK
1042 /* Offset of line number information in .debug_line section. */
1043 sect_offset offset;
1044
1045 /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile. */
1046 unsigned offset_in_dwz : 1;
1047
debd256d
JB
1048 unsigned int total_length;
1049 unsigned short version;
1050 unsigned int header_length;
1051 unsigned char minimum_instruction_length;
2dc7f7b3 1052 unsigned char maximum_ops_per_instruction;
debd256d
JB
1053 unsigned char default_is_stmt;
1054 int line_base;
1055 unsigned char line_range;
1056 unsigned char opcode_base;
1057
1058 /* standard_opcode_lengths[i] is the number of operands for the
1059 standard opcode whose value is i. This means that
1060 standard_opcode_lengths[0] is unused, and the last meaningful
1061 element is standard_opcode_lengths[opcode_base - 1]. */
1062 unsigned char *standard_opcode_lengths;
1063
1064 /* The include_directories table. NOTE! These strings are not
1065 allocated with xmalloc; instead, they are pointers into
1066 debug_line_buffer. If you try to free them, `free' will get
1067 indigestion. */
1068 unsigned int num_include_dirs, include_dirs_size;
d521ce57 1069 const char **include_dirs;
debd256d
JB
1070
1071 /* The file_names table. NOTE! These strings are not allocated
1072 with xmalloc; instead, they are pointers into debug_line_buffer.
1073 Don't try to free them directly. */
1074 unsigned int num_file_names, file_names_size;
52059ffd 1075 struct file_entry *file_names;
debd256d
JB
1076
1077 /* The start and end of the statement program following this
6502dd73 1078 header. These point into dwarf2_per_objfile->line_buffer. */
d521ce57 1079 const gdb_byte *statement_program_start, *statement_program_end;
debd256d 1080};
c906108c
SS
1081
1082/* When we construct a partial symbol table entry we only
0963b4bd 1083 need this much information. */
c906108c
SS
1084struct partial_die_info
1085 {
72bf9492 1086 /* Offset of this DIE. */
b64f50a1 1087 sect_offset offset;
72bf9492
DJ
1088
1089 /* DWARF-2 tag for this DIE. */
1090 ENUM_BITFIELD(dwarf_tag) tag : 16;
1091
72bf9492
DJ
1092 /* Assorted flags describing the data found in this DIE. */
1093 unsigned int has_children : 1;
1094 unsigned int is_external : 1;
1095 unsigned int is_declaration : 1;
1096 unsigned int has_type : 1;
1097 unsigned int has_specification : 1;
1098 unsigned int has_pc_info : 1;
481860b3 1099 unsigned int may_be_inlined : 1;
72bf9492
DJ
1100
1101 /* Flag set if the SCOPE field of this structure has been
1102 computed. */
1103 unsigned int scope_set : 1;
1104
fa4028e9
JB
1105 /* Flag set if the DIE has a byte_size attribute. */
1106 unsigned int has_byte_size : 1;
1107
ff908ebf
AW
1108 /* Flag set if the DIE has a DW_AT_const_value attribute. */
1109 unsigned int has_const_value : 1;
1110
98bfdba5
PA
1111 /* Flag set if any of the DIE's children are template arguments. */
1112 unsigned int has_template_arguments : 1;
1113
abc72ce4
DE
1114 /* Flag set if fixup_partial_die has been called on this die. */
1115 unsigned int fixup_called : 1;
1116
36586728
TT
1117 /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt. */
1118 unsigned int is_dwz : 1;
1119
1120 /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt. */
1121 unsigned int spec_is_dwz : 1;
1122
72bf9492 1123 /* The name of this DIE. Normally the value of DW_AT_name, but
94af9270 1124 sometimes a default name for unnamed DIEs. */
15d034d0 1125 const char *name;
72bf9492 1126
abc72ce4
DE
1127 /* The linkage name, if present. */
1128 const char *linkage_name;
1129
72bf9492
DJ
1130 /* The scope to prepend to our children. This is generally
1131 allocated on the comp_unit_obstack, so will disappear
1132 when this compilation unit leaves the cache. */
15d034d0 1133 const char *scope;
72bf9492 1134
95554aad
TT
1135 /* Some data associated with the partial DIE. The tag determines
1136 which field is live. */
1137 union
1138 {
1139 /* The location description associated with this DIE, if any. */
1140 struct dwarf_block *locdesc;
1141 /* The offset of an import, for DW_TAG_imported_unit. */
1142 sect_offset offset;
1143 } d;
72bf9492
DJ
1144
1145 /* If HAS_PC_INFO, the PC range associated with this DIE. */
c906108c
SS
1146 CORE_ADDR lowpc;
1147 CORE_ADDR highpc;
72bf9492 1148
93311388 1149 /* Pointer into the info_buffer (or types_buffer) pointing at the target of
72bf9492 1150 DW_AT_sibling, if any. */
abc72ce4
DE
1151 /* NOTE: This member isn't strictly necessary, read_partial_die could
1152 return DW_AT_sibling values to its caller load_partial_dies. */
d521ce57 1153 const gdb_byte *sibling;
72bf9492
DJ
1154
1155 /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1156 DW_AT_specification (or DW_AT_abstract_origin or
1157 DW_AT_extension). */
b64f50a1 1158 sect_offset spec_offset;
72bf9492
DJ
1159
1160 /* Pointers to this DIE's parent, first child, and next sibling,
1161 if any. */
1162 struct partial_die_info *die_parent, *die_child, *die_sibling;
c906108c
SS
1163 };
1164
0963b4bd 1165/* This data structure holds the information of an abbrev. */
c906108c
SS
1166struct abbrev_info
1167 {
1168 unsigned int number; /* number identifying abbrev */
1169 enum dwarf_tag tag; /* dwarf tag */
f3dd6933
DJ
1170 unsigned short has_children; /* boolean */
1171 unsigned short num_attrs; /* number of attributes */
c906108c
SS
1172 struct attr_abbrev *attrs; /* an array of attribute descriptions */
1173 struct abbrev_info *next; /* next in chain */
1174 };
1175
1176struct attr_abbrev
1177 {
9d25dd43
DE
1178 ENUM_BITFIELD(dwarf_attribute) name : 16;
1179 ENUM_BITFIELD(dwarf_form) form : 16;
c906108c
SS
1180 };
1181
433df2d4
DE
1182/* Size of abbrev_table.abbrev_hash_table. */
1183#define ABBREV_HASH_SIZE 121
1184
1185/* Top level data structure to contain an abbreviation table. */
1186
1187struct abbrev_table
1188{
f4dc4d17
DE
1189 /* Where the abbrev table came from.
1190 This is used as a sanity check when the table is used. */
433df2d4
DE
1191 sect_offset offset;
1192
1193 /* Storage for the abbrev table. */
1194 struct obstack abbrev_obstack;
1195
1196 /* Hash table of abbrevs.
1197 This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1198 It could be statically allocated, but the previous code didn't so we
1199 don't either. */
1200 struct abbrev_info **abbrevs;
1201};
1202
0963b4bd 1203/* Attributes have a name and a value. */
b60c80d6
DJ
1204struct attribute
1205 {
9d25dd43 1206 ENUM_BITFIELD(dwarf_attribute) name : 16;
8285870a
JK
1207 ENUM_BITFIELD(dwarf_form) form : 15;
1208
1209 /* Has DW_STRING already been updated by dwarf2_canonicalize_name? This
1210 field should be in u.str (existing only for DW_STRING) but it is kept
1211 here for better struct attribute alignment. */
1212 unsigned int string_is_canonical : 1;
1213
b60c80d6
DJ
1214 union
1215 {
15d034d0 1216 const char *str;
b60c80d6 1217 struct dwarf_block *blk;
43bbcdc2
PH
1218 ULONGEST unsnd;
1219 LONGEST snd;
b60c80d6 1220 CORE_ADDR addr;
ac9ec31b 1221 ULONGEST signature;
b60c80d6
DJ
1222 }
1223 u;
1224 };
1225
0963b4bd 1226/* This data structure holds a complete die structure. */
c906108c
SS
1227struct die_info
1228 {
76815b17
DE
1229 /* DWARF-2 tag for this DIE. */
1230 ENUM_BITFIELD(dwarf_tag) tag : 16;
1231
1232 /* Number of attributes */
98bfdba5
PA
1233 unsigned char num_attrs;
1234
1235 /* True if we're presently building the full type name for the
1236 type derived from this DIE. */
1237 unsigned char building_fullname : 1;
76815b17 1238
adde2bff
DE
1239 /* True if this die is in process. PR 16581. */
1240 unsigned char in_process : 1;
1241
76815b17
DE
1242 /* Abbrev number */
1243 unsigned int abbrev;
1244
93311388 1245 /* Offset in .debug_info or .debug_types section. */
b64f50a1 1246 sect_offset offset;
78ba4af6
JB
1247
1248 /* The dies in a compilation unit form an n-ary tree. PARENT
1249 points to this die's parent; CHILD points to the first child of
1250 this node; and all the children of a given node are chained
4950bc1c 1251 together via their SIBLING fields. */
639d11d3
DC
1252 struct die_info *child; /* Its first child, if any. */
1253 struct die_info *sibling; /* Its next sibling, if any. */
1254 struct die_info *parent; /* Its parent, if any. */
c906108c 1255
b60c80d6
DJ
1256 /* An array of attributes, with NUM_ATTRS elements. There may be
1257 zero, but it's not common and zero-sized arrays are not
1258 sufficiently portable C. */
1259 struct attribute attrs[1];
c906108c
SS
1260 };
1261
0963b4bd 1262/* Get at parts of an attribute structure. */
c906108c
SS
1263
1264#define DW_STRING(attr) ((attr)->u.str)
8285870a 1265#define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
c906108c
SS
1266#define DW_UNSND(attr) ((attr)->u.unsnd)
1267#define DW_BLOCK(attr) ((attr)->u.blk)
1268#define DW_SND(attr) ((attr)->u.snd)
1269#define DW_ADDR(attr) ((attr)->u.addr)
ac9ec31b 1270#define DW_SIGNATURE(attr) ((attr)->u.signature)
c906108c 1271
0963b4bd 1272/* Blocks are a bunch of untyped bytes. */
c906108c
SS
1273struct dwarf_block
1274 {
56eb65bd 1275 size_t size;
1d6edc3c
JK
1276
1277 /* Valid only if SIZE is not zero. */
d521ce57 1278 const gdb_byte *data;
c906108c
SS
1279 };
1280
c906108c
SS
1281#ifndef ATTR_ALLOC_CHUNK
1282#define ATTR_ALLOC_CHUNK 4
1283#endif
1284
c906108c
SS
1285/* Allocate fields for structs, unions and enums in this size. */
1286#ifndef DW_FIELD_ALLOC_CHUNK
1287#define DW_FIELD_ALLOC_CHUNK 4
1288#endif
1289
c906108c
SS
1290/* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1291 but this would require a corresponding change in unpack_field_as_long
1292 and friends. */
1293static int bits_per_byte = 8;
1294
52059ffd
TT
1295struct nextfield
1296{
1297 struct nextfield *next;
1298 int accessibility;
1299 int virtuality;
1300 struct field field;
1301};
1302
1303struct nextfnfield
1304{
1305 struct nextfnfield *next;
1306 struct fn_field fnfield;
1307};
1308
1309struct fnfieldlist
1310{
1311 const char *name;
1312 int length;
1313 struct nextfnfield *head;
1314};
1315
1316struct typedef_field_list
1317{
1318 struct typedef_field field;
1319 struct typedef_field_list *next;
1320};
1321
c906108c
SS
1322/* The routines that read and process dies for a C struct or C++ class
1323 pass lists of data member fields and lists of member function fields
1324 in an instance of a field_info structure, as defined below. */
1325struct field_info
c5aa993b 1326 {
0963b4bd 1327 /* List of data member and baseclasses fields. */
52059ffd 1328 struct nextfield *fields, *baseclasses;
c906108c 1329
7d0ccb61 1330 /* Number of fields (including baseclasses). */
c5aa993b 1331 int nfields;
c906108c 1332
c5aa993b
JM
1333 /* Number of baseclasses. */
1334 int nbaseclasses;
c906108c 1335
c5aa993b
JM
1336 /* Set if the accesibility of one of the fields is not public. */
1337 int non_public_fields;
c906108c 1338
c5aa993b
JM
1339 /* Member function fields array, entries are allocated in the order they
1340 are encountered in the object file. */
52059ffd 1341 struct nextfnfield *fnfields;
c906108c 1342
c5aa993b
JM
1343 /* Member function fieldlist array, contains name of possibly overloaded
1344 member function, number of overloaded member functions and a pointer
1345 to the head of the member function field chain. */
52059ffd 1346 struct fnfieldlist *fnfieldlists;
c906108c 1347
c5aa993b
JM
1348 /* Number of entries in the fnfieldlists array. */
1349 int nfnfields;
98751a41
JK
1350
1351 /* typedefs defined inside this class. TYPEDEF_FIELD_LIST contains head of
1352 a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements. */
52059ffd 1353 struct typedef_field_list *typedef_field_list;
98751a41 1354 unsigned typedef_field_list_count;
c5aa993b 1355 };
c906108c 1356
10b3939b
DJ
1357/* One item on the queue of compilation units to read in full symbols
1358 for. */
1359struct dwarf2_queue_item
1360{
1361 struct dwarf2_per_cu_data *per_cu;
95554aad 1362 enum language pretend_language;
10b3939b
DJ
1363 struct dwarf2_queue_item *next;
1364};
1365
1366/* The current queue. */
1367static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1368
ae038cb0
DJ
1369/* Loaded secondary compilation units are kept in memory until they
1370 have not been referenced for the processing of this many
1371 compilation units. Set this to zero to disable caching. Cache
1372 sizes of up to at least twenty will improve startup time for
1373 typical inter-CU-reference binaries, at an obvious memory cost. */
1374static int dwarf2_max_cache_age = 5;
920d2a44
AC
1375static void
1376show_dwarf2_max_cache_age (struct ui_file *file, int from_tty,
1377 struct cmd_list_element *c, const char *value)
1378{
3e43a32a
MS
1379 fprintf_filtered (file, _("The upper bound on the age of cached "
1380 "dwarf2 compilation units is %s.\n"),
920d2a44
AC
1381 value);
1382}
4390d890 1383\f
c906108c
SS
1384/* local function prototypes */
1385
a32a8923
DE
1386static const char *get_section_name (const struct dwarf2_section_info *);
1387
1388static const char *get_section_file_name (const struct dwarf2_section_info *);
1389
4efb68b1 1390static void dwarf2_locate_sections (bfd *, asection *, void *);
c906108c 1391
918dd910
JK
1392static void dwarf2_find_base_address (struct die_info *die,
1393 struct dwarf2_cu *cu);
1394
0018ea6f
DE
1395static struct partial_symtab *create_partial_symtab
1396 (struct dwarf2_per_cu_data *per_cu, const char *name);
1397
c67a9c90 1398static void dwarf2_build_psymtabs_hard (struct objfile *);
c906108c 1399
72bf9492
DJ
1400static void scan_partial_symbols (struct partial_die_info *,
1401 CORE_ADDR *, CORE_ADDR *,
5734ee8b 1402 int, struct dwarf2_cu *);
c906108c 1403
72bf9492
DJ
1404static void add_partial_symbol (struct partial_die_info *,
1405 struct dwarf2_cu *);
63d06c5c 1406
72bf9492
DJ
1407static void add_partial_namespace (struct partial_die_info *pdi,
1408 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 1409 int set_addrmap, struct dwarf2_cu *cu);
63d06c5c 1410
5d7cb8df 1411static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
cdc07690 1412 CORE_ADDR *highpc, int set_addrmap,
5d7cb8df
JK
1413 struct dwarf2_cu *cu);
1414
72bf9492
DJ
1415static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1416 struct dwarf2_cu *cu);
91c24f0a 1417
bc30ff58
JB
1418static void add_partial_subprogram (struct partial_die_info *pdi,
1419 CORE_ADDR *lowpc, CORE_ADDR *highpc,
5734ee8b 1420 int need_pc, struct dwarf2_cu *cu);
bc30ff58 1421
257e7a09
YQ
1422static void dwarf2_read_symtab (struct partial_symtab *,
1423 struct objfile *);
c906108c 1424
a14ed312 1425static void psymtab_to_symtab_1 (struct partial_symtab *);
c906108c 1426
433df2d4
DE
1427static struct abbrev_info *abbrev_table_lookup_abbrev
1428 (const struct abbrev_table *, unsigned int);
1429
1430static struct abbrev_table *abbrev_table_read_table
1431 (struct dwarf2_section_info *, sect_offset);
1432
1433static void abbrev_table_free (struct abbrev_table *);
1434
f4dc4d17
DE
1435static void abbrev_table_free_cleanup (void *);
1436
dee91e82
DE
1437static void dwarf2_read_abbrevs (struct dwarf2_cu *,
1438 struct dwarf2_section_info *);
c906108c 1439
f3dd6933 1440static void dwarf2_free_abbrev_table (void *);
c906108c 1441
d521ce57 1442static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
6caca83c 1443
dee91e82 1444static struct partial_die_info *load_partial_dies
d521ce57 1445 (const struct die_reader_specs *, const gdb_byte *, int);
72bf9492 1446
d521ce57
TT
1447static const gdb_byte *read_partial_die (const struct die_reader_specs *,
1448 struct partial_die_info *,
1449 struct abbrev_info *,
1450 unsigned int,
1451 const gdb_byte *);
c906108c 1452
36586728 1453static struct partial_die_info *find_partial_die (sect_offset, int,
10b3939b 1454 struct dwarf2_cu *);
72bf9492
DJ
1455
1456static void fixup_partial_die (struct partial_die_info *,
1457 struct dwarf2_cu *);
1458
d521ce57
TT
1459static const gdb_byte *read_attribute (const struct die_reader_specs *,
1460 struct attribute *, struct attr_abbrev *,
1461 const gdb_byte *);
a8329558 1462
a1855c1d 1463static unsigned int read_1_byte (bfd *, const gdb_byte *);
c906108c 1464
a1855c1d 1465static int read_1_signed_byte (bfd *, const gdb_byte *);
c906108c 1466
a1855c1d 1467static unsigned int read_2_bytes (bfd *, const gdb_byte *);
c906108c 1468
a1855c1d 1469static unsigned int read_4_bytes (bfd *, const gdb_byte *);
c906108c 1470
a1855c1d 1471static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
c906108c 1472
d521ce57 1473static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
891d2f0b 1474 unsigned int *);
c906108c 1475
d521ce57 1476static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
c764a876
DE
1477
1478static LONGEST read_checked_initial_length_and_offset
d521ce57 1479 (bfd *, const gdb_byte *, const struct comp_unit_head *,
c764a876 1480 unsigned int *, unsigned int *);
613e1657 1481
d521ce57
TT
1482static LONGEST read_offset (bfd *, const gdb_byte *,
1483 const struct comp_unit_head *,
c764a876
DE
1484 unsigned int *);
1485
d521ce57 1486static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
613e1657 1487
f4dc4d17
DE
1488static sect_offset read_abbrev_offset (struct dwarf2_section_info *,
1489 sect_offset);
1490
d521ce57 1491static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
c906108c 1492
d521ce57 1493static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
c906108c 1494
d521ce57
TT
1495static const char *read_indirect_string (bfd *, const gdb_byte *,
1496 const struct comp_unit_head *,
1497 unsigned int *);
4bdf3d34 1498
d521ce57 1499static const char *read_indirect_string_from_dwz (struct dwz_file *, LONGEST);
36586728 1500
d521ce57 1501static ULONGEST read_unsigned_leb128 (bfd *, const gdb_byte *, unsigned int *);
c906108c 1502
d521ce57 1503static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
c906108c 1504
d521ce57
TT
1505static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1506 const gdb_byte *,
3019eac3
DE
1507 unsigned int *);
1508
d521ce57 1509static const char *read_str_index (const struct die_reader_specs *reader,
342587c4 1510 ULONGEST str_index);
3019eac3 1511
e142c38c 1512static void set_cu_language (unsigned int, struct dwarf2_cu *);
c906108c 1513
e142c38c
DJ
1514static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1515 struct dwarf2_cu *);
c906108c 1516
348e048f 1517static struct attribute *dwarf2_attr_no_follow (struct die_info *,
45e58e77 1518 unsigned int);
348e048f 1519
05cf31d1
JB
1520static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1521 struct dwarf2_cu *cu);
1522
e142c38c 1523static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
3ca72b44 1524
e142c38c 1525static struct die_info *die_specification (struct die_info *die,
f2f0e013 1526 struct dwarf2_cu **);
63d06c5c 1527
debd256d
JB
1528static void free_line_header (struct line_header *lh);
1529
3019eac3
DE
1530static struct line_header *dwarf_decode_line_header (unsigned int offset,
1531 struct dwarf2_cu *cu);
debd256d 1532
f3f5162e 1533static void dwarf_decode_lines (struct line_header *, const char *,
c3b7b696 1534 struct dwarf2_cu *, struct partial_symtab *,
527f3840 1535 CORE_ADDR, int decode_mapping);
c906108c 1536
4d663531 1537static void dwarf2_start_subfile (const char *, const char *);
c906108c 1538
43f3e411
DE
1539static struct compunit_symtab *dwarf2_start_symtab (struct dwarf2_cu *,
1540 const char *, const char *,
1541 CORE_ADDR);
f4dc4d17 1542
a14ed312 1543static struct symbol *new_symbol (struct die_info *, struct type *,
e7c27a73 1544 struct dwarf2_cu *);
c906108c 1545
34eaf542
TT
1546static struct symbol *new_symbol_full (struct die_info *, struct type *,
1547 struct dwarf2_cu *, struct symbol *);
1548
ff39bb5e 1549static void dwarf2_const_value (const struct attribute *, struct symbol *,
e7c27a73 1550 struct dwarf2_cu *);
c906108c 1551
ff39bb5e 1552static void dwarf2_const_value_attr (const struct attribute *attr,
98bfdba5
PA
1553 struct type *type,
1554 const char *name,
1555 struct obstack *obstack,
12df843f 1556 struct dwarf2_cu *cu, LONGEST *value,
d521ce57 1557 const gdb_byte **bytes,
98bfdba5 1558 struct dwarf2_locexpr_baton **baton);
2df3850c 1559
e7c27a73 1560static struct type *die_type (struct die_info *, struct dwarf2_cu *);
c906108c 1561
b4ba55a1
JB
1562static int need_gnat_info (struct dwarf2_cu *);
1563
3e43a32a
MS
1564static struct type *die_descriptive_type (struct die_info *,
1565 struct dwarf2_cu *);
b4ba55a1
JB
1566
1567static void set_descriptive_type (struct type *, struct die_info *,
1568 struct dwarf2_cu *);
1569
e7c27a73
DJ
1570static struct type *die_containing_type (struct die_info *,
1571 struct dwarf2_cu *);
c906108c 1572
ff39bb5e 1573static struct type *lookup_die_type (struct die_info *, const struct attribute *,
673bfd45 1574 struct dwarf2_cu *);
c906108c 1575
f792889a 1576static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
c906108c 1577
673bfd45
DE
1578static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1579
0d5cff50 1580static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
63d06c5c 1581
6e70227d 1582static char *typename_concat (struct obstack *obs, const char *prefix,
f55ee35c
JK
1583 const char *suffix, int physname,
1584 struct dwarf2_cu *cu);
63d06c5c 1585
e7c27a73 1586static void read_file_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1587
348e048f
DE
1588static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1589
e7c27a73 1590static void read_func_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1591
e7c27a73 1592static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1593
96408a79
SA
1594static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1595
ff013f42
JK
1596static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1597 struct dwarf2_cu *, struct partial_symtab *);
1598
a14ed312 1599static int dwarf2_get_pc_bounds (struct die_info *,
d85a05f0
DJ
1600 CORE_ADDR *, CORE_ADDR *, struct dwarf2_cu *,
1601 struct partial_symtab *);
c906108c 1602
fae299cd
DC
1603static void get_scope_pc_bounds (struct die_info *,
1604 CORE_ADDR *, CORE_ADDR *,
1605 struct dwarf2_cu *);
1606
801e3a5b
JB
1607static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1608 CORE_ADDR, struct dwarf2_cu *);
1609
a14ed312 1610static void dwarf2_add_field (struct field_info *, struct die_info *,
e7c27a73 1611 struct dwarf2_cu *);
c906108c 1612
a14ed312 1613static void dwarf2_attach_fields_to_type (struct field_info *,
e7c27a73 1614 struct type *, struct dwarf2_cu *);
c906108c 1615
a14ed312 1616static void dwarf2_add_member_fn (struct field_info *,
e26fb1d7 1617 struct die_info *, struct type *,
e7c27a73 1618 struct dwarf2_cu *);
c906108c 1619
a14ed312 1620static void dwarf2_attach_fn_fields_to_type (struct field_info *,
3e43a32a
MS
1621 struct type *,
1622 struct dwarf2_cu *);
c906108c 1623
134d01f1 1624static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1625
e7c27a73 1626static void read_common_block (struct die_info *, struct dwarf2_cu *);
c906108c 1627
e7c27a73 1628static void read_namespace (struct die_info *die, struct dwarf2_cu *);
d9fa45fe 1629
5d7cb8df
JK
1630static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1631
27aa8d6a
SW
1632static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1633
74921315
KS
1634static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1635
f55ee35c
JK
1636static struct type *read_module_type (struct die_info *die,
1637 struct dwarf2_cu *cu);
1638
38d518c9 1639static const char *namespace_name (struct die_info *die,
e142c38c 1640 int *is_anonymous, struct dwarf2_cu *);
38d518c9 1641
134d01f1 1642static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1643
e7c27a73 1644static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
c906108c 1645
6e70227d 1646static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
7ca2d3a3
DL
1647 struct dwarf2_cu *);
1648
bf6af496 1649static struct die_info *read_die_and_siblings_1
d521ce57 1650 (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
bf6af496 1651 struct die_info *);
639d11d3 1652
dee91e82 1653static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
d521ce57
TT
1654 const gdb_byte *info_ptr,
1655 const gdb_byte **new_info_ptr,
639d11d3
DC
1656 struct die_info *parent);
1657
d521ce57
TT
1658static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1659 struct die_info **, const gdb_byte *,
1660 int *, int);
3019eac3 1661
d521ce57
TT
1662static const gdb_byte *read_full_die (const struct die_reader_specs *,
1663 struct die_info **, const gdb_byte *,
1664 int *);
93311388 1665
e7c27a73 1666static void process_die (struct die_info *, struct dwarf2_cu *);
c906108c 1667
15d034d0
TT
1668static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1669 struct obstack *);
71c25dea 1670
15d034d0 1671static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
9219021c 1672
15d034d0 1673static const char *dwarf2_full_name (const char *name,
98bfdba5
PA
1674 struct die_info *die,
1675 struct dwarf2_cu *cu);
1676
ca69b9e6
DE
1677static const char *dwarf2_physname (const char *name, struct die_info *die,
1678 struct dwarf2_cu *cu);
1679
e142c38c 1680static struct die_info *dwarf2_extension (struct die_info *die,
f2f0e013 1681 struct dwarf2_cu **);
9219021c 1682
f39c6ffd 1683static const char *dwarf_tag_name (unsigned int);
c906108c 1684
f39c6ffd 1685static const char *dwarf_attr_name (unsigned int);
c906108c 1686
f39c6ffd 1687static const char *dwarf_form_name (unsigned int);
c906108c 1688
a14ed312 1689static char *dwarf_bool_name (unsigned int);
c906108c 1690
f39c6ffd 1691static const char *dwarf_type_encoding_name (unsigned int);
c906108c 1692
f9aca02d 1693static struct die_info *sibling_die (struct die_info *);
c906108c 1694
d97bc12b
DE
1695static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1696
1697static void dump_die_for_error (struct die_info *);
1698
1699static void dump_die_1 (struct ui_file *, int level, int max_level,
1700 struct die_info *);
c906108c 1701
d97bc12b 1702/*static*/ void dump_die (struct die_info *, int max_level);
c906108c 1703
51545339 1704static void store_in_ref_table (struct die_info *,
10b3939b 1705 struct dwarf2_cu *);
c906108c 1706
ff39bb5e 1707static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
c906108c 1708
ff39bb5e 1709static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
a02abb62 1710
348e048f 1711static struct die_info *follow_die_ref_or_sig (struct die_info *,
ff39bb5e 1712 const struct attribute *,
348e048f
DE
1713 struct dwarf2_cu **);
1714
10b3939b 1715static struct die_info *follow_die_ref (struct die_info *,
ff39bb5e 1716 const struct attribute *,
f2f0e013 1717 struct dwarf2_cu **);
c906108c 1718
348e048f 1719static struct die_info *follow_die_sig (struct die_info *,
ff39bb5e 1720 const struct attribute *,
348e048f
DE
1721 struct dwarf2_cu **);
1722
ac9ec31b
DE
1723static struct type *get_signatured_type (struct die_info *, ULONGEST,
1724 struct dwarf2_cu *);
1725
1726static struct type *get_DW_AT_signature_type (struct die_info *,
ff39bb5e 1727 const struct attribute *,
ac9ec31b
DE
1728 struct dwarf2_cu *);
1729
e5fe5e75 1730static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
348e048f 1731
52dc124a 1732static void read_signatured_type (struct signatured_type *);
348e048f 1733
c906108c
SS
1734/* memory allocation interface */
1735
7b5a2f43 1736static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
c906108c 1737
b60c80d6 1738static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
c906108c 1739
43f3e411 1740static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
2e276125 1741
6e5a29e1 1742static int attr_form_is_block (const struct attribute *);
8e19ed76 1743
6e5a29e1 1744static int attr_form_is_section_offset (const struct attribute *);
3690dd37 1745
6e5a29e1 1746static int attr_form_is_constant (const struct attribute *);
3690dd37 1747
6e5a29e1 1748static int attr_form_is_ref (const struct attribute *);
7771576e 1749
8cf6f0b1
TT
1750static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1751 struct dwarf2_loclist_baton *baton,
ff39bb5e 1752 const struct attribute *attr);
8cf6f0b1 1753
ff39bb5e 1754static void dwarf2_symbol_mark_computed (const struct attribute *attr,
93e7bd98 1755 struct symbol *sym,
f1e6e072
TT
1756 struct dwarf2_cu *cu,
1757 int is_block);
4c2df51b 1758
d521ce57
TT
1759static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1760 const gdb_byte *info_ptr,
1761 struct abbrev_info *abbrev);
4bb7a0a7 1762
72bf9492
DJ
1763static void free_stack_comp_unit (void *);
1764
72bf9492
DJ
1765static hashval_t partial_die_hash (const void *item);
1766
1767static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1768
ae038cb0 1769static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
36586728 1770 (sect_offset offset, unsigned int offset_in_dwz, struct objfile *objfile);
ae038cb0 1771
9816fde3 1772static void init_one_comp_unit (struct dwarf2_cu *cu,
23745b47 1773 struct dwarf2_per_cu_data *per_cu);
9816fde3
JK
1774
1775static void prepare_one_comp_unit (struct dwarf2_cu *cu,
95554aad
TT
1776 struct die_info *comp_unit_die,
1777 enum language pretend_language);
93311388 1778
68dc6402 1779static void free_heap_comp_unit (void *);
ae038cb0
DJ
1780
1781static void free_cached_comp_units (void *);
1782
1783static void age_cached_comp_units (void);
1784
dee91e82 1785static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
ae038cb0 1786
f792889a
DJ
1787static struct type *set_die_type (struct die_info *, struct type *,
1788 struct dwarf2_cu *);
1c379e20 1789
ae038cb0
DJ
1790static void create_all_comp_units (struct objfile *);
1791
0e50663e 1792static int create_all_type_units (struct objfile *);
1fd400ff 1793
95554aad
TT
1794static void load_full_comp_unit (struct dwarf2_per_cu_data *,
1795 enum language);
10b3939b 1796
95554aad
TT
1797static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1798 enum language);
10b3939b 1799
f4dc4d17
DE
1800static void process_full_type_unit (struct dwarf2_per_cu_data *,
1801 enum language);
1802
10b3939b
DJ
1803static void dwarf2_add_dependence (struct dwarf2_cu *,
1804 struct dwarf2_per_cu_data *);
1805
ae038cb0
DJ
1806static void dwarf2_mark (struct dwarf2_cu *);
1807
1808static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1809
b64f50a1 1810static struct type *get_die_type_at_offset (sect_offset,
ac9ec31b 1811 struct dwarf2_per_cu_data *);
673bfd45 1812
f792889a 1813static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
72019c9c 1814
9291a0cd
TT
1815static void dwarf2_release_queue (void *dummy);
1816
95554aad
TT
1817static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1818 enum language pretend_language);
1819
a0f42c21 1820static void process_queue (void);
9291a0cd
TT
1821
1822static void find_file_and_directory (struct die_info *die,
1823 struct dwarf2_cu *cu,
15d034d0 1824 const char **name, const char **comp_dir);
9291a0cd
TT
1825
1826static char *file_full_name (int file, struct line_header *lh,
1827 const char *comp_dir);
1828
d521ce57 1829static const gdb_byte *read_and_check_comp_unit_head
36586728
TT
1830 (struct comp_unit_head *header,
1831 struct dwarf2_section_info *section,
d521ce57 1832 struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
36586728
TT
1833 int is_debug_types_section);
1834
fd820528 1835static void init_cutu_and_read_dies
f4dc4d17
DE
1836 (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1837 int use_existing_cu, int keep,
3019eac3
DE
1838 die_reader_func_ftype *die_reader_func, void *data);
1839
dee91e82
DE
1840static void init_cutu_and_read_dies_simple
1841 (struct dwarf2_per_cu_data *this_cu,
1842 die_reader_func_ftype *die_reader_func, void *data);
9291a0cd 1843
673bfd45 1844static htab_t allocate_signatured_type_table (struct objfile *objfile);
1fd400ff 1845
3019eac3
DE
1846static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1847
57d63ce2
DE
1848static struct dwo_unit *lookup_dwo_unit_in_dwp
1849 (struct dwp_file *dwp_file, const char *comp_dir,
1850 ULONGEST signature, int is_debug_types);
a2ce51a0
DE
1851
1852static struct dwp_file *get_dwp_file (void);
1853
3019eac3 1854static struct dwo_unit *lookup_dwo_comp_unit
a1855c1d 1855 (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
3019eac3
DE
1856
1857static struct dwo_unit *lookup_dwo_type_unit
a1855c1d 1858 (struct signatured_type *, const char *, const char *);
3019eac3 1859
89e63ee4
DE
1860static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1861
3019eac3
DE
1862static void free_dwo_file_cleanup (void *);
1863
95554aad
TT
1864static void process_cu_includes (void);
1865
1b80a9fa 1866static void check_producer (struct dwarf2_cu *cu);
527f3840
JK
1867
1868static void free_line_header_voidp (void *arg);
4390d890
DE
1869\f
1870/* Various complaints about symbol reading that don't abort the process. */
1871
1872static void
1873dwarf2_statement_list_fits_in_line_number_section_complaint (void)
1874{
1875 complaint (&symfile_complaints,
1876 _("statement list doesn't fit in .debug_line section"));
1877}
1878
1879static void
1880dwarf2_debug_line_missing_file_complaint (void)
1881{
1882 complaint (&symfile_complaints,
1883 _(".debug_line section has line data without a file"));
1884}
1885
1886static void
1887dwarf2_debug_line_missing_end_sequence_complaint (void)
1888{
1889 complaint (&symfile_complaints,
1890 _(".debug_line section has line "
1891 "program sequence without an end"));
1892}
1893
1894static void
1895dwarf2_complex_location_expr_complaint (void)
1896{
1897 complaint (&symfile_complaints, _("location expression too complex"));
1898}
1899
1900static void
1901dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
1902 int arg3)
1903{
1904 complaint (&symfile_complaints,
1905 _("const value length mismatch for '%s', got %d, expected %d"),
1906 arg1, arg2, arg3);
1907}
1908
1909static void
1910dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
1911{
1912 complaint (&symfile_complaints,
1913 _("debug info runs off end of %s section"
1914 " [in module %s]"),
a32a8923
DE
1915 get_section_name (section),
1916 get_section_file_name (section));
4390d890 1917}
1b80a9fa 1918
4390d890
DE
1919static void
1920dwarf2_macro_malformed_definition_complaint (const char *arg1)
1921{
1922 complaint (&symfile_complaints,
1923 _("macro debug info contains a "
1924 "malformed macro definition:\n`%s'"),
1925 arg1);
1926}
1927
1928static void
1929dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
1930{
1931 complaint (&symfile_complaints,
1932 _("invalid attribute class or form for '%s' in '%s'"),
1933 arg1, arg2);
1934}
527f3840
JK
1935
1936/* Hash function for line_header_hash. */
1937
1938static hashval_t
1939line_header_hash (const struct line_header *ofs)
1940{
1941 return ofs->offset.sect_off ^ ofs->offset_in_dwz;
1942}
1943
1944/* Hash function for htab_create_alloc_ex for line_header_hash. */
1945
1946static hashval_t
1947line_header_hash_voidp (const void *item)
1948{
1949 const struct line_header *ofs = item;
1950
1951 return line_header_hash (ofs);
1952}
1953
1954/* Equality function for line_header_hash. */
1955
1956static int
1957line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
1958{
1959 const struct line_header *ofs_lhs = item_lhs;
1960 const struct line_header *ofs_rhs = item_rhs;
1961
1962 return (ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off
1963 && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
1964}
1965
4390d890 1966\f
9291a0cd
TT
1967#if WORDS_BIGENDIAN
1968
1969/* Convert VALUE between big- and little-endian. */
1970static offset_type
1971byte_swap (offset_type value)
1972{
1973 offset_type result;
1974
1975 result = (value & 0xff) << 24;
1976 result |= (value & 0xff00) << 8;
1977 result |= (value & 0xff0000) >> 8;
1978 result |= (value & 0xff000000) >> 24;
1979 return result;
1980}
1981
1982#define MAYBE_SWAP(V) byte_swap (V)
1983
1984#else
1985#define MAYBE_SWAP(V) (V)
1986#endif /* WORDS_BIGENDIAN */
1987
31aa7e4e
JB
1988/* Read the given attribute value as an address, taking the attribute's
1989 form into account. */
1990
1991static CORE_ADDR
1992attr_value_as_address (struct attribute *attr)
1993{
1994 CORE_ADDR addr;
1995
1996 if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
1997 {
1998 /* Aside from a few clearly defined exceptions, attributes that
1999 contain an address must always be in DW_FORM_addr form.
2000 Unfortunately, some compilers happen to be violating this
2001 requirement by encoding addresses using other forms, such
2002 as DW_FORM_data4 for example. For those broken compilers,
2003 we try to do our best, without any guarantee of success,
2004 to interpret the address correctly. It would also be nice
2005 to generate a complaint, but that would require us to maintain
2006 a list of legitimate cases where a non-address form is allowed,
2007 as well as update callers to pass in at least the CU's DWARF
2008 version. This is more overhead than what we're willing to
2009 expand for a pretty rare case. */
2010 addr = DW_UNSND (attr);
2011 }
2012 else
2013 addr = DW_ADDR (attr);
2014
2015 return addr;
2016}
2017
9291a0cd
TT
2018/* The suffix for an index file. */
2019#define INDEX_SUFFIX ".gdb-index"
2020
c906108c 2021/* Try to locate the sections we need for DWARF 2 debugging
251d32d9
TG
2022 information and return true if we have enough to do something.
2023 NAMES points to the dwarf2 section names, or is NULL if the standard
2024 ELF names are used. */
c906108c
SS
2025
2026int
251d32d9
TG
2027dwarf2_has_info (struct objfile *objfile,
2028 const struct dwarf2_debug_sections *names)
c906108c 2029{
be391dca
TT
2030 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
2031 if (!dwarf2_per_objfile)
2032 {
2033 /* Initialize per-objfile state. */
2034 struct dwarf2_per_objfile *data
2035 = obstack_alloc (&objfile->objfile_obstack, sizeof (*data));
9a619af0 2036
be391dca
TT
2037 memset (data, 0, sizeof (*data));
2038 set_objfile_data (objfile, dwarf2_objfile_data_key, data);
2039 dwarf2_per_objfile = data;
6502dd73 2040
251d32d9
TG
2041 bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections,
2042 (void *) names);
be391dca
TT
2043 dwarf2_per_objfile->objfile = objfile;
2044 }
73869dc2
DE
2045 return (!dwarf2_per_objfile->info.is_virtual
2046 && dwarf2_per_objfile->info.s.asection != NULL
2047 && !dwarf2_per_objfile->abbrev.is_virtual
2048 && dwarf2_per_objfile->abbrev.s.asection != NULL);
2049}
2050
2051/* Return the containing section of virtual section SECTION. */
2052
2053static struct dwarf2_section_info *
2054get_containing_section (const struct dwarf2_section_info *section)
2055{
2056 gdb_assert (section->is_virtual);
2057 return section->s.containing_section;
c906108c
SS
2058}
2059
a32a8923
DE
2060/* Return the bfd owner of SECTION. */
2061
2062static struct bfd *
2063get_section_bfd_owner (const struct dwarf2_section_info *section)
2064{
73869dc2
DE
2065 if (section->is_virtual)
2066 {
2067 section = get_containing_section (section);
2068 gdb_assert (!section->is_virtual);
2069 }
2070 return section->s.asection->owner;
a32a8923
DE
2071}
2072
2073/* Return the bfd section of SECTION.
2074 Returns NULL if the section is not present. */
2075
2076static asection *
2077get_section_bfd_section (const struct dwarf2_section_info *section)
2078{
73869dc2
DE
2079 if (section->is_virtual)
2080 {
2081 section = get_containing_section (section);
2082 gdb_assert (!section->is_virtual);
2083 }
2084 return section->s.asection;
a32a8923
DE
2085}
2086
2087/* Return the name of SECTION. */
2088
2089static const char *
2090get_section_name (const struct dwarf2_section_info *section)
2091{
2092 asection *sectp = get_section_bfd_section (section);
2093
2094 gdb_assert (sectp != NULL);
2095 return bfd_section_name (get_section_bfd_owner (section), sectp);
2096}
2097
2098/* Return the name of the file SECTION is in. */
2099
2100static const char *
2101get_section_file_name (const struct dwarf2_section_info *section)
2102{
2103 bfd *abfd = get_section_bfd_owner (section);
2104
2105 return bfd_get_filename (abfd);
2106}
2107
2108/* Return the id of SECTION.
2109 Returns 0 if SECTION doesn't exist. */
2110
2111static int
2112get_section_id (const struct dwarf2_section_info *section)
2113{
2114 asection *sectp = get_section_bfd_section (section);
2115
2116 if (sectp == NULL)
2117 return 0;
2118 return sectp->id;
2119}
2120
2121/* Return the flags of SECTION.
73869dc2 2122 SECTION (or containing section if this is a virtual section) must exist. */
a32a8923
DE
2123
2124static int
2125get_section_flags (const struct dwarf2_section_info *section)
2126{
2127 asection *sectp = get_section_bfd_section (section);
2128
2129 gdb_assert (sectp != NULL);
2130 return bfd_get_section_flags (sectp->owner, sectp);
2131}
2132
251d32d9
TG
2133/* When loading sections, we look either for uncompressed section or for
2134 compressed section names. */
233a11ab
CS
2135
2136static int
251d32d9
TG
2137section_is_p (const char *section_name,
2138 const struct dwarf2_section_names *names)
233a11ab 2139{
251d32d9
TG
2140 if (names->normal != NULL
2141 && strcmp (section_name, names->normal) == 0)
2142 return 1;
2143 if (names->compressed != NULL
2144 && strcmp (section_name, names->compressed) == 0)
2145 return 1;
2146 return 0;
233a11ab
CS
2147}
2148
c906108c
SS
2149/* This function is mapped across the sections and remembers the
2150 offset and size of each of the debugging sections we are interested
2151 in. */
2152
2153static void
251d32d9 2154dwarf2_locate_sections (bfd *abfd, asection *sectp, void *vnames)
c906108c 2155{
251d32d9 2156 const struct dwarf2_debug_sections *names;
dc7650b8 2157 flagword aflag = bfd_get_section_flags (abfd, sectp);
251d32d9
TG
2158
2159 if (vnames == NULL)
2160 names = &dwarf2_elf_names;
2161 else
2162 names = (const struct dwarf2_debug_sections *) vnames;
2163
dc7650b8
JK
2164 if ((aflag & SEC_HAS_CONTENTS) == 0)
2165 {
2166 }
2167 else if (section_is_p (sectp->name, &names->info))
c906108c 2168 {
73869dc2 2169 dwarf2_per_objfile->info.s.asection = sectp;
dce234bc 2170 dwarf2_per_objfile->info.size = bfd_get_section_size (sectp);
c906108c 2171 }
251d32d9 2172 else if (section_is_p (sectp->name, &names->abbrev))
c906108c 2173 {
73869dc2 2174 dwarf2_per_objfile->abbrev.s.asection = sectp;
dce234bc 2175 dwarf2_per_objfile->abbrev.size = bfd_get_section_size (sectp);
c906108c 2176 }
251d32d9 2177 else if (section_is_p (sectp->name, &names->line))
c906108c 2178 {
73869dc2 2179 dwarf2_per_objfile->line.s.asection = sectp;
dce234bc 2180 dwarf2_per_objfile->line.size = bfd_get_section_size (sectp);
c906108c 2181 }
251d32d9 2182 else if (section_is_p (sectp->name, &names->loc))
c906108c 2183 {
73869dc2 2184 dwarf2_per_objfile->loc.s.asection = sectp;
dce234bc 2185 dwarf2_per_objfile->loc.size = bfd_get_section_size (sectp);
c906108c 2186 }
251d32d9 2187 else if (section_is_p (sectp->name, &names->macinfo))
c906108c 2188 {
73869dc2 2189 dwarf2_per_objfile->macinfo.s.asection = sectp;
dce234bc 2190 dwarf2_per_objfile->macinfo.size = bfd_get_section_size (sectp);
c906108c 2191 }
cf2c3c16
TT
2192 else if (section_is_p (sectp->name, &names->macro))
2193 {
73869dc2 2194 dwarf2_per_objfile->macro.s.asection = sectp;
cf2c3c16
TT
2195 dwarf2_per_objfile->macro.size = bfd_get_section_size (sectp);
2196 }
251d32d9 2197 else if (section_is_p (sectp->name, &names->str))
c906108c 2198 {
73869dc2 2199 dwarf2_per_objfile->str.s.asection = sectp;
dce234bc 2200 dwarf2_per_objfile->str.size = bfd_get_section_size (sectp);
c906108c 2201 }
3019eac3
DE
2202 else if (section_is_p (sectp->name, &names->addr))
2203 {
73869dc2 2204 dwarf2_per_objfile->addr.s.asection = sectp;
3019eac3
DE
2205 dwarf2_per_objfile->addr.size = bfd_get_section_size (sectp);
2206 }
251d32d9 2207 else if (section_is_p (sectp->name, &names->frame))
b6af0555 2208 {
73869dc2 2209 dwarf2_per_objfile->frame.s.asection = sectp;
dce234bc 2210 dwarf2_per_objfile->frame.size = bfd_get_section_size (sectp);
b6af0555 2211 }
251d32d9 2212 else if (section_is_p (sectp->name, &names->eh_frame))
b6af0555 2213 {
73869dc2 2214 dwarf2_per_objfile->eh_frame.s.asection = sectp;
dc7650b8 2215 dwarf2_per_objfile->eh_frame.size = bfd_get_section_size (sectp);
b6af0555 2216 }
251d32d9 2217 else if (section_is_p (sectp->name, &names->ranges))
af34e669 2218 {
73869dc2 2219 dwarf2_per_objfile->ranges.s.asection = sectp;
dce234bc 2220 dwarf2_per_objfile->ranges.size = bfd_get_section_size (sectp);
af34e669 2221 }
251d32d9 2222 else if (section_is_p (sectp->name, &names->types))
348e048f 2223 {
8b70b953
TT
2224 struct dwarf2_section_info type_section;
2225
2226 memset (&type_section, 0, sizeof (type_section));
73869dc2 2227 type_section.s.asection = sectp;
8b70b953
TT
2228 type_section.size = bfd_get_section_size (sectp);
2229
2230 VEC_safe_push (dwarf2_section_info_def, dwarf2_per_objfile->types,
2231 &type_section);
348e048f 2232 }
251d32d9 2233 else if (section_is_p (sectp->name, &names->gdb_index))
9291a0cd 2234 {
73869dc2 2235 dwarf2_per_objfile->gdb_index.s.asection = sectp;
9291a0cd
TT
2236 dwarf2_per_objfile->gdb_index.size = bfd_get_section_size (sectp);
2237 }
dce234bc 2238
72dca2f5
FR
2239 if ((bfd_get_section_flags (abfd, sectp) & SEC_LOAD)
2240 && bfd_section_vma (abfd, sectp) == 0)
2241 dwarf2_per_objfile->has_section_at_zero = 1;
c906108c
SS
2242}
2243
fceca515
DE
2244/* A helper function that decides whether a section is empty,
2245 or not present. */
9e0ac564
TT
2246
2247static int
19ac8c2e 2248dwarf2_section_empty_p (const struct dwarf2_section_info *section)
9e0ac564 2249{
73869dc2
DE
2250 if (section->is_virtual)
2251 return section->size == 0;
2252 return section->s.asection == NULL || section->size == 0;
9e0ac564
TT
2253}
2254
3019eac3
DE
2255/* Read the contents of the section INFO.
2256 OBJFILE is the main object file, but not necessarily the file where
a32a8923
DE
2257 the section comes from. E.g., for DWO files the bfd of INFO is the bfd
2258 of the DWO file.
dce234bc 2259 If the section is compressed, uncompress it before returning. */
c906108c 2260
dce234bc
PP
2261static void
2262dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info)
c906108c 2263{
a32a8923 2264 asection *sectp;
3019eac3 2265 bfd *abfd;
dce234bc 2266 gdb_byte *buf, *retbuf;
c906108c 2267
be391dca
TT
2268 if (info->readin)
2269 return;
dce234bc 2270 info->buffer = NULL;
be391dca 2271 info->readin = 1;
188dd5d6 2272
9e0ac564 2273 if (dwarf2_section_empty_p (info))
dce234bc 2274 return;
c906108c 2275
a32a8923 2276 sectp = get_section_bfd_section (info);
3019eac3 2277
73869dc2
DE
2278 /* If this is a virtual section we need to read in the real one first. */
2279 if (info->is_virtual)
2280 {
2281 struct dwarf2_section_info *containing_section =
2282 get_containing_section (info);
2283
2284 gdb_assert (sectp != NULL);
2285 if ((sectp->flags & SEC_RELOC) != 0)
2286 {
2287 error (_("Dwarf Error: DWP format V2 with relocations is not"
2288 " supported in section %s [in module %s]"),
2289 get_section_name (info), get_section_file_name (info));
2290 }
2291 dwarf2_read_section (objfile, containing_section);
2292 /* Other code should have already caught virtual sections that don't
2293 fit. */
2294 gdb_assert (info->virtual_offset + info->size
2295 <= containing_section->size);
2296 /* If the real section is empty or there was a problem reading the
2297 section we shouldn't get here. */
2298 gdb_assert (containing_section->buffer != NULL);
2299 info->buffer = containing_section->buffer + info->virtual_offset;
2300 return;
2301 }
2302
4bf44c1c
TT
2303 /* If the section has relocations, we must read it ourselves.
2304 Otherwise we attach it to the BFD. */
2305 if ((sectp->flags & SEC_RELOC) == 0)
dce234bc 2306 {
d521ce57 2307 info->buffer = gdb_bfd_map_section (sectp, &info->size);
4bf44c1c 2308 return;
dce234bc 2309 }
dce234bc 2310
4bf44c1c
TT
2311 buf = obstack_alloc (&objfile->objfile_obstack, info->size);
2312 info->buffer = buf;
dce234bc
PP
2313
2314 /* When debugging .o files, we may need to apply relocations; see
2315 http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2316 We never compress sections in .o files, so we only need to
2317 try this when the section is not compressed. */
ac8035ab 2318 retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
dce234bc
PP
2319 if (retbuf != NULL)
2320 {
2321 info->buffer = retbuf;
2322 return;
2323 }
2324
a32a8923
DE
2325 abfd = get_section_bfd_owner (info);
2326 gdb_assert (abfd != NULL);
2327
dce234bc
PP
2328 if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2329 || bfd_bread (buf, info->size, abfd) != info->size)
19ac8c2e
DE
2330 {
2331 error (_("Dwarf Error: Can't read DWARF data"
2332 " in section %s [in module %s]"),
2333 bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2334 }
dce234bc
PP
2335}
2336
9e0ac564
TT
2337/* A helper function that returns the size of a section in a safe way.
2338 If you are positive that the section has been read before using the
2339 size, then it is safe to refer to the dwarf2_section_info object's
2340 "size" field directly. In other cases, you must call this
2341 function, because for compressed sections the size field is not set
2342 correctly until the section has been read. */
2343
2344static bfd_size_type
2345dwarf2_section_size (struct objfile *objfile,
2346 struct dwarf2_section_info *info)
2347{
2348 if (!info->readin)
2349 dwarf2_read_section (objfile, info);
2350 return info->size;
2351}
2352
dce234bc 2353/* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
0963b4bd 2354 SECTION_NAME. */
af34e669 2355
dce234bc 2356void
3017a003
TG
2357dwarf2_get_section_info (struct objfile *objfile,
2358 enum dwarf2_section_enum sect,
d521ce57 2359 asection **sectp, const gdb_byte **bufp,
dce234bc
PP
2360 bfd_size_type *sizep)
2361{
2362 struct dwarf2_per_objfile *data
2363 = objfile_data (objfile, dwarf2_objfile_data_key);
2364 struct dwarf2_section_info *info;
a3b2a86b
TT
2365
2366 /* We may see an objfile without any DWARF, in which case we just
2367 return nothing. */
2368 if (data == NULL)
2369 {
2370 *sectp = NULL;
2371 *bufp = NULL;
2372 *sizep = 0;
2373 return;
2374 }
3017a003
TG
2375 switch (sect)
2376 {
2377 case DWARF2_DEBUG_FRAME:
2378 info = &data->frame;
2379 break;
2380 case DWARF2_EH_FRAME:
2381 info = &data->eh_frame;
2382 break;
2383 default:
2384 gdb_assert_not_reached ("unexpected section");
2385 }
dce234bc 2386
9e0ac564 2387 dwarf2_read_section (objfile, info);
dce234bc 2388
a32a8923 2389 *sectp = get_section_bfd_section (info);
dce234bc
PP
2390 *bufp = info->buffer;
2391 *sizep = info->size;
2392}
2393
36586728
TT
2394/* A helper function to find the sections for a .dwz file. */
2395
2396static void
2397locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2398{
2399 struct dwz_file *dwz_file = arg;
2400
2401 /* Note that we only support the standard ELF names, because .dwz
2402 is ELF-only (at the time of writing). */
2403 if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2404 {
73869dc2 2405 dwz_file->abbrev.s.asection = sectp;
36586728
TT
2406 dwz_file->abbrev.size = bfd_get_section_size (sectp);
2407 }
2408 else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2409 {
73869dc2 2410 dwz_file->info.s.asection = sectp;
36586728
TT
2411 dwz_file->info.size = bfd_get_section_size (sectp);
2412 }
2413 else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2414 {
73869dc2 2415 dwz_file->str.s.asection = sectp;
36586728
TT
2416 dwz_file->str.size = bfd_get_section_size (sectp);
2417 }
2418 else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2419 {
73869dc2 2420 dwz_file->line.s.asection = sectp;
36586728
TT
2421 dwz_file->line.size = bfd_get_section_size (sectp);
2422 }
2423 else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2424 {
73869dc2 2425 dwz_file->macro.s.asection = sectp;
36586728
TT
2426 dwz_file->macro.size = bfd_get_section_size (sectp);
2427 }
2ec9a5e0
TT
2428 else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2429 {
73869dc2 2430 dwz_file->gdb_index.s.asection = sectp;
2ec9a5e0
TT
2431 dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2432 }
36586728
TT
2433}
2434
4db1a1dc
TT
2435/* Open the separate '.dwz' debug file, if needed. Return NULL if
2436 there is no .gnu_debugaltlink section in the file. Error if there
2437 is such a section but the file cannot be found. */
36586728
TT
2438
2439static struct dwz_file *
2440dwarf2_get_dwz_file (void)
2441{
4db1a1dc
TT
2442 bfd *dwz_bfd;
2443 char *data;
36586728
TT
2444 struct cleanup *cleanup;
2445 const char *filename;
2446 struct dwz_file *result;
acd13123 2447 bfd_size_type buildid_len_arg;
dc294be5
TT
2448 size_t buildid_len;
2449 bfd_byte *buildid;
36586728
TT
2450
2451 if (dwarf2_per_objfile->dwz_file != NULL)
2452 return dwarf2_per_objfile->dwz_file;
2453
4db1a1dc
TT
2454 bfd_set_error (bfd_error_no_error);
2455 data = bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
acd13123 2456 &buildid_len_arg, &buildid);
4db1a1dc
TT
2457 if (data == NULL)
2458 {
2459 if (bfd_get_error () == bfd_error_no_error)
2460 return NULL;
2461 error (_("could not read '.gnu_debugaltlink' section: %s"),
2462 bfd_errmsg (bfd_get_error ()));
2463 }
36586728 2464 cleanup = make_cleanup (xfree, data);
dc294be5 2465 make_cleanup (xfree, buildid);
36586728 2466
acd13123
TT
2467 buildid_len = (size_t) buildid_len_arg;
2468
f9d83a0b 2469 filename = (const char *) data;
36586728
TT
2470 if (!IS_ABSOLUTE_PATH (filename))
2471 {
4262abfb 2472 char *abs = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
36586728
TT
2473 char *rel;
2474
2475 make_cleanup (xfree, abs);
2476 abs = ldirname (abs);
2477 make_cleanup (xfree, abs);
2478
2479 rel = concat (abs, SLASH_STRING, filename, (char *) NULL);
2480 make_cleanup (xfree, rel);
2481 filename = rel;
2482 }
2483
dc294be5
TT
2484 /* First try the file name given in the section. If that doesn't
2485 work, try to use the build-id instead. */
36586728 2486 dwz_bfd = gdb_bfd_open (filename, gnutarget, -1);
dc294be5 2487 if (dwz_bfd != NULL)
36586728 2488 {
dc294be5
TT
2489 if (!build_id_verify (dwz_bfd, buildid_len, buildid))
2490 {
2491 gdb_bfd_unref (dwz_bfd);
2492 dwz_bfd = NULL;
2493 }
36586728
TT
2494 }
2495
dc294be5
TT
2496 if (dwz_bfd == NULL)
2497 dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2498
2499 if (dwz_bfd == NULL)
2500 error (_("could not find '.gnu_debugaltlink' file for %s"),
2501 objfile_name (dwarf2_per_objfile->objfile));
2502
36586728
TT
2503 result = OBSTACK_ZALLOC (&dwarf2_per_objfile->objfile->objfile_obstack,
2504 struct dwz_file);
2505 result->dwz_bfd = dwz_bfd;
2506
2507 bfd_map_over_sections (dwz_bfd, locate_dwz_sections, result);
2508
2509 do_cleanups (cleanup);
2510
13aaf454 2511 gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, dwz_bfd);
8d2cc612 2512 dwarf2_per_objfile->dwz_file = result;
36586728
TT
2513 return result;
2514}
9291a0cd 2515\f
7b9f3c50
DE
2516/* DWARF quick_symbols_functions support. */
2517
2518/* TUs can share .debug_line entries, and there can be a lot more TUs than
2519 unique line tables, so we maintain a separate table of all .debug_line
2520 derived entries to support the sharing.
2521 All the quick functions need is the list of file names. We discard the
2522 line_header when we're done and don't need to record it here. */
2523struct quick_file_names
2524{
094b34ac
DE
2525 /* The data used to construct the hash key. */
2526 struct stmt_list_hash hash;
7b9f3c50
DE
2527
2528 /* The number of entries in file_names, real_names. */
2529 unsigned int num_file_names;
2530
2531 /* The file names from the line table, after being run through
2532 file_full_name. */
2533 const char **file_names;
2534
2535 /* The file names from the line table after being run through
2536 gdb_realpath. These are computed lazily. */
2537 const char **real_names;
2538};
2539
2540/* When using the index (and thus not using psymtabs), each CU has an
2541 object of this type. This is used to hold information needed by
2542 the various "quick" methods. */
2543struct dwarf2_per_cu_quick_data
2544{
2545 /* The file table. This can be NULL if there was no file table
2546 or it's currently not read in.
2547 NOTE: This points into dwarf2_per_objfile->quick_file_names_table. */
2548 struct quick_file_names *file_names;
2549
2550 /* The corresponding symbol table. This is NULL if symbols for this
2551 CU have not yet been read. */
43f3e411 2552 struct compunit_symtab *compunit_symtab;
7b9f3c50
DE
2553
2554 /* A temporary mark bit used when iterating over all CUs in
2555 expand_symtabs_matching. */
2556 unsigned int mark : 1;
2557
2558 /* True if we've tried to read the file table and found there isn't one.
2559 There will be no point in trying to read it again next time. */
2560 unsigned int no_file_data : 1;
2561};
2562
094b34ac
DE
2563/* Utility hash function for a stmt_list_hash. */
2564
2565static hashval_t
2566hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2567{
2568 hashval_t v = 0;
2569
2570 if (stmt_list_hash->dwo_unit != NULL)
2571 v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2572 v += stmt_list_hash->line_offset.sect_off;
2573 return v;
2574}
2575
2576/* Utility equality function for a stmt_list_hash. */
2577
2578static int
2579eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2580 const struct stmt_list_hash *rhs)
2581{
2582 if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2583 return 0;
2584 if (lhs->dwo_unit != NULL
2585 && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2586 return 0;
2587
2588 return lhs->line_offset.sect_off == rhs->line_offset.sect_off;
2589}
2590
7b9f3c50
DE
2591/* Hash function for a quick_file_names. */
2592
2593static hashval_t
2594hash_file_name_entry (const void *e)
2595{
2596 const struct quick_file_names *file_data = e;
2597
094b34ac 2598 return hash_stmt_list_entry (&file_data->hash);
7b9f3c50
DE
2599}
2600
2601/* Equality function for a quick_file_names. */
2602
2603static int
2604eq_file_name_entry (const void *a, const void *b)
2605{
2606 const struct quick_file_names *ea = a;
2607 const struct quick_file_names *eb = b;
2608
094b34ac 2609 return eq_stmt_list_entry (&ea->hash, &eb->hash);
7b9f3c50
DE
2610}
2611
2612/* Delete function for a quick_file_names. */
2613
2614static void
2615delete_file_name_entry (void *e)
2616{
2617 struct quick_file_names *file_data = e;
2618 int i;
2619
2620 for (i = 0; i < file_data->num_file_names; ++i)
2621 {
2622 xfree ((void*) file_data->file_names[i]);
2623 if (file_data->real_names)
2624 xfree ((void*) file_data->real_names[i]);
2625 }
2626
2627 /* The space for the struct itself lives on objfile_obstack,
2628 so we don't free it here. */
2629}
2630
2631/* Create a quick_file_names hash table. */
2632
2633static htab_t
2634create_quick_file_names_table (unsigned int nr_initial_entries)
2635{
2636 return htab_create_alloc (nr_initial_entries,
2637 hash_file_name_entry, eq_file_name_entry,
2638 delete_file_name_entry, xcalloc, xfree);
2639}
9291a0cd 2640
918dd910
JK
2641/* Read in PER_CU->CU. This function is unrelated to symtabs, symtab would
2642 have to be created afterwards. You should call age_cached_comp_units after
2643 processing PER_CU->CU. dw2_setup must have been already called. */
2644
2645static void
2646load_cu (struct dwarf2_per_cu_data *per_cu)
2647{
3019eac3 2648 if (per_cu->is_debug_types)
e5fe5e75 2649 load_full_type_unit (per_cu);
918dd910 2650 else
95554aad 2651 load_full_comp_unit (per_cu, language_minimal);
918dd910 2652
918dd910 2653 gdb_assert (per_cu->cu != NULL);
2dc860c0
DE
2654
2655 dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
918dd910
JK
2656}
2657
a0f42c21 2658/* Read in the symbols for PER_CU. */
2fdf6df6 2659
9291a0cd 2660static void
a0f42c21 2661dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
9291a0cd
TT
2662{
2663 struct cleanup *back_to;
2664
f4dc4d17
DE
2665 /* Skip type_unit_groups, reading the type units they contain
2666 is handled elsewhere. */
2667 if (IS_TYPE_UNIT_GROUP (per_cu))
2668 return;
2669
9291a0cd
TT
2670 back_to = make_cleanup (dwarf2_release_queue, NULL);
2671
95554aad 2672 if (dwarf2_per_objfile->using_index
43f3e411 2673 ? per_cu->v.quick->compunit_symtab == NULL
95554aad
TT
2674 : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2675 {
2676 queue_comp_unit (per_cu, language_minimal);
2677 load_cu (per_cu);
89e63ee4
DE
2678
2679 /* If we just loaded a CU from a DWO, and we're working with an index
2680 that may badly handle TUs, load all the TUs in that DWO as well.
2681 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
2682 if (!per_cu->is_debug_types
2683 && per_cu->cu->dwo_unit != NULL
2684 && dwarf2_per_objfile->index_table != NULL
2685 && dwarf2_per_objfile->index_table->version <= 7
2686 /* DWP files aren't supported yet. */
2687 && get_dwp_file () == NULL)
2688 queue_and_load_all_dwo_tus (per_cu);
95554aad 2689 }
9291a0cd 2690
a0f42c21 2691 process_queue ();
9291a0cd
TT
2692
2693 /* Age the cache, releasing compilation units that have not
2694 been used recently. */
2695 age_cached_comp_units ();
2696
2697 do_cleanups (back_to);
2698}
2699
2700/* Ensure that the symbols for PER_CU have been read in. OBJFILE is
2701 the objfile from which this CU came. Returns the resulting symbol
2702 table. */
2fdf6df6 2703
43f3e411 2704static struct compunit_symtab *
a0f42c21 2705dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
9291a0cd 2706{
95554aad 2707 gdb_assert (dwarf2_per_objfile->using_index);
43f3e411 2708 if (!per_cu->v.quick->compunit_symtab)
9291a0cd
TT
2709 {
2710 struct cleanup *back_to = make_cleanup (free_cached_comp_units, NULL);
2711 increment_reading_symtab ();
a0f42c21 2712 dw2_do_instantiate_symtab (per_cu);
95554aad 2713 process_cu_includes ();
9291a0cd
TT
2714 do_cleanups (back_to);
2715 }
f194fefb 2716
43f3e411 2717 return per_cu->v.quick->compunit_symtab;
9291a0cd
TT
2718}
2719
8832e7e3 2720/* Return the CU/TU given its index.
f4dc4d17
DE
2721
2722 This is intended for loops like:
2723
2724 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2725 + dwarf2_per_objfile->n_type_units); ++i)
2726 {
8832e7e3 2727 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
f4dc4d17
DE
2728
2729 ...;
2730 }
2731*/
2fdf6df6 2732
1fd400ff 2733static struct dwarf2_per_cu_data *
8832e7e3 2734dw2_get_cutu (int index)
1fd400ff
TT
2735{
2736 if (index >= dwarf2_per_objfile->n_comp_units)
2737 {
f4dc4d17 2738 index -= dwarf2_per_objfile->n_comp_units;
094b34ac
DE
2739 gdb_assert (index < dwarf2_per_objfile->n_type_units);
2740 return &dwarf2_per_objfile->all_type_units[index]->per_cu;
f4dc4d17
DE
2741 }
2742
2743 return dwarf2_per_objfile->all_comp_units[index];
2744}
2745
8832e7e3
DE
2746/* Return the CU given its index.
2747 This differs from dw2_get_cutu in that it's for when you know INDEX
2748 refers to a CU. */
f4dc4d17
DE
2749
2750static struct dwarf2_per_cu_data *
8832e7e3 2751dw2_get_cu (int index)
f4dc4d17 2752{
8832e7e3 2753 gdb_assert (index >= 0 && index < dwarf2_per_objfile->n_comp_units);
f4dc4d17 2754
1fd400ff
TT
2755 return dwarf2_per_objfile->all_comp_units[index];
2756}
2757
2ec9a5e0
TT
2758/* A helper for create_cus_from_index that handles a given list of
2759 CUs. */
2fdf6df6 2760
74a0d9f6 2761static void
2ec9a5e0
TT
2762create_cus_from_index_list (struct objfile *objfile,
2763 const gdb_byte *cu_list, offset_type n_elements,
2764 struct dwarf2_section_info *section,
2765 int is_dwz,
2766 int base_offset)
9291a0cd
TT
2767{
2768 offset_type i;
9291a0cd 2769
2ec9a5e0 2770 for (i = 0; i < n_elements; i += 2)
9291a0cd
TT
2771 {
2772 struct dwarf2_per_cu_data *the_cu;
2773 ULONGEST offset, length;
2774
74a0d9f6
JK
2775 gdb_static_assert (sizeof (ULONGEST) >= 8);
2776 offset = extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2777 length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
9291a0cd
TT
2778 cu_list += 2 * 8;
2779
2780 the_cu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2781 struct dwarf2_per_cu_data);
b64f50a1 2782 the_cu->offset.sect_off = offset;
9291a0cd
TT
2783 the_cu->length = length;
2784 the_cu->objfile = objfile;
8a0459fd 2785 the_cu->section = section;
9291a0cd
TT
2786 the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2787 struct dwarf2_per_cu_quick_data);
2ec9a5e0
TT
2788 the_cu->is_dwz = is_dwz;
2789 dwarf2_per_objfile->all_comp_units[base_offset + i / 2] = the_cu;
9291a0cd 2790 }
9291a0cd
TT
2791}
2792
2ec9a5e0 2793/* Read the CU list from the mapped index, and use it to create all
74a0d9f6 2794 the CU objects for this objfile. */
2ec9a5e0 2795
74a0d9f6 2796static void
2ec9a5e0
TT
2797create_cus_from_index (struct objfile *objfile,
2798 const gdb_byte *cu_list, offset_type cu_list_elements,
2799 const gdb_byte *dwz_list, offset_type dwz_elements)
2800{
2801 struct dwz_file *dwz;
2802
2803 dwarf2_per_objfile->n_comp_units = (cu_list_elements + dwz_elements) / 2;
2804 dwarf2_per_objfile->all_comp_units
2805 = obstack_alloc (&objfile->objfile_obstack,
2806 dwarf2_per_objfile->n_comp_units
2807 * sizeof (struct dwarf2_per_cu_data *));
2808
74a0d9f6
JK
2809 create_cus_from_index_list (objfile, cu_list, cu_list_elements,
2810 &dwarf2_per_objfile->info, 0, 0);
2ec9a5e0
TT
2811
2812 if (dwz_elements == 0)
74a0d9f6 2813 return;
2ec9a5e0
TT
2814
2815 dwz = dwarf2_get_dwz_file ();
74a0d9f6
JK
2816 create_cus_from_index_list (objfile, dwz_list, dwz_elements, &dwz->info, 1,
2817 cu_list_elements / 2);
2ec9a5e0
TT
2818}
2819
1fd400ff 2820/* Create the signatured type hash table from the index. */
673bfd45 2821
74a0d9f6 2822static void
673bfd45 2823create_signatured_type_table_from_index (struct objfile *objfile,
8b70b953 2824 struct dwarf2_section_info *section,
673bfd45
DE
2825 const gdb_byte *bytes,
2826 offset_type elements)
1fd400ff
TT
2827{
2828 offset_type i;
673bfd45 2829 htab_t sig_types_hash;
1fd400ff 2830
6aa5f3a6
DE
2831 dwarf2_per_objfile->n_type_units
2832 = dwarf2_per_objfile->n_allocated_type_units
2833 = elements / 3;
d467dd73 2834 dwarf2_per_objfile->all_type_units
a2ce51a0
DE
2835 = xmalloc (dwarf2_per_objfile->n_type_units
2836 * sizeof (struct signatured_type *));
1fd400ff 2837
673bfd45 2838 sig_types_hash = allocate_signatured_type_table (objfile);
1fd400ff
TT
2839
2840 for (i = 0; i < elements; i += 3)
2841 {
52dc124a
DE
2842 struct signatured_type *sig_type;
2843 ULONGEST offset, type_offset_in_tu, signature;
1fd400ff
TT
2844 void **slot;
2845
74a0d9f6
JK
2846 gdb_static_assert (sizeof (ULONGEST) >= 8);
2847 offset = extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
2848 type_offset_in_tu = extract_unsigned_integer (bytes + 8, 8,
2849 BFD_ENDIAN_LITTLE);
1fd400ff
TT
2850 signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
2851 bytes += 3 * 8;
2852
52dc124a 2853 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
1fd400ff 2854 struct signatured_type);
52dc124a 2855 sig_type->signature = signature;
3019eac3
DE
2856 sig_type->type_offset_in_tu.cu_off = type_offset_in_tu;
2857 sig_type->per_cu.is_debug_types = 1;
8a0459fd 2858 sig_type->per_cu.section = section;
52dc124a
DE
2859 sig_type->per_cu.offset.sect_off = offset;
2860 sig_type->per_cu.objfile = objfile;
2861 sig_type->per_cu.v.quick
1fd400ff
TT
2862 = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2863 struct dwarf2_per_cu_quick_data);
2864
52dc124a
DE
2865 slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
2866 *slot = sig_type;
1fd400ff 2867
b4dd5633 2868 dwarf2_per_objfile->all_type_units[i / 3] = sig_type;
1fd400ff
TT
2869 }
2870
673bfd45 2871 dwarf2_per_objfile->signatured_types = sig_types_hash;
1fd400ff
TT
2872}
2873
9291a0cd
TT
2874/* Read the address map data from the mapped index, and use it to
2875 populate the objfile's psymtabs_addrmap. */
2fdf6df6 2876
9291a0cd
TT
2877static void
2878create_addrmap_from_index (struct objfile *objfile, struct mapped_index *index)
2879{
3e29f34a 2880 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9291a0cd
TT
2881 const gdb_byte *iter, *end;
2882 struct obstack temp_obstack;
2883 struct addrmap *mutable_map;
2884 struct cleanup *cleanup;
2885 CORE_ADDR baseaddr;
2886
2887 obstack_init (&temp_obstack);
2888 cleanup = make_cleanup_obstack_free (&temp_obstack);
2889 mutable_map = addrmap_create_mutable (&temp_obstack);
2890
2891 iter = index->address_table;
2892 end = iter + index->address_table_size;
2893
2894 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
2895
2896 while (iter < end)
2897 {
2898 ULONGEST hi, lo, cu_index;
2899 lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2900 iter += 8;
2901 hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2902 iter += 8;
2903 cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
2904 iter += 4;
f652bce2 2905
24a55014 2906 if (lo > hi)
f652bce2 2907 {
24a55014
DE
2908 complaint (&symfile_complaints,
2909 _(".gdb_index address table has invalid range (%s - %s)"),
c0cd8254 2910 hex_string (lo), hex_string (hi));
24a55014 2911 continue;
f652bce2 2912 }
24a55014
DE
2913
2914 if (cu_index >= dwarf2_per_objfile->n_comp_units)
f652bce2
DE
2915 {
2916 complaint (&symfile_complaints,
2917 _(".gdb_index address table has invalid CU number %u"),
2918 (unsigned) cu_index);
24a55014 2919 continue;
f652bce2 2920 }
24a55014 2921
3e29f34a
MR
2922 lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr);
2923 hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr);
2924 addrmap_set_empty (mutable_map, lo, hi - 1, dw2_get_cutu (cu_index));
9291a0cd
TT
2925 }
2926
2927 objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
2928 &objfile->objfile_obstack);
2929 do_cleanups (cleanup);
2930}
2931
59d7bcaf
JK
2932/* The hash function for strings in the mapped index. This is the same as
2933 SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
2934 implementation. This is necessary because the hash function is tied to the
2935 format of the mapped index file. The hash values do not have to match with
559a7a62
JK
2936 SYMBOL_HASH_NEXT.
2937
2938 Use INT_MAX for INDEX_VERSION if you generate the current index format. */
2fdf6df6 2939
9291a0cd 2940static hashval_t
559a7a62 2941mapped_index_string_hash (int index_version, const void *p)
9291a0cd
TT
2942{
2943 const unsigned char *str = (const unsigned char *) p;
2944 hashval_t r = 0;
2945 unsigned char c;
2946
2947 while ((c = *str++) != 0)
559a7a62
JK
2948 {
2949 if (index_version >= 5)
2950 c = tolower (c);
2951 r = r * 67 + c - 113;
2952 }
9291a0cd
TT
2953
2954 return r;
2955}
2956
2957/* Find a slot in the mapped index INDEX for the object named NAME.
2958 If NAME is found, set *VEC_OUT to point to the CU vector in the
2959 constant pool and return 1. If NAME cannot be found, return 0. */
2fdf6df6 2960
9291a0cd
TT
2961static int
2962find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
2963 offset_type **vec_out)
2964{
0cf03b49
JK
2965 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2966 offset_type hash;
9291a0cd 2967 offset_type slot, step;
559a7a62 2968 int (*cmp) (const char *, const char *);
9291a0cd 2969
0cf03b49
JK
2970 if (current_language->la_language == language_cplus
2971 || current_language->la_language == language_java
2972 || current_language->la_language == language_fortran)
2973 {
2974 /* NAME is already canonical. Drop any qualifiers as .gdb_index does
2975 not contain any. */
a8719064 2976
72998fb3 2977 if (strchr (name, '(') != NULL)
0cf03b49 2978 {
72998fb3 2979 char *without_params = cp_remove_params (name);
0cf03b49 2980
72998fb3
DE
2981 if (without_params != NULL)
2982 {
2983 make_cleanup (xfree, without_params);
2984 name = without_params;
2985 }
0cf03b49
JK
2986 }
2987 }
2988
559a7a62 2989 /* Index version 4 did not support case insensitive searches. But the
feea76c2 2990 indices for case insensitive languages are built in lowercase, therefore
559a7a62
JK
2991 simulate our NAME being searched is also lowercased. */
2992 hash = mapped_index_string_hash ((index->version == 4
2993 && case_sensitivity == case_sensitive_off
2994 ? 5 : index->version),
2995 name);
2996
3876f04e
DE
2997 slot = hash & (index->symbol_table_slots - 1);
2998 step = ((hash * 17) & (index->symbol_table_slots - 1)) | 1;
559a7a62 2999 cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
9291a0cd
TT
3000
3001 for (;;)
3002 {
3003 /* Convert a slot number to an offset into the table. */
3004 offset_type i = 2 * slot;
3005 const char *str;
3876f04e 3006 if (index->symbol_table[i] == 0 && index->symbol_table[i + 1] == 0)
0cf03b49
JK
3007 {
3008 do_cleanups (back_to);
3009 return 0;
3010 }
9291a0cd 3011
3876f04e 3012 str = index->constant_pool + MAYBE_SWAP (index->symbol_table[i]);
559a7a62 3013 if (!cmp (name, str))
9291a0cd
TT
3014 {
3015 *vec_out = (offset_type *) (index->constant_pool
3876f04e 3016 + MAYBE_SWAP (index->symbol_table[i + 1]));
0cf03b49 3017 do_cleanups (back_to);
9291a0cd
TT
3018 return 1;
3019 }
3020
3876f04e 3021 slot = (slot + step) & (index->symbol_table_slots - 1);
9291a0cd
TT
3022 }
3023}
3024
2ec9a5e0
TT
3025/* A helper function that reads the .gdb_index from SECTION and fills
3026 in MAP. FILENAME is the name of the file containing the section;
3027 it is used for error reporting. DEPRECATED_OK is nonzero if it is
3028 ok to use deprecated sections.
3029
3030 CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3031 out parameters that are filled in with information about the CU and
3032 TU lists in the section.
3033
3034 Returns 1 if all went well, 0 otherwise. */
2fdf6df6 3035
9291a0cd 3036static int
2ec9a5e0
TT
3037read_index_from_section (struct objfile *objfile,
3038 const char *filename,
3039 int deprecated_ok,
3040 struct dwarf2_section_info *section,
3041 struct mapped_index *map,
3042 const gdb_byte **cu_list,
3043 offset_type *cu_list_elements,
3044 const gdb_byte **types_list,
3045 offset_type *types_list_elements)
9291a0cd 3046{
948f8e3d 3047 const gdb_byte *addr;
2ec9a5e0 3048 offset_type version;
b3b272e1 3049 offset_type *metadata;
1fd400ff 3050 int i;
9291a0cd 3051
2ec9a5e0 3052 if (dwarf2_section_empty_p (section))
9291a0cd 3053 return 0;
82430852
JK
3054
3055 /* Older elfutils strip versions could keep the section in the main
3056 executable while splitting it for the separate debug info file. */
a32a8923 3057 if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
82430852
JK
3058 return 0;
3059
2ec9a5e0 3060 dwarf2_read_section (objfile, section);
9291a0cd 3061
2ec9a5e0 3062 addr = section->buffer;
9291a0cd 3063 /* Version check. */
1fd400ff 3064 version = MAYBE_SWAP (*(offset_type *) addr);
987d643c 3065 /* Versions earlier than 3 emitted every copy of a psymbol. This
a6e293d1 3066 causes the index to behave very poorly for certain requests. Version 3
831adc1f 3067 contained incomplete addrmap. So, it seems better to just ignore such
481860b3 3068 indices. */
831adc1f 3069 if (version < 4)
481860b3
GB
3070 {
3071 static int warning_printed = 0;
3072 if (!warning_printed)
3073 {
3074 warning (_("Skipping obsolete .gdb_index section in %s."),
2ec9a5e0 3075 filename);
481860b3
GB
3076 warning_printed = 1;
3077 }
3078 return 0;
3079 }
3080 /* Index version 4 uses a different hash function than index version
3081 5 and later.
3082
3083 Versions earlier than 6 did not emit psymbols for inlined
3084 functions. Using these files will cause GDB not to be able to
3085 set breakpoints on inlined functions by name, so we ignore these
e615022a
DE
3086 indices unless the user has done
3087 "set use-deprecated-index-sections on". */
2ec9a5e0 3088 if (version < 6 && !deprecated_ok)
481860b3
GB
3089 {
3090 static int warning_printed = 0;
3091 if (!warning_printed)
3092 {
e615022a
DE
3093 warning (_("\
3094Skipping deprecated .gdb_index section in %s.\n\
3095Do \"set use-deprecated-index-sections on\" before the file is read\n\
3096to use the section anyway."),
2ec9a5e0 3097 filename);
481860b3
GB
3098 warning_printed = 1;
3099 }
3100 return 0;
3101 }
796a7ff8 3102 /* Version 7 indices generated by gold refer to the CU for a symbol instead
8943b874
DE
3103 of the TU (for symbols coming from TUs),
3104 http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3105 Plus gold-generated indices can have duplicate entries for global symbols,
3106 http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3107 These are just performance bugs, and we can't distinguish gdb-generated
3108 indices from gold-generated ones, so issue no warning here. */
796a7ff8 3109
481860b3 3110 /* Indexes with higher version than the one supported by GDB may be no
594e8718 3111 longer backward compatible. */
796a7ff8 3112 if (version > 8)
594e8718 3113 return 0;
9291a0cd 3114
559a7a62 3115 map->version = version;
2ec9a5e0 3116 map->total_size = section->size;
9291a0cd
TT
3117
3118 metadata = (offset_type *) (addr + sizeof (offset_type));
1fd400ff
TT
3119
3120 i = 0;
2ec9a5e0
TT
3121 *cu_list = addr + MAYBE_SWAP (metadata[i]);
3122 *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3123 / 8);
1fd400ff
TT
3124 ++i;
3125
2ec9a5e0
TT
3126 *types_list = addr + MAYBE_SWAP (metadata[i]);
3127 *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3128 - MAYBE_SWAP (metadata[i]))
3129 / 8);
987d643c 3130 ++i;
1fd400ff
TT
3131
3132 map->address_table = addr + MAYBE_SWAP (metadata[i]);
3133 map->address_table_size = (MAYBE_SWAP (metadata[i + 1])
3134 - MAYBE_SWAP (metadata[i]));
3135 ++i;
3136
3876f04e
DE
3137 map->symbol_table = (offset_type *) (addr + MAYBE_SWAP (metadata[i]));
3138 map->symbol_table_slots = ((MAYBE_SWAP (metadata[i + 1])
3139 - MAYBE_SWAP (metadata[i]))
3140 / (2 * sizeof (offset_type)));
1fd400ff 3141 ++i;
9291a0cd 3142
f9d83a0b 3143 map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
1fd400ff 3144
2ec9a5e0
TT
3145 return 1;
3146}
3147
3148
3149/* Read the index file. If everything went ok, initialize the "quick"
3150 elements of all the CUs and return 1. Otherwise, return 0. */
3151
3152static int
3153dwarf2_read_index (struct objfile *objfile)
3154{
3155 struct mapped_index local_map, *map;
3156 const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3157 offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
4db1a1dc 3158 struct dwz_file *dwz;
2ec9a5e0 3159
4262abfb 3160 if (!read_index_from_section (objfile, objfile_name (objfile),
2ec9a5e0
TT
3161 use_deprecated_index_sections,
3162 &dwarf2_per_objfile->gdb_index, &local_map,
3163 &cu_list, &cu_list_elements,
3164 &types_list, &types_list_elements))
3165 return 0;
3166
0fefef59 3167 /* Don't use the index if it's empty. */
2ec9a5e0 3168 if (local_map.symbol_table_slots == 0)
0fefef59
DE
3169 return 0;
3170
2ec9a5e0
TT
3171 /* If there is a .dwz file, read it so we can get its CU list as
3172 well. */
4db1a1dc
TT
3173 dwz = dwarf2_get_dwz_file ();
3174 if (dwz != NULL)
2ec9a5e0 3175 {
2ec9a5e0
TT
3176 struct mapped_index dwz_map;
3177 const gdb_byte *dwz_types_ignore;
3178 offset_type dwz_types_elements_ignore;
3179
3180 if (!read_index_from_section (objfile, bfd_get_filename (dwz->dwz_bfd),
3181 1,
3182 &dwz->gdb_index, &dwz_map,
3183 &dwz_list, &dwz_list_elements,
3184 &dwz_types_ignore,
3185 &dwz_types_elements_ignore))
3186 {
3187 warning (_("could not read '.gdb_index' section from %s; skipping"),
3188 bfd_get_filename (dwz->dwz_bfd));
3189 return 0;
3190 }
3191 }
3192
74a0d9f6
JK
3193 create_cus_from_index (objfile, cu_list, cu_list_elements, dwz_list,
3194 dwz_list_elements);
1fd400ff 3195
8b70b953
TT
3196 if (types_list_elements)
3197 {
3198 struct dwarf2_section_info *section;
3199
3200 /* We can only handle a single .debug_types when we have an
3201 index. */
3202 if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3203 return 0;
3204
3205 section = VEC_index (dwarf2_section_info_def,
3206 dwarf2_per_objfile->types, 0);
3207
74a0d9f6
JK
3208 create_signatured_type_table_from_index (objfile, section, types_list,
3209 types_list_elements);
8b70b953 3210 }
9291a0cd 3211
2ec9a5e0
TT
3212 create_addrmap_from_index (objfile, &local_map);
3213
3214 map = obstack_alloc (&objfile->objfile_obstack, sizeof (struct mapped_index));
3215 *map = local_map;
9291a0cd
TT
3216
3217 dwarf2_per_objfile->index_table = map;
3218 dwarf2_per_objfile->using_index = 1;
7b9f3c50
DE
3219 dwarf2_per_objfile->quick_file_names_table =
3220 create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
9291a0cd
TT
3221
3222 return 1;
3223}
3224
3225/* A helper for the "quick" functions which sets the global
3226 dwarf2_per_objfile according to OBJFILE. */
2fdf6df6 3227
9291a0cd
TT
3228static void
3229dw2_setup (struct objfile *objfile)
3230{
3231 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
3232 gdb_assert (dwarf2_per_objfile);
3233}
3234
dee91e82 3235/* die_reader_func for dw2_get_file_names. */
2fdf6df6 3236
dee91e82
DE
3237static void
3238dw2_get_file_names_reader (const struct die_reader_specs *reader,
d521ce57 3239 const gdb_byte *info_ptr,
dee91e82
DE
3240 struct die_info *comp_unit_die,
3241 int has_children,
3242 void *data)
9291a0cd 3243{
dee91e82
DE
3244 struct dwarf2_cu *cu = reader->cu;
3245 struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3246 struct objfile *objfile = dwarf2_per_objfile->objfile;
094b34ac 3247 struct dwarf2_per_cu_data *lh_cu;
7b9f3c50 3248 struct line_header *lh;
9291a0cd 3249 struct attribute *attr;
dee91e82 3250 int i;
15d034d0 3251 const char *name, *comp_dir;
7b9f3c50
DE
3252 void **slot;
3253 struct quick_file_names *qfn;
3254 unsigned int line_offset;
9291a0cd 3255
0186c6a7
DE
3256 gdb_assert (! this_cu->is_debug_types);
3257
07261596
TT
3258 /* Our callers never want to match partial units -- instead they
3259 will match the enclosing full CU. */
3260 if (comp_unit_die->tag == DW_TAG_partial_unit)
3261 {
3262 this_cu->v.quick->no_file_data = 1;
3263 return;
3264 }
3265
0186c6a7 3266 lh_cu = this_cu;
7b9f3c50
DE
3267 lh = NULL;
3268 slot = NULL;
3269 line_offset = 0;
dee91e82
DE
3270
3271 attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
9291a0cd
TT
3272 if (attr)
3273 {
7b9f3c50
DE
3274 struct quick_file_names find_entry;
3275
3276 line_offset = DW_UNSND (attr);
3277
3278 /* We may have already read in this line header (TU line header sharing).
3279 If we have we're done. */
094b34ac
DE
3280 find_entry.hash.dwo_unit = cu->dwo_unit;
3281 find_entry.hash.line_offset.sect_off = line_offset;
7b9f3c50
DE
3282 slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3283 &find_entry, INSERT);
3284 if (*slot != NULL)
3285 {
094b34ac 3286 lh_cu->v.quick->file_names = *slot;
dee91e82 3287 return;
7b9f3c50
DE
3288 }
3289
3019eac3 3290 lh = dwarf_decode_line_header (line_offset, cu);
9291a0cd
TT
3291 }
3292 if (lh == NULL)
3293 {
094b34ac 3294 lh_cu->v.quick->no_file_data = 1;
dee91e82 3295 return;
9291a0cd
TT
3296 }
3297
7b9f3c50 3298 qfn = obstack_alloc (&objfile->objfile_obstack, sizeof (*qfn));
094b34ac
DE
3299 qfn->hash.dwo_unit = cu->dwo_unit;
3300 qfn->hash.line_offset.sect_off = line_offset;
7b9f3c50
DE
3301 gdb_assert (slot != NULL);
3302 *slot = qfn;
9291a0cd 3303
dee91e82 3304 find_file_and_directory (comp_unit_die, cu, &name, &comp_dir);
9291a0cd 3305
7b9f3c50
DE
3306 qfn->num_file_names = lh->num_file_names;
3307 qfn->file_names = obstack_alloc (&objfile->objfile_obstack,
3308 lh->num_file_names * sizeof (char *));
9291a0cd 3309 for (i = 0; i < lh->num_file_names; ++i)
7b9f3c50
DE
3310 qfn->file_names[i] = file_full_name (i + 1, lh, comp_dir);
3311 qfn->real_names = NULL;
9291a0cd 3312
7b9f3c50 3313 free_line_header (lh);
7b9f3c50 3314
094b34ac 3315 lh_cu->v.quick->file_names = qfn;
dee91e82
DE
3316}
3317
3318/* A helper for the "quick" functions which attempts to read the line
3319 table for THIS_CU. */
3320
3321static struct quick_file_names *
e4a48d9d 3322dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
dee91e82 3323{
0186c6a7
DE
3324 /* This should never be called for TUs. */
3325 gdb_assert (! this_cu->is_debug_types);
3326 /* Nor type unit groups. */
3327 gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
f4dc4d17 3328
dee91e82
DE
3329 if (this_cu->v.quick->file_names != NULL)
3330 return this_cu->v.quick->file_names;
3331 /* If we know there is no line data, no point in looking again. */
3332 if (this_cu->v.quick->no_file_data)
3333 return NULL;
3334
0186c6a7 3335 init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
dee91e82
DE
3336
3337 if (this_cu->v.quick->no_file_data)
3338 return NULL;
3339 return this_cu->v.quick->file_names;
9291a0cd
TT
3340}
3341
3342/* A helper for the "quick" functions which computes and caches the
7b9f3c50 3343 real path for a given file name from the line table. */
2fdf6df6 3344
9291a0cd 3345static const char *
7b9f3c50
DE
3346dw2_get_real_path (struct objfile *objfile,
3347 struct quick_file_names *qfn, int index)
9291a0cd 3348{
7b9f3c50
DE
3349 if (qfn->real_names == NULL)
3350 qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
26f2dc30 3351 qfn->num_file_names, const char *);
9291a0cd 3352
7b9f3c50
DE
3353 if (qfn->real_names[index] == NULL)
3354 qfn->real_names[index] = gdb_realpath (qfn->file_names[index]);
9291a0cd 3355
7b9f3c50 3356 return qfn->real_names[index];
9291a0cd
TT
3357}
3358
3359static struct symtab *
3360dw2_find_last_source_symtab (struct objfile *objfile)
3361{
43f3e411 3362 struct compunit_symtab *cust;
9291a0cd 3363 int index;
ae2de4f8 3364
9291a0cd
TT
3365 dw2_setup (objfile);
3366 index = dwarf2_per_objfile->n_comp_units - 1;
43f3e411
DE
3367 cust = dw2_instantiate_symtab (dw2_get_cutu (index));
3368 if (cust == NULL)
3369 return NULL;
3370 return compunit_primary_filetab (cust);
9291a0cd
TT
3371}
3372
7b9f3c50
DE
3373/* Traversal function for dw2_forget_cached_source_info. */
3374
3375static int
3376dw2_free_cached_file_names (void **slot, void *info)
9291a0cd 3377{
7b9f3c50 3378 struct quick_file_names *file_data = (struct quick_file_names *) *slot;
9291a0cd 3379
7b9f3c50 3380 if (file_data->real_names)
9291a0cd 3381 {
7b9f3c50 3382 int i;
9291a0cd 3383
7b9f3c50 3384 for (i = 0; i < file_data->num_file_names; ++i)
9291a0cd 3385 {
7b9f3c50
DE
3386 xfree ((void*) file_data->real_names[i]);
3387 file_data->real_names[i] = NULL;
9291a0cd
TT
3388 }
3389 }
7b9f3c50
DE
3390
3391 return 1;
3392}
3393
3394static void
3395dw2_forget_cached_source_info (struct objfile *objfile)
3396{
3397 dw2_setup (objfile);
3398
3399 htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3400 dw2_free_cached_file_names, NULL);
9291a0cd
TT
3401}
3402
f8eba3c6
TT
3403/* Helper function for dw2_map_symtabs_matching_filename that expands
3404 the symtabs and calls the iterator. */
3405
3406static int
3407dw2_map_expand_apply (struct objfile *objfile,
3408 struct dwarf2_per_cu_data *per_cu,
f5b95b50 3409 const char *name, const char *real_path,
f8eba3c6
TT
3410 int (*callback) (struct symtab *, void *),
3411 void *data)
3412{
43f3e411 3413 struct compunit_symtab *last_made = objfile->compunit_symtabs;
f8eba3c6
TT
3414
3415 /* Don't visit already-expanded CUs. */
43f3e411 3416 if (per_cu->v.quick->compunit_symtab)
f8eba3c6
TT
3417 return 0;
3418
3419 /* This may expand more than one symtab, and we want to iterate over
3420 all of them. */
a0f42c21 3421 dw2_instantiate_symtab (per_cu);
f8eba3c6 3422
f5b95b50 3423 return iterate_over_some_symtabs (name, real_path, callback, data,
43f3e411 3424 objfile->compunit_symtabs, last_made);
f8eba3c6
TT
3425}
3426
3427/* Implementation of the map_symtabs_matching_filename method. */
3428
9291a0cd 3429static int
f8eba3c6 3430dw2_map_symtabs_matching_filename (struct objfile *objfile, const char *name,
f5b95b50 3431 const char *real_path,
f8eba3c6
TT
3432 int (*callback) (struct symtab *, void *),
3433 void *data)
9291a0cd
TT
3434{
3435 int i;
c011a4f4 3436 const char *name_basename = lbasename (name);
9291a0cd
TT
3437
3438 dw2_setup (objfile);
ae2de4f8 3439
848e3e78
DE
3440 /* The rule is CUs specify all the files, including those used by
3441 any TU, so there's no need to scan TUs here. */
f4dc4d17 3442
848e3e78 3443 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
3444 {
3445 int j;
8832e7e3 3446 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
7b9f3c50 3447 struct quick_file_names *file_data;
9291a0cd 3448
3d7bb9d9 3449 /* We only need to look at symtabs not already expanded. */
43f3e411 3450 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3451 continue;
3452
e4a48d9d 3453 file_data = dw2_get_file_names (per_cu);
7b9f3c50 3454 if (file_data == NULL)
9291a0cd
TT
3455 continue;
3456
7b9f3c50 3457 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 3458 {
7b9f3c50 3459 const char *this_name = file_data->file_names[j];
da235a7c 3460 const char *this_real_name;
9291a0cd 3461
af529f8f 3462 if (compare_filenames_for_search (this_name, name))
9291a0cd 3463 {
f5b95b50 3464 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
f8eba3c6
TT
3465 callback, data))
3466 return 1;
288e77a7 3467 continue;
4aac40c8 3468 }
9291a0cd 3469
c011a4f4
DE
3470 /* Before we invoke realpath, which can get expensive when many
3471 files are involved, do a quick comparison of the basenames. */
3472 if (! basenames_may_differ
3473 && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3474 continue;
3475
da235a7c
JK
3476 this_real_name = dw2_get_real_path (objfile, file_data, j);
3477 if (compare_filenames_for_search (this_real_name, name))
9291a0cd 3478 {
da235a7c
JK
3479 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3480 callback, data))
3481 return 1;
288e77a7 3482 continue;
da235a7c 3483 }
9291a0cd 3484
da235a7c
JK
3485 if (real_path != NULL)
3486 {
af529f8f
JK
3487 gdb_assert (IS_ABSOLUTE_PATH (real_path));
3488 gdb_assert (IS_ABSOLUTE_PATH (name));
7b9f3c50 3489 if (this_real_name != NULL
af529f8f 3490 && FILENAME_CMP (real_path, this_real_name) == 0)
9291a0cd 3491 {
f5b95b50 3492 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
f8eba3c6
TT
3493 callback, data))
3494 return 1;
288e77a7 3495 continue;
9291a0cd
TT
3496 }
3497 }
3498 }
3499 }
3500
9291a0cd
TT
3501 return 0;
3502}
3503
da51c347
DE
3504/* Struct used to manage iterating over all CUs looking for a symbol. */
3505
3506struct dw2_symtab_iterator
9291a0cd 3507{
da51c347
DE
3508 /* The internalized form of .gdb_index. */
3509 struct mapped_index *index;
3510 /* If non-zero, only look for symbols that match BLOCK_INDEX. */
3511 int want_specific_block;
3512 /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3513 Unused if !WANT_SPECIFIC_BLOCK. */
3514 int block_index;
3515 /* The kind of symbol we're looking for. */
3516 domain_enum domain;
3517 /* The list of CUs from the index entry of the symbol,
3518 or NULL if not found. */
3519 offset_type *vec;
3520 /* The next element in VEC to look at. */
3521 int next;
3522 /* The number of elements in VEC, or zero if there is no match. */
3523 int length;
8943b874
DE
3524 /* Have we seen a global version of the symbol?
3525 If so we can ignore all further global instances.
3526 This is to work around gold/15646, inefficient gold-generated
3527 indices. */
3528 int global_seen;
da51c347 3529};
9291a0cd 3530
da51c347
DE
3531/* Initialize the index symtab iterator ITER.
3532 If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3533 in block BLOCK_INDEX. Otherwise BLOCK_INDEX is ignored. */
2fdf6df6 3534
9291a0cd 3535static void
da51c347
DE
3536dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3537 struct mapped_index *index,
3538 int want_specific_block,
3539 int block_index,
3540 domain_enum domain,
3541 const char *name)
3542{
3543 iter->index = index;
3544 iter->want_specific_block = want_specific_block;
3545 iter->block_index = block_index;
3546 iter->domain = domain;
3547 iter->next = 0;
8943b874 3548 iter->global_seen = 0;
da51c347
DE
3549
3550 if (find_slot_in_mapped_hash (index, name, &iter->vec))
3551 iter->length = MAYBE_SWAP (*iter->vec);
3552 else
3553 {
3554 iter->vec = NULL;
3555 iter->length = 0;
3556 }
3557}
3558
3559/* Return the next matching CU or NULL if there are no more. */
3560
3561static struct dwarf2_per_cu_data *
3562dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3563{
3564 for ( ; iter->next < iter->length; ++iter->next)
3565 {
3566 offset_type cu_index_and_attrs =
3567 MAYBE_SWAP (iter->vec[iter->next + 1]);
3568 offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3190f0c6 3569 struct dwarf2_per_cu_data *per_cu;
da51c347
DE
3570 int want_static = iter->block_index != GLOBAL_BLOCK;
3571 /* This value is only valid for index versions >= 7. */
3572 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3573 gdb_index_symbol_kind symbol_kind =
3574 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3575 /* Only check the symbol attributes if they're present.
3576 Indices prior to version 7 don't record them,
3577 and indices >= 7 may elide them for certain symbols
3578 (gold does this). */
3579 int attrs_valid =
3580 (iter->index->version >= 7
3581 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3582
3190f0c6
DE
3583 /* Don't crash on bad data. */
3584 if (cu_index >= (dwarf2_per_objfile->n_comp_units
3585 + dwarf2_per_objfile->n_type_units))
3586 {
3587 complaint (&symfile_complaints,
3588 _(".gdb_index entry has bad CU index"
4262abfb
JK
3589 " [in module %s]"),
3590 objfile_name (dwarf2_per_objfile->objfile));
3190f0c6
DE
3591 continue;
3592 }
3593
8832e7e3 3594 per_cu = dw2_get_cutu (cu_index);
3190f0c6 3595
da51c347 3596 /* Skip if already read in. */
43f3e411 3597 if (per_cu->v.quick->compunit_symtab)
da51c347
DE
3598 continue;
3599
8943b874
DE
3600 /* Check static vs global. */
3601 if (attrs_valid)
3602 {
3603 if (iter->want_specific_block
3604 && want_static != is_static)
3605 continue;
3606 /* Work around gold/15646. */
3607 if (!is_static && iter->global_seen)
3608 continue;
3609 if (!is_static)
3610 iter->global_seen = 1;
3611 }
da51c347
DE
3612
3613 /* Only check the symbol's kind if it has one. */
3614 if (attrs_valid)
3615 {
3616 switch (iter->domain)
3617 {
3618 case VAR_DOMAIN:
3619 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
3620 && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
3621 /* Some types are also in VAR_DOMAIN. */
3622 && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3623 continue;
3624 break;
3625 case STRUCT_DOMAIN:
3626 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3627 continue;
3628 break;
3629 case LABEL_DOMAIN:
3630 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3631 continue;
3632 break;
3633 default:
3634 break;
3635 }
3636 }
3637
3638 ++iter->next;
3639 return per_cu;
3640 }
3641
3642 return NULL;
3643}
3644
43f3e411 3645static struct compunit_symtab *
da51c347
DE
3646dw2_lookup_symbol (struct objfile *objfile, int block_index,
3647 const char *name, domain_enum domain)
9291a0cd 3648{
43f3e411 3649 struct compunit_symtab *stab_best = NULL;
156942c7
DE
3650 struct mapped_index *index;
3651
9291a0cd
TT
3652 dw2_setup (objfile);
3653
156942c7
DE
3654 index = dwarf2_per_objfile->index_table;
3655
da51c347 3656 /* index is NULL if OBJF_READNOW. */
156942c7 3657 if (index)
9291a0cd 3658 {
da51c347
DE
3659 struct dw2_symtab_iterator iter;
3660 struct dwarf2_per_cu_data *per_cu;
3661
3662 dw2_symtab_iter_init (&iter, index, 1, block_index, domain, name);
9291a0cd 3663
da51c347 3664 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
9291a0cd 3665 {
da51c347 3666 struct symbol *sym = NULL;
43f3e411
DE
3667 struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu);
3668 const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
f194fefb 3669 struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
da51c347
DE
3670
3671 /* Some caution must be observed with overloaded functions
3672 and methods, since the index will not contain any overload
3673 information (but NAME might contain it). */
f194fefb 3674 sym = block_lookup_symbol (block, name, domain);
1fd400ff 3675
da51c347
DE
3676 if (sym && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
3677 {
3678 if (!TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
3679 return stab;
3680
3681 stab_best = stab;
9291a0cd 3682 }
da51c347
DE
3683
3684 /* Keep looking through other CUs. */
9291a0cd
TT
3685 }
3686 }
9291a0cd 3687
da51c347 3688 return stab_best;
9291a0cd
TT
3689}
3690
3691static void
3692dw2_print_stats (struct objfile *objfile)
3693{
e4a48d9d 3694 int i, total, count;
9291a0cd
TT
3695
3696 dw2_setup (objfile);
e4a48d9d 3697 total = dwarf2_per_objfile->n_comp_units + dwarf2_per_objfile->n_type_units;
9291a0cd 3698 count = 0;
e4a48d9d 3699 for (i = 0; i < total; ++i)
9291a0cd 3700 {
8832e7e3 3701 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 3702
43f3e411 3703 if (!per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3704 ++count;
3705 }
e4a48d9d 3706 printf_filtered (_(" Number of read CUs: %d\n"), total - count);
9291a0cd
TT
3707 printf_filtered (_(" Number of unread CUs: %d\n"), count);
3708}
3709
779bd270
DE
3710/* This dumps minimal information about the index.
3711 It is called via "mt print objfiles".
3712 One use is to verify .gdb_index has been loaded by the
3713 gdb.dwarf2/gdb-index.exp testcase. */
3714
9291a0cd
TT
3715static void
3716dw2_dump (struct objfile *objfile)
3717{
779bd270
DE
3718 dw2_setup (objfile);
3719 gdb_assert (dwarf2_per_objfile->using_index);
3720 printf_filtered (".gdb_index:");
3721 if (dwarf2_per_objfile->index_table != NULL)
3722 {
3723 printf_filtered (" version %d\n",
3724 dwarf2_per_objfile->index_table->version);
3725 }
3726 else
3727 printf_filtered (" faked for \"readnow\"\n");
3728 printf_filtered ("\n");
9291a0cd
TT
3729}
3730
3731static void
3189cb12
DE
3732dw2_relocate (struct objfile *objfile,
3733 const struct section_offsets *new_offsets,
3734 const struct section_offsets *delta)
9291a0cd
TT
3735{
3736 /* There's nothing to relocate here. */
3737}
3738
3739static void
3740dw2_expand_symtabs_for_function (struct objfile *objfile,
3741 const char *func_name)
3742{
da51c347
DE
3743 struct mapped_index *index;
3744
3745 dw2_setup (objfile);
3746
3747 index = dwarf2_per_objfile->index_table;
3748
3749 /* index is NULL if OBJF_READNOW. */
3750 if (index)
3751 {
3752 struct dw2_symtab_iterator iter;
3753 struct dwarf2_per_cu_data *per_cu;
3754
3755 /* Note: It doesn't matter what we pass for block_index here. */
3756 dw2_symtab_iter_init (&iter, index, 0, GLOBAL_BLOCK, VAR_DOMAIN,
3757 func_name);
3758
3759 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3760 dw2_instantiate_symtab (per_cu);
3761 }
9291a0cd
TT
3762}
3763
3764static void
3765dw2_expand_all_symtabs (struct objfile *objfile)
3766{
3767 int i;
3768
3769 dw2_setup (objfile);
1fd400ff
TT
3770
3771 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
d467dd73 3772 + dwarf2_per_objfile->n_type_units); ++i)
9291a0cd 3773 {
8832e7e3 3774 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 3775
a0f42c21 3776 dw2_instantiate_symtab (per_cu);
9291a0cd
TT
3777 }
3778}
3779
3780static void
652a8996
JK
3781dw2_expand_symtabs_with_fullname (struct objfile *objfile,
3782 const char *fullname)
9291a0cd
TT
3783{
3784 int i;
3785
3786 dw2_setup (objfile);
d4637a04
DE
3787
3788 /* We don't need to consider type units here.
3789 This is only called for examining code, e.g. expand_line_sal.
3790 There can be an order of magnitude (or more) more type units
3791 than comp units, and we avoid them if we can. */
3792
3793 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
3794 {
3795 int j;
8832e7e3 3796 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
7b9f3c50 3797 struct quick_file_names *file_data;
9291a0cd 3798
3d7bb9d9 3799 /* We only need to look at symtabs not already expanded. */
43f3e411 3800 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3801 continue;
3802
e4a48d9d 3803 file_data = dw2_get_file_names (per_cu);
7b9f3c50 3804 if (file_data == NULL)
9291a0cd
TT
3805 continue;
3806
7b9f3c50 3807 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 3808 {
652a8996
JK
3809 const char *this_fullname = file_data->file_names[j];
3810
3811 if (filename_cmp (this_fullname, fullname) == 0)
9291a0cd 3812 {
a0f42c21 3813 dw2_instantiate_symtab (per_cu);
9291a0cd
TT
3814 break;
3815 }
3816 }
3817 }
3818}
3819
9291a0cd 3820static void
ade7ed9e 3821dw2_map_matching_symbols (struct objfile *objfile,
fe978cb0 3822 const char * name, domain_enum domain,
ade7ed9e 3823 int global,
40658b94
PH
3824 int (*callback) (struct block *,
3825 struct symbol *, void *),
2edb89d3
JK
3826 void *data, symbol_compare_ftype *match,
3827 symbol_compare_ftype *ordered_compare)
9291a0cd 3828{
40658b94 3829 /* Currently unimplemented; used for Ada. The function can be called if the
a9e6a4bb
JK
3830 current language is Ada for a non-Ada objfile using GNU index. As Ada
3831 does not look for non-Ada symbols this function should just return. */
9291a0cd
TT
3832}
3833
3834static void
f8eba3c6
TT
3835dw2_expand_symtabs_matching
3836 (struct objfile *objfile,
206f2a57
DE
3837 expand_symtabs_file_matcher_ftype *file_matcher,
3838 expand_symtabs_symbol_matcher_ftype *symbol_matcher,
276d885b 3839 expand_symtabs_exp_notify_ftype *expansion_notify,
f8eba3c6
TT
3840 enum search_domain kind,
3841 void *data)
9291a0cd
TT
3842{
3843 int i;
3844 offset_type iter;
4b5246aa 3845 struct mapped_index *index;
9291a0cd
TT
3846
3847 dw2_setup (objfile);
ae2de4f8
DE
3848
3849 /* index_table is NULL if OBJF_READNOW. */
9291a0cd
TT
3850 if (!dwarf2_per_objfile->index_table)
3851 return;
4b5246aa 3852 index = dwarf2_per_objfile->index_table;
9291a0cd 3853
7b08b9eb 3854 if (file_matcher != NULL)
24c79950
TT
3855 {
3856 struct cleanup *cleanup;
3857 htab_t visited_found, visited_not_found;
3858
3859 visited_found = htab_create_alloc (10,
3860 htab_hash_pointer, htab_eq_pointer,
3861 NULL, xcalloc, xfree);
3862 cleanup = make_cleanup_htab_delete (visited_found);
3863 visited_not_found = htab_create_alloc (10,
3864 htab_hash_pointer, htab_eq_pointer,
3865 NULL, xcalloc, xfree);
3866 make_cleanup_htab_delete (visited_not_found);
3867
848e3e78
DE
3868 /* The rule is CUs specify all the files, including those used by
3869 any TU, so there's no need to scan TUs here. */
3870
3871 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
24c79950
TT
3872 {
3873 int j;
8832e7e3 3874 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
24c79950
TT
3875 struct quick_file_names *file_data;
3876 void **slot;
7b08b9eb 3877
24c79950 3878 per_cu->v.quick->mark = 0;
3d7bb9d9 3879
24c79950 3880 /* We only need to look at symtabs not already expanded. */
43f3e411 3881 if (per_cu->v.quick->compunit_symtab)
24c79950 3882 continue;
7b08b9eb 3883
e4a48d9d 3884 file_data = dw2_get_file_names (per_cu);
24c79950
TT
3885 if (file_data == NULL)
3886 continue;
7b08b9eb 3887
24c79950
TT
3888 if (htab_find (visited_not_found, file_data) != NULL)
3889 continue;
3890 else if (htab_find (visited_found, file_data) != NULL)
3891 {
3892 per_cu->v.quick->mark = 1;
3893 continue;
3894 }
3895
3896 for (j = 0; j < file_data->num_file_names; ++j)
3897 {
da235a7c
JK
3898 const char *this_real_name;
3899
fbd9ab74 3900 if (file_matcher (file_data->file_names[j], data, 0))
24c79950
TT
3901 {
3902 per_cu->v.quick->mark = 1;
3903 break;
3904 }
da235a7c
JK
3905
3906 /* Before we invoke realpath, which can get expensive when many
3907 files are involved, do a quick comparison of the basenames. */
3908 if (!basenames_may_differ
3909 && !file_matcher (lbasename (file_data->file_names[j]),
3910 data, 1))
3911 continue;
3912
3913 this_real_name = dw2_get_real_path (objfile, file_data, j);
3914 if (file_matcher (this_real_name, data, 0))
3915 {
3916 per_cu->v.quick->mark = 1;
3917 break;
3918 }
24c79950
TT
3919 }
3920
3921 slot = htab_find_slot (per_cu->v.quick->mark
3922 ? visited_found
3923 : visited_not_found,
3924 file_data, INSERT);
3925 *slot = file_data;
3926 }
3927
3928 do_cleanups (cleanup);
3929 }
9291a0cd 3930
3876f04e 3931 for (iter = 0; iter < index->symbol_table_slots; ++iter)
9291a0cd
TT
3932 {
3933 offset_type idx = 2 * iter;
3934 const char *name;
3935 offset_type *vec, vec_len, vec_idx;
8943b874 3936 int global_seen = 0;
9291a0cd 3937
3876f04e 3938 if (index->symbol_table[idx] == 0 && index->symbol_table[idx + 1] == 0)
9291a0cd
TT
3939 continue;
3940
3876f04e 3941 name = index->constant_pool + MAYBE_SWAP (index->symbol_table[idx]);
9291a0cd 3942
206f2a57 3943 if (! (*symbol_matcher) (name, data))
9291a0cd
TT
3944 continue;
3945
3946 /* The name was matched, now expand corresponding CUs that were
3947 marked. */
4b5246aa 3948 vec = (offset_type *) (index->constant_pool
3876f04e 3949 + MAYBE_SWAP (index->symbol_table[idx + 1]));
9291a0cd
TT
3950 vec_len = MAYBE_SWAP (vec[0]);
3951 for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
3952 {
e254ef6a 3953 struct dwarf2_per_cu_data *per_cu;
156942c7 3954 offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
8943b874
DE
3955 /* This value is only valid for index versions >= 7. */
3956 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
156942c7
DE
3957 gdb_index_symbol_kind symbol_kind =
3958 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3959 int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3190f0c6
DE
3960 /* Only check the symbol attributes if they're present.
3961 Indices prior to version 7 don't record them,
3962 and indices >= 7 may elide them for certain symbols
3963 (gold does this). */
3964 int attrs_valid =
3965 (index->version >= 7
3966 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3967
8943b874
DE
3968 /* Work around gold/15646. */
3969 if (attrs_valid)
3970 {
3971 if (!is_static && global_seen)
3972 continue;
3973 if (!is_static)
3974 global_seen = 1;
3975 }
3976
3190f0c6
DE
3977 /* Only check the symbol's kind if it has one. */
3978 if (attrs_valid)
156942c7
DE
3979 {
3980 switch (kind)
3981 {
3982 case VARIABLES_DOMAIN:
3983 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
3984 continue;
3985 break;
3986 case FUNCTIONS_DOMAIN:
3987 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
3988 continue;
3989 break;
3990 case TYPES_DOMAIN:
3991 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3992 continue;
3993 break;
3994 default:
3995 break;
3996 }
3997 }
3998
3190f0c6
DE
3999 /* Don't crash on bad data. */
4000 if (cu_index >= (dwarf2_per_objfile->n_comp_units
4001 + dwarf2_per_objfile->n_type_units))
4002 {
4003 complaint (&symfile_complaints,
4004 _(".gdb_index entry has bad CU index"
4262abfb 4005 " [in module %s]"), objfile_name (objfile));
3190f0c6
DE
4006 continue;
4007 }
4008
8832e7e3 4009 per_cu = dw2_get_cutu (cu_index);
7b08b9eb 4010 if (file_matcher == NULL || per_cu->v.quick->mark)
276d885b
GB
4011 {
4012 int symtab_was_null =
4013 (per_cu->v.quick->compunit_symtab == NULL);
4014
4015 dw2_instantiate_symtab (per_cu);
4016
4017 if (expansion_notify != NULL
4018 && symtab_was_null
4019 && per_cu->v.quick->compunit_symtab != NULL)
4020 {
4021 expansion_notify (per_cu->v.quick->compunit_symtab,
4022 data);
4023 }
4024 }
9291a0cd
TT
4025 }
4026 }
4027}
4028
43f3e411 4029/* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
9703b513
TT
4030 symtab. */
4031
43f3e411
DE
4032static struct compunit_symtab *
4033recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
4034 CORE_ADDR pc)
9703b513
TT
4035{
4036 int i;
4037
43f3e411
DE
4038 if (COMPUNIT_BLOCKVECTOR (cust) != NULL
4039 && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
4040 return cust;
9703b513 4041
43f3e411 4042 if (cust->includes == NULL)
a3ec0bb1
DE
4043 return NULL;
4044
43f3e411 4045 for (i = 0; cust->includes[i]; ++i)
9703b513 4046 {
43f3e411 4047 struct compunit_symtab *s = cust->includes[i];
9703b513 4048
43f3e411 4049 s = recursively_find_pc_sect_compunit_symtab (s, pc);
9703b513
TT
4050 if (s != NULL)
4051 return s;
4052 }
4053
4054 return NULL;
4055}
4056
43f3e411
DE
4057static struct compunit_symtab *
4058dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
4059 struct bound_minimal_symbol msymbol,
4060 CORE_ADDR pc,
4061 struct obj_section *section,
4062 int warn_if_readin)
9291a0cd
TT
4063{
4064 struct dwarf2_per_cu_data *data;
43f3e411 4065 struct compunit_symtab *result;
9291a0cd
TT
4066
4067 dw2_setup (objfile);
4068
4069 if (!objfile->psymtabs_addrmap)
4070 return NULL;
4071
4072 data = addrmap_find (objfile->psymtabs_addrmap, pc);
4073 if (!data)
4074 return NULL;
4075
43f3e411 4076 if (warn_if_readin && data->v.quick->compunit_symtab)
abebb8b0 4077 warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
9291a0cd
TT
4078 paddress (get_objfile_arch (objfile), pc));
4079
43f3e411
DE
4080 result
4081 = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data),
4082 pc);
9703b513
TT
4083 gdb_assert (result != NULL);
4084 return result;
9291a0cd
TT
4085}
4086
9291a0cd 4087static void
44b13c5a 4088dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
74e2f255 4089 void *data, int need_fullname)
9291a0cd
TT
4090{
4091 int i;
24c79950
TT
4092 struct cleanup *cleanup;
4093 htab_t visited = htab_create_alloc (10, htab_hash_pointer, htab_eq_pointer,
4094 NULL, xcalloc, xfree);
9291a0cd 4095
24c79950 4096 cleanup = make_cleanup_htab_delete (visited);
9291a0cd 4097 dw2_setup (objfile);
ae2de4f8 4098
848e3e78
DE
4099 /* The rule is CUs specify all the files, including those used by
4100 any TU, so there's no need to scan TUs here.
4101 We can ignore file names coming from already-expanded CUs. */
f4dc4d17 4102
848e3e78 4103 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
24c79950 4104 {
8832e7e3 4105 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
24c79950 4106
43f3e411 4107 if (per_cu->v.quick->compunit_symtab)
24c79950
TT
4108 {
4109 void **slot = htab_find_slot (visited, per_cu->v.quick->file_names,
4110 INSERT);
4111
4112 *slot = per_cu->v.quick->file_names;
4113 }
4114 }
4115
848e3e78 4116 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
4117 {
4118 int j;
8832e7e3 4119 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
7b9f3c50 4120 struct quick_file_names *file_data;
24c79950 4121 void **slot;
9291a0cd 4122
3d7bb9d9 4123 /* We only need to look at symtabs not already expanded. */
43f3e411 4124 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
4125 continue;
4126
e4a48d9d 4127 file_data = dw2_get_file_names (per_cu);
7b9f3c50 4128 if (file_data == NULL)
9291a0cd
TT
4129 continue;
4130
24c79950
TT
4131 slot = htab_find_slot (visited, file_data, INSERT);
4132 if (*slot)
4133 {
4134 /* Already visited. */
4135 continue;
4136 }
4137 *slot = file_data;
4138
7b9f3c50 4139 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 4140 {
74e2f255
DE
4141 const char *this_real_name;
4142
4143 if (need_fullname)
4144 this_real_name = dw2_get_real_path (objfile, file_data, j);
4145 else
4146 this_real_name = NULL;
7b9f3c50 4147 (*fun) (file_data->file_names[j], this_real_name, data);
9291a0cd
TT
4148 }
4149 }
24c79950
TT
4150
4151 do_cleanups (cleanup);
9291a0cd
TT
4152}
4153
4154static int
4155dw2_has_symbols (struct objfile *objfile)
4156{
4157 return 1;
4158}
4159
4160const struct quick_symbol_functions dwarf2_gdb_index_functions =
4161{
4162 dw2_has_symbols,
4163 dw2_find_last_source_symtab,
4164 dw2_forget_cached_source_info,
f8eba3c6 4165 dw2_map_symtabs_matching_filename,
9291a0cd 4166 dw2_lookup_symbol,
9291a0cd
TT
4167 dw2_print_stats,
4168 dw2_dump,
4169 dw2_relocate,
4170 dw2_expand_symtabs_for_function,
4171 dw2_expand_all_symtabs,
652a8996 4172 dw2_expand_symtabs_with_fullname,
40658b94 4173 dw2_map_matching_symbols,
9291a0cd 4174 dw2_expand_symtabs_matching,
43f3e411 4175 dw2_find_pc_sect_compunit_symtab,
9291a0cd
TT
4176 dw2_map_symbol_filenames
4177};
4178
4179/* Initialize for reading DWARF for this objfile. Return 0 if this
4180 file will use psymtabs, or 1 if using the GNU index. */
4181
4182int
4183dwarf2_initialize_objfile (struct objfile *objfile)
4184{
4185 /* If we're about to read full symbols, don't bother with the
4186 indices. In this case we also don't care if some other debug
4187 format is making psymtabs, because they are all about to be
4188 expanded anyway. */
4189 if ((objfile->flags & OBJF_READNOW))
4190 {
4191 int i;
4192
4193 dwarf2_per_objfile->using_index = 1;
4194 create_all_comp_units (objfile);
0e50663e 4195 create_all_type_units (objfile);
7b9f3c50
DE
4196 dwarf2_per_objfile->quick_file_names_table =
4197 create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
9291a0cd 4198
1fd400ff 4199 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
d467dd73 4200 + dwarf2_per_objfile->n_type_units); ++i)
9291a0cd 4201 {
8832e7e3 4202 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 4203
e254ef6a
DE
4204 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4205 struct dwarf2_per_cu_quick_data);
9291a0cd
TT
4206 }
4207
4208 /* Return 1 so that gdb sees the "quick" functions. However,
4209 these functions will be no-ops because we will have expanded
4210 all symtabs. */
4211 return 1;
4212 }
4213
4214 if (dwarf2_read_index (objfile))
4215 return 1;
4216
9291a0cd
TT
4217 return 0;
4218}
4219
4220\f
4221
dce234bc
PP
4222/* Build a partial symbol table. */
4223
4224void
f29dff0a 4225dwarf2_build_psymtabs (struct objfile *objfile)
dce234bc 4226{
c9bf0622 4227
f29dff0a 4228 if (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0)
c906108c
SS
4229 {
4230 init_psymbol_list (objfile, 1024);
4231 }
4232
492d29ea 4233 TRY
c9bf0622
TT
4234 {
4235 /* This isn't really ideal: all the data we allocate on the
4236 objfile's obstack is still uselessly kept around. However,
4237 freeing it seems unsafe. */
4238 struct cleanup *cleanups = make_cleanup_discard_psymtabs (objfile);
4239
4240 dwarf2_build_psymtabs_hard (objfile);
4241 discard_cleanups (cleanups);
4242 }
492d29ea
PA
4243 CATCH (except, RETURN_MASK_ERROR)
4244 {
4245 exception_print (gdb_stderr, except);
4246 }
4247 END_CATCH
c906108c 4248}
c906108c 4249
1ce1cefd
DE
4250/* Return the total length of the CU described by HEADER. */
4251
4252static unsigned int
4253get_cu_length (const struct comp_unit_head *header)
4254{
4255 return header->initial_length_size + header->length;
4256}
4257
45452591
DE
4258/* Return TRUE if OFFSET is within CU_HEADER. */
4259
4260static inline int
b64f50a1 4261offset_in_cu_p (const struct comp_unit_head *cu_header, sect_offset offset)
45452591 4262{
b64f50a1 4263 sect_offset bottom = { cu_header->offset.sect_off };
1ce1cefd 4264 sect_offset top = { cu_header->offset.sect_off + get_cu_length (cu_header) };
9a619af0 4265
b64f50a1 4266 return (offset.sect_off >= bottom.sect_off && offset.sect_off < top.sect_off);
45452591
DE
4267}
4268
3b80fe9b
DE
4269/* Find the base address of the compilation unit for range lists and
4270 location lists. It will normally be specified by DW_AT_low_pc.
4271 In DWARF-3 draft 4, the base address could be overridden by
4272 DW_AT_entry_pc. It's been removed, but GCC still uses this for
4273 compilation units with discontinuous ranges. */
4274
4275static void
4276dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
4277{
4278 struct attribute *attr;
4279
4280 cu->base_known = 0;
4281 cu->base_address = 0;
4282
4283 attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
4284 if (attr)
4285 {
31aa7e4e 4286 cu->base_address = attr_value_as_address (attr);
3b80fe9b
DE
4287 cu->base_known = 1;
4288 }
4289 else
4290 {
4291 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
4292 if (attr)
4293 {
31aa7e4e 4294 cu->base_address = attr_value_as_address (attr);
3b80fe9b
DE
4295 cu->base_known = 1;
4296 }
4297 }
4298}
4299
93311388
DE
4300/* Read in the comp unit header information from the debug_info at info_ptr.
4301 NOTE: This leaves members offset, first_die_offset to be filled in
4302 by the caller. */
107d2387 4303
d521ce57 4304static const gdb_byte *
107d2387 4305read_comp_unit_head (struct comp_unit_head *cu_header,
d521ce57 4306 const gdb_byte *info_ptr, bfd *abfd)
107d2387
AC
4307{
4308 int signed_addr;
891d2f0b 4309 unsigned int bytes_read;
c764a876
DE
4310
4311 cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
4312 cu_header->initial_length_size = bytes_read;
4313 cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
613e1657 4314 info_ptr += bytes_read;
107d2387
AC
4315 cu_header->version = read_2_bytes (abfd, info_ptr);
4316 info_ptr += 2;
b64f50a1
JK
4317 cu_header->abbrev_offset.sect_off = read_offset (abfd, info_ptr, cu_header,
4318 &bytes_read);
613e1657 4319 info_ptr += bytes_read;
107d2387
AC
4320 cu_header->addr_size = read_1_byte (abfd, info_ptr);
4321 info_ptr += 1;
4322 signed_addr = bfd_get_sign_extend_vma (abfd);
4323 if (signed_addr < 0)
8e65ff28 4324 internal_error (__FILE__, __LINE__,
e2e0b3e5 4325 _("read_comp_unit_head: dwarf from non elf file"));
107d2387 4326 cu_header->signed_addr_p = signed_addr;
c764a876 4327
107d2387
AC
4328 return info_ptr;
4329}
4330
36586728
TT
4331/* Helper function that returns the proper abbrev section for
4332 THIS_CU. */
4333
4334static struct dwarf2_section_info *
4335get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
4336{
4337 struct dwarf2_section_info *abbrev;
4338
4339 if (this_cu->is_dwz)
4340 abbrev = &dwarf2_get_dwz_file ()->abbrev;
4341 else
4342 abbrev = &dwarf2_per_objfile->abbrev;
4343
4344 return abbrev;
4345}
4346
9ff913ba
DE
4347/* Subroutine of read_and_check_comp_unit_head and
4348 read_and_check_type_unit_head to simplify them.
4349 Perform various error checking on the header. */
4350
4351static void
4352error_check_comp_unit_head (struct comp_unit_head *header,
4bdcc0c1
DE
4353 struct dwarf2_section_info *section,
4354 struct dwarf2_section_info *abbrev_section)
9ff913ba 4355{
a32a8923
DE
4356 bfd *abfd = get_section_bfd_owner (section);
4357 const char *filename = get_section_file_name (section);
9ff913ba
DE
4358
4359 if (header->version != 2 && header->version != 3 && header->version != 4)
4360 error (_("Dwarf Error: wrong version in compilation unit header "
4361 "(is %d, should be 2, 3, or 4) [in module %s]"), header->version,
4362 filename);
4363
b64f50a1 4364 if (header->abbrev_offset.sect_off
36586728 4365 >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
9ff913ba
DE
4366 error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
4367 "(offset 0x%lx + 6) [in module %s]"),
b64f50a1 4368 (long) header->abbrev_offset.sect_off, (long) header->offset.sect_off,
9ff913ba
DE
4369 filename);
4370
4371 /* Cast to unsigned long to use 64-bit arithmetic when possible to
4372 avoid potential 32-bit overflow. */
1ce1cefd 4373 if (((unsigned long) header->offset.sect_off + get_cu_length (header))
9ff913ba
DE
4374 > section->size)
4375 error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
4376 "(offset 0x%lx + 0) [in module %s]"),
b64f50a1 4377 (long) header->length, (long) header->offset.sect_off,
9ff913ba
DE
4378 filename);
4379}
4380
4381/* Read in a CU/TU header and perform some basic error checking.
4382 The contents of the header are stored in HEADER.
4383 The result is a pointer to the start of the first DIE. */
adabb602 4384
d521ce57 4385static const gdb_byte *
9ff913ba
DE
4386read_and_check_comp_unit_head (struct comp_unit_head *header,
4387 struct dwarf2_section_info *section,
4bdcc0c1 4388 struct dwarf2_section_info *abbrev_section,
d521ce57 4389 const gdb_byte *info_ptr,
9ff913ba 4390 int is_debug_types_section)
72bf9492 4391{
d521ce57 4392 const gdb_byte *beg_of_comp_unit = info_ptr;
a32a8923 4393 bfd *abfd = get_section_bfd_owner (section);
72bf9492 4394
b64f50a1 4395 header->offset.sect_off = beg_of_comp_unit - section->buffer;
adabb602 4396
72bf9492
DJ
4397 info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4398
460c1c54
CC
4399 /* If we're reading a type unit, skip over the signature and
4400 type_offset fields. */
b0df02fd 4401 if (is_debug_types_section)
460c1c54
CC
4402 info_ptr += 8 /*signature*/ + header->offset_size;
4403
b64f50a1 4404 header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
adabb602 4405
4bdcc0c1 4406 error_check_comp_unit_head (header, section, abbrev_section);
72bf9492
DJ
4407
4408 return info_ptr;
4409}
4410
348e048f
DE
4411/* Read in the types comp unit header information from .debug_types entry at
4412 types_ptr. The result is a pointer to one past the end of the header. */
4413
d521ce57 4414static const gdb_byte *
9ff913ba
DE
4415read_and_check_type_unit_head (struct comp_unit_head *header,
4416 struct dwarf2_section_info *section,
4bdcc0c1 4417 struct dwarf2_section_info *abbrev_section,
d521ce57 4418 const gdb_byte *info_ptr,
dee91e82
DE
4419 ULONGEST *signature,
4420 cu_offset *type_offset_in_tu)
348e048f 4421{
d521ce57 4422 const gdb_byte *beg_of_comp_unit = info_ptr;
a32a8923 4423 bfd *abfd = get_section_bfd_owner (section);
348e048f 4424
b64f50a1 4425 header->offset.sect_off = beg_of_comp_unit - section->buffer;
348e048f 4426
9ff913ba 4427 info_ptr = read_comp_unit_head (header, info_ptr, abfd);
348e048f 4428
9ff913ba
DE
4429 /* If we're reading a type unit, skip over the signature and
4430 type_offset fields. */
4431 if (signature != NULL)
4432 *signature = read_8_bytes (abfd, info_ptr);
4433 info_ptr += 8;
dee91e82
DE
4434 if (type_offset_in_tu != NULL)
4435 type_offset_in_tu->cu_off = read_offset_1 (abfd, info_ptr,
4436 header->offset_size);
9ff913ba
DE
4437 info_ptr += header->offset_size;
4438
b64f50a1 4439 header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
348e048f 4440
4bdcc0c1 4441 error_check_comp_unit_head (header, section, abbrev_section);
9ff913ba
DE
4442
4443 return info_ptr;
348e048f
DE
4444}
4445
f4dc4d17
DE
4446/* Fetch the abbreviation table offset from a comp or type unit header. */
4447
4448static sect_offset
4449read_abbrev_offset (struct dwarf2_section_info *section,
4450 sect_offset offset)
4451{
a32a8923 4452 bfd *abfd = get_section_bfd_owner (section);
d521ce57 4453 const gdb_byte *info_ptr;
f4dc4d17
DE
4454 unsigned int length, initial_length_size, offset_size;
4455 sect_offset abbrev_offset;
4456
4457 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
4458 info_ptr = section->buffer + offset.sect_off;
4459 length = read_initial_length (abfd, info_ptr, &initial_length_size);
4460 offset_size = initial_length_size == 4 ? 4 : 8;
4461 info_ptr += initial_length_size + 2 /*version*/;
4462 abbrev_offset.sect_off = read_offset_1 (abfd, info_ptr, offset_size);
4463 return abbrev_offset;
4464}
4465
aaa75496
JB
4466/* Allocate a new partial symtab for file named NAME and mark this new
4467 partial symtab as being an include of PST. */
4468
4469static void
d521ce57 4470dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
aaa75496
JB
4471 struct objfile *objfile)
4472{
4473 struct partial_symtab *subpst = allocate_psymtab (name, objfile);
4474
fbd9ab74
JK
4475 if (!IS_ABSOLUTE_PATH (subpst->filename))
4476 {
4477 /* It shares objfile->objfile_obstack. */
4478 subpst->dirname = pst->dirname;
4479 }
4480
aaa75496
JB
4481 subpst->section_offsets = pst->section_offsets;
4482 subpst->textlow = 0;
4483 subpst->texthigh = 0;
4484
4485 subpst->dependencies = (struct partial_symtab **)
4486 obstack_alloc (&objfile->objfile_obstack,
4487 sizeof (struct partial_symtab *));
4488 subpst->dependencies[0] = pst;
4489 subpst->number_of_dependencies = 1;
4490
4491 subpst->globals_offset = 0;
4492 subpst->n_global_syms = 0;
4493 subpst->statics_offset = 0;
4494 subpst->n_static_syms = 0;
43f3e411 4495 subpst->compunit_symtab = NULL;
aaa75496
JB
4496 subpst->read_symtab = pst->read_symtab;
4497 subpst->readin = 0;
4498
4499 /* No private part is necessary for include psymtabs. This property
4500 can be used to differentiate between such include psymtabs and
10b3939b 4501 the regular ones. */
58a9656e 4502 subpst->read_symtab_private = NULL;
aaa75496
JB
4503}
4504
4505/* Read the Line Number Program data and extract the list of files
4506 included by the source file represented by PST. Build an include
d85a05f0 4507 partial symtab for each of these included files. */
aaa75496
JB
4508
4509static void
4510dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
dee91e82
DE
4511 struct die_info *die,
4512 struct partial_symtab *pst)
aaa75496 4513{
d85a05f0
DJ
4514 struct line_header *lh = NULL;
4515 struct attribute *attr;
aaa75496 4516
d85a05f0
DJ
4517 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
4518 if (attr)
3019eac3 4519 lh = dwarf_decode_line_header (DW_UNSND (attr), cu);
aaa75496
JB
4520 if (lh == NULL)
4521 return; /* No linetable, so no includes. */
4522
c6da4cef 4523 /* NOTE: pst->dirname is DW_AT_comp_dir (if present). */
527f3840 4524 dwarf_decode_lines (lh, pst->dirname, cu, pst, pst->textlow, 1);
aaa75496
JB
4525
4526 free_line_header (lh);
4527}
4528
348e048f 4529static hashval_t
52dc124a 4530hash_signatured_type (const void *item)
348e048f 4531{
52dc124a 4532 const struct signatured_type *sig_type = item;
9a619af0 4533
348e048f 4534 /* This drops the top 32 bits of the signature, but is ok for a hash. */
52dc124a 4535 return sig_type->signature;
348e048f
DE
4536}
4537
4538static int
52dc124a 4539eq_signatured_type (const void *item_lhs, const void *item_rhs)
348e048f
DE
4540{
4541 const struct signatured_type *lhs = item_lhs;
4542 const struct signatured_type *rhs = item_rhs;
9a619af0 4543
348e048f
DE
4544 return lhs->signature == rhs->signature;
4545}
4546
1fd400ff
TT
4547/* Allocate a hash table for signatured types. */
4548
4549static htab_t
673bfd45 4550allocate_signatured_type_table (struct objfile *objfile)
1fd400ff
TT
4551{
4552 return htab_create_alloc_ex (41,
52dc124a
DE
4553 hash_signatured_type,
4554 eq_signatured_type,
1fd400ff
TT
4555 NULL,
4556 &objfile->objfile_obstack,
4557 hashtab_obstack_allocate,
4558 dummy_obstack_deallocate);
4559}
4560
d467dd73 4561/* A helper function to add a signatured type CU to a table. */
1fd400ff
TT
4562
4563static int
d467dd73 4564add_signatured_type_cu_to_table (void **slot, void *datum)
1fd400ff
TT
4565{
4566 struct signatured_type *sigt = *slot;
b4dd5633 4567 struct signatured_type ***datap = datum;
1fd400ff 4568
b4dd5633 4569 **datap = sigt;
1fd400ff
TT
4570 ++*datap;
4571
4572 return 1;
4573}
4574
c88ee1f0
DE
4575/* Create the hash table of all entries in the .debug_types
4576 (or .debug_types.dwo) section(s).
4577 If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
4578 otherwise it is NULL.
4579
4580 The result is a pointer to the hash table or NULL if there are no types.
4581
4582 Note: This function processes DWO files only, not DWP files. */
348e048f 4583
3019eac3
DE
4584static htab_t
4585create_debug_types_hash_table (struct dwo_file *dwo_file,
4586 VEC (dwarf2_section_info_def) *types)
348e048f 4587{
3019eac3 4588 struct objfile *objfile = dwarf2_per_objfile->objfile;
8b70b953 4589 htab_t types_htab = NULL;
8b70b953
TT
4590 int ix;
4591 struct dwarf2_section_info *section;
4bdcc0c1 4592 struct dwarf2_section_info *abbrev_section;
348e048f 4593
3019eac3
DE
4594 if (VEC_empty (dwarf2_section_info_def, types))
4595 return NULL;
348e048f 4596
4bdcc0c1
DE
4597 abbrev_section = (dwo_file != NULL
4598 ? &dwo_file->sections.abbrev
4599 : &dwarf2_per_objfile->abbrev);
4600
09406207
DE
4601 if (dwarf2_read_debug)
4602 fprintf_unfiltered (gdb_stdlog, "Reading .debug_types%s for %s:\n",
4603 dwo_file ? ".dwo" : "",
a32a8923 4604 get_section_file_name (abbrev_section));
09406207 4605
8b70b953 4606 for (ix = 0;
3019eac3 4607 VEC_iterate (dwarf2_section_info_def, types, ix, section);
8b70b953
TT
4608 ++ix)
4609 {
3019eac3 4610 bfd *abfd;
d521ce57 4611 const gdb_byte *info_ptr, *end_ptr;
348e048f 4612
8b70b953
TT
4613 dwarf2_read_section (objfile, section);
4614 info_ptr = section->buffer;
348e048f 4615
8b70b953
TT
4616 if (info_ptr == NULL)
4617 continue;
348e048f 4618
3019eac3 4619 /* We can't set abfd until now because the section may be empty or
a32a8923
DE
4620 not present, in which case the bfd is unknown. */
4621 abfd = get_section_bfd_owner (section);
3019eac3 4622
dee91e82
DE
4623 /* We don't use init_cutu_and_read_dies_simple, or some such, here
4624 because we don't need to read any dies: the signature is in the
4625 header. */
8b70b953
TT
4626
4627 end_ptr = info_ptr + section->size;
4628 while (info_ptr < end_ptr)
4629 {
b64f50a1 4630 sect_offset offset;
3019eac3 4631 cu_offset type_offset_in_tu;
8b70b953 4632 ULONGEST signature;
52dc124a 4633 struct signatured_type *sig_type;
3019eac3 4634 struct dwo_unit *dwo_tu;
8b70b953 4635 void **slot;
d521ce57 4636 const gdb_byte *ptr = info_ptr;
9ff913ba 4637 struct comp_unit_head header;
dee91e82 4638 unsigned int length;
348e048f 4639
b64f50a1 4640 offset.sect_off = ptr - section->buffer;
348e048f 4641
8b70b953 4642 /* We need to read the type's signature in order to build the hash
9ff913ba 4643 table, but we don't need anything else just yet. */
348e048f 4644
4bdcc0c1
DE
4645 ptr = read_and_check_type_unit_head (&header, section,
4646 abbrev_section, ptr,
3019eac3 4647 &signature, &type_offset_in_tu);
6caca83c 4648
1ce1cefd 4649 length = get_cu_length (&header);
dee91e82 4650
6caca83c 4651 /* Skip dummy type units. */
dee91e82
DE
4652 if (ptr >= info_ptr + length
4653 || peek_abbrev_code (abfd, ptr) == 0)
6caca83c 4654 {
1ce1cefd 4655 info_ptr += length;
6caca83c
CC
4656 continue;
4657 }
8b70b953 4658
0349ea22
DE
4659 if (types_htab == NULL)
4660 {
4661 if (dwo_file)
4662 types_htab = allocate_dwo_unit_table (objfile);
4663 else
4664 types_htab = allocate_signatured_type_table (objfile);
4665 }
4666
3019eac3
DE
4667 if (dwo_file)
4668 {
4669 sig_type = NULL;
4670 dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4671 struct dwo_unit);
4672 dwo_tu->dwo_file = dwo_file;
4673 dwo_tu->signature = signature;
4674 dwo_tu->type_offset_in_tu = type_offset_in_tu;
8a0459fd 4675 dwo_tu->section = section;
3019eac3
DE
4676 dwo_tu->offset = offset;
4677 dwo_tu->length = length;
4678 }
4679 else
4680 {
4681 /* N.B.: type_offset is not usable if this type uses a DWO file.
4682 The real type_offset is in the DWO file. */
4683 dwo_tu = NULL;
4684 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4685 struct signatured_type);
4686 sig_type->signature = signature;
4687 sig_type->type_offset_in_tu = type_offset_in_tu;
4688 sig_type->per_cu.objfile = objfile;
4689 sig_type->per_cu.is_debug_types = 1;
8a0459fd 4690 sig_type->per_cu.section = section;
3019eac3
DE
4691 sig_type->per_cu.offset = offset;
4692 sig_type->per_cu.length = length;
4693 }
8b70b953 4694
3019eac3
DE
4695 slot = htab_find_slot (types_htab,
4696 dwo_file ? (void*) dwo_tu : (void *) sig_type,
4697 INSERT);
8b70b953
TT
4698 gdb_assert (slot != NULL);
4699 if (*slot != NULL)
4700 {
3019eac3
DE
4701 sect_offset dup_offset;
4702
4703 if (dwo_file)
4704 {
4705 const struct dwo_unit *dup_tu = *slot;
4706
4707 dup_offset = dup_tu->offset;
4708 }
4709 else
4710 {
4711 const struct signatured_type *dup_tu = *slot;
4712
4713 dup_offset = dup_tu->per_cu.offset;
4714 }
b3c8eb43 4715
8b70b953 4716 complaint (&symfile_complaints,
c88ee1f0 4717 _("debug type entry at offset 0x%x is duplicate to"
4031ecc5 4718 " the entry at offset 0x%x, signature %s"),
3019eac3 4719 offset.sect_off, dup_offset.sect_off,
4031ecc5 4720 hex_string (signature));
8b70b953 4721 }
3019eac3 4722 *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
348e048f 4723
73be47f5 4724 if (dwarf2_read_debug > 1)
4031ecc5 4725 fprintf_unfiltered (gdb_stdlog, " offset 0x%x, signature %s\n",
b64f50a1 4726 offset.sect_off,
4031ecc5 4727 hex_string (signature));
348e048f 4728
dee91e82 4729 info_ptr += length;
8b70b953 4730 }
348e048f
DE
4731 }
4732
3019eac3
DE
4733 return types_htab;
4734}
4735
4736/* Create the hash table of all entries in the .debug_types section,
4737 and initialize all_type_units.
4738 The result is zero if there is an error (e.g. missing .debug_types section),
4739 otherwise non-zero. */
4740
4741static int
4742create_all_type_units (struct objfile *objfile)
4743{
4744 htab_t types_htab;
b4dd5633 4745 struct signatured_type **iter;
3019eac3
DE
4746
4747 types_htab = create_debug_types_hash_table (NULL, dwarf2_per_objfile->types);
4748 if (types_htab == NULL)
4749 {
4750 dwarf2_per_objfile->signatured_types = NULL;
4751 return 0;
4752 }
4753
348e048f
DE
4754 dwarf2_per_objfile->signatured_types = types_htab;
4755
6aa5f3a6
DE
4756 dwarf2_per_objfile->n_type_units
4757 = dwarf2_per_objfile->n_allocated_type_units
4758 = htab_elements (types_htab);
d467dd73 4759 dwarf2_per_objfile->all_type_units
a2ce51a0
DE
4760 = xmalloc (dwarf2_per_objfile->n_type_units
4761 * sizeof (struct signatured_type *));
d467dd73
DE
4762 iter = &dwarf2_per_objfile->all_type_units[0];
4763 htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table, &iter);
4764 gdb_assert (iter - &dwarf2_per_objfile->all_type_units[0]
4765 == dwarf2_per_objfile->n_type_units);
1fd400ff 4766
348e048f
DE
4767 return 1;
4768}
4769
6aa5f3a6
DE
4770/* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
4771 If SLOT is non-NULL, it is the entry to use in the hash table.
4772 Otherwise we find one. */
4773
4774static struct signatured_type *
4775add_type_unit (ULONGEST sig, void **slot)
4776{
4777 struct objfile *objfile = dwarf2_per_objfile->objfile;
4778 int n_type_units = dwarf2_per_objfile->n_type_units;
4779 struct signatured_type *sig_type;
4780
4781 gdb_assert (n_type_units <= dwarf2_per_objfile->n_allocated_type_units);
4782 ++n_type_units;
4783 if (n_type_units > dwarf2_per_objfile->n_allocated_type_units)
4784 {
4785 if (dwarf2_per_objfile->n_allocated_type_units == 0)
4786 dwarf2_per_objfile->n_allocated_type_units = 1;
4787 dwarf2_per_objfile->n_allocated_type_units *= 2;
4788 dwarf2_per_objfile->all_type_units
4789 = xrealloc (dwarf2_per_objfile->all_type_units,
4790 dwarf2_per_objfile->n_allocated_type_units
4791 * sizeof (struct signatured_type *));
4792 ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
4793 }
4794 dwarf2_per_objfile->n_type_units = n_type_units;
4795
4796 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4797 struct signatured_type);
4798 dwarf2_per_objfile->all_type_units[n_type_units - 1] = sig_type;
4799 sig_type->signature = sig;
4800 sig_type->per_cu.is_debug_types = 1;
4801 if (dwarf2_per_objfile->using_index)
4802 {
4803 sig_type->per_cu.v.quick =
4804 OBSTACK_ZALLOC (&objfile->objfile_obstack,
4805 struct dwarf2_per_cu_quick_data);
4806 }
4807
4808 if (slot == NULL)
4809 {
4810 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4811 sig_type, INSERT);
4812 }
4813 gdb_assert (*slot == NULL);
4814 *slot = sig_type;
4815 /* The rest of sig_type must be filled in by the caller. */
4816 return sig_type;
4817}
4818
a2ce51a0
DE
4819/* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
4820 Fill in SIG_ENTRY with DWO_ENTRY. */
4821
4822static void
4823fill_in_sig_entry_from_dwo_entry (struct objfile *objfile,
4824 struct signatured_type *sig_entry,
4825 struct dwo_unit *dwo_entry)
4826{
7ee85ab1 4827 /* Make sure we're not clobbering something we don't expect to. */
a2ce51a0
DE
4828 gdb_assert (! sig_entry->per_cu.queued);
4829 gdb_assert (sig_entry->per_cu.cu == NULL);
6aa5f3a6
DE
4830 if (dwarf2_per_objfile->using_index)
4831 {
4832 gdb_assert (sig_entry->per_cu.v.quick != NULL);
43f3e411 4833 gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6aa5f3a6
DE
4834 }
4835 else
4836 gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
a2ce51a0
DE
4837 gdb_assert (sig_entry->signature == dwo_entry->signature);
4838 gdb_assert (sig_entry->type_offset_in_section.sect_off == 0);
4839 gdb_assert (sig_entry->type_unit_group == NULL);
7ee85ab1
DE
4840 gdb_assert (sig_entry->dwo_unit == NULL);
4841
4842 sig_entry->per_cu.section = dwo_entry->section;
4843 sig_entry->per_cu.offset = dwo_entry->offset;
4844 sig_entry->per_cu.length = dwo_entry->length;
4845 sig_entry->per_cu.reading_dwo_directly = 1;
4846 sig_entry->per_cu.objfile = objfile;
a2ce51a0
DE
4847 sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
4848 sig_entry->dwo_unit = dwo_entry;
4849}
4850
4851/* Subroutine of lookup_signatured_type.
7ee85ab1
DE
4852 If we haven't read the TU yet, create the signatured_type data structure
4853 for a TU to be read in directly from a DWO file, bypassing the stub.
4854 This is the "Stay in DWO Optimization": When there is no DWP file and we're
4855 using .gdb_index, then when reading a CU we want to stay in the DWO file
4856 containing that CU. Otherwise we could end up reading several other DWO
4857 files (due to comdat folding) to process the transitive closure of all the
4858 mentioned TUs, and that can be slow. The current DWO file will have every
4859 type signature that it needs.
a2ce51a0
DE
4860 We only do this for .gdb_index because in the psymtab case we already have
4861 to read all the DWOs to build the type unit groups. */
4862
4863static struct signatured_type *
4864lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4865{
4866 struct objfile *objfile = dwarf2_per_objfile->objfile;
4867 struct dwo_file *dwo_file;
4868 struct dwo_unit find_dwo_entry, *dwo_entry;
4869 struct signatured_type find_sig_entry, *sig_entry;
6aa5f3a6 4870 void **slot;
a2ce51a0
DE
4871
4872 gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4873
6aa5f3a6
DE
4874 /* If TU skeletons have been removed then we may not have read in any
4875 TUs yet. */
4876 if (dwarf2_per_objfile->signatured_types == NULL)
4877 {
4878 dwarf2_per_objfile->signatured_types
4879 = allocate_signatured_type_table (objfile);
4880 }
a2ce51a0
DE
4881
4882 /* We only ever need to read in one copy of a signatured type.
6aa5f3a6
DE
4883 Use the global signatured_types array to do our own comdat-folding
4884 of types. If this is the first time we're reading this TU, and
4885 the TU has an entry in .gdb_index, replace the recorded data from
4886 .gdb_index with this TU. */
a2ce51a0 4887
a2ce51a0 4888 find_sig_entry.signature = sig;
6aa5f3a6
DE
4889 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4890 &find_sig_entry, INSERT);
4891 sig_entry = *slot;
7ee85ab1
DE
4892
4893 /* We can get here with the TU already read, *or* in the process of being
6aa5f3a6
DE
4894 read. Don't reassign the global entry to point to this DWO if that's
4895 the case. Also note that if the TU is already being read, it may not
4896 have come from a DWO, the program may be a mix of Fission-compiled
4897 code and non-Fission-compiled code. */
4898
4899 /* Have we already tried to read this TU?
4900 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
4901 needn't exist in the global table yet). */
4902 if (sig_entry != NULL && sig_entry->per_cu.tu_read)
a2ce51a0
DE
4903 return sig_entry;
4904
6aa5f3a6
DE
4905 /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
4906 dwo_unit of the TU itself. */
4907 dwo_file = cu->dwo_unit->dwo_file;
4908
a2ce51a0
DE
4909 /* Ok, this is the first time we're reading this TU. */
4910 if (dwo_file->tus == NULL)
4911 return NULL;
4912 find_dwo_entry.signature = sig;
4913 dwo_entry = htab_find (dwo_file->tus, &find_dwo_entry);
4914 if (dwo_entry == NULL)
4915 return NULL;
4916
6aa5f3a6
DE
4917 /* If the global table doesn't have an entry for this TU, add one. */
4918 if (sig_entry == NULL)
4919 sig_entry = add_type_unit (sig, slot);
4920
a2ce51a0 4921 fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
89e63ee4 4922 sig_entry->per_cu.tu_read = 1;
a2ce51a0
DE
4923 return sig_entry;
4924}
4925
a2ce51a0
DE
4926/* Subroutine of lookup_signatured_type.
4927 Look up the type for signature SIG, and if we can't find SIG in .gdb_index
6aa5f3a6
DE
4928 then try the DWP file. If the TU stub (skeleton) has been removed then
4929 it won't be in .gdb_index. */
a2ce51a0
DE
4930
4931static struct signatured_type *
4932lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4933{
4934 struct objfile *objfile = dwarf2_per_objfile->objfile;
4935 struct dwp_file *dwp_file = get_dwp_file ();
4936 struct dwo_unit *dwo_entry;
4937 struct signatured_type find_sig_entry, *sig_entry;
6aa5f3a6 4938 void **slot;
a2ce51a0
DE
4939
4940 gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4941 gdb_assert (dwp_file != NULL);
4942
6aa5f3a6
DE
4943 /* If TU skeletons have been removed then we may not have read in any
4944 TUs yet. */
4945 if (dwarf2_per_objfile->signatured_types == NULL)
a2ce51a0 4946 {
6aa5f3a6
DE
4947 dwarf2_per_objfile->signatured_types
4948 = allocate_signatured_type_table (objfile);
a2ce51a0
DE
4949 }
4950
6aa5f3a6
DE
4951 find_sig_entry.signature = sig;
4952 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4953 &find_sig_entry, INSERT);
4954 sig_entry = *slot;
4955
4956 /* Have we already tried to read this TU?
4957 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
4958 needn't exist in the global table yet). */
4959 if (sig_entry != NULL)
4960 return sig_entry;
4961
a2ce51a0
DE
4962 if (dwp_file->tus == NULL)
4963 return NULL;
57d63ce2
DE
4964 dwo_entry = lookup_dwo_unit_in_dwp (dwp_file, NULL,
4965 sig, 1 /* is_debug_types */);
a2ce51a0
DE
4966 if (dwo_entry == NULL)
4967 return NULL;
4968
6aa5f3a6 4969 sig_entry = add_type_unit (sig, slot);
a2ce51a0
DE
4970 fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
4971
a2ce51a0
DE
4972 return sig_entry;
4973}
4974
380bca97 4975/* Lookup a signature based type for DW_FORM_ref_sig8.
5a8b3f62
DE
4976 Returns NULL if signature SIG is not present in the table.
4977 It is up to the caller to complain about this. */
348e048f
DE
4978
4979static struct signatured_type *
a2ce51a0 4980lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
348e048f 4981{
a2ce51a0
DE
4982 if (cu->dwo_unit
4983 && dwarf2_per_objfile->using_index)
4984 {
4985 /* We're in a DWO/DWP file, and we're using .gdb_index.
4986 These cases require special processing. */
4987 if (get_dwp_file () == NULL)
4988 return lookup_dwo_signatured_type (cu, sig);
4989 else
4990 return lookup_dwp_signatured_type (cu, sig);
4991 }
4992 else
4993 {
4994 struct signatured_type find_entry, *entry;
348e048f 4995
a2ce51a0
DE
4996 if (dwarf2_per_objfile->signatured_types == NULL)
4997 return NULL;
4998 find_entry.signature = sig;
4999 entry = htab_find (dwarf2_per_objfile->signatured_types, &find_entry);
5000 return entry;
5001 }
348e048f 5002}
42e7ad6c
DE
5003\f
5004/* Low level DIE reading support. */
348e048f 5005
d85a05f0
DJ
5006/* Initialize a die_reader_specs struct from a dwarf2_cu struct. */
5007
5008static void
5009init_cu_die_reader (struct die_reader_specs *reader,
dee91e82 5010 struct dwarf2_cu *cu,
3019eac3
DE
5011 struct dwarf2_section_info *section,
5012 struct dwo_file *dwo_file)
d85a05f0 5013{
fceca515 5014 gdb_assert (section->readin && section->buffer != NULL);
a32a8923 5015 reader->abfd = get_section_bfd_owner (section);
d85a05f0 5016 reader->cu = cu;
3019eac3 5017 reader->dwo_file = dwo_file;
dee91e82
DE
5018 reader->die_section = section;
5019 reader->buffer = section->buffer;
f664829e 5020 reader->buffer_end = section->buffer + section->size;
a2ce51a0 5021 reader->comp_dir = NULL;
d85a05f0
DJ
5022}
5023
b0c7bfa9
DE
5024/* Subroutine of init_cutu_and_read_dies to simplify it.
5025 Read in the rest of a CU/TU top level DIE from DWO_UNIT.
5026 There's just a lot of work to do, and init_cutu_and_read_dies is big enough
5027 already.
5028
5029 STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
5030 from it to the DIE in the DWO. If NULL we are skipping the stub.
a2ce51a0
DE
5031 STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
5032 from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
c54a1dd8
DE
5033 attribute of the referencing CU. At most one of STUB_COMP_UNIT_DIE and
5034 STUB_COMP_DIR may be non-NULL.
b0c7bfa9
DE
5035 *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
5036 are filled in with the info of the DIE from the DWO file.
5037 ABBREV_TABLE_PROVIDED is non-zero if the caller of init_cutu_and_read_dies
5038 provided an abbrev table to use.
5039 The result is non-zero if a valid (non-dummy) DIE was found. */
5040
5041static int
5042read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
5043 struct dwo_unit *dwo_unit,
5044 int abbrev_table_provided,
5045 struct die_info *stub_comp_unit_die,
a2ce51a0 5046 const char *stub_comp_dir,
b0c7bfa9 5047 struct die_reader_specs *result_reader,
d521ce57 5048 const gdb_byte **result_info_ptr,
b0c7bfa9
DE
5049 struct die_info **result_comp_unit_die,
5050 int *result_has_children)
5051{
5052 struct objfile *objfile = dwarf2_per_objfile->objfile;
5053 struct dwarf2_cu *cu = this_cu->cu;
5054 struct dwarf2_section_info *section;
5055 bfd *abfd;
d521ce57 5056 const gdb_byte *begin_info_ptr, *info_ptr;
b0c7bfa9
DE
5057 ULONGEST signature; /* Or dwo_id. */
5058 struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
5059 int i,num_extra_attrs;
5060 struct dwarf2_section_info *dwo_abbrev_section;
5061 struct attribute *attr;
5062 struct die_info *comp_unit_die;
5063
b0aeadb3
DE
5064 /* At most one of these may be provided. */
5065 gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
a2ce51a0 5066
b0c7bfa9
DE
5067 /* These attributes aren't processed until later:
5068 DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
0d60c288
DE
5069 DW_AT_comp_dir is used now, to find the DWO file, but it is also
5070 referenced later. However, these attributes are found in the stub
5071 which we won't have later. In order to not impose this complication
5072 on the rest of the code, we read them here and copy them to the
5073 DWO CU/TU die. */
b0c7bfa9
DE
5074
5075 stmt_list = NULL;
5076 low_pc = NULL;
5077 high_pc = NULL;
5078 ranges = NULL;
5079 comp_dir = NULL;
5080
5081 if (stub_comp_unit_die != NULL)
5082 {
5083 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
5084 DWO file. */
5085 if (! this_cu->is_debug_types)
5086 stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
5087 low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
5088 high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
5089 ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
5090 comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
5091
5092 /* There should be a DW_AT_addr_base attribute here (if needed).
5093 We need the value before we can process DW_FORM_GNU_addr_index. */
5094 cu->addr_base = 0;
5095 attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
5096 if (attr)
5097 cu->addr_base = DW_UNSND (attr);
5098
5099 /* There should be a DW_AT_ranges_base attribute here (if needed).
5100 We need the value before we can process DW_AT_ranges. */
5101 cu->ranges_base = 0;
5102 attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
5103 if (attr)
5104 cu->ranges_base = DW_UNSND (attr);
5105 }
a2ce51a0
DE
5106 else if (stub_comp_dir != NULL)
5107 {
5108 /* Reconstruct the comp_dir attribute to simplify the code below. */
5109 comp_dir = (struct attribute *)
5110 obstack_alloc (&cu->comp_unit_obstack, sizeof (*comp_dir));
5111 comp_dir->name = DW_AT_comp_dir;
5112 comp_dir->form = DW_FORM_string;
5113 DW_STRING_IS_CANONICAL (comp_dir) = 0;
5114 DW_STRING (comp_dir) = stub_comp_dir;
5115 }
b0c7bfa9
DE
5116
5117 /* Set up for reading the DWO CU/TU. */
5118 cu->dwo_unit = dwo_unit;
5119 section = dwo_unit->section;
5120 dwarf2_read_section (objfile, section);
a32a8923 5121 abfd = get_section_bfd_owner (section);
b0c7bfa9
DE
5122 begin_info_ptr = info_ptr = section->buffer + dwo_unit->offset.sect_off;
5123 dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
5124 init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file);
5125
5126 if (this_cu->is_debug_types)
5127 {
5128 ULONGEST header_signature;
5129 cu_offset type_offset_in_tu;
5130 struct signatured_type *sig_type = (struct signatured_type *) this_cu;
5131
5132 info_ptr = read_and_check_type_unit_head (&cu->header, section,
5133 dwo_abbrev_section,
5134 info_ptr,
5135 &header_signature,
5136 &type_offset_in_tu);
a2ce51a0
DE
5137 /* This is not an assert because it can be caused by bad debug info. */
5138 if (sig_type->signature != header_signature)
5139 {
5140 error (_("Dwarf Error: signature mismatch %s vs %s while reading"
5141 " TU at offset 0x%x [in module %s]"),
5142 hex_string (sig_type->signature),
5143 hex_string (header_signature),
5144 dwo_unit->offset.sect_off,
5145 bfd_get_filename (abfd));
5146 }
b0c7bfa9
DE
5147 gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5148 /* For DWOs coming from DWP files, we don't know the CU length
5149 nor the type's offset in the TU until now. */
5150 dwo_unit->length = get_cu_length (&cu->header);
5151 dwo_unit->type_offset_in_tu = type_offset_in_tu;
5152
5153 /* Establish the type offset that can be used to lookup the type.
5154 For DWO files, we don't know it until now. */
5155 sig_type->type_offset_in_section.sect_off =
5156 dwo_unit->offset.sect_off + dwo_unit->type_offset_in_tu.cu_off;
5157 }
5158 else
5159 {
5160 info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5161 dwo_abbrev_section,
5162 info_ptr, 0);
5163 gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5164 /* For DWOs coming from DWP files, we don't know the CU length
5165 until now. */
5166 dwo_unit->length = get_cu_length (&cu->header);
5167 }
5168
02142a6c
DE
5169 /* Replace the CU's original abbrev table with the DWO's.
5170 Reminder: We can't read the abbrev table until we've read the header. */
b0c7bfa9
DE
5171 if (abbrev_table_provided)
5172 {
5173 /* Don't free the provided abbrev table, the caller of
5174 init_cutu_and_read_dies owns it. */
5175 dwarf2_read_abbrevs (cu, dwo_abbrev_section);
02142a6c 5176 /* Ensure the DWO abbrev table gets freed. */
b0c7bfa9
DE
5177 make_cleanup (dwarf2_free_abbrev_table, cu);
5178 }
5179 else
5180 {
5181 dwarf2_free_abbrev_table (cu);
5182 dwarf2_read_abbrevs (cu, dwo_abbrev_section);
02142a6c 5183 /* Leave any existing abbrev table cleanup as is. */
b0c7bfa9
DE
5184 }
5185
5186 /* Read in the die, but leave space to copy over the attributes
5187 from the stub. This has the benefit of simplifying the rest of
5188 the code - all the work to maintain the illusion of a single
5189 DW_TAG_{compile,type}_unit DIE is done here. */
5190 num_extra_attrs = ((stmt_list != NULL)
5191 + (low_pc != NULL)
5192 + (high_pc != NULL)
5193 + (ranges != NULL)
5194 + (comp_dir != NULL));
5195 info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
5196 result_has_children, num_extra_attrs);
5197
5198 /* Copy over the attributes from the stub to the DIE we just read in. */
5199 comp_unit_die = *result_comp_unit_die;
5200 i = comp_unit_die->num_attrs;
5201 if (stmt_list != NULL)
5202 comp_unit_die->attrs[i++] = *stmt_list;
5203 if (low_pc != NULL)
5204 comp_unit_die->attrs[i++] = *low_pc;
5205 if (high_pc != NULL)
5206 comp_unit_die->attrs[i++] = *high_pc;
5207 if (ranges != NULL)
5208 comp_unit_die->attrs[i++] = *ranges;
5209 if (comp_dir != NULL)
5210 comp_unit_die->attrs[i++] = *comp_dir;
5211 comp_unit_die->num_attrs += num_extra_attrs;
5212
bf6af496
DE
5213 if (dwarf2_die_debug)
5214 {
5215 fprintf_unfiltered (gdb_stdlog,
5216 "Read die from %s@0x%x of %s:\n",
a32a8923 5217 get_section_name (section),
bf6af496
DE
5218 (unsigned) (begin_info_ptr - section->buffer),
5219 bfd_get_filename (abfd));
5220 dump_die (comp_unit_die, dwarf2_die_debug);
5221 }
5222
a2ce51a0
DE
5223 /* Save the comp_dir attribute. If there is no DWP file then we'll read
5224 TUs by skipping the stub and going directly to the entry in the DWO file.
5225 However, skipping the stub means we won't get DW_AT_comp_dir, so we have
5226 to get it via circuitous means. Blech. */
5227 if (comp_dir != NULL)
5228 result_reader->comp_dir = DW_STRING (comp_dir);
5229
b0c7bfa9
DE
5230 /* Skip dummy compilation units. */
5231 if (info_ptr >= begin_info_ptr + dwo_unit->length
5232 || peek_abbrev_code (abfd, info_ptr) == 0)
5233 return 0;
5234
5235 *result_info_ptr = info_ptr;
5236 return 1;
5237}
5238
5239/* Subroutine of init_cutu_and_read_dies to simplify it.
5240 Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
6a506a2d 5241 Returns NULL if the specified DWO unit cannot be found. */
b0c7bfa9
DE
5242
5243static struct dwo_unit *
5244lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
5245 struct die_info *comp_unit_die)
5246{
5247 struct dwarf2_cu *cu = this_cu->cu;
5248 struct attribute *attr;
5249 ULONGEST signature;
5250 struct dwo_unit *dwo_unit;
5251 const char *comp_dir, *dwo_name;
5252
a2ce51a0
DE
5253 gdb_assert (cu != NULL);
5254
b0c7bfa9
DE
5255 /* Yeah, we look dwo_name up again, but it simplifies the code. */
5256 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5257 gdb_assert (attr != NULL);
5258 dwo_name = DW_STRING (attr);
5259 comp_dir = NULL;
5260 attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
5261 if (attr)
5262 comp_dir = DW_STRING (attr);
5263
5264 if (this_cu->is_debug_types)
5265 {
5266 struct signatured_type *sig_type;
5267
5268 /* Since this_cu is the first member of struct signatured_type,
5269 we can go from a pointer to one to a pointer to the other. */
5270 sig_type = (struct signatured_type *) this_cu;
5271 signature = sig_type->signature;
5272 dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
5273 }
5274 else
5275 {
5276 struct attribute *attr;
5277
5278 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
5279 if (! attr)
5280 error (_("Dwarf Error: missing dwo_id for dwo_name %s"
5281 " [in module %s]"),
4262abfb 5282 dwo_name, objfile_name (this_cu->objfile));
b0c7bfa9
DE
5283 signature = DW_UNSND (attr);
5284 dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
5285 signature);
5286 }
5287
b0c7bfa9
DE
5288 return dwo_unit;
5289}
5290
a2ce51a0 5291/* Subroutine of init_cutu_and_read_dies to simplify it.
6aa5f3a6
DE
5292 See it for a description of the parameters.
5293 Read a TU directly from a DWO file, bypassing the stub.
5294
5295 Note: This function could be a little bit simpler if we shared cleanups
5296 with our caller, init_cutu_and_read_dies. That's generally a fragile thing
5297 to do, so we keep this function self-contained. Or we could move this
5298 into our caller, but it's complex enough already. */
a2ce51a0
DE
5299
5300static void
6aa5f3a6
DE
5301init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
5302 int use_existing_cu, int keep,
a2ce51a0
DE
5303 die_reader_func_ftype *die_reader_func,
5304 void *data)
5305{
5306 struct dwarf2_cu *cu;
5307 struct signatured_type *sig_type;
6aa5f3a6 5308 struct cleanup *cleanups, *free_cu_cleanup = NULL;
a2ce51a0
DE
5309 struct die_reader_specs reader;
5310 const gdb_byte *info_ptr;
5311 struct die_info *comp_unit_die;
5312 int has_children;
5313
5314 /* Verify we can do the following downcast, and that we have the
5315 data we need. */
5316 gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
5317 sig_type = (struct signatured_type *) this_cu;
5318 gdb_assert (sig_type->dwo_unit != NULL);
5319
5320 cleanups = make_cleanup (null_cleanup, NULL);
5321
6aa5f3a6
DE
5322 if (use_existing_cu && this_cu->cu != NULL)
5323 {
5324 gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
5325 cu = this_cu->cu;
5326 /* There's no need to do the rereading_dwo_cu handling that
5327 init_cutu_and_read_dies does since we don't read the stub. */
5328 }
5329 else
5330 {
5331 /* If !use_existing_cu, this_cu->cu must be NULL. */
5332 gdb_assert (this_cu->cu == NULL);
5333 cu = xmalloc (sizeof (*cu));
5334 init_one_comp_unit (cu, this_cu);
5335 /* If an error occurs while loading, release our storage. */
5336 free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5337 }
5338
5339 /* A future optimization, if needed, would be to use an existing
5340 abbrev table. When reading DWOs with skeletonless TUs, all the TUs
5341 could share abbrev tables. */
a2ce51a0
DE
5342
5343 if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
5344 0 /* abbrev_table_provided */,
5345 NULL /* stub_comp_unit_die */,
5346 sig_type->dwo_unit->dwo_file->comp_dir,
5347 &reader, &info_ptr,
5348 &comp_unit_die, &has_children) == 0)
5349 {
5350 /* Dummy die. */
5351 do_cleanups (cleanups);
5352 return;
5353 }
5354
5355 /* All the "real" work is done here. */
5356 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5357
6aa5f3a6 5358 /* This duplicates the code in init_cutu_and_read_dies,
a2ce51a0
DE
5359 but the alternative is making the latter more complex.
5360 This function is only for the special case of using DWO files directly:
5361 no point in overly complicating the general case just to handle this. */
6aa5f3a6 5362 if (free_cu_cleanup != NULL)
a2ce51a0 5363 {
6aa5f3a6
DE
5364 if (keep)
5365 {
5366 /* We've successfully allocated this compilation unit. Let our
5367 caller clean it up when finished with it. */
5368 discard_cleanups (free_cu_cleanup);
a2ce51a0 5369
6aa5f3a6
DE
5370 /* We can only discard free_cu_cleanup and all subsequent cleanups.
5371 So we have to manually free the abbrev table. */
5372 dwarf2_free_abbrev_table (cu);
a2ce51a0 5373
6aa5f3a6
DE
5374 /* Link this CU into read_in_chain. */
5375 this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5376 dwarf2_per_objfile->read_in_chain = this_cu;
5377 }
5378 else
5379 do_cleanups (free_cu_cleanup);
a2ce51a0 5380 }
a2ce51a0
DE
5381
5382 do_cleanups (cleanups);
5383}
5384
fd820528 5385/* Initialize a CU (or TU) and read its DIEs.
3019eac3 5386 If the CU defers to a DWO file, read the DWO file as well.
dee91e82 5387
f4dc4d17
DE
5388 ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
5389 Otherwise the table specified in the comp unit header is read in and used.
5390 This is an optimization for when we already have the abbrev table.
5391
dee91e82
DE
5392 If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
5393 Otherwise, a new CU is allocated with xmalloc.
5394
5395 If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
5396 read_in_chain. Otherwise the dwarf2_cu data is freed at the end.
5397
5398 WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
fd820528 5399 linker) then DIE_READER_FUNC will not get called. */
aaa75496 5400
70221824 5401static void
fd820528 5402init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
f4dc4d17 5403 struct abbrev_table *abbrev_table,
fd820528
DE
5404 int use_existing_cu, int keep,
5405 die_reader_func_ftype *die_reader_func,
5406 void *data)
c906108c 5407{
dee91e82 5408 struct objfile *objfile = dwarf2_per_objfile->objfile;
8a0459fd 5409 struct dwarf2_section_info *section = this_cu->section;
a32a8923 5410 bfd *abfd = get_section_bfd_owner (section);
dee91e82 5411 struct dwarf2_cu *cu;
d521ce57 5412 const gdb_byte *begin_info_ptr, *info_ptr;
dee91e82 5413 struct die_reader_specs reader;
d85a05f0 5414 struct die_info *comp_unit_die;
dee91e82 5415 int has_children;
d85a05f0 5416 struct attribute *attr;
365156ad 5417 struct cleanup *cleanups, *free_cu_cleanup = NULL;
dee91e82 5418 struct signatured_type *sig_type = NULL;
4bdcc0c1 5419 struct dwarf2_section_info *abbrev_section;
42e7ad6c
DE
5420 /* Non-zero if CU currently points to a DWO file and we need to
5421 reread it. When this happens we need to reread the skeleton die
a2ce51a0 5422 before we can reread the DWO file (this only applies to CUs, not TUs). */
42e7ad6c 5423 int rereading_dwo_cu = 0;
c906108c 5424
09406207
DE
5425 if (dwarf2_die_debug)
5426 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5427 this_cu->is_debug_types ? "type" : "comp",
5428 this_cu->offset.sect_off);
5429
dee91e82
DE
5430 if (use_existing_cu)
5431 gdb_assert (keep);
23745b47 5432
a2ce51a0
DE
5433 /* If we're reading a TU directly from a DWO file, including a virtual DWO
5434 file (instead of going through the stub), short-circuit all of this. */
5435 if (this_cu->reading_dwo_directly)
5436 {
5437 /* Narrow down the scope of possibilities to have to understand. */
5438 gdb_assert (this_cu->is_debug_types);
5439 gdb_assert (abbrev_table == NULL);
6aa5f3a6
DE
5440 init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
5441 die_reader_func, data);
a2ce51a0
DE
5442 return;
5443 }
5444
dee91e82
DE
5445 cleanups = make_cleanup (null_cleanup, NULL);
5446
5447 /* This is cheap if the section is already read in. */
5448 dwarf2_read_section (objfile, section);
5449
5450 begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
36586728
TT
5451
5452 abbrev_section = get_abbrev_section_for_cu (this_cu);
dee91e82
DE
5453
5454 if (use_existing_cu && this_cu->cu != NULL)
5455 {
5456 cu = this_cu->cu;
42e7ad6c
DE
5457 /* If this CU is from a DWO file we need to start over, we need to
5458 refetch the attributes from the skeleton CU.
5459 This could be optimized by retrieving those attributes from when we
5460 were here the first time: the previous comp_unit_die was stored in
5461 comp_unit_obstack. But there's no data yet that we need this
5462 optimization. */
5463 if (cu->dwo_unit != NULL)
5464 rereading_dwo_cu = 1;
dee91e82
DE
5465 }
5466 else
5467 {
5468 /* If !use_existing_cu, this_cu->cu must be NULL. */
5469 gdb_assert (this_cu->cu == NULL);
dee91e82
DE
5470 cu = xmalloc (sizeof (*cu));
5471 init_one_comp_unit (cu, this_cu);
dee91e82 5472 /* If an error occurs while loading, release our storage. */
365156ad 5473 free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
42e7ad6c 5474 }
dee91e82 5475
b0c7bfa9 5476 /* Get the header. */
42e7ad6c
DE
5477 if (cu->header.first_die_offset.cu_off != 0 && ! rereading_dwo_cu)
5478 {
5479 /* We already have the header, there's no need to read it in again. */
5480 info_ptr += cu->header.first_die_offset.cu_off;
5481 }
5482 else
5483 {
3019eac3 5484 if (this_cu->is_debug_types)
dee91e82
DE
5485 {
5486 ULONGEST signature;
42e7ad6c 5487 cu_offset type_offset_in_tu;
dee91e82 5488
4bdcc0c1
DE
5489 info_ptr = read_and_check_type_unit_head (&cu->header, section,
5490 abbrev_section, info_ptr,
42e7ad6c
DE
5491 &signature,
5492 &type_offset_in_tu);
dee91e82 5493
42e7ad6c
DE
5494 /* Since per_cu is the first member of struct signatured_type,
5495 we can go from a pointer to one to a pointer to the other. */
5496 sig_type = (struct signatured_type *) this_cu;
5497 gdb_assert (sig_type->signature == signature);
5498 gdb_assert (sig_type->type_offset_in_tu.cu_off
5499 == type_offset_in_tu.cu_off);
dee91e82
DE
5500 gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5501
42e7ad6c
DE
5502 /* LENGTH has not been set yet for type units if we're
5503 using .gdb_index. */
1ce1cefd 5504 this_cu->length = get_cu_length (&cu->header);
3019eac3
DE
5505
5506 /* Establish the type offset that can be used to lookup the type. */
5507 sig_type->type_offset_in_section.sect_off =
5508 this_cu->offset.sect_off + sig_type->type_offset_in_tu.cu_off;
dee91e82
DE
5509 }
5510 else
5511 {
4bdcc0c1
DE
5512 info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5513 abbrev_section,
5514 info_ptr, 0);
dee91e82
DE
5515
5516 gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
1ce1cefd 5517 gdb_assert (this_cu->length == get_cu_length (&cu->header));
dee91e82
DE
5518 }
5519 }
10b3939b 5520
6caca83c 5521 /* Skip dummy compilation units. */
dee91e82 5522 if (info_ptr >= begin_info_ptr + this_cu->length
6caca83c
CC
5523 || peek_abbrev_code (abfd, info_ptr) == 0)
5524 {
dee91e82 5525 do_cleanups (cleanups);
21b2bd31 5526 return;
6caca83c
CC
5527 }
5528
433df2d4
DE
5529 /* If we don't have them yet, read the abbrevs for this compilation unit.
5530 And if we need to read them now, make sure they're freed when we're
42e7ad6c
DE
5531 done. Note that it's important that if the CU had an abbrev table
5532 on entry we don't free it when we're done: Somewhere up the call stack
5533 it may be in use. */
f4dc4d17
DE
5534 if (abbrev_table != NULL)
5535 {
5536 gdb_assert (cu->abbrev_table == NULL);
5537 gdb_assert (cu->header.abbrev_offset.sect_off
5538 == abbrev_table->offset.sect_off);
5539 cu->abbrev_table = abbrev_table;
5540 }
5541 else if (cu->abbrev_table == NULL)
dee91e82 5542 {
4bdcc0c1 5543 dwarf2_read_abbrevs (cu, abbrev_section);
dee91e82
DE
5544 make_cleanup (dwarf2_free_abbrev_table, cu);
5545 }
42e7ad6c
DE
5546 else if (rereading_dwo_cu)
5547 {
5548 dwarf2_free_abbrev_table (cu);
5549 dwarf2_read_abbrevs (cu, abbrev_section);
5550 }
af703f96 5551
dee91e82 5552 /* Read the top level CU/TU die. */
3019eac3 5553 init_cu_die_reader (&reader, cu, section, NULL);
dee91e82 5554 info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
93311388 5555
b0c7bfa9
DE
5556 /* If we are in a DWO stub, process it and then read in the "real" CU/TU
5557 from the DWO file.
5558 Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
5559 DWO CU, that this test will fail (the attribute will not be present). */
3019eac3
DE
5560 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5561 if (attr)
5562 {
3019eac3 5563 struct dwo_unit *dwo_unit;
b0c7bfa9 5564 struct die_info *dwo_comp_unit_die;
3019eac3
DE
5565
5566 if (has_children)
6a506a2d
DE
5567 {
5568 complaint (&symfile_complaints,
5569 _("compilation unit with DW_AT_GNU_dwo_name"
5570 " has children (offset 0x%x) [in module %s]"),
5571 this_cu->offset.sect_off, bfd_get_filename (abfd));
5572 }
b0c7bfa9 5573 dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
6a506a2d 5574 if (dwo_unit != NULL)
3019eac3 5575 {
6a506a2d
DE
5576 if (read_cutu_die_from_dwo (this_cu, dwo_unit,
5577 abbrev_table != NULL,
a2ce51a0 5578 comp_unit_die, NULL,
6a506a2d
DE
5579 &reader, &info_ptr,
5580 &dwo_comp_unit_die, &has_children) == 0)
5581 {
5582 /* Dummy die. */
5583 do_cleanups (cleanups);
5584 return;
5585 }
5586 comp_unit_die = dwo_comp_unit_die;
5587 }
5588 else
5589 {
5590 /* Yikes, we couldn't find the rest of the DIE, we only have
5591 the stub. A complaint has already been logged. There's
5592 not much more we can do except pass on the stub DIE to
5593 die_reader_func. We don't want to throw an error on bad
5594 debug info. */
3019eac3
DE
5595 }
5596 }
5597
b0c7bfa9 5598 /* All of the above is setup for this call. Yikes. */
dee91e82
DE
5599 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5600
b0c7bfa9 5601 /* Done, clean up. */
365156ad 5602 if (free_cu_cleanup != NULL)
348e048f 5603 {
365156ad
TT
5604 if (keep)
5605 {
5606 /* We've successfully allocated this compilation unit. Let our
5607 caller clean it up when finished with it. */
5608 discard_cleanups (free_cu_cleanup);
dee91e82 5609
365156ad
TT
5610 /* We can only discard free_cu_cleanup and all subsequent cleanups.
5611 So we have to manually free the abbrev table. */
5612 dwarf2_free_abbrev_table (cu);
dee91e82 5613
365156ad
TT
5614 /* Link this CU into read_in_chain. */
5615 this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5616 dwarf2_per_objfile->read_in_chain = this_cu;
5617 }
5618 else
5619 do_cleanups (free_cu_cleanup);
348e048f 5620 }
365156ad
TT
5621
5622 do_cleanups (cleanups);
dee91e82
DE
5623}
5624
33e80786
DE
5625/* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
5626 DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
5627 to have already done the lookup to find the DWO file).
dee91e82
DE
5628
5629 The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
3019eac3 5630 THIS_CU->is_debug_types, but nothing else.
dee91e82
DE
5631
5632 We fill in THIS_CU->length.
5633
5634 WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5635 linker) then DIE_READER_FUNC will not get called.
5636
5637 THIS_CU->cu is always freed when done.
3019eac3
DE
5638 This is done in order to not leave THIS_CU->cu in a state where we have
5639 to care whether it refers to the "main" CU or the DWO CU. */
dee91e82
DE
5640
5641static void
5642init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
3019eac3 5643 struct dwo_file *dwo_file,
dee91e82
DE
5644 die_reader_func_ftype *die_reader_func,
5645 void *data)
5646{
5647 struct objfile *objfile = dwarf2_per_objfile->objfile;
8a0459fd 5648 struct dwarf2_section_info *section = this_cu->section;
a32a8923 5649 bfd *abfd = get_section_bfd_owner (section);
33e80786 5650 struct dwarf2_section_info *abbrev_section;
dee91e82 5651 struct dwarf2_cu cu;
d521ce57 5652 const gdb_byte *begin_info_ptr, *info_ptr;
dee91e82
DE
5653 struct die_reader_specs reader;
5654 struct cleanup *cleanups;
5655 struct die_info *comp_unit_die;
5656 int has_children;
5657
09406207
DE
5658 if (dwarf2_die_debug)
5659 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5660 this_cu->is_debug_types ? "type" : "comp",
5661 this_cu->offset.sect_off);
5662
dee91e82
DE
5663 gdb_assert (this_cu->cu == NULL);
5664
33e80786
DE
5665 abbrev_section = (dwo_file != NULL
5666 ? &dwo_file->sections.abbrev
5667 : get_abbrev_section_for_cu (this_cu));
5668
dee91e82
DE
5669 /* This is cheap if the section is already read in. */
5670 dwarf2_read_section (objfile, section);
5671
5672 init_one_comp_unit (&cu, this_cu);
5673
5674 cleanups = make_cleanup (free_stack_comp_unit, &cu);
5675
5676 begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
4bdcc0c1
DE
5677 info_ptr = read_and_check_comp_unit_head (&cu.header, section,
5678 abbrev_section, info_ptr,
3019eac3 5679 this_cu->is_debug_types);
dee91e82 5680
1ce1cefd 5681 this_cu->length = get_cu_length (&cu.header);
dee91e82
DE
5682
5683 /* Skip dummy compilation units. */
5684 if (info_ptr >= begin_info_ptr + this_cu->length
5685 || peek_abbrev_code (abfd, info_ptr) == 0)
c906108c 5686 {
dee91e82 5687 do_cleanups (cleanups);
21b2bd31 5688 return;
93311388 5689 }
72bf9492 5690
dee91e82
DE
5691 dwarf2_read_abbrevs (&cu, abbrev_section);
5692 make_cleanup (dwarf2_free_abbrev_table, &cu);
5693
3019eac3 5694 init_cu_die_reader (&reader, &cu, section, dwo_file);
dee91e82
DE
5695 info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5696
5697 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5698
5699 do_cleanups (cleanups);
5700}
5701
3019eac3
DE
5702/* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
5703 does not lookup the specified DWO file.
5704 This cannot be used to read DWO files.
dee91e82
DE
5705
5706 THIS_CU->cu is always freed when done.
3019eac3
DE
5707 This is done in order to not leave THIS_CU->cu in a state where we have
5708 to care whether it refers to the "main" CU or the DWO CU.
5709 We can revisit this if the data shows there's a performance issue. */
dee91e82
DE
5710
5711static void
5712init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
5713 die_reader_func_ftype *die_reader_func,
5714 void *data)
5715{
33e80786 5716 init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
dee91e82 5717}
0018ea6f
DE
5718\f
5719/* Type Unit Groups.
dee91e82 5720
0018ea6f
DE
5721 Type Unit Groups are a way to collapse the set of all TUs (type units) into
5722 a more manageable set. The grouping is done by DW_AT_stmt_list entry
5723 so that all types coming from the same compilation (.o file) are grouped
5724 together. A future step could be to put the types in the same symtab as
5725 the CU the types ultimately came from. */
ff013f42 5726
f4dc4d17
DE
5727static hashval_t
5728hash_type_unit_group (const void *item)
5729{
094b34ac 5730 const struct type_unit_group *tu_group = item;
f4dc4d17 5731
094b34ac 5732 return hash_stmt_list_entry (&tu_group->hash);
f4dc4d17 5733}
348e048f
DE
5734
5735static int
f4dc4d17 5736eq_type_unit_group (const void *item_lhs, const void *item_rhs)
348e048f 5737{
f4dc4d17
DE
5738 const struct type_unit_group *lhs = item_lhs;
5739 const struct type_unit_group *rhs = item_rhs;
348e048f 5740
094b34ac 5741 return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
f4dc4d17 5742}
348e048f 5743
f4dc4d17
DE
5744/* Allocate a hash table for type unit groups. */
5745
5746static htab_t
5747allocate_type_unit_groups_table (void)
5748{
5749 return htab_create_alloc_ex (3,
5750 hash_type_unit_group,
5751 eq_type_unit_group,
5752 NULL,
5753 &dwarf2_per_objfile->objfile->objfile_obstack,
5754 hashtab_obstack_allocate,
5755 dummy_obstack_deallocate);
5756}
dee91e82 5757
f4dc4d17
DE
5758/* Type units that don't have DW_AT_stmt_list are grouped into their own
5759 partial symtabs. We combine several TUs per psymtab to not let the size
5760 of any one psymtab grow too big. */
5761#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
5762#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
dee91e82 5763
094b34ac 5764/* Helper routine for get_type_unit_group.
f4dc4d17
DE
5765 Create the type_unit_group object used to hold one or more TUs. */
5766
5767static struct type_unit_group *
094b34ac 5768create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
f4dc4d17
DE
5769{
5770 struct objfile *objfile = dwarf2_per_objfile->objfile;
094b34ac 5771 struct dwarf2_per_cu_data *per_cu;
f4dc4d17 5772 struct type_unit_group *tu_group;
f4dc4d17
DE
5773
5774 tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5775 struct type_unit_group);
094b34ac 5776 per_cu = &tu_group->per_cu;
f4dc4d17 5777 per_cu->objfile = objfile;
f4dc4d17 5778
094b34ac
DE
5779 if (dwarf2_per_objfile->using_index)
5780 {
5781 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5782 struct dwarf2_per_cu_quick_data);
094b34ac
DE
5783 }
5784 else
5785 {
5786 unsigned int line_offset = line_offset_struct.sect_off;
5787 struct partial_symtab *pst;
5788 char *name;
5789
5790 /* Give the symtab a useful name for debug purposes. */
5791 if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
5792 name = xstrprintf ("<type_units_%d>",
5793 (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
5794 else
5795 name = xstrprintf ("<type_units_at_0x%x>", line_offset);
5796
5797 pst = create_partial_symtab (per_cu, name);
5798 pst->anonymous = 1;
f4dc4d17 5799
094b34ac
DE
5800 xfree (name);
5801 }
f4dc4d17 5802
094b34ac
DE
5803 tu_group->hash.dwo_unit = cu->dwo_unit;
5804 tu_group->hash.line_offset = line_offset_struct;
f4dc4d17
DE
5805
5806 return tu_group;
5807}
5808
094b34ac
DE
5809/* Look up the type_unit_group for type unit CU, and create it if necessary.
5810 STMT_LIST is a DW_AT_stmt_list attribute. */
f4dc4d17
DE
5811
5812static struct type_unit_group *
ff39bb5e 5813get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
f4dc4d17
DE
5814{
5815 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
5816 struct type_unit_group *tu_group;
5817 void **slot;
5818 unsigned int line_offset;
5819 struct type_unit_group type_unit_group_for_lookup;
5820
5821 if (dwarf2_per_objfile->type_unit_groups == NULL)
5822 {
5823 dwarf2_per_objfile->type_unit_groups =
5824 allocate_type_unit_groups_table ();
5825 }
5826
5827 /* Do we need to create a new group, or can we use an existing one? */
5828
5829 if (stmt_list)
5830 {
5831 line_offset = DW_UNSND (stmt_list);
5832 ++tu_stats->nr_symtab_sharers;
5833 }
5834 else
5835 {
5836 /* Ugh, no stmt_list. Rare, but we have to handle it.
5837 We can do various things here like create one group per TU or
5838 spread them over multiple groups to split up the expansion work.
5839 To avoid worst case scenarios (too many groups or too large groups)
5840 we, umm, group them in bunches. */
5841 line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
5842 | (tu_stats->nr_stmt_less_type_units
5843 / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
5844 ++tu_stats->nr_stmt_less_type_units;
5845 }
5846
094b34ac
DE
5847 type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
5848 type_unit_group_for_lookup.hash.line_offset.sect_off = line_offset;
f4dc4d17
DE
5849 slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
5850 &type_unit_group_for_lookup, INSERT);
5851 if (*slot != NULL)
5852 {
5853 tu_group = *slot;
5854 gdb_assert (tu_group != NULL);
5855 }
5856 else
5857 {
5858 sect_offset line_offset_struct;
5859
5860 line_offset_struct.sect_off = line_offset;
094b34ac 5861 tu_group = create_type_unit_group (cu, line_offset_struct);
f4dc4d17
DE
5862 *slot = tu_group;
5863 ++tu_stats->nr_symtabs;
5864 }
5865
5866 return tu_group;
5867}
0018ea6f
DE
5868\f
5869/* Partial symbol tables. */
5870
5871/* Create a psymtab named NAME and assign it to PER_CU.
5872
5873 The caller must fill in the following details:
5874 dirname, textlow, texthigh. */
5875
5876static struct partial_symtab *
5877create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
5878{
5879 struct objfile *objfile = per_cu->objfile;
5880 struct partial_symtab *pst;
5881
5882 pst = start_psymtab_common (objfile, objfile->section_offsets,
5883 name, 0,
5884 objfile->global_psymbols.next,
5885 objfile->static_psymbols.next);
5886
5887 pst->psymtabs_addrmap_supported = 1;
5888
5889 /* This is the glue that links PST into GDB's symbol API. */
5890 pst->read_symtab_private = per_cu;
5891 pst->read_symtab = dwarf2_read_symtab;
5892 per_cu->v.psymtab = pst;
5893
5894 return pst;
5895}
5896
b93601f3
TT
5897/* The DATA object passed to process_psymtab_comp_unit_reader has this
5898 type. */
5899
5900struct process_psymtab_comp_unit_data
5901{
5902 /* True if we are reading a DW_TAG_partial_unit. */
5903
5904 int want_partial_unit;
5905
5906 /* The "pretend" language that is used if the CU doesn't declare a
5907 language. */
5908
5909 enum language pretend_language;
5910};
5911
0018ea6f
DE
5912/* die_reader_func for process_psymtab_comp_unit. */
5913
5914static void
5915process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 5916 const gdb_byte *info_ptr,
0018ea6f
DE
5917 struct die_info *comp_unit_die,
5918 int has_children,
5919 void *data)
5920{
5921 struct dwarf2_cu *cu = reader->cu;
5922 struct objfile *objfile = cu->objfile;
3e29f34a 5923 struct gdbarch *gdbarch = get_objfile_arch (objfile);
0018ea6f
DE
5924 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
5925 struct attribute *attr;
5926 CORE_ADDR baseaddr;
5927 CORE_ADDR best_lowpc = 0, best_highpc = 0;
5928 struct partial_symtab *pst;
5929 int has_pc_info;
5930 const char *filename;
b93601f3 5931 struct process_psymtab_comp_unit_data *info = data;
0018ea6f 5932
b93601f3 5933 if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
0018ea6f
DE
5934 return;
5935
5936 gdb_assert (! per_cu->is_debug_types);
5937
b93601f3 5938 prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
0018ea6f
DE
5939
5940 cu->list_in_scope = &file_symbols;
5941
5942 /* Allocate a new partial symbol table structure. */
5943 attr = dwarf2_attr (comp_unit_die, DW_AT_name, cu);
5944 if (attr == NULL || !DW_STRING (attr))
5945 filename = "";
5946 else
5947 filename = DW_STRING (attr);
5948
5949 pst = create_partial_symtab (per_cu, filename);
5950
5951 /* This must be done before calling dwarf2_build_include_psymtabs. */
5952 attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
5953 if (attr != NULL)
5954 pst->dirname = DW_STRING (attr);
5955
5956 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5957
5958 dwarf2_find_base_address (comp_unit_die, cu);
5959
5960 /* Possibly set the default values of LOWPC and HIGHPC from
5961 `DW_AT_ranges'. */
5962 has_pc_info = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
5963 &best_highpc, cu, pst);
5964 if (has_pc_info == 1 && best_lowpc < best_highpc)
5965 /* Store the contiguous range if it is not empty; it can be empty for
5966 CUs with no code. */
5967 addrmap_set_empty (objfile->psymtabs_addrmap,
3e29f34a
MR
5968 gdbarch_adjust_dwarf2_addr (gdbarch,
5969 best_lowpc + baseaddr),
5970 gdbarch_adjust_dwarf2_addr (gdbarch,
5971 best_highpc + baseaddr) - 1,
5972 pst);
0018ea6f
DE
5973
5974 /* Check if comp unit has_children.
5975 If so, read the rest of the partial symbols from this comp unit.
5976 If not, there's no more debug_info for this comp unit. */
5977 if (has_children)
5978 {
5979 struct partial_die_info *first_die;
5980 CORE_ADDR lowpc, highpc;
5981
5982 lowpc = ((CORE_ADDR) -1);
5983 highpc = ((CORE_ADDR) 0);
5984
5985 first_die = load_partial_dies (reader, info_ptr, 1);
5986
5987 scan_partial_symbols (first_die, &lowpc, &highpc,
5988 ! has_pc_info, cu);
5989
5990 /* If we didn't find a lowpc, set it to highpc to avoid
5991 complaints from `maint check'. */
5992 if (lowpc == ((CORE_ADDR) -1))
5993 lowpc = highpc;
5994
5995 /* If the compilation unit didn't have an explicit address range,
5996 then use the information extracted from its child dies. */
5997 if (! has_pc_info)
5998 {
5999 best_lowpc = lowpc;
6000 best_highpc = highpc;
6001 }
6002 }
3e29f34a
MR
6003 pst->textlow = gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr);
6004 pst->texthigh = gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr);
0018ea6f
DE
6005
6006 pst->n_global_syms = objfile->global_psymbols.next -
6007 (objfile->global_psymbols.list + pst->globals_offset);
6008 pst->n_static_syms = objfile->static_psymbols.next -
6009 (objfile->static_psymbols.list + pst->statics_offset);
6010 sort_pst_symbols (objfile, pst);
6011
6012 if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
6013 {
6014 int i;
6015 int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6016 struct dwarf2_per_cu_data *iter;
6017
6018 /* Fill in 'dependencies' here; we fill in 'users' in a
6019 post-pass. */
6020 pst->number_of_dependencies = len;
6021 pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
6022 len * sizeof (struct symtab *));
6023 for (i = 0;
6024 VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
6025 i, iter);
6026 ++i)
6027 pst->dependencies[i] = iter->v.psymtab;
6028
6029 VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6030 }
6031
6032 /* Get the list of files included in the current compilation unit,
6033 and build a psymtab for each of them. */
6034 dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
6035
6036 if (dwarf2_read_debug)
6037 {
6038 struct gdbarch *gdbarch = get_objfile_arch (objfile);
6039
6040 fprintf_unfiltered (gdb_stdlog,
6041 "Psymtab for %s unit @0x%x: %s - %s"
6042 ", %d global, %d static syms\n",
6043 per_cu->is_debug_types ? "type" : "comp",
6044 per_cu->offset.sect_off,
6045 paddress (gdbarch, pst->textlow),
6046 paddress (gdbarch, pst->texthigh),
6047 pst->n_global_syms, pst->n_static_syms);
6048 }
6049}
6050
6051/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6052 Process compilation unit THIS_CU for a psymtab. */
6053
6054static void
6055process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
b93601f3
TT
6056 int want_partial_unit,
6057 enum language pretend_language)
0018ea6f 6058{
b93601f3
TT
6059 struct process_psymtab_comp_unit_data info;
6060
0018ea6f
DE
6061 /* If this compilation unit was already read in, free the
6062 cached copy in order to read it in again. This is
6063 necessary because we skipped some symbols when we first
6064 read in the compilation unit (see load_partial_dies).
6065 This problem could be avoided, but the benefit is unclear. */
6066 if (this_cu->cu != NULL)
6067 free_one_cached_comp_unit (this_cu);
6068
6069 gdb_assert (! this_cu->is_debug_types);
b93601f3
TT
6070 info.want_partial_unit = want_partial_unit;
6071 info.pretend_language = pretend_language;
0018ea6f
DE
6072 init_cutu_and_read_dies (this_cu, NULL, 0, 0,
6073 process_psymtab_comp_unit_reader,
b93601f3 6074 &info);
0018ea6f
DE
6075
6076 /* Age out any secondary CUs. */
6077 age_cached_comp_units ();
6078}
f4dc4d17
DE
6079
6080/* Reader function for build_type_psymtabs. */
6081
6082static void
6083build_type_psymtabs_reader (const struct die_reader_specs *reader,
d521ce57 6084 const gdb_byte *info_ptr,
f4dc4d17
DE
6085 struct die_info *type_unit_die,
6086 int has_children,
6087 void *data)
6088{
6089 struct objfile *objfile = dwarf2_per_objfile->objfile;
6090 struct dwarf2_cu *cu = reader->cu;
6091 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
0186c6a7 6092 struct signatured_type *sig_type;
f4dc4d17
DE
6093 struct type_unit_group *tu_group;
6094 struct attribute *attr;
6095 struct partial_die_info *first_die;
6096 CORE_ADDR lowpc, highpc;
6097 struct partial_symtab *pst;
6098
6099 gdb_assert (data == NULL);
0186c6a7
DE
6100 gdb_assert (per_cu->is_debug_types);
6101 sig_type = (struct signatured_type *) per_cu;
f4dc4d17
DE
6102
6103 if (! has_children)
6104 return;
6105
6106 attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
094b34ac 6107 tu_group = get_type_unit_group (cu, attr);
f4dc4d17 6108
0186c6a7 6109 VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
f4dc4d17
DE
6110
6111 prepare_one_comp_unit (cu, type_unit_die, language_minimal);
6112 cu->list_in_scope = &file_symbols;
6113 pst = create_partial_symtab (per_cu, "");
6114 pst->anonymous = 1;
6115
6116 first_die = load_partial_dies (reader, info_ptr, 1);
6117
6118 lowpc = (CORE_ADDR) -1;
6119 highpc = (CORE_ADDR) 0;
6120 scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
6121
6122 pst->n_global_syms = objfile->global_psymbols.next -
6123 (objfile->global_psymbols.list + pst->globals_offset);
6124 pst->n_static_syms = objfile->static_psymbols.next -
6125 (objfile->static_psymbols.list + pst->statics_offset);
5c80ed9d 6126 sort_pst_symbols (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
6205 if (dwarf2_read_debug)
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;
6297 pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
6298 len * sizeof (struct psymtab *));
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
45cfd468
DE
6442 if (dwarf2_read_debug)
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
6484 if (dwarf2_read_debug)
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
DE
6494
6495 if (dwarf2_read_debug)
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
bf6af496
DE
6541 if (dwarf2_read_debug)
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. */
6563 this_cu = obstack_alloc (&objfile->objfile_obstack,
6564 sizeof (struct dwarf2_per_cu_data));
6565 memset (this_cu, 0, sizeof (*this_cu));
6566 this_cu->offset = offset;
c764a876 6567 this_cu->length = length + initial_length_size;
36586728 6568 this_cu->is_dwz = is_dwz;
9291a0cd 6569 this_cu->objfile = objfile;
8a0459fd 6570 this_cu->section = section;
ae038cb0 6571
36586728 6572 if (*n_comp_units == *n_allocated)
ae038cb0 6573 {
36586728
TT
6574 *n_allocated *= 2;
6575 *all_comp_units = xrealloc (*all_comp_units,
6576 *n_allocated
6577 * sizeof (struct dwarf2_per_cu_data *));
ae038cb0 6578 }
36586728
TT
6579 (*all_comp_units)[*n_comp_units] = this_cu;
6580 ++*n_comp_units;
ae038cb0
DJ
6581
6582 info_ptr = info_ptr + this_cu->length;
6583 }
36586728
TT
6584}
6585
6586/* Create a list of all compilation units in OBJFILE.
6587 This is only done for -readnow and building partial symtabs. */
6588
6589static void
6590create_all_comp_units (struct objfile *objfile)
6591{
6592 int n_allocated;
6593 int n_comp_units;
6594 struct dwarf2_per_cu_data **all_comp_units;
4db1a1dc 6595 struct dwz_file *dwz;
36586728
TT
6596
6597 n_comp_units = 0;
6598 n_allocated = 10;
6599 all_comp_units = xmalloc (n_allocated
6600 * sizeof (struct dwarf2_per_cu_data *));
6601
6602 read_comp_units_from_section (objfile, &dwarf2_per_objfile->info, 0,
6603 &n_allocated, &n_comp_units, &all_comp_units);
6604
4db1a1dc
TT
6605 dwz = dwarf2_get_dwz_file ();
6606 if (dwz != NULL)
6607 read_comp_units_from_section (objfile, &dwz->info, 1,
6608 &n_allocated, &n_comp_units,
6609 &all_comp_units);
ae038cb0
DJ
6610
6611 dwarf2_per_objfile->all_comp_units
6612 = obstack_alloc (&objfile->objfile_obstack,
6613 n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6614 memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
6615 n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6616 xfree (all_comp_units);
6617 dwarf2_per_objfile->n_comp_units = n_comp_units;
c906108c
SS
6618}
6619
5734ee8b 6620/* Process all loaded DIEs for compilation unit CU, starting at
cdc07690 6621 FIRST_DIE. The caller should pass SET_ADDRMAP == 1 if the compilation
5734ee8b 6622 unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
cdc07690
YQ
6623 DW_AT_ranges). See the comments of add_partial_subprogram on how
6624 SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated. */
c906108c 6625
72bf9492
DJ
6626static void
6627scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
cdc07690
YQ
6628 CORE_ADDR *highpc, int set_addrmap,
6629 struct dwarf2_cu *cu)
c906108c 6630{
72bf9492 6631 struct partial_die_info *pdi;
c906108c 6632
91c24f0a
DC
6633 /* Now, march along the PDI's, descending into ones which have
6634 interesting children but skipping the children of the other ones,
6635 until we reach the end of the compilation unit. */
c906108c 6636
72bf9492 6637 pdi = first_die;
91c24f0a 6638
72bf9492
DJ
6639 while (pdi != NULL)
6640 {
6641 fixup_partial_die (pdi, cu);
c906108c 6642
f55ee35c 6643 /* Anonymous namespaces or modules have no name but have interesting
91c24f0a
DC
6644 children, so we need to look at them. Ditto for anonymous
6645 enums. */
933c6fe4 6646
72bf9492 6647 if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
95554aad
TT
6648 || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
6649 || pdi->tag == DW_TAG_imported_unit)
c906108c 6650 {
72bf9492 6651 switch (pdi->tag)
c906108c
SS
6652 {
6653 case DW_TAG_subprogram:
cdc07690 6654 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
c906108c 6655 break;
72929c62 6656 case DW_TAG_constant:
c906108c
SS
6657 case DW_TAG_variable:
6658 case DW_TAG_typedef:
91c24f0a 6659 case DW_TAG_union_type:
72bf9492 6660 if (!pdi->is_declaration)
63d06c5c 6661 {
72bf9492 6662 add_partial_symbol (pdi, cu);
63d06c5c
DC
6663 }
6664 break;
c906108c 6665 case DW_TAG_class_type:
680b30c7 6666 case DW_TAG_interface_type:
c906108c 6667 case DW_TAG_structure_type:
72bf9492 6668 if (!pdi->is_declaration)
c906108c 6669 {
72bf9492 6670 add_partial_symbol (pdi, cu);
c906108c
SS
6671 }
6672 break;
91c24f0a 6673 case DW_TAG_enumeration_type:
72bf9492
DJ
6674 if (!pdi->is_declaration)
6675 add_partial_enumeration (pdi, cu);
c906108c
SS
6676 break;
6677 case DW_TAG_base_type:
a02abb62 6678 case DW_TAG_subrange_type:
c906108c 6679 /* File scope base type definitions are added to the partial
c5aa993b 6680 symbol table. */
72bf9492 6681 add_partial_symbol (pdi, cu);
c906108c 6682 break;
d9fa45fe 6683 case DW_TAG_namespace:
cdc07690 6684 add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
91c24f0a 6685 break;
5d7cb8df 6686 case DW_TAG_module:
cdc07690 6687 add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
5d7cb8df 6688 break;
95554aad
TT
6689 case DW_TAG_imported_unit:
6690 {
6691 struct dwarf2_per_cu_data *per_cu;
6692
f4dc4d17
DE
6693 /* For now we don't handle imported units in type units. */
6694 if (cu->per_cu->is_debug_types)
6695 {
6696 error (_("Dwarf Error: DW_TAG_imported_unit is not"
6697 " supported in type units [in module %s]"),
4262abfb 6698 objfile_name (cu->objfile));
f4dc4d17
DE
6699 }
6700
95554aad 6701 per_cu = dwarf2_find_containing_comp_unit (pdi->d.offset,
36586728 6702 pdi->is_dwz,
95554aad
TT
6703 cu->objfile);
6704
6705 /* Go read the partial unit, if needed. */
6706 if (per_cu->v.psymtab == NULL)
b93601f3 6707 process_psymtab_comp_unit (per_cu, 1, cu->language);
95554aad 6708
f4dc4d17 6709 VEC_safe_push (dwarf2_per_cu_ptr,
796a7ff8 6710 cu->per_cu->imported_symtabs, per_cu);
95554aad
TT
6711 }
6712 break;
74921315
KS
6713 case DW_TAG_imported_declaration:
6714 add_partial_symbol (pdi, cu);
6715 break;
c906108c
SS
6716 default:
6717 break;
6718 }
6719 }
6720
72bf9492
DJ
6721 /* If the die has a sibling, skip to the sibling. */
6722
6723 pdi = pdi->die_sibling;
6724 }
6725}
6726
6727/* Functions used to compute the fully scoped name of a partial DIE.
91c24f0a 6728
72bf9492 6729 Normally, this is simple. For C++, the parent DIE's fully scoped
987504bb
JJ
6730 name is concatenated with "::" and the partial DIE's name. For
6731 Java, the same thing occurs except that "." is used instead of "::".
72bf9492
DJ
6732 Enumerators are an exception; they use the scope of their parent
6733 enumeration type, i.e. the name of the enumeration type is not
6734 prepended to the enumerator.
91c24f0a 6735
72bf9492
DJ
6736 There are two complexities. One is DW_AT_specification; in this
6737 case "parent" means the parent of the target of the specification,
6738 instead of the direct parent of the DIE. The other is compilers
6739 which do not emit DW_TAG_namespace; in this case we try to guess
6740 the fully qualified name of structure types from their members'
6741 linkage names. This must be done using the DIE's children rather
6742 than the children of any DW_AT_specification target. We only need
6743 to do this for structures at the top level, i.e. if the target of
6744 any DW_AT_specification (if any; otherwise the DIE itself) does not
6745 have a parent. */
6746
6747/* Compute the scope prefix associated with PDI's parent, in
6748 compilation unit CU. The result will be allocated on CU's
6749 comp_unit_obstack, or a copy of the already allocated PDI->NAME
6750 field. NULL is returned if no prefix is necessary. */
15d034d0 6751static const char *
72bf9492
DJ
6752partial_die_parent_scope (struct partial_die_info *pdi,
6753 struct dwarf2_cu *cu)
6754{
15d034d0 6755 const char *grandparent_scope;
72bf9492 6756 struct partial_die_info *parent, *real_pdi;
91c24f0a 6757
72bf9492
DJ
6758 /* We need to look at our parent DIE; if we have a DW_AT_specification,
6759 then this means the parent of the specification DIE. */
6760
6761 real_pdi = pdi;
72bf9492 6762 while (real_pdi->has_specification)
36586728
TT
6763 real_pdi = find_partial_die (real_pdi->spec_offset,
6764 real_pdi->spec_is_dwz, cu);
72bf9492
DJ
6765
6766 parent = real_pdi->die_parent;
6767 if (parent == NULL)
6768 return NULL;
6769
6770 if (parent->scope_set)
6771 return parent->scope;
6772
6773 fixup_partial_die (parent, cu);
6774
10b3939b 6775 grandparent_scope = partial_die_parent_scope (parent, cu);
72bf9492 6776
acebe513
UW
6777 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
6778 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
6779 Work around this problem here. */
6780 if (cu->language == language_cplus
6e70227d 6781 && parent->tag == DW_TAG_namespace
acebe513
UW
6782 && strcmp (parent->name, "::") == 0
6783 && grandparent_scope == NULL)
6784 {
6785 parent->scope = NULL;
6786 parent->scope_set = 1;
6787 return NULL;
6788 }
6789
9c6c53f7
SA
6790 if (pdi->tag == DW_TAG_enumerator)
6791 /* Enumerators should not get the name of the enumeration as a prefix. */
6792 parent->scope = grandparent_scope;
6793 else if (parent->tag == DW_TAG_namespace
f55ee35c 6794 || parent->tag == DW_TAG_module
72bf9492
DJ
6795 || parent->tag == DW_TAG_structure_type
6796 || parent->tag == DW_TAG_class_type
680b30c7 6797 || parent->tag == DW_TAG_interface_type
ceeb3d5a
TT
6798 || parent->tag == DW_TAG_union_type
6799 || parent->tag == DW_TAG_enumeration_type)
72bf9492
DJ
6800 {
6801 if (grandparent_scope == NULL)
6802 parent->scope = parent->name;
6803 else
3e43a32a
MS
6804 parent->scope = typename_concat (&cu->comp_unit_obstack,
6805 grandparent_scope,
f55ee35c 6806 parent->name, 0, cu);
72bf9492 6807 }
72bf9492
DJ
6808 else
6809 {
6810 /* FIXME drow/2004-04-01: What should we be doing with
6811 function-local names? For partial symbols, we should probably be
6812 ignoring them. */
6813 complaint (&symfile_complaints,
e2e0b3e5 6814 _("unhandled containing DIE tag %d for DIE at %d"),
b64f50a1 6815 parent->tag, pdi->offset.sect_off);
72bf9492 6816 parent->scope = grandparent_scope;
c906108c
SS
6817 }
6818
72bf9492
DJ
6819 parent->scope_set = 1;
6820 return parent->scope;
6821}
6822
6823/* Return the fully scoped name associated with PDI, from compilation unit
6824 CU. The result will be allocated with malloc. */
4568ecf9 6825
72bf9492
DJ
6826static char *
6827partial_die_full_name (struct partial_die_info *pdi,
6828 struct dwarf2_cu *cu)
6829{
15d034d0 6830 const char *parent_scope;
72bf9492 6831
98bfdba5
PA
6832 /* If this is a template instantiation, we can not work out the
6833 template arguments from partial DIEs. So, unfortunately, we have
6834 to go through the full DIEs. At least any work we do building
6835 types here will be reused if full symbols are loaded later. */
6836 if (pdi->has_template_arguments)
6837 {
6838 fixup_partial_die (pdi, cu);
6839
6840 if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
6841 {
6842 struct die_info *die;
6843 struct attribute attr;
6844 struct dwarf2_cu *ref_cu = cu;
6845
b64f50a1 6846 /* DW_FORM_ref_addr is using section offset. */
98bfdba5
PA
6847 attr.name = 0;
6848 attr.form = DW_FORM_ref_addr;
4568ecf9 6849 attr.u.unsnd = pdi->offset.sect_off;
98bfdba5
PA
6850 die = follow_die_ref (NULL, &attr, &ref_cu);
6851
6852 return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
6853 }
6854 }
6855
72bf9492
DJ
6856 parent_scope = partial_die_parent_scope (pdi, cu);
6857 if (parent_scope == NULL)
6858 return NULL;
6859 else
f55ee35c 6860 return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
c906108c
SS
6861}
6862
6863static void
72bf9492 6864add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
c906108c 6865{
e7c27a73 6866 struct objfile *objfile = cu->objfile;
3e29f34a 6867 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c 6868 CORE_ADDR addr = 0;
15d034d0 6869 const char *actual_name = NULL;
e142c38c 6870 CORE_ADDR baseaddr;
15d034d0 6871 char *built_actual_name;
e142c38c
DJ
6872
6873 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 6874
15d034d0
TT
6875 built_actual_name = partial_die_full_name (pdi, cu);
6876 if (built_actual_name != NULL)
6877 actual_name = built_actual_name;
63d06c5c 6878
72bf9492
DJ
6879 if (actual_name == NULL)
6880 actual_name = pdi->name;
6881
c906108c
SS
6882 switch (pdi->tag)
6883 {
6884 case DW_TAG_subprogram:
3e29f34a 6885 addr = gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr);
2cfa0c8d 6886 if (pdi->is_external || cu->language == language_ada)
c906108c 6887 {
2cfa0c8d
JB
6888 /* brobecker/2007-12-26: Normally, only "external" DIEs are part
6889 of the global scope. But in Ada, we want to be able to access
6890 nested procedures globally. So all Ada subprograms are stored
6891 in the global scope. */
3e29f34a
MR
6892 /* prim_record_minimal_symbol (actual_name, addr, mst_text,
6893 objfile); */
f47fb265 6894 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6895 built_actual_name != NULL,
f47fb265
MS
6896 VAR_DOMAIN, LOC_BLOCK,
6897 &objfile->global_psymbols,
3e29f34a 6898 0, addr, cu->language, objfile);
c906108c
SS
6899 }
6900 else
6901 {
3e29f34a
MR
6902 /* prim_record_minimal_symbol (actual_name, addr, mst_file_text,
6903 objfile); */
f47fb265 6904 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6905 built_actual_name != NULL,
f47fb265
MS
6906 VAR_DOMAIN, LOC_BLOCK,
6907 &objfile->static_psymbols,
3e29f34a 6908 0, addr, cu->language, objfile);
c906108c
SS
6909 }
6910 break;
72929c62
JB
6911 case DW_TAG_constant:
6912 {
6913 struct psymbol_allocation_list *list;
6914
6915 if (pdi->is_external)
6916 list = &objfile->global_psymbols;
6917 else
6918 list = &objfile->static_psymbols;
f47fb265 6919 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6920 built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
f47fb265 6921 list, 0, 0, cu->language, objfile);
72929c62
JB
6922 }
6923 break;
c906108c 6924 case DW_TAG_variable:
95554aad
TT
6925 if (pdi->d.locdesc)
6926 addr = decode_locdesc (pdi->d.locdesc, cu);
caac4577 6927
95554aad 6928 if (pdi->d.locdesc
caac4577
JG
6929 && addr == 0
6930 && !dwarf2_per_objfile->has_section_at_zero)
6931 {
6932 /* A global or static variable may also have been stripped
6933 out by the linker if unused, in which case its address
6934 will be nullified; do not add such variables into partial
6935 symbol table then. */
6936 }
6937 else if (pdi->is_external)
c906108c
SS
6938 {
6939 /* Global Variable.
6940 Don't enter into the minimal symbol tables as there is
6941 a minimal symbol table entry from the ELF symbols already.
6942 Enter into partial symbol table if it has a location
6943 descriptor or a type.
6944 If the location descriptor is missing, new_symbol will create
6945 a LOC_UNRESOLVED symbol, the address of the variable will then
6946 be determined from the minimal symbol table whenever the variable
6947 is referenced.
6948 The address for the partial symbol table entry is not
6949 used by GDB, but it comes in handy for debugging partial symbol
6950 table building. */
6951
95554aad 6952 if (pdi->d.locdesc || pdi->has_type)
f47fb265 6953 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6954 built_actual_name != NULL,
f47fb265
MS
6955 VAR_DOMAIN, LOC_STATIC,
6956 &objfile->global_psymbols,
6957 0, addr + baseaddr,
6958 cu->language, objfile);
c906108c
SS
6959 }
6960 else
6961 {
ff908ebf
AW
6962 int has_loc = pdi->d.locdesc != NULL;
6963
6964 /* Static Variable. Skip symbols whose value we cannot know (those
6965 without location descriptors or constant values). */
6966 if (!has_loc && !pdi->has_const_value)
decbce07 6967 {
15d034d0 6968 xfree (built_actual_name);
decbce07
MS
6969 return;
6970 }
ff908ebf 6971
f47fb265 6972 /* prim_record_minimal_symbol (actual_name, addr + baseaddr,
c5aa993b 6973 mst_file_data, objfile); */
f47fb265 6974 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6975 built_actual_name != NULL,
f47fb265
MS
6976 VAR_DOMAIN, LOC_STATIC,
6977 &objfile->static_psymbols,
ff908ebf
AW
6978 0,
6979 has_loc ? addr + baseaddr : (CORE_ADDR) 0,
f47fb265 6980 cu->language, objfile);
c906108c
SS
6981 }
6982 break;
6983 case DW_TAG_typedef:
6984 case DW_TAG_base_type:
a02abb62 6985 case DW_TAG_subrange_type:
38d518c9 6986 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6987 built_actual_name != NULL,
176620f1 6988 VAR_DOMAIN, LOC_TYPEDEF,
c906108c 6989 &objfile->static_psymbols,
e142c38c 6990 0, (CORE_ADDR) 0, cu->language, objfile);
c906108c 6991 break;
74921315 6992 case DW_TAG_imported_declaration:
72bf9492
DJ
6993 case DW_TAG_namespace:
6994 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6995 built_actual_name != NULL,
72bf9492
DJ
6996 VAR_DOMAIN, LOC_TYPEDEF,
6997 &objfile->global_psymbols,
6998 0, (CORE_ADDR) 0, cu->language, objfile);
6999 break;
530e8392
KB
7000 case DW_TAG_module:
7001 add_psymbol_to_list (actual_name, strlen (actual_name),
7002 built_actual_name != NULL,
7003 MODULE_DOMAIN, LOC_TYPEDEF,
7004 &objfile->global_psymbols,
7005 0, (CORE_ADDR) 0, cu->language, objfile);
7006 break;
c906108c 7007 case DW_TAG_class_type:
680b30c7 7008 case DW_TAG_interface_type:
c906108c
SS
7009 case DW_TAG_structure_type:
7010 case DW_TAG_union_type:
7011 case DW_TAG_enumeration_type:
fa4028e9
JB
7012 /* Skip external references. The DWARF standard says in the section
7013 about "Structure, Union, and Class Type Entries": "An incomplete
7014 structure, union or class type is represented by a structure,
7015 union or class entry that does not have a byte size attribute
7016 and that has a DW_AT_declaration attribute." */
7017 if (!pdi->has_byte_size && pdi->is_declaration)
decbce07 7018 {
15d034d0 7019 xfree (built_actual_name);
decbce07
MS
7020 return;
7021 }
fa4028e9 7022
63d06c5c
DC
7023 /* NOTE: carlton/2003-10-07: See comment in new_symbol about
7024 static vs. global. */
38d518c9 7025 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7026 built_actual_name != NULL,
176620f1 7027 STRUCT_DOMAIN, LOC_TYPEDEF,
987504bb
JJ
7028 (cu->language == language_cplus
7029 || cu->language == language_java)
63d06c5c
DC
7030 ? &objfile->global_psymbols
7031 : &objfile->static_psymbols,
e142c38c 7032 0, (CORE_ADDR) 0, cu->language, objfile);
c906108c 7033
c906108c
SS
7034 break;
7035 case DW_TAG_enumerator:
38d518c9 7036 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7037 built_actual_name != NULL,
176620f1 7038 VAR_DOMAIN, LOC_CONST,
987504bb
JJ
7039 (cu->language == language_cplus
7040 || cu->language == language_java)
f6fe98ef
DJ
7041 ? &objfile->global_psymbols
7042 : &objfile->static_psymbols,
e142c38c 7043 0, (CORE_ADDR) 0, cu->language, objfile);
c906108c
SS
7044 break;
7045 default:
7046 break;
7047 }
5c4e30ca 7048
15d034d0 7049 xfree (built_actual_name);
c906108c
SS
7050}
7051
5c4e30ca
DC
7052/* Read a partial die corresponding to a namespace; also, add a symbol
7053 corresponding to that namespace to the symbol table. NAMESPACE is
7054 the name of the enclosing namespace. */
91c24f0a 7055
72bf9492
DJ
7056static void
7057add_partial_namespace (struct partial_die_info *pdi,
91c24f0a 7058 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 7059 int set_addrmap, struct dwarf2_cu *cu)
91c24f0a 7060{
72bf9492 7061 /* Add a symbol for the namespace. */
e7c27a73 7062
72bf9492 7063 add_partial_symbol (pdi, cu);
5c4e30ca
DC
7064
7065 /* Now scan partial symbols in that namespace. */
7066
91c24f0a 7067 if (pdi->has_children)
cdc07690 7068 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
91c24f0a
DC
7069}
7070
5d7cb8df
JK
7071/* Read a partial die corresponding to a Fortran module. */
7072
7073static void
7074add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
cdc07690 7075 CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
5d7cb8df 7076{
530e8392
KB
7077 /* Add a symbol for the namespace. */
7078
7079 add_partial_symbol (pdi, cu);
7080
f55ee35c 7081 /* Now scan partial symbols in that module. */
5d7cb8df
JK
7082
7083 if (pdi->has_children)
cdc07690 7084 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
5d7cb8df
JK
7085}
7086
bc30ff58
JB
7087/* Read a partial die corresponding to a subprogram and create a partial
7088 symbol for that subprogram. When the CU language allows it, this
7089 routine also defines a partial symbol for each nested subprogram
cdc07690 7090 that this subprogram contains. If SET_ADDRMAP is true, record the
428fc5fc
YQ
7091 covered ranges in the addrmap. Set *LOWPC and *HIGHPC to the lowest
7092 and highest PC values found in PDI.
6e70227d 7093
cdc07690
YQ
7094 PDI may also be a lexical block, in which case we simply search
7095 recursively for subprograms defined inside that lexical block.
bc30ff58
JB
7096 Again, this is only performed when the CU language allows this
7097 type of definitions. */
7098
7099static void
7100add_partial_subprogram (struct partial_die_info *pdi,
7101 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 7102 int set_addrmap, struct dwarf2_cu *cu)
bc30ff58
JB
7103{
7104 if (pdi->tag == DW_TAG_subprogram)
7105 {
7106 if (pdi->has_pc_info)
7107 {
7108 if (pdi->lowpc < *lowpc)
7109 *lowpc = pdi->lowpc;
7110 if (pdi->highpc > *highpc)
7111 *highpc = pdi->highpc;
cdc07690 7112 if (set_addrmap)
5734ee8b 7113 {
5734ee8b 7114 struct objfile *objfile = cu->objfile;
3e29f34a
MR
7115 struct gdbarch *gdbarch = get_objfile_arch (objfile);
7116 CORE_ADDR baseaddr;
7117 CORE_ADDR highpc;
7118 CORE_ADDR lowpc;
5734ee8b
DJ
7119
7120 baseaddr = ANOFFSET (objfile->section_offsets,
7121 SECT_OFF_TEXT (objfile));
3e29f34a
MR
7122 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7123 pdi->lowpc + baseaddr);
7124 highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7125 pdi->highpc + baseaddr);
7126 addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
9291a0cd 7127 cu->per_cu->v.psymtab);
5734ee8b 7128 }
481860b3
GB
7129 }
7130
7131 if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
7132 {
bc30ff58 7133 if (!pdi->is_declaration)
e8d05480
JB
7134 /* Ignore subprogram DIEs that do not have a name, they are
7135 illegal. Do not emit a complaint at this point, we will
7136 do so when we convert this psymtab into a symtab. */
7137 if (pdi->name)
7138 add_partial_symbol (pdi, cu);
bc30ff58
JB
7139 }
7140 }
6e70227d 7141
bc30ff58
JB
7142 if (! pdi->has_children)
7143 return;
7144
7145 if (cu->language == language_ada)
7146 {
7147 pdi = pdi->die_child;
7148 while (pdi != NULL)
7149 {
7150 fixup_partial_die (pdi, cu);
7151 if (pdi->tag == DW_TAG_subprogram
7152 || pdi->tag == DW_TAG_lexical_block)
cdc07690 7153 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
bc30ff58
JB
7154 pdi = pdi->die_sibling;
7155 }
7156 }
7157}
7158
91c24f0a
DC
7159/* Read a partial die corresponding to an enumeration type. */
7160
72bf9492
DJ
7161static void
7162add_partial_enumeration (struct partial_die_info *enum_pdi,
7163 struct dwarf2_cu *cu)
91c24f0a 7164{
72bf9492 7165 struct partial_die_info *pdi;
91c24f0a
DC
7166
7167 if (enum_pdi->name != NULL)
72bf9492
DJ
7168 add_partial_symbol (enum_pdi, cu);
7169
7170 pdi = enum_pdi->die_child;
7171 while (pdi)
91c24f0a 7172 {
72bf9492 7173 if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
e2e0b3e5 7174 complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
91c24f0a 7175 else
72bf9492
DJ
7176 add_partial_symbol (pdi, cu);
7177 pdi = pdi->die_sibling;
91c24f0a 7178 }
91c24f0a
DC
7179}
7180
6caca83c
CC
7181/* Return the initial uleb128 in the die at INFO_PTR. */
7182
7183static unsigned int
d521ce57 7184peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
6caca83c
CC
7185{
7186 unsigned int bytes_read;
7187
7188 return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7189}
7190
4bb7a0a7
DJ
7191/* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
7192 Return the corresponding abbrev, or NULL if the number is zero (indicating
7193 an empty DIE). In either case *BYTES_READ will be set to the length of
7194 the initial number. */
7195
7196static struct abbrev_info *
d521ce57 7197peek_die_abbrev (const gdb_byte *info_ptr, unsigned int *bytes_read,
891d2f0b 7198 struct dwarf2_cu *cu)
4bb7a0a7
DJ
7199{
7200 bfd *abfd = cu->objfile->obfd;
7201 unsigned int abbrev_number;
7202 struct abbrev_info *abbrev;
7203
7204 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
7205
7206 if (abbrev_number == 0)
7207 return NULL;
7208
433df2d4 7209 abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
4bb7a0a7
DJ
7210 if (!abbrev)
7211 {
422b9917
DE
7212 error (_("Dwarf Error: Could not find abbrev number %d in %s"
7213 " at offset 0x%x [in module %s]"),
7214 abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
7215 cu->header.offset.sect_off, bfd_get_filename (abfd));
4bb7a0a7
DJ
7216 }
7217
7218 return abbrev;
7219}
7220
93311388
DE
7221/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7222 Returns a pointer to the end of a series of DIEs, terminated by an empty
4bb7a0a7
DJ
7223 DIE. Any children of the skipped DIEs will also be skipped. */
7224
d521ce57
TT
7225static const gdb_byte *
7226skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
4bb7a0a7 7227{
dee91e82 7228 struct dwarf2_cu *cu = reader->cu;
4bb7a0a7
DJ
7229 struct abbrev_info *abbrev;
7230 unsigned int bytes_read;
7231
7232 while (1)
7233 {
7234 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
7235 if (abbrev == NULL)
7236 return info_ptr + bytes_read;
7237 else
dee91e82 7238 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
4bb7a0a7
DJ
7239 }
7240}
7241
93311388
DE
7242/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7243 INFO_PTR should point just after the initial uleb128 of a DIE, and the
4bb7a0a7
DJ
7244 abbrev corresponding to that skipped uleb128 should be passed in
7245 ABBREV. Returns a pointer to this DIE's sibling, skipping any
7246 children. */
7247
d521ce57
TT
7248static const gdb_byte *
7249skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
dee91e82 7250 struct abbrev_info *abbrev)
4bb7a0a7
DJ
7251{
7252 unsigned int bytes_read;
7253 struct attribute attr;
dee91e82
DE
7254 bfd *abfd = reader->abfd;
7255 struct dwarf2_cu *cu = reader->cu;
d521ce57 7256 const gdb_byte *buffer = reader->buffer;
f664829e 7257 const gdb_byte *buffer_end = reader->buffer_end;
d521ce57 7258 const gdb_byte *start_info_ptr = info_ptr;
4bb7a0a7
DJ
7259 unsigned int form, i;
7260
7261 for (i = 0; i < abbrev->num_attrs; i++)
7262 {
7263 /* The only abbrev we care about is DW_AT_sibling. */
7264 if (abbrev->attrs[i].name == DW_AT_sibling)
7265 {
dee91e82 7266 read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
4bb7a0a7 7267 if (attr.form == DW_FORM_ref_addr)
3e43a32a
MS
7268 complaint (&symfile_complaints,
7269 _("ignoring absolute DW_AT_sibling"));
4bb7a0a7 7270 else
b9502d3f
WN
7271 {
7272 unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
7273 const gdb_byte *sibling_ptr = buffer + off;
7274
7275 if (sibling_ptr < info_ptr)
7276 complaint (&symfile_complaints,
7277 _("DW_AT_sibling points backwards"));
22869d73
KS
7278 else if (sibling_ptr > reader->buffer_end)
7279 dwarf2_section_buffer_overflow_complaint (reader->die_section);
b9502d3f
WN
7280 else
7281 return sibling_ptr;
7282 }
4bb7a0a7
DJ
7283 }
7284
7285 /* If it isn't DW_AT_sibling, skip this attribute. */
7286 form = abbrev->attrs[i].form;
7287 skip_attribute:
7288 switch (form)
7289 {
4bb7a0a7 7290 case DW_FORM_ref_addr:
ae411497
TT
7291 /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
7292 and later it is offset sized. */
7293 if (cu->header.version == 2)
7294 info_ptr += cu->header.addr_size;
7295 else
7296 info_ptr += cu->header.offset_size;
7297 break;
36586728
TT
7298 case DW_FORM_GNU_ref_alt:
7299 info_ptr += cu->header.offset_size;
7300 break;
ae411497 7301 case DW_FORM_addr:
4bb7a0a7
DJ
7302 info_ptr += cu->header.addr_size;
7303 break;
7304 case DW_FORM_data1:
7305 case DW_FORM_ref1:
7306 case DW_FORM_flag:
7307 info_ptr += 1;
7308 break;
2dc7f7b3
TT
7309 case DW_FORM_flag_present:
7310 break;
4bb7a0a7
DJ
7311 case DW_FORM_data2:
7312 case DW_FORM_ref2:
7313 info_ptr += 2;
7314 break;
7315 case DW_FORM_data4:
7316 case DW_FORM_ref4:
7317 info_ptr += 4;
7318 break;
7319 case DW_FORM_data8:
7320 case DW_FORM_ref8:
55f1336d 7321 case DW_FORM_ref_sig8:
4bb7a0a7
DJ
7322 info_ptr += 8;
7323 break;
7324 case DW_FORM_string:
9b1c24c8 7325 read_direct_string (abfd, info_ptr, &bytes_read);
4bb7a0a7
DJ
7326 info_ptr += bytes_read;
7327 break;
2dc7f7b3 7328 case DW_FORM_sec_offset:
4bb7a0a7 7329 case DW_FORM_strp:
36586728 7330 case DW_FORM_GNU_strp_alt:
4bb7a0a7
DJ
7331 info_ptr += cu->header.offset_size;
7332 break;
2dc7f7b3 7333 case DW_FORM_exprloc:
4bb7a0a7
DJ
7334 case DW_FORM_block:
7335 info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7336 info_ptr += bytes_read;
7337 break;
7338 case DW_FORM_block1:
7339 info_ptr += 1 + read_1_byte (abfd, info_ptr);
7340 break;
7341 case DW_FORM_block2:
7342 info_ptr += 2 + read_2_bytes (abfd, info_ptr);
7343 break;
7344 case DW_FORM_block4:
7345 info_ptr += 4 + read_4_bytes (abfd, info_ptr);
7346 break;
7347 case DW_FORM_sdata:
7348 case DW_FORM_udata:
7349 case DW_FORM_ref_udata:
3019eac3
DE
7350 case DW_FORM_GNU_addr_index:
7351 case DW_FORM_GNU_str_index:
d521ce57 7352 info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
4bb7a0a7
DJ
7353 break;
7354 case DW_FORM_indirect:
7355 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7356 info_ptr += bytes_read;
7357 /* We need to continue parsing from here, so just go back to
7358 the top. */
7359 goto skip_attribute;
7360
7361 default:
3e43a32a
MS
7362 error (_("Dwarf Error: Cannot handle %s "
7363 "in DWARF reader [in module %s]"),
4bb7a0a7
DJ
7364 dwarf_form_name (form),
7365 bfd_get_filename (abfd));
7366 }
7367 }
7368
7369 if (abbrev->has_children)
dee91e82 7370 return skip_children (reader, info_ptr);
4bb7a0a7
DJ
7371 else
7372 return info_ptr;
7373}
7374
93311388 7375/* Locate ORIG_PDI's sibling.
dee91e82 7376 INFO_PTR should point to the start of the next DIE after ORIG_PDI. */
91c24f0a 7377
d521ce57 7378static const gdb_byte *
dee91e82
DE
7379locate_pdi_sibling (const struct die_reader_specs *reader,
7380 struct partial_die_info *orig_pdi,
d521ce57 7381 const gdb_byte *info_ptr)
91c24f0a
DC
7382{
7383 /* Do we know the sibling already? */
72bf9492 7384
91c24f0a
DC
7385 if (orig_pdi->sibling)
7386 return orig_pdi->sibling;
7387
7388 /* Are there any children to deal with? */
7389
7390 if (!orig_pdi->has_children)
7391 return info_ptr;
7392
4bb7a0a7 7393 /* Skip the children the long way. */
91c24f0a 7394
dee91e82 7395 return skip_children (reader, info_ptr);
91c24f0a
DC
7396}
7397
257e7a09 7398/* Expand this partial symbol table into a full symbol table. SELF is
442e4d9c 7399 not NULL. */
c906108c
SS
7400
7401static void
257e7a09
YQ
7402dwarf2_read_symtab (struct partial_symtab *self,
7403 struct objfile *objfile)
c906108c 7404{
257e7a09 7405 if (self->readin)
c906108c 7406 {
442e4d9c 7407 warning (_("bug: psymtab for %s is already read in."),
257e7a09 7408 self->filename);
442e4d9c
YQ
7409 }
7410 else
7411 {
7412 if (info_verbose)
c906108c 7413 {
442e4d9c 7414 printf_filtered (_("Reading in symbols for %s..."),
257e7a09 7415 self->filename);
442e4d9c 7416 gdb_flush (gdb_stdout);
c906108c 7417 }
c906108c 7418
442e4d9c
YQ
7419 /* Restore our global data. */
7420 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
10b3939b 7421
442e4d9c
YQ
7422 /* If this psymtab is constructed from a debug-only objfile, the
7423 has_section_at_zero flag will not necessarily be correct. We
7424 can get the correct value for this flag by looking at the data
7425 associated with the (presumably stripped) associated objfile. */
7426 if (objfile->separate_debug_objfile_backlink)
7427 {
7428 struct dwarf2_per_objfile *dpo_backlink
7429 = objfile_data (objfile->separate_debug_objfile_backlink,
7430 dwarf2_objfile_data_key);
9a619af0 7431
442e4d9c
YQ
7432 dwarf2_per_objfile->has_section_at_zero
7433 = dpo_backlink->has_section_at_zero;
7434 }
b2ab525c 7435
442e4d9c 7436 dwarf2_per_objfile->reading_partial_symbols = 0;
98bfdba5 7437
257e7a09 7438 psymtab_to_symtab_1 (self);
c906108c 7439
442e4d9c
YQ
7440 /* Finish up the debug error message. */
7441 if (info_verbose)
7442 printf_filtered (_("done.\n"));
c906108c 7443 }
95554aad
TT
7444
7445 process_cu_includes ();
c906108c 7446}
9cdd5dbd
DE
7447\f
7448/* Reading in full CUs. */
c906108c 7449
10b3939b
DJ
7450/* Add PER_CU to the queue. */
7451
7452static void
95554aad
TT
7453queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
7454 enum language pretend_language)
10b3939b
DJ
7455{
7456 struct dwarf2_queue_item *item;
7457
7458 per_cu->queued = 1;
7459 item = xmalloc (sizeof (*item));
7460 item->per_cu = per_cu;
95554aad 7461 item->pretend_language = pretend_language;
10b3939b
DJ
7462 item->next = NULL;
7463
7464 if (dwarf2_queue == NULL)
7465 dwarf2_queue = item;
7466 else
7467 dwarf2_queue_tail->next = item;
7468
7469 dwarf2_queue_tail = item;
7470}
7471
89e63ee4
DE
7472/* If PER_CU is not yet queued, add it to the queue.
7473 If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
7474 dependency.
0907af0c 7475 The result is non-zero if PER_CU was queued, otherwise the result is zero
69d751e3
DE
7476 meaning either PER_CU is already queued or it is already loaded.
7477
7478 N.B. There is an invariant here that if a CU is queued then it is loaded.
7479 The caller is required to load PER_CU if we return non-zero. */
0907af0c
DE
7480
7481static int
89e63ee4 7482maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
0907af0c
DE
7483 struct dwarf2_per_cu_data *per_cu,
7484 enum language pretend_language)
7485{
7486 /* We may arrive here during partial symbol reading, if we need full
7487 DIEs to process an unusual case (e.g. template arguments). Do
7488 not queue PER_CU, just tell our caller to load its DIEs. */
7489 if (dwarf2_per_objfile->reading_partial_symbols)
7490 {
7491 if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
7492 return 1;
7493 return 0;
7494 }
7495
7496 /* Mark the dependence relation so that we don't flush PER_CU
7497 too early. */
89e63ee4
DE
7498 if (dependent_cu != NULL)
7499 dwarf2_add_dependence (dependent_cu, per_cu);
0907af0c
DE
7500
7501 /* If it's already on the queue, we have nothing to do. */
7502 if (per_cu->queued)
7503 return 0;
7504
7505 /* If the compilation unit is already loaded, just mark it as
7506 used. */
7507 if (per_cu->cu != NULL)
7508 {
7509 per_cu->cu->last_used = 0;
7510 return 0;
7511 }
7512
7513 /* Add it to the queue. */
7514 queue_comp_unit (per_cu, pretend_language);
7515
7516 return 1;
7517}
7518
10b3939b
DJ
7519/* Process the queue. */
7520
7521static void
a0f42c21 7522process_queue (void)
10b3939b
DJ
7523{
7524 struct dwarf2_queue_item *item, *next_item;
7525
45cfd468
DE
7526 if (dwarf2_read_debug)
7527 {
7528 fprintf_unfiltered (gdb_stdlog,
7529 "Expanding one or more symtabs of objfile %s ...\n",
4262abfb 7530 objfile_name (dwarf2_per_objfile->objfile));
45cfd468
DE
7531 }
7532
03dd20cc
DJ
7533 /* The queue starts out with one item, but following a DIE reference
7534 may load a new CU, adding it to the end of the queue. */
10b3939b
DJ
7535 for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
7536 {
9291a0cd 7537 if (dwarf2_per_objfile->using_index
43f3e411 7538 ? !item->per_cu->v.quick->compunit_symtab
9291a0cd 7539 : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
f4dc4d17
DE
7540 {
7541 struct dwarf2_per_cu_data *per_cu = item->per_cu;
73be47f5 7542 unsigned int debug_print_threshold;
247f5c4f 7543 char buf[100];
f4dc4d17 7544
247f5c4f 7545 if (per_cu->is_debug_types)
f4dc4d17 7546 {
247f5c4f
DE
7547 struct signatured_type *sig_type =
7548 (struct signatured_type *) per_cu;
7549
7550 sprintf (buf, "TU %s at offset 0x%x",
73be47f5
DE
7551 hex_string (sig_type->signature),
7552 per_cu->offset.sect_off);
7553 /* There can be 100s of TUs.
7554 Only print them in verbose mode. */
7555 debug_print_threshold = 2;
f4dc4d17 7556 }
247f5c4f 7557 else
73be47f5
DE
7558 {
7559 sprintf (buf, "CU at offset 0x%x", per_cu->offset.sect_off);
7560 debug_print_threshold = 1;
7561 }
247f5c4f 7562
73be47f5 7563 if (dwarf2_read_debug >= debug_print_threshold)
247f5c4f 7564 fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
f4dc4d17
DE
7565
7566 if (per_cu->is_debug_types)
7567 process_full_type_unit (per_cu, item->pretend_language);
7568 else
7569 process_full_comp_unit (per_cu, item->pretend_language);
7570
73be47f5 7571 if (dwarf2_read_debug >= debug_print_threshold)
247f5c4f 7572 fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
f4dc4d17 7573 }
10b3939b
DJ
7574
7575 item->per_cu->queued = 0;
7576 next_item = item->next;
7577 xfree (item);
7578 }
7579
7580 dwarf2_queue_tail = NULL;
45cfd468
DE
7581
7582 if (dwarf2_read_debug)
7583 {
7584 fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
4262abfb 7585 objfile_name (dwarf2_per_objfile->objfile));
45cfd468 7586 }
10b3939b
DJ
7587}
7588
7589/* Free all allocated queue entries. This function only releases anything if
7590 an error was thrown; if the queue was processed then it would have been
7591 freed as we went along. */
7592
7593static void
7594dwarf2_release_queue (void *dummy)
7595{
7596 struct dwarf2_queue_item *item, *last;
7597
7598 item = dwarf2_queue;
7599 while (item)
7600 {
7601 /* Anything still marked queued is likely to be in an
7602 inconsistent state, so discard it. */
7603 if (item->per_cu->queued)
7604 {
7605 if (item->per_cu->cu != NULL)
dee91e82 7606 free_one_cached_comp_unit (item->per_cu);
10b3939b
DJ
7607 item->per_cu->queued = 0;
7608 }
7609
7610 last = item;
7611 item = item->next;
7612 xfree (last);
7613 }
7614
7615 dwarf2_queue = dwarf2_queue_tail = NULL;
7616}
7617
7618/* Read in full symbols for PST, and anything it depends on. */
7619
c906108c 7620static void
fba45db2 7621psymtab_to_symtab_1 (struct partial_symtab *pst)
c906108c 7622{
10b3939b 7623 struct dwarf2_per_cu_data *per_cu;
aaa75496
JB
7624 int i;
7625
95554aad
TT
7626 if (pst->readin)
7627 return;
7628
aaa75496 7629 for (i = 0; i < pst->number_of_dependencies; i++)
95554aad
TT
7630 if (!pst->dependencies[i]->readin
7631 && pst->dependencies[i]->user == NULL)
aaa75496
JB
7632 {
7633 /* Inform about additional files that need to be read in. */
7634 if (info_verbose)
7635 {
a3f17187 7636 /* FIXME: i18n: Need to make this a single string. */
aaa75496
JB
7637 fputs_filtered (" ", gdb_stdout);
7638 wrap_here ("");
7639 fputs_filtered ("and ", gdb_stdout);
7640 wrap_here ("");
7641 printf_filtered ("%s...", pst->dependencies[i]->filename);
0963b4bd 7642 wrap_here (""); /* Flush output. */
aaa75496
JB
7643 gdb_flush (gdb_stdout);
7644 }
7645 psymtab_to_symtab_1 (pst->dependencies[i]);
7646 }
7647
e38df1d0 7648 per_cu = pst->read_symtab_private;
10b3939b
DJ
7649
7650 if (per_cu == NULL)
aaa75496
JB
7651 {
7652 /* It's an include file, no symbols to read for it.
7653 Everything is in the parent symtab. */
7654 pst->readin = 1;
7655 return;
7656 }
c906108c 7657
a0f42c21 7658 dw2_do_instantiate_symtab (per_cu);
10b3939b
DJ
7659}
7660
dee91e82
DE
7661/* Trivial hash function for die_info: the hash value of a DIE
7662 is its offset in .debug_info for this objfile. */
10b3939b 7663
dee91e82
DE
7664static hashval_t
7665die_hash (const void *item)
10b3939b 7666{
dee91e82 7667 const struct die_info *die = item;
6502dd73 7668
dee91e82
DE
7669 return die->offset.sect_off;
7670}
63d06c5c 7671
dee91e82
DE
7672/* Trivial comparison function for die_info structures: two DIEs
7673 are equal if they have the same offset. */
98bfdba5 7674
dee91e82
DE
7675static int
7676die_eq (const void *item_lhs, const void *item_rhs)
7677{
7678 const struct die_info *die_lhs = item_lhs;
7679 const struct die_info *die_rhs = item_rhs;
c906108c 7680
dee91e82
DE
7681 return die_lhs->offset.sect_off == die_rhs->offset.sect_off;
7682}
c906108c 7683
dee91e82
DE
7684/* die_reader_func for load_full_comp_unit.
7685 This is identical to read_signatured_type_reader,
7686 but is kept separate for now. */
c906108c 7687
dee91e82
DE
7688static void
7689load_full_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 7690 const gdb_byte *info_ptr,
dee91e82
DE
7691 struct die_info *comp_unit_die,
7692 int has_children,
7693 void *data)
7694{
7695 struct dwarf2_cu *cu = reader->cu;
95554aad 7696 enum language *language_ptr = data;
6caca83c 7697
dee91e82
DE
7698 gdb_assert (cu->die_hash == NULL);
7699 cu->die_hash =
7700 htab_create_alloc_ex (cu->header.length / 12,
7701 die_hash,
7702 die_eq,
7703 NULL,
7704 &cu->comp_unit_obstack,
7705 hashtab_obstack_allocate,
7706 dummy_obstack_deallocate);
e142c38c 7707
dee91e82
DE
7708 if (has_children)
7709 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
7710 &info_ptr, comp_unit_die);
7711 cu->dies = comp_unit_die;
7712 /* comp_unit_die is not stored in die_hash, no need. */
10b3939b
DJ
7713
7714 /* We try not to read any attributes in this function, because not
9cdd5dbd 7715 all CUs needed for references have been loaded yet, and symbol
10b3939b 7716 table processing isn't initialized. But we have to set the CU language,
dee91e82
DE
7717 or we won't be able to build types correctly.
7718 Similarly, if we do not read the producer, we can not apply
7719 producer-specific interpretation. */
95554aad 7720 prepare_one_comp_unit (cu, cu->dies, *language_ptr);
dee91e82 7721}
10b3939b 7722
dee91e82 7723/* Load the DIEs associated with PER_CU into memory. */
a6c727b2 7724
dee91e82 7725static void
95554aad
TT
7726load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
7727 enum language pretend_language)
dee91e82 7728{
3019eac3 7729 gdb_assert (! this_cu->is_debug_types);
c5b7e1cb 7730
f4dc4d17
DE
7731 init_cutu_and_read_dies (this_cu, NULL, 1, 1,
7732 load_full_comp_unit_reader, &pretend_language);
10b3939b
DJ
7733}
7734
3da10d80
KS
7735/* Add a DIE to the delayed physname list. */
7736
7737static void
7738add_to_method_list (struct type *type, int fnfield_index, int index,
7739 const char *name, struct die_info *die,
7740 struct dwarf2_cu *cu)
7741{
7742 struct delayed_method_info mi;
7743 mi.type = type;
7744 mi.fnfield_index = fnfield_index;
7745 mi.index = index;
7746 mi.name = name;
7747 mi.die = die;
7748 VEC_safe_push (delayed_method_info, cu->method_list, &mi);
7749}
7750
7751/* A cleanup for freeing the delayed method list. */
7752
7753static void
7754free_delayed_list (void *ptr)
7755{
7756 struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
7757 if (cu->method_list != NULL)
7758 {
7759 VEC_free (delayed_method_info, cu->method_list);
7760 cu->method_list = NULL;
7761 }
7762}
7763
7764/* Compute the physnames of any methods on the CU's method list.
7765
7766 The computation of method physnames is delayed in order to avoid the
7767 (bad) condition that one of the method's formal parameters is of an as yet
7768 incomplete type. */
7769
7770static void
7771compute_delayed_physnames (struct dwarf2_cu *cu)
7772{
7773 int i;
7774 struct delayed_method_info *mi;
7775 for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
7776 {
1d06ead6 7777 const char *physname;
3da10d80
KS
7778 struct fn_fieldlist *fn_flp
7779 = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
7d455152 7780 physname = dwarf2_physname (mi->name, mi->die, cu);
005e54bb
DE
7781 TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi->index)
7782 = physname ? physname : "";
3da10d80
KS
7783 }
7784}
7785
a766d390
DE
7786/* Go objects should be embedded in a DW_TAG_module DIE,
7787 and it's not clear if/how imported objects will appear.
7788 To keep Go support simple until that's worked out,
7789 go back through what we've read and create something usable.
7790 We could do this while processing each DIE, and feels kinda cleaner,
7791 but that way is more invasive.
7792 This is to, for example, allow the user to type "p var" or "b main"
7793 without having to specify the package name, and allow lookups
7794 of module.object to work in contexts that use the expression
7795 parser. */
7796
7797static void
7798fixup_go_packaging (struct dwarf2_cu *cu)
7799{
7800 char *package_name = NULL;
7801 struct pending *list;
7802 int i;
7803
7804 for (list = global_symbols; list != NULL; list = list->next)
7805 {
7806 for (i = 0; i < list->nsyms; ++i)
7807 {
7808 struct symbol *sym = list->symbol[i];
7809
7810 if (SYMBOL_LANGUAGE (sym) == language_go
7811 && SYMBOL_CLASS (sym) == LOC_BLOCK)
7812 {
7813 char *this_package_name = go_symbol_package_name (sym);
7814
7815 if (this_package_name == NULL)
7816 continue;
7817 if (package_name == NULL)
7818 package_name = this_package_name;
7819 else
7820 {
7821 if (strcmp (package_name, this_package_name) != 0)
7822 complaint (&symfile_complaints,
7823 _("Symtab %s has objects from two different Go packages: %s and %s"),
08be3fe3
DE
7824 (symbol_symtab (sym) != NULL
7825 ? symtab_to_filename_for_display
7826 (symbol_symtab (sym))
4262abfb 7827 : objfile_name (cu->objfile)),
a766d390
DE
7828 this_package_name, package_name);
7829 xfree (this_package_name);
7830 }
7831 }
7832 }
7833 }
7834
7835 if (package_name != NULL)
7836 {
7837 struct objfile *objfile = cu->objfile;
34a68019
TT
7838 const char *saved_package_name
7839 = obstack_copy0 (&objfile->per_bfd->storage_obstack,
7840 package_name,
7841 strlen (package_name));
a766d390 7842 struct type *type = init_type (TYPE_CODE_MODULE, 0, 0,
86f62fd7 7843 saved_package_name, objfile);
a766d390
DE
7844 struct symbol *sym;
7845
7846 TYPE_TAG_NAME (type) = TYPE_NAME (type);
7847
e623cf5d 7848 sym = allocate_symbol (objfile);
f85f34ed 7849 SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
86f62fd7
TT
7850 SYMBOL_SET_NAMES (sym, saved_package_name,
7851 strlen (saved_package_name), 0, objfile);
a766d390
DE
7852 /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
7853 e.g., "main" finds the "main" module and not C's main(). */
7854 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
f1e6e072 7855 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
a766d390
DE
7856 SYMBOL_TYPE (sym) = type;
7857
7858 add_symbol_to_list (sym, &global_symbols);
7859
7860 xfree (package_name);
7861 }
7862}
7863
95554aad
TT
7864/* Return the symtab for PER_CU. This works properly regardless of
7865 whether we're using the index or psymtabs. */
7866
43f3e411
DE
7867static struct compunit_symtab *
7868get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
95554aad
TT
7869{
7870 return (dwarf2_per_objfile->using_index
43f3e411
DE
7871 ? per_cu->v.quick->compunit_symtab
7872 : per_cu->v.psymtab->compunit_symtab);
95554aad
TT
7873}
7874
7875/* A helper function for computing the list of all symbol tables
7876 included by PER_CU. */
7877
7878static void
43f3e411 7879recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
ec94af83 7880 htab_t all_children, htab_t all_type_symtabs,
f9125b6c 7881 struct dwarf2_per_cu_data *per_cu,
43f3e411 7882 struct compunit_symtab *immediate_parent)
95554aad
TT
7883{
7884 void **slot;
7885 int ix;
43f3e411 7886 struct compunit_symtab *cust;
95554aad
TT
7887 struct dwarf2_per_cu_data *iter;
7888
7889 slot = htab_find_slot (all_children, per_cu, INSERT);
7890 if (*slot != NULL)
7891 {
7892 /* This inclusion and its children have been processed. */
7893 return;
7894 }
7895
7896 *slot = per_cu;
7897 /* Only add a CU if it has a symbol table. */
43f3e411
DE
7898 cust = get_compunit_symtab (per_cu);
7899 if (cust != NULL)
ec94af83
DE
7900 {
7901 /* If this is a type unit only add its symbol table if we haven't
7902 seen it yet (type unit per_cu's can share symtabs). */
7903 if (per_cu->is_debug_types)
7904 {
43f3e411 7905 slot = htab_find_slot (all_type_symtabs, cust, INSERT);
ec94af83
DE
7906 if (*slot == NULL)
7907 {
43f3e411
DE
7908 *slot = cust;
7909 VEC_safe_push (compunit_symtab_ptr, *result, cust);
7910 if (cust->user == NULL)
7911 cust->user = immediate_parent;
ec94af83
DE
7912 }
7913 }
7914 else
f9125b6c 7915 {
43f3e411
DE
7916 VEC_safe_push (compunit_symtab_ptr, *result, cust);
7917 if (cust->user == NULL)
7918 cust->user = immediate_parent;
f9125b6c 7919 }
ec94af83 7920 }
95554aad
TT
7921
7922 for (ix = 0;
796a7ff8 7923 VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
95554aad 7924 ++ix)
ec94af83
DE
7925 {
7926 recursively_compute_inclusions (result, all_children,
43f3e411 7927 all_type_symtabs, iter, cust);
ec94af83 7928 }
95554aad
TT
7929}
7930
43f3e411 7931/* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
95554aad
TT
7932 PER_CU. */
7933
7934static void
43f3e411 7935compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
95554aad 7936{
f4dc4d17
DE
7937 gdb_assert (! per_cu->is_debug_types);
7938
796a7ff8 7939 if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
95554aad
TT
7940 {
7941 int ix, len;
ec94af83 7942 struct dwarf2_per_cu_data *per_cu_iter;
43f3e411
DE
7943 struct compunit_symtab *compunit_symtab_iter;
7944 VEC (compunit_symtab_ptr) *result_symtabs = NULL;
ec94af83 7945 htab_t all_children, all_type_symtabs;
43f3e411 7946 struct compunit_symtab *cust = get_compunit_symtab (per_cu);
95554aad
TT
7947
7948 /* If we don't have a symtab, we can just skip this case. */
43f3e411 7949 if (cust == NULL)
95554aad
TT
7950 return;
7951
7952 all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7953 NULL, xcalloc, xfree);
ec94af83
DE
7954 all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7955 NULL, xcalloc, xfree);
95554aad
TT
7956
7957 for (ix = 0;
796a7ff8 7958 VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
ec94af83 7959 ix, per_cu_iter);
95554aad 7960 ++ix)
ec94af83
DE
7961 {
7962 recursively_compute_inclusions (&result_symtabs, all_children,
f9125b6c 7963 all_type_symtabs, per_cu_iter,
43f3e411 7964 cust);
ec94af83 7965 }
95554aad 7966
ec94af83 7967 /* Now we have a transitive closure of all the included symtabs. */
43f3e411
DE
7968 len = VEC_length (compunit_symtab_ptr, result_symtabs);
7969 cust->includes
95554aad
TT
7970 = obstack_alloc (&dwarf2_per_objfile->objfile->objfile_obstack,
7971 (len + 1) * sizeof (struct symtab *));
7972 for (ix = 0;
43f3e411
DE
7973 VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
7974 compunit_symtab_iter);
95554aad 7975 ++ix)
43f3e411
DE
7976 cust->includes[ix] = compunit_symtab_iter;
7977 cust->includes[len] = NULL;
95554aad 7978
43f3e411 7979 VEC_free (compunit_symtab_ptr, result_symtabs);
95554aad 7980 htab_delete (all_children);
ec94af83 7981 htab_delete (all_type_symtabs);
95554aad
TT
7982 }
7983}
7984
7985/* Compute the 'includes' field for the symtabs of all the CUs we just
7986 read. */
7987
7988static void
7989process_cu_includes (void)
7990{
7991 int ix;
7992 struct dwarf2_per_cu_data *iter;
7993
7994 for (ix = 0;
7995 VEC_iterate (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus,
7996 ix, iter);
7997 ++ix)
f4dc4d17
DE
7998 {
7999 if (! iter->is_debug_types)
43f3e411 8000 compute_compunit_symtab_includes (iter);
f4dc4d17 8001 }
95554aad
TT
8002
8003 VEC_free (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus);
8004}
8005
9cdd5dbd 8006/* Generate full symbol information for PER_CU, whose DIEs have
10b3939b
DJ
8007 already been loaded into memory. */
8008
8009static void
95554aad
TT
8010process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
8011 enum language pretend_language)
10b3939b 8012{
10b3939b 8013 struct dwarf2_cu *cu = per_cu->cu;
9291a0cd 8014 struct objfile *objfile = per_cu->objfile;
3e29f34a 8015 struct gdbarch *gdbarch = get_objfile_arch (objfile);
10b3939b 8016 CORE_ADDR lowpc, highpc;
43f3e411 8017 struct compunit_symtab *cust;
3da10d80 8018 struct cleanup *back_to, *delayed_list_cleanup;
10b3939b 8019 CORE_ADDR baseaddr;
4359dff1 8020 struct block *static_block;
3e29f34a 8021 CORE_ADDR addr;
10b3939b
DJ
8022
8023 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8024
10b3939b
DJ
8025 buildsym_init ();
8026 back_to = make_cleanup (really_free_pendings, NULL);
3da10d80 8027 delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
10b3939b
DJ
8028
8029 cu->list_in_scope = &file_symbols;
c906108c 8030
95554aad
TT
8031 cu->language = pretend_language;
8032 cu->language_defn = language_def (cu->language);
8033
c906108c 8034 /* Do line number decoding in read_file_scope () */
10b3939b 8035 process_die (cu->dies, cu);
c906108c 8036
a766d390
DE
8037 /* For now fudge the Go package. */
8038 if (cu->language == language_go)
8039 fixup_go_packaging (cu);
8040
3da10d80
KS
8041 /* Now that we have processed all the DIEs in the CU, all the types
8042 should be complete, and it should now be safe to compute all of the
8043 physnames. */
8044 compute_delayed_physnames (cu);
8045 do_cleanups (delayed_list_cleanup);
8046
fae299cd
DC
8047 /* Some compilers don't define a DW_AT_high_pc attribute for the
8048 compilation unit. If the DW_AT_high_pc is missing, synthesize
8049 it, by scanning the DIE's below the compilation unit. */
10b3939b 8050 get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
c906108c 8051
3e29f34a
MR
8052 addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
8053 static_block = end_symtab_get_static_block (addr, 0, 1);
4359dff1
JK
8054
8055 /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
8056 Also, DW_AT_ranges may record ranges not belonging to any child DIEs
8057 (such as virtual method tables). Record the ranges in STATIC_BLOCK's
8058 addrmap to help ensure it has an accurate map of pc values belonging to
8059 this comp unit. */
8060 dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
8061
43f3e411
DE
8062 cust = end_symtab_from_static_block (static_block,
8063 SECT_OFF_TEXT (objfile), 0);
c906108c 8064
43f3e411 8065 if (cust != NULL)
c906108c 8066 {
df15bd07 8067 int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
4632c0d0 8068
8be455d7
JK
8069 /* Set symtab language to language from DW_AT_language. If the
8070 compilation is from a C file generated by language preprocessors, do
8071 not set the language if it was already deduced by start_subfile. */
43f3e411
DE
8072 if (!(cu->language == language_c
8073 && COMPUNIT_FILETABS (cust)->language != language_c))
8074 COMPUNIT_FILETABS (cust)->language = cu->language;
8be455d7
JK
8075
8076 /* GCC-4.0 has started to support -fvar-tracking. GCC-3.x still can
8077 produce DW_AT_location with location lists but it can be possibly
ab260dad
JK
8078 invalid without -fvar-tracking. Still up to GCC-4.4.x incl. 4.4.0
8079 there were bugs in prologue debug info, fixed later in GCC-4.5
8080 by "unwind info for epilogues" patch (which is not directly related).
8be455d7
JK
8081
8082 For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
8083 needed, it would be wrong due to missing DW_AT_producer there.
8084
8085 Still one can confuse GDB by using non-standard GCC compilation
8086 options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
8087 */
ab260dad 8088 if (cu->has_loclist && gcc_4_minor >= 5)
43f3e411 8089 cust->locations_valid = 1;
e0d00bc7
JK
8090
8091 if (gcc_4_minor >= 5)
43f3e411 8092 cust->epilogue_unwind_valid = 1;
96408a79 8093
43f3e411 8094 cust->call_site_htab = cu->call_site_htab;
c906108c 8095 }
9291a0cd
TT
8096
8097 if (dwarf2_per_objfile->using_index)
43f3e411 8098 per_cu->v.quick->compunit_symtab = cust;
9291a0cd
TT
8099 else
8100 {
8101 struct partial_symtab *pst = per_cu->v.psymtab;
43f3e411 8102 pst->compunit_symtab = cust;
9291a0cd
TT
8103 pst->readin = 1;
8104 }
c906108c 8105
95554aad
TT
8106 /* Push it for inclusion processing later. */
8107 VEC_safe_push (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus, per_cu);
8108
c906108c 8109 do_cleanups (back_to);
f4dc4d17 8110}
45cfd468 8111
f4dc4d17
DE
8112/* Generate full symbol information for type unit PER_CU, whose DIEs have
8113 already been loaded into memory. */
8114
8115static void
8116process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
8117 enum language pretend_language)
8118{
8119 struct dwarf2_cu *cu = per_cu->cu;
8120 struct objfile *objfile = per_cu->objfile;
43f3e411 8121 struct compunit_symtab *cust;
f4dc4d17 8122 struct cleanup *back_to, *delayed_list_cleanup;
0186c6a7
DE
8123 struct signatured_type *sig_type;
8124
8125 gdb_assert (per_cu->is_debug_types);
8126 sig_type = (struct signatured_type *) per_cu;
f4dc4d17
DE
8127
8128 buildsym_init ();
8129 back_to = make_cleanup (really_free_pendings, NULL);
8130 delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
8131
8132 cu->list_in_scope = &file_symbols;
8133
8134 cu->language = pretend_language;
8135 cu->language_defn = language_def (cu->language);
8136
8137 /* The symbol tables are set up in read_type_unit_scope. */
8138 process_die (cu->dies, cu);
8139
8140 /* For now fudge the Go package. */
8141 if (cu->language == language_go)
8142 fixup_go_packaging (cu);
8143
8144 /* Now that we have processed all the DIEs in the CU, all the types
8145 should be complete, and it should now be safe to compute all of the
8146 physnames. */
8147 compute_delayed_physnames (cu);
8148 do_cleanups (delayed_list_cleanup);
8149
8150 /* TUs share symbol tables.
8151 If this is the first TU to use this symtab, complete the construction
094b34ac
DE
8152 of it with end_expandable_symtab. Otherwise, complete the addition of
8153 this TU's symbols to the existing symtab. */
43f3e411 8154 if (sig_type->type_unit_group->compunit_symtab == NULL)
45cfd468 8155 {
43f3e411
DE
8156 cust = end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
8157 sig_type->type_unit_group->compunit_symtab = cust;
f4dc4d17 8158
43f3e411 8159 if (cust != NULL)
f4dc4d17
DE
8160 {
8161 /* Set symtab language to language from DW_AT_language. If the
8162 compilation is from a C file generated by language preprocessors,
8163 do not set the language if it was already deduced by
8164 start_subfile. */
43f3e411
DE
8165 if (!(cu->language == language_c
8166 && COMPUNIT_FILETABS (cust)->language != language_c))
8167 COMPUNIT_FILETABS (cust)->language = cu->language;
f4dc4d17
DE
8168 }
8169 }
8170 else
8171 {
0ab9ce85 8172 augment_type_symtab ();
43f3e411 8173 cust = sig_type->type_unit_group->compunit_symtab;
f4dc4d17
DE
8174 }
8175
8176 if (dwarf2_per_objfile->using_index)
43f3e411 8177 per_cu->v.quick->compunit_symtab = cust;
f4dc4d17
DE
8178 else
8179 {
8180 struct partial_symtab *pst = per_cu->v.psymtab;
43f3e411 8181 pst->compunit_symtab = cust;
f4dc4d17 8182 pst->readin = 1;
45cfd468 8183 }
f4dc4d17
DE
8184
8185 do_cleanups (back_to);
c906108c
SS
8186}
8187
95554aad
TT
8188/* Process an imported unit DIE. */
8189
8190static void
8191process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
8192{
8193 struct attribute *attr;
8194
f4dc4d17
DE
8195 /* For now we don't handle imported units in type units. */
8196 if (cu->per_cu->is_debug_types)
8197 {
8198 error (_("Dwarf Error: DW_TAG_imported_unit is not"
8199 " supported in type units [in module %s]"),
4262abfb 8200 objfile_name (cu->objfile));
f4dc4d17
DE
8201 }
8202
95554aad
TT
8203 attr = dwarf2_attr (die, DW_AT_import, cu);
8204 if (attr != NULL)
8205 {
8206 struct dwarf2_per_cu_data *per_cu;
8207 struct symtab *imported_symtab;
8208 sect_offset offset;
36586728 8209 int is_dwz;
95554aad
TT
8210
8211 offset = dwarf2_get_ref_die_offset (attr);
36586728
TT
8212 is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
8213 per_cu = dwarf2_find_containing_comp_unit (offset, is_dwz, cu->objfile);
95554aad 8214
69d751e3 8215 /* If necessary, add it to the queue and load its DIEs. */
95554aad
TT
8216 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
8217 load_full_comp_unit (per_cu, cu->language);
8218
796a7ff8 8219 VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
95554aad
TT
8220 per_cu);
8221 }
8222}
8223
adde2bff
DE
8224/* Reset the in_process bit of a die. */
8225
8226static void
8227reset_die_in_process (void *arg)
8228{
8229 struct die_info *die = arg;
8c3cb9fa 8230
adde2bff
DE
8231 die->in_process = 0;
8232}
8233
c906108c
SS
8234/* Process a die and its children. */
8235
8236static void
e7c27a73 8237process_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 8238{
adde2bff
DE
8239 struct cleanup *in_process;
8240
8241 /* We should only be processing those not already in process. */
8242 gdb_assert (!die->in_process);
8243
8244 die->in_process = 1;
8245 in_process = make_cleanup (reset_die_in_process,die);
8246
c906108c
SS
8247 switch (die->tag)
8248 {
8249 case DW_TAG_padding:
8250 break;
8251 case DW_TAG_compile_unit:
95554aad 8252 case DW_TAG_partial_unit:
e7c27a73 8253 read_file_scope (die, cu);
c906108c 8254 break;
348e048f
DE
8255 case DW_TAG_type_unit:
8256 read_type_unit_scope (die, cu);
8257 break;
c906108c 8258 case DW_TAG_subprogram:
c906108c 8259 case DW_TAG_inlined_subroutine:
edb3359d 8260 read_func_scope (die, cu);
c906108c
SS
8261 break;
8262 case DW_TAG_lexical_block:
14898363
L
8263 case DW_TAG_try_block:
8264 case DW_TAG_catch_block:
e7c27a73 8265 read_lexical_block_scope (die, cu);
c906108c 8266 break;
96408a79
SA
8267 case DW_TAG_GNU_call_site:
8268 read_call_site_scope (die, cu);
8269 break;
c906108c 8270 case DW_TAG_class_type:
680b30c7 8271 case DW_TAG_interface_type:
c906108c
SS
8272 case DW_TAG_structure_type:
8273 case DW_TAG_union_type:
134d01f1 8274 process_structure_scope (die, cu);
c906108c
SS
8275 break;
8276 case DW_TAG_enumeration_type:
134d01f1 8277 process_enumeration_scope (die, cu);
c906108c 8278 break;
134d01f1 8279
f792889a
DJ
8280 /* These dies have a type, but processing them does not create
8281 a symbol or recurse to process the children. Therefore we can
8282 read them on-demand through read_type_die. */
c906108c 8283 case DW_TAG_subroutine_type:
72019c9c 8284 case DW_TAG_set_type:
c906108c 8285 case DW_TAG_array_type:
c906108c 8286 case DW_TAG_pointer_type:
c906108c 8287 case DW_TAG_ptr_to_member_type:
c906108c 8288 case DW_TAG_reference_type:
c906108c 8289 case DW_TAG_string_type:
c906108c 8290 break;
134d01f1 8291
c906108c 8292 case DW_TAG_base_type:
a02abb62 8293 case DW_TAG_subrange_type:
cb249c71 8294 case DW_TAG_typedef:
134d01f1
DJ
8295 /* Add a typedef symbol for the type definition, if it has a
8296 DW_AT_name. */
f792889a 8297 new_symbol (die, read_type_die (die, cu), cu);
a02abb62 8298 break;
c906108c 8299 case DW_TAG_common_block:
e7c27a73 8300 read_common_block (die, cu);
c906108c
SS
8301 break;
8302 case DW_TAG_common_inclusion:
8303 break;
d9fa45fe 8304 case DW_TAG_namespace:
4d4ec4e5 8305 cu->processing_has_namespace_info = 1;
e7c27a73 8306 read_namespace (die, cu);
d9fa45fe 8307 break;
5d7cb8df 8308 case DW_TAG_module:
4d4ec4e5 8309 cu->processing_has_namespace_info = 1;
5d7cb8df
JK
8310 read_module (die, cu);
8311 break;
d9fa45fe 8312 case DW_TAG_imported_declaration:
74921315
KS
8313 cu->processing_has_namespace_info = 1;
8314 if (read_namespace_alias (die, cu))
8315 break;
8316 /* The declaration is not a global namespace alias: fall through. */
d9fa45fe 8317 case DW_TAG_imported_module:
4d4ec4e5 8318 cu->processing_has_namespace_info = 1;
27aa8d6a
SW
8319 if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
8320 || cu->language != language_fortran))
8321 complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
8322 dwarf_tag_name (die->tag));
8323 read_import_statement (die, cu);
d9fa45fe 8324 break;
95554aad
TT
8325
8326 case DW_TAG_imported_unit:
8327 process_imported_unit_die (die, cu);
8328 break;
8329
c906108c 8330 default:
e7c27a73 8331 new_symbol (die, NULL, cu);
c906108c
SS
8332 break;
8333 }
adde2bff
DE
8334
8335 do_cleanups (in_process);
c906108c 8336}
ca69b9e6
DE
8337\f
8338/* DWARF name computation. */
c906108c 8339
94af9270
KS
8340/* A helper function for dwarf2_compute_name which determines whether DIE
8341 needs to have the name of the scope prepended to the name listed in the
8342 die. */
8343
8344static int
8345die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
8346{
1c809c68
TT
8347 struct attribute *attr;
8348
94af9270
KS
8349 switch (die->tag)
8350 {
8351 case DW_TAG_namespace:
8352 case DW_TAG_typedef:
8353 case DW_TAG_class_type:
8354 case DW_TAG_interface_type:
8355 case DW_TAG_structure_type:
8356 case DW_TAG_union_type:
8357 case DW_TAG_enumeration_type:
8358 case DW_TAG_enumerator:
8359 case DW_TAG_subprogram:
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. */
8444 struct attribute *attr;
8445
8446 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8447 if (attr == NULL)
8448 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8449 if (attr && DW_STRING (attr))
8450 return DW_STRING (attr);
8451 }
8452
94af9270
KS
8453 /* These are the only languages we know how to qualify names in. */
8454 if (name != NULL
f55ee35c
JK
8455 && (cu->language == language_cplus || cu->language == language_java
8456 || cu->language == language_fortran))
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
8703 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8704 if (!attr)
8705 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8706
8707 /* DW_AT_linkage_name is missing in some cases - depend on what GDB
8708 has computed. */
8709 if (attr && DW_STRING (attr))
8710 {
8711 char *demangled;
8712
8713 mangled = DW_STRING (attr);
8714
8715 /* Use DMGL_RET_DROP for C++ template functions to suppress their return
8716 type. It is easier for GDB users to search for such functions as
8717 `name(params)' than `long name(params)'. In such case the minimal
8718 symbol names do not match the full symbol names but for template
8719 functions there is never a need to look up their definition from their
8720 declaration so the only disadvantage remains the minimal symbol
8721 variant `long name(params)' does not have the proper inferior type.
8722 */
8723
a766d390
DE
8724 if (cu->language == language_go)
8725 {
8726 /* This is a lie, but we already lie to the caller new_symbol_full.
8727 new_symbol_full assumes we return the mangled name.
8728 This just undoes that lie until things are cleaned up. */
8729 demangled = NULL;
8730 }
8731 else
8732 {
8de20a37
TT
8733 demangled = gdb_demangle (mangled,
8734 (DMGL_PARAMS | DMGL_ANSI
8735 | (cu->language == language_java
8736 ? DMGL_JAVA | DMGL_RET_POSTFIX
8737 : DMGL_RET_DROP)));
a766d390 8738 }
900e11f9
JK
8739 if (demangled)
8740 {
8741 make_cleanup (xfree, demangled);
8742 canon = demangled;
8743 }
8744 else
8745 {
8746 canon = mangled;
8747 need_copy = 0;
8748 }
8749 }
8750
8751 if (canon == NULL || check_physname)
8752 {
8753 const char *physname = dwarf2_compute_name (name, die, cu, 1);
8754
8755 if (canon != NULL && strcmp (physname, canon) != 0)
8756 {
8757 /* It may not mean a bug in GDB. The compiler could also
8758 compute DW_AT_linkage_name incorrectly. But in such case
8759 GDB would need to be bug-to-bug compatible. */
8760
8761 complaint (&symfile_complaints,
8762 _("Computed physname <%s> does not match demangled <%s> "
8763 "(from linkage <%s>) - DIE at 0x%x [in module %s]"),
4262abfb
JK
8764 physname, canon, mangled, die->offset.sect_off,
8765 objfile_name (objfile));
900e11f9
JK
8766
8767 /* Prefer DW_AT_linkage_name (in the CANON form) - when it
8768 is available here - over computed PHYSNAME. It is safer
8769 against both buggy GDB and buggy compilers. */
8770
8771 retval = canon;
8772 }
8773 else
8774 {
8775 retval = physname;
8776 need_copy = 0;
8777 }
8778 }
8779 else
8780 retval = canon;
8781
8782 if (need_copy)
34a68019
TT
8783 retval = obstack_copy0 (&objfile->per_bfd->storage_obstack,
8784 retval, strlen (retval));
900e11f9
JK
8785
8786 do_cleanups (back_to);
8787 return retval;
0114d602
DJ
8788}
8789
74921315
KS
8790/* Inspect DIE in CU for a namespace alias. If one exists, record
8791 a new symbol for it.
8792
8793 Returns 1 if a namespace alias was recorded, 0 otherwise. */
8794
8795static int
8796read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
8797{
8798 struct attribute *attr;
8799
8800 /* If the die does not have a name, this is not a namespace
8801 alias. */
8802 attr = dwarf2_attr (die, DW_AT_name, cu);
8803 if (attr != NULL)
8804 {
8805 int num;
8806 struct die_info *d = die;
8807 struct dwarf2_cu *imported_cu = cu;
8808
8809 /* If the compiler has nested DW_AT_imported_declaration DIEs,
8810 keep inspecting DIEs until we hit the underlying import. */
8811#define MAX_NESTED_IMPORTED_DECLARATIONS 100
8812 for (num = 0; num < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
8813 {
8814 attr = dwarf2_attr (d, DW_AT_import, cu);
8815 if (attr == NULL)
8816 break;
8817
8818 d = follow_die_ref (d, attr, &imported_cu);
8819 if (d->tag != DW_TAG_imported_declaration)
8820 break;
8821 }
8822
8823 if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
8824 {
8825 complaint (&symfile_complaints,
8826 _("DIE at 0x%x has too many recursively imported "
8827 "declarations"), d->offset.sect_off);
8828 return 0;
8829 }
8830
8831 if (attr != NULL)
8832 {
8833 struct type *type;
8834 sect_offset offset = dwarf2_get_ref_die_offset (attr);
8835
8836 type = get_die_type_at_offset (offset, cu->per_cu);
8837 if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
8838 {
8839 /* This declaration is a global namespace alias. Add
8840 a symbol for it whose type is the aliased namespace. */
8841 new_symbol (die, type, cu);
8842 return 1;
8843 }
8844 }
8845 }
8846
8847 return 0;
8848}
8849
27aa8d6a
SW
8850/* Read the import statement specified by the given die and record it. */
8851
8852static void
8853read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
8854{
bb5ed363 8855 struct objfile *objfile = cu->objfile;
27aa8d6a 8856 struct attribute *import_attr;
32019081 8857 struct die_info *imported_die, *child_die;
de4affc9 8858 struct dwarf2_cu *imported_cu;
27aa8d6a 8859 const char *imported_name;
794684b6 8860 const char *imported_name_prefix;
13387711
SW
8861 const char *canonical_name;
8862 const char *import_alias;
8863 const char *imported_declaration = NULL;
794684b6 8864 const char *import_prefix;
32019081
JK
8865 VEC (const_char_ptr) *excludes = NULL;
8866 struct cleanup *cleanups;
13387711 8867
27aa8d6a
SW
8868 import_attr = dwarf2_attr (die, DW_AT_import, cu);
8869 if (import_attr == NULL)
8870 {
8871 complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8872 dwarf_tag_name (die->tag));
8873 return;
8874 }
8875
de4affc9
CC
8876 imported_cu = cu;
8877 imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
8878 imported_name = dwarf2_name (imported_die, imported_cu);
27aa8d6a
SW
8879 if (imported_name == NULL)
8880 {
8881 /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
8882
8883 The import in the following code:
8884 namespace A
8885 {
8886 typedef int B;
8887 }
8888
8889 int main ()
8890 {
8891 using A::B;
8892 B b;
8893 return b;
8894 }
8895
8896 ...
8897 <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
8898 <52> DW_AT_decl_file : 1
8899 <53> DW_AT_decl_line : 6
8900 <54> DW_AT_import : <0x75>
8901 <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
8902 <59> DW_AT_name : B
8903 <5b> DW_AT_decl_file : 1
8904 <5c> DW_AT_decl_line : 2
8905 <5d> DW_AT_type : <0x6e>
8906 ...
8907 <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
8908 <76> DW_AT_byte_size : 4
8909 <77> DW_AT_encoding : 5 (signed)
8910
8911 imports the wrong die ( 0x75 instead of 0x58 ).
8912 This case will be ignored until the gcc bug is fixed. */
8913 return;
8914 }
8915
82856980
SW
8916 /* Figure out the local name after import. */
8917 import_alias = dwarf2_name (die, cu);
27aa8d6a 8918
794684b6
SW
8919 /* Figure out where the statement is being imported to. */
8920 import_prefix = determine_prefix (die, cu);
8921
8922 /* Figure out what the scope of the imported die is and prepend it
8923 to the name of the imported die. */
de4affc9 8924 imported_name_prefix = determine_prefix (imported_die, imported_cu);
794684b6 8925
f55ee35c
JK
8926 if (imported_die->tag != DW_TAG_namespace
8927 && imported_die->tag != DW_TAG_module)
794684b6 8928 {
13387711
SW
8929 imported_declaration = imported_name;
8930 canonical_name = imported_name_prefix;
794684b6 8931 }
13387711 8932 else if (strlen (imported_name_prefix) > 0)
12aaed36
TT
8933 canonical_name = obconcat (&objfile->objfile_obstack,
8934 imported_name_prefix, "::", imported_name,
8935 (char *) NULL);
13387711
SW
8936 else
8937 canonical_name = imported_name;
794684b6 8938
32019081
JK
8939 cleanups = make_cleanup (VEC_cleanup (const_char_ptr), &excludes);
8940
8941 if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
8942 for (child_die = die->child; child_die && child_die->tag;
8943 child_die = sibling_die (child_die))
8944 {
8945 /* DWARF-4: A Fortran use statement with a “rename list” may be
8946 represented by an imported module entry with an import attribute
8947 referring to the module and owned entries corresponding to those
8948 entities that are renamed as part of being imported. */
8949
8950 if (child_die->tag != DW_TAG_imported_declaration)
8951 {
8952 complaint (&symfile_complaints,
8953 _("child DW_TAG_imported_declaration expected "
8954 "- DIE at 0x%x [in module %s]"),
4262abfb 8955 child_die->offset.sect_off, objfile_name (objfile));
32019081
JK
8956 continue;
8957 }
8958
8959 import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
8960 if (import_attr == NULL)
8961 {
8962 complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8963 dwarf_tag_name (child_die->tag));
8964 continue;
8965 }
8966
8967 imported_cu = cu;
8968 imported_die = follow_die_ref_or_sig (child_die, import_attr,
8969 &imported_cu);
8970 imported_name = dwarf2_name (imported_die, imported_cu);
8971 if (imported_name == NULL)
8972 {
8973 complaint (&symfile_complaints,
8974 _("child DW_TAG_imported_declaration has unknown "
8975 "imported name - DIE at 0x%x [in module %s]"),
4262abfb 8976 child_die->offset.sect_off, objfile_name (objfile));
32019081
JK
8977 continue;
8978 }
8979
8980 VEC_safe_push (const_char_ptr, excludes, imported_name);
8981
8982 process_die (child_die, cu);
8983 }
8984
c0cc3a76
SW
8985 cp_add_using_directive (import_prefix,
8986 canonical_name,
8987 import_alias,
13387711 8988 imported_declaration,
32019081 8989 excludes,
12aaed36 8990 0,
bb5ed363 8991 &objfile->objfile_obstack);
32019081
JK
8992
8993 do_cleanups (cleanups);
27aa8d6a
SW
8994}
8995
f4dc4d17 8996/* Cleanup function for handle_DW_AT_stmt_list. */
ae2de4f8 8997
cb1df416
DJ
8998static void
8999free_cu_line_header (void *arg)
9000{
9001 struct dwarf2_cu *cu = arg;
9002
9003 free_line_header (cu->line_header);
9004 cu->line_header = NULL;
9005}
9006
1b80a9fa
JK
9007/* Check for possibly missing DW_AT_comp_dir with relative .debug_line
9008 directory paths. GCC SVN r127613 (new option -fdebug-prefix-map) fixed
9009 this, it was first present in GCC release 4.3.0. */
9010
9011static int
9012producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
9013{
9014 if (!cu->checked_producer)
9015 check_producer (cu);
9016
9017 return cu->producer_is_gcc_lt_4_3;
9018}
9019
9291a0cd
TT
9020static void
9021find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu,
15d034d0 9022 const char **name, const char **comp_dir)
9291a0cd
TT
9023{
9024 struct attribute *attr;
9025
9026 *name = NULL;
9027 *comp_dir = NULL;
9028
9029 /* Find the filename. Do not use dwarf2_name here, since the filename
9030 is not a source language identifier. */
9031 attr = dwarf2_attr (die, DW_AT_name, cu);
9032 if (attr)
9033 {
9034 *name = DW_STRING (attr);
9035 }
9036
9037 attr = dwarf2_attr (die, DW_AT_comp_dir, cu);
9038 if (attr)
9039 *comp_dir = DW_STRING (attr);
1b80a9fa
JK
9040 else if (producer_is_gcc_lt_4_3 (cu) && *name != NULL
9041 && IS_ABSOLUTE_PATH (*name))
9291a0cd 9042 {
15d034d0
TT
9043 char *d = ldirname (*name);
9044
9045 *comp_dir = d;
9046 if (d != NULL)
9047 make_cleanup (xfree, d);
9291a0cd
TT
9048 }
9049 if (*comp_dir != NULL)
9050 {
9051 /* Irix 6.2 native cc prepends <machine>.: to the compilation
9052 directory, get rid of it. */
9053 char *cp = strchr (*comp_dir, ':');
9054
9055 if (cp && cp != *comp_dir && cp[-1] == '.' && cp[1] == '/')
9056 *comp_dir = cp + 1;
9057 }
9058
9059 if (*name == NULL)
9060 *name = "<unknown>";
9061}
9062
f4dc4d17
DE
9063/* Handle DW_AT_stmt_list for a compilation unit.
9064 DIE is the DW_TAG_compile_unit die for CU.
c3b7b696
YQ
9065 COMP_DIR is the compilation directory. LOWPC is passed to
9066 dwarf_decode_lines. See dwarf_decode_lines comments about it. */
2ab95328
TT
9067
9068static void
9069handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
c3b7b696 9070 const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
2ab95328 9071{
527f3840 9072 struct objfile *objfile = dwarf2_per_objfile->objfile;
2ab95328 9073 struct attribute *attr;
527f3840
JK
9074 unsigned int line_offset;
9075 struct line_header line_header_local;
9076 hashval_t line_header_local_hash;
9077 unsigned u;
9078 void **slot;
9079 int decode_mapping;
2ab95328 9080
f4dc4d17
DE
9081 gdb_assert (! cu->per_cu->is_debug_types);
9082
2ab95328 9083 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
527f3840
JK
9084 if (attr == NULL)
9085 return;
9086
9087 line_offset = DW_UNSND (attr);
9088
9089 /* The line header hash table is only created if needed (it exists to
9090 prevent redundant reading of the line table for partial_units).
9091 If we're given a partial_unit, we'll need it. If we're given a
9092 compile_unit, then use the line header hash table if it's already
9093 created, but don't create one just yet. */
9094
9095 if (dwarf2_per_objfile->line_header_hash == NULL
9096 && die->tag == DW_TAG_partial_unit)
2ab95328 9097 {
527f3840
JK
9098 dwarf2_per_objfile->line_header_hash
9099 = htab_create_alloc_ex (127, line_header_hash_voidp,
9100 line_header_eq_voidp,
9101 free_line_header_voidp,
9102 &objfile->objfile_obstack,
9103 hashtab_obstack_allocate,
9104 dummy_obstack_deallocate);
9105 }
2ab95328 9106
527f3840
JK
9107 line_header_local.offset.sect_off = line_offset;
9108 line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
9109 line_header_local_hash = line_header_hash (&line_header_local);
9110 if (dwarf2_per_objfile->line_header_hash != NULL)
9111 {
9112 slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
9113 &line_header_local,
9114 line_header_local_hash, NO_INSERT);
9115
9116 /* For DW_TAG_compile_unit we need info like symtab::linetable which
9117 is not present in *SLOT (since if there is something in *SLOT then
9118 it will be for a partial_unit). */
9119 if (die->tag == DW_TAG_partial_unit && slot != NULL)
dee91e82 9120 {
527f3840
JK
9121 gdb_assert (*slot != NULL);
9122 cu->line_header = *slot;
9123 return;
dee91e82 9124 }
2ab95328 9125 }
527f3840
JK
9126
9127 /* dwarf_decode_line_header does not yet provide sufficient information.
9128 We always have to call also dwarf_decode_lines for it. */
9129 cu->line_header = dwarf_decode_line_header (line_offset, cu);
9130 if (cu->line_header == NULL)
9131 return;
9132
9133 if (dwarf2_per_objfile->line_header_hash == NULL)
9134 slot = NULL;
9135 else
9136 {
9137 slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
9138 &line_header_local,
9139 line_header_local_hash, INSERT);
9140 gdb_assert (slot != NULL);
9141 }
9142 if (slot != NULL && *slot == NULL)
9143 {
9144 /* This newly decoded line number information unit will be owned
9145 by line_header_hash hash table. */
9146 *slot = cu->line_header;
9147 }
9148 else
9149 {
9150 /* We cannot free any current entry in (*slot) as that struct line_header
9151 may be already used by multiple CUs. Create only temporary decoded
9152 line_header for this CU - it may happen at most once for each line
9153 number information unit. And if we're not using line_header_hash
9154 then this is what we want as well. */
9155 gdb_assert (die->tag != DW_TAG_partial_unit);
9156 make_cleanup (free_cu_line_header, cu);
9157 }
9158 decode_mapping = (die->tag != DW_TAG_partial_unit);
9159 dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
9160 decode_mapping);
2ab95328
TT
9161}
9162
95554aad 9163/* Process DW_TAG_compile_unit or DW_TAG_partial_unit. */
ae2de4f8 9164
c906108c 9165static void
e7c27a73 9166read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 9167{
dee91e82 9168 struct objfile *objfile = dwarf2_per_objfile->objfile;
3e29f34a 9169 struct gdbarch *gdbarch = get_objfile_arch (objfile);
debd256d 9170 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2acceee2 9171 CORE_ADDR lowpc = ((CORE_ADDR) -1);
c906108c
SS
9172 CORE_ADDR highpc = ((CORE_ADDR) 0);
9173 struct attribute *attr;
15d034d0
TT
9174 const char *name = NULL;
9175 const char *comp_dir = NULL;
c906108c
SS
9176 struct die_info *child_die;
9177 bfd *abfd = objfile->obfd;
e142c38c 9178 CORE_ADDR baseaddr;
6e70227d 9179
e142c38c 9180 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 9181
fae299cd 9182 get_scope_pc_bounds (die, &lowpc, &highpc, cu);
c906108c
SS
9183
9184 /* If we didn't find a lowpc, set it to highpc to avoid complaints
9185 from finish_block. */
2acceee2 9186 if (lowpc == ((CORE_ADDR) -1))
c906108c 9187 lowpc = highpc;
3e29f34a 9188 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
c906108c 9189
9291a0cd 9190 find_file_and_directory (die, cu, &name, &comp_dir);
e1024ff1 9191
95554aad 9192 prepare_one_comp_unit (cu, die, cu->language);
303b6f5d 9193
f4b8a18d
KW
9194 /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
9195 standardised yet. As a workaround for the language detection we fall
9196 back to the DW_AT_producer string. */
9197 if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
9198 cu->language = language_opencl;
9199
3019eac3
DE
9200 /* Similar hack for Go. */
9201 if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
9202 set_cu_language (DW_LANG_Go, cu);
9203
f4dc4d17 9204 dwarf2_start_symtab (cu, name, comp_dir, lowpc);
3019eac3
DE
9205
9206 /* Decode line number information if present. We do this before
9207 processing child DIEs, so that the line header table is available
9208 for DW_AT_decl_file. */
c3b7b696 9209 handle_DW_AT_stmt_list (die, cu, comp_dir, lowpc);
3019eac3
DE
9210
9211 /* Process all dies in compilation unit. */
9212 if (die->child != NULL)
9213 {
9214 child_die = die->child;
9215 while (child_die && child_die->tag)
9216 {
9217 process_die (child_die, cu);
9218 child_die = sibling_die (child_die);
9219 }
9220 }
9221
9222 /* Decode macro information, if present. Dwarf 2 macro information
9223 refers to information in the line number info statement program
9224 header, so we can only read it if we've read the header
9225 successfully. */
9226 attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
9227 if (attr && cu->line_header)
9228 {
9229 if (dwarf2_attr (die, DW_AT_macro_info, cu))
9230 complaint (&symfile_complaints,
9231 _("CU refers to both DW_AT_GNU_macros and DW_AT_macro_info"));
9232
43f3e411 9233 dwarf_decode_macros (cu, DW_UNSND (attr), 1);
3019eac3
DE
9234 }
9235 else
9236 {
9237 attr = dwarf2_attr (die, DW_AT_macro_info, cu);
9238 if (attr && cu->line_header)
9239 {
9240 unsigned int macro_offset = DW_UNSND (attr);
9241
43f3e411 9242 dwarf_decode_macros (cu, macro_offset, 0);
3019eac3
DE
9243 }
9244 }
9245
9246 do_cleanups (back_to);
9247}
9248
f4dc4d17
DE
9249/* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
9250 Create the set of symtabs used by this TU, or if this TU is sharing
9251 symtabs with another TU and the symtabs have already been created
9252 then restore those symtabs in the line header.
9253 We don't need the pc/line-number mapping for type units. */
3019eac3
DE
9254
9255static void
f4dc4d17 9256setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
3019eac3 9257{
f4dc4d17
DE
9258 struct objfile *objfile = dwarf2_per_objfile->objfile;
9259 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
9260 struct type_unit_group *tu_group;
9261 int first_time;
9262 struct line_header *lh;
3019eac3 9263 struct attribute *attr;
f4dc4d17 9264 unsigned int i, line_offset;
0186c6a7 9265 struct signatured_type *sig_type;
3019eac3 9266
f4dc4d17 9267 gdb_assert (per_cu->is_debug_types);
0186c6a7 9268 sig_type = (struct signatured_type *) per_cu;
3019eac3 9269
f4dc4d17 9270 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
3019eac3 9271
f4dc4d17 9272 /* If we're using .gdb_index (includes -readnow) then
74e04d1c 9273 per_cu->type_unit_group may not have been set up yet. */
0186c6a7
DE
9274 if (sig_type->type_unit_group == NULL)
9275 sig_type->type_unit_group = get_type_unit_group (cu, attr);
9276 tu_group = sig_type->type_unit_group;
f4dc4d17
DE
9277
9278 /* If we've already processed this stmt_list there's no real need to
9279 do it again, we could fake it and just recreate the part we need
9280 (file name,index -> symtab mapping). If data shows this optimization
9281 is useful we can do it then. */
43f3e411 9282 first_time = tu_group->compunit_symtab == NULL;
f4dc4d17
DE
9283
9284 /* We have to handle the case of both a missing DW_AT_stmt_list or bad
9285 debug info. */
9286 lh = NULL;
9287 if (attr != NULL)
3019eac3 9288 {
f4dc4d17
DE
9289 line_offset = DW_UNSND (attr);
9290 lh = dwarf_decode_line_header (line_offset, cu);
9291 }
9292 if (lh == NULL)
9293 {
9294 if (first_time)
9295 dwarf2_start_symtab (cu, "", NULL, 0);
9296 else
9297 {
9298 gdb_assert (tu_group->symtabs == NULL);
0ab9ce85 9299 restart_symtab (tu_group->compunit_symtab, "", 0);
f4dc4d17 9300 }
f4dc4d17 9301 return;
3019eac3
DE
9302 }
9303
f4dc4d17
DE
9304 cu->line_header = lh;
9305 make_cleanup (free_cu_line_header, cu);
3019eac3 9306
f4dc4d17
DE
9307 if (first_time)
9308 {
43f3e411 9309 struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
3019eac3 9310
f4dc4d17
DE
9311 tu_group->num_symtabs = lh->num_file_names;
9312 tu_group->symtabs = XNEWVEC (struct symtab *, lh->num_file_names);
3019eac3 9313
f4dc4d17
DE
9314 for (i = 0; i < lh->num_file_names; ++i)
9315 {
d521ce57 9316 const char *dir = NULL;
f4dc4d17 9317 struct file_entry *fe = &lh->file_names[i];
3019eac3 9318
f4dc4d17
DE
9319 if (fe->dir_index)
9320 dir = lh->include_dirs[fe->dir_index - 1];
4d663531 9321 dwarf2_start_subfile (fe->name, dir);
3019eac3 9322
f4dc4d17
DE
9323 if (current_subfile->symtab == NULL)
9324 {
9325 /* NOTE: start_subfile will recognize when it's been passed
9326 a file it has already seen. So we can't assume there's a
43f3e411 9327 simple mapping from lh->file_names to subfiles, plus
f4dc4d17 9328 lh->file_names may contain dups. */
43f3e411
DE
9329 current_subfile->symtab
9330 = allocate_symtab (cust, current_subfile->name);
f4dc4d17
DE
9331 }
9332
9333 fe->symtab = current_subfile->symtab;
9334 tu_group->symtabs[i] = fe->symtab;
9335 }
9336 }
9337 else
3019eac3 9338 {
0ab9ce85 9339 restart_symtab (tu_group->compunit_symtab, "", 0);
f4dc4d17
DE
9340
9341 for (i = 0; i < lh->num_file_names; ++i)
9342 {
9343 struct file_entry *fe = &lh->file_names[i];
9344
9345 fe->symtab = tu_group->symtabs[i];
9346 }
3019eac3
DE
9347 }
9348
f4dc4d17
DE
9349 /* The main symtab is allocated last. Type units don't have DW_AT_name
9350 so they don't have a "real" (so to speak) symtab anyway.
9351 There is later code that will assign the main symtab to all symbols
9352 that don't have one. We need to handle the case of a symbol with a
9353 missing symtab (DW_AT_decl_file) anyway. */
9354}
3019eac3 9355
f4dc4d17
DE
9356/* Process DW_TAG_type_unit.
9357 For TUs we want to skip the first top level sibling if it's not the
9358 actual type being defined by this TU. In this case the first top
9359 level sibling is there to provide context only. */
3019eac3 9360
f4dc4d17
DE
9361static void
9362read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
9363{
9364 struct die_info *child_die;
3019eac3 9365
f4dc4d17
DE
9366 prepare_one_comp_unit (cu, die, language_minimal);
9367
9368 /* Initialize (or reinitialize) the machinery for building symtabs.
9369 We do this before processing child DIEs, so that the line header table
9370 is available for DW_AT_decl_file. */
9371 setup_type_unit_groups (die, cu);
9372
9373 if (die->child != NULL)
9374 {
9375 child_die = die->child;
9376 while (child_die && child_die->tag)
9377 {
9378 process_die (child_die, cu);
9379 child_die = sibling_die (child_die);
9380 }
9381 }
3019eac3
DE
9382}
9383\f
80626a55
DE
9384/* DWO/DWP files.
9385
9386 http://gcc.gnu.org/wiki/DebugFission
9387 http://gcc.gnu.org/wiki/DebugFissionDWP
9388
9389 To simplify handling of both DWO files ("object" files with the DWARF info)
9390 and DWP files (a file with the DWOs packaged up into one file), we treat
9391 DWP files as having a collection of virtual DWO files. */
3019eac3
DE
9392
9393static hashval_t
9394hash_dwo_file (const void *item)
9395{
9396 const struct dwo_file *dwo_file = item;
a2ce51a0 9397 hashval_t hash;
3019eac3 9398
a2ce51a0
DE
9399 hash = htab_hash_string (dwo_file->dwo_name);
9400 if (dwo_file->comp_dir != NULL)
9401 hash += htab_hash_string (dwo_file->comp_dir);
9402 return hash;
3019eac3
DE
9403}
9404
9405static int
9406eq_dwo_file (const void *item_lhs, const void *item_rhs)
9407{
9408 const struct dwo_file *lhs = item_lhs;
9409 const struct dwo_file *rhs = item_rhs;
9410
a2ce51a0
DE
9411 if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
9412 return 0;
9413 if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
9414 return lhs->comp_dir == rhs->comp_dir;
9415 return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
3019eac3
DE
9416}
9417
9418/* Allocate a hash table for DWO files. */
9419
9420static htab_t
9421allocate_dwo_file_hash_table (void)
9422{
9423 struct objfile *objfile = dwarf2_per_objfile->objfile;
9424
9425 return htab_create_alloc_ex (41,
9426 hash_dwo_file,
9427 eq_dwo_file,
9428 NULL,
9429 &objfile->objfile_obstack,
9430 hashtab_obstack_allocate,
9431 dummy_obstack_deallocate);
9432}
9433
80626a55
DE
9434/* Lookup DWO file DWO_NAME. */
9435
9436static void **
0ac5b59e 9437lookup_dwo_file_slot (const char *dwo_name, const char *comp_dir)
80626a55
DE
9438{
9439 struct dwo_file find_entry;
9440 void **slot;
9441
9442 if (dwarf2_per_objfile->dwo_files == NULL)
9443 dwarf2_per_objfile->dwo_files = allocate_dwo_file_hash_table ();
9444
9445 memset (&find_entry, 0, sizeof (find_entry));
0ac5b59e
DE
9446 find_entry.dwo_name = dwo_name;
9447 find_entry.comp_dir = comp_dir;
80626a55
DE
9448 slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
9449
9450 return slot;
9451}
9452
3019eac3
DE
9453static hashval_t
9454hash_dwo_unit (const void *item)
9455{
9456 const struct dwo_unit *dwo_unit = item;
9457
9458 /* This drops the top 32 bits of the id, but is ok for a hash. */
9459 return dwo_unit->signature;
9460}
9461
9462static int
9463eq_dwo_unit (const void *item_lhs, const void *item_rhs)
9464{
9465 const struct dwo_unit *lhs = item_lhs;
9466 const struct dwo_unit *rhs = item_rhs;
9467
9468 /* The signature is assumed to be unique within the DWO file.
9469 So while object file CU dwo_id's always have the value zero,
9470 that's OK, assuming each object file DWO file has only one CU,
9471 and that's the rule for now. */
9472 return lhs->signature == rhs->signature;
9473}
9474
9475/* Allocate a hash table for DWO CUs,TUs.
9476 There is one of these tables for each of CUs,TUs for each DWO file. */
9477
9478static htab_t
9479allocate_dwo_unit_table (struct objfile *objfile)
9480{
9481 /* Start out with a pretty small number.
9482 Generally DWO files contain only one CU and maybe some TUs. */
9483 return htab_create_alloc_ex (3,
9484 hash_dwo_unit,
9485 eq_dwo_unit,
9486 NULL,
9487 &objfile->objfile_obstack,
9488 hashtab_obstack_allocate,
9489 dummy_obstack_deallocate);
9490}
9491
80626a55 9492/* Structure used to pass data to create_dwo_debug_info_hash_table_reader. */
3019eac3 9493
19c3d4c9 9494struct create_dwo_cu_data
3019eac3
DE
9495{
9496 struct dwo_file *dwo_file;
19c3d4c9 9497 struct dwo_unit dwo_unit;
3019eac3
DE
9498};
9499
19c3d4c9 9500/* die_reader_func for create_dwo_cu. */
3019eac3
DE
9501
9502static void
19c3d4c9
DE
9503create_dwo_cu_reader (const struct die_reader_specs *reader,
9504 const gdb_byte *info_ptr,
9505 struct die_info *comp_unit_die,
9506 int has_children,
9507 void *datap)
3019eac3
DE
9508{
9509 struct dwarf2_cu *cu = reader->cu;
9510 struct objfile *objfile = dwarf2_per_objfile->objfile;
9511 sect_offset offset = cu->per_cu->offset;
8a0459fd 9512 struct dwarf2_section_info *section = cu->per_cu->section;
19c3d4c9 9513 struct create_dwo_cu_data *data = datap;
3019eac3 9514 struct dwo_file *dwo_file = data->dwo_file;
19c3d4c9 9515 struct dwo_unit *dwo_unit = &data->dwo_unit;
3019eac3 9516 struct attribute *attr;
3019eac3
DE
9517
9518 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
9519 if (attr == NULL)
9520 {
19c3d4c9
DE
9521 complaint (&symfile_complaints,
9522 _("Dwarf Error: debug entry at offset 0x%x is missing"
9523 " its dwo_id [in module %s]"),
9524 offset.sect_off, dwo_file->dwo_name);
3019eac3
DE
9525 return;
9526 }
9527
3019eac3
DE
9528 dwo_unit->dwo_file = dwo_file;
9529 dwo_unit->signature = DW_UNSND (attr);
8a0459fd 9530 dwo_unit->section = section;
3019eac3
DE
9531 dwo_unit->offset = offset;
9532 dwo_unit->length = cu->per_cu->length;
9533
09406207 9534 if (dwarf2_read_debug)
4031ecc5
DE
9535 fprintf_unfiltered (gdb_stdlog, " offset 0x%x, dwo_id %s\n",
9536 offset.sect_off, hex_string (dwo_unit->signature));
3019eac3
DE
9537}
9538
19c3d4c9
DE
9539/* Create the dwo_unit for the lone CU in DWO_FILE.
9540 Note: This function processes DWO files only, not DWP files. */
3019eac3 9541
19c3d4c9
DE
9542static struct dwo_unit *
9543create_dwo_cu (struct dwo_file *dwo_file)
3019eac3
DE
9544{
9545 struct objfile *objfile = dwarf2_per_objfile->objfile;
9546 struct dwarf2_section_info *section = &dwo_file->sections.info;
9547 bfd *abfd;
9548 htab_t cu_htab;
d521ce57 9549 const gdb_byte *info_ptr, *end_ptr;
19c3d4c9
DE
9550 struct create_dwo_cu_data create_dwo_cu_data;
9551 struct dwo_unit *dwo_unit;
3019eac3
DE
9552
9553 dwarf2_read_section (objfile, section);
9554 info_ptr = section->buffer;
9555
9556 if (info_ptr == NULL)
9557 return NULL;
9558
9559 /* We can't set abfd until now because the section may be empty or
9560 not present, in which case section->asection will be NULL. */
a32a8923 9561 abfd = get_section_bfd_owner (section);
3019eac3 9562
09406207 9563 if (dwarf2_read_debug)
19c3d4c9
DE
9564 {
9565 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
a32a8923
DE
9566 get_section_name (section),
9567 get_section_file_name (section));
19c3d4c9 9568 }
3019eac3 9569
19c3d4c9
DE
9570 create_dwo_cu_data.dwo_file = dwo_file;
9571 dwo_unit = NULL;
3019eac3
DE
9572
9573 end_ptr = info_ptr + section->size;
9574 while (info_ptr < end_ptr)
9575 {
9576 struct dwarf2_per_cu_data per_cu;
9577
19c3d4c9
DE
9578 memset (&create_dwo_cu_data.dwo_unit, 0,
9579 sizeof (create_dwo_cu_data.dwo_unit));
3019eac3
DE
9580 memset (&per_cu, 0, sizeof (per_cu));
9581 per_cu.objfile = objfile;
9582 per_cu.is_debug_types = 0;
9583 per_cu.offset.sect_off = info_ptr - section->buffer;
8a0459fd 9584 per_cu.section = section;
3019eac3 9585
33e80786 9586 init_cutu_and_read_dies_no_follow (&per_cu, dwo_file,
19c3d4c9
DE
9587 create_dwo_cu_reader,
9588 &create_dwo_cu_data);
9589
9590 if (create_dwo_cu_data.dwo_unit.dwo_file != NULL)
9591 {
9592 /* If we've already found one, complain. We only support one
9593 because having more than one requires hacking the dwo_name of
9594 each to match, which is highly unlikely to happen. */
9595 if (dwo_unit != NULL)
9596 {
9597 complaint (&symfile_complaints,
9598 _("Multiple CUs in DWO file %s [in module %s]"),
4262abfb 9599 dwo_file->dwo_name, objfile_name (objfile));
19c3d4c9
DE
9600 break;
9601 }
9602
9603 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
9604 *dwo_unit = create_dwo_cu_data.dwo_unit;
9605 }
3019eac3
DE
9606
9607 info_ptr += per_cu.length;
9608 }
9609
19c3d4c9 9610 return dwo_unit;
3019eac3
DE
9611}
9612
80626a55
DE
9613/* DWP file .debug_{cu,tu}_index section format:
9614 [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
9615
d2415c6c
DE
9616 DWP Version 1:
9617
80626a55
DE
9618 Both index sections have the same format, and serve to map a 64-bit
9619 signature to a set of section numbers. Each section begins with a header,
9620 followed by a hash table of 64-bit signatures, a parallel table of 32-bit
9621 indexes, and a pool of 32-bit section numbers. The index sections will be
9622 aligned at 8-byte boundaries in the file.
9623
d2415c6c
DE
9624 The index section header consists of:
9625
9626 V, 32 bit version number
9627 -, 32 bits unused
9628 N, 32 bit number of compilation units or type units in the index
9629 M, 32 bit number of slots in the hash table
80626a55 9630
d2415c6c 9631 Numbers are recorded using the byte order of the application binary.
80626a55 9632
d2415c6c
DE
9633 The hash table begins at offset 16 in the section, and consists of an array
9634 of M 64-bit slots. Each slot contains a 64-bit signature (using the byte
9635 order of the application binary). Unused slots in the hash table are 0.
9636 (We rely on the extreme unlikeliness of a signature being exactly 0.)
80626a55 9637
d2415c6c
DE
9638 The parallel table begins immediately after the hash table
9639 (at offset 16 + 8 * M from the beginning of the section), and consists of an
9640 array of 32-bit indexes (using the byte order of the application binary),
9641 corresponding 1-1 with slots in the hash table. Each entry in the parallel
9642 table contains a 32-bit index into the pool of section numbers. For unused
9643 hash table slots, the corresponding entry in the parallel table will be 0.
80626a55 9644
73869dc2
DE
9645 The pool of section numbers begins immediately following the hash table
9646 (at offset 16 + 12 * M from the beginning of the section). The pool of
9647 section numbers consists of an array of 32-bit words (using the byte order
9648 of the application binary). Each item in the array is indexed starting
9649 from 0. The hash table entry provides the index of the first section
9650 number in the set. Additional section numbers in the set follow, and the
9651 set is terminated by a 0 entry (section number 0 is not used in ELF).
9652
9653 In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
9654 section must be the first entry in the set, and the .debug_abbrev.dwo must
9655 be the second entry. Other members of the set may follow in any order.
9656
9657 ---
9658
9659 DWP Version 2:
9660
9661 DWP Version 2 combines all the .debug_info, etc. sections into one,
9662 and the entries in the index tables are now offsets into these sections.
9663 CU offsets begin at 0. TU offsets begin at the size of the .debug_info
9664 section.
9665
9666 Index Section Contents:
9667 Header
9668 Hash Table of Signatures dwp_hash_table.hash_table
9669 Parallel Table of Indices dwp_hash_table.unit_table
9670 Table of Section Offsets dwp_hash_table.v2.{section_ids,offsets}
9671 Table of Section Sizes dwp_hash_table.v2.sizes
9672
9673 The index section header consists of:
9674
9675 V, 32 bit version number
9676 L, 32 bit number of columns in the table of section offsets
9677 N, 32 bit number of compilation units or type units in the index
9678 M, 32 bit number of slots in the hash table
9679
9680 Numbers are recorded using the byte order of the application binary.
9681
9682 The hash table has the same format as version 1.
9683 The parallel table of indices has the same format as version 1,
9684 except that the entries are origin-1 indices into the table of sections
9685 offsets and the table of section sizes.
9686
9687 The table of offsets begins immediately following the parallel table
9688 (at offset 16 + 12 * M from the beginning of the section). The table is
9689 a two-dimensional array of 32-bit words (using the byte order of the
9690 application binary), with L columns and N+1 rows, in row-major order.
9691 Each row in the array is indexed starting from 0. The first row provides
9692 a key to the remaining rows: each column in this row provides an identifier
9693 for a debug section, and the offsets in the same column of subsequent rows
9694 refer to that section. The section identifiers are:
9695
9696 DW_SECT_INFO 1 .debug_info.dwo
9697 DW_SECT_TYPES 2 .debug_types.dwo
9698 DW_SECT_ABBREV 3 .debug_abbrev.dwo
9699 DW_SECT_LINE 4 .debug_line.dwo
9700 DW_SECT_LOC 5 .debug_loc.dwo
9701 DW_SECT_STR_OFFSETS 6 .debug_str_offsets.dwo
9702 DW_SECT_MACINFO 7 .debug_macinfo.dwo
9703 DW_SECT_MACRO 8 .debug_macro.dwo
9704
9705 The offsets provided by the CU and TU index sections are the base offsets
9706 for the contributions made by each CU or TU to the corresponding section
9707 in the package file. Each CU and TU header contains an abbrev_offset
9708 field, used to find the abbreviations table for that CU or TU within the
9709 contribution to the .debug_abbrev.dwo section for that CU or TU, and should
9710 be interpreted as relative to the base offset given in the index section.
9711 Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
9712 should be interpreted as relative to the base offset for .debug_line.dwo,
9713 and offsets into other debug sections obtained from DWARF attributes should
9714 also be interpreted as relative to the corresponding base offset.
9715
9716 The table of sizes begins immediately following the table of offsets.
9717 Like the table of offsets, it is a two-dimensional array of 32-bit words,
9718 with L columns and N rows, in row-major order. Each row in the array is
9719 indexed starting from 1 (row 0 is shared by the two tables).
9720
9721 ---
9722
9723 Hash table lookup is handled the same in version 1 and 2:
9724
9725 We assume that N and M will not exceed 2^32 - 1.
9726 The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
9727
d2415c6c
DE
9728 Given a 64-bit compilation unit signature or a type signature S, an entry
9729 in the hash table is located as follows:
80626a55 9730
d2415c6c
DE
9731 1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
9732 the low-order k bits all set to 1.
80626a55 9733
d2415c6c 9734 2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
80626a55 9735
d2415c6c
DE
9736 3) If the hash table entry at index H matches the signature, use that
9737 entry. If the hash table entry at index H is unused (all zeroes),
9738 terminate the search: the signature is not present in the table.
80626a55 9739
d2415c6c 9740 4) Let H = (H + H') modulo M. Repeat at Step 3.
80626a55 9741
d2415c6c 9742 Because M > N and H' and M are relatively prime, the search is guaranteed
73869dc2 9743 to stop at an unused slot or find the match. */
80626a55
DE
9744
9745/* Create a hash table to map DWO IDs to their CU/TU entry in
9746 .debug_{info,types}.dwo in DWP_FILE.
9747 Returns NULL if there isn't one.
9748 Note: This function processes DWP files only, not DWO files. */
9749
9750static struct dwp_hash_table *
9751create_dwp_hash_table (struct dwp_file *dwp_file, int is_debug_types)
9752{
9753 struct objfile *objfile = dwarf2_per_objfile->objfile;
9754 bfd *dbfd = dwp_file->dbfd;
948f8e3d 9755 const gdb_byte *index_ptr, *index_end;
80626a55 9756 struct dwarf2_section_info *index;
73869dc2 9757 uint32_t version, nr_columns, nr_units, nr_slots;
80626a55
DE
9758 struct dwp_hash_table *htab;
9759
9760 if (is_debug_types)
9761 index = &dwp_file->sections.tu_index;
9762 else
9763 index = &dwp_file->sections.cu_index;
9764
9765 if (dwarf2_section_empty_p (index))
9766 return NULL;
9767 dwarf2_read_section (objfile, index);
9768
9769 index_ptr = index->buffer;
9770 index_end = index_ptr + index->size;
9771
9772 version = read_4_bytes (dbfd, index_ptr);
73869dc2
DE
9773 index_ptr += 4;
9774 if (version == 2)
9775 nr_columns = read_4_bytes (dbfd, index_ptr);
9776 else
9777 nr_columns = 0;
9778 index_ptr += 4;
80626a55
DE
9779 nr_units = read_4_bytes (dbfd, index_ptr);
9780 index_ptr += 4;
9781 nr_slots = read_4_bytes (dbfd, index_ptr);
9782 index_ptr += 4;
9783
73869dc2 9784 if (version != 1 && version != 2)
80626a55 9785 {
21aa081e 9786 error (_("Dwarf Error: unsupported DWP file version (%s)"
80626a55 9787 " [in module %s]"),
21aa081e 9788 pulongest (version), dwp_file->name);
80626a55
DE
9789 }
9790 if (nr_slots != (nr_slots & -nr_slots))
9791 {
21aa081e 9792 error (_("Dwarf Error: number of slots in DWP hash table (%s)"
80626a55 9793 " is not power of 2 [in module %s]"),
21aa081e 9794 pulongest (nr_slots), dwp_file->name);
80626a55
DE
9795 }
9796
9797 htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
73869dc2
DE
9798 htab->version = version;
9799 htab->nr_columns = nr_columns;
80626a55
DE
9800 htab->nr_units = nr_units;
9801 htab->nr_slots = nr_slots;
9802 htab->hash_table = index_ptr;
9803 htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
73869dc2
DE
9804
9805 /* Exit early if the table is empty. */
9806 if (nr_slots == 0 || nr_units == 0
9807 || (version == 2 && nr_columns == 0))
9808 {
9809 /* All must be zero. */
9810 if (nr_slots != 0 || nr_units != 0
9811 || (version == 2 && nr_columns != 0))
9812 {
9813 complaint (&symfile_complaints,
9814 _("Empty DWP but nr_slots,nr_units,nr_columns not"
9815 " all zero [in modules %s]"),
9816 dwp_file->name);
9817 }
9818 return htab;
9819 }
9820
9821 if (version == 1)
9822 {
9823 htab->section_pool.v1.indices =
9824 htab->unit_table + sizeof (uint32_t) * nr_slots;
9825 /* It's harder to decide whether the section is too small in v1.
9826 V1 is deprecated anyway so we punt. */
9827 }
9828 else
9829 {
9830 const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
9831 int *ids = htab->section_pool.v2.section_ids;
9832 /* Reverse map for error checking. */
9833 int ids_seen[DW_SECT_MAX + 1];
9834 int i;
9835
9836 if (nr_columns < 2)
9837 {
9838 error (_("Dwarf Error: bad DWP hash table, too few columns"
9839 " in section table [in module %s]"),
9840 dwp_file->name);
9841 }
9842 if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
9843 {
9844 error (_("Dwarf Error: bad DWP hash table, too many columns"
9845 " in section table [in module %s]"),
9846 dwp_file->name);
9847 }
9848 memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9849 memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9850 for (i = 0; i < nr_columns; ++i)
9851 {
9852 int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
9853
9854 if (id < DW_SECT_MIN || id > DW_SECT_MAX)
9855 {
9856 error (_("Dwarf Error: bad DWP hash table, bad section id %d"
9857 " in section table [in module %s]"),
9858 id, dwp_file->name);
9859 }
9860 if (ids_seen[id] != -1)
9861 {
9862 error (_("Dwarf Error: bad DWP hash table, duplicate section"
9863 " id %d in section table [in module %s]"),
9864 id, dwp_file->name);
9865 }
9866 ids_seen[id] = i;
9867 ids[i] = id;
9868 }
9869 /* Must have exactly one info or types section. */
9870 if (((ids_seen[DW_SECT_INFO] != -1)
9871 + (ids_seen[DW_SECT_TYPES] != -1))
9872 != 1)
9873 {
9874 error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
9875 " DWO info/types section [in module %s]"),
9876 dwp_file->name);
9877 }
9878 /* Must have an abbrev section. */
9879 if (ids_seen[DW_SECT_ABBREV] == -1)
9880 {
9881 error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
9882 " section [in module %s]"),
9883 dwp_file->name);
9884 }
9885 htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
9886 htab->section_pool.v2.sizes =
9887 htab->section_pool.v2.offsets + (sizeof (uint32_t)
9888 * nr_units * nr_columns);
9889 if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
9890 * nr_units * nr_columns))
9891 > index_end)
9892 {
9893 error (_("Dwarf Error: DWP index section is corrupt (too small)"
9894 " [in module %s]"),
9895 dwp_file->name);
9896 }
9897 }
80626a55
DE
9898
9899 return htab;
9900}
9901
9902/* Update SECTIONS with the data from SECTP.
9903
9904 This function is like the other "locate" section routines that are
9905 passed to bfd_map_over_sections, but in this context the sections to
73869dc2 9906 read comes from the DWP V1 hash table, not the full ELF section table.
80626a55
DE
9907
9908 The result is non-zero for success, or zero if an error was found. */
9909
9910static int
73869dc2
DE
9911locate_v1_virtual_dwo_sections (asection *sectp,
9912 struct virtual_v1_dwo_sections *sections)
80626a55
DE
9913{
9914 const struct dwop_section_names *names = &dwop_section_names;
9915
9916 if (section_is_p (sectp->name, &names->abbrev_dwo))
9917 {
9918 /* There can be only one. */
73869dc2 9919 if (sections->abbrev.s.asection != NULL)
80626a55 9920 return 0;
73869dc2 9921 sections->abbrev.s.asection = sectp;
80626a55
DE
9922 sections->abbrev.size = bfd_get_section_size (sectp);
9923 }
9924 else if (section_is_p (sectp->name, &names->info_dwo)
9925 || section_is_p (sectp->name, &names->types_dwo))
9926 {
9927 /* There can be only one. */
73869dc2 9928 if (sections->info_or_types.s.asection != NULL)
80626a55 9929 return 0;
73869dc2 9930 sections->info_or_types.s.asection = sectp;
80626a55
DE
9931 sections->info_or_types.size = bfd_get_section_size (sectp);
9932 }
9933 else if (section_is_p (sectp->name, &names->line_dwo))
9934 {
9935 /* There can be only one. */
73869dc2 9936 if (sections->line.s.asection != NULL)
80626a55 9937 return 0;
73869dc2 9938 sections->line.s.asection = sectp;
80626a55
DE
9939 sections->line.size = bfd_get_section_size (sectp);
9940 }
9941 else if (section_is_p (sectp->name, &names->loc_dwo))
9942 {
9943 /* There can be only one. */
73869dc2 9944 if (sections->loc.s.asection != NULL)
80626a55 9945 return 0;
73869dc2 9946 sections->loc.s.asection = sectp;
80626a55
DE
9947 sections->loc.size = bfd_get_section_size (sectp);
9948 }
9949 else if (section_is_p (sectp->name, &names->macinfo_dwo))
9950 {
9951 /* There can be only one. */
73869dc2 9952 if (sections->macinfo.s.asection != NULL)
80626a55 9953 return 0;
73869dc2 9954 sections->macinfo.s.asection = sectp;
80626a55
DE
9955 sections->macinfo.size = bfd_get_section_size (sectp);
9956 }
9957 else if (section_is_p (sectp->name, &names->macro_dwo))
9958 {
9959 /* There can be only one. */
73869dc2 9960 if (sections->macro.s.asection != NULL)
80626a55 9961 return 0;
73869dc2 9962 sections->macro.s.asection = sectp;
80626a55
DE
9963 sections->macro.size = bfd_get_section_size (sectp);
9964 }
9965 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
9966 {
9967 /* There can be only one. */
73869dc2 9968 if (sections->str_offsets.s.asection != NULL)
80626a55 9969 return 0;
73869dc2 9970 sections->str_offsets.s.asection = sectp;
80626a55
DE
9971 sections->str_offsets.size = bfd_get_section_size (sectp);
9972 }
9973 else
9974 {
9975 /* No other kind of section is valid. */
9976 return 0;
9977 }
9978
9979 return 1;
9980}
9981
73869dc2
DE
9982/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
9983 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
9984 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
9985 This is for DWP version 1 files. */
80626a55
DE
9986
9987static struct dwo_unit *
73869dc2
DE
9988create_dwo_unit_in_dwp_v1 (struct dwp_file *dwp_file,
9989 uint32_t unit_index,
9990 const char *comp_dir,
9991 ULONGEST signature, int is_debug_types)
80626a55
DE
9992{
9993 struct objfile *objfile = dwarf2_per_objfile->objfile;
73869dc2
DE
9994 const struct dwp_hash_table *dwp_htab =
9995 is_debug_types ? dwp_file->tus : dwp_file->cus;
80626a55
DE
9996 bfd *dbfd = dwp_file->dbfd;
9997 const char *kind = is_debug_types ? "TU" : "CU";
9998 struct dwo_file *dwo_file;
9999 struct dwo_unit *dwo_unit;
73869dc2 10000 struct virtual_v1_dwo_sections sections;
80626a55
DE
10001 void **dwo_file_slot;
10002 char *virtual_dwo_name;
10003 struct dwarf2_section_info *cutu;
10004 struct cleanup *cleanups;
10005 int i;
10006
73869dc2
DE
10007 gdb_assert (dwp_file->version == 1);
10008
80626a55
DE
10009 if (dwarf2_read_debug)
10010 {
73869dc2 10011 fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
80626a55 10012 kind,
73869dc2 10013 pulongest (unit_index), hex_string (signature),
80626a55
DE
10014 dwp_file->name);
10015 }
10016
19ac8c2e 10017 /* Fetch the sections of this DWO unit.
80626a55
DE
10018 Put a limit on the number of sections we look for so that bad data
10019 doesn't cause us to loop forever. */
10020
73869dc2 10021#define MAX_NR_V1_DWO_SECTIONS \
80626a55
DE
10022 (1 /* .debug_info or .debug_types */ \
10023 + 1 /* .debug_abbrev */ \
10024 + 1 /* .debug_line */ \
10025 + 1 /* .debug_loc */ \
10026 + 1 /* .debug_str_offsets */ \
19ac8c2e 10027 + 1 /* .debug_macro or .debug_macinfo */ \
80626a55
DE
10028 + 1 /* trailing zero */)
10029
10030 memset (&sections, 0, sizeof (sections));
10031 cleanups = make_cleanup (null_cleanup, 0);
10032
73869dc2 10033 for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
80626a55
DE
10034 {
10035 asection *sectp;
10036 uint32_t section_nr =
10037 read_4_bytes (dbfd,
73869dc2
DE
10038 dwp_htab->section_pool.v1.indices
10039 + (unit_index + i) * sizeof (uint32_t));
80626a55
DE
10040
10041 if (section_nr == 0)
10042 break;
10043 if (section_nr >= dwp_file->num_sections)
10044 {
10045 error (_("Dwarf Error: bad DWP hash table, section number too large"
10046 " [in module %s]"),
10047 dwp_file->name);
10048 }
10049
10050 sectp = dwp_file->elf_sections[section_nr];
73869dc2 10051 if (! locate_v1_virtual_dwo_sections (sectp, &sections))
80626a55
DE
10052 {
10053 error (_("Dwarf Error: bad DWP hash table, invalid section found"
10054 " [in module %s]"),
10055 dwp_file->name);
10056 }
10057 }
10058
10059 if (i < 2
a32a8923
DE
10060 || dwarf2_section_empty_p (&sections.info_or_types)
10061 || dwarf2_section_empty_p (&sections.abbrev))
80626a55
DE
10062 {
10063 error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
10064 " [in module %s]"),
10065 dwp_file->name);
10066 }
73869dc2 10067 if (i == MAX_NR_V1_DWO_SECTIONS)
80626a55
DE
10068 {
10069 error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
10070 " [in module %s]"),
10071 dwp_file->name);
10072 }
10073
10074 /* It's easier for the rest of the code if we fake a struct dwo_file and
10075 have dwo_unit "live" in that. At least for now.
10076
10077 The DWP file can be made up of a random collection of CUs and TUs.
c766f7ec 10078 However, for each CU + set of TUs that came from the same original DWO
57d63ce2
DE
10079 file, we can combine them back into a virtual DWO file to save space
10080 (fewer struct dwo_file objects to allocate). Remember that for really
80626a55
DE
10081 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
10082
2792b94d
PM
10083 virtual_dwo_name =
10084 xstrprintf ("virtual-dwo/%d-%d-%d-%d",
a32a8923
DE
10085 get_section_id (&sections.abbrev),
10086 get_section_id (&sections.line),
10087 get_section_id (&sections.loc),
10088 get_section_id (&sections.str_offsets));
80626a55
DE
10089 make_cleanup (xfree, virtual_dwo_name);
10090 /* Can we use an existing virtual DWO file? */
0ac5b59e 10091 dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
80626a55
DE
10092 /* Create one if necessary. */
10093 if (*dwo_file_slot == NULL)
10094 {
10095 if (dwarf2_read_debug)
10096 {
10097 fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
10098 virtual_dwo_name);
10099 }
10100 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
0ac5b59e
DE
10101 dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
10102 virtual_dwo_name,
10103 strlen (virtual_dwo_name));
10104 dwo_file->comp_dir = comp_dir;
80626a55
DE
10105 dwo_file->sections.abbrev = sections.abbrev;
10106 dwo_file->sections.line = sections.line;
10107 dwo_file->sections.loc = sections.loc;
10108 dwo_file->sections.macinfo = sections.macinfo;
10109 dwo_file->sections.macro = sections.macro;
10110 dwo_file->sections.str_offsets = sections.str_offsets;
10111 /* The "str" section is global to the entire DWP file. */
10112 dwo_file->sections.str = dwp_file->sections.str;
57d63ce2 10113 /* The info or types section is assigned below to dwo_unit,
80626a55
DE
10114 there's no need to record it in dwo_file.
10115 Also, we can't simply record type sections in dwo_file because
10116 we record a pointer into the vector in dwo_unit. As we collect more
10117 types we'll grow the vector and eventually have to reallocate space
57d63ce2
DE
10118 for it, invalidating all copies of pointers into the previous
10119 contents. */
80626a55
DE
10120 *dwo_file_slot = dwo_file;
10121 }
10122 else
10123 {
10124 if (dwarf2_read_debug)
10125 {
10126 fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10127 virtual_dwo_name);
10128 }
10129 dwo_file = *dwo_file_slot;
10130 }
10131 do_cleanups (cleanups);
10132
10133 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10134 dwo_unit->dwo_file = dwo_file;
10135 dwo_unit->signature = signature;
8a0459fd
DE
10136 dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
10137 sizeof (struct dwarf2_section_info));
10138 *dwo_unit->section = sections.info_or_types;
57d63ce2 10139 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
80626a55
DE
10140
10141 return dwo_unit;
10142}
10143
73869dc2
DE
10144/* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
10145 Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
10146 piece within that section used by a TU/CU, return a virtual section
10147 of just that piece. */
10148
10149static struct dwarf2_section_info
10150create_dwp_v2_section (struct dwarf2_section_info *section,
10151 bfd_size_type offset, bfd_size_type size)
10152{
10153 struct dwarf2_section_info result;
10154 asection *sectp;
10155
10156 gdb_assert (section != NULL);
10157 gdb_assert (!section->is_virtual);
10158
10159 memset (&result, 0, sizeof (result));
10160 result.s.containing_section = section;
10161 result.is_virtual = 1;
10162
10163 if (size == 0)
10164 return result;
10165
10166 sectp = get_section_bfd_section (section);
10167
10168 /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
10169 bounds of the real section. This is a pretty-rare event, so just
10170 flag an error (easier) instead of a warning and trying to cope. */
10171 if (sectp == NULL
10172 || offset + size > bfd_get_section_size (sectp))
10173 {
10174 bfd *abfd = sectp->owner;
10175
10176 error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
10177 " in section %s [in module %s]"),
10178 sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
10179 objfile_name (dwarf2_per_objfile->objfile));
10180 }
10181
10182 result.virtual_offset = offset;
10183 result.size = size;
10184 return result;
10185}
10186
10187/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
10188 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
10189 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
10190 This is for DWP version 2 files. */
10191
10192static struct dwo_unit *
10193create_dwo_unit_in_dwp_v2 (struct dwp_file *dwp_file,
10194 uint32_t unit_index,
10195 const char *comp_dir,
10196 ULONGEST signature, int is_debug_types)
10197{
10198 struct objfile *objfile = dwarf2_per_objfile->objfile;
10199 const struct dwp_hash_table *dwp_htab =
10200 is_debug_types ? dwp_file->tus : dwp_file->cus;
10201 bfd *dbfd = dwp_file->dbfd;
10202 const char *kind = is_debug_types ? "TU" : "CU";
10203 struct dwo_file *dwo_file;
10204 struct dwo_unit *dwo_unit;
10205 struct virtual_v2_dwo_sections sections;
10206 void **dwo_file_slot;
10207 char *virtual_dwo_name;
10208 struct dwarf2_section_info *cutu;
10209 struct cleanup *cleanups;
10210 int i;
10211
10212 gdb_assert (dwp_file->version == 2);
10213
10214 if (dwarf2_read_debug)
10215 {
10216 fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
10217 kind,
10218 pulongest (unit_index), hex_string (signature),
10219 dwp_file->name);
10220 }
10221
10222 /* Fetch the section offsets of this DWO unit. */
10223
10224 memset (&sections, 0, sizeof (sections));
10225 cleanups = make_cleanup (null_cleanup, 0);
10226
10227 for (i = 0; i < dwp_htab->nr_columns; ++i)
10228 {
10229 uint32_t offset = read_4_bytes (dbfd,
10230 dwp_htab->section_pool.v2.offsets
10231 + (((unit_index - 1) * dwp_htab->nr_columns
10232 + i)
10233 * sizeof (uint32_t)));
10234 uint32_t size = read_4_bytes (dbfd,
10235 dwp_htab->section_pool.v2.sizes
10236 + (((unit_index - 1) * dwp_htab->nr_columns
10237 + i)
10238 * sizeof (uint32_t)));
10239
10240 switch (dwp_htab->section_pool.v2.section_ids[i])
10241 {
10242 case DW_SECT_INFO:
10243 case DW_SECT_TYPES:
10244 sections.info_or_types_offset = offset;
10245 sections.info_or_types_size = size;
10246 break;
10247 case DW_SECT_ABBREV:
10248 sections.abbrev_offset = offset;
10249 sections.abbrev_size = size;
10250 break;
10251 case DW_SECT_LINE:
10252 sections.line_offset = offset;
10253 sections.line_size = size;
10254 break;
10255 case DW_SECT_LOC:
10256 sections.loc_offset = offset;
10257 sections.loc_size = size;
10258 break;
10259 case DW_SECT_STR_OFFSETS:
10260 sections.str_offsets_offset = offset;
10261 sections.str_offsets_size = size;
10262 break;
10263 case DW_SECT_MACINFO:
10264 sections.macinfo_offset = offset;
10265 sections.macinfo_size = size;
10266 break;
10267 case DW_SECT_MACRO:
10268 sections.macro_offset = offset;
10269 sections.macro_size = size;
10270 break;
10271 }
10272 }
10273
10274 /* It's easier for the rest of the code if we fake a struct dwo_file and
10275 have dwo_unit "live" in that. At least for now.
10276
10277 The DWP file can be made up of a random collection of CUs and TUs.
10278 However, for each CU + set of TUs that came from the same original DWO
10279 file, we can combine them back into a virtual DWO file to save space
10280 (fewer struct dwo_file objects to allocate). Remember that for really
10281 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
10282
10283 virtual_dwo_name =
10284 xstrprintf ("virtual-dwo/%ld-%ld-%ld-%ld",
10285 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
10286 (long) (sections.line_size ? sections.line_offset : 0),
10287 (long) (sections.loc_size ? sections.loc_offset : 0),
10288 (long) (sections.str_offsets_size
10289 ? sections.str_offsets_offset : 0));
10290 make_cleanup (xfree, virtual_dwo_name);
10291 /* Can we use an existing virtual DWO file? */
10292 dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
10293 /* Create one if necessary. */
10294 if (*dwo_file_slot == NULL)
10295 {
10296 if (dwarf2_read_debug)
10297 {
10298 fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
10299 virtual_dwo_name);
10300 }
10301 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
10302 dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
10303 virtual_dwo_name,
10304 strlen (virtual_dwo_name));
10305 dwo_file->comp_dir = comp_dir;
10306 dwo_file->sections.abbrev =
10307 create_dwp_v2_section (&dwp_file->sections.abbrev,
10308 sections.abbrev_offset, sections.abbrev_size);
10309 dwo_file->sections.line =
10310 create_dwp_v2_section (&dwp_file->sections.line,
10311 sections.line_offset, sections.line_size);
10312 dwo_file->sections.loc =
10313 create_dwp_v2_section (&dwp_file->sections.loc,
10314 sections.loc_offset, sections.loc_size);
10315 dwo_file->sections.macinfo =
10316 create_dwp_v2_section (&dwp_file->sections.macinfo,
10317 sections.macinfo_offset, sections.macinfo_size);
10318 dwo_file->sections.macro =
10319 create_dwp_v2_section (&dwp_file->sections.macro,
10320 sections.macro_offset, sections.macro_size);
10321 dwo_file->sections.str_offsets =
10322 create_dwp_v2_section (&dwp_file->sections.str_offsets,
10323 sections.str_offsets_offset,
10324 sections.str_offsets_size);
10325 /* The "str" section is global to the entire DWP file. */
10326 dwo_file->sections.str = dwp_file->sections.str;
10327 /* The info or types section is assigned below to dwo_unit,
10328 there's no need to record it in dwo_file.
10329 Also, we can't simply record type sections in dwo_file because
10330 we record a pointer into the vector in dwo_unit. As we collect more
10331 types we'll grow the vector and eventually have to reallocate space
10332 for it, invalidating all copies of pointers into the previous
10333 contents. */
10334 *dwo_file_slot = dwo_file;
10335 }
10336 else
10337 {
10338 if (dwarf2_read_debug)
10339 {
10340 fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10341 virtual_dwo_name);
10342 }
10343 dwo_file = *dwo_file_slot;
10344 }
10345 do_cleanups (cleanups);
10346
10347 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10348 dwo_unit->dwo_file = dwo_file;
10349 dwo_unit->signature = signature;
10350 dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
10351 sizeof (struct dwarf2_section_info));
10352 *dwo_unit->section = create_dwp_v2_section (is_debug_types
10353 ? &dwp_file->sections.types
10354 : &dwp_file->sections.info,
10355 sections.info_or_types_offset,
10356 sections.info_or_types_size);
10357 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
10358
10359 return dwo_unit;
10360}
10361
57d63ce2
DE
10362/* Lookup the DWO unit with SIGNATURE in DWP_FILE.
10363 Returns NULL if the signature isn't found. */
80626a55
DE
10364
10365static struct dwo_unit *
57d63ce2
DE
10366lookup_dwo_unit_in_dwp (struct dwp_file *dwp_file, const char *comp_dir,
10367 ULONGEST signature, int is_debug_types)
80626a55 10368{
57d63ce2
DE
10369 const struct dwp_hash_table *dwp_htab =
10370 is_debug_types ? dwp_file->tus : dwp_file->cus;
80626a55 10371 bfd *dbfd = dwp_file->dbfd;
57d63ce2 10372 uint32_t mask = dwp_htab->nr_slots - 1;
80626a55
DE
10373 uint32_t hash = signature & mask;
10374 uint32_t hash2 = ((signature >> 32) & mask) | 1;
10375 unsigned int i;
10376 void **slot;
10377 struct dwo_unit find_dwo_cu, *dwo_cu;
10378
10379 memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
10380 find_dwo_cu.signature = signature;
19ac8c2e
DE
10381 slot = htab_find_slot (is_debug_types
10382 ? dwp_file->loaded_tus
10383 : dwp_file->loaded_cus,
10384 &find_dwo_cu, INSERT);
80626a55
DE
10385
10386 if (*slot != NULL)
10387 return *slot;
10388
10389 /* Use a for loop so that we don't loop forever on bad debug info. */
57d63ce2 10390 for (i = 0; i < dwp_htab->nr_slots; ++i)
80626a55
DE
10391 {
10392 ULONGEST signature_in_table;
10393
10394 signature_in_table =
57d63ce2 10395 read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
80626a55
DE
10396 if (signature_in_table == signature)
10397 {
57d63ce2
DE
10398 uint32_t unit_index =
10399 read_4_bytes (dbfd,
10400 dwp_htab->unit_table + hash * sizeof (uint32_t));
80626a55 10401
73869dc2
DE
10402 if (dwp_file->version == 1)
10403 {
10404 *slot = create_dwo_unit_in_dwp_v1 (dwp_file, unit_index,
10405 comp_dir, signature,
10406 is_debug_types);
10407 }
10408 else
10409 {
10410 *slot = create_dwo_unit_in_dwp_v2 (dwp_file, unit_index,
10411 comp_dir, signature,
10412 is_debug_types);
10413 }
80626a55
DE
10414 return *slot;
10415 }
10416 if (signature_in_table == 0)
10417 return NULL;
10418 hash = (hash + hash2) & mask;
10419 }
10420
10421 error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
10422 " [in module %s]"),
10423 dwp_file->name);
10424}
10425
ab5088bf 10426/* Subroutine of open_dwo_file,open_dwp_file to simplify them.
3019eac3
DE
10427 Open the file specified by FILE_NAME and hand it off to BFD for
10428 preliminary analysis. Return a newly initialized bfd *, which
10429 includes a canonicalized copy of FILE_NAME.
80626a55 10430 If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
6ac97d4c
DE
10431 SEARCH_CWD is true if the current directory is to be searched.
10432 It will be searched before debug-file-directory.
13aaf454
DE
10433 If successful, the file is added to the bfd include table of the
10434 objfile's bfd (see gdb_bfd_record_inclusion).
6ac97d4c 10435 If unable to find/open the file, return NULL.
3019eac3
DE
10436 NOTE: This function is derived from symfile_bfd_open. */
10437
10438static bfd *
6ac97d4c 10439try_open_dwop_file (const char *file_name, int is_dwp, int search_cwd)
3019eac3
DE
10440{
10441 bfd *sym_bfd;
80626a55 10442 int desc, flags;
3019eac3 10443 char *absolute_name;
9c02c129
DE
10444 /* Blech. OPF_TRY_CWD_FIRST also disables searching the path list if
10445 FILE_NAME contains a '/'. So we can't use it. Instead prepend "."
10446 to debug_file_directory. */
10447 char *search_path;
10448 static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
10449
6ac97d4c
DE
10450 if (search_cwd)
10451 {
10452 if (*debug_file_directory != '\0')
10453 search_path = concat (".", dirname_separator_string,
10454 debug_file_directory, NULL);
10455 else
10456 search_path = xstrdup (".");
10457 }
9c02c129 10458 else
6ac97d4c 10459 search_path = xstrdup (debug_file_directory);
3019eac3 10460
492c0ab7 10461 flags = OPF_RETURN_REALPATH;
80626a55
DE
10462 if (is_dwp)
10463 flags |= OPF_SEARCH_IN_PATH;
9c02c129 10464 desc = openp (search_path, flags, file_name,
3019eac3 10465 O_RDONLY | O_BINARY, &absolute_name);
9c02c129 10466 xfree (search_path);
3019eac3
DE
10467 if (desc < 0)
10468 return NULL;
10469
bb397797 10470 sym_bfd = gdb_bfd_open (absolute_name, gnutarget, desc);
a4453b7e 10471 xfree (absolute_name);
9c02c129
DE
10472 if (sym_bfd == NULL)
10473 return NULL;
3019eac3
DE
10474 bfd_set_cacheable (sym_bfd, 1);
10475
10476 if (!bfd_check_format (sym_bfd, bfd_object))
10477 {
cbb099e8 10478 gdb_bfd_unref (sym_bfd); /* This also closes desc. */
3019eac3
DE
10479 return NULL;
10480 }
10481
13aaf454
DE
10482 /* Success. Record the bfd as having been included by the objfile's bfd.
10483 This is important because things like demangled_names_hash lives in the
10484 objfile's per_bfd space and may have references to things like symbol
10485 names that live in the DWO/DWP file's per_bfd space. PR 16426. */
10486 gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd);
10487
3019eac3
DE
10488 return sym_bfd;
10489}
10490
ab5088bf 10491/* Try to open DWO file FILE_NAME.
3019eac3
DE
10492 COMP_DIR is the DW_AT_comp_dir attribute.
10493 The result is the bfd handle of the file.
10494 If there is a problem finding or opening the file, return NULL.
10495 Upon success, the canonicalized path of the file is stored in the bfd,
10496 same as symfile_bfd_open. */
10497
10498static bfd *
ab5088bf 10499open_dwo_file (const char *file_name, const char *comp_dir)
3019eac3
DE
10500{
10501 bfd *abfd;
3019eac3 10502
80626a55 10503 if (IS_ABSOLUTE_PATH (file_name))
6ac97d4c 10504 return try_open_dwop_file (file_name, 0 /*is_dwp*/, 0 /*search_cwd*/);
3019eac3
DE
10505
10506 /* Before trying the search path, try DWO_NAME in COMP_DIR. */
10507
10508 if (comp_dir != NULL)
10509 {
80626a55 10510 char *path_to_try = concat (comp_dir, SLASH_STRING, file_name, NULL);
3019eac3
DE
10511
10512 /* NOTE: If comp_dir is a relative path, this will also try the
10513 search path, which seems useful. */
6ac97d4c 10514 abfd = try_open_dwop_file (path_to_try, 0 /*is_dwp*/, 1 /*search_cwd*/);
3019eac3
DE
10515 xfree (path_to_try);
10516 if (abfd != NULL)
10517 return abfd;
10518 }
10519
10520 /* That didn't work, try debug-file-directory, which, despite its name,
10521 is a list of paths. */
10522
10523 if (*debug_file_directory == '\0')
10524 return NULL;
10525
6ac97d4c 10526 return try_open_dwop_file (file_name, 0 /*is_dwp*/, 1 /*search_cwd*/);
3019eac3
DE
10527}
10528
80626a55
DE
10529/* This function is mapped across the sections and remembers the offset and
10530 size of each of the DWO debugging sections we are interested in. */
10531
10532static void
10533dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
10534{
10535 struct dwo_sections *dwo_sections = dwo_sections_ptr;
10536 const struct dwop_section_names *names = &dwop_section_names;
10537
10538 if (section_is_p (sectp->name, &names->abbrev_dwo))
10539 {
73869dc2 10540 dwo_sections->abbrev.s.asection = sectp;
80626a55
DE
10541 dwo_sections->abbrev.size = bfd_get_section_size (sectp);
10542 }
10543 else if (section_is_p (sectp->name, &names->info_dwo))
10544 {
73869dc2 10545 dwo_sections->info.s.asection = sectp;
80626a55
DE
10546 dwo_sections->info.size = bfd_get_section_size (sectp);
10547 }
10548 else if (section_is_p (sectp->name, &names->line_dwo))
10549 {
73869dc2 10550 dwo_sections->line.s.asection = sectp;
80626a55
DE
10551 dwo_sections->line.size = bfd_get_section_size (sectp);
10552 }
10553 else if (section_is_p (sectp->name, &names->loc_dwo))
10554 {
73869dc2 10555 dwo_sections->loc.s.asection = sectp;
80626a55
DE
10556 dwo_sections->loc.size = bfd_get_section_size (sectp);
10557 }
10558 else if (section_is_p (sectp->name, &names->macinfo_dwo))
10559 {
73869dc2 10560 dwo_sections->macinfo.s.asection = sectp;
80626a55
DE
10561 dwo_sections->macinfo.size = bfd_get_section_size (sectp);
10562 }
10563 else if (section_is_p (sectp->name, &names->macro_dwo))
10564 {
73869dc2 10565 dwo_sections->macro.s.asection = sectp;
80626a55
DE
10566 dwo_sections->macro.size = bfd_get_section_size (sectp);
10567 }
10568 else if (section_is_p (sectp->name, &names->str_dwo))
10569 {
73869dc2 10570 dwo_sections->str.s.asection = sectp;
80626a55
DE
10571 dwo_sections->str.size = bfd_get_section_size (sectp);
10572 }
10573 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10574 {
73869dc2 10575 dwo_sections->str_offsets.s.asection = sectp;
80626a55
DE
10576 dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
10577 }
10578 else if (section_is_p (sectp->name, &names->types_dwo))
10579 {
10580 struct dwarf2_section_info type_section;
10581
10582 memset (&type_section, 0, sizeof (type_section));
73869dc2 10583 type_section.s.asection = sectp;
80626a55
DE
10584 type_section.size = bfd_get_section_size (sectp);
10585 VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
10586 &type_section);
10587 }
10588}
10589
ab5088bf 10590/* Initialize the use of the DWO file specified by DWO_NAME and referenced
19c3d4c9 10591 by PER_CU. This is for the non-DWP case.
80626a55 10592 The result is NULL if DWO_NAME can't be found. */
3019eac3
DE
10593
10594static struct dwo_file *
0ac5b59e
DE
10595open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
10596 const char *dwo_name, const char *comp_dir)
3019eac3
DE
10597{
10598 struct objfile *objfile = dwarf2_per_objfile->objfile;
80626a55
DE
10599 struct dwo_file *dwo_file;
10600 bfd *dbfd;
3019eac3
DE
10601 struct cleanup *cleanups;
10602
ab5088bf 10603 dbfd = open_dwo_file (dwo_name, comp_dir);
80626a55
DE
10604 if (dbfd == NULL)
10605 {
10606 if (dwarf2_read_debug)
10607 fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
10608 return NULL;
10609 }
10610 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
0ac5b59e
DE
10611 dwo_file->dwo_name = dwo_name;
10612 dwo_file->comp_dir = comp_dir;
80626a55 10613 dwo_file->dbfd = dbfd;
3019eac3
DE
10614
10615 cleanups = make_cleanup (free_dwo_file_cleanup, dwo_file);
10616
80626a55 10617 bfd_map_over_sections (dbfd, dwarf2_locate_dwo_sections, &dwo_file->sections);
3019eac3 10618
19c3d4c9 10619 dwo_file->cu = create_dwo_cu (dwo_file);
3019eac3
DE
10620
10621 dwo_file->tus = create_debug_types_hash_table (dwo_file,
10622 dwo_file->sections.types);
10623
10624 discard_cleanups (cleanups);
10625
80626a55
DE
10626 if (dwarf2_read_debug)
10627 fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
10628
3019eac3
DE
10629 return dwo_file;
10630}
10631
80626a55 10632/* This function is mapped across the sections and remembers the offset and
73869dc2
DE
10633 size of each of the DWP debugging sections common to version 1 and 2 that
10634 we are interested in. */
3019eac3 10635
80626a55 10636static void
73869dc2
DE
10637dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
10638 void *dwp_file_ptr)
3019eac3 10639{
80626a55
DE
10640 struct dwp_file *dwp_file = dwp_file_ptr;
10641 const struct dwop_section_names *names = &dwop_section_names;
10642 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
3019eac3 10643
80626a55 10644 /* Record the ELF section number for later lookup: this is what the
73869dc2 10645 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
80626a55
DE
10646 gdb_assert (elf_section_nr < dwp_file->num_sections);
10647 dwp_file->elf_sections[elf_section_nr] = sectp;
3019eac3 10648
80626a55
DE
10649 /* Look for specific sections that we need. */
10650 if (section_is_p (sectp->name, &names->str_dwo))
10651 {
73869dc2 10652 dwp_file->sections.str.s.asection = sectp;
80626a55
DE
10653 dwp_file->sections.str.size = bfd_get_section_size (sectp);
10654 }
10655 else if (section_is_p (sectp->name, &names->cu_index))
10656 {
73869dc2 10657 dwp_file->sections.cu_index.s.asection = sectp;
80626a55
DE
10658 dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
10659 }
10660 else if (section_is_p (sectp->name, &names->tu_index))
10661 {
73869dc2 10662 dwp_file->sections.tu_index.s.asection = sectp;
80626a55
DE
10663 dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
10664 }
10665}
3019eac3 10666
73869dc2
DE
10667/* This function is mapped across the sections and remembers the offset and
10668 size of each of the DWP version 2 debugging sections that we are interested
10669 in. This is split into a separate function because we don't know if we
10670 have version 1 or 2 until we parse the cu_index/tu_index sections. */
10671
10672static void
10673dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
10674{
10675 struct dwp_file *dwp_file = dwp_file_ptr;
10676 const struct dwop_section_names *names = &dwop_section_names;
10677 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10678
10679 /* Record the ELF section number for later lookup: this is what the
10680 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
10681 gdb_assert (elf_section_nr < dwp_file->num_sections);
10682 dwp_file->elf_sections[elf_section_nr] = sectp;
10683
10684 /* Look for specific sections that we need. */
10685 if (section_is_p (sectp->name, &names->abbrev_dwo))
10686 {
10687 dwp_file->sections.abbrev.s.asection = sectp;
10688 dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
10689 }
10690 else if (section_is_p (sectp->name, &names->info_dwo))
10691 {
10692 dwp_file->sections.info.s.asection = sectp;
10693 dwp_file->sections.info.size = bfd_get_section_size (sectp);
10694 }
10695 else if (section_is_p (sectp->name, &names->line_dwo))
10696 {
10697 dwp_file->sections.line.s.asection = sectp;
10698 dwp_file->sections.line.size = bfd_get_section_size (sectp);
10699 }
10700 else if (section_is_p (sectp->name, &names->loc_dwo))
10701 {
10702 dwp_file->sections.loc.s.asection = sectp;
10703 dwp_file->sections.loc.size = bfd_get_section_size (sectp);
10704 }
10705 else if (section_is_p (sectp->name, &names->macinfo_dwo))
10706 {
10707 dwp_file->sections.macinfo.s.asection = sectp;
10708 dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
10709 }
10710 else if (section_is_p (sectp->name, &names->macro_dwo))
10711 {
10712 dwp_file->sections.macro.s.asection = sectp;
10713 dwp_file->sections.macro.size = bfd_get_section_size (sectp);
10714 }
10715 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10716 {
10717 dwp_file->sections.str_offsets.s.asection = sectp;
10718 dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
10719 }
10720 else if (section_is_p (sectp->name, &names->types_dwo))
10721 {
10722 dwp_file->sections.types.s.asection = sectp;
10723 dwp_file->sections.types.size = bfd_get_section_size (sectp);
10724 }
10725}
10726
80626a55 10727/* Hash function for dwp_file loaded CUs/TUs. */
3019eac3 10728
80626a55
DE
10729static hashval_t
10730hash_dwp_loaded_cutus (const void *item)
10731{
10732 const struct dwo_unit *dwo_unit = item;
3019eac3 10733
80626a55
DE
10734 /* This drops the top 32 bits of the signature, but is ok for a hash. */
10735 return dwo_unit->signature;
3019eac3
DE
10736}
10737
80626a55 10738/* Equality function for dwp_file loaded CUs/TUs. */
3019eac3 10739
80626a55
DE
10740static int
10741eq_dwp_loaded_cutus (const void *a, const void *b)
3019eac3 10742{
80626a55
DE
10743 const struct dwo_unit *dua = a;
10744 const struct dwo_unit *dub = b;
3019eac3 10745
80626a55
DE
10746 return dua->signature == dub->signature;
10747}
3019eac3 10748
80626a55 10749/* Allocate a hash table for dwp_file loaded CUs/TUs. */
3019eac3 10750
80626a55
DE
10751static htab_t
10752allocate_dwp_loaded_cutus_table (struct objfile *objfile)
10753{
10754 return htab_create_alloc_ex (3,
10755 hash_dwp_loaded_cutus,
10756 eq_dwp_loaded_cutus,
10757 NULL,
10758 &objfile->objfile_obstack,
10759 hashtab_obstack_allocate,
10760 dummy_obstack_deallocate);
10761}
3019eac3 10762
ab5088bf
DE
10763/* Try to open DWP file FILE_NAME.
10764 The result is the bfd handle of the file.
10765 If there is a problem finding or opening the file, return NULL.
10766 Upon success, the canonicalized path of the file is stored in the bfd,
10767 same as symfile_bfd_open. */
10768
10769static bfd *
10770open_dwp_file (const char *file_name)
10771{
6ac97d4c
DE
10772 bfd *abfd;
10773
10774 abfd = try_open_dwop_file (file_name, 1 /*is_dwp*/, 1 /*search_cwd*/);
10775 if (abfd != NULL)
10776 return abfd;
10777
10778 /* Work around upstream bug 15652.
10779 http://sourceware.org/bugzilla/show_bug.cgi?id=15652
10780 [Whether that's a "bug" is debatable, but it is getting in our way.]
10781 We have no real idea where the dwp file is, because gdb's realpath-ing
10782 of the executable's path may have discarded the needed info.
10783 [IWBN if the dwp file name was recorded in the executable, akin to
10784 .gnu_debuglink, but that doesn't exist yet.]
10785 Strip the directory from FILE_NAME and search again. */
10786 if (*debug_file_directory != '\0')
10787 {
10788 /* Don't implicitly search the current directory here.
10789 If the user wants to search "." to handle this case,
10790 it must be added to debug-file-directory. */
10791 return try_open_dwop_file (lbasename (file_name), 1 /*is_dwp*/,
10792 0 /*search_cwd*/);
10793 }
10794
10795 return NULL;
ab5088bf
DE
10796}
10797
80626a55
DE
10798/* Initialize the use of the DWP file for the current objfile.
10799 By convention the name of the DWP file is ${objfile}.dwp.
10800 The result is NULL if it can't be found. */
a766d390 10801
80626a55 10802static struct dwp_file *
ab5088bf 10803open_and_init_dwp_file (void)
80626a55
DE
10804{
10805 struct objfile *objfile = dwarf2_per_objfile->objfile;
10806 struct dwp_file *dwp_file;
10807 char *dwp_name;
10808 bfd *dbfd;
10809 struct cleanup *cleanups;
10810
82bf32bc
JK
10811 /* Try to find first .dwp for the binary file before any symbolic links
10812 resolving. */
10813 dwp_name = xstrprintf ("%s.dwp", objfile->original_name);
80626a55
DE
10814 cleanups = make_cleanup (xfree, dwp_name);
10815
ab5088bf 10816 dbfd = open_dwp_file (dwp_name);
82bf32bc
JK
10817 if (dbfd == NULL
10818 && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
10819 {
10820 /* Try to find .dwp for the binary file after gdb_realpath resolving. */
10821 dwp_name = xstrprintf ("%s.dwp", objfile_name (objfile));
10822 make_cleanup (xfree, dwp_name);
10823 dbfd = open_dwp_file (dwp_name);
10824 }
10825
80626a55
DE
10826 if (dbfd == NULL)
10827 {
10828 if (dwarf2_read_debug)
10829 fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name);
10830 do_cleanups (cleanups);
10831 return NULL;
3019eac3 10832 }
80626a55 10833 dwp_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_file);
93417882 10834 dwp_file->name = bfd_get_filename (dbfd);
80626a55
DE
10835 dwp_file->dbfd = dbfd;
10836 do_cleanups (cleanups);
c906108c 10837
80626a55
DE
10838 /* +1: section 0 is unused */
10839 dwp_file->num_sections = bfd_count_sections (dbfd) + 1;
10840 dwp_file->elf_sections =
10841 OBSTACK_CALLOC (&objfile->objfile_obstack,
10842 dwp_file->num_sections, asection *);
10843
73869dc2 10844 bfd_map_over_sections (dbfd, dwarf2_locate_common_dwp_sections, dwp_file);
80626a55
DE
10845
10846 dwp_file->cus = create_dwp_hash_table (dwp_file, 0);
10847
10848 dwp_file->tus = create_dwp_hash_table (dwp_file, 1);
10849
73869dc2
DE
10850 /* The DWP file version is stored in the hash table. Oh well. */
10851 if (dwp_file->cus->version != dwp_file->tus->version)
10852 {
10853 /* Technically speaking, we should try to limp along, but this is
fbcbc3fd 10854 pretty bizarre. We use pulongest here because that's the established
4d65956b 10855 portability solution (e.g, we cannot use %u for uint32_t). */
fbcbc3fd
DE
10856 error (_("Dwarf Error: DWP file CU version %s doesn't match"
10857 " TU version %s [in DWP file %s]"),
10858 pulongest (dwp_file->cus->version),
10859 pulongest (dwp_file->tus->version), dwp_name);
73869dc2
DE
10860 }
10861 dwp_file->version = dwp_file->cus->version;
10862
10863 if (dwp_file->version == 2)
10864 bfd_map_over_sections (dbfd, dwarf2_locate_v2_dwp_sections, dwp_file);
10865
19ac8c2e
DE
10866 dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
10867 dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
80626a55 10868
80626a55
DE
10869 if (dwarf2_read_debug)
10870 {
10871 fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
10872 fprintf_unfiltered (gdb_stdlog,
21aa081e
PA
10873 " %s CUs, %s TUs\n",
10874 pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
10875 pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
80626a55
DE
10876 }
10877
10878 return dwp_file;
3019eac3 10879}
c906108c 10880
ab5088bf
DE
10881/* Wrapper around open_and_init_dwp_file, only open it once. */
10882
10883static struct dwp_file *
10884get_dwp_file (void)
10885{
10886 if (! dwarf2_per_objfile->dwp_checked)
10887 {
10888 dwarf2_per_objfile->dwp_file = open_and_init_dwp_file ();
10889 dwarf2_per_objfile->dwp_checked = 1;
10890 }
10891 return dwarf2_per_objfile->dwp_file;
10892}
10893
80626a55
DE
10894/* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
10895 Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
10896 or in the DWP file for the objfile, referenced by THIS_UNIT.
3019eac3 10897 If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
80626a55
DE
10898 IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
10899
10900 This is called, for example, when wanting to read a variable with a
10901 complex location. Therefore we don't want to do file i/o for every call.
10902 Therefore we don't want to look for a DWO file on every call.
10903 Therefore we first see if we've already seen SIGNATURE in a DWP file,
10904 then we check if we've already seen DWO_NAME, and only THEN do we check
10905 for a DWO file.
10906
1c658ad5 10907 The result is a pointer to the dwo_unit object or NULL if we didn't find it
80626a55 10908 (dwo_id mismatch or couldn't find the DWO/DWP file). */
debd256d 10909
3019eac3 10910static struct dwo_unit *
80626a55
DE
10911lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
10912 const char *dwo_name, const char *comp_dir,
10913 ULONGEST signature, int is_debug_types)
3019eac3
DE
10914{
10915 struct objfile *objfile = dwarf2_per_objfile->objfile;
80626a55
DE
10916 const char *kind = is_debug_types ? "TU" : "CU";
10917 void **dwo_file_slot;
3019eac3 10918 struct dwo_file *dwo_file;
80626a55 10919 struct dwp_file *dwp_file;
cb1df416 10920
6a506a2d
DE
10921 /* First see if there's a DWP file.
10922 If we have a DWP file but didn't find the DWO inside it, don't
10923 look for the original DWO file. It makes gdb behave differently
10924 depending on whether one is debugging in the build tree. */
cf2c3c16 10925
ab5088bf 10926 dwp_file = get_dwp_file ();
80626a55 10927 if (dwp_file != NULL)
cf2c3c16 10928 {
80626a55
DE
10929 const struct dwp_hash_table *dwp_htab =
10930 is_debug_types ? dwp_file->tus : dwp_file->cus;
10931
10932 if (dwp_htab != NULL)
10933 {
10934 struct dwo_unit *dwo_cutu =
57d63ce2
DE
10935 lookup_dwo_unit_in_dwp (dwp_file, comp_dir,
10936 signature, is_debug_types);
80626a55
DE
10937
10938 if (dwo_cutu != NULL)
10939 {
10940 if (dwarf2_read_debug)
10941 {
10942 fprintf_unfiltered (gdb_stdlog,
10943 "Virtual DWO %s %s found: @%s\n",
10944 kind, hex_string (signature),
10945 host_address_to_string (dwo_cutu));
10946 }
10947 return dwo_cutu;
10948 }
10949 }
10950 }
6a506a2d 10951 else
80626a55 10952 {
6a506a2d 10953 /* No DWP file, look for the DWO file. */
80626a55 10954
6a506a2d
DE
10955 dwo_file_slot = lookup_dwo_file_slot (dwo_name, comp_dir);
10956 if (*dwo_file_slot == NULL)
80626a55 10957 {
6a506a2d
DE
10958 /* Read in the file and build a table of the CUs/TUs it contains. */
10959 *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
19c3d4c9 10960 }
6a506a2d
DE
10961 /* NOTE: This will be NULL if unable to open the file. */
10962 dwo_file = *dwo_file_slot;
3019eac3 10963
6a506a2d 10964 if (dwo_file != NULL)
19c3d4c9 10965 {
6a506a2d
DE
10966 struct dwo_unit *dwo_cutu = NULL;
10967
10968 if (is_debug_types && dwo_file->tus)
10969 {
10970 struct dwo_unit find_dwo_cutu;
10971
10972 memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
10973 find_dwo_cutu.signature = signature;
10974 dwo_cutu = htab_find (dwo_file->tus, &find_dwo_cutu);
10975 }
10976 else if (!is_debug_types && dwo_file->cu)
80626a55 10977 {
6a506a2d
DE
10978 if (signature == dwo_file->cu->signature)
10979 dwo_cutu = dwo_file->cu;
10980 }
10981
10982 if (dwo_cutu != NULL)
10983 {
10984 if (dwarf2_read_debug)
10985 {
10986 fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
10987 kind, dwo_name, hex_string (signature),
10988 host_address_to_string (dwo_cutu));
10989 }
10990 return dwo_cutu;
80626a55
DE
10991 }
10992 }
2e276125 10993 }
9cdd5dbd 10994
80626a55
DE
10995 /* We didn't find it. This could mean a dwo_id mismatch, or
10996 someone deleted the DWO/DWP file, or the search path isn't set up
10997 correctly to find the file. */
10998
10999 if (dwarf2_read_debug)
11000 {
11001 fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
11002 kind, dwo_name, hex_string (signature));
11003 }
3019eac3 11004
6656a72d
DE
11005 /* This is a warning and not a complaint because it can be caused by
11006 pilot error (e.g., user accidentally deleting the DWO). */
43942612
DE
11007 {
11008 /* Print the name of the DWP file if we looked there, helps the user
11009 better diagnose the problem. */
11010 char *dwp_text = NULL;
11011 struct cleanup *cleanups;
11012
11013 if (dwp_file != NULL)
11014 dwp_text = xstrprintf (" [in DWP file %s]", lbasename (dwp_file->name));
11015 cleanups = make_cleanup (xfree, dwp_text);
11016
11017 warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset 0x%x"
11018 " [in module %s]"),
11019 kind, dwo_name, hex_string (signature),
11020 dwp_text != NULL ? dwp_text : "",
11021 this_unit->is_debug_types ? "TU" : "CU",
11022 this_unit->offset.sect_off, objfile_name (objfile));
11023
11024 do_cleanups (cleanups);
11025 }
3019eac3 11026 return NULL;
5fb290d7
DJ
11027}
11028
80626a55
DE
11029/* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
11030 See lookup_dwo_cutu_unit for details. */
11031
11032static struct dwo_unit *
11033lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
11034 const char *dwo_name, const char *comp_dir,
11035 ULONGEST signature)
11036{
11037 return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
11038}
11039
11040/* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
11041 See lookup_dwo_cutu_unit for details. */
11042
11043static struct dwo_unit *
11044lookup_dwo_type_unit (struct signatured_type *this_tu,
11045 const char *dwo_name, const char *comp_dir)
11046{
11047 return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
11048}
11049
89e63ee4
DE
11050/* Traversal function for queue_and_load_all_dwo_tus. */
11051
11052static int
11053queue_and_load_dwo_tu (void **slot, void *info)
11054{
11055 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
11056 struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
11057 ULONGEST signature = dwo_unit->signature;
11058 struct signatured_type *sig_type =
11059 lookup_dwo_signatured_type (per_cu->cu, signature);
11060
11061 if (sig_type != NULL)
11062 {
11063 struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
11064
11065 /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
11066 a real dependency of PER_CU on SIG_TYPE. That is detected later
11067 while processing PER_CU. */
11068 if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
11069 load_full_type_unit (sig_cu);
11070 VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
11071 }
11072
11073 return 1;
11074}
11075
11076/* Queue all TUs contained in the DWO of PER_CU to be read in.
11077 The DWO may have the only definition of the type, though it may not be
11078 referenced anywhere in PER_CU. Thus we have to load *all* its TUs.
11079 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
11080
11081static void
11082queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
11083{
11084 struct dwo_unit *dwo_unit;
11085 struct dwo_file *dwo_file;
11086
11087 gdb_assert (!per_cu->is_debug_types);
11088 gdb_assert (get_dwp_file () == NULL);
11089 gdb_assert (per_cu->cu != NULL);
11090
11091 dwo_unit = per_cu->cu->dwo_unit;
11092 gdb_assert (dwo_unit != NULL);
11093
11094 dwo_file = dwo_unit->dwo_file;
11095 if (dwo_file->tus != NULL)
11096 htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
11097}
11098
3019eac3
DE
11099/* Free all resources associated with DWO_FILE.
11100 Close the DWO file and munmap the sections.
11101 All memory should be on the objfile obstack. */
348e048f
DE
11102
11103static void
3019eac3 11104free_dwo_file (struct dwo_file *dwo_file, struct objfile *objfile)
348e048f 11105{
3019eac3
DE
11106 int ix;
11107 struct dwarf2_section_info *section;
348e048f 11108
5c6fa7ab 11109 /* Note: dbfd is NULL for virtual DWO files. */
80626a55 11110 gdb_bfd_unref (dwo_file->dbfd);
348e048f 11111
3019eac3
DE
11112 VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
11113}
348e048f 11114
3019eac3 11115/* Wrapper for free_dwo_file for use in cleanups. */
348e048f 11116
3019eac3
DE
11117static void
11118free_dwo_file_cleanup (void *arg)
11119{
11120 struct dwo_file *dwo_file = (struct dwo_file *) arg;
11121 struct objfile *objfile = dwarf2_per_objfile->objfile;
348e048f 11122
3019eac3
DE
11123 free_dwo_file (dwo_file, objfile);
11124}
348e048f 11125
3019eac3 11126/* Traversal function for free_dwo_files. */
2ab95328 11127
3019eac3
DE
11128static int
11129free_dwo_file_from_slot (void **slot, void *info)
11130{
11131 struct dwo_file *dwo_file = (struct dwo_file *) *slot;
11132 struct objfile *objfile = (struct objfile *) info;
348e048f 11133
3019eac3 11134 free_dwo_file (dwo_file, objfile);
348e048f 11135
3019eac3
DE
11136 return 1;
11137}
348e048f 11138
3019eac3 11139/* Free all resources associated with DWO_FILES. */
348e048f 11140
3019eac3
DE
11141static void
11142free_dwo_files (htab_t dwo_files, struct objfile *objfile)
11143{
11144 htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
348e048f 11145}
3019eac3
DE
11146\f
11147/* Read in various DIEs. */
348e048f 11148
d389af10
JK
11149/* qsort helper for inherit_abstract_dies. */
11150
11151static int
11152unsigned_int_compar (const void *ap, const void *bp)
11153{
11154 unsigned int a = *(unsigned int *) ap;
11155 unsigned int b = *(unsigned int *) bp;
11156
11157 return (a > b) - (b > a);
11158}
11159
11160/* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
3e43a32a
MS
11161 Inherit only the children of the DW_AT_abstract_origin DIE not being
11162 already referenced by DW_AT_abstract_origin from the children of the
11163 current DIE. */
d389af10
JK
11164
11165static void
11166inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
11167{
11168 struct die_info *child_die;
11169 unsigned die_children_count;
11170 /* CU offsets which were referenced by children of the current DIE. */
b64f50a1
JK
11171 sect_offset *offsets;
11172 sect_offset *offsets_end, *offsetp;
d389af10
JK
11173 /* Parent of DIE - referenced by DW_AT_abstract_origin. */
11174 struct die_info *origin_die;
11175 /* Iterator of the ORIGIN_DIE children. */
11176 struct die_info *origin_child_die;
11177 struct cleanup *cleanups;
11178 struct attribute *attr;
cd02d79d
PA
11179 struct dwarf2_cu *origin_cu;
11180 struct pending **origin_previous_list_in_scope;
d389af10
JK
11181
11182 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11183 if (!attr)
11184 return;
11185
cd02d79d
PA
11186 /* Note that following die references may follow to a die in a
11187 different cu. */
11188
11189 origin_cu = cu;
11190 origin_die = follow_die_ref (die, attr, &origin_cu);
11191
11192 /* We're inheriting ORIGIN's children into the scope we'd put DIE's
11193 symbols in. */
11194 origin_previous_list_in_scope = origin_cu->list_in_scope;
11195 origin_cu->list_in_scope = cu->list_in_scope;
11196
edb3359d
DJ
11197 if (die->tag != origin_die->tag
11198 && !(die->tag == DW_TAG_inlined_subroutine
11199 && origin_die->tag == DW_TAG_subprogram))
d389af10
JK
11200 complaint (&symfile_complaints,
11201 _("DIE 0x%x and its abstract origin 0x%x have different tags"),
b64f50a1 11202 die->offset.sect_off, origin_die->offset.sect_off);
d389af10
JK
11203
11204 child_die = die->child;
11205 die_children_count = 0;
11206 while (child_die && child_die->tag)
11207 {
11208 child_die = sibling_die (child_die);
11209 die_children_count++;
11210 }
11211 offsets = xmalloc (sizeof (*offsets) * die_children_count);
11212 cleanups = make_cleanup (xfree, offsets);
11213
11214 offsets_end = offsets;
11215 child_die = die->child;
11216 while (child_die && child_die->tag)
11217 {
c38f313d
DJ
11218 /* For each CHILD_DIE, find the corresponding child of
11219 ORIGIN_DIE. If there is more than one layer of
11220 DW_AT_abstract_origin, follow them all; there shouldn't be,
11221 but GCC versions at least through 4.4 generate this (GCC PR
11222 40573). */
11223 struct die_info *child_origin_die = child_die;
cd02d79d 11224 struct dwarf2_cu *child_origin_cu = cu;
9a619af0 11225
c38f313d
DJ
11226 while (1)
11227 {
cd02d79d
PA
11228 attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
11229 child_origin_cu);
c38f313d
DJ
11230 if (attr == NULL)
11231 break;
cd02d79d
PA
11232 child_origin_die = follow_die_ref (child_origin_die, attr,
11233 &child_origin_cu);
c38f313d
DJ
11234 }
11235
d389af10
JK
11236 /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
11237 counterpart may exist. */
c38f313d 11238 if (child_origin_die != child_die)
d389af10 11239 {
edb3359d
DJ
11240 if (child_die->tag != child_origin_die->tag
11241 && !(child_die->tag == DW_TAG_inlined_subroutine
11242 && child_origin_die->tag == DW_TAG_subprogram))
d389af10
JK
11243 complaint (&symfile_complaints,
11244 _("Child DIE 0x%x and its abstract origin 0x%x have "
b64f50a1
JK
11245 "different tags"), child_die->offset.sect_off,
11246 child_origin_die->offset.sect_off);
c38f313d
DJ
11247 if (child_origin_die->parent != origin_die)
11248 complaint (&symfile_complaints,
11249 _("Child DIE 0x%x and its abstract origin 0x%x have "
b64f50a1
JK
11250 "different parents"), child_die->offset.sect_off,
11251 child_origin_die->offset.sect_off);
c38f313d
DJ
11252 else
11253 *offsets_end++ = child_origin_die->offset;
d389af10
JK
11254 }
11255 child_die = sibling_die (child_die);
11256 }
11257 qsort (offsets, offsets_end - offsets, sizeof (*offsets),
11258 unsigned_int_compar);
11259 for (offsetp = offsets + 1; offsetp < offsets_end; offsetp++)
b64f50a1 11260 if (offsetp[-1].sect_off == offsetp->sect_off)
3e43a32a
MS
11261 complaint (&symfile_complaints,
11262 _("Multiple children of DIE 0x%x refer "
11263 "to DIE 0x%x as their abstract origin"),
b64f50a1 11264 die->offset.sect_off, offsetp->sect_off);
d389af10
JK
11265
11266 offsetp = offsets;
11267 origin_child_die = origin_die->child;
11268 while (origin_child_die && origin_child_die->tag)
11269 {
11270 /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children? */
b64f50a1
JK
11271 while (offsetp < offsets_end
11272 && offsetp->sect_off < origin_child_die->offset.sect_off)
d389af10 11273 offsetp++;
b64f50a1
JK
11274 if (offsetp >= offsets_end
11275 || offsetp->sect_off > origin_child_die->offset.sect_off)
d389af10 11276 {
adde2bff
DE
11277 /* Found that ORIGIN_CHILD_DIE is really not referenced.
11278 Check whether we're already processing ORIGIN_CHILD_DIE.
11279 This can happen with mutually referenced abstract_origins.
11280 PR 16581. */
11281 if (!origin_child_die->in_process)
11282 process_die (origin_child_die, origin_cu);
d389af10
JK
11283 }
11284 origin_child_die = sibling_die (origin_child_die);
11285 }
cd02d79d 11286 origin_cu->list_in_scope = origin_previous_list_in_scope;
d389af10
JK
11287
11288 do_cleanups (cleanups);
11289}
11290
c906108c 11291static void
e7c27a73 11292read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 11293{
e7c27a73 11294 struct objfile *objfile = cu->objfile;
3e29f34a 11295 struct gdbarch *gdbarch = get_objfile_arch (objfile);
fe978cb0 11296 struct context_stack *newobj;
c906108c
SS
11297 CORE_ADDR lowpc;
11298 CORE_ADDR highpc;
11299 struct die_info *child_die;
edb3359d 11300 struct attribute *attr, *call_line, *call_file;
15d034d0 11301 const char *name;
e142c38c 11302 CORE_ADDR baseaddr;
801e3a5b 11303 struct block *block;
edb3359d 11304 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
34eaf542
TT
11305 VEC (symbolp) *template_args = NULL;
11306 struct template_symbol *templ_func = NULL;
edb3359d
DJ
11307
11308 if (inlined_func)
11309 {
11310 /* If we do not have call site information, we can't show the
11311 caller of this inlined function. That's too confusing, so
11312 only use the scope for local variables. */
11313 call_line = dwarf2_attr (die, DW_AT_call_line, cu);
11314 call_file = dwarf2_attr (die, DW_AT_call_file, cu);
11315 if (call_line == NULL || call_file == NULL)
11316 {
11317 read_lexical_block_scope (die, cu);
11318 return;
11319 }
11320 }
c906108c 11321
e142c38c
DJ
11322 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11323
94af9270 11324 name = dwarf2_name (die, cu);
c906108c 11325
e8d05480
JB
11326 /* Ignore functions with missing or empty names. These are actually
11327 illegal according to the DWARF standard. */
11328 if (name == NULL)
11329 {
11330 complaint (&symfile_complaints,
b64f50a1
JK
11331 _("missing name for subprogram DIE at %d"),
11332 die->offset.sect_off);
e8d05480
JB
11333 return;
11334 }
11335
11336 /* Ignore functions with missing or invalid low and high pc attributes. */
11337 if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
11338 {
ae4d0c03
PM
11339 attr = dwarf2_attr (die, DW_AT_external, cu);
11340 if (!attr || !DW_UNSND (attr))
11341 complaint (&symfile_complaints,
3e43a32a
MS
11342 _("cannot get low and high bounds "
11343 "for subprogram DIE at %d"),
b64f50a1 11344 die->offset.sect_off);
e8d05480
JB
11345 return;
11346 }
c906108c 11347
3e29f34a
MR
11348 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11349 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
c906108c 11350
34eaf542
TT
11351 /* If we have any template arguments, then we must allocate a
11352 different sort of symbol. */
11353 for (child_die = die->child; child_die; child_die = sibling_die (child_die))
11354 {
11355 if (child_die->tag == DW_TAG_template_type_param
11356 || child_die->tag == DW_TAG_template_value_param)
11357 {
e623cf5d 11358 templ_func = allocate_template_symbol (objfile);
34eaf542
TT
11359 templ_func->base.is_cplus_template_function = 1;
11360 break;
11361 }
11362 }
11363
fe978cb0
PA
11364 newobj = push_context (0, lowpc);
11365 newobj->name = new_symbol_full (die, read_type_die (die, cu), cu,
34eaf542 11366 (struct symbol *) templ_func);
4c2df51b 11367
4cecd739
DJ
11368 /* If there is a location expression for DW_AT_frame_base, record
11369 it. */
e142c38c 11370 attr = dwarf2_attr (die, DW_AT_frame_base, cu);
4c2df51b 11371 if (attr)
fe978cb0 11372 dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
4c2df51b 11373
e142c38c 11374 cu->list_in_scope = &local_symbols;
c906108c 11375
639d11d3 11376 if (die->child != NULL)
c906108c 11377 {
639d11d3 11378 child_die = die->child;
c906108c
SS
11379 while (child_die && child_die->tag)
11380 {
34eaf542
TT
11381 if (child_die->tag == DW_TAG_template_type_param
11382 || child_die->tag == DW_TAG_template_value_param)
11383 {
11384 struct symbol *arg = new_symbol (child_die, NULL, cu);
11385
f1078f66
DJ
11386 if (arg != NULL)
11387 VEC_safe_push (symbolp, template_args, arg);
34eaf542
TT
11388 }
11389 else
11390 process_die (child_die, cu);
c906108c
SS
11391 child_die = sibling_die (child_die);
11392 }
11393 }
11394
d389af10
JK
11395 inherit_abstract_dies (die, cu);
11396
4a811a97
UW
11397 /* If we have a DW_AT_specification, we might need to import using
11398 directives from the context of the specification DIE. See the
11399 comment in determine_prefix. */
11400 if (cu->language == language_cplus
11401 && dwarf2_attr (die, DW_AT_specification, cu))
11402 {
11403 struct dwarf2_cu *spec_cu = cu;
11404 struct die_info *spec_die = die_specification (die, &spec_cu);
11405
11406 while (spec_die)
11407 {
11408 child_die = spec_die->child;
11409 while (child_die && child_die->tag)
11410 {
11411 if (child_die->tag == DW_TAG_imported_module)
11412 process_die (child_die, spec_cu);
11413 child_die = sibling_die (child_die);
11414 }
11415
11416 /* In some cases, GCC generates specification DIEs that
11417 themselves contain DW_AT_specification attributes. */
11418 spec_die = die_specification (spec_die, &spec_cu);
11419 }
11420 }
11421
fe978cb0 11422 newobj = pop_context ();
c906108c 11423 /* Make a block for the local symbols within. */
fe978cb0 11424 block = finish_block (newobj->name, &local_symbols, newobj->old_blocks,
4d663531 11425 lowpc, highpc);
801e3a5b 11426
df8a16a1 11427 /* For C++, set the block's scope. */
195a3f6c 11428 if ((cu->language == language_cplus || cu->language == language_fortran)
4d4ec4e5 11429 && cu->processing_has_namespace_info)
195a3f6c
TT
11430 block_set_scope (block, determine_prefix (die, cu),
11431 &objfile->objfile_obstack);
df8a16a1 11432
801e3a5b
JB
11433 /* If we have address ranges, record them. */
11434 dwarf2_record_block_ranges (die, block, baseaddr, cu);
6e70227d 11435
fe978cb0 11436 gdbarch_make_symbol_special (gdbarch, newobj->name, objfile);
3e29f34a 11437
34eaf542
TT
11438 /* Attach template arguments to function. */
11439 if (! VEC_empty (symbolp, template_args))
11440 {
11441 gdb_assert (templ_func != NULL);
11442
11443 templ_func->n_template_arguments = VEC_length (symbolp, template_args);
11444 templ_func->template_arguments
11445 = obstack_alloc (&objfile->objfile_obstack,
11446 (templ_func->n_template_arguments
11447 * sizeof (struct symbol *)));
11448 memcpy (templ_func->template_arguments,
11449 VEC_address (symbolp, template_args),
11450 (templ_func->n_template_arguments * sizeof (struct symbol *)));
11451 VEC_free (symbolp, template_args);
11452 }
11453
208d8187
JB
11454 /* In C++, we can have functions nested inside functions (e.g., when
11455 a function declares a class that has methods). This means that
11456 when we finish processing a function scope, we may need to go
11457 back to building a containing block's symbol lists. */
fe978cb0
PA
11458 local_symbols = newobj->locals;
11459 using_directives = newobj->using_directives;
208d8187 11460
921e78cf
JB
11461 /* If we've finished processing a top-level function, subsequent
11462 symbols go in the file symbol list. */
11463 if (outermost_context_p ())
e142c38c 11464 cu->list_in_scope = &file_symbols;
c906108c
SS
11465}
11466
11467/* Process all the DIES contained within a lexical block scope. Start
11468 a new scope, process the dies, and then close the scope. */
11469
11470static void
e7c27a73 11471read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 11472{
e7c27a73 11473 struct objfile *objfile = cu->objfile;
3e29f34a 11474 struct gdbarch *gdbarch = get_objfile_arch (objfile);
fe978cb0 11475 struct context_stack *newobj;
c906108c
SS
11476 CORE_ADDR lowpc, highpc;
11477 struct die_info *child_die;
e142c38c
DJ
11478 CORE_ADDR baseaddr;
11479
11480 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c
SS
11481
11482 /* Ignore blocks with missing or invalid low and high pc attributes. */
af34e669
DJ
11483 /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
11484 as multiple lexical blocks? Handling children in a sane way would
6e70227d 11485 be nasty. Might be easier to properly extend generic blocks to
af34e669 11486 describe ranges. */
d85a05f0 11487 if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
c906108c 11488 return;
3e29f34a
MR
11489 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11490 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
c906108c
SS
11491
11492 push_context (0, lowpc);
639d11d3 11493 if (die->child != NULL)
c906108c 11494 {
639d11d3 11495 child_die = die->child;
c906108c
SS
11496 while (child_die && child_die->tag)
11497 {
e7c27a73 11498 process_die (child_die, cu);
c906108c
SS
11499 child_die = sibling_die (child_die);
11500 }
11501 }
fe978cb0 11502 newobj = pop_context ();
c906108c 11503
8540c487 11504 if (local_symbols != NULL || using_directives != NULL)
c906108c 11505 {
801e3a5b 11506 struct block *block
fe978cb0
PA
11507 = finish_block (0, &local_symbols, newobj->old_blocks,
11508 newobj->start_addr, highpc);
801e3a5b
JB
11509
11510 /* Note that recording ranges after traversing children, as we
11511 do here, means that recording a parent's ranges entails
11512 walking across all its children's ranges as they appear in
11513 the address map, which is quadratic behavior.
11514
11515 It would be nicer to record the parent's ranges before
11516 traversing its children, simply overriding whatever you find
11517 there. But since we don't even decide whether to create a
11518 block until after we've traversed its children, that's hard
11519 to do. */
11520 dwarf2_record_block_ranges (die, block, baseaddr, cu);
c906108c 11521 }
fe978cb0
PA
11522 local_symbols = newobj->locals;
11523 using_directives = newobj->using_directives;
c906108c
SS
11524}
11525
96408a79
SA
11526/* Read in DW_TAG_GNU_call_site and insert it to CU->call_site_htab. */
11527
11528static void
11529read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
11530{
11531 struct objfile *objfile = cu->objfile;
11532 struct gdbarch *gdbarch = get_objfile_arch (objfile);
11533 CORE_ADDR pc, baseaddr;
11534 struct attribute *attr;
11535 struct call_site *call_site, call_site_local;
11536 void **slot;
11537 int nparams;
11538 struct die_info *child_die;
11539
11540 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11541
11542 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11543 if (!attr)
11544 {
11545 complaint (&symfile_complaints,
11546 _("missing DW_AT_low_pc for DW_TAG_GNU_call_site "
11547 "DIE 0x%x [in module %s]"),
4262abfb 11548 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11549 return;
11550 }
31aa7e4e 11551 pc = attr_value_as_address (attr) + baseaddr;
3e29f34a 11552 pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
96408a79
SA
11553
11554 if (cu->call_site_htab == NULL)
11555 cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
11556 NULL, &objfile->objfile_obstack,
11557 hashtab_obstack_allocate, NULL);
11558 call_site_local.pc = pc;
11559 slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
11560 if (*slot != NULL)
11561 {
11562 complaint (&symfile_complaints,
11563 _("Duplicate PC %s for DW_TAG_GNU_call_site "
11564 "DIE 0x%x [in module %s]"),
4262abfb
JK
11565 paddress (gdbarch, pc), die->offset.sect_off,
11566 objfile_name (objfile));
96408a79
SA
11567 return;
11568 }
11569
11570 /* Count parameters at the caller. */
11571
11572 nparams = 0;
11573 for (child_die = die->child; child_die && child_die->tag;
11574 child_die = sibling_die (child_die))
11575 {
11576 if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11577 {
11578 complaint (&symfile_complaints,
11579 _("Tag %d is not DW_TAG_GNU_call_site_parameter in "
11580 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb
JK
11581 child_die->tag, child_die->offset.sect_off,
11582 objfile_name (objfile));
96408a79
SA
11583 continue;
11584 }
11585
11586 nparams++;
11587 }
11588
11589 call_site = obstack_alloc (&objfile->objfile_obstack,
11590 (sizeof (*call_site)
11591 + (sizeof (*call_site->parameter)
11592 * (nparams - 1))));
11593 *slot = call_site;
11594 memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
11595 call_site->pc = pc;
11596
11597 if (dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
11598 {
11599 struct die_info *func_die;
11600
11601 /* Skip also over DW_TAG_inlined_subroutine. */
11602 for (func_die = die->parent;
11603 func_die && func_die->tag != DW_TAG_subprogram
11604 && func_die->tag != DW_TAG_subroutine_type;
11605 func_die = func_die->parent);
11606
11607 /* DW_AT_GNU_all_call_sites is a superset
11608 of DW_AT_GNU_all_tail_call_sites. */
11609 if (func_die
11610 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
11611 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
11612 {
11613 /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
11614 not complete. But keep CALL_SITE for look ups via call_site_htab,
11615 both the initial caller containing the real return address PC and
11616 the final callee containing the current PC of a chain of tail
11617 calls do not need to have the tail call list complete. But any
11618 function candidate for a virtual tail call frame searched via
11619 TYPE_TAIL_CALL_LIST must have the tail call list complete to be
11620 determined unambiguously. */
11621 }
11622 else
11623 {
11624 struct type *func_type = NULL;
11625
11626 if (func_die)
11627 func_type = get_die_type (func_die, cu);
11628 if (func_type != NULL)
11629 {
11630 gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
11631
11632 /* Enlist this call site to the function. */
11633 call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
11634 TYPE_TAIL_CALL_LIST (func_type) = call_site;
11635 }
11636 else
11637 complaint (&symfile_complaints,
11638 _("Cannot find function owning DW_TAG_GNU_call_site "
11639 "DIE 0x%x [in module %s]"),
4262abfb 11640 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11641 }
11642 }
11643
11644 attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
11645 if (attr == NULL)
11646 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11647 SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
11648 if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
11649 /* Keep NULL DWARF_BLOCK. */;
11650 else if (attr_form_is_block (attr))
11651 {
11652 struct dwarf2_locexpr_baton *dlbaton;
11653
11654 dlbaton = obstack_alloc (&objfile->objfile_obstack, sizeof (*dlbaton));
11655 dlbaton->data = DW_BLOCK (attr)->data;
11656 dlbaton->size = DW_BLOCK (attr)->size;
11657 dlbaton->per_cu = cu->per_cu;
11658
11659 SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
11660 }
7771576e 11661 else if (attr_form_is_ref (attr))
96408a79 11662 {
96408a79
SA
11663 struct dwarf2_cu *target_cu = cu;
11664 struct die_info *target_die;
11665
ac9ec31b 11666 target_die = follow_die_ref (die, attr, &target_cu);
96408a79
SA
11667 gdb_assert (target_cu->objfile == objfile);
11668 if (die_is_declaration (target_die, target_cu))
11669 {
9112db09
JK
11670 const char *target_physname = NULL;
11671 struct attribute *target_attr;
11672
11673 /* Prefer the mangled name; otherwise compute the demangled one. */
11674 target_attr = dwarf2_attr (target_die, DW_AT_linkage_name, target_cu);
11675 if (target_attr == NULL)
11676 target_attr = dwarf2_attr (target_die, DW_AT_MIPS_linkage_name,
11677 target_cu);
11678 if (target_attr != NULL && DW_STRING (target_attr) != NULL)
11679 target_physname = DW_STRING (target_attr);
11680 else
11681 target_physname = dwarf2_physname (NULL, target_die, target_cu);
96408a79
SA
11682 if (target_physname == NULL)
11683 complaint (&symfile_complaints,
11684 _("DW_AT_GNU_call_site_target target DIE has invalid "
11685 "physname, for referencing DIE 0x%x [in module %s]"),
4262abfb 11686 die->offset.sect_off, objfile_name (objfile));
96408a79 11687 else
7d455152 11688 SET_FIELD_PHYSNAME (call_site->target, target_physname);
96408a79
SA
11689 }
11690 else
11691 {
11692 CORE_ADDR lowpc;
11693
11694 /* DW_AT_entry_pc should be preferred. */
11695 if (!dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL))
11696 complaint (&symfile_complaints,
11697 _("DW_AT_GNU_call_site_target target DIE has invalid "
11698 "low pc, for referencing DIE 0x%x [in module %s]"),
4262abfb 11699 die->offset.sect_off, objfile_name (objfile));
96408a79 11700 else
3e29f34a
MR
11701 {
11702 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11703 SET_FIELD_PHYSADDR (call_site->target, lowpc);
11704 }
96408a79
SA
11705 }
11706 }
11707 else
11708 complaint (&symfile_complaints,
11709 _("DW_TAG_GNU_call_site DW_AT_GNU_call_site_target is neither "
11710 "block nor reference, for DIE 0x%x [in module %s]"),
4262abfb 11711 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11712
11713 call_site->per_cu = cu->per_cu;
11714
11715 for (child_die = die->child;
11716 child_die && child_die->tag;
11717 child_die = sibling_die (child_die))
11718 {
96408a79 11719 struct call_site_parameter *parameter;
1788b2d3 11720 struct attribute *loc, *origin;
96408a79
SA
11721
11722 if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11723 {
11724 /* Already printed the complaint above. */
11725 continue;
11726 }
11727
11728 gdb_assert (call_site->parameter_count < nparams);
11729 parameter = &call_site->parameter[call_site->parameter_count];
11730
1788b2d3
JK
11731 /* DW_AT_location specifies the register number or DW_AT_abstract_origin
11732 specifies DW_TAG_formal_parameter. Value of the data assumed for the
11733 register is contained in DW_AT_GNU_call_site_value. */
96408a79 11734
24c5c679 11735 loc = dwarf2_attr (child_die, DW_AT_location, cu);
1788b2d3 11736 origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
7771576e 11737 if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
1788b2d3
JK
11738 {
11739 sect_offset offset;
11740
11741 parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
11742 offset = dwarf2_get_ref_die_offset (origin);
d76b7dbc
JK
11743 if (!offset_in_cu_p (&cu->header, offset))
11744 {
11745 /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
11746 binding can be done only inside one CU. Such referenced DIE
11747 therefore cannot be even moved to DW_TAG_partial_unit. */
11748 complaint (&symfile_complaints,
11749 _("DW_AT_abstract_origin offset is not in CU for "
11750 "DW_TAG_GNU_call_site child DIE 0x%x "
11751 "[in module %s]"),
4262abfb 11752 child_die->offset.sect_off, objfile_name (objfile));
d76b7dbc
JK
11753 continue;
11754 }
1788b2d3
JK
11755 parameter->u.param_offset.cu_off = (offset.sect_off
11756 - cu->header.offset.sect_off);
11757 }
11758 else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
96408a79
SA
11759 {
11760 complaint (&symfile_complaints,
11761 _("No DW_FORM_block* DW_AT_location for "
11762 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11763 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11764 continue;
11765 }
24c5c679 11766 else
96408a79 11767 {
24c5c679
JK
11768 parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
11769 (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
11770 if (parameter->u.dwarf_reg != -1)
11771 parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
11772 else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
11773 &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
11774 &parameter->u.fb_offset))
11775 parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
11776 else
11777 {
11778 complaint (&symfile_complaints,
11779 _("Only single DW_OP_reg or DW_OP_fbreg is supported "
11780 "for DW_FORM_block* DW_AT_location is supported for "
11781 "DW_TAG_GNU_call_site child DIE 0x%x "
11782 "[in module %s]"),
4262abfb 11783 child_die->offset.sect_off, objfile_name (objfile));
24c5c679
JK
11784 continue;
11785 }
96408a79
SA
11786 }
11787
11788 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
11789 if (!attr_form_is_block (attr))
11790 {
11791 complaint (&symfile_complaints,
11792 _("No DW_FORM_block* DW_AT_GNU_call_site_value for "
11793 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11794 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11795 continue;
11796 }
11797 parameter->value = DW_BLOCK (attr)->data;
11798 parameter->value_size = DW_BLOCK (attr)->size;
11799
11800 /* Parameters are not pre-cleared by memset above. */
11801 parameter->data_value = NULL;
11802 parameter->data_value_size = 0;
11803 call_site->parameter_count++;
11804
11805 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
11806 if (attr)
11807 {
11808 if (!attr_form_is_block (attr))
11809 complaint (&symfile_complaints,
11810 _("No DW_FORM_block* DW_AT_GNU_call_site_data_value for "
11811 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11812 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11813 else
11814 {
11815 parameter->data_value = DW_BLOCK (attr)->data;
11816 parameter->data_value_size = DW_BLOCK (attr)->size;
11817 }
11818 }
11819 }
11820}
11821
43039443 11822/* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
ff013f42
JK
11823 Return 1 if the attributes are present and valid, otherwise, return 0.
11824 If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'. */
43039443
JK
11825
11826static int
11827dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
ff013f42
JK
11828 CORE_ADDR *high_return, struct dwarf2_cu *cu,
11829 struct partial_symtab *ranges_pst)
43039443
JK
11830{
11831 struct objfile *objfile = cu->objfile;
3e29f34a 11832 struct gdbarch *gdbarch = get_objfile_arch (objfile);
43039443
JK
11833 struct comp_unit_head *cu_header = &cu->header;
11834 bfd *obfd = objfile->obfd;
11835 unsigned int addr_size = cu_header->addr_size;
11836 CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
11837 /* Base address selection entry. */
11838 CORE_ADDR base;
11839 int found_base;
11840 unsigned int dummy;
d521ce57 11841 const gdb_byte *buffer;
43039443
JK
11842 CORE_ADDR marker;
11843 int low_set;
11844 CORE_ADDR low = 0;
11845 CORE_ADDR high = 0;
ff013f42 11846 CORE_ADDR baseaddr;
43039443 11847
d00adf39
DE
11848 found_base = cu->base_known;
11849 base = cu->base_address;
43039443 11850
be391dca 11851 dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
dce234bc 11852 if (offset >= dwarf2_per_objfile->ranges.size)
43039443
JK
11853 {
11854 complaint (&symfile_complaints,
11855 _("Offset %d out of bounds for DW_AT_ranges attribute"),
11856 offset);
11857 return 0;
11858 }
dce234bc 11859 buffer = dwarf2_per_objfile->ranges.buffer + offset;
43039443
JK
11860
11861 /* Read in the largest possible address. */
11862 marker = read_address (obfd, buffer, cu, &dummy);
11863 if ((marker & mask) == mask)
11864 {
11865 /* If we found the largest possible address, then
11866 read the base address. */
11867 base = read_address (obfd, buffer + addr_size, cu, &dummy);
11868 buffer += 2 * addr_size;
11869 offset += 2 * addr_size;
11870 found_base = 1;
11871 }
11872
11873 low_set = 0;
11874
e7030f15 11875 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
ff013f42 11876
43039443
JK
11877 while (1)
11878 {
11879 CORE_ADDR range_beginning, range_end;
11880
11881 range_beginning = read_address (obfd, buffer, cu, &dummy);
11882 buffer += addr_size;
11883 range_end = read_address (obfd, buffer, cu, &dummy);
11884 buffer += addr_size;
11885 offset += 2 * addr_size;
11886
11887 /* An end of list marker is a pair of zero addresses. */
11888 if (range_beginning == 0 && range_end == 0)
11889 /* Found the end of list entry. */
11890 break;
11891
11892 /* Each base address selection entry is a pair of 2 values.
11893 The first is the largest possible address, the second is
11894 the base address. Check for a base address here. */
11895 if ((range_beginning & mask) == mask)
11896 {
11897 /* If we found the largest possible address, then
11898 read the base address. */
11899 base = read_address (obfd, buffer + addr_size, cu, &dummy);
11900 found_base = 1;
11901 continue;
11902 }
11903
11904 if (!found_base)
11905 {
11906 /* We have no valid base address for the ranges
11907 data. */
11908 complaint (&symfile_complaints,
11909 _("Invalid .debug_ranges data (no base address)"));
11910 return 0;
11911 }
11912
9277c30c
UW
11913 if (range_beginning > range_end)
11914 {
11915 /* Inverted range entries are invalid. */
11916 complaint (&symfile_complaints,
11917 _("Invalid .debug_ranges data (inverted range)"));
11918 return 0;
11919 }
11920
11921 /* Empty range entries have no effect. */
11922 if (range_beginning == range_end)
11923 continue;
11924
43039443
JK
11925 range_beginning += base;
11926 range_end += base;
11927
01093045
DE
11928 /* A not-uncommon case of bad debug info.
11929 Don't pollute the addrmap with bad data. */
11930 if (range_beginning + baseaddr == 0
11931 && !dwarf2_per_objfile->has_section_at_zero)
11932 {
11933 complaint (&symfile_complaints,
11934 _(".debug_ranges entry has start address of zero"
4262abfb 11935 " [in module %s]"), objfile_name (objfile));
01093045
DE
11936 continue;
11937 }
11938
9277c30c 11939 if (ranges_pst != NULL)
3e29f34a
MR
11940 {
11941 CORE_ADDR lowpc;
11942 CORE_ADDR highpc;
11943
11944 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
11945 range_beginning + baseaddr);
11946 highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
11947 range_end + baseaddr);
11948 addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
11949 ranges_pst);
11950 }
ff013f42 11951
43039443
JK
11952 /* FIXME: This is recording everything as a low-high
11953 segment of consecutive addresses. We should have a
11954 data structure for discontiguous block ranges
11955 instead. */
11956 if (! low_set)
11957 {
11958 low = range_beginning;
11959 high = range_end;
11960 low_set = 1;
11961 }
11962 else
11963 {
11964 if (range_beginning < low)
11965 low = range_beginning;
11966 if (range_end > high)
11967 high = range_end;
11968 }
11969 }
11970
11971 if (! low_set)
11972 /* If the first entry is an end-of-list marker, the range
11973 describes an empty scope, i.e. no instructions. */
11974 return 0;
11975
11976 if (low_return)
11977 *low_return = low;
11978 if (high_return)
11979 *high_return = high;
11980 return 1;
11981}
11982
af34e669
DJ
11983/* Get low and high pc attributes from a die. Return 1 if the attributes
11984 are present and valid, otherwise, return 0. Return -1 if the range is
11985 discontinuous, i.e. derived from DW_AT_ranges information. */
380bca97 11986
c906108c 11987static int
af34e669 11988dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
d85a05f0
DJ
11989 CORE_ADDR *highpc, struct dwarf2_cu *cu,
11990 struct partial_symtab *pst)
c906108c
SS
11991{
11992 struct attribute *attr;
91da1414 11993 struct attribute *attr_high;
af34e669
DJ
11994 CORE_ADDR low = 0;
11995 CORE_ADDR high = 0;
11996 int ret = 0;
c906108c 11997
91da1414
MW
11998 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
11999 if (attr_high)
af34e669 12000 {
e142c38c 12001 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
af34e669 12002 if (attr)
91da1414 12003 {
31aa7e4e
JB
12004 low = attr_value_as_address (attr);
12005 high = attr_value_as_address (attr_high);
12006 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12007 high += low;
91da1414 12008 }
af34e669
DJ
12009 else
12010 /* Found high w/o low attribute. */
12011 return 0;
12012
12013 /* Found consecutive range of addresses. */
12014 ret = 1;
12015 }
c906108c 12016 else
af34e669 12017 {
e142c38c 12018 attr = dwarf2_attr (die, DW_AT_ranges, cu);
af34e669
DJ
12019 if (attr != NULL)
12020 {
ab435259
DE
12021 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12022 We take advantage of the fact that DW_AT_ranges does not appear
12023 in DW_TAG_compile_unit of DWO files. */
12024 int need_ranges_base = die->tag != DW_TAG_compile_unit;
12025 unsigned int ranges_offset = (DW_UNSND (attr)
12026 + (need_ranges_base
12027 ? cu->ranges_base
12028 : 0));
2e3cf129 12029
af34e669 12030 /* Value of the DW_AT_ranges attribute is the offset in the
a604369a 12031 .debug_ranges section. */
2e3cf129 12032 if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
af34e669 12033 return 0;
43039443 12034 /* Found discontinuous range of addresses. */
af34e669
DJ
12035 ret = -1;
12036 }
12037 }
c906108c 12038
9373cf26
JK
12039 /* read_partial_die has also the strict LOW < HIGH requirement. */
12040 if (high <= low)
c906108c
SS
12041 return 0;
12042
12043 /* When using the GNU linker, .gnu.linkonce. sections are used to
12044 eliminate duplicate copies of functions and vtables and such.
12045 The linker will arbitrarily choose one and discard the others.
12046 The AT_*_pc values for such functions refer to local labels in
12047 these sections. If the section from that file was discarded, the
12048 labels are not in the output, so the relocs get a value of 0.
12049 If this is a discarded function, mark the pc bounds as invalid,
12050 so that GDB will ignore it. */
72dca2f5 12051 if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
c906108c
SS
12052 return 0;
12053
12054 *lowpc = low;
96408a79
SA
12055 if (highpc)
12056 *highpc = high;
af34e669 12057 return ret;
c906108c
SS
12058}
12059
b084d499
JB
12060/* Assuming that DIE represents a subprogram DIE or a lexical block, get
12061 its low and high PC addresses. Do nothing if these addresses could not
12062 be determined. Otherwise, set LOWPC to the low address if it is smaller,
12063 and HIGHPC to the high address if greater than HIGHPC. */
12064
12065static void
12066dwarf2_get_subprogram_pc_bounds (struct die_info *die,
12067 CORE_ADDR *lowpc, CORE_ADDR *highpc,
12068 struct dwarf2_cu *cu)
12069{
12070 CORE_ADDR low, high;
12071 struct die_info *child = die->child;
12072
d85a05f0 12073 if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL))
b084d499
JB
12074 {
12075 *lowpc = min (*lowpc, low);
12076 *highpc = max (*highpc, high);
12077 }
12078
12079 /* If the language does not allow nested subprograms (either inside
12080 subprograms or lexical blocks), we're done. */
12081 if (cu->language != language_ada)
12082 return;
6e70227d 12083
b084d499
JB
12084 /* Check all the children of the given DIE. If it contains nested
12085 subprograms, then check their pc bounds. Likewise, we need to
12086 check lexical blocks as well, as they may also contain subprogram
12087 definitions. */
12088 while (child && child->tag)
12089 {
12090 if (child->tag == DW_TAG_subprogram
12091 || child->tag == DW_TAG_lexical_block)
12092 dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
12093 child = sibling_die (child);
12094 }
12095}
12096
fae299cd
DC
12097/* Get the low and high pc's represented by the scope DIE, and store
12098 them in *LOWPC and *HIGHPC. If the correct values can't be
12099 determined, set *LOWPC to -1 and *HIGHPC to 0. */
12100
12101static void
12102get_scope_pc_bounds (struct die_info *die,
12103 CORE_ADDR *lowpc, CORE_ADDR *highpc,
12104 struct dwarf2_cu *cu)
12105{
12106 CORE_ADDR best_low = (CORE_ADDR) -1;
12107 CORE_ADDR best_high = (CORE_ADDR) 0;
12108 CORE_ADDR current_low, current_high;
12109
d85a05f0 12110 if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL))
fae299cd
DC
12111 {
12112 best_low = current_low;
12113 best_high = current_high;
12114 }
12115 else
12116 {
12117 struct die_info *child = die->child;
12118
12119 while (child && child->tag)
12120 {
12121 switch (child->tag) {
12122 case DW_TAG_subprogram:
b084d499 12123 dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
fae299cd
DC
12124 break;
12125 case DW_TAG_namespace:
f55ee35c 12126 case DW_TAG_module:
fae299cd
DC
12127 /* FIXME: carlton/2004-01-16: Should we do this for
12128 DW_TAG_class_type/DW_TAG_structure_type, too? I think
12129 that current GCC's always emit the DIEs corresponding
12130 to definitions of methods of classes as children of a
12131 DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
12132 the DIEs giving the declarations, which could be
12133 anywhere). But I don't see any reason why the
12134 standards says that they have to be there. */
12135 get_scope_pc_bounds (child, &current_low, &current_high, cu);
12136
12137 if (current_low != ((CORE_ADDR) -1))
12138 {
12139 best_low = min (best_low, current_low);
12140 best_high = max (best_high, current_high);
12141 }
12142 break;
12143 default:
0963b4bd 12144 /* Ignore. */
fae299cd
DC
12145 break;
12146 }
12147
12148 child = sibling_die (child);
12149 }
12150 }
12151
12152 *lowpc = best_low;
12153 *highpc = best_high;
12154}
12155
801e3a5b
JB
12156/* Record the address ranges for BLOCK, offset by BASEADDR, as given
12157 in DIE. */
380bca97 12158
801e3a5b
JB
12159static void
12160dwarf2_record_block_ranges (struct die_info *die, struct block *block,
12161 CORE_ADDR baseaddr, struct dwarf2_cu *cu)
12162{
bb5ed363 12163 struct objfile *objfile = cu->objfile;
3e29f34a 12164 struct gdbarch *gdbarch = get_objfile_arch (objfile);
801e3a5b 12165 struct attribute *attr;
91da1414 12166 struct attribute *attr_high;
801e3a5b 12167
91da1414
MW
12168 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
12169 if (attr_high)
801e3a5b 12170 {
801e3a5b
JB
12171 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
12172 if (attr)
12173 {
31aa7e4e
JB
12174 CORE_ADDR low = attr_value_as_address (attr);
12175 CORE_ADDR high = attr_value_as_address (attr_high);
12176
12177 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12178 high += low;
9a619af0 12179
3e29f34a
MR
12180 low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
12181 high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
12182 record_block_range (block, low, high - 1);
801e3a5b
JB
12183 }
12184 }
12185
12186 attr = dwarf2_attr (die, DW_AT_ranges, cu);
12187 if (attr)
12188 {
bb5ed363 12189 bfd *obfd = objfile->obfd;
ab435259
DE
12190 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12191 We take advantage of the fact that DW_AT_ranges does not appear
12192 in DW_TAG_compile_unit of DWO files. */
12193 int need_ranges_base = die->tag != DW_TAG_compile_unit;
801e3a5b
JB
12194
12195 /* The value of the DW_AT_ranges attribute is the offset of the
12196 address range list in the .debug_ranges section. */
ab435259
DE
12197 unsigned long offset = (DW_UNSND (attr)
12198 + (need_ranges_base ? cu->ranges_base : 0));
d62bfeaf 12199 const gdb_byte *buffer;
801e3a5b
JB
12200
12201 /* For some target architectures, but not others, the
12202 read_address function sign-extends the addresses it returns.
12203 To recognize base address selection entries, we need a
12204 mask. */
12205 unsigned int addr_size = cu->header.addr_size;
12206 CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
12207
12208 /* The base address, to which the next pair is relative. Note
12209 that this 'base' is a DWARF concept: most entries in a range
12210 list are relative, to reduce the number of relocs against the
12211 debugging information. This is separate from this function's
12212 'baseaddr' argument, which GDB uses to relocate debugging
12213 information from a shared library based on the address at
12214 which the library was loaded. */
d00adf39
DE
12215 CORE_ADDR base = cu->base_address;
12216 int base_known = cu->base_known;
801e3a5b 12217
d62bfeaf 12218 dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
dce234bc 12219 if (offset >= dwarf2_per_objfile->ranges.size)
801e3a5b
JB
12220 {
12221 complaint (&symfile_complaints,
12222 _("Offset %lu out of bounds for DW_AT_ranges attribute"),
12223 offset);
12224 return;
12225 }
d62bfeaf 12226 buffer = dwarf2_per_objfile->ranges.buffer + offset;
801e3a5b
JB
12227
12228 for (;;)
12229 {
12230 unsigned int bytes_read;
12231 CORE_ADDR start, end;
12232
12233 start = read_address (obfd, buffer, cu, &bytes_read);
12234 buffer += bytes_read;
12235 end = read_address (obfd, buffer, cu, &bytes_read);
12236 buffer += bytes_read;
12237
12238 /* Did we find the end of the range list? */
12239 if (start == 0 && end == 0)
12240 break;
12241
12242 /* Did we find a base address selection entry? */
12243 else if ((start & base_select_mask) == base_select_mask)
12244 {
12245 base = end;
12246 base_known = 1;
12247 }
12248
12249 /* We found an ordinary address range. */
12250 else
12251 {
12252 if (!base_known)
12253 {
12254 complaint (&symfile_complaints,
3e43a32a
MS
12255 _("Invalid .debug_ranges data "
12256 "(no base address)"));
801e3a5b
JB
12257 return;
12258 }
12259
9277c30c
UW
12260 if (start > end)
12261 {
12262 /* Inverted range entries are invalid. */
12263 complaint (&symfile_complaints,
12264 _("Invalid .debug_ranges data "
12265 "(inverted range)"));
12266 return;
12267 }
12268
12269 /* Empty range entries have no effect. */
12270 if (start == end)
12271 continue;
12272
01093045
DE
12273 start += base + baseaddr;
12274 end += base + baseaddr;
12275
12276 /* A not-uncommon case of bad debug info.
12277 Don't pollute the addrmap with bad data. */
12278 if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
12279 {
12280 complaint (&symfile_complaints,
12281 _(".debug_ranges entry has start address of zero"
4262abfb 12282 " [in module %s]"), objfile_name (objfile));
01093045
DE
12283 continue;
12284 }
12285
3e29f34a
MR
12286 start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
12287 end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
01093045 12288 record_block_range (block, start, end - 1);
801e3a5b
JB
12289 }
12290 }
12291 }
12292}
12293
685b1105
JK
12294/* Check whether the producer field indicates either of GCC < 4.6, or the
12295 Intel C/C++ compiler, and cache the result in CU. */
60d5a603 12296
685b1105
JK
12297static void
12298check_producer (struct dwarf2_cu *cu)
60d5a603
JK
12299{
12300 const char *cs;
38360086 12301 int major, minor;
60d5a603
JK
12302
12303 if (cu->producer == NULL)
12304 {
12305 /* For unknown compilers expect their behavior is DWARF version
12306 compliant.
12307
12308 GCC started to support .debug_types sections by -gdwarf-4 since
12309 gcc-4.5.x. As the .debug_types sections are missing DW_AT_producer
12310 for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
12311 combination. gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
12312 interpreted incorrectly by GDB now - GCC PR debug/48229. */
60d5a603 12313 }
b1ffba5a 12314 else if (producer_is_gcc (cu->producer, &major, &minor))
60d5a603 12315 {
38360086
MW
12316 cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
12317 cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
685b1105 12318 }
61012eef 12319 else if (startswith (cu->producer, "Intel(R) C"))
685b1105
JK
12320 cu->producer_is_icc = 1;
12321 else
12322 {
12323 /* For other non-GCC compilers, expect their behavior is DWARF version
12324 compliant. */
60d5a603
JK
12325 }
12326
ba919b58 12327 cu->checked_producer = 1;
685b1105 12328}
ba919b58 12329
685b1105
JK
12330/* Check for GCC PR debug/45124 fix which is not present in any G++ version up
12331 to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
12332 during 4.6.0 experimental. */
12333
12334static int
12335producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
12336{
12337 if (!cu->checked_producer)
12338 check_producer (cu);
12339
12340 return cu->producer_is_gxx_lt_4_6;
60d5a603
JK
12341}
12342
12343/* Return the default accessibility type if it is not overriden by
12344 DW_AT_accessibility. */
12345
12346static enum dwarf_access_attribute
12347dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
12348{
12349 if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
12350 {
12351 /* The default DWARF 2 accessibility for members is public, the default
12352 accessibility for inheritance is private. */
12353
12354 if (die->tag != DW_TAG_inheritance)
12355 return DW_ACCESS_public;
12356 else
12357 return DW_ACCESS_private;
12358 }
12359 else
12360 {
12361 /* DWARF 3+ defines the default accessibility a different way. The same
12362 rules apply now for DW_TAG_inheritance as for the members and it only
12363 depends on the container kind. */
12364
12365 if (die->parent->tag == DW_TAG_class_type)
12366 return DW_ACCESS_private;
12367 else
12368 return DW_ACCESS_public;
12369 }
12370}
12371
74ac6d43
TT
12372/* Look for DW_AT_data_member_location. Set *OFFSET to the byte
12373 offset. If the attribute was not found return 0, otherwise return
12374 1. If it was found but could not properly be handled, set *OFFSET
12375 to 0. */
12376
12377static int
12378handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
12379 LONGEST *offset)
12380{
12381 struct attribute *attr;
12382
12383 attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
12384 if (attr != NULL)
12385 {
12386 *offset = 0;
12387
12388 /* Note that we do not check for a section offset first here.
12389 This is because DW_AT_data_member_location is new in DWARF 4,
12390 so if we see it, we can assume that a constant form is really
12391 a constant and not a section offset. */
12392 if (attr_form_is_constant (attr))
12393 *offset = dwarf2_get_attr_constant_value (attr, 0);
12394 else if (attr_form_is_section_offset (attr))
12395 dwarf2_complex_location_expr_complaint ();
12396 else if (attr_form_is_block (attr))
12397 *offset = decode_locdesc (DW_BLOCK (attr), cu);
12398 else
12399 dwarf2_complex_location_expr_complaint ();
12400
12401 return 1;
12402 }
12403
12404 return 0;
12405}
12406
c906108c
SS
12407/* Add an aggregate field to the field list. */
12408
12409static void
107d2387 12410dwarf2_add_field (struct field_info *fip, struct die_info *die,
e7c27a73 12411 struct dwarf2_cu *cu)
6e70227d 12412{
e7c27a73 12413 struct objfile *objfile = cu->objfile;
5e2b427d 12414 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
12415 struct nextfield *new_field;
12416 struct attribute *attr;
12417 struct field *fp;
15d034d0 12418 const char *fieldname = "";
c906108c
SS
12419
12420 /* Allocate a new field list entry and link it in. */
12421 new_field = (struct nextfield *) xmalloc (sizeof (struct nextfield));
b8c9b27d 12422 make_cleanup (xfree, new_field);
c906108c 12423 memset (new_field, 0, sizeof (struct nextfield));
7d0ccb61
DJ
12424
12425 if (die->tag == DW_TAG_inheritance)
12426 {
12427 new_field->next = fip->baseclasses;
12428 fip->baseclasses = new_field;
12429 }
12430 else
12431 {
12432 new_field->next = fip->fields;
12433 fip->fields = new_field;
12434 }
c906108c
SS
12435 fip->nfields++;
12436
e142c38c 12437 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c
SS
12438 if (attr)
12439 new_field->accessibility = DW_UNSND (attr);
60d5a603
JK
12440 else
12441 new_field->accessibility = dwarf2_default_access_attribute (die, cu);
c906108c
SS
12442 if (new_field->accessibility != DW_ACCESS_public)
12443 fip->non_public_fields = 1;
60d5a603 12444
e142c38c 12445 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
c906108c
SS
12446 if (attr)
12447 new_field->virtuality = DW_UNSND (attr);
60d5a603
JK
12448 else
12449 new_field->virtuality = DW_VIRTUALITY_none;
c906108c
SS
12450
12451 fp = &new_field->field;
a9a9bd0f 12452
e142c38c 12453 if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
c906108c 12454 {
74ac6d43
TT
12455 LONGEST offset;
12456
a9a9bd0f 12457 /* Data member other than a C++ static data member. */
6e70227d 12458
c906108c 12459 /* Get type of field. */
e7c27a73 12460 fp->type = die_type (die, cu);
c906108c 12461
d6a843b5 12462 SET_FIELD_BITPOS (*fp, 0);
01ad7f36 12463
c906108c 12464 /* Get bit size of field (zero if none). */
e142c38c 12465 attr = dwarf2_attr (die, DW_AT_bit_size, cu);
c906108c
SS
12466 if (attr)
12467 {
12468 FIELD_BITSIZE (*fp) = DW_UNSND (attr);
12469 }
12470 else
12471 {
12472 FIELD_BITSIZE (*fp) = 0;
12473 }
12474
12475 /* Get bit offset of field. */
74ac6d43
TT
12476 if (handle_data_member_location (die, cu, &offset))
12477 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
e142c38c 12478 attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
c906108c
SS
12479 if (attr)
12480 {
5e2b427d 12481 if (gdbarch_bits_big_endian (gdbarch))
c906108c
SS
12482 {
12483 /* For big endian bits, the DW_AT_bit_offset gives the
c5aa993b
JM
12484 additional bit offset from the MSB of the containing
12485 anonymous object to the MSB of the field. We don't
12486 have to do anything special since we don't need to
12487 know the size of the anonymous object. */
f41f5e61 12488 SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
c906108c
SS
12489 }
12490 else
12491 {
12492 /* For little endian bits, compute the bit offset to the
c5aa993b
JM
12493 MSB of the anonymous object, subtract off the number of
12494 bits from the MSB of the field to the MSB of the
12495 object, and then subtract off the number of bits of
12496 the field itself. The result is the bit offset of
12497 the LSB of the field. */
c906108c
SS
12498 int anonymous_size;
12499 int bit_offset = DW_UNSND (attr);
12500
e142c38c 12501 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
12502 if (attr)
12503 {
12504 /* The size of the anonymous object containing
12505 the bit field is explicit, so use the
12506 indicated size (in bytes). */
12507 anonymous_size = DW_UNSND (attr);
12508 }
12509 else
12510 {
12511 /* The size of the anonymous object containing
12512 the bit field must be inferred from the type
12513 attribute of the data member containing the
12514 bit field. */
12515 anonymous_size = TYPE_LENGTH (fp->type);
12516 }
f41f5e61
PA
12517 SET_FIELD_BITPOS (*fp,
12518 (FIELD_BITPOS (*fp)
12519 + anonymous_size * bits_per_byte
12520 - bit_offset - FIELD_BITSIZE (*fp)));
c906108c
SS
12521 }
12522 }
12523
12524 /* Get name of field. */
39cbfefa
DJ
12525 fieldname = dwarf2_name (die, cu);
12526 if (fieldname == NULL)
12527 fieldname = "";
d8151005
DJ
12528
12529 /* The name is already allocated along with this objfile, so we don't
12530 need to duplicate it for the type. */
12531 fp->name = fieldname;
c906108c
SS
12532
12533 /* Change accessibility for artificial fields (e.g. virtual table
c5aa993b 12534 pointer or virtual base class pointer) to private. */
e142c38c 12535 if (dwarf2_attr (die, DW_AT_artificial, cu))
c906108c 12536 {
d48cc9dd 12537 FIELD_ARTIFICIAL (*fp) = 1;
c906108c
SS
12538 new_field->accessibility = DW_ACCESS_private;
12539 fip->non_public_fields = 1;
12540 }
12541 }
a9a9bd0f 12542 else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
c906108c 12543 {
a9a9bd0f
DC
12544 /* C++ static member. */
12545
12546 /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
12547 is a declaration, but all versions of G++ as of this writing
12548 (so through at least 3.2.1) incorrectly generate
12549 DW_TAG_variable tags. */
6e70227d 12550
ff355380 12551 const char *physname;
c906108c 12552
a9a9bd0f 12553 /* Get name of field. */
39cbfefa
DJ
12554 fieldname = dwarf2_name (die, cu);
12555 if (fieldname == NULL)
c906108c
SS
12556 return;
12557
254e6b9e 12558 attr = dwarf2_attr (die, DW_AT_const_value, cu);
3863f96c
DE
12559 if (attr
12560 /* Only create a symbol if this is an external value.
12561 new_symbol checks this and puts the value in the global symbol
12562 table, which we want. If it is not external, new_symbol
12563 will try to put the value in cu->list_in_scope which is wrong. */
12564 && dwarf2_flag_true_p (die, DW_AT_external, cu))
254e6b9e
DE
12565 {
12566 /* A static const member, not much different than an enum as far as
12567 we're concerned, except that we can support more types. */
12568 new_symbol (die, NULL, cu);
12569 }
12570
2df3850c 12571 /* Get physical name. */
ff355380 12572 physname = dwarf2_physname (fieldname, die, cu);
c906108c 12573
d8151005
DJ
12574 /* The name is already allocated along with this objfile, so we don't
12575 need to duplicate it for the type. */
12576 SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
e7c27a73 12577 FIELD_TYPE (*fp) = die_type (die, cu);
d8151005 12578 FIELD_NAME (*fp) = fieldname;
c906108c
SS
12579 }
12580 else if (die->tag == DW_TAG_inheritance)
12581 {
74ac6d43 12582 LONGEST offset;
d4b96c9a 12583
74ac6d43
TT
12584 /* C++ base class field. */
12585 if (handle_data_member_location (die, cu, &offset))
12586 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
c906108c 12587 FIELD_BITSIZE (*fp) = 0;
e7c27a73 12588 FIELD_TYPE (*fp) = die_type (die, cu);
c906108c
SS
12589 FIELD_NAME (*fp) = type_name_no_tag (fp->type);
12590 fip->nbaseclasses++;
12591 }
12592}
12593
98751a41
JK
12594/* Add a typedef defined in the scope of the FIP's class. */
12595
12596static void
12597dwarf2_add_typedef (struct field_info *fip, struct die_info *die,
12598 struct dwarf2_cu *cu)
6e70227d 12599{
98751a41 12600 struct objfile *objfile = cu->objfile;
98751a41
JK
12601 struct typedef_field_list *new_field;
12602 struct attribute *attr;
12603 struct typedef_field *fp;
12604 char *fieldname = "";
12605
12606 /* Allocate a new field list entry and link it in. */
12607 new_field = xzalloc (sizeof (*new_field));
12608 make_cleanup (xfree, new_field);
12609
12610 gdb_assert (die->tag == DW_TAG_typedef);
12611
12612 fp = &new_field->field;
12613
12614 /* Get name of field. */
12615 fp->name = dwarf2_name (die, cu);
12616 if (fp->name == NULL)
12617 return;
12618
12619 fp->type = read_type_die (die, cu);
12620
12621 new_field->next = fip->typedef_field_list;
12622 fip->typedef_field_list = new_field;
12623 fip->typedef_field_list_count++;
12624}
12625
c906108c
SS
12626/* Create the vector of fields, and attach it to the type. */
12627
12628static void
fba45db2 12629dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 12630 struct dwarf2_cu *cu)
c906108c
SS
12631{
12632 int nfields = fip->nfields;
12633
12634 /* Record the field count, allocate space for the array of fields,
12635 and create blank accessibility bitfields if necessary. */
12636 TYPE_NFIELDS (type) = nfields;
12637 TYPE_FIELDS (type) = (struct field *)
12638 TYPE_ALLOC (type, sizeof (struct field) * nfields);
12639 memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
12640
b4ba55a1 12641 if (fip->non_public_fields && cu->language != language_ada)
c906108c
SS
12642 {
12643 ALLOCATE_CPLUS_STRUCT_TYPE (type);
12644
12645 TYPE_FIELD_PRIVATE_BITS (type) =
12646 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12647 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
12648
12649 TYPE_FIELD_PROTECTED_BITS (type) =
12650 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12651 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
12652
774b6a14
TT
12653 TYPE_FIELD_IGNORE_BITS (type) =
12654 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12655 B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
c906108c
SS
12656 }
12657
12658 /* If the type has baseclasses, allocate and clear a bit vector for
12659 TYPE_FIELD_VIRTUAL_BITS. */
b4ba55a1 12660 if (fip->nbaseclasses && cu->language != language_ada)
c906108c
SS
12661 {
12662 int num_bytes = B_BYTES (fip->nbaseclasses);
fe1b8b76 12663 unsigned char *pointer;
c906108c
SS
12664
12665 ALLOCATE_CPLUS_STRUCT_TYPE (type);
fe1b8b76
JB
12666 pointer = TYPE_ALLOC (type, num_bytes);
12667 TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
c906108c
SS
12668 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
12669 TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
12670 }
12671
3e43a32a
MS
12672 /* Copy the saved-up fields into the field vector. Start from the head of
12673 the list, adding to the tail of the field array, so that they end up in
12674 the same order in the array in which they were added to the list. */
c906108c
SS
12675 while (nfields-- > 0)
12676 {
7d0ccb61
DJ
12677 struct nextfield *fieldp;
12678
12679 if (fip->fields)
12680 {
12681 fieldp = fip->fields;
12682 fip->fields = fieldp->next;
12683 }
12684 else
12685 {
12686 fieldp = fip->baseclasses;
12687 fip->baseclasses = fieldp->next;
12688 }
12689
12690 TYPE_FIELD (type, nfields) = fieldp->field;
12691 switch (fieldp->accessibility)
c906108c 12692 {
c5aa993b 12693 case DW_ACCESS_private:
b4ba55a1
JB
12694 if (cu->language != language_ada)
12695 SET_TYPE_FIELD_PRIVATE (type, nfields);
c5aa993b 12696 break;
c906108c 12697
c5aa993b 12698 case DW_ACCESS_protected:
b4ba55a1
JB
12699 if (cu->language != language_ada)
12700 SET_TYPE_FIELD_PROTECTED (type, nfields);
c5aa993b 12701 break;
c906108c 12702
c5aa993b
JM
12703 case DW_ACCESS_public:
12704 break;
c906108c 12705
c5aa993b
JM
12706 default:
12707 /* Unknown accessibility. Complain and treat it as public. */
12708 {
e2e0b3e5 12709 complaint (&symfile_complaints, _("unsupported accessibility %d"),
7d0ccb61 12710 fieldp->accessibility);
c5aa993b
JM
12711 }
12712 break;
c906108c
SS
12713 }
12714 if (nfields < fip->nbaseclasses)
12715 {
7d0ccb61 12716 switch (fieldp->virtuality)
c906108c 12717 {
c5aa993b
JM
12718 case DW_VIRTUALITY_virtual:
12719 case DW_VIRTUALITY_pure_virtual:
b4ba55a1 12720 if (cu->language == language_ada)
a73c6dcd 12721 error (_("unexpected virtuality in component of Ada type"));
c5aa993b
JM
12722 SET_TYPE_FIELD_VIRTUAL (type, nfields);
12723 break;
c906108c
SS
12724 }
12725 }
c906108c
SS
12726 }
12727}
12728
7d27a96d
TT
12729/* Return true if this member function is a constructor, false
12730 otherwise. */
12731
12732static int
12733dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
12734{
12735 const char *fieldname;
fe978cb0 12736 const char *type_name;
7d27a96d
TT
12737 int len;
12738
12739 if (die->parent == NULL)
12740 return 0;
12741
12742 if (die->parent->tag != DW_TAG_structure_type
12743 && die->parent->tag != DW_TAG_union_type
12744 && die->parent->tag != DW_TAG_class_type)
12745 return 0;
12746
12747 fieldname = dwarf2_name (die, cu);
fe978cb0
PA
12748 type_name = dwarf2_name (die->parent, cu);
12749 if (fieldname == NULL || type_name == NULL)
7d27a96d
TT
12750 return 0;
12751
12752 len = strlen (fieldname);
fe978cb0
PA
12753 return (strncmp (fieldname, type_name, len) == 0
12754 && (type_name[len] == '\0' || type_name[len] == '<'));
7d27a96d
TT
12755}
12756
c906108c
SS
12757/* Add a member function to the proper fieldlist. */
12758
12759static void
107d2387 12760dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
e7c27a73 12761 struct type *type, struct dwarf2_cu *cu)
c906108c 12762{
e7c27a73 12763 struct objfile *objfile = cu->objfile;
c906108c
SS
12764 struct attribute *attr;
12765 struct fnfieldlist *flp;
12766 int i;
12767 struct fn_field *fnp;
15d034d0 12768 const char *fieldname;
c906108c 12769 struct nextfnfield *new_fnfield;
f792889a 12770 struct type *this_type;
60d5a603 12771 enum dwarf_access_attribute accessibility;
c906108c 12772
b4ba55a1 12773 if (cu->language == language_ada)
a73c6dcd 12774 error (_("unexpected member function in Ada type"));
b4ba55a1 12775
2df3850c 12776 /* Get name of member function. */
39cbfefa
DJ
12777 fieldname = dwarf2_name (die, cu);
12778 if (fieldname == NULL)
2df3850c 12779 return;
c906108c 12780
c906108c
SS
12781 /* Look up member function name in fieldlist. */
12782 for (i = 0; i < fip->nfnfields; i++)
12783 {
27bfe10e 12784 if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
c906108c
SS
12785 break;
12786 }
12787
12788 /* Create new list element if necessary. */
12789 if (i < fip->nfnfields)
12790 flp = &fip->fnfieldlists[i];
12791 else
12792 {
12793 if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
12794 {
12795 fip->fnfieldlists = (struct fnfieldlist *)
12796 xrealloc (fip->fnfieldlists,
12797 (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
c5aa993b 12798 * sizeof (struct fnfieldlist));
c906108c 12799 if (fip->nfnfields == 0)
c13c43fd 12800 make_cleanup (free_current_contents, &fip->fnfieldlists);
c906108c
SS
12801 }
12802 flp = &fip->fnfieldlists[fip->nfnfields];
12803 flp->name = fieldname;
12804 flp->length = 0;
12805 flp->head = NULL;
3da10d80 12806 i = fip->nfnfields++;
c906108c
SS
12807 }
12808
12809 /* Create a new member function field and chain it to the field list
0963b4bd 12810 entry. */
c906108c 12811 new_fnfield = (struct nextfnfield *) xmalloc (sizeof (struct nextfnfield));
b8c9b27d 12812 make_cleanup (xfree, new_fnfield);
c906108c
SS
12813 memset (new_fnfield, 0, sizeof (struct nextfnfield));
12814 new_fnfield->next = flp->head;
12815 flp->head = new_fnfield;
12816 flp->length++;
12817
12818 /* Fill in the member function field info. */
12819 fnp = &new_fnfield->fnfield;
3da10d80
KS
12820
12821 /* Delay processing of the physname until later. */
12822 if (cu->language == language_cplus || cu->language == language_java)
12823 {
12824 add_to_method_list (type, i, flp->length - 1, fieldname,
12825 die, cu);
12826 }
12827 else
12828 {
1d06ead6 12829 const char *physname = dwarf2_physname (fieldname, die, cu);
3da10d80
KS
12830 fnp->physname = physname ? physname : "";
12831 }
12832
c906108c 12833 fnp->type = alloc_type (objfile);
f792889a
DJ
12834 this_type = read_type_die (die, cu);
12835 if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
c906108c 12836 {
f792889a 12837 int nparams = TYPE_NFIELDS (this_type);
c906108c 12838
f792889a 12839 /* TYPE is the domain of this method, and THIS_TYPE is the type
e26fb1d7
DC
12840 of the method itself (TYPE_CODE_METHOD). */
12841 smash_to_method_type (fnp->type, type,
f792889a
DJ
12842 TYPE_TARGET_TYPE (this_type),
12843 TYPE_FIELDS (this_type),
12844 TYPE_NFIELDS (this_type),
12845 TYPE_VARARGS (this_type));
c906108c
SS
12846
12847 /* Handle static member functions.
c5aa993b 12848 Dwarf2 has no clean way to discern C++ static and non-static
0963b4bd
MS
12849 member functions. G++ helps GDB by marking the first
12850 parameter for non-static member functions (which is the this
12851 pointer) as artificial. We obtain this information from
12852 read_subroutine_type via TYPE_FIELD_ARTIFICIAL. */
f792889a 12853 if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
c906108c
SS
12854 fnp->voffset = VOFFSET_STATIC;
12855 }
12856 else
e2e0b3e5 12857 complaint (&symfile_complaints, _("member function type missing for '%s'"),
3da10d80 12858 dwarf2_full_name (fieldname, die, cu));
c906108c
SS
12859
12860 /* Get fcontext from DW_AT_containing_type if present. */
e142c38c 12861 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
e7c27a73 12862 fnp->fcontext = die_containing_type (die, cu);
c906108c 12863
3e43a32a
MS
12864 /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
12865 is_volatile is irrelevant, as it is needed by gdb_mangle_name only. */
c906108c
SS
12866
12867 /* Get accessibility. */
e142c38c 12868 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c 12869 if (attr)
60d5a603
JK
12870 accessibility = DW_UNSND (attr);
12871 else
12872 accessibility = dwarf2_default_access_attribute (die, cu);
12873 switch (accessibility)
c906108c 12874 {
60d5a603
JK
12875 case DW_ACCESS_private:
12876 fnp->is_private = 1;
12877 break;
12878 case DW_ACCESS_protected:
12879 fnp->is_protected = 1;
12880 break;
c906108c
SS
12881 }
12882
b02dede2 12883 /* Check for artificial methods. */
e142c38c 12884 attr = dwarf2_attr (die, DW_AT_artificial, cu);
b02dede2
DJ
12885 if (attr && DW_UNSND (attr) != 0)
12886 fnp->is_artificial = 1;
12887
7d27a96d
TT
12888 fnp->is_constructor = dwarf2_is_constructor (die, cu);
12889
0d564a31 12890 /* Get index in virtual function table if it is a virtual member
aec5aa8b
TT
12891 function. For older versions of GCC, this is an offset in the
12892 appropriate virtual table, as specified by DW_AT_containing_type.
12893 For everyone else, it is an expression to be evaluated relative
0d564a31
DJ
12894 to the object address. */
12895
e142c38c 12896 attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
aec5aa8b 12897 if (attr)
8e19ed76 12898 {
aec5aa8b 12899 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
8e19ed76 12900 {
aec5aa8b
TT
12901 if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
12902 {
12903 /* Old-style GCC. */
12904 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
12905 }
12906 else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
12907 || (DW_BLOCK (attr)->size > 1
12908 && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
12909 && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
12910 {
12911 struct dwarf_block blk;
12912 int offset;
12913
12914 offset = (DW_BLOCK (attr)->data[0] == DW_OP_deref
12915 ? 1 : 2);
12916 blk.size = DW_BLOCK (attr)->size - offset;
12917 blk.data = DW_BLOCK (attr)->data + offset;
12918 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
12919 if ((fnp->voffset % cu->header.addr_size) != 0)
12920 dwarf2_complex_location_expr_complaint ();
12921 else
12922 fnp->voffset /= cu->header.addr_size;
12923 fnp->voffset += 2;
12924 }
12925 else
12926 dwarf2_complex_location_expr_complaint ();
12927
12928 if (!fnp->fcontext)
7e993ebf
KS
12929 {
12930 /* If there is no `this' field and no DW_AT_containing_type,
12931 we cannot actually find a base class context for the
12932 vtable! */
12933 if (TYPE_NFIELDS (this_type) == 0
12934 || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
12935 {
12936 complaint (&symfile_complaints,
12937 _("cannot determine context for virtual member "
12938 "function \"%s\" (offset %d)"),
12939 fieldname, die->offset.sect_off);
12940 }
12941 else
12942 {
12943 fnp->fcontext
12944 = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
12945 }
12946 }
aec5aa8b 12947 }
3690dd37 12948 else if (attr_form_is_section_offset (attr))
8e19ed76 12949 {
4d3c2250 12950 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
12951 }
12952 else
12953 {
4d3c2250
KB
12954 dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
12955 fieldname);
8e19ed76 12956 }
0d564a31 12957 }
d48cc9dd
DJ
12958 else
12959 {
12960 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
12961 if (attr && DW_UNSND (attr))
12962 {
12963 /* GCC does this, as of 2008-08-25; PR debug/37237. */
12964 complaint (&symfile_complaints,
3e43a32a
MS
12965 _("Member function \"%s\" (offset %d) is virtual "
12966 "but the vtable offset is not specified"),
b64f50a1 12967 fieldname, die->offset.sect_off);
9655fd1a 12968 ALLOCATE_CPLUS_STRUCT_TYPE (type);
d48cc9dd
DJ
12969 TYPE_CPLUS_DYNAMIC (type) = 1;
12970 }
12971 }
c906108c
SS
12972}
12973
12974/* Create the vector of member function fields, and attach it to the type. */
12975
12976static void
fba45db2 12977dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 12978 struct dwarf2_cu *cu)
c906108c
SS
12979{
12980 struct fnfieldlist *flp;
c906108c
SS
12981 int i;
12982
b4ba55a1 12983 if (cu->language == language_ada)
a73c6dcd 12984 error (_("unexpected member functions in Ada type"));
b4ba55a1 12985
c906108c
SS
12986 ALLOCATE_CPLUS_STRUCT_TYPE (type);
12987 TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
12988 TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
12989
12990 for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
12991 {
12992 struct nextfnfield *nfp = flp->head;
12993 struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
12994 int k;
12995
12996 TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
12997 TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
12998 fn_flp->fn_fields = (struct fn_field *)
12999 TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
13000 for (k = flp->length; (k--, nfp); nfp = nfp->next)
c5aa993b 13001 fn_flp->fn_fields[k] = nfp->fnfield;
c906108c
SS
13002 }
13003
13004 TYPE_NFN_FIELDS (type) = fip->nfnfields;
c906108c
SS
13005}
13006
1168df01
JB
13007/* Returns non-zero if NAME is the name of a vtable member in CU's
13008 language, zero otherwise. */
13009static int
13010is_vtable_name (const char *name, struct dwarf2_cu *cu)
13011{
13012 static const char vptr[] = "_vptr";
987504bb 13013 static const char vtable[] = "vtable";
1168df01 13014
987504bb
JJ
13015 /* Look for the C++ and Java forms of the vtable. */
13016 if ((cu->language == language_java
61012eef
GB
13017 && startswith (name, vtable))
13018 || (startswith (name, vptr)
987504bb 13019 && is_cplus_marker (name[sizeof (vptr) - 1])))
1168df01
JB
13020 return 1;
13021
13022 return 0;
13023}
13024
c0dd20ea 13025/* GCC outputs unnamed structures that are really pointers to member
0b92b5bb
TT
13026 functions, with the ABI-specified layout. If TYPE describes
13027 such a structure, smash it into a member function type.
61049d3b
DJ
13028
13029 GCC shouldn't do this; it should just output pointer to member DIEs.
13030 This is GCC PR debug/28767. */
c0dd20ea 13031
0b92b5bb
TT
13032static void
13033quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
c0dd20ea 13034{
09e2d7c7 13035 struct type *pfn_type, *self_type, *new_type;
c0dd20ea
DJ
13036
13037 /* Check for a structure with no name and two children. */
0b92b5bb
TT
13038 if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
13039 return;
c0dd20ea
DJ
13040
13041 /* Check for __pfn and __delta members. */
0b92b5bb
TT
13042 if (TYPE_FIELD_NAME (type, 0) == NULL
13043 || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
13044 || TYPE_FIELD_NAME (type, 1) == NULL
13045 || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
13046 return;
c0dd20ea
DJ
13047
13048 /* Find the type of the method. */
0b92b5bb 13049 pfn_type = TYPE_FIELD_TYPE (type, 0);
c0dd20ea
DJ
13050 if (pfn_type == NULL
13051 || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
13052 || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
0b92b5bb 13053 return;
c0dd20ea
DJ
13054
13055 /* Look for the "this" argument. */
13056 pfn_type = TYPE_TARGET_TYPE (pfn_type);
13057 if (TYPE_NFIELDS (pfn_type) == 0
0b92b5bb 13058 /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
c0dd20ea 13059 || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
0b92b5bb 13060 return;
c0dd20ea 13061
09e2d7c7 13062 self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
0b92b5bb 13063 new_type = alloc_type (objfile);
09e2d7c7 13064 smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
c0dd20ea
DJ
13065 TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
13066 TYPE_VARARGS (pfn_type));
0b92b5bb 13067 smash_to_methodptr_type (type, new_type);
c0dd20ea 13068}
1168df01 13069
685b1105
JK
13070/* Return non-zero if the CU's PRODUCER string matches the Intel C/C++ compiler
13071 (icc). */
13072
13073static int
13074producer_is_icc (struct dwarf2_cu *cu)
13075{
13076 if (!cu->checked_producer)
13077 check_producer (cu);
13078
13079 return cu->producer_is_icc;
13080}
13081
c906108c 13082/* Called when we find the DIE that starts a structure or union scope
c767944b
DJ
13083 (definition) to create a type for the structure or union. Fill in
13084 the type's name and general properties; the members will not be
83655187
DE
13085 processed until process_structure_scope. A symbol table entry for
13086 the type will also not be done until process_structure_scope (assuming
13087 the type has a name).
c906108c 13088
c767944b
DJ
13089 NOTE: we need to call these functions regardless of whether or not the
13090 DIE has a DW_AT_name attribute, since it might be an anonymous
c906108c 13091 structure or union. This gets the type entered into our set of
83655187 13092 user defined types. */
c906108c 13093
f792889a 13094static struct type *
134d01f1 13095read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13096{
e7c27a73 13097 struct objfile *objfile = cu->objfile;
c906108c
SS
13098 struct type *type;
13099 struct attribute *attr;
15d034d0 13100 const char *name;
c906108c 13101
348e048f
DE
13102 /* If the definition of this type lives in .debug_types, read that type.
13103 Don't follow DW_AT_specification though, that will take us back up
13104 the chain and we want to go down. */
45e58e77 13105 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
348e048f
DE
13106 if (attr)
13107 {
ac9ec31b 13108 type = get_DW_AT_signature_type (die, attr, cu);
9dc481d3 13109
ac9ec31b 13110 /* The type's CU may not be the same as CU.
02142a6c 13111 Ensure TYPE is recorded with CU in die_type_hash. */
348e048f
DE
13112 return set_die_type (die, type, cu);
13113 }
13114
c0dd20ea 13115 type = alloc_type (objfile);
c906108c 13116 INIT_CPLUS_SPECIFIC (type);
93311388 13117
39cbfefa
DJ
13118 name = dwarf2_name (die, cu);
13119 if (name != NULL)
c906108c 13120 {
987504bb
JJ
13121 if (cu->language == language_cplus
13122 || cu->language == language_java)
63d06c5c 13123 {
15d034d0 13124 const char *full_name = dwarf2_full_name (name, die, cu);
3da10d80
KS
13125
13126 /* dwarf2_full_name might have already finished building the DIE's
13127 type. If so, there is no need to continue. */
13128 if (get_die_type (die, cu) != NULL)
13129 return get_die_type (die, cu);
13130
13131 TYPE_TAG_NAME (type) = full_name;
94af9270
KS
13132 if (die->tag == DW_TAG_structure_type
13133 || die->tag == DW_TAG_class_type)
13134 TYPE_NAME (type) = TYPE_TAG_NAME (type);
63d06c5c
DC
13135 }
13136 else
13137 {
d8151005
DJ
13138 /* The name is already allocated along with this objfile, so
13139 we don't need to duplicate it for the type. */
7d455152 13140 TYPE_TAG_NAME (type) = name;
94af9270
KS
13141 if (die->tag == DW_TAG_class_type)
13142 TYPE_NAME (type) = TYPE_TAG_NAME (type);
63d06c5c 13143 }
c906108c
SS
13144 }
13145
13146 if (die->tag == DW_TAG_structure_type)
13147 {
13148 TYPE_CODE (type) = TYPE_CODE_STRUCT;
13149 }
13150 else if (die->tag == DW_TAG_union_type)
13151 {
13152 TYPE_CODE (type) = TYPE_CODE_UNION;
13153 }
13154 else
13155 {
4753d33b 13156 TYPE_CODE (type) = TYPE_CODE_STRUCT;
c906108c
SS
13157 }
13158
0cc2414c
TT
13159 if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
13160 TYPE_DECLARED_CLASS (type) = 1;
13161
e142c38c 13162 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
13163 if (attr)
13164 {
13165 TYPE_LENGTH (type) = DW_UNSND (attr);
13166 }
13167 else
13168 {
13169 TYPE_LENGTH (type) = 0;
13170 }
13171
422b1cb0 13172 if (producer_is_icc (cu) && (TYPE_LENGTH (type) == 0))
685b1105
JK
13173 {
13174 /* ICC does not output the required DW_AT_declaration
13175 on incomplete types, but gives them a size of zero. */
422b1cb0 13176 TYPE_STUB (type) = 1;
685b1105
JK
13177 }
13178 else
13179 TYPE_STUB_SUPPORTED (type) = 1;
13180
dc718098 13181 if (die_is_declaration (die, cu))
876cecd0 13182 TYPE_STUB (type) = 1;
a6c727b2
DJ
13183 else if (attr == NULL && die->child == NULL
13184 && producer_is_realview (cu->producer))
13185 /* RealView does not output the required DW_AT_declaration
13186 on incomplete types. */
13187 TYPE_STUB (type) = 1;
dc718098 13188
c906108c
SS
13189 /* We need to add the type field to the die immediately so we don't
13190 infinitely recurse when dealing with pointers to the structure
0963b4bd 13191 type within the structure itself. */
1c379e20 13192 set_die_type (die, type, cu);
c906108c 13193
7e314c57
JK
13194 /* set_die_type should be already done. */
13195 set_descriptive_type (type, die, cu);
13196
c767944b
DJ
13197 return type;
13198}
13199
13200/* Finish creating a structure or union type, including filling in
13201 its members and creating a symbol for it. */
13202
13203static void
13204process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
13205{
13206 struct objfile *objfile = cu->objfile;
ca040673 13207 struct die_info *child_die;
c767944b
DJ
13208 struct type *type;
13209
13210 type = get_die_type (die, cu);
13211 if (type == NULL)
13212 type = read_structure_type (die, cu);
13213
e142c38c 13214 if (die->child != NULL && ! die_is_declaration (die, cu))
c906108c
SS
13215 {
13216 struct field_info fi;
34eaf542 13217 VEC (symbolp) *template_args = NULL;
c767944b 13218 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
c906108c
SS
13219
13220 memset (&fi, 0, sizeof (struct field_info));
13221
639d11d3 13222 child_die = die->child;
c906108c
SS
13223
13224 while (child_die && child_die->tag)
13225 {
a9a9bd0f
DC
13226 if (child_die->tag == DW_TAG_member
13227 || child_die->tag == DW_TAG_variable)
c906108c 13228 {
a9a9bd0f
DC
13229 /* NOTE: carlton/2002-11-05: A C++ static data member
13230 should be a DW_TAG_member that is a declaration, but
13231 all versions of G++ as of this writing (so through at
13232 least 3.2.1) incorrectly generate DW_TAG_variable
13233 tags for them instead. */
e7c27a73 13234 dwarf2_add_field (&fi, child_die, cu);
c906108c 13235 }
8713b1b1 13236 else if (child_die->tag == DW_TAG_subprogram)
c906108c 13237 {
0963b4bd 13238 /* C++ member function. */
e7c27a73 13239 dwarf2_add_member_fn (&fi, child_die, type, cu);
c906108c
SS
13240 }
13241 else if (child_die->tag == DW_TAG_inheritance)
13242 {
13243 /* C++ base class field. */
e7c27a73 13244 dwarf2_add_field (&fi, child_die, cu);
c906108c 13245 }
98751a41
JK
13246 else if (child_die->tag == DW_TAG_typedef)
13247 dwarf2_add_typedef (&fi, child_die, cu);
34eaf542
TT
13248 else if (child_die->tag == DW_TAG_template_type_param
13249 || child_die->tag == DW_TAG_template_value_param)
13250 {
13251 struct symbol *arg = new_symbol (child_die, NULL, cu);
13252
f1078f66
DJ
13253 if (arg != NULL)
13254 VEC_safe_push (symbolp, template_args, arg);
34eaf542
TT
13255 }
13256
c906108c
SS
13257 child_die = sibling_die (child_die);
13258 }
13259
34eaf542
TT
13260 /* Attach template arguments to type. */
13261 if (! VEC_empty (symbolp, template_args))
13262 {
13263 ALLOCATE_CPLUS_STRUCT_TYPE (type);
13264 TYPE_N_TEMPLATE_ARGUMENTS (type)
13265 = VEC_length (symbolp, template_args);
13266 TYPE_TEMPLATE_ARGUMENTS (type)
13267 = obstack_alloc (&objfile->objfile_obstack,
13268 (TYPE_N_TEMPLATE_ARGUMENTS (type)
13269 * sizeof (struct symbol *)));
13270 memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
13271 VEC_address (symbolp, template_args),
13272 (TYPE_N_TEMPLATE_ARGUMENTS (type)
13273 * sizeof (struct symbol *)));
13274 VEC_free (symbolp, template_args);
13275 }
13276
c906108c
SS
13277 /* Attach fields and member functions to the type. */
13278 if (fi.nfields)
e7c27a73 13279 dwarf2_attach_fields_to_type (&fi, type, cu);
c906108c
SS
13280 if (fi.nfnfields)
13281 {
e7c27a73 13282 dwarf2_attach_fn_fields_to_type (&fi, type, cu);
c906108c 13283
c5aa993b 13284 /* Get the type which refers to the base class (possibly this
c906108c 13285 class itself) which contains the vtable pointer for the current
0d564a31
DJ
13286 class from the DW_AT_containing_type attribute. This use of
13287 DW_AT_containing_type is a GNU extension. */
c906108c 13288
e142c38c 13289 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
c906108c 13290 {
e7c27a73 13291 struct type *t = die_containing_type (die, cu);
c906108c 13292
ae6ae975 13293 set_type_vptr_basetype (type, t);
c906108c
SS
13294 if (type == t)
13295 {
c906108c
SS
13296 int i;
13297
13298 /* Our own class provides vtbl ptr. */
13299 for (i = TYPE_NFIELDS (t) - 1;
13300 i >= TYPE_N_BASECLASSES (t);
13301 --i)
13302 {
0d5cff50 13303 const char *fieldname = TYPE_FIELD_NAME (t, i);
c906108c 13304
1168df01 13305 if (is_vtable_name (fieldname, cu))
c906108c 13306 {
ae6ae975 13307 set_type_vptr_fieldno (type, i);
c906108c
SS
13308 break;
13309 }
13310 }
13311
13312 /* Complain if virtual function table field not found. */
13313 if (i < TYPE_N_BASECLASSES (t))
4d3c2250 13314 complaint (&symfile_complaints,
3e43a32a
MS
13315 _("virtual function table pointer "
13316 "not found when defining class '%s'"),
4d3c2250
KB
13317 TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
13318 "");
c906108c
SS
13319 }
13320 else
13321 {
ae6ae975 13322 set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
c906108c
SS
13323 }
13324 }
f6235d4c 13325 else if (cu->producer
61012eef 13326 && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
f6235d4c
EZ
13327 {
13328 /* The IBM XLC compiler does not provide direct indication
13329 of the containing type, but the vtable pointer is
13330 always named __vfp. */
13331
13332 int i;
13333
13334 for (i = TYPE_NFIELDS (type) - 1;
13335 i >= TYPE_N_BASECLASSES (type);
13336 --i)
13337 {
13338 if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
13339 {
ae6ae975
DE
13340 set_type_vptr_fieldno (type, i);
13341 set_type_vptr_basetype (type, type);
f6235d4c
EZ
13342 break;
13343 }
13344 }
13345 }
c906108c 13346 }
98751a41
JK
13347
13348 /* Copy fi.typedef_field_list linked list elements content into the
13349 allocated array TYPE_TYPEDEF_FIELD_ARRAY (type). */
13350 if (fi.typedef_field_list)
13351 {
13352 int i = fi.typedef_field_list_count;
13353
a0d7a4ff 13354 ALLOCATE_CPLUS_STRUCT_TYPE (type);
98751a41
JK
13355 TYPE_TYPEDEF_FIELD_ARRAY (type)
13356 = TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i);
13357 TYPE_TYPEDEF_FIELD_COUNT (type) = i;
13358
13359 /* Reverse the list order to keep the debug info elements order. */
13360 while (--i >= 0)
13361 {
13362 struct typedef_field *dest, *src;
6e70227d 13363
98751a41
JK
13364 dest = &TYPE_TYPEDEF_FIELD (type, i);
13365 src = &fi.typedef_field_list->field;
13366 fi.typedef_field_list = fi.typedef_field_list->next;
13367 *dest = *src;
13368 }
13369 }
c767944b
DJ
13370
13371 do_cleanups (back_to);
eb2a6f42
TT
13372
13373 if (HAVE_CPLUS_STRUCT (type))
13374 TYPE_CPLUS_REALLY_JAVA (type) = cu->language == language_java;
c906108c 13375 }
63d06c5c 13376
bb5ed363 13377 quirk_gcc_member_function_pointer (type, objfile);
0b92b5bb 13378
90aeadfc
DC
13379 /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
13380 snapshots) has been known to create a die giving a declaration
13381 for a class that has, as a child, a die giving a definition for a
13382 nested class. So we have to process our children even if the
13383 current die is a declaration. Normally, of course, a declaration
13384 won't have any children at all. */
134d01f1 13385
ca040673
DE
13386 child_die = die->child;
13387
90aeadfc
DC
13388 while (child_die != NULL && child_die->tag)
13389 {
13390 if (child_die->tag == DW_TAG_member
13391 || child_die->tag == DW_TAG_variable
34eaf542
TT
13392 || child_die->tag == DW_TAG_inheritance
13393 || child_die->tag == DW_TAG_template_value_param
13394 || child_die->tag == DW_TAG_template_type_param)
134d01f1 13395 {
90aeadfc 13396 /* Do nothing. */
134d01f1 13397 }
90aeadfc
DC
13398 else
13399 process_die (child_die, cu);
134d01f1 13400
90aeadfc 13401 child_die = sibling_die (child_die);
134d01f1
DJ
13402 }
13403
fa4028e9
JB
13404 /* Do not consider external references. According to the DWARF standard,
13405 these DIEs are identified by the fact that they have no byte_size
13406 attribute, and a declaration attribute. */
13407 if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
13408 || !die_is_declaration (die, cu))
c767944b 13409 new_symbol (die, type, cu);
134d01f1
DJ
13410}
13411
55426c9d
JB
13412/* Assuming DIE is an enumeration type, and TYPE is its associated type,
13413 update TYPE using some information only available in DIE's children. */
13414
13415static void
13416update_enumeration_type_from_children (struct die_info *die,
13417 struct type *type,
13418 struct dwarf2_cu *cu)
13419{
13420 struct obstack obstack;
60f7655a 13421 struct die_info *child_die;
55426c9d
JB
13422 int unsigned_enum = 1;
13423 int flag_enum = 1;
13424 ULONGEST mask = 0;
13425 struct cleanup *old_chain;
13426
13427 obstack_init (&obstack);
13428 old_chain = make_cleanup_obstack_free (&obstack);
13429
60f7655a
DE
13430 for (child_die = die->child;
13431 child_die != NULL && child_die->tag;
13432 child_die = sibling_die (child_die))
55426c9d
JB
13433 {
13434 struct attribute *attr;
13435 LONGEST value;
13436 const gdb_byte *bytes;
13437 struct dwarf2_locexpr_baton *baton;
13438 const char *name;
60f7655a 13439
55426c9d
JB
13440 if (child_die->tag != DW_TAG_enumerator)
13441 continue;
13442
13443 attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
13444 if (attr == NULL)
13445 continue;
13446
13447 name = dwarf2_name (child_die, cu);
13448 if (name == NULL)
13449 name = "<anonymous enumerator>";
13450
13451 dwarf2_const_value_attr (attr, type, name, &obstack, cu,
13452 &value, &bytes, &baton);
13453 if (value < 0)
13454 {
13455 unsigned_enum = 0;
13456 flag_enum = 0;
13457 }
13458 else if ((mask & value) != 0)
13459 flag_enum = 0;
13460 else
13461 mask |= value;
13462
13463 /* If we already know that the enum type is neither unsigned, nor
13464 a flag type, no need to look at the rest of the enumerates. */
13465 if (!unsigned_enum && !flag_enum)
13466 break;
55426c9d
JB
13467 }
13468
13469 if (unsigned_enum)
13470 TYPE_UNSIGNED (type) = 1;
13471 if (flag_enum)
13472 TYPE_FLAG_ENUM (type) = 1;
13473
13474 do_cleanups (old_chain);
13475}
13476
134d01f1
DJ
13477/* Given a DW_AT_enumeration_type die, set its type. We do not
13478 complete the type's fields yet, or create any symbols. */
c906108c 13479
f792889a 13480static struct type *
134d01f1 13481read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13482{
e7c27a73 13483 struct objfile *objfile = cu->objfile;
c906108c 13484 struct type *type;
c906108c 13485 struct attribute *attr;
0114d602 13486 const char *name;
134d01f1 13487
348e048f
DE
13488 /* If the definition of this type lives in .debug_types, read that type.
13489 Don't follow DW_AT_specification though, that will take us back up
13490 the chain and we want to go down. */
45e58e77 13491 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
348e048f
DE
13492 if (attr)
13493 {
ac9ec31b 13494 type = get_DW_AT_signature_type (die, attr, cu);
9dc481d3 13495
ac9ec31b 13496 /* The type's CU may not be the same as CU.
02142a6c 13497 Ensure TYPE is recorded with CU in die_type_hash. */
348e048f
DE
13498 return set_die_type (die, type, cu);
13499 }
13500
c906108c
SS
13501 type = alloc_type (objfile);
13502
13503 TYPE_CODE (type) = TYPE_CODE_ENUM;
94af9270 13504 name = dwarf2_full_name (NULL, die, cu);
39cbfefa 13505 if (name != NULL)
7d455152 13506 TYPE_TAG_NAME (type) = name;
c906108c 13507
0626fc76
TT
13508 attr = dwarf2_attr (die, DW_AT_type, cu);
13509 if (attr != NULL)
13510 {
13511 struct type *underlying_type = die_type (die, cu);
13512
13513 TYPE_TARGET_TYPE (type) = underlying_type;
13514 }
13515
e142c38c 13516 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
13517 if (attr)
13518 {
13519 TYPE_LENGTH (type) = DW_UNSND (attr);
13520 }
13521 else
13522 {
13523 TYPE_LENGTH (type) = 0;
13524 }
13525
137033e9
JB
13526 /* The enumeration DIE can be incomplete. In Ada, any type can be
13527 declared as private in the package spec, and then defined only
13528 inside the package body. Such types are known as Taft Amendment
13529 Types. When another package uses such a type, an incomplete DIE
13530 may be generated by the compiler. */
02eb380e 13531 if (die_is_declaration (die, cu))
876cecd0 13532 TYPE_STUB (type) = 1;
02eb380e 13533
0626fc76
TT
13534 /* Finish the creation of this type by using the enum's children.
13535 We must call this even when the underlying type has been provided
13536 so that we can determine if we're looking at a "flag" enum. */
55426c9d
JB
13537 update_enumeration_type_from_children (die, type, cu);
13538
0626fc76
TT
13539 /* If this type has an underlying type that is not a stub, then we
13540 may use its attributes. We always use the "unsigned" attribute
13541 in this situation, because ordinarily we guess whether the type
13542 is unsigned -- but the guess can be wrong and the underlying type
13543 can tell us the reality. However, we defer to a local size
13544 attribute if one exists, because this lets the compiler override
13545 the underlying type if needed. */
13546 if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
13547 {
13548 TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
13549 if (TYPE_LENGTH (type) == 0)
13550 TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
13551 }
13552
3d567982
TT
13553 TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
13554
f792889a 13555 return set_die_type (die, type, cu);
134d01f1
DJ
13556}
13557
13558/* Given a pointer to a die which begins an enumeration, process all
13559 the dies that define the members of the enumeration, and create the
13560 symbol for the enumeration type.
13561
13562 NOTE: We reverse the order of the element list. */
13563
13564static void
13565process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
13566{
f792889a 13567 struct type *this_type;
134d01f1 13568
f792889a
DJ
13569 this_type = get_die_type (die, cu);
13570 if (this_type == NULL)
13571 this_type = read_enumeration_type (die, cu);
9dc481d3 13572
639d11d3 13573 if (die->child != NULL)
c906108c 13574 {
9dc481d3
DE
13575 struct die_info *child_die;
13576 struct symbol *sym;
13577 struct field *fields = NULL;
13578 int num_fields = 0;
15d034d0 13579 const char *name;
9dc481d3 13580
639d11d3 13581 child_die = die->child;
c906108c
SS
13582 while (child_die && child_die->tag)
13583 {
13584 if (child_die->tag != DW_TAG_enumerator)
13585 {
e7c27a73 13586 process_die (child_die, cu);
c906108c
SS
13587 }
13588 else
13589 {
39cbfefa
DJ
13590 name = dwarf2_name (child_die, cu);
13591 if (name)
c906108c 13592 {
f792889a 13593 sym = new_symbol (child_die, this_type, cu);
c906108c
SS
13594
13595 if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
13596 {
13597 fields = (struct field *)
13598 xrealloc (fields,
13599 (num_fields + DW_FIELD_ALLOC_CHUNK)
c5aa993b 13600 * sizeof (struct field));
c906108c
SS
13601 }
13602
3567439c 13603 FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
c906108c 13604 FIELD_TYPE (fields[num_fields]) = NULL;
14e75d8e 13605 SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
c906108c
SS
13606 FIELD_BITSIZE (fields[num_fields]) = 0;
13607
13608 num_fields++;
13609 }
13610 }
13611
13612 child_die = sibling_die (child_die);
13613 }
13614
13615 if (num_fields)
13616 {
f792889a
DJ
13617 TYPE_NFIELDS (this_type) = num_fields;
13618 TYPE_FIELDS (this_type) = (struct field *)
13619 TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
13620 memcpy (TYPE_FIELDS (this_type), fields,
c906108c 13621 sizeof (struct field) * num_fields);
b8c9b27d 13622 xfree (fields);
c906108c 13623 }
c906108c 13624 }
134d01f1 13625
6c83ed52
TT
13626 /* If we are reading an enum from a .debug_types unit, and the enum
13627 is a declaration, and the enum is not the signatured type in the
13628 unit, then we do not want to add a symbol for it. Adding a
13629 symbol would in some cases obscure the true definition of the
13630 enum, giving users an incomplete type when the definition is
13631 actually available. Note that we do not want to do this for all
13632 enums which are just declarations, because C++0x allows forward
13633 enum declarations. */
3019eac3 13634 if (cu->per_cu->is_debug_types
6c83ed52
TT
13635 && die_is_declaration (die, cu))
13636 {
52dc124a 13637 struct signatured_type *sig_type;
6c83ed52 13638
c0f78cd4 13639 sig_type = (struct signatured_type *) cu->per_cu;
3019eac3
DE
13640 gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
13641 if (sig_type->type_offset_in_section.sect_off != die->offset.sect_off)
6c83ed52
TT
13642 return;
13643 }
13644
f792889a 13645 new_symbol (die, this_type, cu);
c906108c
SS
13646}
13647
13648/* Extract all information from a DW_TAG_array_type DIE and put it in
13649 the DIE's type field. For now, this only handles one dimensional
13650 arrays. */
13651
f792889a 13652static struct type *
e7c27a73 13653read_array_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13654{
e7c27a73 13655 struct objfile *objfile = cu->objfile;
c906108c 13656 struct die_info *child_die;
7e314c57 13657 struct type *type;
c906108c
SS
13658 struct type *element_type, *range_type, *index_type;
13659 struct type **range_types = NULL;
13660 struct attribute *attr;
13661 int ndim = 0;
13662 struct cleanup *back_to;
15d034d0 13663 const char *name;
dc53a7ad 13664 unsigned int bit_stride = 0;
c906108c 13665
e7c27a73 13666 element_type = die_type (die, cu);
c906108c 13667
7e314c57
JK
13668 /* The die_type call above may have already set the type for this DIE. */
13669 type = get_die_type (die, cu);
13670 if (type)
13671 return type;
13672
dc53a7ad
JB
13673 attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
13674 if (attr != NULL)
13675 bit_stride = DW_UNSND (attr) * 8;
13676
13677 attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
13678 if (attr != NULL)
13679 bit_stride = DW_UNSND (attr);
13680
c906108c
SS
13681 /* Irix 6.2 native cc creates array types without children for
13682 arrays with unspecified length. */
639d11d3 13683 if (die->child == NULL)
c906108c 13684 {
46bf5051 13685 index_type = objfile_type (objfile)->builtin_int;
0c9c3474 13686 range_type = create_static_range_type (NULL, index_type, 0, -1);
dc53a7ad
JB
13687 type = create_array_type_with_stride (NULL, element_type, range_type,
13688 bit_stride);
f792889a 13689 return set_die_type (die, type, cu);
c906108c
SS
13690 }
13691
13692 back_to = make_cleanup (null_cleanup, NULL);
639d11d3 13693 child_die = die->child;
c906108c
SS
13694 while (child_die && child_die->tag)
13695 {
13696 if (child_die->tag == DW_TAG_subrange_type)
13697 {
f792889a 13698 struct type *child_type = read_type_die (child_die, cu);
9a619af0 13699
f792889a 13700 if (child_type != NULL)
a02abb62 13701 {
0963b4bd
MS
13702 /* The range type was succesfully read. Save it for the
13703 array type creation. */
a02abb62
JB
13704 if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
13705 {
13706 range_types = (struct type **)
13707 xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
13708 * sizeof (struct type *));
13709 if (ndim == 0)
13710 make_cleanup (free_current_contents, &range_types);
13711 }
f792889a 13712 range_types[ndim++] = child_type;
a02abb62 13713 }
c906108c
SS
13714 }
13715 child_die = sibling_die (child_die);
13716 }
13717
13718 /* Dwarf2 dimensions are output from left to right, create the
13719 necessary array types in backwards order. */
7ca2d3a3 13720
c906108c 13721 type = element_type;
7ca2d3a3
DL
13722
13723 if (read_array_order (die, cu) == DW_ORD_col_major)
13724 {
13725 int i = 0;
9a619af0 13726
7ca2d3a3 13727 while (i < ndim)
dc53a7ad
JB
13728 type = create_array_type_with_stride (NULL, type, range_types[i++],
13729 bit_stride);
7ca2d3a3
DL
13730 }
13731 else
13732 {
13733 while (ndim-- > 0)
dc53a7ad
JB
13734 type = create_array_type_with_stride (NULL, type, range_types[ndim],
13735 bit_stride);
7ca2d3a3 13736 }
c906108c 13737
f5f8a009
EZ
13738 /* Understand Dwarf2 support for vector types (like they occur on
13739 the PowerPC w/ AltiVec). Gcc just adds another attribute to the
13740 array type. This is not part of the Dwarf2/3 standard yet, but a
13741 custom vendor extension. The main difference between a regular
13742 array and the vector variant is that vectors are passed by value
13743 to functions. */
e142c38c 13744 attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
f5f8a009 13745 if (attr)
ea37ba09 13746 make_vector_type (type);
f5f8a009 13747
dbc98a8b
KW
13748 /* The DIE may have DW_AT_byte_size set. For example an OpenCL
13749 implementation may choose to implement triple vectors using this
13750 attribute. */
13751 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13752 if (attr)
13753 {
13754 if (DW_UNSND (attr) >= TYPE_LENGTH (type))
13755 TYPE_LENGTH (type) = DW_UNSND (attr);
13756 else
3e43a32a
MS
13757 complaint (&symfile_complaints,
13758 _("DW_AT_byte_size for array type smaller "
13759 "than the total size of elements"));
dbc98a8b
KW
13760 }
13761
39cbfefa
DJ
13762 name = dwarf2_name (die, cu);
13763 if (name)
13764 TYPE_NAME (type) = name;
6e70227d 13765
0963b4bd 13766 /* Install the type in the die. */
7e314c57
JK
13767 set_die_type (die, type, cu);
13768
13769 /* set_die_type should be already done. */
b4ba55a1
JB
13770 set_descriptive_type (type, die, cu);
13771
c906108c
SS
13772 do_cleanups (back_to);
13773
7e314c57 13774 return type;
c906108c
SS
13775}
13776
7ca2d3a3 13777static enum dwarf_array_dim_ordering
6e70227d 13778read_array_order (struct die_info *die, struct dwarf2_cu *cu)
7ca2d3a3
DL
13779{
13780 struct attribute *attr;
13781
13782 attr = dwarf2_attr (die, DW_AT_ordering, cu);
13783
13784 if (attr) return DW_SND (attr);
13785
0963b4bd
MS
13786 /* GNU F77 is a special case, as at 08/2004 array type info is the
13787 opposite order to the dwarf2 specification, but data is still
13788 laid out as per normal fortran.
7ca2d3a3 13789
0963b4bd
MS
13790 FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
13791 version checking. */
7ca2d3a3 13792
905e0470
PM
13793 if (cu->language == language_fortran
13794 && cu->producer && strstr (cu->producer, "GNU F77"))
7ca2d3a3
DL
13795 {
13796 return DW_ORD_row_major;
13797 }
13798
6e70227d 13799 switch (cu->language_defn->la_array_ordering)
7ca2d3a3
DL
13800 {
13801 case array_column_major:
13802 return DW_ORD_col_major;
13803 case array_row_major:
13804 default:
13805 return DW_ORD_row_major;
13806 };
13807}
13808
72019c9c 13809/* Extract all information from a DW_TAG_set_type DIE and put it in
0963b4bd 13810 the DIE's type field. */
72019c9c 13811
f792889a 13812static struct type *
72019c9c
GM
13813read_set_type (struct die_info *die, struct dwarf2_cu *cu)
13814{
7e314c57
JK
13815 struct type *domain_type, *set_type;
13816 struct attribute *attr;
f792889a 13817
7e314c57
JK
13818 domain_type = die_type (die, cu);
13819
13820 /* The die_type call above may have already set the type for this DIE. */
13821 set_type = get_die_type (die, cu);
13822 if (set_type)
13823 return set_type;
13824
13825 set_type = create_set_type (NULL, domain_type);
13826
13827 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
d09039dd
PM
13828 if (attr)
13829 TYPE_LENGTH (set_type) = DW_UNSND (attr);
7e314c57 13830
f792889a 13831 return set_die_type (die, set_type, cu);
72019c9c 13832}
7ca2d3a3 13833
0971de02
TT
13834/* A helper for read_common_block that creates a locexpr baton.
13835 SYM is the symbol which we are marking as computed.
13836 COMMON_DIE is the DIE for the common block.
13837 COMMON_LOC is the location expression attribute for the common
13838 block itself.
13839 MEMBER_LOC is the location expression attribute for the particular
13840 member of the common block that we are processing.
13841 CU is the CU from which the above come. */
13842
13843static void
13844mark_common_block_symbol_computed (struct symbol *sym,
13845 struct die_info *common_die,
13846 struct attribute *common_loc,
13847 struct attribute *member_loc,
13848 struct dwarf2_cu *cu)
13849{
13850 struct objfile *objfile = dwarf2_per_objfile->objfile;
13851 struct dwarf2_locexpr_baton *baton;
13852 gdb_byte *ptr;
13853 unsigned int cu_off;
13854 enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
13855 LONGEST offset = 0;
13856
13857 gdb_assert (common_loc && member_loc);
13858 gdb_assert (attr_form_is_block (common_loc));
13859 gdb_assert (attr_form_is_block (member_loc)
13860 || attr_form_is_constant (member_loc));
13861
13862 baton = obstack_alloc (&objfile->objfile_obstack,
13863 sizeof (struct dwarf2_locexpr_baton));
13864 baton->per_cu = cu->per_cu;
13865 gdb_assert (baton->per_cu);
13866
13867 baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
13868
13869 if (attr_form_is_constant (member_loc))
13870 {
13871 offset = dwarf2_get_attr_constant_value (member_loc, 0);
13872 baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
13873 }
13874 else
13875 baton->size += DW_BLOCK (member_loc)->size;
13876
13877 ptr = obstack_alloc (&objfile->objfile_obstack, baton->size);
13878 baton->data = ptr;
13879
13880 *ptr++ = DW_OP_call4;
13881 cu_off = common_die->offset.sect_off - cu->per_cu->offset.sect_off;
13882 store_unsigned_integer (ptr, 4, byte_order, cu_off);
13883 ptr += 4;
13884
13885 if (attr_form_is_constant (member_loc))
13886 {
13887 *ptr++ = DW_OP_addr;
13888 store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
13889 ptr += cu->header.addr_size;
13890 }
13891 else
13892 {
13893 /* We have to copy the data here, because DW_OP_call4 will only
13894 use a DW_AT_location attribute. */
13895 memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
13896 ptr += DW_BLOCK (member_loc)->size;
13897 }
13898
13899 *ptr++ = DW_OP_plus;
13900 gdb_assert (ptr - baton->data == baton->size);
13901
0971de02 13902 SYMBOL_LOCATION_BATON (sym) = baton;
f1e6e072 13903 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
0971de02
TT
13904}
13905
4357ac6c
TT
13906/* Create appropriate locally-scoped variables for all the
13907 DW_TAG_common_block entries. Also create a struct common_block
13908 listing all such variables for `info common'. COMMON_BLOCK_DOMAIN
13909 is used to sepate the common blocks name namespace from regular
13910 variable names. */
c906108c
SS
13911
13912static void
e7c27a73 13913read_common_block (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13914{
0971de02
TT
13915 struct attribute *attr;
13916
13917 attr = dwarf2_attr (die, DW_AT_location, cu);
13918 if (attr)
13919 {
13920 /* Support the .debug_loc offsets. */
13921 if (attr_form_is_block (attr))
13922 {
13923 /* Ok. */
13924 }
13925 else if (attr_form_is_section_offset (attr))
13926 {
13927 dwarf2_complex_location_expr_complaint ();
13928 attr = NULL;
13929 }
13930 else
13931 {
13932 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
13933 "common block member");
13934 attr = NULL;
13935 }
13936 }
13937
639d11d3 13938 if (die->child != NULL)
c906108c 13939 {
4357ac6c
TT
13940 struct objfile *objfile = cu->objfile;
13941 struct die_info *child_die;
13942 size_t n_entries = 0, size;
13943 struct common_block *common_block;
13944 struct symbol *sym;
74ac6d43 13945
4357ac6c
TT
13946 for (child_die = die->child;
13947 child_die && child_die->tag;
13948 child_die = sibling_die (child_die))
13949 ++n_entries;
13950
13951 size = (sizeof (struct common_block)
13952 + (n_entries - 1) * sizeof (struct symbol *));
13953 common_block = obstack_alloc (&objfile->objfile_obstack, size);
13954 memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
13955 common_block->n_entries = 0;
13956
13957 for (child_die = die->child;
13958 child_die && child_die->tag;
13959 child_die = sibling_die (child_die))
13960 {
13961 /* Create the symbol in the DW_TAG_common_block block in the current
13962 symbol scope. */
e7c27a73 13963 sym = new_symbol (child_die, NULL, cu);
0971de02
TT
13964 if (sym != NULL)
13965 {
13966 struct attribute *member_loc;
13967
13968 common_block->contents[common_block->n_entries++] = sym;
13969
13970 member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
13971 cu);
13972 if (member_loc)
13973 {
13974 /* GDB has handled this for a long time, but it is
13975 not specified by DWARF. It seems to have been
13976 emitted by gfortran at least as recently as:
13977 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057. */
13978 complaint (&symfile_complaints,
13979 _("Variable in common block has "
13980 "DW_AT_data_member_location "
13981 "- DIE at 0x%x [in module %s]"),
4262abfb
JK
13982 child_die->offset.sect_off,
13983 objfile_name (cu->objfile));
0971de02
TT
13984
13985 if (attr_form_is_section_offset (member_loc))
13986 dwarf2_complex_location_expr_complaint ();
13987 else if (attr_form_is_constant (member_loc)
13988 || attr_form_is_block (member_loc))
13989 {
13990 if (attr)
13991 mark_common_block_symbol_computed (sym, die, attr,
13992 member_loc, cu);
13993 }
13994 else
13995 dwarf2_complex_location_expr_complaint ();
13996 }
13997 }
c906108c 13998 }
4357ac6c
TT
13999
14000 sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
14001 SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
c906108c
SS
14002 }
14003}
14004
0114d602 14005/* Create a type for a C++ namespace. */
d9fa45fe 14006
0114d602
DJ
14007static struct type *
14008read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
d9fa45fe 14009{
e7c27a73 14010 struct objfile *objfile = cu->objfile;
0114d602 14011 const char *previous_prefix, *name;
9219021c 14012 int is_anonymous;
0114d602
DJ
14013 struct type *type;
14014
14015 /* For extensions, reuse the type of the original namespace. */
14016 if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
14017 {
14018 struct die_info *ext_die;
14019 struct dwarf2_cu *ext_cu = cu;
9a619af0 14020
0114d602
DJ
14021 ext_die = dwarf2_extension (die, &ext_cu);
14022 type = read_type_die (ext_die, ext_cu);
9dc481d3
DE
14023
14024 /* EXT_CU may not be the same as CU.
02142a6c 14025 Ensure TYPE is recorded with CU in die_type_hash. */
0114d602
DJ
14026 return set_die_type (die, type, cu);
14027 }
9219021c 14028
e142c38c 14029 name = namespace_name (die, &is_anonymous, cu);
9219021c
DC
14030
14031 /* Now build the name of the current namespace. */
14032
0114d602
DJ
14033 previous_prefix = determine_prefix (die, cu);
14034 if (previous_prefix[0] != '\0')
14035 name = typename_concat (&objfile->objfile_obstack,
f55ee35c 14036 previous_prefix, name, 0, cu);
0114d602
DJ
14037
14038 /* Create the type. */
14039 type = init_type (TYPE_CODE_NAMESPACE, 0, 0, NULL,
14040 objfile);
abee88f2 14041 TYPE_NAME (type) = name;
0114d602
DJ
14042 TYPE_TAG_NAME (type) = TYPE_NAME (type);
14043
60531b24 14044 return set_die_type (die, type, cu);
0114d602
DJ
14045}
14046
14047/* Read a C++ namespace. */
14048
14049static void
14050read_namespace (struct die_info *die, struct dwarf2_cu *cu)
14051{
14052 struct objfile *objfile = cu->objfile;
0114d602 14053 int is_anonymous;
9219021c 14054
5c4e30ca
DC
14055 /* Add a symbol associated to this if we haven't seen the namespace
14056 before. Also, add a using directive if it's an anonymous
14057 namespace. */
9219021c 14058
f2f0e013 14059 if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
5c4e30ca
DC
14060 {
14061 struct type *type;
14062
0114d602 14063 type = read_type_die (die, cu);
e7c27a73 14064 new_symbol (die, type, cu);
5c4e30ca 14065
e8e80198 14066 namespace_name (die, &is_anonymous, cu);
5c4e30ca 14067 if (is_anonymous)
0114d602
DJ
14068 {
14069 const char *previous_prefix = determine_prefix (die, cu);
9a619af0 14070
c0cc3a76 14071 cp_add_using_directive (previous_prefix, TYPE_NAME (type), NULL,
12aaed36 14072 NULL, NULL, 0, &objfile->objfile_obstack);
0114d602 14073 }
5c4e30ca 14074 }
9219021c 14075
639d11d3 14076 if (die->child != NULL)
d9fa45fe 14077 {
639d11d3 14078 struct die_info *child_die = die->child;
6e70227d 14079
d9fa45fe
DC
14080 while (child_die && child_die->tag)
14081 {
e7c27a73 14082 process_die (child_die, cu);
d9fa45fe
DC
14083 child_die = sibling_die (child_die);
14084 }
14085 }
38d518c9
EZ
14086}
14087
f55ee35c
JK
14088/* Read a Fortran module as type. This DIE can be only a declaration used for
14089 imported module. Still we need that type as local Fortran "use ... only"
14090 declaration imports depend on the created type in determine_prefix. */
14091
14092static struct type *
14093read_module_type (struct die_info *die, struct dwarf2_cu *cu)
14094{
14095 struct objfile *objfile = cu->objfile;
15d034d0 14096 const char *module_name;
f55ee35c
JK
14097 struct type *type;
14098
14099 module_name = dwarf2_name (die, cu);
14100 if (!module_name)
3e43a32a
MS
14101 complaint (&symfile_complaints,
14102 _("DW_TAG_module has no name, offset 0x%x"),
b64f50a1 14103 die->offset.sect_off);
f55ee35c
JK
14104 type = init_type (TYPE_CODE_MODULE, 0, 0, module_name, objfile);
14105
14106 /* determine_prefix uses TYPE_TAG_NAME. */
14107 TYPE_TAG_NAME (type) = TYPE_NAME (type);
14108
14109 return set_die_type (die, type, cu);
14110}
14111
5d7cb8df
JK
14112/* Read a Fortran module. */
14113
14114static void
14115read_module (struct die_info *die, struct dwarf2_cu *cu)
14116{
14117 struct die_info *child_die = die->child;
530e8392
KB
14118 struct type *type;
14119
14120 type = read_type_die (die, cu);
14121 new_symbol (die, type, cu);
5d7cb8df 14122
5d7cb8df
JK
14123 while (child_die && child_die->tag)
14124 {
14125 process_die (child_die, cu);
14126 child_die = sibling_die (child_die);
14127 }
14128}
14129
38d518c9
EZ
14130/* Return the name of the namespace represented by DIE. Set
14131 *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
14132 namespace. */
14133
14134static const char *
e142c38c 14135namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
38d518c9
EZ
14136{
14137 struct die_info *current_die;
14138 const char *name = NULL;
14139
14140 /* Loop through the extensions until we find a name. */
14141
14142 for (current_die = die;
14143 current_die != NULL;
f2f0e013 14144 current_die = dwarf2_extension (die, &cu))
38d518c9 14145 {
96553a0c
DE
14146 /* We don't use dwarf2_name here so that we can detect the absence
14147 of a name -> anonymous namespace. */
14148 struct attribute *attr = dwarf2_attr (die, DW_AT_name, cu);
14149
14150 if (attr != NULL)
14151 name = DW_STRING (attr);
38d518c9
EZ
14152 if (name != NULL)
14153 break;
14154 }
14155
14156 /* Is it an anonymous namespace? */
14157
14158 *is_anonymous = (name == NULL);
14159 if (*is_anonymous)
2b1dbab0 14160 name = CP_ANONYMOUS_NAMESPACE_STR;
38d518c9
EZ
14161
14162 return name;
d9fa45fe
DC
14163}
14164
c906108c
SS
14165/* Extract all information from a DW_TAG_pointer_type DIE and add to
14166 the user defined type vector. */
14167
f792889a 14168static struct type *
e7c27a73 14169read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14170{
5e2b427d 14171 struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
e7c27a73 14172 struct comp_unit_head *cu_header = &cu->header;
c906108c 14173 struct type *type;
8b2dbe47
KB
14174 struct attribute *attr_byte_size;
14175 struct attribute *attr_address_class;
14176 int byte_size, addr_class;
7e314c57
JK
14177 struct type *target_type;
14178
14179 target_type = die_type (die, cu);
c906108c 14180
7e314c57
JK
14181 /* The die_type call above may have already set the type for this DIE. */
14182 type = get_die_type (die, cu);
14183 if (type)
14184 return type;
14185
14186 type = lookup_pointer_type (target_type);
8b2dbe47 14187
e142c38c 14188 attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
8b2dbe47
KB
14189 if (attr_byte_size)
14190 byte_size = DW_UNSND (attr_byte_size);
c906108c 14191 else
8b2dbe47
KB
14192 byte_size = cu_header->addr_size;
14193
e142c38c 14194 attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
8b2dbe47
KB
14195 if (attr_address_class)
14196 addr_class = DW_UNSND (attr_address_class);
14197 else
14198 addr_class = DW_ADDR_none;
14199
14200 /* If the pointer size or address class is different than the
14201 default, create a type variant marked as such and set the
14202 length accordingly. */
14203 if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
c906108c 14204 {
5e2b427d 14205 if (gdbarch_address_class_type_flags_p (gdbarch))
8b2dbe47
KB
14206 {
14207 int type_flags;
14208
849957d9 14209 type_flags = gdbarch_address_class_type_flags
5e2b427d 14210 (gdbarch, byte_size, addr_class);
876cecd0
TT
14211 gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
14212 == 0);
8b2dbe47
KB
14213 type = make_type_with_address_space (type, type_flags);
14214 }
14215 else if (TYPE_LENGTH (type) != byte_size)
14216 {
3e43a32a
MS
14217 complaint (&symfile_complaints,
14218 _("invalid pointer size %d"), byte_size);
8b2dbe47 14219 }
6e70227d 14220 else
9a619af0
MS
14221 {
14222 /* Should we also complain about unhandled address classes? */
14223 }
c906108c 14224 }
8b2dbe47
KB
14225
14226 TYPE_LENGTH (type) = byte_size;
f792889a 14227 return set_die_type (die, type, cu);
c906108c
SS
14228}
14229
14230/* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
14231 the user defined type vector. */
14232
f792889a 14233static struct type *
e7c27a73 14234read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c
SS
14235{
14236 struct type *type;
14237 struct type *to_type;
14238 struct type *domain;
14239
e7c27a73
DJ
14240 to_type = die_type (die, cu);
14241 domain = die_containing_type (die, cu);
0d5de010 14242
7e314c57
JK
14243 /* The calls above may have already set the type for this DIE. */
14244 type = get_die_type (die, cu);
14245 if (type)
14246 return type;
14247
0d5de010
DJ
14248 if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
14249 type = lookup_methodptr_type (to_type);
7078baeb
TT
14250 else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
14251 {
14252 struct type *new_type = alloc_type (cu->objfile);
14253
14254 smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
14255 TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
14256 TYPE_VARARGS (to_type));
14257 type = lookup_methodptr_type (new_type);
14258 }
0d5de010
DJ
14259 else
14260 type = lookup_memberptr_type (to_type, domain);
c906108c 14261
f792889a 14262 return set_die_type (die, type, cu);
c906108c
SS
14263}
14264
14265/* Extract all information from a DW_TAG_reference_type DIE and add to
14266 the user defined type vector. */
14267
f792889a 14268static struct type *
e7c27a73 14269read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14270{
e7c27a73 14271 struct comp_unit_head *cu_header = &cu->header;
7e314c57 14272 struct type *type, *target_type;
c906108c
SS
14273 struct attribute *attr;
14274
7e314c57
JK
14275 target_type = die_type (die, cu);
14276
14277 /* The die_type call above may have already set the type for this DIE. */
14278 type = get_die_type (die, cu);
14279 if (type)
14280 return type;
14281
14282 type = lookup_reference_type (target_type);
e142c38c 14283 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
14284 if (attr)
14285 {
14286 TYPE_LENGTH (type) = DW_UNSND (attr);
14287 }
14288 else
14289 {
107d2387 14290 TYPE_LENGTH (type) = cu_header->addr_size;
c906108c 14291 }
f792889a 14292 return set_die_type (die, type, cu);
c906108c
SS
14293}
14294
cf363f18
MW
14295/* Add the given cv-qualifiers to the element type of the array. GCC
14296 outputs DWARF type qualifiers that apply to an array, not the
14297 element type. But GDB relies on the array element type to carry
14298 the cv-qualifiers. This mimics section 6.7.3 of the C99
14299 specification. */
14300
14301static struct type *
14302add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
14303 struct type *base_type, int cnst, int voltl)
14304{
14305 struct type *el_type, *inner_array;
14306
14307 base_type = copy_type (base_type);
14308 inner_array = base_type;
14309
14310 while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
14311 {
14312 TYPE_TARGET_TYPE (inner_array) =
14313 copy_type (TYPE_TARGET_TYPE (inner_array));
14314 inner_array = TYPE_TARGET_TYPE (inner_array);
14315 }
14316
14317 el_type = TYPE_TARGET_TYPE (inner_array);
14318 cnst |= TYPE_CONST (el_type);
14319 voltl |= TYPE_VOLATILE (el_type);
14320 TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
14321
14322 return set_die_type (die, base_type, cu);
14323}
14324
f792889a 14325static struct type *
e7c27a73 14326read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14327{
f792889a 14328 struct type *base_type, *cv_type;
c906108c 14329
e7c27a73 14330 base_type = die_type (die, cu);
7e314c57
JK
14331
14332 /* The die_type call above may have already set the type for this DIE. */
14333 cv_type = get_die_type (die, cu);
14334 if (cv_type)
14335 return cv_type;
14336
2f608a3a
KW
14337 /* In case the const qualifier is applied to an array type, the element type
14338 is so qualified, not the array type (section 6.7.3 of C99). */
14339 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
cf363f18 14340 return add_array_cv_type (die, cu, base_type, 1, 0);
2f608a3a 14341
f792889a
DJ
14342 cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
14343 return set_die_type (die, cv_type, cu);
c906108c
SS
14344}
14345
f792889a 14346static struct type *
e7c27a73 14347read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14348{
f792889a 14349 struct type *base_type, *cv_type;
c906108c 14350
e7c27a73 14351 base_type = die_type (die, cu);
7e314c57
JK
14352
14353 /* The die_type call above may have already set the type for this DIE. */
14354 cv_type = get_die_type (die, cu);
14355 if (cv_type)
14356 return cv_type;
14357
cf363f18
MW
14358 /* In case the volatile qualifier is applied to an array type, the
14359 element type is so qualified, not the array type (section 6.7.3
14360 of C99). */
14361 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
14362 return add_array_cv_type (die, cu, base_type, 0, 1);
14363
f792889a
DJ
14364 cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
14365 return set_die_type (die, cv_type, cu);
c906108c
SS
14366}
14367
06d66ee9
TT
14368/* Handle DW_TAG_restrict_type. */
14369
14370static struct type *
14371read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
14372{
14373 struct type *base_type, *cv_type;
14374
14375 base_type = die_type (die, cu);
14376
14377 /* The die_type call above may have already set the type for this DIE. */
14378 cv_type = get_die_type (die, cu);
14379 if (cv_type)
14380 return cv_type;
14381
14382 cv_type = make_restrict_type (base_type);
14383 return set_die_type (die, cv_type, cu);
14384}
14385
a2c2acaf
MW
14386/* Handle DW_TAG_atomic_type. */
14387
14388static struct type *
14389read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
14390{
14391 struct type *base_type, *cv_type;
14392
14393 base_type = die_type (die, cu);
14394
14395 /* The die_type call above may have already set the type for this DIE. */
14396 cv_type = get_die_type (die, cu);
14397 if (cv_type)
14398 return cv_type;
14399
14400 cv_type = make_atomic_type (base_type);
14401 return set_die_type (die, cv_type, cu);
14402}
14403
c906108c
SS
14404/* Extract all information from a DW_TAG_string_type DIE and add to
14405 the user defined type vector. It isn't really a user defined type,
14406 but it behaves like one, with other DIE's using an AT_user_def_type
14407 attribute to reference it. */
14408
f792889a 14409static struct type *
e7c27a73 14410read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14411{
e7c27a73 14412 struct objfile *objfile = cu->objfile;
3b7538c0 14413 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
14414 struct type *type, *range_type, *index_type, *char_type;
14415 struct attribute *attr;
14416 unsigned int length;
14417
e142c38c 14418 attr = dwarf2_attr (die, DW_AT_string_length, cu);
c906108c
SS
14419 if (attr)
14420 {
14421 length = DW_UNSND (attr);
14422 }
14423 else
14424 {
0963b4bd 14425 /* Check for the DW_AT_byte_size attribute. */
e142c38c 14426 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
b21b22e0
PS
14427 if (attr)
14428 {
14429 length = DW_UNSND (attr);
14430 }
14431 else
14432 {
14433 length = 1;
14434 }
c906108c 14435 }
6ccb9162 14436
46bf5051 14437 index_type = objfile_type (objfile)->builtin_int;
0c9c3474 14438 range_type = create_static_range_type (NULL, index_type, 1, length);
3b7538c0
UW
14439 char_type = language_string_char_type (cu->language_defn, gdbarch);
14440 type = create_string_type (NULL, char_type, range_type);
6ccb9162 14441
f792889a 14442 return set_die_type (die, type, cu);
c906108c
SS
14443}
14444
4d804846
JB
14445/* Assuming that DIE corresponds to a function, returns nonzero
14446 if the function is prototyped. */
14447
14448static int
14449prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
14450{
14451 struct attribute *attr;
14452
14453 attr = dwarf2_attr (die, DW_AT_prototyped, cu);
14454 if (attr && (DW_UNSND (attr) != 0))
14455 return 1;
14456
14457 /* The DWARF standard implies that the DW_AT_prototyped attribute
14458 is only meaninful for C, but the concept also extends to other
14459 languages that allow unprototyped functions (Eg: Objective C).
14460 For all other languages, assume that functions are always
14461 prototyped. */
14462 if (cu->language != language_c
14463 && cu->language != language_objc
14464 && cu->language != language_opencl)
14465 return 1;
14466
14467 /* RealView does not emit DW_AT_prototyped. We can not distinguish
14468 prototyped and unprototyped functions; default to prototyped,
14469 since that is more common in modern code (and RealView warns
14470 about unprototyped functions). */
14471 if (producer_is_realview (cu->producer))
14472 return 1;
14473
14474 return 0;
14475}
14476
c906108c
SS
14477/* Handle DIES due to C code like:
14478
14479 struct foo
c5aa993b
JM
14480 {
14481 int (*funcp)(int a, long l);
14482 int b;
14483 };
c906108c 14484
0963b4bd 14485 ('funcp' generates a DW_TAG_subroutine_type DIE). */
c906108c 14486
f792889a 14487static struct type *
e7c27a73 14488read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14489{
bb5ed363 14490 struct objfile *objfile = cu->objfile;
0963b4bd
MS
14491 struct type *type; /* Type that this function returns. */
14492 struct type *ftype; /* Function that returns above type. */
c906108c
SS
14493 struct attribute *attr;
14494
e7c27a73 14495 type = die_type (die, cu);
7e314c57
JK
14496
14497 /* The die_type call above may have already set the type for this DIE. */
14498 ftype = get_die_type (die, cu);
14499 if (ftype)
14500 return ftype;
14501
0c8b41f1 14502 ftype = lookup_function_type (type);
c906108c 14503
4d804846 14504 if (prototyped_function_p (die, cu))
a6c727b2 14505 TYPE_PROTOTYPED (ftype) = 1;
c906108c 14506
c055b101
CV
14507 /* Store the calling convention in the type if it's available in
14508 the subroutine die. Otherwise set the calling convention to
14509 the default value DW_CC_normal. */
14510 attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
54fcddd0
UW
14511 if (attr)
14512 TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
14513 else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
14514 TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
14515 else
14516 TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
76c10ea2 14517
743649fd
MW
14518 /* Record whether the function returns normally to its caller or not
14519 if the DWARF producer set that information. */
14520 attr = dwarf2_attr (die, DW_AT_noreturn, cu);
14521 if (attr && (DW_UNSND (attr) != 0))
14522 TYPE_NO_RETURN (ftype) = 1;
14523
76c10ea2
GM
14524 /* We need to add the subroutine type to the die immediately so
14525 we don't infinitely recurse when dealing with parameters
0963b4bd 14526 declared as the same subroutine type. */
76c10ea2 14527 set_die_type (die, ftype, cu);
6e70227d 14528
639d11d3 14529 if (die->child != NULL)
c906108c 14530 {
bb5ed363 14531 struct type *void_type = objfile_type (objfile)->builtin_void;
c906108c 14532 struct die_info *child_die;
8072405b 14533 int nparams, iparams;
c906108c
SS
14534
14535 /* Count the number of parameters.
14536 FIXME: GDB currently ignores vararg functions, but knows about
14537 vararg member functions. */
8072405b 14538 nparams = 0;
639d11d3 14539 child_die = die->child;
c906108c
SS
14540 while (child_die && child_die->tag)
14541 {
14542 if (child_die->tag == DW_TAG_formal_parameter)
14543 nparams++;
14544 else if (child_die->tag == DW_TAG_unspecified_parameters)
876cecd0 14545 TYPE_VARARGS (ftype) = 1;
c906108c
SS
14546 child_die = sibling_die (child_die);
14547 }
14548
14549 /* Allocate storage for parameters and fill them in. */
14550 TYPE_NFIELDS (ftype) = nparams;
14551 TYPE_FIELDS (ftype) = (struct field *)
ae5a43e0 14552 TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
c906108c 14553
8072405b
JK
14554 /* TYPE_FIELD_TYPE must never be NULL. Pre-fill the array to ensure it
14555 even if we error out during the parameters reading below. */
14556 for (iparams = 0; iparams < nparams; iparams++)
14557 TYPE_FIELD_TYPE (ftype, iparams) = void_type;
14558
14559 iparams = 0;
639d11d3 14560 child_die = die->child;
c906108c
SS
14561 while (child_die && child_die->tag)
14562 {
14563 if (child_die->tag == DW_TAG_formal_parameter)
14564 {
3ce3b1ba
PA
14565 struct type *arg_type;
14566
14567 /* DWARF version 2 has no clean way to discern C++
14568 static and non-static member functions. G++ helps
14569 GDB by marking the first parameter for non-static
14570 member functions (which is the this pointer) as
14571 artificial. We pass this information to
14572 dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
14573
14574 DWARF version 3 added DW_AT_object_pointer, which GCC
14575 4.5 does not yet generate. */
e142c38c 14576 attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
c906108c
SS
14577 if (attr)
14578 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
14579 else
418835cc
KS
14580 {
14581 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
14582
14583 /* GCC/43521: In java, the formal parameter
14584 "this" is sometimes not marked with DW_AT_artificial. */
14585 if (cu->language == language_java)
14586 {
14587 const char *name = dwarf2_name (child_die, cu);
9a619af0 14588
418835cc
KS
14589 if (name && !strcmp (name, "this"))
14590 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 1;
14591 }
14592 }
3ce3b1ba
PA
14593 arg_type = die_type (child_die, cu);
14594
14595 /* RealView does not mark THIS as const, which the testsuite
14596 expects. GCC marks THIS as const in method definitions,
14597 but not in the class specifications (GCC PR 43053). */
14598 if (cu->language == language_cplus && !TYPE_CONST (arg_type)
14599 && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
14600 {
14601 int is_this = 0;
14602 struct dwarf2_cu *arg_cu = cu;
14603 const char *name = dwarf2_name (child_die, cu);
14604
14605 attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
14606 if (attr)
14607 {
14608 /* If the compiler emits this, use it. */
14609 if (follow_die_ref (die, attr, &arg_cu) == child_die)
14610 is_this = 1;
14611 }
14612 else if (name && strcmp (name, "this") == 0)
14613 /* Function definitions will have the argument names. */
14614 is_this = 1;
14615 else if (name == NULL && iparams == 0)
14616 /* Declarations may not have the names, so like
14617 elsewhere in GDB, assume an artificial first
14618 argument is "this". */
14619 is_this = 1;
14620
14621 if (is_this)
14622 arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
14623 arg_type, 0);
14624 }
14625
14626 TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
c906108c
SS
14627 iparams++;
14628 }
14629 child_die = sibling_die (child_die);
14630 }
14631 }
14632
76c10ea2 14633 return ftype;
c906108c
SS
14634}
14635
f792889a 14636static struct type *
e7c27a73 14637read_typedef (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14638{
e7c27a73 14639 struct objfile *objfile = cu->objfile;
0114d602 14640 const char *name = NULL;
3c8e0968 14641 struct type *this_type, *target_type;
c906108c 14642
94af9270 14643 name = dwarf2_full_name (NULL, die, cu);
f792889a 14644 this_type = init_type (TYPE_CODE_TYPEDEF, 0,
0114d602 14645 TYPE_FLAG_TARGET_STUB, NULL, objfile);
abee88f2 14646 TYPE_NAME (this_type) = name;
f792889a 14647 set_die_type (die, this_type, cu);
3c8e0968
DE
14648 target_type = die_type (die, cu);
14649 if (target_type != this_type)
14650 TYPE_TARGET_TYPE (this_type) = target_type;
14651 else
14652 {
14653 /* Self-referential typedefs are, it seems, not allowed by the DWARF
14654 spec and cause infinite loops in GDB. */
14655 complaint (&symfile_complaints,
14656 _("Self-referential DW_TAG_typedef "
14657 "- DIE at 0x%x [in module %s]"),
4262abfb 14658 die->offset.sect_off, objfile_name (objfile));
3c8e0968
DE
14659 TYPE_TARGET_TYPE (this_type) = NULL;
14660 }
f792889a 14661 return this_type;
c906108c
SS
14662}
14663
14664/* Find a representation of a given base type and install
14665 it in the TYPE field of the die. */
14666
f792889a 14667static struct type *
e7c27a73 14668read_base_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14669{
e7c27a73 14670 struct objfile *objfile = cu->objfile;
c906108c
SS
14671 struct type *type;
14672 struct attribute *attr;
14673 int encoding = 0, size = 0;
15d034d0 14674 const char *name;
6ccb9162
UW
14675 enum type_code code = TYPE_CODE_INT;
14676 int type_flags = 0;
14677 struct type *target_type = NULL;
c906108c 14678
e142c38c 14679 attr = dwarf2_attr (die, DW_AT_encoding, cu);
c906108c
SS
14680 if (attr)
14681 {
14682 encoding = DW_UNSND (attr);
14683 }
e142c38c 14684 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
14685 if (attr)
14686 {
14687 size = DW_UNSND (attr);
14688 }
39cbfefa 14689 name = dwarf2_name (die, cu);
6ccb9162 14690 if (!name)
c906108c 14691 {
6ccb9162
UW
14692 complaint (&symfile_complaints,
14693 _("DW_AT_name missing from DW_TAG_base_type"));
c906108c 14694 }
6ccb9162
UW
14695
14696 switch (encoding)
c906108c 14697 {
6ccb9162
UW
14698 case DW_ATE_address:
14699 /* Turn DW_ATE_address into a void * pointer. */
14700 code = TYPE_CODE_PTR;
14701 type_flags |= TYPE_FLAG_UNSIGNED;
14702 target_type = init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
14703 break;
14704 case DW_ATE_boolean:
14705 code = TYPE_CODE_BOOL;
14706 type_flags |= TYPE_FLAG_UNSIGNED;
14707 break;
14708 case DW_ATE_complex_float:
14709 code = TYPE_CODE_COMPLEX;
14710 target_type = init_type (TYPE_CODE_FLT, size / 2, 0, NULL, objfile);
14711 break;
14712 case DW_ATE_decimal_float:
14713 code = TYPE_CODE_DECFLOAT;
14714 break;
14715 case DW_ATE_float:
14716 code = TYPE_CODE_FLT;
14717 break;
14718 case DW_ATE_signed:
14719 break;
14720 case DW_ATE_unsigned:
14721 type_flags |= TYPE_FLAG_UNSIGNED;
3b2b8fea
TT
14722 if (cu->language == language_fortran
14723 && name
61012eef 14724 && startswith (name, "character("))
3b2b8fea 14725 code = TYPE_CODE_CHAR;
6ccb9162
UW
14726 break;
14727 case DW_ATE_signed_char:
6e70227d 14728 if (cu->language == language_ada || cu->language == language_m2
3b2b8fea
TT
14729 || cu->language == language_pascal
14730 || cu->language == language_fortran)
6ccb9162
UW
14731 code = TYPE_CODE_CHAR;
14732 break;
14733 case DW_ATE_unsigned_char:
868a0084 14734 if (cu->language == language_ada || cu->language == language_m2
3b2b8fea
TT
14735 || cu->language == language_pascal
14736 || cu->language == language_fortran)
6ccb9162
UW
14737 code = TYPE_CODE_CHAR;
14738 type_flags |= TYPE_FLAG_UNSIGNED;
14739 break;
75079b2b
TT
14740 case DW_ATE_UTF:
14741 /* We just treat this as an integer and then recognize the
14742 type by name elsewhere. */
14743 break;
14744
6ccb9162
UW
14745 default:
14746 complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
14747 dwarf_type_encoding_name (encoding));
14748 break;
c906108c 14749 }
6ccb9162 14750
0114d602
DJ
14751 type = init_type (code, size, type_flags, NULL, objfile);
14752 TYPE_NAME (type) = name;
6ccb9162
UW
14753 TYPE_TARGET_TYPE (type) = target_type;
14754
0114d602 14755 if (name && strcmp (name, "char") == 0)
876cecd0 14756 TYPE_NOSIGN (type) = 1;
0114d602 14757
f792889a 14758 return set_die_type (die, type, cu);
c906108c
SS
14759}
14760
80180f79
SA
14761/* Parse dwarf attribute if it's a block, reference or constant and put the
14762 resulting value of the attribute into struct bound_prop.
14763 Returns 1 if ATTR could be resolved into PROP, 0 otherwise. */
14764
14765static int
14766attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
14767 struct dwarf2_cu *cu, struct dynamic_prop *prop)
14768{
14769 struct dwarf2_property_baton *baton;
14770 struct obstack *obstack = &cu->objfile->objfile_obstack;
14771
14772 if (attr == NULL || prop == NULL)
14773 return 0;
14774
14775 if (attr_form_is_block (attr))
14776 {
14777 baton = obstack_alloc (obstack, sizeof (*baton));
14778 baton->referenced_type = NULL;
14779 baton->locexpr.per_cu = cu->per_cu;
14780 baton->locexpr.size = DW_BLOCK (attr)->size;
14781 baton->locexpr.data = DW_BLOCK (attr)->data;
14782 prop->data.baton = baton;
14783 prop->kind = PROP_LOCEXPR;
14784 gdb_assert (prop->data.baton != NULL);
14785 }
14786 else if (attr_form_is_ref (attr))
14787 {
14788 struct dwarf2_cu *target_cu = cu;
14789 struct die_info *target_die;
14790 struct attribute *target_attr;
14791
14792 target_die = follow_die_ref (die, attr, &target_cu);
14793 target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
df25ebbd
JB
14794 if (target_attr == NULL)
14795 target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
14796 target_cu);
80180f79
SA
14797 if (target_attr == NULL)
14798 return 0;
14799
df25ebbd 14800 switch (target_attr->name)
80180f79 14801 {
df25ebbd
JB
14802 case DW_AT_location:
14803 if (attr_form_is_section_offset (target_attr))
14804 {
14805 baton = obstack_alloc (obstack, sizeof (*baton));
14806 baton->referenced_type = die_type (target_die, target_cu);
14807 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
14808 prop->data.baton = baton;
14809 prop->kind = PROP_LOCLIST;
14810 gdb_assert (prop->data.baton != NULL);
14811 }
14812 else if (attr_form_is_block (target_attr))
14813 {
14814 baton = obstack_alloc (obstack, sizeof (*baton));
14815 baton->referenced_type = die_type (target_die, target_cu);
14816 baton->locexpr.per_cu = cu->per_cu;
14817 baton->locexpr.size = DW_BLOCK (target_attr)->size;
14818 baton->locexpr.data = DW_BLOCK (target_attr)->data;
14819 prop->data.baton = baton;
14820 prop->kind = PROP_LOCEXPR;
14821 gdb_assert (prop->data.baton != NULL);
14822 }
14823 else
14824 {
14825 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
14826 "dynamic property");
14827 return 0;
14828 }
14829 break;
14830 case DW_AT_data_member_location:
14831 {
14832 LONGEST offset;
14833
14834 if (!handle_data_member_location (target_die, target_cu,
14835 &offset))
14836 return 0;
14837
14838 baton = obstack_alloc (obstack, sizeof (*baton));
14839 baton->referenced_type = get_die_type (target_die->parent,
14840 target_cu);
14841 baton->offset_info.offset = offset;
14842 baton->offset_info.type = die_type (target_die, target_cu);
14843 prop->data.baton = baton;
14844 prop->kind = PROP_ADDR_OFFSET;
14845 break;
14846 }
80180f79
SA
14847 }
14848 }
14849 else if (attr_form_is_constant (attr))
14850 {
14851 prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
14852 prop->kind = PROP_CONST;
14853 }
14854 else
14855 {
14856 dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
14857 dwarf2_name (die, cu));
14858 return 0;
14859 }
14860
14861 return 1;
14862}
14863
a02abb62
JB
14864/* Read the given DW_AT_subrange DIE. */
14865
f792889a 14866static struct type *
a02abb62
JB
14867read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
14868{
4c9ad8c2 14869 struct type *base_type, *orig_base_type;
a02abb62
JB
14870 struct type *range_type;
14871 struct attribute *attr;
729efb13 14872 struct dynamic_prop low, high;
4fae6e18 14873 int low_default_is_valid;
c451ebe5 14874 int high_bound_is_count = 0;
15d034d0 14875 const char *name;
43bbcdc2 14876 LONGEST negative_mask;
e77813c8 14877
4c9ad8c2
TT
14878 orig_base_type = die_type (die, cu);
14879 /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
14880 whereas the real type might be. So, we use ORIG_BASE_TYPE when
14881 creating the range type, but we use the result of check_typedef
14882 when examining properties of the type. */
14883 base_type = check_typedef (orig_base_type);
a02abb62 14884
7e314c57
JK
14885 /* The die_type call above may have already set the type for this DIE. */
14886 range_type = get_die_type (die, cu);
14887 if (range_type)
14888 return range_type;
14889
729efb13
SA
14890 low.kind = PROP_CONST;
14891 high.kind = PROP_CONST;
14892 high.data.const_val = 0;
14893
4fae6e18
JK
14894 /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
14895 omitting DW_AT_lower_bound. */
14896 switch (cu->language)
6e70227d 14897 {
4fae6e18
JK
14898 case language_c:
14899 case language_cplus:
729efb13 14900 low.data.const_val = 0;
4fae6e18
JK
14901 low_default_is_valid = 1;
14902 break;
14903 case language_fortran:
729efb13 14904 low.data.const_val = 1;
4fae6e18
JK
14905 low_default_is_valid = 1;
14906 break;
14907 case language_d:
14908 case language_java:
14909 case language_objc:
729efb13 14910 low.data.const_val = 0;
4fae6e18
JK
14911 low_default_is_valid = (cu->header.version >= 4);
14912 break;
14913 case language_ada:
14914 case language_m2:
14915 case language_pascal:
729efb13 14916 low.data.const_val = 1;
4fae6e18
JK
14917 low_default_is_valid = (cu->header.version >= 4);
14918 break;
14919 default:
729efb13 14920 low.data.const_val = 0;
4fae6e18
JK
14921 low_default_is_valid = 0;
14922 break;
a02abb62
JB
14923 }
14924
e142c38c 14925 attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
a02abb62 14926 if (attr)
11c1ba78 14927 attr_to_dynamic_prop (attr, die, cu, &low);
4fae6e18
JK
14928 else if (!low_default_is_valid)
14929 complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
14930 "- DIE at 0x%x [in module %s]"),
4262abfb 14931 die->offset.sect_off, objfile_name (cu->objfile));
a02abb62 14932
e142c38c 14933 attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
80180f79 14934 if (!attr_to_dynamic_prop (attr, die, cu, &high))
e77813c8
PM
14935 {
14936 attr = dwarf2_attr (die, DW_AT_count, cu);
c451ebe5 14937 if (attr_to_dynamic_prop (attr, die, cu, &high))
6b662e19 14938 {
c451ebe5
SA
14939 /* If bounds are constant do the final calculation here. */
14940 if (low.kind == PROP_CONST && high.kind == PROP_CONST)
14941 high.data.const_val = low.data.const_val + high.data.const_val - 1;
14942 else
14943 high_bound_is_count = 1;
c2ff108b 14944 }
e77813c8
PM
14945 }
14946
14947 /* Dwarf-2 specifications explicitly allows to create subrange types
14948 without specifying a base type.
14949 In that case, the base type must be set to the type of
14950 the lower bound, upper bound or count, in that order, if any of these
14951 three attributes references an object that has a type.
14952 If no base type is found, the Dwarf-2 specifications say that
14953 a signed integer type of size equal to the size of an address should
14954 be used.
14955 For the following C code: `extern char gdb_int [];'
14956 GCC produces an empty range DIE.
14957 FIXME: muller/2010-05-28: Possible references to object for low bound,
0963b4bd 14958 high bound or count are not yet handled by this code. */
e77813c8
PM
14959 if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
14960 {
14961 struct objfile *objfile = cu->objfile;
14962 struct gdbarch *gdbarch = get_objfile_arch (objfile);
14963 int addr_size = gdbarch_addr_bit (gdbarch) /8;
14964 struct type *int_type = objfile_type (objfile)->builtin_int;
14965
14966 /* Test "int", "long int", and "long long int" objfile types,
14967 and select the first one having a size above or equal to the
14968 architecture address size. */
14969 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14970 base_type = int_type;
14971 else
14972 {
14973 int_type = objfile_type (objfile)->builtin_long;
14974 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14975 base_type = int_type;
14976 else
14977 {
14978 int_type = objfile_type (objfile)->builtin_long_long;
14979 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14980 base_type = int_type;
14981 }
14982 }
14983 }
a02abb62 14984
dbb9c2b1
JB
14985 /* Normally, the DWARF producers are expected to use a signed
14986 constant form (Eg. DW_FORM_sdata) to express negative bounds.
14987 But this is unfortunately not always the case, as witnessed
14988 with GCC, for instance, where the ambiguous DW_FORM_dataN form
14989 is used instead. To work around that ambiguity, we treat
14990 the bounds as signed, and thus sign-extend their values, when
14991 the base type is signed. */
6e70227d 14992 negative_mask =
43bbcdc2 14993 (LONGEST) -1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1);
729efb13
SA
14994 if (low.kind == PROP_CONST
14995 && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
14996 low.data.const_val |= negative_mask;
14997 if (high.kind == PROP_CONST
14998 && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
14999 high.data.const_val |= negative_mask;
43bbcdc2 15000
729efb13 15001 range_type = create_range_type (NULL, orig_base_type, &low, &high);
a02abb62 15002
c451ebe5
SA
15003 if (high_bound_is_count)
15004 TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
15005
c2ff108b
JK
15006 /* Ada expects an empty array on no boundary attributes. */
15007 if (attr == NULL && cu->language != language_ada)
729efb13 15008 TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
c2ff108b 15009
39cbfefa
DJ
15010 name = dwarf2_name (die, cu);
15011 if (name)
15012 TYPE_NAME (range_type) = name;
6e70227d 15013
e142c38c 15014 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
a02abb62
JB
15015 if (attr)
15016 TYPE_LENGTH (range_type) = DW_UNSND (attr);
15017
7e314c57
JK
15018 set_die_type (die, range_type, cu);
15019
15020 /* set_die_type should be already done. */
b4ba55a1
JB
15021 set_descriptive_type (range_type, die, cu);
15022
7e314c57 15023 return range_type;
a02abb62 15024}
6e70227d 15025
f792889a 15026static struct type *
81a17f79
JB
15027read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
15028{
15029 struct type *type;
81a17f79 15030
81a17f79
JB
15031 /* For now, we only support the C meaning of an unspecified type: void. */
15032
0114d602
DJ
15033 type = init_type (TYPE_CODE_VOID, 0, 0, NULL, cu->objfile);
15034 TYPE_NAME (type) = dwarf2_name (die, cu);
81a17f79 15035
f792889a 15036 return set_die_type (die, type, cu);
81a17f79 15037}
a02abb62 15038
639d11d3
DC
15039/* Read a single die and all its descendents. Set the die's sibling
15040 field to NULL; set other fields in the die correctly, and set all
15041 of the descendents' fields correctly. Set *NEW_INFO_PTR to the
15042 location of the info_ptr after reading all of those dies. PARENT
15043 is the parent of the die in question. */
15044
15045static struct die_info *
dee91e82 15046read_die_and_children (const struct die_reader_specs *reader,
d521ce57
TT
15047 const gdb_byte *info_ptr,
15048 const gdb_byte **new_info_ptr,
dee91e82 15049 struct die_info *parent)
639d11d3
DC
15050{
15051 struct die_info *die;
d521ce57 15052 const gdb_byte *cur_ptr;
639d11d3
DC
15053 int has_children;
15054
bf6af496 15055 cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
1d325ec1
DJ
15056 if (die == NULL)
15057 {
15058 *new_info_ptr = cur_ptr;
15059 return NULL;
15060 }
93311388 15061 store_in_ref_table (die, reader->cu);
639d11d3
DC
15062
15063 if (has_children)
bf6af496 15064 die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
639d11d3
DC
15065 else
15066 {
15067 die->child = NULL;
15068 *new_info_ptr = cur_ptr;
15069 }
15070
15071 die->sibling = NULL;
15072 die->parent = parent;
15073 return die;
15074}
15075
15076/* Read a die, all of its descendents, and all of its siblings; set
15077 all of the fields of all of the dies correctly. Arguments are as
15078 in read_die_and_children. */
15079
15080static struct die_info *
bf6af496 15081read_die_and_siblings_1 (const struct die_reader_specs *reader,
d521ce57
TT
15082 const gdb_byte *info_ptr,
15083 const gdb_byte **new_info_ptr,
bf6af496 15084 struct die_info *parent)
639d11d3
DC
15085{
15086 struct die_info *first_die, *last_sibling;
d521ce57 15087 const gdb_byte *cur_ptr;
639d11d3 15088
c906108c 15089 cur_ptr = info_ptr;
639d11d3
DC
15090 first_die = last_sibling = NULL;
15091
15092 while (1)
c906108c 15093 {
639d11d3 15094 struct die_info *die
dee91e82 15095 = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
639d11d3 15096
1d325ec1 15097 if (die == NULL)
c906108c 15098 {
639d11d3
DC
15099 *new_info_ptr = cur_ptr;
15100 return first_die;
c906108c 15101 }
1d325ec1
DJ
15102
15103 if (!first_die)
15104 first_die = die;
c906108c 15105 else
1d325ec1
DJ
15106 last_sibling->sibling = die;
15107
15108 last_sibling = die;
c906108c 15109 }
c906108c
SS
15110}
15111
bf6af496
DE
15112/* Read a die, all of its descendents, and all of its siblings; set
15113 all of the fields of all of the dies correctly. Arguments are as
15114 in read_die_and_children.
15115 This the main entry point for reading a DIE and all its children. */
15116
15117static struct die_info *
15118read_die_and_siblings (const struct die_reader_specs *reader,
d521ce57
TT
15119 const gdb_byte *info_ptr,
15120 const gdb_byte **new_info_ptr,
bf6af496
DE
15121 struct die_info *parent)
15122{
15123 struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
15124 new_info_ptr, parent);
15125
15126 if (dwarf2_die_debug)
15127 {
15128 fprintf_unfiltered (gdb_stdlog,
15129 "Read die from %s@0x%x of %s:\n",
a32a8923 15130 get_section_name (reader->die_section),
bf6af496
DE
15131 (unsigned) (info_ptr - reader->die_section->buffer),
15132 bfd_get_filename (reader->abfd));
15133 dump_die (die, dwarf2_die_debug);
15134 }
15135
15136 return die;
15137}
15138
3019eac3
DE
15139/* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
15140 attributes.
15141 The caller is responsible for filling in the extra attributes
15142 and updating (*DIEP)->num_attrs.
15143 Set DIEP to point to a newly allocated die with its information,
15144 except for its child, sibling, and parent fields.
15145 Set HAS_CHILDREN to tell whether the die has children or not. */
93311388 15146
d521ce57 15147static const gdb_byte *
3019eac3 15148read_full_die_1 (const struct die_reader_specs *reader,
d521ce57 15149 struct die_info **diep, const gdb_byte *info_ptr,
3019eac3 15150 int *has_children, int num_extra_attrs)
93311388 15151{
b64f50a1
JK
15152 unsigned int abbrev_number, bytes_read, i;
15153 sect_offset offset;
93311388
DE
15154 struct abbrev_info *abbrev;
15155 struct die_info *die;
15156 struct dwarf2_cu *cu = reader->cu;
15157 bfd *abfd = reader->abfd;
15158
b64f50a1 15159 offset.sect_off = info_ptr - reader->buffer;
93311388
DE
15160 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15161 info_ptr += bytes_read;
15162 if (!abbrev_number)
15163 {
15164 *diep = NULL;
15165 *has_children = 0;
15166 return info_ptr;
15167 }
15168
433df2d4 15169 abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
93311388 15170 if (!abbrev)
348e048f
DE
15171 error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
15172 abbrev_number,
15173 bfd_get_filename (abfd));
15174
3019eac3 15175 die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
93311388
DE
15176 die->offset = offset;
15177 die->tag = abbrev->tag;
15178 die->abbrev = abbrev_number;
15179
3019eac3
DE
15180 /* Make the result usable.
15181 The caller needs to update num_attrs after adding the extra
15182 attributes. */
93311388
DE
15183 die->num_attrs = abbrev->num_attrs;
15184
15185 for (i = 0; i < abbrev->num_attrs; ++i)
dee91e82
DE
15186 info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
15187 info_ptr);
93311388
DE
15188
15189 *diep = die;
15190 *has_children = abbrev->has_children;
15191 return info_ptr;
15192}
15193
3019eac3
DE
15194/* Read a die and all its attributes.
15195 Set DIEP to point to a newly allocated die with its information,
15196 except for its child, sibling, and parent fields.
15197 Set HAS_CHILDREN to tell whether the die has children or not. */
15198
d521ce57 15199static const gdb_byte *
3019eac3 15200read_full_die (const struct die_reader_specs *reader,
d521ce57 15201 struct die_info **diep, const gdb_byte *info_ptr,
3019eac3
DE
15202 int *has_children)
15203{
d521ce57 15204 const gdb_byte *result;
bf6af496
DE
15205
15206 result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
15207
15208 if (dwarf2_die_debug)
15209 {
15210 fprintf_unfiltered (gdb_stdlog,
15211 "Read die from %s@0x%x of %s:\n",
a32a8923 15212 get_section_name (reader->die_section),
bf6af496
DE
15213 (unsigned) (info_ptr - reader->die_section->buffer),
15214 bfd_get_filename (reader->abfd));
15215 dump_die (*diep, dwarf2_die_debug);
15216 }
15217
15218 return result;
3019eac3 15219}
433df2d4
DE
15220\f
15221/* Abbreviation tables.
3019eac3 15222
433df2d4 15223 In DWARF version 2, the description of the debugging information is
c906108c
SS
15224 stored in a separate .debug_abbrev section. Before we read any
15225 dies from a section we read in all abbreviations and install them
433df2d4
DE
15226 in a hash table. */
15227
15228/* Allocate space for a struct abbrev_info object in ABBREV_TABLE. */
15229
15230static struct abbrev_info *
15231abbrev_table_alloc_abbrev (struct abbrev_table *abbrev_table)
15232{
15233 struct abbrev_info *abbrev;
15234
15235 abbrev = (struct abbrev_info *)
15236 obstack_alloc (&abbrev_table->abbrev_obstack, sizeof (struct abbrev_info));
15237 memset (abbrev, 0, sizeof (struct abbrev_info));
15238 return abbrev;
15239}
15240
15241/* Add an abbreviation to the table. */
c906108c
SS
15242
15243static void
433df2d4
DE
15244abbrev_table_add_abbrev (struct abbrev_table *abbrev_table,
15245 unsigned int abbrev_number,
15246 struct abbrev_info *abbrev)
15247{
15248 unsigned int hash_number;
15249
15250 hash_number = abbrev_number % ABBREV_HASH_SIZE;
15251 abbrev->next = abbrev_table->abbrevs[hash_number];
15252 abbrev_table->abbrevs[hash_number] = abbrev;
15253}
dee91e82 15254
433df2d4
DE
15255/* Look up an abbrev in the table.
15256 Returns NULL if the abbrev is not found. */
15257
15258static struct abbrev_info *
15259abbrev_table_lookup_abbrev (const struct abbrev_table *abbrev_table,
15260 unsigned int abbrev_number)
c906108c 15261{
433df2d4
DE
15262 unsigned int hash_number;
15263 struct abbrev_info *abbrev;
15264
15265 hash_number = abbrev_number % ABBREV_HASH_SIZE;
15266 abbrev = abbrev_table->abbrevs[hash_number];
15267
15268 while (abbrev)
15269 {
15270 if (abbrev->number == abbrev_number)
15271 return abbrev;
15272 abbrev = abbrev->next;
15273 }
15274 return NULL;
15275}
15276
15277/* Read in an abbrev table. */
15278
15279static struct abbrev_table *
15280abbrev_table_read_table (struct dwarf2_section_info *section,
15281 sect_offset offset)
15282{
15283 struct objfile *objfile = dwarf2_per_objfile->objfile;
a32a8923 15284 bfd *abfd = get_section_bfd_owner (section);
433df2d4 15285 struct abbrev_table *abbrev_table;
d521ce57 15286 const gdb_byte *abbrev_ptr;
c906108c
SS
15287 struct abbrev_info *cur_abbrev;
15288 unsigned int abbrev_number, bytes_read, abbrev_name;
433df2d4 15289 unsigned int abbrev_form;
f3dd6933
DJ
15290 struct attr_abbrev *cur_attrs;
15291 unsigned int allocated_attrs;
c906108c 15292
70ba0933 15293 abbrev_table = XNEW (struct abbrev_table);
f4dc4d17 15294 abbrev_table->offset = offset;
433df2d4
DE
15295 obstack_init (&abbrev_table->abbrev_obstack);
15296 abbrev_table->abbrevs = obstack_alloc (&abbrev_table->abbrev_obstack,
15297 (ABBREV_HASH_SIZE
15298 * sizeof (struct abbrev_info *)));
15299 memset (abbrev_table->abbrevs, 0,
15300 ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
c906108c 15301
433df2d4
DE
15302 dwarf2_read_section (objfile, section);
15303 abbrev_ptr = section->buffer + offset.sect_off;
c906108c
SS
15304 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15305 abbrev_ptr += bytes_read;
15306
f3dd6933
DJ
15307 allocated_attrs = ATTR_ALLOC_CHUNK;
15308 cur_attrs = xmalloc (allocated_attrs * sizeof (struct attr_abbrev));
6e70227d 15309
0963b4bd 15310 /* Loop until we reach an abbrev number of 0. */
c906108c
SS
15311 while (abbrev_number)
15312 {
433df2d4 15313 cur_abbrev = abbrev_table_alloc_abbrev (abbrev_table);
c906108c
SS
15314
15315 /* read in abbrev header */
15316 cur_abbrev->number = abbrev_number;
15317 cur_abbrev->tag = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15318 abbrev_ptr += bytes_read;
15319 cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
15320 abbrev_ptr += 1;
15321
15322 /* now read in declarations */
15323 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15324 abbrev_ptr += bytes_read;
15325 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15326 abbrev_ptr += bytes_read;
15327 while (abbrev_name)
15328 {
f3dd6933 15329 if (cur_abbrev->num_attrs == allocated_attrs)
c906108c 15330 {
f3dd6933
DJ
15331 allocated_attrs += ATTR_ALLOC_CHUNK;
15332 cur_attrs
15333 = xrealloc (cur_attrs, (allocated_attrs
15334 * sizeof (struct attr_abbrev)));
c906108c 15335 }
ae038cb0 15336
f3dd6933
DJ
15337 cur_attrs[cur_abbrev->num_attrs].name = abbrev_name;
15338 cur_attrs[cur_abbrev->num_attrs++].form = abbrev_form;
c906108c
SS
15339 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15340 abbrev_ptr += bytes_read;
15341 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15342 abbrev_ptr += bytes_read;
15343 }
15344
433df2d4 15345 cur_abbrev->attrs = obstack_alloc (&abbrev_table->abbrev_obstack,
f3dd6933
DJ
15346 (cur_abbrev->num_attrs
15347 * sizeof (struct attr_abbrev)));
15348 memcpy (cur_abbrev->attrs, cur_attrs,
15349 cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
15350
433df2d4 15351 abbrev_table_add_abbrev (abbrev_table, abbrev_number, cur_abbrev);
c906108c
SS
15352
15353 /* Get next abbreviation.
15354 Under Irix6 the abbreviations for a compilation unit are not
c5aa993b
JM
15355 always properly terminated with an abbrev number of 0.
15356 Exit loop if we encounter an abbreviation which we have
15357 already read (which means we are about to read the abbreviations
15358 for the next compile unit) or if the end of the abbreviation
15359 table is reached. */
433df2d4 15360 if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
c906108c
SS
15361 break;
15362 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15363 abbrev_ptr += bytes_read;
433df2d4 15364 if (abbrev_table_lookup_abbrev (abbrev_table, abbrev_number) != NULL)
c906108c
SS
15365 break;
15366 }
f3dd6933
DJ
15367
15368 xfree (cur_attrs);
433df2d4 15369 return abbrev_table;
c906108c
SS
15370}
15371
433df2d4 15372/* Free the resources held by ABBREV_TABLE. */
c906108c 15373
c906108c 15374static void
433df2d4 15375abbrev_table_free (struct abbrev_table *abbrev_table)
c906108c 15376{
433df2d4
DE
15377 obstack_free (&abbrev_table->abbrev_obstack, NULL);
15378 xfree (abbrev_table);
c906108c
SS
15379}
15380
f4dc4d17
DE
15381/* Same as abbrev_table_free but as a cleanup.
15382 We pass in a pointer to the pointer to the table so that we can
15383 set the pointer to NULL when we're done. It also simplifies
73051182 15384 build_type_psymtabs_1. */
f4dc4d17
DE
15385
15386static void
15387abbrev_table_free_cleanup (void *table_ptr)
15388{
15389 struct abbrev_table **abbrev_table_ptr = table_ptr;
15390
15391 if (*abbrev_table_ptr != NULL)
15392 abbrev_table_free (*abbrev_table_ptr);
15393 *abbrev_table_ptr = NULL;
15394}
15395
433df2d4
DE
15396/* Read the abbrev table for CU from ABBREV_SECTION. */
15397
15398static void
15399dwarf2_read_abbrevs (struct dwarf2_cu *cu,
15400 struct dwarf2_section_info *abbrev_section)
c906108c 15401{
433df2d4
DE
15402 cu->abbrev_table =
15403 abbrev_table_read_table (abbrev_section, cu->header.abbrev_offset);
15404}
c906108c 15405
433df2d4 15406/* Release the memory used by the abbrev table for a compilation unit. */
c906108c 15407
433df2d4
DE
15408static void
15409dwarf2_free_abbrev_table (void *ptr_to_cu)
15410{
15411 struct dwarf2_cu *cu = ptr_to_cu;
c906108c 15412
a2ce51a0
DE
15413 if (cu->abbrev_table != NULL)
15414 abbrev_table_free (cu->abbrev_table);
433df2d4
DE
15415 /* Set this to NULL so that we SEGV if we try to read it later,
15416 and also because free_comp_unit verifies this is NULL. */
15417 cu->abbrev_table = NULL;
15418}
15419\f
72bf9492
DJ
15420/* Returns nonzero if TAG represents a type that we might generate a partial
15421 symbol for. */
15422
15423static int
15424is_type_tag_for_partial (int tag)
15425{
15426 switch (tag)
15427 {
15428#if 0
15429 /* Some types that would be reasonable to generate partial symbols for,
15430 that we don't at present. */
15431 case DW_TAG_array_type:
15432 case DW_TAG_file_type:
15433 case DW_TAG_ptr_to_member_type:
15434 case DW_TAG_set_type:
15435 case DW_TAG_string_type:
15436 case DW_TAG_subroutine_type:
15437#endif
15438 case DW_TAG_base_type:
15439 case DW_TAG_class_type:
680b30c7 15440 case DW_TAG_interface_type:
72bf9492
DJ
15441 case DW_TAG_enumeration_type:
15442 case DW_TAG_structure_type:
15443 case DW_TAG_subrange_type:
15444 case DW_TAG_typedef:
15445 case DW_TAG_union_type:
15446 return 1;
15447 default:
15448 return 0;
15449 }
15450}
15451
15452/* Load all DIEs that are interesting for partial symbols into memory. */
15453
15454static struct partial_die_info *
dee91e82 15455load_partial_dies (const struct die_reader_specs *reader,
d521ce57 15456 const gdb_byte *info_ptr, int building_psymtab)
72bf9492 15457{
dee91e82 15458 struct dwarf2_cu *cu = reader->cu;
bb5ed363 15459 struct objfile *objfile = cu->objfile;
72bf9492
DJ
15460 struct partial_die_info *part_die;
15461 struct partial_die_info *parent_die, *last_die, *first_die = NULL;
15462 struct abbrev_info *abbrev;
15463 unsigned int bytes_read;
5afb4e99 15464 unsigned int load_all = 0;
72bf9492
DJ
15465 int nesting_level = 1;
15466
15467 parent_die = NULL;
15468 last_die = NULL;
15469
7adf1e79
DE
15470 gdb_assert (cu->per_cu != NULL);
15471 if (cu->per_cu->load_all_dies)
5afb4e99
DJ
15472 load_all = 1;
15473
72bf9492
DJ
15474 cu->partial_dies
15475 = htab_create_alloc_ex (cu->header.length / 12,
15476 partial_die_hash,
15477 partial_die_eq,
15478 NULL,
15479 &cu->comp_unit_obstack,
15480 hashtab_obstack_allocate,
15481 dummy_obstack_deallocate);
15482
15483 part_die = obstack_alloc (&cu->comp_unit_obstack,
15484 sizeof (struct partial_die_info));
15485
15486 while (1)
15487 {
15488 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
15489
15490 /* A NULL abbrev means the end of a series of children. */
15491 if (abbrev == NULL)
15492 {
15493 if (--nesting_level == 0)
15494 {
15495 /* PART_DIE was probably the last thing allocated on the
15496 comp_unit_obstack, so we could call obstack_free
15497 here. We don't do that because the waste is small,
15498 and will be cleaned up when we're done with this
15499 compilation unit. This way, we're also more robust
15500 against other users of the comp_unit_obstack. */
15501 return first_die;
15502 }
15503 info_ptr += bytes_read;
15504 last_die = parent_die;
15505 parent_die = parent_die->die_parent;
15506 continue;
15507 }
15508
98bfdba5
PA
15509 /* Check for template arguments. We never save these; if
15510 they're seen, we just mark the parent, and go on our way. */
15511 if (parent_die != NULL
15512 && cu->language == language_cplus
15513 && (abbrev->tag == DW_TAG_template_type_param
15514 || abbrev->tag == DW_TAG_template_value_param))
15515 {
15516 parent_die->has_template_arguments = 1;
15517
15518 if (!load_all)
15519 {
15520 /* We don't need a partial DIE for the template argument. */
dee91e82 15521 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
98bfdba5
PA
15522 continue;
15523 }
15524 }
15525
0d99eb77 15526 /* We only recurse into c++ subprograms looking for template arguments.
98bfdba5
PA
15527 Skip their other children. */
15528 if (!load_all
15529 && cu->language == language_cplus
15530 && parent_die != NULL
15531 && parent_die->tag == DW_TAG_subprogram)
15532 {
dee91e82 15533 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
98bfdba5
PA
15534 continue;
15535 }
15536
5afb4e99
DJ
15537 /* Check whether this DIE is interesting enough to save. Normally
15538 we would not be interested in members here, but there may be
15539 later variables referencing them via DW_AT_specification (for
15540 static members). */
15541 if (!load_all
15542 && !is_type_tag_for_partial (abbrev->tag)
72929c62 15543 && abbrev->tag != DW_TAG_constant
72bf9492
DJ
15544 && abbrev->tag != DW_TAG_enumerator
15545 && abbrev->tag != DW_TAG_subprogram
bc30ff58 15546 && abbrev->tag != DW_TAG_lexical_block
72bf9492 15547 && abbrev->tag != DW_TAG_variable
5afb4e99 15548 && abbrev->tag != DW_TAG_namespace
f55ee35c 15549 && abbrev->tag != DW_TAG_module
95554aad 15550 && abbrev->tag != DW_TAG_member
74921315
KS
15551 && abbrev->tag != DW_TAG_imported_unit
15552 && abbrev->tag != DW_TAG_imported_declaration)
72bf9492
DJ
15553 {
15554 /* Otherwise we skip to the next sibling, if any. */
dee91e82 15555 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
72bf9492
DJ
15556 continue;
15557 }
15558
dee91e82
DE
15559 info_ptr = read_partial_die (reader, part_die, abbrev, bytes_read,
15560 info_ptr);
72bf9492
DJ
15561
15562 /* This two-pass algorithm for processing partial symbols has a
15563 high cost in cache pressure. Thus, handle some simple cases
15564 here which cover the majority of C partial symbols. DIEs
15565 which neither have specification tags in them, nor could have
15566 specification tags elsewhere pointing at them, can simply be
15567 processed and discarded.
15568
15569 This segment is also optional; scan_partial_symbols and
15570 add_partial_symbol will handle these DIEs if we chain
15571 them in normally. When compilers which do not emit large
15572 quantities of duplicate debug information are more common,
15573 this code can probably be removed. */
15574
15575 /* Any complete simple types at the top level (pretty much all
15576 of them, for a language without namespaces), can be processed
15577 directly. */
15578 if (parent_die == NULL
15579 && part_die->has_specification == 0
15580 && part_die->is_declaration == 0
d8228535 15581 && ((part_die->tag == DW_TAG_typedef && !part_die->has_children)
72bf9492
DJ
15582 || part_die->tag == DW_TAG_base_type
15583 || part_die->tag == DW_TAG_subrange_type))
15584 {
15585 if (building_psymtab && part_die->name != NULL)
04a679b8 15586 add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
72bf9492 15587 VAR_DOMAIN, LOC_TYPEDEF,
bb5ed363
DE
15588 &objfile->static_psymbols,
15589 0, (CORE_ADDR) 0, cu->language, objfile);
dee91e82 15590 info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
72bf9492
DJ
15591 continue;
15592 }
15593
d8228535
JK
15594 /* The exception for DW_TAG_typedef with has_children above is
15595 a workaround of GCC PR debug/47510. In the case of this complaint
15596 type_name_no_tag_or_error will error on such types later.
15597
15598 GDB skipped children of DW_TAG_typedef by the shortcut above and then
15599 it could not find the child DIEs referenced later, this is checked
15600 above. In correct DWARF DW_TAG_typedef should have no children. */
15601
15602 if (part_die->tag == DW_TAG_typedef && part_die->has_children)
15603 complaint (&symfile_complaints,
15604 _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
15605 "- DIE at 0x%x [in module %s]"),
4262abfb 15606 part_die->offset.sect_off, objfile_name (objfile));
d8228535 15607
72bf9492
DJ
15608 /* If we're at the second level, and we're an enumerator, and
15609 our parent has no specification (meaning possibly lives in a
15610 namespace elsewhere), then we can add the partial symbol now
15611 instead of queueing it. */
15612 if (part_die->tag == DW_TAG_enumerator
15613 && parent_die != NULL
15614 && parent_die->die_parent == NULL
15615 && parent_die->tag == DW_TAG_enumeration_type
15616 && parent_die->has_specification == 0)
15617 {
15618 if (part_die->name == NULL)
3e43a32a
MS
15619 complaint (&symfile_complaints,
15620 _("malformed enumerator DIE ignored"));
72bf9492 15621 else if (building_psymtab)
04a679b8 15622 add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
72bf9492 15623 VAR_DOMAIN, LOC_CONST,
987504bb
JJ
15624 (cu->language == language_cplus
15625 || cu->language == language_java)
bb5ed363
DE
15626 ? &objfile->global_psymbols
15627 : &objfile->static_psymbols,
15628 0, (CORE_ADDR) 0, cu->language, objfile);
72bf9492 15629
dee91e82 15630 info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
72bf9492
DJ
15631 continue;
15632 }
15633
15634 /* We'll save this DIE so link it in. */
15635 part_die->die_parent = parent_die;
15636 part_die->die_sibling = NULL;
15637 part_die->die_child = NULL;
15638
15639 if (last_die && last_die == parent_die)
15640 last_die->die_child = part_die;
15641 else if (last_die)
15642 last_die->die_sibling = part_die;
15643
15644 last_die = part_die;
15645
15646 if (first_die == NULL)
15647 first_die = part_die;
15648
15649 /* Maybe add the DIE to the hash table. Not all DIEs that we
15650 find interesting need to be in the hash table, because we
15651 also have the parent/sibling/child chains; only those that we
15652 might refer to by offset later during partial symbol reading.
15653
15654 For now this means things that might have be the target of a
15655 DW_AT_specification, DW_AT_abstract_origin, or
15656 DW_AT_extension. DW_AT_extension will refer only to
15657 namespaces; DW_AT_abstract_origin refers to functions (and
15658 many things under the function DIE, but we do not recurse
15659 into function DIEs during partial symbol reading) and
15660 possibly variables as well; DW_AT_specification refers to
15661 declarations. Declarations ought to have the DW_AT_declaration
15662 flag. It happens that GCC forgets to put it in sometimes, but
15663 only for functions, not for types.
15664
15665 Adding more things than necessary to the hash table is harmless
15666 except for the performance cost. Adding too few will result in
5afb4e99
DJ
15667 wasted time in find_partial_die, when we reread the compilation
15668 unit with load_all_dies set. */
72bf9492 15669
5afb4e99 15670 if (load_all
72929c62 15671 || abbrev->tag == DW_TAG_constant
5afb4e99 15672 || abbrev->tag == DW_TAG_subprogram
72bf9492
DJ
15673 || abbrev->tag == DW_TAG_variable
15674 || abbrev->tag == DW_TAG_namespace
15675 || part_die->is_declaration)
15676 {
15677 void **slot;
15678
15679 slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
b64f50a1 15680 part_die->offset.sect_off, INSERT);
72bf9492
DJ
15681 *slot = part_die;
15682 }
15683
15684 part_die = obstack_alloc (&cu->comp_unit_obstack,
15685 sizeof (struct partial_die_info));
15686
15687 /* For some DIEs we want to follow their children (if any). For C
bc30ff58 15688 we have no reason to follow the children of structures; for other
98bfdba5
PA
15689 languages we have to, so that we can get at method physnames
15690 to infer fully qualified class names, for DW_AT_specification,
15691 and for C++ template arguments. For C++, we also look one level
15692 inside functions to find template arguments (if the name of the
15693 function does not already contain the template arguments).
bc30ff58
JB
15694
15695 For Ada, we need to scan the children of subprograms and lexical
15696 blocks as well because Ada allows the definition of nested
15697 entities that could be interesting for the debugger, such as
15698 nested subprograms for instance. */
72bf9492 15699 if (last_die->has_children
5afb4e99
DJ
15700 && (load_all
15701 || last_die->tag == DW_TAG_namespace
f55ee35c 15702 || last_die->tag == DW_TAG_module
72bf9492 15703 || last_die->tag == DW_TAG_enumeration_type
98bfdba5
PA
15704 || (cu->language == language_cplus
15705 && last_die->tag == DW_TAG_subprogram
15706 && (last_die->name == NULL
15707 || strchr (last_die->name, '<') == NULL))
72bf9492
DJ
15708 || (cu->language != language_c
15709 && (last_die->tag == DW_TAG_class_type
680b30c7 15710 || last_die->tag == DW_TAG_interface_type
72bf9492 15711 || last_die->tag == DW_TAG_structure_type
bc30ff58
JB
15712 || last_die->tag == DW_TAG_union_type))
15713 || (cu->language == language_ada
15714 && (last_die->tag == DW_TAG_subprogram
15715 || last_die->tag == DW_TAG_lexical_block))))
72bf9492
DJ
15716 {
15717 nesting_level++;
15718 parent_die = last_die;
15719 continue;
15720 }
15721
15722 /* Otherwise we skip to the next sibling, if any. */
dee91e82 15723 info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
72bf9492
DJ
15724
15725 /* Back to the top, do it again. */
15726 }
15727}
15728
c906108c
SS
15729/* Read a minimal amount of information into the minimal die structure. */
15730
d521ce57 15731static const gdb_byte *
dee91e82
DE
15732read_partial_die (const struct die_reader_specs *reader,
15733 struct partial_die_info *part_die,
15734 struct abbrev_info *abbrev, unsigned int abbrev_len,
d521ce57 15735 const gdb_byte *info_ptr)
c906108c 15736{
dee91e82 15737 struct dwarf2_cu *cu = reader->cu;
bb5ed363 15738 struct objfile *objfile = cu->objfile;
d521ce57 15739 const gdb_byte *buffer = reader->buffer;
fa238c03 15740 unsigned int i;
c906108c 15741 struct attribute attr;
c5aa993b 15742 int has_low_pc_attr = 0;
c906108c 15743 int has_high_pc_attr = 0;
91da1414 15744 int high_pc_relative = 0;
c906108c 15745
72bf9492 15746 memset (part_die, 0, sizeof (struct partial_die_info));
c906108c 15747
b64f50a1 15748 part_die->offset.sect_off = info_ptr - buffer;
72bf9492
DJ
15749
15750 info_ptr += abbrev_len;
15751
15752 if (abbrev == NULL)
15753 return info_ptr;
15754
c906108c
SS
15755 part_die->tag = abbrev->tag;
15756 part_die->has_children = abbrev->has_children;
c906108c
SS
15757
15758 for (i = 0; i < abbrev->num_attrs; ++i)
15759 {
dee91e82 15760 info_ptr = read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
c906108c
SS
15761
15762 /* Store the data if it is of an attribute we want to keep in a
c5aa993b 15763 partial symbol table. */
c906108c
SS
15764 switch (attr.name)
15765 {
15766 case DW_AT_name:
71c25dea
TT
15767 switch (part_die->tag)
15768 {
15769 case DW_TAG_compile_unit:
95554aad 15770 case DW_TAG_partial_unit:
348e048f 15771 case DW_TAG_type_unit:
71c25dea
TT
15772 /* Compilation units have a DW_AT_name that is a filename, not
15773 a source language identifier. */
15774 case DW_TAG_enumeration_type:
15775 case DW_TAG_enumerator:
15776 /* These tags always have simple identifiers already; no need
15777 to canonicalize them. */
15778 part_die->name = DW_STRING (&attr);
15779 break;
15780 default:
15781 part_die->name
15782 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
34a68019 15783 &objfile->per_bfd->storage_obstack);
71c25dea
TT
15784 break;
15785 }
c906108c 15786 break;
31ef98ae 15787 case DW_AT_linkage_name:
c906108c 15788 case DW_AT_MIPS_linkage_name:
31ef98ae
TT
15789 /* Note that both forms of linkage name might appear. We
15790 assume they will be the same, and we only store the last
15791 one we see. */
94af9270
KS
15792 if (cu->language == language_ada)
15793 part_die->name = DW_STRING (&attr);
abc72ce4 15794 part_die->linkage_name = DW_STRING (&attr);
c906108c
SS
15795 break;
15796 case DW_AT_low_pc:
15797 has_low_pc_attr = 1;
31aa7e4e 15798 part_die->lowpc = attr_value_as_address (&attr);
c906108c
SS
15799 break;
15800 case DW_AT_high_pc:
15801 has_high_pc_attr = 1;
31aa7e4e
JB
15802 part_die->highpc = attr_value_as_address (&attr);
15803 if (cu->header.version >= 4 && attr_form_is_constant (&attr))
15804 high_pc_relative = 1;
c906108c
SS
15805 break;
15806 case DW_AT_location:
0963b4bd 15807 /* Support the .debug_loc offsets. */
8e19ed76
PS
15808 if (attr_form_is_block (&attr))
15809 {
95554aad 15810 part_die->d.locdesc = DW_BLOCK (&attr);
8e19ed76 15811 }
3690dd37 15812 else if (attr_form_is_section_offset (&attr))
8e19ed76 15813 {
4d3c2250 15814 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
15815 }
15816 else
15817 {
4d3c2250
KB
15818 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
15819 "partial symbol information");
8e19ed76 15820 }
c906108c 15821 break;
c906108c
SS
15822 case DW_AT_external:
15823 part_die->is_external = DW_UNSND (&attr);
15824 break;
15825 case DW_AT_declaration:
15826 part_die->is_declaration = DW_UNSND (&attr);
15827 break;
15828 case DW_AT_type:
15829 part_die->has_type = 1;
15830 break;
15831 case DW_AT_abstract_origin:
15832 case DW_AT_specification:
72bf9492
DJ
15833 case DW_AT_extension:
15834 part_die->has_specification = 1;
c764a876 15835 part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
36586728
TT
15836 part_die->spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15837 || cu->per_cu->is_dwz);
c906108c
SS
15838 break;
15839 case DW_AT_sibling:
15840 /* Ignore absolute siblings, they might point outside of
15841 the current compile unit. */
15842 if (attr.form == DW_FORM_ref_addr)
3e43a32a
MS
15843 complaint (&symfile_complaints,
15844 _("ignoring absolute DW_AT_sibling"));
c906108c 15845 else
b9502d3f
WN
15846 {
15847 unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
15848 const gdb_byte *sibling_ptr = buffer + off;
15849
15850 if (sibling_ptr < info_ptr)
15851 complaint (&symfile_complaints,
15852 _("DW_AT_sibling points backwards"));
22869d73
KS
15853 else if (sibling_ptr > reader->buffer_end)
15854 dwarf2_section_buffer_overflow_complaint (reader->die_section);
b9502d3f
WN
15855 else
15856 part_die->sibling = sibling_ptr;
15857 }
c906108c 15858 break;
fa4028e9
JB
15859 case DW_AT_byte_size:
15860 part_die->has_byte_size = 1;
15861 break;
ff908ebf
AW
15862 case DW_AT_const_value:
15863 part_die->has_const_value = 1;
15864 break;
68511cec
CES
15865 case DW_AT_calling_convention:
15866 /* DWARF doesn't provide a way to identify a program's source-level
15867 entry point. DW_AT_calling_convention attributes are only meant
15868 to describe functions' calling conventions.
15869
15870 However, because it's a necessary piece of information in
15871 Fortran, and because DW_CC_program is the only piece of debugging
15872 information whose definition refers to a 'main program' at all,
15873 several compilers have begun marking Fortran main programs with
15874 DW_CC_program --- even when those functions use the standard
15875 calling conventions.
15876
15877 So until DWARF specifies a way to provide this information and
15878 compilers pick up the new representation, we'll support this
15879 practice. */
15880 if (DW_UNSND (&attr) == DW_CC_program
15881 && cu->language == language_fortran)
3d548a53 15882 set_objfile_main_name (objfile, part_die->name, language_fortran);
68511cec 15883 break;
481860b3
GB
15884 case DW_AT_inline:
15885 if (DW_UNSND (&attr) == DW_INL_inlined
15886 || DW_UNSND (&attr) == DW_INL_declared_inlined)
15887 part_die->may_be_inlined = 1;
15888 break;
95554aad
TT
15889
15890 case DW_AT_import:
15891 if (part_die->tag == DW_TAG_imported_unit)
36586728
TT
15892 {
15893 part_die->d.offset = dwarf2_get_ref_die_offset (&attr);
15894 part_die->is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15895 || cu->per_cu->is_dwz);
15896 }
95554aad
TT
15897 break;
15898
c906108c
SS
15899 default:
15900 break;
15901 }
15902 }
15903
91da1414
MW
15904 if (high_pc_relative)
15905 part_die->highpc += part_die->lowpc;
15906
9373cf26
JK
15907 if (has_low_pc_attr && has_high_pc_attr)
15908 {
15909 /* When using the GNU linker, .gnu.linkonce. sections are used to
15910 eliminate duplicate copies of functions and vtables and such.
15911 The linker will arbitrarily choose one and discard the others.
15912 The AT_*_pc values for such functions refer to local labels in
15913 these sections. If the section from that file was discarded, the
15914 labels are not in the output, so the relocs get a value of 0.
15915 If this is a discarded function, mark the pc bounds as invalid,
15916 so that GDB will ignore it. */
15917 if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
15918 {
bb5ed363 15919 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9373cf26
JK
15920
15921 complaint (&symfile_complaints,
15922 _("DW_AT_low_pc %s is zero "
15923 "for DIE at 0x%x [in module %s]"),
15924 paddress (gdbarch, part_die->lowpc),
4262abfb 15925 part_die->offset.sect_off, objfile_name (objfile));
9373cf26
JK
15926 }
15927 /* dwarf2_get_pc_bounds has also the strict low < high requirement. */
15928 else if (part_die->lowpc >= part_die->highpc)
15929 {
bb5ed363 15930 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9373cf26
JK
15931
15932 complaint (&symfile_complaints,
15933 _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
15934 "for DIE at 0x%x [in module %s]"),
15935 paddress (gdbarch, part_die->lowpc),
15936 paddress (gdbarch, part_die->highpc),
4262abfb 15937 part_die->offset.sect_off, objfile_name (objfile));
9373cf26
JK
15938 }
15939 else
15940 part_die->has_pc_info = 1;
15941 }
85cbf3d3 15942
c906108c
SS
15943 return info_ptr;
15944}
15945
72bf9492
DJ
15946/* Find a cached partial DIE at OFFSET in CU. */
15947
15948static struct partial_die_info *
b64f50a1 15949find_partial_die_in_comp_unit (sect_offset offset, struct dwarf2_cu *cu)
72bf9492
DJ
15950{
15951 struct partial_die_info *lookup_die = NULL;
15952 struct partial_die_info part_die;
15953
15954 part_die.offset = offset;
b64f50a1
JK
15955 lookup_die = htab_find_with_hash (cu->partial_dies, &part_die,
15956 offset.sect_off);
72bf9492 15957
72bf9492
DJ
15958 return lookup_die;
15959}
15960
348e048f
DE
15961/* Find a partial DIE at OFFSET, which may or may not be in CU,
15962 except in the case of .debug_types DIEs which do not reference
15963 outside their CU (they do however referencing other types via
55f1336d 15964 DW_FORM_ref_sig8). */
72bf9492
DJ
15965
15966static struct partial_die_info *
36586728 15967find_partial_die (sect_offset offset, int offset_in_dwz, struct dwarf2_cu *cu)
72bf9492 15968{
bb5ed363 15969 struct objfile *objfile = cu->objfile;
5afb4e99
DJ
15970 struct dwarf2_per_cu_data *per_cu = NULL;
15971 struct partial_die_info *pd = NULL;
72bf9492 15972
36586728
TT
15973 if (offset_in_dwz == cu->per_cu->is_dwz
15974 && offset_in_cu_p (&cu->header, offset))
5afb4e99
DJ
15975 {
15976 pd = find_partial_die_in_comp_unit (offset, cu);
15977 if (pd != NULL)
15978 return pd;
0d99eb77
DE
15979 /* We missed recording what we needed.
15980 Load all dies and try again. */
15981 per_cu = cu->per_cu;
5afb4e99 15982 }
0d99eb77
DE
15983 else
15984 {
15985 /* TUs don't reference other CUs/TUs (except via type signatures). */
3019eac3 15986 if (cu->per_cu->is_debug_types)
0d99eb77
DE
15987 {
15988 error (_("Dwarf Error: Type Unit at offset 0x%lx contains"
15989 " external reference to offset 0x%lx [in module %s].\n"),
15990 (long) cu->header.offset.sect_off, (long) offset.sect_off,
15991 bfd_get_filename (objfile->obfd));
15992 }
36586728
TT
15993 per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
15994 objfile);
72bf9492 15995
0d99eb77
DE
15996 if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
15997 load_partial_comp_unit (per_cu);
ae038cb0 15998
0d99eb77
DE
15999 per_cu->cu->last_used = 0;
16000 pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
16001 }
5afb4e99 16002
dee91e82
DE
16003 /* If we didn't find it, and not all dies have been loaded,
16004 load them all and try again. */
16005
5afb4e99
DJ
16006 if (pd == NULL && per_cu->load_all_dies == 0)
16007 {
5afb4e99 16008 per_cu->load_all_dies = 1;
fd820528
DE
16009
16010 /* This is nasty. When we reread the DIEs, somewhere up the call chain
16011 THIS_CU->cu may already be in use. So we can't just free it and
16012 replace its DIEs with the ones we read in. Instead, we leave those
16013 DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
16014 and clobber THIS_CU->cu->partial_dies with the hash table for the new
16015 set. */
dee91e82 16016 load_partial_comp_unit (per_cu);
5afb4e99
DJ
16017
16018 pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
16019 }
16020
16021 if (pd == NULL)
16022 internal_error (__FILE__, __LINE__,
3e43a32a
MS
16023 _("could not find partial DIE 0x%x "
16024 "in cache [from module %s]\n"),
b64f50a1 16025 offset.sect_off, bfd_get_filename (objfile->obfd));
5afb4e99 16026 return pd;
72bf9492
DJ
16027}
16028
abc72ce4
DE
16029/* See if we can figure out if the class lives in a namespace. We do
16030 this by looking for a member function; its demangled name will
16031 contain namespace info, if there is any. */
16032
16033static void
16034guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
16035 struct dwarf2_cu *cu)
16036{
16037 /* NOTE: carlton/2003-10-07: Getting the info this way changes
16038 what template types look like, because the demangler
16039 frequently doesn't give the same name as the debug info. We
16040 could fix this by only using the demangled name to get the
16041 prefix (but see comment in read_structure_type). */
16042
16043 struct partial_die_info *real_pdi;
16044 struct partial_die_info *child_pdi;
16045
16046 /* If this DIE (this DIE's specification, if any) has a parent, then
16047 we should not do this. We'll prepend the parent's fully qualified
16048 name when we create the partial symbol. */
16049
16050 real_pdi = struct_pdi;
16051 while (real_pdi->has_specification)
36586728
TT
16052 real_pdi = find_partial_die (real_pdi->spec_offset,
16053 real_pdi->spec_is_dwz, cu);
abc72ce4
DE
16054
16055 if (real_pdi->die_parent != NULL)
16056 return;
16057
16058 for (child_pdi = struct_pdi->die_child;
16059 child_pdi != NULL;
16060 child_pdi = child_pdi->die_sibling)
16061 {
16062 if (child_pdi->tag == DW_TAG_subprogram
16063 && child_pdi->linkage_name != NULL)
16064 {
16065 char *actual_class_name
16066 = language_class_name_from_physname (cu->language_defn,
16067 child_pdi->linkage_name);
16068 if (actual_class_name != NULL)
16069 {
16070 struct_pdi->name
34a68019 16071 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb
TT
16072 actual_class_name,
16073 strlen (actual_class_name));
abc72ce4
DE
16074 xfree (actual_class_name);
16075 }
16076 break;
16077 }
16078 }
16079}
16080
72bf9492
DJ
16081/* Adjust PART_DIE before generating a symbol for it. This function
16082 may set the is_external flag or change the DIE's name. */
16083
16084static void
16085fixup_partial_die (struct partial_die_info *part_die,
16086 struct dwarf2_cu *cu)
16087{
abc72ce4
DE
16088 /* Once we've fixed up a die, there's no point in doing so again.
16089 This also avoids a memory leak if we were to call
16090 guess_partial_die_structure_name multiple times. */
16091 if (part_die->fixup_called)
16092 return;
16093
72bf9492
DJ
16094 /* If we found a reference attribute and the DIE has no name, try
16095 to find a name in the referred to DIE. */
16096
16097 if (part_die->name == NULL && part_die->has_specification)
16098 {
16099 struct partial_die_info *spec_die;
72bf9492 16100
36586728
TT
16101 spec_die = find_partial_die (part_die->spec_offset,
16102 part_die->spec_is_dwz, cu);
72bf9492 16103
10b3939b 16104 fixup_partial_die (spec_die, cu);
72bf9492
DJ
16105
16106 if (spec_die->name)
16107 {
16108 part_die->name = spec_die->name;
16109
16110 /* Copy DW_AT_external attribute if it is set. */
16111 if (spec_die->is_external)
16112 part_die->is_external = spec_die->is_external;
16113 }
16114 }
16115
16116 /* Set default names for some unnamed DIEs. */
72bf9492
DJ
16117
16118 if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
2b1dbab0 16119 part_die->name = CP_ANONYMOUS_NAMESPACE_STR;
72bf9492 16120
abc72ce4
DE
16121 /* If there is no parent die to provide a namespace, and there are
16122 children, see if we can determine the namespace from their linkage
122d1940 16123 name. */
abc72ce4 16124 if (cu->language == language_cplus
8b70b953 16125 && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
abc72ce4
DE
16126 && part_die->die_parent == NULL
16127 && part_die->has_children
16128 && (part_die->tag == DW_TAG_class_type
16129 || part_die->tag == DW_TAG_structure_type
16130 || part_die->tag == DW_TAG_union_type))
16131 guess_partial_die_structure_name (part_die, cu);
16132
53832f31
TT
16133 /* GCC might emit a nameless struct or union that has a linkage
16134 name. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
16135 if (part_die->name == NULL
96408a79
SA
16136 && (part_die->tag == DW_TAG_class_type
16137 || part_die->tag == DW_TAG_interface_type
16138 || part_die->tag == DW_TAG_structure_type
16139 || part_die->tag == DW_TAG_union_type)
53832f31
TT
16140 && part_die->linkage_name != NULL)
16141 {
16142 char *demangled;
16143
8de20a37 16144 demangled = gdb_demangle (part_die->linkage_name, DMGL_TYPES);
53832f31
TT
16145 if (demangled)
16146 {
96408a79
SA
16147 const char *base;
16148
16149 /* Strip any leading namespaces/classes, keep only the base name.
16150 DW_AT_name for named DIEs does not contain the prefixes. */
16151 base = strrchr (demangled, ':');
16152 if (base && base > demangled && base[-1] == ':')
16153 base++;
16154 else
16155 base = demangled;
16156
34a68019
TT
16157 part_die->name
16158 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
16159 base, strlen (base));
53832f31
TT
16160 xfree (demangled);
16161 }
16162 }
16163
abc72ce4 16164 part_die->fixup_called = 1;
72bf9492
DJ
16165}
16166
a8329558 16167/* Read an attribute value described by an attribute form. */
c906108c 16168
d521ce57 16169static const gdb_byte *
dee91e82
DE
16170read_attribute_value (const struct die_reader_specs *reader,
16171 struct attribute *attr, unsigned form,
d521ce57 16172 const gdb_byte *info_ptr)
c906108c 16173{
dee91e82 16174 struct dwarf2_cu *cu = reader->cu;
3e29f34a
MR
16175 struct objfile *objfile = cu->objfile;
16176 struct gdbarch *gdbarch = get_objfile_arch (objfile);
dee91e82 16177 bfd *abfd = reader->abfd;
e7c27a73 16178 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
16179 unsigned int bytes_read;
16180 struct dwarf_block *blk;
16181
a8329558
KW
16182 attr->form = form;
16183 switch (form)
c906108c 16184 {
c906108c 16185 case DW_FORM_ref_addr:
ae411497 16186 if (cu->header.version == 2)
4568ecf9 16187 DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
ae411497 16188 else
4568ecf9
DE
16189 DW_UNSND (attr) = read_offset (abfd, info_ptr,
16190 &cu->header, &bytes_read);
ae411497
TT
16191 info_ptr += bytes_read;
16192 break;
36586728
TT
16193 case DW_FORM_GNU_ref_alt:
16194 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16195 info_ptr += bytes_read;
16196 break;
ae411497 16197 case DW_FORM_addr:
e7c27a73 16198 DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
3e29f34a 16199 DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
107d2387 16200 info_ptr += bytes_read;
c906108c
SS
16201 break;
16202 case DW_FORM_block2:
7b5a2f43 16203 blk = dwarf_alloc_block (cu);
c906108c
SS
16204 blk->size = read_2_bytes (abfd, info_ptr);
16205 info_ptr += 2;
16206 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16207 info_ptr += blk->size;
16208 DW_BLOCK (attr) = blk;
16209 break;
16210 case DW_FORM_block4:
7b5a2f43 16211 blk = dwarf_alloc_block (cu);
c906108c
SS
16212 blk->size = read_4_bytes (abfd, info_ptr);
16213 info_ptr += 4;
16214 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16215 info_ptr += blk->size;
16216 DW_BLOCK (attr) = blk;
16217 break;
16218 case DW_FORM_data2:
16219 DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
16220 info_ptr += 2;
16221 break;
16222 case DW_FORM_data4:
16223 DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
16224 info_ptr += 4;
16225 break;
16226 case DW_FORM_data8:
16227 DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
16228 info_ptr += 8;
16229 break;
2dc7f7b3
TT
16230 case DW_FORM_sec_offset:
16231 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16232 info_ptr += bytes_read;
16233 break;
c906108c 16234 case DW_FORM_string:
9b1c24c8 16235 DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
8285870a 16236 DW_STRING_IS_CANONICAL (attr) = 0;
c906108c
SS
16237 info_ptr += bytes_read;
16238 break;
4bdf3d34 16239 case DW_FORM_strp:
36586728
TT
16240 if (!cu->per_cu->is_dwz)
16241 {
16242 DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
16243 &bytes_read);
16244 DW_STRING_IS_CANONICAL (attr) = 0;
16245 info_ptr += bytes_read;
16246 break;
16247 }
16248 /* FALLTHROUGH */
16249 case DW_FORM_GNU_strp_alt:
16250 {
16251 struct dwz_file *dwz = dwarf2_get_dwz_file ();
16252 LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
16253 &bytes_read);
16254
16255 DW_STRING (attr) = read_indirect_string_from_dwz (dwz, str_offset);
16256 DW_STRING_IS_CANONICAL (attr) = 0;
16257 info_ptr += bytes_read;
16258 }
4bdf3d34 16259 break;
2dc7f7b3 16260 case DW_FORM_exprloc:
c906108c 16261 case DW_FORM_block:
7b5a2f43 16262 blk = dwarf_alloc_block (cu);
c906108c
SS
16263 blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16264 info_ptr += bytes_read;
16265 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16266 info_ptr += blk->size;
16267 DW_BLOCK (attr) = blk;
16268 break;
16269 case DW_FORM_block1:
7b5a2f43 16270 blk = dwarf_alloc_block (cu);
c906108c
SS
16271 blk->size = read_1_byte (abfd, info_ptr);
16272 info_ptr += 1;
16273 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16274 info_ptr += blk->size;
16275 DW_BLOCK (attr) = blk;
16276 break;
16277 case DW_FORM_data1:
16278 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16279 info_ptr += 1;
16280 break;
16281 case DW_FORM_flag:
16282 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16283 info_ptr += 1;
16284 break;
2dc7f7b3
TT
16285 case DW_FORM_flag_present:
16286 DW_UNSND (attr) = 1;
16287 break;
c906108c
SS
16288 case DW_FORM_sdata:
16289 DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
16290 info_ptr += bytes_read;
16291 break;
16292 case DW_FORM_udata:
16293 DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16294 info_ptr += bytes_read;
16295 break;
16296 case DW_FORM_ref1:
4568ecf9
DE
16297 DW_UNSND (attr) = (cu->header.offset.sect_off
16298 + read_1_byte (abfd, info_ptr));
c906108c
SS
16299 info_ptr += 1;
16300 break;
16301 case DW_FORM_ref2:
4568ecf9
DE
16302 DW_UNSND (attr) = (cu->header.offset.sect_off
16303 + read_2_bytes (abfd, info_ptr));
c906108c
SS
16304 info_ptr += 2;
16305 break;
16306 case DW_FORM_ref4:
4568ecf9
DE
16307 DW_UNSND (attr) = (cu->header.offset.sect_off
16308 + read_4_bytes (abfd, info_ptr));
c906108c
SS
16309 info_ptr += 4;
16310 break;
613e1657 16311 case DW_FORM_ref8:
4568ecf9
DE
16312 DW_UNSND (attr) = (cu->header.offset.sect_off
16313 + read_8_bytes (abfd, info_ptr));
613e1657
KB
16314 info_ptr += 8;
16315 break;
55f1336d 16316 case DW_FORM_ref_sig8:
ac9ec31b 16317 DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
348e048f
DE
16318 info_ptr += 8;
16319 break;
c906108c 16320 case DW_FORM_ref_udata:
4568ecf9
DE
16321 DW_UNSND (attr) = (cu->header.offset.sect_off
16322 + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
c906108c
SS
16323 info_ptr += bytes_read;
16324 break;
c906108c 16325 case DW_FORM_indirect:
a8329558
KW
16326 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16327 info_ptr += bytes_read;
dee91e82 16328 info_ptr = read_attribute_value (reader, attr, form, info_ptr);
a8329558 16329 break;
3019eac3
DE
16330 case DW_FORM_GNU_addr_index:
16331 if (reader->dwo_file == NULL)
16332 {
16333 /* For now flag a hard error.
16334 Later we can turn this into a complaint. */
16335 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16336 dwarf_form_name (form),
16337 bfd_get_filename (abfd));
16338 }
16339 DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
16340 info_ptr += bytes_read;
16341 break;
16342 case DW_FORM_GNU_str_index:
16343 if (reader->dwo_file == NULL)
16344 {
16345 /* For now flag a hard error.
16346 Later we can turn this into a complaint if warranted. */
16347 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16348 dwarf_form_name (form),
16349 bfd_get_filename (abfd));
16350 }
16351 {
16352 ULONGEST str_index =
16353 read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16354
342587c4 16355 DW_STRING (attr) = read_str_index (reader, str_index);
3019eac3
DE
16356 DW_STRING_IS_CANONICAL (attr) = 0;
16357 info_ptr += bytes_read;
16358 }
16359 break;
c906108c 16360 default:
8a3fe4f8 16361 error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
659b0389
ML
16362 dwarf_form_name (form),
16363 bfd_get_filename (abfd));
c906108c 16364 }
28e94949 16365
36586728 16366 /* Super hack. */
7771576e 16367 if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
36586728
TT
16368 attr->form = DW_FORM_GNU_ref_alt;
16369
28e94949
JB
16370 /* We have seen instances where the compiler tried to emit a byte
16371 size attribute of -1 which ended up being encoded as an unsigned
16372 0xffffffff. Although 0xffffffff is technically a valid size value,
16373 an object of this size seems pretty unlikely so we can relatively
16374 safely treat these cases as if the size attribute was invalid and
16375 treat them as zero by default. */
16376 if (attr->name == DW_AT_byte_size
16377 && form == DW_FORM_data4
16378 && DW_UNSND (attr) >= 0xffffffff)
01c66ae6
JB
16379 {
16380 complaint
16381 (&symfile_complaints,
43bbcdc2
PH
16382 _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
16383 hex_string (DW_UNSND (attr)));
01c66ae6
JB
16384 DW_UNSND (attr) = 0;
16385 }
28e94949 16386
c906108c
SS
16387 return info_ptr;
16388}
16389
a8329558
KW
16390/* Read an attribute described by an abbreviated attribute. */
16391
d521ce57 16392static const gdb_byte *
dee91e82
DE
16393read_attribute (const struct die_reader_specs *reader,
16394 struct attribute *attr, struct attr_abbrev *abbrev,
d521ce57 16395 const gdb_byte *info_ptr)
a8329558
KW
16396{
16397 attr->name = abbrev->name;
dee91e82 16398 return read_attribute_value (reader, attr, abbrev->form, info_ptr);
a8329558
KW
16399}
16400
0963b4bd 16401/* Read dwarf information from a buffer. */
c906108c
SS
16402
16403static unsigned int
a1855c1d 16404read_1_byte (bfd *abfd, const gdb_byte *buf)
c906108c 16405{
fe1b8b76 16406 return bfd_get_8 (abfd, buf);
c906108c
SS
16407}
16408
16409static int
a1855c1d 16410read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
c906108c 16411{
fe1b8b76 16412 return bfd_get_signed_8 (abfd, buf);
c906108c
SS
16413}
16414
16415static unsigned int
a1855c1d 16416read_2_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16417{
fe1b8b76 16418 return bfd_get_16 (abfd, buf);
c906108c
SS
16419}
16420
21ae7a4d 16421static int
a1855c1d 16422read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
21ae7a4d
JK
16423{
16424 return bfd_get_signed_16 (abfd, buf);
16425}
16426
c906108c 16427static unsigned int
a1855c1d 16428read_4_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16429{
fe1b8b76 16430 return bfd_get_32 (abfd, buf);
c906108c
SS
16431}
16432
21ae7a4d 16433static int
a1855c1d 16434read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
21ae7a4d
JK
16435{
16436 return bfd_get_signed_32 (abfd, buf);
16437}
16438
93311388 16439static ULONGEST
a1855c1d 16440read_8_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16441{
fe1b8b76 16442 return bfd_get_64 (abfd, buf);
c906108c
SS
16443}
16444
16445static CORE_ADDR
d521ce57 16446read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
891d2f0b 16447 unsigned int *bytes_read)
c906108c 16448{
e7c27a73 16449 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
16450 CORE_ADDR retval = 0;
16451
107d2387 16452 if (cu_header->signed_addr_p)
c906108c 16453 {
107d2387
AC
16454 switch (cu_header->addr_size)
16455 {
16456 case 2:
fe1b8b76 16457 retval = bfd_get_signed_16 (abfd, buf);
107d2387
AC
16458 break;
16459 case 4:
fe1b8b76 16460 retval = bfd_get_signed_32 (abfd, buf);
107d2387
AC
16461 break;
16462 case 8:
fe1b8b76 16463 retval = bfd_get_signed_64 (abfd, buf);
107d2387
AC
16464 break;
16465 default:
8e65ff28 16466 internal_error (__FILE__, __LINE__,
e2e0b3e5 16467 _("read_address: bad switch, signed [in module %s]"),
659b0389 16468 bfd_get_filename (abfd));
107d2387
AC
16469 }
16470 }
16471 else
16472 {
16473 switch (cu_header->addr_size)
16474 {
16475 case 2:
fe1b8b76 16476 retval = bfd_get_16 (abfd, buf);
107d2387
AC
16477 break;
16478 case 4:
fe1b8b76 16479 retval = bfd_get_32 (abfd, buf);
107d2387
AC
16480 break;
16481 case 8:
fe1b8b76 16482 retval = bfd_get_64 (abfd, buf);
107d2387
AC
16483 break;
16484 default:
8e65ff28 16485 internal_error (__FILE__, __LINE__,
a73c6dcd
MS
16486 _("read_address: bad switch, "
16487 "unsigned [in module %s]"),
659b0389 16488 bfd_get_filename (abfd));
107d2387 16489 }
c906108c 16490 }
64367e0a 16491
107d2387
AC
16492 *bytes_read = cu_header->addr_size;
16493 return retval;
c906108c
SS
16494}
16495
f7ef9339 16496/* Read the initial length from a section. The (draft) DWARF 3
613e1657
KB
16497 specification allows the initial length to take up either 4 bytes
16498 or 12 bytes. If the first 4 bytes are 0xffffffff, then the next 8
16499 bytes describe the length and all offsets will be 8 bytes in length
16500 instead of 4.
16501
f7ef9339
KB
16502 An older, non-standard 64-bit format is also handled by this
16503 function. The older format in question stores the initial length
16504 as an 8-byte quantity without an escape value. Lengths greater
16505 than 2^32 aren't very common which means that the initial 4 bytes
16506 is almost always zero. Since a length value of zero doesn't make
16507 sense for the 32-bit format, this initial zero can be considered to
16508 be an escape value which indicates the presence of the older 64-bit
16509 format. As written, the code can't detect (old format) lengths
917c78fc
MK
16510 greater than 4GB. If it becomes necessary to handle lengths
16511 somewhat larger than 4GB, we could allow other small values (such
16512 as the non-sensical values of 1, 2, and 3) to also be used as
16513 escape values indicating the presence of the old format.
f7ef9339 16514
917c78fc
MK
16515 The value returned via bytes_read should be used to increment the
16516 relevant pointer after calling read_initial_length().
c764a876 16517
613e1657
KB
16518 [ Note: read_initial_length() and read_offset() are based on the
16519 document entitled "DWARF Debugging Information Format", revision
f7ef9339 16520 3, draft 8, dated November 19, 2001. This document was obtained
613e1657
KB
16521 from:
16522
f7ef9339 16523 http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
6e70227d 16524
613e1657
KB
16525 This document is only a draft and is subject to change. (So beware.)
16526
f7ef9339 16527 Details regarding the older, non-standard 64-bit format were
917c78fc
MK
16528 determined empirically by examining 64-bit ELF files produced by
16529 the SGI toolchain on an IRIX 6.5 machine.
f7ef9339
KB
16530
16531 - Kevin, July 16, 2002
613e1657
KB
16532 ] */
16533
16534static LONGEST
d521ce57 16535read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
613e1657 16536{
fe1b8b76 16537 LONGEST length = bfd_get_32 (abfd, buf);
613e1657 16538
dd373385 16539 if (length == 0xffffffff)
613e1657 16540 {
fe1b8b76 16541 length = bfd_get_64 (abfd, buf + 4);
613e1657 16542 *bytes_read = 12;
613e1657 16543 }
dd373385 16544 else if (length == 0)
f7ef9339 16545 {
dd373385 16546 /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX. */
fe1b8b76 16547 length = bfd_get_64 (abfd, buf);
f7ef9339 16548 *bytes_read = 8;
f7ef9339 16549 }
613e1657
KB
16550 else
16551 {
16552 *bytes_read = 4;
613e1657
KB
16553 }
16554
c764a876
DE
16555 return length;
16556}
dd373385 16557
c764a876
DE
16558/* Cover function for read_initial_length.
16559 Returns the length of the object at BUF, and stores the size of the
16560 initial length in *BYTES_READ and stores the size that offsets will be in
16561 *OFFSET_SIZE.
16562 If the initial length size is not equivalent to that specified in
16563 CU_HEADER then issue a complaint.
16564 This is useful when reading non-comp-unit headers. */
dd373385 16565
c764a876 16566static LONGEST
d521ce57 16567read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
c764a876
DE
16568 const struct comp_unit_head *cu_header,
16569 unsigned int *bytes_read,
16570 unsigned int *offset_size)
16571{
16572 LONGEST length = read_initial_length (abfd, buf, bytes_read);
16573
16574 gdb_assert (cu_header->initial_length_size == 4
16575 || cu_header->initial_length_size == 8
16576 || cu_header->initial_length_size == 12);
16577
16578 if (cu_header->initial_length_size != *bytes_read)
16579 complaint (&symfile_complaints,
16580 _("intermixed 32-bit and 64-bit DWARF sections"));
dd373385 16581
c764a876 16582 *offset_size = (*bytes_read == 4) ? 4 : 8;
dd373385 16583 return length;
613e1657
KB
16584}
16585
16586/* Read an offset from the data stream. The size of the offset is
917c78fc 16587 given by cu_header->offset_size. */
613e1657
KB
16588
16589static LONGEST
d521ce57
TT
16590read_offset (bfd *abfd, const gdb_byte *buf,
16591 const struct comp_unit_head *cu_header,
891d2f0b 16592 unsigned int *bytes_read)
c764a876
DE
16593{
16594 LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
9a619af0 16595
c764a876
DE
16596 *bytes_read = cu_header->offset_size;
16597 return offset;
16598}
16599
16600/* Read an offset from the data stream. */
16601
16602static LONGEST
d521ce57 16603read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
613e1657
KB
16604{
16605 LONGEST retval = 0;
16606
c764a876 16607 switch (offset_size)
613e1657
KB
16608 {
16609 case 4:
fe1b8b76 16610 retval = bfd_get_32 (abfd, buf);
613e1657
KB
16611 break;
16612 case 8:
fe1b8b76 16613 retval = bfd_get_64 (abfd, buf);
613e1657
KB
16614 break;
16615 default:
8e65ff28 16616 internal_error (__FILE__, __LINE__,
c764a876 16617 _("read_offset_1: bad switch [in module %s]"),
659b0389 16618 bfd_get_filename (abfd));
613e1657
KB
16619 }
16620
917c78fc 16621 return retval;
613e1657
KB
16622}
16623
d521ce57
TT
16624static const gdb_byte *
16625read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
c906108c
SS
16626{
16627 /* If the size of a host char is 8 bits, we can return a pointer
16628 to the buffer, otherwise we have to copy the data to a buffer
16629 allocated on the temporary obstack. */
4bdf3d34 16630 gdb_assert (HOST_CHAR_BIT == 8);
c906108c 16631 return buf;
c906108c
SS
16632}
16633
d521ce57
TT
16634static const char *
16635read_direct_string (bfd *abfd, const gdb_byte *buf,
16636 unsigned int *bytes_read_ptr)
c906108c
SS
16637{
16638 /* If the size of a host char is 8 bits, we can return a pointer
16639 to the string, otherwise we have to copy the string to a buffer
16640 allocated on the temporary obstack. */
4bdf3d34 16641 gdb_assert (HOST_CHAR_BIT == 8);
c906108c
SS
16642 if (*buf == '\0')
16643 {
16644 *bytes_read_ptr = 1;
16645 return NULL;
16646 }
d521ce57
TT
16647 *bytes_read_ptr = strlen ((const char *) buf) + 1;
16648 return (const char *) buf;
4bdf3d34
JJ
16649}
16650
d521ce57 16651static const char *
cf2c3c16 16652read_indirect_string_at_offset (bfd *abfd, LONGEST str_offset)
4bdf3d34 16653{
be391dca 16654 dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->str);
dce234bc 16655 if (dwarf2_per_objfile->str.buffer == NULL)
cf2c3c16
TT
16656 error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
16657 bfd_get_filename (abfd));
dce234bc 16658 if (str_offset >= dwarf2_per_objfile->str.size)
cf2c3c16
TT
16659 error (_("DW_FORM_strp pointing outside of "
16660 ".debug_str section [in module %s]"),
16661 bfd_get_filename (abfd));
4bdf3d34 16662 gdb_assert (HOST_CHAR_BIT == 8);
dce234bc 16663 if (dwarf2_per_objfile->str.buffer[str_offset] == '\0')
4bdf3d34 16664 return NULL;
d521ce57 16665 return (const char *) (dwarf2_per_objfile->str.buffer + str_offset);
c906108c
SS
16666}
16667
36586728
TT
16668/* Read a string at offset STR_OFFSET in the .debug_str section from
16669 the .dwz file DWZ. Throw an error if the offset is too large. If
16670 the string consists of a single NUL byte, return NULL; otherwise
16671 return a pointer to the string. */
16672
d521ce57 16673static const char *
36586728
TT
16674read_indirect_string_from_dwz (struct dwz_file *dwz, LONGEST str_offset)
16675{
16676 dwarf2_read_section (dwarf2_per_objfile->objfile, &dwz->str);
16677
16678 if (dwz->str.buffer == NULL)
16679 error (_("DW_FORM_GNU_strp_alt used without .debug_str "
16680 "section [in module %s]"),
16681 bfd_get_filename (dwz->dwz_bfd));
16682 if (str_offset >= dwz->str.size)
16683 error (_("DW_FORM_GNU_strp_alt pointing outside of "
16684 ".debug_str section [in module %s]"),
16685 bfd_get_filename (dwz->dwz_bfd));
16686 gdb_assert (HOST_CHAR_BIT == 8);
16687 if (dwz->str.buffer[str_offset] == '\0')
16688 return NULL;
d521ce57 16689 return (const char *) (dwz->str.buffer + str_offset);
36586728
TT
16690}
16691
d521ce57
TT
16692static const char *
16693read_indirect_string (bfd *abfd, const gdb_byte *buf,
cf2c3c16
TT
16694 const struct comp_unit_head *cu_header,
16695 unsigned int *bytes_read_ptr)
16696{
16697 LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
16698
16699 return read_indirect_string_at_offset (abfd, str_offset);
16700}
16701
12df843f 16702static ULONGEST
d521ce57
TT
16703read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
16704 unsigned int *bytes_read_ptr)
c906108c 16705{
12df843f 16706 ULONGEST result;
ce5d95e1 16707 unsigned int num_read;
c906108c
SS
16708 int i, shift;
16709 unsigned char byte;
16710
16711 result = 0;
16712 shift = 0;
16713 num_read = 0;
16714 i = 0;
16715 while (1)
16716 {
fe1b8b76 16717 byte = bfd_get_8 (abfd, buf);
c906108c
SS
16718 buf++;
16719 num_read++;
12df843f 16720 result |= ((ULONGEST) (byte & 127) << shift);
c906108c
SS
16721 if ((byte & 128) == 0)
16722 {
16723 break;
16724 }
16725 shift += 7;
16726 }
16727 *bytes_read_ptr = num_read;
16728 return result;
16729}
16730
12df843f 16731static LONGEST
d521ce57
TT
16732read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
16733 unsigned int *bytes_read_ptr)
c906108c 16734{
12df843f 16735 LONGEST result;
77e0b926 16736 int i, shift, num_read;
c906108c
SS
16737 unsigned char byte;
16738
16739 result = 0;
16740 shift = 0;
c906108c
SS
16741 num_read = 0;
16742 i = 0;
16743 while (1)
16744 {
fe1b8b76 16745 byte = bfd_get_8 (abfd, buf);
c906108c
SS
16746 buf++;
16747 num_read++;
12df843f 16748 result |= ((LONGEST) (byte & 127) << shift);
c906108c
SS
16749 shift += 7;
16750 if ((byte & 128) == 0)
16751 {
16752 break;
16753 }
16754 }
77e0b926 16755 if ((shift < 8 * sizeof (result)) && (byte & 0x40))
12df843f 16756 result |= -(((LONGEST) 1) << shift);
c906108c
SS
16757 *bytes_read_ptr = num_read;
16758 return result;
16759}
16760
3019eac3
DE
16761/* Given index ADDR_INDEX in .debug_addr, fetch the value.
16762 ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
16763 ADDR_SIZE is the size of addresses from the CU header. */
16764
16765static CORE_ADDR
16766read_addr_index_1 (unsigned int addr_index, ULONGEST addr_base, int addr_size)
16767{
16768 struct objfile *objfile = dwarf2_per_objfile->objfile;
16769 bfd *abfd = objfile->obfd;
16770 const gdb_byte *info_ptr;
16771
16772 dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
16773 if (dwarf2_per_objfile->addr.buffer == NULL)
16774 error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
4262abfb 16775 objfile_name (objfile));
3019eac3
DE
16776 if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
16777 error (_("DW_FORM_addr_index pointing outside of "
16778 ".debug_addr section [in module %s]"),
4262abfb 16779 objfile_name (objfile));
3019eac3
DE
16780 info_ptr = (dwarf2_per_objfile->addr.buffer
16781 + addr_base + addr_index * addr_size);
16782 if (addr_size == 4)
16783 return bfd_get_32 (abfd, info_ptr);
16784 else
16785 return bfd_get_64 (abfd, info_ptr);
16786}
16787
16788/* Given index ADDR_INDEX in .debug_addr, fetch the value. */
16789
16790static CORE_ADDR
16791read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
16792{
16793 return read_addr_index_1 (addr_index, cu->addr_base, cu->header.addr_size);
16794}
16795
16796/* Given a pointer to an leb128 value, fetch the value from .debug_addr. */
16797
16798static CORE_ADDR
d521ce57 16799read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
3019eac3
DE
16800 unsigned int *bytes_read)
16801{
16802 bfd *abfd = cu->objfile->obfd;
16803 unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
16804
16805 return read_addr_index (cu, addr_index);
16806}
16807
16808/* Data structure to pass results from dwarf2_read_addr_index_reader
16809 back to dwarf2_read_addr_index. */
16810
16811struct dwarf2_read_addr_index_data
16812{
16813 ULONGEST addr_base;
16814 int addr_size;
16815};
16816
16817/* die_reader_func for dwarf2_read_addr_index. */
16818
16819static void
16820dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
d521ce57 16821 const gdb_byte *info_ptr,
3019eac3
DE
16822 struct die_info *comp_unit_die,
16823 int has_children,
16824 void *data)
16825{
16826 struct dwarf2_cu *cu = reader->cu;
16827 struct dwarf2_read_addr_index_data *aidata =
16828 (struct dwarf2_read_addr_index_data *) data;
16829
16830 aidata->addr_base = cu->addr_base;
16831 aidata->addr_size = cu->header.addr_size;
16832}
16833
16834/* Given an index in .debug_addr, fetch the value.
16835 NOTE: This can be called during dwarf expression evaluation,
16836 long after the debug information has been read, and thus per_cu->cu
16837 may no longer exist. */
16838
16839CORE_ADDR
16840dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
16841 unsigned int addr_index)
16842{
16843 struct objfile *objfile = per_cu->objfile;
16844 struct dwarf2_cu *cu = per_cu->cu;
16845 ULONGEST addr_base;
16846 int addr_size;
16847
16848 /* This is intended to be called from outside this file. */
16849 dw2_setup (objfile);
16850
16851 /* We need addr_base and addr_size.
16852 If we don't have PER_CU->cu, we have to get it.
16853 Nasty, but the alternative is storing the needed info in PER_CU,
16854 which at this point doesn't seem justified: it's not clear how frequently
16855 it would get used and it would increase the size of every PER_CU.
16856 Entry points like dwarf2_per_cu_addr_size do a similar thing
16857 so we're not in uncharted territory here.
16858 Alas we need to be a bit more complicated as addr_base is contained
16859 in the DIE.
16860
16861 We don't need to read the entire CU(/TU).
16862 We just need the header and top level die.
a1b64ce1 16863
3019eac3 16864 IWBN to use the aging mechanism to let us lazily later discard the CU.
a1b64ce1 16865 For now we skip this optimization. */
3019eac3
DE
16866
16867 if (cu != NULL)
16868 {
16869 addr_base = cu->addr_base;
16870 addr_size = cu->header.addr_size;
16871 }
16872 else
16873 {
16874 struct dwarf2_read_addr_index_data aidata;
16875
a1b64ce1
DE
16876 /* Note: We can't use init_cutu_and_read_dies_simple here,
16877 we need addr_base. */
16878 init_cutu_and_read_dies (per_cu, NULL, 0, 0,
16879 dwarf2_read_addr_index_reader, &aidata);
3019eac3
DE
16880 addr_base = aidata.addr_base;
16881 addr_size = aidata.addr_size;
16882 }
16883
16884 return read_addr_index_1 (addr_index, addr_base, addr_size);
16885}
16886
57d63ce2
DE
16887/* Given a DW_FORM_GNU_str_index, fetch the string.
16888 This is only used by the Fission support. */
3019eac3 16889
d521ce57 16890static const char *
342587c4 16891read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
3019eac3
DE
16892{
16893 struct objfile *objfile = dwarf2_per_objfile->objfile;
c5164cbc 16894 const char *objf_name = objfile_name (objfile);
3019eac3 16895 bfd *abfd = objfile->obfd;
342587c4 16896 struct dwarf2_cu *cu = reader->cu;
73869dc2
DE
16897 struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
16898 struct dwarf2_section_info *str_offsets_section =
16899 &reader->dwo_file->sections.str_offsets;
d521ce57 16900 const gdb_byte *info_ptr;
3019eac3 16901 ULONGEST str_offset;
57d63ce2 16902 static const char form_name[] = "DW_FORM_GNU_str_index";
3019eac3 16903
73869dc2
DE
16904 dwarf2_read_section (objfile, str_section);
16905 dwarf2_read_section (objfile, str_offsets_section);
16906 if (str_section->buffer == NULL)
57d63ce2 16907 error (_("%s used without .debug_str.dwo section"
3019eac3 16908 " in CU at offset 0x%lx [in module %s]"),
c5164cbc 16909 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16910 if (str_offsets_section->buffer == NULL)
57d63ce2 16911 error (_("%s used without .debug_str_offsets.dwo section"
3019eac3 16912 " in CU at offset 0x%lx [in module %s]"),
c5164cbc 16913 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16914 if (str_index * cu->header.offset_size >= str_offsets_section->size)
57d63ce2 16915 error (_("%s pointing outside of .debug_str_offsets.dwo"
3019eac3 16916 " section in CU at offset 0x%lx [in module %s]"),
c5164cbc 16917 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16918 info_ptr = (str_offsets_section->buffer
3019eac3
DE
16919 + str_index * cu->header.offset_size);
16920 if (cu->header.offset_size == 4)
16921 str_offset = bfd_get_32 (abfd, info_ptr);
16922 else
16923 str_offset = bfd_get_64 (abfd, info_ptr);
73869dc2 16924 if (str_offset >= str_section->size)
57d63ce2 16925 error (_("Offset from %s pointing outside of"
3019eac3 16926 " .debug_str.dwo section in CU at offset 0x%lx [in module %s]"),
c5164cbc 16927 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16928 return (const char *) (str_section->buffer + str_offset);
3019eac3
DE
16929}
16930
3019eac3
DE
16931/* Return the length of an LEB128 number in BUF. */
16932
16933static int
16934leb128_size (const gdb_byte *buf)
16935{
16936 const gdb_byte *begin = buf;
16937 gdb_byte byte;
16938
16939 while (1)
16940 {
16941 byte = *buf++;
16942 if ((byte & 128) == 0)
16943 return buf - begin;
16944 }
16945}
16946
c906108c 16947static void
e142c38c 16948set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
c906108c
SS
16949{
16950 switch (lang)
16951 {
16952 case DW_LANG_C89:
76bee0cc 16953 case DW_LANG_C99:
0cfd832f 16954 case DW_LANG_C11:
c906108c 16955 case DW_LANG_C:
d1be3247 16956 case DW_LANG_UPC:
e142c38c 16957 cu->language = language_c;
c906108c
SS
16958 break;
16959 case DW_LANG_C_plus_plus:
0cfd832f
MW
16960 case DW_LANG_C_plus_plus_11:
16961 case DW_LANG_C_plus_plus_14:
e142c38c 16962 cu->language = language_cplus;
c906108c 16963 break;
6aecb9c2
JB
16964 case DW_LANG_D:
16965 cu->language = language_d;
16966 break;
c906108c
SS
16967 case DW_LANG_Fortran77:
16968 case DW_LANG_Fortran90:
b21b22e0 16969 case DW_LANG_Fortran95:
f7de9aab
MW
16970 case DW_LANG_Fortran03:
16971 case DW_LANG_Fortran08:
e142c38c 16972 cu->language = language_fortran;
c906108c 16973 break;
a766d390
DE
16974 case DW_LANG_Go:
16975 cu->language = language_go;
16976 break;
c906108c 16977 case DW_LANG_Mips_Assembler:
e142c38c 16978 cu->language = language_asm;
c906108c 16979 break;
bebd888e 16980 case DW_LANG_Java:
e142c38c 16981 cu->language = language_java;
bebd888e 16982 break;
c906108c 16983 case DW_LANG_Ada83:
8aaf0b47 16984 case DW_LANG_Ada95:
bc5f45f8
JB
16985 cu->language = language_ada;
16986 break;
72019c9c
GM
16987 case DW_LANG_Modula2:
16988 cu->language = language_m2;
16989 break;
fe8e67fd
PM
16990 case DW_LANG_Pascal83:
16991 cu->language = language_pascal;
16992 break;
22566fbd
DJ
16993 case DW_LANG_ObjC:
16994 cu->language = language_objc;
16995 break;
c906108c
SS
16996 case DW_LANG_Cobol74:
16997 case DW_LANG_Cobol85:
c906108c 16998 default:
e142c38c 16999 cu->language = language_minimal;
c906108c
SS
17000 break;
17001 }
e142c38c 17002 cu->language_defn = language_def (cu->language);
c906108c
SS
17003}
17004
17005/* Return the named attribute or NULL if not there. */
17006
17007static struct attribute *
e142c38c 17008dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
c906108c 17009{
a48e046c 17010 for (;;)
c906108c 17011 {
a48e046c
TT
17012 unsigned int i;
17013 struct attribute *spec = NULL;
17014
17015 for (i = 0; i < die->num_attrs; ++i)
17016 {
17017 if (die->attrs[i].name == name)
17018 return &die->attrs[i];
17019 if (die->attrs[i].name == DW_AT_specification
17020 || die->attrs[i].name == DW_AT_abstract_origin)
17021 spec = &die->attrs[i];
17022 }
17023
17024 if (!spec)
17025 break;
c906108c 17026
f2f0e013 17027 die = follow_die_ref (die, spec, &cu);
f2f0e013 17028 }
c5aa993b 17029
c906108c
SS
17030 return NULL;
17031}
17032
348e048f
DE
17033/* Return the named attribute or NULL if not there,
17034 but do not follow DW_AT_specification, etc.
17035 This is for use in contexts where we're reading .debug_types dies.
17036 Following DW_AT_specification, DW_AT_abstract_origin will take us
17037 back up the chain, and we want to go down. */
17038
17039static struct attribute *
45e58e77 17040dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
348e048f
DE
17041{
17042 unsigned int i;
17043
17044 for (i = 0; i < die->num_attrs; ++i)
17045 if (die->attrs[i].name == name)
17046 return &die->attrs[i];
17047
17048 return NULL;
17049}
17050
05cf31d1
JB
17051/* Return non-zero iff the attribute NAME is defined for the given DIE,
17052 and holds a non-zero value. This function should only be used for
2dc7f7b3 17053 DW_FORM_flag or DW_FORM_flag_present attributes. */
05cf31d1
JB
17054
17055static int
17056dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
17057{
17058 struct attribute *attr = dwarf2_attr (die, name, cu);
17059
17060 return (attr && DW_UNSND (attr));
17061}
17062
3ca72b44 17063static int
e142c38c 17064die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
3ca72b44 17065{
05cf31d1
JB
17066 /* A DIE is a declaration if it has a DW_AT_declaration attribute
17067 which value is non-zero. However, we have to be careful with
17068 DIEs having a DW_AT_specification attribute, because dwarf2_attr()
17069 (via dwarf2_flag_true_p) follows this attribute. So we may
17070 end up accidently finding a declaration attribute that belongs
17071 to a different DIE referenced by the specification attribute,
17072 even though the given DIE does not have a declaration attribute. */
17073 return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
17074 && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
3ca72b44
AC
17075}
17076
63d06c5c 17077/* Return the die giving the specification for DIE, if there is
f2f0e013 17078 one. *SPEC_CU is the CU containing DIE on input, and the CU
edb3359d
DJ
17079 containing the return value on output. If there is no
17080 specification, but there is an abstract origin, that is
17081 returned. */
63d06c5c
DC
17082
17083static struct die_info *
f2f0e013 17084die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
63d06c5c 17085{
f2f0e013
DJ
17086 struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
17087 *spec_cu);
63d06c5c 17088
edb3359d
DJ
17089 if (spec_attr == NULL)
17090 spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
17091
63d06c5c
DC
17092 if (spec_attr == NULL)
17093 return NULL;
17094 else
f2f0e013 17095 return follow_die_ref (die, spec_attr, spec_cu);
63d06c5c 17096}
c906108c 17097
debd256d 17098/* Free the line_header structure *LH, and any arrays and strings it
ae2de4f8
DE
17099 refers to.
17100 NOTE: This is also used as a "cleanup" function. */
17101
debd256d
JB
17102static void
17103free_line_header (struct line_header *lh)
17104{
17105 if (lh->standard_opcode_lengths)
a8bc7b56 17106 xfree (lh->standard_opcode_lengths);
debd256d
JB
17107
17108 /* Remember that all the lh->file_names[i].name pointers are
17109 pointers into debug_line_buffer, and don't need to be freed. */
17110 if (lh->file_names)
a8bc7b56 17111 xfree (lh->file_names);
debd256d
JB
17112
17113 /* Similarly for the include directory names. */
17114 if (lh->include_dirs)
a8bc7b56 17115 xfree (lh->include_dirs);
debd256d 17116
a8bc7b56 17117 xfree (lh);
debd256d
JB
17118}
17119
527f3840
JK
17120/* Stub for free_line_header to match void * callback types. */
17121
17122static void
17123free_line_header_voidp (void *arg)
17124{
17125 struct line_header *lh = arg;
17126
17127 free_line_header (lh);
17128}
17129
debd256d 17130/* Add an entry to LH's include directory table. */
ae2de4f8 17131
debd256d 17132static void
d521ce57 17133add_include_dir (struct line_header *lh, const char *include_dir)
c906108c 17134{
debd256d
JB
17135 /* Grow the array if necessary. */
17136 if (lh->include_dirs_size == 0)
c5aa993b 17137 {
debd256d
JB
17138 lh->include_dirs_size = 1; /* for testing */
17139 lh->include_dirs = xmalloc (lh->include_dirs_size
17140 * sizeof (*lh->include_dirs));
17141 }
17142 else if (lh->num_include_dirs >= lh->include_dirs_size)
17143 {
17144 lh->include_dirs_size *= 2;
17145 lh->include_dirs = xrealloc (lh->include_dirs,
17146 (lh->include_dirs_size
17147 * sizeof (*lh->include_dirs)));
c5aa993b 17148 }
c906108c 17149
debd256d
JB
17150 lh->include_dirs[lh->num_include_dirs++] = include_dir;
17151}
6e70227d 17152
debd256d 17153/* Add an entry to LH's file name table. */
ae2de4f8 17154
debd256d
JB
17155static void
17156add_file_name (struct line_header *lh,
d521ce57 17157 const char *name,
debd256d
JB
17158 unsigned int dir_index,
17159 unsigned int mod_time,
17160 unsigned int length)
17161{
17162 struct file_entry *fe;
17163
17164 /* Grow the array if necessary. */
17165 if (lh->file_names_size == 0)
17166 {
17167 lh->file_names_size = 1; /* for testing */
17168 lh->file_names = xmalloc (lh->file_names_size
17169 * sizeof (*lh->file_names));
17170 }
17171 else if (lh->num_file_names >= lh->file_names_size)
17172 {
17173 lh->file_names_size *= 2;
17174 lh->file_names = xrealloc (lh->file_names,
17175 (lh->file_names_size
17176 * sizeof (*lh->file_names)));
17177 }
17178
17179 fe = &lh->file_names[lh->num_file_names++];
17180 fe->name = name;
17181 fe->dir_index = dir_index;
17182 fe->mod_time = mod_time;
17183 fe->length = length;
aaa75496 17184 fe->included_p = 0;
cb1df416 17185 fe->symtab = NULL;
debd256d 17186}
6e70227d 17187
36586728
TT
17188/* A convenience function to find the proper .debug_line section for a
17189 CU. */
17190
17191static struct dwarf2_section_info *
17192get_debug_line_section (struct dwarf2_cu *cu)
17193{
17194 struct dwarf2_section_info *section;
17195
17196 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
17197 DWO file. */
17198 if (cu->dwo_unit && cu->per_cu->is_debug_types)
17199 section = &cu->dwo_unit->dwo_file->sections.line;
17200 else if (cu->per_cu->is_dwz)
17201 {
17202 struct dwz_file *dwz = dwarf2_get_dwz_file ();
17203
17204 section = &dwz->line;
17205 }
17206 else
17207 section = &dwarf2_per_objfile->line;
17208
17209 return section;
17210}
17211
debd256d 17212/* Read the statement program header starting at OFFSET in
3019eac3 17213 .debug_line, or .debug_line.dwo. Return a pointer
6502dd73 17214 to a struct line_header, allocated using xmalloc.
cd366ee8
DE
17215 Returns NULL if there is a problem reading the header, e.g., if it
17216 has a version we don't understand.
debd256d
JB
17217
17218 NOTE: the strings in the include directory and file name tables of
3019eac3
DE
17219 the returned object point into the dwarf line section buffer,
17220 and must not be freed. */
ae2de4f8 17221
debd256d 17222static struct line_header *
3019eac3 17223dwarf_decode_line_header (unsigned int offset, struct dwarf2_cu *cu)
debd256d
JB
17224{
17225 struct cleanup *back_to;
17226 struct line_header *lh;
d521ce57 17227 const gdb_byte *line_ptr;
c764a876 17228 unsigned int bytes_read, offset_size;
debd256d 17229 int i;
d521ce57 17230 const char *cur_dir, *cur_file;
3019eac3
DE
17231 struct dwarf2_section_info *section;
17232 bfd *abfd;
17233
36586728 17234 section = get_debug_line_section (cu);
3019eac3
DE
17235 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
17236 if (section->buffer == NULL)
debd256d 17237 {
3019eac3
DE
17238 if (cu->dwo_unit && cu->per_cu->is_debug_types)
17239 complaint (&symfile_complaints, _("missing .debug_line.dwo section"));
17240 else
17241 complaint (&symfile_complaints, _("missing .debug_line section"));
debd256d
JB
17242 return 0;
17243 }
17244
fceca515
DE
17245 /* We can't do this until we know the section is non-empty.
17246 Only then do we know we have such a section. */
a32a8923 17247 abfd = get_section_bfd_owner (section);
fceca515 17248
a738430d
MK
17249 /* Make sure that at least there's room for the total_length field.
17250 That could be 12 bytes long, but we're just going to fudge that. */
3019eac3 17251 if (offset + 4 >= section->size)
debd256d 17252 {
4d3c2250 17253 dwarf2_statement_list_fits_in_line_number_section_complaint ();
debd256d
JB
17254 return 0;
17255 }
17256
17257 lh = xmalloc (sizeof (*lh));
17258 memset (lh, 0, sizeof (*lh));
17259 back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
17260 (void *) lh);
17261
527f3840
JK
17262 lh->offset.sect_off = offset;
17263 lh->offset_in_dwz = cu->per_cu->is_dwz;
17264
3019eac3 17265 line_ptr = section->buffer + offset;
debd256d 17266
a738430d 17267 /* Read in the header. */
6e70227d 17268 lh->total_length =
c764a876
DE
17269 read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
17270 &bytes_read, &offset_size);
debd256d 17271 line_ptr += bytes_read;
3019eac3 17272 if (line_ptr + lh->total_length > (section->buffer + section->size))
debd256d 17273 {
4d3c2250 17274 dwarf2_statement_list_fits_in_line_number_section_complaint ();
2f324bf6 17275 do_cleanups (back_to);
debd256d
JB
17276 return 0;
17277 }
17278 lh->statement_program_end = line_ptr + lh->total_length;
17279 lh->version = read_2_bytes (abfd, line_ptr);
17280 line_ptr += 2;
cd366ee8
DE
17281 if (lh->version > 4)
17282 {
17283 /* This is a version we don't understand. The format could have
17284 changed in ways we don't handle properly so just punt. */
17285 complaint (&symfile_complaints,
17286 _("unsupported version in .debug_line section"));
17287 return NULL;
17288 }
c764a876
DE
17289 lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
17290 line_ptr += offset_size;
debd256d
JB
17291 lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
17292 line_ptr += 1;
2dc7f7b3
TT
17293 if (lh->version >= 4)
17294 {
17295 lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
17296 line_ptr += 1;
17297 }
17298 else
17299 lh->maximum_ops_per_instruction = 1;
17300
17301 if (lh->maximum_ops_per_instruction == 0)
17302 {
17303 lh->maximum_ops_per_instruction = 1;
17304 complaint (&symfile_complaints,
3e43a32a
MS
17305 _("invalid maximum_ops_per_instruction "
17306 "in `.debug_line' section"));
2dc7f7b3
TT
17307 }
17308
debd256d
JB
17309 lh->default_is_stmt = read_1_byte (abfd, line_ptr);
17310 line_ptr += 1;
17311 lh->line_base = read_1_signed_byte (abfd, line_ptr);
17312 line_ptr += 1;
17313 lh->line_range = read_1_byte (abfd, line_ptr);
17314 line_ptr += 1;
17315 lh->opcode_base = read_1_byte (abfd, line_ptr);
17316 line_ptr += 1;
17317 lh->standard_opcode_lengths
fe1b8b76 17318 = xmalloc (lh->opcode_base * sizeof (lh->standard_opcode_lengths[0]));
debd256d
JB
17319
17320 lh->standard_opcode_lengths[0] = 1; /* This should never be used anyway. */
17321 for (i = 1; i < lh->opcode_base; ++i)
17322 {
17323 lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
17324 line_ptr += 1;
17325 }
17326
a738430d 17327 /* Read directory table. */
9b1c24c8 17328 while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
debd256d
JB
17329 {
17330 line_ptr += bytes_read;
17331 add_include_dir (lh, cur_dir);
17332 }
17333 line_ptr += bytes_read;
17334
a738430d 17335 /* Read file name table. */
9b1c24c8 17336 while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
debd256d
JB
17337 {
17338 unsigned int dir_index, mod_time, length;
17339
17340 line_ptr += bytes_read;
17341 dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17342 line_ptr += bytes_read;
17343 mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17344 line_ptr += bytes_read;
17345 length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17346 line_ptr += bytes_read;
17347
17348 add_file_name (lh, cur_file, dir_index, mod_time, length);
17349 }
17350 line_ptr += bytes_read;
6e70227d 17351 lh->statement_program_start = line_ptr;
debd256d 17352
3019eac3 17353 if (line_ptr > (section->buffer + section->size))
4d3c2250 17354 complaint (&symfile_complaints,
3e43a32a
MS
17355 _("line number info header doesn't "
17356 "fit in `.debug_line' section"));
debd256d
JB
17357
17358 discard_cleanups (back_to);
17359 return lh;
17360}
c906108c 17361
c6da4cef
DE
17362/* Subroutine of dwarf_decode_lines to simplify it.
17363 Return the file name of the psymtab for included file FILE_INDEX
17364 in line header LH of PST.
17365 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
17366 If space for the result is malloc'd, it will be freed by a cleanup.
1ed59174
JK
17367 Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.
17368
17369 The function creates dangling cleanup registration. */
c6da4cef 17370
d521ce57 17371static const char *
c6da4cef
DE
17372psymtab_include_file_name (const struct line_header *lh, int file_index,
17373 const struct partial_symtab *pst,
17374 const char *comp_dir)
17375{
17376 const struct file_entry fe = lh->file_names [file_index];
d521ce57
TT
17377 const char *include_name = fe.name;
17378 const char *include_name_to_compare = include_name;
17379 const char *dir_name = NULL;
72b9f47f
TT
17380 const char *pst_filename;
17381 char *copied_name = NULL;
c6da4cef
DE
17382 int file_is_pst;
17383
17384 if (fe.dir_index)
17385 dir_name = lh->include_dirs[fe.dir_index - 1];
17386
17387 if (!IS_ABSOLUTE_PATH (include_name)
17388 && (dir_name != NULL || comp_dir != NULL))
17389 {
17390 /* Avoid creating a duplicate psymtab for PST.
17391 We do this by comparing INCLUDE_NAME and PST_FILENAME.
17392 Before we do the comparison, however, we need to account
17393 for DIR_NAME and COMP_DIR.
17394 First prepend dir_name (if non-NULL). If we still don't
17395 have an absolute path prepend comp_dir (if non-NULL).
17396 However, the directory we record in the include-file's
17397 psymtab does not contain COMP_DIR (to match the
17398 corresponding symtab(s)).
17399
17400 Example:
17401
17402 bash$ cd /tmp
17403 bash$ gcc -g ./hello.c
17404 include_name = "hello.c"
17405 dir_name = "."
17406 DW_AT_comp_dir = comp_dir = "/tmp"
5f52445b
YQ
17407 DW_AT_name = "./hello.c"
17408
17409 */
c6da4cef
DE
17410
17411 if (dir_name != NULL)
17412 {
d521ce57
TT
17413 char *tem = concat (dir_name, SLASH_STRING,
17414 include_name, (char *)NULL);
17415
17416 make_cleanup (xfree, tem);
17417 include_name = tem;
c6da4cef 17418 include_name_to_compare = include_name;
c6da4cef
DE
17419 }
17420 if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
17421 {
d521ce57
TT
17422 char *tem = concat (comp_dir, SLASH_STRING,
17423 include_name, (char *)NULL);
17424
17425 make_cleanup (xfree, tem);
17426 include_name_to_compare = tem;
c6da4cef
DE
17427 }
17428 }
17429
17430 pst_filename = pst->filename;
17431 if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
17432 {
72b9f47f
TT
17433 copied_name = concat (pst->dirname, SLASH_STRING,
17434 pst_filename, (char *)NULL);
17435 pst_filename = copied_name;
c6da4cef
DE
17436 }
17437
1e3fad37 17438 file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
c6da4cef 17439
72b9f47f
TT
17440 if (copied_name != NULL)
17441 xfree (copied_name);
c6da4cef
DE
17442
17443 if (file_is_pst)
17444 return NULL;
17445 return include_name;
17446}
17447
c91513d8
PP
17448/* Ignore this record_line request. */
17449
17450static void
17451noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
17452{
17453 return;
17454}
17455
a05a36a5
DE
17456/* Return non-zero if we should add LINE to the line number table.
17457 LINE is the line to add, LAST_LINE is the last line that was added,
17458 LAST_SUBFILE is the subfile for LAST_LINE.
17459 LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
17460 had a non-zero discriminator.
17461
17462 We have to be careful in the presence of discriminators.
17463 E.g., for this line:
17464
17465 for (i = 0; i < 100000; i++);
17466
17467 clang can emit four line number entries for that one line,
17468 each with a different discriminator.
17469 See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
17470
17471 However, we want gdb to coalesce all four entries into one.
17472 Otherwise the user could stepi into the middle of the line and
17473 gdb would get confused about whether the pc really was in the
17474 middle of the line.
17475
17476 Things are further complicated by the fact that two consecutive
17477 line number entries for the same line is a heuristic used by gcc
17478 to denote the end of the prologue. So we can't just discard duplicate
17479 entries, we have to be selective about it. The heuristic we use is
17480 that we only collapse consecutive entries for the same line if at least
17481 one of those entries has a non-zero discriminator. PR 17276.
17482
17483 Note: Addresses in the line number state machine can never go backwards
17484 within one sequence, thus this coalescing is ok. */
17485
17486static int
17487dwarf_record_line_p (unsigned int line, unsigned int last_line,
17488 int line_has_non_zero_discriminator,
17489 struct subfile *last_subfile)
17490{
17491 if (current_subfile != last_subfile)
17492 return 1;
17493 if (line != last_line)
17494 return 1;
17495 /* Same line for the same file that we've seen already.
17496 As a last check, for pr 17276, only record the line if the line
17497 has never had a non-zero discriminator. */
17498 if (!line_has_non_zero_discriminator)
17499 return 1;
17500 return 0;
17501}
17502
252a6764
DE
17503/* Use P_RECORD_LINE to record line number LINE beginning at address ADDRESS
17504 in the line table of subfile SUBFILE. */
17505
17506static void
17507dwarf_record_line (struct gdbarch *gdbarch, struct subfile *subfile,
17508 unsigned int line, CORE_ADDR address,
17509 record_line_ftype p_record_line)
17510{
17511 CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
17512
d5962de5 17513 (*p_record_line) (subfile, line, addr);
252a6764
DE
17514}
17515
17516/* Subroutine of dwarf_decode_lines_1 to simplify it.
17517 Mark the end of a set of line number records.
17518 The arguments are the same as for dwarf_record_line.
17519 If SUBFILE is NULL the request is ignored. */
17520
17521static void
17522dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
17523 CORE_ADDR address, record_line_ftype p_record_line)
17524{
17525 if (subfile != NULL)
17526 dwarf_record_line (gdbarch, subfile, 0, address, p_record_line);
17527}
17528
f3f5162e
DE
17529/* Subroutine of dwarf_decode_lines to simplify it.
17530 Process the line number information in LH. */
debd256d 17531
c906108c 17532static void
43f3e411
DE
17533dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
17534 const int decode_for_pst_p, CORE_ADDR lowpc)
c906108c 17535{
d521ce57
TT
17536 const gdb_byte *line_ptr, *extended_end;
17537 const gdb_byte *line_end;
a8c50c1f 17538 unsigned int bytes_read, extended_len;
699ca60a 17539 unsigned char op_code, extended_op;
e142c38c
DJ
17540 CORE_ADDR baseaddr;
17541 struct objfile *objfile = cu->objfile;
f3f5162e 17542 bfd *abfd = objfile->obfd;
fbf65064 17543 struct gdbarch *gdbarch = get_objfile_arch (objfile);
f3f5162e 17544 struct subfile *last_subfile = NULL;
c91513d8
PP
17545 void (*p_record_line) (struct subfile *subfile, int line, CORE_ADDR pc)
17546 = record_line;
e142c38c
DJ
17547
17548 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 17549
debd256d
JB
17550 line_ptr = lh->statement_program_start;
17551 line_end = lh->statement_program_end;
c906108c
SS
17552
17553 /* Read the statement sequences until there's nothing left. */
17554 while (line_ptr < line_end)
17555 {
3e29f34a
MR
17556 /* State machine registers. Call `gdbarch_adjust_dwarf2_line'
17557 on the initial 0 address as if there was a line entry for it
17558 so that the backend has a chance to adjust it and also record
17559 it in case it needs it. This is currently used by MIPS code,
17560 cf. `mips_adjust_dwarf2_line'. */
17561 CORE_ADDR address = gdbarch_adjust_dwarf2_line (gdbarch, 0, 0);
c906108c
SS
17562 unsigned int file = 1;
17563 unsigned int line = 1;
debd256d 17564 int is_stmt = lh->default_is_stmt;
c906108c 17565 int end_sequence = 0;
2dc7f7b3 17566 unsigned char op_index = 0;
a05a36a5
DE
17567 unsigned int discriminator = 0;
17568 /* The last line number that was recorded, used to coalesce
17569 consecutive entries for the same line. This can happen, for
17570 example, when discriminators are present. PR 17276. */
17571 unsigned int last_line = 0;
17572 int line_has_non_zero_discriminator = 0;
c906108c 17573
aaa75496 17574 if (!decode_for_pst_p && lh->num_file_names >= file)
c906108c 17575 {
aaa75496 17576 /* Start a subfile for the current file of the state machine. */
debd256d
JB
17577 /* lh->include_dirs and lh->file_names are 0-based, but the
17578 directory and file name numbers in the statement program
17579 are 1-based. */
17580 struct file_entry *fe = &lh->file_names[file - 1];
d521ce57 17581 const char *dir = NULL;
a738430d 17582
debd256d
JB
17583 if (fe->dir_index)
17584 dir = lh->include_dirs[fe->dir_index - 1];
4f1520fb 17585
4d663531 17586 dwarf2_start_subfile (fe->name, dir);
c906108c
SS
17587 }
17588
a738430d 17589 /* Decode the table. */
c5aa993b 17590 while (!end_sequence)
c906108c
SS
17591 {
17592 op_code = read_1_byte (abfd, line_ptr);
17593 line_ptr += 1;
59205f5a
JB
17594 if (line_ptr > line_end)
17595 {
17596 dwarf2_debug_line_missing_end_sequence_complaint ();
17597 break;
17598 }
9aa1fe7e 17599
debd256d 17600 if (op_code >= lh->opcode_base)
6e70227d 17601 {
8e07a239 17602 /* Special opcode. */
699ca60a 17603 unsigned char adj_opcode;
3e29f34a 17604 CORE_ADDR addr_adj;
a05a36a5 17605 int line_delta;
8e07a239 17606
debd256d 17607 adj_opcode = op_code - lh->opcode_base;
3e29f34a 17608 addr_adj = (((op_index + (adj_opcode / lh->line_range))
2dc7f7b3
TT
17609 / lh->maximum_ops_per_instruction)
17610 * lh->minimum_instruction_length);
3e29f34a 17611 address += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
2dc7f7b3
TT
17612 op_index = ((op_index + (adj_opcode / lh->line_range))
17613 % lh->maximum_ops_per_instruction);
a05a36a5
DE
17614 line_delta = lh->line_base + (adj_opcode % lh->line_range);
17615 line += line_delta;
17616 if (line_delta != 0)
17617 line_has_non_zero_discriminator = discriminator != 0;
59205f5a 17618 if (lh->num_file_names < file || file == 0)
25e43795 17619 dwarf2_debug_line_missing_file_complaint ();
2dc7f7b3
TT
17620 /* For now we ignore lines not starting on an
17621 instruction boundary. */
17622 else if (op_index == 0)
25e43795
DJ
17623 {
17624 lh->file_names[file - 1].included_p = 1;
ca5f395d 17625 if (!decode_for_pst_p && is_stmt)
fbf65064
UW
17626 {
17627 if (last_subfile != current_subfile)
17628 {
252a6764
DE
17629 dwarf_finish_line (gdbarch, last_subfile,
17630 address, p_record_line);
fbf65064 17631 }
a05a36a5
DE
17632 if (dwarf_record_line_p (line, last_line,
17633 line_has_non_zero_discriminator,
17634 last_subfile))
17635 {
17636 dwarf_record_line (gdbarch, current_subfile,
17637 line, address, p_record_line);
17638 }
17639 last_subfile = current_subfile;
17640 last_line = line;
366da635 17641 }
25e43795 17642 }
a05a36a5 17643 discriminator = 0;
9aa1fe7e
GK
17644 }
17645 else switch (op_code)
c906108c
SS
17646 {
17647 case DW_LNS_extended_op:
3e43a32a
MS
17648 extended_len = read_unsigned_leb128 (abfd, line_ptr,
17649 &bytes_read);
473b7be6 17650 line_ptr += bytes_read;
a8c50c1f 17651 extended_end = line_ptr + extended_len;
c906108c
SS
17652 extended_op = read_1_byte (abfd, line_ptr);
17653 line_ptr += 1;
17654 switch (extended_op)
17655 {
17656 case DW_LNE_end_sequence:
c91513d8 17657 p_record_line = record_line;
c906108c 17658 end_sequence = 1;
c906108c
SS
17659 break;
17660 case DW_LNE_set_address:
e7c27a73 17661 address = read_address (abfd, line_ptr, cu, &bytes_read);
c91513d8 17662
c3b7b696
YQ
17663 /* If address < lowpc then it's not a usable value, it's
17664 outside the pc range of the CU. However, we restrict
17665 the test to only address values of zero to preserve
17666 GDB's previous behaviour which is to handle the specific
17667 case of a function being GC'd by the linker. */
17668 if (address == 0 && address < lowpc)
c91513d8
PP
17669 {
17670 /* This line table is for a function which has been
17671 GCd by the linker. Ignore it. PR gdb/12528 */
17672
17673 long line_offset
36586728 17674 = line_ptr - get_debug_line_section (cu)->buffer;
c91513d8
PP
17675
17676 complaint (&symfile_complaints,
17677 _(".debug_line address at offset 0x%lx is 0 "
17678 "[in module %s]"),
4262abfb 17679 line_offset, objfile_name (objfile));
c91513d8 17680 p_record_line = noop_record_line;
37780ee5
DE
17681 /* Note: p_record_line is left as noop_record_line
17682 until we see DW_LNE_end_sequence. */
c91513d8
PP
17683 }
17684
2dc7f7b3 17685 op_index = 0;
107d2387
AC
17686 line_ptr += bytes_read;
17687 address += baseaddr;
3e29f34a 17688 address = gdbarch_adjust_dwarf2_line (gdbarch, address, 0);
c906108c
SS
17689 break;
17690 case DW_LNE_define_file:
debd256d 17691 {
d521ce57 17692 const char *cur_file;
debd256d 17693 unsigned int dir_index, mod_time, length;
6e70227d 17694
3e43a32a
MS
17695 cur_file = read_direct_string (abfd, line_ptr,
17696 &bytes_read);
debd256d
JB
17697 line_ptr += bytes_read;
17698 dir_index =
17699 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17700 line_ptr += bytes_read;
17701 mod_time =
17702 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17703 line_ptr += bytes_read;
17704 length =
17705 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17706 line_ptr += bytes_read;
17707 add_file_name (lh, cur_file, dir_index, mod_time, length);
17708 }
c906108c 17709 break;
d0c6ba3d
CC
17710 case DW_LNE_set_discriminator:
17711 /* The discriminator is not interesting to the debugger;
a05a36a5
DE
17712 just ignore it. We still need to check its value though:
17713 if there are consecutive entries for the same
17714 (non-prologue) line we want to coalesce them.
17715 PR 17276. */
17716 discriminator = read_unsigned_leb128 (abfd, line_ptr,
17717 &bytes_read);
17718 line_has_non_zero_discriminator |= discriminator != 0;
17719 line_ptr += bytes_read;
d0c6ba3d 17720 break;
c906108c 17721 default:
4d3c2250 17722 complaint (&symfile_complaints,
e2e0b3e5 17723 _("mangled .debug_line section"));
debd256d 17724 return;
c906108c 17725 }
a8c50c1f
DJ
17726 /* Make sure that we parsed the extended op correctly. If e.g.
17727 we expected a different address size than the producer used,
17728 we may have read the wrong number of bytes. */
17729 if (line_ptr != extended_end)
17730 {
17731 complaint (&symfile_complaints,
17732 _("mangled .debug_line section"));
17733 return;
17734 }
c906108c
SS
17735 break;
17736 case DW_LNS_copy:
59205f5a 17737 if (lh->num_file_names < file || file == 0)
25e43795
DJ
17738 dwarf2_debug_line_missing_file_complaint ();
17739 else
366da635 17740 {
25e43795 17741 lh->file_names[file - 1].included_p = 1;
ca5f395d 17742 if (!decode_for_pst_p && is_stmt)
fbf65064
UW
17743 {
17744 if (last_subfile != current_subfile)
17745 {
252a6764
DE
17746 dwarf_finish_line (gdbarch, last_subfile,
17747 address, p_record_line);
fbf65064 17748 }
a05a36a5
DE
17749 if (dwarf_record_line_p (line, last_line,
17750 line_has_non_zero_discriminator,
17751 last_subfile))
17752 {
17753 dwarf_record_line (gdbarch, current_subfile,
17754 line, address, p_record_line);
17755 }
17756 last_subfile = current_subfile;
17757 last_line = line;
fbf65064 17758 }
366da635 17759 }
a05a36a5 17760 discriminator = 0;
c906108c
SS
17761 break;
17762 case DW_LNS_advance_pc:
2dc7f7b3
TT
17763 {
17764 CORE_ADDR adjust
17765 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
3e29f34a 17766 CORE_ADDR addr_adj;
2dc7f7b3 17767
3e29f34a 17768 addr_adj = (((op_index + adjust)
2dc7f7b3
TT
17769 / lh->maximum_ops_per_instruction)
17770 * lh->minimum_instruction_length);
3e29f34a 17771 address += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
2dc7f7b3
TT
17772 op_index = ((op_index + adjust)
17773 % lh->maximum_ops_per_instruction);
17774 line_ptr += bytes_read;
17775 }
c906108c
SS
17776 break;
17777 case DW_LNS_advance_line:
a05a36a5
DE
17778 {
17779 int line_delta
17780 = read_signed_leb128 (abfd, line_ptr, &bytes_read);
17781
17782 line += line_delta;
17783 if (line_delta != 0)
17784 line_has_non_zero_discriminator = discriminator != 0;
17785 line_ptr += bytes_read;
17786 }
c906108c
SS
17787 break;
17788 case DW_LNS_set_file:
debd256d 17789 {
a738430d
MK
17790 /* The arrays lh->include_dirs and lh->file_names are
17791 0-based, but the directory and file name numbers in
17792 the statement program are 1-based. */
debd256d 17793 struct file_entry *fe;
d521ce57 17794 const char *dir = NULL;
a738430d 17795
debd256d
JB
17796 file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17797 line_ptr += bytes_read;
59205f5a 17798 if (lh->num_file_names < file || file == 0)
25e43795
DJ
17799 dwarf2_debug_line_missing_file_complaint ();
17800 else
17801 {
17802 fe = &lh->file_names[file - 1];
17803 if (fe->dir_index)
17804 dir = lh->include_dirs[fe->dir_index - 1];
17805 if (!decode_for_pst_p)
17806 {
17807 last_subfile = current_subfile;
a05a36a5 17808 line_has_non_zero_discriminator = discriminator != 0;
4d663531 17809 dwarf2_start_subfile (fe->name, dir);
25e43795
DJ
17810 }
17811 }
debd256d 17812 }
c906108c
SS
17813 break;
17814 case DW_LNS_set_column:
0ad93d4f 17815 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
c906108c
SS
17816 line_ptr += bytes_read;
17817 break;
17818 case DW_LNS_negate_stmt:
17819 is_stmt = (!is_stmt);
17820 break;
17821 case DW_LNS_set_basic_block:
c906108c 17822 break;
c2c6d25f
JM
17823 /* Add to the address register of the state machine the
17824 address increment value corresponding to special opcode
a738430d
MK
17825 255. I.e., this value is scaled by the minimum
17826 instruction length since special opcode 255 would have
b021a221 17827 scaled the increment. */
c906108c 17828 case DW_LNS_const_add_pc:
2dc7f7b3
TT
17829 {
17830 CORE_ADDR adjust = (255 - lh->opcode_base) / lh->line_range;
3e29f34a 17831 CORE_ADDR addr_adj;
2dc7f7b3 17832
3e29f34a 17833 addr_adj = (((op_index + adjust)
2dc7f7b3
TT
17834 / lh->maximum_ops_per_instruction)
17835 * lh->minimum_instruction_length);
3e29f34a 17836 address += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
2dc7f7b3
TT
17837 op_index = ((op_index + adjust)
17838 % lh->maximum_ops_per_instruction);
17839 }
c906108c
SS
17840 break;
17841 case DW_LNS_fixed_advance_pc:
3e29f34a
MR
17842 {
17843 CORE_ADDR addr_adj;
17844
17845 addr_adj = read_2_bytes (abfd, line_ptr);
17846 address += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17847 op_index = 0;
17848 line_ptr += 2;
17849 }
c906108c 17850 break;
9aa1fe7e 17851 default:
a738430d
MK
17852 {
17853 /* Unknown standard opcode, ignore it. */
9aa1fe7e 17854 int i;
a738430d 17855
debd256d 17856 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
9aa1fe7e
GK
17857 {
17858 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17859 line_ptr += bytes_read;
17860 }
17861 }
c906108c
SS
17862 }
17863 }
59205f5a
JB
17864 if (lh->num_file_names < file || file == 0)
17865 dwarf2_debug_line_missing_file_complaint ();
17866 else
17867 {
17868 lh->file_names[file - 1].included_p = 1;
17869 if (!decode_for_pst_p)
fbf65064 17870 {
252a6764
DE
17871 dwarf_finish_line (gdbarch, current_subfile, address,
17872 p_record_line);
fbf65064 17873 }
59205f5a 17874 }
c906108c 17875 }
f3f5162e
DE
17876}
17877
17878/* Decode the Line Number Program (LNP) for the given line_header
17879 structure and CU. The actual information extracted and the type
17880 of structures created from the LNP depends on the value of PST.
17881
17882 1. If PST is NULL, then this procedure uses the data from the program
17883 to create all necessary symbol tables, and their linetables.
17884
17885 2. If PST is not NULL, this procedure reads the program to determine
17886 the list of files included by the unit represented by PST, and
17887 builds all the associated partial symbol tables.
17888
17889 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
17890 It is used for relative paths in the line table.
17891 NOTE: When processing partial symtabs (pst != NULL),
17892 comp_dir == pst->dirname.
17893
17894 NOTE: It is important that psymtabs have the same file name (via strcmp)
17895 as the corresponding symtab. Since COMP_DIR is not used in the name of the
17896 symtab we don't use it in the name of the psymtabs we create.
17897 E.g. expand_line_sal requires this when finding psymtabs to expand.
c3b7b696
YQ
17898 A good testcase for this is mb-inline.exp.
17899
527f3840
JK
17900 LOWPC is the lowest address in CU (or 0 if not known).
17901
17902 Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
17903 for its PC<->lines mapping information. Otherwise only the filename
17904 table is read in. */
f3f5162e
DE
17905
17906static void
17907dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
c3b7b696 17908 struct dwarf2_cu *cu, struct partial_symtab *pst,
527f3840 17909 CORE_ADDR lowpc, int decode_mapping)
f3f5162e
DE
17910{
17911 struct objfile *objfile = cu->objfile;
17912 const int decode_for_pst_p = (pst != NULL);
f3f5162e 17913
527f3840
JK
17914 if (decode_mapping)
17915 dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
aaa75496
JB
17916
17917 if (decode_for_pst_p)
17918 {
17919 int file_index;
17920
17921 /* Now that we're done scanning the Line Header Program, we can
17922 create the psymtab of each included file. */
17923 for (file_index = 0; file_index < lh->num_file_names; file_index++)
17924 if (lh->file_names[file_index].included_p == 1)
17925 {
d521ce57 17926 const char *include_name =
c6da4cef
DE
17927 psymtab_include_file_name (lh, file_index, pst, comp_dir);
17928 if (include_name != NULL)
aaa75496
JB
17929 dwarf2_create_include_psymtab (include_name, pst, objfile);
17930 }
17931 }
cb1df416
DJ
17932 else
17933 {
17934 /* Make sure a symtab is created for every file, even files
17935 which contain only variables (i.e. no code with associated
17936 line numbers). */
43f3e411 17937 struct compunit_symtab *cust = buildsym_compunit_symtab ();
cb1df416 17938 int i;
cb1df416
DJ
17939
17940 for (i = 0; i < lh->num_file_names; i++)
17941 {
d521ce57 17942 const char *dir = NULL;
f3f5162e 17943 struct file_entry *fe;
9a619af0 17944
cb1df416
DJ
17945 fe = &lh->file_names[i];
17946 if (fe->dir_index)
17947 dir = lh->include_dirs[fe->dir_index - 1];
4d663531 17948 dwarf2_start_subfile (fe->name, dir);
cb1df416 17949
cb1df416 17950 if (current_subfile->symtab == NULL)
43f3e411
DE
17951 {
17952 current_subfile->symtab
17953 = allocate_symtab (cust, current_subfile->name);
17954 }
cb1df416
DJ
17955 fe->symtab = current_subfile->symtab;
17956 }
17957 }
c906108c
SS
17958}
17959
17960/* Start a subfile for DWARF. FILENAME is the name of the file and
17961 DIRNAME the name of the source directory which contains FILENAME
4d663531 17962 or NULL if not known.
c906108c
SS
17963 This routine tries to keep line numbers from identical absolute and
17964 relative file names in a common subfile.
17965
17966 Using the `list' example from the GDB testsuite, which resides in
17967 /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
17968 of /srcdir/list0.c yields the following debugging information for list0.c:
17969
c5aa993b 17970 DW_AT_name: /srcdir/list0.c
4d663531 17971 DW_AT_comp_dir: /compdir
357e46e7 17972 files.files[0].name: list0.h
c5aa993b 17973 files.files[0].dir: /srcdir
357e46e7 17974 files.files[1].name: list0.c
c5aa993b 17975 files.files[1].dir: /srcdir
c906108c
SS
17976
17977 The line number information for list0.c has to end up in a single
4f1520fb
FR
17978 subfile, so that `break /srcdir/list0.c:1' works as expected.
17979 start_subfile will ensure that this happens provided that we pass the
17980 concatenation of files.files[1].dir and files.files[1].name as the
17981 subfile's name. */
c906108c
SS
17982
17983static void
4d663531 17984dwarf2_start_subfile (const char *filename, const char *dirname)
c906108c 17985{
d521ce57 17986 char *copy = NULL;
4f1520fb 17987
4d663531 17988 /* In order not to lose the line information directory,
4f1520fb
FR
17989 we concatenate it to the filename when it makes sense.
17990 Note that the Dwarf3 standard says (speaking of filenames in line
17991 information): ``The directory index is ignored for file names
17992 that represent full path names''. Thus ignoring dirname in the
17993 `else' branch below isn't an issue. */
c906108c 17994
d5166ae1 17995 if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
d521ce57
TT
17996 {
17997 copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
17998 filename = copy;
17999 }
c906108c 18000
4d663531 18001 start_subfile (filename);
4f1520fb 18002
d521ce57
TT
18003 if (copy != NULL)
18004 xfree (copy);
c906108c
SS
18005}
18006
f4dc4d17
DE
18007/* Start a symtab for DWARF.
18008 NAME, COMP_DIR, LOW_PC are passed to start_symtab. */
18009
43f3e411 18010static struct compunit_symtab *
f4dc4d17 18011dwarf2_start_symtab (struct dwarf2_cu *cu,
15d034d0 18012 const char *name, const char *comp_dir, CORE_ADDR low_pc)
f4dc4d17 18013{
43f3e411
DE
18014 struct compunit_symtab *cust
18015 = start_symtab (cu->objfile, name, comp_dir, low_pc);
18016
f4dc4d17
DE
18017 record_debugformat ("DWARF 2");
18018 record_producer (cu->producer);
18019
18020 /* We assume that we're processing GCC output. */
18021 processing_gcc_compilation = 2;
18022
4d4ec4e5 18023 cu->processing_has_namespace_info = 0;
43f3e411
DE
18024
18025 return cust;
f4dc4d17
DE
18026}
18027
4c2df51b
DJ
18028static void
18029var_decode_location (struct attribute *attr, struct symbol *sym,
e7c27a73 18030 struct dwarf2_cu *cu)
4c2df51b 18031{
e7c27a73
DJ
18032 struct objfile *objfile = cu->objfile;
18033 struct comp_unit_head *cu_header = &cu->header;
18034
4c2df51b
DJ
18035 /* NOTE drow/2003-01-30: There used to be a comment and some special
18036 code here to turn a symbol with DW_AT_external and a
18037 SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol. This was
18038 necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
18039 with some versions of binutils) where shared libraries could have
18040 relocations against symbols in their debug information - the
18041 minimal symbol would have the right address, but the debug info
18042 would not. It's no longer necessary, because we will explicitly
18043 apply relocations when we read in the debug information now. */
18044
18045 /* A DW_AT_location attribute with no contents indicates that a
18046 variable has been optimized away. */
18047 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
18048 {
f1e6e072 18049 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
4c2df51b
DJ
18050 return;
18051 }
18052
18053 /* Handle one degenerate form of location expression specially, to
18054 preserve GDB's previous behavior when section offsets are
3019eac3
DE
18055 specified. If this is just a DW_OP_addr or DW_OP_GNU_addr_index
18056 then mark this symbol as LOC_STATIC. */
4c2df51b
DJ
18057
18058 if (attr_form_is_block (attr)
3019eac3
DE
18059 && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
18060 && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
18061 || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
18062 && (DW_BLOCK (attr)->size
18063 == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
4c2df51b 18064 {
891d2f0b 18065 unsigned int dummy;
4c2df51b 18066
3019eac3
DE
18067 if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
18068 SYMBOL_VALUE_ADDRESS (sym) =
18069 read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
18070 else
18071 SYMBOL_VALUE_ADDRESS (sym) =
18072 read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
f1e6e072 18073 SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
4c2df51b
DJ
18074 fixup_symbol_section (sym, objfile);
18075 SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
18076 SYMBOL_SECTION (sym));
4c2df51b
DJ
18077 return;
18078 }
18079
18080 /* NOTE drow/2002-01-30: It might be worthwhile to have a static
18081 expression evaluator, and use LOC_COMPUTED only when necessary
18082 (i.e. when the value of a register or memory location is
18083 referenced, or a thread-local block, etc.). Then again, it might
18084 not be worthwhile. I'm assuming that it isn't unless performance
18085 or memory numbers show me otherwise. */
18086
f1e6e072 18087 dwarf2_symbol_mark_computed (attr, sym, cu, 0);
8be455d7 18088
f1e6e072 18089 if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
8be455d7 18090 cu->has_loclist = 1;
4c2df51b
DJ
18091}
18092
c906108c
SS
18093/* Given a pointer to a DWARF information entry, figure out if we need
18094 to make a symbol table entry for it, and if so, create a new entry
18095 and return a pointer to it.
18096 If TYPE is NULL, determine symbol type from the die, otherwise
34eaf542
TT
18097 used the passed type.
18098 If SPACE is not NULL, use it to hold the new symbol. If it is
18099 NULL, allocate a new symbol on the objfile's obstack. */
c906108c
SS
18100
18101static struct symbol *
34eaf542
TT
18102new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
18103 struct symbol *space)
c906108c 18104{
e7c27a73 18105 struct objfile *objfile = cu->objfile;
3e29f34a 18106 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c 18107 struct symbol *sym = NULL;
15d034d0 18108 const char *name;
c906108c
SS
18109 struct attribute *attr = NULL;
18110 struct attribute *attr2 = NULL;
e142c38c 18111 CORE_ADDR baseaddr;
e37fd15a
SW
18112 struct pending **list_to_add = NULL;
18113
edb3359d 18114 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
e142c38c
DJ
18115
18116 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 18117
94af9270 18118 name = dwarf2_name (die, cu);
c906108c
SS
18119 if (name)
18120 {
94af9270 18121 const char *linkagename;
34eaf542 18122 int suppress_add = 0;
94af9270 18123
34eaf542
TT
18124 if (space)
18125 sym = space;
18126 else
e623cf5d 18127 sym = allocate_symbol (objfile);
c906108c 18128 OBJSTAT (objfile, n_syms++);
2de7ced7
DJ
18129
18130 /* Cache this symbol's name and the name's demangled form (if any). */
f85f34ed 18131 SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
94af9270
KS
18132 linkagename = dwarf2_physname (name, die, cu);
18133 SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
c906108c 18134
f55ee35c
JK
18135 /* Fortran does not have mangling standard and the mangling does differ
18136 between gfortran, iFort etc. */
18137 if (cu->language == language_fortran
b250c185 18138 && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
29df156d 18139 symbol_set_demangled_name (&(sym->ginfo),
cfc594ee 18140 dwarf2_full_name (name, die, cu),
29df156d 18141 NULL);
f55ee35c 18142
c906108c 18143 /* Default assumptions.
c5aa993b 18144 Use the passed type or decode it from the die. */
176620f1 18145 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
f1e6e072 18146 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
c906108c
SS
18147 if (type != NULL)
18148 SYMBOL_TYPE (sym) = type;
18149 else
e7c27a73 18150 SYMBOL_TYPE (sym) = die_type (die, cu);
edb3359d
DJ
18151 attr = dwarf2_attr (die,
18152 inlined_func ? DW_AT_call_line : DW_AT_decl_line,
18153 cu);
c906108c
SS
18154 if (attr)
18155 {
18156 SYMBOL_LINE (sym) = DW_UNSND (attr);
18157 }
cb1df416 18158
edb3359d
DJ
18159 attr = dwarf2_attr (die,
18160 inlined_func ? DW_AT_call_file : DW_AT_decl_file,
18161 cu);
cb1df416
DJ
18162 if (attr)
18163 {
18164 int file_index = DW_UNSND (attr);
9a619af0 18165
cb1df416
DJ
18166 if (cu->line_header == NULL
18167 || file_index > cu->line_header->num_file_names)
18168 complaint (&symfile_complaints,
18169 _("file index out of range"));
1c3d648d 18170 else if (file_index > 0)
cb1df416
DJ
18171 {
18172 struct file_entry *fe;
9a619af0 18173
cb1df416 18174 fe = &cu->line_header->file_names[file_index - 1];
08be3fe3 18175 symbol_set_symtab (sym, fe->symtab);
cb1df416
DJ
18176 }
18177 }
18178
c906108c
SS
18179 switch (die->tag)
18180 {
18181 case DW_TAG_label:
e142c38c 18182 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
c906108c 18183 if (attr)
3e29f34a
MR
18184 {
18185 CORE_ADDR addr;
18186
18187 addr = attr_value_as_address (attr);
18188 addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
18189 SYMBOL_VALUE_ADDRESS (sym) = addr;
18190 }
0f5238ed
TT
18191 SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
18192 SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
f1e6e072 18193 SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
0f5238ed 18194 add_symbol_to_list (sym, cu->list_in_scope);
c906108c
SS
18195 break;
18196 case DW_TAG_subprogram:
18197 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18198 finish_block. */
f1e6e072 18199 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
e142c38c 18200 attr2 = dwarf2_attr (die, DW_AT_external, cu);
2cfa0c8d
JB
18201 if ((attr2 && (DW_UNSND (attr2) != 0))
18202 || cu->language == language_ada)
c906108c 18203 {
2cfa0c8d
JB
18204 /* Subprograms marked external are stored as a global symbol.
18205 Ada subprograms, whether marked external or not, are always
18206 stored as a global symbol, because we want to be able to
18207 access them globally. For instance, we want to be able
18208 to break on a nested subprogram without having to
18209 specify the context. */
e37fd15a 18210 list_to_add = &global_symbols;
c906108c
SS
18211 }
18212 else
18213 {
e37fd15a 18214 list_to_add = cu->list_in_scope;
c906108c
SS
18215 }
18216 break;
edb3359d
DJ
18217 case DW_TAG_inlined_subroutine:
18218 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18219 finish_block. */
f1e6e072 18220 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
edb3359d 18221 SYMBOL_INLINED (sym) = 1;
481860b3 18222 list_to_add = cu->list_in_scope;
edb3359d 18223 break;
34eaf542
TT
18224 case DW_TAG_template_value_param:
18225 suppress_add = 1;
18226 /* Fall through. */
72929c62 18227 case DW_TAG_constant:
c906108c 18228 case DW_TAG_variable:
254e6b9e 18229 case DW_TAG_member:
0963b4bd
MS
18230 /* Compilation with minimal debug info may result in
18231 variables with missing type entries. Change the
18232 misleading `void' type to something sensible. */
c906108c 18233 if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
64c50499 18234 SYMBOL_TYPE (sym)
46bf5051 18235 = objfile_type (objfile)->nodebug_data_symbol;
64c50499 18236
e142c38c 18237 attr = dwarf2_attr (die, DW_AT_const_value, cu);
254e6b9e
DE
18238 /* In the case of DW_TAG_member, we should only be called for
18239 static const members. */
18240 if (die->tag == DW_TAG_member)
18241 {
3863f96c
DE
18242 /* dwarf2_add_field uses die_is_declaration,
18243 so we do the same. */
254e6b9e
DE
18244 gdb_assert (die_is_declaration (die, cu));
18245 gdb_assert (attr);
18246 }
c906108c
SS
18247 if (attr)
18248 {
e7c27a73 18249 dwarf2_const_value (attr, sym, cu);
e142c38c 18250 attr2 = dwarf2_attr (die, DW_AT_external, cu);
e37fd15a 18251 if (!suppress_add)
34eaf542
TT
18252 {
18253 if (attr2 && (DW_UNSND (attr2) != 0))
e37fd15a 18254 list_to_add = &global_symbols;
34eaf542 18255 else
e37fd15a 18256 list_to_add = cu->list_in_scope;
34eaf542 18257 }
c906108c
SS
18258 break;
18259 }
e142c38c 18260 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
18261 if (attr)
18262 {
e7c27a73 18263 var_decode_location (attr, sym, cu);
e142c38c 18264 attr2 = dwarf2_attr (die, DW_AT_external, cu);
4357ac6c
TT
18265
18266 /* Fortran explicitly imports any global symbols to the local
18267 scope by DW_TAG_common_block. */
18268 if (cu->language == language_fortran && die->parent
18269 && die->parent->tag == DW_TAG_common_block)
18270 attr2 = NULL;
18271
caac4577
JG
18272 if (SYMBOL_CLASS (sym) == LOC_STATIC
18273 && SYMBOL_VALUE_ADDRESS (sym) == 0
18274 && !dwarf2_per_objfile->has_section_at_zero)
18275 {
18276 /* When a static variable is eliminated by the linker,
18277 the corresponding debug information is not stripped
18278 out, but the variable address is set to null;
18279 do not add such variables into symbol table. */
18280 }
18281 else if (attr2 && (DW_UNSND (attr2) != 0))
1c809c68 18282 {
f55ee35c
JK
18283 /* Workaround gfortran PR debug/40040 - it uses
18284 DW_AT_location for variables in -fPIC libraries which may
18285 get overriden by other libraries/executable and get
18286 a different address. Resolve it by the minimal symbol
18287 which may come from inferior's executable using copy
18288 relocation. Make this workaround only for gfortran as for
18289 other compilers GDB cannot guess the minimal symbol
18290 Fortran mangling kind. */
18291 if (cu->language == language_fortran && die->parent
18292 && die->parent->tag == DW_TAG_module
18293 && cu->producer
61012eef 18294 && startswith (cu->producer, "GNU Fortran "))
f1e6e072 18295 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
f55ee35c 18296
1c809c68
TT
18297 /* A variable with DW_AT_external is never static,
18298 but it may be block-scoped. */
18299 list_to_add = (cu->list_in_scope == &file_symbols
18300 ? &global_symbols : cu->list_in_scope);
1c809c68 18301 }
c906108c 18302 else
e37fd15a 18303 list_to_add = cu->list_in_scope;
c906108c
SS
18304 }
18305 else
18306 {
18307 /* We do not know the address of this symbol.
c5aa993b
JM
18308 If it is an external symbol and we have type information
18309 for it, enter the symbol as a LOC_UNRESOLVED symbol.
18310 The address of the variable will then be determined from
18311 the minimal symbol table whenever the variable is
18312 referenced. */
e142c38c 18313 attr2 = dwarf2_attr (die, DW_AT_external, cu);
0971de02
TT
18314
18315 /* Fortran explicitly imports any global symbols to the local
18316 scope by DW_TAG_common_block. */
18317 if (cu->language == language_fortran && die->parent
18318 && die->parent->tag == DW_TAG_common_block)
18319 {
18320 /* SYMBOL_CLASS doesn't matter here because
18321 read_common_block is going to reset it. */
18322 if (!suppress_add)
18323 list_to_add = cu->list_in_scope;
18324 }
18325 else if (attr2 && (DW_UNSND (attr2) != 0)
18326 && dwarf2_attr (die, DW_AT_type, cu) != NULL)
c906108c 18327 {
0fe7935b
DJ
18328 /* A variable with DW_AT_external is never static, but it
18329 may be block-scoped. */
18330 list_to_add = (cu->list_in_scope == &file_symbols
18331 ? &global_symbols : cu->list_in_scope);
18332
f1e6e072 18333 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
c906108c 18334 }
442ddf59
JK
18335 else if (!die_is_declaration (die, cu))
18336 {
18337 /* Use the default LOC_OPTIMIZED_OUT class. */
18338 gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
e37fd15a
SW
18339 if (!suppress_add)
18340 list_to_add = cu->list_in_scope;
442ddf59 18341 }
c906108c
SS
18342 }
18343 break;
18344 case DW_TAG_formal_parameter:
edb3359d
DJ
18345 /* If we are inside a function, mark this as an argument. If
18346 not, we might be looking at an argument to an inlined function
18347 when we do not have enough information to show inlined frames;
18348 pretend it's a local variable in that case so that the user can
18349 still see it. */
18350 if (context_stack_depth > 0
18351 && context_stack[context_stack_depth - 1].name != NULL)
18352 SYMBOL_IS_ARGUMENT (sym) = 1;
e142c38c 18353 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
18354 if (attr)
18355 {
e7c27a73 18356 var_decode_location (attr, sym, cu);
c906108c 18357 }
e142c38c 18358 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
18359 if (attr)
18360 {
e7c27a73 18361 dwarf2_const_value (attr, sym, cu);
c906108c 18362 }
f346a30d 18363
e37fd15a 18364 list_to_add = cu->list_in_scope;
c906108c
SS
18365 break;
18366 case DW_TAG_unspecified_parameters:
18367 /* From varargs functions; gdb doesn't seem to have any
18368 interest in this information, so just ignore it for now.
18369 (FIXME?) */
18370 break;
34eaf542
TT
18371 case DW_TAG_template_type_param:
18372 suppress_add = 1;
18373 /* Fall through. */
c906108c 18374 case DW_TAG_class_type:
680b30c7 18375 case DW_TAG_interface_type:
c906108c
SS
18376 case DW_TAG_structure_type:
18377 case DW_TAG_union_type:
72019c9c 18378 case DW_TAG_set_type:
c906108c 18379 case DW_TAG_enumeration_type:
f1e6e072 18380 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
176620f1 18381 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
c906108c 18382
63d06c5c 18383 {
987504bb 18384 /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't
63d06c5c
DC
18385 really ever be static objects: otherwise, if you try
18386 to, say, break of a class's method and you're in a file
18387 which doesn't mention that class, it won't work unless
18388 the check for all static symbols in lookup_symbol_aux
18389 saves you. See the OtherFileClass tests in
18390 gdb.c++/namespace.exp. */
18391
e37fd15a 18392 if (!suppress_add)
34eaf542 18393 {
34eaf542
TT
18394 list_to_add = (cu->list_in_scope == &file_symbols
18395 && (cu->language == language_cplus
18396 || cu->language == language_java)
18397 ? &global_symbols : cu->list_in_scope);
63d06c5c 18398
64382290
TT
18399 /* The semantics of C++ state that "struct foo {
18400 ... }" also defines a typedef for "foo". A Java
18401 class declaration also defines a typedef for the
18402 class. */
18403 if (cu->language == language_cplus
18404 || cu->language == language_java
18405 || cu->language == language_ada)
18406 {
18407 /* The symbol's name is already allocated along
18408 with this objfile, so we don't need to
18409 duplicate it for the type. */
18410 if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
18411 TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
18412 }
63d06c5c
DC
18413 }
18414 }
c906108c
SS
18415 break;
18416 case DW_TAG_typedef:
f1e6e072 18417 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
63d06c5c 18418 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e37fd15a 18419 list_to_add = cu->list_in_scope;
63d06c5c 18420 break;
c906108c 18421 case DW_TAG_base_type:
a02abb62 18422 case DW_TAG_subrange_type:
f1e6e072 18423 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
176620f1 18424 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e37fd15a 18425 list_to_add = cu->list_in_scope;
c906108c
SS
18426 break;
18427 case DW_TAG_enumerator:
e142c38c 18428 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
18429 if (attr)
18430 {
e7c27a73 18431 dwarf2_const_value (attr, sym, cu);
c906108c 18432 }
63d06c5c
DC
18433 {
18434 /* NOTE: carlton/2003-11-10: See comment above in the
18435 DW_TAG_class_type, etc. block. */
18436
e142c38c 18437 list_to_add = (cu->list_in_scope == &file_symbols
987504bb
JJ
18438 && (cu->language == language_cplus
18439 || cu->language == language_java)
e142c38c 18440 ? &global_symbols : cu->list_in_scope);
63d06c5c 18441 }
c906108c 18442 break;
74921315 18443 case DW_TAG_imported_declaration:
5c4e30ca 18444 case DW_TAG_namespace:
f1e6e072 18445 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
e37fd15a 18446 list_to_add = &global_symbols;
5c4e30ca 18447 break;
530e8392
KB
18448 case DW_TAG_module:
18449 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18450 SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
18451 list_to_add = &global_symbols;
18452 break;
4357ac6c 18453 case DW_TAG_common_block:
f1e6e072 18454 SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
4357ac6c
TT
18455 SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
18456 add_symbol_to_list (sym, cu->list_in_scope);
18457 break;
c906108c
SS
18458 default:
18459 /* Not a tag we recognize. Hopefully we aren't processing
18460 trash data, but since we must specifically ignore things
18461 we don't recognize, there is nothing else we should do at
0963b4bd 18462 this point. */
e2e0b3e5 18463 complaint (&symfile_complaints, _("unsupported tag: '%s'"),
4d3c2250 18464 dwarf_tag_name (die->tag));
c906108c
SS
18465 break;
18466 }
df8a16a1 18467
e37fd15a
SW
18468 if (suppress_add)
18469 {
18470 sym->hash_next = objfile->template_symbols;
18471 objfile->template_symbols = sym;
18472 list_to_add = NULL;
18473 }
18474
18475 if (list_to_add != NULL)
18476 add_symbol_to_list (sym, list_to_add);
18477
df8a16a1
DJ
18478 /* For the benefit of old versions of GCC, check for anonymous
18479 namespaces based on the demangled name. */
4d4ec4e5 18480 if (!cu->processing_has_namespace_info
94af9270 18481 && cu->language == language_cplus)
a10964d1 18482 cp_scan_for_anonymous_namespaces (sym, objfile);
c906108c
SS
18483 }
18484 return (sym);
18485}
18486
34eaf542
TT
18487/* A wrapper for new_symbol_full that always allocates a new symbol. */
18488
18489static struct symbol *
18490new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
18491{
18492 return new_symbol_full (die, type, cu, NULL);
18493}
18494
98bfdba5
PA
18495/* Given an attr with a DW_FORM_dataN value in host byte order,
18496 zero-extend it as appropriate for the symbol's type. The DWARF
18497 standard (v4) is not entirely clear about the meaning of using
18498 DW_FORM_dataN for a constant with a signed type, where the type is
18499 wider than the data. The conclusion of a discussion on the DWARF
18500 list was that this is unspecified. We choose to always zero-extend
18501 because that is the interpretation long in use by GCC. */
c906108c 18502
98bfdba5 18503static gdb_byte *
ff39bb5e 18504dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
12df843f 18505 struct dwarf2_cu *cu, LONGEST *value, int bits)
c906108c 18506{
e7c27a73 18507 struct objfile *objfile = cu->objfile;
e17a4113
UW
18508 enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
18509 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
98bfdba5
PA
18510 LONGEST l = DW_UNSND (attr);
18511
18512 if (bits < sizeof (*value) * 8)
18513 {
18514 l &= ((LONGEST) 1 << bits) - 1;
18515 *value = l;
18516 }
18517 else if (bits == sizeof (*value) * 8)
18518 *value = l;
18519 else
18520 {
18521 gdb_byte *bytes = obstack_alloc (obstack, bits / 8);
18522 store_unsigned_integer (bytes, bits / 8, byte_order, l);
18523 return bytes;
18524 }
18525
18526 return NULL;
18527}
18528
18529/* Read a constant value from an attribute. Either set *VALUE, or if
18530 the value does not fit in *VALUE, set *BYTES - either already
18531 allocated on the objfile obstack, or newly allocated on OBSTACK,
18532 or, set *BATON, if we translated the constant to a location
18533 expression. */
18534
18535static void
ff39bb5e 18536dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
98bfdba5
PA
18537 const char *name, struct obstack *obstack,
18538 struct dwarf2_cu *cu,
d521ce57 18539 LONGEST *value, const gdb_byte **bytes,
98bfdba5
PA
18540 struct dwarf2_locexpr_baton **baton)
18541{
18542 struct objfile *objfile = cu->objfile;
18543 struct comp_unit_head *cu_header = &cu->header;
c906108c 18544 struct dwarf_block *blk;
98bfdba5
PA
18545 enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
18546 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
18547
18548 *value = 0;
18549 *bytes = NULL;
18550 *baton = NULL;
c906108c
SS
18551
18552 switch (attr->form)
18553 {
18554 case DW_FORM_addr:
3019eac3 18555 case DW_FORM_GNU_addr_index:
ac56253d 18556 {
ac56253d
TT
18557 gdb_byte *data;
18558
98bfdba5
PA
18559 if (TYPE_LENGTH (type) != cu_header->addr_size)
18560 dwarf2_const_value_length_mismatch_complaint (name,
ac56253d 18561 cu_header->addr_size,
98bfdba5 18562 TYPE_LENGTH (type));
ac56253d
TT
18563 /* Symbols of this form are reasonably rare, so we just
18564 piggyback on the existing location code rather than writing
18565 a new implementation of symbol_computed_ops. */
7919a973 18566 *baton = obstack_alloc (obstack, sizeof (struct dwarf2_locexpr_baton));
98bfdba5
PA
18567 (*baton)->per_cu = cu->per_cu;
18568 gdb_assert ((*baton)->per_cu);
ac56253d 18569
98bfdba5 18570 (*baton)->size = 2 + cu_header->addr_size;
7919a973 18571 data = obstack_alloc (obstack, (*baton)->size);
98bfdba5 18572 (*baton)->data = data;
ac56253d
TT
18573
18574 data[0] = DW_OP_addr;
18575 store_unsigned_integer (&data[1], cu_header->addr_size,
18576 byte_order, DW_ADDR (attr));
18577 data[cu_header->addr_size + 1] = DW_OP_stack_value;
ac56253d 18578 }
c906108c 18579 break;
4ac36638 18580 case DW_FORM_string:
93b5768b 18581 case DW_FORM_strp:
3019eac3 18582 case DW_FORM_GNU_str_index:
36586728 18583 case DW_FORM_GNU_strp_alt:
98bfdba5
PA
18584 /* DW_STRING is already allocated on the objfile obstack, point
18585 directly to it. */
d521ce57 18586 *bytes = (const gdb_byte *) DW_STRING (attr);
93b5768b 18587 break;
c906108c
SS
18588 case DW_FORM_block1:
18589 case DW_FORM_block2:
18590 case DW_FORM_block4:
18591 case DW_FORM_block:
2dc7f7b3 18592 case DW_FORM_exprloc:
c906108c 18593 blk = DW_BLOCK (attr);
98bfdba5
PA
18594 if (TYPE_LENGTH (type) != blk->size)
18595 dwarf2_const_value_length_mismatch_complaint (name, blk->size,
18596 TYPE_LENGTH (type));
18597 *bytes = blk->data;
c906108c 18598 break;
2df3850c
JM
18599
18600 /* The DW_AT_const_value attributes are supposed to carry the
18601 symbol's value "represented as it would be on the target
18602 architecture." By the time we get here, it's already been
18603 converted to host endianness, so we just need to sign- or
18604 zero-extend it as appropriate. */
18605 case DW_FORM_data1:
3aef2284 18606 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
2df3850c 18607 break;
c906108c 18608 case DW_FORM_data2:
3aef2284 18609 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
2df3850c 18610 break;
c906108c 18611 case DW_FORM_data4:
3aef2284 18612 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
2df3850c 18613 break;
c906108c 18614 case DW_FORM_data8:
3aef2284 18615 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
2df3850c
JM
18616 break;
18617
c906108c 18618 case DW_FORM_sdata:
98bfdba5 18619 *value = DW_SND (attr);
2df3850c
JM
18620 break;
18621
c906108c 18622 case DW_FORM_udata:
98bfdba5 18623 *value = DW_UNSND (attr);
c906108c 18624 break;
2df3850c 18625
c906108c 18626 default:
4d3c2250 18627 complaint (&symfile_complaints,
e2e0b3e5 18628 _("unsupported const value attribute form: '%s'"),
4d3c2250 18629 dwarf_form_name (attr->form));
98bfdba5 18630 *value = 0;
c906108c
SS
18631 break;
18632 }
18633}
18634
2df3850c 18635
98bfdba5
PA
18636/* Copy constant value from an attribute to a symbol. */
18637
2df3850c 18638static void
ff39bb5e 18639dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
98bfdba5 18640 struct dwarf2_cu *cu)
2df3850c 18641{
98bfdba5
PA
18642 struct objfile *objfile = cu->objfile;
18643 struct comp_unit_head *cu_header = &cu->header;
12df843f 18644 LONGEST value;
d521ce57 18645 const gdb_byte *bytes;
98bfdba5 18646 struct dwarf2_locexpr_baton *baton;
2df3850c 18647
98bfdba5
PA
18648 dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
18649 SYMBOL_PRINT_NAME (sym),
18650 &objfile->objfile_obstack, cu,
18651 &value, &bytes, &baton);
2df3850c 18652
98bfdba5
PA
18653 if (baton != NULL)
18654 {
98bfdba5 18655 SYMBOL_LOCATION_BATON (sym) = baton;
f1e6e072 18656 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
98bfdba5
PA
18657 }
18658 else if (bytes != NULL)
18659 {
18660 SYMBOL_VALUE_BYTES (sym) = bytes;
f1e6e072 18661 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
98bfdba5
PA
18662 }
18663 else
18664 {
18665 SYMBOL_VALUE (sym) = value;
f1e6e072 18666 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
98bfdba5 18667 }
2df3850c
JM
18668}
18669
c906108c
SS
18670/* Return the type of the die in question using its DW_AT_type attribute. */
18671
18672static struct type *
e7c27a73 18673die_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 18674{
c906108c 18675 struct attribute *type_attr;
c906108c 18676
e142c38c 18677 type_attr = dwarf2_attr (die, DW_AT_type, cu);
c906108c
SS
18678 if (!type_attr)
18679 {
18680 /* A missing DW_AT_type represents a void type. */
46bf5051 18681 return objfile_type (cu->objfile)->builtin_void;
c906108c 18682 }
348e048f 18683
673bfd45 18684 return lookup_die_type (die, type_attr, cu);
c906108c
SS
18685}
18686
b4ba55a1
JB
18687/* True iff CU's producer generates GNAT Ada auxiliary information
18688 that allows to find parallel types through that information instead
18689 of having to do expensive parallel lookups by type name. */
18690
18691static int
18692need_gnat_info (struct dwarf2_cu *cu)
18693{
18694 /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
18695 of GNAT produces this auxiliary information, without any indication
18696 that it is produced. Part of enhancing the FSF version of GNAT
18697 to produce that information will be to put in place an indicator
18698 that we can use in order to determine whether the descriptive type
18699 info is available or not. One suggestion that has been made is
18700 to use a new attribute, attached to the CU die. For now, assume
18701 that the descriptive type info is not available. */
18702 return 0;
18703}
18704
b4ba55a1
JB
18705/* Return the auxiliary type of the die in question using its
18706 DW_AT_GNAT_descriptive_type attribute. Returns NULL if the
18707 attribute is not present. */
18708
18709static struct type *
18710die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
18711{
b4ba55a1 18712 struct attribute *type_attr;
b4ba55a1
JB
18713
18714 type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
18715 if (!type_attr)
18716 return NULL;
18717
673bfd45 18718 return lookup_die_type (die, type_attr, cu);
b4ba55a1
JB
18719}
18720
18721/* If DIE has a descriptive_type attribute, then set the TYPE's
18722 descriptive type accordingly. */
18723
18724static void
18725set_descriptive_type (struct type *type, struct die_info *die,
18726 struct dwarf2_cu *cu)
18727{
18728 struct type *descriptive_type = die_descriptive_type (die, cu);
18729
18730 if (descriptive_type)
18731 {
18732 ALLOCATE_GNAT_AUX_TYPE (type);
18733 TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
18734 }
18735}
18736
c906108c
SS
18737/* Return the containing type of the die in question using its
18738 DW_AT_containing_type attribute. */
18739
18740static struct type *
e7c27a73 18741die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 18742{
c906108c 18743 struct attribute *type_attr;
c906108c 18744
e142c38c 18745 type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
33ac96f0
JK
18746 if (!type_attr)
18747 error (_("Dwarf Error: Problem turning containing type into gdb type "
4262abfb 18748 "[in module %s]"), objfile_name (cu->objfile));
33ac96f0 18749
673bfd45 18750 return lookup_die_type (die, type_attr, cu);
c906108c
SS
18751}
18752
ac9ec31b
DE
18753/* Return an error marker type to use for the ill formed type in DIE/CU. */
18754
18755static struct type *
18756build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
18757{
18758 struct objfile *objfile = dwarf2_per_objfile->objfile;
18759 char *message, *saved;
18760
18761 message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
4262abfb 18762 objfile_name (objfile),
ac9ec31b
DE
18763 cu->header.offset.sect_off,
18764 die->offset.sect_off);
18765 saved = obstack_copy0 (&objfile->objfile_obstack,
18766 message, strlen (message));
18767 xfree (message);
18768
18769 return init_type (TYPE_CODE_ERROR, 0, 0, saved, objfile);
18770}
18771
673bfd45 18772/* Look up the type of DIE in CU using its type attribute ATTR.
ac9ec31b
DE
18773 ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
18774 DW_AT_containing_type.
673bfd45
DE
18775 If there is no type substitute an error marker. */
18776
c906108c 18777static struct type *
ff39bb5e 18778lookup_die_type (struct die_info *die, const struct attribute *attr,
673bfd45 18779 struct dwarf2_cu *cu)
c906108c 18780{
bb5ed363 18781 struct objfile *objfile = cu->objfile;
f792889a
DJ
18782 struct type *this_type;
18783
ac9ec31b
DE
18784 gdb_assert (attr->name == DW_AT_type
18785 || attr->name == DW_AT_GNAT_descriptive_type
18786 || attr->name == DW_AT_containing_type);
18787
673bfd45
DE
18788 /* First see if we have it cached. */
18789
36586728
TT
18790 if (attr->form == DW_FORM_GNU_ref_alt)
18791 {
18792 struct dwarf2_per_cu_data *per_cu;
18793 sect_offset offset = dwarf2_get_ref_die_offset (attr);
18794
18795 per_cu = dwarf2_find_containing_comp_unit (offset, 1, cu->objfile);
18796 this_type = get_die_type_at_offset (offset, per_cu);
18797 }
7771576e 18798 else if (attr_form_is_ref (attr))
673bfd45 18799 {
b64f50a1 18800 sect_offset offset = dwarf2_get_ref_die_offset (attr);
673bfd45
DE
18801
18802 this_type = get_die_type_at_offset (offset, cu->per_cu);
18803 }
55f1336d 18804 else if (attr->form == DW_FORM_ref_sig8)
673bfd45 18805 {
ac9ec31b 18806 ULONGEST signature = DW_SIGNATURE (attr);
673bfd45 18807
ac9ec31b 18808 return get_signatured_type (die, signature, cu);
673bfd45
DE
18809 }
18810 else
18811 {
ac9ec31b
DE
18812 complaint (&symfile_complaints,
18813 _("Dwarf Error: Bad type attribute %s in DIE"
18814 " at 0x%x [in module %s]"),
18815 dwarf_attr_name (attr->name), die->offset.sect_off,
4262abfb 18816 objfile_name (objfile));
ac9ec31b 18817 return build_error_marker_type (cu, die);
673bfd45
DE
18818 }
18819
18820 /* If not cached we need to read it in. */
18821
18822 if (this_type == NULL)
18823 {
ac9ec31b 18824 struct die_info *type_die = NULL;
673bfd45
DE
18825 struct dwarf2_cu *type_cu = cu;
18826
7771576e 18827 if (attr_form_is_ref (attr))
ac9ec31b
DE
18828 type_die = follow_die_ref (die, attr, &type_cu);
18829 if (type_die == NULL)
18830 return build_error_marker_type (cu, die);
18831 /* If we find the type now, it's probably because the type came
3019eac3
DE
18832 from an inter-CU reference and the type's CU got expanded before
18833 ours. */
ac9ec31b 18834 this_type = read_type_die (type_die, type_cu);
673bfd45
DE
18835 }
18836
18837 /* If we still don't have a type use an error marker. */
18838
18839 if (this_type == NULL)
ac9ec31b 18840 return build_error_marker_type (cu, die);
673bfd45 18841
f792889a 18842 return this_type;
c906108c
SS
18843}
18844
673bfd45
DE
18845/* Return the type in DIE, CU.
18846 Returns NULL for invalid types.
18847
02142a6c 18848 This first does a lookup in die_type_hash,
673bfd45
DE
18849 and only reads the die in if necessary.
18850
18851 NOTE: This can be called when reading in partial or full symbols. */
18852
f792889a 18853static struct type *
e7c27a73 18854read_type_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 18855{
f792889a
DJ
18856 struct type *this_type;
18857
18858 this_type = get_die_type (die, cu);
18859 if (this_type)
18860 return this_type;
18861
673bfd45
DE
18862 return read_type_die_1 (die, cu);
18863}
18864
18865/* Read the type in DIE, CU.
18866 Returns NULL for invalid types. */
18867
18868static struct type *
18869read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
18870{
18871 struct type *this_type = NULL;
18872
c906108c
SS
18873 switch (die->tag)
18874 {
18875 case DW_TAG_class_type:
680b30c7 18876 case DW_TAG_interface_type:
c906108c
SS
18877 case DW_TAG_structure_type:
18878 case DW_TAG_union_type:
f792889a 18879 this_type = read_structure_type (die, cu);
c906108c
SS
18880 break;
18881 case DW_TAG_enumeration_type:
f792889a 18882 this_type = read_enumeration_type (die, cu);
c906108c
SS
18883 break;
18884 case DW_TAG_subprogram:
18885 case DW_TAG_subroutine_type:
edb3359d 18886 case DW_TAG_inlined_subroutine:
f792889a 18887 this_type = read_subroutine_type (die, cu);
c906108c
SS
18888 break;
18889 case DW_TAG_array_type:
f792889a 18890 this_type = read_array_type (die, cu);
c906108c 18891 break;
72019c9c 18892 case DW_TAG_set_type:
f792889a 18893 this_type = read_set_type (die, cu);
72019c9c 18894 break;
c906108c 18895 case DW_TAG_pointer_type:
f792889a 18896 this_type = read_tag_pointer_type (die, cu);
c906108c
SS
18897 break;
18898 case DW_TAG_ptr_to_member_type:
f792889a 18899 this_type = read_tag_ptr_to_member_type (die, cu);
c906108c
SS
18900 break;
18901 case DW_TAG_reference_type:
f792889a 18902 this_type = read_tag_reference_type (die, cu);
c906108c
SS
18903 break;
18904 case DW_TAG_const_type:
f792889a 18905 this_type = read_tag_const_type (die, cu);
c906108c
SS
18906 break;
18907 case DW_TAG_volatile_type:
f792889a 18908 this_type = read_tag_volatile_type (die, cu);
c906108c 18909 break;
06d66ee9
TT
18910 case DW_TAG_restrict_type:
18911 this_type = read_tag_restrict_type (die, cu);
18912 break;
c906108c 18913 case DW_TAG_string_type:
f792889a 18914 this_type = read_tag_string_type (die, cu);
c906108c
SS
18915 break;
18916 case DW_TAG_typedef:
f792889a 18917 this_type = read_typedef (die, cu);
c906108c 18918 break;
a02abb62 18919 case DW_TAG_subrange_type:
f792889a 18920 this_type = read_subrange_type (die, cu);
a02abb62 18921 break;
c906108c 18922 case DW_TAG_base_type:
f792889a 18923 this_type = read_base_type (die, cu);
c906108c 18924 break;
81a17f79 18925 case DW_TAG_unspecified_type:
f792889a 18926 this_type = read_unspecified_type (die, cu);
81a17f79 18927 break;
0114d602
DJ
18928 case DW_TAG_namespace:
18929 this_type = read_namespace_type (die, cu);
18930 break;
f55ee35c
JK
18931 case DW_TAG_module:
18932 this_type = read_module_type (die, cu);
18933 break;
a2c2acaf
MW
18934 case DW_TAG_atomic_type:
18935 this_type = read_tag_atomic_type (die, cu);
18936 break;
c906108c 18937 default:
3e43a32a
MS
18938 complaint (&symfile_complaints,
18939 _("unexpected tag in read_type_die: '%s'"),
4d3c2250 18940 dwarf_tag_name (die->tag));
c906108c
SS
18941 break;
18942 }
63d06c5c 18943
f792889a 18944 return this_type;
63d06c5c
DC
18945}
18946
abc72ce4
DE
18947/* See if we can figure out if the class lives in a namespace. We do
18948 this by looking for a member function; its demangled name will
18949 contain namespace info, if there is any.
18950 Return the computed name or NULL.
18951 Space for the result is allocated on the objfile's obstack.
18952 This is the full-die version of guess_partial_die_structure_name.
18953 In this case we know DIE has no useful parent. */
18954
18955static char *
18956guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
18957{
18958 struct die_info *spec_die;
18959 struct dwarf2_cu *spec_cu;
18960 struct die_info *child;
18961
18962 spec_cu = cu;
18963 spec_die = die_specification (die, &spec_cu);
18964 if (spec_die != NULL)
18965 {
18966 die = spec_die;
18967 cu = spec_cu;
18968 }
18969
18970 for (child = die->child;
18971 child != NULL;
18972 child = child->sibling)
18973 {
18974 if (child->tag == DW_TAG_subprogram)
18975 {
18976 struct attribute *attr;
18977
18978 attr = dwarf2_attr (child, DW_AT_linkage_name, cu);
18979 if (attr == NULL)
18980 attr = dwarf2_attr (child, DW_AT_MIPS_linkage_name, cu);
18981 if (attr != NULL)
18982 {
18983 char *actual_name
18984 = language_class_name_from_physname (cu->language_defn,
18985 DW_STRING (attr));
18986 char *name = NULL;
18987
18988 if (actual_name != NULL)
18989 {
15d034d0 18990 const char *die_name = dwarf2_name (die, cu);
abc72ce4
DE
18991
18992 if (die_name != NULL
18993 && strcmp (die_name, actual_name) != 0)
18994 {
18995 /* Strip off the class name from the full name.
18996 We want the prefix. */
18997 int die_name_len = strlen (die_name);
18998 int actual_name_len = strlen (actual_name);
18999
19000 /* Test for '::' as a sanity check. */
19001 if (actual_name_len > die_name_len + 2
3e43a32a
MS
19002 && actual_name[actual_name_len
19003 - die_name_len - 1] == ':')
abc72ce4 19004 name =
34a68019 19005 obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb
TT
19006 actual_name,
19007 actual_name_len - die_name_len - 2);
abc72ce4
DE
19008 }
19009 }
19010 xfree (actual_name);
19011 return name;
19012 }
19013 }
19014 }
19015
19016 return NULL;
19017}
19018
96408a79
SA
19019/* GCC might emit a nameless typedef that has a linkage name. Determine the
19020 prefix part in such case. See
19021 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
19022
19023static char *
19024anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
19025{
19026 struct attribute *attr;
19027 char *base;
19028
19029 if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
19030 && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
19031 return NULL;
19032
19033 attr = dwarf2_attr (die, DW_AT_name, cu);
19034 if (attr != NULL && DW_STRING (attr) != NULL)
19035 return NULL;
19036
19037 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19038 if (attr == NULL)
19039 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19040 if (attr == NULL || DW_STRING (attr) == NULL)
19041 return NULL;
19042
19043 /* dwarf2_name had to be already called. */
19044 gdb_assert (DW_STRING_IS_CANONICAL (attr));
19045
19046 /* Strip the base name, keep any leading namespaces/classes. */
19047 base = strrchr (DW_STRING (attr), ':');
19048 if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
19049 return "";
19050
34a68019 19051 return obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb 19052 DW_STRING (attr), &base[-1] - DW_STRING (attr));
96408a79
SA
19053}
19054
fdde2d81 19055/* Return the name of the namespace/class that DIE is defined within,
0114d602 19056 or "" if we can't tell. The caller should not xfree the result.
fdde2d81 19057
0114d602
DJ
19058 For example, if we're within the method foo() in the following
19059 code:
19060
19061 namespace N {
19062 class C {
19063 void foo () {
19064 }
19065 };
19066 }
19067
19068 then determine_prefix on foo's die will return "N::C". */
fdde2d81 19069
0d5cff50 19070static const char *
e142c38c 19071determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
63d06c5c 19072{
0114d602
DJ
19073 struct die_info *parent, *spec_die;
19074 struct dwarf2_cu *spec_cu;
19075 struct type *parent_type;
96408a79 19076 char *retval;
63d06c5c 19077
f55ee35c
JK
19078 if (cu->language != language_cplus && cu->language != language_java
19079 && cu->language != language_fortran)
0114d602
DJ
19080 return "";
19081
96408a79
SA
19082 retval = anonymous_struct_prefix (die, cu);
19083 if (retval)
19084 return retval;
19085
0114d602
DJ
19086 /* We have to be careful in the presence of DW_AT_specification.
19087 For example, with GCC 3.4, given the code
19088
19089 namespace N {
19090 void foo() {
19091 // Definition of N::foo.
19092 }
19093 }
19094
19095 then we'll have a tree of DIEs like this:
19096
19097 1: DW_TAG_compile_unit
19098 2: DW_TAG_namespace // N
19099 3: DW_TAG_subprogram // declaration of N::foo
19100 4: DW_TAG_subprogram // definition of N::foo
19101 DW_AT_specification // refers to die #3
19102
19103 Thus, when processing die #4, we have to pretend that we're in
19104 the context of its DW_AT_specification, namely the contex of die
19105 #3. */
19106 spec_cu = cu;
19107 spec_die = die_specification (die, &spec_cu);
19108 if (spec_die == NULL)
19109 parent = die->parent;
19110 else
63d06c5c 19111 {
0114d602
DJ
19112 parent = spec_die->parent;
19113 cu = spec_cu;
63d06c5c 19114 }
0114d602
DJ
19115
19116 if (parent == NULL)
19117 return "";
98bfdba5
PA
19118 else if (parent->building_fullname)
19119 {
19120 const char *name;
19121 const char *parent_name;
19122
19123 /* It has been seen on RealView 2.2 built binaries,
19124 DW_TAG_template_type_param types actually _defined_ as
19125 children of the parent class:
19126
19127 enum E {};
19128 template class <class Enum> Class{};
19129 Class<enum E> class_e;
19130
19131 1: DW_TAG_class_type (Class)
19132 2: DW_TAG_enumeration_type (E)
19133 3: DW_TAG_enumerator (enum1:0)
19134 3: DW_TAG_enumerator (enum2:1)
19135 ...
19136 2: DW_TAG_template_type_param
19137 DW_AT_type DW_FORM_ref_udata (E)
19138
19139 Besides being broken debug info, it can put GDB into an
19140 infinite loop. Consider:
19141
19142 When we're building the full name for Class<E>, we'll start
19143 at Class, and go look over its template type parameters,
19144 finding E. We'll then try to build the full name of E, and
19145 reach here. We're now trying to build the full name of E,
19146 and look over the parent DIE for containing scope. In the
19147 broken case, if we followed the parent DIE of E, we'd again
19148 find Class, and once again go look at its template type
19149 arguments, etc., etc. Simply don't consider such parent die
19150 as source-level parent of this die (it can't be, the language
19151 doesn't allow it), and break the loop here. */
19152 name = dwarf2_name (die, cu);
19153 parent_name = dwarf2_name (parent, cu);
19154 complaint (&symfile_complaints,
19155 _("template param type '%s' defined within parent '%s'"),
19156 name ? name : "<unknown>",
19157 parent_name ? parent_name : "<unknown>");
19158 return "";
19159 }
63d06c5c 19160 else
0114d602
DJ
19161 switch (parent->tag)
19162 {
63d06c5c 19163 case DW_TAG_namespace:
0114d602 19164 parent_type = read_type_die (parent, cu);
acebe513
UW
19165 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
19166 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
19167 Work around this problem here. */
19168 if (cu->language == language_cplus
19169 && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
19170 return "";
0114d602
DJ
19171 /* We give a name to even anonymous namespaces. */
19172 return TYPE_TAG_NAME (parent_type);
63d06c5c 19173 case DW_TAG_class_type:
680b30c7 19174 case DW_TAG_interface_type:
63d06c5c 19175 case DW_TAG_structure_type:
0114d602 19176 case DW_TAG_union_type:
f55ee35c 19177 case DW_TAG_module:
0114d602
DJ
19178 parent_type = read_type_die (parent, cu);
19179 if (TYPE_TAG_NAME (parent_type) != NULL)
19180 return TYPE_TAG_NAME (parent_type);
19181 else
19182 /* An anonymous structure is only allowed non-static data
19183 members; no typedefs, no member functions, et cetera.
19184 So it does not need a prefix. */
19185 return "";
abc72ce4 19186 case DW_TAG_compile_unit:
95554aad 19187 case DW_TAG_partial_unit:
abc72ce4
DE
19188 /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace. Cope. */
19189 if (cu->language == language_cplus
8b70b953 19190 && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
abc72ce4
DE
19191 && die->child != NULL
19192 && (die->tag == DW_TAG_class_type
19193 || die->tag == DW_TAG_structure_type
19194 || die->tag == DW_TAG_union_type))
19195 {
19196 char *name = guess_full_die_structure_name (die, cu);
19197 if (name != NULL)
19198 return name;
19199 }
19200 return "";
3d567982
TT
19201 case DW_TAG_enumeration_type:
19202 parent_type = read_type_die (parent, cu);
19203 if (TYPE_DECLARED_CLASS (parent_type))
19204 {
19205 if (TYPE_TAG_NAME (parent_type) != NULL)
19206 return TYPE_TAG_NAME (parent_type);
19207 return "";
19208 }
19209 /* Fall through. */
63d06c5c 19210 default:
8176b9b8 19211 return determine_prefix (parent, cu);
63d06c5c 19212 }
63d06c5c
DC
19213}
19214
3e43a32a
MS
19215/* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
19216 with appropriate separator. If PREFIX or SUFFIX is NULL or empty, then
19217 simply copy the SUFFIX or PREFIX, respectively. If OBS is non-null, perform
19218 an obconcat, otherwise allocate storage for the result. The CU argument is
19219 used to determine the language and hence, the appropriate separator. */
987504bb 19220
f55ee35c 19221#define MAX_SEP_LEN 7 /* strlen ("__") + strlen ("_MOD_") */
63d06c5c
DC
19222
19223static char *
f55ee35c
JK
19224typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
19225 int physname, struct dwarf2_cu *cu)
63d06c5c 19226{
f55ee35c 19227 const char *lead = "";
5c315b68 19228 const char *sep;
63d06c5c 19229
3e43a32a
MS
19230 if (suffix == NULL || suffix[0] == '\0'
19231 || prefix == NULL || prefix[0] == '\0')
987504bb
JJ
19232 sep = "";
19233 else if (cu->language == language_java)
19234 sep = ".";
f55ee35c
JK
19235 else if (cu->language == language_fortran && physname)
19236 {
19237 /* This is gfortran specific mangling. Normally DW_AT_linkage_name or
19238 DW_AT_MIPS_linkage_name is preferred and used instead. */
19239
19240 lead = "__";
19241 sep = "_MOD_";
19242 }
987504bb
JJ
19243 else
19244 sep = "::";
63d06c5c 19245
6dd47d34
DE
19246 if (prefix == NULL)
19247 prefix = "";
19248 if (suffix == NULL)
19249 suffix = "";
19250
987504bb
JJ
19251 if (obs == NULL)
19252 {
3e43a32a
MS
19253 char *retval
19254 = xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1);
9a619af0 19255
f55ee35c
JK
19256 strcpy (retval, lead);
19257 strcat (retval, prefix);
6dd47d34
DE
19258 strcat (retval, sep);
19259 strcat (retval, suffix);
63d06c5c
DC
19260 return retval;
19261 }
987504bb
JJ
19262 else
19263 {
19264 /* We have an obstack. */
f55ee35c 19265 return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
987504bb 19266 }
63d06c5c
DC
19267}
19268
c906108c
SS
19269/* Return sibling of die, NULL if no sibling. */
19270
f9aca02d 19271static struct die_info *
fba45db2 19272sibling_die (struct die_info *die)
c906108c 19273{
639d11d3 19274 return die->sibling;
c906108c
SS
19275}
19276
71c25dea
TT
19277/* Get name of a die, return NULL if not found. */
19278
15d034d0
TT
19279static const char *
19280dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
71c25dea
TT
19281 struct obstack *obstack)
19282{
19283 if (name && cu->language == language_cplus)
19284 {
19285 char *canon_name = cp_canonicalize_string (name);
19286
19287 if (canon_name != NULL)
19288 {
19289 if (strcmp (canon_name, name) != 0)
10f0c4bb 19290 name = obstack_copy0 (obstack, canon_name, strlen (canon_name));
71c25dea
TT
19291 xfree (canon_name);
19292 }
19293 }
19294
19295 return name;
c906108c
SS
19296}
19297
96553a0c
DE
19298/* Get name of a die, return NULL if not found.
19299 Anonymous namespaces are converted to their magic string. */
9219021c 19300
15d034d0 19301static const char *
e142c38c 19302dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
9219021c
DC
19303{
19304 struct attribute *attr;
19305
e142c38c 19306 attr = dwarf2_attr (die, DW_AT_name, cu);
53832f31 19307 if ((!attr || !DW_STRING (attr))
96553a0c 19308 && die->tag != DW_TAG_namespace
53832f31
TT
19309 && die->tag != DW_TAG_class_type
19310 && die->tag != DW_TAG_interface_type
19311 && die->tag != DW_TAG_structure_type
19312 && die->tag != DW_TAG_union_type)
71c25dea
TT
19313 return NULL;
19314
19315 switch (die->tag)
19316 {
19317 case DW_TAG_compile_unit:
95554aad 19318 case DW_TAG_partial_unit:
71c25dea
TT
19319 /* Compilation units have a DW_AT_name that is a filename, not
19320 a source language identifier. */
19321 case DW_TAG_enumeration_type:
19322 case DW_TAG_enumerator:
19323 /* These tags always have simple identifiers already; no need
19324 to canonicalize them. */
19325 return DW_STRING (attr);
907af001 19326
96553a0c
DE
19327 case DW_TAG_namespace:
19328 if (attr != NULL && DW_STRING (attr) != NULL)
19329 return DW_STRING (attr);
19330 return CP_ANONYMOUS_NAMESPACE_STR;
19331
418835cc
KS
19332 case DW_TAG_subprogram:
19333 /* Java constructors will all be named "<init>", so return
19334 the class name when we see this special case. */
19335 if (cu->language == language_java
19336 && DW_STRING (attr) != NULL
19337 && strcmp (DW_STRING (attr), "<init>") == 0)
19338 {
19339 struct dwarf2_cu *spec_cu = cu;
19340 struct die_info *spec_die;
19341
19342 /* GCJ will output '<init>' for Java constructor names.
19343 For this special case, return the name of the parent class. */
19344
cdc07690 19345 /* GCJ may output subprogram DIEs with AT_specification set.
418835cc
KS
19346 If so, use the name of the specified DIE. */
19347 spec_die = die_specification (die, &spec_cu);
19348 if (spec_die != NULL)
19349 return dwarf2_name (spec_die, spec_cu);
19350
19351 do
19352 {
19353 die = die->parent;
19354 if (die->tag == DW_TAG_class_type)
19355 return dwarf2_name (die, cu);
19356 }
95554aad
TT
19357 while (die->tag != DW_TAG_compile_unit
19358 && die->tag != DW_TAG_partial_unit);
418835cc 19359 }
907af001
UW
19360 break;
19361
19362 case DW_TAG_class_type:
19363 case DW_TAG_interface_type:
19364 case DW_TAG_structure_type:
19365 case DW_TAG_union_type:
19366 /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
19367 structures or unions. These were of the form "._%d" in GCC 4.1,
19368 or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
19369 and GCC 4.4. We work around this problem by ignoring these. */
53832f31 19370 if (attr && DW_STRING (attr)
61012eef
GB
19371 && (startswith (DW_STRING (attr), "._")
19372 || startswith (DW_STRING (attr), "<anonymous")))
907af001 19373 return NULL;
53832f31
TT
19374
19375 /* GCC might emit a nameless typedef that has a linkage name. See
19376 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
19377 if (!attr || DW_STRING (attr) == NULL)
19378 {
df5c6c50 19379 char *demangled = NULL;
53832f31
TT
19380
19381 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19382 if (attr == NULL)
19383 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19384
19385 if (attr == NULL || DW_STRING (attr) == NULL)
19386 return NULL;
19387
df5c6c50
JK
19388 /* Avoid demangling DW_STRING (attr) the second time on a second
19389 call for the same DIE. */
19390 if (!DW_STRING_IS_CANONICAL (attr))
8de20a37 19391 demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
53832f31
TT
19392
19393 if (demangled)
19394 {
96408a79
SA
19395 char *base;
19396
53832f31 19397 /* FIXME: we already did this for the partial symbol... */
34a68019
TT
19398 DW_STRING (attr)
19399 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
19400 demangled, strlen (demangled));
53832f31
TT
19401 DW_STRING_IS_CANONICAL (attr) = 1;
19402 xfree (demangled);
96408a79
SA
19403
19404 /* Strip any leading namespaces/classes, keep only the base name.
19405 DW_AT_name for named DIEs does not contain the prefixes. */
19406 base = strrchr (DW_STRING (attr), ':');
19407 if (base && base > DW_STRING (attr) && base[-1] == ':')
19408 return &base[1];
19409 else
19410 return DW_STRING (attr);
53832f31
TT
19411 }
19412 }
907af001
UW
19413 break;
19414
71c25dea 19415 default:
907af001
UW
19416 break;
19417 }
19418
19419 if (!DW_STRING_IS_CANONICAL (attr))
19420 {
19421 DW_STRING (attr)
19422 = dwarf2_canonicalize_name (DW_STRING (attr), cu,
34a68019 19423 &cu->objfile->per_bfd->storage_obstack);
907af001 19424 DW_STRING_IS_CANONICAL (attr) = 1;
71c25dea 19425 }
907af001 19426 return DW_STRING (attr);
9219021c
DC
19427}
19428
19429/* Return the die that this die in an extension of, or NULL if there
f2f0e013
DJ
19430 is none. *EXT_CU is the CU containing DIE on input, and the CU
19431 containing the return value on output. */
9219021c
DC
19432
19433static struct die_info *
f2f0e013 19434dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
9219021c
DC
19435{
19436 struct attribute *attr;
9219021c 19437
f2f0e013 19438 attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
9219021c
DC
19439 if (attr == NULL)
19440 return NULL;
19441
f2f0e013 19442 return follow_die_ref (die, attr, ext_cu);
9219021c
DC
19443}
19444
c906108c
SS
19445/* Convert a DIE tag into its string name. */
19446
f39c6ffd 19447static const char *
aa1ee363 19448dwarf_tag_name (unsigned tag)
c906108c 19449{
f39c6ffd
TT
19450 const char *name = get_DW_TAG_name (tag);
19451
19452 if (name == NULL)
19453 return "DW_TAG_<unknown>";
19454
19455 return name;
c906108c
SS
19456}
19457
19458/* Convert a DWARF attribute code into its string name. */
19459
f39c6ffd 19460static const char *
aa1ee363 19461dwarf_attr_name (unsigned attr)
c906108c 19462{
f39c6ffd
TT
19463 const char *name;
19464
c764a876 19465#ifdef MIPS /* collides with DW_AT_HP_block_index */
f39c6ffd
TT
19466 if (attr == DW_AT_MIPS_fde)
19467 return "DW_AT_MIPS_fde";
19468#else
19469 if (attr == DW_AT_HP_block_index)
19470 return "DW_AT_HP_block_index";
c764a876 19471#endif
f39c6ffd
TT
19472
19473 name = get_DW_AT_name (attr);
19474
19475 if (name == NULL)
19476 return "DW_AT_<unknown>";
19477
19478 return name;
c906108c
SS
19479}
19480
19481/* Convert a DWARF value form code into its string name. */
19482
f39c6ffd 19483static const char *
aa1ee363 19484dwarf_form_name (unsigned form)
c906108c 19485{
f39c6ffd
TT
19486 const char *name = get_DW_FORM_name (form);
19487
19488 if (name == NULL)
19489 return "DW_FORM_<unknown>";
19490
19491 return name;
c906108c
SS
19492}
19493
19494static char *
fba45db2 19495dwarf_bool_name (unsigned mybool)
c906108c
SS
19496{
19497 if (mybool)
19498 return "TRUE";
19499 else
19500 return "FALSE";
19501}
19502
19503/* Convert a DWARF type code into its string name. */
19504
f39c6ffd 19505static const char *
aa1ee363 19506dwarf_type_encoding_name (unsigned enc)
c906108c 19507{
f39c6ffd 19508 const char *name = get_DW_ATE_name (enc);
c906108c 19509
f39c6ffd
TT
19510 if (name == NULL)
19511 return "DW_ATE_<unknown>";
c906108c 19512
f39c6ffd 19513 return name;
c906108c 19514}
c906108c 19515
f9aca02d 19516static void
d97bc12b 19517dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
c906108c
SS
19518{
19519 unsigned int i;
19520
d97bc12b
DE
19521 print_spaces (indent, f);
19522 fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
b64f50a1 19523 dwarf_tag_name (die->tag), die->abbrev, die->offset.sect_off);
d97bc12b
DE
19524
19525 if (die->parent != NULL)
19526 {
19527 print_spaces (indent, f);
19528 fprintf_unfiltered (f, " parent at offset: 0x%x\n",
b64f50a1 19529 die->parent->offset.sect_off);
d97bc12b
DE
19530 }
19531
19532 print_spaces (indent, f);
19533 fprintf_unfiltered (f, " has children: %s\n",
639d11d3 19534 dwarf_bool_name (die->child != NULL));
c906108c 19535
d97bc12b
DE
19536 print_spaces (indent, f);
19537 fprintf_unfiltered (f, " attributes:\n");
19538
c906108c
SS
19539 for (i = 0; i < die->num_attrs; ++i)
19540 {
d97bc12b
DE
19541 print_spaces (indent, f);
19542 fprintf_unfiltered (f, " %s (%s) ",
c906108c
SS
19543 dwarf_attr_name (die->attrs[i].name),
19544 dwarf_form_name (die->attrs[i].form));
d97bc12b 19545
c906108c
SS
19546 switch (die->attrs[i].form)
19547 {
c906108c 19548 case DW_FORM_addr:
3019eac3 19549 case DW_FORM_GNU_addr_index:
d97bc12b 19550 fprintf_unfiltered (f, "address: ");
5af949e3 19551 fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
c906108c
SS
19552 break;
19553 case DW_FORM_block2:
19554 case DW_FORM_block4:
19555 case DW_FORM_block:
19556 case DW_FORM_block1:
56eb65bd
SP
19557 fprintf_unfiltered (f, "block: size %s",
19558 pulongest (DW_BLOCK (&die->attrs[i])->size));
c906108c 19559 break;
2dc7f7b3 19560 case DW_FORM_exprloc:
56eb65bd
SP
19561 fprintf_unfiltered (f, "expression: size %s",
19562 pulongest (DW_BLOCK (&die->attrs[i])->size));
2dc7f7b3 19563 break;
4568ecf9
DE
19564 case DW_FORM_ref_addr:
19565 fprintf_unfiltered (f, "ref address: ");
19566 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19567 break;
36586728
TT
19568 case DW_FORM_GNU_ref_alt:
19569 fprintf_unfiltered (f, "alt ref address: ");
19570 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19571 break;
10b3939b
DJ
19572 case DW_FORM_ref1:
19573 case DW_FORM_ref2:
19574 case DW_FORM_ref4:
4568ecf9
DE
19575 case DW_FORM_ref8:
19576 case DW_FORM_ref_udata:
d97bc12b 19577 fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
4568ecf9 19578 (long) (DW_UNSND (&die->attrs[i])));
10b3939b 19579 break;
c906108c
SS
19580 case DW_FORM_data1:
19581 case DW_FORM_data2:
19582 case DW_FORM_data4:
ce5d95e1 19583 case DW_FORM_data8:
c906108c
SS
19584 case DW_FORM_udata:
19585 case DW_FORM_sdata:
43bbcdc2
PH
19586 fprintf_unfiltered (f, "constant: %s",
19587 pulongest (DW_UNSND (&die->attrs[i])));
c906108c 19588 break;
2dc7f7b3
TT
19589 case DW_FORM_sec_offset:
19590 fprintf_unfiltered (f, "section offset: %s",
19591 pulongest (DW_UNSND (&die->attrs[i])));
19592 break;
55f1336d 19593 case DW_FORM_ref_sig8:
ac9ec31b
DE
19594 fprintf_unfiltered (f, "signature: %s",
19595 hex_string (DW_SIGNATURE (&die->attrs[i])));
348e048f 19596 break;
c906108c 19597 case DW_FORM_string:
4bdf3d34 19598 case DW_FORM_strp:
3019eac3 19599 case DW_FORM_GNU_str_index:
36586728 19600 case DW_FORM_GNU_strp_alt:
8285870a 19601 fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
c906108c 19602 DW_STRING (&die->attrs[i])
8285870a
JK
19603 ? DW_STRING (&die->attrs[i]) : "",
19604 DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
c906108c
SS
19605 break;
19606 case DW_FORM_flag:
19607 if (DW_UNSND (&die->attrs[i]))
d97bc12b 19608 fprintf_unfiltered (f, "flag: TRUE");
c906108c 19609 else
d97bc12b 19610 fprintf_unfiltered (f, "flag: FALSE");
c906108c 19611 break;
2dc7f7b3
TT
19612 case DW_FORM_flag_present:
19613 fprintf_unfiltered (f, "flag: TRUE");
19614 break;
a8329558 19615 case DW_FORM_indirect:
0963b4bd
MS
19616 /* The reader will have reduced the indirect form to
19617 the "base form" so this form should not occur. */
3e43a32a
MS
19618 fprintf_unfiltered (f,
19619 "unexpected attribute form: DW_FORM_indirect");
a8329558 19620 break;
c906108c 19621 default:
d97bc12b 19622 fprintf_unfiltered (f, "unsupported attribute form: %d.",
c5aa993b 19623 die->attrs[i].form);
d97bc12b 19624 break;
c906108c 19625 }
d97bc12b 19626 fprintf_unfiltered (f, "\n");
c906108c
SS
19627 }
19628}
19629
f9aca02d 19630static void
d97bc12b 19631dump_die_for_error (struct die_info *die)
c906108c 19632{
d97bc12b
DE
19633 dump_die_shallow (gdb_stderr, 0, die);
19634}
19635
19636static void
19637dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
19638{
19639 int indent = level * 4;
19640
19641 gdb_assert (die != NULL);
19642
19643 if (level >= max_level)
19644 return;
19645
19646 dump_die_shallow (f, indent, die);
19647
19648 if (die->child != NULL)
c906108c 19649 {
d97bc12b
DE
19650 print_spaces (indent, f);
19651 fprintf_unfiltered (f, " Children:");
19652 if (level + 1 < max_level)
19653 {
19654 fprintf_unfiltered (f, "\n");
19655 dump_die_1 (f, level + 1, max_level, die->child);
19656 }
19657 else
19658 {
3e43a32a
MS
19659 fprintf_unfiltered (f,
19660 " [not printed, max nesting level reached]\n");
d97bc12b
DE
19661 }
19662 }
19663
19664 if (die->sibling != NULL && level > 0)
19665 {
19666 dump_die_1 (f, level, max_level, die->sibling);
c906108c
SS
19667 }
19668}
19669
d97bc12b
DE
19670/* This is called from the pdie macro in gdbinit.in.
19671 It's not static so gcc will keep a copy callable from gdb. */
19672
19673void
19674dump_die (struct die_info *die, int max_level)
19675{
19676 dump_die_1 (gdb_stdlog, 0, max_level, die);
19677}
19678
f9aca02d 19679static void
51545339 19680store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
c906108c 19681{
51545339 19682 void **slot;
c906108c 19683
b64f50a1
JK
19684 slot = htab_find_slot_with_hash (cu->die_hash, die, die->offset.sect_off,
19685 INSERT);
51545339
DJ
19686
19687 *slot = die;
c906108c
SS
19688}
19689
b64f50a1
JK
19690/* Return DIE offset of ATTR. Return 0 with complaint if ATTR is not of the
19691 required kind. */
19692
19693static sect_offset
ff39bb5e 19694dwarf2_get_ref_die_offset (const struct attribute *attr)
93311388 19695{
4568ecf9 19696 sect_offset retval = { DW_UNSND (attr) };
b64f50a1 19697
7771576e 19698 if (attr_form_is_ref (attr))
b64f50a1 19699 return retval;
93311388 19700
b64f50a1 19701 retval.sect_off = 0;
93311388
DE
19702 complaint (&symfile_complaints,
19703 _("unsupported die ref attribute form: '%s'"),
19704 dwarf_form_name (attr->form));
b64f50a1 19705 return retval;
c906108c
SS
19706}
19707
43bbcdc2
PH
19708/* Return the constant value held by ATTR. Return DEFAULT_VALUE if
19709 * the value held by the attribute is not constant. */
a02abb62 19710
43bbcdc2 19711static LONGEST
ff39bb5e 19712dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
a02abb62
JB
19713{
19714 if (attr->form == DW_FORM_sdata)
19715 return DW_SND (attr);
19716 else if (attr->form == DW_FORM_udata
19717 || attr->form == DW_FORM_data1
19718 || attr->form == DW_FORM_data2
19719 || attr->form == DW_FORM_data4
19720 || attr->form == DW_FORM_data8)
19721 return DW_UNSND (attr);
19722 else
19723 {
3e43a32a
MS
19724 complaint (&symfile_complaints,
19725 _("Attribute value is not a constant (%s)"),
a02abb62
JB
19726 dwarf_form_name (attr->form));
19727 return default_value;
19728 }
19729}
19730
348e048f
DE
19731/* Follow reference or signature attribute ATTR of SRC_DIE.
19732 On entry *REF_CU is the CU of SRC_DIE.
19733 On exit *REF_CU is the CU of the result. */
19734
19735static struct die_info *
ff39bb5e 19736follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
348e048f
DE
19737 struct dwarf2_cu **ref_cu)
19738{
19739 struct die_info *die;
19740
7771576e 19741 if (attr_form_is_ref (attr))
348e048f 19742 die = follow_die_ref (src_die, attr, ref_cu);
55f1336d 19743 else if (attr->form == DW_FORM_ref_sig8)
348e048f
DE
19744 die = follow_die_sig (src_die, attr, ref_cu);
19745 else
19746 {
19747 dump_die_for_error (src_die);
19748 error (_("Dwarf Error: Expected reference attribute [in module %s]"),
4262abfb 19749 objfile_name ((*ref_cu)->objfile));
348e048f
DE
19750 }
19751
19752 return die;
03dd20cc
DJ
19753}
19754
5c631832 19755/* Follow reference OFFSET.
673bfd45
DE
19756 On entry *REF_CU is the CU of the source die referencing OFFSET.
19757 On exit *REF_CU is the CU of the result.
19758 Returns NULL if OFFSET is invalid. */
f504f079 19759
f9aca02d 19760static struct die_info *
36586728
TT
19761follow_die_offset (sect_offset offset, int offset_in_dwz,
19762 struct dwarf2_cu **ref_cu)
c906108c 19763{
10b3939b 19764 struct die_info temp_die;
f2f0e013 19765 struct dwarf2_cu *target_cu, *cu = *ref_cu;
10b3939b 19766
348e048f
DE
19767 gdb_assert (cu->per_cu != NULL);
19768
98bfdba5
PA
19769 target_cu = cu;
19770
3019eac3 19771 if (cu->per_cu->is_debug_types)
348e048f
DE
19772 {
19773 /* .debug_types CUs cannot reference anything outside their CU.
19774 If they need to, they have to reference a signatured type via
55f1336d 19775 DW_FORM_ref_sig8. */
348e048f 19776 if (! offset_in_cu_p (&cu->header, offset))
5c631832 19777 return NULL;
348e048f 19778 }
36586728
TT
19779 else if (offset_in_dwz != cu->per_cu->is_dwz
19780 || ! offset_in_cu_p (&cu->header, offset))
10b3939b
DJ
19781 {
19782 struct dwarf2_per_cu_data *per_cu;
9a619af0 19783
36586728
TT
19784 per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
19785 cu->objfile);
03dd20cc
DJ
19786
19787 /* If necessary, add it to the queue and load its DIEs. */
95554aad
TT
19788 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
19789 load_full_comp_unit (per_cu, cu->language);
03dd20cc 19790
10b3939b
DJ
19791 target_cu = per_cu->cu;
19792 }
98bfdba5
PA
19793 else if (cu->dies == NULL)
19794 {
19795 /* We're loading full DIEs during partial symbol reading. */
19796 gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
95554aad 19797 load_full_comp_unit (cu->per_cu, language_minimal);
98bfdba5 19798 }
c906108c 19799
f2f0e013 19800 *ref_cu = target_cu;
51545339 19801 temp_die.offset = offset;
b64f50a1 19802 return htab_find_with_hash (target_cu->die_hash, &temp_die, offset.sect_off);
5c631832 19803}
10b3939b 19804
5c631832
JK
19805/* Follow reference attribute ATTR of SRC_DIE.
19806 On entry *REF_CU is the CU of SRC_DIE.
19807 On exit *REF_CU is the CU of the result. */
19808
19809static struct die_info *
ff39bb5e 19810follow_die_ref (struct die_info *src_die, const struct attribute *attr,
5c631832
JK
19811 struct dwarf2_cu **ref_cu)
19812{
b64f50a1 19813 sect_offset offset = dwarf2_get_ref_die_offset (attr);
5c631832
JK
19814 struct dwarf2_cu *cu = *ref_cu;
19815 struct die_info *die;
19816
36586728
TT
19817 die = follow_die_offset (offset,
19818 (attr->form == DW_FORM_GNU_ref_alt
19819 || cu->per_cu->is_dwz),
19820 ref_cu);
5c631832
JK
19821 if (!die)
19822 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
19823 "at 0x%x [in module %s]"),
4262abfb
JK
19824 offset.sect_off, src_die->offset.sect_off,
19825 objfile_name (cu->objfile));
348e048f 19826
5c631832
JK
19827 return die;
19828}
19829
d83e736b
JK
19830/* Return DWARF block referenced by DW_AT_location of DIE at OFFSET at PER_CU.
19831 Returned value is intended for DW_OP_call*. Returned
19832 dwarf2_locexpr_baton->data has lifetime of PER_CU->OBJFILE. */
5c631832
JK
19833
19834struct dwarf2_locexpr_baton
8b9737bf
TT
19835dwarf2_fetch_die_loc_sect_off (sect_offset offset,
19836 struct dwarf2_per_cu_data *per_cu,
19837 CORE_ADDR (*get_frame_pc) (void *baton),
19838 void *baton)
5c631832 19839{
918dd910 19840 struct dwarf2_cu *cu;
5c631832
JK
19841 struct die_info *die;
19842 struct attribute *attr;
19843 struct dwarf2_locexpr_baton retval;
19844
8cf6f0b1
TT
19845 dw2_setup (per_cu->objfile);
19846
918dd910
JK
19847 if (per_cu->cu == NULL)
19848 load_cu (per_cu);
19849 cu = per_cu->cu;
19850
36586728 19851 die = follow_die_offset (offset, per_cu->is_dwz, &cu);
5c631832
JK
19852 if (!die)
19853 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
4262abfb 19854 offset.sect_off, objfile_name (per_cu->objfile));
5c631832
JK
19855
19856 attr = dwarf2_attr (die, DW_AT_location, cu);
19857 if (!attr)
19858 {
e103e986
JK
19859 /* DWARF: "If there is no such attribute, then there is no effect.".
19860 DATA is ignored if SIZE is 0. */
5c631832 19861
e103e986 19862 retval.data = NULL;
5c631832
JK
19863 retval.size = 0;
19864 }
8cf6f0b1
TT
19865 else if (attr_form_is_section_offset (attr))
19866 {
19867 struct dwarf2_loclist_baton loclist_baton;
19868 CORE_ADDR pc = (*get_frame_pc) (baton);
19869 size_t size;
19870
19871 fill_in_loclist_baton (cu, &loclist_baton, attr);
19872
19873 retval.data = dwarf2_find_location_expression (&loclist_baton,
19874 &size, pc);
19875 retval.size = size;
19876 }
5c631832
JK
19877 else
19878 {
19879 if (!attr_form_is_block (attr))
19880 error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
19881 "is neither DW_FORM_block* nor DW_FORM_exprloc"),
4262abfb 19882 offset.sect_off, objfile_name (per_cu->objfile));
5c631832
JK
19883
19884 retval.data = DW_BLOCK (attr)->data;
19885 retval.size = DW_BLOCK (attr)->size;
19886 }
19887 retval.per_cu = cu->per_cu;
918dd910 19888
918dd910
JK
19889 age_cached_comp_units ();
19890
5c631832 19891 return retval;
348e048f
DE
19892}
19893
8b9737bf
TT
19894/* Like dwarf2_fetch_die_loc_sect_off, but take a CU
19895 offset. */
19896
19897struct dwarf2_locexpr_baton
19898dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
19899 struct dwarf2_per_cu_data *per_cu,
19900 CORE_ADDR (*get_frame_pc) (void *baton),
19901 void *baton)
19902{
19903 sect_offset offset = { per_cu->offset.sect_off + offset_in_cu.cu_off };
19904
19905 return dwarf2_fetch_die_loc_sect_off (offset, per_cu, get_frame_pc, baton);
19906}
19907
b6807d98
TT
19908/* Write a constant of a given type as target-ordered bytes into
19909 OBSTACK. */
19910
19911static const gdb_byte *
19912write_constant_as_bytes (struct obstack *obstack,
19913 enum bfd_endian byte_order,
19914 struct type *type,
19915 ULONGEST value,
19916 LONGEST *len)
19917{
19918 gdb_byte *result;
19919
19920 *len = TYPE_LENGTH (type);
19921 result = obstack_alloc (obstack, *len);
19922 store_unsigned_integer (result, *len, byte_order, value);
19923
19924 return result;
19925}
19926
19927/* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
19928 pointer to the constant bytes and set LEN to the length of the
19929 data. If memory is needed, allocate it on OBSTACK. If the DIE
19930 does not have a DW_AT_const_value, return NULL. */
19931
19932const gdb_byte *
19933dwarf2_fetch_constant_bytes (sect_offset offset,
19934 struct dwarf2_per_cu_data *per_cu,
19935 struct obstack *obstack,
19936 LONGEST *len)
19937{
19938 struct dwarf2_cu *cu;
19939 struct die_info *die;
19940 struct attribute *attr;
19941 const gdb_byte *result = NULL;
19942 struct type *type;
19943 LONGEST value;
19944 enum bfd_endian byte_order;
19945
19946 dw2_setup (per_cu->objfile);
19947
19948 if (per_cu->cu == NULL)
19949 load_cu (per_cu);
19950 cu = per_cu->cu;
19951
19952 die = follow_die_offset (offset, per_cu->is_dwz, &cu);
19953 if (!die)
19954 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
4262abfb 19955 offset.sect_off, objfile_name (per_cu->objfile));
b6807d98
TT
19956
19957
19958 attr = dwarf2_attr (die, DW_AT_const_value, cu);
19959 if (attr == NULL)
19960 return NULL;
19961
19962 byte_order = (bfd_big_endian (per_cu->objfile->obfd)
19963 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
19964
19965 switch (attr->form)
19966 {
19967 case DW_FORM_addr:
19968 case DW_FORM_GNU_addr_index:
19969 {
19970 gdb_byte *tem;
19971
19972 *len = cu->header.addr_size;
19973 tem = obstack_alloc (obstack, *len);
19974 store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
19975 result = tem;
19976 }
19977 break;
19978 case DW_FORM_string:
19979 case DW_FORM_strp:
19980 case DW_FORM_GNU_str_index:
19981 case DW_FORM_GNU_strp_alt:
19982 /* DW_STRING is already allocated on the objfile obstack, point
19983 directly to it. */
19984 result = (const gdb_byte *) DW_STRING (attr);
19985 *len = strlen (DW_STRING (attr));
19986 break;
19987 case DW_FORM_block1:
19988 case DW_FORM_block2:
19989 case DW_FORM_block4:
19990 case DW_FORM_block:
19991 case DW_FORM_exprloc:
19992 result = DW_BLOCK (attr)->data;
19993 *len = DW_BLOCK (attr)->size;
19994 break;
19995
19996 /* The DW_AT_const_value attributes are supposed to carry the
19997 symbol's value "represented as it would be on the target
19998 architecture." By the time we get here, it's already been
19999 converted to host endianness, so we just need to sign- or
20000 zero-extend it as appropriate. */
20001 case DW_FORM_data1:
20002 type = die_type (die, cu);
20003 result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
20004 if (result == NULL)
20005 result = write_constant_as_bytes (obstack, byte_order,
20006 type, value, len);
20007 break;
20008 case DW_FORM_data2:
20009 type = die_type (die, cu);
20010 result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
20011 if (result == NULL)
20012 result = write_constant_as_bytes (obstack, byte_order,
20013 type, value, len);
20014 break;
20015 case DW_FORM_data4:
20016 type = die_type (die, cu);
20017 result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
20018 if (result == NULL)
20019 result = write_constant_as_bytes (obstack, byte_order,
20020 type, value, len);
20021 break;
20022 case DW_FORM_data8:
20023 type = die_type (die, cu);
20024 result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
20025 if (result == NULL)
20026 result = write_constant_as_bytes (obstack, byte_order,
20027 type, value, len);
20028 break;
20029
20030 case DW_FORM_sdata:
20031 type = die_type (die, cu);
20032 result = write_constant_as_bytes (obstack, byte_order,
20033 type, DW_SND (attr), len);
20034 break;
20035
20036 case DW_FORM_udata:
20037 type = die_type (die, cu);
20038 result = write_constant_as_bytes (obstack, byte_order,
20039 type, DW_UNSND (attr), len);
20040 break;
20041
20042 default:
20043 complaint (&symfile_complaints,
20044 _("unsupported const value attribute form: '%s'"),
20045 dwarf_form_name (attr->form));
20046 break;
20047 }
20048
20049 return result;
20050}
20051
8a9b8146
TT
20052/* Return the type of the DIE at DIE_OFFSET in the CU named by
20053 PER_CU. */
20054
20055struct type *
b64f50a1 20056dwarf2_get_die_type (cu_offset die_offset,
8a9b8146
TT
20057 struct dwarf2_per_cu_data *per_cu)
20058{
b64f50a1
JK
20059 sect_offset die_offset_sect;
20060
8a9b8146 20061 dw2_setup (per_cu->objfile);
b64f50a1
JK
20062
20063 die_offset_sect.sect_off = per_cu->offset.sect_off + die_offset.cu_off;
20064 return get_die_type_at_offset (die_offset_sect, per_cu);
8a9b8146
TT
20065}
20066
ac9ec31b 20067/* Follow type unit SIG_TYPE referenced by SRC_DIE.
348e048f 20068 On entry *REF_CU is the CU of SRC_DIE.
ac9ec31b
DE
20069 On exit *REF_CU is the CU of the result.
20070 Returns NULL if the referenced DIE isn't found. */
348e048f
DE
20071
20072static struct die_info *
ac9ec31b
DE
20073follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
20074 struct dwarf2_cu **ref_cu)
348e048f
DE
20075{
20076 struct objfile *objfile = (*ref_cu)->objfile;
20077 struct die_info temp_die;
348e048f
DE
20078 struct dwarf2_cu *sig_cu;
20079 struct die_info *die;
20080
ac9ec31b
DE
20081 /* While it might be nice to assert sig_type->type == NULL here,
20082 we can get here for DW_AT_imported_declaration where we need
20083 the DIE not the type. */
348e048f
DE
20084
20085 /* If necessary, add it to the queue and load its DIEs. */
20086
95554aad 20087 if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
a0f42c21 20088 read_signatured_type (sig_type);
348e048f 20089
348e048f 20090 sig_cu = sig_type->per_cu.cu;
69d751e3 20091 gdb_assert (sig_cu != NULL);
3019eac3
DE
20092 gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
20093 temp_die.offset = sig_type->type_offset_in_section;
b64f50a1
JK
20094 die = htab_find_with_hash (sig_cu->die_hash, &temp_die,
20095 temp_die.offset.sect_off);
348e048f
DE
20096 if (die)
20097 {
796a7ff8
DE
20098 /* For .gdb_index version 7 keep track of included TUs.
20099 http://sourceware.org/bugzilla/show_bug.cgi?id=15021. */
20100 if (dwarf2_per_objfile->index_table != NULL
20101 && dwarf2_per_objfile->index_table->version <= 7)
20102 {
20103 VEC_safe_push (dwarf2_per_cu_ptr,
20104 (*ref_cu)->per_cu->imported_symtabs,
20105 sig_cu->per_cu);
20106 }
20107
348e048f
DE
20108 *ref_cu = sig_cu;
20109 return die;
20110 }
20111
ac9ec31b
DE
20112 return NULL;
20113}
20114
20115/* Follow signatured type referenced by ATTR in SRC_DIE.
20116 On entry *REF_CU is the CU of SRC_DIE.
20117 On exit *REF_CU is the CU of the result.
20118 The result is the DIE of the type.
20119 If the referenced type cannot be found an error is thrown. */
20120
20121static struct die_info *
ff39bb5e 20122follow_die_sig (struct die_info *src_die, const struct attribute *attr,
ac9ec31b
DE
20123 struct dwarf2_cu **ref_cu)
20124{
20125 ULONGEST signature = DW_SIGNATURE (attr);
20126 struct signatured_type *sig_type;
20127 struct die_info *die;
20128
20129 gdb_assert (attr->form == DW_FORM_ref_sig8);
20130
a2ce51a0 20131 sig_type = lookup_signatured_type (*ref_cu, signature);
ac9ec31b
DE
20132 /* sig_type will be NULL if the signatured type is missing from
20133 the debug info. */
20134 if (sig_type == NULL)
20135 {
20136 error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
20137 " from DIE at 0x%x [in module %s]"),
20138 hex_string (signature), src_die->offset.sect_off,
4262abfb 20139 objfile_name ((*ref_cu)->objfile));
ac9ec31b
DE
20140 }
20141
20142 die = follow_die_sig_1 (src_die, sig_type, ref_cu);
20143 if (die == NULL)
20144 {
20145 dump_die_for_error (src_die);
20146 error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
20147 " from DIE at 0x%x [in module %s]"),
20148 hex_string (signature), src_die->offset.sect_off,
4262abfb 20149 objfile_name ((*ref_cu)->objfile));
ac9ec31b
DE
20150 }
20151
20152 return die;
20153}
20154
20155/* Get the type specified by SIGNATURE referenced in DIE/CU,
20156 reading in and processing the type unit if necessary. */
20157
20158static struct type *
20159get_signatured_type (struct die_info *die, ULONGEST signature,
20160 struct dwarf2_cu *cu)
20161{
20162 struct signatured_type *sig_type;
20163 struct dwarf2_cu *type_cu;
20164 struct die_info *type_die;
20165 struct type *type;
20166
a2ce51a0 20167 sig_type = lookup_signatured_type (cu, signature);
ac9ec31b
DE
20168 /* sig_type will be NULL if the signatured type is missing from
20169 the debug info. */
20170 if (sig_type == NULL)
20171 {
20172 complaint (&symfile_complaints,
20173 _("Dwarf Error: Cannot find signatured DIE %s referenced"
20174 " from DIE at 0x%x [in module %s]"),
20175 hex_string (signature), die->offset.sect_off,
4262abfb 20176 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20177 return build_error_marker_type (cu, die);
20178 }
20179
20180 /* If we already know the type we're done. */
20181 if (sig_type->type != NULL)
20182 return sig_type->type;
20183
20184 type_cu = cu;
20185 type_die = follow_die_sig_1 (die, sig_type, &type_cu);
20186 if (type_die != NULL)
20187 {
20188 /* N.B. We need to call get_die_type to ensure only one type for this DIE
20189 is created. This is important, for example, because for c++ classes
20190 we need TYPE_NAME set which is only done by new_symbol. Blech. */
20191 type = read_type_die (type_die, type_cu);
20192 if (type == NULL)
20193 {
20194 complaint (&symfile_complaints,
20195 _("Dwarf Error: Cannot build signatured type %s"
20196 " referenced from DIE at 0x%x [in module %s]"),
20197 hex_string (signature), die->offset.sect_off,
4262abfb 20198 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20199 type = build_error_marker_type (cu, die);
20200 }
20201 }
20202 else
20203 {
20204 complaint (&symfile_complaints,
20205 _("Dwarf Error: Problem reading signatured DIE %s referenced"
20206 " from DIE at 0x%x [in module %s]"),
20207 hex_string (signature), die->offset.sect_off,
4262abfb 20208 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20209 type = build_error_marker_type (cu, die);
20210 }
20211 sig_type->type = type;
20212
20213 return type;
20214}
20215
20216/* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
20217 reading in and processing the type unit if necessary. */
20218
20219static struct type *
ff39bb5e 20220get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
b385a60d 20221 struct dwarf2_cu *cu) /* ARI: editCase function */
ac9ec31b
DE
20222{
20223 /* Yes, DW_AT_signature can use a non-ref_sig8 reference. */
7771576e 20224 if (attr_form_is_ref (attr))
ac9ec31b
DE
20225 {
20226 struct dwarf2_cu *type_cu = cu;
20227 struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
20228
20229 return read_type_die (type_die, type_cu);
20230 }
20231 else if (attr->form == DW_FORM_ref_sig8)
20232 {
20233 return get_signatured_type (die, DW_SIGNATURE (attr), cu);
20234 }
20235 else
20236 {
20237 complaint (&symfile_complaints,
20238 _("Dwarf Error: DW_AT_signature has bad form %s in DIE"
20239 " at 0x%x [in module %s]"),
20240 dwarf_form_name (attr->form), die->offset.sect_off,
4262abfb 20241 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20242 return build_error_marker_type (cu, die);
20243 }
348e048f
DE
20244}
20245
e5fe5e75 20246/* Load the DIEs associated with type unit PER_CU into memory. */
348e048f
DE
20247
20248static void
e5fe5e75 20249load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
348e048f 20250{
52dc124a 20251 struct signatured_type *sig_type;
348e048f 20252
f4dc4d17
DE
20253 /* Caller is responsible for ensuring type_unit_groups don't get here. */
20254 gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
20255
6721b2ec
DE
20256 /* We have the per_cu, but we need the signatured_type.
20257 Fortunately this is an easy translation. */
20258 gdb_assert (per_cu->is_debug_types);
20259 sig_type = (struct signatured_type *) per_cu;
348e048f 20260
6721b2ec 20261 gdb_assert (per_cu->cu == NULL);
348e048f 20262
52dc124a 20263 read_signatured_type (sig_type);
348e048f 20264
6721b2ec 20265 gdb_assert (per_cu->cu != NULL);
348e048f
DE
20266}
20267
dee91e82
DE
20268/* die_reader_func for read_signatured_type.
20269 This is identical to load_full_comp_unit_reader,
20270 but is kept separate for now. */
348e048f
DE
20271
20272static void
dee91e82 20273read_signatured_type_reader (const struct die_reader_specs *reader,
d521ce57 20274 const gdb_byte *info_ptr,
dee91e82
DE
20275 struct die_info *comp_unit_die,
20276 int has_children,
20277 void *data)
348e048f 20278{
dee91e82 20279 struct dwarf2_cu *cu = reader->cu;
348e048f 20280
dee91e82
DE
20281 gdb_assert (cu->die_hash == NULL);
20282 cu->die_hash =
20283 htab_create_alloc_ex (cu->header.length / 12,
20284 die_hash,
20285 die_eq,
20286 NULL,
20287 &cu->comp_unit_obstack,
20288 hashtab_obstack_allocate,
20289 dummy_obstack_deallocate);
348e048f 20290
dee91e82
DE
20291 if (has_children)
20292 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
20293 &info_ptr, comp_unit_die);
20294 cu->dies = comp_unit_die;
20295 /* comp_unit_die is not stored in die_hash, no need. */
348e048f
DE
20296
20297 /* We try not to read any attributes in this function, because not
9cdd5dbd 20298 all CUs needed for references have been loaded yet, and symbol
348e048f 20299 table processing isn't initialized. But we have to set the CU language,
dee91e82
DE
20300 or we won't be able to build types correctly.
20301 Similarly, if we do not read the producer, we can not apply
20302 producer-specific interpretation. */
95554aad 20303 prepare_one_comp_unit (cu, cu->dies, language_minimal);
dee91e82 20304}
348e048f 20305
3019eac3
DE
20306/* Read in a signatured type and build its CU and DIEs.
20307 If the type is a stub for the real type in a DWO file,
20308 read in the real type from the DWO file as well. */
dee91e82
DE
20309
20310static void
20311read_signatured_type (struct signatured_type *sig_type)
20312{
20313 struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
348e048f 20314
3019eac3 20315 gdb_assert (per_cu->is_debug_types);
dee91e82 20316 gdb_assert (per_cu->cu == NULL);
348e048f 20317
f4dc4d17
DE
20318 init_cutu_and_read_dies (per_cu, NULL, 0, 1,
20319 read_signatured_type_reader, NULL);
7ee85ab1 20320 sig_type->per_cu.tu_read = 1;
c906108c
SS
20321}
20322
c906108c
SS
20323/* Decode simple location descriptions.
20324 Given a pointer to a dwarf block that defines a location, compute
20325 the location and return the value.
20326
4cecd739
DJ
20327 NOTE drow/2003-11-18: This function is called in two situations
20328 now: for the address of static or global variables (partial symbols
20329 only) and for offsets into structures which are expected to be
20330 (more or less) constant. The partial symbol case should go away,
20331 and only the constant case should remain. That will let this
20332 function complain more accurately. A few special modes are allowed
20333 without complaint for global variables (for instance, global
20334 register values and thread-local values).
c906108c
SS
20335
20336 A location description containing no operations indicates that the
4cecd739 20337 object is optimized out. The return value is 0 for that case.
6b992462
DJ
20338 FIXME drow/2003-11-16: No callers check for this case any more; soon all
20339 callers will only want a very basic result and this can become a
21ae7a4d
JK
20340 complaint.
20341
20342 Note that stack[0] is unused except as a default error return. */
c906108c
SS
20343
20344static CORE_ADDR
e7c27a73 20345decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
c906108c 20346{
e7c27a73 20347 struct objfile *objfile = cu->objfile;
56eb65bd
SP
20348 size_t i;
20349 size_t size = blk->size;
d521ce57 20350 const gdb_byte *data = blk->data;
21ae7a4d
JK
20351 CORE_ADDR stack[64];
20352 int stacki;
20353 unsigned int bytes_read, unsnd;
20354 gdb_byte op;
c906108c 20355
21ae7a4d
JK
20356 i = 0;
20357 stacki = 0;
20358 stack[stacki] = 0;
20359 stack[++stacki] = 0;
20360
20361 while (i < size)
20362 {
20363 op = data[i++];
20364 switch (op)
20365 {
20366 case DW_OP_lit0:
20367 case DW_OP_lit1:
20368 case DW_OP_lit2:
20369 case DW_OP_lit3:
20370 case DW_OP_lit4:
20371 case DW_OP_lit5:
20372 case DW_OP_lit6:
20373 case DW_OP_lit7:
20374 case DW_OP_lit8:
20375 case DW_OP_lit9:
20376 case DW_OP_lit10:
20377 case DW_OP_lit11:
20378 case DW_OP_lit12:
20379 case DW_OP_lit13:
20380 case DW_OP_lit14:
20381 case DW_OP_lit15:
20382 case DW_OP_lit16:
20383 case DW_OP_lit17:
20384 case DW_OP_lit18:
20385 case DW_OP_lit19:
20386 case DW_OP_lit20:
20387 case DW_OP_lit21:
20388 case DW_OP_lit22:
20389 case DW_OP_lit23:
20390 case DW_OP_lit24:
20391 case DW_OP_lit25:
20392 case DW_OP_lit26:
20393 case DW_OP_lit27:
20394 case DW_OP_lit28:
20395 case DW_OP_lit29:
20396 case DW_OP_lit30:
20397 case DW_OP_lit31:
20398 stack[++stacki] = op - DW_OP_lit0;
20399 break;
f1bea926 20400
21ae7a4d
JK
20401 case DW_OP_reg0:
20402 case DW_OP_reg1:
20403 case DW_OP_reg2:
20404 case DW_OP_reg3:
20405 case DW_OP_reg4:
20406 case DW_OP_reg5:
20407 case DW_OP_reg6:
20408 case DW_OP_reg7:
20409 case DW_OP_reg8:
20410 case DW_OP_reg9:
20411 case DW_OP_reg10:
20412 case DW_OP_reg11:
20413 case DW_OP_reg12:
20414 case DW_OP_reg13:
20415 case DW_OP_reg14:
20416 case DW_OP_reg15:
20417 case DW_OP_reg16:
20418 case DW_OP_reg17:
20419 case DW_OP_reg18:
20420 case DW_OP_reg19:
20421 case DW_OP_reg20:
20422 case DW_OP_reg21:
20423 case DW_OP_reg22:
20424 case DW_OP_reg23:
20425 case DW_OP_reg24:
20426 case DW_OP_reg25:
20427 case DW_OP_reg26:
20428 case DW_OP_reg27:
20429 case DW_OP_reg28:
20430 case DW_OP_reg29:
20431 case DW_OP_reg30:
20432 case DW_OP_reg31:
20433 stack[++stacki] = op - DW_OP_reg0;
20434 if (i < size)
20435 dwarf2_complex_location_expr_complaint ();
20436 break;
c906108c 20437
21ae7a4d
JK
20438 case DW_OP_regx:
20439 unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
20440 i += bytes_read;
20441 stack[++stacki] = unsnd;
20442 if (i < size)
20443 dwarf2_complex_location_expr_complaint ();
20444 break;
c906108c 20445
21ae7a4d
JK
20446 case DW_OP_addr:
20447 stack[++stacki] = read_address (objfile->obfd, &data[i],
20448 cu, &bytes_read);
20449 i += bytes_read;
20450 break;
d53d4ac5 20451
21ae7a4d
JK
20452 case DW_OP_const1u:
20453 stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
20454 i += 1;
20455 break;
20456
20457 case DW_OP_const1s:
20458 stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
20459 i += 1;
20460 break;
20461
20462 case DW_OP_const2u:
20463 stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
20464 i += 2;
20465 break;
20466
20467 case DW_OP_const2s:
20468 stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
20469 i += 2;
20470 break;
d53d4ac5 20471
21ae7a4d
JK
20472 case DW_OP_const4u:
20473 stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
20474 i += 4;
20475 break;
20476
20477 case DW_OP_const4s:
20478 stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
20479 i += 4;
20480 break;
20481
585861ea
JK
20482 case DW_OP_const8u:
20483 stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
20484 i += 8;
20485 break;
20486
21ae7a4d
JK
20487 case DW_OP_constu:
20488 stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
20489 &bytes_read);
20490 i += bytes_read;
20491 break;
20492
20493 case DW_OP_consts:
20494 stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
20495 i += bytes_read;
20496 break;
20497
20498 case DW_OP_dup:
20499 stack[stacki + 1] = stack[stacki];
20500 stacki++;
20501 break;
20502
20503 case DW_OP_plus:
20504 stack[stacki - 1] += stack[stacki];
20505 stacki--;
20506 break;
20507
20508 case DW_OP_plus_uconst:
20509 stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
20510 &bytes_read);
20511 i += bytes_read;
20512 break;
20513
20514 case DW_OP_minus:
20515 stack[stacki - 1] -= stack[stacki];
20516 stacki--;
20517 break;
20518
20519 case DW_OP_deref:
20520 /* If we're not the last op, then we definitely can't encode
20521 this using GDB's address_class enum. This is valid for partial
20522 global symbols, although the variable's address will be bogus
20523 in the psymtab. */
20524 if (i < size)
20525 dwarf2_complex_location_expr_complaint ();
20526 break;
20527
20528 case DW_OP_GNU_push_tls_address:
20529 /* The top of the stack has the offset from the beginning
20530 of the thread control block at which the variable is located. */
20531 /* Nothing should follow this operator, so the top of stack would
20532 be returned. */
20533 /* This is valid for partial global symbols, but the variable's
585861ea
JK
20534 address will be bogus in the psymtab. Make it always at least
20535 non-zero to not look as a variable garbage collected by linker
20536 which have DW_OP_addr 0. */
21ae7a4d
JK
20537 if (i < size)
20538 dwarf2_complex_location_expr_complaint ();
585861ea 20539 stack[stacki]++;
21ae7a4d
JK
20540 break;
20541
20542 case DW_OP_GNU_uninit:
20543 break;
20544
3019eac3 20545 case DW_OP_GNU_addr_index:
49f6c839 20546 case DW_OP_GNU_const_index:
3019eac3
DE
20547 stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
20548 &bytes_read);
20549 i += bytes_read;
20550 break;
20551
21ae7a4d
JK
20552 default:
20553 {
f39c6ffd 20554 const char *name = get_DW_OP_name (op);
21ae7a4d
JK
20555
20556 if (name)
20557 complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
20558 name);
20559 else
20560 complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
20561 op);
20562 }
20563
20564 return (stack[stacki]);
d53d4ac5 20565 }
3c6e0cb3 20566
21ae7a4d
JK
20567 /* Enforce maximum stack depth of SIZE-1 to avoid writing
20568 outside of the allocated space. Also enforce minimum>0. */
20569 if (stacki >= ARRAY_SIZE (stack) - 1)
20570 {
20571 complaint (&symfile_complaints,
20572 _("location description stack overflow"));
20573 return 0;
20574 }
20575
20576 if (stacki <= 0)
20577 {
20578 complaint (&symfile_complaints,
20579 _("location description stack underflow"));
20580 return 0;
20581 }
20582 }
20583 return (stack[stacki]);
c906108c
SS
20584}
20585
20586/* memory allocation interface */
20587
c906108c 20588static struct dwarf_block *
7b5a2f43 20589dwarf_alloc_block (struct dwarf2_cu *cu)
c906108c
SS
20590{
20591 struct dwarf_block *blk;
20592
20593 blk = (struct dwarf_block *)
7b5a2f43 20594 obstack_alloc (&cu->comp_unit_obstack, sizeof (struct dwarf_block));
c906108c
SS
20595 return (blk);
20596}
20597
c906108c 20598static struct die_info *
b60c80d6 20599dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
c906108c
SS
20600{
20601 struct die_info *die;
b60c80d6
DJ
20602 size_t size = sizeof (struct die_info);
20603
20604 if (num_attrs > 1)
20605 size += (num_attrs - 1) * sizeof (struct attribute);
c906108c 20606
b60c80d6 20607 die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
c906108c
SS
20608 memset (die, 0, sizeof (struct die_info));
20609 return (die);
20610}
2e276125
JB
20611
20612\f
20613/* Macro support. */
20614
233d95b5
JK
20615/* Return file name relative to the compilation directory of file number I in
20616 *LH's file name table. The result is allocated using xmalloc; the caller is
2e276125 20617 responsible for freeing it. */
233d95b5 20618
2e276125 20619static char *
233d95b5 20620file_file_name (int file, struct line_header *lh)
2e276125 20621{
6a83a1e6
EZ
20622 /* Is the file number a valid index into the line header's file name
20623 table? Remember that file numbers start with one, not zero. */
20624 if (1 <= file && file <= lh->num_file_names)
20625 {
20626 struct file_entry *fe = &lh->file_names[file - 1];
6e70227d 20627
233d95b5 20628 if (IS_ABSOLUTE_PATH (fe->name) || fe->dir_index == 0)
6a83a1e6 20629 return xstrdup (fe->name);
233d95b5
JK
20630 return concat (lh->include_dirs[fe->dir_index - 1], SLASH_STRING,
20631 fe->name, NULL);
6a83a1e6 20632 }
2e276125
JB
20633 else
20634 {
6a83a1e6
EZ
20635 /* The compiler produced a bogus file number. We can at least
20636 record the macro definitions made in the file, even if we
20637 won't be able to find the file by name. */
20638 char fake_name[80];
9a619af0 20639
8c042590
PM
20640 xsnprintf (fake_name, sizeof (fake_name),
20641 "<bad macro file number %d>", file);
2e276125 20642
6e70227d 20643 complaint (&symfile_complaints,
6a83a1e6
EZ
20644 _("bad file number in macro information (%d)"),
20645 file);
2e276125 20646
6a83a1e6 20647 return xstrdup (fake_name);
2e276125
JB
20648 }
20649}
20650
233d95b5
JK
20651/* Return the full name of file number I in *LH's file name table.
20652 Use COMP_DIR as the name of the current directory of the
20653 compilation. The result is allocated using xmalloc; the caller is
20654 responsible for freeing it. */
20655static char *
20656file_full_name (int file, struct line_header *lh, const char *comp_dir)
20657{
20658 /* Is the file number a valid index into the line header's file name
20659 table? Remember that file numbers start with one, not zero. */
20660 if (1 <= file && file <= lh->num_file_names)
20661 {
20662 char *relative = file_file_name (file, lh);
20663
20664 if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
20665 return relative;
20666 return reconcat (relative, comp_dir, SLASH_STRING, relative, NULL);
20667 }
20668 else
20669 return file_file_name (file, lh);
20670}
20671
2e276125
JB
20672
20673static struct macro_source_file *
20674macro_start_file (int file, int line,
20675 struct macro_source_file *current_file,
43f3e411 20676 struct line_header *lh)
2e276125 20677{
233d95b5
JK
20678 /* File name relative to the compilation directory of this source file. */
20679 char *file_name = file_file_name (file, lh);
2e276125 20680
2e276125 20681 if (! current_file)
abc9d0dc 20682 {
fc474241
DE
20683 /* Note: We don't create a macro table for this compilation unit
20684 at all until we actually get a filename. */
43f3e411 20685 struct macro_table *macro_table = get_macro_table ();
fc474241 20686
abc9d0dc
TT
20687 /* If we have no current file, then this must be the start_file
20688 directive for the compilation unit's main source file. */
fc474241
DE
20689 current_file = macro_set_main (macro_table, file_name);
20690 macro_define_special (macro_table);
abc9d0dc 20691 }
2e276125 20692 else
233d95b5 20693 current_file = macro_include (current_file, line, file_name);
2e276125 20694
233d95b5 20695 xfree (file_name);
6e70227d 20696
2e276125
JB
20697 return current_file;
20698}
20699
20700
20701/* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
20702 followed by a null byte. */
20703static char *
20704copy_string (const char *buf, int len)
20705{
20706 char *s = xmalloc (len + 1);
9a619af0 20707
2e276125
JB
20708 memcpy (s, buf, len);
20709 s[len] = '\0';
2e276125
JB
20710 return s;
20711}
20712
20713
20714static const char *
20715consume_improper_spaces (const char *p, const char *body)
20716{
20717 if (*p == ' ')
20718 {
4d3c2250 20719 complaint (&symfile_complaints,
3e43a32a
MS
20720 _("macro definition contains spaces "
20721 "in formal argument list:\n`%s'"),
4d3c2250 20722 body);
2e276125
JB
20723
20724 while (*p == ' ')
20725 p++;
20726 }
20727
20728 return p;
20729}
20730
20731
20732static void
20733parse_macro_definition (struct macro_source_file *file, int line,
20734 const char *body)
20735{
20736 const char *p;
20737
20738 /* The body string takes one of two forms. For object-like macro
20739 definitions, it should be:
20740
20741 <macro name> " " <definition>
20742
20743 For function-like macro definitions, it should be:
20744
20745 <macro name> "() " <definition>
20746 or
20747 <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
20748
20749 Spaces may appear only where explicitly indicated, and in the
20750 <definition>.
20751
20752 The Dwarf 2 spec says that an object-like macro's name is always
20753 followed by a space, but versions of GCC around March 2002 omit
6e70227d 20754 the space when the macro's definition is the empty string.
2e276125
JB
20755
20756 The Dwarf 2 spec says that there should be no spaces between the
20757 formal arguments in a function-like macro's formal argument list,
20758 but versions of GCC around March 2002 include spaces after the
20759 commas. */
20760
20761
20762 /* Find the extent of the macro name. The macro name is terminated
20763 by either a space or null character (for an object-like macro) or
20764 an opening paren (for a function-like macro). */
20765 for (p = body; *p; p++)
20766 if (*p == ' ' || *p == '(')
20767 break;
20768
20769 if (*p == ' ' || *p == '\0')
20770 {
20771 /* It's an object-like macro. */
20772 int name_len = p - body;
20773 char *name = copy_string (body, name_len);
20774 const char *replacement;
20775
20776 if (*p == ' ')
20777 replacement = body + name_len + 1;
20778 else
20779 {
4d3c2250 20780 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
20781 replacement = body + name_len;
20782 }
6e70227d 20783
2e276125
JB
20784 macro_define_object (file, line, name, replacement);
20785
20786 xfree (name);
20787 }
20788 else if (*p == '(')
20789 {
20790 /* It's a function-like macro. */
20791 char *name = copy_string (body, p - body);
20792 int argc = 0;
20793 int argv_size = 1;
20794 char **argv = xmalloc (argv_size * sizeof (*argv));
20795
20796 p++;
20797
20798 p = consume_improper_spaces (p, body);
20799
20800 /* Parse the formal argument list. */
20801 while (*p && *p != ')')
20802 {
20803 /* Find the extent of the current argument name. */
20804 const char *arg_start = p;
20805
20806 while (*p && *p != ',' && *p != ')' && *p != ' ')
20807 p++;
20808
20809 if (! *p || p == arg_start)
4d3c2250 20810 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
20811 else
20812 {
20813 /* Make sure argv has room for the new argument. */
20814 if (argc >= argv_size)
20815 {
20816 argv_size *= 2;
20817 argv = xrealloc (argv, argv_size * sizeof (*argv));
20818 }
20819
20820 argv[argc++] = copy_string (arg_start, p - arg_start);
20821 }
20822
20823 p = consume_improper_spaces (p, body);
20824
20825 /* Consume the comma, if present. */
20826 if (*p == ',')
20827 {
20828 p++;
20829
20830 p = consume_improper_spaces (p, body);
20831 }
20832 }
20833
20834 if (*p == ')')
20835 {
20836 p++;
20837
20838 if (*p == ' ')
20839 /* Perfectly formed definition, no complaints. */
20840 macro_define_function (file, line, name,
6e70227d 20841 argc, (const char **) argv,
2e276125
JB
20842 p + 1);
20843 else if (*p == '\0')
20844 {
20845 /* Complain, but do define it. */
4d3c2250 20846 dwarf2_macro_malformed_definition_complaint (body);
2e276125 20847 macro_define_function (file, line, name,
6e70227d 20848 argc, (const char **) argv,
2e276125
JB
20849 p);
20850 }
20851 else
20852 /* Just complain. */
4d3c2250 20853 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
20854 }
20855 else
20856 /* Just complain. */
4d3c2250 20857 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
20858
20859 xfree (name);
20860 {
20861 int i;
20862
20863 for (i = 0; i < argc; i++)
20864 xfree (argv[i]);
20865 }
20866 xfree (argv);
20867 }
20868 else
4d3c2250 20869 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
20870}
20871
cf2c3c16
TT
20872/* Skip some bytes from BYTES according to the form given in FORM.
20873 Returns the new pointer. */
2e276125 20874
d521ce57
TT
20875static const gdb_byte *
20876skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
cf2c3c16
TT
20877 enum dwarf_form form,
20878 unsigned int offset_size,
20879 struct dwarf2_section_info *section)
2e276125 20880{
cf2c3c16 20881 unsigned int bytes_read;
2e276125 20882
cf2c3c16 20883 switch (form)
2e276125 20884 {
cf2c3c16
TT
20885 case DW_FORM_data1:
20886 case DW_FORM_flag:
20887 ++bytes;
20888 break;
20889
20890 case DW_FORM_data2:
20891 bytes += 2;
20892 break;
20893
20894 case DW_FORM_data4:
20895 bytes += 4;
20896 break;
20897
20898 case DW_FORM_data8:
20899 bytes += 8;
20900 break;
20901
20902 case DW_FORM_string:
20903 read_direct_string (abfd, bytes, &bytes_read);
20904 bytes += bytes_read;
20905 break;
20906
20907 case DW_FORM_sec_offset:
20908 case DW_FORM_strp:
36586728 20909 case DW_FORM_GNU_strp_alt:
cf2c3c16
TT
20910 bytes += offset_size;
20911 break;
20912
20913 case DW_FORM_block:
20914 bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
20915 bytes += bytes_read;
20916 break;
20917
20918 case DW_FORM_block1:
20919 bytes += 1 + read_1_byte (abfd, bytes);
20920 break;
20921 case DW_FORM_block2:
20922 bytes += 2 + read_2_bytes (abfd, bytes);
20923 break;
20924 case DW_FORM_block4:
20925 bytes += 4 + read_4_bytes (abfd, bytes);
20926 break;
20927
20928 case DW_FORM_sdata:
20929 case DW_FORM_udata:
3019eac3
DE
20930 case DW_FORM_GNU_addr_index:
20931 case DW_FORM_GNU_str_index:
d521ce57 20932 bytes = gdb_skip_leb128 (bytes, buffer_end);
f664829e
DE
20933 if (bytes == NULL)
20934 {
20935 dwarf2_section_buffer_overflow_complaint (section);
20936 return NULL;
20937 }
cf2c3c16
TT
20938 break;
20939
20940 default:
20941 {
20942 complain:
20943 complaint (&symfile_complaints,
20944 _("invalid form 0x%x in `%s'"),
a32a8923 20945 form, get_section_name (section));
cf2c3c16
TT
20946 return NULL;
20947 }
2e276125
JB
20948 }
20949
cf2c3c16
TT
20950 return bytes;
20951}
757a13d0 20952
cf2c3c16
TT
20953/* A helper for dwarf_decode_macros that handles skipping an unknown
20954 opcode. Returns an updated pointer to the macro data buffer; or,
20955 on error, issues a complaint and returns NULL. */
757a13d0 20956
d521ce57 20957static const gdb_byte *
cf2c3c16 20958skip_unknown_opcode (unsigned int opcode,
d521ce57
TT
20959 const gdb_byte **opcode_definitions,
20960 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
cf2c3c16
TT
20961 bfd *abfd,
20962 unsigned int offset_size,
20963 struct dwarf2_section_info *section)
20964{
20965 unsigned int bytes_read, i;
20966 unsigned long arg;
d521ce57 20967 const gdb_byte *defn;
2e276125 20968
cf2c3c16 20969 if (opcode_definitions[opcode] == NULL)
2e276125 20970 {
cf2c3c16
TT
20971 complaint (&symfile_complaints,
20972 _("unrecognized DW_MACFINO opcode 0x%x"),
20973 opcode);
20974 return NULL;
20975 }
2e276125 20976
cf2c3c16
TT
20977 defn = opcode_definitions[opcode];
20978 arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
20979 defn += bytes_read;
2e276125 20980
cf2c3c16
TT
20981 for (i = 0; i < arg; ++i)
20982 {
f664829e
DE
20983 mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end, defn[i], offset_size,
20984 section);
cf2c3c16
TT
20985 if (mac_ptr == NULL)
20986 {
20987 /* skip_form_bytes already issued the complaint. */
20988 return NULL;
20989 }
20990 }
757a13d0 20991
cf2c3c16
TT
20992 return mac_ptr;
20993}
757a13d0 20994
cf2c3c16
TT
20995/* A helper function which parses the header of a macro section.
20996 If the macro section is the extended (for now called "GNU") type,
20997 then this updates *OFFSET_SIZE. Returns a pointer to just after
20998 the header, or issues a complaint and returns NULL on error. */
757a13d0 20999
d521ce57
TT
21000static const gdb_byte *
21001dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
cf2c3c16 21002 bfd *abfd,
d521ce57 21003 const gdb_byte *mac_ptr,
cf2c3c16
TT
21004 unsigned int *offset_size,
21005 int section_is_gnu)
21006{
21007 memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
757a13d0 21008
cf2c3c16
TT
21009 if (section_is_gnu)
21010 {
21011 unsigned int version, flags;
757a13d0 21012
cf2c3c16
TT
21013 version = read_2_bytes (abfd, mac_ptr);
21014 if (version != 4)
21015 {
21016 complaint (&symfile_complaints,
21017 _("unrecognized version `%d' in .debug_macro section"),
21018 version);
21019 return NULL;
21020 }
21021 mac_ptr += 2;
757a13d0 21022
cf2c3c16
TT
21023 flags = read_1_byte (abfd, mac_ptr);
21024 ++mac_ptr;
21025 *offset_size = (flags & 1) ? 8 : 4;
757a13d0 21026
cf2c3c16
TT
21027 if ((flags & 2) != 0)
21028 /* We don't need the line table offset. */
21029 mac_ptr += *offset_size;
757a13d0 21030
cf2c3c16
TT
21031 /* Vendor opcode descriptions. */
21032 if ((flags & 4) != 0)
21033 {
21034 unsigned int i, count;
757a13d0 21035
cf2c3c16
TT
21036 count = read_1_byte (abfd, mac_ptr);
21037 ++mac_ptr;
21038 for (i = 0; i < count; ++i)
21039 {
21040 unsigned int opcode, bytes_read;
21041 unsigned long arg;
21042
21043 opcode = read_1_byte (abfd, mac_ptr);
21044 ++mac_ptr;
21045 opcode_definitions[opcode] = mac_ptr;
21046 arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21047 mac_ptr += bytes_read;
21048 mac_ptr += arg;
21049 }
757a13d0 21050 }
cf2c3c16 21051 }
757a13d0 21052
cf2c3c16
TT
21053 return mac_ptr;
21054}
757a13d0 21055
cf2c3c16 21056/* A helper for dwarf_decode_macros that handles the GNU extensions,
8fc3fc34 21057 including DW_MACRO_GNU_transparent_include. */
cf2c3c16
TT
21058
21059static void
d521ce57
TT
21060dwarf_decode_macro_bytes (bfd *abfd,
21061 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
cf2c3c16 21062 struct macro_source_file *current_file,
43f3e411 21063 struct line_header *lh,
cf2c3c16 21064 struct dwarf2_section_info *section,
36586728 21065 int section_is_gnu, int section_is_dwz,
cf2c3c16 21066 unsigned int offset_size,
8fc3fc34 21067 htab_t include_hash)
cf2c3c16 21068{
4d663531 21069 struct objfile *objfile = dwarf2_per_objfile->objfile;
cf2c3c16
TT
21070 enum dwarf_macro_record_type macinfo_type;
21071 int at_commandline;
d521ce57 21072 const gdb_byte *opcode_definitions[256];
757a13d0 21073
cf2c3c16
TT
21074 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21075 &offset_size, section_is_gnu);
21076 if (mac_ptr == NULL)
21077 {
21078 /* We already issued a complaint. */
21079 return;
21080 }
757a13d0
JK
21081
21082 /* Determines if GDB is still before first DW_MACINFO_start_file. If true
21083 GDB is still reading the definitions from command line. First
21084 DW_MACINFO_start_file will need to be ignored as it was already executed
21085 to create CURRENT_FILE for the main source holding also the command line
21086 definitions. On first met DW_MACINFO_start_file this flag is reset to
21087 normally execute all the remaining DW_MACINFO_start_file macinfos. */
21088
21089 at_commandline = 1;
21090
21091 do
21092 {
21093 /* Do we at least have room for a macinfo type byte? */
21094 if (mac_ptr >= mac_end)
21095 {
f664829e 21096 dwarf2_section_buffer_overflow_complaint (section);
757a13d0
JK
21097 break;
21098 }
21099
21100 macinfo_type = read_1_byte (abfd, mac_ptr);
21101 mac_ptr++;
21102
cf2c3c16
TT
21103 /* Note that we rely on the fact that the corresponding GNU and
21104 DWARF constants are the same. */
757a13d0
JK
21105 switch (macinfo_type)
21106 {
21107 /* A zero macinfo type indicates the end of the macro
21108 information. */
21109 case 0:
21110 break;
2e276125 21111
cf2c3c16
TT
21112 case DW_MACRO_GNU_define:
21113 case DW_MACRO_GNU_undef:
21114 case DW_MACRO_GNU_define_indirect:
21115 case DW_MACRO_GNU_undef_indirect:
36586728
TT
21116 case DW_MACRO_GNU_define_indirect_alt:
21117 case DW_MACRO_GNU_undef_indirect_alt:
2e276125 21118 {
891d2f0b 21119 unsigned int bytes_read;
2e276125 21120 int line;
d521ce57 21121 const char *body;
cf2c3c16 21122 int is_define;
2e276125 21123
cf2c3c16
TT
21124 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21125 mac_ptr += bytes_read;
21126
21127 if (macinfo_type == DW_MACRO_GNU_define
21128 || macinfo_type == DW_MACRO_GNU_undef)
21129 {
21130 body = read_direct_string (abfd, mac_ptr, &bytes_read);
21131 mac_ptr += bytes_read;
21132 }
21133 else
21134 {
21135 LONGEST str_offset;
21136
21137 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
21138 mac_ptr += offset_size;
2e276125 21139
36586728 21140 if (macinfo_type == DW_MACRO_GNU_define_indirect_alt
f7a35f02
TT
21141 || macinfo_type == DW_MACRO_GNU_undef_indirect_alt
21142 || section_is_dwz)
36586728
TT
21143 {
21144 struct dwz_file *dwz = dwarf2_get_dwz_file ();
21145
21146 body = read_indirect_string_from_dwz (dwz, str_offset);
21147 }
21148 else
21149 body = read_indirect_string_at_offset (abfd, str_offset);
cf2c3c16
TT
21150 }
21151
21152 is_define = (macinfo_type == DW_MACRO_GNU_define
36586728
TT
21153 || macinfo_type == DW_MACRO_GNU_define_indirect
21154 || macinfo_type == DW_MACRO_GNU_define_indirect_alt);
2e276125 21155 if (! current_file)
757a13d0
JK
21156 {
21157 /* DWARF violation as no main source is present. */
21158 complaint (&symfile_complaints,
21159 _("debug info with no main source gives macro %s "
21160 "on line %d: %s"),
cf2c3c16
TT
21161 is_define ? _("definition") : _("undefinition"),
21162 line, body);
757a13d0
JK
21163 break;
21164 }
3e43a32a
MS
21165 if ((line == 0 && !at_commandline)
21166 || (line != 0 && at_commandline))
4d3c2250 21167 complaint (&symfile_complaints,
757a13d0
JK
21168 _("debug info gives %s macro %s with %s line %d: %s"),
21169 at_commandline ? _("command-line") : _("in-file"),
cf2c3c16 21170 is_define ? _("definition") : _("undefinition"),
757a13d0
JK
21171 line == 0 ? _("zero") : _("non-zero"), line, body);
21172
cf2c3c16 21173 if (is_define)
757a13d0 21174 parse_macro_definition (current_file, line, body);
cf2c3c16
TT
21175 else
21176 {
21177 gdb_assert (macinfo_type == DW_MACRO_GNU_undef
36586728
TT
21178 || macinfo_type == DW_MACRO_GNU_undef_indirect
21179 || macinfo_type == DW_MACRO_GNU_undef_indirect_alt);
cf2c3c16
TT
21180 macro_undef (current_file, line, body);
21181 }
2e276125
JB
21182 }
21183 break;
21184
cf2c3c16 21185 case DW_MACRO_GNU_start_file:
2e276125 21186 {
891d2f0b 21187 unsigned int bytes_read;
2e276125
JB
21188 int line, file;
21189
21190 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21191 mac_ptr += bytes_read;
21192 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21193 mac_ptr += bytes_read;
21194
3e43a32a
MS
21195 if ((line == 0 && !at_commandline)
21196 || (line != 0 && at_commandline))
757a13d0
JK
21197 complaint (&symfile_complaints,
21198 _("debug info gives source %d included "
21199 "from %s at %s line %d"),
21200 file, at_commandline ? _("command-line") : _("file"),
21201 line == 0 ? _("zero") : _("non-zero"), line);
21202
21203 if (at_commandline)
21204 {
cf2c3c16
TT
21205 /* This DW_MACRO_GNU_start_file was executed in the
21206 pass one. */
757a13d0
JK
21207 at_commandline = 0;
21208 }
21209 else
43f3e411 21210 current_file = macro_start_file (file, line, current_file, lh);
2e276125
JB
21211 }
21212 break;
21213
cf2c3c16 21214 case DW_MACRO_GNU_end_file:
2e276125 21215 if (! current_file)
4d3c2250 21216 complaint (&symfile_complaints,
3e43a32a
MS
21217 _("macro debug info has an unmatched "
21218 "`close_file' directive"));
2e276125
JB
21219 else
21220 {
21221 current_file = current_file->included_by;
21222 if (! current_file)
21223 {
cf2c3c16 21224 enum dwarf_macro_record_type next_type;
2e276125
JB
21225
21226 /* GCC circa March 2002 doesn't produce the zero
21227 type byte marking the end of the compilation
21228 unit. Complain if it's not there, but exit no
21229 matter what. */
21230
21231 /* Do we at least have room for a macinfo type byte? */
21232 if (mac_ptr >= mac_end)
21233 {
f664829e 21234 dwarf2_section_buffer_overflow_complaint (section);
2e276125
JB
21235 return;
21236 }
21237
21238 /* We don't increment mac_ptr here, so this is just
21239 a look-ahead. */
21240 next_type = read_1_byte (abfd, mac_ptr);
21241 if (next_type != 0)
4d3c2250 21242 complaint (&symfile_complaints,
3e43a32a
MS
21243 _("no terminating 0-type entry for "
21244 "macros in `.debug_macinfo' section"));
2e276125
JB
21245
21246 return;
21247 }
21248 }
21249 break;
21250
cf2c3c16 21251 case DW_MACRO_GNU_transparent_include:
36586728 21252 case DW_MACRO_GNU_transparent_include_alt:
cf2c3c16
TT
21253 {
21254 LONGEST offset;
8fc3fc34 21255 void **slot;
a036ba48
TT
21256 bfd *include_bfd = abfd;
21257 struct dwarf2_section_info *include_section = section;
21258 struct dwarf2_section_info alt_section;
d521ce57 21259 const gdb_byte *include_mac_end = mac_end;
a036ba48 21260 int is_dwz = section_is_dwz;
d521ce57 21261 const gdb_byte *new_mac_ptr;
cf2c3c16
TT
21262
21263 offset = read_offset_1 (abfd, mac_ptr, offset_size);
21264 mac_ptr += offset_size;
21265
a036ba48
TT
21266 if (macinfo_type == DW_MACRO_GNU_transparent_include_alt)
21267 {
21268 struct dwz_file *dwz = dwarf2_get_dwz_file ();
21269
4d663531 21270 dwarf2_read_section (objfile, &dwz->macro);
a036ba48 21271
a036ba48 21272 include_section = &dwz->macro;
a32a8923 21273 include_bfd = get_section_bfd_owner (include_section);
a036ba48
TT
21274 include_mac_end = dwz->macro.buffer + dwz->macro.size;
21275 is_dwz = 1;
21276 }
21277
21278 new_mac_ptr = include_section->buffer + offset;
21279 slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
21280
8fc3fc34
TT
21281 if (*slot != NULL)
21282 {
21283 /* This has actually happened; see
21284 http://sourceware.org/bugzilla/show_bug.cgi?id=13568. */
21285 complaint (&symfile_complaints,
21286 _("recursive DW_MACRO_GNU_transparent_include in "
21287 ".debug_macro section"));
21288 }
21289 else
21290 {
d521ce57 21291 *slot = (void *) new_mac_ptr;
36586728 21292
a036ba48 21293 dwarf_decode_macro_bytes (include_bfd, new_mac_ptr,
43f3e411 21294 include_mac_end, current_file, lh,
36586728 21295 section, section_is_gnu, is_dwz,
4d663531 21296 offset_size, include_hash);
8fc3fc34 21297
d521ce57 21298 htab_remove_elt (include_hash, (void *) new_mac_ptr);
8fc3fc34 21299 }
cf2c3c16
TT
21300 }
21301 break;
21302
2e276125 21303 case DW_MACINFO_vendor_ext:
cf2c3c16
TT
21304 if (!section_is_gnu)
21305 {
21306 unsigned int bytes_read;
21307 int constant;
2e276125 21308
cf2c3c16
TT
21309 constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21310 mac_ptr += bytes_read;
21311 read_direct_string (abfd, mac_ptr, &bytes_read);
21312 mac_ptr += bytes_read;
2e276125 21313
cf2c3c16
TT
21314 /* We don't recognize any vendor extensions. */
21315 break;
21316 }
21317 /* FALLTHROUGH */
21318
21319 default:
21320 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
f664829e 21321 mac_ptr, mac_end, abfd, offset_size,
cf2c3c16
TT
21322 section);
21323 if (mac_ptr == NULL)
21324 return;
21325 break;
2e276125 21326 }
757a13d0 21327 } while (macinfo_type != 0);
2e276125 21328}
8e19ed76 21329
cf2c3c16 21330static void
09262596 21331dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
43f3e411 21332 int section_is_gnu)
cf2c3c16 21333{
bb5ed363 21334 struct objfile *objfile = dwarf2_per_objfile->objfile;
09262596
DE
21335 struct line_header *lh = cu->line_header;
21336 bfd *abfd;
d521ce57 21337 const gdb_byte *mac_ptr, *mac_end;
cf2c3c16
TT
21338 struct macro_source_file *current_file = 0;
21339 enum dwarf_macro_record_type macinfo_type;
21340 unsigned int offset_size = cu->header.offset_size;
d521ce57 21341 const gdb_byte *opcode_definitions[256];
8fc3fc34
TT
21342 struct cleanup *cleanup;
21343 htab_t include_hash;
21344 void **slot;
09262596
DE
21345 struct dwarf2_section_info *section;
21346 const char *section_name;
21347
21348 if (cu->dwo_unit != NULL)
21349 {
21350 if (section_is_gnu)
21351 {
21352 section = &cu->dwo_unit->dwo_file->sections.macro;
21353 section_name = ".debug_macro.dwo";
21354 }
21355 else
21356 {
21357 section = &cu->dwo_unit->dwo_file->sections.macinfo;
21358 section_name = ".debug_macinfo.dwo";
21359 }
21360 }
21361 else
21362 {
21363 if (section_is_gnu)
21364 {
21365 section = &dwarf2_per_objfile->macro;
21366 section_name = ".debug_macro";
21367 }
21368 else
21369 {
21370 section = &dwarf2_per_objfile->macinfo;
21371 section_name = ".debug_macinfo";
21372 }
21373 }
cf2c3c16 21374
bb5ed363 21375 dwarf2_read_section (objfile, section);
cf2c3c16
TT
21376 if (section->buffer == NULL)
21377 {
fceca515 21378 complaint (&symfile_complaints, _("missing %s section"), section_name);
cf2c3c16
TT
21379 return;
21380 }
a32a8923 21381 abfd = get_section_bfd_owner (section);
cf2c3c16
TT
21382
21383 /* First pass: Find the name of the base filename.
21384 This filename is needed in order to process all macros whose definition
21385 (or undefinition) comes from the command line. These macros are defined
21386 before the first DW_MACINFO_start_file entry, and yet still need to be
21387 associated to the base file.
21388
21389 To determine the base file name, we scan the macro definitions until we
21390 reach the first DW_MACINFO_start_file entry. We then initialize
21391 CURRENT_FILE accordingly so that any macro definition found before the
21392 first DW_MACINFO_start_file can still be associated to the base file. */
21393
21394 mac_ptr = section->buffer + offset;
21395 mac_end = section->buffer + section->size;
21396
21397 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21398 &offset_size, section_is_gnu);
21399 if (mac_ptr == NULL)
21400 {
21401 /* We already issued a complaint. */
21402 return;
21403 }
21404
21405 do
21406 {
21407 /* Do we at least have room for a macinfo type byte? */
21408 if (mac_ptr >= mac_end)
21409 {
21410 /* Complaint is printed during the second pass as GDB will probably
21411 stop the first pass earlier upon finding
21412 DW_MACINFO_start_file. */
21413 break;
21414 }
21415
21416 macinfo_type = read_1_byte (abfd, mac_ptr);
21417 mac_ptr++;
21418
21419 /* Note that we rely on the fact that the corresponding GNU and
21420 DWARF constants are the same. */
21421 switch (macinfo_type)
21422 {
21423 /* A zero macinfo type indicates the end of the macro
21424 information. */
21425 case 0:
21426 break;
21427
21428 case DW_MACRO_GNU_define:
21429 case DW_MACRO_GNU_undef:
21430 /* Only skip the data by MAC_PTR. */
21431 {
21432 unsigned int bytes_read;
21433
21434 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21435 mac_ptr += bytes_read;
21436 read_direct_string (abfd, mac_ptr, &bytes_read);
21437 mac_ptr += bytes_read;
21438 }
21439 break;
21440
21441 case DW_MACRO_GNU_start_file:
21442 {
21443 unsigned int bytes_read;
21444 int line, file;
21445
21446 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21447 mac_ptr += bytes_read;
21448 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21449 mac_ptr += bytes_read;
21450
43f3e411 21451 current_file = macro_start_file (file, line, current_file, lh);
cf2c3c16
TT
21452 }
21453 break;
21454
21455 case DW_MACRO_GNU_end_file:
21456 /* No data to skip by MAC_PTR. */
21457 break;
21458
21459 case DW_MACRO_GNU_define_indirect:
21460 case DW_MACRO_GNU_undef_indirect:
f7a35f02
TT
21461 case DW_MACRO_GNU_define_indirect_alt:
21462 case DW_MACRO_GNU_undef_indirect_alt:
cf2c3c16
TT
21463 {
21464 unsigned int bytes_read;
21465
21466 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21467 mac_ptr += bytes_read;
21468 mac_ptr += offset_size;
21469 }
21470 break;
21471
21472 case DW_MACRO_GNU_transparent_include:
f7a35f02 21473 case DW_MACRO_GNU_transparent_include_alt:
cf2c3c16
TT
21474 /* Note that, according to the spec, a transparent include
21475 chain cannot call DW_MACRO_GNU_start_file. So, we can just
21476 skip this opcode. */
21477 mac_ptr += offset_size;
21478 break;
21479
21480 case DW_MACINFO_vendor_ext:
21481 /* Only skip the data by MAC_PTR. */
21482 if (!section_is_gnu)
21483 {
21484 unsigned int bytes_read;
21485
21486 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21487 mac_ptr += bytes_read;
21488 read_direct_string (abfd, mac_ptr, &bytes_read);
21489 mac_ptr += bytes_read;
21490 }
21491 /* FALLTHROUGH */
21492
21493 default:
21494 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
f664829e 21495 mac_ptr, mac_end, abfd, offset_size,
cf2c3c16
TT
21496 section);
21497 if (mac_ptr == NULL)
21498 return;
21499 break;
21500 }
21501 } while (macinfo_type != 0 && current_file == NULL);
21502
21503 /* Second pass: Process all entries.
21504
21505 Use the AT_COMMAND_LINE flag to determine whether we are still processing
21506 command-line macro definitions/undefinitions. This flag is unset when we
21507 reach the first DW_MACINFO_start_file entry. */
21508
8fc3fc34
TT
21509 include_hash = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
21510 NULL, xcalloc, xfree);
21511 cleanup = make_cleanup_htab_delete (include_hash);
21512 mac_ptr = section->buffer + offset;
21513 slot = htab_find_slot (include_hash, mac_ptr, INSERT);
d521ce57 21514 *slot = (void *) mac_ptr;
8fc3fc34 21515 dwarf_decode_macro_bytes (abfd, mac_ptr, mac_end,
43f3e411 21516 current_file, lh, section,
4d663531 21517 section_is_gnu, 0, offset_size, include_hash);
8fc3fc34 21518 do_cleanups (cleanup);
cf2c3c16
TT
21519}
21520
8e19ed76 21521/* Check if the attribute's form is a DW_FORM_block*
0963b4bd 21522 if so return true else false. */
380bca97 21523
8e19ed76 21524static int
6e5a29e1 21525attr_form_is_block (const struct attribute *attr)
8e19ed76
PS
21526{
21527 return (attr == NULL ? 0 :
21528 attr->form == DW_FORM_block1
21529 || attr->form == DW_FORM_block2
21530 || attr->form == DW_FORM_block4
2dc7f7b3
TT
21531 || attr->form == DW_FORM_block
21532 || attr->form == DW_FORM_exprloc);
8e19ed76 21533}
4c2df51b 21534
c6a0999f
JB
21535/* Return non-zero if ATTR's value is a section offset --- classes
21536 lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
21537 You may use DW_UNSND (attr) to retrieve such offsets.
21538
21539 Section 7.5.4, "Attribute Encodings", explains that no attribute
21540 may have a value that belongs to more than one of these classes; it
21541 would be ambiguous if we did, because we use the same forms for all
21542 of them. */
380bca97 21543
3690dd37 21544static int
6e5a29e1 21545attr_form_is_section_offset (const struct attribute *attr)
3690dd37
JB
21546{
21547 return (attr->form == DW_FORM_data4
2dc7f7b3
TT
21548 || attr->form == DW_FORM_data8
21549 || attr->form == DW_FORM_sec_offset);
3690dd37
JB
21550}
21551
3690dd37
JB
21552/* Return non-zero if ATTR's value falls in the 'constant' class, or
21553 zero otherwise. When this function returns true, you can apply
21554 dwarf2_get_attr_constant_value to it.
21555
21556 However, note that for some attributes you must check
21557 attr_form_is_section_offset before using this test. DW_FORM_data4
21558 and DW_FORM_data8 are members of both the constant class, and of
21559 the classes that contain offsets into other debug sections
21560 (lineptr, loclistptr, macptr or rangelistptr). The DWARF spec says
21561 that, if an attribute's can be either a constant or one of the
21562 section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
21563 taken as section offsets, not constants. */
380bca97 21564
3690dd37 21565static int
6e5a29e1 21566attr_form_is_constant (const struct attribute *attr)
3690dd37
JB
21567{
21568 switch (attr->form)
21569 {
21570 case DW_FORM_sdata:
21571 case DW_FORM_udata:
21572 case DW_FORM_data1:
21573 case DW_FORM_data2:
21574 case DW_FORM_data4:
21575 case DW_FORM_data8:
21576 return 1;
21577 default:
21578 return 0;
21579 }
21580}
21581
7771576e
SA
21582
21583/* DW_ADDR is always stored already as sect_offset; despite for the forms
21584 besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file. */
21585
21586static int
6e5a29e1 21587attr_form_is_ref (const struct attribute *attr)
7771576e
SA
21588{
21589 switch (attr->form)
21590 {
21591 case DW_FORM_ref_addr:
21592 case DW_FORM_ref1:
21593 case DW_FORM_ref2:
21594 case DW_FORM_ref4:
21595 case DW_FORM_ref8:
21596 case DW_FORM_ref_udata:
21597 case DW_FORM_GNU_ref_alt:
21598 return 1;
21599 default:
21600 return 0;
21601 }
21602}
21603
3019eac3
DE
21604/* Return the .debug_loc section to use for CU.
21605 For DWO files use .debug_loc.dwo. */
21606
21607static struct dwarf2_section_info *
21608cu_debug_loc_section (struct dwarf2_cu *cu)
21609{
21610 if (cu->dwo_unit)
21611 return &cu->dwo_unit->dwo_file->sections.loc;
21612 return &dwarf2_per_objfile->loc;
21613}
21614
8cf6f0b1
TT
21615/* A helper function that fills in a dwarf2_loclist_baton. */
21616
21617static void
21618fill_in_loclist_baton (struct dwarf2_cu *cu,
21619 struct dwarf2_loclist_baton *baton,
ff39bb5e 21620 const struct attribute *attr)
8cf6f0b1 21621{
3019eac3
DE
21622 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
21623
21624 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
8cf6f0b1
TT
21625
21626 baton->per_cu = cu->per_cu;
21627 gdb_assert (baton->per_cu);
21628 /* We don't know how long the location list is, but make sure we
21629 don't run off the edge of the section. */
3019eac3
DE
21630 baton->size = section->size - DW_UNSND (attr);
21631 baton->data = section->buffer + DW_UNSND (attr);
8cf6f0b1 21632 baton->base_address = cu->base_address;
f664829e 21633 baton->from_dwo = cu->dwo_unit != NULL;
8cf6f0b1
TT
21634}
21635
4c2df51b 21636static void
ff39bb5e 21637dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
f1e6e072 21638 struct dwarf2_cu *cu, int is_block)
4c2df51b 21639{
bb5ed363 21640 struct objfile *objfile = dwarf2_per_objfile->objfile;
3019eac3 21641 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
bb5ed363 21642
3690dd37 21643 if (attr_form_is_section_offset (attr)
3019eac3 21644 /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
99bcc461
DJ
21645 the section. If so, fall through to the complaint in the
21646 other branch. */
3019eac3 21647 && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
4c2df51b 21648 {
0d53c4c4 21649 struct dwarf2_loclist_baton *baton;
4c2df51b 21650
bb5ed363 21651 baton = obstack_alloc (&objfile->objfile_obstack,
0d53c4c4 21652 sizeof (struct dwarf2_loclist_baton));
4c2df51b 21653
8cf6f0b1 21654 fill_in_loclist_baton (cu, baton, attr);
be391dca 21655
d00adf39 21656 if (cu->base_known == 0)
0d53c4c4 21657 complaint (&symfile_complaints,
3e43a32a
MS
21658 _("Location list used without "
21659 "specifying the CU base address."));
4c2df51b 21660
f1e6e072
TT
21661 SYMBOL_ACLASS_INDEX (sym) = (is_block
21662 ? dwarf2_loclist_block_index
21663 : dwarf2_loclist_index);
0d53c4c4
DJ
21664 SYMBOL_LOCATION_BATON (sym) = baton;
21665 }
21666 else
21667 {
21668 struct dwarf2_locexpr_baton *baton;
21669
bb5ed363 21670 baton = obstack_alloc (&objfile->objfile_obstack,
0d53c4c4 21671 sizeof (struct dwarf2_locexpr_baton));
ae0d2f24
UW
21672 baton->per_cu = cu->per_cu;
21673 gdb_assert (baton->per_cu);
0d53c4c4
DJ
21674
21675 if (attr_form_is_block (attr))
21676 {
21677 /* Note that we're just copying the block's data pointer
21678 here, not the actual data. We're still pointing into the
6502dd73
DJ
21679 info_buffer for SYM's objfile; right now we never release
21680 that buffer, but when we do clean up properly this may
21681 need to change. */
0d53c4c4
DJ
21682 baton->size = DW_BLOCK (attr)->size;
21683 baton->data = DW_BLOCK (attr)->data;
21684 }
21685 else
21686 {
21687 dwarf2_invalid_attrib_class_complaint ("location description",
21688 SYMBOL_NATURAL_NAME (sym));
21689 baton->size = 0;
0d53c4c4 21690 }
6e70227d 21691
f1e6e072
TT
21692 SYMBOL_ACLASS_INDEX (sym) = (is_block
21693 ? dwarf2_locexpr_block_index
21694 : dwarf2_locexpr_index);
0d53c4c4
DJ
21695 SYMBOL_LOCATION_BATON (sym) = baton;
21696 }
4c2df51b 21697}
6502dd73 21698
9aa1f1e3
TT
21699/* Return the OBJFILE associated with the compilation unit CU. If CU
21700 came from a separate debuginfo file, then the master objfile is
21701 returned. */
ae0d2f24
UW
21702
21703struct objfile *
21704dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
21705{
9291a0cd 21706 struct objfile *objfile = per_cu->objfile;
ae0d2f24
UW
21707
21708 /* Return the master objfile, so that we can report and look up the
21709 correct file containing this variable. */
21710 if (objfile->separate_debug_objfile_backlink)
21711 objfile = objfile->separate_debug_objfile_backlink;
21712
21713 return objfile;
21714}
21715
96408a79
SA
21716/* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
21717 (CU_HEADERP is unused in such case) or prepare a temporary copy at
21718 CU_HEADERP first. */
21719
21720static const struct comp_unit_head *
21721per_cu_header_read_in (struct comp_unit_head *cu_headerp,
21722 struct dwarf2_per_cu_data *per_cu)
21723{
d521ce57 21724 const gdb_byte *info_ptr;
96408a79
SA
21725
21726 if (per_cu->cu)
21727 return &per_cu->cu->header;
21728
8a0459fd 21729 info_ptr = per_cu->section->buffer + per_cu->offset.sect_off;
96408a79
SA
21730
21731 memset (cu_headerp, 0, sizeof (*cu_headerp));
0bc3a05c 21732 read_comp_unit_head (cu_headerp, info_ptr, per_cu->objfile->obfd);
96408a79
SA
21733
21734 return cu_headerp;
21735}
21736
ae0d2f24
UW
21737/* Return the address size given in the compilation unit header for CU. */
21738
98714339 21739int
ae0d2f24
UW
21740dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
21741{
96408a79
SA
21742 struct comp_unit_head cu_header_local;
21743 const struct comp_unit_head *cu_headerp;
c471e790 21744
96408a79
SA
21745 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21746
21747 return cu_headerp->addr_size;
ae0d2f24
UW
21748}
21749
9eae7c52
TT
21750/* Return the offset size given in the compilation unit header for CU. */
21751
21752int
21753dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
21754{
96408a79
SA
21755 struct comp_unit_head cu_header_local;
21756 const struct comp_unit_head *cu_headerp;
9c6c53f7 21757
96408a79
SA
21758 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21759
21760 return cu_headerp->offset_size;
21761}
21762
21763/* See its dwarf2loc.h declaration. */
21764
21765int
21766dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
21767{
21768 struct comp_unit_head cu_header_local;
21769 const struct comp_unit_head *cu_headerp;
21770
21771 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21772
21773 if (cu_headerp->version == 2)
21774 return cu_headerp->addr_size;
21775 else
21776 return cu_headerp->offset_size;
181cebd4
JK
21777}
21778
9aa1f1e3
TT
21779/* Return the text offset of the CU. The returned offset comes from
21780 this CU's objfile. If this objfile came from a separate debuginfo
21781 file, then the offset may be different from the corresponding
21782 offset in the parent objfile. */
21783
21784CORE_ADDR
21785dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
21786{
bb3fa9d0 21787 struct objfile *objfile = per_cu->objfile;
9aa1f1e3
TT
21788
21789 return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21790}
21791
348e048f
DE
21792/* Locate the .debug_info compilation unit from CU's objfile which contains
21793 the DIE at OFFSET. Raises an error on failure. */
ae038cb0
DJ
21794
21795static struct dwarf2_per_cu_data *
b64f50a1 21796dwarf2_find_containing_comp_unit (sect_offset offset,
36586728 21797 unsigned int offset_in_dwz,
ae038cb0
DJ
21798 struct objfile *objfile)
21799{
21800 struct dwarf2_per_cu_data *this_cu;
21801 int low, high;
36586728 21802 const sect_offset *cu_off;
ae038cb0 21803
ae038cb0
DJ
21804 low = 0;
21805 high = dwarf2_per_objfile->n_comp_units - 1;
21806 while (high > low)
21807 {
36586728 21808 struct dwarf2_per_cu_data *mid_cu;
ae038cb0 21809 int mid = low + (high - low) / 2;
9a619af0 21810
36586728
TT
21811 mid_cu = dwarf2_per_objfile->all_comp_units[mid];
21812 cu_off = &mid_cu->offset;
21813 if (mid_cu->is_dwz > offset_in_dwz
21814 || (mid_cu->is_dwz == offset_in_dwz
21815 && cu_off->sect_off >= offset.sect_off))
ae038cb0
DJ
21816 high = mid;
21817 else
21818 low = mid + 1;
21819 }
21820 gdb_assert (low == high);
36586728
TT
21821 this_cu = dwarf2_per_objfile->all_comp_units[low];
21822 cu_off = &this_cu->offset;
21823 if (this_cu->is_dwz != offset_in_dwz || cu_off->sect_off > offset.sect_off)
ae038cb0 21824 {
36586728 21825 if (low == 0 || this_cu->is_dwz != offset_in_dwz)
8a3fe4f8
AC
21826 error (_("Dwarf Error: could not find partial DIE containing "
21827 "offset 0x%lx [in module %s]"),
b64f50a1 21828 (long) offset.sect_off, bfd_get_filename (objfile->obfd));
10b3939b 21829
b64f50a1
JK
21830 gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset.sect_off
21831 <= offset.sect_off);
ae038cb0
DJ
21832 return dwarf2_per_objfile->all_comp_units[low-1];
21833 }
21834 else
21835 {
21836 this_cu = dwarf2_per_objfile->all_comp_units[low];
21837 if (low == dwarf2_per_objfile->n_comp_units - 1
b64f50a1
JK
21838 && offset.sect_off >= this_cu->offset.sect_off + this_cu->length)
21839 error (_("invalid dwarf2 offset %u"), offset.sect_off);
21840 gdb_assert (offset.sect_off < this_cu->offset.sect_off + this_cu->length);
ae038cb0
DJ
21841 return this_cu;
21842 }
21843}
21844
23745b47 21845/* Initialize dwarf2_cu CU, owned by PER_CU. */
93311388 21846
9816fde3 21847static void
23745b47 21848init_one_comp_unit (struct dwarf2_cu *cu, struct dwarf2_per_cu_data *per_cu)
93311388 21849{
9816fde3 21850 memset (cu, 0, sizeof (*cu));
23745b47
DE
21851 per_cu->cu = cu;
21852 cu->per_cu = per_cu;
21853 cu->objfile = per_cu->objfile;
93311388 21854 obstack_init (&cu->comp_unit_obstack);
9816fde3
JK
21855}
21856
21857/* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE. */
21858
21859static void
95554aad
TT
21860prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
21861 enum language pretend_language)
9816fde3
JK
21862{
21863 struct attribute *attr;
21864
21865 /* Set the language we're debugging. */
21866 attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
21867 if (attr)
21868 set_cu_language (DW_UNSND (attr), cu);
21869 else
9cded63f 21870 {
95554aad 21871 cu->language = pretend_language;
9cded63f
TT
21872 cu->language_defn = language_def (cu->language);
21873 }
dee91e82
DE
21874
21875 attr = dwarf2_attr (comp_unit_die, DW_AT_producer, cu);
21876 if (attr)
21877 cu->producer = DW_STRING (attr);
93311388
DE
21878}
21879
ae038cb0
DJ
21880/* Release one cached compilation unit, CU. We unlink it from the tree
21881 of compilation units, but we don't remove it from the read_in_chain;
93311388
DE
21882 the caller is responsible for that.
21883 NOTE: DATA is a void * because this function is also used as a
21884 cleanup routine. */
ae038cb0
DJ
21885
21886static void
68dc6402 21887free_heap_comp_unit (void *data)
ae038cb0
DJ
21888{
21889 struct dwarf2_cu *cu = data;
21890
23745b47
DE
21891 gdb_assert (cu->per_cu != NULL);
21892 cu->per_cu->cu = NULL;
ae038cb0
DJ
21893 cu->per_cu = NULL;
21894
21895 obstack_free (&cu->comp_unit_obstack, NULL);
21896
21897 xfree (cu);
21898}
21899
72bf9492 21900/* This cleanup function is passed the address of a dwarf2_cu on the stack
ae038cb0 21901 when we're finished with it. We can't free the pointer itself, but be
dee91e82 21902 sure to unlink it from the cache. Also release any associated storage. */
72bf9492
DJ
21903
21904static void
21905free_stack_comp_unit (void *data)
21906{
21907 struct dwarf2_cu *cu = data;
21908
23745b47
DE
21909 gdb_assert (cu->per_cu != NULL);
21910 cu->per_cu->cu = NULL;
21911 cu->per_cu = NULL;
21912
72bf9492
DJ
21913 obstack_free (&cu->comp_unit_obstack, NULL);
21914 cu->partial_dies = NULL;
ae038cb0
DJ
21915}
21916
21917/* Free all cached compilation units. */
21918
21919static void
21920free_cached_comp_units (void *data)
21921{
21922 struct dwarf2_per_cu_data *per_cu, **last_chain;
21923
21924 per_cu = dwarf2_per_objfile->read_in_chain;
21925 last_chain = &dwarf2_per_objfile->read_in_chain;
21926 while (per_cu != NULL)
21927 {
21928 struct dwarf2_per_cu_data *next_cu;
21929
21930 next_cu = per_cu->cu->read_in_chain;
21931
68dc6402 21932 free_heap_comp_unit (per_cu->cu);
ae038cb0
DJ
21933 *last_chain = next_cu;
21934
21935 per_cu = next_cu;
21936 }
21937}
21938
21939/* Increase the age counter on each cached compilation unit, and free
21940 any that are too old. */
21941
21942static void
21943age_cached_comp_units (void)
21944{
21945 struct dwarf2_per_cu_data *per_cu, **last_chain;
21946
21947 dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
21948 per_cu = dwarf2_per_objfile->read_in_chain;
21949 while (per_cu != NULL)
21950 {
21951 per_cu->cu->last_used ++;
21952 if (per_cu->cu->last_used <= dwarf2_max_cache_age)
21953 dwarf2_mark (per_cu->cu);
21954 per_cu = per_cu->cu->read_in_chain;
21955 }
21956
21957 per_cu = dwarf2_per_objfile->read_in_chain;
21958 last_chain = &dwarf2_per_objfile->read_in_chain;
21959 while (per_cu != NULL)
21960 {
21961 struct dwarf2_per_cu_data *next_cu;
21962
21963 next_cu = per_cu->cu->read_in_chain;
21964
21965 if (!per_cu->cu->mark)
21966 {
68dc6402 21967 free_heap_comp_unit (per_cu->cu);
ae038cb0
DJ
21968 *last_chain = next_cu;
21969 }
21970 else
21971 last_chain = &per_cu->cu->read_in_chain;
21972
21973 per_cu = next_cu;
21974 }
21975}
21976
21977/* Remove a single compilation unit from the cache. */
21978
21979static void
dee91e82 21980free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
ae038cb0
DJ
21981{
21982 struct dwarf2_per_cu_data *per_cu, **last_chain;
21983
21984 per_cu = dwarf2_per_objfile->read_in_chain;
21985 last_chain = &dwarf2_per_objfile->read_in_chain;
21986 while (per_cu != NULL)
21987 {
21988 struct dwarf2_per_cu_data *next_cu;
21989
21990 next_cu = per_cu->cu->read_in_chain;
21991
dee91e82 21992 if (per_cu == target_per_cu)
ae038cb0 21993 {
68dc6402 21994 free_heap_comp_unit (per_cu->cu);
dee91e82 21995 per_cu->cu = NULL;
ae038cb0
DJ
21996 *last_chain = next_cu;
21997 break;
21998 }
21999 else
22000 last_chain = &per_cu->cu->read_in_chain;
22001
22002 per_cu = next_cu;
22003 }
22004}
22005
fe3e1990
DJ
22006/* Release all extra memory associated with OBJFILE. */
22007
22008void
22009dwarf2_free_objfile (struct objfile *objfile)
22010{
22011 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
22012
22013 if (dwarf2_per_objfile == NULL)
22014 return;
22015
22016 /* Cached DIE trees use xmalloc and the comp_unit_obstack. */
22017 free_cached_comp_units (NULL);
22018
7b9f3c50
DE
22019 if (dwarf2_per_objfile->quick_file_names_table)
22020 htab_delete (dwarf2_per_objfile->quick_file_names_table);
9291a0cd 22021
527f3840
JK
22022 if (dwarf2_per_objfile->line_header_hash)
22023 htab_delete (dwarf2_per_objfile->line_header_hash);
22024
fe3e1990
DJ
22025 /* Everything else should be on the objfile obstack. */
22026}
22027
dee91e82
DE
22028/* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
22029 We store these in a hash table separate from the DIEs, and preserve them
22030 when the DIEs are flushed out of cache.
22031
22032 The CU "per_cu" pointer is needed because offset alone is not enough to
3019eac3 22033 uniquely identify the type. A file may have multiple .debug_types sections,
c88ee1f0
DE
22034 or the type may come from a DWO file. Furthermore, while it's more logical
22035 to use per_cu->section+offset, with Fission the section with the data is in
22036 the DWO file but we don't know that section at the point we need it.
22037 We have to use something in dwarf2_per_cu_data (or the pointer to it)
22038 because we can enter the lookup routine, get_die_type_at_offset, from
22039 outside this file, and thus won't necessarily have PER_CU->cu.
22040 Fortunately, PER_CU is stable for the life of the objfile. */
1c379e20 22041
dee91e82 22042struct dwarf2_per_cu_offset_and_type
1c379e20 22043{
dee91e82 22044 const struct dwarf2_per_cu_data *per_cu;
b64f50a1 22045 sect_offset offset;
1c379e20
DJ
22046 struct type *type;
22047};
22048
dee91e82 22049/* Hash function for a dwarf2_per_cu_offset_and_type. */
1c379e20
DJ
22050
22051static hashval_t
dee91e82 22052per_cu_offset_and_type_hash (const void *item)
1c379e20 22053{
dee91e82 22054 const struct dwarf2_per_cu_offset_and_type *ofs = item;
9a619af0 22055
dee91e82 22056 return (uintptr_t) ofs->per_cu + ofs->offset.sect_off;
1c379e20
DJ
22057}
22058
dee91e82 22059/* Equality function for a dwarf2_per_cu_offset_and_type. */
1c379e20
DJ
22060
22061static int
dee91e82 22062per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
1c379e20 22063{
dee91e82
DE
22064 const struct dwarf2_per_cu_offset_and_type *ofs_lhs = item_lhs;
22065 const struct dwarf2_per_cu_offset_and_type *ofs_rhs = item_rhs;
9a619af0 22066
dee91e82
DE
22067 return (ofs_lhs->per_cu == ofs_rhs->per_cu
22068 && ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off);
1c379e20
DJ
22069}
22070
22071/* Set the type associated with DIE to TYPE. Save it in CU's hash
7e314c57
JK
22072 table if necessary. For convenience, return TYPE.
22073
22074 The DIEs reading must have careful ordering to:
22075 * Not cause infite loops trying to read in DIEs as a prerequisite for
22076 reading current DIE.
22077 * Not trying to dereference contents of still incompletely read in types
22078 while reading in other DIEs.
22079 * Enable referencing still incompletely read in types just by a pointer to
22080 the type without accessing its fields.
22081
22082 Therefore caller should follow these rules:
22083 * Try to fetch any prerequisite types we may need to build this DIE type
22084 before building the type and calling set_die_type.
e71ec853 22085 * After building type call set_die_type for current DIE as soon as
7e314c57
JK
22086 possible before fetching more types to complete the current type.
22087 * Make the type as complete as possible before fetching more types. */
1c379e20 22088
f792889a 22089static struct type *
1c379e20
DJ
22090set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
22091{
dee91e82 22092 struct dwarf2_per_cu_offset_and_type **slot, ofs;
673bfd45 22093 struct objfile *objfile = cu->objfile;
3cdcd0ce
JB
22094 struct attribute *attr;
22095 struct dynamic_prop prop;
1c379e20 22096
b4ba55a1
JB
22097 /* For Ada types, make sure that the gnat-specific data is always
22098 initialized (if not already set). There are a few types where
22099 we should not be doing so, because the type-specific area is
22100 already used to hold some other piece of info (eg: TYPE_CODE_FLT
22101 where the type-specific area is used to store the floatformat).
22102 But this is not a problem, because the gnat-specific information
22103 is actually not needed for these types. */
22104 if (need_gnat_info (cu)
22105 && TYPE_CODE (type) != TYPE_CODE_FUNC
22106 && TYPE_CODE (type) != TYPE_CODE_FLT
09e2d7c7
DE
22107 && TYPE_CODE (type) != TYPE_CODE_METHODPTR
22108 && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
22109 && TYPE_CODE (type) != TYPE_CODE_METHOD
b4ba55a1
JB
22110 && !HAVE_GNAT_AUX_INFO (type))
22111 INIT_GNAT_SPECIFIC (type);
22112
3cdcd0ce
JB
22113 /* Read DW_AT_data_location and set in type. */
22114 attr = dwarf2_attr (die, DW_AT_data_location, cu);
22115 if (attr_to_dynamic_prop (attr, die, cu, &prop))
93a8e227 22116 add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type, objfile);
3cdcd0ce 22117
dee91e82 22118 if (dwarf2_per_objfile->die_type_hash == NULL)
f792889a 22119 {
dee91e82
DE
22120 dwarf2_per_objfile->die_type_hash =
22121 htab_create_alloc_ex (127,
22122 per_cu_offset_and_type_hash,
22123 per_cu_offset_and_type_eq,
22124 NULL,
22125 &objfile->objfile_obstack,
22126 hashtab_obstack_allocate,
22127 dummy_obstack_deallocate);
f792889a 22128 }
1c379e20 22129
dee91e82 22130 ofs.per_cu = cu->per_cu;
1c379e20
DJ
22131 ofs.offset = die->offset;
22132 ofs.type = type;
dee91e82
DE
22133 slot = (struct dwarf2_per_cu_offset_and_type **)
22134 htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
7e314c57
JK
22135 if (*slot)
22136 complaint (&symfile_complaints,
22137 _("A problem internal to GDB: DIE 0x%x has type already set"),
b64f50a1 22138 die->offset.sect_off);
673bfd45 22139 *slot = obstack_alloc (&objfile->objfile_obstack, sizeof (**slot));
1c379e20 22140 **slot = ofs;
f792889a 22141 return type;
1c379e20
DJ
22142}
22143
02142a6c
DE
22144/* Look up the type for the die at OFFSET in PER_CU in die_type_hash,
22145 or return NULL if the die does not have a saved type. */
1c379e20
DJ
22146
22147static struct type *
b64f50a1 22148get_die_type_at_offset (sect_offset offset,
673bfd45 22149 struct dwarf2_per_cu_data *per_cu)
1c379e20 22150{
dee91e82 22151 struct dwarf2_per_cu_offset_and_type *slot, ofs;
f792889a 22152
dee91e82 22153 if (dwarf2_per_objfile->die_type_hash == NULL)
f792889a 22154 return NULL;
1c379e20 22155
dee91e82 22156 ofs.per_cu = per_cu;
673bfd45 22157 ofs.offset = offset;
dee91e82 22158 slot = htab_find (dwarf2_per_objfile->die_type_hash, &ofs);
1c379e20
DJ
22159 if (slot)
22160 return slot->type;
22161 else
22162 return NULL;
22163}
22164
02142a6c 22165/* Look up the type for DIE in CU in die_type_hash,
673bfd45
DE
22166 or return NULL if DIE does not have a saved type. */
22167
22168static struct type *
22169get_die_type (struct die_info *die, struct dwarf2_cu *cu)
22170{
22171 return get_die_type_at_offset (die->offset, cu->per_cu);
22172}
22173
10b3939b
DJ
22174/* Add a dependence relationship from CU to REF_PER_CU. */
22175
22176static void
22177dwarf2_add_dependence (struct dwarf2_cu *cu,
22178 struct dwarf2_per_cu_data *ref_per_cu)
22179{
22180 void **slot;
22181
22182 if (cu->dependencies == NULL)
22183 cu->dependencies
22184 = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
22185 NULL, &cu->comp_unit_obstack,
22186 hashtab_obstack_allocate,
22187 dummy_obstack_deallocate);
22188
22189 slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
22190 if (*slot == NULL)
22191 *slot = ref_per_cu;
22192}
1c379e20 22193
f504f079
DE
22194/* Subroutine of dwarf2_mark to pass to htab_traverse.
22195 Set the mark field in every compilation unit in the
ae038cb0
DJ
22196 cache that we must keep because we are keeping CU. */
22197
10b3939b
DJ
22198static int
22199dwarf2_mark_helper (void **slot, void *data)
22200{
22201 struct dwarf2_per_cu_data *per_cu;
22202
22203 per_cu = (struct dwarf2_per_cu_data *) *slot;
d07ed419
JK
22204
22205 /* cu->dependencies references may not yet have been ever read if QUIT aborts
22206 reading of the chain. As such dependencies remain valid it is not much
22207 useful to track and undo them during QUIT cleanups. */
22208 if (per_cu->cu == NULL)
22209 return 1;
22210
10b3939b
DJ
22211 if (per_cu->cu->mark)
22212 return 1;
22213 per_cu->cu->mark = 1;
22214
22215 if (per_cu->cu->dependencies != NULL)
22216 htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
22217
22218 return 1;
22219}
22220
f504f079
DE
22221/* Set the mark field in CU and in every other compilation unit in the
22222 cache that we must keep because we are keeping CU. */
22223
ae038cb0
DJ
22224static void
22225dwarf2_mark (struct dwarf2_cu *cu)
22226{
22227 if (cu->mark)
22228 return;
22229 cu->mark = 1;
10b3939b
DJ
22230 if (cu->dependencies != NULL)
22231 htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
ae038cb0
DJ
22232}
22233
22234static void
22235dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
22236{
22237 while (per_cu)
22238 {
22239 per_cu->cu->mark = 0;
22240 per_cu = per_cu->cu->read_in_chain;
22241 }
72bf9492
DJ
22242}
22243
72bf9492
DJ
22244/* Trivial hash function for partial_die_info: the hash value of a DIE
22245 is its offset in .debug_info for this objfile. */
22246
22247static hashval_t
22248partial_die_hash (const void *item)
22249{
22250 const struct partial_die_info *part_die = item;
9a619af0 22251
b64f50a1 22252 return part_die->offset.sect_off;
72bf9492
DJ
22253}
22254
22255/* Trivial comparison function for partial_die_info structures: two DIEs
22256 are equal if they have the same offset. */
22257
22258static int
22259partial_die_eq (const void *item_lhs, const void *item_rhs)
22260{
22261 const struct partial_die_info *part_die_lhs = item_lhs;
22262 const struct partial_die_info *part_die_rhs = item_rhs;
9a619af0 22263
b64f50a1 22264 return part_die_lhs->offset.sect_off == part_die_rhs->offset.sect_off;
72bf9492
DJ
22265}
22266
ae038cb0
DJ
22267static struct cmd_list_element *set_dwarf2_cmdlist;
22268static struct cmd_list_element *show_dwarf2_cmdlist;
22269
22270static void
22271set_dwarf2_cmd (char *args, int from_tty)
22272{
635c7e8a
TT
22273 help_list (set_dwarf2_cmdlist, "maintenance set dwarf2 ", all_commands,
22274 gdb_stdout);
ae038cb0
DJ
22275}
22276
22277static void
22278show_dwarf2_cmd (char *args, int from_tty)
6e70227d 22279{
ae038cb0
DJ
22280 cmd_show_list (show_dwarf2_cmdlist, from_tty, "");
22281}
22282
4bf44c1c 22283/* Free data associated with OBJFILE, if necessary. */
dce234bc
PP
22284
22285static void
c1bd65d0 22286dwarf2_per_objfile_free (struct objfile *objfile, void *d)
dce234bc
PP
22287{
22288 struct dwarf2_per_objfile *data = d;
8b70b953 22289 int ix;
8b70b953 22290
626f2d1c
TT
22291 /* Make sure we don't accidentally use dwarf2_per_objfile while
22292 cleaning up. */
22293 dwarf2_per_objfile = NULL;
22294
59b0c7c1
JB
22295 for (ix = 0; ix < data->n_comp_units; ++ix)
22296 VEC_free (dwarf2_per_cu_ptr, data->all_comp_units[ix]->imported_symtabs);
796a7ff8 22297
59b0c7c1 22298 for (ix = 0; ix < data->n_type_units; ++ix)
796a7ff8 22299 VEC_free (dwarf2_per_cu_ptr,
59b0c7c1
JB
22300 data->all_type_units[ix]->per_cu.imported_symtabs);
22301 xfree (data->all_type_units);
95554aad 22302
8b70b953 22303 VEC_free (dwarf2_section_info_def, data->types);
3019eac3
DE
22304
22305 if (data->dwo_files)
22306 free_dwo_files (data->dwo_files, objfile);
5c6fa7ab
DE
22307 if (data->dwp_file)
22308 gdb_bfd_unref (data->dwp_file->dbfd);
36586728
TT
22309
22310 if (data->dwz_file && data->dwz_file->dwz_bfd)
22311 gdb_bfd_unref (data->dwz_file->dwz_bfd);
9291a0cd
TT
22312}
22313
22314\f
ae2de4f8 22315/* The "save gdb-index" command. */
9291a0cd
TT
22316
22317/* The contents of the hash table we create when building the string
22318 table. */
22319struct strtab_entry
22320{
22321 offset_type offset;
22322 const char *str;
22323};
22324
559a7a62
JK
22325/* Hash function for a strtab_entry.
22326
22327 Function is used only during write_hash_table so no index format backward
22328 compatibility is needed. */
b89be57b 22329
9291a0cd
TT
22330static hashval_t
22331hash_strtab_entry (const void *e)
22332{
22333 const struct strtab_entry *entry = e;
559a7a62 22334 return mapped_index_string_hash (INT_MAX, entry->str);
9291a0cd
TT
22335}
22336
22337/* Equality function for a strtab_entry. */
b89be57b 22338
9291a0cd
TT
22339static int
22340eq_strtab_entry (const void *a, const void *b)
22341{
22342 const struct strtab_entry *ea = a;
22343 const struct strtab_entry *eb = b;
22344 return !strcmp (ea->str, eb->str);
22345}
22346
22347/* Create a strtab_entry hash table. */
b89be57b 22348
9291a0cd
TT
22349static htab_t
22350create_strtab (void)
22351{
22352 return htab_create_alloc (100, hash_strtab_entry, eq_strtab_entry,
22353 xfree, xcalloc, xfree);
22354}
22355
22356/* Add a string to the constant pool. Return the string's offset in
22357 host order. */
b89be57b 22358
9291a0cd
TT
22359static offset_type
22360add_string (htab_t table, struct obstack *cpool, const char *str)
22361{
22362 void **slot;
22363 struct strtab_entry entry;
22364 struct strtab_entry *result;
22365
22366 entry.str = str;
22367 slot = htab_find_slot (table, &entry, INSERT);
22368 if (*slot)
22369 result = *slot;
22370 else
22371 {
22372 result = XNEW (struct strtab_entry);
22373 result->offset = obstack_object_size (cpool);
22374 result->str = str;
22375 obstack_grow_str0 (cpool, str);
22376 *slot = result;
22377 }
22378 return result->offset;
22379}
22380
22381/* An entry in the symbol table. */
22382struct symtab_index_entry
22383{
22384 /* The name of the symbol. */
22385 const char *name;
22386 /* The offset of the name in the constant pool. */
22387 offset_type index_offset;
22388 /* A sorted vector of the indices of all the CUs that hold an object
22389 of this name. */
22390 VEC (offset_type) *cu_indices;
22391};
22392
22393/* The symbol table. This is a power-of-2-sized hash table. */
22394struct mapped_symtab
22395{
22396 offset_type n_elements;
22397 offset_type size;
22398 struct symtab_index_entry **data;
22399};
22400
22401/* Hash function for a symtab_index_entry. */
b89be57b 22402
9291a0cd
TT
22403static hashval_t
22404hash_symtab_entry (const void *e)
22405{
22406 const struct symtab_index_entry *entry = e;
22407 return iterative_hash (VEC_address (offset_type, entry->cu_indices),
22408 sizeof (offset_type) * VEC_length (offset_type,
22409 entry->cu_indices),
22410 0);
22411}
22412
22413/* Equality function for a symtab_index_entry. */
b89be57b 22414
9291a0cd
TT
22415static int
22416eq_symtab_entry (const void *a, const void *b)
22417{
22418 const struct symtab_index_entry *ea = a;
22419 const struct symtab_index_entry *eb = b;
22420 int len = VEC_length (offset_type, ea->cu_indices);
22421 if (len != VEC_length (offset_type, eb->cu_indices))
22422 return 0;
22423 return !memcmp (VEC_address (offset_type, ea->cu_indices),
22424 VEC_address (offset_type, eb->cu_indices),
22425 sizeof (offset_type) * len);
22426}
22427
22428/* Destroy a symtab_index_entry. */
b89be57b 22429
9291a0cd
TT
22430static void
22431delete_symtab_entry (void *p)
22432{
22433 struct symtab_index_entry *entry = p;
22434 VEC_free (offset_type, entry->cu_indices);
22435 xfree (entry);
22436}
22437
22438/* Create a hash table holding symtab_index_entry objects. */
b89be57b 22439
9291a0cd 22440static htab_t
3876f04e 22441create_symbol_hash_table (void)
9291a0cd
TT
22442{
22443 return htab_create_alloc (100, hash_symtab_entry, eq_symtab_entry,
22444 delete_symtab_entry, xcalloc, xfree);
22445}
22446
22447/* Create a new mapped symtab object. */
b89be57b 22448
9291a0cd
TT
22449static struct mapped_symtab *
22450create_mapped_symtab (void)
22451{
22452 struct mapped_symtab *symtab = XNEW (struct mapped_symtab);
22453 symtab->n_elements = 0;
22454 symtab->size = 1024;
22455 symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22456 return symtab;
22457}
22458
22459/* Destroy a mapped_symtab. */
b89be57b 22460
9291a0cd
TT
22461static void
22462cleanup_mapped_symtab (void *p)
22463{
22464 struct mapped_symtab *symtab = p;
22465 /* The contents of the array are freed when the other hash table is
22466 destroyed. */
22467 xfree (symtab->data);
22468 xfree (symtab);
22469}
22470
22471/* Find a slot in SYMTAB for the symbol NAME. Returns a pointer to
559a7a62
JK
22472 the slot.
22473
22474 Function is used only during write_hash_table so no index format backward
22475 compatibility is needed. */
b89be57b 22476
9291a0cd
TT
22477static struct symtab_index_entry **
22478find_slot (struct mapped_symtab *symtab, const char *name)
22479{
559a7a62 22480 offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
9291a0cd
TT
22481
22482 index = hash & (symtab->size - 1);
22483 step = ((hash * 17) & (symtab->size - 1)) | 1;
22484
22485 for (;;)
22486 {
22487 if (!symtab->data[index] || !strcmp (name, symtab->data[index]->name))
22488 return &symtab->data[index];
22489 index = (index + step) & (symtab->size - 1);
22490 }
22491}
22492
22493/* Expand SYMTAB's hash table. */
b89be57b 22494
9291a0cd
TT
22495static void
22496hash_expand (struct mapped_symtab *symtab)
22497{
22498 offset_type old_size = symtab->size;
22499 offset_type i;
22500 struct symtab_index_entry **old_entries = symtab->data;
22501
22502 symtab->size *= 2;
22503 symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22504
22505 for (i = 0; i < old_size; ++i)
22506 {
22507 if (old_entries[i])
22508 {
22509 struct symtab_index_entry **slot = find_slot (symtab,
22510 old_entries[i]->name);
22511 *slot = old_entries[i];
22512 }
22513 }
22514
22515 xfree (old_entries);
22516}
22517
156942c7
DE
22518/* Add an entry to SYMTAB. NAME is the name of the symbol.
22519 CU_INDEX is the index of the CU in which the symbol appears.
22520 IS_STATIC is one if the symbol is static, otherwise zero (global). */
b89be57b 22521
9291a0cd
TT
22522static void
22523add_index_entry (struct mapped_symtab *symtab, const char *name,
156942c7 22524 int is_static, gdb_index_symbol_kind kind,
9291a0cd
TT
22525 offset_type cu_index)
22526{
22527 struct symtab_index_entry **slot;
156942c7 22528 offset_type cu_index_and_attrs;
9291a0cd
TT
22529
22530 ++symtab->n_elements;
22531 if (4 * symtab->n_elements / 3 >= symtab->size)
22532 hash_expand (symtab);
22533
22534 slot = find_slot (symtab, name);
22535 if (!*slot)
22536 {
22537 *slot = XNEW (struct symtab_index_entry);
22538 (*slot)->name = name;
156942c7 22539 /* index_offset is set later. */
9291a0cd
TT
22540 (*slot)->cu_indices = NULL;
22541 }
156942c7
DE
22542
22543 cu_index_and_attrs = 0;
22544 DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
22545 DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
22546 DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
22547
22548 /* We don't want to record an index value twice as we want to avoid the
22549 duplication.
22550 We process all global symbols and then all static symbols
22551 (which would allow us to avoid the duplication by only having to check
22552 the last entry pushed), but a symbol could have multiple kinds in one CU.
22553 To keep things simple we don't worry about the duplication here and
22554 sort and uniqufy the list after we've processed all symbols. */
22555 VEC_safe_push (offset_type, (*slot)->cu_indices, cu_index_and_attrs);
22556}
22557
22558/* qsort helper routine for uniquify_cu_indices. */
22559
22560static int
22561offset_type_compare (const void *ap, const void *bp)
22562{
22563 offset_type a = *(offset_type *) ap;
22564 offset_type b = *(offset_type *) bp;
22565
22566 return (a > b) - (b > a);
22567}
22568
22569/* Sort and remove duplicates of all symbols' cu_indices lists. */
22570
22571static void
22572uniquify_cu_indices (struct mapped_symtab *symtab)
22573{
22574 int i;
22575
22576 for (i = 0; i < symtab->size; ++i)
22577 {
22578 struct symtab_index_entry *entry = symtab->data[i];
22579
22580 if (entry
22581 && entry->cu_indices != NULL)
22582 {
22583 unsigned int next_to_insert, next_to_check;
22584 offset_type last_value;
22585
22586 qsort (VEC_address (offset_type, entry->cu_indices),
22587 VEC_length (offset_type, entry->cu_indices),
22588 sizeof (offset_type), offset_type_compare);
22589
22590 last_value = VEC_index (offset_type, entry->cu_indices, 0);
22591 next_to_insert = 1;
22592 for (next_to_check = 1;
22593 next_to_check < VEC_length (offset_type, entry->cu_indices);
22594 ++next_to_check)
22595 {
22596 if (VEC_index (offset_type, entry->cu_indices, next_to_check)
22597 != last_value)
22598 {
22599 last_value = VEC_index (offset_type, entry->cu_indices,
22600 next_to_check);
22601 VEC_replace (offset_type, entry->cu_indices, next_to_insert,
22602 last_value);
22603 ++next_to_insert;
22604 }
22605 }
22606 VEC_truncate (offset_type, entry->cu_indices, next_to_insert);
22607 }
22608 }
9291a0cd
TT
22609}
22610
22611/* Add a vector of indices to the constant pool. */
b89be57b 22612
9291a0cd 22613static offset_type
3876f04e 22614add_indices_to_cpool (htab_t symbol_hash_table, struct obstack *cpool,
9291a0cd
TT
22615 struct symtab_index_entry *entry)
22616{
22617 void **slot;
22618
3876f04e 22619 slot = htab_find_slot (symbol_hash_table, entry, INSERT);
9291a0cd
TT
22620 if (!*slot)
22621 {
22622 offset_type len = VEC_length (offset_type, entry->cu_indices);
22623 offset_type val = MAYBE_SWAP (len);
22624 offset_type iter;
22625 int i;
22626
22627 *slot = entry;
22628 entry->index_offset = obstack_object_size (cpool);
22629
22630 obstack_grow (cpool, &val, sizeof (val));
22631 for (i = 0;
22632 VEC_iterate (offset_type, entry->cu_indices, i, iter);
22633 ++i)
22634 {
22635 val = MAYBE_SWAP (iter);
22636 obstack_grow (cpool, &val, sizeof (val));
22637 }
22638 }
22639 else
22640 {
22641 struct symtab_index_entry *old_entry = *slot;
22642 entry->index_offset = old_entry->index_offset;
22643 entry = old_entry;
22644 }
22645 return entry->index_offset;
22646}
22647
22648/* Write the mapped hash table SYMTAB to the obstack OUTPUT, with
22649 constant pool entries going into the obstack CPOOL. */
b89be57b 22650
9291a0cd
TT
22651static void
22652write_hash_table (struct mapped_symtab *symtab,
22653 struct obstack *output, struct obstack *cpool)
22654{
22655 offset_type i;
3876f04e 22656 htab_t symbol_hash_table;
9291a0cd
TT
22657 htab_t str_table;
22658
3876f04e 22659 symbol_hash_table = create_symbol_hash_table ();
9291a0cd 22660 str_table = create_strtab ();
3876f04e 22661
9291a0cd
TT
22662 /* We add all the index vectors to the constant pool first, to
22663 ensure alignment is ok. */
22664 for (i = 0; i < symtab->size; ++i)
22665 {
22666 if (symtab->data[i])
3876f04e 22667 add_indices_to_cpool (symbol_hash_table, cpool, symtab->data[i]);
9291a0cd
TT
22668 }
22669
22670 /* Now write out the hash table. */
22671 for (i = 0; i < symtab->size; ++i)
22672 {
22673 offset_type str_off, vec_off;
22674
22675 if (symtab->data[i])
22676 {
22677 str_off = add_string (str_table, cpool, symtab->data[i]->name);
22678 vec_off = symtab->data[i]->index_offset;
22679 }
22680 else
22681 {
22682 /* While 0 is a valid constant pool index, it is not valid
22683 to have 0 for both offsets. */
22684 str_off = 0;
22685 vec_off = 0;
22686 }
22687
22688 str_off = MAYBE_SWAP (str_off);
22689 vec_off = MAYBE_SWAP (vec_off);
22690
22691 obstack_grow (output, &str_off, sizeof (str_off));
22692 obstack_grow (output, &vec_off, sizeof (vec_off));
22693 }
22694
22695 htab_delete (str_table);
3876f04e 22696 htab_delete (symbol_hash_table);
9291a0cd
TT
22697}
22698
0a5429f6
DE
22699/* Struct to map psymtab to CU index in the index file. */
22700struct psymtab_cu_index_map
22701{
22702 struct partial_symtab *psymtab;
22703 unsigned int cu_index;
22704};
22705
22706static hashval_t
22707hash_psymtab_cu_index (const void *item)
22708{
22709 const struct psymtab_cu_index_map *map = item;
22710
22711 return htab_hash_pointer (map->psymtab);
22712}
22713
22714static int
22715eq_psymtab_cu_index (const void *item_lhs, const void *item_rhs)
22716{
22717 const struct psymtab_cu_index_map *lhs = item_lhs;
22718 const struct psymtab_cu_index_map *rhs = item_rhs;
22719
22720 return lhs->psymtab == rhs->psymtab;
22721}
22722
22723/* Helper struct for building the address table. */
22724struct addrmap_index_data
22725{
22726 struct objfile *objfile;
22727 struct obstack *addr_obstack;
22728 htab_t cu_index_htab;
22729
22730 /* Non-zero if the previous_* fields are valid.
22731 We can't write an entry until we see the next entry (since it is only then
22732 that we know the end of the entry). */
22733 int previous_valid;
22734 /* Index of the CU in the table of all CUs in the index file. */
22735 unsigned int previous_cu_index;
0963b4bd 22736 /* Start address of the CU. */
0a5429f6
DE
22737 CORE_ADDR previous_cu_start;
22738};
22739
22740/* Write an address entry to OBSTACK. */
b89be57b 22741
9291a0cd 22742static void
0a5429f6
DE
22743add_address_entry (struct objfile *objfile, struct obstack *obstack,
22744 CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
9291a0cd 22745{
0a5429f6 22746 offset_type cu_index_to_write;
948f8e3d 22747 gdb_byte addr[8];
9291a0cd
TT
22748 CORE_ADDR baseaddr;
22749
22750 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
22751
0a5429f6
DE
22752 store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, start - baseaddr);
22753 obstack_grow (obstack, addr, 8);
22754 store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, end - baseaddr);
22755 obstack_grow (obstack, addr, 8);
22756 cu_index_to_write = MAYBE_SWAP (cu_index);
22757 obstack_grow (obstack, &cu_index_to_write, sizeof (offset_type));
22758}
22759
22760/* Worker function for traversing an addrmap to build the address table. */
22761
22762static int
22763add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
22764{
22765 struct addrmap_index_data *data = datap;
22766 struct partial_symtab *pst = obj;
0a5429f6
DE
22767
22768 if (data->previous_valid)
22769 add_address_entry (data->objfile, data->addr_obstack,
22770 data->previous_cu_start, start_addr,
22771 data->previous_cu_index);
22772
22773 data->previous_cu_start = start_addr;
22774 if (pst != NULL)
22775 {
22776 struct psymtab_cu_index_map find_map, *map;
22777 find_map.psymtab = pst;
22778 map = htab_find (data->cu_index_htab, &find_map);
22779 gdb_assert (map != NULL);
22780 data->previous_cu_index = map->cu_index;
22781 data->previous_valid = 1;
22782 }
22783 else
22784 data->previous_valid = 0;
22785
22786 return 0;
22787}
22788
22789/* Write OBJFILE's address map to OBSTACK.
22790 CU_INDEX_HTAB is used to map addrmap entries to their CU indices
22791 in the index file. */
22792
22793static void
22794write_address_map (struct objfile *objfile, struct obstack *obstack,
22795 htab_t cu_index_htab)
22796{
22797 struct addrmap_index_data addrmap_index_data;
22798
22799 /* When writing the address table, we have to cope with the fact that
22800 the addrmap iterator only provides the start of a region; we have to
22801 wait until the next invocation to get the start of the next region. */
22802
22803 addrmap_index_data.objfile = objfile;
22804 addrmap_index_data.addr_obstack = obstack;
22805 addrmap_index_data.cu_index_htab = cu_index_htab;
22806 addrmap_index_data.previous_valid = 0;
22807
22808 addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
22809 &addrmap_index_data);
22810
22811 /* It's highly unlikely the last entry (end address = 0xff...ff)
22812 is valid, but we should still handle it.
22813 The end address is recorded as the start of the next region, but that
22814 doesn't work here. To cope we pass 0xff...ff, this is a rare situation
22815 anyway. */
22816 if (addrmap_index_data.previous_valid)
22817 add_address_entry (objfile, obstack,
22818 addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
22819 addrmap_index_data.previous_cu_index);
9291a0cd
TT
22820}
22821
156942c7
DE
22822/* Return the symbol kind of PSYM. */
22823
22824static gdb_index_symbol_kind
22825symbol_kind (struct partial_symbol *psym)
22826{
22827 domain_enum domain = PSYMBOL_DOMAIN (psym);
22828 enum address_class aclass = PSYMBOL_CLASS (psym);
22829
22830 switch (domain)
22831 {
22832 case VAR_DOMAIN:
22833 switch (aclass)
22834 {
22835 case LOC_BLOCK:
22836 return GDB_INDEX_SYMBOL_KIND_FUNCTION;
22837 case LOC_TYPEDEF:
22838 return GDB_INDEX_SYMBOL_KIND_TYPE;
22839 case LOC_COMPUTED:
22840 case LOC_CONST_BYTES:
22841 case LOC_OPTIMIZED_OUT:
22842 case LOC_STATIC:
22843 return GDB_INDEX_SYMBOL_KIND_VARIABLE;
22844 case LOC_CONST:
22845 /* Note: It's currently impossible to recognize psyms as enum values
22846 short of reading the type info. For now punt. */
22847 return GDB_INDEX_SYMBOL_KIND_VARIABLE;
22848 default:
22849 /* There are other LOC_FOO values that one might want to classify
22850 as variables, but dwarf2read.c doesn't currently use them. */
22851 return GDB_INDEX_SYMBOL_KIND_OTHER;
22852 }
22853 case STRUCT_DOMAIN:
22854 return GDB_INDEX_SYMBOL_KIND_TYPE;
22855 default:
22856 return GDB_INDEX_SYMBOL_KIND_OTHER;
22857 }
22858}
22859
9291a0cd 22860/* Add a list of partial symbols to SYMTAB. */
b89be57b 22861
9291a0cd
TT
22862static void
22863write_psymbols (struct mapped_symtab *symtab,
987d643c 22864 htab_t psyms_seen,
9291a0cd
TT
22865 struct partial_symbol **psymp,
22866 int count,
987d643c
TT
22867 offset_type cu_index,
22868 int is_static)
9291a0cd
TT
22869{
22870 for (; count-- > 0; ++psymp)
22871 {
156942c7
DE
22872 struct partial_symbol *psym = *psymp;
22873 void **slot;
987d643c 22874
156942c7 22875 if (SYMBOL_LANGUAGE (psym) == language_ada)
9291a0cd 22876 error (_("Ada is not currently supported by the index"));
987d643c 22877
987d643c 22878 /* Only add a given psymbol once. */
156942c7 22879 slot = htab_find_slot (psyms_seen, psym, INSERT);
987d643c
TT
22880 if (!*slot)
22881 {
156942c7
DE
22882 gdb_index_symbol_kind kind = symbol_kind (psym);
22883
22884 *slot = psym;
22885 add_index_entry (symtab, SYMBOL_SEARCH_NAME (psym),
22886 is_static, kind, cu_index);
987d643c 22887 }
9291a0cd
TT
22888 }
22889}
22890
22891/* Write the contents of an ("unfinished") obstack to FILE. Throw an
22892 exception if there is an error. */
b89be57b 22893
9291a0cd
TT
22894static void
22895write_obstack (FILE *file, struct obstack *obstack)
22896{
22897 if (fwrite (obstack_base (obstack), 1, obstack_object_size (obstack),
22898 file)
22899 != obstack_object_size (obstack))
22900 error (_("couldn't data write to file"));
22901}
22902
22903/* Unlink a file if the argument is not NULL. */
b89be57b 22904
9291a0cd
TT
22905static void
22906unlink_if_set (void *p)
22907{
22908 char **filename = p;
22909 if (*filename)
22910 unlink (*filename);
22911}
22912
1fd400ff
TT
22913/* A helper struct used when iterating over debug_types. */
22914struct signatured_type_index_data
22915{
22916 struct objfile *objfile;
22917 struct mapped_symtab *symtab;
22918 struct obstack *types_list;
987d643c 22919 htab_t psyms_seen;
1fd400ff
TT
22920 int cu_index;
22921};
22922
22923/* A helper function that writes a single signatured_type to an
22924 obstack. */
b89be57b 22925
1fd400ff
TT
22926static int
22927write_one_signatured_type (void **slot, void *d)
22928{
22929 struct signatured_type_index_data *info = d;
22930 struct signatured_type *entry = (struct signatured_type *) *slot;
0186c6a7 22931 struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
1fd400ff
TT
22932 gdb_byte val[8];
22933
22934 write_psymbols (info->symtab,
987d643c 22935 info->psyms_seen,
3e43a32a
MS
22936 info->objfile->global_psymbols.list
22937 + psymtab->globals_offset,
987d643c
TT
22938 psymtab->n_global_syms, info->cu_index,
22939 0);
1fd400ff 22940 write_psymbols (info->symtab,
987d643c 22941 info->psyms_seen,
3e43a32a
MS
22942 info->objfile->static_psymbols.list
22943 + psymtab->statics_offset,
987d643c
TT
22944 psymtab->n_static_syms, info->cu_index,
22945 1);
1fd400ff 22946
b64f50a1
JK
22947 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
22948 entry->per_cu.offset.sect_off);
1fd400ff 22949 obstack_grow (info->types_list, val, 8);
3019eac3
DE
22950 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
22951 entry->type_offset_in_tu.cu_off);
1fd400ff
TT
22952 obstack_grow (info->types_list, val, 8);
22953 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->signature);
22954 obstack_grow (info->types_list, val, 8);
22955
22956 ++info->cu_index;
22957
22958 return 1;
22959}
22960
95554aad
TT
22961/* Recurse into all "included" dependencies and write their symbols as
22962 if they appeared in this psymtab. */
22963
22964static void
22965recursively_write_psymbols (struct objfile *objfile,
22966 struct partial_symtab *psymtab,
22967 struct mapped_symtab *symtab,
22968 htab_t psyms_seen,
22969 offset_type cu_index)
22970{
22971 int i;
22972
22973 for (i = 0; i < psymtab->number_of_dependencies; ++i)
22974 if (psymtab->dependencies[i]->user != NULL)
22975 recursively_write_psymbols (objfile, psymtab->dependencies[i],
22976 symtab, psyms_seen, cu_index);
22977
22978 write_psymbols (symtab,
22979 psyms_seen,
22980 objfile->global_psymbols.list + psymtab->globals_offset,
22981 psymtab->n_global_syms, cu_index,
22982 0);
22983 write_psymbols (symtab,
22984 psyms_seen,
22985 objfile->static_psymbols.list + psymtab->statics_offset,
22986 psymtab->n_static_syms, cu_index,
22987 1);
22988}
22989
9291a0cd 22990/* Create an index file for OBJFILE in the directory DIR. */
b89be57b 22991
9291a0cd
TT
22992static void
22993write_psymtabs_to_index (struct objfile *objfile, const char *dir)
22994{
22995 struct cleanup *cleanup;
22996 char *filename, *cleanup_filename;
1fd400ff
TT
22997 struct obstack contents, addr_obstack, constant_pool, symtab_obstack;
22998 struct obstack cu_list, types_cu_list;
9291a0cd
TT
22999 int i;
23000 FILE *out_file;
23001 struct mapped_symtab *symtab;
23002 offset_type val, size_of_contents, total_len;
23003 struct stat st;
987d643c 23004 htab_t psyms_seen;
0a5429f6
DE
23005 htab_t cu_index_htab;
23006 struct psymtab_cu_index_map *psymtab_cu_index_map;
9291a0cd 23007
9291a0cd
TT
23008 if (dwarf2_per_objfile->using_index)
23009 error (_("Cannot use an index to create the index"));
23010
8b70b953
TT
23011 if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) > 1)
23012 error (_("Cannot make an index when the file has multiple .debug_types sections"));
23013
260b681b
DE
23014 if (!objfile->psymtabs || !objfile->psymtabs_addrmap)
23015 return;
23016
4262abfb
JK
23017 if (stat (objfile_name (objfile), &st) < 0)
23018 perror_with_name (objfile_name (objfile));
9291a0cd 23019
4262abfb 23020 filename = concat (dir, SLASH_STRING, lbasename (objfile_name (objfile)),
9291a0cd
TT
23021 INDEX_SUFFIX, (char *) NULL);
23022 cleanup = make_cleanup (xfree, filename);
23023
614c279d 23024 out_file = gdb_fopen_cloexec (filename, "wb");
9291a0cd
TT
23025 if (!out_file)
23026 error (_("Can't open `%s' for writing"), filename);
23027
23028 cleanup_filename = filename;
23029 make_cleanup (unlink_if_set, &cleanup_filename);
23030
23031 symtab = create_mapped_symtab ();
23032 make_cleanup (cleanup_mapped_symtab, symtab);
23033
23034 obstack_init (&addr_obstack);
23035 make_cleanup_obstack_free (&addr_obstack);
23036
23037 obstack_init (&cu_list);
23038 make_cleanup_obstack_free (&cu_list);
23039
1fd400ff
TT
23040 obstack_init (&types_cu_list);
23041 make_cleanup_obstack_free (&types_cu_list);
23042
987d643c
TT
23043 psyms_seen = htab_create_alloc (100, htab_hash_pointer, htab_eq_pointer,
23044 NULL, xcalloc, xfree);
96408a79 23045 make_cleanup_htab_delete (psyms_seen);
987d643c 23046
0a5429f6
DE
23047 /* While we're scanning CU's create a table that maps a psymtab pointer
23048 (which is what addrmap records) to its index (which is what is recorded
23049 in the index file). This will later be needed to write the address
23050 table. */
23051 cu_index_htab = htab_create_alloc (100,
23052 hash_psymtab_cu_index,
23053 eq_psymtab_cu_index,
23054 NULL, xcalloc, xfree);
96408a79 23055 make_cleanup_htab_delete (cu_index_htab);
0a5429f6
DE
23056 psymtab_cu_index_map = (struct psymtab_cu_index_map *)
23057 xmalloc (sizeof (struct psymtab_cu_index_map)
23058 * dwarf2_per_objfile->n_comp_units);
23059 make_cleanup (xfree, psymtab_cu_index_map);
23060
23061 /* The CU list is already sorted, so we don't need to do additional
1fd400ff
TT
23062 work here. Also, the debug_types entries do not appear in
23063 all_comp_units, but only in their own hash table. */
9291a0cd
TT
23064 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
23065 {
3e43a32a
MS
23066 struct dwarf2_per_cu_data *per_cu
23067 = dwarf2_per_objfile->all_comp_units[i];
e254ef6a 23068 struct partial_symtab *psymtab = per_cu->v.psymtab;
9291a0cd 23069 gdb_byte val[8];
0a5429f6
DE
23070 struct psymtab_cu_index_map *map;
23071 void **slot;
9291a0cd 23072
92fac807
JK
23073 /* CU of a shared file from 'dwz -m' may be unused by this main file.
23074 It may be referenced from a local scope but in such case it does not
23075 need to be present in .gdb_index. */
23076 if (psymtab == NULL)
23077 continue;
23078
95554aad
TT
23079 if (psymtab->user == NULL)
23080 recursively_write_psymbols (objfile, psymtab, symtab, psyms_seen, i);
9291a0cd 23081
0a5429f6
DE
23082 map = &psymtab_cu_index_map[i];
23083 map->psymtab = psymtab;
23084 map->cu_index = i;
23085 slot = htab_find_slot (cu_index_htab, map, INSERT);
23086 gdb_assert (slot != NULL);
23087 gdb_assert (*slot == NULL);
23088 *slot = map;
9291a0cd 23089
b64f50a1
JK
23090 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23091 per_cu->offset.sect_off);
9291a0cd 23092 obstack_grow (&cu_list, val, 8);
e254ef6a 23093 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, per_cu->length);
9291a0cd
TT
23094 obstack_grow (&cu_list, val, 8);
23095 }
23096
0a5429f6
DE
23097 /* Dump the address map. */
23098 write_address_map (objfile, &addr_obstack, cu_index_htab);
23099
1fd400ff
TT
23100 /* Write out the .debug_type entries, if any. */
23101 if (dwarf2_per_objfile->signatured_types)
23102 {
23103 struct signatured_type_index_data sig_data;
23104
23105 sig_data.objfile = objfile;
23106 sig_data.symtab = symtab;
23107 sig_data.types_list = &types_cu_list;
987d643c 23108 sig_data.psyms_seen = psyms_seen;
1fd400ff
TT
23109 sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
23110 htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
23111 write_one_signatured_type, &sig_data);
23112 }
23113
156942c7
DE
23114 /* Now that we've processed all symbols we can shrink their cu_indices
23115 lists. */
23116 uniquify_cu_indices (symtab);
23117
9291a0cd
TT
23118 obstack_init (&constant_pool);
23119 make_cleanup_obstack_free (&constant_pool);
23120 obstack_init (&symtab_obstack);
23121 make_cleanup_obstack_free (&symtab_obstack);
23122 write_hash_table (symtab, &symtab_obstack, &constant_pool);
23123
23124 obstack_init (&contents);
23125 make_cleanup_obstack_free (&contents);
1fd400ff 23126 size_of_contents = 6 * sizeof (offset_type);
9291a0cd
TT
23127 total_len = size_of_contents;
23128
23129 /* The version number. */
796a7ff8 23130 val = MAYBE_SWAP (8);
9291a0cd
TT
23131 obstack_grow (&contents, &val, sizeof (val));
23132
23133 /* The offset of the CU list from the start of the file. */
23134 val = MAYBE_SWAP (total_len);
23135 obstack_grow (&contents, &val, sizeof (val));
23136 total_len += obstack_object_size (&cu_list);
23137
1fd400ff
TT
23138 /* The offset of the types CU list from the start of the file. */
23139 val = MAYBE_SWAP (total_len);
23140 obstack_grow (&contents, &val, sizeof (val));
23141 total_len += obstack_object_size (&types_cu_list);
23142
9291a0cd
TT
23143 /* The offset of the address table from the start of the file. */
23144 val = MAYBE_SWAP (total_len);
23145 obstack_grow (&contents, &val, sizeof (val));
23146 total_len += obstack_object_size (&addr_obstack);
23147
23148 /* The offset of the symbol table from the start of the file. */
23149 val = MAYBE_SWAP (total_len);
23150 obstack_grow (&contents, &val, sizeof (val));
23151 total_len += obstack_object_size (&symtab_obstack);
23152
23153 /* The offset of the constant pool from the start of the file. */
23154 val = MAYBE_SWAP (total_len);
23155 obstack_grow (&contents, &val, sizeof (val));
23156 total_len += obstack_object_size (&constant_pool);
23157
23158 gdb_assert (obstack_object_size (&contents) == size_of_contents);
23159
23160 write_obstack (out_file, &contents);
23161 write_obstack (out_file, &cu_list);
1fd400ff 23162 write_obstack (out_file, &types_cu_list);
9291a0cd
TT
23163 write_obstack (out_file, &addr_obstack);
23164 write_obstack (out_file, &symtab_obstack);
23165 write_obstack (out_file, &constant_pool);
23166
23167 fclose (out_file);
23168
23169 /* We want to keep the file, so we set cleanup_filename to NULL
23170 here. See unlink_if_set. */
23171 cleanup_filename = NULL;
23172
23173 do_cleanups (cleanup);
23174}
23175
90476074
TT
23176/* Implementation of the `save gdb-index' command.
23177
23178 Note that the file format used by this command is documented in the
23179 GDB manual. Any changes here must be documented there. */
11570e71 23180
9291a0cd
TT
23181static void
23182save_gdb_index_command (char *arg, int from_tty)
23183{
23184 struct objfile *objfile;
23185
23186 if (!arg || !*arg)
96d19272 23187 error (_("usage: save gdb-index DIRECTORY"));
9291a0cd
TT
23188
23189 ALL_OBJFILES (objfile)
23190 {
23191 struct stat st;
23192
23193 /* If the objfile does not correspond to an actual file, skip it. */
4262abfb 23194 if (stat (objfile_name (objfile), &st) < 0)
9291a0cd
TT
23195 continue;
23196
23197 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
23198 if (dwarf2_per_objfile)
23199 {
9291a0cd 23200
492d29ea 23201 TRY
9291a0cd
TT
23202 {
23203 write_psymtabs_to_index (objfile, arg);
23204 }
492d29ea
PA
23205 CATCH (except, RETURN_MASK_ERROR)
23206 {
23207 exception_fprintf (gdb_stderr, except,
23208 _("Error while writing index for `%s': "),
23209 objfile_name (objfile));
23210 }
23211 END_CATCH
9291a0cd
TT
23212 }
23213 }
dce234bc
PP
23214}
23215
9291a0cd
TT
23216\f
23217
9eae7c52
TT
23218int dwarf2_always_disassemble;
23219
23220static void
23221show_dwarf2_always_disassemble (struct ui_file *file, int from_tty,
23222 struct cmd_list_element *c, const char *value)
23223{
3e43a32a
MS
23224 fprintf_filtered (file,
23225 _("Whether to always disassemble "
23226 "DWARF expressions is %s.\n"),
9eae7c52
TT
23227 value);
23228}
23229
900e11f9
JK
23230static void
23231show_check_physname (struct ui_file *file, int from_tty,
23232 struct cmd_list_element *c, const char *value)
23233{
23234 fprintf_filtered (file,
23235 _("Whether to check \"physname\" is %s.\n"),
23236 value);
23237}
23238
6502dd73
DJ
23239void _initialize_dwarf2_read (void);
23240
23241void
23242_initialize_dwarf2_read (void)
23243{
96d19272
JK
23244 struct cmd_list_element *c;
23245
dce234bc 23246 dwarf2_objfile_data_key
c1bd65d0 23247 = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
ae038cb0 23248
1bedd215
AC
23249 add_prefix_cmd ("dwarf2", class_maintenance, set_dwarf2_cmd, _("\
23250Set DWARF 2 specific variables.\n\
23251Configure DWARF 2 variables such as the cache size"),
ae038cb0
DJ
23252 &set_dwarf2_cmdlist, "maintenance set dwarf2 ",
23253 0/*allow-unknown*/, &maintenance_set_cmdlist);
23254
1bedd215
AC
23255 add_prefix_cmd ("dwarf2", class_maintenance, show_dwarf2_cmd, _("\
23256Show DWARF 2 specific variables\n\
23257Show DWARF 2 variables such as the cache size"),
ae038cb0
DJ
23258 &show_dwarf2_cmdlist, "maintenance show dwarf2 ",
23259 0/*allow-unknown*/, &maintenance_show_cmdlist);
23260
23261 add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
7915a72c
AC
23262 &dwarf2_max_cache_age, _("\
23263Set the upper bound on the age of cached dwarf2 compilation units."), _("\
23264Show the upper bound on the age of cached dwarf2 compilation units."), _("\
23265A higher limit means that cached compilation units will be stored\n\
23266in memory longer, and more total memory will be used. Zero disables\n\
23267caching, which can slow down startup."),
2c5b56ce 23268 NULL,
920d2a44 23269 show_dwarf2_max_cache_age,
2c5b56ce 23270 &set_dwarf2_cmdlist,
ae038cb0 23271 &show_dwarf2_cmdlist);
d97bc12b 23272
9eae7c52
TT
23273 add_setshow_boolean_cmd ("always-disassemble", class_obscure,
23274 &dwarf2_always_disassemble, _("\
23275Set whether `info address' always disassembles DWARF expressions."), _("\
23276Show whether `info address' always disassembles DWARF expressions."), _("\
23277When enabled, DWARF expressions are always printed in an assembly-like\n\
23278syntax. When disabled, expressions will be printed in a more\n\
23279conversational style, when possible."),
23280 NULL,
23281 show_dwarf2_always_disassemble,
23282 &set_dwarf2_cmdlist,
23283 &show_dwarf2_cmdlist);
23284
73be47f5 23285 add_setshow_zuinteger_cmd ("dwarf2-read", no_class, &dwarf2_read_debug, _("\
45cfd468
DE
23286Set debugging of the dwarf2 reader."), _("\
23287Show debugging of the dwarf2 reader."), _("\
73be47f5
DE
23288When enabled (non-zero), debugging messages are printed during dwarf2\n\
23289reading and symtab expansion. A value of 1 (one) provides basic\n\
23290information. A value greater than 1 provides more verbose information."),
45cfd468
DE
23291 NULL,
23292 NULL,
23293 &setdebuglist, &showdebuglist);
23294
ccce17b0 23295 add_setshow_zuinteger_cmd ("dwarf2-die", no_class, &dwarf2_die_debug, _("\
d97bc12b
DE
23296Set debugging of the dwarf2 DIE reader."), _("\
23297Show debugging of the dwarf2 DIE reader."), _("\
23298When enabled (non-zero), DIEs are dumped after they are read in.\n\
23299The value is the maximum depth to print."),
ccce17b0
YQ
23300 NULL,
23301 NULL,
23302 &setdebuglist, &showdebuglist);
9291a0cd 23303
900e11f9
JK
23304 add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
23305Set cross-checking of \"physname\" code against demangler."), _("\
23306Show cross-checking of \"physname\" code against demangler."), _("\
23307When enabled, GDB's internal \"physname\" code is checked against\n\
23308the demangler."),
23309 NULL, show_check_physname,
23310 &setdebuglist, &showdebuglist);
23311
e615022a
DE
23312 add_setshow_boolean_cmd ("use-deprecated-index-sections",
23313 no_class, &use_deprecated_index_sections, _("\
23314Set whether to use deprecated gdb_index sections."), _("\
23315Show whether to use deprecated gdb_index sections."), _("\
23316When enabled, deprecated .gdb_index sections are used anyway.\n\
23317Normally they are ignored either because of a missing feature or\n\
23318performance issue.\n\
23319Warning: This option must be enabled before gdb reads the file."),
23320 NULL,
23321 NULL,
23322 &setlist, &showlist);
23323
96d19272 23324 c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
11570e71 23325 _("\
fc1a9d6e 23326Save a gdb-index file.\n\
11570e71 23327Usage: save gdb-index DIRECTORY"),
96d19272
JK
23328 &save_cmdlist);
23329 set_cmd_completer (c, filename_completer);
f1e6e072
TT
23330
23331 dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
23332 &dwarf2_locexpr_funcs);
23333 dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
23334 &dwarf2_loclist_funcs);
23335
23336 dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
23337 &dwarf2_block_frame_base_locexpr_funcs);
23338 dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
23339 &dwarf2_block_frame_base_loclist_funcs);
6502dd73 23340}
This page took 3.762831 seconds and 4 git commands to generate.