Add casts for legitimate integer to enum conversions
[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.
b4f54984
DE
81 This is in contrast to the low level DIE reading of dwarf_die_debug. */
82static unsigned int dwarf_read_debug = 0;
45cfd468 83
d97bc12b 84/* When non-zero, dump DIEs after they are read in. */
b4f54984 85static unsigned int dwarf_die_debug = 0;
d97bc12b 86
27e0867f
DE
87/* When non-zero, dump line number entries as they are read in. */
88static unsigned int dwarf_line_debug = 0;
89
900e11f9
JK
90/* When non-zero, cross-check physname against demangler. */
91static int check_physname = 0;
92
481860b3 93/* When non-zero, do not reject deprecated .gdb_index sections. */
e615022a 94static int use_deprecated_index_sections = 0;
481860b3 95
6502dd73
DJ
96static const struct objfile_data *dwarf2_objfile_data_key;
97
f1e6e072
TT
98/* The "aclass" indices for various kinds of computed DWARF symbols. */
99
100static int dwarf2_locexpr_index;
101static int dwarf2_loclist_index;
102static int dwarf2_locexpr_block_index;
103static int dwarf2_loclist_block_index;
104
73869dc2
DE
105/* A descriptor for dwarf sections.
106
107 S.ASECTION, SIZE are typically initialized when the objfile is first
108 scanned. BUFFER, READIN are filled in later when the section is read.
109 If the section contained compressed data then SIZE is updated to record
110 the uncompressed size of the section.
111
112 DWP file format V2 introduces a wrinkle that is easiest to handle by
113 creating the concept of virtual sections contained within a real section.
114 In DWP V2 the sections of the input DWO files are concatenated together
115 into one section, but section offsets are kept relative to the original
116 input section.
117 If this is a virtual dwp-v2 section, S.CONTAINING_SECTION is a backlink to
118 the real section this "virtual" section is contained in, and BUFFER,SIZE
119 describe the virtual section. */
120
dce234bc
PP
121struct dwarf2_section_info
122{
73869dc2
DE
123 union
124 {
e5aa3347 125 /* If this is a real section, the bfd section. */
73869dc2
DE
126 asection *asection;
127 /* If this is a virtual section, pointer to the containing ("real")
e5aa3347 128 section. */
73869dc2
DE
129 struct dwarf2_section_info *containing_section;
130 } s;
19ac8c2e 131 /* Pointer to section data, only valid if readin. */
d521ce57 132 const gdb_byte *buffer;
73869dc2 133 /* The size of the section, real or virtual. */
dce234bc 134 bfd_size_type size;
73869dc2
DE
135 /* If this is a virtual section, the offset in the real section.
136 Only valid if is_virtual. */
137 bfd_size_type virtual_offset;
be391dca 138 /* True if we have tried to read this section. */
73869dc2
DE
139 char readin;
140 /* True if this is a virtual section, False otherwise.
141 This specifies which of s.asection and s.containing_section to use. */
142 char is_virtual;
dce234bc
PP
143};
144
8b70b953
TT
145typedef struct dwarf2_section_info dwarf2_section_info_def;
146DEF_VEC_O (dwarf2_section_info_def);
147
9291a0cd
TT
148/* All offsets in the index are of this type. It must be
149 architecture-independent. */
150typedef uint32_t offset_type;
151
152DEF_VEC_I (offset_type);
153
156942c7
DE
154/* Ensure only legit values are used. */
155#define DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE(cu_index, value) \
156 do { \
157 gdb_assert ((unsigned int) (value) <= 1); \
158 GDB_INDEX_SYMBOL_STATIC_SET_VALUE((cu_index), (value)); \
159 } while (0)
160
161/* Ensure only legit values are used. */
162#define DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE(cu_index, value) \
163 do { \
164 gdb_assert ((value) >= GDB_INDEX_SYMBOL_KIND_TYPE \
165 && (value) <= GDB_INDEX_SYMBOL_KIND_OTHER); \
166 GDB_INDEX_SYMBOL_KIND_SET_VALUE((cu_index), (value)); \
167 } while (0)
168
169/* Ensure we don't use more than the alloted nuber of bits for the CU. */
170#define DW2_GDB_INDEX_CU_SET_VALUE(cu_index, value) \
171 do { \
172 gdb_assert (((value) & ~GDB_INDEX_CU_MASK) == 0); \
173 GDB_INDEX_CU_SET_VALUE((cu_index), (value)); \
174 } while (0)
175
9291a0cd
TT
176/* A description of the mapped index. The file format is described in
177 a comment by the code that writes the index. */
178struct mapped_index
179{
559a7a62
JK
180 /* Index data format version. */
181 int version;
182
9291a0cd
TT
183 /* The total length of the buffer. */
184 off_t total_size;
b11b1f88 185
9291a0cd
TT
186 /* A pointer to the address table data. */
187 const gdb_byte *address_table;
b11b1f88 188
9291a0cd
TT
189 /* Size of the address table data in bytes. */
190 offset_type address_table_size;
b11b1f88 191
3876f04e
DE
192 /* The symbol table, implemented as a hash table. */
193 const offset_type *symbol_table;
b11b1f88 194
9291a0cd 195 /* Size in slots, each slot is 2 offset_types. */
3876f04e 196 offset_type symbol_table_slots;
b11b1f88 197
9291a0cd
TT
198 /* A pointer to the constant pool. */
199 const char *constant_pool;
200};
201
95554aad
TT
202typedef struct dwarf2_per_cu_data *dwarf2_per_cu_ptr;
203DEF_VEC_P (dwarf2_per_cu_ptr);
204
52059ffd
TT
205struct tu_stats
206{
207 int nr_uniq_abbrev_tables;
208 int nr_symtabs;
209 int nr_symtab_sharers;
210 int nr_stmt_less_type_units;
211 int nr_all_type_units_reallocs;
212};
213
9cdd5dbd
DE
214/* Collection of data recorded per objfile.
215 This hangs off of dwarf2_objfile_data_key. */
216
6502dd73
DJ
217struct dwarf2_per_objfile
218{
dce234bc
PP
219 struct dwarf2_section_info info;
220 struct dwarf2_section_info abbrev;
221 struct dwarf2_section_info line;
dce234bc
PP
222 struct dwarf2_section_info loc;
223 struct dwarf2_section_info macinfo;
cf2c3c16 224 struct dwarf2_section_info macro;
dce234bc
PP
225 struct dwarf2_section_info str;
226 struct dwarf2_section_info ranges;
3019eac3 227 struct dwarf2_section_info addr;
dce234bc
PP
228 struct dwarf2_section_info frame;
229 struct dwarf2_section_info eh_frame;
9291a0cd 230 struct dwarf2_section_info gdb_index;
ae038cb0 231
8b70b953
TT
232 VEC (dwarf2_section_info_def) *types;
233
be391dca
TT
234 /* Back link. */
235 struct objfile *objfile;
236
d467dd73 237 /* Table of all the compilation units. This is used to locate
10b3939b 238 the target compilation unit of a particular reference. */
ae038cb0
DJ
239 struct dwarf2_per_cu_data **all_comp_units;
240
241 /* The number of compilation units in ALL_COMP_UNITS. */
242 int n_comp_units;
243
1fd400ff 244 /* The number of .debug_types-related CUs. */
d467dd73 245 int n_type_units;
1fd400ff 246
6aa5f3a6
DE
247 /* The number of elements allocated in all_type_units.
248 If there are skeleton-less TUs, we add them to all_type_units lazily. */
249 int n_allocated_type_units;
250
a2ce51a0
DE
251 /* The .debug_types-related CUs (TUs).
252 This is stored in malloc space because we may realloc it. */
b4dd5633 253 struct signatured_type **all_type_units;
1fd400ff 254
f4dc4d17
DE
255 /* Table of struct type_unit_group objects.
256 The hash key is the DW_AT_stmt_list value. */
257 htab_t type_unit_groups;
72dca2f5 258
348e048f
DE
259 /* A table mapping .debug_types signatures to its signatured_type entry.
260 This is NULL if the .debug_types section hasn't been read in yet. */
261 htab_t signatured_types;
262
f4dc4d17
DE
263 /* Type unit statistics, to see how well the scaling improvements
264 are doing. */
52059ffd 265 struct tu_stats tu_stats;
f4dc4d17
DE
266
267 /* A chain of compilation units that are currently read in, so that
268 they can be freed later. */
269 struct dwarf2_per_cu_data *read_in_chain;
270
3019eac3
DE
271 /* A table mapping DW_AT_dwo_name values to struct dwo_file objects.
272 This is NULL if the table hasn't been allocated yet. */
273 htab_t dwo_files;
274
80626a55
DE
275 /* Non-zero if we've check for whether there is a DWP file. */
276 int dwp_checked;
277
278 /* The DWP file if there is one, or NULL. */
279 struct dwp_file *dwp_file;
280
36586728
TT
281 /* The shared '.dwz' file, if one exists. This is used when the
282 original data was compressed using 'dwz -m'. */
283 struct dwz_file *dwz_file;
284
72dca2f5
FR
285 /* A flag indicating wether this objfile has a section loaded at a
286 VMA of 0. */
287 int has_section_at_zero;
9291a0cd 288
ae2de4f8
DE
289 /* True if we are using the mapped index,
290 or we are faking it for OBJF_READNOW's sake. */
9291a0cd
TT
291 unsigned char using_index;
292
ae2de4f8 293 /* The mapped index, or NULL if .gdb_index is missing or not being used. */
9291a0cd 294 struct mapped_index *index_table;
98bfdba5 295
7b9f3c50 296 /* When using index_table, this keeps track of all quick_file_names entries.
56e64610
DE
297 TUs typically share line table entries with a CU, so we maintain a
298 separate table of all line table entries to support the sharing.
299 Note that while there can be way more TUs than CUs, we've already
300 sorted all the TUs into "type unit groups", grouped by their
301 DW_AT_stmt_list value. Therefore the only sharing done here is with a
302 CU and its associated TU group if there is one. */
7b9f3c50
DE
303 htab_t quick_file_names_table;
304
98bfdba5
PA
305 /* Set during partial symbol reading, to prevent queueing of full
306 symbols. */
307 int reading_partial_symbols;
673bfd45 308
dee91e82 309 /* Table mapping type DIEs to their struct type *.
673bfd45 310 This is NULL if not allocated yet.
02142a6c 311 The mapping is done via (CU/TU + DIE offset) -> type. */
dee91e82 312 htab_t die_type_hash;
95554aad
TT
313
314 /* The CUs we recently read. */
315 VEC (dwarf2_per_cu_ptr) *just_read_cus;
527f3840
JK
316
317 /* Table containing line_header indexed by offset and offset_in_dwz. */
318 htab_t line_header_hash;
6502dd73
DJ
319};
320
321static struct dwarf2_per_objfile *dwarf2_per_objfile;
c906108c 322
251d32d9 323/* Default names of the debugging sections. */
c906108c 324
233a11ab
CS
325/* Note that if the debugging section has been compressed, it might
326 have a name like .zdebug_info. */
327
9cdd5dbd
DE
328static const struct dwarf2_debug_sections dwarf2_elf_names =
329{
251d32d9
TG
330 { ".debug_info", ".zdebug_info" },
331 { ".debug_abbrev", ".zdebug_abbrev" },
332 { ".debug_line", ".zdebug_line" },
333 { ".debug_loc", ".zdebug_loc" },
334 { ".debug_macinfo", ".zdebug_macinfo" },
cf2c3c16 335 { ".debug_macro", ".zdebug_macro" },
251d32d9
TG
336 { ".debug_str", ".zdebug_str" },
337 { ".debug_ranges", ".zdebug_ranges" },
338 { ".debug_types", ".zdebug_types" },
3019eac3 339 { ".debug_addr", ".zdebug_addr" },
251d32d9
TG
340 { ".debug_frame", ".zdebug_frame" },
341 { ".eh_frame", NULL },
24d3216f
TT
342 { ".gdb_index", ".zgdb_index" },
343 23
251d32d9 344};
c906108c 345
80626a55 346/* List of DWO/DWP sections. */
3019eac3 347
80626a55 348static const struct dwop_section_names
3019eac3
DE
349{
350 struct dwarf2_section_names abbrev_dwo;
351 struct dwarf2_section_names info_dwo;
352 struct dwarf2_section_names line_dwo;
353 struct dwarf2_section_names loc_dwo;
09262596
DE
354 struct dwarf2_section_names macinfo_dwo;
355 struct dwarf2_section_names macro_dwo;
3019eac3
DE
356 struct dwarf2_section_names str_dwo;
357 struct dwarf2_section_names str_offsets_dwo;
358 struct dwarf2_section_names types_dwo;
80626a55
DE
359 struct dwarf2_section_names cu_index;
360 struct dwarf2_section_names tu_index;
3019eac3 361}
80626a55 362dwop_section_names =
3019eac3
DE
363{
364 { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
365 { ".debug_info.dwo", ".zdebug_info.dwo" },
366 { ".debug_line.dwo", ".zdebug_line.dwo" },
367 { ".debug_loc.dwo", ".zdebug_loc.dwo" },
09262596
DE
368 { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
369 { ".debug_macro.dwo", ".zdebug_macro.dwo" },
3019eac3
DE
370 { ".debug_str.dwo", ".zdebug_str.dwo" },
371 { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
372 { ".debug_types.dwo", ".zdebug_types.dwo" },
80626a55
DE
373 { ".debug_cu_index", ".zdebug_cu_index" },
374 { ".debug_tu_index", ".zdebug_tu_index" },
3019eac3
DE
375};
376
c906108c
SS
377/* local data types */
378
107d2387
AC
379/* The data in a compilation unit header, after target2host
380 translation, looks like this. */
c906108c 381struct comp_unit_head
a738430d 382{
c764a876 383 unsigned int length;
a738430d 384 short version;
a738430d
MK
385 unsigned char addr_size;
386 unsigned char signed_addr_p;
b64f50a1 387 sect_offset abbrev_offset;
57349743 388
a738430d
MK
389 /* Size of file offsets; either 4 or 8. */
390 unsigned int offset_size;
57349743 391
a738430d
MK
392 /* Size of the length field; either 4 or 12. */
393 unsigned int initial_length_size;
57349743 394
a738430d
MK
395 /* Offset to the first byte of this compilation unit header in the
396 .debug_info section, for resolving relative reference dies. */
b64f50a1 397 sect_offset offset;
57349743 398
d00adf39
DE
399 /* Offset to first die in this cu from the start of the cu.
400 This will be the first byte following the compilation unit header. */
b64f50a1 401 cu_offset first_die_offset;
a738430d 402};
c906108c 403
3da10d80
KS
404/* Type used for delaying computation of method physnames.
405 See comments for compute_delayed_physnames. */
406struct delayed_method_info
407{
408 /* The type to which the method is attached, i.e., its parent class. */
409 struct type *type;
410
411 /* The index of the method in the type's function fieldlists. */
412 int fnfield_index;
413
414 /* The index of the method in the fieldlist. */
415 int index;
416
417 /* The name of the DIE. */
418 const char *name;
419
420 /* The DIE associated with this method. */
421 struct die_info *die;
422};
423
424typedef struct delayed_method_info delayed_method_info;
425DEF_VEC_O (delayed_method_info);
426
e7c27a73
DJ
427/* Internal state when decoding a particular compilation unit. */
428struct dwarf2_cu
429{
430 /* The objfile containing this compilation unit. */
431 struct objfile *objfile;
432
d00adf39 433 /* The header of the compilation unit. */
e7c27a73 434 struct comp_unit_head header;
e142c38c 435
d00adf39
DE
436 /* Base address of this compilation unit. */
437 CORE_ADDR base_address;
438
439 /* Non-zero if base_address has been set. */
440 int base_known;
441
e142c38c
DJ
442 /* The language we are debugging. */
443 enum language language;
444 const struct language_defn *language_defn;
445
b0f35d58
DL
446 const char *producer;
447
e142c38c
DJ
448 /* The generic symbol table building routines have separate lists for
449 file scope symbols and all all other scopes (local scopes). So
450 we need to select the right one to pass to add_symbol_to_list().
451 We do it by keeping a pointer to the correct list in list_in_scope.
452
453 FIXME: The original dwarf code just treated the file scope as the
454 first local scope, and all other local scopes as nested local
455 scopes, and worked fine. Check to see if we really need to
456 distinguish these in buildsym.c. */
457 struct pending **list_in_scope;
458
433df2d4
DE
459 /* The abbrev table for this CU.
460 Normally this points to the abbrev table in the objfile.
461 But if DWO_UNIT is non-NULL this is the abbrev table in the DWO file. */
462 struct abbrev_table *abbrev_table;
72bf9492 463
b64f50a1
JK
464 /* Hash table holding all the loaded partial DIEs
465 with partial_die->offset.SECT_OFF as hash. */
72bf9492
DJ
466 htab_t partial_dies;
467
468 /* Storage for things with the same lifetime as this read-in compilation
469 unit, including partial DIEs. */
470 struct obstack comp_unit_obstack;
471
ae038cb0
DJ
472 /* When multiple dwarf2_cu structures are living in memory, this field
473 chains them all together, so that they can be released efficiently.
474 We will probably also want a generation counter so that most-recently-used
475 compilation units are cached... */
476 struct dwarf2_per_cu_data *read_in_chain;
477
69d751e3 478 /* Backlink to our per_cu entry. */
ae038cb0
DJ
479 struct dwarf2_per_cu_data *per_cu;
480
481 /* How many compilation units ago was this CU last referenced? */
482 int last_used;
483
b64f50a1
JK
484 /* A hash table of DIE cu_offset for following references with
485 die_info->offset.sect_off as hash. */
51545339 486 htab_t die_hash;
10b3939b
DJ
487
488 /* Full DIEs if read in. */
489 struct die_info *dies;
490
491 /* A set of pointers to dwarf2_per_cu_data objects for compilation
492 units referenced by this one. Only set during full symbol processing;
493 partial symbol tables do not have dependencies. */
494 htab_t dependencies;
495
cb1df416
DJ
496 /* Header data from the line table, during full symbol processing. */
497 struct line_header *line_header;
498
3da10d80
KS
499 /* A list of methods which need to have physnames computed
500 after all type information has been read. */
501 VEC (delayed_method_info) *method_list;
502
96408a79
SA
503 /* To be copied to symtab->call_site_htab. */
504 htab_t call_site_htab;
505
034e5797
DE
506 /* Non-NULL if this CU came from a DWO file.
507 There is an invariant here that is important to remember:
508 Except for attributes copied from the top level DIE in the "main"
509 (or "stub") file in preparation for reading the DWO file
510 (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
511 Either there isn't a DWO file (in which case this is NULL and the point
512 is moot), or there is and either we're not going to read it (in which
513 case this is NULL) or there is and we are reading it (in which case this
514 is non-NULL). */
3019eac3
DE
515 struct dwo_unit *dwo_unit;
516
517 /* The DW_AT_addr_base attribute if present, zero otherwise
518 (zero is a valid value though).
1dbab08b 519 Note this value comes from the Fission stub CU/TU's DIE. */
3019eac3
DE
520 ULONGEST addr_base;
521
2e3cf129
DE
522 /* The DW_AT_ranges_base attribute if present, zero otherwise
523 (zero is a valid value though).
1dbab08b 524 Note this value comes from the Fission stub CU/TU's DIE.
2e3cf129 525 Also note that the value is zero in the non-DWO case so this value can
ab435259
DE
526 be used without needing to know whether DWO files are in use or not.
527 N.B. This does not apply to DW_AT_ranges appearing in
528 DW_TAG_compile_unit dies. This is a bit of a wart, consider if ever
529 DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
530 DW_AT_ranges_base *would* have to be applied, and we'd have to care
531 whether the DW_AT_ranges attribute came from the skeleton or DWO. */
2e3cf129
DE
532 ULONGEST ranges_base;
533
ae038cb0
DJ
534 /* Mark used when releasing cached dies. */
535 unsigned int mark : 1;
536
8be455d7
JK
537 /* This CU references .debug_loc. See the symtab->locations_valid field.
538 This test is imperfect as there may exist optimized debug code not using
539 any location list and still facing inlining issues if handled as
540 unoptimized code. For a future better test see GCC PR other/32998. */
8be455d7 541 unsigned int has_loclist : 1;
ba919b58 542
1b80a9fa
JK
543 /* These cache the results for producer_is_* fields. CHECKED_PRODUCER is set
544 if all the producer_is_* fields are valid. This information is cached
545 because profiling CU expansion showed excessive time spent in
546 producer_is_gxx_lt_4_6. */
ba919b58
TT
547 unsigned int checked_producer : 1;
548 unsigned int producer_is_gxx_lt_4_6 : 1;
1b80a9fa 549 unsigned int producer_is_gcc_lt_4_3 : 1;
685b1105 550 unsigned int producer_is_icc : 1;
4d4ec4e5
TT
551
552 /* When set, the file that we're processing is known to have
553 debugging info for C++ namespaces. GCC 3.3.x did not produce
554 this information, but later versions do. */
555
556 unsigned int processing_has_namespace_info : 1;
e7c27a73
DJ
557};
558
10b3939b
DJ
559/* Persistent data held for a compilation unit, even when not
560 processing it. We put a pointer to this structure in the
28dee7f5 561 read_symtab_private field of the psymtab. */
10b3939b 562
ae038cb0
DJ
563struct dwarf2_per_cu_data
564{
36586728 565 /* The start offset and length of this compilation unit.
45452591 566 NOTE: Unlike comp_unit_head.length, this length includes
3019eac3
DE
567 initial_length_size.
568 If the DIE refers to a DWO file, this is always of the original die,
569 not the DWO file. */
b64f50a1 570 sect_offset offset;
36586728 571 unsigned int length;
ae038cb0
DJ
572
573 /* Flag indicating this compilation unit will be read in before
574 any of the current compilation units are processed. */
c764a876 575 unsigned int queued : 1;
ae038cb0 576
0d99eb77
DE
577 /* This flag will be set when reading partial DIEs if we need to load
578 absolutely all DIEs for this compilation unit, instead of just the ones
579 we think are interesting. It gets set if we look for a DIE in the
5afb4e99
DJ
580 hash table and don't find it. */
581 unsigned int load_all_dies : 1;
582
0186c6a7
DE
583 /* Non-zero if this CU is from .debug_types.
584 Struct dwarf2_per_cu_data is contained in struct signatured_type iff
585 this is non-zero. */
3019eac3
DE
586 unsigned int is_debug_types : 1;
587
36586728
TT
588 /* Non-zero if this CU is from the .dwz file. */
589 unsigned int is_dwz : 1;
590
a2ce51a0
DE
591 /* Non-zero if reading a TU directly from a DWO file, bypassing the stub.
592 This flag is only valid if is_debug_types is true.
593 We can't read a CU directly from a DWO file: There are required
594 attributes in the stub. */
595 unsigned int reading_dwo_directly : 1;
596
7ee85ab1
DE
597 /* Non-zero if the TU has been read.
598 This is used to assist the "Stay in DWO Optimization" for Fission:
599 When reading a DWO, it's faster to read TUs from the DWO instead of
600 fetching them from random other DWOs (due to comdat folding).
601 If the TU has already been read, the optimization is unnecessary
602 (and unwise - we don't want to change where gdb thinks the TU lives
603 "midflight").
604 This flag is only valid if is_debug_types is true. */
605 unsigned int tu_read : 1;
606
3019eac3
DE
607 /* The section this CU/TU lives in.
608 If the DIE refers to a DWO file, this is always the original die,
609 not the DWO file. */
8a0459fd 610 struct dwarf2_section_info *section;
348e048f 611
17ea53c3 612 /* Set to non-NULL iff this CU is currently loaded. When it gets freed out
cc12ce38
DE
613 of the CU cache it gets reset to NULL again. This is left as NULL for
614 dummy CUs (a CU header, but nothing else). */
ae038cb0 615 struct dwarf2_cu *cu;
1c379e20 616
9cdd5dbd
DE
617 /* The corresponding objfile.
618 Normally we can get the objfile from dwarf2_per_objfile.
619 However we can enter this file with just a "per_cu" handle. */
9291a0cd
TT
620 struct objfile *objfile;
621
fffbe6a8
YQ
622 /* When dwarf2_per_objfile->using_index is true, the 'quick' field
623 is active. Otherwise, the 'psymtab' field is active. */
9291a0cd
TT
624 union
625 {
626 /* The partial symbol table associated with this compilation unit,
95554aad 627 or NULL for unread partial units. */
9291a0cd
TT
628 struct partial_symtab *psymtab;
629
630 /* Data needed by the "quick" functions. */
631 struct dwarf2_per_cu_quick_data *quick;
632 } v;
95554aad 633
796a7ff8
DE
634 /* The CUs we import using DW_TAG_imported_unit. This is filled in
635 while reading psymtabs, used to compute the psymtab dependencies,
636 and then cleared. Then it is filled in again while reading full
637 symbols, and only deleted when the objfile is destroyed.
638
639 This is also used to work around a difference between the way gold
640 generates .gdb_index version <=7 and the way gdb does. Arguably this
641 is a gold bug. For symbols coming from TUs, gold records in the index
642 the CU that includes the TU instead of the TU itself. This breaks
643 dw2_lookup_symbol: It assumes that if the index says symbol X lives
644 in CU/TU Y, then one need only expand Y and a subsequent lookup in Y
645 will find X. Alas TUs live in their own symtab, so after expanding CU Y
646 we need to look in TU Z to find X. Fortunately, this is akin to
647 DW_TAG_imported_unit, so we just use the same mechanism: For
648 .gdb_index version <=7 this also records the TUs that the CU referred
649 to. Concurrently with this change gdb was modified to emit version 8
69d751e3
DE
650 indices so we only pay a price for gold generated indices.
651 http://sourceware.org/bugzilla/show_bug.cgi?id=15021. */
796a7ff8 652 VEC (dwarf2_per_cu_ptr) *imported_symtabs;
ae038cb0
DJ
653};
654
348e048f
DE
655/* Entry in the signatured_types hash table. */
656
657struct signatured_type
658{
42e7ad6c 659 /* The "per_cu" object of this type.
ac9ec31b 660 This struct is used iff per_cu.is_debug_types.
42e7ad6c
DE
661 N.B.: This is the first member so that it's easy to convert pointers
662 between them. */
663 struct dwarf2_per_cu_data per_cu;
664
3019eac3 665 /* The type's signature. */
348e048f
DE
666 ULONGEST signature;
667
3019eac3 668 /* Offset in the TU of the type's DIE, as read from the TU header.
c88ee1f0
DE
669 If this TU is a DWO stub and the definition lives in a DWO file
670 (specified by DW_AT_GNU_dwo_name), this value is unusable. */
3019eac3
DE
671 cu_offset type_offset_in_tu;
672
673 /* Offset in the section of the type's DIE.
674 If the definition lives in a DWO file, this is the offset in the
675 .debug_types.dwo section.
676 The value is zero until the actual value is known.
677 Zero is otherwise not a valid section offset. */
678 sect_offset type_offset_in_section;
0186c6a7
DE
679
680 /* Type units are grouped by their DW_AT_stmt_list entry so that they
681 can share them. This points to the containing symtab. */
682 struct type_unit_group *type_unit_group;
ac9ec31b
DE
683
684 /* The type.
685 The first time we encounter this type we fully read it in and install it
686 in the symbol tables. Subsequent times we only need the type. */
687 struct type *type;
a2ce51a0
DE
688
689 /* Containing DWO unit.
690 This field is valid iff per_cu.reading_dwo_directly. */
691 struct dwo_unit *dwo_unit;
348e048f
DE
692};
693
0186c6a7
DE
694typedef struct signatured_type *sig_type_ptr;
695DEF_VEC_P (sig_type_ptr);
696
094b34ac
DE
697/* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
698 This includes type_unit_group and quick_file_names. */
699
700struct stmt_list_hash
701{
702 /* The DWO unit this table is from or NULL if there is none. */
703 struct dwo_unit *dwo_unit;
704
705 /* Offset in .debug_line or .debug_line.dwo. */
706 sect_offset line_offset;
707};
708
f4dc4d17
DE
709/* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
710 an object of this type. */
711
712struct type_unit_group
713{
0186c6a7 714 /* dwarf2read.c's main "handle" on a TU symtab.
f4dc4d17
DE
715 To simplify things we create an artificial CU that "includes" all the
716 type units using this stmt_list so that the rest of the code still has
717 a "per_cu" handle on the symtab.
718 This PER_CU is recognized by having no section. */
8a0459fd 719#define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
094b34ac
DE
720 struct dwarf2_per_cu_data per_cu;
721
0186c6a7
DE
722 /* The TUs that share this DW_AT_stmt_list entry.
723 This is added to while parsing type units to build partial symtabs,
724 and is deleted afterwards and not used again. */
725 VEC (sig_type_ptr) *tus;
f4dc4d17 726
43f3e411 727 /* The compunit symtab.
094b34ac 728 Type units in a group needn't all be defined in the same source file,
43f3e411
DE
729 so we create an essentially anonymous symtab as the compunit symtab. */
730 struct compunit_symtab *compunit_symtab;
f4dc4d17 731
094b34ac
DE
732 /* The data used to construct the hash key. */
733 struct stmt_list_hash hash;
f4dc4d17
DE
734
735 /* The number of symtabs from the line header.
736 The value here must match line_header.num_file_names. */
737 unsigned int num_symtabs;
738
739 /* The symbol tables for this TU (obtained from the files listed in
740 DW_AT_stmt_list).
741 WARNING: The order of entries here must match the order of entries
742 in the line header. After the first TU using this type_unit_group, the
743 line header for the subsequent TUs is recreated from this. This is done
744 because we need to use the same symtabs for each TU using the same
745 DW_AT_stmt_list value. Also note that symtabs may be repeated here,
746 there's no guarantee the line header doesn't have duplicate entries. */
747 struct symtab **symtabs;
748};
749
73869dc2 750/* These sections are what may appear in a (real or virtual) DWO file. */
3019eac3
DE
751
752struct dwo_sections
753{
754 struct dwarf2_section_info abbrev;
3019eac3
DE
755 struct dwarf2_section_info line;
756 struct dwarf2_section_info loc;
09262596
DE
757 struct dwarf2_section_info macinfo;
758 struct dwarf2_section_info macro;
3019eac3
DE
759 struct dwarf2_section_info str;
760 struct dwarf2_section_info str_offsets;
80626a55
DE
761 /* In the case of a virtual DWO file, these two are unused. */
762 struct dwarf2_section_info info;
3019eac3
DE
763 VEC (dwarf2_section_info_def) *types;
764};
765
c88ee1f0 766/* CUs/TUs in DWP/DWO files. */
3019eac3
DE
767
768struct dwo_unit
769{
770 /* Backlink to the containing struct dwo_file. */
771 struct dwo_file *dwo_file;
772
773 /* The "id" that distinguishes this CU/TU.
774 .debug_info calls this "dwo_id", .debug_types calls this "signature".
775 Since signatures came first, we stick with it for consistency. */
776 ULONGEST signature;
777
778 /* The section this CU/TU lives in, in the DWO file. */
8a0459fd 779 struct dwarf2_section_info *section;
3019eac3 780
19ac8c2e 781 /* Same as dwarf2_per_cu_data:{offset,length} but in the DWO section. */
3019eac3
DE
782 sect_offset offset;
783 unsigned int length;
784
785 /* For types, offset in the type's DIE of the type defined by this TU. */
786 cu_offset type_offset_in_tu;
787};
788
73869dc2
DE
789/* include/dwarf2.h defines the DWP section codes.
790 It defines a max value but it doesn't define a min value, which we
791 use for error checking, so provide one. */
792
793enum dwp_v2_section_ids
794{
795 DW_SECT_MIN = 1
796};
797
80626a55 798/* Data for one DWO file.
57d63ce2
DE
799
800 This includes virtual DWO files (a virtual DWO file is a DWO file as it
801 appears in a DWP file). DWP files don't really have DWO files per se -
802 comdat folding of types "loses" the DWO file they came from, and from
803 a high level view DWP files appear to contain a mass of random types.
804 However, to maintain consistency with the non-DWP case we pretend DWP
805 files contain virtual DWO files, and we assign each TU with one virtual
806 DWO file (generally based on the line and abbrev section offsets -
807 a heuristic that seems to work in practice). */
3019eac3
DE
808
809struct dwo_file
810{
0ac5b59e 811 /* The DW_AT_GNU_dwo_name attribute.
80626a55
DE
812 For virtual DWO files the name is constructed from the section offsets
813 of abbrev,line,loc,str_offsets so that we combine virtual DWO files
814 from related CU+TUs. */
0ac5b59e
DE
815 const char *dwo_name;
816
817 /* The DW_AT_comp_dir attribute. */
818 const char *comp_dir;
3019eac3 819
80626a55
DE
820 /* The bfd, when the file is open. Otherwise this is NULL.
821 This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd. */
822 bfd *dbfd;
3019eac3 823
73869dc2
DE
824 /* The sections that make up this DWO file.
825 Remember that for virtual DWO files in DWP V2, these are virtual
826 sections (for lack of a better name). */
3019eac3
DE
827 struct dwo_sections sections;
828
19c3d4c9
DE
829 /* The CU in the file.
830 We only support one because having more than one requires hacking the
831 dwo_name of each to match, which is highly unlikely to happen.
832 Doing this means all TUs can share comp_dir: We also assume that
833 DW_AT_comp_dir across all TUs in a DWO file will be identical. */
834 struct dwo_unit *cu;
3019eac3
DE
835
836 /* Table of TUs in the file.
837 Each element is a struct dwo_unit. */
838 htab_t tus;
839};
840
80626a55
DE
841/* These sections are what may appear in a DWP file. */
842
843struct dwp_sections
844{
73869dc2 845 /* These are used by both DWP version 1 and 2. */
80626a55
DE
846 struct dwarf2_section_info str;
847 struct dwarf2_section_info cu_index;
848 struct dwarf2_section_info tu_index;
73869dc2
DE
849
850 /* These are only used by DWP version 2 files.
851 In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
852 sections are referenced by section number, and are not recorded here.
853 In DWP version 2 there is at most one copy of all these sections, each
854 section being (effectively) comprised of the concatenation of all of the
855 individual sections that exist in the version 1 format.
856 To keep the code simple we treat each of these concatenated pieces as a
857 section itself (a virtual section?). */
858 struct dwarf2_section_info abbrev;
859 struct dwarf2_section_info info;
860 struct dwarf2_section_info line;
861 struct dwarf2_section_info loc;
862 struct dwarf2_section_info macinfo;
863 struct dwarf2_section_info macro;
864 struct dwarf2_section_info str_offsets;
865 struct dwarf2_section_info types;
80626a55
DE
866};
867
73869dc2
DE
868/* These sections are what may appear in a virtual DWO file in DWP version 1.
869 A virtual DWO file is a DWO file as it appears in a DWP file. */
80626a55 870
73869dc2 871struct virtual_v1_dwo_sections
80626a55
DE
872{
873 struct dwarf2_section_info abbrev;
874 struct dwarf2_section_info line;
875 struct dwarf2_section_info loc;
876 struct dwarf2_section_info macinfo;
877 struct dwarf2_section_info macro;
878 struct dwarf2_section_info str_offsets;
879 /* Each DWP hash table entry records one CU or one TU.
8a0459fd 880 That is recorded here, and copied to dwo_unit.section. */
80626a55
DE
881 struct dwarf2_section_info info_or_types;
882};
883
73869dc2
DE
884/* Similar to virtual_v1_dwo_sections, but for DWP version 2.
885 In version 2, the sections of the DWO files are concatenated together
886 and stored in one section of that name. Thus each ELF section contains
887 several "virtual" sections. */
888
889struct virtual_v2_dwo_sections
890{
891 bfd_size_type abbrev_offset;
892 bfd_size_type abbrev_size;
893
894 bfd_size_type line_offset;
895 bfd_size_type line_size;
896
897 bfd_size_type loc_offset;
898 bfd_size_type loc_size;
899
900 bfd_size_type macinfo_offset;
901 bfd_size_type macinfo_size;
902
903 bfd_size_type macro_offset;
904 bfd_size_type macro_size;
905
906 bfd_size_type str_offsets_offset;
907 bfd_size_type str_offsets_size;
908
909 /* Each DWP hash table entry records one CU or one TU.
910 That is recorded here, and copied to dwo_unit.section. */
911 bfd_size_type info_or_types_offset;
912 bfd_size_type info_or_types_size;
913};
914
80626a55
DE
915/* Contents of DWP hash tables. */
916
917struct dwp_hash_table
918{
73869dc2 919 uint32_t version, nr_columns;
80626a55 920 uint32_t nr_units, nr_slots;
73869dc2
DE
921 const gdb_byte *hash_table, *unit_table;
922 union
923 {
924 struct
925 {
926 const gdb_byte *indices;
927 } v1;
928 struct
929 {
930 /* This is indexed by column number and gives the id of the section
931 in that column. */
932#define MAX_NR_V2_DWO_SECTIONS \
933 (1 /* .debug_info or .debug_types */ \
934 + 1 /* .debug_abbrev */ \
935 + 1 /* .debug_line */ \
936 + 1 /* .debug_loc */ \
937 + 1 /* .debug_str_offsets */ \
938 + 1 /* .debug_macro or .debug_macinfo */)
939 int section_ids[MAX_NR_V2_DWO_SECTIONS];
940 const gdb_byte *offsets;
941 const gdb_byte *sizes;
942 } v2;
943 } section_pool;
80626a55
DE
944};
945
946/* Data for one DWP file. */
947
948struct dwp_file
949{
950 /* Name of the file. */
951 const char *name;
952
73869dc2
DE
953 /* File format version. */
954 int version;
955
93417882 956 /* The bfd. */
80626a55
DE
957 bfd *dbfd;
958
959 /* Section info for this file. */
960 struct dwp_sections sections;
961
57d63ce2 962 /* Table of CUs in the file. */
80626a55
DE
963 const struct dwp_hash_table *cus;
964
965 /* Table of TUs in the file. */
966 const struct dwp_hash_table *tus;
967
19ac8c2e
DE
968 /* Tables of loaded CUs/TUs. Each entry is a struct dwo_unit *. */
969 htab_t loaded_cus;
970 htab_t loaded_tus;
80626a55 971
73869dc2
DE
972 /* Table to map ELF section numbers to their sections.
973 This is only needed for the DWP V1 file format. */
80626a55
DE
974 unsigned int num_sections;
975 asection **elf_sections;
976};
977
36586728
TT
978/* This represents a '.dwz' file. */
979
980struct dwz_file
981{
982 /* A dwz file can only contain a few sections. */
983 struct dwarf2_section_info abbrev;
984 struct dwarf2_section_info info;
985 struct dwarf2_section_info str;
986 struct dwarf2_section_info line;
987 struct dwarf2_section_info macro;
2ec9a5e0 988 struct dwarf2_section_info gdb_index;
36586728
TT
989
990 /* The dwz's BFD. */
991 bfd *dwz_bfd;
992};
993
0963b4bd
MS
994/* Struct used to pass misc. parameters to read_die_and_children, et
995 al. which are used for both .debug_info and .debug_types dies.
996 All parameters here are unchanging for the life of the call. This
dee91e82 997 struct exists to abstract away the constant parameters of die reading. */
93311388
DE
998
999struct die_reader_specs
1000{
a32a8923 1001 /* The bfd of die_section. */
93311388
DE
1002 bfd* abfd;
1003
1004 /* The CU of the DIE we are parsing. */
1005 struct dwarf2_cu *cu;
1006
80626a55 1007 /* Non-NULL if reading a DWO file (including one packaged into a DWP). */
3019eac3
DE
1008 struct dwo_file *dwo_file;
1009
dee91e82 1010 /* The section the die comes from.
3019eac3 1011 This is either .debug_info or .debug_types, or the .dwo variants. */
dee91e82
DE
1012 struct dwarf2_section_info *die_section;
1013
1014 /* die_section->buffer. */
d521ce57 1015 const gdb_byte *buffer;
f664829e
DE
1016
1017 /* The end of the buffer. */
1018 const gdb_byte *buffer_end;
a2ce51a0
DE
1019
1020 /* The value of the DW_AT_comp_dir attribute. */
1021 const char *comp_dir;
93311388
DE
1022};
1023
fd820528 1024/* Type of function passed to init_cutu_and_read_dies, et.al. */
dee91e82 1025typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
d521ce57 1026 const gdb_byte *info_ptr,
dee91e82
DE
1027 struct die_info *comp_unit_die,
1028 int has_children,
1029 void *data);
1030
52059ffd
TT
1031struct file_entry
1032{
1033 const char *name;
1034 unsigned int dir_index;
1035 unsigned int mod_time;
1036 unsigned int length;
83769d0b
DE
1037 /* Non-zero if referenced by the Line Number Program. */
1038 int included_p;
1039 /* The associated symbol table, if any. */
1040 struct symtab *symtab;
52059ffd
TT
1041};
1042
debd256d
JB
1043/* The line number information for a compilation unit (found in the
1044 .debug_line section) begins with a "statement program header",
1045 which contains the following information. */
1046struct line_header
1047{
527f3840
JK
1048 /* Offset of line number information in .debug_line section. */
1049 sect_offset offset;
1050
1051 /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile. */
1052 unsigned offset_in_dwz : 1;
1053
debd256d
JB
1054 unsigned int total_length;
1055 unsigned short version;
1056 unsigned int header_length;
1057 unsigned char minimum_instruction_length;
2dc7f7b3 1058 unsigned char maximum_ops_per_instruction;
debd256d
JB
1059 unsigned char default_is_stmt;
1060 int line_base;
1061 unsigned char line_range;
1062 unsigned char opcode_base;
1063
1064 /* standard_opcode_lengths[i] is the number of operands for the
1065 standard opcode whose value is i. This means that
1066 standard_opcode_lengths[0] is unused, and the last meaningful
1067 element is standard_opcode_lengths[opcode_base - 1]. */
1068 unsigned char *standard_opcode_lengths;
1069
1070 /* The include_directories table. NOTE! These strings are not
1071 allocated with xmalloc; instead, they are pointers into
1072 debug_line_buffer. If you try to free them, `free' will get
1073 indigestion. */
1074 unsigned int num_include_dirs, include_dirs_size;
d521ce57 1075 const char **include_dirs;
debd256d
JB
1076
1077 /* The file_names table. NOTE! These strings are not allocated
1078 with xmalloc; instead, they are pointers into debug_line_buffer.
1079 Don't try to free them directly. */
1080 unsigned int num_file_names, file_names_size;
52059ffd 1081 struct file_entry *file_names;
debd256d
JB
1082
1083 /* The start and end of the statement program following this
6502dd73 1084 header. These point into dwarf2_per_objfile->line_buffer. */
d521ce57 1085 const gdb_byte *statement_program_start, *statement_program_end;
debd256d 1086};
c906108c
SS
1087
1088/* When we construct a partial symbol table entry we only
0963b4bd 1089 need this much information. */
c906108c
SS
1090struct partial_die_info
1091 {
72bf9492 1092 /* Offset of this DIE. */
b64f50a1 1093 sect_offset offset;
72bf9492
DJ
1094
1095 /* DWARF-2 tag for this DIE. */
1096 ENUM_BITFIELD(dwarf_tag) tag : 16;
1097
72bf9492
DJ
1098 /* Assorted flags describing the data found in this DIE. */
1099 unsigned int has_children : 1;
1100 unsigned int is_external : 1;
1101 unsigned int is_declaration : 1;
1102 unsigned int has_type : 1;
1103 unsigned int has_specification : 1;
1104 unsigned int has_pc_info : 1;
481860b3 1105 unsigned int may_be_inlined : 1;
72bf9492
DJ
1106
1107 /* Flag set if the SCOPE field of this structure has been
1108 computed. */
1109 unsigned int scope_set : 1;
1110
fa4028e9
JB
1111 /* Flag set if the DIE has a byte_size attribute. */
1112 unsigned int has_byte_size : 1;
1113
ff908ebf
AW
1114 /* Flag set if the DIE has a DW_AT_const_value attribute. */
1115 unsigned int has_const_value : 1;
1116
98bfdba5
PA
1117 /* Flag set if any of the DIE's children are template arguments. */
1118 unsigned int has_template_arguments : 1;
1119
abc72ce4
DE
1120 /* Flag set if fixup_partial_die has been called on this die. */
1121 unsigned int fixup_called : 1;
1122
36586728
TT
1123 /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt. */
1124 unsigned int is_dwz : 1;
1125
1126 /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt. */
1127 unsigned int spec_is_dwz : 1;
1128
72bf9492 1129 /* The name of this DIE. Normally the value of DW_AT_name, but
94af9270 1130 sometimes a default name for unnamed DIEs. */
15d034d0 1131 const char *name;
72bf9492 1132
abc72ce4
DE
1133 /* The linkage name, if present. */
1134 const char *linkage_name;
1135
72bf9492
DJ
1136 /* The scope to prepend to our children. This is generally
1137 allocated on the comp_unit_obstack, so will disappear
1138 when this compilation unit leaves the cache. */
15d034d0 1139 const char *scope;
72bf9492 1140
95554aad
TT
1141 /* Some data associated with the partial DIE. The tag determines
1142 which field is live. */
1143 union
1144 {
1145 /* The location description associated with this DIE, if any. */
1146 struct dwarf_block *locdesc;
1147 /* The offset of an import, for DW_TAG_imported_unit. */
1148 sect_offset offset;
1149 } d;
72bf9492
DJ
1150
1151 /* If HAS_PC_INFO, the PC range associated with this DIE. */
c906108c
SS
1152 CORE_ADDR lowpc;
1153 CORE_ADDR highpc;
72bf9492 1154
93311388 1155 /* Pointer into the info_buffer (or types_buffer) pointing at the target of
72bf9492 1156 DW_AT_sibling, if any. */
abc72ce4
DE
1157 /* NOTE: This member isn't strictly necessary, read_partial_die could
1158 return DW_AT_sibling values to its caller load_partial_dies. */
d521ce57 1159 const gdb_byte *sibling;
72bf9492
DJ
1160
1161 /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1162 DW_AT_specification (or DW_AT_abstract_origin or
1163 DW_AT_extension). */
b64f50a1 1164 sect_offset spec_offset;
72bf9492
DJ
1165
1166 /* Pointers to this DIE's parent, first child, and next sibling,
1167 if any. */
1168 struct partial_die_info *die_parent, *die_child, *die_sibling;
c906108c
SS
1169 };
1170
0963b4bd 1171/* This data structure holds the information of an abbrev. */
c906108c
SS
1172struct abbrev_info
1173 {
1174 unsigned int number; /* number identifying abbrev */
1175 enum dwarf_tag tag; /* dwarf tag */
f3dd6933
DJ
1176 unsigned short has_children; /* boolean */
1177 unsigned short num_attrs; /* number of attributes */
c906108c
SS
1178 struct attr_abbrev *attrs; /* an array of attribute descriptions */
1179 struct abbrev_info *next; /* next in chain */
1180 };
1181
1182struct attr_abbrev
1183 {
9d25dd43
DE
1184 ENUM_BITFIELD(dwarf_attribute) name : 16;
1185 ENUM_BITFIELD(dwarf_form) form : 16;
c906108c
SS
1186 };
1187
433df2d4
DE
1188/* Size of abbrev_table.abbrev_hash_table. */
1189#define ABBREV_HASH_SIZE 121
1190
1191/* Top level data structure to contain an abbreviation table. */
1192
1193struct abbrev_table
1194{
f4dc4d17
DE
1195 /* Where the abbrev table came from.
1196 This is used as a sanity check when the table is used. */
433df2d4
DE
1197 sect_offset offset;
1198
1199 /* Storage for the abbrev table. */
1200 struct obstack abbrev_obstack;
1201
1202 /* Hash table of abbrevs.
1203 This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1204 It could be statically allocated, but the previous code didn't so we
1205 don't either. */
1206 struct abbrev_info **abbrevs;
1207};
1208
0963b4bd 1209/* Attributes have a name and a value. */
b60c80d6
DJ
1210struct attribute
1211 {
9d25dd43 1212 ENUM_BITFIELD(dwarf_attribute) name : 16;
8285870a
JK
1213 ENUM_BITFIELD(dwarf_form) form : 15;
1214
1215 /* Has DW_STRING already been updated by dwarf2_canonicalize_name? This
1216 field should be in u.str (existing only for DW_STRING) but it is kept
1217 here for better struct attribute alignment. */
1218 unsigned int string_is_canonical : 1;
1219
b60c80d6
DJ
1220 union
1221 {
15d034d0 1222 const char *str;
b60c80d6 1223 struct dwarf_block *blk;
43bbcdc2
PH
1224 ULONGEST unsnd;
1225 LONGEST snd;
b60c80d6 1226 CORE_ADDR addr;
ac9ec31b 1227 ULONGEST signature;
b60c80d6
DJ
1228 }
1229 u;
1230 };
1231
0963b4bd 1232/* This data structure holds a complete die structure. */
c906108c
SS
1233struct die_info
1234 {
76815b17
DE
1235 /* DWARF-2 tag for this DIE. */
1236 ENUM_BITFIELD(dwarf_tag) tag : 16;
1237
1238 /* Number of attributes */
98bfdba5
PA
1239 unsigned char num_attrs;
1240
1241 /* True if we're presently building the full type name for the
1242 type derived from this DIE. */
1243 unsigned char building_fullname : 1;
76815b17 1244
adde2bff
DE
1245 /* True if this die is in process. PR 16581. */
1246 unsigned char in_process : 1;
1247
76815b17
DE
1248 /* Abbrev number */
1249 unsigned int abbrev;
1250
93311388 1251 /* Offset in .debug_info or .debug_types section. */
b64f50a1 1252 sect_offset offset;
78ba4af6
JB
1253
1254 /* The dies in a compilation unit form an n-ary tree. PARENT
1255 points to this die's parent; CHILD points to the first child of
1256 this node; and all the children of a given node are chained
4950bc1c 1257 together via their SIBLING fields. */
639d11d3
DC
1258 struct die_info *child; /* Its first child, if any. */
1259 struct die_info *sibling; /* Its next sibling, if any. */
1260 struct die_info *parent; /* Its parent, if any. */
c906108c 1261
b60c80d6
DJ
1262 /* An array of attributes, with NUM_ATTRS elements. There may be
1263 zero, but it's not common and zero-sized arrays are not
1264 sufficiently portable C. */
1265 struct attribute attrs[1];
c906108c
SS
1266 };
1267
0963b4bd 1268/* Get at parts of an attribute structure. */
c906108c
SS
1269
1270#define DW_STRING(attr) ((attr)->u.str)
8285870a 1271#define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
c906108c
SS
1272#define DW_UNSND(attr) ((attr)->u.unsnd)
1273#define DW_BLOCK(attr) ((attr)->u.blk)
1274#define DW_SND(attr) ((attr)->u.snd)
1275#define DW_ADDR(attr) ((attr)->u.addr)
ac9ec31b 1276#define DW_SIGNATURE(attr) ((attr)->u.signature)
c906108c 1277
0963b4bd 1278/* Blocks are a bunch of untyped bytes. */
c906108c
SS
1279struct dwarf_block
1280 {
56eb65bd 1281 size_t size;
1d6edc3c
JK
1282
1283 /* Valid only if SIZE is not zero. */
d521ce57 1284 const gdb_byte *data;
c906108c
SS
1285 };
1286
c906108c
SS
1287#ifndef ATTR_ALLOC_CHUNK
1288#define ATTR_ALLOC_CHUNK 4
1289#endif
1290
c906108c
SS
1291/* Allocate fields for structs, unions and enums in this size. */
1292#ifndef DW_FIELD_ALLOC_CHUNK
1293#define DW_FIELD_ALLOC_CHUNK 4
1294#endif
1295
c906108c
SS
1296/* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1297 but this would require a corresponding change in unpack_field_as_long
1298 and friends. */
1299static int bits_per_byte = 8;
1300
52059ffd
TT
1301struct nextfield
1302{
1303 struct nextfield *next;
1304 int accessibility;
1305 int virtuality;
1306 struct field field;
1307};
1308
1309struct nextfnfield
1310{
1311 struct nextfnfield *next;
1312 struct fn_field fnfield;
1313};
1314
1315struct fnfieldlist
1316{
1317 const char *name;
1318 int length;
1319 struct nextfnfield *head;
1320};
1321
1322struct typedef_field_list
1323{
1324 struct typedef_field field;
1325 struct typedef_field_list *next;
1326};
1327
c906108c
SS
1328/* The routines that read and process dies for a C struct or C++ class
1329 pass lists of data member fields and lists of member function fields
1330 in an instance of a field_info structure, as defined below. */
1331struct field_info
c5aa993b 1332 {
0963b4bd 1333 /* List of data member and baseclasses fields. */
52059ffd 1334 struct nextfield *fields, *baseclasses;
c906108c 1335
7d0ccb61 1336 /* Number of fields (including baseclasses). */
c5aa993b 1337 int nfields;
c906108c 1338
c5aa993b
JM
1339 /* Number of baseclasses. */
1340 int nbaseclasses;
c906108c 1341
c5aa993b
JM
1342 /* Set if the accesibility of one of the fields is not public. */
1343 int non_public_fields;
c906108c 1344
c5aa993b
JM
1345 /* Member function fields array, entries are allocated in the order they
1346 are encountered in the object file. */
52059ffd 1347 struct nextfnfield *fnfields;
c906108c 1348
c5aa993b
JM
1349 /* Member function fieldlist array, contains name of possibly overloaded
1350 member function, number of overloaded member functions and a pointer
1351 to the head of the member function field chain. */
52059ffd 1352 struct fnfieldlist *fnfieldlists;
c906108c 1353
c5aa993b
JM
1354 /* Number of entries in the fnfieldlists array. */
1355 int nfnfields;
98751a41
JK
1356
1357 /* typedefs defined inside this class. TYPEDEF_FIELD_LIST contains head of
1358 a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements. */
52059ffd 1359 struct typedef_field_list *typedef_field_list;
98751a41 1360 unsigned typedef_field_list_count;
c5aa993b 1361 };
c906108c 1362
10b3939b
DJ
1363/* One item on the queue of compilation units to read in full symbols
1364 for. */
1365struct dwarf2_queue_item
1366{
1367 struct dwarf2_per_cu_data *per_cu;
95554aad 1368 enum language pretend_language;
10b3939b
DJ
1369 struct dwarf2_queue_item *next;
1370};
1371
1372/* The current queue. */
1373static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1374
ae038cb0
DJ
1375/* Loaded secondary compilation units are kept in memory until they
1376 have not been referenced for the processing of this many
1377 compilation units. Set this to zero to disable caching. Cache
1378 sizes of up to at least twenty will improve startup time for
1379 typical inter-CU-reference binaries, at an obvious memory cost. */
b4f54984 1380static int dwarf_max_cache_age = 5;
920d2a44 1381static void
b4f54984
DE
1382show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1383 struct cmd_list_element *c, const char *value)
920d2a44 1384{
3e43a32a 1385 fprintf_filtered (file, _("The upper bound on the age of cached "
b4f54984 1386 "DWARF compilation units is %s.\n"),
920d2a44
AC
1387 value);
1388}
4390d890 1389\f
c906108c
SS
1390/* local function prototypes */
1391
a32a8923
DE
1392static const char *get_section_name (const struct dwarf2_section_info *);
1393
1394static const char *get_section_file_name (const struct dwarf2_section_info *);
1395
4efb68b1 1396static void dwarf2_locate_sections (bfd *, asection *, void *);
c906108c 1397
918dd910
JK
1398static void dwarf2_find_base_address (struct die_info *die,
1399 struct dwarf2_cu *cu);
1400
0018ea6f
DE
1401static struct partial_symtab *create_partial_symtab
1402 (struct dwarf2_per_cu_data *per_cu, const char *name);
1403
c67a9c90 1404static void dwarf2_build_psymtabs_hard (struct objfile *);
c906108c 1405
72bf9492
DJ
1406static void scan_partial_symbols (struct partial_die_info *,
1407 CORE_ADDR *, CORE_ADDR *,
5734ee8b 1408 int, struct dwarf2_cu *);
c906108c 1409
72bf9492
DJ
1410static void add_partial_symbol (struct partial_die_info *,
1411 struct dwarf2_cu *);
63d06c5c 1412
72bf9492
DJ
1413static void add_partial_namespace (struct partial_die_info *pdi,
1414 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 1415 int set_addrmap, struct dwarf2_cu *cu);
63d06c5c 1416
5d7cb8df 1417static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
cdc07690 1418 CORE_ADDR *highpc, int set_addrmap,
5d7cb8df
JK
1419 struct dwarf2_cu *cu);
1420
72bf9492
DJ
1421static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1422 struct dwarf2_cu *cu);
91c24f0a 1423
bc30ff58
JB
1424static void add_partial_subprogram (struct partial_die_info *pdi,
1425 CORE_ADDR *lowpc, CORE_ADDR *highpc,
5734ee8b 1426 int need_pc, struct dwarf2_cu *cu);
bc30ff58 1427
257e7a09
YQ
1428static void dwarf2_read_symtab (struct partial_symtab *,
1429 struct objfile *);
c906108c 1430
a14ed312 1431static void psymtab_to_symtab_1 (struct partial_symtab *);
c906108c 1432
433df2d4
DE
1433static struct abbrev_info *abbrev_table_lookup_abbrev
1434 (const struct abbrev_table *, unsigned int);
1435
1436static struct abbrev_table *abbrev_table_read_table
1437 (struct dwarf2_section_info *, sect_offset);
1438
1439static void abbrev_table_free (struct abbrev_table *);
1440
f4dc4d17
DE
1441static void abbrev_table_free_cleanup (void *);
1442
dee91e82
DE
1443static void dwarf2_read_abbrevs (struct dwarf2_cu *,
1444 struct dwarf2_section_info *);
c906108c 1445
f3dd6933 1446static void dwarf2_free_abbrev_table (void *);
c906108c 1447
d521ce57 1448static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
6caca83c 1449
dee91e82 1450static struct partial_die_info *load_partial_dies
d521ce57 1451 (const struct die_reader_specs *, const gdb_byte *, int);
72bf9492 1452
d521ce57
TT
1453static const gdb_byte *read_partial_die (const struct die_reader_specs *,
1454 struct partial_die_info *,
1455 struct abbrev_info *,
1456 unsigned int,
1457 const gdb_byte *);
c906108c 1458
36586728 1459static struct partial_die_info *find_partial_die (sect_offset, int,
10b3939b 1460 struct dwarf2_cu *);
72bf9492
DJ
1461
1462static void fixup_partial_die (struct partial_die_info *,
1463 struct dwarf2_cu *);
1464
d521ce57
TT
1465static const gdb_byte *read_attribute (const struct die_reader_specs *,
1466 struct attribute *, struct attr_abbrev *,
1467 const gdb_byte *);
a8329558 1468
a1855c1d 1469static unsigned int read_1_byte (bfd *, const gdb_byte *);
c906108c 1470
a1855c1d 1471static int read_1_signed_byte (bfd *, const gdb_byte *);
c906108c 1472
a1855c1d 1473static unsigned int read_2_bytes (bfd *, const gdb_byte *);
c906108c 1474
a1855c1d 1475static unsigned int read_4_bytes (bfd *, const gdb_byte *);
c906108c 1476
a1855c1d 1477static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
c906108c 1478
d521ce57 1479static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
891d2f0b 1480 unsigned int *);
c906108c 1481
d521ce57 1482static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
c764a876
DE
1483
1484static LONGEST read_checked_initial_length_and_offset
d521ce57 1485 (bfd *, const gdb_byte *, const struct comp_unit_head *,
c764a876 1486 unsigned int *, unsigned int *);
613e1657 1487
d521ce57
TT
1488static LONGEST read_offset (bfd *, const gdb_byte *,
1489 const struct comp_unit_head *,
c764a876
DE
1490 unsigned int *);
1491
d521ce57 1492static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
613e1657 1493
f4dc4d17
DE
1494static sect_offset read_abbrev_offset (struct dwarf2_section_info *,
1495 sect_offset);
1496
d521ce57 1497static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
c906108c 1498
d521ce57 1499static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
c906108c 1500
d521ce57
TT
1501static const char *read_indirect_string (bfd *, const gdb_byte *,
1502 const struct comp_unit_head *,
1503 unsigned int *);
4bdf3d34 1504
d521ce57 1505static const char *read_indirect_string_from_dwz (struct dwz_file *, LONGEST);
36586728 1506
d521ce57 1507static ULONGEST read_unsigned_leb128 (bfd *, const gdb_byte *, unsigned int *);
c906108c 1508
d521ce57 1509static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
c906108c 1510
d521ce57
TT
1511static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1512 const gdb_byte *,
3019eac3
DE
1513 unsigned int *);
1514
d521ce57 1515static const char *read_str_index (const struct die_reader_specs *reader,
342587c4 1516 ULONGEST str_index);
3019eac3 1517
e142c38c 1518static void set_cu_language (unsigned int, struct dwarf2_cu *);
c906108c 1519
e142c38c
DJ
1520static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1521 struct dwarf2_cu *);
c906108c 1522
348e048f 1523static struct attribute *dwarf2_attr_no_follow (struct die_info *,
45e58e77 1524 unsigned int);
348e048f 1525
05cf31d1
JB
1526static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1527 struct dwarf2_cu *cu);
1528
e142c38c 1529static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
3ca72b44 1530
e142c38c 1531static struct die_info *die_specification (struct die_info *die,
f2f0e013 1532 struct dwarf2_cu **);
63d06c5c 1533
debd256d
JB
1534static void free_line_header (struct line_header *lh);
1535
3019eac3
DE
1536static struct line_header *dwarf_decode_line_header (unsigned int offset,
1537 struct dwarf2_cu *cu);
debd256d 1538
f3f5162e 1539static void dwarf_decode_lines (struct line_header *, const char *,
c3b7b696 1540 struct dwarf2_cu *, struct partial_symtab *,
527f3840 1541 CORE_ADDR, int decode_mapping);
c906108c 1542
4d663531 1543static void dwarf2_start_subfile (const char *, const char *);
c906108c 1544
43f3e411
DE
1545static struct compunit_symtab *dwarf2_start_symtab (struct dwarf2_cu *,
1546 const char *, const char *,
1547 CORE_ADDR);
f4dc4d17 1548
a14ed312 1549static struct symbol *new_symbol (struct die_info *, struct type *,
e7c27a73 1550 struct dwarf2_cu *);
c906108c 1551
34eaf542
TT
1552static struct symbol *new_symbol_full (struct die_info *, struct type *,
1553 struct dwarf2_cu *, struct symbol *);
1554
ff39bb5e 1555static void dwarf2_const_value (const struct attribute *, struct symbol *,
e7c27a73 1556 struct dwarf2_cu *);
c906108c 1557
ff39bb5e 1558static void dwarf2_const_value_attr (const struct attribute *attr,
98bfdba5
PA
1559 struct type *type,
1560 const char *name,
1561 struct obstack *obstack,
12df843f 1562 struct dwarf2_cu *cu, LONGEST *value,
d521ce57 1563 const gdb_byte **bytes,
98bfdba5 1564 struct dwarf2_locexpr_baton **baton);
2df3850c 1565
e7c27a73 1566static struct type *die_type (struct die_info *, struct dwarf2_cu *);
c906108c 1567
b4ba55a1
JB
1568static int need_gnat_info (struct dwarf2_cu *);
1569
3e43a32a
MS
1570static struct type *die_descriptive_type (struct die_info *,
1571 struct dwarf2_cu *);
b4ba55a1
JB
1572
1573static void set_descriptive_type (struct type *, struct die_info *,
1574 struct dwarf2_cu *);
1575
e7c27a73
DJ
1576static struct type *die_containing_type (struct die_info *,
1577 struct dwarf2_cu *);
c906108c 1578
ff39bb5e 1579static struct type *lookup_die_type (struct die_info *, const struct attribute *,
673bfd45 1580 struct dwarf2_cu *);
c906108c 1581
f792889a 1582static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
c906108c 1583
673bfd45
DE
1584static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1585
0d5cff50 1586static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
63d06c5c 1587
6e70227d 1588static char *typename_concat (struct obstack *obs, const char *prefix,
f55ee35c
JK
1589 const char *suffix, int physname,
1590 struct dwarf2_cu *cu);
63d06c5c 1591
e7c27a73 1592static void read_file_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1593
348e048f
DE
1594static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1595
e7c27a73 1596static void read_func_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1597
e7c27a73 1598static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1599
96408a79
SA
1600static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1601
ff013f42
JK
1602static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1603 struct dwarf2_cu *, struct partial_symtab *);
1604
a14ed312 1605static int dwarf2_get_pc_bounds (struct die_info *,
d85a05f0
DJ
1606 CORE_ADDR *, CORE_ADDR *, struct dwarf2_cu *,
1607 struct partial_symtab *);
c906108c 1608
fae299cd
DC
1609static void get_scope_pc_bounds (struct die_info *,
1610 CORE_ADDR *, CORE_ADDR *,
1611 struct dwarf2_cu *);
1612
801e3a5b
JB
1613static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1614 CORE_ADDR, struct dwarf2_cu *);
1615
a14ed312 1616static void dwarf2_add_field (struct field_info *, struct die_info *,
e7c27a73 1617 struct dwarf2_cu *);
c906108c 1618
a14ed312 1619static void dwarf2_attach_fields_to_type (struct field_info *,
e7c27a73 1620 struct type *, struct dwarf2_cu *);
c906108c 1621
a14ed312 1622static void dwarf2_add_member_fn (struct field_info *,
e26fb1d7 1623 struct die_info *, struct type *,
e7c27a73 1624 struct dwarf2_cu *);
c906108c 1625
a14ed312 1626static void dwarf2_attach_fn_fields_to_type (struct field_info *,
3e43a32a
MS
1627 struct type *,
1628 struct dwarf2_cu *);
c906108c 1629
134d01f1 1630static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1631
e7c27a73 1632static void read_common_block (struct die_info *, struct dwarf2_cu *);
c906108c 1633
e7c27a73 1634static void read_namespace (struct die_info *die, struct dwarf2_cu *);
d9fa45fe 1635
5d7cb8df
JK
1636static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1637
27aa8d6a
SW
1638static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1639
74921315
KS
1640static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1641
f55ee35c
JK
1642static struct type *read_module_type (struct die_info *die,
1643 struct dwarf2_cu *cu);
1644
38d518c9 1645static const char *namespace_name (struct die_info *die,
e142c38c 1646 int *is_anonymous, struct dwarf2_cu *);
38d518c9 1647
134d01f1 1648static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1649
e7c27a73 1650static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
c906108c 1651
6e70227d 1652static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
7ca2d3a3
DL
1653 struct dwarf2_cu *);
1654
bf6af496 1655static struct die_info *read_die_and_siblings_1
d521ce57 1656 (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
bf6af496 1657 struct die_info *);
639d11d3 1658
dee91e82 1659static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
d521ce57
TT
1660 const gdb_byte *info_ptr,
1661 const gdb_byte **new_info_ptr,
639d11d3
DC
1662 struct die_info *parent);
1663
d521ce57
TT
1664static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1665 struct die_info **, const gdb_byte *,
1666 int *, int);
3019eac3 1667
d521ce57
TT
1668static const gdb_byte *read_full_die (const struct die_reader_specs *,
1669 struct die_info **, const gdb_byte *,
1670 int *);
93311388 1671
e7c27a73 1672static void process_die (struct die_info *, struct dwarf2_cu *);
c906108c 1673
15d034d0
TT
1674static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1675 struct obstack *);
71c25dea 1676
15d034d0 1677static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
9219021c 1678
15d034d0 1679static const char *dwarf2_full_name (const char *name,
98bfdba5
PA
1680 struct die_info *die,
1681 struct dwarf2_cu *cu);
1682
ca69b9e6
DE
1683static const char *dwarf2_physname (const char *name, struct die_info *die,
1684 struct dwarf2_cu *cu);
1685
e142c38c 1686static struct die_info *dwarf2_extension (struct die_info *die,
f2f0e013 1687 struct dwarf2_cu **);
9219021c 1688
f39c6ffd 1689static const char *dwarf_tag_name (unsigned int);
c906108c 1690
f39c6ffd 1691static const char *dwarf_attr_name (unsigned int);
c906108c 1692
f39c6ffd 1693static const char *dwarf_form_name (unsigned int);
c906108c 1694
a14ed312 1695static char *dwarf_bool_name (unsigned int);
c906108c 1696
f39c6ffd 1697static const char *dwarf_type_encoding_name (unsigned int);
c906108c 1698
f9aca02d 1699static struct die_info *sibling_die (struct die_info *);
c906108c 1700
d97bc12b
DE
1701static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1702
1703static void dump_die_for_error (struct die_info *);
1704
1705static void dump_die_1 (struct ui_file *, int level, int max_level,
1706 struct die_info *);
c906108c 1707
d97bc12b 1708/*static*/ void dump_die (struct die_info *, int max_level);
c906108c 1709
51545339 1710static void store_in_ref_table (struct die_info *,
10b3939b 1711 struct dwarf2_cu *);
c906108c 1712
ff39bb5e 1713static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
c906108c 1714
ff39bb5e 1715static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
a02abb62 1716
348e048f 1717static struct die_info *follow_die_ref_or_sig (struct die_info *,
ff39bb5e 1718 const struct attribute *,
348e048f
DE
1719 struct dwarf2_cu **);
1720
10b3939b 1721static struct die_info *follow_die_ref (struct die_info *,
ff39bb5e 1722 const struct attribute *,
f2f0e013 1723 struct dwarf2_cu **);
c906108c 1724
348e048f 1725static struct die_info *follow_die_sig (struct die_info *,
ff39bb5e 1726 const struct attribute *,
348e048f
DE
1727 struct dwarf2_cu **);
1728
ac9ec31b
DE
1729static struct type *get_signatured_type (struct die_info *, ULONGEST,
1730 struct dwarf2_cu *);
1731
1732static struct type *get_DW_AT_signature_type (struct die_info *,
ff39bb5e 1733 const struct attribute *,
ac9ec31b
DE
1734 struct dwarf2_cu *);
1735
e5fe5e75 1736static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
348e048f 1737
52dc124a 1738static void read_signatured_type (struct signatured_type *);
348e048f 1739
c906108c
SS
1740/* memory allocation interface */
1741
7b5a2f43 1742static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
c906108c 1743
b60c80d6 1744static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
c906108c 1745
43f3e411 1746static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
2e276125 1747
6e5a29e1 1748static int attr_form_is_block (const struct attribute *);
8e19ed76 1749
6e5a29e1 1750static int attr_form_is_section_offset (const struct attribute *);
3690dd37 1751
6e5a29e1 1752static int attr_form_is_constant (const struct attribute *);
3690dd37 1753
6e5a29e1 1754static int attr_form_is_ref (const struct attribute *);
7771576e 1755
8cf6f0b1
TT
1756static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1757 struct dwarf2_loclist_baton *baton,
ff39bb5e 1758 const struct attribute *attr);
8cf6f0b1 1759
ff39bb5e 1760static void dwarf2_symbol_mark_computed (const struct attribute *attr,
93e7bd98 1761 struct symbol *sym,
f1e6e072
TT
1762 struct dwarf2_cu *cu,
1763 int is_block);
4c2df51b 1764
d521ce57
TT
1765static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1766 const gdb_byte *info_ptr,
1767 struct abbrev_info *abbrev);
4bb7a0a7 1768
72bf9492
DJ
1769static void free_stack_comp_unit (void *);
1770
72bf9492
DJ
1771static hashval_t partial_die_hash (const void *item);
1772
1773static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1774
ae038cb0 1775static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
36586728 1776 (sect_offset offset, unsigned int offset_in_dwz, struct objfile *objfile);
ae038cb0 1777
9816fde3 1778static void init_one_comp_unit (struct dwarf2_cu *cu,
23745b47 1779 struct dwarf2_per_cu_data *per_cu);
9816fde3
JK
1780
1781static void prepare_one_comp_unit (struct dwarf2_cu *cu,
95554aad
TT
1782 struct die_info *comp_unit_die,
1783 enum language pretend_language);
93311388 1784
68dc6402 1785static void free_heap_comp_unit (void *);
ae038cb0
DJ
1786
1787static void free_cached_comp_units (void *);
1788
1789static void age_cached_comp_units (void);
1790
dee91e82 1791static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
ae038cb0 1792
f792889a
DJ
1793static struct type *set_die_type (struct die_info *, struct type *,
1794 struct dwarf2_cu *);
1c379e20 1795
ae038cb0
DJ
1796static void create_all_comp_units (struct objfile *);
1797
0e50663e 1798static int create_all_type_units (struct objfile *);
1fd400ff 1799
95554aad
TT
1800static void load_full_comp_unit (struct dwarf2_per_cu_data *,
1801 enum language);
10b3939b 1802
95554aad
TT
1803static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1804 enum language);
10b3939b 1805
f4dc4d17
DE
1806static void process_full_type_unit (struct dwarf2_per_cu_data *,
1807 enum language);
1808
10b3939b
DJ
1809static void dwarf2_add_dependence (struct dwarf2_cu *,
1810 struct dwarf2_per_cu_data *);
1811
ae038cb0
DJ
1812static void dwarf2_mark (struct dwarf2_cu *);
1813
1814static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1815
b64f50a1 1816static struct type *get_die_type_at_offset (sect_offset,
ac9ec31b 1817 struct dwarf2_per_cu_data *);
673bfd45 1818
f792889a 1819static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
72019c9c 1820
9291a0cd
TT
1821static void dwarf2_release_queue (void *dummy);
1822
95554aad
TT
1823static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1824 enum language pretend_language);
1825
a0f42c21 1826static void process_queue (void);
9291a0cd
TT
1827
1828static void find_file_and_directory (struct die_info *die,
1829 struct dwarf2_cu *cu,
15d034d0 1830 const char **name, const char **comp_dir);
9291a0cd
TT
1831
1832static char *file_full_name (int file, struct line_header *lh,
1833 const char *comp_dir);
1834
d521ce57 1835static const gdb_byte *read_and_check_comp_unit_head
36586728
TT
1836 (struct comp_unit_head *header,
1837 struct dwarf2_section_info *section,
d521ce57 1838 struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
36586728
TT
1839 int is_debug_types_section);
1840
fd820528 1841static void init_cutu_and_read_dies
f4dc4d17
DE
1842 (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1843 int use_existing_cu, int keep,
3019eac3
DE
1844 die_reader_func_ftype *die_reader_func, void *data);
1845
dee91e82
DE
1846static void init_cutu_and_read_dies_simple
1847 (struct dwarf2_per_cu_data *this_cu,
1848 die_reader_func_ftype *die_reader_func, void *data);
9291a0cd 1849
673bfd45 1850static htab_t allocate_signatured_type_table (struct objfile *objfile);
1fd400ff 1851
3019eac3
DE
1852static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1853
57d63ce2
DE
1854static struct dwo_unit *lookup_dwo_unit_in_dwp
1855 (struct dwp_file *dwp_file, const char *comp_dir,
1856 ULONGEST signature, int is_debug_types);
a2ce51a0
DE
1857
1858static struct dwp_file *get_dwp_file (void);
1859
3019eac3 1860static struct dwo_unit *lookup_dwo_comp_unit
a1855c1d 1861 (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
3019eac3
DE
1862
1863static struct dwo_unit *lookup_dwo_type_unit
a1855c1d 1864 (struct signatured_type *, const char *, const char *);
3019eac3 1865
89e63ee4
DE
1866static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1867
3019eac3
DE
1868static void free_dwo_file_cleanup (void *);
1869
95554aad
TT
1870static void process_cu_includes (void);
1871
1b80a9fa 1872static void check_producer (struct dwarf2_cu *cu);
527f3840
JK
1873
1874static void free_line_header_voidp (void *arg);
4390d890
DE
1875\f
1876/* Various complaints about symbol reading that don't abort the process. */
1877
1878static void
1879dwarf2_statement_list_fits_in_line_number_section_complaint (void)
1880{
1881 complaint (&symfile_complaints,
1882 _("statement list doesn't fit in .debug_line section"));
1883}
1884
1885static void
1886dwarf2_debug_line_missing_file_complaint (void)
1887{
1888 complaint (&symfile_complaints,
1889 _(".debug_line section has line data without a file"));
1890}
1891
1892static void
1893dwarf2_debug_line_missing_end_sequence_complaint (void)
1894{
1895 complaint (&symfile_complaints,
1896 _(".debug_line section has line "
1897 "program sequence without an end"));
1898}
1899
1900static void
1901dwarf2_complex_location_expr_complaint (void)
1902{
1903 complaint (&symfile_complaints, _("location expression too complex"));
1904}
1905
1906static void
1907dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
1908 int arg3)
1909{
1910 complaint (&symfile_complaints,
1911 _("const value length mismatch for '%s', got %d, expected %d"),
1912 arg1, arg2, arg3);
1913}
1914
1915static void
1916dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
1917{
1918 complaint (&symfile_complaints,
1919 _("debug info runs off end of %s section"
1920 " [in module %s]"),
a32a8923
DE
1921 get_section_name (section),
1922 get_section_file_name (section));
4390d890 1923}
1b80a9fa 1924
4390d890
DE
1925static void
1926dwarf2_macro_malformed_definition_complaint (const char *arg1)
1927{
1928 complaint (&symfile_complaints,
1929 _("macro debug info contains a "
1930 "malformed macro definition:\n`%s'"),
1931 arg1);
1932}
1933
1934static void
1935dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
1936{
1937 complaint (&symfile_complaints,
1938 _("invalid attribute class or form for '%s' in '%s'"),
1939 arg1, arg2);
1940}
527f3840
JK
1941
1942/* Hash function for line_header_hash. */
1943
1944static hashval_t
1945line_header_hash (const struct line_header *ofs)
1946{
1947 return ofs->offset.sect_off ^ ofs->offset_in_dwz;
1948}
1949
1950/* Hash function for htab_create_alloc_ex for line_header_hash. */
1951
1952static hashval_t
1953line_header_hash_voidp (const void *item)
1954{
1955 const struct line_header *ofs = item;
1956
1957 return line_header_hash (ofs);
1958}
1959
1960/* Equality function for line_header_hash. */
1961
1962static int
1963line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
1964{
1965 const struct line_header *ofs_lhs = item_lhs;
1966 const struct line_header *ofs_rhs = item_rhs;
1967
1968 return (ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off
1969 && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
1970}
1971
4390d890 1972\f
9291a0cd
TT
1973#if WORDS_BIGENDIAN
1974
1975/* Convert VALUE between big- and little-endian. */
1976static offset_type
1977byte_swap (offset_type value)
1978{
1979 offset_type result;
1980
1981 result = (value & 0xff) << 24;
1982 result |= (value & 0xff00) << 8;
1983 result |= (value & 0xff0000) >> 8;
1984 result |= (value & 0xff000000) >> 24;
1985 return result;
1986}
1987
1988#define MAYBE_SWAP(V) byte_swap (V)
1989
1990#else
1991#define MAYBE_SWAP(V) (V)
1992#endif /* WORDS_BIGENDIAN */
1993
31aa7e4e
JB
1994/* Read the given attribute value as an address, taking the attribute's
1995 form into account. */
1996
1997static CORE_ADDR
1998attr_value_as_address (struct attribute *attr)
1999{
2000 CORE_ADDR addr;
2001
2002 if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
2003 {
2004 /* Aside from a few clearly defined exceptions, attributes that
2005 contain an address must always be in DW_FORM_addr form.
2006 Unfortunately, some compilers happen to be violating this
2007 requirement by encoding addresses using other forms, such
2008 as DW_FORM_data4 for example. For those broken compilers,
2009 we try to do our best, without any guarantee of success,
2010 to interpret the address correctly. It would also be nice
2011 to generate a complaint, but that would require us to maintain
2012 a list of legitimate cases where a non-address form is allowed,
2013 as well as update callers to pass in at least the CU's DWARF
2014 version. This is more overhead than what we're willing to
2015 expand for a pretty rare case. */
2016 addr = DW_UNSND (attr);
2017 }
2018 else
2019 addr = DW_ADDR (attr);
2020
2021 return addr;
2022}
2023
9291a0cd
TT
2024/* The suffix for an index file. */
2025#define INDEX_SUFFIX ".gdb-index"
2026
c906108c 2027/* Try to locate the sections we need for DWARF 2 debugging
251d32d9
TG
2028 information and return true if we have enough to do something.
2029 NAMES points to the dwarf2 section names, or is NULL if the standard
2030 ELF names are used. */
c906108c
SS
2031
2032int
251d32d9
TG
2033dwarf2_has_info (struct objfile *objfile,
2034 const struct dwarf2_debug_sections *names)
c906108c 2035{
be391dca
TT
2036 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
2037 if (!dwarf2_per_objfile)
2038 {
2039 /* Initialize per-objfile state. */
2040 struct dwarf2_per_objfile *data
2041 = obstack_alloc (&objfile->objfile_obstack, sizeof (*data));
9a619af0 2042
be391dca
TT
2043 memset (data, 0, sizeof (*data));
2044 set_objfile_data (objfile, dwarf2_objfile_data_key, data);
2045 dwarf2_per_objfile = data;
6502dd73 2046
251d32d9
TG
2047 bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections,
2048 (void *) names);
be391dca
TT
2049 dwarf2_per_objfile->objfile = objfile;
2050 }
73869dc2
DE
2051 return (!dwarf2_per_objfile->info.is_virtual
2052 && dwarf2_per_objfile->info.s.asection != NULL
2053 && !dwarf2_per_objfile->abbrev.is_virtual
2054 && dwarf2_per_objfile->abbrev.s.asection != NULL);
2055}
2056
2057/* Return the containing section of virtual section SECTION. */
2058
2059static struct dwarf2_section_info *
2060get_containing_section (const struct dwarf2_section_info *section)
2061{
2062 gdb_assert (section->is_virtual);
2063 return section->s.containing_section;
c906108c
SS
2064}
2065
a32a8923
DE
2066/* Return the bfd owner of SECTION. */
2067
2068static struct bfd *
2069get_section_bfd_owner (const struct dwarf2_section_info *section)
2070{
73869dc2
DE
2071 if (section->is_virtual)
2072 {
2073 section = get_containing_section (section);
2074 gdb_assert (!section->is_virtual);
2075 }
2076 return section->s.asection->owner;
a32a8923
DE
2077}
2078
2079/* Return the bfd section of SECTION.
2080 Returns NULL if the section is not present. */
2081
2082static asection *
2083get_section_bfd_section (const struct dwarf2_section_info *section)
2084{
73869dc2
DE
2085 if (section->is_virtual)
2086 {
2087 section = get_containing_section (section);
2088 gdb_assert (!section->is_virtual);
2089 }
2090 return section->s.asection;
a32a8923
DE
2091}
2092
2093/* Return the name of SECTION. */
2094
2095static const char *
2096get_section_name (const struct dwarf2_section_info *section)
2097{
2098 asection *sectp = get_section_bfd_section (section);
2099
2100 gdb_assert (sectp != NULL);
2101 return bfd_section_name (get_section_bfd_owner (section), sectp);
2102}
2103
2104/* Return the name of the file SECTION is in. */
2105
2106static const char *
2107get_section_file_name (const struct dwarf2_section_info *section)
2108{
2109 bfd *abfd = get_section_bfd_owner (section);
2110
2111 return bfd_get_filename (abfd);
2112}
2113
2114/* Return the id of SECTION.
2115 Returns 0 if SECTION doesn't exist. */
2116
2117static int
2118get_section_id (const struct dwarf2_section_info *section)
2119{
2120 asection *sectp = get_section_bfd_section (section);
2121
2122 if (sectp == NULL)
2123 return 0;
2124 return sectp->id;
2125}
2126
2127/* Return the flags of SECTION.
73869dc2 2128 SECTION (or containing section if this is a virtual section) must exist. */
a32a8923
DE
2129
2130static int
2131get_section_flags (const struct dwarf2_section_info *section)
2132{
2133 asection *sectp = get_section_bfd_section (section);
2134
2135 gdb_assert (sectp != NULL);
2136 return bfd_get_section_flags (sectp->owner, sectp);
2137}
2138
251d32d9
TG
2139/* When loading sections, we look either for uncompressed section or for
2140 compressed section names. */
233a11ab
CS
2141
2142static int
251d32d9
TG
2143section_is_p (const char *section_name,
2144 const struct dwarf2_section_names *names)
233a11ab 2145{
251d32d9
TG
2146 if (names->normal != NULL
2147 && strcmp (section_name, names->normal) == 0)
2148 return 1;
2149 if (names->compressed != NULL
2150 && strcmp (section_name, names->compressed) == 0)
2151 return 1;
2152 return 0;
233a11ab
CS
2153}
2154
c906108c
SS
2155/* This function is mapped across the sections and remembers the
2156 offset and size of each of the debugging sections we are interested
2157 in. */
2158
2159static void
251d32d9 2160dwarf2_locate_sections (bfd *abfd, asection *sectp, void *vnames)
c906108c 2161{
251d32d9 2162 const struct dwarf2_debug_sections *names;
dc7650b8 2163 flagword aflag = bfd_get_section_flags (abfd, sectp);
251d32d9
TG
2164
2165 if (vnames == NULL)
2166 names = &dwarf2_elf_names;
2167 else
2168 names = (const struct dwarf2_debug_sections *) vnames;
2169
dc7650b8
JK
2170 if ((aflag & SEC_HAS_CONTENTS) == 0)
2171 {
2172 }
2173 else if (section_is_p (sectp->name, &names->info))
c906108c 2174 {
73869dc2 2175 dwarf2_per_objfile->info.s.asection = sectp;
dce234bc 2176 dwarf2_per_objfile->info.size = bfd_get_section_size (sectp);
c906108c 2177 }
251d32d9 2178 else if (section_is_p (sectp->name, &names->abbrev))
c906108c 2179 {
73869dc2 2180 dwarf2_per_objfile->abbrev.s.asection = sectp;
dce234bc 2181 dwarf2_per_objfile->abbrev.size = bfd_get_section_size (sectp);
c906108c 2182 }
251d32d9 2183 else if (section_is_p (sectp->name, &names->line))
c906108c 2184 {
73869dc2 2185 dwarf2_per_objfile->line.s.asection = sectp;
dce234bc 2186 dwarf2_per_objfile->line.size = bfd_get_section_size (sectp);
c906108c 2187 }
251d32d9 2188 else if (section_is_p (sectp->name, &names->loc))
c906108c 2189 {
73869dc2 2190 dwarf2_per_objfile->loc.s.asection = sectp;
dce234bc 2191 dwarf2_per_objfile->loc.size = bfd_get_section_size (sectp);
c906108c 2192 }
251d32d9 2193 else if (section_is_p (sectp->name, &names->macinfo))
c906108c 2194 {
73869dc2 2195 dwarf2_per_objfile->macinfo.s.asection = sectp;
dce234bc 2196 dwarf2_per_objfile->macinfo.size = bfd_get_section_size (sectp);
c906108c 2197 }
cf2c3c16
TT
2198 else if (section_is_p (sectp->name, &names->macro))
2199 {
73869dc2 2200 dwarf2_per_objfile->macro.s.asection = sectp;
cf2c3c16
TT
2201 dwarf2_per_objfile->macro.size = bfd_get_section_size (sectp);
2202 }
251d32d9 2203 else if (section_is_p (sectp->name, &names->str))
c906108c 2204 {
73869dc2 2205 dwarf2_per_objfile->str.s.asection = sectp;
dce234bc 2206 dwarf2_per_objfile->str.size = bfd_get_section_size (sectp);
c906108c 2207 }
3019eac3
DE
2208 else if (section_is_p (sectp->name, &names->addr))
2209 {
73869dc2 2210 dwarf2_per_objfile->addr.s.asection = sectp;
3019eac3
DE
2211 dwarf2_per_objfile->addr.size = bfd_get_section_size (sectp);
2212 }
251d32d9 2213 else if (section_is_p (sectp->name, &names->frame))
b6af0555 2214 {
73869dc2 2215 dwarf2_per_objfile->frame.s.asection = sectp;
dce234bc 2216 dwarf2_per_objfile->frame.size = bfd_get_section_size (sectp);
b6af0555 2217 }
251d32d9 2218 else if (section_is_p (sectp->name, &names->eh_frame))
b6af0555 2219 {
73869dc2 2220 dwarf2_per_objfile->eh_frame.s.asection = sectp;
dc7650b8 2221 dwarf2_per_objfile->eh_frame.size = bfd_get_section_size (sectp);
b6af0555 2222 }
251d32d9 2223 else if (section_is_p (sectp->name, &names->ranges))
af34e669 2224 {
73869dc2 2225 dwarf2_per_objfile->ranges.s.asection = sectp;
dce234bc 2226 dwarf2_per_objfile->ranges.size = bfd_get_section_size (sectp);
af34e669 2227 }
251d32d9 2228 else if (section_is_p (sectp->name, &names->types))
348e048f 2229 {
8b70b953
TT
2230 struct dwarf2_section_info type_section;
2231
2232 memset (&type_section, 0, sizeof (type_section));
73869dc2 2233 type_section.s.asection = sectp;
8b70b953
TT
2234 type_section.size = bfd_get_section_size (sectp);
2235
2236 VEC_safe_push (dwarf2_section_info_def, dwarf2_per_objfile->types,
2237 &type_section);
348e048f 2238 }
251d32d9 2239 else if (section_is_p (sectp->name, &names->gdb_index))
9291a0cd 2240 {
73869dc2 2241 dwarf2_per_objfile->gdb_index.s.asection = sectp;
9291a0cd
TT
2242 dwarf2_per_objfile->gdb_index.size = bfd_get_section_size (sectp);
2243 }
dce234bc 2244
b4e1fd61 2245 if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
72dca2f5
FR
2246 && bfd_section_vma (abfd, sectp) == 0)
2247 dwarf2_per_objfile->has_section_at_zero = 1;
c906108c
SS
2248}
2249
fceca515
DE
2250/* A helper function that decides whether a section is empty,
2251 or not present. */
9e0ac564
TT
2252
2253static int
19ac8c2e 2254dwarf2_section_empty_p (const struct dwarf2_section_info *section)
9e0ac564 2255{
73869dc2
DE
2256 if (section->is_virtual)
2257 return section->size == 0;
2258 return section->s.asection == NULL || section->size == 0;
9e0ac564
TT
2259}
2260
3019eac3
DE
2261/* Read the contents of the section INFO.
2262 OBJFILE is the main object file, but not necessarily the file where
a32a8923
DE
2263 the section comes from. E.g., for DWO files the bfd of INFO is the bfd
2264 of the DWO file.
dce234bc 2265 If the section is compressed, uncompress it before returning. */
c906108c 2266
dce234bc
PP
2267static void
2268dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info)
c906108c 2269{
a32a8923 2270 asection *sectp;
3019eac3 2271 bfd *abfd;
dce234bc 2272 gdb_byte *buf, *retbuf;
c906108c 2273
be391dca
TT
2274 if (info->readin)
2275 return;
dce234bc 2276 info->buffer = NULL;
be391dca 2277 info->readin = 1;
188dd5d6 2278
9e0ac564 2279 if (dwarf2_section_empty_p (info))
dce234bc 2280 return;
c906108c 2281
a32a8923 2282 sectp = get_section_bfd_section (info);
3019eac3 2283
73869dc2
DE
2284 /* If this is a virtual section we need to read in the real one first. */
2285 if (info->is_virtual)
2286 {
2287 struct dwarf2_section_info *containing_section =
2288 get_containing_section (info);
2289
2290 gdb_assert (sectp != NULL);
2291 if ((sectp->flags & SEC_RELOC) != 0)
2292 {
2293 error (_("Dwarf Error: DWP format V2 with relocations is not"
2294 " supported in section %s [in module %s]"),
2295 get_section_name (info), get_section_file_name (info));
2296 }
2297 dwarf2_read_section (objfile, containing_section);
2298 /* Other code should have already caught virtual sections that don't
2299 fit. */
2300 gdb_assert (info->virtual_offset + info->size
2301 <= containing_section->size);
2302 /* If the real section is empty or there was a problem reading the
2303 section we shouldn't get here. */
2304 gdb_assert (containing_section->buffer != NULL);
2305 info->buffer = containing_section->buffer + info->virtual_offset;
2306 return;
2307 }
2308
4bf44c1c
TT
2309 /* If the section has relocations, we must read it ourselves.
2310 Otherwise we attach it to the BFD. */
2311 if ((sectp->flags & SEC_RELOC) == 0)
dce234bc 2312 {
d521ce57 2313 info->buffer = gdb_bfd_map_section (sectp, &info->size);
4bf44c1c 2314 return;
dce234bc 2315 }
dce234bc 2316
4bf44c1c
TT
2317 buf = obstack_alloc (&objfile->objfile_obstack, info->size);
2318 info->buffer = buf;
dce234bc
PP
2319
2320 /* When debugging .o files, we may need to apply relocations; see
2321 http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2322 We never compress sections in .o files, so we only need to
2323 try this when the section is not compressed. */
ac8035ab 2324 retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
dce234bc
PP
2325 if (retbuf != NULL)
2326 {
2327 info->buffer = retbuf;
2328 return;
2329 }
2330
a32a8923
DE
2331 abfd = get_section_bfd_owner (info);
2332 gdb_assert (abfd != NULL);
2333
dce234bc
PP
2334 if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2335 || bfd_bread (buf, info->size, abfd) != info->size)
19ac8c2e
DE
2336 {
2337 error (_("Dwarf Error: Can't read DWARF data"
2338 " in section %s [in module %s]"),
2339 bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2340 }
dce234bc
PP
2341}
2342
9e0ac564
TT
2343/* A helper function that returns the size of a section in a safe way.
2344 If you are positive that the section has been read before using the
2345 size, then it is safe to refer to the dwarf2_section_info object's
2346 "size" field directly. In other cases, you must call this
2347 function, because for compressed sections the size field is not set
2348 correctly until the section has been read. */
2349
2350static bfd_size_type
2351dwarf2_section_size (struct objfile *objfile,
2352 struct dwarf2_section_info *info)
2353{
2354 if (!info->readin)
2355 dwarf2_read_section (objfile, info);
2356 return info->size;
2357}
2358
dce234bc 2359/* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
0963b4bd 2360 SECTION_NAME. */
af34e669 2361
dce234bc 2362void
3017a003
TG
2363dwarf2_get_section_info (struct objfile *objfile,
2364 enum dwarf2_section_enum sect,
d521ce57 2365 asection **sectp, const gdb_byte **bufp,
dce234bc
PP
2366 bfd_size_type *sizep)
2367{
2368 struct dwarf2_per_objfile *data
2369 = objfile_data (objfile, dwarf2_objfile_data_key);
2370 struct dwarf2_section_info *info;
a3b2a86b
TT
2371
2372 /* We may see an objfile without any DWARF, in which case we just
2373 return nothing. */
2374 if (data == NULL)
2375 {
2376 *sectp = NULL;
2377 *bufp = NULL;
2378 *sizep = 0;
2379 return;
2380 }
3017a003
TG
2381 switch (sect)
2382 {
2383 case DWARF2_DEBUG_FRAME:
2384 info = &data->frame;
2385 break;
2386 case DWARF2_EH_FRAME:
2387 info = &data->eh_frame;
2388 break;
2389 default:
2390 gdb_assert_not_reached ("unexpected section");
2391 }
dce234bc 2392
9e0ac564 2393 dwarf2_read_section (objfile, info);
dce234bc 2394
a32a8923 2395 *sectp = get_section_bfd_section (info);
dce234bc
PP
2396 *bufp = info->buffer;
2397 *sizep = info->size;
2398}
2399
36586728
TT
2400/* A helper function to find the sections for a .dwz file. */
2401
2402static void
2403locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2404{
2405 struct dwz_file *dwz_file = arg;
2406
2407 /* Note that we only support the standard ELF names, because .dwz
2408 is ELF-only (at the time of writing). */
2409 if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2410 {
73869dc2 2411 dwz_file->abbrev.s.asection = sectp;
36586728
TT
2412 dwz_file->abbrev.size = bfd_get_section_size (sectp);
2413 }
2414 else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2415 {
73869dc2 2416 dwz_file->info.s.asection = sectp;
36586728
TT
2417 dwz_file->info.size = bfd_get_section_size (sectp);
2418 }
2419 else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2420 {
73869dc2 2421 dwz_file->str.s.asection = sectp;
36586728
TT
2422 dwz_file->str.size = bfd_get_section_size (sectp);
2423 }
2424 else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2425 {
73869dc2 2426 dwz_file->line.s.asection = sectp;
36586728
TT
2427 dwz_file->line.size = bfd_get_section_size (sectp);
2428 }
2429 else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2430 {
73869dc2 2431 dwz_file->macro.s.asection = sectp;
36586728
TT
2432 dwz_file->macro.size = bfd_get_section_size (sectp);
2433 }
2ec9a5e0
TT
2434 else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2435 {
73869dc2 2436 dwz_file->gdb_index.s.asection = sectp;
2ec9a5e0
TT
2437 dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2438 }
36586728
TT
2439}
2440
4db1a1dc
TT
2441/* Open the separate '.dwz' debug file, if needed. Return NULL if
2442 there is no .gnu_debugaltlink section in the file. Error if there
2443 is such a section but the file cannot be found. */
36586728
TT
2444
2445static struct dwz_file *
2446dwarf2_get_dwz_file (void)
2447{
4db1a1dc
TT
2448 bfd *dwz_bfd;
2449 char *data;
36586728
TT
2450 struct cleanup *cleanup;
2451 const char *filename;
2452 struct dwz_file *result;
acd13123 2453 bfd_size_type buildid_len_arg;
dc294be5
TT
2454 size_t buildid_len;
2455 bfd_byte *buildid;
36586728
TT
2456
2457 if (dwarf2_per_objfile->dwz_file != NULL)
2458 return dwarf2_per_objfile->dwz_file;
2459
4db1a1dc
TT
2460 bfd_set_error (bfd_error_no_error);
2461 data = bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
acd13123 2462 &buildid_len_arg, &buildid);
4db1a1dc
TT
2463 if (data == NULL)
2464 {
2465 if (bfd_get_error () == bfd_error_no_error)
2466 return NULL;
2467 error (_("could not read '.gnu_debugaltlink' section: %s"),
2468 bfd_errmsg (bfd_get_error ()));
2469 }
36586728 2470 cleanup = make_cleanup (xfree, data);
dc294be5 2471 make_cleanup (xfree, buildid);
36586728 2472
acd13123
TT
2473 buildid_len = (size_t) buildid_len_arg;
2474
f9d83a0b 2475 filename = (const char *) data;
36586728
TT
2476 if (!IS_ABSOLUTE_PATH (filename))
2477 {
4262abfb 2478 char *abs = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
36586728
TT
2479 char *rel;
2480
2481 make_cleanup (xfree, abs);
2482 abs = ldirname (abs);
2483 make_cleanup (xfree, abs);
2484
2485 rel = concat (abs, SLASH_STRING, filename, (char *) NULL);
2486 make_cleanup (xfree, rel);
2487 filename = rel;
2488 }
2489
dc294be5
TT
2490 /* First try the file name given in the section. If that doesn't
2491 work, try to use the build-id instead. */
36586728 2492 dwz_bfd = gdb_bfd_open (filename, gnutarget, -1);
dc294be5 2493 if (dwz_bfd != NULL)
36586728 2494 {
dc294be5
TT
2495 if (!build_id_verify (dwz_bfd, buildid_len, buildid))
2496 {
2497 gdb_bfd_unref (dwz_bfd);
2498 dwz_bfd = NULL;
2499 }
36586728
TT
2500 }
2501
dc294be5
TT
2502 if (dwz_bfd == NULL)
2503 dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2504
2505 if (dwz_bfd == NULL)
2506 error (_("could not find '.gnu_debugaltlink' file for %s"),
2507 objfile_name (dwarf2_per_objfile->objfile));
2508
36586728
TT
2509 result = OBSTACK_ZALLOC (&dwarf2_per_objfile->objfile->objfile_obstack,
2510 struct dwz_file);
2511 result->dwz_bfd = dwz_bfd;
2512
2513 bfd_map_over_sections (dwz_bfd, locate_dwz_sections, result);
2514
2515 do_cleanups (cleanup);
2516
13aaf454 2517 gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, dwz_bfd);
8d2cc612 2518 dwarf2_per_objfile->dwz_file = result;
36586728
TT
2519 return result;
2520}
9291a0cd 2521\f
7b9f3c50
DE
2522/* DWARF quick_symbols_functions support. */
2523
2524/* TUs can share .debug_line entries, and there can be a lot more TUs than
2525 unique line tables, so we maintain a separate table of all .debug_line
2526 derived entries to support the sharing.
2527 All the quick functions need is the list of file names. We discard the
2528 line_header when we're done and don't need to record it here. */
2529struct quick_file_names
2530{
094b34ac
DE
2531 /* The data used to construct the hash key. */
2532 struct stmt_list_hash hash;
7b9f3c50
DE
2533
2534 /* The number of entries in file_names, real_names. */
2535 unsigned int num_file_names;
2536
2537 /* The file names from the line table, after being run through
2538 file_full_name. */
2539 const char **file_names;
2540
2541 /* The file names from the line table after being run through
2542 gdb_realpath. These are computed lazily. */
2543 const char **real_names;
2544};
2545
2546/* When using the index (and thus not using psymtabs), each CU has an
2547 object of this type. This is used to hold information needed by
2548 the various "quick" methods. */
2549struct dwarf2_per_cu_quick_data
2550{
2551 /* The file table. This can be NULL if there was no file table
2552 or it's currently not read in.
2553 NOTE: This points into dwarf2_per_objfile->quick_file_names_table. */
2554 struct quick_file_names *file_names;
2555
2556 /* The corresponding symbol table. This is NULL if symbols for this
2557 CU have not yet been read. */
43f3e411 2558 struct compunit_symtab *compunit_symtab;
7b9f3c50
DE
2559
2560 /* A temporary mark bit used when iterating over all CUs in
2561 expand_symtabs_matching. */
2562 unsigned int mark : 1;
2563
2564 /* True if we've tried to read the file table and found there isn't one.
2565 There will be no point in trying to read it again next time. */
2566 unsigned int no_file_data : 1;
2567};
2568
094b34ac
DE
2569/* Utility hash function for a stmt_list_hash. */
2570
2571static hashval_t
2572hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2573{
2574 hashval_t v = 0;
2575
2576 if (stmt_list_hash->dwo_unit != NULL)
2577 v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2578 v += stmt_list_hash->line_offset.sect_off;
2579 return v;
2580}
2581
2582/* Utility equality function for a stmt_list_hash. */
2583
2584static int
2585eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2586 const struct stmt_list_hash *rhs)
2587{
2588 if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2589 return 0;
2590 if (lhs->dwo_unit != NULL
2591 && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2592 return 0;
2593
2594 return lhs->line_offset.sect_off == rhs->line_offset.sect_off;
2595}
2596
7b9f3c50
DE
2597/* Hash function for a quick_file_names. */
2598
2599static hashval_t
2600hash_file_name_entry (const void *e)
2601{
2602 const struct quick_file_names *file_data = e;
2603
094b34ac 2604 return hash_stmt_list_entry (&file_data->hash);
7b9f3c50
DE
2605}
2606
2607/* Equality function for a quick_file_names. */
2608
2609static int
2610eq_file_name_entry (const void *a, const void *b)
2611{
2612 const struct quick_file_names *ea = a;
2613 const struct quick_file_names *eb = b;
2614
094b34ac 2615 return eq_stmt_list_entry (&ea->hash, &eb->hash);
7b9f3c50
DE
2616}
2617
2618/* Delete function for a quick_file_names. */
2619
2620static void
2621delete_file_name_entry (void *e)
2622{
2623 struct quick_file_names *file_data = e;
2624 int i;
2625
2626 for (i = 0; i < file_data->num_file_names; ++i)
2627 {
2628 xfree ((void*) file_data->file_names[i]);
2629 if (file_data->real_names)
2630 xfree ((void*) file_data->real_names[i]);
2631 }
2632
2633 /* The space for the struct itself lives on objfile_obstack,
2634 so we don't free it here. */
2635}
2636
2637/* Create a quick_file_names hash table. */
2638
2639static htab_t
2640create_quick_file_names_table (unsigned int nr_initial_entries)
2641{
2642 return htab_create_alloc (nr_initial_entries,
2643 hash_file_name_entry, eq_file_name_entry,
2644 delete_file_name_entry, xcalloc, xfree);
2645}
9291a0cd 2646
918dd910
JK
2647/* Read in PER_CU->CU. This function is unrelated to symtabs, symtab would
2648 have to be created afterwards. You should call age_cached_comp_units after
2649 processing PER_CU->CU. dw2_setup must have been already called. */
2650
2651static void
2652load_cu (struct dwarf2_per_cu_data *per_cu)
2653{
3019eac3 2654 if (per_cu->is_debug_types)
e5fe5e75 2655 load_full_type_unit (per_cu);
918dd910 2656 else
95554aad 2657 load_full_comp_unit (per_cu, language_minimal);
918dd910 2658
cc12ce38
DE
2659 if (per_cu->cu == NULL)
2660 return; /* Dummy CU. */
2dc860c0
DE
2661
2662 dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
918dd910
JK
2663}
2664
a0f42c21 2665/* Read in the symbols for PER_CU. */
2fdf6df6 2666
9291a0cd 2667static void
a0f42c21 2668dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
9291a0cd
TT
2669{
2670 struct cleanup *back_to;
2671
f4dc4d17
DE
2672 /* Skip type_unit_groups, reading the type units they contain
2673 is handled elsewhere. */
2674 if (IS_TYPE_UNIT_GROUP (per_cu))
2675 return;
2676
9291a0cd
TT
2677 back_to = make_cleanup (dwarf2_release_queue, NULL);
2678
95554aad 2679 if (dwarf2_per_objfile->using_index
43f3e411 2680 ? per_cu->v.quick->compunit_symtab == NULL
95554aad
TT
2681 : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2682 {
2683 queue_comp_unit (per_cu, language_minimal);
2684 load_cu (per_cu);
89e63ee4
DE
2685
2686 /* If we just loaded a CU from a DWO, and we're working with an index
2687 that may badly handle TUs, load all the TUs in that DWO as well.
2688 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
2689 if (!per_cu->is_debug_types
cc12ce38 2690 && per_cu->cu != NULL
89e63ee4
DE
2691 && per_cu->cu->dwo_unit != NULL
2692 && dwarf2_per_objfile->index_table != NULL
2693 && dwarf2_per_objfile->index_table->version <= 7
2694 /* DWP files aren't supported yet. */
2695 && get_dwp_file () == NULL)
2696 queue_and_load_all_dwo_tus (per_cu);
95554aad 2697 }
9291a0cd 2698
a0f42c21 2699 process_queue ();
9291a0cd
TT
2700
2701 /* Age the cache, releasing compilation units that have not
2702 been used recently. */
2703 age_cached_comp_units ();
2704
2705 do_cleanups (back_to);
2706}
2707
2708/* Ensure that the symbols for PER_CU have been read in. OBJFILE is
2709 the objfile from which this CU came. Returns the resulting symbol
2710 table. */
2fdf6df6 2711
43f3e411 2712static struct compunit_symtab *
a0f42c21 2713dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
9291a0cd 2714{
95554aad 2715 gdb_assert (dwarf2_per_objfile->using_index);
43f3e411 2716 if (!per_cu->v.quick->compunit_symtab)
9291a0cd
TT
2717 {
2718 struct cleanup *back_to = make_cleanup (free_cached_comp_units, NULL);
2719 increment_reading_symtab ();
a0f42c21 2720 dw2_do_instantiate_symtab (per_cu);
95554aad 2721 process_cu_includes ();
9291a0cd
TT
2722 do_cleanups (back_to);
2723 }
f194fefb 2724
43f3e411 2725 return per_cu->v.quick->compunit_symtab;
9291a0cd
TT
2726}
2727
8832e7e3 2728/* Return the CU/TU given its index.
f4dc4d17
DE
2729
2730 This is intended for loops like:
2731
2732 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2733 + dwarf2_per_objfile->n_type_units); ++i)
2734 {
8832e7e3 2735 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
f4dc4d17
DE
2736
2737 ...;
2738 }
2739*/
2fdf6df6 2740
1fd400ff 2741static struct dwarf2_per_cu_data *
8832e7e3 2742dw2_get_cutu (int index)
1fd400ff
TT
2743{
2744 if (index >= dwarf2_per_objfile->n_comp_units)
2745 {
f4dc4d17 2746 index -= dwarf2_per_objfile->n_comp_units;
094b34ac
DE
2747 gdb_assert (index < dwarf2_per_objfile->n_type_units);
2748 return &dwarf2_per_objfile->all_type_units[index]->per_cu;
f4dc4d17
DE
2749 }
2750
2751 return dwarf2_per_objfile->all_comp_units[index];
2752}
2753
8832e7e3
DE
2754/* Return the CU given its index.
2755 This differs from dw2_get_cutu in that it's for when you know INDEX
2756 refers to a CU. */
f4dc4d17
DE
2757
2758static struct dwarf2_per_cu_data *
8832e7e3 2759dw2_get_cu (int index)
f4dc4d17 2760{
8832e7e3 2761 gdb_assert (index >= 0 && index < dwarf2_per_objfile->n_comp_units);
f4dc4d17 2762
1fd400ff
TT
2763 return dwarf2_per_objfile->all_comp_units[index];
2764}
2765
2ec9a5e0
TT
2766/* A helper for create_cus_from_index that handles a given list of
2767 CUs. */
2fdf6df6 2768
74a0d9f6 2769static void
2ec9a5e0
TT
2770create_cus_from_index_list (struct objfile *objfile,
2771 const gdb_byte *cu_list, offset_type n_elements,
2772 struct dwarf2_section_info *section,
2773 int is_dwz,
2774 int base_offset)
9291a0cd
TT
2775{
2776 offset_type i;
9291a0cd 2777
2ec9a5e0 2778 for (i = 0; i < n_elements; i += 2)
9291a0cd
TT
2779 {
2780 struct dwarf2_per_cu_data *the_cu;
2781 ULONGEST offset, length;
2782
74a0d9f6
JK
2783 gdb_static_assert (sizeof (ULONGEST) >= 8);
2784 offset = extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2785 length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
9291a0cd
TT
2786 cu_list += 2 * 8;
2787
2788 the_cu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2789 struct dwarf2_per_cu_data);
b64f50a1 2790 the_cu->offset.sect_off = offset;
9291a0cd
TT
2791 the_cu->length = length;
2792 the_cu->objfile = objfile;
8a0459fd 2793 the_cu->section = section;
9291a0cd
TT
2794 the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2795 struct dwarf2_per_cu_quick_data);
2ec9a5e0
TT
2796 the_cu->is_dwz = is_dwz;
2797 dwarf2_per_objfile->all_comp_units[base_offset + i / 2] = the_cu;
9291a0cd 2798 }
9291a0cd
TT
2799}
2800
2ec9a5e0 2801/* Read the CU list from the mapped index, and use it to create all
74a0d9f6 2802 the CU objects for this objfile. */
2ec9a5e0 2803
74a0d9f6 2804static void
2ec9a5e0
TT
2805create_cus_from_index (struct objfile *objfile,
2806 const gdb_byte *cu_list, offset_type cu_list_elements,
2807 const gdb_byte *dwz_list, offset_type dwz_elements)
2808{
2809 struct dwz_file *dwz;
2810
2811 dwarf2_per_objfile->n_comp_units = (cu_list_elements + dwz_elements) / 2;
2812 dwarf2_per_objfile->all_comp_units
2813 = obstack_alloc (&objfile->objfile_obstack,
2814 dwarf2_per_objfile->n_comp_units
2815 * sizeof (struct dwarf2_per_cu_data *));
2816
74a0d9f6
JK
2817 create_cus_from_index_list (objfile, cu_list, cu_list_elements,
2818 &dwarf2_per_objfile->info, 0, 0);
2ec9a5e0
TT
2819
2820 if (dwz_elements == 0)
74a0d9f6 2821 return;
2ec9a5e0
TT
2822
2823 dwz = dwarf2_get_dwz_file ();
74a0d9f6
JK
2824 create_cus_from_index_list (objfile, dwz_list, dwz_elements, &dwz->info, 1,
2825 cu_list_elements / 2);
2ec9a5e0
TT
2826}
2827
1fd400ff 2828/* Create the signatured type hash table from the index. */
673bfd45 2829
74a0d9f6 2830static void
673bfd45 2831create_signatured_type_table_from_index (struct objfile *objfile,
8b70b953 2832 struct dwarf2_section_info *section,
673bfd45
DE
2833 const gdb_byte *bytes,
2834 offset_type elements)
1fd400ff
TT
2835{
2836 offset_type i;
673bfd45 2837 htab_t sig_types_hash;
1fd400ff 2838
6aa5f3a6
DE
2839 dwarf2_per_objfile->n_type_units
2840 = dwarf2_per_objfile->n_allocated_type_units
2841 = elements / 3;
d467dd73 2842 dwarf2_per_objfile->all_type_units
a2ce51a0
DE
2843 = xmalloc (dwarf2_per_objfile->n_type_units
2844 * sizeof (struct signatured_type *));
1fd400ff 2845
673bfd45 2846 sig_types_hash = allocate_signatured_type_table (objfile);
1fd400ff
TT
2847
2848 for (i = 0; i < elements; i += 3)
2849 {
52dc124a
DE
2850 struct signatured_type *sig_type;
2851 ULONGEST offset, type_offset_in_tu, signature;
1fd400ff
TT
2852 void **slot;
2853
74a0d9f6
JK
2854 gdb_static_assert (sizeof (ULONGEST) >= 8);
2855 offset = extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
2856 type_offset_in_tu = extract_unsigned_integer (bytes + 8, 8,
2857 BFD_ENDIAN_LITTLE);
1fd400ff
TT
2858 signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
2859 bytes += 3 * 8;
2860
52dc124a 2861 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
1fd400ff 2862 struct signatured_type);
52dc124a 2863 sig_type->signature = signature;
3019eac3
DE
2864 sig_type->type_offset_in_tu.cu_off = type_offset_in_tu;
2865 sig_type->per_cu.is_debug_types = 1;
8a0459fd 2866 sig_type->per_cu.section = section;
52dc124a
DE
2867 sig_type->per_cu.offset.sect_off = offset;
2868 sig_type->per_cu.objfile = objfile;
2869 sig_type->per_cu.v.quick
1fd400ff
TT
2870 = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2871 struct dwarf2_per_cu_quick_data);
2872
52dc124a
DE
2873 slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
2874 *slot = sig_type;
1fd400ff 2875
b4dd5633 2876 dwarf2_per_objfile->all_type_units[i / 3] = sig_type;
1fd400ff
TT
2877 }
2878
673bfd45 2879 dwarf2_per_objfile->signatured_types = sig_types_hash;
1fd400ff
TT
2880}
2881
9291a0cd
TT
2882/* Read the address map data from the mapped index, and use it to
2883 populate the objfile's psymtabs_addrmap. */
2fdf6df6 2884
9291a0cd
TT
2885static void
2886create_addrmap_from_index (struct objfile *objfile, struct mapped_index *index)
2887{
3e29f34a 2888 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9291a0cd
TT
2889 const gdb_byte *iter, *end;
2890 struct obstack temp_obstack;
2891 struct addrmap *mutable_map;
2892 struct cleanup *cleanup;
2893 CORE_ADDR baseaddr;
2894
2895 obstack_init (&temp_obstack);
2896 cleanup = make_cleanup_obstack_free (&temp_obstack);
2897 mutable_map = addrmap_create_mutable (&temp_obstack);
2898
2899 iter = index->address_table;
2900 end = iter + index->address_table_size;
2901
2902 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
2903
2904 while (iter < end)
2905 {
2906 ULONGEST hi, lo, cu_index;
2907 lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2908 iter += 8;
2909 hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2910 iter += 8;
2911 cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
2912 iter += 4;
f652bce2 2913
24a55014 2914 if (lo > hi)
f652bce2 2915 {
24a55014
DE
2916 complaint (&symfile_complaints,
2917 _(".gdb_index address table has invalid range (%s - %s)"),
c0cd8254 2918 hex_string (lo), hex_string (hi));
24a55014 2919 continue;
f652bce2 2920 }
24a55014
DE
2921
2922 if (cu_index >= dwarf2_per_objfile->n_comp_units)
f652bce2
DE
2923 {
2924 complaint (&symfile_complaints,
2925 _(".gdb_index address table has invalid CU number %u"),
2926 (unsigned) cu_index);
24a55014 2927 continue;
f652bce2 2928 }
24a55014 2929
3e29f34a
MR
2930 lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr);
2931 hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr);
2932 addrmap_set_empty (mutable_map, lo, hi - 1, dw2_get_cutu (cu_index));
9291a0cd
TT
2933 }
2934
2935 objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
2936 &objfile->objfile_obstack);
2937 do_cleanups (cleanup);
2938}
2939
59d7bcaf
JK
2940/* The hash function for strings in the mapped index. This is the same as
2941 SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
2942 implementation. This is necessary because the hash function is tied to the
2943 format of the mapped index file. The hash values do not have to match with
559a7a62
JK
2944 SYMBOL_HASH_NEXT.
2945
2946 Use INT_MAX for INDEX_VERSION if you generate the current index format. */
2fdf6df6 2947
9291a0cd 2948static hashval_t
559a7a62 2949mapped_index_string_hash (int index_version, const void *p)
9291a0cd
TT
2950{
2951 const unsigned char *str = (const unsigned char *) p;
2952 hashval_t r = 0;
2953 unsigned char c;
2954
2955 while ((c = *str++) != 0)
559a7a62
JK
2956 {
2957 if (index_version >= 5)
2958 c = tolower (c);
2959 r = r * 67 + c - 113;
2960 }
9291a0cd
TT
2961
2962 return r;
2963}
2964
2965/* Find a slot in the mapped index INDEX for the object named NAME.
2966 If NAME is found, set *VEC_OUT to point to the CU vector in the
2967 constant pool and return 1. If NAME cannot be found, return 0. */
2fdf6df6 2968
9291a0cd
TT
2969static int
2970find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
2971 offset_type **vec_out)
2972{
0cf03b49
JK
2973 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2974 offset_type hash;
9291a0cd 2975 offset_type slot, step;
559a7a62 2976 int (*cmp) (const char *, const char *);
9291a0cd 2977
0cf03b49
JK
2978 if (current_language->la_language == language_cplus
2979 || current_language->la_language == language_java
45280282
IB
2980 || current_language->la_language == language_fortran
2981 || current_language->la_language == language_d)
0cf03b49
JK
2982 {
2983 /* NAME is already canonical. Drop any qualifiers as .gdb_index does
2984 not contain any. */
a8719064 2985
72998fb3 2986 if (strchr (name, '(') != NULL)
0cf03b49 2987 {
72998fb3 2988 char *without_params = cp_remove_params (name);
0cf03b49 2989
72998fb3
DE
2990 if (without_params != NULL)
2991 {
2992 make_cleanup (xfree, without_params);
2993 name = without_params;
2994 }
0cf03b49
JK
2995 }
2996 }
2997
559a7a62 2998 /* Index version 4 did not support case insensitive searches. But the
feea76c2 2999 indices for case insensitive languages are built in lowercase, therefore
559a7a62
JK
3000 simulate our NAME being searched is also lowercased. */
3001 hash = mapped_index_string_hash ((index->version == 4
3002 && case_sensitivity == case_sensitive_off
3003 ? 5 : index->version),
3004 name);
3005
3876f04e
DE
3006 slot = hash & (index->symbol_table_slots - 1);
3007 step = ((hash * 17) & (index->symbol_table_slots - 1)) | 1;
559a7a62 3008 cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
9291a0cd
TT
3009
3010 for (;;)
3011 {
3012 /* Convert a slot number to an offset into the table. */
3013 offset_type i = 2 * slot;
3014 const char *str;
3876f04e 3015 if (index->symbol_table[i] == 0 && index->symbol_table[i + 1] == 0)
0cf03b49
JK
3016 {
3017 do_cleanups (back_to);
3018 return 0;
3019 }
9291a0cd 3020
3876f04e 3021 str = index->constant_pool + MAYBE_SWAP (index->symbol_table[i]);
559a7a62 3022 if (!cmp (name, str))
9291a0cd
TT
3023 {
3024 *vec_out = (offset_type *) (index->constant_pool
3876f04e 3025 + MAYBE_SWAP (index->symbol_table[i + 1]));
0cf03b49 3026 do_cleanups (back_to);
9291a0cd
TT
3027 return 1;
3028 }
3029
3876f04e 3030 slot = (slot + step) & (index->symbol_table_slots - 1);
9291a0cd
TT
3031 }
3032}
3033
2ec9a5e0
TT
3034/* A helper function that reads the .gdb_index from SECTION and fills
3035 in MAP. FILENAME is the name of the file containing the section;
3036 it is used for error reporting. DEPRECATED_OK is nonzero if it is
3037 ok to use deprecated sections.
3038
3039 CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3040 out parameters that are filled in with information about the CU and
3041 TU lists in the section.
3042
3043 Returns 1 if all went well, 0 otherwise. */
2fdf6df6 3044
9291a0cd 3045static int
2ec9a5e0
TT
3046read_index_from_section (struct objfile *objfile,
3047 const char *filename,
3048 int deprecated_ok,
3049 struct dwarf2_section_info *section,
3050 struct mapped_index *map,
3051 const gdb_byte **cu_list,
3052 offset_type *cu_list_elements,
3053 const gdb_byte **types_list,
3054 offset_type *types_list_elements)
9291a0cd 3055{
948f8e3d 3056 const gdb_byte *addr;
2ec9a5e0 3057 offset_type version;
b3b272e1 3058 offset_type *metadata;
1fd400ff 3059 int i;
9291a0cd 3060
2ec9a5e0 3061 if (dwarf2_section_empty_p (section))
9291a0cd 3062 return 0;
82430852
JK
3063
3064 /* Older elfutils strip versions could keep the section in the main
3065 executable while splitting it for the separate debug info file. */
a32a8923 3066 if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
82430852
JK
3067 return 0;
3068
2ec9a5e0 3069 dwarf2_read_section (objfile, section);
9291a0cd 3070
2ec9a5e0 3071 addr = section->buffer;
9291a0cd 3072 /* Version check. */
1fd400ff 3073 version = MAYBE_SWAP (*(offset_type *) addr);
987d643c 3074 /* Versions earlier than 3 emitted every copy of a psymbol. This
a6e293d1 3075 causes the index to behave very poorly for certain requests. Version 3
831adc1f 3076 contained incomplete addrmap. So, it seems better to just ignore such
481860b3 3077 indices. */
831adc1f 3078 if (version < 4)
481860b3
GB
3079 {
3080 static int warning_printed = 0;
3081 if (!warning_printed)
3082 {
3083 warning (_("Skipping obsolete .gdb_index section in %s."),
2ec9a5e0 3084 filename);
481860b3
GB
3085 warning_printed = 1;
3086 }
3087 return 0;
3088 }
3089 /* Index version 4 uses a different hash function than index version
3090 5 and later.
3091
3092 Versions earlier than 6 did not emit psymbols for inlined
3093 functions. Using these files will cause GDB not to be able to
3094 set breakpoints on inlined functions by name, so we ignore these
e615022a
DE
3095 indices unless the user has done
3096 "set use-deprecated-index-sections on". */
2ec9a5e0 3097 if (version < 6 && !deprecated_ok)
481860b3
GB
3098 {
3099 static int warning_printed = 0;
3100 if (!warning_printed)
3101 {
e615022a
DE
3102 warning (_("\
3103Skipping deprecated .gdb_index section in %s.\n\
3104Do \"set use-deprecated-index-sections on\" before the file is read\n\
3105to use the section anyway."),
2ec9a5e0 3106 filename);
481860b3
GB
3107 warning_printed = 1;
3108 }
3109 return 0;
3110 }
796a7ff8 3111 /* Version 7 indices generated by gold refer to the CU for a symbol instead
8943b874
DE
3112 of the TU (for symbols coming from TUs),
3113 http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3114 Plus gold-generated indices can have duplicate entries for global symbols,
3115 http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3116 These are just performance bugs, and we can't distinguish gdb-generated
3117 indices from gold-generated ones, so issue no warning here. */
796a7ff8 3118
481860b3 3119 /* Indexes with higher version than the one supported by GDB may be no
594e8718 3120 longer backward compatible. */
796a7ff8 3121 if (version > 8)
594e8718 3122 return 0;
9291a0cd 3123
559a7a62 3124 map->version = version;
2ec9a5e0 3125 map->total_size = section->size;
9291a0cd
TT
3126
3127 metadata = (offset_type *) (addr + sizeof (offset_type));
1fd400ff
TT
3128
3129 i = 0;
2ec9a5e0
TT
3130 *cu_list = addr + MAYBE_SWAP (metadata[i]);
3131 *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3132 / 8);
1fd400ff
TT
3133 ++i;
3134
2ec9a5e0
TT
3135 *types_list = addr + MAYBE_SWAP (metadata[i]);
3136 *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3137 - MAYBE_SWAP (metadata[i]))
3138 / 8);
987d643c 3139 ++i;
1fd400ff
TT
3140
3141 map->address_table = addr + MAYBE_SWAP (metadata[i]);
3142 map->address_table_size = (MAYBE_SWAP (metadata[i + 1])
3143 - MAYBE_SWAP (metadata[i]));
3144 ++i;
3145
3876f04e
DE
3146 map->symbol_table = (offset_type *) (addr + MAYBE_SWAP (metadata[i]));
3147 map->symbol_table_slots = ((MAYBE_SWAP (metadata[i + 1])
3148 - MAYBE_SWAP (metadata[i]))
3149 / (2 * sizeof (offset_type)));
1fd400ff 3150 ++i;
9291a0cd 3151
f9d83a0b 3152 map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
1fd400ff 3153
2ec9a5e0
TT
3154 return 1;
3155}
3156
3157
3158/* Read the index file. If everything went ok, initialize the "quick"
3159 elements of all the CUs and return 1. Otherwise, return 0. */
3160
3161static int
3162dwarf2_read_index (struct objfile *objfile)
3163{
3164 struct mapped_index local_map, *map;
3165 const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3166 offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
4db1a1dc 3167 struct dwz_file *dwz;
2ec9a5e0 3168
4262abfb 3169 if (!read_index_from_section (objfile, objfile_name (objfile),
2ec9a5e0
TT
3170 use_deprecated_index_sections,
3171 &dwarf2_per_objfile->gdb_index, &local_map,
3172 &cu_list, &cu_list_elements,
3173 &types_list, &types_list_elements))
3174 return 0;
3175
0fefef59 3176 /* Don't use the index if it's empty. */
2ec9a5e0 3177 if (local_map.symbol_table_slots == 0)
0fefef59
DE
3178 return 0;
3179
2ec9a5e0
TT
3180 /* If there is a .dwz file, read it so we can get its CU list as
3181 well. */
4db1a1dc
TT
3182 dwz = dwarf2_get_dwz_file ();
3183 if (dwz != NULL)
2ec9a5e0 3184 {
2ec9a5e0
TT
3185 struct mapped_index dwz_map;
3186 const gdb_byte *dwz_types_ignore;
3187 offset_type dwz_types_elements_ignore;
3188
3189 if (!read_index_from_section (objfile, bfd_get_filename (dwz->dwz_bfd),
3190 1,
3191 &dwz->gdb_index, &dwz_map,
3192 &dwz_list, &dwz_list_elements,
3193 &dwz_types_ignore,
3194 &dwz_types_elements_ignore))
3195 {
3196 warning (_("could not read '.gdb_index' section from %s; skipping"),
3197 bfd_get_filename (dwz->dwz_bfd));
3198 return 0;
3199 }
3200 }
3201
74a0d9f6
JK
3202 create_cus_from_index (objfile, cu_list, cu_list_elements, dwz_list,
3203 dwz_list_elements);
1fd400ff 3204
8b70b953
TT
3205 if (types_list_elements)
3206 {
3207 struct dwarf2_section_info *section;
3208
3209 /* We can only handle a single .debug_types when we have an
3210 index. */
3211 if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3212 return 0;
3213
3214 section = VEC_index (dwarf2_section_info_def,
3215 dwarf2_per_objfile->types, 0);
3216
74a0d9f6
JK
3217 create_signatured_type_table_from_index (objfile, section, types_list,
3218 types_list_elements);
8b70b953 3219 }
9291a0cd 3220
2ec9a5e0
TT
3221 create_addrmap_from_index (objfile, &local_map);
3222
3223 map = obstack_alloc (&objfile->objfile_obstack, sizeof (struct mapped_index));
3224 *map = local_map;
9291a0cd
TT
3225
3226 dwarf2_per_objfile->index_table = map;
3227 dwarf2_per_objfile->using_index = 1;
7b9f3c50
DE
3228 dwarf2_per_objfile->quick_file_names_table =
3229 create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
9291a0cd
TT
3230
3231 return 1;
3232}
3233
3234/* A helper for the "quick" functions which sets the global
3235 dwarf2_per_objfile according to OBJFILE. */
2fdf6df6 3236
9291a0cd
TT
3237static void
3238dw2_setup (struct objfile *objfile)
3239{
3240 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
3241 gdb_assert (dwarf2_per_objfile);
3242}
3243
dee91e82 3244/* die_reader_func for dw2_get_file_names. */
2fdf6df6 3245
dee91e82
DE
3246static void
3247dw2_get_file_names_reader (const struct die_reader_specs *reader,
d521ce57 3248 const gdb_byte *info_ptr,
dee91e82
DE
3249 struct die_info *comp_unit_die,
3250 int has_children,
3251 void *data)
9291a0cd 3252{
dee91e82
DE
3253 struct dwarf2_cu *cu = reader->cu;
3254 struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3255 struct objfile *objfile = dwarf2_per_objfile->objfile;
094b34ac 3256 struct dwarf2_per_cu_data *lh_cu;
7b9f3c50 3257 struct line_header *lh;
9291a0cd 3258 struct attribute *attr;
dee91e82 3259 int i;
15d034d0 3260 const char *name, *comp_dir;
7b9f3c50
DE
3261 void **slot;
3262 struct quick_file_names *qfn;
3263 unsigned int line_offset;
9291a0cd 3264
0186c6a7
DE
3265 gdb_assert (! this_cu->is_debug_types);
3266
07261596
TT
3267 /* Our callers never want to match partial units -- instead they
3268 will match the enclosing full CU. */
3269 if (comp_unit_die->tag == DW_TAG_partial_unit)
3270 {
3271 this_cu->v.quick->no_file_data = 1;
3272 return;
3273 }
3274
0186c6a7 3275 lh_cu = this_cu;
7b9f3c50
DE
3276 lh = NULL;
3277 slot = NULL;
3278 line_offset = 0;
dee91e82
DE
3279
3280 attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
9291a0cd
TT
3281 if (attr)
3282 {
7b9f3c50
DE
3283 struct quick_file_names find_entry;
3284
3285 line_offset = DW_UNSND (attr);
3286
3287 /* We may have already read in this line header (TU line header sharing).
3288 If we have we're done. */
094b34ac
DE
3289 find_entry.hash.dwo_unit = cu->dwo_unit;
3290 find_entry.hash.line_offset.sect_off = line_offset;
7b9f3c50
DE
3291 slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3292 &find_entry, INSERT);
3293 if (*slot != NULL)
3294 {
094b34ac 3295 lh_cu->v.quick->file_names = *slot;
dee91e82 3296 return;
7b9f3c50
DE
3297 }
3298
3019eac3 3299 lh = dwarf_decode_line_header (line_offset, cu);
9291a0cd
TT
3300 }
3301 if (lh == NULL)
3302 {
094b34ac 3303 lh_cu->v.quick->no_file_data = 1;
dee91e82 3304 return;
9291a0cd
TT
3305 }
3306
7b9f3c50 3307 qfn = obstack_alloc (&objfile->objfile_obstack, sizeof (*qfn));
094b34ac
DE
3308 qfn->hash.dwo_unit = cu->dwo_unit;
3309 qfn->hash.line_offset.sect_off = line_offset;
7b9f3c50
DE
3310 gdb_assert (slot != NULL);
3311 *slot = qfn;
9291a0cd 3312
dee91e82 3313 find_file_and_directory (comp_unit_die, cu, &name, &comp_dir);
9291a0cd 3314
7b9f3c50
DE
3315 qfn->num_file_names = lh->num_file_names;
3316 qfn->file_names = obstack_alloc (&objfile->objfile_obstack,
3317 lh->num_file_names * sizeof (char *));
9291a0cd 3318 for (i = 0; i < lh->num_file_names; ++i)
7b9f3c50
DE
3319 qfn->file_names[i] = file_full_name (i + 1, lh, comp_dir);
3320 qfn->real_names = NULL;
9291a0cd 3321
7b9f3c50 3322 free_line_header (lh);
7b9f3c50 3323
094b34ac 3324 lh_cu->v.quick->file_names = qfn;
dee91e82
DE
3325}
3326
3327/* A helper for the "quick" functions which attempts to read the line
3328 table for THIS_CU. */
3329
3330static struct quick_file_names *
e4a48d9d 3331dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
dee91e82 3332{
0186c6a7
DE
3333 /* This should never be called for TUs. */
3334 gdb_assert (! this_cu->is_debug_types);
3335 /* Nor type unit groups. */
3336 gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
f4dc4d17 3337
dee91e82
DE
3338 if (this_cu->v.quick->file_names != NULL)
3339 return this_cu->v.quick->file_names;
3340 /* If we know there is no line data, no point in looking again. */
3341 if (this_cu->v.quick->no_file_data)
3342 return NULL;
3343
0186c6a7 3344 init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
dee91e82
DE
3345
3346 if (this_cu->v.quick->no_file_data)
3347 return NULL;
3348 return this_cu->v.quick->file_names;
9291a0cd
TT
3349}
3350
3351/* A helper for the "quick" functions which computes and caches the
7b9f3c50 3352 real path for a given file name from the line table. */
2fdf6df6 3353
9291a0cd 3354static const char *
7b9f3c50
DE
3355dw2_get_real_path (struct objfile *objfile,
3356 struct quick_file_names *qfn, int index)
9291a0cd 3357{
7b9f3c50
DE
3358 if (qfn->real_names == NULL)
3359 qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
26f2dc30 3360 qfn->num_file_names, const char *);
9291a0cd 3361
7b9f3c50
DE
3362 if (qfn->real_names[index] == NULL)
3363 qfn->real_names[index] = gdb_realpath (qfn->file_names[index]);
9291a0cd 3364
7b9f3c50 3365 return qfn->real_names[index];
9291a0cd
TT
3366}
3367
3368static struct symtab *
3369dw2_find_last_source_symtab (struct objfile *objfile)
3370{
43f3e411 3371 struct compunit_symtab *cust;
9291a0cd 3372 int index;
ae2de4f8 3373
9291a0cd
TT
3374 dw2_setup (objfile);
3375 index = dwarf2_per_objfile->n_comp_units - 1;
43f3e411
DE
3376 cust = dw2_instantiate_symtab (dw2_get_cutu (index));
3377 if (cust == NULL)
3378 return NULL;
3379 return compunit_primary_filetab (cust);
9291a0cd
TT
3380}
3381
7b9f3c50
DE
3382/* Traversal function for dw2_forget_cached_source_info. */
3383
3384static int
3385dw2_free_cached_file_names (void **slot, void *info)
9291a0cd 3386{
7b9f3c50 3387 struct quick_file_names *file_data = (struct quick_file_names *) *slot;
9291a0cd 3388
7b9f3c50 3389 if (file_data->real_names)
9291a0cd 3390 {
7b9f3c50 3391 int i;
9291a0cd 3392
7b9f3c50 3393 for (i = 0; i < file_data->num_file_names; ++i)
9291a0cd 3394 {
7b9f3c50
DE
3395 xfree ((void*) file_data->real_names[i]);
3396 file_data->real_names[i] = NULL;
9291a0cd
TT
3397 }
3398 }
7b9f3c50
DE
3399
3400 return 1;
3401}
3402
3403static void
3404dw2_forget_cached_source_info (struct objfile *objfile)
3405{
3406 dw2_setup (objfile);
3407
3408 htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3409 dw2_free_cached_file_names, NULL);
9291a0cd
TT
3410}
3411
f8eba3c6
TT
3412/* Helper function for dw2_map_symtabs_matching_filename that expands
3413 the symtabs and calls the iterator. */
3414
3415static int
3416dw2_map_expand_apply (struct objfile *objfile,
3417 struct dwarf2_per_cu_data *per_cu,
f5b95b50 3418 const char *name, const char *real_path,
f8eba3c6
TT
3419 int (*callback) (struct symtab *, void *),
3420 void *data)
3421{
43f3e411 3422 struct compunit_symtab *last_made = objfile->compunit_symtabs;
f8eba3c6
TT
3423
3424 /* Don't visit already-expanded CUs. */
43f3e411 3425 if (per_cu->v.quick->compunit_symtab)
f8eba3c6
TT
3426 return 0;
3427
3428 /* This may expand more than one symtab, and we want to iterate over
3429 all of them. */
a0f42c21 3430 dw2_instantiate_symtab (per_cu);
f8eba3c6 3431
f5b95b50 3432 return iterate_over_some_symtabs (name, real_path, callback, data,
43f3e411 3433 objfile->compunit_symtabs, last_made);
f8eba3c6
TT
3434}
3435
3436/* Implementation of the map_symtabs_matching_filename method. */
3437
9291a0cd 3438static int
f8eba3c6 3439dw2_map_symtabs_matching_filename (struct objfile *objfile, const char *name,
f5b95b50 3440 const char *real_path,
f8eba3c6
TT
3441 int (*callback) (struct symtab *, void *),
3442 void *data)
9291a0cd
TT
3443{
3444 int i;
c011a4f4 3445 const char *name_basename = lbasename (name);
9291a0cd
TT
3446
3447 dw2_setup (objfile);
ae2de4f8 3448
848e3e78
DE
3449 /* The rule is CUs specify all the files, including those used by
3450 any TU, so there's no need to scan TUs here. */
f4dc4d17 3451
848e3e78 3452 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
3453 {
3454 int j;
8832e7e3 3455 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
7b9f3c50 3456 struct quick_file_names *file_data;
9291a0cd 3457
3d7bb9d9 3458 /* We only need to look at symtabs not already expanded. */
43f3e411 3459 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3460 continue;
3461
e4a48d9d 3462 file_data = dw2_get_file_names (per_cu);
7b9f3c50 3463 if (file_data == NULL)
9291a0cd
TT
3464 continue;
3465
7b9f3c50 3466 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 3467 {
7b9f3c50 3468 const char *this_name = file_data->file_names[j];
da235a7c 3469 const char *this_real_name;
9291a0cd 3470
af529f8f 3471 if (compare_filenames_for_search (this_name, name))
9291a0cd 3472 {
f5b95b50 3473 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
f8eba3c6
TT
3474 callback, data))
3475 return 1;
288e77a7 3476 continue;
4aac40c8 3477 }
9291a0cd 3478
c011a4f4
DE
3479 /* Before we invoke realpath, which can get expensive when many
3480 files are involved, do a quick comparison of the basenames. */
3481 if (! basenames_may_differ
3482 && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3483 continue;
3484
da235a7c
JK
3485 this_real_name = dw2_get_real_path (objfile, file_data, j);
3486 if (compare_filenames_for_search (this_real_name, name))
9291a0cd 3487 {
da235a7c
JK
3488 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3489 callback, data))
3490 return 1;
288e77a7 3491 continue;
da235a7c 3492 }
9291a0cd 3493
da235a7c
JK
3494 if (real_path != NULL)
3495 {
af529f8f
JK
3496 gdb_assert (IS_ABSOLUTE_PATH (real_path));
3497 gdb_assert (IS_ABSOLUTE_PATH (name));
7b9f3c50 3498 if (this_real_name != NULL
af529f8f 3499 && FILENAME_CMP (real_path, this_real_name) == 0)
9291a0cd 3500 {
f5b95b50 3501 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
f8eba3c6
TT
3502 callback, data))
3503 return 1;
288e77a7 3504 continue;
9291a0cd
TT
3505 }
3506 }
3507 }
3508 }
3509
9291a0cd
TT
3510 return 0;
3511}
3512
da51c347
DE
3513/* Struct used to manage iterating over all CUs looking for a symbol. */
3514
3515struct dw2_symtab_iterator
9291a0cd 3516{
da51c347
DE
3517 /* The internalized form of .gdb_index. */
3518 struct mapped_index *index;
3519 /* If non-zero, only look for symbols that match BLOCK_INDEX. */
3520 int want_specific_block;
3521 /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3522 Unused if !WANT_SPECIFIC_BLOCK. */
3523 int block_index;
3524 /* The kind of symbol we're looking for. */
3525 domain_enum domain;
3526 /* The list of CUs from the index entry of the symbol,
3527 or NULL if not found. */
3528 offset_type *vec;
3529 /* The next element in VEC to look at. */
3530 int next;
3531 /* The number of elements in VEC, or zero if there is no match. */
3532 int length;
8943b874
DE
3533 /* Have we seen a global version of the symbol?
3534 If so we can ignore all further global instances.
3535 This is to work around gold/15646, inefficient gold-generated
3536 indices. */
3537 int global_seen;
da51c347 3538};
9291a0cd 3539
da51c347
DE
3540/* Initialize the index symtab iterator ITER.
3541 If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3542 in block BLOCK_INDEX. Otherwise BLOCK_INDEX is ignored. */
2fdf6df6 3543
9291a0cd 3544static void
da51c347
DE
3545dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3546 struct mapped_index *index,
3547 int want_specific_block,
3548 int block_index,
3549 domain_enum domain,
3550 const char *name)
3551{
3552 iter->index = index;
3553 iter->want_specific_block = want_specific_block;
3554 iter->block_index = block_index;
3555 iter->domain = domain;
3556 iter->next = 0;
8943b874 3557 iter->global_seen = 0;
da51c347
DE
3558
3559 if (find_slot_in_mapped_hash (index, name, &iter->vec))
3560 iter->length = MAYBE_SWAP (*iter->vec);
3561 else
3562 {
3563 iter->vec = NULL;
3564 iter->length = 0;
3565 }
3566}
3567
3568/* Return the next matching CU or NULL if there are no more. */
3569
3570static struct dwarf2_per_cu_data *
3571dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3572{
3573 for ( ; iter->next < iter->length; ++iter->next)
3574 {
3575 offset_type cu_index_and_attrs =
3576 MAYBE_SWAP (iter->vec[iter->next + 1]);
3577 offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3190f0c6 3578 struct dwarf2_per_cu_data *per_cu;
da51c347
DE
3579 int want_static = iter->block_index != GLOBAL_BLOCK;
3580 /* This value is only valid for index versions >= 7. */
3581 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3582 gdb_index_symbol_kind symbol_kind =
3583 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3584 /* Only check the symbol attributes if they're present.
3585 Indices prior to version 7 don't record them,
3586 and indices >= 7 may elide them for certain symbols
3587 (gold does this). */
3588 int attrs_valid =
3589 (iter->index->version >= 7
3590 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3591
3190f0c6
DE
3592 /* Don't crash on bad data. */
3593 if (cu_index >= (dwarf2_per_objfile->n_comp_units
3594 + dwarf2_per_objfile->n_type_units))
3595 {
3596 complaint (&symfile_complaints,
3597 _(".gdb_index entry has bad CU index"
4262abfb
JK
3598 " [in module %s]"),
3599 objfile_name (dwarf2_per_objfile->objfile));
3190f0c6
DE
3600 continue;
3601 }
3602
8832e7e3 3603 per_cu = dw2_get_cutu (cu_index);
3190f0c6 3604
da51c347 3605 /* Skip if already read in. */
43f3e411 3606 if (per_cu->v.quick->compunit_symtab)
da51c347
DE
3607 continue;
3608
8943b874
DE
3609 /* Check static vs global. */
3610 if (attrs_valid)
3611 {
3612 if (iter->want_specific_block
3613 && want_static != is_static)
3614 continue;
3615 /* Work around gold/15646. */
3616 if (!is_static && iter->global_seen)
3617 continue;
3618 if (!is_static)
3619 iter->global_seen = 1;
3620 }
da51c347
DE
3621
3622 /* Only check the symbol's kind if it has one. */
3623 if (attrs_valid)
3624 {
3625 switch (iter->domain)
3626 {
3627 case VAR_DOMAIN:
3628 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
3629 && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
3630 /* Some types are also in VAR_DOMAIN. */
3631 && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3632 continue;
3633 break;
3634 case STRUCT_DOMAIN:
3635 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3636 continue;
3637 break;
3638 case LABEL_DOMAIN:
3639 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3640 continue;
3641 break;
3642 default:
3643 break;
3644 }
3645 }
3646
3647 ++iter->next;
3648 return per_cu;
3649 }
3650
3651 return NULL;
3652}
3653
43f3e411 3654static struct compunit_symtab *
da51c347
DE
3655dw2_lookup_symbol (struct objfile *objfile, int block_index,
3656 const char *name, domain_enum domain)
9291a0cd 3657{
43f3e411 3658 struct compunit_symtab *stab_best = NULL;
156942c7
DE
3659 struct mapped_index *index;
3660
9291a0cd
TT
3661 dw2_setup (objfile);
3662
156942c7
DE
3663 index = dwarf2_per_objfile->index_table;
3664
da51c347 3665 /* index is NULL if OBJF_READNOW. */
156942c7 3666 if (index)
9291a0cd 3667 {
da51c347
DE
3668 struct dw2_symtab_iterator iter;
3669 struct dwarf2_per_cu_data *per_cu;
3670
3671 dw2_symtab_iter_init (&iter, index, 1, block_index, domain, name);
9291a0cd 3672
da51c347 3673 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
9291a0cd 3674 {
b2e2f908 3675 struct symbol *sym, *with_opaque = NULL;
43f3e411
DE
3676 struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu);
3677 const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
f194fefb 3678 struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
da51c347 3679
b2e2f908
DE
3680 sym = block_find_symbol (block, name, domain,
3681 block_find_non_opaque_type_preferred,
3682 &with_opaque);
3683
da51c347
DE
3684 /* Some caution must be observed with overloaded functions
3685 and methods, since the index will not contain any overload
3686 information (but NAME might contain it). */
da51c347 3687
b2e2f908
DE
3688 if (sym != NULL
3689 && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
3690 return stab;
3691 if (with_opaque != NULL
3692 && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
3693 stab_best = stab;
da51c347
DE
3694
3695 /* Keep looking through other CUs. */
9291a0cd
TT
3696 }
3697 }
9291a0cd 3698
da51c347 3699 return stab_best;
9291a0cd
TT
3700}
3701
3702static void
3703dw2_print_stats (struct objfile *objfile)
3704{
e4a48d9d 3705 int i, total, count;
9291a0cd
TT
3706
3707 dw2_setup (objfile);
e4a48d9d 3708 total = dwarf2_per_objfile->n_comp_units + dwarf2_per_objfile->n_type_units;
9291a0cd 3709 count = 0;
e4a48d9d 3710 for (i = 0; i < total; ++i)
9291a0cd 3711 {
8832e7e3 3712 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 3713
43f3e411 3714 if (!per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3715 ++count;
3716 }
e4a48d9d 3717 printf_filtered (_(" Number of read CUs: %d\n"), total - count);
9291a0cd
TT
3718 printf_filtered (_(" Number of unread CUs: %d\n"), count);
3719}
3720
779bd270
DE
3721/* This dumps minimal information about the index.
3722 It is called via "mt print objfiles".
3723 One use is to verify .gdb_index has been loaded by the
3724 gdb.dwarf2/gdb-index.exp testcase. */
3725
9291a0cd
TT
3726static void
3727dw2_dump (struct objfile *objfile)
3728{
779bd270
DE
3729 dw2_setup (objfile);
3730 gdb_assert (dwarf2_per_objfile->using_index);
3731 printf_filtered (".gdb_index:");
3732 if (dwarf2_per_objfile->index_table != NULL)
3733 {
3734 printf_filtered (" version %d\n",
3735 dwarf2_per_objfile->index_table->version);
3736 }
3737 else
3738 printf_filtered (" faked for \"readnow\"\n");
3739 printf_filtered ("\n");
9291a0cd
TT
3740}
3741
3742static void
3189cb12
DE
3743dw2_relocate (struct objfile *objfile,
3744 const struct section_offsets *new_offsets,
3745 const struct section_offsets *delta)
9291a0cd
TT
3746{
3747 /* There's nothing to relocate here. */
3748}
3749
3750static void
3751dw2_expand_symtabs_for_function (struct objfile *objfile,
3752 const char *func_name)
3753{
da51c347
DE
3754 struct mapped_index *index;
3755
3756 dw2_setup (objfile);
3757
3758 index = dwarf2_per_objfile->index_table;
3759
3760 /* index is NULL if OBJF_READNOW. */
3761 if (index)
3762 {
3763 struct dw2_symtab_iterator iter;
3764 struct dwarf2_per_cu_data *per_cu;
3765
3766 /* Note: It doesn't matter what we pass for block_index here. */
3767 dw2_symtab_iter_init (&iter, index, 0, GLOBAL_BLOCK, VAR_DOMAIN,
3768 func_name);
3769
3770 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3771 dw2_instantiate_symtab (per_cu);
3772 }
9291a0cd
TT
3773}
3774
3775static void
3776dw2_expand_all_symtabs (struct objfile *objfile)
3777{
3778 int i;
3779
3780 dw2_setup (objfile);
1fd400ff
TT
3781
3782 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
d467dd73 3783 + dwarf2_per_objfile->n_type_units); ++i)
9291a0cd 3784 {
8832e7e3 3785 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 3786
a0f42c21 3787 dw2_instantiate_symtab (per_cu);
9291a0cd
TT
3788 }
3789}
3790
3791static void
652a8996
JK
3792dw2_expand_symtabs_with_fullname (struct objfile *objfile,
3793 const char *fullname)
9291a0cd
TT
3794{
3795 int i;
3796
3797 dw2_setup (objfile);
d4637a04
DE
3798
3799 /* We don't need to consider type units here.
3800 This is only called for examining code, e.g. expand_line_sal.
3801 There can be an order of magnitude (or more) more type units
3802 than comp units, and we avoid them if we can. */
3803
3804 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
3805 {
3806 int j;
8832e7e3 3807 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
7b9f3c50 3808 struct quick_file_names *file_data;
9291a0cd 3809
3d7bb9d9 3810 /* We only need to look at symtabs not already expanded. */
43f3e411 3811 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3812 continue;
3813
e4a48d9d 3814 file_data = dw2_get_file_names (per_cu);
7b9f3c50 3815 if (file_data == NULL)
9291a0cd
TT
3816 continue;
3817
7b9f3c50 3818 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 3819 {
652a8996
JK
3820 const char *this_fullname = file_data->file_names[j];
3821
3822 if (filename_cmp (this_fullname, fullname) == 0)
9291a0cd 3823 {
a0f42c21 3824 dw2_instantiate_symtab (per_cu);
9291a0cd
TT
3825 break;
3826 }
3827 }
3828 }
3829}
3830
9291a0cd 3831static void
ade7ed9e 3832dw2_map_matching_symbols (struct objfile *objfile,
fe978cb0 3833 const char * name, domain_enum domain,
ade7ed9e 3834 int global,
40658b94
PH
3835 int (*callback) (struct block *,
3836 struct symbol *, void *),
2edb89d3
JK
3837 void *data, symbol_compare_ftype *match,
3838 symbol_compare_ftype *ordered_compare)
9291a0cd 3839{
40658b94 3840 /* Currently unimplemented; used for Ada. The function can be called if the
a9e6a4bb
JK
3841 current language is Ada for a non-Ada objfile using GNU index. As Ada
3842 does not look for non-Ada symbols this function should just return. */
9291a0cd
TT
3843}
3844
3845static void
f8eba3c6
TT
3846dw2_expand_symtabs_matching
3847 (struct objfile *objfile,
206f2a57
DE
3848 expand_symtabs_file_matcher_ftype *file_matcher,
3849 expand_symtabs_symbol_matcher_ftype *symbol_matcher,
276d885b 3850 expand_symtabs_exp_notify_ftype *expansion_notify,
f8eba3c6
TT
3851 enum search_domain kind,
3852 void *data)
9291a0cd
TT
3853{
3854 int i;
3855 offset_type iter;
4b5246aa 3856 struct mapped_index *index;
9291a0cd
TT
3857
3858 dw2_setup (objfile);
ae2de4f8
DE
3859
3860 /* index_table is NULL if OBJF_READNOW. */
9291a0cd
TT
3861 if (!dwarf2_per_objfile->index_table)
3862 return;
4b5246aa 3863 index = dwarf2_per_objfile->index_table;
9291a0cd 3864
7b08b9eb 3865 if (file_matcher != NULL)
24c79950
TT
3866 {
3867 struct cleanup *cleanup;
3868 htab_t visited_found, visited_not_found;
3869
3870 visited_found = htab_create_alloc (10,
3871 htab_hash_pointer, htab_eq_pointer,
3872 NULL, xcalloc, xfree);
3873 cleanup = make_cleanup_htab_delete (visited_found);
3874 visited_not_found = htab_create_alloc (10,
3875 htab_hash_pointer, htab_eq_pointer,
3876 NULL, xcalloc, xfree);
3877 make_cleanup_htab_delete (visited_not_found);
3878
848e3e78
DE
3879 /* The rule is CUs specify all the files, including those used by
3880 any TU, so there's no need to scan TUs here. */
3881
3882 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
24c79950
TT
3883 {
3884 int j;
8832e7e3 3885 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
24c79950
TT
3886 struct quick_file_names *file_data;
3887 void **slot;
7b08b9eb 3888
61d96d7e
DE
3889 QUIT;
3890
24c79950 3891 per_cu->v.quick->mark = 0;
3d7bb9d9 3892
24c79950 3893 /* We only need to look at symtabs not already expanded. */
43f3e411 3894 if (per_cu->v.quick->compunit_symtab)
24c79950 3895 continue;
7b08b9eb 3896
e4a48d9d 3897 file_data = dw2_get_file_names (per_cu);
24c79950
TT
3898 if (file_data == NULL)
3899 continue;
7b08b9eb 3900
24c79950
TT
3901 if (htab_find (visited_not_found, file_data) != NULL)
3902 continue;
3903 else if (htab_find (visited_found, file_data) != NULL)
3904 {
3905 per_cu->v.quick->mark = 1;
3906 continue;
3907 }
3908
3909 for (j = 0; j < file_data->num_file_names; ++j)
3910 {
da235a7c
JK
3911 const char *this_real_name;
3912
fbd9ab74 3913 if (file_matcher (file_data->file_names[j], data, 0))
24c79950
TT
3914 {
3915 per_cu->v.quick->mark = 1;
3916 break;
3917 }
da235a7c
JK
3918
3919 /* Before we invoke realpath, which can get expensive when many
3920 files are involved, do a quick comparison of the basenames. */
3921 if (!basenames_may_differ
3922 && !file_matcher (lbasename (file_data->file_names[j]),
3923 data, 1))
3924 continue;
3925
3926 this_real_name = dw2_get_real_path (objfile, file_data, j);
3927 if (file_matcher (this_real_name, data, 0))
3928 {
3929 per_cu->v.quick->mark = 1;
3930 break;
3931 }
24c79950
TT
3932 }
3933
3934 slot = htab_find_slot (per_cu->v.quick->mark
3935 ? visited_found
3936 : visited_not_found,
3937 file_data, INSERT);
3938 *slot = file_data;
3939 }
3940
3941 do_cleanups (cleanup);
3942 }
9291a0cd 3943
3876f04e 3944 for (iter = 0; iter < index->symbol_table_slots; ++iter)
9291a0cd
TT
3945 {
3946 offset_type idx = 2 * iter;
3947 const char *name;
3948 offset_type *vec, vec_len, vec_idx;
8943b874 3949 int global_seen = 0;
9291a0cd 3950
61d96d7e
DE
3951 QUIT;
3952
3876f04e 3953 if (index->symbol_table[idx] == 0 && index->symbol_table[idx + 1] == 0)
9291a0cd
TT
3954 continue;
3955
3876f04e 3956 name = index->constant_pool + MAYBE_SWAP (index->symbol_table[idx]);
9291a0cd 3957
206f2a57 3958 if (! (*symbol_matcher) (name, data))
9291a0cd
TT
3959 continue;
3960
3961 /* The name was matched, now expand corresponding CUs that were
3962 marked. */
4b5246aa 3963 vec = (offset_type *) (index->constant_pool
3876f04e 3964 + MAYBE_SWAP (index->symbol_table[idx + 1]));
9291a0cd
TT
3965 vec_len = MAYBE_SWAP (vec[0]);
3966 for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
3967 {
e254ef6a 3968 struct dwarf2_per_cu_data *per_cu;
156942c7 3969 offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
8943b874
DE
3970 /* This value is only valid for index versions >= 7. */
3971 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
156942c7
DE
3972 gdb_index_symbol_kind symbol_kind =
3973 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3974 int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3190f0c6
DE
3975 /* Only check the symbol attributes if they're present.
3976 Indices prior to version 7 don't record them,
3977 and indices >= 7 may elide them for certain symbols
3978 (gold does this). */
3979 int attrs_valid =
3980 (index->version >= 7
3981 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3982
8943b874
DE
3983 /* Work around gold/15646. */
3984 if (attrs_valid)
3985 {
3986 if (!is_static && global_seen)
3987 continue;
3988 if (!is_static)
3989 global_seen = 1;
3990 }
3991
3190f0c6
DE
3992 /* Only check the symbol's kind if it has one. */
3993 if (attrs_valid)
156942c7
DE
3994 {
3995 switch (kind)
3996 {
3997 case VARIABLES_DOMAIN:
3998 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
3999 continue;
4000 break;
4001 case FUNCTIONS_DOMAIN:
4002 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
4003 continue;
4004 break;
4005 case TYPES_DOMAIN:
4006 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4007 continue;
4008 break;
4009 default:
4010 break;
4011 }
4012 }
4013
3190f0c6
DE
4014 /* Don't crash on bad data. */
4015 if (cu_index >= (dwarf2_per_objfile->n_comp_units
4016 + dwarf2_per_objfile->n_type_units))
4017 {
4018 complaint (&symfile_complaints,
4019 _(".gdb_index entry has bad CU index"
4262abfb 4020 " [in module %s]"), objfile_name (objfile));
3190f0c6
DE
4021 continue;
4022 }
4023
8832e7e3 4024 per_cu = dw2_get_cutu (cu_index);
7b08b9eb 4025 if (file_matcher == NULL || per_cu->v.quick->mark)
276d885b
GB
4026 {
4027 int symtab_was_null =
4028 (per_cu->v.quick->compunit_symtab == NULL);
4029
4030 dw2_instantiate_symtab (per_cu);
4031
4032 if (expansion_notify != NULL
4033 && symtab_was_null
4034 && per_cu->v.quick->compunit_symtab != NULL)
4035 {
4036 expansion_notify (per_cu->v.quick->compunit_symtab,
4037 data);
4038 }
4039 }
9291a0cd
TT
4040 }
4041 }
4042}
4043
43f3e411 4044/* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
9703b513
TT
4045 symtab. */
4046
43f3e411
DE
4047static struct compunit_symtab *
4048recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
4049 CORE_ADDR pc)
9703b513
TT
4050{
4051 int i;
4052
43f3e411
DE
4053 if (COMPUNIT_BLOCKVECTOR (cust) != NULL
4054 && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
4055 return cust;
9703b513 4056
43f3e411 4057 if (cust->includes == NULL)
a3ec0bb1
DE
4058 return NULL;
4059
43f3e411 4060 for (i = 0; cust->includes[i]; ++i)
9703b513 4061 {
43f3e411 4062 struct compunit_symtab *s = cust->includes[i];
9703b513 4063
43f3e411 4064 s = recursively_find_pc_sect_compunit_symtab (s, pc);
9703b513
TT
4065 if (s != NULL)
4066 return s;
4067 }
4068
4069 return NULL;
4070}
4071
43f3e411
DE
4072static struct compunit_symtab *
4073dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
4074 struct bound_minimal_symbol msymbol,
4075 CORE_ADDR pc,
4076 struct obj_section *section,
4077 int warn_if_readin)
9291a0cd
TT
4078{
4079 struct dwarf2_per_cu_data *data;
43f3e411 4080 struct compunit_symtab *result;
9291a0cd
TT
4081
4082 dw2_setup (objfile);
4083
4084 if (!objfile->psymtabs_addrmap)
4085 return NULL;
4086
4087 data = addrmap_find (objfile->psymtabs_addrmap, pc);
4088 if (!data)
4089 return NULL;
4090
43f3e411 4091 if (warn_if_readin && data->v.quick->compunit_symtab)
abebb8b0 4092 warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
9291a0cd
TT
4093 paddress (get_objfile_arch (objfile), pc));
4094
43f3e411
DE
4095 result
4096 = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data),
4097 pc);
9703b513
TT
4098 gdb_assert (result != NULL);
4099 return result;
9291a0cd
TT
4100}
4101
9291a0cd 4102static void
44b13c5a 4103dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
74e2f255 4104 void *data, int need_fullname)
9291a0cd
TT
4105{
4106 int i;
24c79950
TT
4107 struct cleanup *cleanup;
4108 htab_t visited = htab_create_alloc (10, htab_hash_pointer, htab_eq_pointer,
4109 NULL, xcalloc, xfree);
9291a0cd 4110
24c79950 4111 cleanup = make_cleanup_htab_delete (visited);
9291a0cd 4112 dw2_setup (objfile);
ae2de4f8 4113
848e3e78
DE
4114 /* The rule is CUs specify all the files, including those used by
4115 any TU, so there's no need to scan TUs here.
4116 We can ignore file names coming from already-expanded CUs. */
f4dc4d17 4117
848e3e78 4118 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
24c79950 4119 {
8832e7e3 4120 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
24c79950 4121
43f3e411 4122 if (per_cu->v.quick->compunit_symtab)
24c79950
TT
4123 {
4124 void **slot = htab_find_slot (visited, per_cu->v.quick->file_names,
4125 INSERT);
4126
4127 *slot = per_cu->v.quick->file_names;
4128 }
4129 }
4130
848e3e78 4131 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
4132 {
4133 int j;
8832e7e3 4134 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
7b9f3c50 4135 struct quick_file_names *file_data;
24c79950 4136 void **slot;
9291a0cd 4137
3d7bb9d9 4138 /* We only need to look at symtabs not already expanded. */
43f3e411 4139 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
4140 continue;
4141
e4a48d9d 4142 file_data = dw2_get_file_names (per_cu);
7b9f3c50 4143 if (file_data == NULL)
9291a0cd
TT
4144 continue;
4145
24c79950
TT
4146 slot = htab_find_slot (visited, file_data, INSERT);
4147 if (*slot)
4148 {
4149 /* Already visited. */
4150 continue;
4151 }
4152 *slot = file_data;
4153
7b9f3c50 4154 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 4155 {
74e2f255
DE
4156 const char *this_real_name;
4157
4158 if (need_fullname)
4159 this_real_name = dw2_get_real_path (objfile, file_data, j);
4160 else
4161 this_real_name = NULL;
7b9f3c50 4162 (*fun) (file_data->file_names[j], this_real_name, data);
9291a0cd
TT
4163 }
4164 }
24c79950
TT
4165
4166 do_cleanups (cleanup);
9291a0cd
TT
4167}
4168
4169static int
4170dw2_has_symbols (struct objfile *objfile)
4171{
4172 return 1;
4173}
4174
4175const struct quick_symbol_functions dwarf2_gdb_index_functions =
4176{
4177 dw2_has_symbols,
4178 dw2_find_last_source_symtab,
4179 dw2_forget_cached_source_info,
f8eba3c6 4180 dw2_map_symtabs_matching_filename,
9291a0cd 4181 dw2_lookup_symbol,
9291a0cd
TT
4182 dw2_print_stats,
4183 dw2_dump,
4184 dw2_relocate,
4185 dw2_expand_symtabs_for_function,
4186 dw2_expand_all_symtabs,
652a8996 4187 dw2_expand_symtabs_with_fullname,
40658b94 4188 dw2_map_matching_symbols,
9291a0cd 4189 dw2_expand_symtabs_matching,
43f3e411 4190 dw2_find_pc_sect_compunit_symtab,
9291a0cd
TT
4191 dw2_map_symbol_filenames
4192};
4193
4194/* Initialize for reading DWARF for this objfile. Return 0 if this
4195 file will use psymtabs, or 1 if using the GNU index. */
4196
4197int
4198dwarf2_initialize_objfile (struct objfile *objfile)
4199{
4200 /* If we're about to read full symbols, don't bother with the
4201 indices. In this case we also don't care if some other debug
4202 format is making psymtabs, because they are all about to be
4203 expanded anyway. */
4204 if ((objfile->flags & OBJF_READNOW))
4205 {
4206 int i;
4207
4208 dwarf2_per_objfile->using_index = 1;
4209 create_all_comp_units (objfile);
0e50663e 4210 create_all_type_units (objfile);
7b9f3c50
DE
4211 dwarf2_per_objfile->quick_file_names_table =
4212 create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
9291a0cd 4213
1fd400ff 4214 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
d467dd73 4215 + dwarf2_per_objfile->n_type_units); ++i)
9291a0cd 4216 {
8832e7e3 4217 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 4218
e254ef6a
DE
4219 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4220 struct dwarf2_per_cu_quick_data);
9291a0cd
TT
4221 }
4222
4223 /* Return 1 so that gdb sees the "quick" functions. However,
4224 these functions will be no-ops because we will have expanded
4225 all symtabs. */
4226 return 1;
4227 }
4228
4229 if (dwarf2_read_index (objfile))
4230 return 1;
4231
9291a0cd
TT
4232 return 0;
4233}
4234
4235\f
4236
dce234bc
PP
4237/* Build a partial symbol table. */
4238
4239void
f29dff0a 4240dwarf2_build_psymtabs (struct objfile *objfile)
dce234bc 4241{
c9bf0622 4242
f29dff0a 4243 if (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0)
c906108c
SS
4244 {
4245 init_psymbol_list (objfile, 1024);
4246 }
4247
492d29ea 4248 TRY
c9bf0622
TT
4249 {
4250 /* This isn't really ideal: all the data we allocate on the
4251 objfile's obstack is still uselessly kept around. However,
4252 freeing it seems unsafe. */
4253 struct cleanup *cleanups = make_cleanup_discard_psymtabs (objfile);
4254
4255 dwarf2_build_psymtabs_hard (objfile);
4256 discard_cleanups (cleanups);
4257 }
492d29ea
PA
4258 CATCH (except, RETURN_MASK_ERROR)
4259 {
4260 exception_print (gdb_stderr, except);
4261 }
4262 END_CATCH
c906108c 4263}
c906108c 4264
1ce1cefd
DE
4265/* Return the total length of the CU described by HEADER. */
4266
4267static unsigned int
4268get_cu_length (const struct comp_unit_head *header)
4269{
4270 return header->initial_length_size + header->length;
4271}
4272
45452591
DE
4273/* Return TRUE if OFFSET is within CU_HEADER. */
4274
4275static inline int
b64f50a1 4276offset_in_cu_p (const struct comp_unit_head *cu_header, sect_offset offset)
45452591 4277{
b64f50a1 4278 sect_offset bottom = { cu_header->offset.sect_off };
1ce1cefd 4279 sect_offset top = { cu_header->offset.sect_off + get_cu_length (cu_header) };
9a619af0 4280
b64f50a1 4281 return (offset.sect_off >= bottom.sect_off && offset.sect_off < top.sect_off);
45452591
DE
4282}
4283
3b80fe9b
DE
4284/* Find the base address of the compilation unit for range lists and
4285 location lists. It will normally be specified by DW_AT_low_pc.
4286 In DWARF-3 draft 4, the base address could be overridden by
4287 DW_AT_entry_pc. It's been removed, but GCC still uses this for
4288 compilation units with discontinuous ranges. */
4289
4290static void
4291dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
4292{
4293 struct attribute *attr;
4294
4295 cu->base_known = 0;
4296 cu->base_address = 0;
4297
4298 attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
4299 if (attr)
4300 {
31aa7e4e 4301 cu->base_address = attr_value_as_address (attr);
3b80fe9b
DE
4302 cu->base_known = 1;
4303 }
4304 else
4305 {
4306 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
4307 if (attr)
4308 {
31aa7e4e 4309 cu->base_address = attr_value_as_address (attr);
3b80fe9b
DE
4310 cu->base_known = 1;
4311 }
4312 }
4313}
4314
93311388
DE
4315/* Read in the comp unit header information from the debug_info at info_ptr.
4316 NOTE: This leaves members offset, first_die_offset to be filled in
4317 by the caller. */
107d2387 4318
d521ce57 4319static const gdb_byte *
107d2387 4320read_comp_unit_head (struct comp_unit_head *cu_header,
d521ce57 4321 const gdb_byte *info_ptr, bfd *abfd)
107d2387
AC
4322{
4323 int signed_addr;
891d2f0b 4324 unsigned int bytes_read;
c764a876
DE
4325
4326 cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
4327 cu_header->initial_length_size = bytes_read;
4328 cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
613e1657 4329 info_ptr += bytes_read;
107d2387
AC
4330 cu_header->version = read_2_bytes (abfd, info_ptr);
4331 info_ptr += 2;
b64f50a1
JK
4332 cu_header->abbrev_offset.sect_off = read_offset (abfd, info_ptr, cu_header,
4333 &bytes_read);
613e1657 4334 info_ptr += bytes_read;
107d2387
AC
4335 cu_header->addr_size = read_1_byte (abfd, info_ptr);
4336 info_ptr += 1;
4337 signed_addr = bfd_get_sign_extend_vma (abfd);
4338 if (signed_addr < 0)
8e65ff28 4339 internal_error (__FILE__, __LINE__,
e2e0b3e5 4340 _("read_comp_unit_head: dwarf from non elf file"));
107d2387 4341 cu_header->signed_addr_p = signed_addr;
c764a876 4342
107d2387
AC
4343 return info_ptr;
4344}
4345
36586728
TT
4346/* Helper function that returns the proper abbrev section for
4347 THIS_CU. */
4348
4349static struct dwarf2_section_info *
4350get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
4351{
4352 struct dwarf2_section_info *abbrev;
4353
4354 if (this_cu->is_dwz)
4355 abbrev = &dwarf2_get_dwz_file ()->abbrev;
4356 else
4357 abbrev = &dwarf2_per_objfile->abbrev;
4358
4359 return abbrev;
4360}
4361
9ff913ba
DE
4362/* Subroutine of read_and_check_comp_unit_head and
4363 read_and_check_type_unit_head to simplify them.
4364 Perform various error checking on the header. */
4365
4366static void
4367error_check_comp_unit_head (struct comp_unit_head *header,
4bdcc0c1
DE
4368 struct dwarf2_section_info *section,
4369 struct dwarf2_section_info *abbrev_section)
9ff913ba 4370{
a32a8923
DE
4371 bfd *abfd = get_section_bfd_owner (section);
4372 const char *filename = get_section_file_name (section);
9ff913ba
DE
4373
4374 if (header->version != 2 && header->version != 3 && header->version != 4)
4375 error (_("Dwarf Error: wrong version in compilation unit header "
4376 "(is %d, should be 2, 3, or 4) [in module %s]"), header->version,
4377 filename);
4378
b64f50a1 4379 if (header->abbrev_offset.sect_off
36586728 4380 >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
9ff913ba
DE
4381 error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
4382 "(offset 0x%lx + 6) [in module %s]"),
b64f50a1 4383 (long) header->abbrev_offset.sect_off, (long) header->offset.sect_off,
9ff913ba
DE
4384 filename);
4385
4386 /* Cast to unsigned long to use 64-bit arithmetic when possible to
4387 avoid potential 32-bit overflow. */
1ce1cefd 4388 if (((unsigned long) header->offset.sect_off + get_cu_length (header))
9ff913ba
DE
4389 > section->size)
4390 error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
4391 "(offset 0x%lx + 0) [in module %s]"),
b64f50a1 4392 (long) header->length, (long) header->offset.sect_off,
9ff913ba
DE
4393 filename);
4394}
4395
4396/* Read in a CU/TU header and perform some basic error checking.
4397 The contents of the header are stored in HEADER.
4398 The result is a pointer to the start of the first DIE. */
adabb602 4399
d521ce57 4400static const gdb_byte *
9ff913ba
DE
4401read_and_check_comp_unit_head (struct comp_unit_head *header,
4402 struct dwarf2_section_info *section,
4bdcc0c1 4403 struct dwarf2_section_info *abbrev_section,
d521ce57 4404 const gdb_byte *info_ptr,
9ff913ba 4405 int is_debug_types_section)
72bf9492 4406{
d521ce57 4407 const gdb_byte *beg_of_comp_unit = info_ptr;
a32a8923 4408 bfd *abfd = get_section_bfd_owner (section);
72bf9492 4409
b64f50a1 4410 header->offset.sect_off = beg_of_comp_unit - section->buffer;
adabb602 4411
72bf9492
DJ
4412 info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4413
460c1c54
CC
4414 /* If we're reading a type unit, skip over the signature and
4415 type_offset fields. */
b0df02fd 4416 if (is_debug_types_section)
460c1c54
CC
4417 info_ptr += 8 /*signature*/ + header->offset_size;
4418
b64f50a1 4419 header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
adabb602 4420
4bdcc0c1 4421 error_check_comp_unit_head (header, section, abbrev_section);
72bf9492
DJ
4422
4423 return info_ptr;
4424}
4425
348e048f
DE
4426/* Read in the types comp unit header information from .debug_types entry at
4427 types_ptr. The result is a pointer to one past the end of the header. */
4428
d521ce57 4429static const gdb_byte *
9ff913ba
DE
4430read_and_check_type_unit_head (struct comp_unit_head *header,
4431 struct dwarf2_section_info *section,
4bdcc0c1 4432 struct dwarf2_section_info *abbrev_section,
d521ce57 4433 const gdb_byte *info_ptr,
dee91e82
DE
4434 ULONGEST *signature,
4435 cu_offset *type_offset_in_tu)
348e048f 4436{
d521ce57 4437 const gdb_byte *beg_of_comp_unit = info_ptr;
a32a8923 4438 bfd *abfd = get_section_bfd_owner (section);
348e048f 4439
b64f50a1 4440 header->offset.sect_off = beg_of_comp_unit - section->buffer;
348e048f 4441
9ff913ba 4442 info_ptr = read_comp_unit_head (header, info_ptr, abfd);
348e048f 4443
9ff913ba
DE
4444 /* If we're reading a type unit, skip over the signature and
4445 type_offset fields. */
4446 if (signature != NULL)
4447 *signature = read_8_bytes (abfd, info_ptr);
4448 info_ptr += 8;
dee91e82
DE
4449 if (type_offset_in_tu != NULL)
4450 type_offset_in_tu->cu_off = read_offset_1 (abfd, info_ptr,
4451 header->offset_size);
9ff913ba
DE
4452 info_ptr += header->offset_size;
4453
b64f50a1 4454 header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
348e048f 4455
4bdcc0c1 4456 error_check_comp_unit_head (header, section, abbrev_section);
9ff913ba
DE
4457
4458 return info_ptr;
348e048f
DE
4459}
4460
f4dc4d17
DE
4461/* Fetch the abbreviation table offset from a comp or type unit header. */
4462
4463static sect_offset
4464read_abbrev_offset (struct dwarf2_section_info *section,
4465 sect_offset offset)
4466{
a32a8923 4467 bfd *abfd = get_section_bfd_owner (section);
d521ce57 4468 const gdb_byte *info_ptr;
f4dc4d17
DE
4469 unsigned int length, initial_length_size, offset_size;
4470 sect_offset abbrev_offset;
4471
4472 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
4473 info_ptr = section->buffer + offset.sect_off;
4474 length = read_initial_length (abfd, info_ptr, &initial_length_size);
4475 offset_size = initial_length_size == 4 ? 4 : 8;
4476 info_ptr += initial_length_size + 2 /*version*/;
4477 abbrev_offset.sect_off = read_offset_1 (abfd, info_ptr, offset_size);
4478 return abbrev_offset;
4479}
4480
aaa75496
JB
4481/* Allocate a new partial symtab for file named NAME and mark this new
4482 partial symtab as being an include of PST. */
4483
4484static void
d521ce57 4485dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
aaa75496
JB
4486 struct objfile *objfile)
4487{
4488 struct partial_symtab *subpst = allocate_psymtab (name, objfile);
4489
fbd9ab74
JK
4490 if (!IS_ABSOLUTE_PATH (subpst->filename))
4491 {
4492 /* It shares objfile->objfile_obstack. */
4493 subpst->dirname = pst->dirname;
4494 }
4495
aaa75496
JB
4496 subpst->textlow = 0;
4497 subpst->texthigh = 0;
4498
4499 subpst->dependencies = (struct partial_symtab **)
4500 obstack_alloc (&objfile->objfile_obstack,
4501 sizeof (struct partial_symtab *));
4502 subpst->dependencies[0] = pst;
4503 subpst->number_of_dependencies = 1;
4504
4505 subpst->globals_offset = 0;
4506 subpst->n_global_syms = 0;
4507 subpst->statics_offset = 0;
4508 subpst->n_static_syms = 0;
43f3e411 4509 subpst->compunit_symtab = NULL;
aaa75496
JB
4510 subpst->read_symtab = pst->read_symtab;
4511 subpst->readin = 0;
4512
4513 /* No private part is necessary for include psymtabs. This property
4514 can be used to differentiate between such include psymtabs and
10b3939b 4515 the regular ones. */
58a9656e 4516 subpst->read_symtab_private = NULL;
aaa75496
JB
4517}
4518
4519/* Read the Line Number Program data and extract the list of files
4520 included by the source file represented by PST. Build an include
d85a05f0 4521 partial symtab for each of these included files. */
aaa75496
JB
4522
4523static void
4524dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
dee91e82
DE
4525 struct die_info *die,
4526 struct partial_symtab *pst)
aaa75496 4527{
d85a05f0
DJ
4528 struct line_header *lh = NULL;
4529 struct attribute *attr;
aaa75496 4530
d85a05f0
DJ
4531 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
4532 if (attr)
3019eac3 4533 lh = dwarf_decode_line_header (DW_UNSND (attr), cu);
aaa75496
JB
4534 if (lh == NULL)
4535 return; /* No linetable, so no includes. */
4536
c6da4cef 4537 /* NOTE: pst->dirname is DW_AT_comp_dir (if present). */
527f3840 4538 dwarf_decode_lines (lh, pst->dirname, cu, pst, pst->textlow, 1);
aaa75496
JB
4539
4540 free_line_header (lh);
4541}
4542
348e048f 4543static hashval_t
52dc124a 4544hash_signatured_type (const void *item)
348e048f 4545{
52dc124a 4546 const struct signatured_type *sig_type = item;
9a619af0 4547
348e048f 4548 /* This drops the top 32 bits of the signature, but is ok for a hash. */
52dc124a 4549 return sig_type->signature;
348e048f
DE
4550}
4551
4552static int
52dc124a 4553eq_signatured_type (const void *item_lhs, const void *item_rhs)
348e048f
DE
4554{
4555 const struct signatured_type *lhs = item_lhs;
4556 const struct signatured_type *rhs = item_rhs;
9a619af0 4557
348e048f
DE
4558 return lhs->signature == rhs->signature;
4559}
4560
1fd400ff
TT
4561/* Allocate a hash table for signatured types. */
4562
4563static htab_t
673bfd45 4564allocate_signatured_type_table (struct objfile *objfile)
1fd400ff
TT
4565{
4566 return htab_create_alloc_ex (41,
52dc124a
DE
4567 hash_signatured_type,
4568 eq_signatured_type,
1fd400ff
TT
4569 NULL,
4570 &objfile->objfile_obstack,
4571 hashtab_obstack_allocate,
4572 dummy_obstack_deallocate);
4573}
4574
d467dd73 4575/* A helper function to add a signatured type CU to a table. */
1fd400ff
TT
4576
4577static int
d467dd73 4578add_signatured_type_cu_to_table (void **slot, void *datum)
1fd400ff
TT
4579{
4580 struct signatured_type *sigt = *slot;
b4dd5633 4581 struct signatured_type ***datap = datum;
1fd400ff 4582
b4dd5633 4583 **datap = sigt;
1fd400ff
TT
4584 ++*datap;
4585
4586 return 1;
4587}
4588
c88ee1f0
DE
4589/* Create the hash table of all entries in the .debug_types
4590 (or .debug_types.dwo) section(s).
4591 If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
4592 otherwise it is NULL.
4593
4594 The result is a pointer to the hash table or NULL if there are no types.
4595
4596 Note: This function processes DWO files only, not DWP files. */
348e048f 4597
3019eac3
DE
4598static htab_t
4599create_debug_types_hash_table (struct dwo_file *dwo_file,
4600 VEC (dwarf2_section_info_def) *types)
348e048f 4601{
3019eac3 4602 struct objfile *objfile = dwarf2_per_objfile->objfile;
8b70b953 4603 htab_t types_htab = NULL;
8b70b953
TT
4604 int ix;
4605 struct dwarf2_section_info *section;
4bdcc0c1 4606 struct dwarf2_section_info *abbrev_section;
348e048f 4607
3019eac3
DE
4608 if (VEC_empty (dwarf2_section_info_def, types))
4609 return NULL;
348e048f 4610
4bdcc0c1
DE
4611 abbrev_section = (dwo_file != NULL
4612 ? &dwo_file->sections.abbrev
4613 : &dwarf2_per_objfile->abbrev);
4614
b4f54984 4615 if (dwarf_read_debug)
09406207
DE
4616 fprintf_unfiltered (gdb_stdlog, "Reading .debug_types%s for %s:\n",
4617 dwo_file ? ".dwo" : "",
a32a8923 4618 get_section_file_name (abbrev_section));
09406207 4619
8b70b953 4620 for (ix = 0;
3019eac3 4621 VEC_iterate (dwarf2_section_info_def, types, ix, section);
8b70b953
TT
4622 ++ix)
4623 {
3019eac3 4624 bfd *abfd;
d521ce57 4625 const gdb_byte *info_ptr, *end_ptr;
348e048f 4626
8b70b953
TT
4627 dwarf2_read_section (objfile, section);
4628 info_ptr = section->buffer;
348e048f 4629
8b70b953
TT
4630 if (info_ptr == NULL)
4631 continue;
348e048f 4632
3019eac3 4633 /* We can't set abfd until now because the section may be empty or
a32a8923
DE
4634 not present, in which case the bfd is unknown. */
4635 abfd = get_section_bfd_owner (section);
3019eac3 4636
dee91e82
DE
4637 /* We don't use init_cutu_and_read_dies_simple, or some such, here
4638 because we don't need to read any dies: the signature is in the
4639 header. */
8b70b953
TT
4640
4641 end_ptr = info_ptr + section->size;
4642 while (info_ptr < end_ptr)
4643 {
b64f50a1 4644 sect_offset offset;
3019eac3 4645 cu_offset type_offset_in_tu;
8b70b953 4646 ULONGEST signature;
52dc124a 4647 struct signatured_type *sig_type;
3019eac3 4648 struct dwo_unit *dwo_tu;
8b70b953 4649 void **slot;
d521ce57 4650 const gdb_byte *ptr = info_ptr;
9ff913ba 4651 struct comp_unit_head header;
dee91e82 4652 unsigned int length;
348e048f 4653
b64f50a1 4654 offset.sect_off = ptr - section->buffer;
348e048f 4655
8b70b953 4656 /* We need to read the type's signature in order to build the hash
9ff913ba 4657 table, but we don't need anything else just yet. */
348e048f 4658
4bdcc0c1
DE
4659 ptr = read_and_check_type_unit_head (&header, section,
4660 abbrev_section, ptr,
3019eac3 4661 &signature, &type_offset_in_tu);
6caca83c 4662
1ce1cefd 4663 length = get_cu_length (&header);
dee91e82 4664
6caca83c 4665 /* Skip dummy type units. */
dee91e82
DE
4666 if (ptr >= info_ptr + length
4667 || peek_abbrev_code (abfd, ptr) == 0)
6caca83c 4668 {
1ce1cefd 4669 info_ptr += length;
6caca83c
CC
4670 continue;
4671 }
8b70b953 4672
0349ea22
DE
4673 if (types_htab == NULL)
4674 {
4675 if (dwo_file)
4676 types_htab = allocate_dwo_unit_table (objfile);
4677 else
4678 types_htab = allocate_signatured_type_table (objfile);
4679 }
4680
3019eac3
DE
4681 if (dwo_file)
4682 {
4683 sig_type = NULL;
4684 dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4685 struct dwo_unit);
4686 dwo_tu->dwo_file = dwo_file;
4687 dwo_tu->signature = signature;
4688 dwo_tu->type_offset_in_tu = type_offset_in_tu;
8a0459fd 4689 dwo_tu->section = section;
3019eac3
DE
4690 dwo_tu->offset = offset;
4691 dwo_tu->length = length;
4692 }
4693 else
4694 {
4695 /* N.B.: type_offset is not usable if this type uses a DWO file.
4696 The real type_offset is in the DWO file. */
4697 dwo_tu = NULL;
4698 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4699 struct signatured_type);
4700 sig_type->signature = signature;
4701 sig_type->type_offset_in_tu = type_offset_in_tu;
4702 sig_type->per_cu.objfile = objfile;
4703 sig_type->per_cu.is_debug_types = 1;
8a0459fd 4704 sig_type->per_cu.section = section;
3019eac3
DE
4705 sig_type->per_cu.offset = offset;
4706 sig_type->per_cu.length = length;
4707 }
8b70b953 4708
3019eac3
DE
4709 slot = htab_find_slot (types_htab,
4710 dwo_file ? (void*) dwo_tu : (void *) sig_type,
4711 INSERT);
8b70b953
TT
4712 gdb_assert (slot != NULL);
4713 if (*slot != NULL)
4714 {
3019eac3
DE
4715 sect_offset dup_offset;
4716
4717 if (dwo_file)
4718 {
4719 const struct dwo_unit *dup_tu = *slot;
4720
4721 dup_offset = dup_tu->offset;
4722 }
4723 else
4724 {
4725 const struct signatured_type *dup_tu = *slot;
4726
4727 dup_offset = dup_tu->per_cu.offset;
4728 }
b3c8eb43 4729
8b70b953 4730 complaint (&symfile_complaints,
c88ee1f0 4731 _("debug type entry at offset 0x%x is duplicate to"
4031ecc5 4732 " the entry at offset 0x%x, signature %s"),
3019eac3 4733 offset.sect_off, dup_offset.sect_off,
4031ecc5 4734 hex_string (signature));
8b70b953 4735 }
3019eac3 4736 *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
348e048f 4737
b4f54984 4738 if (dwarf_read_debug > 1)
4031ecc5 4739 fprintf_unfiltered (gdb_stdlog, " offset 0x%x, signature %s\n",
b64f50a1 4740 offset.sect_off,
4031ecc5 4741 hex_string (signature));
348e048f 4742
dee91e82 4743 info_ptr += length;
8b70b953 4744 }
348e048f
DE
4745 }
4746
3019eac3
DE
4747 return types_htab;
4748}
4749
4750/* Create the hash table of all entries in the .debug_types section,
4751 and initialize all_type_units.
4752 The result is zero if there is an error (e.g. missing .debug_types section),
4753 otherwise non-zero. */
4754
4755static int
4756create_all_type_units (struct objfile *objfile)
4757{
4758 htab_t types_htab;
b4dd5633 4759 struct signatured_type **iter;
3019eac3
DE
4760
4761 types_htab = create_debug_types_hash_table (NULL, dwarf2_per_objfile->types);
4762 if (types_htab == NULL)
4763 {
4764 dwarf2_per_objfile->signatured_types = NULL;
4765 return 0;
4766 }
4767
348e048f
DE
4768 dwarf2_per_objfile->signatured_types = types_htab;
4769
6aa5f3a6
DE
4770 dwarf2_per_objfile->n_type_units
4771 = dwarf2_per_objfile->n_allocated_type_units
4772 = htab_elements (types_htab);
d467dd73 4773 dwarf2_per_objfile->all_type_units
a2ce51a0
DE
4774 = xmalloc (dwarf2_per_objfile->n_type_units
4775 * sizeof (struct signatured_type *));
d467dd73
DE
4776 iter = &dwarf2_per_objfile->all_type_units[0];
4777 htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table, &iter);
4778 gdb_assert (iter - &dwarf2_per_objfile->all_type_units[0]
4779 == dwarf2_per_objfile->n_type_units);
1fd400ff 4780
348e048f
DE
4781 return 1;
4782}
4783
6aa5f3a6
DE
4784/* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
4785 If SLOT is non-NULL, it is the entry to use in the hash table.
4786 Otherwise we find one. */
4787
4788static struct signatured_type *
4789add_type_unit (ULONGEST sig, void **slot)
4790{
4791 struct objfile *objfile = dwarf2_per_objfile->objfile;
4792 int n_type_units = dwarf2_per_objfile->n_type_units;
4793 struct signatured_type *sig_type;
4794
4795 gdb_assert (n_type_units <= dwarf2_per_objfile->n_allocated_type_units);
4796 ++n_type_units;
4797 if (n_type_units > dwarf2_per_objfile->n_allocated_type_units)
4798 {
4799 if (dwarf2_per_objfile->n_allocated_type_units == 0)
4800 dwarf2_per_objfile->n_allocated_type_units = 1;
4801 dwarf2_per_objfile->n_allocated_type_units *= 2;
4802 dwarf2_per_objfile->all_type_units
4803 = xrealloc (dwarf2_per_objfile->all_type_units,
4804 dwarf2_per_objfile->n_allocated_type_units
4805 * sizeof (struct signatured_type *));
4806 ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
4807 }
4808 dwarf2_per_objfile->n_type_units = n_type_units;
4809
4810 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4811 struct signatured_type);
4812 dwarf2_per_objfile->all_type_units[n_type_units - 1] = sig_type;
4813 sig_type->signature = sig;
4814 sig_type->per_cu.is_debug_types = 1;
4815 if (dwarf2_per_objfile->using_index)
4816 {
4817 sig_type->per_cu.v.quick =
4818 OBSTACK_ZALLOC (&objfile->objfile_obstack,
4819 struct dwarf2_per_cu_quick_data);
4820 }
4821
4822 if (slot == NULL)
4823 {
4824 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4825 sig_type, INSERT);
4826 }
4827 gdb_assert (*slot == NULL);
4828 *slot = sig_type;
4829 /* The rest of sig_type must be filled in by the caller. */
4830 return sig_type;
4831}
4832
a2ce51a0
DE
4833/* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
4834 Fill in SIG_ENTRY with DWO_ENTRY. */
4835
4836static void
4837fill_in_sig_entry_from_dwo_entry (struct objfile *objfile,
4838 struct signatured_type *sig_entry,
4839 struct dwo_unit *dwo_entry)
4840{
7ee85ab1 4841 /* Make sure we're not clobbering something we don't expect to. */
a2ce51a0
DE
4842 gdb_assert (! sig_entry->per_cu.queued);
4843 gdb_assert (sig_entry->per_cu.cu == NULL);
6aa5f3a6
DE
4844 if (dwarf2_per_objfile->using_index)
4845 {
4846 gdb_assert (sig_entry->per_cu.v.quick != NULL);
43f3e411 4847 gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6aa5f3a6
DE
4848 }
4849 else
4850 gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
a2ce51a0
DE
4851 gdb_assert (sig_entry->signature == dwo_entry->signature);
4852 gdb_assert (sig_entry->type_offset_in_section.sect_off == 0);
4853 gdb_assert (sig_entry->type_unit_group == NULL);
7ee85ab1
DE
4854 gdb_assert (sig_entry->dwo_unit == NULL);
4855
4856 sig_entry->per_cu.section = dwo_entry->section;
4857 sig_entry->per_cu.offset = dwo_entry->offset;
4858 sig_entry->per_cu.length = dwo_entry->length;
4859 sig_entry->per_cu.reading_dwo_directly = 1;
4860 sig_entry->per_cu.objfile = objfile;
a2ce51a0
DE
4861 sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
4862 sig_entry->dwo_unit = dwo_entry;
4863}
4864
4865/* Subroutine of lookup_signatured_type.
7ee85ab1
DE
4866 If we haven't read the TU yet, create the signatured_type data structure
4867 for a TU to be read in directly from a DWO file, bypassing the stub.
4868 This is the "Stay in DWO Optimization": When there is no DWP file and we're
4869 using .gdb_index, then when reading a CU we want to stay in the DWO file
4870 containing that CU. Otherwise we could end up reading several other DWO
4871 files (due to comdat folding) to process the transitive closure of all the
4872 mentioned TUs, and that can be slow. The current DWO file will have every
4873 type signature that it needs.
a2ce51a0
DE
4874 We only do this for .gdb_index because in the psymtab case we already have
4875 to read all the DWOs to build the type unit groups. */
4876
4877static struct signatured_type *
4878lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4879{
4880 struct objfile *objfile = dwarf2_per_objfile->objfile;
4881 struct dwo_file *dwo_file;
4882 struct dwo_unit find_dwo_entry, *dwo_entry;
4883 struct signatured_type find_sig_entry, *sig_entry;
6aa5f3a6 4884 void **slot;
a2ce51a0
DE
4885
4886 gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4887
6aa5f3a6
DE
4888 /* If TU skeletons have been removed then we may not have read in any
4889 TUs yet. */
4890 if (dwarf2_per_objfile->signatured_types == NULL)
4891 {
4892 dwarf2_per_objfile->signatured_types
4893 = allocate_signatured_type_table (objfile);
4894 }
a2ce51a0
DE
4895
4896 /* We only ever need to read in one copy of a signatured type.
6aa5f3a6
DE
4897 Use the global signatured_types array to do our own comdat-folding
4898 of types. If this is the first time we're reading this TU, and
4899 the TU has an entry in .gdb_index, replace the recorded data from
4900 .gdb_index with this TU. */
a2ce51a0 4901
a2ce51a0 4902 find_sig_entry.signature = sig;
6aa5f3a6
DE
4903 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4904 &find_sig_entry, INSERT);
4905 sig_entry = *slot;
7ee85ab1
DE
4906
4907 /* We can get here with the TU already read, *or* in the process of being
6aa5f3a6
DE
4908 read. Don't reassign the global entry to point to this DWO if that's
4909 the case. Also note that if the TU is already being read, it may not
4910 have come from a DWO, the program may be a mix of Fission-compiled
4911 code and non-Fission-compiled code. */
4912
4913 /* Have we already tried to read this TU?
4914 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
4915 needn't exist in the global table yet). */
4916 if (sig_entry != NULL && sig_entry->per_cu.tu_read)
a2ce51a0
DE
4917 return sig_entry;
4918
6aa5f3a6
DE
4919 /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
4920 dwo_unit of the TU itself. */
4921 dwo_file = cu->dwo_unit->dwo_file;
4922
a2ce51a0
DE
4923 /* Ok, this is the first time we're reading this TU. */
4924 if (dwo_file->tus == NULL)
4925 return NULL;
4926 find_dwo_entry.signature = sig;
4927 dwo_entry = htab_find (dwo_file->tus, &find_dwo_entry);
4928 if (dwo_entry == NULL)
4929 return NULL;
4930
6aa5f3a6
DE
4931 /* If the global table doesn't have an entry for this TU, add one. */
4932 if (sig_entry == NULL)
4933 sig_entry = add_type_unit (sig, slot);
4934
a2ce51a0 4935 fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
89e63ee4 4936 sig_entry->per_cu.tu_read = 1;
a2ce51a0
DE
4937 return sig_entry;
4938}
4939
a2ce51a0
DE
4940/* Subroutine of lookup_signatured_type.
4941 Look up the type for signature SIG, and if we can't find SIG in .gdb_index
6aa5f3a6
DE
4942 then try the DWP file. If the TU stub (skeleton) has been removed then
4943 it won't be in .gdb_index. */
a2ce51a0
DE
4944
4945static struct signatured_type *
4946lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4947{
4948 struct objfile *objfile = dwarf2_per_objfile->objfile;
4949 struct dwp_file *dwp_file = get_dwp_file ();
4950 struct dwo_unit *dwo_entry;
4951 struct signatured_type find_sig_entry, *sig_entry;
6aa5f3a6 4952 void **slot;
a2ce51a0
DE
4953
4954 gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4955 gdb_assert (dwp_file != NULL);
4956
6aa5f3a6
DE
4957 /* If TU skeletons have been removed then we may not have read in any
4958 TUs yet. */
4959 if (dwarf2_per_objfile->signatured_types == NULL)
a2ce51a0 4960 {
6aa5f3a6
DE
4961 dwarf2_per_objfile->signatured_types
4962 = allocate_signatured_type_table (objfile);
a2ce51a0
DE
4963 }
4964
6aa5f3a6
DE
4965 find_sig_entry.signature = sig;
4966 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4967 &find_sig_entry, INSERT);
4968 sig_entry = *slot;
4969
4970 /* Have we already tried to read this TU?
4971 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
4972 needn't exist in the global table yet). */
4973 if (sig_entry != NULL)
4974 return sig_entry;
4975
a2ce51a0
DE
4976 if (dwp_file->tus == NULL)
4977 return NULL;
57d63ce2
DE
4978 dwo_entry = lookup_dwo_unit_in_dwp (dwp_file, NULL,
4979 sig, 1 /* is_debug_types */);
a2ce51a0
DE
4980 if (dwo_entry == NULL)
4981 return NULL;
4982
6aa5f3a6 4983 sig_entry = add_type_unit (sig, slot);
a2ce51a0
DE
4984 fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
4985
a2ce51a0
DE
4986 return sig_entry;
4987}
4988
380bca97 4989/* Lookup a signature based type for DW_FORM_ref_sig8.
5a8b3f62
DE
4990 Returns NULL if signature SIG is not present in the table.
4991 It is up to the caller to complain about this. */
348e048f
DE
4992
4993static struct signatured_type *
a2ce51a0 4994lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
348e048f 4995{
a2ce51a0
DE
4996 if (cu->dwo_unit
4997 && dwarf2_per_objfile->using_index)
4998 {
4999 /* We're in a DWO/DWP file, and we're using .gdb_index.
5000 These cases require special processing. */
5001 if (get_dwp_file () == NULL)
5002 return lookup_dwo_signatured_type (cu, sig);
5003 else
5004 return lookup_dwp_signatured_type (cu, sig);
5005 }
5006 else
5007 {
5008 struct signatured_type find_entry, *entry;
348e048f 5009
a2ce51a0
DE
5010 if (dwarf2_per_objfile->signatured_types == NULL)
5011 return NULL;
5012 find_entry.signature = sig;
5013 entry = htab_find (dwarf2_per_objfile->signatured_types, &find_entry);
5014 return entry;
5015 }
348e048f 5016}
42e7ad6c
DE
5017\f
5018/* Low level DIE reading support. */
348e048f 5019
d85a05f0
DJ
5020/* Initialize a die_reader_specs struct from a dwarf2_cu struct. */
5021
5022static void
5023init_cu_die_reader (struct die_reader_specs *reader,
dee91e82 5024 struct dwarf2_cu *cu,
3019eac3
DE
5025 struct dwarf2_section_info *section,
5026 struct dwo_file *dwo_file)
d85a05f0 5027{
fceca515 5028 gdb_assert (section->readin && section->buffer != NULL);
a32a8923 5029 reader->abfd = get_section_bfd_owner (section);
d85a05f0 5030 reader->cu = cu;
3019eac3 5031 reader->dwo_file = dwo_file;
dee91e82
DE
5032 reader->die_section = section;
5033 reader->buffer = section->buffer;
f664829e 5034 reader->buffer_end = section->buffer + section->size;
a2ce51a0 5035 reader->comp_dir = NULL;
d85a05f0
DJ
5036}
5037
b0c7bfa9
DE
5038/* Subroutine of init_cutu_and_read_dies to simplify it.
5039 Read in the rest of a CU/TU top level DIE from DWO_UNIT.
5040 There's just a lot of work to do, and init_cutu_and_read_dies is big enough
5041 already.
5042
5043 STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
5044 from it to the DIE in the DWO. If NULL we are skipping the stub.
a2ce51a0
DE
5045 STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
5046 from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
c54a1dd8
DE
5047 attribute of the referencing CU. At most one of STUB_COMP_UNIT_DIE and
5048 STUB_COMP_DIR may be non-NULL.
b0c7bfa9
DE
5049 *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
5050 are filled in with the info of the DIE from the DWO file.
5051 ABBREV_TABLE_PROVIDED is non-zero if the caller of init_cutu_and_read_dies
5052 provided an abbrev table to use.
5053 The result is non-zero if a valid (non-dummy) DIE was found. */
5054
5055static int
5056read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
5057 struct dwo_unit *dwo_unit,
5058 int abbrev_table_provided,
5059 struct die_info *stub_comp_unit_die,
a2ce51a0 5060 const char *stub_comp_dir,
b0c7bfa9 5061 struct die_reader_specs *result_reader,
d521ce57 5062 const gdb_byte **result_info_ptr,
b0c7bfa9
DE
5063 struct die_info **result_comp_unit_die,
5064 int *result_has_children)
5065{
5066 struct objfile *objfile = dwarf2_per_objfile->objfile;
5067 struct dwarf2_cu *cu = this_cu->cu;
5068 struct dwarf2_section_info *section;
5069 bfd *abfd;
d521ce57 5070 const gdb_byte *begin_info_ptr, *info_ptr;
b0c7bfa9
DE
5071 ULONGEST signature; /* Or dwo_id. */
5072 struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
5073 int i,num_extra_attrs;
5074 struct dwarf2_section_info *dwo_abbrev_section;
5075 struct attribute *attr;
5076 struct die_info *comp_unit_die;
5077
b0aeadb3
DE
5078 /* At most one of these may be provided. */
5079 gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
a2ce51a0 5080
b0c7bfa9
DE
5081 /* These attributes aren't processed until later:
5082 DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
0d60c288
DE
5083 DW_AT_comp_dir is used now, to find the DWO file, but it is also
5084 referenced later. However, these attributes are found in the stub
5085 which we won't have later. In order to not impose this complication
5086 on the rest of the code, we read them here and copy them to the
5087 DWO CU/TU die. */
b0c7bfa9
DE
5088
5089 stmt_list = NULL;
5090 low_pc = NULL;
5091 high_pc = NULL;
5092 ranges = NULL;
5093 comp_dir = NULL;
5094
5095 if (stub_comp_unit_die != NULL)
5096 {
5097 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
5098 DWO file. */
5099 if (! this_cu->is_debug_types)
5100 stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
5101 low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
5102 high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
5103 ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
5104 comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
5105
5106 /* There should be a DW_AT_addr_base attribute here (if needed).
5107 We need the value before we can process DW_FORM_GNU_addr_index. */
5108 cu->addr_base = 0;
5109 attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
5110 if (attr)
5111 cu->addr_base = DW_UNSND (attr);
5112
5113 /* There should be a DW_AT_ranges_base attribute here (if needed).
5114 We need the value before we can process DW_AT_ranges. */
5115 cu->ranges_base = 0;
5116 attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
5117 if (attr)
5118 cu->ranges_base = DW_UNSND (attr);
5119 }
a2ce51a0
DE
5120 else if (stub_comp_dir != NULL)
5121 {
5122 /* Reconstruct the comp_dir attribute to simplify the code below. */
5123 comp_dir = (struct attribute *)
5124 obstack_alloc (&cu->comp_unit_obstack, sizeof (*comp_dir));
5125 comp_dir->name = DW_AT_comp_dir;
5126 comp_dir->form = DW_FORM_string;
5127 DW_STRING_IS_CANONICAL (comp_dir) = 0;
5128 DW_STRING (comp_dir) = stub_comp_dir;
5129 }
b0c7bfa9
DE
5130
5131 /* Set up for reading the DWO CU/TU. */
5132 cu->dwo_unit = dwo_unit;
5133 section = dwo_unit->section;
5134 dwarf2_read_section (objfile, section);
a32a8923 5135 abfd = get_section_bfd_owner (section);
b0c7bfa9
DE
5136 begin_info_ptr = info_ptr = section->buffer + dwo_unit->offset.sect_off;
5137 dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
5138 init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file);
5139
5140 if (this_cu->is_debug_types)
5141 {
5142 ULONGEST header_signature;
5143 cu_offset type_offset_in_tu;
5144 struct signatured_type *sig_type = (struct signatured_type *) this_cu;
5145
5146 info_ptr = read_and_check_type_unit_head (&cu->header, section,
5147 dwo_abbrev_section,
5148 info_ptr,
5149 &header_signature,
5150 &type_offset_in_tu);
a2ce51a0
DE
5151 /* This is not an assert because it can be caused by bad debug info. */
5152 if (sig_type->signature != header_signature)
5153 {
5154 error (_("Dwarf Error: signature mismatch %s vs %s while reading"
5155 " TU at offset 0x%x [in module %s]"),
5156 hex_string (sig_type->signature),
5157 hex_string (header_signature),
5158 dwo_unit->offset.sect_off,
5159 bfd_get_filename (abfd));
5160 }
b0c7bfa9
DE
5161 gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5162 /* For DWOs coming from DWP files, we don't know the CU length
5163 nor the type's offset in the TU until now. */
5164 dwo_unit->length = get_cu_length (&cu->header);
5165 dwo_unit->type_offset_in_tu = type_offset_in_tu;
5166
5167 /* Establish the type offset that can be used to lookup the type.
5168 For DWO files, we don't know it until now. */
5169 sig_type->type_offset_in_section.sect_off =
5170 dwo_unit->offset.sect_off + dwo_unit->type_offset_in_tu.cu_off;
5171 }
5172 else
5173 {
5174 info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5175 dwo_abbrev_section,
5176 info_ptr, 0);
5177 gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5178 /* For DWOs coming from DWP files, we don't know the CU length
5179 until now. */
5180 dwo_unit->length = get_cu_length (&cu->header);
5181 }
5182
02142a6c
DE
5183 /* Replace the CU's original abbrev table with the DWO's.
5184 Reminder: We can't read the abbrev table until we've read the header. */
b0c7bfa9
DE
5185 if (abbrev_table_provided)
5186 {
5187 /* Don't free the provided abbrev table, the caller of
5188 init_cutu_and_read_dies owns it. */
5189 dwarf2_read_abbrevs (cu, dwo_abbrev_section);
02142a6c 5190 /* Ensure the DWO abbrev table gets freed. */
b0c7bfa9
DE
5191 make_cleanup (dwarf2_free_abbrev_table, cu);
5192 }
5193 else
5194 {
5195 dwarf2_free_abbrev_table (cu);
5196 dwarf2_read_abbrevs (cu, dwo_abbrev_section);
02142a6c 5197 /* Leave any existing abbrev table cleanup as is. */
b0c7bfa9
DE
5198 }
5199
5200 /* Read in the die, but leave space to copy over the attributes
5201 from the stub. This has the benefit of simplifying the rest of
5202 the code - all the work to maintain the illusion of a single
5203 DW_TAG_{compile,type}_unit DIE is done here. */
5204 num_extra_attrs = ((stmt_list != NULL)
5205 + (low_pc != NULL)
5206 + (high_pc != NULL)
5207 + (ranges != NULL)
5208 + (comp_dir != NULL));
5209 info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
5210 result_has_children, num_extra_attrs);
5211
5212 /* Copy over the attributes from the stub to the DIE we just read in. */
5213 comp_unit_die = *result_comp_unit_die;
5214 i = comp_unit_die->num_attrs;
5215 if (stmt_list != NULL)
5216 comp_unit_die->attrs[i++] = *stmt_list;
5217 if (low_pc != NULL)
5218 comp_unit_die->attrs[i++] = *low_pc;
5219 if (high_pc != NULL)
5220 comp_unit_die->attrs[i++] = *high_pc;
5221 if (ranges != NULL)
5222 comp_unit_die->attrs[i++] = *ranges;
5223 if (comp_dir != NULL)
5224 comp_unit_die->attrs[i++] = *comp_dir;
5225 comp_unit_die->num_attrs += num_extra_attrs;
5226
b4f54984 5227 if (dwarf_die_debug)
bf6af496
DE
5228 {
5229 fprintf_unfiltered (gdb_stdlog,
5230 "Read die from %s@0x%x of %s:\n",
a32a8923 5231 get_section_name (section),
bf6af496
DE
5232 (unsigned) (begin_info_ptr - section->buffer),
5233 bfd_get_filename (abfd));
b4f54984 5234 dump_die (comp_unit_die, dwarf_die_debug);
bf6af496
DE
5235 }
5236
a2ce51a0
DE
5237 /* Save the comp_dir attribute. If there is no DWP file then we'll read
5238 TUs by skipping the stub and going directly to the entry in the DWO file.
5239 However, skipping the stub means we won't get DW_AT_comp_dir, so we have
5240 to get it via circuitous means. Blech. */
5241 if (comp_dir != NULL)
5242 result_reader->comp_dir = DW_STRING (comp_dir);
5243
b0c7bfa9
DE
5244 /* Skip dummy compilation units. */
5245 if (info_ptr >= begin_info_ptr + dwo_unit->length
5246 || peek_abbrev_code (abfd, info_ptr) == 0)
5247 return 0;
5248
5249 *result_info_ptr = info_ptr;
5250 return 1;
5251}
5252
5253/* Subroutine of init_cutu_and_read_dies to simplify it.
5254 Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
6a506a2d 5255 Returns NULL if the specified DWO unit cannot be found. */
b0c7bfa9
DE
5256
5257static struct dwo_unit *
5258lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
5259 struct die_info *comp_unit_die)
5260{
5261 struct dwarf2_cu *cu = this_cu->cu;
5262 struct attribute *attr;
5263 ULONGEST signature;
5264 struct dwo_unit *dwo_unit;
5265 const char *comp_dir, *dwo_name;
5266
a2ce51a0
DE
5267 gdb_assert (cu != NULL);
5268
b0c7bfa9
DE
5269 /* Yeah, we look dwo_name up again, but it simplifies the code. */
5270 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5271 gdb_assert (attr != NULL);
5272 dwo_name = DW_STRING (attr);
5273 comp_dir = NULL;
5274 attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
5275 if (attr)
5276 comp_dir = DW_STRING (attr);
5277
5278 if (this_cu->is_debug_types)
5279 {
5280 struct signatured_type *sig_type;
5281
5282 /* Since this_cu is the first member of struct signatured_type,
5283 we can go from a pointer to one to a pointer to the other. */
5284 sig_type = (struct signatured_type *) this_cu;
5285 signature = sig_type->signature;
5286 dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
5287 }
5288 else
5289 {
5290 struct attribute *attr;
5291
5292 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
5293 if (! attr)
5294 error (_("Dwarf Error: missing dwo_id for dwo_name %s"
5295 " [in module %s]"),
4262abfb 5296 dwo_name, objfile_name (this_cu->objfile));
b0c7bfa9
DE
5297 signature = DW_UNSND (attr);
5298 dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
5299 signature);
5300 }
5301
b0c7bfa9
DE
5302 return dwo_unit;
5303}
5304
a2ce51a0 5305/* Subroutine of init_cutu_and_read_dies to simplify it.
6aa5f3a6
DE
5306 See it for a description of the parameters.
5307 Read a TU directly from a DWO file, bypassing the stub.
5308
5309 Note: This function could be a little bit simpler if we shared cleanups
5310 with our caller, init_cutu_and_read_dies. That's generally a fragile thing
5311 to do, so we keep this function self-contained. Or we could move this
5312 into our caller, but it's complex enough already. */
a2ce51a0
DE
5313
5314static void
6aa5f3a6
DE
5315init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
5316 int use_existing_cu, int keep,
a2ce51a0
DE
5317 die_reader_func_ftype *die_reader_func,
5318 void *data)
5319{
5320 struct dwarf2_cu *cu;
5321 struct signatured_type *sig_type;
6aa5f3a6 5322 struct cleanup *cleanups, *free_cu_cleanup = NULL;
a2ce51a0
DE
5323 struct die_reader_specs reader;
5324 const gdb_byte *info_ptr;
5325 struct die_info *comp_unit_die;
5326 int has_children;
5327
5328 /* Verify we can do the following downcast, and that we have the
5329 data we need. */
5330 gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
5331 sig_type = (struct signatured_type *) this_cu;
5332 gdb_assert (sig_type->dwo_unit != NULL);
5333
5334 cleanups = make_cleanup (null_cleanup, NULL);
5335
6aa5f3a6
DE
5336 if (use_existing_cu && this_cu->cu != NULL)
5337 {
5338 gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
5339 cu = this_cu->cu;
5340 /* There's no need to do the rereading_dwo_cu handling that
5341 init_cutu_and_read_dies does since we don't read the stub. */
5342 }
5343 else
5344 {
5345 /* If !use_existing_cu, this_cu->cu must be NULL. */
5346 gdb_assert (this_cu->cu == NULL);
5347 cu = xmalloc (sizeof (*cu));
5348 init_one_comp_unit (cu, this_cu);
5349 /* If an error occurs while loading, release our storage. */
5350 free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5351 }
5352
5353 /* A future optimization, if needed, would be to use an existing
5354 abbrev table. When reading DWOs with skeletonless TUs, all the TUs
5355 could share abbrev tables. */
a2ce51a0
DE
5356
5357 if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
5358 0 /* abbrev_table_provided */,
5359 NULL /* stub_comp_unit_die */,
5360 sig_type->dwo_unit->dwo_file->comp_dir,
5361 &reader, &info_ptr,
5362 &comp_unit_die, &has_children) == 0)
5363 {
5364 /* Dummy die. */
5365 do_cleanups (cleanups);
5366 return;
5367 }
5368
5369 /* All the "real" work is done here. */
5370 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5371
6aa5f3a6 5372 /* This duplicates the code in init_cutu_and_read_dies,
a2ce51a0
DE
5373 but the alternative is making the latter more complex.
5374 This function is only for the special case of using DWO files directly:
5375 no point in overly complicating the general case just to handle this. */
6aa5f3a6 5376 if (free_cu_cleanup != NULL)
a2ce51a0 5377 {
6aa5f3a6
DE
5378 if (keep)
5379 {
5380 /* We've successfully allocated this compilation unit. Let our
5381 caller clean it up when finished with it. */
5382 discard_cleanups (free_cu_cleanup);
a2ce51a0 5383
6aa5f3a6
DE
5384 /* We can only discard free_cu_cleanup and all subsequent cleanups.
5385 So we have to manually free the abbrev table. */
5386 dwarf2_free_abbrev_table (cu);
a2ce51a0 5387
6aa5f3a6
DE
5388 /* Link this CU into read_in_chain. */
5389 this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5390 dwarf2_per_objfile->read_in_chain = this_cu;
5391 }
5392 else
5393 do_cleanups (free_cu_cleanup);
a2ce51a0 5394 }
a2ce51a0
DE
5395
5396 do_cleanups (cleanups);
5397}
5398
fd820528 5399/* Initialize a CU (or TU) and read its DIEs.
3019eac3 5400 If the CU defers to a DWO file, read the DWO file as well.
dee91e82 5401
f4dc4d17
DE
5402 ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
5403 Otherwise the table specified in the comp unit header is read in and used.
5404 This is an optimization for when we already have the abbrev table.
5405
dee91e82
DE
5406 If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
5407 Otherwise, a new CU is allocated with xmalloc.
5408
5409 If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
5410 read_in_chain. Otherwise the dwarf2_cu data is freed at the end.
5411
5412 WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
fd820528 5413 linker) then DIE_READER_FUNC will not get called. */
aaa75496 5414
70221824 5415static void
fd820528 5416init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
f4dc4d17 5417 struct abbrev_table *abbrev_table,
fd820528
DE
5418 int use_existing_cu, int keep,
5419 die_reader_func_ftype *die_reader_func,
5420 void *data)
c906108c 5421{
dee91e82 5422 struct objfile *objfile = dwarf2_per_objfile->objfile;
8a0459fd 5423 struct dwarf2_section_info *section = this_cu->section;
a32a8923 5424 bfd *abfd = get_section_bfd_owner (section);
dee91e82 5425 struct dwarf2_cu *cu;
d521ce57 5426 const gdb_byte *begin_info_ptr, *info_ptr;
dee91e82 5427 struct die_reader_specs reader;
d85a05f0 5428 struct die_info *comp_unit_die;
dee91e82 5429 int has_children;
d85a05f0 5430 struct attribute *attr;
365156ad 5431 struct cleanup *cleanups, *free_cu_cleanup = NULL;
dee91e82 5432 struct signatured_type *sig_type = NULL;
4bdcc0c1 5433 struct dwarf2_section_info *abbrev_section;
42e7ad6c
DE
5434 /* Non-zero if CU currently points to a DWO file and we need to
5435 reread it. When this happens we need to reread the skeleton die
a2ce51a0 5436 before we can reread the DWO file (this only applies to CUs, not TUs). */
42e7ad6c 5437 int rereading_dwo_cu = 0;
c906108c 5438
b4f54984 5439 if (dwarf_die_debug)
09406207
DE
5440 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5441 this_cu->is_debug_types ? "type" : "comp",
5442 this_cu->offset.sect_off);
5443
dee91e82
DE
5444 if (use_existing_cu)
5445 gdb_assert (keep);
23745b47 5446
a2ce51a0
DE
5447 /* If we're reading a TU directly from a DWO file, including a virtual DWO
5448 file (instead of going through the stub), short-circuit all of this. */
5449 if (this_cu->reading_dwo_directly)
5450 {
5451 /* Narrow down the scope of possibilities to have to understand. */
5452 gdb_assert (this_cu->is_debug_types);
5453 gdb_assert (abbrev_table == NULL);
6aa5f3a6
DE
5454 init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
5455 die_reader_func, data);
a2ce51a0
DE
5456 return;
5457 }
5458
dee91e82
DE
5459 cleanups = make_cleanup (null_cleanup, NULL);
5460
5461 /* This is cheap if the section is already read in. */
5462 dwarf2_read_section (objfile, section);
5463
5464 begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
36586728
TT
5465
5466 abbrev_section = get_abbrev_section_for_cu (this_cu);
dee91e82
DE
5467
5468 if (use_existing_cu && this_cu->cu != NULL)
5469 {
5470 cu = this_cu->cu;
42e7ad6c
DE
5471 /* If this CU is from a DWO file we need to start over, we need to
5472 refetch the attributes from the skeleton CU.
5473 This could be optimized by retrieving those attributes from when we
5474 were here the first time: the previous comp_unit_die was stored in
5475 comp_unit_obstack. But there's no data yet that we need this
5476 optimization. */
5477 if (cu->dwo_unit != NULL)
5478 rereading_dwo_cu = 1;
dee91e82
DE
5479 }
5480 else
5481 {
5482 /* If !use_existing_cu, this_cu->cu must be NULL. */
5483 gdb_assert (this_cu->cu == NULL);
dee91e82
DE
5484 cu = xmalloc (sizeof (*cu));
5485 init_one_comp_unit (cu, this_cu);
dee91e82 5486 /* If an error occurs while loading, release our storage. */
365156ad 5487 free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
42e7ad6c 5488 }
dee91e82 5489
b0c7bfa9 5490 /* Get the header. */
42e7ad6c
DE
5491 if (cu->header.first_die_offset.cu_off != 0 && ! rereading_dwo_cu)
5492 {
5493 /* We already have the header, there's no need to read it in again. */
5494 info_ptr += cu->header.first_die_offset.cu_off;
5495 }
5496 else
5497 {
3019eac3 5498 if (this_cu->is_debug_types)
dee91e82
DE
5499 {
5500 ULONGEST signature;
42e7ad6c 5501 cu_offset type_offset_in_tu;
dee91e82 5502
4bdcc0c1
DE
5503 info_ptr = read_and_check_type_unit_head (&cu->header, section,
5504 abbrev_section, info_ptr,
42e7ad6c
DE
5505 &signature,
5506 &type_offset_in_tu);
dee91e82 5507
42e7ad6c
DE
5508 /* Since per_cu is the first member of struct signatured_type,
5509 we can go from a pointer to one to a pointer to the other. */
5510 sig_type = (struct signatured_type *) this_cu;
5511 gdb_assert (sig_type->signature == signature);
5512 gdb_assert (sig_type->type_offset_in_tu.cu_off
5513 == type_offset_in_tu.cu_off);
dee91e82
DE
5514 gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5515
42e7ad6c
DE
5516 /* LENGTH has not been set yet for type units if we're
5517 using .gdb_index. */
1ce1cefd 5518 this_cu->length = get_cu_length (&cu->header);
3019eac3
DE
5519
5520 /* Establish the type offset that can be used to lookup the type. */
5521 sig_type->type_offset_in_section.sect_off =
5522 this_cu->offset.sect_off + sig_type->type_offset_in_tu.cu_off;
dee91e82
DE
5523 }
5524 else
5525 {
4bdcc0c1
DE
5526 info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5527 abbrev_section,
5528 info_ptr, 0);
dee91e82
DE
5529
5530 gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
1ce1cefd 5531 gdb_assert (this_cu->length == get_cu_length (&cu->header));
dee91e82
DE
5532 }
5533 }
10b3939b 5534
6caca83c 5535 /* Skip dummy compilation units. */
dee91e82 5536 if (info_ptr >= begin_info_ptr + this_cu->length
6caca83c
CC
5537 || peek_abbrev_code (abfd, info_ptr) == 0)
5538 {
dee91e82 5539 do_cleanups (cleanups);
21b2bd31 5540 return;
6caca83c
CC
5541 }
5542
433df2d4
DE
5543 /* If we don't have them yet, read the abbrevs for this compilation unit.
5544 And if we need to read them now, make sure they're freed when we're
42e7ad6c
DE
5545 done. Note that it's important that if the CU had an abbrev table
5546 on entry we don't free it when we're done: Somewhere up the call stack
5547 it may be in use. */
f4dc4d17
DE
5548 if (abbrev_table != NULL)
5549 {
5550 gdb_assert (cu->abbrev_table == NULL);
5551 gdb_assert (cu->header.abbrev_offset.sect_off
5552 == abbrev_table->offset.sect_off);
5553 cu->abbrev_table = abbrev_table;
5554 }
5555 else if (cu->abbrev_table == NULL)
dee91e82 5556 {
4bdcc0c1 5557 dwarf2_read_abbrevs (cu, abbrev_section);
dee91e82
DE
5558 make_cleanup (dwarf2_free_abbrev_table, cu);
5559 }
42e7ad6c
DE
5560 else if (rereading_dwo_cu)
5561 {
5562 dwarf2_free_abbrev_table (cu);
5563 dwarf2_read_abbrevs (cu, abbrev_section);
5564 }
af703f96 5565
dee91e82 5566 /* Read the top level CU/TU die. */
3019eac3 5567 init_cu_die_reader (&reader, cu, section, NULL);
dee91e82 5568 info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
93311388 5569
b0c7bfa9
DE
5570 /* If we are in a DWO stub, process it and then read in the "real" CU/TU
5571 from the DWO file.
5572 Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
5573 DWO CU, that this test will fail (the attribute will not be present). */
3019eac3
DE
5574 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5575 if (attr)
5576 {
3019eac3 5577 struct dwo_unit *dwo_unit;
b0c7bfa9 5578 struct die_info *dwo_comp_unit_die;
3019eac3
DE
5579
5580 if (has_children)
6a506a2d
DE
5581 {
5582 complaint (&symfile_complaints,
5583 _("compilation unit with DW_AT_GNU_dwo_name"
5584 " has children (offset 0x%x) [in module %s]"),
5585 this_cu->offset.sect_off, bfd_get_filename (abfd));
5586 }
b0c7bfa9 5587 dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
6a506a2d 5588 if (dwo_unit != NULL)
3019eac3 5589 {
6a506a2d
DE
5590 if (read_cutu_die_from_dwo (this_cu, dwo_unit,
5591 abbrev_table != NULL,
a2ce51a0 5592 comp_unit_die, NULL,
6a506a2d
DE
5593 &reader, &info_ptr,
5594 &dwo_comp_unit_die, &has_children) == 0)
5595 {
5596 /* Dummy die. */
5597 do_cleanups (cleanups);
5598 return;
5599 }
5600 comp_unit_die = dwo_comp_unit_die;
5601 }
5602 else
5603 {
5604 /* Yikes, we couldn't find the rest of the DIE, we only have
5605 the stub. A complaint has already been logged. There's
5606 not much more we can do except pass on the stub DIE to
5607 die_reader_func. We don't want to throw an error on bad
5608 debug info. */
3019eac3
DE
5609 }
5610 }
5611
b0c7bfa9 5612 /* All of the above is setup for this call. Yikes. */
dee91e82
DE
5613 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5614
b0c7bfa9 5615 /* Done, clean up. */
365156ad 5616 if (free_cu_cleanup != NULL)
348e048f 5617 {
365156ad
TT
5618 if (keep)
5619 {
5620 /* We've successfully allocated this compilation unit. Let our
5621 caller clean it up when finished with it. */
5622 discard_cleanups (free_cu_cleanup);
dee91e82 5623
365156ad
TT
5624 /* We can only discard free_cu_cleanup and all subsequent cleanups.
5625 So we have to manually free the abbrev table. */
5626 dwarf2_free_abbrev_table (cu);
dee91e82 5627
365156ad
TT
5628 /* Link this CU into read_in_chain. */
5629 this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5630 dwarf2_per_objfile->read_in_chain = this_cu;
5631 }
5632 else
5633 do_cleanups (free_cu_cleanup);
348e048f 5634 }
365156ad
TT
5635
5636 do_cleanups (cleanups);
dee91e82
DE
5637}
5638
33e80786
DE
5639/* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
5640 DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
5641 to have already done the lookup to find the DWO file).
dee91e82
DE
5642
5643 The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
3019eac3 5644 THIS_CU->is_debug_types, but nothing else.
dee91e82
DE
5645
5646 We fill in THIS_CU->length.
5647
5648 WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5649 linker) then DIE_READER_FUNC will not get called.
5650
5651 THIS_CU->cu is always freed when done.
3019eac3
DE
5652 This is done in order to not leave THIS_CU->cu in a state where we have
5653 to care whether it refers to the "main" CU or the DWO CU. */
dee91e82
DE
5654
5655static void
5656init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
3019eac3 5657 struct dwo_file *dwo_file,
dee91e82
DE
5658 die_reader_func_ftype *die_reader_func,
5659 void *data)
5660{
5661 struct objfile *objfile = dwarf2_per_objfile->objfile;
8a0459fd 5662 struct dwarf2_section_info *section = this_cu->section;
a32a8923 5663 bfd *abfd = get_section_bfd_owner (section);
33e80786 5664 struct dwarf2_section_info *abbrev_section;
dee91e82 5665 struct dwarf2_cu cu;
d521ce57 5666 const gdb_byte *begin_info_ptr, *info_ptr;
dee91e82
DE
5667 struct die_reader_specs reader;
5668 struct cleanup *cleanups;
5669 struct die_info *comp_unit_die;
5670 int has_children;
5671
b4f54984 5672 if (dwarf_die_debug)
09406207
DE
5673 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5674 this_cu->is_debug_types ? "type" : "comp",
5675 this_cu->offset.sect_off);
5676
dee91e82
DE
5677 gdb_assert (this_cu->cu == NULL);
5678
33e80786
DE
5679 abbrev_section = (dwo_file != NULL
5680 ? &dwo_file->sections.abbrev
5681 : get_abbrev_section_for_cu (this_cu));
5682
dee91e82
DE
5683 /* This is cheap if the section is already read in. */
5684 dwarf2_read_section (objfile, section);
5685
5686 init_one_comp_unit (&cu, this_cu);
5687
5688 cleanups = make_cleanup (free_stack_comp_unit, &cu);
5689
5690 begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
4bdcc0c1
DE
5691 info_ptr = read_and_check_comp_unit_head (&cu.header, section,
5692 abbrev_section, info_ptr,
3019eac3 5693 this_cu->is_debug_types);
dee91e82 5694
1ce1cefd 5695 this_cu->length = get_cu_length (&cu.header);
dee91e82
DE
5696
5697 /* Skip dummy compilation units. */
5698 if (info_ptr >= begin_info_ptr + this_cu->length
5699 || peek_abbrev_code (abfd, info_ptr) == 0)
c906108c 5700 {
dee91e82 5701 do_cleanups (cleanups);
21b2bd31 5702 return;
93311388 5703 }
72bf9492 5704
dee91e82
DE
5705 dwarf2_read_abbrevs (&cu, abbrev_section);
5706 make_cleanup (dwarf2_free_abbrev_table, &cu);
5707
3019eac3 5708 init_cu_die_reader (&reader, &cu, section, dwo_file);
dee91e82
DE
5709 info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5710
5711 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5712
5713 do_cleanups (cleanups);
5714}
5715
3019eac3
DE
5716/* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
5717 does not lookup the specified DWO file.
5718 This cannot be used to read DWO files.
dee91e82
DE
5719
5720 THIS_CU->cu is always freed when done.
3019eac3
DE
5721 This is done in order to not leave THIS_CU->cu in a state where we have
5722 to care whether it refers to the "main" CU or the DWO CU.
5723 We can revisit this if the data shows there's a performance issue. */
dee91e82
DE
5724
5725static void
5726init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
5727 die_reader_func_ftype *die_reader_func,
5728 void *data)
5729{
33e80786 5730 init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
dee91e82 5731}
0018ea6f
DE
5732\f
5733/* Type Unit Groups.
dee91e82 5734
0018ea6f
DE
5735 Type Unit Groups are a way to collapse the set of all TUs (type units) into
5736 a more manageable set. The grouping is done by DW_AT_stmt_list entry
5737 so that all types coming from the same compilation (.o file) are grouped
5738 together. A future step could be to put the types in the same symtab as
5739 the CU the types ultimately came from. */
ff013f42 5740
f4dc4d17
DE
5741static hashval_t
5742hash_type_unit_group (const void *item)
5743{
094b34ac 5744 const struct type_unit_group *tu_group = item;
f4dc4d17 5745
094b34ac 5746 return hash_stmt_list_entry (&tu_group->hash);
f4dc4d17 5747}
348e048f
DE
5748
5749static int
f4dc4d17 5750eq_type_unit_group (const void *item_lhs, const void *item_rhs)
348e048f 5751{
f4dc4d17
DE
5752 const struct type_unit_group *lhs = item_lhs;
5753 const struct type_unit_group *rhs = item_rhs;
348e048f 5754
094b34ac 5755 return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
f4dc4d17 5756}
348e048f 5757
f4dc4d17
DE
5758/* Allocate a hash table for type unit groups. */
5759
5760static htab_t
5761allocate_type_unit_groups_table (void)
5762{
5763 return htab_create_alloc_ex (3,
5764 hash_type_unit_group,
5765 eq_type_unit_group,
5766 NULL,
5767 &dwarf2_per_objfile->objfile->objfile_obstack,
5768 hashtab_obstack_allocate,
5769 dummy_obstack_deallocate);
5770}
dee91e82 5771
f4dc4d17
DE
5772/* Type units that don't have DW_AT_stmt_list are grouped into their own
5773 partial symtabs. We combine several TUs per psymtab to not let the size
5774 of any one psymtab grow too big. */
5775#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
5776#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
dee91e82 5777
094b34ac 5778/* Helper routine for get_type_unit_group.
f4dc4d17
DE
5779 Create the type_unit_group object used to hold one or more TUs. */
5780
5781static struct type_unit_group *
094b34ac 5782create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
f4dc4d17
DE
5783{
5784 struct objfile *objfile = dwarf2_per_objfile->objfile;
094b34ac 5785 struct dwarf2_per_cu_data *per_cu;
f4dc4d17 5786 struct type_unit_group *tu_group;
f4dc4d17
DE
5787
5788 tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5789 struct type_unit_group);
094b34ac 5790 per_cu = &tu_group->per_cu;
f4dc4d17 5791 per_cu->objfile = objfile;
f4dc4d17 5792
094b34ac
DE
5793 if (dwarf2_per_objfile->using_index)
5794 {
5795 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5796 struct dwarf2_per_cu_quick_data);
094b34ac
DE
5797 }
5798 else
5799 {
5800 unsigned int line_offset = line_offset_struct.sect_off;
5801 struct partial_symtab *pst;
5802 char *name;
5803
5804 /* Give the symtab a useful name for debug purposes. */
5805 if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
5806 name = xstrprintf ("<type_units_%d>",
5807 (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
5808 else
5809 name = xstrprintf ("<type_units_at_0x%x>", line_offset);
5810
5811 pst = create_partial_symtab (per_cu, name);
5812 pst->anonymous = 1;
f4dc4d17 5813
094b34ac
DE
5814 xfree (name);
5815 }
f4dc4d17 5816
094b34ac
DE
5817 tu_group->hash.dwo_unit = cu->dwo_unit;
5818 tu_group->hash.line_offset = line_offset_struct;
f4dc4d17
DE
5819
5820 return tu_group;
5821}
5822
094b34ac
DE
5823/* Look up the type_unit_group for type unit CU, and create it if necessary.
5824 STMT_LIST is a DW_AT_stmt_list attribute. */
f4dc4d17
DE
5825
5826static struct type_unit_group *
ff39bb5e 5827get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
f4dc4d17
DE
5828{
5829 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
5830 struct type_unit_group *tu_group;
5831 void **slot;
5832 unsigned int line_offset;
5833 struct type_unit_group type_unit_group_for_lookup;
5834
5835 if (dwarf2_per_objfile->type_unit_groups == NULL)
5836 {
5837 dwarf2_per_objfile->type_unit_groups =
5838 allocate_type_unit_groups_table ();
5839 }
5840
5841 /* Do we need to create a new group, or can we use an existing one? */
5842
5843 if (stmt_list)
5844 {
5845 line_offset = DW_UNSND (stmt_list);
5846 ++tu_stats->nr_symtab_sharers;
5847 }
5848 else
5849 {
5850 /* Ugh, no stmt_list. Rare, but we have to handle it.
5851 We can do various things here like create one group per TU or
5852 spread them over multiple groups to split up the expansion work.
5853 To avoid worst case scenarios (too many groups or too large groups)
5854 we, umm, group them in bunches. */
5855 line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
5856 | (tu_stats->nr_stmt_less_type_units
5857 / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
5858 ++tu_stats->nr_stmt_less_type_units;
5859 }
5860
094b34ac
DE
5861 type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
5862 type_unit_group_for_lookup.hash.line_offset.sect_off = line_offset;
f4dc4d17
DE
5863 slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
5864 &type_unit_group_for_lookup, INSERT);
5865 if (*slot != NULL)
5866 {
5867 tu_group = *slot;
5868 gdb_assert (tu_group != NULL);
5869 }
5870 else
5871 {
5872 sect_offset line_offset_struct;
5873
5874 line_offset_struct.sect_off = line_offset;
094b34ac 5875 tu_group = create_type_unit_group (cu, line_offset_struct);
f4dc4d17
DE
5876 *slot = tu_group;
5877 ++tu_stats->nr_symtabs;
5878 }
5879
5880 return tu_group;
5881}
0018ea6f
DE
5882\f
5883/* Partial symbol tables. */
5884
5885/* Create a psymtab named NAME and assign it to PER_CU.
5886
5887 The caller must fill in the following details:
5888 dirname, textlow, texthigh. */
5889
5890static struct partial_symtab *
5891create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
5892{
5893 struct objfile *objfile = per_cu->objfile;
5894 struct partial_symtab *pst;
5895
18a94d75 5896 pst = start_psymtab_common (objfile, name, 0,
0018ea6f
DE
5897 objfile->global_psymbols.next,
5898 objfile->static_psymbols.next);
5899
5900 pst->psymtabs_addrmap_supported = 1;
5901
5902 /* This is the glue that links PST into GDB's symbol API. */
5903 pst->read_symtab_private = per_cu;
5904 pst->read_symtab = dwarf2_read_symtab;
5905 per_cu->v.psymtab = pst;
5906
5907 return pst;
5908}
5909
b93601f3
TT
5910/* The DATA object passed to process_psymtab_comp_unit_reader has this
5911 type. */
5912
5913struct process_psymtab_comp_unit_data
5914{
5915 /* True if we are reading a DW_TAG_partial_unit. */
5916
5917 int want_partial_unit;
5918
5919 /* The "pretend" language that is used if the CU doesn't declare a
5920 language. */
5921
5922 enum language pretend_language;
5923};
5924
0018ea6f
DE
5925/* die_reader_func for process_psymtab_comp_unit. */
5926
5927static void
5928process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 5929 const gdb_byte *info_ptr,
0018ea6f
DE
5930 struct die_info *comp_unit_die,
5931 int has_children,
5932 void *data)
5933{
5934 struct dwarf2_cu *cu = reader->cu;
5935 struct objfile *objfile = cu->objfile;
3e29f34a 5936 struct gdbarch *gdbarch = get_objfile_arch (objfile);
0018ea6f
DE
5937 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
5938 struct attribute *attr;
5939 CORE_ADDR baseaddr;
5940 CORE_ADDR best_lowpc = 0, best_highpc = 0;
5941 struct partial_symtab *pst;
5942 int has_pc_info;
5943 const char *filename;
b93601f3 5944 struct process_psymtab_comp_unit_data *info = data;
0018ea6f 5945
b93601f3 5946 if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
0018ea6f
DE
5947 return;
5948
5949 gdb_assert (! per_cu->is_debug_types);
5950
b93601f3 5951 prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
0018ea6f
DE
5952
5953 cu->list_in_scope = &file_symbols;
5954
5955 /* Allocate a new partial symbol table structure. */
5956 attr = dwarf2_attr (comp_unit_die, DW_AT_name, cu);
5957 if (attr == NULL || !DW_STRING (attr))
5958 filename = "";
5959 else
5960 filename = DW_STRING (attr);
5961
5962 pst = create_partial_symtab (per_cu, filename);
5963
5964 /* This must be done before calling dwarf2_build_include_psymtabs. */
5965 attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
5966 if (attr != NULL)
5967 pst->dirname = DW_STRING (attr);
5968
5969 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5970
5971 dwarf2_find_base_address (comp_unit_die, cu);
5972
5973 /* Possibly set the default values of LOWPC and HIGHPC from
5974 `DW_AT_ranges'. */
5975 has_pc_info = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
5976 &best_highpc, cu, pst);
5977 if (has_pc_info == 1 && best_lowpc < best_highpc)
5978 /* Store the contiguous range if it is not empty; it can be empty for
5979 CUs with no code. */
5980 addrmap_set_empty (objfile->psymtabs_addrmap,
3e29f34a
MR
5981 gdbarch_adjust_dwarf2_addr (gdbarch,
5982 best_lowpc + baseaddr),
5983 gdbarch_adjust_dwarf2_addr (gdbarch,
5984 best_highpc + baseaddr) - 1,
5985 pst);
0018ea6f
DE
5986
5987 /* Check if comp unit has_children.
5988 If so, read the rest of the partial symbols from this comp unit.
5989 If not, there's no more debug_info for this comp unit. */
5990 if (has_children)
5991 {
5992 struct partial_die_info *first_die;
5993 CORE_ADDR lowpc, highpc;
5994
5995 lowpc = ((CORE_ADDR) -1);
5996 highpc = ((CORE_ADDR) 0);
5997
5998 first_die = load_partial_dies (reader, info_ptr, 1);
5999
6000 scan_partial_symbols (first_die, &lowpc, &highpc,
6001 ! has_pc_info, cu);
6002
6003 /* If we didn't find a lowpc, set it to highpc to avoid
6004 complaints from `maint check'. */
6005 if (lowpc == ((CORE_ADDR) -1))
6006 lowpc = highpc;
6007
6008 /* If the compilation unit didn't have an explicit address range,
6009 then use the information extracted from its child dies. */
6010 if (! has_pc_info)
6011 {
6012 best_lowpc = lowpc;
6013 best_highpc = highpc;
6014 }
6015 }
3e29f34a
MR
6016 pst->textlow = gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr);
6017 pst->texthigh = gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr);
0018ea6f
DE
6018
6019 pst->n_global_syms = objfile->global_psymbols.next -
6020 (objfile->global_psymbols.list + pst->globals_offset);
6021 pst->n_static_syms = objfile->static_psymbols.next -
6022 (objfile->static_psymbols.list + pst->statics_offset);
6023 sort_pst_symbols (objfile, pst);
6024
6025 if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
6026 {
6027 int i;
6028 int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6029 struct dwarf2_per_cu_data *iter;
6030
6031 /* Fill in 'dependencies' here; we fill in 'users' in a
6032 post-pass. */
6033 pst->number_of_dependencies = len;
6034 pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
6035 len * sizeof (struct symtab *));
6036 for (i = 0;
6037 VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
6038 i, iter);
6039 ++i)
6040 pst->dependencies[i] = iter->v.psymtab;
6041
6042 VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6043 }
6044
6045 /* Get the list of files included in the current compilation unit,
6046 and build a psymtab for each of them. */
6047 dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
6048
b4f54984 6049 if (dwarf_read_debug)
0018ea6f
DE
6050 {
6051 struct gdbarch *gdbarch = get_objfile_arch (objfile);
6052
6053 fprintf_unfiltered (gdb_stdlog,
6054 "Psymtab for %s unit @0x%x: %s - %s"
6055 ", %d global, %d static syms\n",
6056 per_cu->is_debug_types ? "type" : "comp",
6057 per_cu->offset.sect_off,
6058 paddress (gdbarch, pst->textlow),
6059 paddress (gdbarch, pst->texthigh),
6060 pst->n_global_syms, pst->n_static_syms);
6061 }
6062}
6063
6064/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6065 Process compilation unit THIS_CU for a psymtab. */
6066
6067static void
6068process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
b93601f3
TT
6069 int want_partial_unit,
6070 enum language pretend_language)
0018ea6f 6071{
b93601f3
TT
6072 struct process_psymtab_comp_unit_data info;
6073
0018ea6f
DE
6074 /* If this compilation unit was already read in, free the
6075 cached copy in order to read it in again. This is
6076 necessary because we skipped some symbols when we first
6077 read in the compilation unit (see load_partial_dies).
6078 This problem could be avoided, but the benefit is unclear. */
6079 if (this_cu->cu != NULL)
6080 free_one_cached_comp_unit (this_cu);
6081
6082 gdb_assert (! this_cu->is_debug_types);
b93601f3
TT
6083 info.want_partial_unit = want_partial_unit;
6084 info.pretend_language = pretend_language;
0018ea6f
DE
6085 init_cutu_and_read_dies (this_cu, NULL, 0, 0,
6086 process_psymtab_comp_unit_reader,
b93601f3 6087 &info);
0018ea6f
DE
6088
6089 /* Age out any secondary CUs. */
6090 age_cached_comp_units ();
6091}
f4dc4d17
DE
6092
6093/* Reader function for build_type_psymtabs. */
6094
6095static void
6096build_type_psymtabs_reader (const struct die_reader_specs *reader,
d521ce57 6097 const gdb_byte *info_ptr,
f4dc4d17
DE
6098 struct die_info *type_unit_die,
6099 int has_children,
6100 void *data)
6101{
6102 struct objfile *objfile = dwarf2_per_objfile->objfile;
6103 struct dwarf2_cu *cu = reader->cu;
6104 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
0186c6a7 6105 struct signatured_type *sig_type;
f4dc4d17
DE
6106 struct type_unit_group *tu_group;
6107 struct attribute *attr;
6108 struct partial_die_info *first_die;
6109 CORE_ADDR lowpc, highpc;
6110 struct partial_symtab *pst;
6111
6112 gdb_assert (data == NULL);
0186c6a7
DE
6113 gdb_assert (per_cu->is_debug_types);
6114 sig_type = (struct signatured_type *) per_cu;
f4dc4d17
DE
6115
6116 if (! has_children)
6117 return;
6118
6119 attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
094b34ac 6120 tu_group = get_type_unit_group (cu, attr);
f4dc4d17 6121
0186c6a7 6122 VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
f4dc4d17
DE
6123
6124 prepare_one_comp_unit (cu, type_unit_die, language_minimal);
6125 cu->list_in_scope = &file_symbols;
6126 pst = create_partial_symtab (per_cu, "");
6127 pst->anonymous = 1;
6128
6129 first_die = load_partial_dies (reader, info_ptr, 1);
6130
6131 lowpc = (CORE_ADDR) -1;
6132 highpc = (CORE_ADDR) 0;
6133 scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
6134
6135 pst->n_global_syms = objfile->global_psymbols.next -
6136 (objfile->global_psymbols.list + pst->globals_offset);
6137 pst->n_static_syms = objfile->static_psymbols.next -
6138 (objfile->static_psymbols.list + pst->statics_offset);
5c80ed9d 6139 sort_pst_symbols (objfile, pst);
f4dc4d17
DE
6140}
6141
73051182
DE
6142/* Struct used to sort TUs by their abbreviation table offset. */
6143
6144struct tu_abbrev_offset
6145{
6146 struct signatured_type *sig_type;
6147 sect_offset abbrev_offset;
6148};
6149
6150/* Helper routine for build_type_psymtabs_1, passed to qsort. */
6151
6152static int
6153sort_tu_by_abbrev_offset (const void *ap, const void *bp)
6154{
6155 const struct tu_abbrev_offset * const *a = ap;
6156 const struct tu_abbrev_offset * const *b = bp;
6157 unsigned int aoff = (*a)->abbrev_offset.sect_off;
6158 unsigned int boff = (*b)->abbrev_offset.sect_off;
6159
6160 return (aoff > boff) - (aoff < boff);
6161}
6162
6163/* Efficiently read all the type units.
6164 This does the bulk of the work for build_type_psymtabs.
6165
6166 The efficiency is because we sort TUs by the abbrev table they use and
6167 only read each abbrev table once. In one program there are 200K TUs
6168 sharing 8K abbrev tables.
6169
6170 The main purpose of this function is to support building the
6171 dwarf2_per_objfile->type_unit_groups table.
6172 TUs typically share the DW_AT_stmt_list of the CU they came from, so we
6173 can collapse the search space by grouping them by stmt_list.
6174 The savings can be significant, in the same program from above the 200K TUs
6175 share 8K stmt_list tables.
6176
6177 FUNC is expected to call get_type_unit_group, which will create the
6178 struct type_unit_group if necessary and add it to
6179 dwarf2_per_objfile->type_unit_groups. */
6180
6181static void
6182build_type_psymtabs_1 (void)
6183{
6184 struct objfile *objfile = dwarf2_per_objfile->objfile;
6185 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6186 struct cleanup *cleanups;
6187 struct abbrev_table *abbrev_table;
6188 sect_offset abbrev_offset;
6189 struct tu_abbrev_offset *sorted_by_abbrev;
6190 struct type_unit_group **iter;
6191 int i;
6192
6193 /* It's up to the caller to not call us multiple times. */
6194 gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
6195
6196 if (dwarf2_per_objfile->n_type_units == 0)
6197 return;
6198
6199 /* TUs typically share abbrev tables, and there can be way more TUs than
6200 abbrev tables. Sort by abbrev table to reduce the number of times we
6201 read each abbrev table in.
6202 Alternatives are to punt or to maintain a cache of abbrev tables.
6203 This is simpler and efficient enough for now.
6204
6205 Later we group TUs by their DW_AT_stmt_list value (as this defines the
6206 symtab to use). Typically TUs with the same abbrev offset have the same
6207 stmt_list value too so in practice this should work well.
6208
6209 The basic algorithm here is:
6210
6211 sort TUs by abbrev table
6212 for each TU with same abbrev table:
6213 read abbrev table if first user
6214 read TU top level DIE
6215 [IWBN if DWO skeletons had DW_AT_stmt_list]
6216 call FUNC */
6217
b4f54984 6218 if (dwarf_read_debug)
73051182
DE
6219 fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
6220
6221 /* Sort in a separate table to maintain the order of all_type_units
6222 for .gdb_index: TU indices directly index all_type_units. */
6223 sorted_by_abbrev = XNEWVEC (struct tu_abbrev_offset,
6224 dwarf2_per_objfile->n_type_units);
6225 for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6226 {
6227 struct signatured_type *sig_type = dwarf2_per_objfile->all_type_units[i];
6228
6229 sorted_by_abbrev[i].sig_type = sig_type;
6230 sorted_by_abbrev[i].abbrev_offset =
6231 read_abbrev_offset (sig_type->per_cu.section,
6232 sig_type->per_cu.offset);
6233 }
6234 cleanups = make_cleanup (xfree, sorted_by_abbrev);
6235 qsort (sorted_by_abbrev, dwarf2_per_objfile->n_type_units,
6236 sizeof (struct tu_abbrev_offset), sort_tu_by_abbrev_offset);
6237
6238 abbrev_offset.sect_off = ~(unsigned) 0;
6239 abbrev_table = NULL;
6240 make_cleanup (abbrev_table_free_cleanup, &abbrev_table);
6241
6242 for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6243 {
6244 const struct tu_abbrev_offset *tu = &sorted_by_abbrev[i];
6245
6246 /* Switch to the next abbrev table if necessary. */
6247 if (abbrev_table == NULL
6248 || tu->abbrev_offset.sect_off != abbrev_offset.sect_off)
6249 {
6250 if (abbrev_table != NULL)
6251 {
6252 abbrev_table_free (abbrev_table);
6253 /* Reset to NULL in case abbrev_table_read_table throws
6254 an error: abbrev_table_free_cleanup will get called. */
6255 abbrev_table = NULL;
6256 }
6257 abbrev_offset = tu->abbrev_offset;
6258 abbrev_table =
6259 abbrev_table_read_table (&dwarf2_per_objfile->abbrev,
6260 abbrev_offset);
6261 ++tu_stats->nr_uniq_abbrev_tables;
6262 }
6263
6264 init_cutu_and_read_dies (&tu->sig_type->per_cu, abbrev_table, 0, 0,
6265 build_type_psymtabs_reader, NULL);
6266 }
6267
73051182 6268 do_cleanups (cleanups);
6aa5f3a6 6269}
73051182 6270
6aa5f3a6
DE
6271/* Print collected type unit statistics. */
6272
6273static void
6274print_tu_stats (void)
6275{
6276 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6277
6278 fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
6279 fprintf_unfiltered (gdb_stdlog, " %d TUs\n",
6280 dwarf2_per_objfile->n_type_units);
6281 fprintf_unfiltered (gdb_stdlog, " %d uniq abbrev tables\n",
6282 tu_stats->nr_uniq_abbrev_tables);
6283 fprintf_unfiltered (gdb_stdlog, " %d symtabs from stmt_list entries\n",
6284 tu_stats->nr_symtabs);
6285 fprintf_unfiltered (gdb_stdlog, " %d symtab sharers\n",
6286 tu_stats->nr_symtab_sharers);
6287 fprintf_unfiltered (gdb_stdlog, " %d type units without a stmt_list\n",
6288 tu_stats->nr_stmt_less_type_units);
6289 fprintf_unfiltered (gdb_stdlog, " %d all_type_units reallocs\n",
6290 tu_stats->nr_all_type_units_reallocs);
73051182
DE
6291}
6292
f4dc4d17
DE
6293/* Traversal function for build_type_psymtabs. */
6294
6295static int
6296build_type_psymtab_dependencies (void **slot, void *info)
6297{
6298 struct objfile *objfile = dwarf2_per_objfile->objfile;
6299 struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
094b34ac 6300 struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
f4dc4d17 6301 struct partial_symtab *pst = per_cu->v.psymtab;
0186c6a7
DE
6302 int len = VEC_length (sig_type_ptr, tu_group->tus);
6303 struct signatured_type *iter;
f4dc4d17
DE
6304 int i;
6305
6306 gdb_assert (len > 0);
0186c6a7 6307 gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
f4dc4d17
DE
6308
6309 pst->number_of_dependencies = len;
6310 pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
6311 len * sizeof (struct psymtab *));
6312 for (i = 0;
0186c6a7 6313 VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
f4dc4d17
DE
6314 ++i)
6315 {
0186c6a7
DE
6316 gdb_assert (iter->per_cu.is_debug_types);
6317 pst->dependencies[i] = iter->per_cu.v.psymtab;
796a7ff8 6318 iter->type_unit_group = tu_group;
f4dc4d17
DE
6319 }
6320
0186c6a7 6321 VEC_free (sig_type_ptr, tu_group->tus);
348e048f
DE
6322
6323 return 1;
6324}
6325
6326/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6327 Build partial symbol tables for the .debug_types comp-units. */
6328
6329static void
6330build_type_psymtabs (struct objfile *objfile)
6331{
0e50663e 6332 if (! create_all_type_units (objfile))
348e048f
DE
6333 return;
6334
73051182 6335 build_type_psymtabs_1 ();
6aa5f3a6 6336}
f4dc4d17 6337
6aa5f3a6
DE
6338/* Traversal function for process_skeletonless_type_unit.
6339 Read a TU in a DWO file and build partial symbols for it. */
6340
6341static int
6342process_skeletonless_type_unit (void **slot, void *info)
6343{
6344 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
6345 struct objfile *objfile = info;
6346 struct signatured_type find_entry, *entry;
6347
6348 /* If this TU doesn't exist in the global table, add it and read it in. */
6349
6350 if (dwarf2_per_objfile->signatured_types == NULL)
6351 {
6352 dwarf2_per_objfile->signatured_types
6353 = allocate_signatured_type_table (objfile);
6354 }
6355
6356 find_entry.signature = dwo_unit->signature;
6357 slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
6358 INSERT);
6359 /* If we've already seen this type there's nothing to do. What's happening
6360 is we're doing our own version of comdat-folding here. */
6361 if (*slot != NULL)
6362 return 1;
6363
6364 /* This does the job that create_all_type_units would have done for
6365 this TU. */
6366 entry = add_type_unit (dwo_unit->signature, slot);
6367 fill_in_sig_entry_from_dwo_entry (objfile, entry, dwo_unit);
6368 *slot = entry;
6369
6370 /* This does the job that build_type_psymtabs_1 would have done. */
6371 init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0,
6372 build_type_psymtabs_reader, NULL);
6373
6374 return 1;
6375}
6376
6377/* Traversal function for process_skeletonless_type_units. */
6378
6379static int
6380process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
6381{
6382 struct dwo_file *dwo_file = (struct dwo_file *) *slot;
6383
6384 if (dwo_file->tus != NULL)
6385 {
6386 htab_traverse_noresize (dwo_file->tus,
6387 process_skeletonless_type_unit, info);
6388 }
6389
6390 return 1;
6391}
6392
6393/* Scan all TUs of DWO files, verifying we've processed them.
6394 This is needed in case a TU was emitted without its skeleton.
6395 Note: This can't be done until we know what all the DWO files are. */
6396
6397static void
6398process_skeletonless_type_units (struct objfile *objfile)
6399{
6400 /* Skeletonless TUs in DWP files without .gdb_index is not supported yet. */
6401 if (get_dwp_file () == NULL
6402 && dwarf2_per_objfile->dwo_files != NULL)
6403 {
6404 htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
6405 process_dwo_file_for_skeletonless_type_units,
6406 objfile);
6407 }
348e048f
DE
6408}
6409
60606b2c
TT
6410/* A cleanup function that clears objfile's psymtabs_addrmap field. */
6411
6412static void
6413psymtabs_addrmap_cleanup (void *o)
6414{
6415 struct objfile *objfile = o;
ec61707d 6416
60606b2c
TT
6417 objfile->psymtabs_addrmap = NULL;
6418}
6419
95554aad
TT
6420/* Compute the 'user' field for each psymtab in OBJFILE. */
6421
6422static void
6423set_partial_user (struct objfile *objfile)
6424{
6425 int i;
6426
6427 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6428 {
8832e7e3 6429 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
95554aad
TT
6430 struct partial_symtab *pst = per_cu->v.psymtab;
6431 int j;
6432
36586728
TT
6433 if (pst == NULL)
6434 continue;
6435
95554aad
TT
6436 for (j = 0; j < pst->number_of_dependencies; ++j)
6437 {
6438 /* Set the 'user' field only if it is not already set. */
6439 if (pst->dependencies[j]->user == NULL)
6440 pst->dependencies[j]->user = pst;
6441 }
6442 }
6443}
6444
93311388
DE
6445/* Build the partial symbol table by doing a quick pass through the
6446 .debug_info and .debug_abbrev sections. */
72bf9492 6447
93311388 6448static void
c67a9c90 6449dwarf2_build_psymtabs_hard (struct objfile *objfile)
93311388 6450{
60606b2c
TT
6451 struct cleanup *back_to, *addrmap_cleanup;
6452 struct obstack temp_obstack;
21b2bd31 6453 int i;
93311388 6454
b4f54984 6455 if (dwarf_read_debug)
45cfd468
DE
6456 {
6457 fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
4262abfb 6458 objfile_name (objfile));
45cfd468
DE
6459 }
6460
98bfdba5
PA
6461 dwarf2_per_objfile->reading_partial_symbols = 1;
6462
be391dca 6463 dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
91c24f0a 6464
93311388
DE
6465 /* Any cached compilation units will be linked by the per-objfile
6466 read_in_chain. Make sure to free them when we're done. */
6467 back_to = make_cleanup (free_cached_comp_units, NULL);
72bf9492 6468
348e048f
DE
6469 build_type_psymtabs (objfile);
6470
93311388 6471 create_all_comp_units (objfile);
c906108c 6472
60606b2c
TT
6473 /* Create a temporary address map on a temporary obstack. We later
6474 copy this to the final obstack. */
6475 obstack_init (&temp_obstack);
6476 make_cleanup_obstack_free (&temp_obstack);
6477 objfile->psymtabs_addrmap = addrmap_create_mutable (&temp_obstack);
6478 addrmap_cleanup = make_cleanup (psymtabs_addrmap_cleanup, objfile);
72bf9492 6479
21b2bd31 6480 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
93311388 6481 {
8832e7e3 6482 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
aaa75496 6483
b93601f3 6484 process_psymtab_comp_unit (per_cu, 0, language_minimal);
c906108c 6485 }
ff013f42 6486
6aa5f3a6
DE
6487 /* This has to wait until we read the CUs, we need the list of DWOs. */
6488 process_skeletonless_type_units (objfile);
6489
6490 /* Now that all TUs have been processed we can fill in the dependencies. */
6491 if (dwarf2_per_objfile->type_unit_groups != NULL)
6492 {
6493 htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
6494 build_type_psymtab_dependencies, NULL);
6495 }
6496
b4f54984 6497 if (dwarf_read_debug)
6aa5f3a6
DE
6498 print_tu_stats ();
6499
95554aad
TT
6500 set_partial_user (objfile);
6501
ff013f42
JK
6502 objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
6503 &objfile->objfile_obstack);
60606b2c 6504 discard_cleanups (addrmap_cleanup);
ff013f42 6505
ae038cb0 6506 do_cleanups (back_to);
45cfd468 6507
b4f54984 6508 if (dwarf_read_debug)
45cfd468 6509 fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
4262abfb 6510 objfile_name (objfile));
ae038cb0
DJ
6511}
6512
3019eac3 6513/* die_reader_func for load_partial_comp_unit. */
ae038cb0
DJ
6514
6515static void
dee91e82 6516load_partial_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 6517 const gdb_byte *info_ptr,
dee91e82
DE
6518 struct die_info *comp_unit_die,
6519 int has_children,
6520 void *data)
ae038cb0 6521{
dee91e82 6522 struct dwarf2_cu *cu = reader->cu;
ae038cb0 6523
95554aad 6524 prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
ae038cb0 6525
ae038cb0
DJ
6526 /* Check if comp unit has_children.
6527 If so, read the rest of the partial symbols from this comp unit.
0963b4bd 6528 If not, there's no more debug_info for this comp unit. */
d85a05f0 6529 if (has_children)
dee91e82
DE
6530 load_partial_dies (reader, info_ptr, 0);
6531}
98bfdba5 6532
dee91e82
DE
6533/* Load the partial DIEs for a secondary CU into memory.
6534 This is also used when rereading a primary CU with load_all_dies. */
c5b7e1cb 6535
dee91e82
DE
6536static void
6537load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
6538{
f4dc4d17
DE
6539 init_cutu_and_read_dies (this_cu, NULL, 1, 1,
6540 load_partial_comp_unit_reader, NULL);
ae038cb0
DJ
6541}
6542
ae038cb0 6543static void
36586728
TT
6544read_comp_units_from_section (struct objfile *objfile,
6545 struct dwarf2_section_info *section,
6546 unsigned int is_dwz,
6547 int *n_allocated,
6548 int *n_comp_units,
6549 struct dwarf2_per_cu_data ***all_comp_units)
ae038cb0 6550{
d521ce57 6551 const gdb_byte *info_ptr;
a32a8923 6552 bfd *abfd = get_section_bfd_owner (section);
be391dca 6553
b4f54984 6554 if (dwarf_read_debug)
bf6af496 6555 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
a32a8923
DE
6556 get_section_name (section),
6557 get_section_file_name (section));
bf6af496 6558
36586728 6559 dwarf2_read_section (objfile, section);
ae038cb0 6560
36586728 6561 info_ptr = section->buffer;
6e70227d 6562
36586728 6563 while (info_ptr < section->buffer + section->size)
ae038cb0 6564 {
c764a876 6565 unsigned int length, initial_length_size;
ae038cb0 6566 struct dwarf2_per_cu_data *this_cu;
b64f50a1 6567 sect_offset offset;
ae038cb0 6568
36586728 6569 offset.sect_off = info_ptr - section->buffer;
ae038cb0
DJ
6570
6571 /* Read just enough information to find out where the next
6572 compilation unit is. */
36586728 6573 length = read_initial_length (abfd, info_ptr, &initial_length_size);
ae038cb0
DJ
6574
6575 /* Save the compilation unit for later lookup. */
6576 this_cu = obstack_alloc (&objfile->objfile_obstack,
6577 sizeof (struct dwarf2_per_cu_data));
6578 memset (this_cu, 0, sizeof (*this_cu));
6579 this_cu->offset = offset;
c764a876 6580 this_cu->length = length + initial_length_size;
36586728 6581 this_cu->is_dwz = is_dwz;
9291a0cd 6582 this_cu->objfile = objfile;
8a0459fd 6583 this_cu->section = section;
ae038cb0 6584
36586728 6585 if (*n_comp_units == *n_allocated)
ae038cb0 6586 {
36586728
TT
6587 *n_allocated *= 2;
6588 *all_comp_units = xrealloc (*all_comp_units,
6589 *n_allocated
6590 * sizeof (struct dwarf2_per_cu_data *));
ae038cb0 6591 }
36586728
TT
6592 (*all_comp_units)[*n_comp_units] = this_cu;
6593 ++*n_comp_units;
ae038cb0
DJ
6594
6595 info_ptr = info_ptr + this_cu->length;
6596 }
36586728
TT
6597}
6598
6599/* Create a list of all compilation units in OBJFILE.
6600 This is only done for -readnow and building partial symtabs. */
6601
6602static void
6603create_all_comp_units (struct objfile *objfile)
6604{
6605 int n_allocated;
6606 int n_comp_units;
6607 struct dwarf2_per_cu_data **all_comp_units;
4db1a1dc 6608 struct dwz_file *dwz;
36586728
TT
6609
6610 n_comp_units = 0;
6611 n_allocated = 10;
6612 all_comp_units = xmalloc (n_allocated
6613 * sizeof (struct dwarf2_per_cu_data *));
6614
6615 read_comp_units_from_section (objfile, &dwarf2_per_objfile->info, 0,
6616 &n_allocated, &n_comp_units, &all_comp_units);
6617
4db1a1dc
TT
6618 dwz = dwarf2_get_dwz_file ();
6619 if (dwz != NULL)
6620 read_comp_units_from_section (objfile, &dwz->info, 1,
6621 &n_allocated, &n_comp_units,
6622 &all_comp_units);
ae038cb0
DJ
6623
6624 dwarf2_per_objfile->all_comp_units
6625 = obstack_alloc (&objfile->objfile_obstack,
6626 n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6627 memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
6628 n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6629 xfree (all_comp_units);
6630 dwarf2_per_objfile->n_comp_units = n_comp_units;
c906108c
SS
6631}
6632
5734ee8b 6633/* Process all loaded DIEs for compilation unit CU, starting at
cdc07690 6634 FIRST_DIE. The caller should pass SET_ADDRMAP == 1 if the compilation
5734ee8b 6635 unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
cdc07690
YQ
6636 DW_AT_ranges). See the comments of add_partial_subprogram on how
6637 SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated. */
c906108c 6638
72bf9492
DJ
6639static void
6640scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
cdc07690
YQ
6641 CORE_ADDR *highpc, int set_addrmap,
6642 struct dwarf2_cu *cu)
c906108c 6643{
72bf9492 6644 struct partial_die_info *pdi;
c906108c 6645
91c24f0a
DC
6646 /* Now, march along the PDI's, descending into ones which have
6647 interesting children but skipping the children of the other ones,
6648 until we reach the end of the compilation unit. */
c906108c 6649
72bf9492 6650 pdi = first_die;
91c24f0a 6651
72bf9492
DJ
6652 while (pdi != NULL)
6653 {
6654 fixup_partial_die (pdi, cu);
c906108c 6655
f55ee35c 6656 /* Anonymous namespaces or modules have no name but have interesting
91c24f0a
DC
6657 children, so we need to look at them. Ditto for anonymous
6658 enums. */
933c6fe4 6659
72bf9492 6660 if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
95554aad
TT
6661 || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
6662 || pdi->tag == DW_TAG_imported_unit)
c906108c 6663 {
72bf9492 6664 switch (pdi->tag)
c906108c
SS
6665 {
6666 case DW_TAG_subprogram:
cdc07690 6667 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
c906108c 6668 break;
72929c62 6669 case DW_TAG_constant:
c906108c
SS
6670 case DW_TAG_variable:
6671 case DW_TAG_typedef:
91c24f0a 6672 case DW_TAG_union_type:
72bf9492 6673 if (!pdi->is_declaration)
63d06c5c 6674 {
72bf9492 6675 add_partial_symbol (pdi, cu);
63d06c5c
DC
6676 }
6677 break;
c906108c 6678 case DW_TAG_class_type:
680b30c7 6679 case DW_TAG_interface_type:
c906108c 6680 case DW_TAG_structure_type:
72bf9492 6681 if (!pdi->is_declaration)
c906108c 6682 {
72bf9492 6683 add_partial_symbol (pdi, cu);
c906108c
SS
6684 }
6685 break;
91c24f0a 6686 case DW_TAG_enumeration_type:
72bf9492
DJ
6687 if (!pdi->is_declaration)
6688 add_partial_enumeration (pdi, cu);
c906108c
SS
6689 break;
6690 case DW_TAG_base_type:
a02abb62 6691 case DW_TAG_subrange_type:
c906108c 6692 /* File scope base type definitions are added to the partial
c5aa993b 6693 symbol table. */
72bf9492 6694 add_partial_symbol (pdi, cu);
c906108c 6695 break;
d9fa45fe 6696 case DW_TAG_namespace:
cdc07690 6697 add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
91c24f0a 6698 break;
5d7cb8df 6699 case DW_TAG_module:
cdc07690 6700 add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
5d7cb8df 6701 break;
95554aad
TT
6702 case DW_TAG_imported_unit:
6703 {
6704 struct dwarf2_per_cu_data *per_cu;
6705
f4dc4d17
DE
6706 /* For now we don't handle imported units in type units. */
6707 if (cu->per_cu->is_debug_types)
6708 {
6709 error (_("Dwarf Error: DW_TAG_imported_unit is not"
6710 " supported in type units [in module %s]"),
4262abfb 6711 objfile_name (cu->objfile));
f4dc4d17
DE
6712 }
6713
95554aad 6714 per_cu = dwarf2_find_containing_comp_unit (pdi->d.offset,
36586728 6715 pdi->is_dwz,
95554aad
TT
6716 cu->objfile);
6717
6718 /* Go read the partial unit, if needed. */
6719 if (per_cu->v.psymtab == NULL)
b93601f3 6720 process_psymtab_comp_unit (per_cu, 1, cu->language);
95554aad 6721
f4dc4d17 6722 VEC_safe_push (dwarf2_per_cu_ptr,
796a7ff8 6723 cu->per_cu->imported_symtabs, per_cu);
95554aad
TT
6724 }
6725 break;
74921315
KS
6726 case DW_TAG_imported_declaration:
6727 add_partial_symbol (pdi, cu);
6728 break;
c906108c
SS
6729 default:
6730 break;
6731 }
6732 }
6733
72bf9492
DJ
6734 /* If the die has a sibling, skip to the sibling. */
6735
6736 pdi = pdi->die_sibling;
6737 }
6738}
6739
6740/* Functions used to compute the fully scoped name of a partial DIE.
91c24f0a 6741
72bf9492 6742 Normally, this is simple. For C++, the parent DIE's fully scoped
987504bb
JJ
6743 name is concatenated with "::" and the partial DIE's name. For
6744 Java, the same thing occurs except that "." is used instead of "::".
72bf9492
DJ
6745 Enumerators are an exception; they use the scope of their parent
6746 enumeration type, i.e. the name of the enumeration type is not
6747 prepended to the enumerator.
91c24f0a 6748
72bf9492
DJ
6749 There are two complexities. One is DW_AT_specification; in this
6750 case "parent" means the parent of the target of the specification,
6751 instead of the direct parent of the DIE. The other is compilers
6752 which do not emit DW_TAG_namespace; in this case we try to guess
6753 the fully qualified name of structure types from their members'
6754 linkage names. This must be done using the DIE's children rather
6755 than the children of any DW_AT_specification target. We only need
6756 to do this for structures at the top level, i.e. if the target of
6757 any DW_AT_specification (if any; otherwise the DIE itself) does not
6758 have a parent. */
6759
6760/* Compute the scope prefix associated with PDI's parent, in
6761 compilation unit CU. The result will be allocated on CU's
6762 comp_unit_obstack, or a copy of the already allocated PDI->NAME
6763 field. NULL is returned if no prefix is necessary. */
15d034d0 6764static const char *
72bf9492
DJ
6765partial_die_parent_scope (struct partial_die_info *pdi,
6766 struct dwarf2_cu *cu)
6767{
15d034d0 6768 const char *grandparent_scope;
72bf9492 6769 struct partial_die_info *parent, *real_pdi;
91c24f0a 6770
72bf9492
DJ
6771 /* We need to look at our parent DIE; if we have a DW_AT_specification,
6772 then this means the parent of the specification DIE. */
6773
6774 real_pdi = pdi;
72bf9492 6775 while (real_pdi->has_specification)
36586728
TT
6776 real_pdi = find_partial_die (real_pdi->spec_offset,
6777 real_pdi->spec_is_dwz, cu);
72bf9492
DJ
6778
6779 parent = real_pdi->die_parent;
6780 if (parent == NULL)
6781 return NULL;
6782
6783 if (parent->scope_set)
6784 return parent->scope;
6785
6786 fixup_partial_die (parent, cu);
6787
10b3939b 6788 grandparent_scope = partial_die_parent_scope (parent, cu);
72bf9492 6789
acebe513
UW
6790 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
6791 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
6792 Work around this problem here. */
6793 if (cu->language == language_cplus
6e70227d 6794 && parent->tag == DW_TAG_namespace
acebe513
UW
6795 && strcmp (parent->name, "::") == 0
6796 && grandparent_scope == NULL)
6797 {
6798 parent->scope = NULL;
6799 parent->scope_set = 1;
6800 return NULL;
6801 }
6802
9c6c53f7
SA
6803 if (pdi->tag == DW_TAG_enumerator)
6804 /* Enumerators should not get the name of the enumeration as a prefix. */
6805 parent->scope = grandparent_scope;
6806 else if (parent->tag == DW_TAG_namespace
f55ee35c 6807 || parent->tag == DW_TAG_module
72bf9492
DJ
6808 || parent->tag == DW_TAG_structure_type
6809 || parent->tag == DW_TAG_class_type
680b30c7 6810 || parent->tag == DW_TAG_interface_type
ceeb3d5a
TT
6811 || parent->tag == DW_TAG_union_type
6812 || parent->tag == DW_TAG_enumeration_type)
72bf9492
DJ
6813 {
6814 if (grandparent_scope == NULL)
6815 parent->scope = parent->name;
6816 else
3e43a32a
MS
6817 parent->scope = typename_concat (&cu->comp_unit_obstack,
6818 grandparent_scope,
f55ee35c 6819 parent->name, 0, cu);
72bf9492 6820 }
72bf9492
DJ
6821 else
6822 {
6823 /* FIXME drow/2004-04-01: What should we be doing with
6824 function-local names? For partial symbols, we should probably be
6825 ignoring them. */
6826 complaint (&symfile_complaints,
e2e0b3e5 6827 _("unhandled containing DIE tag %d for DIE at %d"),
b64f50a1 6828 parent->tag, pdi->offset.sect_off);
72bf9492 6829 parent->scope = grandparent_scope;
c906108c
SS
6830 }
6831
72bf9492
DJ
6832 parent->scope_set = 1;
6833 return parent->scope;
6834}
6835
6836/* Return the fully scoped name associated with PDI, from compilation unit
6837 CU. The result will be allocated with malloc. */
4568ecf9 6838
72bf9492
DJ
6839static char *
6840partial_die_full_name (struct partial_die_info *pdi,
6841 struct dwarf2_cu *cu)
6842{
15d034d0 6843 const char *parent_scope;
72bf9492 6844
98bfdba5
PA
6845 /* If this is a template instantiation, we can not work out the
6846 template arguments from partial DIEs. So, unfortunately, we have
6847 to go through the full DIEs. At least any work we do building
6848 types here will be reused if full symbols are loaded later. */
6849 if (pdi->has_template_arguments)
6850 {
6851 fixup_partial_die (pdi, cu);
6852
6853 if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
6854 {
6855 struct die_info *die;
6856 struct attribute attr;
6857 struct dwarf2_cu *ref_cu = cu;
6858
b64f50a1 6859 /* DW_FORM_ref_addr is using section offset. */
98bfdba5
PA
6860 attr.name = 0;
6861 attr.form = DW_FORM_ref_addr;
4568ecf9 6862 attr.u.unsnd = pdi->offset.sect_off;
98bfdba5
PA
6863 die = follow_die_ref (NULL, &attr, &ref_cu);
6864
6865 return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
6866 }
6867 }
6868
72bf9492
DJ
6869 parent_scope = partial_die_parent_scope (pdi, cu);
6870 if (parent_scope == NULL)
6871 return NULL;
6872 else
f55ee35c 6873 return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
c906108c
SS
6874}
6875
6876static void
72bf9492 6877add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
c906108c 6878{
e7c27a73 6879 struct objfile *objfile = cu->objfile;
3e29f34a 6880 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c 6881 CORE_ADDR addr = 0;
15d034d0 6882 const char *actual_name = NULL;
e142c38c 6883 CORE_ADDR baseaddr;
15d034d0 6884 char *built_actual_name;
e142c38c
DJ
6885
6886 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 6887
15d034d0
TT
6888 built_actual_name = partial_die_full_name (pdi, cu);
6889 if (built_actual_name != NULL)
6890 actual_name = built_actual_name;
63d06c5c 6891
72bf9492
DJ
6892 if (actual_name == NULL)
6893 actual_name = pdi->name;
6894
c906108c
SS
6895 switch (pdi->tag)
6896 {
6897 case DW_TAG_subprogram:
3e29f34a 6898 addr = gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr);
2cfa0c8d 6899 if (pdi->is_external || cu->language == language_ada)
c906108c 6900 {
2cfa0c8d
JB
6901 /* brobecker/2007-12-26: Normally, only "external" DIEs are part
6902 of the global scope. But in Ada, we want to be able to access
6903 nested procedures globally. So all Ada subprograms are stored
6904 in the global scope. */
3e29f34a
MR
6905 /* prim_record_minimal_symbol (actual_name, addr, mst_text,
6906 objfile); */
f47fb265 6907 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6908 built_actual_name != NULL,
f47fb265
MS
6909 VAR_DOMAIN, LOC_BLOCK,
6910 &objfile->global_psymbols,
3e29f34a 6911 0, addr, cu->language, objfile);
c906108c
SS
6912 }
6913 else
6914 {
3e29f34a
MR
6915 /* prim_record_minimal_symbol (actual_name, addr, mst_file_text,
6916 objfile); */
f47fb265 6917 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6918 built_actual_name != NULL,
f47fb265
MS
6919 VAR_DOMAIN, LOC_BLOCK,
6920 &objfile->static_psymbols,
3e29f34a 6921 0, addr, cu->language, objfile);
c906108c
SS
6922 }
6923 break;
72929c62
JB
6924 case DW_TAG_constant:
6925 {
6926 struct psymbol_allocation_list *list;
6927
6928 if (pdi->is_external)
6929 list = &objfile->global_psymbols;
6930 else
6931 list = &objfile->static_psymbols;
f47fb265 6932 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6933 built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
f47fb265 6934 list, 0, 0, cu->language, objfile);
72929c62
JB
6935 }
6936 break;
c906108c 6937 case DW_TAG_variable:
95554aad
TT
6938 if (pdi->d.locdesc)
6939 addr = decode_locdesc (pdi->d.locdesc, cu);
caac4577 6940
95554aad 6941 if (pdi->d.locdesc
caac4577
JG
6942 && addr == 0
6943 && !dwarf2_per_objfile->has_section_at_zero)
6944 {
6945 /* A global or static variable may also have been stripped
6946 out by the linker if unused, in which case its address
6947 will be nullified; do not add such variables into partial
6948 symbol table then. */
6949 }
6950 else if (pdi->is_external)
c906108c
SS
6951 {
6952 /* Global Variable.
6953 Don't enter into the minimal symbol tables as there is
6954 a minimal symbol table entry from the ELF symbols already.
6955 Enter into partial symbol table if it has a location
6956 descriptor or a type.
6957 If the location descriptor is missing, new_symbol will create
6958 a LOC_UNRESOLVED symbol, the address of the variable will then
6959 be determined from the minimal symbol table whenever the variable
6960 is referenced.
6961 The address for the partial symbol table entry is not
6962 used by GDB, but it comes in handy for debugging partial symbol
6963 table building. */
6964
95554aad 6965 if (pdi->d.locdesc || pdi->has_type)
f47fb265 6966 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6967 built_actual_name != NULL,
f47fb265
MS
6968 VAR_DOMAIN, LOC_STATIC,
6969 &objfile->global_psymbols,
6970 0, addr + baseaddr,
6971 cu->language, objfile);
c906108c
SS
6972 }
6973 else
6974 {
ff908ebf
AW
6975 int has_loc = pdi->d.locdesc != NULL;
6976
6977 /* Static Variable. Skip symbols whose value we cannot know (those
6978 without location descriptors or constant values). */
6979 if (!has_loc && !pdi->has_const_value)
decbce07 6980 {
15d034d0 6981 xfree (built_actual_name);
decbce07
MS
6982 return;
6983 }
ff908ebf 6984
f47fb265 6985 /* prim_record_minimal_symbol (actual_name, addr + baseaddr,
c5aa993b 6986 mst_file_data, objfile); */
f47fb265 6987 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6988 built_actual_name != NULL,
f47fb265
MS
6989 VAR_DOMAIN, LOC_STATIC,
6990 &objfile->static_psymbols,
ff908ebf
AW
6991 0,
6992 has_loc ? addr + baseaddr : (CORE_ADDR) 0,
f47fb265 6993 cu->language, objfile);
c906108c
SS
6994 }
6995 break;
6996 case DW_TAG_typedef:
6997 case DW_TAG_base_type:
a02abb62 6998 case DW_TAG_subrange_type:
38d518c9 6999 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7000 built_actual_name != NULL,
176620f1 7001 VAR_DOMAIN, LOC_TYPEDEF,
c906108c 7002 &objfile->static_psymbols,
e142c38c 7003 0, (CORE_ADDR) 0, cu->language, objfile);
c906108c 7004 break;
74921315 7005 case DW_TAG_imported_declaration:
72bf9492
DJ
7006 case DW_TAG_namespace:
7007 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7008 built_actual_name != NULL,
72bf9492
DJ
7009 VAR_DOMAIN, LOC_TYPEDEF,
7010 &objfile->global_psymbols,
7011 0, (CORE_ADDR) 0, cu->language, objfile);
7012 break;
530e8392
KB
7013 case DW_TAG_module:
7014 add_psymbol_to_list (actual_name, strlen (actual_name),
7015 built_actual_name != NULL,
7016 MODULE_DOMAIN, LOC_TYPEDEF,
7017 &objfile->global_psymbols,
7018 0, (CORE_ADDR) 0, cu->language, objfile);
7019 break;
c906108c 7020 case DW_TAG_class_type:
680b30c7 7021 case DW_TAG_interface_type:
c906108c
SS
7022 case DW_TAG_structure_type:
7023 case DW_TAG_union_type:
7024 case DW_TAG_enumeration_type:
fa4028e9
JB
7025 /* Skip external references. The DWARF standard says in the section
7026 about "Structure, Union, and Class Type Entries": "An incomplete
7027 structure, union or class type is represented by a structure,
7028 union or class entry that does not have a byte size attribute
7029 and that has a DW_AT_declaration attribute." */
7030 if (!pdi->has_byte_size && pdi->is_declaration)
decbce07 7031 {
15d034d0 7032 xfree (built_actual_name);
decbce07
MS
7033 return;
7034 }
fa4028e9 7035
63d06c5c
DC
7036 /* NOTE: carlton/2003-10-07: See comment in new_symbol about
7037 static vs. global. */
38d518c9 7038 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7039 built_actual_name != NULL,
176620f1 7040 STRUCT_DOMAIN, LOC_TYPEDEF,
987504bb
JJ
7041 (cu->language == language_cplus
7042 || cu->language == language_java)
63d06c5c
DC
7043 ? &objfile->global_psymbols
7044 : &objfile->static_psymbols,
e142c38c 7045 0, (CORE_ADDR) 0, cu->language, objfile);
c906108c 7046
c906108c
SS
7047 break;
7048 case DW_TAG_enumerator:
38d518c9 7049 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7050 built_actual_name != NULL,
176620f1 7051 VAR_DOMAIN, LOC_CONST,
987504bb
JJ
7052 (cu->language == language_cplus
7053 || cu->language == language_java)
f6fe98ef
DJ
7054 ? &objfile->global_psymbols
7055 : &objfile->static_psymbols,
e142c38c 7056 0, (CORE_ADDR) 0, cu->language, objfile);
c906108c
SS
7057 break;
7058 default:
7059 break;
7060 }
5c4e30ca 7061
15d034d0 7062 xfree (built_actual_name);
c906108c
SS
7063}
7064
5c4e30ca
DC
7065/* Read a partial die corresponding to a namespace; also, add a symbol
7066 corresponding to that namespace to the symbol table. NAMESPACE is
7067 the name of the enclosing namespace. */
91c24f0a 7068
72bf9492
DJ
7069static void
7070add_partial_namespace (struct partial_die_info *pdi,
91c24f0a 7071 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 7072 int set_addrmap, struct dwarf2_cu *cu)
91c24f0a 7073{
72bf9492 7074 /* Add a symbol for the namespace. */
e7c27a73 7075
72bf9492 7076 add_partial_symbol (pdi, cu);
5c4e30ca
DC
7077
7078 /* Now scan partial symbols in that namespace. */
7079
91c24f0a 7080 if (pdi->has_children)
cdc07690 7081 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
91c24f0a
DC
7082}
7083
5d7cb8df
JK
7084/* Read a partial die corresponding to a Fortran module. */
7085
7086static void
7087add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
cdc07690 7088 CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
5d7cb8df 7089{
530e8392
KB
7090 /* Add a symbol for the namespace. */
7091
7092 add_partial_symbol (pdi, cu);
7093
f55ee35c 7094 /* Now scan partial symbols in that module. */
5d7cb8df
JK
7095
7096 if (pdi->has_children)
cdc07690 7097 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
5d7cb8df
JK
7098}
7099
bc30ff58
JB
7100/* Read a partial die corresponding to a subprogram and create a partial
7101 symbol for that subprogram. When the CU language allows it, this
7102 routine also defines a partial symbol for each nested subprogram
cdc07690 7103 that this subprogram contains. If SET_ADDRMAP is true, record the
428fc5fc
YQ
7104 covered ranges in the addrmap. Set *LOWPC and *HIGHPC to the lowest
7105 and highest PC values found in PDI.
6e70227d 7106
cdc07690
YQ
7107 PDI may also be a lexical block, in which case we simply search
7108 recursively for subprograms defined inside that lexical block.
bc30ff58
JB
7109 Again, this is only performed when the CU language allows this
7110 type of definitions. */
7111
7112static void
7113add_partial_subprogram (struct partial_die_info *pdi,
7114 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 7115 int set_addrmap, struct dwarf2_cu *cu)
bc30ff58
JB
7116{
7117 if (pdi->tag == DW_TAG_subprogram)
7118 {
7119 if (pdi->has_pc_info)
7120 {
7121 if (pdi->lowpc < *lowpc)
7122 *lowpc = pdi->lowpc;
7123 if (pdi->highpc > *highpc)
7124 *highpc = pdi->highpc;
cdc07690 7125 if (set_addrmap)
5734ee8b 7126 {
5734ee8b 7127 struct objfile *objfile = cu->objfile;
3e29f34a
MR
7128 struct gdbarch *gdbarch = get_objfile_arch (objfile);
7129 CORE_ADDR baseaddr;
7130 CORE_ADDR highpc;
7131 CORE_ADDR lowpc;
5734ee8b
DJ
7132
7133 baseaddr = ANOFFSET (objfile->section_offsets,
7134 SECT_OFF_TEXT (objfile));
3e29f34a
MR
7135 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7136 pdi->lowpc + baseaddr);
7137 highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7138 pdi->highpc + baseaddr);
7139 addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
9291a0cd 7140 cu->per_cu->v.psymtab);
5734ee8b 7141 }
481860b3
GB
7142 }
7143
7144 if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
7145 {
bc30ff58 7146 if (!pdi->is_declaration)
e8d05480
JB
7147 /* Ignore subprogram DIEs that do not have a name, they are
7148 illegal. Do not emit a complaint at this point, we will
7149 do so when we convert this psymtab into a symtab. */
7150 if (pdi->name)
7151 add_partial_symbol (pdi, cu);
bc30ff58
JB
7152 }
7153 }
6e70227d 7154
bc30ff58
JB
7155 if (! pdi->has_children)
7156 return;
7157
7158 if (cu->language == language_ada)
7159 {
7160 pdi = pdi->die_child;
7161 while (pdi != NULL)
7162 {
7163 fixup_partial_die (pdi, cu);
7164 if (pdi->tag == DW_TAG_subprogram
7165 || pdi->tag == DW_TAG_lexical_block)
cdc07690 7166 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
bc30ff58
JB
7167 pdi = pdi->die_sibling;
7168 }
7169 }
7170}
7171
91c24f0a
DC
7172/* Read a partial die corresponding to an enumeration type. */
7173
72bf9492
DJ
7174static void
7175add_partial_enumeration (struct partial_die_info *enum_pdi,
7176 struct dwarf2_cu *cu)
91c24f0a 7177{
72bf9492 7178 struct partial_die_info *pdi;
91c24f0a
DC
7179
7180 if (enum_pdi->name != NULL)
72bf9492
DJ
7181 add_partial_symbol (enum_pdi, cu);
7182
7183 pdi = enum_pdi->die_child;
7184 while (pdi)
91c24f0a 7185 {
72bf9492 7186 if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
e2e0b3e5 7187 complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
91c24f0a 7188 else
72bf9492
DJ
7189 add_partial_symbol (pdi, cu);
7190 pdi = pdi->die_sibling;
91c24f0a 7191 }
91c24f0a
DC
7192}
7193
6caca83c
CC
7194/* Return the initial uleb128 in the die at INFO_PTR. */
7195
7196static unsigned int
d521ce57 7197peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
6caca83c
CC
7198{
7199 unsigned int bytes_read;
7200
7201 return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7202}
7203
4bb7a0a7
DJ
7204/* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
7205 Return the corresponding abbrev, or NULL if the number is zero (indicating
7206 an empty DIE). In either case *BYTES_READ will be set to the length of
7207 the initial number. */
7208
7209static struct abbrev_info *
d521ce57 7210peek_die_abbrev (const gdb_byte *info_ptr, unsigned int *bytes_read,
891d2f0b 7211 struct dwarf2_cu *cu)
4bb7a0a7
DJ
7212{
7213 bfd *abfd = cu->objfile->obfd;
7214 unsigned int abbrev_number;
7215 struct abbrev_info *abbrev;
7216
7217 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
7218
7219 if (abbrev_number == 0)
7220 return NULL;
7221
433df2d4 7222 abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
4bb7a0a7
DJ
7223 if (!abbrev)
7224 {
422b9917
DE
7225 error (_("Dwarf Error: Could not find abbrev number %d in %s"
7226 " at offset 0x%x [in module %s]"),
7227 abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
7228 cu->header.offset.sect_off, bfd_get_filename (abfd));
4bb7a0a7
DJ
7229 }
7230
7231 return abbrev;
7232}
7233
93311388
DE
7234/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7235 Returns a pointer to the end of a series of DIEs, terminated by an empty
4bb7a0a7
DJ
7236 DIE. Any children of the skipped DIEs will also be skipped. */
7237
d521ce57
TT
7238static const gdb_byte *
7239skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
4bb7a0a7 7240{
dee91e82 7241 struct dwarf2_cu *cu = reader->cu;
4bb7a0a7
DJ
7242 struct abbrev_info *abbrev;
7243 unsigned int bytes_read;
7244
7245 while (1)
7246 {
7247 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
7248 if (abbrev == NULL)
7249 return info_ptr + bytes_read;
7250 else
dee91e82 7251 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
4bb7a0a7
DJ
7252 }
7253}
7254
93311388
DE
7255/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7256 INFO_PTR should point just after the initial uleb128 of a DIE, and the
4bb7a0a7
DJ
7257 abbrev corresponding to that skipped uleb128 should be passed in
7258 ABBREV. Returns a pointer to this DIE's sibling, skipping any
7259 children. */
7260
d521ce57
TT
7261static const gdb_byte *
7262skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
dee91e82 7263 struct abbrev_info *abbrev)
4bb7a0a7
DJ
7264{
7265 unsigned int bytes_read;
7266 struct attribute attr;
dee91e82
DE
7267 bfd *abfd = reader->abfd;
7268 struct dwarf2_cu *cu = reader->cu;
d521ce57 7269 const gdb_byte *buffer = reader->buffer;
f664829e 7270 const gdb_byte *buffer_end = reader->buffer_end;
d521ce57 7271 const gdb_byte *start_info_ptr = info_ptr;
4bb7a0a7
DJ
7272 unsigned int form, i;
7273
7274 for (i = 0; i < abbrev->num_attrs; i++)
7275 {
7276 /* The only abbrev we care about is DW_AT_sibling. */
7277 if (abbrev->attrs[i].name == DW_AT_sibling)
7278 {
dee91e82 7279 read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
4bb7a0a7 7280 if (attr.form == DW_FORM_ref_addr)
3e43a32a
MS
7281 complaint (&symfile_complaints,
7282 _("ignoring absolute DW_AT_sibling"));
4bb7a0a7 7283 else
b9502d3f
WN
7284 {
7285 unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
7286 const gdb_byte *sibling_ptr = buffer + off;
7287
7288 if (sibling_ptr < info_ptr)
7289 complaint (&symfile_complaints,
7290 _("DW_AT_sibling points backwards"));
22869d73
KS
7291 else if (sibling_ptr > reader->buffer_end)
7292 dwarf2_section_buffer_overflow_complaint (reader->die_section);
b9502d3f
WN
7293 else
7294 return sibling_ptr;
7295 }
4bb7a0a7
DJ
7296 }
7297
7298 /* If it isn't DW_AT_sibling, skip this attribute. */
7299 form = abbrev->attrs[i].form;
7300 skip_attribute:
7301 switch (form)
7302 {
4bb7a0a7 7303 case DW_FORM_ref_addr:
ae411497
TT
7304 /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
7305 and later it is offset sized. */
7306 if (cu->header.version == 2)
7307 info_ptr += cu->header.addr_size;
7308 else
7309 info_ptr += cu->header.offset_size;
7310 break;
36586728
TT
7311 case DW_FORM_GNU_ref_alt:
7312 info_ptr += cu->header.offset_size;
7313 break;
ae411497 7314 case DW_FORM_addr:
4bb7a0a7
DJ
7315 info_ptr += cu->header.addr_size;
7316 break;
7317 case DW_FORM_data1:
7318 case DW_FORM_ref1:
7319 case DW_FORM_flag:
7320 info_ptr += 1;
7321 break;
2dc7f7b3
TT
7322 case DW_FORM_flag_present:
7323 break;
4bb7a0a7
DJ
7324 case DW_FORM_data2:
7325 case DW_FORM_ref2:
7326 info_ptr += 2;
7327 break;
7328 case DW_FORM_data4:
7329 case DW_FORM_ref4:
7330 info_ptr += 4;
7331 break;
7332 case DW_FORM_data8:
7333 case DW_FORM_ref8:
55f1336d 7334 case DW_FORM_ref_sig8:
4bb7a0a7
DJ
7335 info_ptr += 8;
7336 break;
7337 case DW_FORM_string:
9b1c24c8 7338 read_direct_string (abfd, info_ptr, &bytes_read);
4bb7a0a7
DJ
7339 info_ptr += bytes_read;
7340 break;
2dc7f7b3 7341 case DW_FORM_sec_offset:
4bb7a0a7 7342 case DW_FORM_strp:
36586728 7343 case DW_FORM_GNU_strp_alt:
4bb7a0a7
DJ
7344 info_ptr += cu->header.offset_size;
7345 break;
2dc7f7b3 7346 case DW_FORM_exprloc:
4bb7a0a7
DJ
7347 case DW_FORM_block:
7348 info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7349 info_ptr += bytes_read;
7350 break;
7351 case DW_FORM_block1:
7352 info_ptr += 1 + read_1_byte (abfd, info_ptr);
7353 break;
7354 case DW_FORM_block2:
7355 info_ptr += 2 + read_2_bytes (abfd, info_ptr);
7356 break;
7357 case DW_FORM_block4:
7358 info_ptr += 4 + read_4_bytes (abfd, info_ptr);
7359 break;
7360 case DW_FORM_sdata:
7361 case DW_FORM_udata:
7362 case DW_FORM_ref_udata:
3019eac3
DE
7363 case DW_FORM_GNU_addr_index:
7364 case DW_FORM_GNU_str_index:
d521ce57 7365 info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
4bb7a0a7
DJ
7366 break;
7367 case DW_FORM_indirect:
7368 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7369 info_ptr += bytes_read;
7370 /* We need to continue parsing from here, so just go back to
7371 the top. */
7372 goto skip_attribute;
7373
7374 default:
3e43a32a
MS
7375 error (_("Dwarf Error: Cannot handle %s "
7376 "in DWARF reader [in module %s]"),
4bb7a0a7
DJ
7377 dwarf_form_name (form),
7378 bfd_get_filename (abfd));
7379 }
7380 }
7381
7382 if (abbrev->has_children)
dee91e82 7383 return skip_children (reader, info_ptr);
4bb7a0a7
DJ
7384 else
7385 return info_ptr;
7386}
7387
93311388 7388/* Locate ORIG_PDI's sibling.
dee91e82 7389 INFO_PTR should point to the start of the next DIE after ORIG_PDI. */
91c24f0a 7390
d521ce57 7391static const gdb_byte *
dee91e82
DE
7392locate_pdi_sibling (const struct die_reader_specs *reader,
7393 struct partial_die_info *orig_pdi,
d521ce57 7394 const gdb_byte *info_ptr)
91c24f0a
DC
7395{
7396 /* Do we know the sibling already? */
72bf9492 7397
91c24f0a
DC
7398 if (orig_pdi->sibling)
7399 return orig_pdi->sibling;
7400
7401 /* Are there any children to deal with? */
7402
7403 if (!orig_pdi->has_children)
7404 return info_ptr;
7405
4bb7a0a7 7406 /* Skip the children the long way. */
91c24f0a 7407
dee91e82 7408 return skip_children (reader, info_ptr);
91c24f0a
DC
7409}
7410
257e7a09 7411/* Expand this partial symbol table into a full symbol table. SELF is
442e4d9c 7412 not NULL. */
c906108c
SS
7413
7414static void
257e7a09
YQ
7415dwarf2_read_symtab (struct partial_symtab *self,
7416 struct objfile *objfile)
c906108c 7417{
257e7a09 7418 if (self->readin)
c906108c 7419 {
442e4d9c 7420 warning (_("bug: psymtab for %s is already read in."),
257e7a09 7421 self->filename);
442e4d9c
YQ
7422 }
7423 else
7424 {
7425 if (info_verbose)
c906108c 7426 {
442e4d9c 7427 printf_filtered (_("Reading in symbols for %s..."),
257e7a09 7428 self->filename);
442e4d9c 7429 gdb_flush (gdb_stdout);
c906108c 7430 }
c906108c 7431
442e4d9c
YQ
7432 /* Restore our global data. */
7433 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
10b3939b 7434
442e4d9c
YQ
7435 /* If this psymtab is constructed from a debug-only objfile, the
7436 has_section_at_zero flag will not necessarily be correct. We
7437 can get the correct value for this flag by looking at the data
7438 associated with the (presumably stripped) associated objfile. */
7439 if (objfile->separate_debug_objfile_backlink)
7440 {
7441 struct dwarf2_per_objfile *dpo_backlink
7442 = objfile_data (objfile->separate_debug_objfile_backlink,
7443 dwarf2_objfile_data_key);
9a619af0 7444
442e4d9c
YQ
7445 dwarf2_per_objfile->has_section_at_zero
7446 = dpo_backlink->has_section_at_zero;
7447 }
b2ab525c 7448
442e4d9c 7449 dwarf2_per_objfile->reading_partial_symbols = 0;
98bfdba5 7450
257e7a09 7451 psymtab_to_symtab_1 (self);
c906108c 7452
442e4d9c
YQ
7453 /* Finish up the debug error message. */
7454 if (info_verbose)
7455 printf_filtered (_("done.\n"));
c906108c 7456 }
95554aad
TT
7457
7458 process_cu_includes ();
c906108c 7459}
9cdd5dbd
DE
7460\f
7461/* Reading in full CUs. */
c906108c 7462
10b3939b
DJ
7463/* Add PER_CU to the queue. */
7464
7465static void
95554aad
TT
7466queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
7467 enum language pretend_language)
10b3939b
DJ
7468{
7469 struct dwarf2_queue_item *item;
7470
7471 per_cu->queued = 1;
7472 item = xmalloc (sizeof (*item));
7473 item->per_cu = per_cu;
95554aad 7474 item->pretend_language = pretend_language;
10b3939b
DJ
7475 item->next = NULL;
7476
7477 if (dwarf2_queue == NULL)
7478 dwarf2_queue = item;
7479 else
7480 dwarf2_queue_tail->next = item;
7481
7482 dwarf2_queue_tail = item;
7483}
7484
89e63ee4
DE
7485/* If PER_CU is not yet queued, add it to the queue.
7486 If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
7487 dependency.
0907af0c 7488 The result is non-zero if PER_CU was queued, otherwise the result is zero
69d751e3
DE
7489 meaning either PER_CU is already queued or it is already loaded.
7490
7491 N.B. There is an invariant here that if a CU is queued then it is loaded.
7492 The caller is required to load PER_CU if we return non-zero. */
0907af0c
DE
7493
7494static int
89e63ee4 7495maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
0907af0c
DE
7496 struct dwarf2_per_cu_data *per_cu,
7497 enum language pretend_language)
7498{
7499 /* We may arrive here during partial symbol reading, if we need full
7500 DIEs to process an unusual case (e.g. template arguments). Do
7501 not queue PER_CU, just tell our caller to load its DIEs. */
7502 if (dwarf2_per_objfile->reading_partial_symbols)
7503 {
7504 if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
7505 return 1;
7506 return 0;
7507 }
7508
7509 /* Mark the dependence relation so that we don't flush PER_CU
7510 too early. */
89e63ee4
DE
7511 if (dependent_cu != NULL)
7512 dwarf2_add_dependence (dependent_cu, per_cu);
0907af0c
DE
7513
7514 /* If it's already on the queue, we have nothing to do. */
7515 if (per_cu->queued)
7516 return 0;
7517
7518 /* If the compilation unit is already loaded, just mark it as
7519 used. */
7520 if (per_cu->cu != NULL)
7521 {
7522 per_cu->cu->last_used = 0;
7523 return 0;
7524 }
7525
7526 /* Add it to the queue. */
7527 queue_comp_unit (per_cu, pretend_language);
7528
7529 return 1;
7530}
7531
10b3939b
DJ
7532/* Process the queue. */
7533
7534static void
a0f42c21 7535process_queue (void)
10b3939b
DJ
7536{
7537 struct dwarf2_queue_item *item, *next_item;
7538
b4f54984 7539 if (dwarf_read_debug)
45cfd468
DE
7540 {
7541 fprintf_unfiltered (gdb_stdlog,
7542 "Expanding one or more symtabs of objfile %s ...\n",
4262abfb 7543 objfile_name (dwarf2_per_objfile->objfile));
45cfd468
DE
7544 }
7545
03dd20cc
DJ
7546 /* The queue starts out with one item, but following a DIE reference
7547 may load a new CU, adding it to the end of the queue. */
10b3939b
DJ
7548 for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
7549 {
cc12ce38
DE
7550 if ((dwarf2_per_objfile->using_index
7551 ? !item->per_cu->v.quick->compunit_symtab
7552 : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
7553 /* Skip dummy CUs. */
7554 && item->per_cu->cu != NULL)
f4dc4d17
DE
7555 {
7556 struct dwarf2_per_cu_data *per_cu = item->per_cu;
73be47f5 7557 unsigned int debug_print_threshold;
247f5c4f 7558 char buf[100];
f4dc4d17 7559
247f5c4f 7560 if (per_cu->is_debug_types)
f4dc4d17 7561 {
247f5c4f
DE
7562 struct signatured_type *sig_type =
7563 (struct signatured_type *) per_cu;
7564
7565 sprintf (buf, "TU %s at offset 0x%x",
73be47f5
DE
7566 hex_string (sig_type->signature),
7567 per_cu->offset.sect_off);
7568 /* There can be 100s of TUs.
7569 Only print them in verbose mode. */
7570 debug_print_threshold = 2;
f4dc4d17 7571 }
247f5c4f 7572 else
73be47f5
DE
7573 {
7574 sprintf (buf, "CU at offset 0x%x", per_cu->offset.sect_off);
7575 debug_print_threshold = 1;
7576 }
247f5c4f 7577
b4f54984 7578 if (dwarf_read_debug >= debug_print_threshold)
247f5c4f 7579 fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
f4dc4d17
DE
7580
7581 if (per_cu->is_debug_types)
7582 process_full_type_unit (per_cu, item->pretend_language);
7583 else
7584 process_full_comp_unit (per_cu, item->pretend_language);
7585
b4f54984 7586 if (dwarf_read_debug >= debug_print_threshold)
247f5c4f 7587 fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
f4dc4d17 7588 }
10b3939b
DJ
7589
7590 item->per_cu->queued = 0;
7591 next_item = item->next;
7592 xfree (item);
7593 }
7594
7595 dwarf2_queue_tail = NULL;
45cfd468 7596
b4f54984 7597 if (dwarf_read_debug)
45cfd468
DE
7598 {
7599 fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
4262abfb 7600 objfile_name (dwarf2_per_objfile->objfile));
45cfd468 7601 }
10b3939b
DJ
7602}
7603
7604/* Free all allocated queue entries. This function only releases anything if
7605 an error was thrown; if the queue was processed then it would have been
7606 freed as we went along. */
7607
7608static void
7609dwarf2_release_queue (void *dummy)
7610{
7611 struct dwarf2_queue_item *item, *last;
7612
7613 item = dwarf2_queue;
7614 while (item)
7615 {
7616 /* Anything still marked queued is likely to be in an
7617 inconsistent state, so discard it. */
7618 if (item->per_cu->queued)
7619 {
7620 if (item->per_cu->cu != NULL)
dee91e82 7621 free_one_cached_comp_unit (item->per_cu);
10b3939b
DJ
7622 item->per_cu->queued = 0;
7623 }
7624
7625 last = item;
7626 item = item->next;
7627 xfree (last);
7628 }
7629
7630 dwarf2_queue = dwarf2_queue_tail = NULL;
7631}
7632
7633/* Read in full symbols for PST, and anything it depends on. */
7634
c906108c 7635static void
fba45db2 7636psymtab_to_symtab_1 (struct partial_symtab *pst)
c906108c 7637{
10b3939b 7638 struct dwarf2_per_cu_data *per_cu;
aaa75496
JB
7639 int i;
7640
95554aad
TT
7641 if (pst->readin)
7642 return;
7643
aaa75496 7644 for (i = 0; i < pst->number_of_dependencies; i++)
95554aad
TT
7645 if (!pst->dependencies[i]->readin
7646 && pst->dependencies[i]->user == NULL)
aaa75496
JB
7647 {
7648 /* Inform about additional files that need to be read in. */
7649 if (info_verbose)
7650 {
a3f17187 7651 /* FIXME: i18n: Need to make this a single string. */
aaa75496
JB
7652 fputs_filtered (" ", gdb_stdout);
7653 wrap_here ("");
7654 fputs_filtered ("and ", gdb_stdout);
7655 wrap_here ("");
7656 printf_filtered ("%s...", pst->dependencies[i]->filename);
0963b4bd 7657 wrap_here (""); /* Flush output. */
aaa75496
JB
7658 gdb_flush (gdb_stdout);
7659 }
7660 psymtab_to_symtab_1 (pst->dependencies[i]);
7661 }
7662
e38df1d0 7663 per_cu = pst->read_symtab_private;
10b3939b
DJ
7664
7665 if (per_cu == NULL)
aaa75496
JB
7666 {
7667 /* It's an include file, no symbols to read for it.
7668 Everything is in the parent symtab. */
7669 pst->readin = 1;
7670 return;
7671 }
c906108c 7672
a0f42c21 7673 dw2_do_instantiate_symtab (per_cu);
10b3939b
DJ
7674}
7675
dee91e82
DE
7676/* Trivial hash function for die_info: the hash value of a DIE
7677 is its offset in .debug_info for this objfile. */
10b3939b 7678
dee91e82
DE
7679static hashval_t
7680die_hash (const void *item)
10b3939b 7681{
dee91e82 7682 const struct die_info *die = item;
6502dd73 7683
dee91e82
DE
7684 return die->offset.sect_off;
7685}
63d06c5c 7686
dee91e82
DE
7687/* Trivial comparison function for die_info structures: two DIEs
7688 are equal if they have the same offset. */
98bfdba5 7689
dee91e82
DE
7690static int
7691die_eq (const void *item_lhs, const void *item_rhs)
7692{
7693 const struct die_info *die_lhs = item_lhs;
7694 const struct die_info *die_rhs = item_rhs;
c906108c 7695
dee91e82
DE
7696 return die_lhs->offset.sect_off == die_rhs->offset.sect_off;
7697}
c906108c 7698
dee91e82
DE
7699/* die_reader_func for load_full_comp_unit.
7700 This is identical to read_signatured_type_reader,
7701 but is kept separate for now. */
c906108c 7702
dee91e82
DE
7703static void
7704load_full_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 7705 const gdb_byte *info_ptr,
dee91e82
DE
7706 struct die_info *comp_unit_die,
7707 int has_children,
7708 void *data)
7709{
7710 struct dwarf2_cu *cu = reader->cu;
95554aad 7711 enum language *language_ptr = data;
6caca83c 7712
dee91e82
DE
7713 gdb_assert (cu->die_hash == NULL);
7714 cu->die_hash =
7715 htab_create_alloc_ex (cu->header.length / 12,
7716 die_hash,
7717 die_eq,
7718 NULL,
7719 &cu->comp_unit_obstack,
7720 hashtab_obstack_allocate,
7721 dummy_obstack_deallocate);
e142c38c 7722
dee91e82
DE
7723 if (has_children)
7724 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
7725 &info_ptr, comp_unit_die);
7726 cu->dies = comp_unit_die;
7727 /* comp_unit_die is not stored in die_hash, no need. */
10b3939b
DJ
7728
7729 /* We try not to read any attributes in this function, because not
9cdd5dbd 7730 all CUs needed for references have been loaded yet, and symbol
10b3939b 7731 table processing isn't initialized. But we have to set the CU language,
dee91e82
DE
7732 or we won't be able to build types correctly.
7733 Similarly, if we do not read the producer, we can not apply
7734 producer-specific interpretation. */
95554aad 7735 prepare_one_comp_unit (cu, cu->dies, *language_ptr);
dee91e82 7736}
10b3939b 7737
dee91e82 7738/* Load the DIEs associated with PER_CU into memory. */
a6c727b2 7739
dee91e82 7740static void
95554aad
TT
7741load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
7742 enum language pretend_language)
dee91e82 7743{
3019eac3 7744 gdb_assert (! this_cu->is_debug_types);
c5b7e1cb 7745
f4dc4d17
DE
7746 init_cutu_and_read_dies (this_cu, NULL, 1, 1,
7747 load_full_comp_unit_reader, &pretend_language);
10b3939b
DJ
7748}
7749
3da10d80
KS
7750/* Add a DIE to the delayed physname list. */
7751
7752static void
7753add_to_method_list (struct type *type, int fnfield_index, int index,
7754 const char *name, struct die_info *die,
7755 struct dwarf2_cu *cu)
7756{
7757 struct delayed_method_info mi;
7758 mi.type = type;
7759 mi.fnfield_index = fnfield_index;
7760 mi.index = index;
7761 mi.name = name;
7762 mi.die = die;
7763 VEC_safe_push (delayed_method_info, cu->method_list, &mi);
7764}
7765
7766/* A cleanup for freeing the delayed method list. */
7767
7768static void
7769free_delayed_list (void *ptr)
7770{
7771 struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
7772 if (cu->method_list != NULL)
7773 {
7774 VEC_free (delayed_method_info, cu->method_list);
7775 cu->method_list = NULL;
7776 }
7777}
7778
7779/* Compute the physnames of any methods on the CU's method list.
7780
7781 The computation of method physnames is delayed in order to avoid the
7782 (bad) condition that one of the method's formal parameters is of an as yet
7783 incomplete type. */
7784
7785static void
7786compute_delayed_physnames (struct dwarf2_cu *cu)
7787{
7788 int i;
7789 struct delayed_method_info *mi;
7790 for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
7791 {
1d06ead6 7792 const char *physname;
3da10d80
KS
7793 struct fn_fieldlist *fn_flp
7794 = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
7d455152 7795 physname = dwarf2_physname (mi->name, mi->die, cu);
005e54bb
DE
7796 TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi->index)
7797 = physname ? physname : "";
3da10d80
KS
7798 }
7799}
7800
a766d390
DE
7801/* Go objects should be embedded in a DW_TAG_module DIE,
7802 and it's not clear if/how imported objects will appear.
7803 To keep Go support simple until that's worked out,
7804 go back through what we've read and create something usable.
7805 We could do this while processing each DIE, and feels kinda cleaner,
7806 but that way is more invasive.
7807 This is to, for example, allow the user to type "p var" or "b main"
7808 without having to specify the package name, and allow lookups
7809 of module.object to work in contexts that use the expression
7810 parser. */
7811
7812static void
7813fixup_go_packaging (struct dwarf2_cu *cu)
7814{
7815 char *package_name = NULL;
7816 struct pending *list;
7817 int i;
7818
7819 for (list = global_symbols; list != NULL; list = list->next)
7820 {
7821 for (i = 0; i < list->nsyms; ++i)
7822 {
7823 struct symbol *sym = list->symbol[i];
7824
7825 if (SYMBOL_LANGUAGE (sym) == language_go
7826 && SYMBOL_CLASS (sym) == LOC_BLOCK)
7827 {
7828 char *this_package_name = go_symbol_package_name (sym);
7829
7830 if (this_package_name == NULL)
7831 continue;
7832 if (package_name == NULL)
7833 package_name = this_package_name;
7834 else
7835 {
7836 if (strcmp (package_name, this_package_name) != 0)
7837 complaint (&symfile_complaints,
7838 _("Symtab %s has objects from two different Go packages: %s and %s"),
08be3fe3
DE
7839 (symbol_symtab (sym) != NULL
7840 ? symtab_to_filename_for_display
7841 (symbol_symtab (sym))
4262abfb 7842 : objfile_name (cu->objfile)),
a766d390
DE
7843 this_package_name, package_name);
7844 xfree (this_package_name);
7845 }
7846 }
7847 }
7848 }
7849
7850 if (package_name != NULL)
7851 {
7852 struct objfile *objfile = cu->objfile;
34a68019
TT
7853 const char *saved_package_name
7854 = obstack_copy0 (&objfile->per_bfd->storage_obstack,
7855 package_name,
7856 strlen (package_name));
a766d390 7857 struct type *type = init_type (TYPE_CODE_MODULE, 0, 0,
86f62fd7 7858 saved_package_name, objfile);
a766d390
DE
7859 struct symbol *sym;
7860
7861 TYPE_TAG_NAME (type) = TYPE_NAME (type);
7862
e623cf5d 7863 sym = allocate_symbol (objfile);
f85f34ed 7864 SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
86f62fd7
TT
7865 SYMBOL_SET_NAMES (sym, saved_package_name,
7866 strlen (saved_package_name), 0, objfile);
a766d390
DE
7867 /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
7868 e.g., "main" finds the "main" module and not C's main(). */
7869 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
f1e6e072 7870 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
a766d390
DE
7871 SYMBOL_TYPE (sym) = type;
7872
7873 add_symbol_to_list (sym, &global_symbols);
7874
7875 xfree (package_name);
7876 }
7877}
7878
95554aad
TT
7879/* Return the symtab for PER_CU. This works properly regardless of
7880 whether we're using the index or psymtabs. */
7881
43f3e411
DE
7882static struct compunit_symtab *
7883get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
95554aad
TT
7884{
7885 return (dwarf2_per_objfile->using_index
43f3e411
DE
7886 ? per_cu->v.quick->compunit_symtab
7887 : per_cu->v.psymtab->compunit_symtab);
95554aad
TT
7888}
7889
7890/* A helper function for computing the list of all symbol tables
7891 included by PER_CU. */
7892
7893static void
43f3e411 7894recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
ec94af83 7895 htab_t all_children, htab_t all_type_symtabs,
f9125b6c 7896 struct dwarf2_per_cu_data *per_cu,
43f3e411 7897 struct compunit_symtab *immediate_parent)
95554aad
TT
7898{
7899 void **slot;
7900 int ix;
43f3e411 7901 struct compunit_symtab *cust;
95554aad
TT
7902 struct dwarf2_per_cu_data *iter;
7903
7904 slot = htab_find_slot (all_children, per_cu, INSERT);
7905 if (*slot != NULL)
7906 {
7907 /* This inclusion and its children have been processed. */
7908 return;
7909 }
7910
7911 *slot = per_cu;
7912 /* Only add a CU if it has a symbol table. */
43f3e411
DE
7913 cust = get_compunit_symtab (per_cu);
7914 if (cust != NULL)
ec94af83
DE
7915 {
7916 /* If this is a type unit only add its symbol table if we haven't
7917 seen it yet (type unit per_cu's can share symtabs). */
7918 if (per_cu->is_debug_types)
7919 {
43f3e411 7920 slot = htab_find_slot (all_type_symtabs, cust, INSERT);
ec94af83
DE
7921 if (*slot == NULL)
7922 {
43f3e411
DE
7923 *slot = cust;
7924 VEC_safe_push (compunit_symtab_ptr, *result, cust);
7925 if (cust->user == NULL)
7926 cust->user = immediate_parent;
ec94af83
DE
7927 }
7928 }
7929 else
f9125b6c 7930 {
43f3e411
DE
7931 VEC_safe_push (compunit_symtab_ptr, *result, cust);
7932 if (cust->user == NULL)
7933 cust->user = immediate_parent;
f9125b6c 7934 }
ec94af83 7935 }
95554aad
TT
7936
7937 for (ix = 0;
796a7ff8 7938 VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
95554aad 7939 ++ix)
ec94af83
DE
7940 {
7941 recursively_compute_inclusions (result, all_children,
43f3e411 7942 all_type_symtabs, iter, cust);
ec94af83 7943 }
95554aad
TT
7944}
7945
43f3e411 7946/* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
95554aad
TT
7947 PER_CU. */
7948
7949static void
43f3e411 7950compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
95554aad 7951{
f4dc4d17
DE
7952 gdb_assert (! per_cu->is_debug_types);
7953
796a7ff8 7954 if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
95554aad
TT
7955 {
7956 int ix, len;
ec94af83 7957 struct dwarf2_per_cu_data *per_cu_iter;
43f3e411
DE
7958 struct compunit_symtab *compunit_symtab_iter;
7959 VEC (compunit_symtab_ptr) *result_symtabs = NULL;
ec94af83 7960 htab_t all_children, all_type_symtabs;
43f3e411 7961 struct compunit_symtab *cust = get_compunit_symtab (per_cu);
95554aad
TT
7962
7963 /* If we don't have a symtab, we can just skip this case. */
43f3e411 7964 if (cust == NULL)
95554aad
TT
7965 return;
7966
7967 all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7968 NULL, xcalloc, xfree);
ec94af83
DE
7969 all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7970 NULL, xcalloc, xfree);
95554aad
TT
7971
7972 for (ix = 0;
796a7ff8 7973 VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
ec94af83 7974 ix, per_cu_iter);
95554aad 7975 ++ix)
ec94af83
DE
7976 {
7977 recursively_compute_inclusions (&result_symtabs, all_children,
f9125b6c 7978 all_type_symtabs, per_cu_iter,
43f3e411 7979 cust);
ec94af83 7980 }
95554aad 7981
ec94af83 7982 /* Now we have a transitive closure of all the included symtabs. */
43f3e411
DE
7983 len = VEC_length (compunit_symtab_ptr, result_symtabs);
7984 cust->includes
95554aad 7985 = obstack_alloc (&dwarf2_per_objfile->objfile->objfile_obstack,
666fcf91 7986 (len + 1) * sizeof (struct compunit_symtab *));
95554aad 7987 for (ix = 0;
43f3e411
DE
7988 VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
7989 compunit_symtab_iter);
95554aad 7990 ++ix)
43f3e411
DE
7991 cust->includes[ix] = compunit_symtab_iter;
7992 cust->includes[len] = NULL;
95554aad 7993
43f3e411 7994 VEC_free (compunit_symtab_ptr, result_symtabs);
95554aad 7995 htab_delete (all_children);
ec94af83 7996 htab_delete (all_type_symtabs);
95554aad
TT
7997 }
7998}
7999
8000/* Compute the 'includes' field for the symtabs of all the CUs we just
8001 read. */
8002
8003static void
8004process_cu_includes (void)
8005{
8006 int ix;
8007 struct dwarf2_per_cu_data *iter;
8008
8009 for (ix = 0;
8010 VEC_iterate (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus,
8011 ix, iter);
8012 ++ix)
f4dc4d17
DE
8013 {
8014 if (! iter->is_debug_types)
43f3e411 8015 compute_compunit_symtab_includes (iter);
f4dc4d17 8016 }
95554aad
TT
8017
8018 VEC_free (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus);
8019}
8020
9cdd5dbd 8021/* Generate full symbol information for PER_CU, whose DIEs have
10b3939b
DJ
8022 already been loaded into memory. */
8023
8024static void
95554aad
TT
8025process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
8026 enum language pretend_language)
10b3939b 8027{
10b3939b 8028 struct dwarf2_cu *cu = per_cu->cu;
9291a0cd 8029 struct objfile *objfile = per_cu->objfile;
3e29f34a 8030 struct gdbarch *gdbarch = get_objfile_arch (objfile);
10b3939b 8031 CORE_ADDR lowpc, highpc;
43f3e411 8032 struct compunit_symtab *cust;
3da10d80 8033 struct cleanup *back_to, *delayed_list_cleanup;
10b3939b 8034 CORE_ADDR baseaddr;
4359dff1 8035 struct block *static_block;
3e29f34a 8036 CORE_ADDR addr;
10b3939b
DJ
8037
8038 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8039
10b3939b
DJ
8040 buildsym_init ();
8041 back_to = make_cleanup (really_free_pendings, NULL);
3da10d80 8042 delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
10b3939b
DJ
8043
8044 cu->list_in_scope = &file_symbols;
c906108c 8045
95554aad
TT
8046 cu->language = pretend_language;
8047 cu->language_defn = language_def (cu->language);
8048
c906108c 8049 /* Do line number decoding in read_file_scope () */
10b3939b 8050 process_die (cu->dies, cu);
c906108c 8051
a766d390
DE
8052 /* For now fudge the Go package. */
8053 if (cu->language == language_go)
8054 fixup_go_packaging (cu);
8055
3da10d80
KS
8056 /* Now that we have processed all the DIEs in the CU, all the types
8057 should be complete, and it should now be safe to compute all of the
8058 physnames. */
8059 compute_delayed_physnames (cu);
8060 do_cleanups (delayed_list_cleanup);
8061
fae299cd
DC
8062 /* Some compilers don't define a DW_AT_high_pc attribute for the
8063 compilation unit. If the DW_AT_high_pc is missing, synthesize
8064 it, by scanning the DIE's below the compilation unit. */
10b3939b 8065 get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
c906108c 8066
3e29f34a
MR
8067 addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
8068 static_block = end_symtab_get_static_block (addr, 0, 1);
4359dff1
JK
8069
8070 /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
8071 Also, DW_AT_ranges may record ranges not belonging to any child DIEs
8072 (such as virtual method tables). Record the ranges in STATIC_BLOCK's
8073 addrmap to help ensure it has an accurate map of pc values belonging to
8074 this comp unit. */
8075 dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
8076
43f3e411
DE
8077 cust = end_symtab_from_static_block (static_block,
8078 SECT_OFF_TEXT (objfile), 0);
c906108c 8079
43f3e411 8080 if (cust != NULL)
c906108c 8081 {
df15bd07 8082 int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
4632c0d0 8083
8be455d7
JK
8084 /* Set symtab language to language from DW_AT_language. If the
8085 compilation is from a C file generated by language preprocessors, do
8086 not set the language if it was already deduced by start_subfile. */
43f3e411
DE
8087 if (!(cu->language == language_c
8088 && COMPUNIT_FILETABS (cust)->language != language_c))
8089 COMPUNIT_FILETABS (cust)->language = cu->language;
8be455d7
JK
8090
8091 /* GCC-4.0 has started to support -fvar-tracking. GCC-3.x still can
8092 produce DW_AT_location with location lists but it can be possibly
ab260dad
JK
8093 invalid without -fvar-tracking. Still up to GCC-4.4.x incl. 4.4.0
8094 there were bugs in prologue debug info, fixed later in GCC-4.5
8095 by "unwind info for epilogues" patch (which is not directly related).
8be455d7
JK
8096
8097 For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
8098 needed, it would be wrong due to missing DW_AT_producer there.
8099
8100 Still one can confuse GDB by using non-standard GCC compilation
8101 options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
8102 */
ab260dad 8103 if (cu->has_loclist && gcc_4_minor >= 5)
43f3e411 8104 cust->locations_valid = 1;
e0d00bc7
JK
8105
8106 if (gcc_4_minor >= 5)
43f3e411 8107 cust->epilogue_unwind_valid = 1;
96408a79 8108
43f3e411 8109 cust->call_site_htab = cu->call_site_htab;
c906108c 8110 }
9291a0cd
TT
8111
8112 if (dwarf2_per_objfile->using_index)
43f3e411 8113 per_cu->v.quick->compunit_symtab = cust;
9291a0cd
TT
8114 else
8115 {
8116 struct partial_symtab *pst = per_cu->v.psymtab;
43f3e411 8117 pst->compunit_symtab = cust;
9291a0cd
TT
8118 pst->readin = 1;
8119 }
c906108c 8120
95554aad
TT
8121 /* Push it for inclusion processing later. */
8122 VEC_safe_push (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus, per_cu);
8123
c906108c 8124 do_cleanups (back_to);
f4dc4d17 8125}
45cfd468 8126
f4dc4d17
DE
8127/* Generate full symbol information for type unit PER_CU, whose DIEs have
8128 already been loaded into memory. */
8129
8130static void
8131process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
8132 enum language pretend_language)
8133{
8134 struct dwarf2_cu *cu = per_cu->cu;
8135 struct objfile *objfile = per_cu->objfile;
43f3e411 8136 struct compunit_symtab *cust;
f4dc4d17 8137 struct cleanup *back_to, *delayed_list_cleanup;
0186c6a7
DE
8138 struct signatured_type *sig_type;
8139
8140 gdb_assert (per_cu->is_debug_types);
8141 sig_type = (struct signatured_type *) per_cu;
f4dc4d17
DE
8142
8143 buildsym_init ();
8144 back_to = make_cleanup (really_free_pendings, NULL);
8145 delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
8146
8147 cu->list_in_scope = &file_symbols;
8148
8149 cu->language = pretend_language;
8150 cu->language_defn = language_def (cu->language);
8151
8152 /* The symbol tables are set up in read_type_unit_scope. */
8153 process_die (cu->dies, cu);
8154
8155 /* For now fudge the Go package. */
8156 if (cu->language == language_go)
8157 fixup_go_packaging (cu);
8158
8159 /* Now that we have processed all the DIEs in the CU, all the types
8160 should be complete, and it should now be safe to compute all of the
8161 physnames. */
8162 compute_delayed_physnames (cu);
8163 do_cleanups (delayed_list_cleanup);
8164
8165 /* TUs share symbol tables.
8166 If this is the first TU to use this symtab, complete the construction
094b34ac
DE
8167 of it with end_expandable_symtab. Otherwise, complete the addition of
8168 this TU's symbols to the existing symtab. */
43f3e411 8169 if (sig_type->type_unit_group->compunit_symtab == NULL)
45cfd468 8170 {
43f3e411
DE
8171 cust = end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
8172 sig_type->type_unit_group->compunit_symtab = cust;
f4dc4d17 8173
43f3e411 8174 if (cust != NULL)
f4dc4d17
DE
8175 {
8176 /* Set symtab language to language from DW_AT_language. If the
8177 compilation is from a C file generated by language preprocessors,
8178 do not set the language if it was already deduced by
8179 start_subfile. */
43f3e411
DE
8180 if (!(cu->language == language_c
8181 && COMPUNIT_FILETABS (cust)->language != language_c))
8182 COMPUNIT_FILETABS (cust)->language = cu->language;
f4dc4d17
DE
8183 }
8184 }
8185 else
8186 {
0ab9ce85 8187 augment_type_symtab ();
43f3e411 8188 cust = sig_type->type_unit_group->compunit_symtab;
f4dc4d17
DE
8189 }
8190
8191 if (dwarf2_per_objfile->using_index)
43f3e411 8192 per_cu->v.quick->compunit_symtab = cust;
f4dc4d17
DE
8193 else
8194 {
8195 struct partial_symtab *pst = per_cu->v.psymtab;
43f3e411 8196 pst->compunit_symtab = cust;
f4dc4d17 8197 pst->readin = 1;
45cfd468 8198 }
f4dc4d17
DE
8199
8200 do_cleanups (back_to);
c906108c
SS
8201}
8202
95554aad
TT
8203/* Process an imported unit DIE. */
8204
8205static void
8206process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
8207{
8208 struct attribute *attr;
8209
f4dc4d17
DE
8210 /* For now we don't handle imported units in type units. */
8211 if (cu->per_cu->is_debug_types)
8212 {
8213 error (_("Dwarf Error: DW_TAG_imported_unit is not"
8214 " supported in type units [in module %s]"),
4262abfb 8215 objfile_name (cu->objfile));
f4dc4d17
DE
8216 }
8217
95554aad
TT
8218 attr = dwarf2_attr (die, DW_AT_import, cu);
8219 if (attr != NULL)
8220 {
8221 struct dwarf2_per_cu_data *per_cu;
8222 struct symtab *imported_symtab;
8223 sect_offset offset;
36586728 8224 int is_dwz;
95554aad
TT
8225
8226 offset = dwarf2_get_ref_die_offset (attr);
36586728
TT
8227 is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
8228 per_cu = dwarf2_find_containing_comp_unit (offset, is_dwz, cu->objfile);
95554aad 8229
69d751e3 8230 /* If necessary, add it to the queue and load its DIEs. */
95554aad
TT
8231 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
8232 load_full_comp_unit (per_cu, cu->language);
8233
796a7ff8 8234 VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
95554aad
TT
8235 per_cu);
8236 }
8237}
8238
adde2bff
DE
8239/* Reset the in_process bit of a die. */
8240
8241static void
8242reset_die_in_process (void *arg)
8243{
8244 struct die_info *die = arg;
8c3cb9fa 8245
adde2bff
DE
8246 die->in_process = 0;
8247}
8248
c906108c
SS
8249/* Process a die and its children. */
8250
8251static void
e7c27a73 8252process_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 8253{
adde2bff
DE
8254 struct cleanup *in_process;
8255
8256 /* We should only be processing those not already in process. */
8257 gdb_assert (!die->in_process);
8258
8259 die->in_process = 1;
8260 in_process = make_cleanup (reset_die_in_process,die);
8261
c906108c
SS
8262 switch (die->tag)
8263 {
8264 case DW_TAG_padding:
8265 break;
8266 case DW_TAG_compile_unit:
95554aad 8267 case DW_TAG_partial_unit:
e7c27a73 8268 read_file_scope (die, cu);
c906108c 8269 break;
348e048f
DE
8270 case DW_TAG_type_unit:
8271 read_type_unit_scope (die, cu);
8272 break;
c906108c 8273 case DW_TAG_subprogram:
c906108c 8274 case DW_TAG_inlined_subroutine:
edb3359d 8275 read_func_scope (die, cu);
c906108c
SS
8276 break;
8277 case DW_TAG_lexical_block:
14898363
L
8278 case DW_TAG_try_block:
8279 case DW_TAG_catch_block:
e7c27a73 8280 read_lexical_block_scope (die, cu);
c906108c 8281 break;
96408a79
SA
8282 case DW_TAG_GNU_call_site:
8283 read_call_site_scope (die, cu);
8284 break;
c906108c 8285 case DW_TAG_class_type:
680b30c7 8286 case DW_TAG_interface_type:
c906108c
SS
8287 case DW_TAG_structure_type:
8288 case DW_TAG_union_type:
134d01f1 8289 process_structure_scope (die, cu);
c906108c
SS
8290 break;
8291 case DW_TAG_enumeration_type:
134d01f1 8292 process_enumeration_scope (die, cu);
c906108c 8293 break;
134d01f1 8294
f792889a
DJ
8295 /* These dies have a type, but processing them does not create
8296 a symbol or recurse to process the children. Therefore we can
8297 read them on-demand through read_type_die. */
c906108c 8298 case DW_TAG_subroutine_type:
72019c9c 8299 case DW_TAG_set_type:
c906108c 8300 case DW_TAG_array_type:
c906108c 8301 case DW_TAG_pointer_type:
c906108c 8302 case DW_TAG_ptr_to_member_type:
c906108c 8303 case DW_TAG_reference_type:
c906108c 8304 case DW_TAG_string_type:
c906108c 8305 break;
134d01f1 8306
c906108c 8307 case DW_TAG_base_type:
a02abb62 8308 case DW_TAG_subrange_type:
cb249c71 8309 case DW_TAG_typedef:
134d01f1
DJ
8310 /* Add a typedef symbol for the type definition, if it has a
8311 DW_AT_name. */
f792889a 8312 new_symbol (die, read_type_die (die, cu), cu);
a02abb62 8313 break;
c906108c 8314 case DW_TAG_common_block:
e7c27a73 8315 read_common_block (die, cu);
c906108c
SS
8316 break;
8317 case DW_TAG_common_inclusion:
8318 break;
d9fa45fe 8319 case DW_TAG_namespace:
4d4ec4e5 8320 cu->processing_has_namespace_info = 1;
e7c27a73 8321 read_namespace (die, cu);
d9fa45fe 8322 break;
5d7cb8df 8323 case DW_TAG_module:
4d4ec4e5 8324 cu->processing_has_namespace_info = 1;
5d7cb8df
JK
8325 read_module (die, cu);
8326 break;
d9fa45fe 8327 case DW_TAG_imported_declaration:
74921315
KS
8328 cu->processing_has_namespace_info = 1;
8329 if (read_namespace_alias (die, cu))
8330 break;
8331 /* The declaration is not a global namespace alias: fall through. */
d9fa45fe 8332 case DW_TAG_imported_module:
4d4ec4e5 8333 cu->processing_has_namespace_info = 1;
27aa8d6a
SW
8334 if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
8335 || cu->language != language_fortran))
8336 complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
8337 dwarf_tag_name (die->tag));
8338 read_import_statement (die, cu);
d9fa45fe 8339 break;
95554aad
TT
8340
8341 case DW_TAG_imported_unit:
8342 process_imported_unit_die (die, cu);
8343 break;
8344
c906108c 8345 default:
e7c27a73 8346 new_symbol (die, NULL, cu);
c906108c
SS
8347 break;
8348 }
adde2bff
DE
8349
8350 do_cleanups (in_process);
c906108c 8351}
ca69b9e6
DE
8352\f
8353/* DWARF name computation. */
c906108c 8354
94af9270
KS
8355/* A helper function for dwarf2_compute_name which determines whether DIE
8356 needs to have the name of the scope prepended to the name listed in the
8357 die. */
8358
8359static int
8360die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
8361{
1c809c68
TT
8362 struct attribute *attr;
8363
94af9270
KS
8364 switch (die->tag)
8365 {
8366 case DW_TAG_namespace:
8367 case DW_TAG_typedef:
8368 case DW_TAG_class_type:
8369 case DW_TAG_interface_type:
8370 case DW_TAG_structure_type:
8371 case DW_TAG_union_type:
8372 case DW_TAG_enumeration_type:
8373 case DW_TAG_enumerator:
8374 case DW_TAG_subprogram:
08a76f8a 8375 case DW_TAG_inlined_subroutine:
94af9270 8376 case DW_TAG_member:
74921315 8377 case DW_TAG_imported_declaration:
94af9270
KS
8378 return 1;
8379
8380 case DW_TAG_variable:
c2b0a229 8381 case DW_TAG_constant:
94af9270
KS
8382 /* We only need to prefix "globally" visible variables. These include
8383 any variable marked with DW_AT_external or any variable that
8384 lives in a namespace. [Variables in anonymous namespaces
8385 require prefixing, but they are not DW_AT_external.] */
8386
8387 if (dwarf2_attr (die, DW_AT_specification, cu))
8388 {
8389 struct dwarf2_cu *spec_cu = cu;
9a619af0 8390
94af9270
KS
8391 return die_needs_namespace (die_specification (die, &spec_cu),
8392 spec_cu);
8393 }
8394
1c809c68 8395 attr = dwarf2_attr (die, DW_AT_external, cu);
f55ee35c
JK
8396 if (attr == NULL && die->parent->tag != DW_TAG_namespace
8397 && die->parent->tag != DW_TAG_module)
1c809c68
TT
8398 return 0;
8399 /* A variable in a lexical block of some kind does not need a
8400 namespace, even though in C++ such variables may be external
8401 and have a mangled name. */
8402 if (die->parent->tag == DW_TAG_lexical_block
8403 || die->parent->tag == DW_TAG_try_block
1054b214
TT
8404 || die->parent->tag == DW_TAG_catch_block
8405 || die->parent->tag == DW_TAG_subprogram)
1c809c68
TT
8406 return 0;
8407 return 1;
94af9270
KS
8408
8409 default:
8410 return 0;
8411 }
8412}
8413
98bfdba5
PA
8414/* Retrieve the last character from a mem_file. */
8415
8416static void
8417do_ui_file_peek_last (void *object, const char *buffer, long length)
8418{
8419 char *last_char_p = (char *) object;
8420
8421 if (length > 0)
8422 *last_char_p = buffer[length - 1];
8423}
8424
94af9270 8425/* Compute the fully qualified name of DIE in CU. If PHYSNAME is nonzero,
a766d390
DE
8426 compute the physname for the object, which include a method's:
8427 - formal parameters (C++/Java),
8428 - receiver type (Go),
8429 - return type (Java).
8430
8431 The term "physname" is a bit confusing.
8432 For C++, for example, it is the demangled name.
8433 For Go, for example, it's the mangled name.
94af9270 8434
af6b7be1
JB
8435 For Ada, return the DIE's linkage name rather than the fully qualified
8436 name. PHYSNAME is ignored..
8437
94af9270
KS
8438 The result is allocated on the objfile_obstack and canonicalized. */
8439
8440static const char *
15d034d0
TT
8441dwarf2_compute_name (const char *name,
8442 struct die_info *die, struct dwarf2_cu *cu,
94af9270
KS
8443 int physname)
8444{
bb5ed363
DE
8445 struct objfile *objfile = cu->objfile;
8446
94af9270
KS
8447 if (name == NULL)
8448 name = dwarf2_name (die, cu);
8449
f55ee35c
JK
8450 /* For Fortran GDB prefers DW_AT_*linkage_name if present but otherwise
8451 compute it by typename_concat inside GDB. */
8452 if (cu->language == language_ada
8453 || (cu->language == language_fortran && physname))
8454 {
8455 /* For Ada unit, we prefer the linkage name over the name, as
8456 the former contains the exported name, which the user expects
8457 to be able to reference. Ideally, we want the user to be able
8458 to reference this entity using either natural or linkage name,
8459 but we haven't started looking at this enhancement yet. */
8460 struct attribute *attr;
8461
8462 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8463 if (attr == NULL)
8464 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8465 if (attr && DW_STRING (attr))
8466 return DW_STRING (attr);
8467 }
8468
94af9270
KS
8469 /* These are the only languages we know how to qualify names in. */
8470 if (name != NULL
f55ee35c 8471 && (cu->language == language_cplus || cu->language == language_java
45280282 8472 || cu->language == language_fortran || cu->language == language_d))
94af9270
KS
8473 {
8474 if (die_needs_namespace (die, cu))
8475 {
8476 long length;
0d5cff50 8477 const char *prefix;
94af9270 8478 struct ui_file *buf;
34a68019
TT
8479 char *intermediate_name;
8480 const char *canonical_name = NULL;
94af9270
KS
8481
8482 prefix = determine_prefix (die, cu);
8483 buf = mem_fileopen ();
8484 if (*prefix != '\0')
8485 {
f55ee35c
JK
8486 char *prefixed_name = typename_concat (NULL, prefix, name,
8487 physname, cu);
9a619af0 8488
94af9270
KS
8489 fputs_unfiltered (prefixed_name, buf);
8490 xfree (prefixed_name);
8491 }
8492 else
62d5b8da 8493 fputs_unfiltered (name, buf);
94af9270 8494
98bfdba5
PA
8495 /* Template parameters may be specified in the DIE's DW_AT_name, or
8496 as children with DW_TAG_template_type_param or
8497 DW_TAG_value_type_param. If the latter, add them to the name
8498 here. If the name already has template parameters, then
8499 skip this step; some versions of GCC emit both, and
8500 it is more efficient to use the pre-computed name.
8501
8502 Something to keep in mind about this process: it is very
8503 unlikely, or in some cases downright impossible, to produce
8504 something that will match the mangled name of a function.
8505 If the definition of the function has the same debug info,
8506 we should be able to match up with it anyway. But fallbacks
8507 using the minimal symbol, for instance to find a method
8508 implemented in a stripped copy of libstdc++, will not work.
8509 If we do not have debug info for the definition, we will have to
8510 match them up some other way.
8511
8512 When we do name matching there is a related problem with function
8513 templates; two instantiated function templates are allowed to
8514 differ only by their return types, which we do not add here. */
8515
8516 if (cu->language == language_cplus && strchr (name, '<') == NULL)
8517 {
8518 struct attribute *attr;
8519 struct die_info *child;
8520 int first = 1;
8521
8522 die->building_fullname = 1;
8523
8524 for (child = die->child; child != NULL; child = child->sibling)
8525 {
8526 struct type *type;
12df843f 8527 LONGEST value;
d521ce57 8528 const gdb_byte *bytes;
98bfdba5
PA
8529 struct dwarf2_locexpr_baton *baton;
8530 struct value *v;
8531
8532 if (child->tag != DW_TAG_template_type_param
8533 && child->tag != DW_TAG_template_value_param)
8534 continue;
8535
8536 if (first)
8537 {
8538 fputs_unfiltered ("<", buf);
8539 first = 0;
8540 }
8541 else
8542 fputs_unfiltered (", ", buf);
8543
8544 attr = dwarf2_attr (child, DW_AT_type, cu);
8545 if (attr == NULL)
8546 {
8547 complaint (&symfile_complaints,
8548 _("template parameter missing DW_AT_type"));
8549 fputs_unfiltered ("UNKNOWN_TYPE", buf);
8550 continue;
8551 }
8552 type = die_type (child, cu);
8553
8554 if (child->tag == DW_TAG_template_type_param)
8555 {
79d43c61 8556 c_print_type (type, "", buf, -1, 0, &type_print_raw_options);
98bfdba5
PA
8557 continue;
8558 }
8559
8560 attr = dwarf2_attr (child, DW_AT_const_value, cu);
8561 if (attr == NULL)
8562 {
8563 complaint (&symfile_complaints,
3e43a32a
MS
8564 _("template parameter missing "
8565 "DW_AT_const_value"));
98bfdba5
PA
8566 fputs_unfiltered ("UNKNOWN_VALUE", buf);
8567 continue;
8568 }
8569
8570 dwarf2_const_value_attr (attr, type, name,
8571 &cu->comp_unit_obstack, cu,
8572 &value, &bytes, &baton);
8573
8574 if (TYPE_NOSIGN (type))
8575 /* GDB prints characters as NUMBER 'CHAR'. If that's
8576 changed, this can use value_print instead. */
8577 c_printchar (value, type, buf);
8578 else
8579 {
8580 struct value_print_options opts;
8581
8582 if (baton != NULL)
8583 v = dwarf2_evaluate_loc_desc (type, NULL,
8584 baton->data,
8585 baton->size,
8586 baton->per_cu);
8587 else if (bytes != NULL)
8588 {
8589 v = allocate_value (type);
8590 memcpy (value_contents_writeable (v), bytes,
8591 TYPE_LENGTH (type));
8592 }
8593 else
8594 v = value_from_longest (type, value);
8595
3e43a32a
MS
8596 /* Specify decimal so that we do not depend on
8597 the radix. */
98bfdba5
PA
8598 get_formatted_print_options (&opts, 'd');
8599 opts.raw = 1;
8600 value_print (v, buf, &opts);
8601 release_value (v);
8602 value_free (v);
8603 }
8604 }
8605
8606 die->building_fullname = 0;
8607
8608 if (!first)
8609 {
8610 /* Close the argument list, with a space if necessary
8611 (nested templates). */
8612 char last_char = '\0';
8613 ui_file_put (buf, do_ui_file_peek_last, &last_char);
8614 if (last_char == '>')
8615 fputs_unfiltered (" >", buf);
8616 else
8617 fputs_unfiltered (">", buf);
8618 }
8619 }
8620
94af9270
KS
8621 /* For Java and C++ methods, append formal parameter type
8622 information, if PHYSNAME. */
6e70227d 8623
94af9270
KS
8624 if (physname && die->tag == DW_TAG_subprogram
8625 && (cu->language == language_cplus
8626 || cu->language == language_java))
8627 {
8628 struct type *type = read_type_die (die, cu);
8629
79d43c61
TT
8630 c_type_print_args (type, buf, 1, cu->language,
8631 &type_print_raw_options);
94af9270
KS
8632
8633 if (cu->language == language_java)
8634 {
8635 /* For java, we must append the return type to method
0963b4bd 8636 names. */
94af9270
KS
8637 if (die->tag == DW_TAG_subprogram)
8638 java_print_type (TYPE_TARGET_TYPE (type), "", buf,
79d43c61 8639 0, 0, &type_print_raw_options);
94af9270
KS
8640 }
8641 else if (cu->language == language_cplus)
8642 {
60430eff
DJ
8643 /* Assume that an artificial first parameter is
8644 "this", but do not crash if it is not. RealView
8645 marks unnamed (and thus unused) parameters as
8646 artificial; there is no way to differentiate
8647 the two cases. */
94af9270
KS
8648 if (TYPE_NFIELDS (type) > 0
8649 && TYPE_FIELD_ARTIFICIAL (type, 0)
60430eff 8650 && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
3e43a32a
MS
8651 && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
8652 0))))
94af9270
KS
8653 fputs_unfiltered (" const", buf);
8654 }
8655 }
8656
34a68019 8657 intermediate_name = ui_file_xstrdup (buf, &length);
94af9270
KS
8658 ui_file_delete (buf);
8659
8660 if (cu->language == language_cplus)
34a68019
TT
8661 canonical_name
8662 = dwarf2_canonicalize_name (intermediate_name, cu,
8663 &objfile->per_bfd->storage_obstack);
8664
8665 /* If we only computed INTERMEDIATE_NAME, or if
8666 INTERMEDIATE_NAME is already canonical, then we need to
8667 copy it to the appropriate obstack. */
8668 if (canonical_name == NULL || canonical_name == intermediate_name)
8669 name = obstack_copy0 (&objfile->per_bfd->storage_obstack,
8670 intermediate_name,
8671 strlen (intermediate_name));
8672 else
8673 name = canonical_name;
9a619af0 8674
34a68019 8675 xfree (intermediate_name);
94af9270
KS
8676 }
8677 }
8678
8679 return name;
8680}
8681
0114d602
DJ
8682/* Return the fully qualified name of DIE, based on its DW_AT_name.
8683 If scope qualifiers are appropriate they will be added. The result
34a68019 8684 will be allocated on the storage_obstack, or NULL if the DIE does
94af9270
KS
8685 not have a name. NAME may either be from a previous call to
8686 dwarf2_name or NULL.
8687
0963b4bd 8688 The output string will be canonicalized (if C++/Java). */
0114d602
DJ
8689
8690static const char *
15d034d0 8691dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
0114d602 8692{
94af9270
KS
8693 return dwarf2_compute_name (name, die, cu, 0);
8694}
0114d602 8695
94af9270
KS
8696/* Construct a physname for the given DIE in CU. NAME may either be
8697 from a previous call to dwarf2_name or NULL. The result will be
8698 allocated on the objfile_objstack or NULL if the DIE does not have a
8699 name.
0114d602 8700
94af9270 8701 The output string will be canonicalized (if C++/Java). */
0114d602 8702
94af9270 8703static const char *
15d034d0 8704dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
94af9270 8705{
bb5ed363 8706 struct objfile *objfile = cu->objfile;
900e11f9
JK
8707 struct attribute *attr;
8708 const char *retval, *mangled = NULL, *canon = NULL;
8709 struct cleanup *back_to;
8710 int need_copy = 1;
8711
8712 /* In this case dwarf2_compute_name is just a shortcut not building anything
8713 on its own. */
8714 if (!die_needs_namespace (die, cu))
8715 return dwarf2_compute_name (name, die, cu, 1);
8716
8717 back_to = make_cleanup (null_cleanup, NULL);
8718
8719 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8720 if (!attr)
8721 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8722
8723 /* DW_AT_linkage_name is missing in some cases - depend on what GDB
8724 has computed. */
8725 if (attr && DW_STRING (attr))
8726 {
8727 char *demangled;
8728
8729 mangled = DW_STRING (attr);
8730
8731 /* Use DMGL_RET_DROP for C++ template functions to suppress their return
8732 type. It is easier for GDB users to search for such functions as
8733 `name(params)' than `long name(params)'. In such case the minimal
8734 symbol names do not match the full symbol names but for template
8735 functions there is never a need to look up their definition from their
8736 declaration so the only disadvantage remains the minimal symbol
8737 variant `long name(params)' does not have the proper inferior type.
8738 */
8739
a766d390
DE
8740 if (cu->language == language_go)
8741 {
8742 /* This is a lie, but we already lie to the caller new_symbol_full.
8743 new_symbol_full assumes we return the mangled name.
8744 This just undoes that lie until things are cleaned up. */
8745 demangled = NULL;
8746 }
8747 else
8748 {
8de20a37
TT
8749 demangled = gdb_demangle (mangled,
8750 (DMGL_PARAMS | DMGL_ANSI
8751 | (cu->language == language_java
8752 ? DMGL_JAVA | DMGL_RET_POSTFIX
8753 : DMGL_RET_DROP)));
a766d390 8754 }
900e11f9
JK
8755 if (demangled)
8756 {
8757 make_cleanup (xfree, demangled);
8758 canon = demangled;
8759 }
8760 else
8761 {
8762 canon = mangled;
8763 need_copy = 0;
8764 }
8765 }
8766
8767 if (canon == NULL || check_physname)
8768 {
8769 const char *physname = dwarf2_compute_name (name, die, cu, 1);
8770
8771 if (canon != NULL && strcmp (physname, canon) != 0)
8772 {
8773 /* It may not mean a bug in GDB. The compiler could also
8774 compute DW_AT_linkage_name incorrectly. But in such case
8775 GDB would need to be bug-to-bug compatible. */
8776
8777 complaint (&symfile_complaints,
8778 _("Computed physname <%s> does not match demangled <%s> "
8779 "(from linkage <%s>) - DIE at 0x%x [in module %s]"),
4262abfb
JK
8780 physname, canon, mangled, die->offset.sect_off,
8781 objfile_name (objfile));
900e11f9
JK
8782
8783 /* Prefer DW_AT_linkage_name (in the CANON form) - when it
8784 is available here - over computed PHYSNAME. It is safer
8785 against both buggy GDB and buggy compilers. */
8786
8787 retval = canon;
8788 }
8789 else
8790 {
8791 retval = physname;
8792 need_copy = 0;
8793 }
8794 }
8795 else
8796 retval = canon;
8797
8798 if (need_copy)
34a68019
TT
8799 retval = obstack_copy0 (&objfile->per_bfd->storage_obstack,
8800 retval, strlen (retval));
900e11f9
JK
8801
8802 do_cleanups (back_to);
8803 return retval;
0114d602
DJ
8804}
8805
74921315
KS
8806/* Inspect DIE in CU for a namespace alias. If one exists, record
8807 a new symbol for it.
8808
8809 Returns 1 if a namespace alias was recorded, 0 otherwise. */
8810
8811static int
8812read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
8813{
8814 struct attribute *attr;
8815
8816 /* If the die does not have a name, this is not a namespace
8817 alias. */
8818 attr = dwarf2_attr (die, DW_AT_name, cu);
8819 if (attr != NULL)
8820 {
8821 int num;
8822 struct die_info *d = die;
8823 struct dwarf2_cu *imported_cu = cu;
8824
8825 /* If the compiler has nested DW_AT_imported_declaration DIEs,
8826 keep inspecting DIEs until we hit the underlying import. */
8827#define MAX_NESTED_IMPORTED_DECLARATIONS 100
8828 for (num = 0; num < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
8829 {
8830 attr = dwarf2_attr (d, DW_AT_import, cu);
8831 if (attr == NULL)
8832 break;
8833
8834 d = follow_die_ref (d, attr, &imported_cu);
8835 if (d->tag != DW_TAG_imported_declaration)
8836 break;
8837 }
8838
8839 if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
8840 {
8841 complaint (&symfile_complaints,
8842 _("DIE at 0x%x has too many recursively imported "
8843 "declarations"), d->offset.sect_off);
8844 return 0;
8845 }
8846
8847 if (attr != NULL)
8848 {
8849 struct type *type;
8850 sect_offset offset = dwarf2_get_ref_die_offset (attr);
8851
8852 type = get_die_type_at_offset (offset, cu->per_cu);
8853 if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
8854 {
8855 /* This declaration is a global namespace alias. Add
8856 a symbol for it whose type is the aliased namespace. */
8857 new_symbol (die, type, cu);
8858 return 1;
8859 }
8860 }
8861 }
8862
8863 return 0;
8864}
8865
27aa8d6a
SW
8866/* Read the import statement specified by the given die and record it. */
8867
8868static void
8869read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
8870{
bb5ed363 8871 struct objfile *objfile = cu->objfile;
27aa8d6a 8872 struct attribute *import_attr;
32019081 8873 struct die_info *imported_die, *child_die;
de4affc9 8874 struct dwarf2_cu *imported_cu;
27aa8d6a 8875 const char *imported_name;
794684b6 8876 const char *imported_name_prefix;
13387711
SW
8877 const char *canonical_name;
8878 const char *import_alias;
8879 const char *imported_declaration = NULL;
794684b6 8880 const char *import_prefix;
32019081
JK
8881 VEC (const_char_ptr) *excludes = NULL;
8882 struct cleanup *cleanups;
13387711 8883
27aa8d6a
SW
8884 import_attr = dwarf2_attr (die, DW_AT_import, cu);
8885 if (import_attr == NULL)
8886 {
8887 complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8888 dwarf_tag_name (die->tag));
8889 return;
8890 }
8891
de4affc9
CC
8892 imported_cu = cu;
8893 imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
8894 imported_name = dwarf2_name (imported_die, imported_cu);
27aa8d6a
SW
8895 if (imported_name == NULL)
8896 {
8897 /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
8898
8899 The import in the following code:
8900 namespace A
8901 {
8902 typedef int B;
8903 }
8904
8905 int main ()
8906 {
8907 using A::B;
8908 B b;
8909 return b;
8910 }
8911
8912 ...
8913 <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
8914 <52> DW_AT_decl_file : 1
8915 <53> DW_AT_decl_line : 6
8916 <54> DW_AT_import : <0x75>
8917 <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
8918 <59> DW_AT_name : B
8919 <5b> DW_AT_decl_file : 1
8920 <5c> DW_AT_decl_line : 2
8921 <5d> DW_AT_type : <0x6e>
8922 ...
8923 <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
8924 <76> DW_AT_byte_size : 4
8925 <77> DW_AT_encoding : 5 (signed)
8926
8927 imports the wrong die ( 0x75 instead of 0x58 ).
8928 This case will be ignored until the gcc bug is fixed. */
8929 return;
8930 }
8931
82856980
SW
8932 /* Figure out the local name after import. */
8933 import_alias = dwarf2_name (die, cu);
27aa8d6a 8934
794684b6
SW
8935 /* Figure out where the statement is being imported to. */
8936 import_prefix = determine_prefix (die, cu);
8937
8938 /* Figure out what the scope of the imported die is and prepend it
8939 to the name of the imported die. */
de4affc9 8940 imported_name_prefix = determine_prefix (imported_die, imported_cu);
794684b6 8941
f55ee35c
JK
8942 if (imported_die->tag != DW_TAG_namespace
8943 && imported_die->tag != DW_TAG_module)
794684b6 8944 {
13387711
SW
8945 imported_declaration = imported_name;
8946 canonical_name = imported_name_prefix;
794684b6 8947 }
13387711 8948 else if (strlen (imported_name_prefix) > 0)
12aaed36 8949 canonical_name = obconcat (&objfile->objfile_obstack,
45280282
IB
8950 imported_name_prefix,
8951 (cu->language == language_d ? "." : "::"),
8952 imported_name, (char *) NULL);
13387711
SW
8953 else
8954 canonical_name = imported_name;
794684b6 8955
32019081
JK
8956 cleanups = make_cleanup (VEC_cleanup (const_char_ptr), &excludes);
8957
8958 if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
8959 for (child_die = die->child; child_die && child_die->tag;
8960 child_die = sibling_die (child_die))
8961 {
8962 /* DWARF-4: A Fortran use statement with a “rename list” may be
8963 represented by an imported module entry with an import attribute
8964 referring to the module and owned entries corresponding to those
8965 entities that are renamed as part of being imported. */
8966
8967 if (child_die->tag != DW_TAG_imported_declaration)
8968 {
8969 complaint (&symfile_complaints,
8970 _("child DW_TAG_imported_declaration expected "
8971 "- DIE at 0x%x [in module %s]"),
4262abfb 8972 child_die->offset.sect_off, objfile_name (objfile));
32019081
JK
8973 continue;
8974 }
8975
8976 import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
8977 if (import_attr == NULL)
8978 {
8979 complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8980 dwarf_tag_name (child_die->tag));
8981 continue;
8982 }
8983
8984 imported_cu = cu;
8985 imported_die = follow_die_ref_or_sig (child_die, import_attr,
8986 &imported_cu);
8987 imported_name = dwarf2_name (imported_die, imported_cu);
8988 if (imported_name == NULL)
8989 {
8990 complaint (&symfile_complaints,
8991 _("child DW_TAG_imported_declaration has unknown "
8992 "imported name - DIE at 0x%x [in module %s]"),
4262abfb 8993 child_die->offset.sect_off, objfile_name (objfile));
32019081
JK
8994 continue;
8995 }
8996
8997 VEC_safe_push (const_char_ptr, excludes, imported_name);
8998
8999 process_die (child_die, cu);
9000 }
9001
c0cc3a76
SW
9002 cp_add_using_directive (import_prefix,
9003 canonical_name,
9004 import_alias,
13387711 9005 imported_declaration,
32019081 9006 excludes,
12aaed36 9007 0,
bb5ed363 9008 &objfile->objfile_obstack);
32019081
JK
9009
9010 do_cleanups (cleanups);
27aa8d6a
SW
9011}
9012
f4dc4d17 9013/* Cleanup function for handle_DW_AT_stmt_list. */
ae2de4f8 9014
cb1df416
DJ
9015static void
9016free_cu_line_header (void *arg)
9017{
9018 struct dwarf2_cu *cu = arg;
9019
9020 free_line_header (cu->line_header);
9021 cu->line_header = NULL;
9022}
9023
1b80a9fa
JK
9024/* Check for possibly missing DW_AT_comp_dir with relative .debug_line
9025 directory paths. GCC SVN r127613 (new option -fdebug-prefix-map) fixed
9026 this, it was first present in GCC release 4.3.0. */
9027
9028static int
9029producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
9030{
9031 if (!cu->checked_producer)
9032 check_producer (cu);
9033
9034 return cu->producer_is_gcc_lt_4_3;
9035}
9036
9291a0cd
TT
9037static void
9038find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu,
15d034d0 9039 const char **name, const char **comp_dir)
9291a0cd
TT
9040{
9041 struct attribute *attr;
9042
9043 *name = NULL;
9044 *comp_dir = NULL;
9045
9046 /* Find the filename. Do not use dwarf2_name here, since the filename
9047 is not a source language identifier. */
9048 attr = dwarf2_attr (die, DW_AT_name, cu);
9049 if (attr)
9050 {
9051 *name = DW_STRING (attr);
9052 }
9053
9054 attr = dwarf2_attr (die, DW_AT_comp_dir, cu);
9055 if (attr)
9056 *comp_dir = DW_STRING (attr);
1b80a9fa
JK
9057 else if (producer_is_gcc_lt_4_3 (cu) && *name != NULL
9058 && IS_ABSOLUTE_PATH (*name))
9291a0cd 9059 {
15d034d0
TT
9060 char *d = ldirname (*name);
9061
9062 *comp_dir = d;
9063 if (d != NULL)
9064 make_cleanup (xfree, d);
9291a0cd
TT
9065 }
9066 if (*comp_dir != NULL)
9067 {
9068 /* Irix 6.2 native cc prepends <machine>.: to the compilation
9069 directory, get rid of it. */
9070 char *cp = strchr (*comp_dir, ':');
9071
9072 if (cp && cp != *comp_dir && cp[-1] == '.' && cp[1] == '/')
9073 *comp_dir = cp + 1;
9074 }
9075
9076 if (*name == NULL)
9077 *name = "<unknown>";
9078}
9079
f4dc4d17
DE
9080/* Handle DW_AT_stmt_list for a compilation unit.
9081 DIE is the DW_TAG_compile_unit die for CU.
c3b7b696
YQ
9082 COMP_DIR is the compilation directory. LOWPC is passed to
9083 dwarf_decode_lines. See dwarf_decode_lines comments about it. */
2ab95328
TT
9084
9085static void
9086handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
c3b7b696 9087 const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
2ab95328 9088{
527f3840 9089 struct objfile *objfile = dwarf2_per_objfile->objfile;
2ab95328 9090 struct attribute *attr;
527f3840
JK
9091 unsigned int line_offset;
9092 struct line_header line_header_local;
9093 hashval_t line_header_local_hash;
9094 unsigned u;
9095 void **slot;
9096 int decode_mapping;
2ab95328 9097
f4dc4d17
DE
9098 gdb_assert (! cu->per_cu->is_debug_types);
9099
2ab95328 9100 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
527f3840
JK
9101 if (attr == NULL)
9102 return;
9103
9104 line_offset = DW_UNSND (attr);
9105
9106 /* The line header hash table is only created if needed (it exists to
9107 prevent redundant reading of the line table for partial_units).
9108 If we're given a partial_unit, we'll need it. If we're given a
9109 compile_unit, then use the line header hash table if it's already
9110 created, but don't create one just yet. */
9111
9112 if (dwarf2_per_objfile->line_header_hash == NULL
9113 && die->tag == DW_TAG_partial_unit)
2ab95328 9114 {
527f3840
JK
9115 dwarf2_per_objfile->line_header_hash
9116 = htab_create_alloc_ex (127, line_header_hash_voidp,
9117 line_header_eq_voidp,
9118 free_line_header_voidp,
9119 &objfile->objfile_obstack,
9120 hashtab_obstack_allocate,
9121 dummy_obstack_deallocate);
9122 }
2ab95328 9123
527f3840
JK
9124 line_header_local.offset.sect_off = line_offset;
9125 line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
9126 line_header_local_hash = line_header_hash (&line_header_local);
9127 if (dwarf2_per_objfile->line_header_hash != NULL)
9128 {
9129 slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
9130 &line_header_local,
9131 line_header_local_hash, NO_INSERT);
9132
9133 /* For DW_TAG_compile_unit we need info like symtab::linetable which
9134 is not present in *SLOT (since if there is something in *SLOT then
9135 it will be for a partial_unit). */
9136 if (die->tag == DW_TAG_partial_unit && slot != NULL)
dee91e82 9137 {
527f3840
JK
9138 gdb_assert (*slot != NULL);
9139 cu->line_header = *slot;
9140 return;
dee91e82 9141 }
2ab95328 9142 }
527f3840
JK
9143
9144 /* dwarf_decode_line_header does not yet provide sufficient information.
9145 We always have to call also dwarf_decode_lines for it. */
9146 cu->line_header = dwarf_decode_line_header (line_offset, cu);
9147 if (cu->line_header == NULL)
9148 return;
9149
9150 if (dwarf2_per_objfile->line_header_hash == NULL)
9151 slot = NULL;
9152 else
9153 {
9154 slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
9155 &line_header_local,
9156 line_header_local_hash, INSERT);
9157 gdb_assert (slot != NULL);
9158 }
9159 if (slot != NULL && *slot == NULL)
9160 {
9161 /* This newly decoded line number information unit will be owned
9162 by line_header_hash hash table. */
9163 *slot = cu->line_header;
9164 }
9165 else
9166 {
9167 /* We cannot free any current entry in (*slot) as that struct line_header
9168 may be already used by multiple CUs. Create only temporary decoded
9169 line_header for this CU - it may happen at most once for each line
9170 number information unit. And if we're not using line_header_hash
9171 then this is what we want as well. */
9172 gdb_assert (die->tag != DW_TAG_partial_unit);
9173 make_cleanup (free_cu_line_header, cu);
9174 }
9175 decode_mapping = (die->tag != DW_TAG_partial_unit);
9176 dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
9177 decode_mapping);
2ab95328
TT
9178}
9179
95554aad 9180/* Process DW_TAG_compile_unit or DW_TAG_partial_unit. */
ae2de4f8 9181
c906108c 9182static void
e7c27a73 9183read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 9184{
dee91e82 9185 struct objfile *objfile = dwarf2_per_objfile->objfile;
3e29f34a 9186 struct gdbarch *gdbarch = get_objfile_arch (objfile);
debd256d 9187 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2acceee2 9188 CORE_ADDR lowpc = ((CORE_ADDR) -1);
c906108c
SS
9189 CORE_ADDR highpc = ((CORE_ADDR) 0);
9190 struct attribute *attr;
15d034d0
TT
9191 const char *name = NULL;
9192 const char *comp_dir = NULL;
c906108c
SS
9193 struct die_info *child_die;
9194 bfd *abfd = objfile->obfd;
e142c38c 9195 CORE_ADDR baseaddr;
6e70227d 9196
e142c38c 9197 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 9198
fae299cd 9199 get_scope_pc_bounds (die, &lowpc, &highpc, cu);
c906108c
SS
9200
9201 /* If we didn't find a lowpc, set it to highpc to avoid complaints
9202 from finish_block. */
2acceee2 9203 if (lowpc == ((CORE_ADDR) -1))
c906108c 9204 lowpc = highpc;
3e29f34a 9205 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
c906108c 9206
9291a0cd 9207 find_file_and_directory (die, cu, &name, &comp_dir);
e1024ff1 9208
95554aad 9209 prepare_one_comp_unit (cu, die, cu->language);
303b6f5d 9210
f4b8a18d
KW
9211 /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
9212 standardised yet. As a workaround for the language detection we fall
9213 back to the DW_AT_producer string. */
9214 if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
9215 cu->language = language_opencl;
9216
3019eac3
DE
9217 /* Similar hack for Go. */
9218 if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
9219 set_cu_language (DW_LANG_Go, cu);
9220
f4dc4d17 9221 dwarf2_start_symtab (cu, name, comp_dir, lowpc);
3019eac3
DE
9222
9223 /* Decode line number information if present. We do this before
9224 processing child DIEs, so that the line header table is available
9225 for DW_AT_decl_file. */
c3b7b696 9226 handle_DW_AT_stmt_list (die, cu, comp_dir, lowpc);
3019eac3
DE
9227
9228 /* Process all dies in compilation unit. */
9229 if (die->child != NULL)
9230 {
9231 child_die = die->child;
9232 while (child_die && child_die->tag)
9233 {
9234 process_die (child_die, cu);
9235 child_die = sibling_die (child_die);
9236 }
9237 }
9238
9239 /* Decode macro information, if present. Dwarf 2 macro information
9240 refers to information in the line number info statement program
9241 header, so we can only read it if we've read the header
9242 successfully. */
9243 attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
9244 if (attr && cu->line_header)
9245 {
9246 if (dwarf2_attr (die, DW_AT_macro_info, cu))
9247 complaint (&symfile_complaints,
9248 _("CU refers to both DW_AT_GNU_macros and DW_AT_macro_info"));
9249
43f3e411 9250 dwarf_decode_macros (cu, DW_UNSND (attr), 1);
3019eac3
DE
9251 }
9252 else
9253 {
9254 attr = dwarf2_attr (die, DW_AT_macro_info, cu);
9255 if (attr && cu->line_header)
9256 {
9257 unsigned int macro_offset = DW_UNSND (attr);
9258
43f3e411 9259 dwarf_decode_macros (cu, macro_offset, 0);
3019eac3
DE
9260 }
9261 }
9262
9263 do_cleanups (back_to);
9264}
9265
f4dc4d17
DE
9266/* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
9267 Create the set of symtabs used by this TU, or if this TU is sharing
9268 symtabs with another TU and the symtabs have already been created
9269 then restore those symtabs in the line header.
9270 We don't need the pc/line-number mapping for type units. */
3019eac3
DE
9271
9272static void
f4dc4d17 9273setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
3019eac3 9274{
f4dc4d17
DE
9275 struct objfile *objfile = dwarf2_per_objfile->objfile;
9276 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
9277 struct type_unit_group *tu_group;
9278 int first_time;
9279 struct line_header *lh;
3019eac3 9280 struct attribute *attr;
f4dc4d17 9281 unsigned int i, line_offset;
0186c6a7 9282 struct signatured_type *sig_type;
3019eac3 9283
f4dc4d17 9284 gdb_assert (per_cu->is_debug_types);
0186c6a7 9285 sig_type = (struct signatured_type *) per_cu;
3019eac3 9286
f4dc4d17 9287 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
3019eac3 9288
f4dc4d17 9289 /* If we're using .gdb_index (includes -readnow) then
74e04d1c 9290 per_cu->type_unit_group may not have been set up yet. */
0186c6a7
DE
9291 if (sig_type->type_unit_group == NULL)
9292 sig_type->type_unit_group = get_type_unit_group (cu, attr);
9293 tu_group = sig_type->type_unit_group;
f4dc4d17
DE
9294
9295 /* If we've already processed this stmt_list there's no real need to
9296 do it again, we could fake it and just recreate the part we need
9297 (file name,index -> symtab mapping). If data shows this optimization
9298 is useful we can do it then. */
43f3e411 9299 first_time = tu_group->compunit_symtab == NULL;
f4dc4d17
DE
9300
9301 /* We have to handle the case of both a missing DW_AT_stmt_list or bad
9302 debug info. */
9303 lh = NULL;
9304 if (attr != NULL)
3019eac3 9305 {
f4dc4d17
DE
9306 line_offset = DW_UNSND (attr);
9307 lh = dwarf_decode_line_header (line_offset, cu);
9308 }
9309 if (lh == NULL)
9310 {
9311 if (first_time)
9312 dwarf2_start_symtab (cu, "", NULL, 0);
9313 else
9314 {
9315 gdb_assert (tu_group->symtabs == NULL);
0ab9ce85 9316 restart_symtab (tu_group->compunit_symtab, "", 0);
f4dc4d17 9317 }
f4dc4d17 9318 return;
3019eac3
DE
9319 }
9320
f4dc4d17
DE
9321 cu->line_header = lh;
9322 make_cleanup (free_cu_line_header, cu);
3019eac3 9323
f4dc4d17
DE
9324 if (first_time)
9325 {
43f3e411 9326 struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
3019eac3 9327
f4dc4d17
DE
9328 tu_group->num_symtabs = lh->num_file_names;
9329 tu_group->symtabs = XNEWVEC (struct symtab *, lh->num_file_names);
3019eac3 9330
f4dc4d17
DE
9331 for (i = 0; i < lh->num_file_names; ++i)
9332 {
d521ce57 9333 const char *dir = NULL;
f4dc4d17 9334 struct file_entry *fe = &lh->file_names[i];
3019eac3 9335
afa6c9ab 9336 if (fe->dir_index && lh->include_dirs != NULL)
f4dc4d17 9337 dir = lh->include_dirs[fe->dir_index - 1];
4d663531 9338 dwarf2_start_subfile (fe->name, dir);
3019eac3 9339
f4dc4d17
DE
9340 if (current_subfile->symtab == NULL)
9341 {
9342 /* NOTE: start_subfile will recognize when it's been passed
9343 a file it has already seen. So we can't assume there's a
43f3e411 9344 simple mapping from lh->file_names to subfiles, plus
f4dc4d17 9345 lh->file_names may contain dups. */
43f3e411
DE
9346 current_subfile->symtab
9347 = allocate_symtab (cust, current_subfile->name);
f4dc4d17
DE
9348 }
9349
9350 fe->symtab = current_subfile->symtab;
9351 tu_group->symtabs[i] = fe->symtab;
9352 }
9353 }
9354 else
3019eac3 9355 {
0ab9ce85 9356 restart_symtab (tu_group->compunit_symtab, "", 0);
f4dc4d17
DE
9357
9358 for (i = 0; i < lh->num_file_names; ++i)
9359 {
9360 struct file_entry *fe = &lh->file_names[i];
9361
9362 fe->symtab = tu_group->symtabs[i];
9363 }
3019eac3
DE
9364 }
9365
f4dc4d17
DE
9366 /* The main symtab is allocated last. Type units don't have DW_AT_name
9367 so they don't have a "real" (so to speak) symtab anyway.
9368 There is later code that will assign the main symtab to all symbols
9369 that don't have one. We need to handle the case of a symbol with a
9370 missing symtab (DW_AT_decl_file) anyway. */
9371}
3019eac3 9372
f4dc4d17
DE
9373/* Process DW_TAG_type_unit.
9374 For TUs we want to skip the first top level sibling if it's not the
9375 actual type being defined by this TU. In this case the first top
9376 level sibling is there to provide context only. */
3019eac3 9377
f4dc4d17
DE
9378static void
9379read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
9380{
9381 struct die_info *child_die;
3019eac3 9382
f4dc4d17
DE
9383 prepare_one_comp_unit (cu, die, language_minimal);
9384
9385 /* Initialize (or reinitialize) the machinery for building symtabs.
9386 We do this before processing child DIEs, so that the line header table
9387 is available for DW_AT_decl_file. */
9388 setup_type_unit_groups (die, cu);
9389
9390 if (die->child != NULL)
9391 {
9392 child_die = die->child;
9393 while (child_die && child_die->tag)
9394 {
9395 process_die (child_die, cu);
9396 child_die = sibling_die (child_die);
9397 }
9398 }
3019eac3
DE
9399}
9400\f
80626a55
DE
9401/* DWO/DWP files.
9402
9403 http://gcc.gnu.org/wiki/DebugFission
9404 http://gcc.gnu.org/wiki/DebugFissionDWP
9405
9406 To simplify handling of both DWO files ("object" files with the DWARF info)
9407 and DWP files (a file with the DWOs packaged up into one file), we treat
9408 DWP files as having a collection of virtual DWO files. */
3019eac3
DE
9409
9410static hashval_t
9411hash_dwo_file (const void *item)
9412{
9413 const struct dwo_file *dwo_file = item;
a2ce51a0 9414 hashval_t hash;
3019eac3 9415
a2ce51a0
DE
9416 hash = htab_hash_string (dwo_file->dwo_name);
9417 if (dwo_file->comp_dir != NULL)
9418 hash += htab_hash_string (dwo_file->comp_dir);
9419 return hash;
3019eac3
DE
9420}
9421
9422static int
9423eq_dwo_file (const void *item_lhs, const void *item_rhs)
9424{
9425 const struct dwo_file *lhs = item_lhs;
9426 const struct dwo_file *rhs = item_rhs;
9427
a2ce51a0
DE
9428 if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
9429 return 0;
9430 if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
9431 return lhs->comp_dir == rhs->comp_dir;
9432 return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
3019eac3
DE
9433}
9434
9435/* Allocate a hash table for DWO files. */
9436
9437static htab_t
9438allocate_dwo_file_hash_table (void)
9439{
9440 struct objfile *objfile = dwarf2_per_objfile->objfile;
9441
9442 return htab_create_alloc_ex (41,
9443 hash_dwo_file,
9444 eq_dwo_file,
9445 NULL,
9446 &objfile->objfile_obstack,
9447 hashtab_obstack_allocate,
9448 dummy_obstack_deallocate);
9449}
9450
80626a55
DE
9451/* Lookup DWO file DWO_NAME. */
9452
9453static void **
0ac5b59e 9454lookup_dwo_file_slot (const char *dwo_name, const char *comp_dir)
80626a55
DE
9455{
9456 struct dwo_file find_entry;
9457 void **slot;
9458
9459 if (dwarf2_per_objfile->dwo_files == NULL)
9460 dwarf2_per_objfile->dwo_files = allocate_dwo_file_hash_table ();
9461
9462 memset (&find_entry, 0, sizeof (find_entry));
0ac5b59e
DE
9463 find_entry.dwo_name = dwo_name;
9464 find_entry.comp_dir = comp_dir;
80626a55
DE
9465 slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
9466
9467 return slot;
9468}
9469
3019eac3
DE
9470static hashval_t
9471hash_dwo_unit (const void *item)
9472{
9473 const struct dwo_unit *dwo_unit = item;
9474
9475 /* This drops the top 32 bits of the id, but is ok for a hash. */
9476 return dwo_unit->signature;
9477}
9478
9479static int
9480eq_dwo_unit (const void *item_lhs, const void *item_rhs)
9481{
9482 const struct dwo_unit *lhs = item_lhs;
9483 const struct dwo_unit *rhs = item_rhs;
9484
9485 /* The signature is assumed to be unique within the DWO file.
9486 So while object file CU dwo_id's always have the value zero,
9487 that's OK, assuming each object file DWO file has only one CU,
9488 and that's the rule for now. */
9489 return lhs->signature == rhs->signature;
9490}
9491
9492/* Allocate a hash table for DWO CUs,TUs.
9493 There is one of these tables for each of CUs,TUs for each DWO file. */
9494
9495static htab_t
9496allocate_dwo_unit_table (struct objfile *objfile)
9497{
9498 /* Start out with a pretty small number.
9499 Generally DWO files contain only one CU and maybe some TUs. */
9500 return htab_create_alloc_ex (3,
9501 hash_dwo_unit,
9502 eq_dwo_unit,
9503 NULL,
9504 &objfile->objfile_obstack,
9505 hashtab_obstack_allocate,
9506 dummy_obstack_deallocate);
9507}
9508
80626a55 9509/* Structure used to pass data to create_dwo_debug_info_hash_table_reader. */
3019eac3 9510
19c3d4c9 9511struct create_dwo_cu_data
3019eac3
DE
9512{
9513 struct dwo_file *dwo_file;
19c3d4c9 9514 struct dwo_unit dwo_unit;
3019eac3
DE
9515};
9516
19c3d4c9 9517/* die_reader_func for create_dwo_cu. */
3019eac3
DE
9518
9519static void
19c3d4c9
DE
9520create_dwo_cu_reader (const struct die_reader_specs *reader,
9521 const gdb_byte *info_ptr,
9522 struct die_info *comp_unit_die,
9523 int has_children,
9524 void *datap)
3019eac3
DE
9525{
9526 struct dwarf2_cu *cu = reader->cu;
9527 struct objfile *objfile = dwarf2_per_objfile->objfile;
9528 sect_offset offset = cu->per_cu->offset;
8a0459fd 9529 struct dwarf2_section_info *section = cu->per_cu->section;
19c3d4c9 9530 struct create_dwo_cu_data *data = datap;
3019eac3 9531 struct dwo_file *dwo_file = data->dwo_file;
19c3d4c9 9532 struct dwo_unit *dwo_unit = &data->dwo_unit;
3019eac3 9533 struct attribute *attr;
3019eac3
DE
9534
9535 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
9536 if (attr == NULL)
9537 {
19c3d4c9
DE
9538 complaint (&symfile_complaints,
9539 _("Dwarf Error: debug entry at offset 0x%x is missing"
9540 " its dwo_id [in module %s]"),
9541 offset.sect_off, dwo_file->dwo_name);
3019eac3
DE
9542 return;
9543 }
9544
3019eac3
DE
9545 dwo_unit->dwo_file = dwo_file;
9546 dwo_unit->signature = DW_UNSND (attr);
8a0459fd 9547 dwo_unit->section = section;
3019eac3
DE
9548 dwo_unit->offset = offset;
9549 dwo_unit->length = cu->per_cu->length;
9550
b4f54984 9551 if (dwarf_read_debug)
4031ecc5
DE
9552 fprintf_unfiltered (gdb_stdlog, " offset 0x%x, dwo_id %s\n",
9553 offset.sect_off, hex_string (dwo_unit->signature));
3019eac3
DE
9554}
9555
19c3d4c9
DE
9556/* Create the dwo_unit for the lone CU in DWO_FILE.
9557 Note: This function processes DWO files only, not DWP files. */
3019eac3 9558
19c3d4c9
DE
9559static struct dwo_unit *
9560create_dwo_cu (struct dwo_file *dwo_file)
3019eac3
DE
9561{
9562 struct objfile *objfile = dwarf2_per_objfile->objfile;
9563 struct dwarf2_section_info *section = &dwo_file->sections.info;
9564 bfd *abfd;
9565 htab_t cu_htab;
d521ce57 9566 const gdb_byte *info_ptr, *end_ptr;
19c3d4c9
DE
9567 struct create_dwo_cu_data create_dwo_cu_data;
9568 struct dwo_unit *dwo_unit;
3019eac3
DE
9569
9570 dwarf2_read_section (objfile, section);
9571 info_ptr = section->buffer;
9572
9573 if (info_ptr == NULL)
9574 return NULL;
9575
9576 /* We can't set abfd until now because the section may be empty or
9577 not present, in which case section->asection will be NULL. */
a32a8923 9578 abfd = get_section_bfd_owner (section);
3019eac3 9579
b4f54984 9580 if (dwarf_read_debug)
19c3d4c9
DE
9581 {
9582 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
a32a8923
DE
9583 get_section_name (section),
9584 get_section_file_name (section));
19c3d4c9 9585 }
3019eac3 9586
19c3d4c9
DE
9587 create_dwo_cu_data.dwo_file = dwo_file;
9588 dwo_unit = NULL;
3019eac3
DE
9589
9590 end_ptr = info_ptr + section->size;
9591 while (info_ptr < end_ptr)
9592 {
9593 struct dwarf2_per_cu_data per_cu;
9594
19c3d4c9
DE
9595 memset (&create_dwo_cu_data.dwo_unit, 0,
9596 sizeof (create_dwo_cu_data.dwo_unit));
3019eac3
DE
9597 memset (&per_cu, 0, sizeof (per_cu));
9598 per_cu.objfile = objfile;
9599 per_cu.is_debug_types = 0;
9600 per_cu.offset.sect_off = info_ptr - section->buffer;
8a0459fd 9601 per_cu.section = section;
3019eac3 9602
33e80786 9603 init_cutu_and_read_dies_no_follow (&per_cu, dwo_file,
19c3d4c9
DE
9604 create_dwo_cu_reader,
9605 &create_dwo_cu_data);
9606
9607 if (create_dwo_cu_data.dwo_unit.dwo_file != NULL)
9608 {
9609 /* If we've already found one, complain. We only support one
9610 because having more than one requires hacking the dwo_name of
9611 each to match, which is highly unlikely to happen. */
9612 if (dwo_unit != NULL)
9613 {
9614 complaint (&symfile_complaints,
9615 _("Multiple CUs in DWO file %s [in module %s]"),
4262abfb 9616 dwo_file->dwo_name, objfile_name (objfile));
19c3d4c9
DE
9617 break;
9618 }
9619
9620 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
9621 *dwo_unit = create_dwo_cu_data.dwo_unit;
9622 }
3019eac3
DE
9623
9624 info_ptr += per_cu.length;
9625 }
9626
19c3d4c9 9627 return dwo_unit;
3019eac3
DE
9628}
9629
80626a55
DE
9630/* DWP file .debug_{cu,tu}_index section format:
9631 [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
9632
d2415c6c
DE
9633 DWP Version 1:
9634
80626a55
DE
9635 Both index sections have the same format, and serve to map a 64-bit
9636 signature to a set of section numbers. Each section begins with a header,
9637 followed by a hash table of 64-bit signatures, a parallel table of 32-bit
9638 indexes, and a pool of 32-bit section numbers. The index sections will be
9639 aligned at 8-byte boundaries in the file.
9640
d2415c6c
DE
9641 The index section header consists of:
9642
9643 V, 32 bit version number
9644 -, 32 bits unused
9645 N, 32 bit number of compilation units or type units in the index
9646 M, 32 bit number of slots in the hash table
80626a55 9647
d2415c6c 9648 Numbers are recorded using the byte order of the application binary.
80626a55 9649
d2415c6c
DE
9650 The hash table begins at offset 16 in the section, and consists of an array
9651 of M 64-bit slots. Each slot contains a 64-bit signature (using the byte
9652 order of the application binary). Unused slots in the hash table are 0.
9653 (We rely on the extreme unlikeliness of a signature being exactly 0.)
80626a55 9654
d2415c6c
DE
9655 The parallel table begins immediately after the hash table
9656 (at offset 16 + 8 * M from the beginning of the section), and consists of an
9657 array of 32-bit indexes (using the byte order of the application binary),
9658 corresponding 1-1 with slots in the hash table. Each entry in the parallel
9659 table contains a 32-bit index into the pool of section numbers. For unused
9660 hash table slots, the corresponding entry in the parallel table will be 0.
80626a55 9661
73869dc2
DE
9662 The pool of section numbers begins immediately following the hash table
9663 (at offset 16 + 12 * M from the beginning of the section). The pool of
9664 section numbers consists of an array of 32-bit words (using the byte order
9665 of the application binary). Each item in the array is indexed starting
9666 from 0. The hash table entry provides the index of the first section
9667 number in the set. Additional section numbers in the set follow, and the
9668 set is terminated by a 0 entry (section number 0 is not used in ELF).
9669
9670 In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
9671 section must be the first entry in the set, and the .debug_abbrev.dwo must
9672 be the second entry. Other members of the set may follow in any order.
9673
9674 ---
9675
9676 DWP Version 2:
9677
9678 DWP Version 2 combines all the .debug_info, etc. sections into one,
9679 and the entries in the index tables are now offsets into these sections.
9680 CU offsets begin at 0. TU offsets begin at the size of the .debug_info
9681 section.
9682
9683 Index Section Contents:
9684 Header
9685 Hash Table of Signatures dwp_hash_table.hash_table
9686 Parallel Table of Indices dwp_hash_table.unit_table
9687 Table of Section Offsets dwp_hash_table.v2.{section_ids,offsets}
9688 Table of Section Sizes dwp_hash_table.v2.sizes
9689
9690 The index section header consists of:
9691
9692 V, 32 bit version number
9693 L, 32 bit number of columns in the table of section offsets
9694 N, 32 bit number of compilation units or type units in the index
9695 M, 32 bit number of slots in the hash table
9696
9697 Numbers are recorded using the byte order of the application binary.
9698
9699 The hash table has the same format as version 1.
9700 The parallel table of indices has the same format as version 1,
9701 except that the entries are origin-1 indices into the table of sections
9702 offsets and the table of section sizes.
9703
9704 The table of offsets begins immediately following the parallel table
9705 (at offset 16 + 12 * M from the beginning of the section). The table is
9706 a two-dimensional array of 32-bit words (using the byte order of the
9707 application binary), with L columns and N+1 rows, in row-major order.
9708 Each row in the array is indexed starting from 0. The first row provides
9709 a key to the remaining rows: each column in this row provides an identifier
9710 for a debug section, and the offsets in the same column of subsequent rows
9711 refer to that section. The section identifiers are:
9712
9713 DW_SECT_INFO 1 .debug_info.dwo
9714 DW_SECT_TYPES 2 .debug_types.dwo
9715 DW_SECT_ABBREV 3 .debug_abbrev.dwo
9716 DW_SECT_LINE 4 .debug_line.dwo
9717 DW_SECT_LOC 5 .debug_loc.dwo
9718 DW_SECT_STR_OFFSETS 6 .debug_str_offsets.dwo
9719 DW_SECT_MACINFO 7 .debug_macinfo.dwo
9720 DW_SECT_MACRO 8 .debug_macro.dwo
9721
9722 The offsets provided by the CU and TU index sections are the base offsets
9723 for the contributions made by each CU or TU to the corresponding section
9724 in the package file. Each CU and TU header contains an abbrev_offset
9725 field, used to find the abbreviations table for that CU or TU within the
9726 contribution to the .debug_abbrev.dwo section for that CU or TU, and should
9727 be interpreted as relative to the base offset given in the index section.
9728 Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
9729 should be interpreted as relative to the base offset for .debug_line.dwo,
9730 and offsets into other debug sections obtained from DWARF attributes should
9731 also be interpreted as relative to the corresponding base offset.
9732
9733 The table of sizes begins immediately following the table of offsets.
9734 Like the table of offsets, it is a two-dimensional array of 32-bit words,
9735 with L columns and N rows, in row-major order. Each row in the array is
9736 indexed starting from 1 (row 0 is shared by the two tables).
9737
9738 ---
9739
9740 Hash table lookup is handled the same in version 1 and 2:
9741
9742 We assume that N and M will not exceed 2^32 - 1.
9743 The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
9744
d2415c6c
DE
9745 Given a 64-bit compilation unit signature or a type signature S, an entry
9746 in the hash table is located as follows:
80626a55 9747
d2415c6c
DE
9748 1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
9749 the low-order k bits all set to 1.
80626a55 9750
d2415c6c 9751 2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
80626a55 9752
d2415c6c
DE
9753 3) If the hash table entry at index H matches the signature, use that
9754 entry. If the hash table entry at index H is unused (all zeroes),
9755 terminate the search: the signature is not present in the table.
80626a55 9756
d2415c6c 9757 4) Let H = (H + H') modulo M. Repeat at Step 3.
80626a55 9758
d2415c6c 9759 Because M > N and H' and M are relatively prime, the search is guaranteed
73869dc2 9760 to stop at an unused slot or find the match. */
80626a55
DE
9761
9762/* Create a hash table to map DWO IDs to their CU/TU entry in
9763 .debug_{info,types}.dwo in DWP_FILE.
9764 Returns NULL if there isn't one.
9765 Note: This function processes DWP files only, not DWO files. */
9766
9767static struct dwp_hash_table *
9768create_dwp_hash_table (struct dwp_file *dwp_file, int is_debug_types)
9769{
9770 struct objfile *objfile = dwarf2_per_objfile->objfile;
9771 bfd *dbfd = dwp_file->dbfd;
948f8e3d 9772 const gdb_byte *index_ptr, *index_end;
80626a55 9773 struct dwarf2_section_info *index;
73869dc2 9774 uint32_t version, nr_columns, nr_units, nr_slots;
80626a55
DE
9775 struct dwp_hash_table *htab;
9776
9777 if (is_debug_types)
9778 index = &dwp_file->sections.tu_index;
9779 else
9780 index = &dwp_file->sections.cu_index;
9781
9782 if (dwarf2_section_empty_p (index))
9783 return NULL;
9784 dwarf2_read_section (objfile, index);
9785
9786 index_ptr = index->buffer;
9787 index_end = index_ptr + index->size;
9788
9789 version = read_4_bytes (dbfd, index_ptr);
73869dc2
DE
9790 index_ptr += 4;
9791 if (version == 2)
9792 nr_columns = read_4_bytes (dbfd, index_ptr);
9793 else
9794 nr_columns = 0;
9795 index_ptr += 4;
80626a55
DE
9796 nr_units = read_4_bytes (dbfd, index_ptr);
9797 index_ptr += 4;
9798 nr_slots = read_4_bytes (dbfd, index_ptr);
9799 index_ptr += 4;
9800
73869dc2 9801 if (version != 1 && version != 2)
80626a55 9802 {
21aa081e 9803 error (_("Dwarf Error: unsupported DWP file version (%s)"
80626a55 9804 " [in module %s]"),
21aa081e 9805 pulongest (version), dwp_file->name);
80626a55
DE
9806 }
9807 if (nr_slots != (nr_slots & -nr_slots))
9808 {
21aa081e 9809 error (_("Dwarf Error: number of slots in DWP hash table (%s)"
80626a55 9810 " is not power of 2 [in module %s]"),
21aa081e 9811 pulongest (nr_slots), dwp_file->name);
80626a55
DE
9812 }
9813
9814 htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
73869dc2
DE
9815 htab->version = version;
9816 htab->nr_columns = nr_columns;
80626a55
DE
9817 htab->nr_units = nr_units;
9818 htab->nr_slots = nr_slots;
9819 htab->hash_table = index_ptr;
9820 htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
73869dc2
DE
9821
9822 /* Exit early if the table is empty. */
9823 if (nr_slots == 0 || nr_units == 0
9824 || (version == 2 && nr_columns == 0))
9825 {
9826 /* All must be zero. */
9827 if (nr_slots != 0 || nr_units != 0
9828 || (version == 2 && nr_columns != 0))
9829 {
9830 complaint (&symfile_complaints,
9831 _("Empty DWP but nr_slots,nr_units,nr_columns not"
9832 " all zero [in modules %s]"),
9833 dwp_file->name);
9834 }
9835 return htab;
9836 }
9837
9838 if (version == 1)
9839 {
9840 htab->section_pool.v1.indices =
9841 htab->unit_table + sizeof (uint32_t) * nr_slots;
9842 /* It's harder to decide whether the section is too small in v1.
9843 V1 is deprecated anyway so we punt. */
9844 }
9845 else
9846 {
9847 const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
9848 int *ids = htab->section_pool.v2.section_ids;
9849 /* Reverse map for error checking. */
9850 int ids_seen[DW_SECT_MAX + 1];
9851 int i;
9852
9853 if (nr_columns < 2)
9854 {
9855 error (_("Dwarf Error: bad DWP hash table, too few columns"
9856 " in section table [in module %s]"),
9857 dwp_file->name);
9858 }
9859 if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
9860 {
9861 error (_("Dwarf Error: bad DWP hash table, too many columns"
9862 " in section table [in module %s]"),
9863 dwp_file->name);
9864 }
9865 memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9866 memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9867 for (i = 0; i < nr_columns; ++i)
9868 {
9869 int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
9870
9871 if (id < DW_SECT_MIN || id > DW_SECT_MAX)
9872 {
9873 error (_("Dwarf Error: bad DWP hash table, bad section id %d"
9874 " in section table [in module %s]"),
9875 id, dwp_file->name);
9876 }
9877 if (ids_seen[id] != -1)
9878 {
9879 error (_("Dwarf Error: bad DWP hash table, duplicate section"
9880 " id %d in section table [in module %s]"),
9881 id, dwp_file->name);
9882 }
9883 ids_seen[id] = i;
9884 ids[i] = id;
9885 }
9886 /* Must have exactly one info or types section. */
9887 if (((ids_seen[DW_SECT_INFO] != -1)
9888 + (ids_seen[DW_SECT_TYPES] != -1))
9889 != 1)
9890 {
9891 error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
9892 " DWO info/types section [in module %s]"),
9893 dwp_file->name);
9894 }
9895 /* Must have an abbrev section. */
9896 if (ids_seen[DW_SECT_ABBREV] == -1)
9897 {
9898 error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
9899 " section [in module %s]"),
9900 dwp_file->name);
9901 }
9902 htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
9903 htab->section_pool.v2.sizes =
9904 htab->section_pool.v2.offsets + (sizeof (uint32_t)
9905 * nr_units * nr_columns);
9906 if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
9907 * nr_units * nr_columns))
9908 > index_end)
9909 {
9910 error (_("Dwarf Error: DWP index section is corrupt (too small)"
9911 " [in module %s]"),
9912 dwp_file->name);
9913 }
9914 }
80626a55
DE
9915
9916 return htab;
9917}
9918
9919/* Update SECTIONS with the data from SECTP.
9920
9921 This function is like the other "locate" section routines that are
9922 passed to bfd_map_over_sections, but in this context the sections to
73869dc2 9923 read comes from the DWP V1 hash table, not the full ELF section table.
80626a55
DE
9924
9925 The result is non-zero for success, or zero if an error was found. */
9926
9927static int
73869dc2
DE
9928locate_v1_virtual_dwo_sections (asection *sectp,
9929 struct virtual_v1_dwo_sections *sections)
80626a55
DE
9930{
9931 const struct dwop_section_names *names = &dwop_section_names;
9932
9933 if (section_is_p (sectp->name, &names->abbrev_dwo))
9934 {
9935 /* There can be only one. */
73869dc2 9936 if (sections->abbrev.s.asection != NULL)
80626a55 9937 return 0;
73869dc2 9938 sections->abbrev.s.asection = sectp;
80626a55
DE
9939 sections->abbrev.size = bfd_get_section_size (sectp);
9940 }
9941 else if (section_is_p (sectp->name, &names->info_dwo)
9942 || section_is_p (sectp->name, &names->types_dwo))
9943 {
9944 /* There can be only one. */
73869dc2 9945 if (sections->info_or_types.s.asection != NULL)
80626a55 9946 return 0;
73869dc2 9947 sections->info_or_types.s.asection = sectp;
80626a55
DE
9948 sections->info_or_types.size = bfd_get_section_size (sectp);
9949 }
9950 else if (section_is_p (sectp->name, &names->line_dwo))
9951 {
9952 /* There can be only one. */
73869dc2 9953 if (sections->line.s.asection != NULL)
80626a55 9954 return 0;
73869dc2 9955 sections->line.s.asection = sectp;
80626a55
DE
9956 sections->line.size = bfd_get_section_size (sectp);
9957 }
9958 else if (section_is_p (sectp->name, &names->loc_dwo))
9959 {
9960 /* There can be only one. */
73869dc2 9961 if (sections->loc.s.asection != NULL)
80626a55 9962 return 0;
73869dc2 9963 sections->loc.s.asection = sectp;
80626a55
DE
9964 sections->loc.size = bfd_get_section_size (sectp);
9965 }
9966 else if (section_is_p (sectp->name, &names->macinfo_dwo))
9967 {
9968 /* There can be only one. */
73869dc2 9969 if (sections->macinfo.s.asection != NULL)
80626a55 9970 return 0;
73869dc2 9971 sections->macinfo.s.asection = sectp;
80626a55
DE
9972 sections->macinfo.size = bfd_get_section_size (sectp);
9973 }
9974 else if (section_is_p (sectp->name, &names->macro_dwo))
9975 {
9976 /* There can be only one. */
73869dc2 9977 if (sections->macro.s.asection != NULL)
80626a55 9978 return 0;
73869dc2 9979 sections->macro.s.asection = sectp;
80626a55
DE
9980 sections->macro.size = bfd_get_section_size (sectp);
9981 }
9982 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
9983 {
9984 /* There can be only one. */
73869dc2 9985 if (sections->str_offsets.s.asection != NULL)
80626a55 9986 return 0;
73869dc2 9987 sections->str_offsets.s.asection = sectp;
80626a55
DE
9988 sections->str_offsets.size = bfd_get_section_size (sectp);
9989 }
9990 else
9991 {
9992 /* No other kind of section is valid. */
9993 return 0;
9994 }
9995
9996 return 1;
9997}
9998
73869dc2
DE
9999/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
10000 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
10001 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
10002 This is for DWP version 1 files. */
80626a55
DE
10003
10004static struct dwo_unit *
73869dc2
DE
10005create_dwo_unit_in_dwp_v1 (struct dwp_file *dwp_file,
10006 uint32_t unit_index,
10007 const char *comp_dir,
10008 ULONGEST signature, int is_debug_types)
80626a55
DE
10009{
10010 struct objfile *objfile = dwarf2_per_objfile->objfile;
73869dc2
DE
10011 const struct dwp_hash_table *dwp_htab =
10012 is_debug_types ? dwp_file->tus : dwp_file->cus;
80626a55
DE
10013 bfd *dbfd = dwp_file->dbfd;
10014 const char *kind = is_debug_types ? "TU" : "CU";
10015 struct dwo_file *dwo_file;
10016 struct dwo_unit *dwo_unit;
73869dc2 10017 struct virtual_v1_dwo_sections sections;
80626a55
DE
10018 void **dwo_file_slot;
10019 char *virtual_dwo_name;
10020 struct dwarf2_section_info *cutu;
10021 struct cleanup *cleanups;
10022 int i;
10023
73869dc2
DE
10024 gdb_assert (dwp_file->version == 1);
10025
b4f54984 10026 if (dwarf_read_debug)
80626a55 10027 {
73869dc2 10028 fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
80626a55 10029 kind,
73869dc2 10030 pulongest (unit_index), hex_string (signature),
80626a55
DE
10031 dwp_file->name);
10032 }
10033
19ac8c2e 10034 /* Fetch the sections of this DWO unit.
80626a55
DE
10035 Put a limit on the number of sections we look for so that bad data
10036 doesn't cause us to loop forever. */
10037
73869dc2 10038#define MAX_NR_V1_DWO_SECTIONS \
80626a55
DE
10039 (1 /* .debug_info or .debug_types */ \
10040 + 1 /* .debug_abbrev */ \
10041 + 1 /* .debug_line */ \
10042 + 1 /* .debug_loc */ \
10043 + 1 /* .debug_str_offsets */ \
19ac8c2e 10044 + 1 /* .debug_macro or .debug_macinfo */ \
80626a55
DE
10045 + 1 /* trailing zero */)
10046
10047 memset (&sections, 0, sizeof (sections));
10048 cleanups = make_cleanup (null_cleanup, 0);
10049
73869dc2 10050 for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
80626a55
DE
10051 {
10052 asection *sectp;
10053 uint32_t section_nr =
10054 read_4_bytes (dbfd,
73869dc2
DE
10055 dwp_htab->section_pool.v1.indices
10056 + (unit_index + i) * sizeof (uint32_t));
80626a55
DE
10057
10058 if (section_nr == 0)
10059 break;
10060 if (section_nr >= dwp_file->num_sections)
10061 {
10062 error (_("Dwarf Error: bad DWP hash table, section number too large"
10063 " [in module %s]"),
10064 dwp_file->name);
10065 }
10066
10067 sectp = dwp_file->elf_sections[section_nr];
73869dc2 10068 if (! locate_v1_virtual_dwo_sections (sectp, &sections))
80626a55
DE
10069 {
10070 error (_("Dwarf Error: bad DWP hash table, invalid section found"
10071 " [in module %s]"),
10072 dwp_file->name);
10073 }
10074 }
10075
10076 if (i < 2
a32a8923
DE
10077 || dwarf2_section_empty_p (&sections.info_or_types)
10078 || dwarf2_section_empty_p (&sections.abbrev))
80626a55
DE
10079 {
10080 error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
10081 " [in module %s]"),
10082 dwp_file->name);
10083 }
73869dc2 10084 if (i == MAX_NR_V1_DWO_SECTIONS)
80626a55
DE
10085 {
10086 error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
10087 " [in module %s]"),
10088 dwp_file->name);
10089 }
10090
10091 /* It's easier for the rest of the code if we fake a struct dwo_file and
10092 have dwo_unit "live" in that. At least for now.
10093
10094 The DWP file can be made up of a random collection of CUs and TUs.
c766f7ec 10095 However, for each CU + set of TUs that came from the same original DWO
57d63ce2
DE
10096 file, we can combine them back into a virtual DWO file to save space
10097 (fewer struct dwo_file objects to allocate). Remember that for really
80626a55
DE
10098 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
10099
2792b94d
PM
10100 virtual_dwo_name =
10101 xstrprintf ("virtual-dwo/%d-%d-%d-%d",
a32a8923
DE
10102 get_section_id (&sections.abbrev),
10103 get_section_id (&sections.line),
10104 get_section_id (&sections.loc),
10105 get_section_id (&sections.str_offsets));
80626a55
DE
10106 make_cleanup (xfree, virtual_dwo_name);
10107 /* Can we use an existing virtual DWO file? */
0ac5b59e 10108 dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
80626a55
DE
10109 /* Create one if necessary. */
10110 if (*dwo_file_slot == NULL)
10111 {
b4f54984 10112 if (dwarf_read_debug)
80626a55
DE
10113 {
10114 fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
10115 virtual_dwo_name);
10116 }
10117 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
0ac5b59e
DE
10118 dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
10119 virtual_dwo_name,
10120 strlen (virtual_dwo_name));
10121 dwo_file->comp_dir = comp_dir;
80626a55
DE
10122 dwo_file->sections.abbrev = sections.abbrev;
10123 dwo_file->sections.line = sections.line;
10124 dwo_file->sections.loc = sections.loc;
10125 dwo_file->sections.macinfo = sections.macinfo;
10126 dwo_file->sections.macro = sections.macro;
10127 dwo_file->sections.str_offsets = sections.str_offsets;
10128 /* The "str" section is global to the entire DWP file. */
10129 dwo_file->sections.str = dwp_file->sections.str;
57d63ce2 10130 /* The info or types section is assigned below to dwo_unit,
80626a55
DE
10131 there's no need to record it in dwo_file.
10132 Also, we can't simply record type sections in dwo_file because
10133 we record a pointer into the vector in dwo_unit. As we collect more
10134 types we'll grow the vector and eventually have to reallocate space
57d63ce2
DE
10135 for it, invalidating all copies of pointers into the previous
10136 contents. */
80626a55
DE
10137 *dwo_file_slot = dwo_file;
10138 }
10139 else
10140 {
b4f54984 10141 if (dwarf_read_debug)
80626a55
DE
10142 {
10143 fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10144 virtual_dwo_name);
10145 }
10146 dwo_file = *dwo_file_slot;
10147 }
10148 do_cleanups (cleanups);
10149
10150 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10151 dwo_unit->dwo_file = dwo_file;
10152 dwo_unit->signature = signature;
8a0459fd
DE
10153 dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
10154 sizeof (struct dwarf2_section_info));
10155 *dwo_unit->section = sections.info_or_types;
57d63ce2 10156 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
80626a55
DE
10157
10158 return dwo_unit;
10159}
10160
73869dc2
DE
10161/* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
10162 Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
10163 piece within that section used by a TU/CU, return a virtual section
10164 of just that piece. */
10165
10166static struct dwarf2_section_info
10167create_dwp_v2_section (struct dwarf2_section_info *section,
10168 bfd_size_type offset, bfd_size_type size)
10169{
10170 struct dwarf2_section_info result;
10171 asection *sectp;
10172
10173 gdb_assert (section != NULL);
10174 gdb_assert (!section->is_virtual);
10175
10176 memset (&result, 0, sizeof (result));
10177 result.s.containing_section = section;
10178 result.is_virtual = 1;
10179
10180 if (size == 0)
10181 return result;
10182
10183 sectp = get_section_bfd_section (section);
10184
10185 /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
10186 bounds of the real section. This is a pretty-rare event, so just
10187 flag an error (easier) instead of a warning and trying to cope. */
10188 if (sectp == NULL
10189 || offset + size > bfd_get_section_size (sectp))
10190 {
10191 bfd *abfd = sectp->owner;
10192
10193 error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
10194 " in section %s [in module %s]"),
10195 sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
10196 objfile_name (dwarf2_per_objfile->objfile));
10197 }
10198
10199 result.virtual_offset = offset;
10200 result.size = size;
10201 return result;
10202}
10203
10204/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
10205 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
10206 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
10207 This is for DWP version 2 files. */
10208
10209static struct dwo_unit *
10210create_dwo_unit_in_dwp_v2 (struct dwp_file *dwp_file,
10211 uint32_t unit_index,
10212 const char *comp_dir,
10213 ULONGEST signature, int is_debug_types)
10214{
10215 struct objfile *objfile = dwarf2_per_objfile->objfile;
10216 const struct dwp_hash_table *dwp_htab =
10217 is_debug_types ? dwp_file->tus : dwp_file->cus;
10218 bfd *dbfd = dwp_file->dbfd;
10219 const char *kind = is_debug_types ? "TU" : "CU";
10220 struct dwo_file *dwo_file;
10221 struct dwo_unit *dwo_unit;
10222 struct virtual_v2_dwo_sections sections;
10223 void **dwo_file_slot;
10224 char *virtual_dwo_name;
10225 struct dwarf2_section_info *cutu;
10226 struct cleanup *cleanups;
10227 int i;
10228
10229 gdb_assert (dwp_file->version == 2);
10230
b4f54984 10231 if (dwarf_read_debug)
73869dc2
DE
10232 {
10233 fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
10234 kind,
10235 pulongest (unit_index), hex_string (signature),
10236 dwp_file->name);
10237 }
10238
10239 /* Fetch the section offsets of this DWO unit. */
10240
10241 memset (&sections, 0, sizeof (sections));
10242 cleanups = make_cleanup (null_cleanup, 0);
10243
10244 for (i = 0; i < dwp_htab->nr_columns; ++i)
10245 {
10246 uint32_t offset = read_4_bytes (dbfd,
10247 dwp_htab->section_pool.v2.offsets
10248 + (((unit_index - 1) * dwp_htab->nr_columns
10249 + i)
10250 * sizeof (uint32_t)));
10251 uint32_t size = read_4_bytes (dbfd,
10252 dwp_htab->section_pool.v2.sizes
10253 + (((unit_index - 1) * dwp_htab->nr_columns
10254 + i)
10255 * sizeof (uint32_t)));
10256
10257 switch (dwp_htab->section_pool.v2.section_ids[i])
10258 {
10259 case DW_SECT_INFO:
10260 case DW_SECT_TYPES:
10261 sections.info_or_types_offset = offset;
10262 sections.info_or_types_size = size;
10263 break;
10264 case DW_SECT_ABBREV:
10265 sections.abbrev_offset = offset;
10266 sections.abbrev_size = size;
10267 break;
10268 case DW_SECT_LINE:
10269 sections.line_offset = offset;
10270 sections.line_size = size;
10271 break;
10272 case DW_SECT_LOC:
10273 sections.loc_offset = offset;
10274 sections.loc_size = size;
10275 break;
10276 case DW_SECT_STR_OFFSETS:
10277 sections.str_offsets_offset = offset;
10278 sections.str_offsets_size = size;
10279 break;
10280 case DW_SECT_MACINFO:
10281 sections.macinfo_offset = offset;
10282 sections.macinfo_size = size;
10283 break;
10284 case DW_SECT_MACRO:
10285 sections.macro_offset = offset;
10286 sections.macro_size = size;
10287 break;
10288 }
10289 }
10290
10291 /* It's easier for the rest of the code if we fake a struct dwo_file and
10292 have dwo_unit "live" in that. At least for now.
10293
10294 The DWP file can be made up of a random collection of CUs and TUs.
10295 However, for each CU + set of TUs that came from the same original DWO
10296 file, we can combine them back into a virtual DWO file to save space
10297 (fewer struct dwo_file objects to allocate). Remember that for really
10298 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
10299
10300 virtual_dwo_name =
10301 xstrprintf ("virtual-dwo/%ld-%ld-%ld-%ld",
10302 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
10303 (long) (sections.line_size ? sections.line_offset : 0),
10304 (long) (sections.loc_size ? sections.loc_offset : 0),
10305 (long) (sections.str_offsets_size
10306 ? sections.str_offsets_offset : 0));
10307 make_cleanup (xfree, virtual_dwo_name);
10308 /* Can we use an existing virtual DWO file? */
10309 dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
10310 /* Create one if necessary. */
10311 if (*dwo_file_slot == NULL)
10312 {
b4f54984 10313 if (dwarf_read_debug)
73869dc2
DE
10314 {
10315 fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
10316 virtual_dwo_name);
10317 }
10318 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
10319 dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
10320 virtual_dwo_name,
10321 strlen (virtual_dwo_name));
10322 dwo_file->comp_dir = comp_dir;
10323 dwo_file->sections.abbrev =
10324 create_dwp_v2_section (&dwp_file->sections.abbrev,
10325 sections.abbrev_offset, sections.abbrev_size);
10326 dwo_file->sections.line =
10327 create_dwp_v2_section (&dwp_file->sections.line,
10328 sections.line_offset, sections.line_size);
10329 dwo_file->sections.loc =
10330 create_dwp_v2_section (&dwp_file->sections.loc,
10331 sections.loc_offset, sections.loc_size);
10332 dwo_file->sections.macinfo =
10333 create_dwp_v2_section (&dwp_file->sections.macinfo,
10334 sections.macinfo_offset, sections.macinfo_size);
10335 dwo_file->sections.macro =
10336 create_dwp_v2_section (&dwp_file->sections.macro,
10337 sections.macro_offset, sections.macro_size);
10338 dwo_file->sections.str_offsets =
10339 create_dwp_v2_section (&dwp_file->sections.str_offsets,
10340 sections.str_offsets_offset,
10341 sections.str_offsets_size);
10342 /* The "str" section is global to the entire DWP file. */
10343 dwo_file->sections.str = dwp_file->sections.str;
10344 /* The info or types section is assigned below to dwo_unit,
10345 there's no need to record it in dwo_file.
10346 Also, we can't simply record type sections in dwo_file because
10347 we record a pointer into the vector in dwo_unit. As we collect more
10348 types we'll grow the vector and eventually have to reallocate space
10349 for it, invalidating all copies of pointers into the previous
10350 contents. */
10351 *dwo_file_slot = dwo_file;
10352 }
10353 else
10354 {
b4f54984 10355 if (dwarf_read_debug)
73869dc2
DE
10356 {
10357 fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10358 virtual_dwo_name);
10359 }
10360 dwo_file = *dwo_file_slot;
10361 }
10362 do_cleanups (cleanups);
10363
10364 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10365 dwo_unit->dwo_file = dwo_file;
10366 dwo_unit->signature = signature;
10367 dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
10368 sizeof (struct dwarf2_section_info));
10369 *dwo_unit->section = create_dwp_v2_section (is_debug_types
10370 ? &dwp_file->sections.types
10371 : &dwp_file->sections.info,
10372 sections.info_or_types_offset,
10373 sections.info_or_types_size);
10374 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
10375
10376 return dwo_unit;
10377}
10378
57d63ce2
DE
10379/* Lookup the DWO unit with SIGNATURE in DWP_FILE.
10380 Returns NULL if the signature isn't found. */
80626a55
DE
10381
10382static struct dwo_unit *
57d63ce2
DE
10383lookup_dwo_unit_in_dwp (struct dwp_file *dwp_file, const char *comp_dir,
10384 ULONGEST signature, int is_debug_types)
80626a55 10385{
57d63ce2
DE
10386 const struct dwp_hash_table *dwp_htab =
10387 is_debug_types ? dwp_file->tus : dwp_file->cus;
80626a55 10388 bfd *dbfd = dwp_file->dbfd;
57d63ce2 10389 uint32_t mask = dwp_htab->nr_slots - 1;
80626a55
DE
10390 uint32_t hash = signature & mask;
10391 uint32_t hash2 = ((signature >> 32) & mask) | 1;
10392 unsigned int i;
10393 void **slot;
10394 struct dwo_unit find_dwo_cu, *dwo_cu;
10395
10396 memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
10397 find_dwo_cu.signature = signature;
19ac8c2e
DE
10398 slot = htab_find_slot (is_debug_types
10399 ? dwp_file->loaded_tus
10400 : dwp_file->loaded_cus,
10401 &find_dwo_cu, INSERT);
80626a55
DE
10402
10403 if (*slot != NULL)
10404 return *slot;
10405
10406 /* Use a for loop so that we don't loop forever on bad debug info. */
57d63ce2 10407 for (i = 0; i < dwp_htab->nr_slots; ++i)
80626a55
DE
10408 {
10409 ULONGEST signature_in_table;
10410
10411 signature_in_table =
57d63ce2 10412 read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
80626a55
DE
10413 if (signature_in_table == signature)
10414 {
57d63ce2
DE
10415 uint32_t unit_index =
10416 read_4_bytes (dbfd,
10417 dwp_htab->unit_table + hash * sizeof (uint32_t));
80626a55 10418
73869dc2
DE
10419 if (dwp_file->version == 1)
10420 {
10421 *slot = create_dwo_unit_in_dwp_v1 (dwp_file, unit_index,
10422 comp_dir, signature,
10423 is_debug_types);
10424 }
10425 else
10426 {
10427 *slot = create_dwo_unit_in_dwp_v2 (dwp_file, unit_index,
10428 comp_dir, signature,
10429 is_debug_types);
10430 }
80626a55
DE
10431 return *slot;
10432 }
10433 if (signature_in_table == 0)
10434 return NULL;
10435 hash = (hash + hash2) & mask;
10436 }
10437
10438 error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
10439 " [in module %s]"),
10440 dwp_file->name);
10441}
10442
ab5088bf 10443/* Subroutine of open_dwo_file,open_dwp_file to simplify them.
3019eac3
DE
10444 Open the file specified by FILE_NAME and hand it off to BFD for
10445 preliminary analysis. Return a newly initialized bfd *, which
10446 includes a canonicalized copy of FILE_NAME.
80626a55 10447 If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
6ac97d4c
DE
10448 SEARCH_CWD is true if the current directory is to be searched.
10449 It will be searched before debug-file-directory.
13aaf454
DE
10450 If successful, the file is added to the bfd include table of the
10451 objfile's bfd (see gdb_bfd_record_inclusion).
6ac97d4c 10452 If unable to find/open the file, return NULL.
3019eac3
DE
10453 NOTE: This function is derived from symfile_bfd_open. */
10454
10455static bfd *
6ac97d4c 10456try_open_dwop_file (const char *file_name, int is_dwp, int search_cwd)
3019eac3
DE
10457{
10458 bfd *sym_bfd;
80626a55 10459 int desc, flags;
3019eac3 10460 char *absolute_name;
9c02c129
DE
10461 /* Blech. OPF_TRY_CWD_FIRST also disables searching the path list if
10462 FILE_NAME contains a '/'. So we can't use it. Instead prepend "."
10463 to debug_file_directory. */
10464 char *search_path;
10465 static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
10466
6ac97d4c
DE
10467 if (search_cwd)
10468 {
10469 if (*debug_file_directory != '\0')
10470 search_path = concat (".", dirname_separator_string,
10471 debug_file_directory, NULL);
10472 else
10473 search_path = xstrdup (".");
10474 }
9c02c129 10475 else
6ac97d4c 10476 search_path = xstrdup (debug_file_directory);
3019eac3 10477
492c0ab7 10478 flags = OPF_RETURN_REALPATH;
80626a55
DE
10479 if (is_dwp)
10480 flags |= OPF_SEARCH_IN_PATH;
9c02c129 10481 desc = openp (search_path, flags, file_name,
3019eac3 10482 O_RDONLY | O_BINARY, &absolute_name);
9c02c129 10483 xfree (search_path);
3019eac3
DE
10484 if (desc < 0)
10485 return NULL;
10486
bb397797 10487 sym_bfd = gdb_bfd_open (absolute_name, gnutarget, desc);
a4453b7e 10488 xfree (absolute_name);
9c02c129
DE
10489 if (sym_bfd == NULL)
10490 return NULL;
3019eac3
DE
10491 bfd_set_cacheable (sym_bfd, 1);
10492
10493 if (!bfd_check_format (sym_bfd, bfd_object))
10494 {
cbb099e8 10495 gdb_bfd_unref (sym_bfd); /* This also closes desc. */
3019eac3
DE
10496 return NULL;
10497 }
10498
13aaf454
DE
10499 /* Success. Record the bfd as having been included by the objfile's bfd.
10500 This is important because things like demangled_names_hash lives in the
10501 objfile's per_bfd space and may have references to things like symbol
10502 names that live in the DWO/DWP file's per_bfd space. PR 16426. */
10503 gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd);
10504
3019eac3
DE
10505 return sym_bfd;
10506}
10507
ab5088bf 10508/* Try to open DWO file FILE_NAME.
3019eac3
DE
10509 COMP_DIR is the DW_AT_comp_dir attribute.
10510 The result is the bfd handle of the file.
10511 If there is a problem finding or opening the file, return NULL.
10512 Upon success, the canonicalized path of the file is stored in the bfd,
10513 same as symfile_bfd_open. */
10514
10515static bfd *
ab5088bf 10516open_dwo_file (const char *file_name, const char *comp_dir)
3019eac3
DE
10517{
10518 bfd *abfd;
3019eac3 10519
80626a55 10520 if (IS_ABSOLUTE_PATH (file_name))
6ac97d4c 10521 return try_open_dwop_file (file_name, 0 /*is_dwp*/, 0 /*search_cwd*/);
3019eac3
DE
10522
10523 /* Before trying the search path, try DWO_NAME in COMP_DIR. */
10524
10525 if (comp_dir != NULL)
10526 {
80626a55 10527 char *path_to_try = concat (comp_dir, SLASH_STRING, file_name, NULL);
3019eac3
DE
10528
10529 /* NOTE: If comp_dir is a relative path, this will also try the
10530 search path, which seems useful. */
6ac97d4c 10531 abfd = try_open_dwop_file (path_to_try, 0 /*is_dwp*/, 1 /*search_cwd*/);
3019eac3
DE
10532 xfree (path_to_try);
10533 if (abfd != NULL)
10534 return abfd;
10535 }
10536
10537 /* That didn't work, try debug-file-directory, which, despite its name,
10538 is a list of paths. */
10539
10540 if (*debug_file_directory == '\0')
10541 return NULL;
10542
6ac97d4c 10543 return try_open_dwop_file (file_name, 0 /*is_dwp*/, 1 /*search_cwd*/);
3019eac3
DE
10544}
10545
80626a55
DE
10546/* This function is mapped across the sections and remembers the offset and
10547 size of each of the DWO debugging sections we are interested in. */
10548
10549static void
10550dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
10551{
10552 struct dwo_sections *dwo_sections = dwo_sections_ptr;
10553 const struct dwop_section_names *names = &dwop_section_names;
10554
10555 if (section_is_p (sectp->name, &names->abbrev_dwo))
10556 {
73869dc2 10557 dwo_sections->abbrev.s.asection = sectp;
80626a55
DE
10558 dwo_sections->abbrev.size = bfd_get_section_size (sectp);
10559 }
10560 else if (section_is_p (sectp->name, &names->info_dwo))
10561 {
73869dc2 10562 dwo_sections->info.s.asection = sectp;
80626a55
DE
10563 dwo_sections->info.size = bfd_get_section_size (sectp);
10564 }
10565 else if (section_is_p (sectp->name, &names->line_dwo))
10566 {
73869dc2 10567 dwo_sections->line.s.asection = sectp;
80626a55
DE
10568 dwo_sections->line.size = bfd_get_section_size (sectp);
10569 }
10570 else if (section_is_p (sectp->name, &names->loc_dwo))
10571 {
73869dc2 10572 dwo_sections->loc.s.asection = sectp;
80626a55
DE
10573 dwo_sections->loc.size = bfd_get_section_size (sectp);
10574 }
10575 else if (section_is_p (sectp->name, &names->macinfo_dwo))
10576 {
73869dc2 10577 dwo_sections->macinfo.s.asection = sectp;
80626a55
DE
10578 dwo_sections->macinfo.size = bfd_get_section_size (sectp);
10579 }
10580 else if (section_is_p (sectp->name, &names->macro_dwo))
10581 {
73869dc2 10582 dwo_sections->macro.s.asection = sectp;
80626a55
DE
10583 dwo_sections->macro.size = bfd_get_section_size (sectp);
10584 }
10585 else if (section_is_p (sectp->name, &names->str_dwo))
10586 {
73869dc2 10587 dwo_sections->str.s.asection = sectp;
80626a55
DE
10588 dwo_sections->str.size = bfd_get_section_size (sectp);
10589 }
10590 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10591 {
73869dc2 10592 dwo_sections->str_offsets.s.asection = sectp;
80626a55
DE
10593 dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
10594 }
10595 else if (section_is_p (sectp->name, &names->types_dwo))
10596 {
10597 struct dwarf2_section_info type_section;
10598
10599 memset (&type_section, 0, sizeof (type_section));
73869dc2 10600 type_section.s.asection = sectp;
80626a55
DE
10601 type_section.size = bfd_get_section_size (sectp);
10602 VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
10603 &type_section);
10604 }
10605}
10606
ab5088bf 10607/* Initialize the use of the DWO file specified by DWO_NAME and referenced
19c3d4c9 10608 by PER_CU. This is for the non-DWP case.
80626a55 10609 The result is NULL if DWO_NAME can't be found. */
3019eac3
DE
10610
10611static struct dwo_file *
0ac5b59e
DE
10612open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
10613 const char *dwo_name, const char *comp_dir)
3019eac3
DE
10614{
10615 struct objfile *objfile = dwarf2_per_objfile->objfile;
80626a55
DE
10616 struct dwo_file *dwo_file;
10617 bfd *dbfd;
3019eac3
DE
10618 struct cleanup *cleanups;
10619
ab5088bf 10620 dbfd = open_dwo_file (dwo_name, comp_dir);
80626a55
DE
10621 if (dbfd == NULL)
10622 {
b4f54984 10623 if (dwarf_read_debug)
80626a55
DE
10624 fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
10625 return NULL;
10626 }
10627 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
0ac5b59e
DE
10628 dwo_file->dwo_name = dwo_name;
10629 dwo_file->comp_dir = comp_dir;
80626a55 10630 dwo_file->dbfd = dbfd;
3019eac3
DE
10631
10632 cleanups = make_cleanup (free_dwo_file_cleanup, dwo_file);
10633
80626a55 10634 bfd_map_over_sections (dbfd, dwarf2_locate_dwo_sections, &dwo_file->sections);
3019eac3 10635
19c3d4c9 10636 dwo_file->cu = create_dwo_cu (dwo_file);
3019eac3
DE
10637
10638 dwo_file->tus = create_debug_types_hash_table (dwo_file,
10639 dwo_file->sections.types);
10640
10641 discard_cleanups (cleanups);
10642
b4f54984 10643 if (dwarf_read_debug)
80626a55
DE
10644 fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
10645
3019eac3
DE
10646 return dwo_file;
10647}
10648
80626a55 10649/* This function is mapped across the sections and remembers the offset and
73869dc2
DE
10650 size of each of the DWP debugging sections common to version 1 and 2 that
10651 we are interested in. */
3019eac3 10652
80626a55 10653static void
73869dc2
DE
10654dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
10655 void *dwp_file_ptr)
3019eac3 10656{
80626a55
DE
10657 struct dwp_file *dwp_file = dwp_file_ptr;
10658 const struct dwop_section_names *names = &dwop_section_names;
10659 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
3019eac3 10660
80626a55 10661 /* Record the ELF section number for later lookup: this is what the
73869dc2 10662 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
80626a55
DE
10663 gdb_assert (elf_section_nr < dwp_file->num_sections);
10664 dwp_file->elf_sections[elf_section_nr] = sectp;
3019eac3 10665
80626a55
DE
10666 /* Look for specific sections that we need. */
10667 if (section_is_p (sectp->name, &names->str_dwo))
10668 {
73869dc2 10669 dwp_file->sections.str.s.asection = sectp;
80626a55
DE
10670 dwp_file->sections.str.size = bfd_get_section_size (sectp);
10671 }
10672 else if (section_is_p (sectp->name, &names->cu_index))
10673 {
73869dc2 10674 dwp_file->sections.cu_index.s.asection = sectp;
80626a55
DE
10675 dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
10676 }
10677 else if (section_is_p (sectp->name, &names->tu_index))
10678 {
73869dc2 10679 dwp_file->sections.tu_index.s.asection = sectp;
80626a55
DE
10680 dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
10681 }
10682}
3019eac3 10683
73869dc2
DE
10684/* This function is mapped across the sections and remembers the offset and
10685 size of each of the DWP version 2 debugging sections that we are interested
10686 in. This is split into a separate function because we don't know if we
10687 have version 1 or 2 until we parse the cu_index/tu_index sections. */
10688
10689static void
10690dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
10691{
10692 struct dwp_file *dwp_file = dwp_file_ptr;
10693 const struct dwop_section_names *names = &dwop_section_names;
10694 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10695
10696 /* Record the ELF section number for later lookup: this is what the
10697 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
10698 gdb_assert (elf_section_nr < dwp_file->num_sections);
10699 dwp_file->elf_sections[elf_section_nr] = sectp;
10700
10701 /* Look for specific sections that we need. */
10702 if (section_is_p (sectp->name, &names->abbrev_dwo))
10703 {
10704 dwp_file->sections.abbrev.s.asection = sectp;
10705 dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
10706 }
10707 else if (section_is_p (sectp->name, &names->info_dwo))
10708 {
10709 dwp_file->sections.info.s.asection = sectp;
10710 dwp_file->sections.info.size = bfd_get_section_size (sectp);
10711 }
10712 else if (section_is_p (sectp->name, &names->line_dwo))
10713 {
10714 dwp_file->sections.line.s.asection = sectp;
10715 dwp_file->sections.line.size = bfd_get_section_size (sectp);
10716 }
10717 else if (section_is_p (sectp->name, &names->loc_dwo))
10718 {
10719 dwp_file->sections.loc.s.asection = sectp;
10720 dwp_file->sections.loc.size = bfd_get_section_size (sectp);
10721 }
10722 else if (section_is_p (sectp->name, &names->macinfo_dwo))
10723 {
10724 dwp_file->sections.macinfo.s.asection = sectp;
10725 dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
10726 }
10727 else if (section_is_p (sectp->name, &names->macro_dwo))
10728 {
10729 dwp_file->sections.macro.s.asection = sectp;
10730 dwp_file->sections.macro.size = bfd_get_section_size (sectp);
10731 }
10732 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10733 {
10734 dwp_file->sections.str_offsets.s.asection = sectp;
10735 dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
10736 }
10737 else if (section_is_p (sectp->name, &names->types_dwo))
10738 {
10739 dwp_file->sections.types.s.asection = sectp;
10740 dwp_file->sections.types.size = bfd_get_section_size (sectp);
10741 }
10742}
10743
80626a55 10744/* Hash function for dwp_file loaded CUs/TUs. */
3019eac3 10745
80626a55
DE
10746static hashval_t
10747hash_dwp_loaded_cutus (const void *item)
10748{
10749 const struct dwo_unit *dwo_unit = item;
3019eac3 10750
80626a55
DE
10751 /* This drops the top 32 bits of the signature, but is ok for a hash. */
10752 return dwo_unit->signature;
3019eac3
DE
10753}
10754
80626a55 10755/* Equality function for dwp_file loaded CUs/TUs. */
3019eac3 10756
80626a55
DE
10757static int
10758eq_dwp_loaded_cutus (const void *a, const void *b)
3019eac3 10759{
80626a55
DE
10760 const struct dwo_unit *dua = a;
10761 const struct dwo_unit *dub = b;
3019eac3 10762
80626a55
DE
10763 return dua->signature == dub->signature;
10764}
3019eac3 10765
80626a55 10766/* Allocate a hash table for dwp_file loaded CUs/TUs. */
3019eac3 10767
80626a55
DE
10768static htab_t
10769allocate_dwp_loaded_cutus_table (struct objfile *objfile)
10770{
10771 return htab_create_alloc_ex (3,
10772 hash_dwp_loaded_cutus,
10773 eq_dwp_loaded_cutus,
10774 NULL,
10775 &objfile->objfile_obstack,
10776 hashtab_obstack_allocate,
10777 dummy_obstack_deallocate);
10778}
3019eac3 10779
ab5088bf
DE
10780/* Try to open DWP file FILE_NAME.
10781 The result is the bfd handle of the file.
10782 If there is a problem finding or opening the file, return NULL.
10783 Upon success, the canonicalized path of the file is stored in the bfd,
10784 same as symfile_bfd_open. */
10785
10786static bfd *
10787open_dwp_file (const char *file_name)
10788{
6ac97d4c
DE
10789 bfd *abfd;
10790
10791 abfd = try_open_dwop_file (file_name, 1 /*is_dwp*/, 1 /*search_cwd*/);
10792 if (abfd != NULL)
10793 return abfd;
10794
10795 /* Work around upstream bug 15652.
10796 http://sourceware.org/bugzilla/show_bug.cgi?id=15652
10797 [Whether that's a "bug" is debatable, but it is getting in our way.]
10798 We have no real idea where the dwp file is, because gdb's realpath-ing
10799 of the executable's path may have discarded the needed info.
10800 [IWBN if the dwp file name was recorded in the executable, akin to
10801 .gnu_debuglink, but that doesn't exist yet.]
10802 Strip the directory from FILE_NAME and search again. */
10803 if (*debug_file_directory != '\0')
10804 {
10805 /* Don't implicitly search the current directory here.
10806 If the user wants to search "." to handle this case,
10807 it must be added to debug-file-directory. */
10808 return try_open_dwop_file (lbasename (file_name), 1 /*is_dwp*/,
10809 0 /*search_cwd*/);
10810 }
10811
10812 return NULL;
ab5088bf
DE
10813}
10814
80626a55
DE
10815/* Initialize the use of the DWP file for the current objfile.
10816 By convention the name of the DWP file is ${objfile}.dwp.
10817 The result is NULL if it can't be found. */
a766d390 10818
80626a55 10819static struct dwp_file *
ab5088bf 10820open_and_init_dwp_file (void)
80626a55
DE
10821{
10822 struct objfile *objfile = dwarf2_per_objfile->objfile;
10823 struct dwp_file *dwp_file;
10824 char *dwp_name;
10825 bfd *dbfd;
10826 struct cleanup *cleanups;
10827
82bf32bc
JK
10828 /* Try to find first .dwp for the binary file before any symbolic links
10829 resolving. */
10830 dwp_name = xstrprintf ("%s.dwp", objfile->original_name);
80626a55
DE
10831 cleanups = make_cleanup (xfree, dwp_name);
10832
ab5088bf 10833 dbfd = open_dwp_file (dwp_name);
82bf32bc
JK
10834 if (dbfd == NULL
10835 && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
10836 {
10837 /* Try to find .dwp for the binary file after gdb_realpath resolving. */
10838 dwp_name = xstrprintf ("%s.dwp", objfile_name (objfile));
10839 make_cleanup (xfree, dwp_name);
10840 dbfd = open_dwp_file (dwp_name);
10841 }
10842
80626a55
DE
10843 if (dbfd == NULL)
10844 {
b4f54984 10845 if (dwarf_read_debug)
80626a55
DE
10846 fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name);
10847 do_cleanups (cleanups);
10848 return NULL;
3019eac3 10849 }
80626a55 10850 dwp_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_file);
93417882 10851 dwp_file->name = bfd_get_filename (dbfd);
80626a55
DE
10852 dwp_file->dbfd = dbfd;
10853 do_cleanups (cleanups);
c906108c 10854
80626a55
DE
10855 /* +1: section 0 is unused */
10856 dwp_file->num_sections = bfd_count_sections (dbfd) + 1;
10857 dwp_file->elf_sections =
10858 OBSTACK_CALLOC (&objfile->objfile_obstack,
10859 dwp_file->num_sections, asection *);
10860
73869dc2 10861 bfd_map_over_sections (dbfd, dwarf2_locate_common_dwp_sections, dwp_file);
80626a55
DE
10862
10863 dwp_file->cus = create_dwp_hash_table (dwp_file, 0);
10864
10865 dwp_file->tus = create_dwp_hash_table (dwp_file, 1);
10866
73869dc2
DE
10867 /* The DWP file version is stored in the hash table. Oh well. */
10868 if (dwp_file->cus->version != dwp_file->tus->version)
10869 {
10870 /* Technically speaking, we should try to limp along, but this is
fbcbc3fd 10871 pretty bizarre. We use pulongest here because that's the established
4d65956b 10872 portability solution (e.g, we cannot use %u for uint32_t). */
fbcbc3fd
DE
10873 error (_("Dwarf Error: DWP file CU version %s doesn't match"
10874 " TU version %s [in DWP file %s]"),
10875 pulongest (dwp_file->cus->version),
10876 pulongest (dwp_file->tus->version), dwp_name);
73869dc2
DE
10877 }
10878 dwp_file->version = dwp_file->cus->version;
10879
10880 if (dwp_file->version == 2)
10881 bfd_map_over_sections (dbfd, dwarf2_locate_v2_dwp_sections, dwp_file);
10882
19ac8c2e
DE
10883 dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
10884 dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
80626a55 10885
b4f54984 10886 if (dwarf_read_debug)
80626a55
DE
10887 {
10888 fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
10889 fprintf_unfiltered (gdb_stdlog,
21aa081e
PA
10890 " %s CUs, %s TUs\n",
10891 pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
10892 pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
80626a55
DE
10893 }
10894
10895 return dwp_file;
3019eac3 10896}
c906108c 10897
ab5088bf
DE
10898/* Wrapper around open_and_init_dwp_file, only open it once. */
10899
10900static struct dwp_file *
10901get_dwp_file (void)
10902{
10903 if (! dwarf2_per_objfile->dwp_checked)
10904 {
10905 dwarf2_per_objfile->dwp_file = open_and_init_dwp_file ();
10906 dwarf2_per_objfile->dwp_checked = 1;
10907 }
10908 return dwarf2_per_objfile->dwp_file;
10909}
10910
80626a55
DE
10911/* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
10912 Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
10913 or in the DWP file for the objfile, referenced by THIS_UNIT.
3019eac3 10914 If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
80626a55
DE
10915 IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
10916
10917 This is called, for example, when wanting to read a variable with a
10918 complex location. Therefore we don't want to do file i/o for every call.
10919 Therefore we don't want to look for a DWO file on every call.
10920 Therefore we first see if we've already seen SIGNATURE in a DWP file,
10921 then we check if we've already seen DWO_NAME, and only THEN do we check
10922 for a DWO file.
10923
1c658ad5 10924 The result is a pointer to the dwo_unit object or NULL if we didn't find it
80626a55 10925 (dwo_id mismatch or couldn't find the DWO/DWP file). */
debd256d 10926
3019eac3 10927static struct dwo_unit *
80626a55
DE
10928lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
10929 const char *dwo_name, const char *comp_dir,
10930 ULONGEST signature, int is_debug_types)
3019eac3
DE
10931{
10932 struct objfile *objfile = dwarf2_per_objfile->objfile;
80626a55
DE
10933 const char *kind = is_debug_types ? "TU" : "CU";
10934 void **dwo_file_slot;
3019eac3 10935 struct dwo_file *dwo_file;
80626a55 10936 struct dwp_file *dwp_file;
cb1df416 10937
6a506a2d
DE
10938 /* First see if there's a DWP file.
10939 If we have a DWP file but didn't find the DWO inside it, don't
10940 look for the original DWO file. It makes gdb behave differently
10941 depending on whether one is debugging in the build tree. */
cf2c3c16 10942
ab5088bf 10943 dwp_file = get_dwp_file ();
80626a55 10944 if (dwp_file != NULL)
cf2c3c16 10945 {
80626a55
DE
10946 const struct dwp_hash_table *dwp_htab =
10947 is_debug_types ? dwp_file->tus : dwp_file->cus;
10948
10949 if (dwp_htab != NULL)
10950 {
10951 struct dwo_unit *dwo_cutu =
57d63ce2
DE
10952 lookup_dwo_unit_in_dwp (dwp_file, comp_dir,
10953 signature, is_debug_types);
80626a55
DE
10954
10955 if (dwo_cutu != NULL)
10956 {
b4f54984 10957 if (dwarf_read_debug)
80626a55
DE
10958 {
10959 fprintf_unfiltered (gdb_stdlog,
10960 "Virtual DWO %s %s found: @%s\n",
10961 kind, hex_string (signature),
10962 host_address_to_string (dwo_cutu));
10963 }
10964 return dwo_cutu;
10965 }
10966 }
10967 }
6a506a2d 10968 else
80626a55 10969 {
6a506a2d 10970 /* No DWP file, look for the DWO file. */
80626a55 10971
6a506a2d
DE
10972 dwo_file_slot = lookup_dwo_file_slot (dwo_name, comp_dir);
10973 if (*dwo_file_slot == NULL)
80626a55 10974 {
6a506a2d
DE
10975 /* Read in the file and build a table of the CUs/TUs it contains. */
10976 *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
19c3d4c9 10977 }
6a506a2d
DE
10978 /* NOTE: This will be NULL if unable to open the file. */
10979 dwo_file = *dwo_file_slot;
3019eac3 10980
6a506a2d 10981 if (dwo_file != NULL)
19c3d4c9 10982 {
6a506a2d
DE
10983 struct dwo_unit *dwo_cutu = NULL;
10984
10985 if (is_debug_types && dwo_file->tus)
10986 {
10987 struct dwo_unit find_dwo_cutu;
10988
10989 memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
10990 find_dwo_cutu.signature = signature;
10991 dwo_cutu = htab_find (dwo_file->tus, &find_dwo_cutu);
10992 }
10993 else if (!is_debug_types && dwo_file->cu)
80626a55 10994 {
6a506a2d
DE
10995 if (signature == dwo_file->cu->signature)
10996 dwo_cutu = dwo_file->cu;
10997 }
10998
10999 if (dwo_cutu != NULL)
11000 {
b4f54984 11001 if (dwarf_read_debug)
6a506a2d
DE
11002 {
11003 fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
11004 kind, dwo_name, hex_string (signature),
11005 host_address_to_string (dwo_cutu));
11006 }
11007 return dwo_cutu;
80626a55
DE
11008 }
11009 }
2e276125 11010 }
9cdd5dbd 11011
80626a55
DE
11012 /* We didn't find it. This could mean a dwo_id mismatch, or
11013 someone deleted the DWO/DWP file, or the search path isn't set up
11014 correctly to find the file. */
11015
b4f54984 11016 if (dwarf_read_debug)
80626a55
DE
11017 {
11018 fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
11019 kind, dwo_name, hex_string (signature));
11020 }
3019eac3 11021
6656a72d
DE
11022 /* This is a warning and not a complaint because it can be caused by
11023 pilot error (e.g., user accidentally deleting the DWO). */
43942612
DE
11024 {
11025 /* Print the name of the DWP file if we looked there, helps the user
11026 better diagnose the problem. */
11027 char *dwp_text = NULL;
11028 struct cleanup *cleanups;
11029
11030 if (dwp_file != NULL)
11031 dwp_text = xstrprintf (" [in DWP file %s]", lbasename (dwp_file->name));
11032 cleanups = make_cleanup (xfree, dwp_text);
11033
11034 warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset 0x%x"
11035 " [in module %s]"),
11036 kind, dwo_name, hex_string (signature),
11037 dwp_text != NULL ? dwp_text : "",
11038 this_unit->is_debug_types ? "TU" : "CU",
11039 this_unit->offset.sect_off, objfile_name (objfile));
11040
11041 do_cleanups (cleanups);
11042 }
3019eac3 11043 return NULL;
5fb290d7
DJ
11044}
11045
80626a55
DE
11046/* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
11047 See lookup_dwo_cutu_unit for details. */
11048
11049static struct dwo_unit *
11050lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
11051 const char *dwo_name, const char *comp_dir,
11052 ULONGEST signature)
11053{
11054 return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
11055}
11056
11057/* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
11058 See lookup_dwo_cutu_unit for details. */
11059
11060static struct dwo_unit *
11061lookup_dwo_type_unit (struct signatured_type *this_tu,
11062 const char *dwo_name, const char *comp_dir)
11063{
11064 return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
11065}
11066
89e63ee4
DE
11067/* Traversal function for queue_and_load_all_dwo_tus. */
11068
11069static int
11070queue_and_load_dwo_tu (void **slot, void *info)
11071{
11072 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
11073 struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
11074 ULONGEST signature = dwo_unit->signature;
11075 struct signatured_type *sig_type =
11076 lookup_dwo_signatured_type (per_cu->cu, signature);
11077
11078 if (sig_type != NULL)
11079 {
11080 struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
11081
11082 /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
11083 a real dependency of PER_CU on SIG_TYPE. That is detected later
11084 while processing PER_CU. */
11085 if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
11086 load_full_type_unit (sig_cu);
11087 VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
11088 }
11089
11090 return 1;
11091}
11092
11093/* Queue all TUs contained in the DWO of PER_CU to be read in.
11094 The DWO may have the only definition of the type, though it may not be
11095 referenced anywhere in PER_CU. Thus we have to load *all* its TUs.
11096 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
11097
11098static void
11099queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
11100{
11101 struct dwo_unit *dwo_unit;
11102 struct dwo_file *dwo_file;
11103
11104 gdb_assert (!per_cu->is_debug_types);
11105 gdb_assert (get_dwp_file () == NULL);
11106 gdb_assert (per_cu->cu != NULL);
11107
11108 dwo_unit = per_cu->cu->dwo_unit;
11109 gdb_assert (dwo_unit != NULL);
11110
11111 dwo_file = dwo_unit->dwo_file;
11112 if (dwo_file->tus != NULL)
11113 htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
11114}
11115
3019eac3
DE
11116/* Free all resources associated with DWO_FILE.
11117 Close the DWO file and munmap the sections.
11118 All memory should be on the objfile obstack. */
348e048f
DE
11119
11120static void
3019eac3 11121free_dwo_file (struct dwo_file *dwo_file, struct objfile *objfile)
348e048f 11122{
3019eac3
DE
11123 int ix;
11124 struct dwarf2_section_info *section;
348e048f 11125
5c6fa7ab 11126 /* Note: dbfd is NULL for virtual DWO files. */
80626a55 11127 gdb_bfd_unref (dwo_file->dbfd);
348e048f 11128
3019eac3
DE
11129 VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
11130}
348e048f 11131
3019eac3 11132/* Wrapper for free_dwo_file for use in cleanups. */
348e048f 11133
3019eac3
DE
11134static void
11135free_dwo_file_cleanup (void *arg)
11136{
11137 struct dwo_file *dwo_file = (struct dwo_file *) arg;
11138 struct objfile *objfile = dwarf2_per_objfile->objfile;
348e048f 11139
3019eac3
DE
11140 free_dwo_file (dwo_file, objfile);
11141}
348e048f 11142
3019eac3 11143/* Traversal function for free_dwo_files. */
2ab95328 11144
3019eac3
DE
11145static int
11146free_dwo_file_from_slot (void **slot, void *info)
11147{
11148 struct dwo_file *dwo_file = (struct dwo_file *) *slot;
11149 struct objfile *objfile = (struct objfile *) info;
348e048f 11150
3019eac3 11151 free_dwo_file (dwo_file, objfile);
348e048f 11152
3019eac3
DE
11153 return 1;
11154}
348e048f 11155
3019eac3 11156/* Free all resources associated with DWO_FILES. */
348e048f 11157
3019eac3
DE
11158static void
11159free_dwo_files (htab_t dwo_files, struct objfile *objfile)
11160{
11161 htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
348e048f 11162}
3019eac3
DE
11163\f
11164/* Read in various DIEs. */
348e048f 11165
d389af10
JK
11166/* qsort helper for inherit_abstract_dies. */
11167
11168static int
11169unsigned_int_compar (const void *ap, const void *bp)
11170{
11171 unsigned int a = *(unsigned int *) ap;
11172 unsigned int b = *(unsigned int *) bp;
11173
11174 return (a > b) - (b > a);
11175}
11176
11177/* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
3e43a32a
MS
11178 Inherit only the children of the DW_AT_abstract_origin DIE not being
11179 already referenced by DW_AT_abstract_origin from the children of the
11180 current DIE. */
d389af10
JK
11181
11182static void
11183inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
11184{
11185 struct die_info *child_die;
11186 unsigned die_children_count;
11187 /* CU offsets which were referenced by children of the current DIE. */
b64f50a1
JK
11188 sect_offset *offsets;
11189 sect_offset *offsets_end, *offsetp;
d389af10
JK
11190 /* Parent of DIE - referenced by DW_AT_abstract_origin. */
11191 struct die_info *origin_die;
11192 /* Iterator of the ORIGIN_DIE children. */
11193 struct die_info *origin_child_die;
11194 struct cleanup *cleanups;
11195 struct attribute *attr;
cd02d79d
PA
11196 struct dwarf2_cu *origin_cu;
11197 struct pending **origin_previous_list_in_scope;
d389af10
JK
11198
11199 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11200 if (!attr)
11201 return;
11202
cd02d79d
PA
11203 /* Note that following die references may follow to a die in a
11204 different cu. */
11205
11206 origin_cu = cu;
11207 origin_die = follow_die_ref (die, attr, &origin_cu);
11208
11209 /* We're inheriting ORIGIN's children into the scope we'd put DIE's
11210 symbols in. */
11211 origin_previous_list_in_scope = origin_cu->list_in_scope;
11212 origin_cu->list_in_scope = cu->list_in_scope;
11213
edb3359d
DJ
11214 if (die->tag != origin_die->tag
11215 && !(die->tag == DW_TAG_inlined_subroutine
11216 && origin_die->tag == DW_TAG_subprogram))
d389af10
JK
11217 complaint (&symfile_complaints,
11218 _("DIE 0x%x and its abstract origin 0x%x have different tags"),
b64f50a1 11219 die->offset.sect_off, origin_die->offset.sect_off);
d389af10
JK
11220
11221 child_die = die->child;
11222 die_children_count = 0;
11223 while (child_die && child_die->tag)
11224 {
11225 child_die = sibling_die (child_die);
11226 die_children_count++;
11227 }
11228 offsets = xmalloc (sizeof (*offsets) * die_children_count);
11229 cleanups = make_cleanup (xfree, offsets);
11230
11231 offsets_end = offsets;
3ea89b92
PMR
11232 for (child_die = die->child;
11233 child_die && child_die->tag;
11234 child_die = sibling_die (child_die))
11235 {
11236 struct die_info *child_origin_die;
11237 struct dwarf2_cu *child_origin_cu;
11238
11239 /* We are trying to process concrete instance entries:
11240 DW_TAG_GNU_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
11241 it's not relevant to our analysis here. i.e. detecting DIEs that are
11242 present in the abstract instance but not referenced in the concrete
11243 one. */
11244 if (child_die->tag == DW_TAG_GNU_call_site)
11245 continue;
11246
c38f313d
DJ
11247 /* For each CHILD_DIE, find the corresponding child of
11248 ORIGIN_DIE. If there is more than one layer of
11249 DW_AT_abstract_origin, follow them all; there shouldn't be,
11250 but GCC versions at least through 4.4 generate this (GCC PR
11251 40573). */
3ea89b92
PMR
11252 child_origin_die = child_die;
11253 child_origin_cu = cu;
c38f313d
DJ
11254 while (1)
11255 {
cd02d79d
PA
11256 attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
11257 child_origin_cu);
c38f313d
DJ
11258 if (attr == NULL)
11259 break;
cd02d79d
PA
11260 child_origin_die = follow_die_ref (child_origin_die, attr,
11261 &child_origin_cu);
c38f313d
DJ
11262 }
11263
d389af10
JK
11264 /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
11265 counterpart may exist. */
c38f313d 11266 if (child_origin_die != child_die)
d389af10 11267 {
edb3359d
DJ
11268 if (child_die->tag != child_origin_die->tag
11269 && !(child_die->tag == DW_TAG_inlined_subroutine
11270 && child_origin_die->tag == DW_TAG_subprogram))
d389af10
JK
11271 complaint (&symfile_complaints,
11272 _("Child DIE 0x%x and its abstract origin 0x%x have "
b64f50a1
JK
11273 "different tags"), child_die->offset.sect_off,
11274 child_origin_die->offset.sect_off);
c38f313d
DJ
11275 if (child_origin_die->parent != origin_die)
11276 complaint (&symfile_complaints,
11277 _("Child DIE 0x%x and its abstract origin 0x%x have "
b64f50a1
JK
11278 "different parents"), child_die->offset.sect_off,
11279 child_origin_die->offset.sect_off);
c38f313d
DJ
11280 else
11281 *offsets_end++ = child_origin_die->offset;
d389af10 11282 }
d389af10
JK
11283 }
11284 qsort (offsets, offsets_end - offsets, sizeof (*offsets),
11285 unsigned_int_compar);
11286 for (offsetp = offsets + 1; offsetp < offsets_end; offsetp++)
b64f50a1 11287 if (offsetp[-1].sect_off == offsetp->sect_off)
3e43a32a
MS
11288 complaint (&symfile_complaints,
11289 _("Multiple children of DIE 0x%x refer "
11290 "to DIE 0x%x as their abstract origin"),
b64f50a1 11291 die->offset.sect_off, offsetp->sect_off);
d389af10
JK
11292
11293 offsetp = offsets;
11294 origin_child_die = origin_die->child;
11295 while (origin_child_die && origin_child_die->tag)
11296 {
11297 /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children? */
b64f50a1
JK
11298 while (offsetp < offsets_end
11299 && offsetp->sect_off < origin_child_die->offset.sect_off)
d389af10 11300 offsetp++;
b64f50a1
JK
11301 if (offsetp >= offsets_end
11302 || offsetp->sect_off > origin_child_die->offset.sect_off)
d389af10 11303 {
adde2bff
DE
11304 /* Found that ORIGIN_CHILD_DIE is really not referenced.
11305 Check whether we're already processing ORIGIN_CHILD_DIE.
11306 This can happen with mutually referenced abstract_origins.
11307 PR 16581. */
11308 if (!origin_child_die->in_process)
11309 process_die (origin_child_die, origin_cu);
d389af10
JK
11310 }
11311 origin_child_die = sibling_die (origin_child_die);
11312 }
cd02d79d 11313 origin_cu->list_in_scope = origin_previous_list_in_scope;
d389af10
JK
11314
11315 do_cleanups (cleanups);
11316}
11317
c906108c 11318static void
e7c27a73 11319read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 11320{
e7c27a73 11321 struct objfile *objfile = cu->objfile;
3e29f34a 11322 struct gdbarch *gdbarch = get_objfile_arch (objfile);
fe978cb0 11323 struct context_stack *newobj;
c906108c
SS
11324 CORE_ADDR lowpc;
11325 CORE_ADDR highpc;
11326 struct die_info *child_die;
edb3359d 11327 struct attribute *attr, *call_line, *call_file;
15d034d0 11328 const char *name;
e142c38c 11329 CORE_ADDR baseaddr;
801e3a5b 11330 struct block *block;
edb3359d 11331 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
34eaf542
TT
11332 VEC (symbolp) *template_args = NULL;
11333 struct template_symbol *templ_func = NULL;
edb3359d
DJ
11334
11335 if (inlined_func)
11336 {
11337 /* If we do not have call site information, we can't show the
11338 caller of this inlined function. That's too confusing, so
11339 only use the scope for local variables. */
11340 call_line = dwarf2_attr (die, DW_AT_call_line, cu);
11341 call_file = dwarf2_attr (die, DW_AT_call_file, cu);
11342 if (call_line == NULL || call_file == NULL)
11343 {
11344 read_lexical_block_scope (die, cu);
11345 return;
11346 }
11347 }
c906108c 11348
e142c38c
DJ
11349 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11350
94af9270 11351 name = dwarf2_name (die, cu);
c906108c 11352
e8d05480
JB
11353 /* Ignore functions with missing or empty names. These are actually
11354 illegal according to the DWARF standard. */
11355 if (name == NULL)
11356 {
11357 complaint (&symfile_complaints,
b64f50a1
JK
11358 _("missing name for subprogram DIE at %d"),
11359 die->offset.sect_off);
e8d05480
JB
11360 return;
11361 }
11362
11363 /* Ignore functions with missing or invalid low and high pc attributes. */
11364 if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
11365 {
ae4d0c03
PM
11366 attr = dwarf2_attr (die, DW_AT_external, cu);
11367 if (!attr || !DW_UNSND (attr))
11368 complaint (&symfile_complaints,
3e43a32a
MS
11369 _("cannot get low and high bounds "
11370 "for subprogram DIE at %d"),
b64f50a1 11371 die->offset.sect_off);
e8d05480
JB
11372 return;
11373 }
c906108c 11374
3e29f34a
MR
11375 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11376 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
c906108c 11377
34eaf542
TT
11378 /* If we have any template arguments, then we must allocate a
11379 different sort of symbol. */
11380 for (child_die = die->child; child_die; child_die = sibling_die (child_die))
11381 {
11382 if (child_die->tag == DW_TAG_template_type_param
11383 || child_die->tag == DW_TAG_template_value_param)
11384 {
e623cf5d 11385 templ_func = allocate_template_symbol (objfile);
34eaf542
TT
11386 templ_func->base.is_cplus_template_function = 1;
11387 break;
11388 }
11389 }
11390
fe978cb0
PA
11391 newobj = push_context (0, lowpc);
11392 newobj->name = new_symbol_full (die, read_type_die (die, cu), cu,
34eaf542 11393 (struct symbol *) templ_func);
4c2df51b 11394
4cecd739
DJ
11395 /* If there is a location expression for DW_AT_frame_base, record
11396 it. */
e142c38c 11397 attr = dwarf2_attr (die, DW_AT_frame_base, cu);
4c2df51b 11398 if (attr)
fe978cb0 11399 dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
4c2df51b 11400
e142c38c 11401 cu->list_in_scope = &local_symbols;
c906108c 11402
639d11d3 11403 if (die->child != NULL)
c906108c 11404 {
639d11d3 11405 child_die = die->child;
c906108c
SS
11406 while (child_die && child_die->tag)
11407 {
34eaf542
TT
11408 if (child_die->tag == DW_TAG_template_type_param
11409 || child_die->tag == DW_TAG_template_value_param)
11410 {
11411 struct symbol *arg = new_symbol (child_die, NULL, cu);
11412
f1078f66
DJ
11413 if (arg != NULL)
11414 VEC_safe_push (symbolp, template_args, arg);
34eaf542
TT
11415 }
11416 else
11417 process_die (child_die, cu);
c906108c
SS
11418 child_die = sibling_die (child_die);
11419 }
11420 }
11421
d389af10
JK
11422 inherit_abstract_dies (die, cu);
11423
4a811a97
UW
11424 /* If we have a DW_AT_specification, we might need to import using
11425 directives from the context of the specification DIE. See the
11426 comment in determine_prefix. */
11427 if (cu->language == language_cplus
11428 && dwarf2_attr (die, DW_AT_specification, cu))
11429 {
11430 struct dwarf2_cu *spec_cu = cu;
11431 struct die_info *spec_die = die_specification (die, &spec_cu);
11432
11433 while (spec_die)
11434 {
11435 child_die = spec_die->child;
11436 while (child_die && child_die->tag)
11437 {
11438 if (child_die->tag == DW_TAG_imported_module)
11439 process_die (child_die, spec_cu);
11440 child_die = sibling_die (child_die);
11441 }
11442
11443 /* In some cases, GCC generates specification DIEs that
11444 themselves contain DW_AT_specification attributes. */
11445 spec_die = die_specification (spec_die, &spec_cu);
11446 }
11447 }
11448
fe978cb0 11449 newobj = pop_context ();
c906108c 11450 /* Make a block for the local symbols within. */
fe978cb0 11451 block = finish_block (newobj->name, &local_symbols, newobj->old_blocks,
4d663531 11452 lowpc, highpc);
801e3a5b 11453
df8a16a1 11454 /* For C++, set the block's scope. */
45280282
IB
11455 if ((cu->language == language_cplus
11456 || cu->language == language_fortran
11457 || cu->language == language_d)
4d4ec4e5 11458 && cu->processing_has_namespace_info)
195a3f6c
TT
11459 block_set_scope (block, determine_prefix (die, cu),
11460 &objfile->objfile_obstack);
df8a16a1 11461
801e3a5b
JB
11462 /* If we have address ranges, record them. */
11463 dwarf2_record_block_ranges (die, block, baseaddr, cu);
6e70227d 11464
fe978cb0 11465 gdbarch_make_symbol_special (gdbarch, newobj->name, objfile);
3e29f34a 11466
34eaf542
TT
11467 /* Attach template arguments to function. */
11468 if (! VEC_empty (symbolp, template_args))
11469 {
11470 gdb_assert (templ_func != NULL);
11471
11472 templ_func->n_template_arguments = VEC_length (symbolp, template_args);
11473 templ_func->template_arguments
11474 = obstack_alloc (&objfile->objfile_obstack,
11475 (templ_func->n_template_arguments
11476 * sizeof (struct symbol *)));
11477 memcpy (templ_func->template_arguments,
11478 VEC_address (symbolp, template_args),
11479 (templ_func->n_template_arguments * sizeof (struct symbol *)));
11480 VEC_free (symbolp, template_args);
11481 }
11482
208d8187
JB
11483 /* In C++, we can have functions nested inside functions (e.g., when
11484 a function declares a class that has methods). This means that
11485 when we finish processing a function scope, we may need to go
11486 back to building a containing block's symbol lists. */
fe978cb0
PA
11487 local_symbols = newobj->locals;
11488 using_directives = newobj->using_directives;
208d8187 11489
921e78cf
JB
11490 /* If we've finished processing a top-level function, subsequent
11491 symbols go in the file symbol list. */
11492 if (outermost_context_p ())
e142c38c 11493 cu->list_in_scope = &file_symbols;
c906108c
SS
11494}
11495
11496/* Process all the DIES contained within a lexical block scope. Start
11497 a new scope, process the dies, and then close the scope. */
11498
11499static void
e7c27a73 11500read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 11501{
e7c27a73 11502 struct objfile *objfile = cu->objfile;
3e29f34a 11503 struct gdbarch *gdbarch = get_objfile_arch (objfile);
fe978cb0 11504 struct context_stack *newobj;
c906108c
SS
11505 CORE_ADDR lowpc, highpc;
11506 struct die_info *child_die;
e142c38c
DJ
11507 CORE_ADDR baseaddr;
11508
11509 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c
SS
11510
11511 /* Ignore blocks with missing or invalid low and high pc attributes. */
af34e669
DJ
11512 /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
11513 as multiple lexical blocks? Handling children in a sane way would
6e70227d 11514 be nasty. Might be easier to properly extend generic blocks to
af34e669 11515 describe ranges. */
d85a05f0 11516 if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
c906108c 11517 return;
3e29f34a
MR
11518 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11519 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
c906108c
SS
11520
11521 push_context (0, lowpc);
639d11d3 11522 if (die->child != NULL)
c906108c 11523 {
639d11d3 11524 child_die = die->child;
c906108c
SS
11525 while (child_die && child_die->tag)
11526 {
e7c27a73 11527 process_die (child_die, cu);
c906108c
SS
11528 child_die = sibling_die (child_die);
11529 }
11530 }
3ea89b92 11531 inherit_abstract_dies (die, cu);
fe978cb0 11532 newobj = pop_context ();
c906108c 11533
8540c487 11534 if (local_symbols != NULL || using_directives != NULL)
c906108c 11535 {
801e3a5b 11536 struct block *block
fe978cb0
PA
11537 = finish_block (0, &local_symbols, newobj->old_blocks,
11538 newobj->start_addr, highpc);
801e3a5b
JB
11539
11540 /* Note that recording ranges after traversing children, as we
11541 do here, means that recording a parent's ranges entails
11542 walking across all its children's ranges as they appear in
11543 the address map, which is quadratic behavior.
11544
11545 It would be nicer to record the parent's ranges before
11546 traversing its children, simply overriding whatever you find
11547 there. But since we don't even decide whether to create a
11548 block until after we've traversed its children, that's hard
11549 to do. */
11550 dwarf2_record_block_ranges (die, block, baseaddr, cu);
c906108c 11551 }
fe978cb0
PA
11552 local_symbols = newobj->locals;
11553 using_directives = newobj->using_directives;
c906108c
SS
11554}
11555
96408a79
SA
11556/* Read in DW_TAG_GNU_call_site and insert it to CU->call_site_htab. */
11557
11558static void
11559read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
11560{
11561 struct objfile *objfile = cu->objfile;
11562 struct gdbarch *gdbarch = get_objfile_arch (objfile);
11563 CORE_ADDR pc, baseaddr;
11564 struct attribute *attr;
11565 struct call_site *call_site, call_site_local;
11566 void **slot;
11567 int nparams;
11568 struct die_info *child_die;
11569
11570 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11571
11572 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11573 if (!attr)
11574 {
11575 complaint (&symfile_complaints,
11576 _("missing DW_AT_low_pc for DW_TAG_GNU_call_site "
11577 "DIE 0x%x [in module %s]"),
4262abfb 11578 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11579 return;
11580 }
31aa7e4e 11581 pc = attr_value_as_address (attr) + baseaddr;
3e29f34a 11582 pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
96408a79
SA
11583
11584 if (cu->call_site_htab == NULL)
11585 cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
11586 NULL, &objfile->objfile_obstack,
11587 hashtab_obstack_allocate, NULL);
11588 call_site_local.pc = pc;
11589 slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
11590 if (*slot != NULL)
11591 {
11592 complaint (&symfile_complaints,
11593 _("Duplicate PC %s for DW_TAG_GNU_call_site "
11594 "DIE 0x%x [in module %s]"),
4262abfb
JK
11595 paddress (gdbarch, pc), die->offset.sect_off,
11596 objfile_name (objfile));
96408a79
SA
11597 return;
11598 }
11599
11600 /* Count parameters at the caller. */
11601
11602 nparams = 0;
11603 for (child_die = die->child; child_die && child_die->tag;
11604 child_die = sibling_die (child_die))
11605 {
11606 if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11607 {
11608 complaint (&symfile_complaints,
11609 _("Tag %d is not DW_TAG_GNU_call_site_parameter in "
11610 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb
JK
11611 child_die->tag, child_die->offset.sect_off,
11612 objfile_name (objfile));
96408a79
SA
11613 continue;
11614 }
11615
11616 nparams++;
11617 }
11618
11619 call_site = obstack_alloc (&objfile->objfile_obstack,
11620 (sizeof (*call_site)
11621 + (sizeof (*call_site->parameter)
11622 * (nparams - 1))));
11623 *slot = call_site;
11624 memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
11625 call_site->pc = pc;
11626
11627 if (dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
11628 {
11629 struct die_info *func_die;
11630
11631 /* Skip also over DW_TAG_inlined_subroutine. */
11632 for (func_die = die->parent;
11633 func_die && func_die->tag != DW_TAG_subprogram
11634 && func_die->tag != DW_TAG_subroutine_type;
11635 func_die = func_die->parent);
11636
11637 /* DW_AT_GNU_all_call_sites is a superset
11638 of DW_AT_GNU_all_tail_call_sites. */
11639 if (func_die
11640 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
11641 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
11642 {
11643 /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
11644 not complete. But keep CALL_SITE for look ups via call_site_htab,
11645 both the initial caller containing the real return address PC and
11646 the final callee containing the current PC of a chain of tail
11647 calls do not need to have the tail call list complete. But any
11648 function candidate for a virtual tail call frame searched via
11649 TYPE_TAIL_CALL_LIST must have the tail call list complete to be
11650 determined unambiguously. */
11651 }
11652 else
11653 {
11654 struct type *func_type = NULL;
11655
11656 if (func_die)
11657 func_type = get_die_type (func_die, cu);
11658 if (func_type != NULL)
11659 {
11660 gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
11661
11662 /* Enlist this call site to the function. */
11663 call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
11664 TYPE_TAIL_CALL_LIST (func_type) = call_site;
11665 }
11666 else
11667 complaint (&symfile_complaints,
11668 _("Cannot find function owning DW_TAG_GNU_call_site "
11669 "DIE 0x%x [in module %s]"),
4262abfb 11670 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11671 }
11672 }
11673
11674 attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
11675 if (attr == NULL)
11676 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11677 SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
11678 if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
11679 /* Keep NULL DWARF_BLOCK. */;
11680 else if (attr_form_is_block (attr))
11681 {
11682 struct dwarf2_locexpr_baton *dlbaton;
11683
11684 dlbaton = obstack_alloc (&objfile->objfile_obstack, sizeof (*dlbaton));
11685 dlbaton->data = DW_BLOCK (attr)->data;
11686 dlbaton->size = DW_BLOCK (attr)->size;
11687 dlbaton->per_cu = cu->per_cu;
11688
11689 SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
11690 }
7771576e 11691 else if (attr_form_is_ref (attr))
96408a79 11692 {
96408a79
SA
11693 struct dwarf2_cu *target_cu = cu;
11694 struct die_info *target_die;
11695
ac9ec31b 11696 target_die = follow_die_ref (die, attr, &target_cu);
96408a79
SA
11697 gdb_assert (target_cu->objfile == objfile);
11698 if (die_is_declaration (target_die, target_cu))
11699 {
9112db09
JK
11700 const char *target_physname = NULL;
11701 struct attribute *target_attr;
11702
11703 /* Prefer the mangled name; otherwise compute the demangled one. */
11704 target_attr = dwarf2_attr (target_die, DW_AT_linkage_name, target_cu);
11705 if (target_attr == NULL)
11706 target_attr = dwarf2_attr (target_die, DW_AT_MIPS_linkage_name,
11707 target_cu);
11708 if (target_attr != NULL && DW_STRING (target_attr) != NULL)
11709 target_physname = DW_STRING (target_attr);
11710 else
11711 target_physname = dwarf2_physname (NULL, target_die, target_cu);
96408a79
SA
11712 if (target_physname == NULL)
11713 complaint (&symfile_complaints,
11714 _("DW_AT_GNU_call_site_target target DIE has invalid "
11715 "physname, for referencing DIE 0x%x [in module %s]"),
4262abfb 11716 die->offset.sect_off, objfile_name (objfile));
96408a79 11717 else
7d455152 11718 SET_FIELD_PHYSNAME (call_site->target, target_physname);
96408a79
SA
11719 }
11720 else
11721 {
11722 CORE_ADDR lowpc;
11723
11724 /* DW_AT_entry_pc should be preferred. */
11725 if (!dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL))
11726 complaint (&symfile_complaints,
11727 _("DW_AT_GNU_call_site_target target DIE has invalid "
11728 "low pc, for referencing DIE 0x%x [in module %s]"),
4262abfb 11729 die->offset.sect_off, objfile_name (objfile));
96408a79 11730 else
3e29f34a
MR
11731 {
11732 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11733 SET_FIELD_PHYSADDR (call_site->target, lowpc);
11734 }
96408a79
SA
11735 }
11736 }
11737 else
11738 complaint (&symfile_complaints,
11739 _("DW_TAG_GNU_call_site DW_AT_GNU_call_site_target is neither "
11740 "block nor reference, for DIE 0x%x [in module %s]"),
4262abfb 11741 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11742
11743 call_site->per_cu = cu->per_cu;
11744
11745 for (child_die = die->child;
11746 child_die && child_die->tag;
11747 child_die = sibling_die (child_die))
11748 {
96408a79 11749 struct call_site_parameter *parameter;
1788b2d3 11750 struct attribute *loc, *origin;
96408a79
SA
11751
11752 if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11753 {
11754 /* Already printed the complaint above. */
11755 continue;
11756 }
11757
11758 gdb_assert (call_site->parameter_count < nparams);
11759 parameter = &call_site->parameter[call_site->parameter_count];
11760
1788b2d3
JK
11761 /* DW_AT_location specifies the register number or DW_AT_abstract_origin
11762 specifies DW_TAG_formal_parameter. Value of the data assumed for the
11763 register is contained in DW_AT_GNU_call_site_value. */
96408a79 11764
24c5c679 11765 loc = dwarf2_attr (child_die, DW_AT_location, cu);
1788b2d3 11766 origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
7771576e 11767 if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
1788b2d3
JK
11768 {
11769 sect_offset offset;
11770
11771 parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
11772 offset = dwarf2_get_ref_die_offset (origin);
d76b7dbc
JK
11773 if (!offset_in_cu_p (&cu->header, offset))
11774 {
11775 /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
11776 binding can be done only inside one CU. Such referenced DIE
11777 therefore cannot be even moved to DW_TAG_partial_unit. */
11778 complaint (&symfile_complaints,
11779 _("DW_AT_abstract_origin offset is not in CU for "
11780 "DW_TAG_GNU_call_site child DIE 0x%x "
11781 "[in module %s]"),
4262abfb 11782 child_die->offset.sect_off, objfile_name (objfile));
d76b7dbc
JK
11783 continue;
11784 }
1788b2d3
JK
11785 parameter->u.param_offset.cu_off = (offset.sect_off
11786 - cu->header.offset.sect_off);
11787 }
11788 else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
96408a79
SA
11789 {
11790 complaint (&symfile_complaints,
11791 _("No DW_FORM_block* DW_AT_location for "
11792 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11793 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11794 continue;
11795 }
24c5c679 11796 else
96408a79 11797 {
24c5c679
JK
11798 parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
11799 (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
11800 if (parameter->u.dwarf_reg != -1)
11801 parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
11802 else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
11803 &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
11804 &parameter->u.fb_offset))
11805 parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
11806 else
11807 {
11808 complaint (&symfile_complaints,
11809 _("Only single DW_OP_reg or DW_OP_fbreg is supported "
11810 "for DW_FORM_block* DW_AT_location is supported for "
11811 "DW_TAG_GNU_call_site child DIE 0x%x "
11812 "[in module %s]"),
4262abfb 11813 child_die->offset.sect_off, objfile_name (objfile));
24c5c679
JK
11814 continue;
11815 }
96408a79
SA
11816 }
11817
11818 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
11819 if (!attr_form_is_block (attr))
11820 {
11821 complaint (&symfile_complaints,
11822 _("No DW_FORM_block* DW_AT_GNU_call_site_value for "
11823 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11824 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11825 continue;
11826 }
11827 parameter->value = DW_BLOCK (attr)->data;
11828 parameter->value_size = DW_BLOCK (attr)->size;
11829
11830 /* Parameters are not pre-cleared by memset above. */
11831 parameter->data_value = NULL;
11832 parameter->data_value_size = 0;
11833 call_site->parameter_count++;
11834
11835 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
11836 if (attr)
11837 {
11838 if (!attr_form_is_block (attr))
11839 complaint (&symfile_complaints,
11840 _("No DW_FORM_block* DW_AT_GNU_call_site_data_value for "
11841 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11842 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11843 else
11844 {
11845 parameter->data_value = DW_BLOCK (attr)->data;
11846 parameter->data_value_size = DW_BLOCK (attr)->size;
11847 }
11848 }
11849 }
11850}
11851
43039443 11852/* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
ff013f42
JK
11853 Return 1 if the attributes are present and valid, otherwise, return 0.
11854 If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'. */
43039443
JK
11855
11856static int
11857dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
ff013f42
JK
11858 CORE_ADDR *high_return, struct dwarf2_cu *cu,
11859 struct partial_symtab *ranges_pst)
43039443
JK
11860{
11861 struct objfile *objfile = cu->objfile;
3e29f34a 11862 struct gdbarch *gdbarch = get_objfile_arch (objfile);
43039443
JK
11863 struct comp_unit_head *cu_header = &cu->header;
11864 bfd *obfd = objfile->obfd;
11865 unsigned int addr_size = cu_header->addr_size;
11866 CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
11867 /* Base address selection entry. */
11868 CORE_ADDR base;
11869 int found_base;
11870 unsigned int dummy;
d521ce57 11871 const gdb_byte *buffer;
43039443
JK
11872 CORE_ADDR marker;
11873 int low_set;
11874 CORE_ADDR low = 0;
11875 CORE_ADDR high = 0;
ff013f42 11876 CORE_ADDR baseaddr;
43039443 11877
d00adf39
DE
11878 found_base = cu->base_known;
11879 base = cu->base_address;
43039443 11880
be391dca 11881 dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
dce234bc 11882 if (offset >= dwarf2_per_objfile->ranges.size)
43039443
JK
11883 {
11884 complaint (&symfile_complaints,
11885 _("Offset %d out of bounds for DW_AT_ranges attribute"),
11886 offset);
11887 return 0;
11888 }
dce234bc 11889 buffer = dwarf2_per_objfile->ranges.buffer + offset;
43039443
JK
11890
11891 /* Read in the largest possible address. */
11892 marker = read_address (obfd, buffer, cu, &dummy);
11893 if ((marker & mask) == mask)
11894 {
11895 /* If we found the largest possible address, then
11896 read the base address. */
11897 base = read_address (obfd, buffer + addr_size, cu, &dummy);
11898 buffer += 2 * addr_size;
11899 offset += 2 * addr_size;
11900 found_base = 1;
11901 }
11902
11903 low_set = 0;
11904
e7030f15 11905 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
ff013f42 11906
43039443
JK
11907 while (1)
11908 {
11909 CORE_ADDR range_beginning, range_end;
11910
11911 range_beginning = read_address (obfd, buffer, cu, &dummy);
11912 buffer += addr_size;
11913 range_end = read_address (obfd, buffer, cu, &dummy);
11914 buffer += addr_size;
11915 offset += 2 * addr_size;
11916
11917 /* An end of list marker is a pair of zero addresses. */
11918 if (range_beginning == 0 && range_end == 0)
11919 /* Found the end of list entry. */
11920 break;
11921
11922 /* Each base address selection entry is a pair of 2 values.
11923 The first is the largest possible address, the second is
11924 the base address. Check for a base address here. */
11925 if ((range_beginning & mask) == mask)
11926 {
11927 /* If we found the largest possible address, then
11928 read the base address. */
11929 base = read_address (obfd, buffer + addr_size, cu, &dummy);
11930 found_base = 1;
11931 continue;
11932 }
11933
11934 if (!found_base)
11935 {
11936 /* We have no valid base address for the ranges
11937 data. */
11938 complaint (&symfile_complaints,
11939 _("Invalid .debug_ranges data (no base address)"));
11940 return 0;
11941 }
11942
9277c30c
UW
11943 if (range_beginning > range_end)
11944 {
11945 /* Inverted range entries are invalid. */
11946 complaint (&symfile_complaints,
11947 _("Invalid .debug_ranges data (inverted range)"));
11948 return 0;
11949 }
11950
11951 /* Empty range entries have no effect. */
11952 if (range_beginning == range_end)
11953 continue;
11954
43039443
JK
11955 range_beginning += base;
11956 range_end += base;
11957
01093045
DE
11958 /* A not-uncommon case of bad debug info.
11959 Don't pollute the addrmap with bad data. */
11960 if (range_beginning + baseaddr == 0
11961 && !dwarf2_per_objfile->has_section_at_zero)
11962 {
11963 complaint (&symfile_complaints,
11964 _(".debug_ranges entry has start address of zero"
4262abfb 11965 " [in module %s]"), objfile_name (objfile));
01093045
DE
11966 continue;
11967 }
11968
9277c30c 11969 if (ranges_pst != NULL)
3e29f34a
MR
11970 {
11971 CORE_ADDR lowpc;
11972 CORE_ADDR highpc;
11973
11974 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
11975 range_beginning + baseaddr);
11976 highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
11977 range_end + baseaddr);
11978 addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
11979 ranges_pst);
11980 }
ff013f42 11981
43039443
JK
11982 /* FIXME: This is recording everything as a low-high
11983 segment of consecutive addresses. We should have a
11984 data structure for discontiguous block ranges
11985 instead. */
11986 if (! low_set)
11987 {
11988 low = range_beginning;
11989 high = range_end;
11990 low_set = 1;
11991 }
11992 else
11993 {
11994 if (range_beginning < low)
11995 low = range_beginning;
11996 if (range_end > high)
11997 high = range_end;
11998 }
11999 }
12000
12001 if (! low_set)
12002 /* If the first entry is an end-of-list marker, the range
12003 describes an empty scope, i.e. no instructions. */
12004 return 0;
12005
12006 if (low_return)
12007 *low_return = low;
12008 if (high_return)
12009 *high_return = high;
12010 return 1;
12011}
12012
af34e669
DJ
12013/* Get low and high pc attributes from a die. Return 1 if the attributes
12014 are present and valid, otherwise, return 0. Return -1 if the range is
12015 discontinuous, i.e. derived from DW_AT_ranges information. */
380bca97 12016
c906108c 12017static int
af34e669 12018dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
d85a05f0
DJ
12019 CORE_ADDR *highpc, struct dwarf2_cu *cu,
12020 struct partial_symtab *pst)
c906108c
SS
12021{
12022 struct attribute *attr;
91da1414 12023 struct attribute *attr_high;
af34e669
DJ
12024 CORE_ADDR low = 0;
12025 CORE_ADDR high = 0;
12026 int ret = 0;
c906108c 12027
91da1414
MW
12028 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
12029 if (attr_high)
af34e669 12030 {
e142c38c 12031 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
af34e669 12032 if (attr)
91da1414 12033 {
31aa7e4e
JB
12034 low = attr_value_as_address (attr);
12035 high = attr_value_as_address (attr_high);
12036 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12037 high += low;
91da1414 12038 }
af34e669
DJ
12039 else
12040 /* Found high w/o low attribute. */
12041 return 0;
12042
12043 /* Found consecutive range of addresses. */
12044 ret = 1;
12045 }
c906108c 12046 else
af34e669 12047 {
e142c38c 12048 attr = dwarf2_attr (die, DW_AT_ranges, cu);
af34e669
DJ
12049 if (attr != NULL)
12050 {
ab435259
DE
12051 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12052 We take advantage of the fact that DW_AT_ranges does not appear
12053 in DW_TAG_compile_unit of DWO files. */
12054 int need_ranges_base = die->tag != DW_TAG_compile_unit;
12055 unsigned int ranges_offset = (DW_UNSND (attr)
12056 + (need_ranges_base
12057 ? cu->ranges_base
12058 : 0));
2e3cf129 12059
af34e669 12060 /* Value of the DW_AT_ranges attribute is the offset in the
a604369a 12061 .debug_ranges section. */
2e3cf129 12062 if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
af34e669 12063 return 0;
43039443 12064 /* Found discontinuous range of addresses. */
af34e669
DJ
12065 ret = -1;
12066 }
12067 }
c906108c 12068
9373cf26
JK
12069 /* read_partial_die has also the strict LOW < HIGH requirement. */
12070 if (high <= low)
c906108c
SS
12071 return 0;
12072
12073 /* When using the GNU linker, .gnu.linkonce. sections are used to
12074 eliminate duplicate copies of functions and vtables and such.
12075 The linker will arbitrarily choose one and discard the others.
12076 The AT_*_pc values for such functions refer to local labels in
12077 these sections. If the section from that file was discarded, the
12078 labels are not in the output, so the relocs get a value of 0.
12079 If this is a discarded function, mark the pc bounds as invalid,
12080 so that GDB will ignore it. */
72dca2f5 12081 if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
c906108c
SS
12082 return 0;
12083
12084 *lowpc = low;
96408a79
SA
12085 if (highpc)
12086 *highpc = high;
af34e669 12087 return ret;
c906108c
SS
12088}
12089
b084d499
JB
12090/* Assuming that DIE represents a subprogram DIE or a lexical block, get
12091 its low and high PC addresses. Do nothing if these addresses could not
12092 be determined. Otherwise, set LOWPC to the low address if it is smaller,
12093 and HIGHPC to the high address if greater than HIGHPC. */
12094
12095static void
12096dwarf2_get_subprogram_pc_bounds (struct die_info *die,
12097 CORE_ADDR *lowpc, CORE_ADDR *highpc,
12098 struct dwarf2_cu *cu)
12099{
12100 CORE_ADDR low, high;
12101 struct die_info *child = die->child;
12102
d85a05f0 12103 if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL))
b084d499
JB
12104 {
12105 *lowpc = min (*lowpc, low);
12106 *highpc = max (*highpc, high);
12107 }
12108
12109 /* If the language does not allow nested subprograms (either inside
12110 subprograms or lexical blocks), we're done. */
12111 if (cu->language != language_ada)
12112 return;
6e70227d 12113
b084d499
JB
12114 /* Check all the children of the given DIE. If it contains nested
12115 subprograms, then check their pc bounds. Likewise, we need to
12116 check lexical blocks as well, as they may also contain subprogram
12117 definitions. */
12118 while (child && child->tag)
12119 {
12120 if (child->tag == DW_TAG_subprogram
12121 || child->tag == DW_TAG_lexical_block)
12122 dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
12123 child = sibling_die (child);
12124 }
12125}
12126
fae299cd
DC
12127/* Get the low and high pc's represented by the scope DIE, and store
12128 them in *LOWPC and *HIGHPC. If the correct values can't be
12129 determined, set *LOWPC to -1 and *HIGHPC to 0. */
12130
12131static void
12132get_scope_pc_bounds (struct die_info *die,
12133 CORE_ADDR *lowpc, CORE_ADDR *highpc,
12134 struct dwarf2_cu *cu)
12135{
12136 CORE_ADDR best_low = (CORE_ADDR) -1;
12137 CORE_ADDR best_high = (CORE_ADDR) 0;
12138 CORE_ADDR current_low, current_high;
12139
d85a05f0 12140 if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL))
fae299cd
DC
12141 {
12142 best_low = current_low;
12143 best_high = current_high;
12144 }
12145 else
12146 {
12147 struct die_info *child = die->child;
12148
12149 while (child && child->tag)
12150 {
12151 switch (child->tag) {
12152 case DW_TAG_subprogram:
b084d499 12153 dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
fae299cd
DC
12154 break;
12155 case DW_TAG_namespace:
f55ee35c 12156 case DW_TAG_module:
fae299cd
DC
12157 /* FIXME: carlton/2004-01-16: Should we do this for
12158 DW_TAG_class_type/DW_TAG_structure_type, too? I think
12159 that current GCC's always emit the DIEs corresponding
12160 to definitions of methods of classes as children of a
12161 DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
12162 the DIEs giving the declarations, which could be
12163 anywhere). But I don't see any reason why the
12164 standards says that they have to be there. */
12165 get_scope_pc_bounds (child, &current_low, &current_high, cu);
12166
12167 if (current_low != ((CORE_ADDR) -1))
12168 {
12169 best_low = min (best_low, current_low);
12170 best_high = max (best_high, current_high);
12171 }
12172 break;
12173 default:
0963b4bd 12174 /* Ignore. */
fae299cd
DC
12175 break;
12176 }
12177
12178 child = sibling_die (child);
12179 }
12180 }
12181
12182 *lowpc = best_low;
12183 *highpc = best_high;
12184}
12185
801e3a5b
JB
12186/* Record the address ranges for BLOCK, offset by BASEADDR, as given
12187 in DIE. */
380bca97 12188
801e3a5b
JB
12189static void
12190dwarf2_record_block_ranges (struct die_info *die, struct block *block,
12191 CORE_ADDR baseaddr, struct dwarf2_cu *cu)
12192{
bb5ed363 12193 struct objfile *objfile = cu->objfile;
3e29f34a 12194 struct gdbarch *gdbarch = get_objfile_arch (objfile);
801e3a5b 12195 struct attribute *attr;
91da1414 12196 struct attribute *attr_high;
801e3a5b 12197
91da1414
MW
12198 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
12199 if (attr_high)
801e3a5b 12200 {
801e3a5b
JB
12201 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
12202 if (attr)
12203 {
31aa7e4e
JB
12204 CORE_ADDR low = attr_value_as_address (attr);
12205 CORE_ADDR high = attr_value_as_address (attr_high);
12206
12207 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12208 high += low;
9a619af0 12209
3e29f34a
MR
12210 low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
12211 high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
12212 record_block_range (block, low, high - 1);
801e3a5b
JB
12213 }
12214 }
12215
12216 attr = dwarf2_attr (die, DW_AT_ranges, cu);
12217 if (attr)
12218 {
bb5ed363 12219 bfd *obfd = objfile->obfd;
ab435259
DE
12220 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12221 We take advantage of the fact that DW_AT_ranges does not appear
12222 in DW_TAG_compile_unit of DWO files. */
12223 int need_ranges_base = die->tag != DW_TAG_compile_unit;
801e3a5b
JB
12224
12225 /* The value of the DW_AT_ranges attribute is the offset of the
12226 address range list in the .debug_ranges section. */
ab435259
DE
12227 unsigned long offset = (DW_UNSND (attr)
12228 + (need_ranges_base ? cu->ranges_base : 0));
d62bfeaf 12229 const gdb_byte *buffer;
801e3a5b
JB
12230
12231 /* For some target architectures, but not others, the
12232 read_address function sign-extends the addresses it returns.
12233 To recognize base address selection entries, we need a
12234 mask. */
12235 unsigned int addr_size = cu->header.addr_size;
12236 CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
12237
12238 /* The base address, to which the next pair is relative. Note
12239 that this 'base' is a DWARF concept: most entries in a range
12240 list are relative, to reduce the number of relocs against the
12241 debugging information. This is separate from this function's
12242 'baseaddr' argument, which GDB uses to relocate debugging
12243 information from a shared library based on the address at
12244 which the library was loaded. */
d00adf39
DE
12245 CORE_ADDR base = cu->base_address;
12246 int base_known = cu->base_known;
801e3a5b 12247
d62bfeaf 12248 dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
dce234bc 12249 if (offset >= dwarf2_per_objfile->ranges.size)
801e3a5b
JB
12250 {
12251 complaint (&symfile_complaints,
12252 _("Offset %lu out of bounds for DW_AT_ranges attribute"),
12253 offset);
12254 return;
12255 }
d62bfeaf 12256 buffer = dwarf2_per_objfile->ranges.buffer + offset;
801e3a5b
JB
12257
12258 for (;;)
12259 {
12260 unsigned int bytes_read;
12261 CORE_ADDR start, end;
12262
12263 start = read_address (obfd, buffer, cu, &bytes_read);
12264 buffer += bytes_read;
12265 end = read_address (obfd, buffer, cu, &bytes_read);
12266 buffer += bytes_read;
12267
12268 /* Did we find the end of the range list? */
12269 if (start == 0 && end == 0)
12270 break;
12271
12272 /* Did we find a base address selection entry? */
12273 else if ((start & base_select_mask) == base_select_mask)
12274 {
12275 base = end;
12276 base_known = 1;
12277 }
12278
12279 /* We found an ordinary address range. */
12280 else
12281 {
12282 if (!base_known)
12283 {
12284 complaint (&symfile_complaints,
3e43a32a
MS
12285 _("Invalid .debug_ranges data "
12286 "(no base address)"));
801e3a5b
JB
12287 return;
12288 }
12289
9277c30c
UW
12290 if (start > end)
12291 {
12292 /* Inverted range entries are invalid. */
12293 complaint (&symfile_complaints,
12294 _("Invalid .debug_ranges data "
12295 "(inverted range)"));
12296 return;
12297 }
12298
12299 /* Empty range entries have no effect. */
12300 if (start == end)
12301 continue;
12302
01093045
DE
12303 start += base + baseaddr;
12304 end += base + baseaddr;
12305
12306 /* A not-uncommon case of bad debug info.
12307 Don't pollute the addrmap with bad data. */
12308 if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
12309 {
12310 complaint (&symfile_complaints,
12311 _(".debug_ranges entry has start address of zero"
4262abfb 12312 " [in module %s]"), objfile_name (objfile));
01093045
DE
12313 continue;
12314 }
12315
3e29f34a
MR
12316 start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
12317 end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
01093045 12318 record_block_range (block, start, end - 1);
801e3a5b
JB
12319 }
12320 }
12321 }
12322}
12323
685b1105
JK
12324/* Check whether the producer field indicates either of GCC < 4.6, or the
12325 Intel C/C++ compiler, and cache the result in CU. */
60d5a603 12326
685b1105
JK
12327static void
12328check_producer (struct dwarf2_cu *cu)
60d5a603
JK
12329{
12330 const char *cs;
38360086 12331 int major, minor;
60d5a603
JK
12332
12333 if (cu->producer == NULL)
12334 {
12335 /* For unknown compilers expect their behavior is DWARF version
12336 compliant.
12337
12338 GCC started to support .debug_types sections by -gdwarf-4 since
12339 gcc-4.5.x. As the .debug_types sections are missing DW_AT_producer
12340 for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
12341 combination. gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
12342 interpreted incorrectly by GDB now - GCC PR debug/48229. */
60d5a603 12343 }
b1ffba5a 12344 else if (producer_is_gcc (cu->producer, &major, &minor))
60d5a603 12345 {
38360086
MW
12346 cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
12347 cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
685b1105 12348 }
61012eef 12349 else if (startswith (cu->producer, "Intel(R) C"))
685b1105
JK
12350 cu->producer_is_icc = 1;
12351 else
12352 {
12353 /* For other non-GCC compilers, expect their behavior is DWARF version
12354 compliant. */
60d5a603
JK
12355 }
12356
ba919b58 12357 cu->checked_producer = 1;
685b1105 12358}
ba919b58 12359
685b1105
JK
12360/* Check for GCC PR debug/45124 fix which is not present in any G++ version up
12361 to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
12362 during 4.6.0 experimental. */
12363
12364static int
12365producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
12366{
12367 if (!cu->checked_producer)
12368 check_producer (cu);
12369
12370 return cu->producer_is_gxx_lt_4_6;
60d5a603
JK
12371}
12372
12373/* Return the default accessibility type if it is not overriden by
12374 DW_AT_accessibility. */
12375
12376static enum dwarf_access_attribute
12377dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
12378{
12379 if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
12380 {
12381 /* The default DWARF 2 accessibility for members is public, the default
12382 accessibility for inheritance is private. */
12383
12384 if (die->tag != DW_TAG_inheritance)
12385 return DW_ACCESS_public;
12386 else
12387 return DW_ACCESS_private;
12388 }
12389 else
12390 {
12391 /* DWARF 3+ defines the default accessibility a different way. The same
12392 rules apply now for DW_TAG_inheritance as for the members and it only
12393 depends on the container kind. */
12394
12395 if (die->parent->tag == DW_TAG_class_type)
12396 return DW_ACCESS_private;
12397 else
12398 return DW_ACCESS_public;
12399 }
12400}
12401
74ac6d43
TT
12402/* Look for DW_AT_data_member_location. Set *OFFSET to the byte
12403 offset. If the attribute was not found return 0, otherwise return
12404 1. If it was found but could not properly be handled, set *OFFSET
12405 to 0. */
12406
12407static int
12408handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
12409 LONGEST *offset)
12410{
12411 struct attribute *attr;
12412
12413 attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
12414 if (attr != NULL)
12415 {
12416 *offset = 0;
12417
12418 /* Note that we do not check for a section offset first here.
12419 This is because DW_AT_data_member_location is new in DWARF 4,
12420 so if we see it, we can assume that a constant form is really
12421 a constant and not a section offset. */
12422 if (attr_form_is_constant (attr))
12423 *offset = dwarf2_get_attr_constant_value (attr, 0);
12424 else if (attr_form_is_section_offset (attr))
12425 dwarf2_complex_location_expr_complaint ();
12426 else if (attr_form_is_block (attr))
12427 *offset = decode_locdesc (DW_BLOCK (attr), cu);
12428 else
12429 dwarf2_complex_location_expr_complaint ();
12430
12431 return 1;
12432 }
12433
12434 return 0;
12435}
12436
c906108c
SS
12437/* Add an aggregate field to the field list. */
12438
12439static void
107d2387 12440dwarf2_add_field (struct field_info *fip, struct die_info *die,
e7c27a73 12441 struct dwarf2_cu *cu)
6e70227d 12442{
e7c27a73 12443 struct objfile *objfile = cu->objfile;
5e2b427d 12444 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
12445 struct nextfield *new_field;
12446 struct attribute *attr;
12447 struct field *fp;
15d034d0 12448 const char *fieldname = "";
c906108c
SS
12449
12450 /* Allocate a new field list entry and link it in. */
12451 new_field = (struct nextfield *) xmalloc (sizeof (struct nextfield));
b8c9b27d 12452 make_cleanup (xfree, new_field);
c906108c 12453 memset (new_field, 0, sizeof (struct nextfield));
7d0ccb61
DJ
12454
12455 if (die->tag == DW_TAG_inheritance)
12456 {
12457 new_field->next = fip->baseclasses;
12458 fip->baseclasses = new_field;
12459 }
12460 else
12461 {
12462 new_field->next = fip->fields;
12463 fip->fields = new_field;
12464 }
c906108c
SS
12465 fip->nfields++;
12466
e142c38c 12467 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c
SS
12468 if (attr)
12469 new_field->accessibility = DW_UNSND (attr);
60d5a603
JK
12470 else
12471 new_field->accessibility = dwarf2_default_access_attribute (die, cu);
c906108c
SS
12472 if (new_field->accessibility != DW_ACCESS_public)
12473 fip->non_public_fields = 1;
60d5a603 12474
e142c38c 12475 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
c906108c
SS
12476 if (attr)
12477 new_field->virtuality = DW_UNSND (attr);
60d5a603
JK
12478 else
12479 new_field->virtuality = DW_VIRTUALITY_none;
c906108c
SS
12480
12481 fp = &new_field->field;
a9a9bd0f 12482
e142c38c 12483 if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
c906108c 12484 {
74ac6d43
TT
12485 LONGEST offset;
12486
a9a9bd0f 12487 /* Data member other than a C++ static data member. */
6e70227d 12488
c906108c 12489 /* Get type of field. */
e7c27a73 12490 fp->type = die_type (die, cu);
c906108c 12491
d6a843b5 12492 SET_FIELD_BITPOS (*fp, 0);
01ad7f36 12493
c906108c 12494 /* Get bit size of field (zero if none). */
e142c38c 12495 attr = dwarf2_attr (die, DW_AT_bit_size, cu);
c906108c
SS
12496 if (attr)
12497 {
12498 FIELD_BITSIZE (*fp) = DW_UNSND (attr);
12499 }
12500 else
12501 {
12502 FIELD_BITSIZE (*fp) = 0;
12503 }
12504
12505 /* Get bit offset of field. */
74ac6d43
TT
12506 if (handle_data_member_location (die, cu, &offset))
12507 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
e142c38c 12508 attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
c906108c
SS
12509 if (attr)
12510 {
5e2b427d 12511 if (gdbarch_bits_big_endian (gdbarch))
c906108c
SS
12512 {
12513 /* For big endian bits, the DW_AT_bit_offset gives the
c5aa993b
JM
12514 additional bit offset from the MSB of the containing
12515 anonymous object to the MSB of the field. We don't
12516 have to do anything special since we don't need to
12517 know the size of the anonymous object. */
f41f5e61 12518 SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
c906108c
SS
12519 }
12520 else
12521 {
12522 /* For little endian bits, compute the bit offset to the
c5aa993b
JM
12523 MSB of the anonymous object, subtract off the number of
12524 bits from the MSB of the field to the MSB of the
12525 object, and then subtract off the number of bits of
12526 the field itself. The result is the bit offset of
12527 the LSB of the field. */
c906108c
SS
12528 int anonymous_size;
12529 int bit_offset = DW_UNSND (attr);
12530
e142c38c 12531 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
12532 if (attr)
12533 {
12534 /* The size of the anonymous object containing
12535 the bit field is explicit, so use the
12536 indicated size (in bytes). */
12537 anonymous_size = DW_UNSND (attr);
12538 }
12539 else
12540 {
12541 /* The size of the anonymous object containing
12542 the bit field must be inferred from the type
12543 attribute of the data member containing the
12544 bit field. */
12545 anonymous_size = TYPE_LENGTH (fp->type);
12546 }
f41f5e61
PA
12547 SET_FIELD_BITPOS (*fp,
12548 (FIELD_BITPOS (*fp)
12549 + anonymous_size * bits_per_byte
12550 - bit_offset - FIELD_BITSIZE (*fp)));
c906108c
SS
12551 }
12552 }
12553
12554 /* Get name of field. */
39cbfefa
DJ
12555 fieldname = dwarf2_name (die, cu);
12556 if (fieldname == NULL)
12557 fieldname = "";
d8151005
DJ
12558
12559 /* The name is already allocated along with this objfile, so we don't
12560 need to duplicate it for the type. */
12561 fp->name = fieldname;
c906108c
SS
12562
12563 /* Change accessibility for artificial fields (e.g. virtual table
c5aa993b 12564 pointer or virtual base class pointer) to private. */
e142c38c 12565 if (dwarf2_attr (die, DW_AT_artificial, cu))
c906108c 12566 {
d48cc9dd 12567 FIELD_ARTIFICIAL (*fp) = 1;
c906108c
SS
12568 new_field->accessibility = DW_ACCESS_private;
12569 fip->non_public_fields = 1;
12570 }
12571 }
a9a9bd0f 12572 else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
c906108c 12573 {
a9a9bd0f
DC
12574 /* C++ static member. */
12575
12576 /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
12577 is a declaration, but all versions of G++ as of this writing
12578 (so through at least 3.2.1) incorrectly generate
12579 DW_TAG_variable tags. */
6e70227d 12580
ff355380 12581 const char *physname;
c906108c 12582
a9a9bd0f 12583 /* Get name of field. */
39cbfefa
DJ
12584 fieldname = dwarf2_name (die, cu);
12585 if (fieldname == NULL)
c906108c
SS
12586 return;
12587
254e6b9e 12588 attr = dwarf2_attr (die, DW_AT_const_value, cu);
3863f96c
DE
12589 if (attr
12590 /* Only create a symbol if this is an external value.
12591 new_symbol checks this and puts the value in the global symbol
12592 table, which we want. If it is not external, new_symbol
12593 will try to put the value in cu->list_in_scope which is wrong. */
12594 && dwarf2_flag_true_p (die, DW_AT_external, cu))
254e6b9e
DE
12595 {
12596 /* A static const member, not much different than an enum as far as
12597 we're concerned, except that we can support more types. */
12598 new_symbol (die, NULL, cu);
12599 }
12600
2df3850c 12601 /* Get physical name. */
ff355380 12602 physname = dwarf2_physname (fieldname, die, cu);
c906108c 12603
d8151005
DJ
12604 /* The name is already allocated along with this objfile, so we don't
12605 need to duplicate it for the type. */
12606 SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
e7c27a73 12607 FIELD_TYPE (*fp) = die_type (die, cu);
d8151005 12608 FIELD_NAME (*fp) = fieldname;
c906108c
SS
12609 }
12610 else if (die->tag == DW_TAG_inheritance)
12611 {
74ac6d43 12612 LONGEST offset;
d4b96c9a 12613
74ac6d43
TT
12614 /* C++ base class field. */
12615 if (handle_data_member_location (die, cu, &offset))
12616 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
c906108c 12617 FIELD_BITSIZE (*fp) = 0;
e7c27a73 12618 FIELD_TYPE (*fp) = die_type (die, cu);
c906108c
SS
12619 FIELD_NAME (*fp) = type_name_no_tag (fp->type);
12620 fip->nbaseclasses++;
12621 }
12622}
12623
98751a41
JK
12624/* Add a typedef defined in the scope of the FIP's class. */
12625
12626static void
12627dwarf2_add_typedef (struct field_info *fip, struct die_info *die,
12628 struct dwarf2_cu *cu)
6e70227d 12629{
98751a41 12630 struct objfile *objfile = cu->objfile;
98751a41
JK
12631 struct typedef_field_list *new_field;
12632 struct attribute *attr;
12633 struct typedef_field *fp;
12634 char *fieldname = "";
12635
12636 /* Allocate a new field list entry and link it in. */
12637 new_field = xzalloc (sizeof (*new_field));
12638 make_cleanup (xfree, new_field);
12639
12640 gdb_assert (die->tag == DW_TAG_typedef);
12641
12642 fp = &new_field->field;
12643
12644 /* Get name of field. */
12645 fp->name = dwarf2_name (die, cu);
12646 if (fp->name == NULL)
12647 return;
12648
12649 fp->type = read_type_die (die, cu);
12650
12651 new_field->next = fip->typedef_field_list;
12652 fip->typedef_field_list = new_field;
12653 fip->typedef_field_list_count++;
12654}
12655
c906108c
SS
12656/* Create the vector of fields, and attach it to the type. */
12657
12658static void
fba45db2 12659dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 12660 struct dwarf2_cu *cu)
c906108c
SS
12661{
12662 int nfields = fip->nfields;
12663
12664 /* Record the field count, allocate space for the array of fields,
12665 and create blank accessibility bitfields if necessary. */
12666 TYPE_NFIELDS (type) = nfields;
12667 TYPE_FIELDS (type) = (struct field *)
12668 TYPE_ALLOC (type, sizeof (struct field) * nfields);
12669 memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
12670
b4ba55a1 12671 if (fip->non_public_fields && cu->language != language_ada)
c906108c
SS
12672 {
12673 ALLOCATE_CPLUS_STRUCT_TYPE (type);
12674
12675 TYPE_FIELD_PRIVATE_BITS (type) =
12676 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12677 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
12678
12679 TYPE_FIELD_PROTECTED_BITS (type) =
12680 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12681 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
12682
774b6a14
TT
12683 TYPE_FIELD_IGNORE_BITS (type) =
12684 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12685 B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
c906108c
SS
12686 }
12687
12688 /* If the type has baseclasses, allocate and clear a bit vector for
12689 TYPE_FIELD_VIRTUAL_BITS. */
b4ba55a1 12690 if (fip->nbaseclasses && cu->language != language_ada)
c906108c
SS
12691 {
12692 int num_bytes = B_BYTES (fip->nbaseclasses);
fe1b8b76 12693 unsigned char *pointer;
c906108c
SS
12694
12695 ALLOCATE_CPLUS_STRUCT_TYPE (type);
fe1b8b76
JB
12696 pointer = TYPE_ALLOC (type, num_bytes);
12697 TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
c906108c
SS
12698 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
12699 TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
12700 }
12701
3e43a32a
MS
12702 /* Copy the saved-up fields into the field vector. Start from the head of
12703 the list, adding to the tail of the field array, so that they end up in
12704 the same order in the array in which they were added to the list. */
c906108c
SS
12705 while (nfields-- > 0)
12706 {
7d0ccb61
DJ
12707 struct nextfield *fieldp;
12708
12709 if (fip->fields)
12710 {
12711 fieldp = fip->fields;
12712 fip->fields = fieldp->next;
12713 }
12714 else
12715 {
12716 fieldp = fip->baseclasses;
12717 fip->baseclasses = fieldp->next;
12718 }
12719
12720 TYPE_FIELD (type, nfields) = fieldp->field;
12721 switch (fieldp->accessibility)
c906108c 12722 {
c5aa993b 12723 case DW_ACCESS_private:
b4ba55a1
JB
12724 if (cu->language != language_ada)
12725 SET_TYPE_FIELD_PRIVATE (type, nfields);
c5aa993b 12726 break;
c906108c 12727
c5aa993b 12728 case DW_ACCESS_protected:
b4ba55a1
JB
12729 if (cu->language != language_ada)
12730 SET_TYPE_FIELD_PROTECTED (type, nfields);
c5aa993b 12731 break;
c906108c 12732
c5aa993b
JM
12733 case DW_ACCESS_public:
12734 break;
c906108c 12735
c5aa993b
JM
12736 default:
12737 /* Unknown accessibility. Complain and treat it as public. */
12738 {
e2e0b3e5 12739 complaint (&symfile_complaints, _("unsupported accessibility %d"),
7d0ccb61 12740 fieldp->accessibility);
c5aa993b
JM
12741 }
12742 break;
c906108c
SS
12743 }
12744 if (nfields < fip->nbaseclasses)
12745 {
7d0ccb61 12746 switch (fieldp->virtuality)
c906108c 12747 {
c5aa993b
JM
12748 case DW_VIRTUALITY_virtual:
12749 case DW_VIRTUALITY_pure_virtual:
b4ba55a1 12750 if (cu->language == language_ada)
a73c6dcd 12751 error (_("unexpected virtuality in component of Ada type"));
c5aa993b
JM
12752 SET_TYPE_FIELD_VIRTUAL (type, nfields);
12753 break;
c906108c
SS
12754 }
12755 }
c906108c
SS
12756 }
12757}
12758
7d27a96d
TT
12759/* Return true if this member function is a constructor, false
12760 otherwise. */
12761
12762static int
12763dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
12764{
12765 const char *fieldname;
fe978cb0 12766 const char *type_name;
7d27a96d
TT
12767 int len;
12768
12769 if (die->parent == NULL)
12770 return 0;
12771
12772 if (die->parent->tag != DW_TAG_structure_type
12773 && die->parent->tag != DW_TAG_union_type
12774 && die->parent->tag != DW_TAG_class_type)
12775 return 0;
12776
12777 fieldname = dwarf2_name (die, cu);
fe978cb0
PA
12778 type_name = dwarf2_name (die->parent, cu);
12779 if (fieldname == NULL || type_name == NULL)
7d27a96d
TT
12780 return 0;
12781
12782 len = strlen (fieldname);
fe978cb0
PA
12783 return (strncmp (fieldname, type_name, len) == 0
12784 && (type_name[len] == '\0' || type_name[len] == '<'));
7d27a96d
TT
12785}
12786
c906108c
SS
12787/* Add a member function to the proper fieldlist. */
12788
12789static void
107d2387 12790dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
e7c27a73 12791 struct type *type, struct dwarf2_cu *cu)
c906108c 12792{
e7c27a73 12793 struct objfile *objfile = cu->objfile;
c906108c
SS
12794 struct attribute *attr;
12795 struct fnfieldlist *flp;
12796 int i;
12797 struct fn_field *fnp;
15d034d0 12798 const char *fieldname;
c906108c 12799 struct nextfnfield *new_fnfield;
f792889a 12800 struct type *this_type;
60d5a603 12801 enum dwarf_access_attribute accessibility;
c906108c 12802
b4ba55a1 12803 if (cu->language == language_ada)
a73c6dcd 12804 error (_("unexpected member function in Ada type"));
b4ba55a1 12805
2df3850c 12806 /* Get name of member function. */
39cbfefa
DJ
12807 fieldname = dwarf2_name (die, cu);
12808 if (fieldname == NULL)
2df3850c 12809 return;
c906108c 12810
c906108c
SS
12811 /* Look up member function name in fieldlist. */
12812 for (i = 0; i < fip->nfnfields; i++)
12813 {
27bfe10e 12814 if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
c906108c
SS
12815 break;
12816 }
12817
12818 /* Create new list element if necessary. */
12819 if (i < fip->nfnfields)
12820 flp = &fip->fnfieldlists[i];
12821 else
12822 {
12823 if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
12824 {
12825 fip->fnfieldlists = (struct fnfieldlist *)
12826 xrealloc (fip->fnfieldlists,
12827 (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
c5aa993b 12828 * sizeof (struct fnfieldlist));
c906108c 12829 if (fip->nfnfields == 0)
c13c43fd 12830 make_cleanup (free_current_contents, &fip->fnfieldlists);
c906108c
SS
12831 }
12832 flp = &fip->fnfieldlists[fip->nfnfields];
12833 flp->name = fieldname;
12834 flp->length = 0;
12835 flp->head = NULL;
3da10d80 12836 i = fip->nfnfields++;
c906108c
SS
12837 }
12838
12839 /* Create a new member function field and chain it to the field list
0963b4bd 12840 entry. */
c906108c 12841 new_fnfield = (struct nextfnfield *) xmalloc (sizeof (struct nextfnfield));
b8c9b27d 12842 make_cleanup (xfree, new_fnfield);
c906108c
SS
12843 memset (new_fnfield, 0, sizeof (struct nextfnfield));
12844 new_fnfield->next = flp->head;
12845 flp->head = new_fnfield;
12846 flp->length++;
12847
12848 /* Fill in the member function field info. */
12849 fnp = &new_fnfield->fnfield;
3da10d80
KS
12850
12851 /* Delay processing of the physname until later. */
12852 if (cu->language == language_cplus || cu->language == language_java)
12853 {
12854 add_to_method_list (type, i, flp->length - 1, fieldname,
12855 die, cu);
12856 }
12857 else
12858 {
1d06ead6 12859 const char *physname = dwarf2_physname (fieldname, die, cu);
3da10d80
KS
12860 fnp->physname = physname ? physname : "";
12861 }
12862
c906108c 12863 fnp->type = alloc_type (objfile);
f792889a
DJ
12864 this_type = read_type_die (die, cu);
12865 if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
c906108c 12866 {
f792889a 12867 int nparams = TYPE_NFIELDS (this_type);
c906108c 12868
f792889a 12869 /* TYPE is the domain of this method, and THIS_TYPE is the type
e26fb1d7
DC
12870 of the method itself (TYPE_CODE_METHOD). */
12871 smash_to_method_type (fnp->type, type,
f792889a
DJ
12872 TYPE_TARGET_TYPE (this_type),
12873 TYPE_FIELDS (this_type),
12874 TYPE_NFIELDS (this_type),
12875 TYPE_VARARGS (this_type));
c906108c
SS
12876
12877 /* Handle static member functions.
c5aa993b 12878 Dwarf2 has no clean way to discern C++ static and non-static
0963b4bd
MS
12879 member functions. G++ helps GDB by marking the first
12880 parameter for non-static member functions (which is the this
12881 pointer) as artificial. We obtain this information from
12882 read_subroutine_type via TYPE_FIELD_ARTIFICIAL. */
f792889a 12883 if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
c906108c
SS
12884 fnp->voffset = VOFFSET_STATIC;
12885 }
12886 else
e2e0b3e5 12887 complaint (&symfile_complaints, _("member function type missing for '%s'"),
3da10d80 12888 dwarf2_full_name (fieldname, die, cu));
c906108c
SS
12889
12890 /* Get fcontext from DW_AT_containing_type if present. */
e142c38c 12891 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
e7c27a73 12892 fnp->fcontext = die_containing_type (die, cu);
c906108c 12893
3e43a32a
MS
12894 /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
12895 is_volatile is irrelevant, as it is needed by gdb_mangle_name only. */
c906108c
SS
12896
12897 /* Get accessibility. */
e142c38c 12898 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c 12899 if (attr)
aead7601 12900 accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
60d5a603
JK
12901 else
12902 accessibility = dwarf2_default_access_attribute (die, cu);
12903 switch (accessibility)
c906108c 12904 {
60d5a603
JK
12905 case DW_ACCESS_private:
12906 fnp->is_private = 1;
12907 break;
12908 case DW_ACCESS_protected:
12909 fnp->is_protected = 1;
12910 break;
c906108c
SS
12911 }
12912
b02dede2 12913 /* Check for artificial methods. */
e142c38c 12914 attr = dwarf2_attr (die, DW_AT_artificial, cu);
b02dede2
DJ
12915 if (attr && DW_UNSND (attr) != 0)
12916 fnp->is_artificial = 1;
12917
7d27a96d
TT
12918 fnp->is_constructor = dwarf2_is_constructor (die, cu);
12919
0d564a31 12920 /* Get index in virtual function table if it is a virtual member
aec5aa8b
TT
12921 function. For older versions of GCC, this is an offset in the
12922 appropriate virtual table, as specified by DW_AT_containing_type.
12923 For everyone else, it is an expression to be evaluated relative
0d564a31
DJ
12924 to the object address. */
12925
e142c38c 12926 attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
aec5aa8b 12927 if (attr)
8e19ed76 12928 {
aec5aa8b 12929 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
8e19ed76 12930 {
aec5aa8b
TT
12931 if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
12932 {
12933 /* Old-style GCC. */
12934 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
12935 }
12936 else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
12937 || (DW_BLOCK (attr)->size > 1
12938 && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
12939 && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
12940 {
12941 struct dwarf_block blk;
12942 int offset;
12943
12944 offset = (DW_BLOCK (attr)->data[0] == DW_OP_deref
12945 ? 1 : 2);
12946 blk.size = DW_BLOCK (attr)->size - offset;
12947 blk.data = DW_BLOCK (attr)->data + offset;
12948 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
12949 if ((fnp->voffset % cu->header.addr_size) != 0)
12950 dwarf2_complex_location_expr_complaint ();
12951 else
12952 fnp->voffset /= cu->header.addr_size;
12953 fnp->voffset += 2;
12954 }
12955 else
12956 dwarf2_complex_location_expr_complaint ();
12957
12958 if (!fnp->fcontext)
7e993ebf
KS
12959 {
12960 /* If there is no `this' field and no DW_AT_containing_type,
12961 we cannot actually find a base class context for the
12962 vtable! */
12963 if (TYPE_NFIELDS (this_type) == 0
12964 || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
12965 {
12966 complaint (&symfile_complaints,
12967 _("cannot determine context for virtual member "
12968 "function \"%s\" (offset %d)"),
12969 fieldname, die->offset.sect_off);
12970 }
12971 else
12972 {
12973 fnp->fcontext
12974 = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
12975 }
12976 }
aec5aa8b 12977 }
3690dd37 12978 else if (attr_form_is_section_offset (attr))
8e19ed76 12979 {
4d3c2250 12980 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
12981 }
12982 else
12983 {
4d3c2250
KB
12984 dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
12985 fieldname);
8e19ed76 12986 }
0d564a31 12987 }
d48cc9dd
DJ
12988 else
12989 {
12990 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
12991 if (attr && DW_UNSND (attr))
12992 {
12993 /* GCC does this, as of 2008-08-25; PR debug/37237. */
12994 complaint (&symfile_complaints,
3e43a32a
MS
12995 _("Member function \"%s\" (offset %d) is virtual "
12996 "but the vtable offset is not specified"),
b64f50a1 12997 fieldname, die->offset.sect_off);
9655fd1a 12998 ALLOCATE_CPLUS_STRUCT_TYPE (type);
d48cc9dd
DJ
12999 TYPE_CPLUS_DYNAMIC (type) = 1;
13000 }
13001 }
c906108c
SS
13002}
13003
13004/* Create the vector of member function fields, and attach it to the type. */
13005
13006static void
fba45db2 13007dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 13008 struct dwarf2_cu *cu)
c906108c
SS
13009{
13010 struct fnfieldlist *flp;
c906108c
SS
13011 int i;
13012
b4ba55a1 13013 if (cu->language == language_ada)
a73c6dcd 13014 error (_("unexpected member functions in Ada type"));
b4ba55a1 13015
c906108c
SS
13016 ALLOCATE_CPLUS_STRUCT_TYPE (type);
13017 TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
13018 TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
13019
13020 for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
13021 {
13022 struct nextfnfield *nfp = flp->head;
13023 struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
13024 int k;
13025
13026 TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
13027 TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
13028 fn_flp->fn_fields = (struct fn_field *)
13029 TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
13030 for (k = flp->length; (k--, nfp); nfp = nfp->next)
c5aa993b 13031 fn_flp->fn_fields[k] = nfp->fnfield;
c906108c
SS
13032 }
13033
13034 TYPE_NFN_FIELDS (type) = fip->nfnfields;
c906108c
SS
13035}
13036
1168df01
JB
13037/* Returns non-zero if NAME is the name of a vtable member in CU's
13038 language, zero otherwise. */
13039static int
13040is_vtable_name (const char *name, struct dwarf2_cu *cu)
13041{
13042 static const char vptr[] = "_vptr";
987504bb 13043 static const char vtable[] = "vtable";
1168df01 13044
987504bb
JJ
13045 /* Look for the C++ and Java forms of the vtable. */
13046 if ((cu->language == language_java
61012eef
GB
13047 && startswith (name, vtable))
13048 || (startswith (name, vptr)
987504bb 13049 && is_cplus_marker (name[sizeof (vptr) - 1])))
1168df01
JB
13050 return 1;
13051
13052 return 0;
13053}
13054
c0dd20ea 13055/* GCC outputs unnamed structures that are really pointers to member
0b92b5bb
TT
13056 functions, with the ABI-specified layout. If TYPE describes
13057 such a structure, smash it into a member function type.
61049d3b
DJ
13058
13059 GCC shouldn't do this; it should just output pointer to member DIEs.
13060 This is GCC PR debug/28767. */
c0dd20ea 13061
0b92b5bb
TT
13062static void
13063quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
c0dd20ea 13064{
09e2d7c7 13065 struct type *pfn_type, *self_type, *new_type;
c0dd20ea
DJ
13066
13067 /* Check for a structure with no name and two children. */
0b92b5bb
TT
13068 if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
13069 return;
c0dd20ea
DJ
13070
13071 /* Check for __pfn and __delta members. */
0b92b5bb
TT
13072 if (TYPE_FIELD_NAME (type, 0) == NULL
13073 || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
13074 || TYPE_FIELD_NAME (type, 1) == NULL
13075 || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
13076 return;
c0dd20ea
DJ
13077
13078 /* Find the type of the method. */
0b92b5bb 13079 pfn_type = TYPE_FIELD_TYPE (type, 0);
c0dd20ea
DJ
13080 if (pfn_type == NULL
13081 || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
13082 || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
0b92b5bb 13083 return;
c0dd20ea
DJ
13084
13085 /* Look for the "this" argument. */
13086 pfn_type = TYPE_TARGET_TYPE (pfn_type);
13087 if (TYPE_NFIELDS (pfn_type) == 0
0b92b5bb 13088 /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
c0dd20ea 13089 || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
0b92b5bb 13090 return;
c0dd20ea 13091
09e2d7c7 13092 self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
0b92b5bb 13093 new_type = alloc_type (objfile);
09e2d7c7 13094 smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
c0dd20ea
DJ
13095 TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
13096 TYPE_VARARGS (pfn_type));
0b92b5bb 13097 smash_to_methodptr_type (type, new_type);
c0dd20ea 13098}
1168df01 13099
685b1105
JK
13100/* Return non-zero if the CU's PRODUCER string matches the Intel C/C++ compiler
13101 (icc). */
13102
13103static int
13104producer_is_icc (struct dwarf2_cu *cu)
13105{
13106 if (!cu->checked_producer)
13107 check_producer (cu);
13108
13109 return cu->producer_is_icc;
13110}
13111
c906108c 13112/* Called when we find the DIE that starts a structure or union scope
c767944b
DJ
13113 (definition) to create a type for the structure or union. Fill in
13114 the type's name and general properties; the members will not be
83655187
DE
13115 processed until process_structure_scope. A symbol table entry for
13116 the type will also not be done until process_structure_scope (assuming
13117 the type has a name).
c906108c 13118
c767944b
DJ
13119 NOTE: we need to call these functions regardless of whether or not the
13120 DIE has a DW_AT_name attribute, since it might be an anonymous
c906108c 13121 structure or union. This gets the type entered into our set of
83655187 13122 user defined types. */
c906108c 13123
f792889a 13124static struct type *
134d01f1 13125read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13126{
e7c27a73 13127 struct objfile *objfile = cu->objfile;
c906108c
SS
13128 struct type *type;
13129 struct attribute *attr;
15d034d0 13130 const char *name;
c906108c 13131
348e048f
DE
13132 /* If the definition of this type lives in .debug_types, read that type.
13133 Don't follow DW_AT_specification though, that will take us back up
13134 the chain and we want to go down. */
45e58e77 13135 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
348e048f
DE
13136 if (attr)
13137 {
ac9ec31b 13138 type = get_DW_AT_signature_type (die, attr, cu);
9dc481d3 13139
ac9ec31b 13140 /* The type's CU may not be the same as CU.
02142a6c 13141 Ensure TYPE is recorded with CU in die_type_hash. */
348e048f
DE
13142 return set_die_type (die, type, cu);
13143 }
13144
c0dd20ea 13145 type = alloc_type (objfile);
c906108c 13146 INIT_CPLUS_SPECIFIC (type);
93311388 13147
39cbfefa
DJ
13148 name = dwarf2_name (die, cu);
13149 if (name != NULL)
c906108c 13150 {
987504bb 13151 if (cu->language == language_cplus
45280282
IB
13152 || cu->language == language_java
13153 || cu->language == language_d)
63d06c5c 13154 {
15d034d0 13155 const char *full_name = dwarf2_full_name (name, die, cu);
3da10d80
KS
13156
13157 /* dwarf2_full_name might have already finished building the DIE's
13158 type. If so, there is no need to continue. */
13159 if (get_die_type (die, cu) != NULL)
13160 return get_die_type (die, cu);
13161
13162 TYPE_TAG_NAME (type) = full_name;
94af9270
KS
13163 if (die->tag == DW_TAG_structure_type
13164 || die->tag == DW_TAG_class_type)
13165 TYPE_NAME (type) = TYPE_TAG_NAME (type);
63d06c5c
DC
13166 }
13167 else
13168 {
d8151005
DJ
13169 /* The name is already allocated along with this objfile, so
13170 we don't need to duplicate it for the type. */
7d455152 13171 TYPE_TAG_NAME (type) = name;
94af9270
KS
13172 if (die->tag == DW_TAG_class_type)
13173 TYPE_NAME (type) = TYPE_TAG_NAME (type);
63d06c5c 13174 }
c906108c
SS
13175 }
13176
13177 if (die->tag == DW_TAG_structure_type)
13178 {
13179 TYPE_CODE (type) = TYPE_CODE_STRUCT;
13180 }
13181 else if (die->tag == DW_TAG_union_type)
13182 {
13183 TYPE_CODE (type) = TYPE_CODE_UNION;
13184 }
13185 else
13186 {
4753d33b 13187 TYPE_CODE (type) = TYPE_CODE_STRUCT;
c906108c
SS
13188 }
13189
0cc2414c
TT
13190 if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
13191 TYPE_DECLARED_CLASS (type) = 1;
13192
e142c38c 13193 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
13194 if (attr)
13195 {
13196 TYPE_LENGTH (type) = DW_UNSND (attr);
13197 }
13198 else
13199 {
13200 TYPE_LENGTH (type) = 0;
13201 }
13202
422b1cb0 13203 if (producer_is_icc (cu) && (TYPE_LENGTH (type) == 0))
685b1105
JK
13204 {
13205 /* ICC does not output the required DW_AT_declaration
13206 on incomplete types, but gives them a size of zero. */
422b1cb0 13207 TYPE_STUB (type) = 1;
685b1105
JK
13208 }
13209 else
13210 TYPE_STUB_SUPPORTED (type) = 1;
13211
dc718098 13212 if (die_is_declaration (die, cu))
876cecd0 13213 TYPE_STUB (type) = 1;
a6c727b2
DJ
13214 else if (attr == NULL && die->child == NULL
13215 && producer_is_realview (cu->producer))
13216 /* RealView does not output the required DW_AT_declaration
13217 on incomplete types. */
13218 TYPE_STUB (type) = 1;
dc718098 13219
c906108c
SS
13220 /* We need to add the type field to the die immediately so we don't
13221 infinitely recurse when dealing with pointers to the structure
0963b4bd 13222 type within the structure itself. */
1c379e20 13223 set_die_type (die, type, cu);
c906108c 13224
7e314c57
JK
13225 /* set_die_type should be already done. */
13226 set_descriptive_type (type, die, cu);
13227
c767944b
DJ
13228 return type;
13229}
13230
13231/* Finish creating a structure or union type, including filling in
13232 its members and creating a symbol for it. */
13233
13234static void
13235process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
13236{
13237 struct objfile *objfile = cu->objfile;
ca040673 13238 struct die_info *child_die;
c767944b
DJ
13239 struct type *type;
13240
13241 type = get_die_type (die, cu);
13242 if (type == NULL)
13243 type = read_structure_type (die, cu);
13244
e142c38c 13245 if (die->child != NULL && ! die_is_declaration (die, cu))
c906108c
SS
13246 {
13247 struct field_info fi;
34eaf542 13248 VEC (symbolp) *template_args = NULL;
c767944b 13249 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
c906108c
SS
13250
13251 memset (&fi, 0, sizeof (struct field_info));
13252
639d11d3 13253 child_die = die->child;
c906108c
SS
13254
13255 while (child_die && child_die->tag)
13256 {
a9a9bd0f
DC
13257 if (child_die->tag == DW_TAG_member
13258 || child_die->tag == DW_TAG_variable)
c906108c 13259 {
a9a9bd0f
DC
13260 /* NOTE: carlton/2002-11-05: A C++ static data member
13261 should be a DW_TAG_member that is a declaration, but
13262 all versions of G++ as of this writing (so through at
13263 least 3.2.1) incorrectly generate DW_TAG_variable
13264 tags for them instead. */
e7c27a73 13265 dwarf2_add_field (&fi, child_die, cu);
c906108c 13266 }
8713b1b1 13267 else if (child_die->tag == DW_TAG_subprogram)
c906108c 13268 {
0963b4bd 13269 /* C++ member function. */
e7c27a73 13270 dwarf2_add_member_fn (&fi, child_die, type, cu);
c906108c
SS
13271 }
13272 else if (child_die->tag == DW_TAG_inheritance)
13273 {
13274 /* C++ base class field. */
e7c27a73 13275 dwarf2_add_field (&fi, child_die, cu);
c906108c 13276 }
98751a41
JK
13277 else if (child_die->tag == DW_TAG_typedef)
13278 dwarf2_add_typedef (&fi, child_die, cu);
34eaf542
TT
13279 else if (child_die->tag == DW_TAG_template_type_param
13280 || child_die->tag == DW_TAG_template_value_param)
13281 {
13282 struct symbol *arg = new_symbol (child_die, NULL, cu);
13283
f1078f66
DJ
13284 if (arg != NULL)
13285 VEC_safe_push (symbolp, template_args, arg);
34eaf542
TT
13286 }
13287
c906108c
SS
13288 child_die = sibling_die (child_die);
13289 }
13290
34eaf542
TT
13291 /* Attach template arguments to type. */
13292 if (! VEC_empty (symbolp, template_args))
13293 {
13294 ALLOCATE_CPLUS_STRUCT_TYPE (type);
13295 TYPE_N_TEMPLATE_ARGUMENTS (type)
13296 = VEC_length (symbolp, template_args);
13297 TYPE_TEMPLATE_ARGUMENTS (type)
13298 = obstack_alloc (&objfile->objfile_obstack,
13299 (TYPE_N_TEMPLATE_ARGUMENTS (type)
13300 * sizeof (struct symbol *)));
13301 memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
13302 VEC_address (symbolp, template_args),
13303 (TYPE_N_TEMPLATE_ARGUMENTS (type)
13304 * sizeof (struct symbol *)));
13305 VEC_free (symbolp, template_args);
13306 }
13307
c906108c
SS
13308 /* Attach fields and member functions to the type. */
13309 if (fi.nfields)
e7c27a73 13310 dwarf2_attach_fields_to_type (&fi, type, cu);
c906108c
SS
13311 if (fi.nfnfields)
13312 {
e7c27a73 13313 dwarf2_attach_fn_fields_to_type (&fi, type, cu);
c906108c 13314
c5aa993b 13315 /* Get the type which refers to the base class (possibly this
c906108c 13316 class itself) which contains the vtable pointer for the current
0d564a31
DJ
13317 class from the DW_AT_containing_type attribute. This use of
13318 DW_AT_containing_type is a GNU extension. */
c906108c 13319
e142c38c 13320 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
c906108c 13321 {
e7c27a73 13322 struct type *t = die_containing_type (die, cu);
c906108c 13323
ae6ae975 13324 set_type_vptr_basetype (type, t);
c906108c
SS
13325 if (type == t)
13326 {
c906108c
SS
13327 int i;
13328
13329 /* Our own class provides vtbl ptr. */
13330 for (i = TYPE_NFIELDS (t) - 1;
13331 i >= TYPE_N_BASECLASSES (t);
13332 --i)
13333 {
0d5cff50 13334 const char *fieldname = TYPE_FIELD_NAME (t, i);
c906108c 13335
1168df01 13336 if (is_vtable_name (fieldname, cu))
c906108c 13337 {
ae6ae975 13338 set_type_vptr_fieldno (type, i);
c906108c
SS
13339 break;
13340 }
13341 }
13342
13343 /* Complain if virtual function table field not found. */
13344 if (i < TYPE_N_BASECLASSES (t))
4d3c2250 13345 complaint (&symfile_complaints,
3e43a32a
MS
13346 _("virtual function table pointer "
13347 "not found when defining class '%s'"),
4d3c2250
KB
13348 TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
13349 "");
c906108c
SS
13350 }
13351 else
13352 {
ae6ae975 13353 set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
c906108c
SS
13354 }
13355 }
f6235d4c 13356 else if (cu->producer
61012eef 13357 && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
f6235d4c
EZ
13358 {
13359 /* The IBM XLC compiler does not provide direct indication
13360 of the containing type, but the vtable pointer is
13361 always named __vfp. */
13362
13363 int i;
13364
13365 for (i = TYPE_NFIELDS (type) - 1;
13366 i >= TYPE_N_BASECLASSES (type);
13367 --i)
13368 {
13369 if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
13370 {
ae6ae975
DE
13371 set_type_vptr_fieldno (type, i);
13372 set_type_vptr_basetype (type, type);
f6235d4c
EZ
13373 break;
13374 }
13375 }
13376 }
c906108c 13377 }
98751a41
JK
13378
13379 /* Copy fi.typedef_field_list linked list elements content into the
13380 allocated array TYPE_TYPEDEF_FIELD_ARRAY (type). */
13381 if (fi.typedef_field_list)
13382 {
13383 int i = fi.typedef_field_list_count;
13384
a0d7a4ff 13385 ALLOCATE_CPLUS_STRUCT_TYPE (type);
98751a41
JK
13386 TYPE_TYPEDEF_FIELD_ARRAY (type)
13387 = TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i);
13388 TYPE_TYPEDEF_FIELD_COUNT (type) = i;
13389
13390 /* Reverse the list order to keep the debug info elements order. */
13391 while (--i >= 0)
13392 {
13393 struct typedef_field *dest, *src;
6e70227d 13394
98751a41
JK
13395 dest = &TYPE_TYPEDEF_FIELD (type, i);
13396 src = &fi.typedef_field_list->field;
13397 fi.typedef_field_list = fi.typedef_field_list->next;
13398 *dest = *src;
13399 }
13400 }
c767944b
DJ
13401
13402 do_cleanups (back_to);
eb2a6f42
TT
13403
13404 if (HAVE_CPLUS_STRUCT (type))
13405 TYPE_CPLUS_REALLY_JAVA (type) = cu->language == language_java;
c906108c 13406 }
63d06c5c 13407
bb5ed363 13408 quirk_gcc_member_function_pointer (type, objfile);
0b92b5bb 13409
90aeadfc
DC
13410 /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
13411 snapshots) has been known to create a die giving a declaration
13412 for a class that has, as a child, a die giving a definition for a
13413 nested class. So we have to process our children even if the
13414 current die is a declaration. Normally, of course, a declaration
13415 won't have any children at all. */
134d01f1 13416
ca040673
DE
13417 child_die = die->child;
13418
90aeadfc
DC
13419 while (child_die != NULL && child_die->tag)
13420 {
13421 if (child_die->tag == DW_TAG_member
13422 || child_die->tag == DW_TAG_variable
34eaf542
TT
13423 || child_die->tag == DW_TAG_inheritance
13424 || child_die->tag == DW_TAG_template_value_param
13425 || child_die->tag == DW_TAG_template_type_param)
134d01f1 13426 {
90aeadfc 13427 /* Do nothing. */
134d01f1 13428 }
90aeadfc
DC
13429 else
13430 process_die (child_die, cu);
134d01f1 13431
90aeadfc 13432 child_die = sibling_die (child_die);
134d01f1
DJ
13433 }
13434
fa4028e9
JB
13435 /* Do not consider external references. According to the DWARF standard,
13436 these DIEs are identified by the fact that they have no byte_size
13437 attribute, and a declaration attribute. */
13438 if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
13439 || !die_is_declaration (die, cu))
c767944b 13440 new_symbol (die, type, cu);
134d01f1
DJ
13441}
13442
55426c9d
JB
13443/* Assuming DIE is an enumeration type, and TYPE is its associated type,
13444 update TYPE using some information only available in DIE's children. */
13445
13446static void
13447update_enumeration_type_from_children (struct die_info *die,
13448 struct type *type,
13449 struct dwarf2_cu *cu)
13450{
13451 struct obstack obstack;
60f7655a 13452 struct die_info *child_die;
55426c9d
JB
13453 int unsigned_enum = 1;
13454 int flag_enum = 1;
13455 ULONGEST mask = 0;
13456 struct cleanup *old_chain;
13457
13458 obstack_init (&obstack);
13459 old_chain = make_cleanup_obstack_free (&obstack);
13460
60f7655a
DE
13461 for (child_die = die->child;
13462 child_die != NULL && child_die->tag;
13463 child_die = sibling_die (child_die))
55426c9d
JB
13464 {
13465 struct attribute *attr;
13466 LONGEST value;
13467 const gdb_byte *bytes;
13468 struct dwarf2_locexpr_baton *baton;
13469 const char *name;
60f7655a 13470
55426c9d
JB
13471 if (child_die->tag != DW_TAG_enumerator)
13472 continue;
13473
13474 attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
13475 if (attr == NULL)
13476 continue;
13477
13478 name = dwarf2_name (child_die, cu);
13479 if (name == NULL)
13480 name = "<anonymous enumerator>";
13481
13482 dwarf2_const_value_attr (attr, type, name, &obstack, cu,
13483 &value, &bytes, &baton);
13484 if (value < 0)
13485 {
13486 unsigned_enum = 0;
13487 flag_enum = 0;
13488 }
13489 else if ((mask & value) != 0)
13490 flag_enum = 0;
13491 else
13492 mask |= value;
13493
13494 /* If we already know that the enum type is neither unsigned, nor
13495 a flag type, no need to look at the rest of the enumerates. */
13496 if (!unsigned_enum && !flag_enum)
13497 break;
55426c9d
JB
13498 }
13499
13500 if (unsigned_enum)
13501 TYPE_UNSIGNED (type) = 1;
13502 if (flag_enum)
13503 TYPE_FLAG_ENUM (type) = 1;
13504
13505 do_cleanups (old_chain);
13506}
13507
134d01f1
DJ
13508/* Given a DW_AT_enumeration_type die, set its type. We do not
13509 complete the type's fields yet, or create any symbols. */
c906108c 13510
f792889a 13511static struct type *
134d01f1 13512read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13513{
e7c27a73 13514 struct objfile *objfile = cu->objfile;
c906108c 13515 struct type *type;
c906108c 13516 struct attribute *attr;
0114d602 13517 const char *name;
134d01f1 13518
348e048f
DE
13519 /* If the definition of this type lives in .debug_types, read that type.
13520 Don't follow DW_AT_specification though, that will take us back up
13521 the chain and we want to go down. */
45e58e77 13522 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
348e048f
DE
13523 if (attr)
13524 {
ac9ec31b 13525 type = get_DW_AT_signature_type (die, attr, cu);
9dc481d3 13526
ac9ec31b 13527 /* The type's CU may not be the same as CU.
02142a6c 13528 Ensure TYPE is recorded with CU in die_type_hash. */
348e048f
DE
13529 return set_die_type (die, type, cu);
13530 }
13531
c906108c
SS
13532 type = alloc_type (objfile);
13533
13534 TYPE_CODE (type) = TYPE_CODE_ENUM;
94af9270 13535 name = dwarf2_full_name (NULL, die, cu);
39cbfefa 13536 if (name != NULL)
7d455152 13537 TYPE_TAG_NAME (type) = name;
c906108c 13538
0626fc76
TT
13539 attr = dwarf2_attr (die, DW_AT_type, cu);
13540 if (attr != NULL)
13541 {
13542 struct type *underlying_type = die_type (die, cu);
13543
13544 TYPE_TARGET_TYPE (type) = underlying_type;
13545 }
13546
e142c38c 13547 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
13548 if (attr)
13549 {
13550 TYPE_LENGTH (type) = DW_UNSND (attr);
13551 }
13552 else
13553 {
13554 TYPE_LENGTH (type) = 0;
13555 }
13556
137033e9
JB
13557 /* The enumeration DIE can be incomplete. In Ada, any type can be
13558 declared as private in the package spec, and then defined only
13559 inside the package body. Such types are known as Taft Amendment
13560 Types. When another package uses such a type, an incomplete DIE
13561 may be generated by the compiler. */
02eb380e 13562 if (die_is_declaration (die, cu))
876cecd0 13563 TYPE_STUB (type) = 1;
02eb380e 13564
0626fc76
TT
13565 /* Finish the creation of this type by using the enum's children.
13566 We must call this even when the underlying type has been provided
13567 so that we can determine if we're looking at a "flag" enum. */
55426c9d
JB
13568 update_enumeration_type_from_children (die, type, cu);
13569
0626fc76
TT
13570 /* If this type has an underlying type that is not a stub, then we
13571 may use its attributes. We always use the "unsigned" attribute
13572 in this situation, because ordinarily we guess whether the type
13573 is unsigned -- but the guess can be wrong and the underlying type
13574 can tell us the reality. However, we defer to a local size
13575 attribute if one exists, because this lets the compiler override
13576 the underlying type if needed. */
13577 if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
13578 {
13579 TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
13580 if (TYPE_LENGTH (type) == 0)
13581 TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
13582 }
13583
3d567982
TT
13584 TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
13585
f792889a 13586 return set_die_type (die, type, cu);
134d01f1
DJ
13587}
13588
13589/* Given a pointer to a die which begins an enumeration, process all
13590 the dies that define the members of the enumeration, and create the
13591 symbol for the enumeration type.
13592
13593 NOTE: We reverse the order of the element list. */
13594
13595static void
13596process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
13597{
f792889a 13598 struct type *this_type;
134d01f1 13599
f792889a
DJ
13600 this_type = get_die_type (die, cu);
13601 if (this_type == NULL)
13602 this_type = read_enumeration_type (die, cu);
9dc481d3 13603
639d11d3 13604 if (die->child != NULL)
c906108c 13605 {
9dc481d3
DE
13606 struct die_info *child_die;
13607 struct symbol *sym;
13608 struct field *fields = NULL;
13609 int num_fields = 0;
15d034d0 13610 const char *name;
9dc481d3 13611
639d11d3 13612 child_die = die->child;
c906108c
SS
13613 while (child_die && child_die->tag)
13614 {
13615 if (child_die->tag != DW_TAG_enumerator)
13616 {
e7c27a73 13617 process_die (child_die, cu);
c906108c
SS
13618 }
13619 else
13620 {
39cbfefa
DJ
13621 name = dwarf2_name (child_die, cu);
13622 if (name)
c906108c 13623 {
f792889a 13624 sym = new_symbol (child_die, this_type, cu);
c906108c
SS
13625
13626 if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
13627 {
13628 fields = (struct field *)
13629 xrealloc (fields,
13630 (num_fields + DW_FIELD_ALLOC_CHUNK)
c5aa993b 13631 * sizeof (struct field));
c906108c
SS
13632 }
13633
3567439c 13634 FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
c906108c 13635 FIELD_TYPE (fields[num_fields]) = NULL;
14e75d8e 13636 SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
c906108c
SS
13637 FIELD_BITSIZE (fields[num_fields]) = 0;
13638
13639 num_fields++;
13640 }
13641 }
13642
13643 child_die = sibling_die (child_die);
13644 }
13645
13646 if (num_fields)
13647 {
f792889a
DJ
13648 TYPE_NFIELDS (this_type) = num_fields;
13649 TYPE_FIELDS (this_type) = (struct field *)
13650 TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
13651 memcpy (TYPE_FIELDS (this_type), fields,
c906108c 13652 sizeof (struct field) * num_fields);
b8c9b27d 13653 xfree (fields);
c906108c 13654 }
c906108c 13655 }
134d01f1 13656
6c83ed52
TT
13657 /* If we are reading an enum from a .debug_types unit, and the enum
13658 is a declaration, and the enum is not the signatured type in the
13659 unit, then we do not want to add a symbol for it. Adding a
13660 symbol would in some cases obscure the true definition of the
13661 enum, giving users an incomplete type when the definition is
13662 actually available. Note that we do not want to do this for all
13663 enums which are just declarations, because C++0x allows forward
13664 enum declarations. */
3019eac3 13665 if (cu->per_cu->is_debug_types
6c83ed52
TT
13666 && die_is_declaration (die, cu))
13667 {
52dc124a 13668 struct signatured_type *sig_type;
6c83ed52 13669
c0f78cd4 13670 sig_type = (struct signatured_type *) cu->per_cu;
3019eac3
DE
13671 gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
13672 if (sig_type->type_offset_in_section.sect_off != die->offset.sect_off)
6c83ed52
TT
13673 return;
13674 }
13675
f792889a 13676 new_symbol (die, this_type, cu);
c906108c
SS
13677}
13678
13679/* Extract all information from a DW_TAG_array_type DIE and put it in
13680 the DIE's type field. For now, this only handles one dimensional
13681 arrays. */
13682
f792889a 13683static struct type *
e7c27a73 13684read_array_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13685{
e7c27a73 13686 struct objfile *objfile = cu->objfile;
c906108c 13687 struct die_info *child_die;
7e314c57 13688 struct type *type;
c906108c
SS
13689 struct type *element_type, *range_type, *index_type;
13690 struct type **range_types = NULL;
13691 struct attribute *attr;
13692 int ndim = 0;
13693 struct cleanup *back_to;
15d034d0 13694 const char *name;
dc53a7ad 13695 unsigned int bit_stride = 0;
c906108c 13696
e7c27a73 13697 element_type = die_type (die, cu);
c906108c 13698
7e314c57
JK
13699 /* The die_type call above may have already set the type for this DIE. */
13700 type = get_die_type (die, cu);
13701 if (type)
13702 return type;
13703
dc53a7ad
JB
13704 attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
13705 if (attr != NULL)
13706 bit_stride = DW_UNSND (attr) * 8;
13707
13708 attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
13709 if (attr != NULL)
13710 bit_stride = DW_UNSND (attr);
13711
c906108c
SS
13712 /* Irix 6.2 native cc creates array types without children for
13713 arrays with unspecified length. */
639d11d3 13714 if (die->child == NULL)
c906108c 13715 {
46bf5051 13716 index_type = objfile_type (objfile)->builtin_int;
0c9c3474 13717 range_type = create_static_range_type (NULL, index_type, 0, -1);
dc53a7ad
JB
13718 type = create_array_type_with_stride (NULL, element_type, range_type,
13719 bit_stride);
f792889a 13720 return set_die_type (die, type, cu);
c906108c
SS
13721 }
13722
13723 back_to = make_cleanup (null_cleanup, NULL);
639d11d3 13724 child_die = die->child;
c906108c
SS
13725 while (child_die && child_die->tag)
13726 {
13727 if (child_die->tag == DW_TAG_subrange_type)
13728 {
f792889a 13729 struct type *child_type = read_type_die (child_die, cu);
9a619af0 13730
f792889a 13731 if (child_type != NULL)
a02abb62 13732 {
0963b4bd
MS
13733 /* The range type was succesfully read. Save it for the
13734 array type creation. */
a02abb62
JB
13735 if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
13736 {
13737 range_types = (struct type **)
13738 xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
13739 * sizeof (struct type *));
13740 if (ndim == 0)
13741 make_cleanup (free_current_contents, &range_types);
13742 }
f792889a 13743 range_types[ndim++] = child_type;
a02abb62 13744 }
c906108c
SS
13745 }
13746 child_die = sibling_die (child_die);
13747 }
13748
13749 /* Dwarf2 dimensions are output from left to right, create the
13750 necessary array types in backwards order. */
7ca2d3a3 13751
c906108c 13752 type = element_type;
7ca2d3a3
DL
13753
13754 if (read_array_order (die, cu) == DW_ORD_col_major)
13755 {
13756 int i = 0;
9a619af0 13757
7ca2d3a3 13758 while (i < ndim)
dc53a7ad
JB
13759 type = create_array_type_with_stride (NULL, type, range_types[i++],
13760 bit_stride);
7ca2d3a3
DL
13761 }
13762 else
13763 {
13764 while (ndim-- > 0)
dc53a7ad
JB
13765 type = create_array_type_with_stride (NULL, type, range_types[ndim],
13766 bit_stride);
7ca2d3a3 13767 }
c906108c 13768
f5f8a009
EZ
13769 /* Understand Dwarf2 support for vector types (like they occur on
13770 the PowerPC w/ AltiVec). Gcc just adds another attribute to the
13771 array type. This is not part of the Dwarf2/3 standard yet, but a
13772 custom vendor extension. The main difference between a regular
13773 array and the vector variant is that vectors are passed by value
13774 to functions. */
e142c38c 13775 attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
f5f8a009 13776 if (attr)
ea37ba09 13777 make_vector_type (type);
f5f8a009 13778
dbc98a8b
KW
13779 /* The DIE may have DW_AT_byte_size set. For example an OpenCL
13780 implementation may choose to implement triple vectors using this
13781 attribute. */
13782 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13783 if (attr)
13784 {
13785 if (DW_UNSND (attr) >= TYPE_LENGTH (type))
13786 TYPE_LENGTH (type) = DW_UNSND (attr);
13787 else
3e43a32a
MS
13788 complaint (&symfile_complaints,
13789 _("DW_AT_byte_size for array type smaller "
13790 "than the total size of elements"));
dbc98a8b
KW
13791 }
13792
39cbfefa
DJ
13793 name = dwarf2_name (die, cu);
13794 if (name)
13795 TYPE_NAME (type) = name;
6e70227d 13796
0963b4bd 13797 /* Install the type in the die. */
7e314c57
JK
13798 set_die_type (die, type, cu);
13799
13800 /* set_die_type should be already done. */
b4ba55a1
JB
13801 set_descriptive_type (type, die, cu);
13802
c906108c
SS
13803 do_cleanups (back_to);
13804
7e314c57 13805 return type;
c906108c
SS
13806}
13807
7ca2d3a3 13808static enum dwarf_array_dim_ordering
6e70227d 13809read_array_order (struct die_info *die, struct dwarf2_cu *cu)
7ca2d3a3
DL
13810{
13811 struct attribute *attr;
13812
13813 attr = dwarf2_attr (die, DW_AT_ordering, cu);
13814
aead7601
SM
13815 if (attr)
13816 return (enum dwarf_array_dim_ordering) DW_SND (attr);
7ca2d3a3 13817
0963b4bd
MS
13818 /* GNU F77 is a special case, as at 08/2004 array type info is the
13819 opposite order to the dwarf2 specification, but data is still
13820 laid out as per normal fortran.
7ca2d3a3 13821
0963b4bd
MS
13822 FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
13823 version checking. */
7ca2d3a3 13824
905e0470
PM
13825 if (cu->language == language_fortran
13826 && cu->producer && strstr (cu->producer, "GNU F77"))
7ca2d3a3
DL
13827 {
13828 return DW_ORD_row_major;
13829 }
13830
6e70227d 13831 switch (cu->language_defn->la_array_ordering)
7ca2d3a3
DL
13832 {
13833 case array_column_major:
13834 return DW_ORD_col_major;
13835 case array_row_major:
13836 default:
13837 return DW_ORD_row_major;
13838 };
13839}
13840
72019c9c 13841/* Extract all information from a DW_TAG_set_type DIE and put it in
0963b4bd 13842 the DIE's type field. */
72019c9c 13843
f792889a 13844static struct type *
72019c9c
GM
13845read_set_type (struct die_info *die, struct dwarf2_cu *cu)
13846{
7e314c57
JK
13847 struct type *domain_type, *set_type;
13848 struct attribute *attr;
f792889a 13849
7e314c57
JK
13850 domain_type = die_type (die, cu);
13851
13852 /* The die_type call above may have already set the type for this DIE. */
13853 set_type = get_die_type (die, cu);
13854 if (set_type)
13855 return set_type;
13856
13857 set_type = create_set_type (NULL, domain_type);
13858
13859 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
d09039dd
PM
13860 if (attr)
13861 TYPE_LENGTH (set_type) = DW_UNSND (attr);
7e314c57 13862
f792889a 13863 return set_die_type (die, set_type, cu);
72019c9c 13864}
7ca2d3a3 13865
0971de02
TT
13866/* A helper for read_common_block that creates a locexpr baton.
13867 SYM is the symbol which we are marking as computed.
13868 COMMON_DIE is the DIE for the common block.
13869 COMMON_LOC is the location expression attribute for the common
13870 block itself.
13871 MEMBER_LOC is the location expression attribute for the particular
13872 member of the common block that we are processing.
13873 CU is the CU from which the above come. */
13874
13875static void
13876mark_common_block_symbol_computed (struct symbol *sym,
13877 struct die_info *common_die,
13878 struct attribute *common_loc,
13879 struct attribute *member_loc,
13880 struct dwarf2_cu *cu)
13881{
13882 struct objfile *objfile = dwarf2_per_objfile->objfile;
13883 struct dwarf2_locexpr_baton *baton;
13884 gdb_byte *ptr;
13885 unsigned int cu_off;
13886 enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
13887 LONGEST offset = 0;
13888
13889 gdb_assert (common_loc && member_loc);
13890 gdb_assert (attr_form_is_block (common_loc));
13891 gdb_assert (attr_form_is_block (member_loc)
13892 || attr_form_is_constant (member_loc));
13893
13894 baton = obstack_alloc (&objfile->objfile_obstack,
13895 sizeof (struct dwarf2_locexpr_baton));
13896 baton->per_cu = cu->per_cu;
13897 gdb_assert (baton->per_cu);
13898
13899 baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
13900
13901 if (attr_form_is_constant (member_loc))
13902 {
13903 offset = dwarf2_get_attr_constant_value (member_loc, 0);
13904 baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
13905 }
13906 else
13907 baton->size += DW_BLOCK (member_loc)->size;
13908
13909 ptr = obstack_alloc (&objfile->objfile_obstack, baton->size);
13910 baton->data = ptr;
13911
13912 *ptr++ = DW_OP_call4;
13913 cu_off = common_die->offset.sect_off - cu->per_cu->offset.sect_off;
13914 store_unsigned_integer (ptr, 4, byte_order, cu_off);
13915 ptr += 4;
13916
13917 if (attr_form_is_constant (member_loc))
13918 {
13919 *ptr++ = DW_OP_addr;
13920 store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
13921 ptr += cu->header.addr_size;
13922 }
13923 else
13924 {
13925 /* We have to copy the data here, because DW_OP_call4 will only
13926 use a DW_AT_location attribute. */
13927 memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
13928 ptr += DW_BLOCK (member_loc)->size;
13929 }
13930
13931 *ptr++ = DW_OP_plus;
13932 gdb_assert (ptr - baton->data == baton->size);
13933
0971de02 13934 SYMBOL_LOCATION_BATON (sym) = baton;
f1e6e072 13935 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
0971de02
TT
13936}
13937
4357ac6c
TT
13938/* Create appropriate locally-scoped variables for all the
13939 DW_TAG_common_block entries. Also create a struct common_block
13940 listing all such variables for `info common'. COMMON_BLOCK_DOMAIN
13941 is used to sepate the common blocks name namespace from regular
13942 variable names. */
c906108c
SS
13943
13944static void
e7c27a73 13945read_common_block (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13946{
0971de02
TT
13947 struct attribute *attr;
13948
13949 attr = dwarf2_attr (die, DW_AT_location, cu);
13950 if (attr)
13951 {
13952 /* Support the .debug_loc offsets. */
13953 if (attr_form_is_block (attr))
13954 {
13955 /* Ok. */
13956 }
13957 else if (attr_form_is_section_offset (attr))
13958 {
13959 dwarf2_complex_location_expr_complaint ();
13960 attr = NULL;
13961 }
13962 else
13963 {
13964 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
13965 "common block member");
13966 attr = NULL;
13967 }
13968 }
13969
639d11d3 13970 if (die->child != NULL)
c906108c 13971 {
4357ac6c
TT
13972 struct objfile *objfile = cu->objfile;
13973 struct die_info *child_die;
13974 size_t n_entries = 0, size;
13975 struct common_block *common_block;
13976 struct symbol *sym;
74ac6d43 13977
4357ac6c
TT
13978 for (child_die = die->child;
13979 child_die && child_die->tag;
13980 child_die = sibling_die (child_die))
13981 ++n_entries;
13982
13983 size = (sizeof (struct common_block)
13984 + (n_entries - 1) * sizeof (struct symbol *));
13985 common_block = obstack_alloc (&objfile->objfile_obstack, size);
13986 memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
13987 common_block->n_entries = 0;
13988
13989 for (child_die = die->child;
13990 child_die && child_die->tag;
13991 child_die = sibling_die (child_die))
13992 {
13993 /* Create the symbol in the DW_TAG_common_block block in the current
13994 symbol scope. */
e7c27a73 13995 sym = new_symbol (child_die, NULL, cu);
0971de02
TT
13996 if (sym != NULL)
13997 {
13998 struct attribute *member_loc;
13999
14000 common_block->contents[common_block->n_entries++] = sym;
14001
14002 member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
14003 cu);
14004 if (member_loc)
14005 {
14006 /* GDB has handled this for a long time, but it is
14007 not specified by DWARF. It seems to have been
14008 emitted by gfortran at least as recently as:
14009 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057. */
14010 complaint (&symfile_complaints,
14011 _("Variable in common block has "
14012 "DW_AT_data_member_location "
14013 "- DIE at 0x%x [in module %s]"),
4262abfb
JK
14014 child_die->offset.sect_off,
14015 objfile_name (cu->objfile));
0971de02
TT
14016
14017 if (attr_form_is_section_offset (member_loc))
14018 dwarf2_complex_location_expr_complaint ();
14019 else if (attr_form_is_constant (member_loc)
14020 || attr_form_is_block (member_loc))
14021 {
14022 if (attr)
14023 mark_common_block_symbol_computed (sym, die, attr,
14024 member_loc, cu);
14025 }
14026 else
14027 dwarf2_complex_location_expr_complaint ();
14028 }
14029 }
c906108c 14030 }
4357ac6c
TT
14031
14032 sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
14033 SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
c906108c
SS
14034 }
14035}
14036
0114d602 14037/* Create a type for a C++ namespace. */
d9fa45fe 14038
0114d602
DJ
14039static struct type *
14040read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
d9fa45fe 14041{
e7c27a73 14042 struct objfile *objfile = cu->objfile;
0114d602 14043 const char *previous_prefix, *name;
9219021c 14044 int is_anonymous;
0114d602
DJ
14045 struct type *type;
14046
14047 /* For extensions, reuse the type of the original namespace. */
14048 if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
14049 {
14050 struct die_info *ext_die;
14051 struct dwarf2_cu *ext_cu = cu;
9a619af0 14052
0114d602
DJ
14053 ext_die = dwarf2_extension (die, &ext_cu);
14054 type = read_type_die (ext_die, ext_cu);
9dc481d3
DE
14055
14056 /* EXT_CU may not be the same as CU.
02142a6c 14057 Ensure TYPE is recorded with CU in die_type_hash. */
0114d602
DJ
14058 return set_die_type (die, type, cu);
14059 }
9219021c 14060
e142c38c 14061 name = namespace_name (die, &is_anonymous, cu);
9219021c
DC
14062
14063 /* Now build the name of the current namespace. */
14064
0114d602
DJ
14065 previous_prefix = determine_prefix (die, cu);
14066 if (previous_prefix[0] != '\0')
14067 name = typename_concat (&objfile->objfile_obstack,
f55ee35c 14068 previous_prefix, name, 0, cu);
0114d602
DJ
14069
14070 /* Create the type. */
14071 type = init_type (TYPE_CODE_NAMESPACE, 0, 0, NULL,
14072 objfile);
abee88f2 14073 TYPE_NAME (type) = name;
0114d602
DJ
14074 TYPE_TAG_NAME (type) = TYPE_NAME (type);
14075
60531b24 14076 return set_die_type (die, type, cu);
0114d602
DJ
14077}
14078
14079/* Read a C++ namespace. */
14080
14081static void
14082read_namespace (struct die_info *die, struct dwarf2_cu *cu)
14083{
14084 struct objfile *objfile = cu->objfile;
0114d602 14085 int is_anonymous;
9219021c 14086
5c4e30ca
DC
14087 /* Add a symbol associated to this if we haven't seen the namespace
14088 before. Also, add a using directive if it's an anonymous
14089 namespace. */
9219021c 14090
f2f0e013 14091 if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
5c4e30ca
DC
14092 {
14093 struct type *type;
14094
0114d602 14095 type = read_type_die (die, cu);
e7c27a73 14096 new_symbol (die, type, cu);
5c4e30ca 14097
e8e80198 14098 namespace_name (die, &is_anonymous, cu);
5c4e30ca 14099 if (is_anonymous)
0114d602
DJ
14100 {
14101 const char *previous_prefix = determine_prefix (die, cu);
9a619af0 14102
c0cc3a76 14103 cp_add_using_directive (previous_prefix, TYPE_NAME (type), NULL,
12aaed36 14104 NULL, NULL, 0, &objfile->objfile_obstack);
0114d602 14105 }
5c4e30ca 14106 }
9219021c 14107
639d11d3 14108 if (die->child != NULL)
d9fa45fe 14109 {
639d11d3 14110 struct die_info *child_die = die->child;
6e70227d 14111
d9fa45fe
DC
14112 while (child_die && child_die->tag)
14113 {
e7c27a73 14114 process_die (child_die, cu);
d9fa45fe
DC
14115 child_die = sibling_die (child_die);
14116 }
14117 }
38d518c9
EZ
14118}
14119
f55ee35c
JK
14120/* Read a Fortran module as type. This DIE can be only a declaration used for
14121 imported module. Still we need that type as local Fortran "use ... only"
14122 declaration imports depend on the created type in determine_prefix. */
14123
14124static struct type *
14125read_module_type (struct die_info *die, struct dwarf2_cu *cu)
14126{
14127 struct objfile *objfile = cu->objfile;
15d034d0 14128 const char *module_name;
f55ee35c
JK
14129 struct type *type;
14130
14131 module_name = dwarf2_name (die, cu);
14132 if (!module_name)
3e43a32a
MS
14133 complaint (&symfile_complaints,
14134 _("DW_TAG_module has no name, offset 0x%x"),
b64f50a1 14135 die->offset.sect_off);
f55ee35c
JK
14136 type = init_type (TYPE_CODE_MODULE, 0, 0, module_name, objfile);
14137
14138 /* determine_prefix uses TYPE_TAG_NAME. */
14139 TYPE_TAG_NAME (type) = TYPE_NAME (type);
14140
14141 return set_die_type (die, type, cu);
14142}
14143
5d7cb8df
JK
14144/* Read a Fortran module. */
14145
14146static void
14147read_module (struct die_info *die, struct dwarf2_cu *cu)
14148{
14149 struct die_info *child_die = die->child;
530e8392
KB
14150 struct type *type;
14151
14152 type = read_type_die (die, cu);
14153 new_symbol (die, type, cu);
5d7cb8df 14154
5d7cb8df
JK
14155 while (child_die && child_die->tag)
14156 {
14157 process_die (child_die, cu);
14158 child_die = sibling_die (child_die);
14159 }
14160}
14161
38d518c9
EZ
14162/* Return the name of the namespace represented by DIE. Set
14163 *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
14164 namespace. */
14165
14166static const char *
e142c38c 14167namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
38d518c9
EZ
14168{
14169 struct die_info *current_die;
14170 const char *name = NULL;
14171
14172 /* Loop through the extensions until we find a name. */
14173
14174 for (current_die = die;
14175 current_die != NULL;
f2f0e013 14176 current_die = dwarf2_extension (die, &cu))
38d518c9 14177 {
96553a0c
DE
14178 /* We don't use dwarf2_name here so that we can detect the absence
14179 of a name -> anonymous namespace. */
14180 struct attribute *attr = dwarf2_attr (die, DW_AT_name, cu);
14181
14182 if (attr != NULL)
14183 name = DW_STRING (attr);
38d518c9
EZ
14184 if (name != NULL)
14185 break;
14186 }
14187
14188 /* Is it an anonymous namespace? */
14189
14190 *is_anonymous = (name == NULL);
14191 if (*is_anonymous)
2b1dbab0 14192 name = CP_ANONYMOUS_NAMESPACE_STR;
38d518c9
EZ
14193
14194 return name;
d9fa45fe
DC
14195}
14196
c906108c
SS
14197/* Extract all information from a DW_TAG_pointer_type DIE and add to
14198 the user defined type vector. */
14199
f792889a 14200static struct type *
e7c27a73 14201read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14202{
5e2b427d 14203 struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
e7c27a73 14204 struct comp_unit_head *cu_header = &cu->header;
c906108c 14205 struct type *type;
8b2dbe47
KB
14206 struct attribute *attr_byte_size;
14207 struct attribute *attr_address_class;
14208 int byte_size, addr_class;
7e314c57
JK
14209 struct type *target_type;
14210
14211 target_type = die_type (die, cu);
c906108c 14212
7e314c57
JK
14213 /* The die_type call above may have already set the type for this DIE. */
14214 type = get_die_type (die, cu);
14215 if (type)
14216 return type;
14217
14218 type = lookup_pointer_type (target_type);
8b2dbe47 14219
e142c38c 14220 attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
8b2dbe47
KB
14221 if (attr_byte_size)
14222 byte_size = DW_UNSND (attr_byte_size);
c906108c 14223 else
8b2dbe47
KB
14224 byte_size = cu_header->addr_size;
14225
e142c38c 14226 attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
8b2dbe47
KB
14227 if (attr_address_class)
14228 addr_class = DW_UNSND (attr_address_class);
14229 else
14230 addr_class = DW_ADDR_none;
14231
14232 /* If the pointer size or address class is different than the
14233 default, create a type variant marked as such and set the
14234 length accordingly. */
14235 if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
c906108c 14236 {
5e2b427d 14237 if (gdbarch_address_class_type_flags_p (gdbarch))
8b2dbe47
KB
14238 {
14239 int type_flags;
14240
849957d9 14241 type_flags = gdbarch_address_class_type_flags
5e2b427d 14242 (gdbarch, byte_size, addr_class);
876cecd0
TT
14243 gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
14244 == 0);
8b2dbe47
KB
14245 type = make_type_with_address_space (type, type_flags);
14246 }
14247 else if (TYPE_LENGTH (type) != byte_size)
14248 {
3e43a32a
MS
14249 complaint (&symfile_complaints,
14250 _("invalid pointer size %d"), byte_size);
8b2dbe47 14251 }
6e70227d 14252 else
9a619af0
MS
14253 {
14254 /* Should we also complain about unhandled address classes? */
14255 }
c906108c 14256 }
8b2dbe47
KB
14257
14258 TYPE_LENGTH (type) = byte_size;
f792889a 14259 return set_die_type (die, type, cu);
c906108c
SS
14260}
14261
14262/* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
14263 the user defined type vector. */
14264
f792889a 14265static struct type *
e7c27a73 14266read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c
SS
14267{
14268 struct type *type;
14269 struct type *to_type;
14270 struct type *domain;
14271
e7c27a73
DJ
14272 to_type = die_type (die, cu);
14273 domain = die_containing_type (die, cu);
0d5de010 14274
7e314c57
JK
14275 /* The calls above may have already set the type for this DIE. */
14276 type = get_die_type (die, cu);
14277 if (type)
14278 return type;
14279
0d5de010
DJ
14280 if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
14281 type = lookup_methodptr_type (to_type);
7078baeb
TT
14282 else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
14283 {
14284 struct type *new_type = alloc_type (cu->objfile);
14285
14286 smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
14287 TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
14288 TYPE_VARARGS (to_type));
14289 type = lookup_methodptr_type (new_type);
14290 }
0d5de010
DJ
14291 else
14292 type = lookup_memberptr_type (to_type, domain);
c906108c 14293
f792889a 14294 return set_die_type (die, type, cu);
c906108c
SS
14295}
14296
14297/* Extract all information from a DW_TAG_reference_type DIE and add to
14298 the user defined type vector. */
14299
f792889a 14300static struct type *
e7c27a73 14301read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14302{
e7c27a73 14303 struct comp_unit_head *cu_header = &cu->header;
7e314c57 14304 struct type *type, *target_type;
c906108c
SS
14305 struct attribute *attr;
14306
7e314c57
JK
14307 target_type = die_type (die, cu);
14308
14309 /* The die_type call above may have already set the type for this DIE. */
14310 type = get_die_type (die, cu);
14311 if (type)
14312 return type;
14313
14314 type = lookup_reference_type (target_type);
e142c38c 14315 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
14316 if (attr)
14317 {
14318 TYPE_LENGTH (type) = DW_UNSND (attr);
14319 }
14320 else
14321 {
107d2387 14322 TYPE_LENGTH (type) = cu_header->addr_size;
c906108c 14323 }
f792889a 14324 return set_die_type (die, type, cu);
c906108c
SS
14325}
14326
cf363f18
MW
14327/* Add the given cv-qualifiers to the element type of the array. GCC
14328 outputs DWARF type qualifiers that apply to an array, not the
14329 element type. But GDB relies on the array element type to carry
14330 the cv-qualifiers. This mimics section 6.7.3 of the C99
14331 specification. */
14332
14333static struct type *
14334add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
14335 struct type *base_type, int cnst, int voltl)
14336{
14337 struct type *el_type, *inner_array;
14338
14339 base_type = copy_type (base_type);
14340 inner_array = base_type;
14341
14342 while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
14343 {
14344 TYPE_TARGET_TYPE (inner_array) =
14345 copy_type (TYPE_TARGET_TYPE (inner_array));
14346 inner_array = TYPE_TARGET_TYPE (inner_array);
14347 }
14348
14349 el_type = TYPE_TARGET_TYPE (inner_array);
14350 cnst |= TYPE_CONST (el_type);
14351 voltl |= TYPE_VOLATILE (el_type);
14352 TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
14353
14354 return set_die_type (die, base_type, cu);
14355}
14356
f792889a 14357static struct type *
e7c27a73 14358read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14359{
f792889a 14360 struct type *base_type, *cv_type;
c906108c 14361
e7c27a73 14362 base_type = die_type (die, cu);
7e314c57
JK
14363
14364 /* The die_type call above may have already set the type for this DIE. */
14365 cv_type = get_die_type (die, cu);
14366 if (cv_type)
14367 return cv_type;
14368
2f608a3a
KW
14369 /* In case the const qualifier is applied to an array type, the element type
14370 is so qualified, not the array type (section 6.7.3 of C99). */
14371 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
cf363f18 14372 return add_array_cv_type (die, cu, base_type, 1, 0);
2f608a3a 14373
f792889a
DJ
14374 cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
14375 return set_die_type (die, cv_type, cu);
c906108c
SS
14376}
14377
f792889a 14378static struct type *
e7c27a73 14379read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14380{
f792889a 14381 struct type *base_type, *cv_type;
c906108c 14382
e7c27a73 14383 base_type = die_type (die, cu);
7e314c57
JK
14384
14385 /* The die_type call above may have already set the type for this DIE. */
14386 cv_type = get_die_type (die, cu);
14387 if (cv_type)
14388 return cv_type;
14389
cf363f18
MW
14390 /* In case the volatile qualifier is applied to an array type, the
14391 element type is so qualified, not the array type (section 6.7.3
14392 of C99). */
14393 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
14394 return add_array_cv_type (die, cu, base_type, 0, 1);
14395
f792889a
DJ
14396 cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
14397 return set_die_type (die, cv_type, cu);
c906108c
SS
14398}
14399
06d66ee9
TT
14400/* Handle DW_TAG_restrict_type. */
14401
14402static struct type *
14403read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
14404{
14405 struct type *base_type, *cv_type;
14406
14407 base_type = die_type (die, cu);
14408
14409 /* The die_type call above may have already set the type for this DIE. */
14410 cv_type = get_die_type (die, cu);
14411 if (cv_type)
14412 return cv_type;
14413
14414 cv_type = make_restrict_type (base_type);
14415 return set_die_type (die, cv_type, cu);
14416}
14417
a2c2acaf
MW
14418/* Handle DW_TAG_atomic_type. */
14419
14420static struct type *
14421read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
14422{
14423 struct type *base_type, *cv_type;
14424
14425 base_type = die_type (die, cu);
14426
14427 /* The die_type call above may have already set the type for this DIE. */
14428 cv_type = get_die_type (die, cu);
14429 if (cv_type)
14430 return cv_type;
14431
14432 cv_type = make_atomic_type (base_type);
14433 return set_die_type (die, cv_type, cu);
14434}
14435
c906108c
SS
14436/* Extract all information from a DW_TAG_string_type DIE and add to
14437 the user defined type vector. It isn't really a user defined type,
14438 but it behaves like one, with other DIE's using an AT_user_def_type
14439 attribute to reference it. */
14440
f792889a 14441static struct type *
e7c27a73 14442read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14443{
e7c27a73 14444 struct objfile *objfile = cu->objfile;
3b7538c0 14445 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
14446 struct type *type, *range_type, *index_type, *char_type;
14447 struct attribute *attr;
14448 unsigned int length;
14449
e142c38c 14450 attr = dwarf2_attr (die, DW_AT_string_length, cu);
c906108c
SS
14451 if (attr)
14452 {
14453 length = DW_UNSND (attr);
14454 }
14455 else
14456 {
0963b4bd 14457 /* Check for the DW_AT_byte_size attribute. */
e142c38c 14458 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
b21b22e0
PS
14459 if (attr)
14460 {
14461 length = DW_UNSND (attr);
14462 }
14463 else
14464 {
14465 length = 1;
14466 }
c906108c 14467 }
6ccb9162 14468
46bf5051 14469 index_type = objfile_type (objfile)->builtin_int;
0c9c3474 14470 range_type = create_static_range_type (NULL, index_type, 1, length);
3b7538c0
UW
14471 char_type = language_string_char_type (cu->language_defn, gdbarch);
14472 type = create_string_type (NULL, char_type, range_type);
6ccb9162 14473
f792889a 14474 return set_die_type (die, type, cu);
c906108c
SS
14475}
14476
4d804846
JB
14477/* Assuming that DIE corresponds to a function, returns nonzero
14478 if the function is prototyped. */
14479
14480static int
14481prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
14482{
14483 struct attribute *attr;
14484
14485 attr = dwarf2_attr (die, DW_AT_prototyped, cu);
14486 if (attr && (DW_UNSND (attr) != 0))
14487 return 1;
14488
14489 /* The DWARF standard implies that the DW_AT_prototyped attribute
14490 is only meaninful for C, but the concept also extends to other
14491 languages that allow unprototyped functions (Eg: Objective C).
14492 For all other languages, assume that functions are always
14493 prototyped. */
14494 if (cu->language != language_c
14495 && cu->language != language_objc
14496 && cu->language != language_opencl)
14497 return 1;
14498
14499 /* RealView does not emit DW_AT_prototyped. We can not distinguish
14500 prototyped and unprototyped functions; default to prototyped,
14501 since that is more common in modern code (and RealView warns
14502 about unprototyped functions). */
14503 if (producer_is_realview (cu->producer))
14504 return 1;
14505
14506 return 0;
14507}
14508
c906108c
SS
14509/* Handle DIES due to C code like:
14510
14511 struct foo
c5aa993b
JM
14512 {
14513 int (*funcp)(int a, long l);
14514 int b;
14515 };
c906108c 14516
0963b4bd 14517 ('funcp' generates a DW_TAG_subroutine_type DIE). */
c906108c 14518
f792889a 14519static struct type *
e7c27a73 14520read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14521{
bb5ed363 14522 struct objfile *objfile = cu->objfile;
0963b4bd
MS
14523 struct type *type; /* Type that this function returns. */
14524 struct type *ftype; /* Function that returns above type. */
c906108c
SS
14525 struct attribute *attr;
14526
e7c27a73 14527 type = die_type (die, cu);
7e314c57
JK
14528
14529 /* The die_type call above may have already set the type for this DIE. */
14530 ftype = get_die_type (die, cu);
14531 if (ftype)
14532 return ftype;
14533
0c8b41f1 14534 ftype = lookup_function_type (type);
c906108c 14535
4d804846 14536 if (prototyped_function_p (die, cu))
a6c727b2 14537 TYPE_PROTOTYPED (ftype) = 1;
c906108c 14538
c055b101
CV
14539 /* Store the calling convention in the type if it's available in
14540 the subroutine die. Otherwise set the calling convention to
14541 the default value DW_CC_normal. */
14542 attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
54fcddd0
UW
14543 if (attr)
14544 TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
14545 else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
14546 TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
14547 else
14548 TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
76c10ea2 14549
743649fd
MW
14550 /* Record whether the function returns normally to its caller or not
14551 if the DWARF producer set that information. */
14552 attr = dwarf2_attr (die, DW_AT_noreturn, cu);
14553 if (attr && (DW_UNSND (attr) != 0))
14554 TYPE_NO_RETURN (ftype) = 1;
14555
76c10ea2
GM
14556 /* We need to add the subroutine type to the die immediately so
14557 we don't infinitely recurse when dealing with parameters
0963b4bd 14558 declared as the same subroutine type. */
76c10ea2 14559 set_die_type (die, ftype, cu);
6e70227d 14560
639d11d3 14561 if (die->child != NULL)
c906108c 14562 {
bb5ed363 14563 struct type *void_type = objfile_type (objfile)->builtin_void;
c906108c 14564 struct die_info *child_die;
8072405b 14565 int nparams, iparams;
c906108c
SS
14566
14567 /* Count the number of parameters.
14568 FIXME: GDB currently ignores vararg functions, but knows about
14569 vararg member functions. */
8072405b 14570 nparams = 0;
639d11d3 14571 child_die = die->child;
c906108c
SS
14572 while (child_die && child_die->tag)
14573 {
14574 if (child_die->tag == DW_TAG_formal_parameter)
14575 nparams++;
14576 else if (child_die->tag == DW_TAG_unspecified_parameters)
876cecd0 14577 TYPE_VARARGS (ftype) = 1;
c906108c
SS
14578 child_die = sibling_die (child_die);
14579 }
14580
14581 /* Allocate storage for parameters and fill them in. */
14582 TYPE_NFIELDS (ftype) = nparams;
14583 TYPE_FIELDS (ftype) = (struct field *)
ae5a43e0 14584 TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
c906108c 14585
8072405b
JK
14586 /* TYPE_FIELD_TYPE must never be NULL. Pre-fill the array to ensure it
14587 even if we error out during the parameters reading below. */
14588 for (iparams = 0; iparams < nparams; iparams++)
14589 TYPE_FIELD_TYPE (ftype, iparams) = void_type;
14590
14591 iparams = 0;
639d11d3 14592 child_die = die->child;
c906108c
SS
14593 while (child_die && child_die->tag)
14594 {
14595 if (child_die->tag == DW_TAG_formal_parameter)
14596 {
3ce3b1ba
PA
14597 struct type *arg_type;
14598
14599 /* DWARF version 2 has no clean way to discern C++
14600 static and non-static member functions. G++ helps
14601 GDB by marking the first parameter for non-static
14602 member functions (which is the this pointer) as
14603 artificial. We pass this information to
14604 dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
14605
14606 DWARF version 3 added DW_AT_object_pointer, which GCC
14607 4.5 does not yet generate. */
e142c38c 14608 attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
c906108c
SS
14609 if (attr)
14610 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
14611 else
418835cc
KS
14612 {
14613 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
14614
14615 /* GCC/43521: In java, the formal parameter
14616 "this" is sometimes not marked with DW_AT_artificial. */
14617 if (cu->language == language_java)
14618 {
14619 const char *name = dwarf2_name (child_die, cu);
9a619af0 14620
418835cc
KS
14621 if (name && !strcmp (name, "this"))
14622 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 1;
14623 }
14624 }
3ce3b1ba
PA
14625 arg_type = die_type (child_die, cu);
14626
14627 /* RealView does not mark THIS as const, which the testsuite
14628 expects. GCC marks THIS as const in method definitions,
14629 but not in the class specifications (GCC PR 43053). */
14630 if (cu->language == language_cplus && !TYPE_CONST (arg_type)
14631 && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
14632 {
14633 int is_this = 0;
14634 struct dwarf2_cu *arg_cu = cu;
14635 const char *name = dwarf2_name (child_die, cu);
14636
14637 attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
14638 if (attr)
14639 {
14640 /* If the compiler emits this, use it. */
14641 if (follow_die_ref (die, attr, &arg_cu) == child_die)
14642 is_this = 1;
14643 }
14644 else if (name && strcmp (name, "this") == 0)
14645 /* Function definitions will have the argument names. */
14646 is_this = 1;
14647 else if (name == NULL && iparams == 0)
14648 /* Declarations may not have the names, so like
14649 elsewhere in GDB, assume an artificial first
14650 argument is "this". */
14651 is_this = 1;
14652
14653 if (is_this)
14654 arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
14655 arg_type, 0);
14656 }
14657
14658 TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
c906108c
SS
14659 iparams++;
14660 }
14661 child_die = sibling_die (child_die);
14662 }
14663 }
14664
76c10ea2 14665 return ftype;
c906108c
SS
14666}
14667
f792889a 14668static struct type *
e7c27a73 14669read_typedef (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14670{
e7c27a73 14671 struct objfile *objfile = cu->objfile;
0114d602 14672 const char *name = NULL;
3c8e0968 14673 struct type *this_type, *target_type;
c906108c 14674
94af9270 14675 name = dwarf2_full_name (NULL, die, cu);
f792889a 14676 this_type = init_type (TYPE_CODE_TYPEDEF, 0,
0114d602 14677 TYPE_FLAG_TARGET_STUB, NULL, objfile);
abee88f2 14678 TYPE_NAME (this_type) = name;
f792889a 14679 set_die_type (die, this_type, cu);
3c8e0968
DE
14680 target_type = die_type (die, cu);
14681 if (target_type != this_type)
14682 TYPE_TARGET_TYPE (this_type) = target_type;
14683 else
14684 {
14685 /* Self-referential typedefs are, it seems, not allowed by the DWARF
14686 spec and cause infinite loops in GDB. */
14687 complaint (&symfile_complaints,
14688 _("Self-referential DW_TAG_typedef "
14689 "- DIE at 0x%x [in module %s]"),
4262abfb 14690 die->offset.sect_off, objfile_name (objfile));
3c8e0968
DE
14691 TYPE_TARGET_TYPE (this_type) = NULL;
14692 }
f792889a 14693 return this_type;
c906108c
SS
14694}
14695
14696/* Find a representation of a given base type and install
14697 it in the TYPE field of the die. */
14698
f792889a 14699static struct type *
e7c27a73 14700read_base_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14701{
e7c27a73 14702 struct objfile *objfile = cu->objfile;
c906108c
SS
14703 struct type *type;
14704 struct attribute *attr;
14705 int encoding = 0, size = 0;
15d034d0 14706 const char *name;
6ccb9162
UW
14707 enum type_code code = TYPE_CODE_INT;
14708 int type_flags = 0;
14709 struct type *target_type = NULL;
c906108c 14710
e142c38c 14711 attr = dwarf2_attr (die, DW_AT_encoding, cu);
c906108c
SS
14712 if (attr)
14713 {
14714 encoding = DW_UNSND (attr);
14715 }
e142c38c 14716 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
14717 if (attr)
14718 {
14719 size = DW_UNSND (attr);
14720 }
39cbfefa 14721 name = dwarf2_name (die, cu);
6ccb9162 14722 if (!name)
c906108c 14723 {
6ccb9162
UW
14724 complaint (&symfile_complaints,
14725 _("DW_AT_name missing from DW_TAG_base_type"));
c906108c 14726 }
6ccb9162
UW
14727
14728 switch (encoding)
c906108c 14729 {
6ccb9162
UW
14730 case DW_ATE_address:
14731 /* Turn DW_ATE_address into a void * pointer. */
14732 code = TYPE_CODE_PTR;
14733 type_flags |= TYPE_FLAG_UNSIGNED;
14734 target_type = init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
14735 break;
14736 case DW_ATE_boolean:
14737 code = TYPE_CODE_BOOL;
14738 type_flags |= TYPE_FLAG_UNSIGNED;
14739 break;
14740 case DW_ATE_complex_float:
14741 code = TYPE_CODE_COMPLEX;
14742 target_type = init_type (TYPE_CODE_FLT, size / 2, 0, NULL, objfile);
14743 break;
14744 case DW_ATE_decimal_float:
14745 code = TYPE_CODE_DECFLOAT;
14746 break;
14747 case DW_ATE_float:
14748 code = TYPE_CODE_FLT;
14749 break;
14750 case DW_ATE_signed:
14751 break;
14752 case DW_ATE_unsigned:
14753 type_flags |= TYPE_FLAG_UNSIGNED;
3b2b8fea
TT
14754 if (cu->language == language_fortran
14755 && name
61012eef 14756 && startswith (name, "character("))
3b2b8fea 14757 code = TYPE_CODE_CHAR;
6ccb9162
UW
14758 break;
14759 case DW_ATE_signed_char:
6e70227d 14760 if (cu->language == language_ada || cu->language == language_m2
3b2b8fea
TT
14761 || cu->language == language_pascal
14762 || cu->language == language_fortran)
6ccb9162
UW
14763 code = TYPE_CODE_CHAR;
14764 break;
14765 case DW_ATE_unsigned_char:
868a0084 14766 if (cu->language == language_ada || cu->language == language_m2
3b2b8fea
TT
14767 || cu->language == language_pascal
14768 || cu->language == language_fortran)
6ccb9162
UW
14769 code = TYPE_CODE_CHAR;
14770 type_flags |= TYPE_FLAG_UNSIGNED;
14771 break;
75079b2b
TT
14772 case DW_ATE_UTF:
14773 /* We just treat this as an integer and then recognize the
14774 type by name elsewhere. */
14775 break;
14776
6ccb9162
UW
14777 default:
14778 complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
14779 dwarf_type_encoding_name (encoding));
14780 break;
c906108c 14781 }
6ccb9162 14782
0114d602
DJ
14783 type = init_type (code, size, type_flags, NULL, objfile);
14784 TYPE_NAME (type) = name;
6ccb9162
UW
14785 TYPE_TARGET_TYPE (type) = target_type;
14786
0114d602 14787 if (name && strcmp (name, "char") == 0)
876cecd0 14788 TYPE_NOSIGN (type) = 1;
0114d602 14789
f792889a 14790 return set_die_type (die, type, cu);
c906108c
SS
14791}
14792
80180f79
SA
14793/* Parse dwarf attribute if it's a block, reference or constant and put the
14794 resulting value of the attribute into struct bound_prop.
14795 Returns 1 if ATTR could be resolved into PROP, 0 otherwise. */
14796
14797static int
14798attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
14799 struct dwarf2_cu *cu, struct dynamic_prop *prop)
14800{
14801 struct dwarf2_property_baton *baton;
14802 struct obstack *obstack = &cu->objfile->objfile_obstack;
14803
14804 if (attr == NULL || prop == NULL)
14805 return 0;
14806
14807 if (attr_form_is_block (attr))
14808 {
14809 baton = obstack_alloc (obstack, sizeof (*baton));
14810 baton->referenced_type = NULL;
14811 baton->locexpr.per_cu = cu->per_cu;
14812 baton->locexpr.size = DW_BLOCK (attr)->size;
14813 baton->locexpr.data = DW_BLOCK (attr)->data;
14814 prop->data.baton = baton;
14815 prop->kind = PROP_LOCEXPR;
14816 gdb_assert (prop->data.baton != NULL);
14817 }
14818 else if (attr_form_is_ref (attr))
14819 {
14820 struct dwarf2_cu *target_cu = cu;
14821 struct die_info *target_die;
14822 struct attribute *target_attr;
14823
14824 target_die = follow_die_ref (die, attr, &target_cu);
14825 target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
df25ebbd
JB
14826 if (target_attr == NULL)
14827 target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
14828 target_cu);
80180f79
SA
14829 if (target_attr == NULL)
14830 return 0;
14831
df25ebbd 14832 switch (target_attr->name)
80180f79 14833 {
df25ebbd
JB
14834 case DW_AT_location:
14835 if (attr_form_is_section_offset (target_attr))
14836 {
14837 baton = obstack_alloc (obstack, sizeof (*baton));
14838 baton->referenced_type = die_type (target_die, target_cu);
14839 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
14840 prop->data.baton = baton;
14841 prop->kind = PROP_LOCLIST;
14842 gdb_assert (prop->data.baton != NULL);
14843 }
14844 else if (attr_form_is_block (target_attr))
14845 {
14846 baton = obstack_alloc (obstack, sizeof (*baton));
14847 baton->referenced_type = die_type (target_die, target_cu);
14848 baton->locexpr.per_cu = cu->per_cu;
14849 baton->locexpr.size = DW_BLOCK (target_attr)->size;
14850 baton->locexpr.data = DW_BLOCK (target_attr)->data;
14851 prop->data.baton = baton;
14852 prop->kind = PROP_LOCEXPR;
14853 gdb_assert (prop->data.baton != NULL);
14854 }
14855 else
14856 {
14857 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
14858 "dynamic property");
14859 return 0;
14860 }
14861 break;
14862 case DW_AT_data_member_location:
14863 {
14864 LONGEST offset;
14865
14866 if (!handle_data_member_location (target_die, target_cu,
14867 &offset))
14868 return 0;
14869
14870 baton = obstack_alloc (obstack, sizeof (*baton));
6ad395a7
JB
14871 baton->referenced_type = read_type_die (target_die->parent,
14872 target_cu);
df25ebbd
JB
14873 baton->offset_info.offset = offset;
14874 baton->offset_info.type = die_type (target_die, target_cu);
14875 prop->data.baton = baton;
14876 prop->kind = PROP_ADDR_OFFSET;
14877 break;
14878 }
80180f79
SA
14879 }
14880 }
14881 else if (attr_form_is_constant (attr))
14882 {
14883 prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
14884 prop->kind = PROP_CONST;
14885 }
14886 else
14887 {
14888 dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
14889 dwarf2_name (die, cu));
14890 return 0;
14891 }
14892
14893 return 1;
14894}
14895
a02abb62
JB
14896/* Read the given DW_AT_subrange DIE. */
14897
f792889a 14898static struct type *
a02abb62
JB
14899read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
14900{
4c9ad8c2 14901 struct type *base_type, *orig_base_type;
a02abb62
JB
14902 struct type *range_type;
14903 struct attribute *attr;
729efb13 14904 struct dynamic_prop low, high;
4fae6e18 14905 int low_default_is_valid;
c451ebe5 14906 int high_bound_is_count = 0;
15d034d0 14907 const char *name;
43bbcdc2 14908 LONGEST negative_mask;
e77813c8 14909
4c9ad8c2
TT
14910 orig_base_type = die_type (die, cu);
14911 /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
14912 whereas the real type might be. So, we use ORIG_BASE_TYPE when
14913 creating the range type, but we use the result of check_typedef
14914 when examining properties of the type. */
14915 base_type = check_typedef (orig_base_type);
a02abb62 14916
7e314c57
JK
14917 /* The die_type call above may have already set the type for this DIE. */
14918 range_type = get_die_type (die, cu);
14919 if (range_type)
14920 return range_type;
14921
729efb13
SA
14922 low.kind = PROP_CONST;
14923 high.kind = PROP_CONST;
14924 high.data.const_val = 0;
14925
4fae6e18
JK
14926 /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
14927 omitting DW_AT_lower_bound. */
14928 switch (cu->language)
6e70227d 14929 {
4fae6e18
JK
14930 case language_c:
14931 case language_cplus:
729efb13 14932 low.data.const_val = 0;
4fae6e18
JK
14933 low_default_is_valid = 1;
14934 break;
14935 case language_fortran:
729efb13 14936 low.data.const_val = 1;
4fae6e18
JK
14937 low_default_is_valid = 1;
14938 break;
14939 case language_d:
14940 case language_java:
14941 case language_objc:
729efb13 14942 low.data.const_val = 0;
4fae6e18
JK
14943 low_default_is_valid = (cu->header.version >= 4);
14944 break;
14945 case language_ada:
14946 case language_m2:
14947 case language_pascal:
729efb13 14948 low.data.const_val = 1;
4fae6e18
JK
14949 low_default_is_valid = (cu->header.version >= 4);
14950 break;
14951 default:
729efb13 14952 low.data.const_val = 0;
4fae6e18
JK
14953 low_default_is_valid = 0;
14954 break;
a02abb62
JB
14955 }
14956
e142c38c 14957 attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
a02abb62 14958 if (attr)
11c1ba78 14959 attr_to_dynamic_prop (attr, die, cu, &low);
4fae6e18
JK
14960 else if (!low_default_is_valid)
14961 complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
14962 "- DIE at 0x%x [in module %s]"),
4262abfb 14963 die->offset.sect_off, objfile_name (cu->objfile));
a02abb62 14964
e142c38c 14965 attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
80180f79 14966 if (!attr_to_dynamic_prop (attr, die, cu, &high))
e77813c8
PM
14967 {
14968 attr = dwarf2_attr (die, DW_AT_count, cu);
c451ebe5 14969 if (attr_to_dynamic_prop (attr, die, cu, &high))
6b662e19 14970 {
c451ebe5
SA
14971 /* If bounds are constant do the final calculation here. */
14972 if (low.kind == PROP_CONST && high.kind == PROP_CONST)
14973 high.data.const_val = low.data.const_val + high.data.const_val - 1;
14974 else
14975 high_bound_is_count = 1;
c2ff108b 14976 }
e77813c8
PM
14977 }
14978
14979 /* Dwarf-2 specifications explicitly allows to create subrange types
14980 without specifying a base type.
14981 In that case, the base type must be set to the type of
14982 the lower bound, upper bound or count, in that order, if any of these
14983 three attributes references an object that has a type.
14984 If no base type is found, the Dwarf-2 specifications say that
14985 a signed integer type of size equal to the size of an address should
14986 be used.
14987 For the following C code: `extern char gdb_int [];'
14988 GCC produces an empty range DIE.
14989 FIXME: muller/2010-05-28: Possible references to object for low bound,
0963b4bd 14990 high bound or count are not yet handled by this code. */
e77813c8
PM
14991 if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
14992 {
14993 struct objfile *objfile = cu->objfile;
14994 struct gdbarch *gdbarch = get_objfile_arch (objfile);
14995 int addr_size = gdbarch_addr_bit (gdbarch) /8;
14996 struct type *int_type = objfile_type (objfile)->builtin_int;
14997
14998 /* Test "int", "long int", and "long long int" objfile types,
14999 and select the first one having a size above or equal to the
15000 architecture address size. */
15001 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15002 base_type = int_type;
15003 else
15004 {
15005 int_type = objfile_type (objfile)->builtin_long;
15006 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15007 base_type = int_type;
15008 else
15009 {
15010 int_type = objfile_type (objfile)->builtin_long_long;
15011 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15012 base_type = int_type;
15013 }
15014 }
15015 }
a02abb62 15016
dbb9c2b1
JB
15017 /* Normally, the DWARF producers are expected to use a signed
15018 constant form (Eg. DW_FORM_sdata) to express negative bounds.
15019 But this is unfortunately not always the case, as witnessed
15020 with GCC, for instance, where the ambiguous DW_FORM_dataN form
15021 is used instead. To work around that ambiguity, we treat
15022 the bounds as signed, and thus sign-extend their values, when
15023 the base type is signed. */
6e70227d 15024 negative_mask =
43bbcdc2 15025 (LONGEST) -1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1);
729efb13
SA
15026 if (low.kind == PROP_CONST
15027 && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
15028 low.data.const_val |= negative_mask;
15029 if (high.kind == PROP_CONST
15030 && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
15031 high.data.const_val |= negative_mask;
43bbcdc2 15032
729efb13 15033 range_type = create_range_type (NULL, orig_base_type, &low, &high);
a02abb62 15034
c451ebe5
SA
15035 if (high_bound_is_count)
15036 TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
15037
c2ff108b
JK
15038 /* Ada expects an empty array on no boundary attributes. */
15039 if (attr == NULL && cu->language != language_ada)
729efb13 15040 TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
c2ff108b 15041
39cbfefa
DJ
15042 name = dwarf2_name (die, cu);
15043 if (name)
15044 TYPE_NAME (range_type) = name;
6e70227d 15045
e142c38c 15046 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
a02abb62
JB
15047 if (attr)
15048 TYPE_LENGTH (range_type) = DW_UNSND (attr);
15049
7e314c57
JK
15050 set_die_type (die, range_type, cu);
15051
15052 /* set_die_type should be already done. */
b4ba55a1
JB
15053 set_descriptive_type (range_type, die, cu);
15054
7e314c57 15055 return range_type;
a02abb62 15056}
6e70227d 15057
f792889a 15058static struct type *
81a17f79
JB
15059read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
15060{
15061 struct type *type;
81a17f79 15062
81a17f79
JB
15063 /* For now, we only support the C meaning of an unspecified type: void. */
15064
0114d602
DJ
15065 type = init_type (TYPE_CODE_VOID, 0, 0, NULL, cu->objfile);
15066 TYPE_NAME (type) = dwarf2_name (die, cu);
81a17f79 15067
f792889a 15068 return set_die_type (die, type, cu);
81a17f79 15069}
a02abb62 15070
639d11d3
DC
15071/* Read a single die and all its descendents. Set the die's sibling
15072 field to NULL; set other fields in the die correctly, and set all
15073 of the descendents' fields correctly. Set *NEW_INFO_PTR to the
15074 location of the info_ptr after reading all of those dies. PARENT
15075 is the parent of the die in question. */
15076
15077static struct die_info *
dee91e82 15078read_die_and_children (const struct die_reader_specs *reader,
d521ce57
TT
15079 const gdb_byte *info_ptr,
15080 const gdb_byte **new_info_ptr,
dee91e82 15081 struct die_info *parent)
639d11d3
DC
15082{
15083 struct die_info *die;
d521ce57 15084 const gdb_byte *cur_ptr;
639d11d3
DC
15085 int has_children;
15086
bf6af496 15087 cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
1d325ec1
DJ
15088 if (die == NULL)
15089 {
15090 *new_info_ptr = cur_ptr;
15091 return NULL;
15092 }
93311388 15093 store_in_ref_table (die, reader->cu);
639d11d3
DC
15094
15095 if (has_children)
bf6af496 15096 die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
639d11d3
DC
15097 else
15098 {
15099 die->child = NULL;
15100 *new_info_ptr = cur_ptr;
15101 }
15102
15103 die->sibling = NULL;
15104 die->parent = parent;
15105 return die;
15106}
15107
15108/* Read a die, all of its descendents, and all of its siblings; set
15109 all of the fields of all of the dies correctly. Arguments are as
15110 in read_die_and_children. */
15111
15112static struct die_info *
bf6af496 15113read_die_and_siblings_1 (const struct die_reader_specs *reader,
d521ce57
TT
15114 const gdb_byte *info_ptr,
15115 const gdb_byte **new_info_ptr,
bf6af496 15116 struct die_info *parent)
639d11d3
DC
15117{
15118 struct die_info *first_die, *last_sibling;
d521ce57 15119 const gdb_byte *cur_ptr;
639d11d3 15120
c906108c 15121 cur_ptr = info_ptr;
639d11d3
DC
15122 first_die = last_sibling = NULL;
15123
15124 while (1)
c906108c 15125 {
639d11d3 15126 struct die_info *die
dee91e82 15127 = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
639d11d3 15128
1d325ec1 15129 if (die == NULL)
c906108c 15130 {
639d11d3
DC
15131 *new_info_ptr = cur_ptr;
15132 return first_die;
c906108c 15133 }
1d325ec1
DJ
15134
15135 if (!first_die)
15136 first_die = die;
c906108c 15137 else
1d325ec1
DJ
15138 last_sibling->sibling = die;
15139
15140 last_sibling = die;
c906108c 15141 }
c906108c
SS
15142}
15143
bf6af496
DE
15144/* Read a die, all of its descendents, and all of its siblings; set
15145 all of the fields of all of the dies correctly. Arguments are as
15146 in read_die_and_children.
15147 This the main entry point for reading a DIE and all its children. */
15148
15149static struct die_info *
15150read_die_and_siblings (const struct die_reader_specs *reader,
d521ce57
TT
15151 const gdb_byte *info_ptr,
15152 const gdb_byte **new_info_ptr,
bf6af496
DE
15153 struct die_info *parent)
15154{
15155 struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
15156 new_info_ptr, parent);
15157
b4f54984 15158 if (dwarf_die_debug)
bf6af496
DE
15159 {
15160 fprintf_unfiltered (gdb_stdlog,
15161 "Read die from %s@0x%x of %s:\n",
a32a8923 15162 get_section_name (reader->die_section),
bf6af496
DE
15163 (unsigned) (info_ptr - reader->die_section->buffer),
15164 bfd_get_filename (reader->abfd));
b4f54984 15165 dump_die (die, dwarf_die_debug);
bf6af496
DE
15166 }
15167
15168 return die;
15169}
15170
3019eac3
DE
15171/* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
15172 attributes.
15173 The caller is responsible for filling in the extra attributes
15174 and updating (*DIEP)->num_attrs.
15175 Set DIEP to point to a newly allocated die with its information,
15176 except for its child, sibling, and parent fields.
15177 Set HAS_CHILDREN to tell whether the die has children or not. */
93311388 15178
d521ce57 15179static const gdb_byte *
3019eac3 15180read_full_die_1 (const struct die_reader_specs *reader,
d521ce57 15181 struct die_info **diep, const gdb_byte *info_ptr,
3019eac3 15182 int *has_children, int num_extra_attrs)
93311388 15183{
b64f50a1
JK
15184 unsigned int abbrev_number, bytes_read, i;
15185 sect_offset offset;
93311388
DE
15186 struct abbrev_info *abbrev;
15187 struct die_info *die;
15188 struct dwarf2_cu *cu = reader->cu;
15189 bfd *abfd = reader->abfd;
15190
b64f50a1 15191 offset.sect_off = info_ptr - reader->buffer;
93311388
DE
15192 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15193 info_ptr += bytes_read;
15194 if (!abbrev_number)
15195 {
15196 *diep = NULL;
15197 *has_children = 0;
15198 return info_ptr;
15199 }
15200
433df2d4 15201 abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
93311388 15202 if (!abbrev)
348e048f
DE
15203 error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
15204 abbrev_number,
15205 bfd_get_filename (abfd));
15206
3019eac3 15207 die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
93311388
DE
15208 die->offset = offset;
15209 die->tag = abbrev->tag;
15210 die->abbrev = abbrev_number;
15211
3019eac3
DE
15212 /* Make the result usable.
15213 The caller needs to update num_attrs after adding the extra
15214 attributes. */
93311388
DE
15215 die->num_attrs = abbrev->num_attrs;
15216
15217 for (i = 0; i < abbrev->num_attrs; ++i)
dee91e82
DE
15218 info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
15219 info_ptr);
93311388
DE
15220
15221 *diep = die;
15222 *has_children = abbrev->has_children;
15223 return info_ptr;
15224}
15225
3019eac3
DE
15226/* Read a die and all its attributes.
15227 Set DIEP to point to a newly allocated die with its information,
15228 except for its child, sibling, and parent fields.
15229 Set HAS_CHILDREN to tell whether the die has children or not. */
15230
d521ce57 15231static const gdb_byte *
3019eac3 15232read_full_die (const struct die_reader_specs *reader,
d521ce57 15233 struct die_info **diep, const gdb_byte *info_ptr,
3019eac3
DE
15234 int *has_children)
15235{
d521ce57 15236 const gdb_byte *result;
bf6af496
DE
15237
15238 result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
15239
b4f54984 15240 if (dwarf_die_debug)
bf6af496
DE
15241 {
15242 fprintf_unfiltered (gdb_stdlog,
15243 "Read die from %s@0x%x of %s:\n",
a32a8923 15244 get_section_name (reader->die_section),
bf6af496
DE
15245 (unsigned) (info_ptr - reader->die_section->buffer),
15246 bfd_get_filename (reader->abfd));
b4f54984 15247 dump_die (*diep, dwarf_die_debug);
bf6af496
DE
15248 }
15249
15250 return result;
3019eac3 15251}
433df2d4
DE
15252\f
15253/* Abbreviation tables.
3019eac3 15254
433df2d4 15255 In DWARF version 2, the description of the debugging information is
c906108c
SS
15256 stored in a separate .debug_abbrev section. Before we read any
15257 dies from a section we read in all abbreviations and install them
433df2d4
DE
15258 in a hash table. */
15259
15260/* Allocate space for a struct abbrev_info object in ABBREV_TABLE. */
15261
15262static struct abbrev_info *
15263abbrev_table_alloc_abbrev (struct abbrev_table *abbrev_table)
15264{
15265 struct abbrev_info *abbrev;
15266
15267 abbrev = (struct abbrev_info *)
15268 obstack_alloc (&abbrev_table->abbrev_obstack, sizeof (struct abbrev_info));
15269 memset (abbrev, 0, sizeof (struct abbrev_info));
15270 return abbrev;
15271}
15272
15273/* Add an abbreviation to the table. */
c906108c
SS
15274
15275static void
433df2d4
DE
15276abbrev_table_add_abbrev (struct abbrev_table *abbrev_table,
15277 unsigned int abbrev_number,
15278 struct abbrev_info *abbrev)
15279{
15280 unsigned int hash_number;
15281
15282 hash_number = abbrev_number % ABBREV_HASH_SIZE;
15283 abbrev->next = abbrev_table->abbrevs[hash_number];
15284 abbrev_table->abbrevs[hash_number] = abbrev;
15285}
dee91e82 15286
433df2d4
DE
15287/* Look up an abbrev in the table.
15288 Returns NULL if the abbrev is not found. */
15289
15290static struct abbrev_info *
15291abbrev_table_lookup_abbrev (const struct abbrev_table *abbrev_table,
15292 unsigned int abbrev_number)
c906108c 15293{
433df2d4
DE
15294 unsigned int hash_number;
15295 struct abbrev_info *abbrev;
15296
15297 hash_number = abbrev_number % ABBREV_HASH_SIZE;
15298 abbrev = abbrev_table->abbrevs[hash_number];
15299
15300 while (abbrev)
15301 {
15302 if (abbrev->number == abbrev_number)
15303 return abbrev;
15304 abbrev = abbrev->next;
15305 }
15306 return NULL;
15307}
15308
15309/* Read in an abbrev table. */
15310
15311static struct abbrev_table *
15312abbrev_table_read_table (struct dwarf2_section_info *section,
15313 sect_offset offset)
15314{
15315 struct objfile *objfile = dwarf2_per_objfile->objfile;
a32a8923 15316 bfd *abfd = get_section_bfd_owner (section);
433df2d4 15317 struct abbrev_table *abbrev_table;
d521ce57 15318 const gdb_byte *abbrev_ptr;
c906108c
SS
15319 struct abbrev_info *cur_abbrev;
15320 unsigned int abbrev_number, bytes_read, abbrev_name;
433df2d4 15321 unsigned int abbrev_form;
f3dd6933
DJ
15322 struct attr_abbrev *cur_attrs;
15323 unsigned int allocated_attrs;
c906108c 15324
70ba0933 15325 abbrev_table = XNEW (struct abbrev_table);
f4dc4d17 15326 abbrev_table->offset = offset;
433df2d4
DE
15327 obstack_init (&abbrev_table->abbrev_obstack);
15328 abbrev_table->abbrevs = obstack_alloc (&abbrev_table->abbrev_obstack,
15329 (ABBREV_HASH_SIZE
15330 * sizeof (struct abbrev_info *)));
15331 memset (abbrev_table->abbrevs, 0,
15332 ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
c906108c 15333
433df2d4
DE
15334 dwarf2_read_section (objfile, section);
15335 abbrev_ptr = section->buffer + offset.sect_off;
c906108c
SS
15336 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15337 abbrev_ptr += bytes_read;
15338
f3dd6933
DJ
15339 allocated_attrs = ATTR_ALLOC_CHUNK;
15340 cur_attrs = xmalloc (allocated_attrs * sizeof (struct attr_abbrev));
6e70227d 15341
0963b4bd 15342 /* Loop until we reach an abbrev number of 0. */
c906108c
SS
15343 while (abbrev_number)
15344 {
433df2d4 15345 cur_abbrev = abbrev_table_alloc_abbrev (abbrev_table);
c906108c
SS
15346
15347 /* read in abbrev header */
15348 cur_abbrev->number = abbrev_number;
aead7601
SM
15349 cur_abbrev->tag
15350 = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
c906108c
SS
15351 abbrev_ptr += bytes_read;
15352 cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
15353 abbrev_ptr += 1;
15354
15355 /* now read in declarations */
15356 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15357 abbrev_ptr += bytes_read;
15358 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15359 abbrev_ptr += bytes_read;
15360 while (abbrev_name)
15361 {
f3dd6933 15362 if (cur_abbrev->num_attrs == allocated_attrs)
c906108c 15363 {
f3dd6933
DJ
15364 allocated_attrs += ATTR_ALLOC_CHUNK;
15365 cur_attrs
15366 = xrealloc (cur_attrs, (allocated_attrs
15367 * sizeof (struct attr_abbrev)));
c906108c 15368 }
ae038cb0 15369
aead7601
SM
15370 cur_attrs[cur_abbrev->num_attrs].name
15371 = (enum dwarf_attribute) abbrev_name;
15372 cur_attrs[cur_abbrev->num_attrs++].form
15373 = (enum dwarf_form) abbrev_form;
c906108c
SS
15374 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15375 abbrev_ptr += bytes_read;
15376 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15377 abbrev_ptr += bytes_read;
15378 }
15379
433df2d4 15380 cur_abbrev->attrs = obstack_alloc (&abbrev_table->abbrev_obstack,
f3dd6933
DJ
15381 (cur_abbrev->num_attrs
15382 * sizeof (struct attr_abbrev)));
15383 memcpy (cur_abbrev->attrs, cur_attrs,
15384 cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
15385
433df2d4 15386 abbrev_table_add_abbrev (abbrev_table, abbrev_number, cur_abbrev);
c906108c
SS
15387
15388 /* Get next abbreviation.
15389 Under Irix6 the abbreviations for a compilation unit are not
c5aa993b
JM
15390 always properly terminated with an abbrev number of 0.
15391 Exit loop if we encounter an abbreviation which we have
15392 already read (which means we are about to read the abbreviations
15393 for the next compile unit) or if the end of the abbreviation
15394 table is reached. */
433df2d4 15395 if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
c906108c
SS
15396 break;
15397 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15398 abbrev_ptr += bytes_read;
433df2d4 15399 if (abbrev_table_lookup_abbrev (abbrev_table, abbrev_number) != NULL)
c906108c
SS
15400 break;
15401 }
f3dd6933
DJ
15402
15403 xfree (cur_attrs);
433df2d4 15404 return abbrev_table;
c906108c
SS
15405}
15406
433df2d4 15407/* Free the resources held by ABBREV_TABLE. */
c906108c 15408
c906108c 15409static void
433df2d4 15410abbrev_table_free (struct abbrev_table *abbrev_table)
c906108c 15411{
433df2d4
DE
15412 obstack_free (&abbrev_table->abbrev_obstack, NULL);
15413 xfree (abbrev_table);
c906108c
SS
15414}
15415
f4dc4d17
DE
15416/* Same as abbrev_table_free but as a cleanup.
15417 We pass in a pointer to the pointer to the table so that we can
15418 set the pointer to NULL when we're done. It also simplifies
73051182 15419 build_type_psymtabs_1. */
f4dc4d17
DE
15420
15421static void
15422abbrev_table_free_cleanup (void *table_ptr)
15423{
15424 struct abbrev_table **abbrev_table_ptr = table_ptr;
15425
15426 if (*abbrev_table_ptr != NULL)
15427 abbrev_table_free (*abbrev_table_ptr);
15428 *abbrev_table_ptr = NULL;
15429}
15430
433df2d4
DE
15431/* Read the abbrev table for CU from ABBREV_SECTION. */
15432
15433static void
15434dwarf2_read_abbrevs (struct dwarf2_cu *cu,
15435 struct dwarf2_section_info *abbrev_section)
c906108c 15436{
433df2d4
DE
15437 cu->abbrev_table =
15438 abbrev_table_read_table (abbrev_section, cu->header.abbrev_offset);
15439}
c906108c 15440
433df2d4 15441/* Release the memory used by the abbrev table for a compilation unit. */
c906108c 15442
433df2d4
DE
15443static void
15444dwarf2_free_abbrev_table (void *ptr_to_cu)
15445{
15446 struct dwarf2_cu *cu = ptr_to_cu;
c906108c 15447
a2ce51a0
DE
15448 if (cu->abbrev_table != NULL)
15449 abbrev_table_free (cu->abbrev_table);
433df2d4
DE
15450 /* Set this to NULL so that we SEGV if we try to read it later,
15451 and also because free_comp_unit verifies this is NULL. */
15452 cu->abbrev_table = NULL;
15453}
15454\f
72bf9492
DJ
15455/* Returns nonzero if TAG represents a type that we might generate a partial
15456 symbol for. */
15457
15458static int
15459is_type_tag_for_partial (int tag)
15460{
15461 switch (tag)
15462 {
15463#if 0
15464 /* Some types that would be reasonable to generate partial symbols for,
15465 that we don't at present. */
15466 case DW_TAG_array_type:
15467 case DW_TAG_file_type:
15468 case DW_TAG_ptr_to_member_type:
15469 case DW_TAG_set_type:
15470 case DW_TAG_string_type:
15471 case DW_TAG_subroutine_type:
15472#endif
15473 case DW_TAG_base_type:
15474 case DW_TAG_class_type:
680b30c7 15475 case DW_TAG_interface_type:
72bf9492
DJ
15476 case DW_TAG_enumeration_type:
15477 case DW_TAG_structure_type:
15478 case DW_TAG_subrange_type:
15479 case DW_TAG_typedef:
15480 case DW_TAG_union_type:
15481 return 1;
15482 default:
15483 return 0;
15484 }
15485}
15486
15487/* Load all DIEs that are interesting for partial symbols into memory. */
15488
15489static struct partial_die_info *
dee91e82 15490load_partial_dies (const struct die_reader_specs *reader,
d521ce57 15491 const gdb_byte *info_ptr, int building_psymtab)
72bf9492 15492{
dee91e82 15493 struct dwarf2_cu *cu = reader->cu;
bb5ed363 15494 struct objfile *objfile = cu->objfile;
72bf9492
DJ
15495 struct partial_die_info *part_die;
15496 struct partial_die_info *parent_die, *last_die, *first_die = NULL;
15497 struct abbrev_info *abbrev;
15498 unsigned int bytes_read;
5afb4e99 15499 unsigned int load_all = 0;
72bf9492
DJ
15500 int nesting_level = 1;
15501
15502 parent_die = NULL;
15503 last_die = NULL;
15504
7adf1e79
DE
15505 gdb_assert (cu->per_cu != NULL);
15506 if (cu->per_cu->load_all_dies)
5afb4e99
DJ
15507 load_all = 1;
15508
72bf9492
DJ
15509 cu->partial_dies
15510 = htab_create_alloc_ex (cu->header.length / 12,
15511 partial_die_hash,
15512 partial_die_eq,
15513 NULL,
15514 &cu->comp_unit_obstack,
15515 hashtab_obstack_allocate,
15516 dummy_obstack_deallocate);
15517
15518 part_die = obstack_alloc (&cu->comp_unit_obstack,
15519 sizeof (struct partial_die_info));
15520
15521 while (1)
15522 {
15523 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
15524
15525 /* A NULL abbrev means the end of a series of children. */
15526 if (abbrev == NULL)
15527 {
15528 if (--nesting_level == 0)
15529 {
15530 /* PART_DIE was probably the last thing allocated on the
15531 comp_unit_obstack, so we could call obstack_free
15532 here. We don't do that because the waste is small,
15533 and will be cleaned up when we're done with this
15534 compilation unit. This way, we're also more robust
15535 against other users of the comp_unit_obstack. */
15536 return first_die;
15537 }
15538 info_ptr += bytes_read;
15539 last_die = parent_die;
15540 parent_die = parent_die->die_parent;
15541 continue;
15542 }
15543
98bfdba5
PA
15544 /* Check for template arguments. We never save these; if
15545 they're seen, we just mark the parent, and go on our way. */
15546 if (parent_die != NULL
15547 && cu->language == language_cplus
15548 && (abbrev->tag == DW_TAG_template_type_param
15549 || abbrev->tag == DW_TAG_template_value_param))
15550 {
15551 parent_die->has_template_arguments = 1;
15552
15553 if (!load_all)
15554 {
15555 /* We don't need a partial DIE for the template argument. */
dee91e82 15556 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
98bfdba5
PA
15557 continue;
15558 }
15559 }
15560
0d99eb77 15561 /* We only recurse into c++ subprograms looking for template arguments.
98bfdba5
PA
15562 Skip their other children. */
15563 if (!load_all
15564 && cu->language == language_cplus
15565 && parent_die != NULL
15566 && parent_die->tag == DW_TAG_subprogram)
15567 {
dee91e82 15568 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
98bfdba5
PA
15569 continue;
15570 }
15571
5afb4e99
DJ
15572 /* Check whether this DIE is interesting enough to save. Normally
15573 we would not be interested in members here, but there may be
15574 later variables referencing them via DW_AT_specification (for
15575 static members). */
15576 if (!load_all
15577 && !is_type_tag_for_partial (abbrev->tag)
72929c62 15578 && abbrev->tag != DW_TAG_constant
72bf9492
DJ
15579 && abbrev->tag != DW_TAG_enumerator
15580 && abbrev->tag != DW_TAG_subprogram
bc30ff58 15581 && abbrev->tag != DW_TAG_lexical_block
72bf9492 15582 && abbrev->tag != DW_TAG_variable
5afb4e99 15583 && abbrev->tag != DW_TAG_namespace
f55ee35c 15584 && abbrev->tag != DW_TAG_module
95554aad 15585 && abbrev->tag != DW_TAG_member
74921315
KS
15586 && abbrev->tag != DW_TAG_imported_unit
15587 && abbrev->tag != DW_TAG_imported_declaration)
72bf9492
DJ
15588 {
15589 /* Otherwise we skip to the next sibling, if any. */
dee91e82 15590 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
72bf9492
DJ
15591 continue;
15592 }
15593
dee91e82
DE
15594 info_ptr = read_partial_die (reader, part_die, abbrev, bytes_read,
15595 info_ptr);
72bf9492
DJ
15596
15597 /* This two-pass algorithm for processing partial symbols has a
15598 high cost in cache pressure. Thus, handle some simple cases
15599 here which cover the majority of C partial symbols. DIEs
15600 which neither have specification tags in them, nor could have
15601 specification tags elsewhere pointing at them, can simply be
15602 processed and discarded.
15603
15604 This segment is also optional; scan_partial_symbols and
15605 add_partial_symbol will handle these DIEs if we chain
15606 them in normally. When compilers which do not emit large
15607 quantities of duplicate debug information are more common,
15608 this code can probably be removed. */
15609
15610 /* Any complete simple types at the top level (pretty much all
15611 of them, for a language without namespaces), can be processed
15612 directly. */
15613 if (parent_die == NULL
15614 && part_die->has_specification == 0
15615 && part_die->is_declaration == 0
d8228535 15616 && ((part_die->tag == DW_TAG_typedef && !part_die->has_children)
72bf9492
DJ
15617 || part_die->tag == DW_TAG_base_type
15618 || part_die->tag == DW_TAG_subrange_type))
15619 {
15620 if (building_psymtab && part_die->name != NULL)
04a679b8 15621 add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
72bf9492 15622 VAR_DOMAIN, LOC_TYPEDEF,
bb5ed363
DE
15623 &objfile->static_psymbols,
15624 0, (CORE_ADDR) 0, cu->language, objfile);
dee91e82 15625 info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
72bf9492
DJ
15626 continue;
15627 }
15628
d8228535
JK
15629 /* The exception for DW_TAG_typedef with has_children above is
15630 a workaround of GCC PR debug/47510. In the case of this complaint
15631 type_name_no_tag_or_error will error on such types later.
15632
15633 GDB skipped children of DW_TAG_typedef by the shortcut above and then
15634 it could not find the child DIEs referenced later, this is checked
15635 above. In correct DWARF DW_TAG_typedef should have no children. */
15636
15637 if (part_die->tag == DW_TAG_typedef && part_die->has_children)
15638 complaint (&symfile_complaints,
15639 _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
15640 "- DIE at 0x%x [in module %s]"),
4262abfb 15641 part_die->offset.sect_off, objfile_name (objfile));
d8228535 15642
72bf9492
DJ
15643 /* If we're at the second level, and we're an enumerator, and
15644 our parent has no specification (meaning possibly lives in a
15645 namespace elsewhere), then we can add the partial symbol now
15646 instead of queueing it. */
15647 if (part_die->tag == DW_TAG_enumerator
15648 && parent_die != NULL
15649 && parent_die->die_parent == NULL
15650 && parent_die->tag == DW_TAG_enumeration_type
15651 && parent_die->has_specification == 0)
15652 {
15653 if (part_die->name == NULL)
3e43a32a
MS
15654 complaint (&symfile_complaints,
15655 _("malformed enumerator DIE ignored"));
72bf9492 15656 else if (building_psymtab)
04a679b8 15657 add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
72bf9492 15658 VAR_DOMAIN, LOC_CONST,
987504bb
JJ
15659 (cu->language == language_cplus
15660 || cu->language == language_java)
bb5ed363
DE
15661 ? &objfile->global_psymbols
15662 : &objfile->static_psymbols,
15663 0, (CORE_ADDR) 0, cu->language, objfile);
72bf9492 15664
dee91e82 15665 info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
72bf9492
DJ
15666 continue;
15667 }
15668
15669 /* We'll save this DIE so link it in. */
15670 part_die->die_parent = parent_die;
15671 part_die->die_sibling = NULL;
15672 part_die->die_child = NULL;
15673
15674 if (last_die && last_die == parent_die)
15675 last_die->die_child = part_die;
15676 else if (last_die)
15677 last_die->die_sibling = part_die;
15678
15679 last_die = part_die;
15680
15681 if (first_die == NULL)
15682 first_die = part_die;
15683
15684 /* Maybe add the DIE to the hash table. Not all DIEs that we
15685 find interesting need to be in the hash table, because we
15686 also have the parent/sibling/child chains; only those that we
15687 might refer to by offset later during partial symbol reading.
15688
15689 For now this means things that might have be the target of a
15690 DW_AT_specification, DW_AT_abstract_origin, or
15691 DW_AT_extension. DW_AT_extension will refer only to
15692 namespaces; DW_AT_abstract_origin refers to functions (and
15693 many things under the function DIE, but we do not recurse
15694 into function DIEs during partial symbol reading) and
15695 possibly variables as well; DW_AT_specification refers to
15696 declarations. Declarations ought to have the DW_AT_declaration
15697 flag. It happens that GCC forgets to put it in sometimes, but
15698 only for functions, not for types.
15699
15700 Adding more things than necessary to the hash table is harmless
15701 except for the performance cost. Adding too few will result in
5afb4e99
DJ
15702 wasted time in find_partial_die, when we reread the compilation
15703 unit with load_all_dies set. */
72bf9492 15704
5afb4e99 15705 if (load_all
72929c62 15706 || abbrev->tag == DW_TAG_constant
5afb4e99 15707 || abbrev->tag == DW_TAG_subprogram
72bf9492
DJ
15708 || abbrev->tag == DW_TAG_variable
15709 || abbrev->tag == DW_TAG_namespace
15710 || part_die->is_declaration)
15711 {
15712 void **slot;
15713
15714 slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
b64f50a1 15715 part_die->offset.sect_off, INSERT);
72bf9492
DJ
15716 *slot = part_die;
15717 }
15718
15719 part_die = obstack_alloc (&cu->comp_unit_obstack,
15720 sizeof (struct partial_die_info));
15721
15722 /* For some DIEs we want to follow their children (if any). For C
bc30ff58 15723 we have no reason to follow the children of structures; for other
98bfdba5
PA
15724 languages we have to, so that we can get at method physnames
15725 to infer fully qualified class names, for DW_AT_specification,
15726 and for C++ template arguments. For C++, we also look one level
15727 inside functions to find template arguments (if the name of the
15728 function does not already contain the template arguments).
bc30ff58
JB
15729
15730 For Ada, we need to scan the children of subprograms and lexical
15731 blocks as well because Ada allows the definition of nested
15732 entities that could be interesting for the debugger, such as
15733 nested subprograms for instance. */
72bf9492 15734 if (last_die->has_children
5afb4e99
DJ
15735 && (load_all
15736 || last_die->tag == DW_TAG_namespace
f55ee35c 15737 || last_die->tag == DW_TAG_module
72bf9492 15738 || last_die->tag == DW_TAG_enumeration_type
98bfdba5
PA
15739 || (cu->language == language_cplus
15740 && last_die->tag == DW_TAG_subprogram
15741 && (last_die->name == NULL
15742 || strchr (last_die->name, '<') == NULL))
72bf9492
DJ
15743 || (cu->language != language_c
15744 && (last_die->tag == DW_TAG_class_type
680b30c7 15745 || last_die->tag == DW_TAG_interface_type
72bf9492 15746 || last_die->tag == DW_TAG_structure_type
bc30ff58
JB
15747 || last_die->tag == DW_TAG_union_type))
15748 || (cu->language == language_ada
15749 && (last_die->tag == DW_TAG_subprogram
15750 || last_die->tag == DW_TAG_lexical_block))))
72bf9492
DJ
15751 {
15752 nesting_level++;
15753 parent_die = last_die;
15754 continue;
15755 }
15756
15757 /* Otherwise we skip to the next sibling, if any. */
dee91e82 15758 info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
72bf9492
DJ
15759
15760 /* Back to the top, do it again. */
15761 }
15762}
15763
c906108c
SS
15764/* Read a minimal amount of information into the minimal die structure. */
15765
d521ce57 15766static const gdb_byte *
dee91e82
DE
15767read_partial_die (const struct die_reader_specs *reader,
15768 struct partial_die_info *part_die,
15769 struct abbrev_info *abbrev, unsigned int abbrev_len,
d521ce57 15770 const gdb_byte *info_ptr)
c906108c 15771{
dee91e82 15772 struct dwarf2_cu *cu = reader->cu;
bb5ed363 15773 struct objfile *objfile = cu->objfile;
d521ce57 15774 const gdb_byte *buffer = reader->buffer;
fa238c03 15775 unsigned int i;
c906108c 15776 struct attribute attr;
c5aa993b 15777 int has_low_pc_attr = 0;
c906108c 15778 int has_high_pc_attr = 0;
91da1414 15779 int high_pc_relative = 0;
c906108c 15780
72bf9492 15781 memset (part_die, 0, sizeof (struct partial_die_info));
c906108c 15782
b64f50a1 15783 part_die->offset.sect_off = info_ptr - buffer;
72bf9492
DJ
15784
15785 info_ptr += abbrev_len;
15786
15787 if (abbrev == NULL)
15788 return info_ptr;
15789
c906108c
SS
15790 part_die->tag = abbrev->tag;
15791 part_die->has_children = abbrev->has_children;
c906108c
SS
15792
15793 for (i = 0; i < abbrev->num_attrs; ++i)
15794 {
dee91e82 15795 info_ptr = read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
c906108c
SS
15796
15797 /* Store the data if it is of an attribute we want to keep in a
c5aa993b 15798 partial symbol table. */
c906108c
SS
15799 switch (attr.name)
15800 {
15801 case DW_AT_name:
71c25dea
TT
15802 switch (part_die->tag)
15803 {
15804 case DW_TAG_compile_unit:
95554aad 15805 case DW_TAG_partial_unit:
348e048f 15806 case DW_TAG_type_unit:
71c25dea
TT
15807 /* Compilation units have a DW_AT_name that is a filename, not
15808 a source language identifier. */
15809 case DW_TAG_enumeration_type:
15810 case DW_TAG_enumerator:
15811 /* These tags always have simple identifiers already; no need
15812 to canonicalize them. */
15813 part_die->name = DW_STRING (&attr);
15814 break;
15815 default:
15816 part_die->name
15817 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
34a68019 15818 &objfile->per_bfd->storage_obstack);
71c25dea
TT
15819 break;
15820 }
c906108c 15821 break;
31ef98ae 15822 case DW_AT_linkage_name:
c906108c 15823 case DW_AT_MIPS_linkage_name:
31ef98ae
TT
15824 /* Note that both forms of linkage name might appear. We
15825 assume they will be the same, and we only store the last
15826 one we see. */
94af9270
KS
15827 if (cu->language == language_ada)
15828 part_die->name = DW_STRING (&attr);
abc72ce4 15829 part_die->linkage_name = DW_STRING (&attr);
c906108c
SS
15830 break;
15831 case DW_AT_low_pc:
15832 has_low_pc_attr = 1;
31aa7e4e 15833 part_die->lowpc = attr_value_as_address (&attr);
c906108c
SS
15834 break;
15835 case DW_AT_high_pc:
15836 has_high_pc_attr = 1;
31aa7e4e
JB
15837 part_die->highpc = attr_value_as_address (&attr);
15838 if (cu->header.version >= 4 && attr_form_is_constant (&attr))
15839 high_pc_relative = 1;
c906108c
SS
15840 break;
15841 case DW_AT_location:
0963b4bd 15842 /* Support the .debug_loc offsets. */
8e19ed76
PS
15843 if (attr_form_is_block (&attr))
15844 {
95554aad 15845 part_die->d.locdesc = DW_BLOCK (&attr);
8e19ed76 15846 }
3690dd37 15847 else if (attr_form_is_section_offset (&attr))
8e19ed76 15848 {
4d3c2250 15849 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
15850 }
15851 else
15852 {
4d3c2250
KB
15853 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
15854 "partial symbol information");
8e19ed76 15855 }
c906108c 15856 break;
c906108c
SS
15857 case DW_AT_external:
15858 part_die->is_external = DW_UNSND (&attr);
15859 break;
15860 case DW_AT_declaration:
15861 part_die->is_declaration = DW_UNSND (&attr);
15862 break;
15863 case DW_AT_type:
15864 part_die->has_type = 1;
15865 break;
15866 case DW_AT_abstract_origin:
15867 case DW_AT_specification:
72bf9492
DJ
15868 case DW_AT_extension:
15869 part_die->has_specification = 1;
c764a876 15870 part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
36586728
TT
15871 part_die->spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15872 || cu->per_cu->is_dwz);
c906108c
SS
15873 break;
15874 case DW_AT_sibling:
15875 /* Ignore absolute siblings, they might point outside of
15876 the current compile unit. */
15877 if (attr.form == DW_FORM_ref_addr)
3e43a32a
MS
15878 complaint (&symfile_complaints,
15879 _("ignoring absolute DW_AT_sibling"));
c906108c 15880 else
b9502d3f
WN
15881 {
15882 unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
15883 const gdb_byte *sibling_ptr = buffer + off;
15884
15885 if (sibling_ptr < info_ptr)
15886 complaint (&symfile_complaints,
15887 _("DW_AT_sibling points backwards"));
22869d73
KS
15888 else if (sibling_ptr > reader->buffer_end)
15889 dwarf2_section_buffer_overflow_complaint (reader->die_section);
b9502d3f
WN
15890 else
15891 part_die->sibling = sibling_ptr;
15892 }
c906108c 15893 break;
fa4028e9
JB
15894 case DW_AT_byte_size:
15895 part_die->has_byte_size = 1;
15896 break;
ff908ebf
AW
15897 case DW_AT_const_value:
15898 part_die->has_const_value = 1;
15899 break;
68511cec
CES
15900 case DW_AT_calling_convention:
15901 /* DWARF doesn't provide a way to identify a program's source-level
15902 entry point. DW_AT_calling_convention attributes are only meant
15903 to describe functions' calling conventions.
15904
15905 However, because it's a necessary piece of information in
15906 Fortran, and because DW_CC_program is the only piece of debugging
15907 information whose definition refers to a 'main program' at all,
15908 several compilers have begun marking Fortran main programs with
15909 DW_CC_program --- even when those functions use the standard
15910 calling conventions.
15911
15912 So until DWARF specifies a way to provide this information and
15913 compilers pick up the new representation, we'll support this
15914 practice. */
15915 if (DW_UNSND (&attr) == DW_CC_program
15916 && cu->language == language_fortran)
3d548a53 15917 set_objfile_main_name (objfile, part_die->name, language_fortran);
68511cec 15918 break;
481860b3
GB
15919 case DW_AT_inline:
15920 if (DW_UNSND (&attr) == DW_INL_inlined
15921 || DW_UNSND (&attr) == DW_INL_declared_inlined)
15922 part_die->may_be_inlined = 1;
15923 break;
95554aad
TT
15924
15925 case DW_AT_import:
15926 if (part_die->tag == DW_TAG_imported_unit)
36586728
TT
15927 {
15928 part_die->d.offset = dwarf2_get_ref_die_offset (&attr);
15929 part_die->is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15930 || cu->per_cu->is_dwz);
15931 }
95554aad
TT
15932 break;
15933
c906108c
SS
15934 default:
15935 break;
15936 }
15937 }
15938
91da1414
MW
15939 if (high_pc_relative)
15940 part_die->highpc += part_die->lowpc;
15941
9373cf26
JK
15942 if (has_low_pc_attr && has_high_pc_attr)
15943 {
15944 /* When using the GNU linker, .gnu.linkonce. sections are used to
15945 eliminate duplicate copies of functions and vtables and such.
15946 The linker will arbitrarily choose one and discard the others.
15947 The AT_*_pc values for such functions refer to local labels in
15948 these sections. If the section from that file was discarded, the
15949 labels are not in the output, so the relocs get a value of 0.
15950 If this is a discarded function, mark the pc bounds as invalid,
15951 so that GDB will ignore it. */
15952 if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
15953 {
bb5ed363 15954 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9373cf26
JK
15955
15956 complaint (&symfile_complaints,
15957 _("DW_AT_low_pc %s is zero "
15958 "for DIE at 0x%x [in module %s]"),
15959 paddress (gdbarch, part_die->lowpc),
4262abfb 15960 part_die->offset.sect_off, objfile_name (objfile));
9373cf26
JK
15961 }
15962 /* dwarf2_get_pc_bounds has also the strict low < high requirement. */
15963 else if (part_die->lowpc >= part_die->highpc)
15964 {
bb5ed363 15965 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9373cf26
JK
15966
15967 complaint (&symfile_complaints,
15968 _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
15969 "for DIE at 0x%x [in module %s]"),
15970 paddress (gdbarch, part_die->lowpc),
15971 paddress (gdbarch, part_die->highpc),
4262abfb 15972 part_die->offset.sect_off, objfile_name (objfile));
9373cf26
JK
15973 }
15974 else
15975 part_die->has_pc_info = 1;
15976 }
85cbf3d3 15977
c906108c
SS
15978 return info_ptr;
15979}
15980
72bf9492
DJ
15981/* Find a cached partial DIE at OFFSET in CU. */
15982
15983static struct partial_die_info *
b64f50a1 15984find_partial_die_in_comp_unit (sect_offset offset, struct dwarf2_cu *cu)
72bf9492
DJ
15985{
15986 struct partial_die_info *lookup_die = NULL;
15987 struct partial_die_info part_die;
15988
15989 part_die.offset = offset;
b64f50a1
JK
15990 lookup_die = htab_find_with_hash (cu->partial_dies, &part_die,
15991 offset.sect_off);
72bf9492 15992
72bf9492
DJ
15993 return lookup_die;
15994}
15995
348e048f
DE
15996/* Find a partial DIE at OFFSET, which may or may not be in CU,
15997 except in the case of .debug_types DIEs which do not reference
15998 outside their CU (they do however referencing other types via
55f1336d 15999 DW_FORM_ref_sig8). */
72bf9492
DJ
16000
16001static struct partial_die_info *
36586728 16002find_partial_die (sect_offset offset, int offset_in_dwz, struct dwarf2_cu *cu)
72bf9492 16003{
bb5ed363 16004 struct objfile *objfile = cu->objfile;
5afb4e99
DJ
16005 struct dwarf2_per_cu_data *per_cu = NULL;
16006 struct partial_die_info *pd = NULL;
72bf9492 16007
36586728
TT
16008 if (offset_in_dwz == cu->per_cu->is_dwz
16009 && offset_in_cu_p (&cu->header, offset))
5afb4e99
DJ
16010 {
16011 pd = find_partial_die_in_comp_unit (offset, cu);
16012 if (pd != NULL)
16013 return pd;
0d99eb77
DE
16014 /* We missed recording what we needed.
16015 Load all dies and try again. */
16016 per_cu = cu->per_cu;
5afb4e99 16017 }
0d99eb77
DE
16018 else
16019 {
16020 /* TUs don't reference other CUs/TUs (except via type signatures). */
3019eac3 16021 if (cu->per_cu->is_debug_types)
0d99eb77
DE
16022 {
16023 error (_("Dwarf Error: Type Unit at offset 0x%lx contains"
16024 " external reference to offset 0x%lx [in module %s].\n"),
16025 (long) cu->header.offset.sect_off, (long) offset.sect_off,
16026 bfd_get_filename (objfile->obfd));
16027 }
36586728
TT
16028 per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
16029 objfile);
72bf9492 16030
0d99eb77
DE
16031 if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
16032 load_partial_comp_unit (per_cu);
ae038cb0 16033
0d99eb77
DE
16034 per_cu->cu->last_used = 0;
16035 pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
16036 }
5afb4e99 16037
dee91e82
DE
16038 /* If we didn't find it, and not all dies have been loaded,
16039 load them all and try again. */
16040
5afb4e99
DJ
16041 if (pd == NULL && per_cu->load_all_dies == 0)
16042 {
5afb4e99 16043 per_cu->load_all_dies = 1;
fd820528
DE
16044
16045 /* This is nasty. When we reread the DIEs, somewhere up the call chain
16046 THIS_CU->cu may already be in use. So we can't just free it and
16047 replace its DIEs with the ones we read in. Instead, we leave those
16048 DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
16049 and clobber THIS_CU->cu->partial_dies with the hash table for the new
16050 set. */
dee91e82 16051 load_partial_comp_unit (per_cu);
5afb4e99
DJ
16052
16053 pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
16054 }
16055
16056 if (pd == NULL)
16057 internal_error (__FILE__, __LINE__,
3e43a32a
MS
16058 _("could not find partial DIE 0x%x "
16059 "in cache [from module %s]\n"),
b64f50a1 16060 offset.sect_off, bfd_get_filename (objfile->obfd));
5afb4e99 16061 return pd;
72bf9492
DJ
16062}
16063
abc72ce4
DE
16064/* See if we can figure out if the class lives in a namespace. We do
16065 this by looking for a member function; its demangled name will
16066 contain namespace info, if there is any. */
16067
16068static void
16069guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
16070 struct dwarf2_cu *cu)
16071{
16072 /* NOTE: carlton/2003-10-07: Getting the info this way changes
16073 what template types look like, because the demangler
16074 frequently doesn't give the same name as the debug info. We
16075 could fix this by only using the demangled name to get the
16076 prefix (but see comment in read_structure_type). */
16077
16078 struct partial_die_info *real_pdi;
16079 struct partial_die_info *child_pdi;
16080
16081 /* If this DIE (this DIE's specification, if any) has a parent, then
16082 we should not do this. We'll prepend the parent's fully qualified
16083 name when we create the partial symbol. */
16084
16085 real_pdi = struct_pdi;
16086 while (real_pdi->has_specification)
36586728
TT
16087 real_pdi = find_partial_die (real_pdi->spec_offset,
16088 real_pdi->spec_is_dwz, cu);
abc72ce4
DE
16089
16090 if (real_pdi->die_parent != NULL)
16091 return;
16092
16093 for (child_pdi = struct_pdi->die_child;
16094 child_pdi != NULL;
16095 child_pdi = child_pdi->die_sibling)
16096 {
16097 if (child_pdi->tag == DW_TAG_subprogram
16098 && child_pdi->linkage_name != NULL)
16099 {
16100 char *actual_class_name
16101 = language_class_name_from_physname (cu->language_defn,
16102 child_pdi->linkage_name);
16103 if (actual_class_name != NULL)
16104 {
16105 struct_pdi->name
34a68019 16106 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb
TT
16107 actual_class_name,
16108 strlen (actual_class_name));
abc72ce4
DE
16109 xfree (actual_class_name);
16110 }
16111 break;
16112 }
16113 }
16114}
16115
72bf9492
DJ
16116/* Adjust PART_DIE before generating a symbol for it. This function
16117 may set the is_external flag or change the DIE's name. */
16118
16119static void
16120fixup_partial_die (struct partial_die_info *part_die,
16121 struct dwarf2_cu *cu)
16122{
abc72ce4
DE
16123 /* Once we've fixed up a die, there's no point in doing so again.
16124 This also avoids a memory leak if we were to call
16125 guess_partial_die_structure_name multiple times. */
16126 if (part_die->fixup_called)
16127 return;
16128
72bf9492
DJ
16129 /* If we found a reference attribute and the DIE has no name, try
16130 to find a name in the referred to DIE. */
16131
16132 if (part_die->name == NULL && part_die->has_specification)
16133 {
16134 struct partial_die_info *spec_die;
72bf9492 16135
36586728
TT
16136 spec_die = find_partial_die (part_die->spec_offset,
16137 part_die->spec_is_dwz, cu);
72bf9492 16138
10b3939b 16139 fixup_partial_die (spec_die, cu);
72bf9492
DJ
16140
16141 if (spec_die->name)
16142 {
16143 part_die->name = spec_die->name;
16144
16145 /* Copy DW_AT_external attribute if it is set. */
16146 if (spec_die->is_external)
16147 part_die->is_external = spec_die->is_external;
16148 }
16149 }
16150
16151 /* Set default names for some unnamed DIEs. */
72bf9492
DJ
16152
16153 if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
2b1dbab0 16154 part_die->name = CP_ANONYMOUS_NAMESPACE_STR;
72bf9492 16155
abc72ce4
DE
16156 /* If there is no parent die to provide a namespace, and there are
16157 children, see if we can determine the namespace from their linkage
122d1940 16158 name. */
abc72ce4 16159 if (cu->language == language_cplus
8b70b953 16160 && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
abc72ce4
DE
16161 && part_die->die_parent == NULL
16162 && part_die->has_children
16163 && (part_die->tag == DW_TAG_class_type
16164 || part_die->tag == DW_TAG_structure_type
16165 || part_die->tag == DW_TAG_union_type))
16166 guess_partial_die_structure_name (part_die, cu);
16167
53832f31
TT
16168 /* GCC might emit a nameless struct or union that has a linkage
16169 name. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
16170 if (part_die->name == NULL
96408a79
SA
16171 && (part_die->tag == DW_TAG_class_type
16172 || part_die->tag == DW_TAG_interface_type
16173 || part_die->tag == DW_TAG_structure_type
16174 || part_die->tag == DW_TAG_union_type)
53832f31
TT
16175 && part_die->linkage_name != NULL)
16176 {
16177 char *demangled;
16178
8de20a37 16179 demangled = gdb_demangle (part_die->linkage_name, DMGL_TYPES);
53832f31
TT
16180 if (demangled)
16181 {
96408a79
SA
16182 const char *base;
16183
16184 /* Strip any leading namespaces/classes, keep only the base name.
16185 DW_AT_name for named DIEs does not contain the prefixes. */
16186 base = strrchr (demangled, ':');
16187 if (base && base > demangled && base[-1] == ':')
16188 base++;
16189 else
16190 base = demangled;
16191
34a68019
TT
16192 part_die->name
16193 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
16194 base, strlen (base));
53832f31
TT
16195 xfree (demangled);
16196 }
16197 }
16198
abc72ce4 16199 part_die->fixup_called = 1;
72bf9492
DJ
16200}
16201
a8329558 16202/* Read an attribute value described by an attribute form. */
c906108c 16203
d521ce57 16204static const gdb_byte *
dee91e82
DE
16205read_attribute_value (const struct die_reader_specs *reader,
16206 struct attribute *attr, unsigned form,
d521ce57 16207 const gdb_byte *info_ptr)
c906108c 16208{
dee91e82 16209 struct dwarf2_cu *cu = reader->cu;
3e29f34a
MR
16210 struct objfile *objfile = cu->objfile;
16211 struct gdbarch *gdbarch = get_objfile_arch (objfile);
dee91e82 16212 bfd *abfd = reader->abfd;
e7c27a73 16213 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
16214 unsigned int bytes_read;
16215 struct dwarf_block *blk;
16216
aead7601 16217 attr->form = (enum dwarf_form) form;
a8329558 16218 switch (form)
c906108c 16219 {
c906108c 16220 case DW_FORM_ref_addr:
ae411497 16221 if (cu->header.version == 2)
4568ecf9 16222 DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
ae411497 16223 else
4568ecf9
DE
16224 DW_UNSND (attr) = read_offset (abfd, info_ptr,
16225 &cu->header, &bytes_read);
ae411497
TT
16226 info_ptr += bytes_read;
16227 break;
36586728
TT
16228 case DW_FORM_GNU_ref_alt:
16229 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16230 info_ptr += bytes_read;
16231 break;
ae411497 16232 case DW_FORM_addr:
e7c27a73 16233 DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
3e29f34a 16234 DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
107d2387 16235 info_ptr += bytes_read;
c906108c
SS
16236 break;
16237 case DW_FORM_block2:
7b5a2f43 16238 blk = dwarf_alloc_block (cu);
c906108c
SS
16239 blk->size = read_2_bytes (abfd, info_ptr);
16240 info_ptr += 2;
16241 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16242 info_ptr += blk->size;
16243 DW_BLOCK (attr) = blk;
16244 break;
16245 case DW_FORM_block4:
7b5a2f43 16246 blk = dwarf_alloc_block (cu);
c906108c
SS
16247 blk->size = read_4_bytes (abfd, info_ptr);
16248 info_ptr += 4;
16249 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16250 info_ptr += blk->size;
16251 DW_BLOCK (attr) = blk;
16252 break;
16253 case DW_FORM_data2:
16254 DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
16255 info_ptr += 2;
16256 break;
16257 case DW_FORM_data4:
16258 DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
16259 info_ptr += 4;
16260 break;
16261 case DW_FORM_data8:
16262 DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
16263 info_ptr += 8;
16264 break;
2dc7f7b3
TT
16265 case DW_FORM_sec_offset:
16266 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16267 info_ptr += bytes_read;
16268 break;
c906108c 16269 case DW_FORM_string:
9b1c24c8 16270 DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
8285870a 16271 DW_STRING_IS_CANONICAL (attr) = 0;
c906108c
SS
16272 info_ptr += bytes_read;
16273 break;
4bdf3d34 16274 case DW_FORM_strp:
36586728
TT
16275 if (!cu->per_cu->is_dwz)
16276 {
16277 DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
16278 &bytes_read);
16279 DW_STRING_IS_CANONICAL (attr) = 0;
16280 info_ptr += bytes_read;
16281 break;
16282 }
16283 /* FALLTHROUGH */
16284 case DW_FORM_GNU_strp_alt:
16285 {
16286 struct dwz_file *dwz = dwarf2_get_dwz_file ();
16287 LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
16288 &bytes_read);
16289
16290 DW_STRING (attr) = read_indirect_string_from_dwz (dwz, str_offset);
16291 DW_STRING_IS_CANONICAL (attr) = 0;
16292 info_ptr += bytes_read;
16293 }
4bdf3d34 16294 break;
2dc7f7b3 16295 case DW_FORM_exprloc:
c906108c 16296 case DW_FORM_block:
7b5a2f43 16297 blk = dwarf_alloc_block (cu);
c906108c
SS
16298 blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16299 info_ptr += bytes_read;
16300 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16301 info_ptr += blk->size;
16302 DW_BLOCK (attr) = blk;
16303 break;
16304 case DW_FORM_block1:
7b5a2f43 16305 blk = dwarf_alloc_block (cu);
c906108c
SS
16306 blk->size = read_1_byte (abfd, info_ptr);
16307 info_ptr += 1;
16308 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16309 info_ptr += blk->size;
16310 DW_BLOCK (attr) = blk;
16311 break;
16312 case DW_FORM_data1:
16313 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16314 info_ptr += 1;
16315 break;
16316 case DW_FORM_flag:
16317 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16318 info_ptr += 1;
16319 break;
2dc7f7b3
TT
16320 case DW_FORM_flag_present:
16321 DW_UNSND (attr) = 1;
16322 break;
c906108c
SS
16323 case DW_FORM_sdata:
16324 DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
16325 info_ptr += bytes_read;
16326 break;
16327 case DW_FORM_udata:
16328 DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16329 info_ptr += bytes_read;
16330 break;
16331 case DW_FORM_ref1:
4568ecf9
DE
16332 DW_UNSND (attr) = (cu->header.offset.sect_off
16333 + read_1_byte (abfd, info_ptr));
c906108c
SS
16334 info_ptr += 1;
16335 break;
16336 case DW_FORM_ref2:
4568ecf9
DE
16337 DW_UNSND (attr) = (cu->header.offset.sect_off
16338 + read_2_bytes (abfd, info_ptr));
c906108c
SS
16339 info_ptr += 2;
16340 break;
16341 case DW_FORM_ref4:
4568ecf9
DE
16342 DW_UNSND (attr) = (cu->header.offset.sect_off
16343 + read_4_bytes (abfd, info_ptr));
c906108c
SS
16344 info_ptr += 4;
16345 break;
613e1657 16346 case DW_FORM_ref8:
4568ecf9
DE
16347 DW_UNSND (attr) = (cu->header.offset.sect_off
16348 + read_8_bytes (abfd, info_ptr));
613e1657
KB
16349 info_ptr += 8;
16350 break;
55f1336d 16351 case DW_FORM_ref_sig8:
ac9ec31b 16352 DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
348e048f
DE
16353 info_ptr += 8;
16354 break;
c906108c 16355 case DW_FORM_ref_udata:
4568ecf9
DE
16356 DW_UNSND (attr) = (cu->header.offset.sect_off
16357 + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
c906108c
SS
16358 info_ptr += bytes_read;
16359 break;
c906108c 16360 case DW_FORM_indirect:
a8329558
KW
16361 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16362 info_ptr += bytes_read;
dee91e82 16363 info_ptr = read_attribute_value (reader, attr, form, info_ptr);
a8329558 16364 break;
3019eac3
DE
16365 case DW_FORM_GNU_addr_index:
16366 if (reader->dwo_file == NULL)
16367 {
16368 /* For now flag a hard error.
16369 Later we can turn this into a complaint. */
16370 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16371 dwarf_form_name (form),
16372 bfd_get_filename (abfd));
16373 }
16374 DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
16375 info_ptr += bytes_read;
16376 break;
16377 case DW_FORM_GNU_str_index:
16378 if (reader->dwo_file == NULL)
16379 {
16380 /* For now flag a hard error.
16381 Later we can turn this into a complaint if warranted. */
16382 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16383 dwarf_form_name (form),
16384 bfd_get_filename (abfd));
16385 }
16386 {
16387 ULONGEST str_index =
16388 read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16389
342587c4 16390 DW_STRING (attr) = read_str_index (reader, str_index);
3019eac3
DE
16391 DW_STRING_IS_CANONICAL (attr) = 0;
16392 info_ptr += bytes_read;
16393 }
16394 break;
c906108c 16395 default:
8a3fe4f8 16396 error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
659b0389
ML
16397 dwarf_form_name (form),
16398 bfd_get_filename (abfd));
c906108c 16399 }
28e94949 16400
36586728 16401 /* Super hack. */
7771576e 16402 if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
36586728
TT
16403 attr->form = DW_FORM_GNU_ref_alt;
16404
28e94949
JB
16405 /* We have seen instances where the compiler tried to emit a byte
16406 size attribute of -1 which ended up being encoded as an unsigned
16407 0xffffffff. Although 0xffffffff is technically a valid size value,
16408 an object of this size seems pretty unlikely so we can relatively
16409 safely treat these cases as if the size attribute was invalid and
16410 treat them as zero by default. */
16411 if (attr->name == DW_AT_byte_size
16412 && form == DW_FORM_data4
16413 && DW_UNSND (attr) >= 0xffffffff)
01c66ae6
JB
16414 {
16415 complaint
16416 (&symfile_complaints,
43bbcdc2
PH
16417 _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
16418 hex_string (DW_UNSND (attr)));
01c66ae6
JB
16419 DW_UNSND (attr) = 0;
16420 }
28e94949 16421
c906108c
SS
16422 return info_ptr;
16423}
16424
a8329558
KW
16425/* Read an attribute described by an abbreviated attribute. */
16426
d521ce57 16427static const gdb_byte *
dee91e82
DE
16428read_attribute (const struct die_reader_specs *reader,
16429 struct attribute *attr, struct attr_abbrev *abbrev,
d521ce57 16430 const gdb_byte *info_ptr)
a8329558
KW
16431{
16432 attr->name = abbrev->name;
dee91e82 16433 return read_attribute_value (reader, attr, abbrev->form, info_ptr);
a8329558
KW
16434}
16435
0963b4bd 16436/* Read dwarf information from a buffer. */
c906108c
SS
16437
16438static unsigned int
a1855c1d 16439read_1_byte (bfd *abfd, const gdb_byte *buf)
c906108c 16440{
fe1b8b76 16441 return bfd_get_8 (abfd, buf);
c906108c
SS
16442}
16443
16444static int
a1855c1d 16445read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
c906108c 16446{
fe1b8b76 16447 return bfd_get_signed_8 (abfd, buf);
c906108c
SS
16448}
16449
16450static unsigned int
a1855c1d 16451read_2_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16452{
fe1b8b76 16453 return bfd_get_16 (abfd, buf);
c906108c
SS
16454}
16455
21ae7a4d 16456static int
a1855c1d 16457read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
21ae7a4d
JK
16458{
16459 return bfd_get_signed_16 (abfd, buf);
16460}
16461
c906108c 16462static unsigned int
a1855c1d 16463read_4_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16464{
fe1b8b76 16465 return bfd_get_32 (abfd, buf);
c906108c
SS
16466}
16467
21ae7a4d 16468static int
a1855c1d 16469read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
21ae7a4d
JK
16470{
16471 return bfd_get_signed_32 (abfd, buf);
16472}
16473
93311388 16474static ULONGEST
a1855c1d 16475read_8_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16476{
fe1b8b76 16477 return bfd_get_64 (abfd, buf);
c906108c
SS
16478}
16479
16480static CORE_ADDR
d521ce57 16481read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
891d2f0b 16482 unsigned int *bytes_read)
c906108c 16483{
e7c27a73 16484 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
16485 CORE_ADDR retval = 0;
16486
107d2387 16487 if (cu_header->signed_addr_p)
c906108c 16488 {
107d2387
AC
16489 switch (cu_header->addr_size)
16490 {
16491 case 2:
fe1b8b76 16492 retval = bfd_get_signed_16 (abfd, buf);
107d2387
AC
16493 break;
16494 case 4:
fe1b8b76 16495 retval = bfd_get_signed_32 (abfd, buf);
107d2387
AC
16496 break;
16497 case 8:
fe1b8b76 16498 retval = bfd_get_signed_64 (abfd, buf);
107d2387
AC
16499 break;
16500 default:
8e65ff28 16501 internal_error (__FILE__, __LINE__,
e2e0b3e5 16502 _("read_address: bad switch, signed [in module %s]"),
659b0389 16503 bfd_get_filename (abfd));
107d2387
AC
16504 }
16505 }
16506 else
16507 {
16508 switch (cu_header->addr_size)
16509 {
16510 case 2:
fe1b8b76 16511 retval = bfd_get_16 (abfd, buf);
107d2387
AC
16512 break;
16513 case 4:
fe1b8b76 16514 retval = bfd_get_32 (abfd, buf);
107d2387
AC
16515 break;
16516 case 8:
fe1b8b76 16517 retval = bfd_get_64 (abfd, buf);
107d2387
AC
16518 break;
16519 default:
8e65ff28 16520 internal_error (__FILE__, __LINE__,
a73c6dcd
MS
16521 _("read_address: bad switch, "
16522 "unsigned [in module %s]"),
659b0389 16523 bfd_get_filename (abfd));
107d2387 16524 }
c906108c 16525 }
64367e0a 16526
107d2387
AC
16527 *bytes_read = cu_header->addr_size;
16528 return retval;
c906108c
SS
16529}
16530
f7ef9339 16531/* Read the initial length from a section. The (draft) DWARF 3
613e1657
KB
16532 specification allows the initial length to take up either 4 bytes
16533 or 12 bytes. If the first 4 bytes are 0xffffffff, then the next 8
16534 bytes describe the length and all offsets will be 8 bytes in length
16535 instead of 4.
16536
f7ef9339
KB
16537 An older, non-standard 64-bit format is also handled by this
16538 function. The older format in question stores the initial length
16539 as an 8-byte quantity without an escape value. Lengths greater
16540 than 2^32 aren't very common which means that the initial 4 bytes
16541 is almost always zero. Since a length value of zero doesn't make
16542 sense for the 32-bit format, this initial zero can be considered to
16543 be an escape value which indicates the presence of the older 64-bit
16544 format. As written, the code can't detect (old format) lengths
917c78fc
MK
16545 greater than 4GB. If it becomes necessary to handle lengths
16546 somewhat larger than 4GB, we could allow other small values (such
16547 as the non-sensical values of 1, 2, and 3) to also be used as
16548 escape values indicating the presence of the old format.
f7ef9339 16549
917c78fc
MK
16550 The value returned via bytes_read should be used to increment the
16551 relevant pointer after calling read_initial_length().
c764a876 16552
613e1657
KB
16553 [ Note: read_initial_length() and read_offset() are based on the
16554 document entitled "DWARF Debugging Information Format", revision
f7ef9339 16555 3, draft 8, dated November 19, 2001. This document was obtained
613e1657
KB
16556 from:
16557
f7ef9339 16558 http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
6e70227d 16559
613e1657
KB
16560 This document is only a draft and is subject to change. (So beware.)
16561
f7ef9339 16562 Details regarding the older, non-standard 64-bit format were
917c78fc
MK
16563 determined empirically by examining 64-bit ELF files produced by
16564 the SGI toolchain on an IRIX 6.5 machine.
f7ef9339
KB
16565
16566 - Kevin, July 16, 2002
613e1657
KB
16567 ] */
16568
16569static LONGEST
d521ce57 16570read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
613e1657 16571{
fe1b8b76 16572 LONGEST length = bfd_get_32 (abfd, buf);
613e1657 16573
dd373385 16574 if (length == 0xffffffff)
613e1657 16575 {
fe1b8b76 16576 length = bfd_get_64 (abfd, buf + 4);
613e1657 16577 *bytes_read = 12;
613e1657 16578 }
dd373385 16579 else if (length == 0)
f7ef9339 16580 {
dd373385 16581 /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX. */
fe1b8b76 16582 length = bfd_get_64 (abfd, buf);
f7ef9339 16583 *bytes_read = 8;
f7ef9339 16584 }
613e1657
KB
16585 else
16586 {
16587 *bytes_read = 4;
613e1657
KB
16588 }
16589
c764a876
DE
16590 return length;
16591}
dd373385 16592
c764a876
DE
16593/* Cover function for read_initial_length.
16594 Returns the length of the object at BUF, and stores the size of the
16595 initial length in *BYTES_READ and stores the size that offsets will be in
16596 *OFFSET_SIZE.
16597 If the initial length size is not equivalent to that specified in
16598 CU_HEADER then issue a complaint.
16599 This is useful when reading non-comp-unit headers. */
dd373385 16600
c764a876 16601static LONGEST
d521ce57 16602read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
c764a876
DE
16603 const struct comp_unit_head *cu_header,
16604 unsigned int *bytes_read,
16605 unsigned int *offset_size)
16606{
16607 LONGEST length = read_initial_length (abfd, buf, bytes_read);
16608
16609 gdb_assert (cu_header->initial_length_size == 4
16610 || cu_header->initial_length_size == 8
16611 || cu_header->initial_length_size == 12);
16612
16613 if (cu_header->initial_length_size != *bytes_read)
16614 complaint (&symfile_complaints,
16615 _("intermixed 32-bit and 64-bit DWARF sections"));
dd373385 16616
c764a876 16617 *offset_size = (*bytes_read == 4) ? 4 : 8;
dd373385 16618 return length;
613e1657
KB
16619}
16620
16621/* Read an offset from the data stream. The size of the offset is
917c78fc 16622 given by cu_header->offset_size. */
613e1657
KB
16623
16624static LONGEST
d521ce57
TT
16625read_offset (bfd *abfd, const gdb_byte *buf,
16626 const struct comp_unit_head *cu_header,
891d2f0b 16627 unsigned int *bytes_read)
c764a876
DE
16628{
16629 LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
9a619af0 16630
c764a876
DE
16631 *bytes_read = cu_header->offset_size;
16632 return offset;
16633}
16634
16635/* Read an offset from the data stream. */
16636
16637static LONGEST
d521ce57 16638read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
613e1657
KB
16639{
16640 LONGEST retval = 0;
16641
c764a876 16642 switch (offset_size)
613e1657
KB
16643 {
16644 case 4:
fe1b8b76 16645 retval = bfd_get_32 (abfd, buf);
613e1657
KB
16646 break;
16647 case 8:
fe1b8b76 16648 retval = bfd_get_64 (abfd, buf);
613e1657
KB
16649 break;
16650 default:
8e65ff28 16651 internal_error (__FILE__, __LINE__,
c764a876 16652 _("read_offset_1: bad switch [in module %s]"),
659b0389 16653 bfd_get_filename (abfd));
613e1657
KB
16654 }
16655
917c78fc 16656 return retval;
613e1657
KB
16657}
16658
d521ce57
TT
16659static const gdb_byte *
16660read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
c906108c
SS
16661{
16662 /* If the size of a host char is 8 bits, we can return a pointer
16663 to the buffer, otherwise we have to copy the data to a buffer
16664 allocated on the temporary obstack. */
4bdf3d34 16665 gdb_assert (HOST_CHAR_BIT == 8);
c906108c 16666 return buf;
c906108c
SS
16667}
16668
d521ce57
TT
16669static const char *
16670read_direct_string (bfd *abfd, const gdb_byte *buf,
16671 unsigned int *bytes_read_ptr)
c906108c
SS
16672{
16673 /* If the size of a host char is 8 bits, we can return a pointer
16674 to the string, otherwise we have to copy the string to a buffer
16675 allocated on the temporary obstack. */
4bdf3d34 16676 gdb_assert (HOST_CHAR_BIT == 8);
c906108c
SS
16677 if (*buf == '\0')
16678 {
16679 *bytes_read_ptr = 1;
16680 return NULL;
16681 }
d521ce57
TT
16682 *bytes_read_ptr = strlen ((const char *) buf) + 1;
16683 return (const char *) buf;
4bdf3d34
JJ
16684}
16685
d521ce57 16686static const char *
cf2c3c16 16687read_indirect_string_at_offset (bfd *abfd, LONGEST str_offset)
4bdf3d34 16688{
be391dca 16689 dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->str);
dce234bc 16690 if (dwarf2_per_objfile->str.buffer == NULL)
cf2c3c16
TT
16691 error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
16692 bfd_get_filename (abfd));
dce234bc 16693 if (str_offset >= dwarf2_per_objfile->str.size)
cf2c3c16
TT
16694 error (_("DW_FORM_strp pointing outside of "
16695 ".debug_str section [in module %s]"),
16696 bfd_get_filename (abfd));
4bdf3d34 16697 gdb_assert (HOST_CHAR_BIT == 8);
dce234bc 16698 if (dwarf2_per_objfile->str.buffer[str_offset] == '\0')
4bdf3d34 16699 return NULL;
d521ce57 16700 return (const char *) (dwarf2_per_objfile->str.buffer + str_offset);
c906108c
SS
16701}
16702
36586728
TT
16703/* Read a string at offset STR_OFFSET in the .debug_str section from
16704 the .dwz file DWZ. Throw an error if the offset is too large. If
16705 the string consists of a single NUL byte, return NULL; otherwise
16706 return a pointer to the string. */
16707
d521ce57 16708static const char *
36586728
TT
16709read_indirect_string_from_dwz (struct dwz_file *dwz, LONGEST str_offset)
16710{
16711 dwarf2_read_section (dwarf2_per_objfile->objfile, &dwz->str);
16712
16713 if (dwz->str.buffer == NULL)
16714 error (_("DW_FORM_GNU_strp_alt used without .debug_str "
16715 "section [in module %s]"),
16716 bfd_get_filename (dwz->dwz_bfd));
16717 if (str_offset >= dwz->str.size)
16718 error (_("DW_FORM_GNU_strp_alt pointing outside of "
16719 ".debug_str section [in module %s]"),
16720 bfd_get_filename (dwz->dwz_bfd));
16721 gdb_assert (HOST_CHAR_BIT == 8);
16722 if (dwz->str.buffer[str_offset] == '\0')
16723 return NULL;
d521ce57 16724 return (const char *) (dwz->str.buffer + str_offset);
36586728
TT
16725}
16726
d521ce57
TT
16727static const char *
16728read_indirect_string (bfd *abfd, const gdb_byte *buf,
cf2c3c16
TT
16729 const struct comp_unit_head *cu_header,
16730 unsigned int *bytes_read_ptr)
16731{
16732 LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
16733
16734 return read_indirect_string_at_offset (abfd, str_offset);
16735}
16736
12df843f 16737static ULONGEST
d521ce57
TT
16738read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
16739 unsigned int *bytes_read_ptr)
c906108c 16740{
12df843f 16741 ULONGEST result;
ce5d95e1 16742 unsigned int num_read;
c906108c
SS
16743 int i, shift;
16744 unsigned char byte;
16745
16746 result = 0;
16747 shift = 0;
16748 num_read = 0;
16749 i = 0;
16750 while (1)
16751 {
fe1b8b76 16752 byte = bfd_get_8 (abfd, buf);
c906108c
SS
16753 buf++;
16754 num_read++;
12df843f 16755 result |= ((ULONGEST) (byte & 127) << shift);
c906108c
SS
16756 if ((byte & 128) == 0)
16757 {
16758 break;
16759 }
16760 shift += 7;
16761 }
16762 *bytes_read_ptr = num_read;
16763 return result;
16764}
16765
12df843f 16766static LONGEST
d521ce57
TT
16767read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
16768 unsigned int *bytes_read_ptr)
c906108c 16769{
12df843f 16770 LONGEST result;
77e0b926 16771 int i, shift, num_read;
c906108c
SS
16772 unsigned char byte;
16773
16774 result = 0;
16775 shift = 0;
c906108c
SS
16776 num_read = 0;
16777 i = 0;
16778 while (1)
16779 {
fe1b8b76 16780 byte = bfd_get_8 (abfd, buf);
c906108c
SS
16781 buf++;
16782 num_read++;
12df843f 16783 result |= ((LONGEST) (byte & 127) << shift);
c906108c
SS
16784 shift += 7;
16785 if ((byte & 128) == 0)
16786 {
16787 break;
16788 }
16789 }
77e0b926 16790 if ((shift < 8 * sizeof (result)) && (byte & 0x40))
12df843f 16791 result |= -(((LONGEST) 1) << shift);
c906108c
SS
16792 *bytes_read_ptr = num_read;
16793 return result;
16794}
16795
3019eac3
DE
16796/* Given index ADDR_INDEX in .debug_addr, fetch the value.
16797 ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
16798 ADDR_SIZE is the size of addresses from the CU header. */
16799
16800static CORE_ADDR
16801read_addr_index_1 (unsigned int addr_index, ULONGEST addr_base, int addr_size)
16802{
16803 struct objfile *objfile = dwarf2_per_objfile->objfile;
16804 bfd *abfd = objfile->obfd;
16805 const gdb_byte *info_ptr;
16806
16807 dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
16808 if (dwarf2_per_objfile->addr.buffer == NULL)
16809 error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
4262abfb 16810 objfile_name (objfile));
3019eac3
DE
16811 if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
16812 error (_("DW_FORM_addr_index pointing outside of "
16813 ".debug_addr section [in module %s]"),
4262abfb 16814 objfile_name (objfile));
3019eac3
DE
16815 info_ptr = (dwarf2_per_objfile->addr.buffer
16816 + addr_base + addr_index * addr_size);
16817 if (addr_size == 4)
16818 return bfd_get_32 (abfd, info_ptr);
16819 else
16820 return bfd_get_64 (abfd, info_ptr);
16821}
16822
16823/* Given index ADDR_INDEX in .debug_addr, fetch the value. */
16824
16825static CORE_ADDR
16826read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
16827{
16828 return read_addr_index_1 (addr_index, cu->addr_base, cu->header.addr_size);
16829}
16830
16831/* Given a pointer to an leb128 value, fetch the value from .debug_addr. */
16832
16833static CORE_ADDR
d521ce57 16834read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
3019eac3
DE
16835 unsigned int *bytes_read)
16836{
16837 bfd *abfd = cu->objfile->obfd;
16838 unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
16839
16840 return read_addr_index (cu, addr_index);
16841}
16842
16843/* Data structure to pass results from dwarf2_read_addr_index_reader
16844 back to dwarf2_read_addr_index. */
16845
16846struct dwarf2_read_addr_index_data
16847{
16848 ULONGEST addr_base;
16849 int addr_size;
16850};
16851
16852/* die_reader_func for dwarf2_read_addr_index. */
16853
16854static void
16855dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
d521ce57 16856 const gdb_byte *info_ptr,
3019eac3
DE
16857 struct die_info *comp_unit_die,
16858 int has_children,
16859 void *data)
16860{
16861 struct dwarf2_cu *cu = reader->cu;
16862 struct dwarf2_read_addr_index_data *aidata =
16863 (struct dwarf2_read_addr_index_data *) data;
16864
16865 aidata->addr_base = cu->addr_base;
16866 aidata->addr_size = cu->header.addr_size;
16867}
16868
16869/* Given an index in .debug_addr, fetch the value.
16870 NOTE: This can be called during dwarf expression evaluation,
16871 long after the debug information has been read, and thus per_cu->cu
16872 may no longer exist. */
16873
16874CORE_ADDR
16875dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
16876 unsigned int addr_index)
16877{
16878 struct objfile *objfile = per_cu->objfile;
16879 struct dwarf2_cu *cu = per_cu->cu;
16880 ULONGEST addr_base;
16881 int addr_size;
16882
16883 /* This is intended to be called from outside this file. */
16884 dw2_setup (objfile);
16885
16886 /* We need addr_base and addr_size.
16887 If we don't have PER_CU->cu, we have to get it.
16888 Nasty, but the alternative is storing the needed info in PER_CU,
16889 which at this point doesn't seem justified: it's not clear how frequently
16890 it would get used and it would increase the size of every PER_CU.
16891 Entry points like dwarf2_per_cu_addr_size do a similar thing
16892 so we're not in uncharted territory here.
16893 Alas we need to be a bit more complicated as addr_base is contained
16894 in the DIE.
16895
16896 We don't need to read the entire CU(/TU).
16897 We just need the header and top level die.
a1b64ce1 16898
3019eac3 16899 IWBN to use the aging mechanism to let us lazily later discard the CU.
a1b64ce1 16900 For now we skip this optimization. */
3019eac3
DE
16901
16902 if (cu != NULL)
16903 {
16904 addr_base = cu->addr_base;
16905 addr_size = cu->header.addr_size;
16906 }
16907 else
16908 {
16909 struct dwarf2_read_addr_index_data aidata;
16910
a1b64ce1
DE
16911 /* Note: We can't use init_cutu_and_read_dies_simple here,
16912 we need addr_base. */
16913 init_cutu_and_read_dies (per_cu, NULL, 0, 0,
16914 dwarf2_read_addr_index_reader, &aidata);
3019eac3
DE
16915 addr_base = aidata.addr_base;
16916 addr_size = aidata.addr_size;
16917 }
16918
16919 return read_addr_index_1 (addr_index, addr_base, addr_size);
16920}
16921
57d63ce2
DE
16922/* Given a DW_FORM_GNU_str_index, fetch the string.
16923 This is only used by the Fission support. */
3019eac3 16924
d521ce57 16925static const char *
342587c4 16926read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
3019eac3
DE
16927{
16928 struct objfile *objfile = dwarf2_per_objfile->objfile;
c5164cbc 16929 const char *objf_name = objfile_name (objfile);
3019eac3 16930 bfd *abfd = objfile->obfd;
342587c4 16931 struct dwarf2_cu *cu = reader->cu;
73869dc2
DE
16932 struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
16933 struct dwarf2_section_info *str_offsets_section =
16934 &reader->dwo_file->sections.str_offsets;
d521ce57 16935 const gdb_byte *info_ptr;
3019eac3 16936 ULONGEST str_offset;
57d63ce2 16937 static const char form_name[] = "DW_FORM_GNU_str_index";
3019eac3 16938
73869dc2
DE
16939 dwarf2_read_section (objfile, str_section);
16940 dwarf2_read_section (objfile, str_offsets_section);
16941 if (str_section->buffer == NULL)
57d63ce2 16942 error (_("%s used without .debug_str.dwo section"
3019eac3 16943 " in CU at offset 0x%lx [in module %s]"),
c5164cbc 16944 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16945 if (str_offsets_section->buffer == NULL)
57d63ce2 16946 error (_("%s used without .debug_str_offsets.dwo section"
3019eac3 16947 " in CU at offset 0x%lx [in module %s]"),
c5164cbc 16948 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16949 if (str_index * cu->header.offset_size >= str_offsets_section->size)
57d63ce2 16950 error (_("%s pointing outside of .debug_str_offsets.dwo"
3019eac3 16951 " section in CU at offset 0x%lx [in module %s]"),
c5164cbc 16952 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16953 info_ptr = (str_offsets_section->buffer
3019eac3
DE
16954 + str_index * cu->header.offset_size);
16955 if (cu->header.offset_size == 4)
16956 str_offset = bfd_get_32 (abfd, info_ptr);
16957 else
16958 str_offset = bfd_get_64 (abfd, info_ptr);
73869dc2 16959 if (str_offset >= str_section->size)
57d63ce2 16960 error (_("Offset from %s pointing outside of"
3019eac3 16961 " .debug_str.dwo section in CU at offset 0x%lx [in module %s]"),
c5164cbc 16962 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16963 return (const char *) (str_section->buffer + str_offset);
3019eac3
DE
16964}
16965
3019eac3
DE
16966/* Return the length of an LEB128 number in BUF. */
16967
16968static int
16969leb128_size (const gdb_byte *buf)
16970{
16971 const gdb_byte *begin = buf;
16972 gdb_byte byte;
16973
16974 while (1)
16975 {
16976 byte = *buf++;
16977 if ((byte & 128) == 0)
16978 return buf - begin;
16979 }
16980}
16981
c906108c 16982static void
e142c38c 16983set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
c906108c
SS
16984{
16985 switch (lang)
16986 {
16987 case DW_LANG_C89:
76bee0cc 16988 case DW_LANG_C99:
0cfd832f 16989 case DW_LANG_C11:
c906108c 16990 case DW_LANG_C:
d1be3247 16991 case DW_LANG_UPC:
e142c38c 16992 cu->language = language_c;
c906108c
SS
16993 break;
16994 case DW_LANG_C_plus_plus:
0cfd832f
MW
16995 case DW_LANG_C_plus_plus_11:
16996 case DW_LANG_C_plus_plus_14:
e142c38c 16997 cu->language = language_cplus;
c906108c 16998 break;
6aecb9c2
JB
16999 case DW_LANG_D:
17000 cu->language = language_d;
17001 break;
c906108c
SS
17002 case DW_LANG_Fortran77:
17003 case DW_LANG_Fortran90:
b21b22e0 17004 case DW_LANG_Fortran95:
f7de9aab
MW
17005 case DW_LANG_Fortran03:
17006 case DW_LANG_Fortran08:
e142c38c 17007 cu->language = language_fortran;
c906108c 17008 break;
a766d390
DE
17009 case DW_LANG_Go:
17010 cu->language = language_go;
17011 break;
c906108c 17012 case DW_LANG_Mips_Assembler:
e142c38c 17013 cu->language = language_asm;
c906108c 17014 break;
bebd888e 17015 case DW_LANG_Java:
e142c38c 17016 cu->language = language_java;
bebd888e 17017 break;
c906108c 17018 case DW_LANG_Ada83:
8aaf0b47 17019 case DW_LANG_Ada95:
bc5f45f8
JB
17020 cu->language = language_ada;
17021 break;
72019c9c
GM
17022 case DW_LANG_Modula2:
17023 cu->language = language_m2;
17024 break;
fe8e67fd
PM
17025 case DW_LANG_Pascal83:
17026 cu->language = language_pascal;
17027 break;
22566fbd
DJ
17028 case DW_LANG_ObjC:
17029 cu->language = language_objc;
17030 break;
c906108c
SS
17031 case DW_LANG_Cobol74:
17032 case DW_LANG_Cobol85:
c906108c 17033 default:
e142c38c 17034 cu->language = language_minimal;
c906108c
SS
17035 break;
17036 }
e142c38c 17037 cu->language_defn = language_def (cu->language);
c906108c
SS
17038}
17039
17040/* Return the named attribute or NULL if not there. */
17041
17042static struct attribute *
e142c38c 17043dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
c906108c 17044{
a48e046c 17045 for (;;)
c906108c 17046 {
a48e046c
TT
17047 unsigned int i;
17048 struct attribute *spec = NULL;
17049
17050 for (i = 0; i < die->num_attrs; ++i)
17051 {
17052 if (die->attrs[i].name == name)
17053 return &die->attrs[i];
17054 if (die->attrs[i].name == DW_AT_specification
17055 || die->attrs[i].name == DW_AT_abstract_origin)
17056 spec = &die->attrs[i];
17057 }
17058
17059 if (!spec)
17060 break;
c906108c 17061
f2f0e013 17062 die = follow_die_ref (die, spec, &cu);
f2f0e013 17063 }
c5aa993b 17064
c906108c
SS
17065 return NULL;
17066}
17067
348e048f
DE
17068/* Return the named attribute or NULL if not there,
17069 but do not follow DW_AT_specification, etc.
17070 This is for use in contexts where we're reading .debug_types dies.
17071 Following DW_AT_specification, DW_AT_abstract_origin will take us
17072 back up the chain, and we want to go down. */
17073
17074static struct attribute *
45e58e77 17075dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
348e048f
DE
17076{
17077 unsigned int i;
17078
17079 for (i = 0; i < die->num_attrs; ++i)
17080 if (die->attrs[i].name == name)
17081 return &die->attrs[i];
17082
17083 return NULL;
17084}
17085
05cf31d1
JB
17086/* Return non-zero iff the attribute NAME is defined for the given DIE,
17087 and holds a non-zero value. This function should only be used for
2dc7f7b3 17088 DW_FORM_flag or DW_FORM_flag_present attributes. */
05cf31d1
JB
17089
17090static int
17091dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
17092{
17093 struct attribute *attr = dwarf2_attr (die, name, cu);
17094
17095 return (attr && DW_UNSND (attr));
17096}
17097
3ca72b44 17098static int
e142c38c 17099die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
3ca72b44 17100{
05cf31d1
JB
17101 /* A DIE is a declaration if it has a DW_AT_declaration attribute
17102 which value is non-zero. However, we have to be careful with
17103 DIEs having a DW_AT_specification attribute, because dwarf2_attr()
17104 (via dwarf2_flag_true_p) follows this attribute. So we may
17105 end up accidently finding a declaration attribute that belongs
17106 to a different DIE referenced by the specification attribute,
17107 even though the given DIE does not have a declaration attribute. */
17108 return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
17109 && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
3ca72b44
AC
17110}
17111
63d06c5c 17112/* Return the die giving the specification for DIE, if there is
f2f0e013 17113 one. *SPEC_CU is the CU containing DIE on input, and the CU
edb3359d
DJ
17114 containing the return value on output. If there is no
17115 specification, but there is an abstract origin, that is
17116 returned. */
63d06c5c
DC
17117
17118static struct die_info *
f2f0e013 17119die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
63d06c5c 17120{
f2f0e013
DJ
17121 struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
17122 *spec_cu);
63d06c5c 17123
edb3359d
DJ
17124 if (spec_attr == NULL)
17125 spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
17126
63d06c5c
DC
17127 if (spec_attr == NULL)
17128 return NULL;
17129 else
f2f0e013 17130 return follow_die_ref (die, spec_attr, spec_cu);
63d06c5c 17131}
c906108c 17132
debd256d 17133/* Free the line_header structure *LH, and any arrays and strings it
ae2de4f8
DE
17134 refers to.
17135 NOTE: This is also used as a "cleanup" function. */
17136
debd256d
JB
17137static void
17138free_line_header (struct line_header *lh)
17139{
17140 if (lh->standard_opcode_lengths)
a8bc7b56 17141 xfree (lh->standard_opcode_lengths);
debd256d
JB
17142
17143 /* Remember that all the lh->file_names[i].name pointers are
17144 pointers into debug_line_buffer, and don't need to be freed. */
17145 if (lh->file_names)
a8bc7b56 17146 xfree (lh->file_names);
debd256d
JB
17147
17148 /* Similarly for the include directory names. */
17149 if (lh->include_dirs)
a8bc7b56 17150 xfree (lh->include_dirs);
debd256d 17151
a8bc7b56 17152 xfree (lh);
debd256d
JB
17153}
17154
527f3840
JK
17155/* Stub for free_line_header to match void * callback types. */
17156
17157static void
17158free_line_header_voidp (void *arg)
17159{
17160 struct line_header *lh = arg;
17161
17162 free_line_header (lh);
17163}
17164
debd256d 17165/* Add an entry to LH's include directory table. */
ae2de4f8 17166
debd256d 17167static void
d521ce57 17168add_include_dir (struct line_header *lh, const char *include_dir)
c906108c 17169{
27e0867f
DE
17170 if (dwarf_line_debug >= 2)
17171 fprintf_unfiltered (gdb_stdlog, "Adding dir %u: %s\n",
17172 lh->num_include_dirs + 1, include_dir);
17173
debd256d
JB
17174 /* Grow the array if necessary. */
17175 if (lh->include_dirs_size == 0)
c5aa993b 17176 {
debd256d
JB
17177 lh->include_dirs_size = 1; /* for testing */
17178 lh->include_dirs = xmalloc (lh->include_dirs_size
17179 * sizeof (*lh->include_dirs));
17180 }
17181 else if (lh->num_include_dirs >= lh->include_dirs_size)
17182 {
17183 lh->include_dirs_size *= 2;
17184 lh->include_dirs = xrealloc (lh->include_dirs,
17185 (lh->include_dirs_size
17186 * sizeof (*lh->include_dirs)));
c5aa993b 17187 }
c906108c 17188
debd256d
JB
17189 lh->include_dirs[lh->num_include_dirs++] = include_dir;
17190}
6e70227d 17191
debd256d 17192/* Add an entry to LH's file name table. */
ae2de4f8 17193
debd256d
JB
17194static void
17195add_file_name (struct line_header *lh,
d521ce57 17196 const char *name,
debd256d
JB
17197 unsigned int dir_index,
17198 unsigned int mod_time,
17199 unsigned int length)
17200{
17201 struct file_entry *fe;
17202
27e0867f
DE
17203 if (dwarf_line_debug >= 2)
17204 fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
17205 lh->num_file_names + 1, name);
17206
debd256d
JB
17207 /* Grow the array if necessary. */
17208 if (lh->file_names_size == 0)
17209 {
17210 lh->file_names_size = 1; /* for testing */
17211 lh->file_names = xmalloc (lh->file_names_size
17212 * sizeof (*lh->file_names));
17213 }
17214 else if (lh->num_file_names >= lh->file_names_size)
17215 {
17216 lh->file_names_size *= 2;
17217 lh->file_names = xrealloc (lh->file_names,
17218 (lh->file_names_size
17219 * sizeof (*lh->file_names)));
17220 }
17221
17222 fe = &lh->file_names[lh->num_file_names++];
17223 fe->name = name;
17224 fe->dir_index = dir_index;
17225 fe->mod_time = mod_time;
17226 fe->length = length;
aaa75496 17227 fe->included_p = 0;
cb1df416 17228 fe->symtab = NULL;
debd256d 17229}
6e70227d 17230
83769d0b 17231/* A convenience function to find the proper .debug_line section for a CU. */
36586728
TT
17232
17233static struct dwarf2_section_info *
17234get_debug_line_section (struct dwarf2_cu *cu)
17235{
17236 struct dwarf2_section_info *section;
17237
17238 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
17239 DWO file. */
17240 if (cu->dwo_unit && cu->per_cu->is_debug_types)
17241 section = &cu->dwo_unit->dwo_file->sections.line;
17242 else if (cu->per_cu->is_dwz)
17243 {
17244 struct dwz_file *dwz = dwarf2_get_dwz_file ();
17245
17246 section = &dwz->line;
17247 }
17248 else
17249 section = &dwarf2_per_objfile->line;
17250
17251 return section;
17252}
17253
debd256d 17254/* Read the statement program header starting at OFFSET in
3019eac3 17255 .debug_line, or .debug_line.dwo. Return a pointer
6502dd73 17256 to a struct line_header, allocated using xmalloc.
cd366ee8
DE
17257 Returns NULL if there is a problem reading the header, e.g., if it
17258 has a version we don't understand.
debd256d
JB
17259
17260 NOTE: the strings in the include directory and file name tables of
3019eac3
DE
17261 the returned object point into the dwarf line section buffer,
17262 and must not be freed. */
ae2de4f8 17263
debd256d 17264static struct line_header *
3019eac3 17265dwarf_decode_line_header (unsigned int offset, struct dwarf2_cu *cu)
debd256d
JB
17266{
17267 struct cleanup *back_to;
17268 struct line_header *lh;
d521ce57 17269 const gdb_byte *line_ptr;
c764a876 17270 unsigned int bytes_read, offset_size;
debd256d 17271 int i;
d521ce57 17272 const char *cur_dir, *cur_file;
3019eac3
DE
17273 struct dwarf2_section_info *section;
17274 bfd *abfd;
17275
36586728 17276 section = get_debug_line_section (cu);
3019eac3
DE
17277 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
17278 if (section->buffer == NULL)
debd256d 17279 {
3019eac3
DE
17280 if (cu->dwo_unit && cu->per_cu->is_debug_types)
17281 complaint (&symfile_complaints, _("missing .debug_line.dwo section"));
17282 else
17283 complaint (&symfile_complaints, _("missing .debug_line section"));
debd256d
JB
17284 return 0;
17285 }
17286
fceca515
DE
17287 /* We can't do this until we know the section is non-empty.
17288 Only then do we know we have such a section. */
a32a8923 17289 abfd = get_section_bfd_owner (section);
fceca515 17290
a738430d
MK
17291 /* Make sure that at least there's room for the total_length field.
17292 That could be 12 bytes long, but we're just going to fudge that. */
3019eac3 17293 if (offset + 4 >= section->size)
debd256d 17294 {
4d3c2250 17295 dwarf2_statement_list_fits_in_line_number_section_complaint ();
debd256d
JB
17296 return 0;
17297 }
17298
17299 lh = xmalloc (sizeof (*lh));
17300 memset (lh, 0, sizeof (*lh));
17301 back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
17302 (void *) lh);
17303
527f3840
JK
17304 lh->offset.sect_off = offset;
17305 lh->offset_in_dwz = cu->per_cu->is_dwz;
17306
3019eac3 17307 line_ptr = section->buffer + offset;
debd256d 17308
a738430d 17309 /* Read in the header. */
6e70227d 17310 lh->total_length =
c764a876
DE
17311 read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
17312 &bytes_read, &offset_size);
debd256d 17313 line_ptr += bytes_read;
3019eac3 17314 if (line_ptr + lh->total_length > (section->buffer + section->size))
debd256d 17315 {
4d3c2250 17316 dwarf2_statement_list_fits_in_line_number_section_complaint ();
2f324bf6 17317 do_cleanups (back_to);
debd256d
JB
17318 return 0;
17319 }
17320 lh->statement_program_end = line_ptr + lh->total_length;
17321 lh->version = read_2_bytes (abfd, line_ptr);
17322 line_ptr += 2;
cd366ee8
DE
17323 if (lh->version > 4)
17324 {
17325 /* This is a version we don't understand. The format could have
17326 changed in ways we don't handle properly so just punt. */
17327 complaint (&symfile_complaints,
17328 _("unsupported version in .debug_line section"));
17329 return NULL;
17330 }
c764a876
DE
17331 lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
17332 line_ptr += offset_size;
debd256d
JB
17333 lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
17334 line_ptr += 1;
2dc7f7b3
TT
17335 if (lh->version >= 4)
17336 {
17337 lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
17338 line_ptr += 1;
17339 }
17340 else
17341 lh->maximum_ops_per_instruction = 1;
17342
17343 if (lh->maximum_ops_per_instruction == 0)
17344 {
17345 lh->maximum_ops_per_instruction = 1;
17346 complaint (&symfile_complaints,
3e43a32a
MS
17347 _("invalid maximum_ops_per_instruction "
17348 "in `.debug_line' section"));
2dc7f7b3
TT
17349 }
17350
debd256d
JB
17351 lh->default_is_stmt = read_1_byte (abfd, line_ptr);
17352 line_ptr += 1;
17353 lh->line_base = read_1_signed_byte (abfd, line_ptr);
17354 line_ptr += 1;
17355 lh->line_range = read_1_byte (abfd, line_ptr);
17356 line_ptr += 1;
17357 lh->opcode_base = read_1_byte (abfd, line_ptr);
17358 line_ptr += 1;
17359 lh->standard_opcode_lengths
fe1b8b76 17360 = xmalloc (lh->opcode_base * sizeof (lh->standard_opcode_lengths[0]));
debd256d
JB
17361
17362 lh->standard_opcode_lengths[0] = 1; /* This should never be used anyway. */
17363 for (i = 1; i < lh->opcode_base; ++i)
17364 {
17365 lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
17366 line_ptr += 1;
17367 }
17368
a738430d 17369 /* Read directory table. */
9b1c24c8 17370 while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
debd256d
JB
17371 {
17372 line_ptr += bytes_read;
17373 add_include_dir (lh, cur_dir);
17374 }
17375 line_ptr += bytes_read;
17376
a738430d 17377 /* Read file name table. */
9b1c24c8 17378 while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
debd256d
JB
17379 {
17380 unsigned int dir_index, mod_time, length;
17381
17382 line_ptr += bytes_read;
17383 dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17384 line_ptr += bytes_read;
17385 mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17386 line_ptr += bytes_read;
17387 length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17388 line_ptr += bytes_read;
17389
17390 add_file_name (lh, cur_file, dir_index, mod_time, length);
17391 }
17392 line_ptr += bytes_read;
6e70227d 17393 lh->statement_program_start = line_ptr;
debd256d 17394
3019eac3 17395 if (line_ptr > (section->buffer + section->size))
4d3c2250 17396 complaint (&symfile_complaints,
3e43a32a
MS
17397 _("line number info header doesn't "
17398 "fit in `.debug_line' section"));
debd256d
JB
17399
17400 discard_cleanups (back_to);
17401 return lh;
17402}
c906108c 17403
c6da4cef
DE
17404/* Subroutine of dwarf_decode_lines to simplify it.
17405 Return the file name of the psymtab for included file FILE_INDEX
17406 in line header LH of PST.
17407 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
17408 If space for the result is malloc'd, it will be freed by a cleanup.
1ed59174
JK
17409 Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.
17410
17411 The function creates dangling cleanup registration. */
c6da4cef 17412
d521ce57 17413static const char *
c6da4cef
DE
17414psymtab_include_file_name (const struct line_header *lh, int file_index,
17415 const struct partial_symtab *pst,
17416 const char *comp_dir)
17417{
17418 const struct file_entry fe = lh->file_names [file_index];
d521ce57
TT
17419 const char *include_name = fe.name;
17420 const char *include_name_to_compare = include_name;
17421 const char *dir_name = NULL;
72b9f47f
TT
17422 const char *pst_filename;
17423 char *copied_name = NULL;
c6da4cef
DE
17424 int file_is_pst;
17425
afa6c9ab 17426 if (fe.dir_index && lh->include_dirs != NULL)
c6da4cef
DE
17427 dir_name = lh->include_dirs[fe.dir_index - 1];
17428
17429 if (!IS_ABSOLUTE_PATH (include_name)
17430 && (dir_name != NULL || comp_dir != NULL))
17431 {
17432 /* Avoid creating a duplicate psymtab for PST.
17433 We do this by comparing INCLUDE_NAME and PST_FILENAME.
17434 Before we do the comparison, however, we need to account
17435 for DIR_NAME and COMP_DIR.
17436 First prepend dir_name (if non-NULL). If we still don't
17437 have an absolute path prepend comp_dir (if non-NULL).
17438 However, the directory we record in the include-file's
17439 psymtab does not contain COMP_DIR (to match the
17440 corresponding symtab(s)).
17441
17442 Example:
17443
17444 bash$ cd /tmp
17445 bash$ gcc -g ./hello.c
17446 include_name = "hello.c"
17447 dir_name = "."
17448 DW_AT_comp_dir = comp_dir = "/tmp"
5f52445b
YQ
17449 DW_AT_name = "./hello.c"
17450
17451 */
c6da4cef
DE
17452
17453 if (dir_name != NULL)
17454 {
d521ce57
TT
17455 char *tem = concat (dir_name, SLASH_STRING,
17456 include_name, (char *)NULL);
17457
17458 make_cleanup (xfree, tem);
17459 include_name = tem;
c6da4cef 17460 include_name_to_compare = include_name;
c6da4cef
DE
17461 }
17462 if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
17463 {
d521ce57
TT
17464 char *tem = concat (comp_dir, SLASH_STRING,
17465 include_name, (char *)NULL);
17466
17467 make_cleanup (xfree, tem);
17468 include_name_to_compare = tem;
c6da4cef
DE
17469 }
17470 }
17471
17472 pst_filename = pst->filename;
17473 if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
17474 {
72b9f47f
TT
17475 copied_name = concat (pst->dirname, SLASH_STRING,
17476 pst_filename, (char *)NULL);
17477 pst_filename = copied_name;
c6da4cef
DE
17478 }
17479
1e3fad37 17480 file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
c6da4cef 17481
72b9f47f
TT
17482 if (copied_name != NULL)
17483 xfree (copied_name);
c6da4cef
DE
17484
17485 if (file_is_pst)
17486 return NULL;
17487 return include_name;
17488}
17489
d9b3de22
DE
17490/* State machine to track the state of the line number program. */
17491
17492typedef struct
17493{
17494 /* These are part of the standard DWARF line number state machine. */
17495
17496 unsigned char op_index;
17497 unsigned int file;
17498 unsigned int line;
17499 CORE_ADDR address;
17500 int is_stmt;
17501 unsigned int discriminator;
17502
17503 /* Additional bits of state we need to track. */
17504
17505 /* The last file that we called dwarf2_start_subfile for.
17506 This is only used for TLLs. */
17507 unsigned int last_file;
17508 /* The last file a line number was recorded for. */
17509 struct subfile *last_subfile;
17510
17511 /* The function to call to record a line. */
17512 record_line_ftype *record_line;
17513
17514 /* The last line number that was recorded, used to coalesce
17515 consecutive entries for the same line. This can happen, for
17516 example, when discriminators are present. PR 17276. */
17517 unsigned int last_line;
17518 int line_has_non_zero_discriminator;
17519} lnp_state_machine;
17520
17521/* There's a lot of static state to pass to dwarf_record_line.
17522 This keeps it all together. */
17523
17524typedef struct
17525{
17526 /* The gdbarch. */
17527 struct gdbarch *gdbarch;
17528
17529 /* The line number header. */
17530 struct line_header *line_header;
17531
17532 /* Non-zero if we're recording lines.
17533 Otherwise we're building partial symtabs and are just interested in
17534 finding include files mentioned by the line number program. */
17535 int record_lines_p;
17536} lnp_reader_state;
17537
c91513d8
PP
17538/* Ignore this record_line request. */
17539
17540static void
17541noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
17542{
17543 return;
17544}
17545
a05a36a5
DE
17546/* Return non-zero if we should add LINE to the line number table.
17547 LINE is the line to add, LAST_LINE is the last line that was added,
17548 LAST_SUBFILE is the subfile for LAST_LINE.
17549 LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
17550 had a non-zero discriminator.
17551
17552 We have to be careful in the presence of discriminators.
17553 E.g., for this line:
17554
17555 for (i = 0; i < 100000; i++);
17556
17557 clang can emit four line number entries for that one line,
17558 each with a different discriminator.
17559 See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
17560
17561 However, we want gdb to coalesce all four entries into one.
17562 Otherwise the user could stepi into the middle of the line and
17563 gdb would get confused about whether the pc really was in the
17564 middle of the line.
17565
17566 Things are further complicated by the fact that two consecutive
17567 line number entries for the same line is a heuristic used by gcc
17568 to denote the end of the prologue. So we can't just discard duplicate
17569 entries, we have to be selective about it. The heuristic we use is
17570 that we only collapse consecutive entries for the same line if at least
17571 one of those entries has a non-zero discriminator. PR 17276.
17572
17573 Note: Addresses in the line number state machine can never go backwards
17574 within one sequence, thus this coalescing is ok. */
17575
17576static int
17577dwarf_record_line_p (unsigned int line, unsigned int last_line,
17578 int line_has_non_zero_discriminator,
17579 struct subfile *last_subfile)
17580{
17581 if (current_subfile != last_subfile)
17582 return 1;
17583 if (line != last_line)
17584 return 1;
17585 /* Same line for the same file that we've seen already.
17586 As a last check, for pr 17276, only record the line if the line
17587 has never had a non-zero discriminator. */
17588 if (!line_has_non_zero_discriminator)
17589 return 1;
17590 return 0;
17591}
17592
252a6764
DE
17593/* Use P_RECORD_LINE to record line number LINE beginning at address ADDRESS
17594 in the line table of subfile SUBFILE. */
17595
17596static void
d9b3de22
DE
17597dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
17598 unsigned int line, CORE_ADDR address,
17599 record_line_ftype p_record_line)
252a6764
DE
17600{
17601 CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
17602
27e0867f
DE
17603 if (dwarf_line_debug)
17604 {
17605 fprintf_unfiltered (gdb_stdlog,
17606 "Recording line %u, file %s, address %s\n",
17607 line, lbasename (subfile->name),
17608 paddress (gdbarch, address));
17609 }
17610
d5962de5 17611 (*p_record_line) (subfile, line, addr);
252a6764
DE
17612}
17613
17614/* Subroutine of dwarf_decode_lines_1 to simplify it.
17615 Mark the end of a set of line number records.
d9b3de22 17616 The arguments are the same as for dwarf_record_line_1.
252a6764
DE
17617 If SUBFILE is NULL the request is ignored. */
17618
17619static void
17620dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
17621 CORE_ADDR address, record_line_ftype p_record_line)
17622{
27e0867f
DE
17623 if (subfile == NULL)
17624 return;
17625
17626 if (dwarf_line_debug)
17627 {
17628 fprintf_unfiltered (gdb_stdlog,
17629 "Finishing current line, file %s, address %s\n",
17630 lbasename (subfile->name),
17631 paddress (gdbarch, address));
17632 }
17633
d9b3de22
DE
17634 dwarf_record_line_1 (gdbarch, subfile, 0, address, p_record_line);
17635}
17636
17637/* Record the line in STATE.
17638 END_SEQUENCE is non-zero if we're processing the end of a sequence. */
17639
17640static void
17641dwarf_record_line (lnp_reader_state *reader, lnp_state_machine *state,
17642 int end_sequence)
17643{
17644 const struct line_header *lh = reader->line_header;
17645 unsigned int file, line, discriminator;
17646 int is_stmt;
17647
17648 file = state->file;
17649 line = state->line;
17650 is_stmt = state->is_stmt;
17651 discriminator = state->discriminator;
17652
17653 if (dwarf_line_debug)
17654 {
17655 fprintf_unfiltered (gdb_stdlog,
17656 "Processing actual line %u: file %u,"
17657 " address %s, is_stmt %u, discrim %u\n",
17658 line, file,
17659 paddress (reader->gdbarch, state->address),
17660 is_stmt, discriminator);
17661 }
17662
17663 if (file == 0 || file - 1 >= lh->num_file_names)
17664 dwarf2_debug_line_missing_file_complaint ();
17665 /* For now we ignore lines not starting on an instruction boundary.
17666 But not when processing end_sequence for compatibility with the
17667 previous version of the code. */
17668 else if (state->op_index == 0 || end_sequence)
17669 {
17670 lh->file_names[file - 1].included_p = 1;
17671 if (reader->record_lines_p && is_stmt)
17672 {
e815d2d2 17673 if (state->last_subfile != current_subfile || end_sequence)
d9b3de22
DE
17674 {
17675 dwarf_finish_line (reader->gdbarch, state->last_subfile,
17676 state->address, state->record_line);
17677 }
17678
17679 if (!end_sequence)
17680 {
17681 if (dwarf_record_line_p (line, state->last_line,
17682 state->line_has_non_zero_discriminator,
17683 state->last_subfile))
17684 {
17685 dwarf_record_line_1 (reader->gdbarch, current_subfile,
17686 line, state->address,
17687 state->record_line);
17688 }
17689 state->last_subfile = current_subfile;
17690 state->last_line = line;
17691 }
17692 }
17693 }
17694}
17695
17696/* Initialize STATE for the start of a line number program. */
17697
17698static void
17699init_lnp_state_machine (lnp_state_machine *state,
17700 const lnp_reader_state *reader)
17701{
17702 memset (state, 0, sizeof (*state));
17703
17704 /* Just starting, there is no "last file". */
17705 state->last_file = 0;
17706 state->last_subfile = NULL;
17707
17708 state->record_line = record_line;
17709
17710 state->last_line = 0;
17711 state->line_has_non_zero_discriminator = 0;
17712
17713 /* Initialize these according to the DWARF spec. */
17714 state->op_index = 0;
17715 state->file = 1;
17716 state->line = 1;
17717 /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
17718 was a line entry for it so that the backend has a chance to adjust it
17719 and also record it in case it needs it. This is currently used by MIPS
17720 code, cf. `mips_adjust_dwarf2_line'. */
17721 state->address = gdbarch_adjust_dwarf2_line (reader->gdbarch, 0, 0);
17722 state->is_stmt = reader->line_header->default_is_stmt;
17723 state->discriminator = 0;
252a6764
DE
17724}
17725
924c2928
DE
17726/* Check address and if invalid nop-out the rest of the lines in this
17727 sequence. */
17728
17729static void
d9b3de22 17730check_line_address (struct dwarf2_cu *cu, lnp_state_machine *state,
924c2928
DE
17731 const gdb_byte *line_ptr,
17732 CORE_ADDR lowpc, CORE_ADDR address)
17733{
17734 /* If address < lowpc then it's not a usable value, it's outside the
17735 pc range of the CU. However, we restrict the test to only address
17736 values of zero to preserve GDB's previous behaviour which is to
17737 handle the specific case of a function being GC'd by the linker. */
17738
17739 if (address == 0 && address < lowpc)
17740 {
17741 /* This line table is for a function which has been
17742 GCd by the linker. Ignore it. PR gdb/12528 */
17743
17744 struct objfile *objfile = cu->objfile;
17745 long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
17746
17747 complaint (&symfile_complaints,
17748 _(".debug_line address at offset 0x%lx is 0 [in module %s]"),
17749 line_offset, objfile_name (objfile));
d9b3de22
DE
17750 state->record_line = noop_record_line;
17751 /* Note: sm.record_line is left as noop_record_line
924c2928
DE
17752 until we see DW_LNE_end_sequence. */
17753 }
17754}
17755
f3f5162e 17756/* Subroutine of dwarf_decode_lines to simplify it.
d9b3de22
DE
17757 Process the line number information in LH.
17758 If DECODE_FOR_PST_P is non-zero, all we do is process the line number
17759 program in order to set included_p for every referenced header. */
debd256d 17760
c906108c 17761static void
43f3e411
DE
17762dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
17763 const int decode_for_pst_p, CORE_ADDR lowpc)
c906108c 17764{
d521ce57
TT
17765 const gdb_byte *line_ptr, *extended_end;
17766 const gdb_byte *line_end;
a8c50c1f 17767 unsigned int bytes_read, extended_len;
699ca60a 17768 unsigned char op_code, extended_op;
e142c38c
DJ
17769 CORE_ADDR baseaddr;
17770 struct objfile *objfile = cu->objfile;
f3f5162e 17771 bfd *abfd = objfile->obfd;
fbf65064 17772 struct gdbarch *gdbarch = get_objfile_arch (objfile);
d9b3de22
DE
17773 /* Non-zero if we're recording line info (as opposed to building partial
17774 symtabs). */
17775 int record_lines_p = !decode_for_pst_p;
17776 /* A collection of things we need to pass to dwarf_record_line. */
17777 lnp_reader_state reader_state;
e142c38c
DJ
17778
17779 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 17780
debd256d
JB
17781 line_ptr = lh->statement_program_start;
17782 line_end = lh->statement_program_end;
c906108c 17783
d9b3de22
DE
17784 reader_state.gdbarch = gdbarch;
17785 reader_state.line_header = lh;
17786 reader_state.record_lines_p = record_lines_p;
17787
c906108c
SS
17788 /* Read the statement sequences until there's nothing left. */
17789 while (line_ptr < line_end)
17790 {
d9b3de22
DE
17791 /* The DWARF line number program state machine. */
17792 lnp_state_machine state_machine;
c906108c 17793 int end_sequence = 0;
d9b3de22
DE
17794
17795 /* Reset the state machine at the start of each sequence. */
17796 init_lnp_state_machine (&state_machine, &reader_state);
17797
17798 if (record_lines_p && lh->num_file_names >= state_machine.file)
c906108c 17799 {
aaa75496 17800 /* Start a subfile for the current file of the state machine. */
debd256d
JB
17801 /* lh->include_dirs and lh->file_names are 0-based, but the
17802 directory and file name numbers in the statement program
17803 are 1-based. */
d9b3de22 17804 struct file_entry *fe = &lh->file_names[state_machine.file - 1];
d521ce57 17805 const char *dir = NULL;
a738430d 17806
afa6c9ab 17807 if (fe->dir_index && lh->include_dirs != NULL)
debd256d 17808 dir = lh->include_dirs[fe->dir_index - 1];
4f1520fb 17809
4d663531 17810 dwarf2_start_subfile (fe->name, dir);
c906108c
SS
17811 }
17812
a738430d 17813 /* Decode the table. */
d9b3de22 17814 while (line_ptr < line_end && !end_sequence)
c906108c
SS
17815 {
17816 op_code = read_1_byte (abfd, line_ptr);
17817 line_ptr += 1;
9aa1fe7e 17818
debd256d 17819 if (op_code >= lh->opcode_base)
6e70227d 17820 {
8e07a239 17821 /* Special opcode. */
699ca60a 17822 unsigned char adj_opcode;
3e29f34a 17823 CORE_ADDR addr_adj;
a05a36a5 17824 int line_delta;
8e07a239 17825
debd256d 17826 adj_opcode = op_code - lh->opcode_base;
d9b3de22
DE
17827 addr_adj = (((state_machine.op_index
17828 + (adj_opcode / lh->line_range))
2dc7f7b3
TT
17829 / lh->maximum_ops_per_instruction)
17830 * lh->minimum_instruction_length);
d9b3de22
DE
17831 state_machine.address
17832 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17833 state_machine.op_index = ((state_machine.op_index
17834 + (adj_opcode / lh->line_range))
17835 % lh->maximum_ops_per_instruction);
a05a36a5 17836 line_delta = lh->line_base + (adj_opcode % lh->line_range);
d9b3de22 17837 state_machine.line += line_delta;
a05a36a5 17838 if (line_delta != 0)
d9b3de22
DE
17839 state_machine.line_has_non_zero_discriminator
17840 = state_machine.discriminator != 0;
17841
17842 dwarf_record_line (&reader_state, &state_machine, 0);
17843 state_machine.discriminator = 0;
9aa1fe7e
GK
17844 }
17845 else switch (op_code)
c906108c
SS
17846 {
17847 case DW_LNS_extended_op:
3e43a32a
MS
17848 extended_len = read_unsigned_leb128 (abfd, line_ptr,
17849 &bytes_read);
473b7be6 17850 line_ptr += bytes_read;
a8c50c1f 17851 extended_end = line_ptr + extended_len;
c906108c
SS
17852 extended_op = read_1_byte (abfd, line_ptr);
17853 line_ptr += 1;
17854 switch (extended_op)
17855 {
17856 case DW_LNE_end_sequence:
d9b3de22 17857 state_machine.record_line = record_line;
c906108c 17858 end_sequence = 1;
c906108c
SS
17859 break;
17860 case DW_LNE_set_address:
d9b3de22
DE
17861 {
17862 CORE_ADDR address
17863 = read_address (abfd, line_ptr, cu, &bytes_read);
17864
17865 line_ptr += bytes_read;
17866 check_line_address (cu, &state_machine, line_ptr,
17867 lowpc, address);
17868 state_machine.op_index = 0;
17869 address += baseaddr;
17870 state_machine.address
17871 = gdbarch_adjust_dwarf2_line (gdbarch, address, 0);
17872 }
c906108c
SS
17873 break;
17874 case DW_LNE_define_file:
debd256d 17875 {
d521ce57 17876 const char *cur_file;
debd256d 17877 unsigned int dir_index, mod_time, length;
6e70227d 17878
3e43a32a
MS
17879 cur_file = read_direct_string (abfd, line_ptr,
17880 &bytes_read);
debd256d
JB
17881 line_ptr += bytes_read;
17882 dir_index =
17883 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17884 line_ptr += bytes_read;
17885 mod_time =
17886 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17887 line_ptr += bytes_read;
17888 length =
17889 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17890 line_ptr += bytes_read;
17891 add_file_name (lh, cur_file, dir_index, mod_time, length);
17892 }
c906108c 17893 break;
d0c6ba3d
CC
17894 case DW_LNE_set_discriminator:
17895 /* The discriminator is not interesting to the debugger;
a05a36a5
DE
17896 just ignore it. We still need to check its value though:
17897 if there are consecutive entries for the same
17898 (non-prologue) line we want to coalesce them.
17899 PR 17276. */
d9b3de22
DE
17900 state_machine.discriminator
17901 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17902 state_machine.line_has_non_zero_discriminator
17903 |= state_machine.discriminator != 0;
a05a36a5 17904 line_ptr += bytes_read;
d0c6ba3d 17905 break;
c906108c 17906 default:
4d3c2250 17907 complaint (&symfile_complaints,
e2e0b3e5 17908 _("mangled .debug_line section"));
debd256d 17909 return;
c906108c 17910 }
a8c50c1f
DJ
17911 /* Make sure that we parsed the extended op correctly. If e.g.
17912 we expected a different address size than the producer used,
17913 we may have read the wrong number of bytes. */
17914 if (line_ptr != extended_end)
17915 {
17916 complaint (&symfile_complaints,
17917 _("mangled .debug_line section"));
17918 return;
17919 }
c906108c
SS
17920 break;
17921 case DW_LNS_copy:
d9b3de22
DE
17922 dwarf_record_line (&reader_state, &state_machine, 0);
17923 state_machine.discriminator = 0;
c906108c
SS
17924 break;
17925 case DW_LNS_advance_pc:
2dc7f7b3
TT
17926 {
17927 CORE_ADDR adjust
17928 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
3e29f34a 17929 CORE_ADDR addr_adj;
2dc7f7b3 17930
d9b3de22 17931 addr_adj = (((state_machine.op_index + adjust)
2dc7f7b3
TT
17932 / lh->maximum_ops_per_instruction)
17933 * lh->minimum_instruction_length);
d9b3de22
DE
17934 state_machine.address
17935 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17936 state_machine.op_index = ((state_machine.op_index + adjust)
17937 % lh->maximum_ops_per_instruction);
2dc7f7b3
TT
17938 line_ptr += bytes_read;
17939 }
c906108c
SS
17940 break;
17941 case DW_LNS_advance_line:
a05a36a5
DE
17942 {
17943 int line_delta
17944 = read_signed_leb128 (abfd, line_ptr, &bytes_read);
17945
d9b3de22 17946 state_machine.line += line_delta;
a05a36a5 17947 if (line_delta != 0)
d9b3de22
DE
17948 state_machine.line_has_non_zero_discriminator
17949 = state_machine.discriminator != 0;
a05a36a5
DE
17950 line_ptr += bytes_read;
17951 }
c906108c
SS
17952 break;
17953 case DW_LNS_set_file:
d9b3de22
DE
17954 {
17955 /* The arrays lh->include_dirs and lh->file_names are
17956 0-based, but the directory and file name numbers in
17957 the statement program are 1-based. */
17958 struct file_entry *fe;
17959 const char *dir = NULL;
17960
17961 state_machine.file = read_unsigned_leb128 (abfd, line_ptr,
17962 &bytes_read);
17963 line_ptr += bytes_read;
17964 if (state_machine.file == 0
17965 || state_machine.file - 1 >= lh->num_file_names)
17966 dwarf2_debug_line_missing_file_complaint ();
17967 else
17968 {
17969 fe = &lh->file_names[state_machine.file - 1];
17970 if (fe->dir_index && lh->include_dirs != NULL)
17971 dir = lh->include_dirs[fe->dir_index - 1];
17972 if (record_lines_p)
17973 {
17974 state_machine.last_subfile = current_subfile;
17975 state_machine.line_has_non_zero_discriminator
17976 = state_machine.discriminator != 0;
17977 dwarf2_start_subfile (fe->name, dir);
17978 }
17979 }
17980 }
c906108c
SS
17981 break;
17982 case DW_LNS_set_column:
0ad93d4f 17983 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
c906108c
SS
17984 line_ptr += bytes_read;
17985 break;
17986 case DW_LNS_negate_stmt:
d9b3de22 17987 state_machine.is_stmt = (!state_machine.is_stmt);
c906108c
SS
17988 break;
17989 case DW_LNS_set_basic_block:
c906108c 17990 break;
c2c6d25f
JM
17991 /* Add to the address register of the state machine the
17992 address increment value corresponding to special opcode
a738430d
MK
17993 255. I.e., this value is scaled by the minimum
17994 instruction length since special opcode 255 would have
b021a221 17995 scaled the increment. */
c906108c 17996 case DW_LNS_const_add_pc:
2dc7f7b3
TT
17997 {
17998 CORE_ADDR adjust = (255 - lh->opcode_base) / lh->line_range;
3e29f34a 17999 CORE_ADDR addr_adj;
2dc7f7b3 18000
d9b3de22 18001 addr_adj = (((state_machine.op_index + adjust)
2dc7f7b3
TT
18002 / lh->maximum_ops_per_instruction)
18003 * lh->minimum_instruction_length);
d9b3de22
DE
18004 state_machine.address
18005 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
18006 state_machine.op_index = ((state_machine.op_index + adjust)
18007 % lh->maximum_ops_per_instruction);
2dc7f7b3 18008 }
c906108c
SS
18009 break;
18010 case DW_LNS_fixed_advance_pc:
3e29f34a
MR
18011 {
18012 CORE_ADDR addr_adj;
18013
18014 addr_adj = read_2_bytes (abfd, line_ptr);
d9b3de22
DE
18015 state_machine.address
18016 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
18017 state_machine.op_index = 0;
3e29f34a
MR
18018 line_ptr += 2;
18019 }
c906108c 18020 break;
9aa1fe7e 18021 default:
a738430d
MK
18022 {
18023 /* Unknown standard opcode, ignore it. */
9aa1fe7e 18024 int i;
a738430d 18025
debd256d 18026 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
9aa1fe7e
GK
18027 {
18028 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
18029 line_ptr += bytes_read;
18030 }
18031 }
c906108c
SS
18032 }
18033 }
d9b3de22
DE
18034
18035 if (!end_sequence)
18036 dwarf2_debug_line_missing_end_sequence_complaint ();
18037
18038 /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
18039 in which case we still finish recording the last line). */
18040 dwarf_record_line (&reader_state, &state_machine, 1);
c906108c 18041 }
f3f5162e
DE
18042}
18043
18044/* Decode the Line Number Program (LNP) for the given line_header
18045 structure and CU. The actual information extracted and the type
18046 of structures created from the LNP depends on the value of PST.
18047
18048 1. If PST is NULL, then this procedure uses the data from the program
18049 to create all necessary symbol tables, and their linetables.
18050
18051 2. If PST is not NULL, this procedure reads the program to determine
18052 the list of files included by the unit represented by PST, and
18053 builds all the associated partial symbol tables.
18054
18055 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
18056 It is used for relative paths in the line table.
18057 NOTE: When processing partial symtabs (pst != NULL),
18058 comp_dir == pst->dirname.
18059
18060 NOTE: It is important that psymtabs have the same file name (via strcmp)
18061 as the corresponding symtab. Since COMP_DIR is not used in the name of the
18062 symtab we don't use it in the name of the psymtabs we create.
18063 E.g. expand_line_sal requires this when finding psymtabs to expand.
c3b7b696
YQ
18064 A good testcase for this is mb-inline.exp.
18065
527f3840
JK
18066 LOWPC is the lowest address in CU (or 0 if not known).
18067
18068 Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
18069 for its PC<->lines mapping information. Otherwise only the filename
18070 table is read in. */
f3f5162e
DE
18071
18072static void
18073dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
c3b7b696 18074 struct dwarf2_cu *cu, struct partial_symtab *pst,
527f3840 18075 CORE_ADDR lowpc, int decode_mapping)
f3f5162e
DE
18076{
18077 struct objfile *objfile = cu->objfile;
18078 const int decode_for_pst_p = (pst != NULL);
f3f5162e 18079
527f3840
JK
18080 if (decode_mapping)
18081 dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
aaa75496
JB
18082
18083 if (decode_for_pst_p)
18084 {
18085 int file_index;
18086
18087 /* Now that we're done scanning the Line Header Program, we can
18088 create the psymtab of each included file. */
18089 for (file_index = 0; file_index < lh->num_file_names; file_index++)
18090 if (lh->file_names[file_index].included_p == 1)
18091 {
d521ce57 18092 const char *include_name =
c6da4cef
DE
18093 psymtab_include_file_name (lh, file_index, pst, comp_dir);
18094 if (include_name != NULL)
aaa75496
JB
18095 dwarf2_create_include_psymtab (include_name, pst, objfile);
18096 }
18097 }
cb1df416
DJ
18098 else
18099 {
18100 /* Make sure a symtab is created for every file, even files
18101 which contain only variables (i.e. no code with associated
18102 line numbers). */
43f3e411 18103 struct compunit_symtab *cust = buildsym_compunit_symtab ();
cb1df416 18104 int i;
cb1df416
DJ
18105
18106 for (i = 0; i < lh->num_file_names; i++)
18107 {
d521ce57 18108 const char *dir = NULL;
f3f5162e 18109 struct file_entry *fe;
9a619af0 18110
cb1df416 18111 fe = &lh->file_names[i];
afa6c9ab 18112 if (fe->dir_index && lh->include_dirs != NULL)
cb1df416 18113 dir = lh->include_dirs[fe->dir_index - 1];
4d663531 18114 dwarf2_start_subfile (fe->name, dir);
cb1df416 18115
cb1df416 18116 if (current_subfile->symtab == NULL)
43f3e411
DE
18117 {
18118 current_subfile->symtab
18119 = allocate_symtab (cust, current_subfile->name);
18120 }
cb1df416
DJ
18121 fe->symtab = current_subfile->symtab;
18122 }
18123 }
c906108c
SS
18124}
18125
18126/* Start a subfile for DWARF. FILENAME is the name of the file and
18127 DIRNAME the name of the source directory which contains FILENAME
4d663531 18128 or NULL if not known.
c906108c
SS
18129 This routine tries to keep line numbers from identical absolute and
18130 relative file names in a common subfile.
18131
18132 Using the `list' example from the GDB testsuite, which resides in
18133 /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
18134 of /srcdir/list0.c yields the following debugging information for list0.c:
18135
c5aa993b 18136 DW_AT_name: /srcdir/list0.c
4d663531 18137 DW_AT_comp_dir: /compdir
357e46e7 18138 files.files[0].name: list0.h
c5aa993b 18139 files.files[0].dir: /srcdir
357e46e7 18140 files.files[1].name: list0.c
c5aa993b 18141 files.files[1].dir: /srcdir
c906108c
SS
18142
18143 The line number information for list0.c has to end up in a single
4f1520fb
FR
18144 subfile, so that `break /srcdir/list0.c:1' works as expected.
18145 start_subfile will ensure that this happens provided that we pass the
18146 concatenation of files.files[1].dir and files.files[1].name as the
18147 subfile's name. */
c906108c
SS
18148
18149static void
4d663531 18150dwarf2_start_subfile (const char *filename, const char *dirname)
c906108c 18151{
d521ce57 18152 char *copy = NULL;
4f1520fb 18153
4d663531 18154 /* In order not to lose the line information directory,
4f1520fb
FR
18155 we concatenate it to the filename when it makes sense.
18156 Note that the Dwarf3 standard says (speaking of filenames in line
18157 information): ``The directory index is ignored for file names
18158 that represent full path names''. Thus ignoring dirname in the
18159 `else' branch below isn't an issue. */
c906108c 18160
d5166ae1 18161 if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
d521ce57
TT
18162 {
18163 copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
18164 filename = copy;
18165 }
c906108c 18166
4d663531 18167 start_subfile (filename);
4f1520fb 18168
d521ce57
TT
18169 if (copy != NULL)
18170 xfree (copy);
c906108c
SS
18171}
18172
f4dc4d17
DE
18173/* Start a symtab for DWARF.
18174 NAME, COMP_DIR, LOW_PC are passed to start_symtab. */
18175
43f3e411 18176static struct compunit_symtab *
f4dc4d17 18177dwarf2_start_symtab (struct dwarf2_cu *cu,
15d034d0 18178 const char *name, const char *comp_dir, CORE_ADDR low_pc)
f4dc4d17 18179{
43f3e411
DE
18180 struct compunit_symtab *cust
18181 = start_symtab (cu->objfile, name, comp_dir, low_pc);
18182
f4dc4d17
DE
18183 record_debugformat ("DWARF 2");
18184 record_producer (cu->producer);
18185
18186 /* We assume that we're processing GCC output. */
18187 processing_gcc_compilation = 2;
18188
4d4ec4e5 18189 cu->processing_has_namespace_info = 0;
43f3e411
DE
18190
18191 return cust;
f4dc4d17
DE
18192}
18193
4c2df51b
DJ
18194static void
18195var_decode_location (struct attribute *attr, struct symbol *sym,
e7c27a73 18196 struct dwarf2_cu *cu)
4c2df51b 18197{
e7c27a73
DJ
18198 struct objfile *objfile = cu->objfile;
18199 struct comp_unit_head *cu_header = &cu->header;
18200
4c2df51b
DJ
18201 /* NOTE drow/2003-01-30: There used to be a comment and some special
18202 code here to turn a symbol with DW_AT_external and a
18203 SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol. This was
18204 necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
18205 with some versions of binutils) where shared libraries could have
18206 relocations against symbols in their debug information - the
18207 minimal symbol would have the right address, but the debug info
18208 would not. It's no longer necessary, because we will explicitly
18209 apply relocations when we read in the debug information now. */
18210
18211 /* A DW_AT_location attribute with no contents indicates that a
18212 variable has been optimized away. */
18213 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
18214 {
f1e6e072 18215 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
4c2df51b
DJ
18216 return;
18217 }
18218
18219 /* Handle one degenerate form of location expression specially, to
18220 preserve GDB's previous behavior when section offsets are
3019eac3
DE
18221 specified. If this is just a DW_OP_addr or DW_OP_GNU_addr_index
18222 then mark this symbol as LOC_STATIC. */
4c2df51b
DJ
18223
18224 if (attr_form_is_block (attr)
3019eac3
DE
18225 && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
18226 && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
18227 || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
18228 && (DW_BLOCK (attr)->size
18229 == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
4c2df51b 18230 {
891d2f0b 18231 unsigned int dummy;
4c2df51b 18232
3019eac3
DE
18233 if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
18234 SYMBOL_VALUE_ADDRESS (sym) =
18235 read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
18236 else
18237 SYMBOL_VALUE_ADDRESS (sym) =
18238 read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
f1e6e072 18239 SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
4c2df51b
DJ
18240 fixup_symbol_section (sym, objfile);
18241 SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
18242 SYMBOL_SECTION (sym));
4c2df51b
DJ
18243 return;
18244 }
18245
18246 /* NOTE drow/2002-01-30: It might be worthwhile to have a static
18247 expression evaluator, and use LOC_COMPUTED only when necessary
18248 (i.e. when the value of a register or memory location is
18249 referenced, or a thread-local block, etc.). Then again, it might
18250 not be worthwhile. I'm assuming that it isn't unless performance
18251 or memory numbers show me otherwise. */
18252
f1e6e072 18253 dwarf2_symbol_mark_computed (attr, sym, cu, 0);
8be455d7 18254
f1e6e072 18255 if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
8be455d7 18256 cu->has_loclist = 1;
4c2df51b
DJ
18257}
18258
c906108c
SS
18259/* Given a pointer to a DWARF information entry, figure out if we need
18260 to make a symbol table entry for it, and if so, create a new entry
18261 and return a pointer to it.
18262 If TYPE is NULL, determine symbol type from the die, otherwise
34eaf542
TT
18263 used the passed type.
18264 If SPACE is not NULL, use it to hold the new symbol. If it is
18265 NULL, allocate a new symbol on the objfile's obstack. */
c906108c
SS
18266
18267static struct symbol *
34eaf542
TT
18268new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
18269 struct symbol *space)
c906108c 18270{
e7c27a73 18271 struct objfile *objfile = cu->objfile;
3e29f34a 18272 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c 18273 struct symbol *sym = NULL;
15d034d0 18274 const char *name;
c906108c
SS
18275 struct attribute *attr = NULL;
18276 struct attribute *attr2 = NULL;
e142c38c 18277 CORE_ADDR baseaddr;
e37fd15a
SW
18278 struct pending **list_to_add = NULL;
18279
edb3359d 18280 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
e142c38c
DJ
18281
18282 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 18283
94af9270 18284 name = dwarf2_name (die, cu);
c906108c
SS
18285 if (name)
18286 {
94af9270 18287 const char *linkagename;
34eaf542 18288 int suppress_add = 0;
94af9270 18289
34eaf542
TT
18290 if (space)
18291 sym = space;
18292 else
e623cf5d 18293 sym = allocate_symbol (objfile);
c906108c 18294 OBJSTAT (objfile, n_syms++);
2de7ced7
DJ
18295
18296 /* Cache this symbol's name and the name's demangled form (if any). */
f85f34ed 18297 SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
94af9270
KS
18298 linkagename = dwarf2_physname (name, die, cu);
18299 SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
c906108c 18300
f55ee35c
JK
18301 /* Fortran does not have mangling standard and the mangling does differ
18302 between gfortran, iFort etc. */
18303 if (cu->language == language_fortran
b250c185 18304 && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
29df156d 18305 symbol_set_demangled_name (&(sym->ginfo),
cfc594ee 18306 dwarf2_full_name (name, die, cu),
29df156d 18307 NULL);
f55ee35c 18308
c906108c 18309 /* Default assumptions.
c5aa993b 18310 Use the passed type or decode it from the die. */
176620f1 18311 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
f1e6e072 18312 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
c906108c
SS
18313 if (type != NULL)
18314 SYMBOL_TYPE (sym) = type;
18315 else
e7c27a73 18316 SYMBOL_TYPE (sym) = die_type (die, cu);
edb3359d
DJ
18317 attr = dwarf2_attr (die,
18318 inlined_func ? DW_AT_call_line : DW_AT_decl_line,
18319 cu);
c906108c
SS
18320 if (attr)
18321 {
18322 SYMBOL_LINE (sym) = DW_UNSND (attr);
18323 }
cb1df416 18324
edb3359d
DJ
18325 attr = dwarf2_attr (die,
18326 inlined_func ? DW_AT_call_file : DW_AT_decl_file,
18327 cu);
cb1df416
DJ
18328 if (attr)
18329 {
18330 int file_index = DW_UNSND (attr);
9a619af0 18331
cb1df416
DJ
18332 if (cu->line_header == NULL
18333 || file_index > cu->line_header->num_file_names)
18334 complaint (&symfile_complaints,
18335 _("file index out of range"));
1c3d648d 18336 else if (file_index > 0)
cb1df416
DJ
18337 {
18338 struct file_entry *fe;
9a619af0 18339
cb1df416 18340 fe = &cu->line_header->file_names[file_index - 1];
08be3fe3 18341 symbol_set_symtab (sym, fe->symtab);
cb1df416
DJ
18342 }
18343 }
18344
c906108c
SS
18345 switch (die->tag)
18346 {
18347 case DW_TAG_label:
e142c38c 18348 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
c906108c 18349 if (attr)
3e29f34a
MR
18350 {
18351 CORE_ADDR addr;
18352
18353 addr = attr_value_as_address (attr);
18354 addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
18355 SYMBOL_VALUE_ADDRESS (sym) = addr;
18356 }
0f5238ed
TT
18357 SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
18358 SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
f1e6e072 18359 SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
0f5238ed 18360 add_symbol_to_list (sym, cu->list_in_scope);
c906108c
SS
18361 break;
18362 case DW_TAG_subprogram:
18363 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18364 finish_block. */
f1e6e072 18365 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
e142c38c 18366 attr2 = dwarf2_attr (die, DW_AT_external, cu);
2cfa0c8d
JB
18367 if ((attr2 && (DW_UNSND (attr2) != 0))
18368 || cu->language == language_ada)
c906108c 18369 {
2cfa0c8d
JB
18370 /* Subprograms marked external are stored as a global symbol.
18371 Ada subprograms, whether marked external or not, are always
18372 stored as a global symbol, because we want to be able to
18373 access them globally. For instance, we want to be able
18374 to break on a nested subprogram without having to
18375 specify the context. */
e37fd15a 18376 list_to_add = &global_symbols;
c906108c
SS
18377 }
18378 else
18379 {
e37fd15a 18380 list_to_add = cu->list_in_scope;
c906108c
SS
18381 }
18382 break;
edb3359d
DJ
18383 case DW_TAG_inlined_subroutine:
18384 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18385 finish_block. */
f1e6e072 18386 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
edb3359d 18387 SYMBOL_INLINED (sym) = 1;
481860b3 18388 list_to_add = cu->list_in_scope;
edb3359d 18389 break;
34eaf542
TT
18390 case DW_TAG_template_value_param:
18391 suppress_add = 1;
18392 /* Fall through. */
72929c62 18393 case DW_TAG_constant:
c906108c 18394 case DW_TAG_variable:
254e6b9e 18395 case DW_TAG_member:
0963b4bd
MS
18396 /* Compilation with minimal debug info may result in
18397 variables with missing type entries. Change the
18398 misleading `void' type to something sensible. */
c906108c 18399 if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
64c50499 18400 SYMBOL_TYPE (sym)
46bf5051 18401 = objfile_type (objfile)->nodebug_data_symbol;
64c50499 18402
e142c38c 18403 attr = dwarf2_attr (die, DW_AT_const_value, cu);
254e6b9e
DE
18404 /* In the case of DW_TAG_member, we should only be called for
18405 static const members. */
18406 if (die->tag == DW_TAG_member)
18407 {
3863f96c
DE
18408 /* dwarf2_add_field uses die_is_declaration,
18409 so we do the same. */
254e6b9e
DE
18410 gdb_assert (die_is_declaration (die, cu));
18411 gdb_assert (attr);
18412 }
c906108c
SS
18413 if (attr)
18414 {
e7c27a73 18415 dwarf2_const_value (attr, sym, cu);
e142c38c 18416 attr2 = dwarf2_attr (die, DW_AT_external, cu);
e37fd15a 18417 if (!suppress_add)
34eaf542
TT
18418 {
18419 if (attr2 && (DW_UNSND (attr2) != 0))
e37fd15a 18420 list_to_add = &global_symbols;
34eaf542 18421 else
e37fd15a 18422 list_to_add = cu->list_in_scope;
34eaf542 18423 }
c906108c
SS
18424 break;
18425 }
e142c38c 18426 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
18427 if (attr)
18428 {
e7c27a73 18429 var_decode_location (attr, sym, cu);
e142c38c 18430 attr2 = dwarf2_attr (die, DW_AT_external, cu);
4357ac6c
TT
18431
18432 /* Fortran explicitly imports any global symbols to the local
18433 scope by DW_TAG_common_block. */
18434 if (cu->language == language_fortran && die->parent
18435 && die->parent->tag == DW_TAG_common_block)
18436 attr2 = NULL;
18437
caac4577
JG
18438 if (SYMBOL_CLASS (sym) == LOC_STATIC
18439 && SYMBOL_VALUE_ADDRESS (sym) == 0
18440 && !dwarf2_per_objfile->has_section_at_zero)
18441 {
18442 /* When a static variable is eliminated by the linker,
18443 the corresponding debug information is not stripped
18444 out, but the variable address is set to null;
18445 do not add such variables into symbol table. */
18446 }
18447 else if (attr2 && (DW_UNSND (attr2) != 0))
1c809c68 18448 {
f55ee35c
JK
18449 /* Workaround gfortran PR debug/40040 - it uses
18450 DW_AT_location for variables in -fPIC libraries which may
18451 get overriden by other libraries/executable and get
18452 a different address. Resolve it by the minimal symbol
18453 which may come from inferior's executable using copy
18454 relocation. Make this workaround only for gfortran as for
18455 other compilers GDB cannot guess the minimal symbol
18456 Fortran mangling kind. */
18457 if (cu->language == language_fortran && die->parent
18458 && die->parent->tag == DW_TAG_module
18459 && cu->producer
61012eef 18460 && startswith (cu->producer, "GNU Fortran "))
f1e6e072 18461 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
f55ee35c 18462
1c809c68
TT
18463 /* A variable with DW_AT_external is never static,
18464 but it may be block-scoped. */
18465 list_to_add = (cu->list_in_scope == &file_symbols
18466 ? &global_symbols : cu->list_in_scope);
1c809c68 18467 }
c906108c 18468 else
e37fd15a 18469 list_to_add = cu->list_in_scope;
c906108c
SS
18470 }
18471 else
18472 {
18473 /* We do not know the address of this symbol.
c5aa993b
JM
18474 If it is an external symbol and we have type information
18475 for it, enter the symbol as a LOC_UNRESOLVED symbol.
18476 The address of the variable will then be determined from
18477 the minimal symbol table whenever the variable is
18478 referenced. */
e142c38c 18479 attr2 = dwarf2_attr (die, DW_AT_external, cu);
0971de02
TT
18480
18481 /* Fortran explicitly imports any global symbols to the local
18482 scope by DW_TAG_common_block. */
18483 if (cu->language == language_fortran && die->parent
18484 && die->parent->tag == DW_TAG_common_block)
18485 {
18486 /* SYMBOL_CLASS doesn't matter here because
18487 read_common_block is going to reset it. */
18488 if (!suppress_add)
18489 list_to_add = cu->list_in_scope;
18490 }
18491 else if (attr2 && (DW_UNSND (attr2) != 0)
18492 && dwarf2_attr (die, DW_AT_type, cu) != NULL)
c906108c 18493 {
0fe7935b
DJ
18494 /* A variable with DW_AT_external is never static, but it
18495 may be block-scoped. */
18496 list_to_add = (cu->list_in_scope == &file_symbols
18497 ? &global_symbols : cu->list_in_scope);
18498
f1e6e072 18499 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
c906108c 18500 }
442ddf59
JK
18501 else if (!die_is_declaration (die, cu))
18502 {
18503 /* Use the default LOC_OPTIMIZED_OUT class. */
18504 gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
e37fd15a
SW
18505 if (!suppress_add)
18506 list_to_add = cu->list_in_scope;
442ddf59 18507 }
c906108c
SS
18508 }
18509 break;
18510 case DW_TAG_formal_parameter:
edb3359d
DJ
18511 /* If we are inside a function, mark this as an argument. If
18512 not, we might be looking at an argument to an inlined function
18513 when we do not have enough information to show inlined frames;
18514 pretend it's a local variable in that case so that the user can
18515 still see it. */
18516 if (context_stack_depth > 0
18517 && context_stack[context_stack_depth - 1].name != NULL)
18518 SYMBOL_IS_ARGUMENT (sym) = 1;
e142c38c 18519 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
18520 if (attr)
18521 {
e7c27a73 18522 var_decode_location (attr, sym, cu);
c906108c 18523 }
e142c38c 18524 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
18525 if (attr)
18526 {
e7c27a73 18527 dwarf2_const_value (attr, sym, cu);
c906108c 18528 }
f346a30d 18529
e37fd15a 18530 list_to_add = cu->list_in_scope;
c906108c
SS
18531 break;
18532 case DW_TAG_unspecified_parameters:
18533 /* From varargs functions; gdb doesn't seem to have any
18534 interest in this information, so just ignore it for now.
18535 (FIXME?) */
18536 break;
34eaf542
TT
18537 case DW_TAG_template_type_param:
18538 suppress_add = 1;
18539 /* Fall through. */
c906108c 18540 case DW_TAG_class_type:
680b30c7 18541 case DW_TAG_interface_type:
c906108c
SS
18542 case DW_TAG_structure_type:
18543 case DW_TAG_union_type:
72019c9c 18544 case DW_TAG_set_type:
c906108c 18545 case DW_TAG_enumeration_type:
f1e6e072 18546 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
176620f1 18547 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
c906108c 18548
63d06c5c 18549 {
987504bb 18550 /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't
63d06c5c
DC
18551 really ever be static objects: otherwise, if you try
18552 to, say, break of a class's method and you're in a file
18553 which doesn't mention that class, it won't work unless
18554 the check for all static symbols in lookup_symbol_aux
18555 saves you. See the OtherFileClass tests in
18556 gdb.c++/namespace.exp. */
18557
e37fd15a 18558 if (!suppress_add)
34eaf542 18559 {
34eaf542
TT
18560 list_to_add = (cu->list_in_scope == &file_symbols
18561 && (cu->language == language_cplus
18562 || cu->language == language_java)
18563 ? &global_symbols : cu->list_in_scope);
63d06c5c 18564
64382290
TT
18565 /* The semantics of C++ state that "struct foo {
18566 ... }" also defines a typedef for "foo". A Java
18567 class declaration also defines a typedef for the
18568 class. */
18569 if (cu->language == language_cplus
18570 || cu->language == language_java
45280282
IB
18571 || cu->language == language_ada
18572 || cu->language == language_d)
64382290
TT
18573 {
18574 /* The symbol's name is already allocated along
18575 with this objfile, so we don't need to
18576 duplicate it for the type. */
18577 if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
18578 TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
18579 }
63d06c5c
DC
18580 }
18581 }
c906108c
SS
18582 break;
18583 case DW_TAG_typedef:
f1e6e072 18584 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
63d06c5c 18585 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e37fd15a 18586 list_to_add = cu->list_in_scope;
63d06c5c 18587 break;
c906108c 18588 case DW_TAG_base_type:
a02abb62 18589 case DW_TAG_subrange_type:
f1e6e072 18590 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
176620f1 18591 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e37fd15a 18592 list_to_add = cu->list_in_scope;
c906108c
SS
18593 break;
18594 case DW_TAG_enumerator:
e142c38c 18595 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
18596 if (attr)
18597 {
e7c27a73 18598 dwarf2_const_value (attr, sym, cu);
c906108c 18599 }
63d06c5c
DC
18600 {
18601 /* NOTE: carlton/2003-11-10: See comment above in the
18602 DW_TAG_class_type, etc. block. */
18603
e142c38c 18604 list_to_add = (cu->list_in_scope == &file_symbols
987504bb
JJ
18605 && (cu->language == language_cplus
18606 || cu->language == language_java)
e142c38c 18607 ? &global_symbols : cu->list_in_scope);
63d06c5c 18608 }
c906108c 18609 break;
74921315 18610 case DW_TAG_imported_declaration:
5c4e30ca 18611 case DW_TAG_namespace:
f1e6e072 18612 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
e37fd15a 18613 list_to_add = &global_symbols;
5c4e30ca 18614 break;
530e8392
KB
18615 case DW_TAG_module:
18616 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18617 SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
18618 list_to_add = &global_symbols;
18619 break;
4357ac6c 18620 case DW_TAG_common_block:
f1e6e072 18621 SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
4357ac6c
TT
18622 SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
18623 add_symbol_to_list (sym, cu->list_in_scope);
18624 break;
c906108c
SS
18625 default:
18626 /* Not a tag we recognize. Hopefully we aren't processing
18627 trash data, but since we must specifically ignore things
18628 we don't recognize, there is nothing else we should do at
0963b4bd 18629 this point. */
e2e0b3e5 18630 complaint (&symfile_complaints, _("unsupported tag: '%s'"),
4d3c2250 18631 dwarf_tag_name (die->tag));
c906108c
SS
18632 break;
18633 }
df8a16a1 18634
e37fd15a
SW
18635 if (suppress_add)
18636 {
18637 sym->hash_next = objfile->template_symbols;
18638 objfile->template_symbols = sym;
18639 list_to_add = NULL;
18640 }
18641
18642 if (list_to_add != NULL)
18643 add_symbol_to_list (sym, list_to_add);
18644
df8a16a1
DJ
18645 /* For the benefit of old versions of GCC, check for anonymous
18646 namespaces based on the demangled name. */
4d4ec4e5 18647 if (!cu->processing_has_namespace_info
94af9270 18648 && cu->language == language_cplus)
a10964d1 18649 cp_scan_for_anonymous_namespaces (sym, objfile);
c906108c
SS
18650 }
18651 return (sym);
18652}
18653
34eaf542
TT
18654/* A wrapper for new_symbol_full that always allocates a new symbol. */
18655
18656static struct symbol *
18657new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
18658{
18659 return new_symbol_full (die, type, cu, NULL);
18660}
18661
98bfdba5
PA
18662/* Given an attr with a DW_FORM_dataN value in host byte order,
18663 zero-extend it as appropriate for the symbol's type. The DWARF
18664 standard (v4) is not entirely clear about the meaning of using
18665 DW_FORM_dataN for a constant with a signed type, where the type is
18666 wider than the data. The conclusion of a discussion on the DWARF
18667 list was that this is unspecified. We choose to always zero-extend
18668 because that is the interpretation long in use by GCC. */
c906108c 18669
98bfdba5 18670static gdb_byte *
ff39bb5e 18671dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
12df843f 18672 struct dwarf2_cu *cu, LONGEST *value, int bits)
c906108c 18673{
e7c27a73 18674 struct objfile *objfile = cu->objfile;
e17a4113
UW
18675 enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
18676 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
98bfdba5
PA
18677 LONGEST l = DW_UNSND (attr);
18678
18679 if (bits < sizeof (*value) * 8)
18680 {
18681 l &= ((LONGEST) 1 << bits) - 1;
18682 *value = l;
18683 }
18684 else if (bits == sizeof (*value) * 8)
18685 *value = l;
18686 else
18687 {
18688 gdb_byte *bytes = obstack_alloc (obstack, bits / 8);
18689 store_unsigned_integer (bytes, bits / 8, byte_order, l);
18690 return bytes;
18691 }
18692
18693 return NULL;
18694}
18695
18696/* Read a constant value from an attribute. Either set *VALUE, or if
18697 the value does not fit in *VALUE, set *BYTES - either already
18698 allocated on the objfile obstack, or newly allocated on OBSTACK,
18699 or, set *BATON, if we translated the constant to a location
18700 expression. */
18701
18702static void
ff39bb5e 18703dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
98bfdba5
PA
18704 const char *name, struct obstack *obstack,
18705 struct dwarf2_cu *cu,
d521ce57 18706 LONGEST *value, const gdb_byte **bytes,
98bfdba5
PA
18707 struct dwarf2_locexpr_baton **baton)
18708{
18709 struct objfile *objfile = cu->objfile;
18710 struct comp_unit_head *cu_header = &cu->header;
c906108c 18711 struct dwarf_block *blk;
98bfdba5
PA
18712 enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
18713 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
18714
18715 *value = 0;
18716 *bytes = NULL;
18717 *baton = NULL;
c906108c
SS
18718
18719 switch (attr->form)
18720 {
18721 case DW_FORM_addr:
3019eac3 18722 case DW_FORM_GNU_addr_index:
ac56253d 18723 {
ac56253d
TT
18724 gdb_byte *data;
18725
98bfdba5
PA
18726 if (TYPE_LENGTH (type) != cu_header->addr_size)
18727 dwarf2_const_value_length_mismatch_complaint (name,
ac56253d 18728 cu_header->addr_size,
98bfdba5 18729 TYPE_LENGTH (type));
ac56253d
TT
18730 /* Symbols of this form are reasonably rare, so we just
18731 piggyback on the existing location code rather than writing
18732 a new implementation of symbol_computed_ops. */
7919a973 18733 *baton = obstack_alloc (obstack, sizeof (struct dwarf2_locexpr_baton));
98bfdba5
PA
18734 (*baton)->per_cu = cu->per_cu;
18735 gdb_assert ((*baton)->per_cu);
ac56253d 18736
98bfdba5 18737 (*baton)->size = 2 + cu_header->addr_size;
7919a973 18738 data = obstack_alloc (obstack, (*baton)->size);
98bfdba5 18739 (*baton)->data = data;
ac56253d
TT
18740
18741 data[0] = DW_OP_addr;
18742 store_unsigned_integer (&data[1], cu_header->addr_size,
18743 byte_order, DW_ADDR (attr));
18744 data[cu_header->addr_size + 1] = DW_OP_stack_value;
ac56253d 18745 }
c906108c 18746 break;
4ac36638 18747 case DW_FORM_string:
93b5768b 18748 case DW_FORM_strp:
3019eac3 18749 case DW_FORM_GNU_str_index:
36586728 18750 case DW_FORM_GNU_strp_alt:
98bfdba5
PA
18751 /* DW_STRING is already allocated on the objfile obstack, point
18752 directly to it. */
d521ce57 18753 *bytes = (const gdb_byte *) DW_STRING (attr);
93b5768b 18754 break;
c906108c
SS
18755 case DW_FORM_block1:
18756 case DW_FORM_block2:
18757 case DW_FORM_block4:
18758 case DW_FORM_block:
2dc7f7b3 18759 case DW_FORM_exprloc:
c906108c 18760 blk = DW_BLOCK (attr);
98bfdba5
PA
18761 if (TYPE_LENGTH (type) != blk->size)
18762 dwarf2_const_value_length_mismatch_complaint (name, blk->size,
18763 TYPE_LENGTH (type));
18764 *bytes = blk->data;
c906108c 18765 break;
2df3850c
JM
18766
18767 /* The DW_AT_const_value attributes are supposed to carry the
18768 symbol's value "represented as it would be on the target
18769 architecture." By the time we get here, it's already been
18770 converted to host endianness, so we just need to sign- or
18771 zero-extend it as appropriate. */
18772 case DW_FORM_data1:
3aef2284 18773 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
2df3850c 18774 break;
c906108c 18775 case DW_FORM_data2:
3aef2284 18776 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
2df3850c 18777 break;
c906108c 18778 case DW_FORM_data4:
3aef2284 18779 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
2df3850c 18780 break;
c906108c 18781 case DW_FORM_data8:
3aef2284 18782 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
2df3850c
JM
18783 break;
18784
c906108c 18785 case DW_FORM_sdata:
98bfdba5 18786 *value = DW_SND (attr);
2df3850c
JM
18787 break;
18788
c906108c 18789 case DW_FORM_udata:
98bfdba5 18790 *value = DW_UNSND (attr);
c906108c 18791 break;
2df3850c 18792
c906108c 18793 default:
4d3c2250 18794 complaint (&symfile_complaints,
e2e0b3e5 18795 _("unsupported const value attribute form: '%s'"),
4d3c2250 18796 dwarf_form_name (attr->form));
98bfdba5 18797 *value = 0;
c906108c
SS
18798 break;
18799 }
18800}
18801
2df3850c 18802
98bfdba5
PA
18803/* Copy constant value from an attribute to a symbol. */
18804
2df3850c 18805static void
ff39bb5e 18806dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
98bfdba5 18807 struct dwarf2_cu *cu)
2df3850c 18808{
98bfdba5
PA
18809 struct objfile *objfile = cu->objfile;
18810 struct comp_unit_head *cu_header = &cu->header;
12df843f 18811 LONGEST value;
d521ce57 18812 const gdb_byte *bytes;
98bfdba5 18813 struct dwarf2_locexpr_baton *baton;
2df3850c 18814
98bfdba5
PA
18815 dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
18816 SYMBOL_PRINT_NAME (sym),
18817 &objfile->objfile_obstack, cu,
18818 &value, &bytes, &baton);
2df3850c 18819
98bfdba5
PA
18820 if (baton != NULL)
18821 {
98bfdba5 18822 SYMBOL_LOCATION_BATON (sym) = baton;
f1e6e072 18823 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
98bfdba5
PA
18824 }
18825 else if (bytes != NULL)
18826 {
18827 SYMBOL_VALUE_BYTES (sym) = bytes;
f1e6e072 18828 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
98bfdba5
PA
18829 }
18830 else
18831 {
18832 SYMBOL_VALUE (sym) = value;
f1e6e072 18833 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
98bfdba5 18834 }
2df3850c
JM
18835}
18836
c906108c
SS
18837/* Return the type of the die in question using its DW_AT_type attribute. */
18838
18839static struct type *
e7c27a73 18840die_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 18841{
c906108c 18842 struct attribute *type_attr;
c906108c 18843
e142c38c 18844 type_attr = dwarf2_attr (die, DW_AT_type, cu);
c906108c
SS
18845 if (!type_attr)
18846 {
18847 /* A missing DW_AT_type represents a void type. */
46bf5051 18848 return objfile_type (cu->objfile)->builtin_void;
c906108c 18849 }
348e048f 18850
673bfd45 18851 return lookup_die_type (die, type_attr, cu);
c906108c
SS
18852}
18853
b4ba55a1
JB
18854/* True iff CU's producer generates GNAT Ada auxiliary information
18855 that allows to find parallel types through that information instead
18856 of having to do expensive parallel lookups by type name. */
18857
18858static int
18859need_gnat_info (struct dwarf2_cu *cu)
18860{
18861 /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
18862 of GNAT produces this auxiliary information, without any indication
18863 that it is produced. Part of enhancing the FSF version of GNAT
18864 to produce that information will be to put in place an indicator
18865 that we can use in order to determine whether the descriptive type
18866 info is available or not. One suggestion that has been made is
18867 to use a new attribute, attached to the CU die. For now, assume
18868 that the descriptive type info is not available. */
18869 return 0;
18870}
18871
b4ba55a1
JB
18872/* Return the auxiliary type of the die in question using its
18873 DW_AT_GNAT_descriptive_type attribute. Returns NULL if the
18874 attribute is not present. */
18875
18876static struct type *
18877die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
18878{
b4ba55a1 18879 struct attribute *type_attr;
b4ba55a1
JB
18880
18881 type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
18882 if (!type_attr)
18883 return NULL;
18884
673bfd45 18885 return lookup_die_type (die, type_attr, cu);
b4ba55a1
JB
18886}
18887
18888/* If DIE has a descriptive_type attribute, then set the TYPE's
18889 descriptive type accordingly. */
18890
18891static void
18892set_descriptive_type (struct type *type, struct die_info *die,
18893 struct dwarf2_cu *cu)
18894{
18895 struct type *descriptive_type = die_descriptive_type (die, cu);
18896
18897 if (descriptive_type)
18898 {
18899 ALLOCATE_GNAT_AUX_TYPE (type);
18900 TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
18901 }
18902}
18903
c906108c
SS
18904/* Return the containing type of the die in question using its
18905 DW_AT_containing_type attribute. */
18906
18907static struct type *
e7c27a73 18908die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 18909{
c906108c 18910 struct attribute *type_attr;
c906108c 18911
e142c38c 18912 type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
33ac96f0
JK
18913 if (!type_attr)
18914 error (_("Dwarf Error: Problem turning containing type into gdb type "
4262abfb 18915 "[in module %s]"), objfile_name (cu->objfile));
33ac96f0 18916
673bfd45 18917 return lookup_die_type (die, type_attr, cu);
c906108c
SS
18918}
18919
ac9ec31b
DE
18920/* Return an error marker type to use for the ill formed type in DIE/CU. */
18921
18922static struct type *
18923build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
18924{
18925 struct objfile *objfile = dwarf2_per_objfile->objfile;
18926 char *message, *saved;
18927
18928 message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
4262abfb 18929 objfile_name (objfile),
ac9ec31b
DE
18930 cu->header.offset.sect_off,
18931 die->offset.sect_off);
18932 saved = obstack_copy0 (&objfile->objfile_obstack,
18933 message, strlen (message));
18934 xfree (message);
18935
18936 return init_type (TYPE_CODE_ERROR, 0, 0, saved, objfile);
18937}
18938
673bfd45 18939/* Look up the type of DIE in CU using its type attribute ATTR.
ac9ec31b
DE
18940 ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
18941 DW_AT_containing_type.
673bfd45
DE
18942 If there is no type substitute an error marker. */
18943
c906108c 18944static struct type *
ff39bb5e 18945lookup_die_type (struct die_info *die, const struct attribute *attr,
673bfd45 18946 struct dwarf2_cu *cu)
c906108c 18947{
bb5ed363 18948 struct objfile *objfile = cu->objfile;
f792889a
DJ
18949 struct type *this_type;
18950
ac9ec31b
DE
18951 gdb_assert (attr->name == DW_AT_type
18952 || attr->name == DW_AT_GNAT_descriptive_type
18953 || attr->name == DW_AT_containing_type);
18954
673bfd45
DE
18955 /* First see if we have it cached. */
18956
36586728
TT
18957 if (attr->form == DW_FORM_GNU_ref_alt)
18958 {
18959 struct dwarf2_per_cu_data *per_cu;
18960 sect_offset offset = dwarf2_get_ref_die_offset (attr);
18961
18962 per_cu = dwarf2_find_containing_comp_unit (offset, 1, cu->objfile);
18963 this_type = get_die_type_at_offset (offset, per_cu);
18964 }
7771576e 18965 else if (attr_form_is_ref (attr))
673bfd45 18966 {
b64f50a1 18967 sect_offset offset = dwarf2_get_ref_die_offset (attr);
673bfd45
DE
18968
18969 this_type = get_die_type_at_offset (offset, cu->per_cu);
18970 }
55f1336d 18971 else if (attr->form == DW_FORM_ref_sig8)
673bfd45 18972 {
ac9ec31b 18973 ULONGEST signature = DW_SIGNATURE (attr);
673bfd45 18974
ac9ec31b 18975 return get_signatured_type (die, signature, cu);
673bfd45
DE
18976 }
18977 else
18978 {
ac9ec31b
DE
18979 complaint (&symfile_complaints,
18980 _("Dwarf Error: Bad type attribute %s in DIE"
18981 " at 0x%x [in module %s]"),
18982 dwarf_attr_name (attr->name), die->offset.sect_off,
4262abfb 18983 objfile_name (objfile));
ac9ec31b 18984 return build_error_marker_type (cu, die);
673bfd45
DE
18985 }
18986
18987 /* If not cached we need to read it in. */
18988
18989 if (this_type == NULL)
18990 {
ac9ec31b 18991 struct die_info *type_die = NULL;
673bfd45
DE
18992 struct dwarf2_cu *type_cu = cu;
18993
7771576e 18994 if (attr_form_is_ref (attr))
ac9ec31b
DE
18995 type_die = follow_die_ref (die, attr, &type_cu);
18996 if (type_die == NULL)
18997 return build_error_marker_type (cu, die);
18998 /* If we find the type now, it's probably because the type came
3019eac3
DE
18999 from an inter-CU reference and the type's CU got expanded before
19000 ours. */
ac9ec31b 19001 this_type = read_type_die (type_die, type_cu);
673bfd45
DE
19002 }
19003
19004 /* If we still don't have a type use an error marker. */
19005
19006 if (this_type == NULL)
ac9ec31b 19007 return build_error_marker_type (cu, die);
673bfd45 19008
f792889a 19009 return this_type;
c906108c
SS
19010}
19011
673bfd45
DE
19012/* Return the type in DIE, CU.
19013 Returns NULL for invalid types.
19014
02142a6c 19015 This first does a lookup in die_type_hash,
673bfd45
DE
19016 and only reads the die in if necessary.
19017
19018 NOTE: This can be called when reading in partial or full symbols. */
19019
f792889a 19020static struct type *
e7c27a73 19021read_type_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 19022{
f792889a
DJ
19023 struct type *this_type;
19024
19025 this_type = get_die_type (die, cu);
19026 if (this_type)
19027 return this_type;
19028
673bfd45
DE
19029 return read_type_die_1 (die, cu);
19030}
19031
19032/* Read the type in DIE, CU.
19033 Returns NULL for invalid types. */
19034
19035static struct type *
19036read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
19037{
19038 struct type *this_type = NULL;
19039
c906108c
SS
19040 switch (die->tag)
19041 {
19042 case DW_TAG_class_type:
680b30c7 19043 case DW_TAG_interface_type:
c906108c
SS
19044 case DW_TAG_structure_type:
19045 case DW_TAG_union_type:
f792889a 19046 this_type = read_structure_type (die, cu);
c906108c
SS
19047 break;
19048 case DW_TAG_enumeration_type:
f792889a 19049 this_type = read_enumeration_type (die, cu);
c906108c
SS
19050 break;
19051 case DW_TAG_subprogram:
19052 case DW_TAG_subroutine_type:
edb3359d 19053 case DW_TAG_inlined_subroutine:
f792889a 19054 this_type = read_subroutine_type (die, cu);
c906108c
SS
19055 break;
19056 case DW_TAG_array_type:
f792889a 19057 this_type = read_array_type (die, cu);
c906108c 19058 break;
72019c9c 19059 case DW_TAG_set_type:
f792889a 19060 this_type = read_set_type (die, cu);
72019c9c 19061 break;
c906108c 19062 case DW_TAG_pointer_type:
f792889a 19063 this_type = read_tag_pointer_type (die, cu);
c906108c
SS
19064 break;
19065 case DW_TAG_ptr_to_member_type:
f792889a 19066 this_type = read_tag_ptr_to_member_type (die, cu);
c906108c
SS
19067 break;
19068 case DW_TAG_reference_type:
f792889a 19069 this_type = read_tag_reference_type (die, cu);
c906108c
SS
19070 break;
19071 case DW_TAG_const_type:
f792889a 19072 this_type = read_tag_const_type (die, cu);
c906108c
SS
19073 break;
19074 case DW_TAG_volatile_type:
f792889a 19075 this_type = read_tag_volatile_type (die, cu);
c906108c 19076 break;
06d66ee9
TT
19077 case DW_TAG_restrict_type:
19078 this_type = read_tag_restrict_type (die, cu);
19079 break;
c906108c 19080 case DW_TAG_string_type:
f792889a 19081 this_type = read_tag_string_type (die, cu);
c906108c
SS
19082 break;
19083 case DW_TAG_typedef:
f792889a 19084 this_type = read_typedef (die, cu);
c906108c 19085 break;
a02abb62 19086 case DW_TAG_subrange_type:
f792889a 19087 this_type = read_subrange_type (die, cu);
a02abb62 19088 break;
c906108c 19089 case DW_TAG_base_type:
f792889a 19090 this_type = read_base_type (die, cu);
c906108c 19091 break;
81a17f79 19092 case DW_TAG_unspecified_type:
f792889a 19093 this_type = read_unspecified_type (die, cu);
81a17f79 19094 break;
0114d602
DJ
19095 case DW_TAG_namespace:
19096 this_type = read_namespace_type (die, cu);
19097 break;
f55ee35c
JK
19098 case DW_TAG_module:
19099 this_type = read_module_type (die, cu);
19100 break;
a2c2acaf
MW
19101 case DW_TAG_atomic_type:
19102 this_type = read_tag_atomic_type (die, cu);
19103 break;
c906108c 19104 default:
3e43a32a
MS
19105 complaint (&symfile_complaints,
19106 _("unexpected tag in read_type_die: '%s'"),
4d3c2250 19107 dwarf_tag_name (die->tag));
c906108c
SS
19108 break;
19109 }
63d06c5c 19110
f792889a 19111 return this_type;
63d06c5c
DC
19112}
19113
abc72ce4
DE
19114/* See if we can figure out if the class lives in a namespace. We do
19115 this by looking for a member function; its demangled name will
19116 contain namespace info, if there is any.
19117 Return the computed name or NULL.
19118 Space for the result is allocated on the objfile's obstack.
19119 This is the full-die version of guess_partial_die_structure_name.
19120 In this case we know DIE has no useful parent. */
19121
19122static char *
19123guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
19124{
19125 struct die_info *spec_die;
19126 struct dwarf2_cu *spec_cu;
19127 struct die_info *child;
19128
19129 spec_cu = cu;
19130 spec_die = die_specification (die, &spec_cu);
19131 if (spec_die != NULL)
19132 {
19133 die = spec_die;
19134 cu = spec_cu;
19135 }
19136
19137 for (child = die->child;
19138 child != NULL;
19139 child = child->sibling)
19140 {
19141 if (child->tag == DW_TAG_subprogram)
19142 {
19143 struct attribute *attr;
19144
19145 attr = dwarf2_attr (child, DW_AT_linkage_name, cu);
19146 if (attr == NULL)
19147 attr = dwarf2_attr (child, DW_AT_MIPS_linkage_name, cu);
19148 if (attr != NULL)
19149 {
19150 char *actual_name
19151 = language_class_name_from_physname (cu->language_defn,
19152 DW_STRING (attr));
19153 char *name = NULL;
19154
19155 if (actual_name != NULL)
19156 {
15d034d0 19157 const char *die_name = dwarf2_name (die, cu);
abc72ce4
DE
19158
19159 if (die_name != NULL
19160 && strcmp (die_name, actual_name) != 0)
19161 {
19162 /* Strip off the class name from the full name.
19163 We want the prefix. */
19164 int die_name_len = strlen (die_name);
19165 int actual_name_len = strlen (actual_name);
19166
19167 /* Test for '::' as a sanity check. */
19168 if (actual_name_len > die_name_len + 2
3e43a32a
MS
19169 && actual_name[actual_name_len
19170 - die_name_len - 1] == ':')
abc72ce4 19171 name =
34a68019 19172 obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb
TT
19173 actual_name,
19174 actual_name_len - die_name_len - 2);
abc72ce4
DE
19175 }
19176 }
19177 xfree (actual_name);
19178 return name;
19179 }
19180 }
19181 }
19182
19183 return NULL;
19184}
19185
96408a79
SA
19186/* GCC might emit a nameless typedef that has a linkage name. Determine the
19187 prefix part in such case. See
19188 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
19189
19190static char *
19191anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
19192{
19193 struct attribute *attr;
19194 char *base;
19195
19196 if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
19197 && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
19198 return NULL;
19199
19200 attr = dwarf2_attr (die, DW_AT_name, cu);
19201 if (attr != NULL && DW_STRING (attr) != NULL)
19202 return NULL;
19203
19204 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19205 if (attr == NULL)
19206 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19207 if (attr == NULL || DW_STRING (attr) == NULL)
19208 return NULL;
19209
19210 /* dwarf2_name had to be already called. */
19211 gdb_assert (DW_STRING_IS_CANONICAL (attr));
19212
19213 /* Strip the base name, keep any leading namespaces/classes. */
19214 base = strrchr (DW_STRING (attr), ':');
19215 if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
19216 return "";
19217
34a68019 19218 return obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb 19219 DW_STRING (attr), &base[-1] - DW_STRING (attr));
96408a79
SA
19220}
19221
fdde2d81 19222/* Return the name of the namespace/class that DIE is defined within,
0114d602 19223 or "" if we can't tell. The caller should not xfree the result.
fdde2d81 19224
0114d602
DJ
19225 For example, if we're within the method foo() in the following
19226 code:
19227
19228 namespace N {
19229 class C {
19230 void foo () {
19231 }
19232 };
19233 }
19234
19235 then determine_prefix on foo's die will return "N::C". */
fdde2d81 19236
0d5cff50 19237static const char *
e142c38c 19238determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
63d06c5c 19239{
0114d602
DJ
19240 struct die_info *parent, *spec_die;
19241 struct dwarf2_cu *spec_cu;
19242 struct type *parent_type;
96408a79 19243 char *retval;
63d06c5c 19244
f55ee35c 19245 if (cu->language != language_cplus && cu->language != language_java
45280282 19246 && cu->language != language_fortran && cu->language != language_d)
0114d602
DJ
19247 return "";
19248
96408a79
SA
19249 retval = anonymous_struct_prefix (die, cu);
19250 if (retval)
19251 return retval;
19252
0114d602
DJ
19253 /* We have to be careful in the presence of DW_AT_specification.
19254 For example, with GCC 3.4, given the code
19255
19256 namespace N {
19257 void foo() {
19258 // Definition of N::foo.
19259 }
19260 }
19261
19262 then we'll have a tree of DIEs like this:
19263
19264 1: DW_TAG_compile_unit
19265 2: DW_TAG_namespace // N
19266 3: DW_TAG_subprogram // declaration of N::foo
19267 4: DW_TAG_subprogram // definition of N::foo
19268 DW_AT_specification // refers to die #3
19269
19270 Thus, when processing die #4, we have to pretend that we're in
19271 the context of its DW_AT_specification, namely the contex of die
19272 #3. */
19273 spec_cu = cu;
19274 spec_die = die_specification (die, &spec_cu);
19275 if (spec_die == NULL)
19276 parent = die->parent;
19277 else
63d06c5c 19278 {
0114d602
DJ
19279 parent = spec_die->parent;
19280 cu = spec_cu;
63d06c5c 19281 }
0114d602
DJ
19282
19283 if (parent == NULL)
19284 return "";
98bfdba5
PA
19285 else if (parent->building_fullname)
19286 {
19287 const char *name;
19288 const char *parent_name;
19289
19290 /* It has been seen on RealView 2.2 built binaries,
19291 DW_TAG_template_type_param types actually _defined_ as
19292 children of the parent class:
19293
19294 enum E {};
19295 template class <class Enum> Class{};
19296 Class<enum E> class_e;
19297
19298 1: DW_TAG_class_type (Class)
19299 2: DW_TAG_enumeration_type (E)
19300 3: DW_TAG_enumerator (enum1:0)
19301 3: DW_TAG_enumerator (enum2:1)
19302 ...
19303 2: DW_TAG_template_type_param
19304 DW_AT_type DW_FORM_ref_udata (E)
19305
19306 Besides being broken debug info, it can put GDB into an
19307 infinite loop. Consider:
19308
19309 When we're building the full name for Class<E>, we'll start
19310 at Class, and go look over its template type parameters,
19311 finding E. We'll then try to build the full name of E, and
19312 reach here. We're now trying to build the full name of E,
19313 and look over the parent DIE for containing scope. In the
19314 broken case, if we followed the parent DIE of E, we'd again
19315 find Class, and once again go look at its template type
19316 arguments, etc., etc. Simply don't consider such parent die
19317 as source-level parent of this die (it can't be, the language
19318 doesn't allow it), and break the loop here. */
19319 name = dwarf2_name (die, cu);
19320 parent_name = dwarf2_name (parent, cu);
19321 complaint (&symfile_complaints,
19322 _("template param type '%s' defined within parent '%s'"),
19323 name ? name : "<unknown>",
19324 parent_name ? parent_name : "<unknown>");
19325 return "";
19326 }
63d06c5c 19327 else
0114d602
DJ
19328 switch (parent->tag)
19329 {
63d06c5c 19330 case DW_TAG_namespace:
0114d602 19331 parent_type = read_type_die (parent, cu);
acebe513
UW
19332 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
19333 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
19334 Work around this problem here. */
19335 if (cu->language == language_cplus
19336 && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
19337 return "";
0114d602
DJ
19338 /* We give a name to even anonymous namespaces. */
19339 return TYPE_TAG_NAME (parent_type);
63d06c5c 19340 case DW_TAG_class_type:
680b30c7 19341 case DW_TAG_interface_type:
63d06c5c 19342 case DW_TAG_structure_type:
0114d602 19343 case DW_TAG_union_type:
f55ee35c 19344 case DW_TAG_module:
0114d602
DJ
19345 parent_type = read_type_die (parent, cu);
19346 if (TYPE_TAG_NAME (parent_type) != NULL)
19347 return TYPE_TAG_NAME (parent_type);
19348 else
19349 /* An anonymous structure is only allowed non-static data
19350 members; no typedefs, no member functions, et cetera.
19351 So it does not need a prefix. */
19352 return "";
abc72ce4 19353 case DW_TAG_compile_unit:
95554aad 19354 case DW_TAG_partial_unit:
abc72ce4
DE
19355 /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace. Cope. */
19356 if (cu->language == language_cplus
8b70b953 19357 && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
abc72ce4
DE
19358 && die->child != NULL
19359 && (die->tag == DW_TAG_class_type
19360 || die->tag == DW_TAG_structure_type
19361 || die->tag == DW_TAG_union_type))
19362 {
19363 char *name = guess_full_die_structure_name (die, cu);
19364 if (name != NULL)
19365 return name;
19366 }
19367 return "";
3d567982
TT
19368 case DW_TAG_enumeration_type:
19369 parent_type = read_type_die (parent, cu);
19370 if (TYPE_DECLARED_CLASS (parent_type))
19371 {
19372 if (TYPE_TAG_NAME (parent_type) != NULL)
19373 return TYPE_TAG_NAME (parent_type);
19374 return "";
19375 }
19376 /* Fall through. */
63d06c5c 19377 default:
8176b9b8 19378 return determine_prefix (parent, cu);
63d06c5c 19379 }
63d06c5c
DC
19380}
19381
3e43a32a
MS
19382/* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
19383 with appropriate separator. If PREFIX or SUFFIX is NULL or empty, then
19384 simply copy the SUFFIX or PREFIX, respectively. If OBS is non-null, perform
19385 an obconcat, otherwise allocate storage for the result. The CU argument is
19386 used to determine the language and hence, the appropriate separator. */
987504bb 19387
f55ee35c 19388#define MAX_SEP_LEN 7 /* strlen ("__") + strlen ("_MOD_") */
63d06c5c
DC
19389
19390static char *
f55ee35c
JK
19391typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
19392 int physname, struct dwarf2_cu *cu)
63d06c5c 19393{
f55ee35c 19394 const char *lead = "";
5c315b68 19395 const char *sep;
63d06c5c 19396
3e43a32a
MS
19397 if (suffix == NULL || suffix[0] == '\0'
19398 || prefix == NULL || prefix[0] == '\0')
987504bb
JJ
19399 sep = "";
19400 else if (cu->language == language_java)
19401 sep = ".";
45280282
IB
19402 else if (cu->language == language_d)
19403 {
19404 /* For D, the 'main' function could be defined in any module, but it
19405 should never be prefixed. */
19406 if (strcmp (suffix, "D main") == 0)
19407 {
19408 prefix = "";
19409 sep = "";
19410 }
19411 else
19412 sep = ".";
19413 }
f55ee35c
JK
19414 else if (cu->language == language_fortran && physname)
19415 {
19416 /* This is gfortran specific mangling. Normally DW_AT_linkage_name or
19417 DW_AT_MIPS_linkage_name is preferred and used instead. */
19418
19419 lead = "__";
19420 sep = "_MOD_";
19421 }
987504bb
JJ
19422 else
19423 sep = "::";
63d06c5c 19424
6dd47d34
DE
19425 if (prefix == NULL)
19426 prefix = "";
19427 if (suffix == NULL)
19428 suffix = "";
19429
987504bb
JJ
19430 if (obs == NULL)
19431 {
3e43a32a
MS
19432 char *retval
19433 = xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1);
9a619af0 19434
f55ee35c
JK
19435 strcpy (retval, lead);
19436 strcat (retval, prefix);
6dd47d34
DE
19437 strcat (retval, sep);
19438 strcat (retval, suffix);
63d06c5c
DC
19439 return retval;
19440 }
987504bb
JJ
19441 else
19442 {
19443 /* We have an obstack. */
f55ee35c 19444 return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
987504bb 19445 }
63d06c5c
DC
19446}
19447
c906108c
SS
19448/* Return sibling of die, NULL if no sibling. */
19449
f9aca02d 19450static struct die_info *
fba45db2 19451sibling_die (struct die_info *die)
c906108c 19452{
639d11d3 19453 return die->sibling;
c906108c
SS
19454}
19455
71c25dea
TT
19456/* Get name of a die, return NULL if not found. */
19457
15d034d0
TT
19458static const char *
19459dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
71c25dea
TT
19460 struct obstack *obstack)
19461{
19462 if (name && cu->language == language_cplus)
19463 {
19464 char *canon_name = cp_canonicalize_string (name);
19465
19466 if (canon_name != NULL)
19467 {
19468 if (strcmp (canon_name, name) != 0)
10f0c4bb 19469 name = obstack_copy0 (obstack, canon_name, strlen (canon_name));
71c25dea
TT
19470 xfree (canon_name);
19471 }
19472 }
19473
19474 return name;
c906108c
SS
19475}
19476
96553a0c
DE
19477/* Get name of a die, return NULL if not found.
19478 Anonymous namespaces are converted to their magic string. */
9219021c 19479
15d034d0 19480static const char *
e142c38c 19481dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
9219021c
DC
19482{
19483 struct attribute *attr;
19484
e142c38c 19485 attr = dwarf2_attr (die, DW_AT_name, cu);
53832f31 19486 if ((!attr || !DW_STRING (attr))
96553a0c 19487 && die->tag != DW_TAG_namespace
53832f31
TT
19488 && die->tag != DW_TAG_class_type
19489 && die->tag != DW_TAG_interface_type
19490 && die->tag != DW_TAG_structure_type
19491 && die->tag != DW_TAG_union_type)
71c25dea
TT
19492 return NULL;
19493
19494 switch (die->tag)
19495 {
19496 case DW_TAG_compile_unit:
95554aad 19497 case DW_TAG_partial_unit:
71c25dea
TT
19498 /* Compilation units have a DW_AT_name that is a filename, not
19499 a source language identifier. */
19500 case DW_TAG_enumeration_type:
19501 case DW_TAG_enumerator:
19502 /* These tags always have simple identifiers already; no need
19503 to canonicalize them. */
19504 return DW_STRING (attr);
907af001 19505
96553a0c
DE
19506 case DW_TAG_namespace:
19507 if (attr != NULL && DW_STRING (attr) != NULL)
19508 return DW_STRING (attr);
19509 return CP_ANONYMOUS_NAMESPACE_STR;
19510
418835cc
KS
19511 case DW_TAG_subprogram:
19512 /* Java constructors will all be named "<init>", so return
19513 the class name when we see this special case. */
19514 if (cu->language == language_java
19515 && DW_STRING (attr) != NULL
19516 && strcmp (DW_STRING (attr), "<init>") == 0)
19517 {
19518 struct dwarf2_cu *spec_cu = cu;
19519 struct die_info *spec_die;
19520
19521 /* GCJ will output '<init>' for Java constructor names.
19522 For this special case, return the name of the parent class. */
19523
cdc07690 19524 /* GCJ may output subprogram DIEs with AT_specification set.
418835cc
KS
19525 If so, use the name of the specified DIE. */
19526 spec_die = die_specification (die, &spec_cu);
19527 if (spec_die != NULL)
19528 return dwarf2_name (spec_die, spec_cu);
19529
19530 do
19531 {
19532 die = die->parent;
19533 if (die->tag == DW_TAG_class_type)
19534 return dwarf2_name (die, cu);
19535 }
95554aad
TT
19536 while (die->tag != DW_TAG_compile_unit
19537 && die->tag != DW_TAG_partial_unit);
418835cc 19538 }
907af001
UW
19539 break;
19540
19541 case DW_TAG_class_type:
19542 case DW_TAG_interface_type:
19543 case DW_TAG_structure_type:
19544 case DW_TAG_union_type:
19545 /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
19546 structures or unions. These were of the form "._%d" in GCC 4.1,
19547 or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
19548 and GCC 4.4. We work around this problem by ignoring these. */
53832f31 19549 if (attr && DW_STRING (attr)
61012eef
GB
19550 && (startswith (DW_STRING (attr), "._")
19551 || startswith (DW_STRING (attr), "<anonymous")))
907af001 19552 return NULL;
53832f31
TT
19553
19554 /* GCC might emit a nameless typedef that has a linkage name. See
19555 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
19556 if (!attr || DW_STRING (attr) == NULL)
19557 {
df5c6c50 19558 char *demangled = NULL;
53832f31
TT
19559
19560 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19561 if (attr == NULL)
19562 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19563
19564 if (attr == NULL || DW_STRING (attr) == NULL)
19565 return NULL;
19566
df5c6c50
JK
19567 /* Avoid demangling DW_STRING (attr) the second time on a second
19568 call for the same DIE. */
19569 if (!DW_STRING_IS_CANONICAL (attr))
8de20a37 19570 demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
53832f31
TT
19571
19572 if (demangled)
19573 {
96408a79
SA
19574 char *base;
19575
53832f31 19576 /* FIXME: we already did this for the partial symbol... */
34a68019
TT
19577 DW_STRING (attr)
19578 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
19579 demangled, strlen (demangled));
53832f31
TT
19580 DW_STRING_IS_CANONICAL (attr) = 1;
19581 xfree (demangled);
96408a79
SA
19582
19583 /* Strip any leading namespaces/classes, keep only the base name.
19584 DW_AT_name for named DIEs does not contain the prefixes. */
19585 base = strrchr (DW_STRING (attr), ':');
19586 if (base && base > DW_STRING (attr) && base[-1] == ':')
19587 return &base[1];
19588 else
19589 return DW_STRING (attr);
53832f31
TT
19590 }
19591 }
907af001
UW
19592 break;
19593
71c25dea 19594 default:
907af001
UW
19595 break;
19596 }
19597
19598 if (!DW_STRING_IS_CANONICAL (attr))
19599 {
19600 DW_STRING (attr)
19601 = dwarf2_canonicalize_name (DW_STRING (attr), cu,
34a68019 19602 &cu->objfile->per_bfd->storage_obstack);
907af001 19603 DW_STRING_IS_CANONICAL (attr) = 1;
71c25dea 19604 }
907af001 19605 return DW_STRING (attr);
9219021c
DC
19606}
19607
19608/* Return the die that this die in an extension of, or NULL if there
f2f0e013
DJ
19609 is none. *EXT_CU is the CU containing DIE on input, and the CU
19610 containing the return value on output. */
9219021c
DC
19611
19612static struct die_info *
f2f0e013 19613dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
9219021c
DC
19614{
19615 struct attribute *attr;
9219021c 19616
f2f0e013 19617 attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
9219021c
DC
19618 if (attr == NULL)
19619 return NULL;
19620
f2f0e013 19621 return follow_die_ref (die, attr, ext_cu);
9219021c
DC
19622}
19623
c906108c
SS
19624/* Convert a DIE tag into its string name. */
19625
f39c6ffd 19626static const char *
aa1ee363 19627dwarf_tag_name (unsigned tag)
c906108c 19628{
f39c6ffd
TT
19629 const char *name = get_DW_TAG_name (tag);
19630
19631 if (name == NULL)
19632 return "DW_TAG_<unknown>";
19633
19634 return name;
c906108c
SS
19635}
19636
19637/* Convert a DWARF attribute code into its string name. */
19638
f39c6ffd 19639static const char *
aa1ee363 19640dwarf_attr_name (unsigned attr)
c906108c 19641{
f39c6ffd
TT
19642 const char *name;
19643
c764a876 19644#ifdef MIPS /* collides with DW_AT_HP_block_index */
f39c6ffd
TT
19645 if (attr == DW_AT_MIPS_fde)
19646 return "DW_AT_MIPS_fde";
19647#else
19648 if (attr == DW_AT_HP_block_index)
19649 return "DW_AT_HP_block_index";
c764a876 19650#endif
f39c6ffd
TT
19651
19652 name = get_DW_AT_name (attr);
19653
19654 if (name == NULL)
19655 return "DW_AT_<unknown>";
19656
19657 return name;
c906108c
SS
19658}
19659
19660/* Convert a DWARF value form code into its string name. */
19661
f39c6ffd 19662static const char *
aa1ee363 19663dwarf_form_name (unsigned form)
c906108c 19664{
f39c6ffd
TT
19665 const char *name = get_DW_FORM_name (form);
19666
19667 if (name == NULL)
19668 return "DW_FORM_<unknown>";
19669
19670 return name;
c906108c
SS
19671}
19672
19673static char *
fba45db2 19674dwarf_bool_name (unsigned mybool)
c906108c
SS
19675{
19676 if (mybool)
19677 return "TRUE";
19678 else
19679 return "FALSE";
19680}
19681
19682/* Convert a DWARF type code into its string name. */
19683
f39c6ffd 19684static const char *
aa1ee363 19685dwarf_type_encoding_name (unsigned enc)
c906108c 19686{
f39c6ffd 19687 const char *name = get_DW_ATE_name (enc);
c906108c 19688
f39c6ffd
TT
19689 if (name == NULL)
19690 return "DW_ATE_<unknown>";
c906108c 19691
f39c6ffd 19692 return name;
c906108c 19693}
c906108c 19694
f9aca02d 19695static void
d97bc12b 19696dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
c906108c
SS
19697{
19698 unsigned int i;
19699
d97bc12b
DE
19700 print_spaces (indent, f);
19701 fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
b64f50a1 19702 dwarf_tag_name (die->tag), die->abbrev, die->offset.sect_off);
d97bc12b
DE
19703
19704 if (die->parent != NULL)
19705 {
19706 print_spaces (indent, f);
19707 fprintf_unfiltered (f, " parent at offset: 0x%x\n",
b64f50a1 19708 die->parent->offset.sect_off);
d97bc12b
DE
19709 }
19710
19711 print_spaces (indent, f);
19712 fprintf_unfiltered (f, " has children: %s\n",
639d11d3 19713 dwarf_bool_name (die->child != NULL));
c906108c 19714
d97bc12b
DE
19715 print_spaces (indent, f);
19716 fprintf_unfiltered (f, " attributes:\n");
19717
c906108c
SS
19718 for (i = 0; i < die->num_attrs; ++i)
19719 {
d97bc12b
DE
19720 print_spaces (indent, f);
19721 fprintf_unfiltered (f, " %s (%s) ",
c906108c
SS
19722 dwarf_attr_name (die->attrs[i].name),
19723 dwarf_form_name (die->attrs[i].form));
d97bc12b 19724
c906108c
SS
19725 switch (die->attrs[i].form)
19726 {
c906108c 19727 case DW_FORM_addr:
3019eac3 19728 case DW_FORM_GNU_addr_index:
d97bc12b 19729 fprintf_unfiltered (f, "address: ");
5af949e3 19730 fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
c906108c
SS
19731 break;
19732 case DW_FORM_block2:
19733 case DW_FORM_block4:
19734 case DW_FORM_block:
19735 case DW_FORM_block1:
56eb65bd
SP
19736 fprintf_unfiltered (f, "block: size %s",
19737 pulongest (DW_BLOCK (&die->attrs[i])->size));
c906108c 19738 break;
2dc7f7b3 19739 case DW_FORM_exprloc:
56eb65bd
SP
19740 fprintf_unfiltered (f, "expression: size %s",
19741 pulongest (DW_BLOCK (&die->attrs[i])->size));
2dc7f7b3 19742 break;
4568ecf9
DE
19743 case DW_FORM_ref_addr:
19744 fprintf_unfiltered (f, "ref address: ");
19745 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19746 break;
36586728
TT
19747 case DW_FORM_GNU_ref_alt:
19748 fprintf_unfiltered (f, "alt ref address: ");
19749 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19750 break;
10b3939b
DJ
19751 case DW_FORM_ref1:
19752 case DW_FORM_ref2:
19753 case DW_FORM_ref4:
4568ecf9
DE
19754 case DW_FORM_ref8:
19755 case DW_FORM_ref_udata:
d97bc12b 19756 fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
4568ecf9 19757 (long) (DW_UNSND (&die->attrs[i])));
10b3939b 19758 break;
c906108c
SS
19759 case DW_FORM_data1:
19760 case DW_FORM_data2:
19761 case DW_FORM_data4:
ce5d95e1 19762 case DW_FORM_data8:
c906108c
SS
19763 case DW_FORM_udata:
19764 case DW_FORM_sdata:
43bbcdc2
PH
19765 fprintf_unfiltered (f, "constant: %s",
19766 pulongest (DW_UNSND (&die->attrs[i])));
c906108c 19767 break;
2dc7f7b3
TT
19768 case DW_FORM_sec_offset:
19769 fprintf_unfiltered (f, "section offset: %s",
19770 pulongest (DW_UNSND (&die->attrs[i])));
19771 break;
55f1336d 19772 case DW_FORM_ref_sig8:
ac9ec31b
DE
19773 fprintf_unfiltered (f, "signature: %s",
19774 hex_string (DW_SIGNATURE (&die->attrs[i])));
348e048f 19775 break;
c906108c 19776 case DW_FORM_string:
4bdf3d34 19777 case DW_FORM_strp:
3019eac3 19778 case DW_FORM_GNU_str_index:
36586728 19779 case DW_FORM_GNU_strp_alt:
8285870a 19780 fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
c906108c 19781 DW_STRING (&die->attrs[i])
8285870a
JK
19782 ? DW_STRING (&die->attrs[i]) : "",
19783 DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
c906108c
SS
19784 break;
19785 case DW_FORM_flag:
19786 if (DW_UNSND (&die->attrs[i]))
d97bc12b 19787 fprintf_unfiltered (f, "flag: TRUE");
c906108c 19788 else
d97bc12b 19789 fprintf_unfiltered (f, "flag: FALSE");
c906108c 19790 break;
2dc7f7b3
TT
19791 case DW_FORM_flag_present:
19792 fprintf_unfiltered (f, "flag: TRUE");
19793 break;
a8329558 19794 case DW_FORM_indirect:
0963b4bd
MS
19795 /* The reader will have reduced the indirect form to
19796 the "base form" so this form should not occur. */
3e43a32a
MS
19797 fprintf_unfiltered (f,
19798 "unexpected attribute form: DW_FORM_indirect");
a8329558 19799 break;
c906108c 19800 default:
d97bc12b 19801 fprintf_unfiltered (f, "unsupported attribute form: %d.",
c5aa993b 19802 die->attrs[i].form);
d97bc12b 19803 break;
c906108c 19804 }
d97bc12b 19805 fprintf_unfiltered (f, "\n");
c906108c
SS
19806 }
19807}
19808
f9aca02d 19809static void
d97bc12b 19810dump_die_for_error (struct die_info *die)
c906108c 19811{
d97bc12b
DE
19812 dump_die_shallow (gdb_stderr, 0, die);
19813}
19814
19815static void
19816dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
19817{
19818 int indent = level * 4;
19819
19820 gdb_assert (die != NULL);
19821
19822 if (level >= max_level)
19823 return;
19824
19825 dump_die_shallow (f, indent, die);
19826
19827 if (die->child != NULL)
c906108c 19828 {
d97bc12b
DE
19829 print_spaces (indent, f);
19830 fprintf_unfiltered (f, " Children:");
19831 if (level + 1 < max_level)
19832 {
19833 fprintf_unfiltered (f, "\n");
19834 dump_die_1 (f, level + 1, max_level, die->child);
19835 }
19836 else
19837 {
3e43a32a
MS
19838 fprintf_unfiltered (f,
19839 " [not printed, max nesting level reached]\n");
d97bc12b
DE
19840 }
19841 }
19842
19843 if (die->sibling != NULL && level > 0)
19844 {
19845 dump_die_1 (f, level, max_level, die->sibling);
c906108c
SS
19846 }
19847}
19848
d97bc12b
DE
19849/* This is called from the pdie macro in gdbinit.in.
19850 It's not static so gcc will keep a copy callable from gdb. */
19851
19852void
19853dump_die (struct die_info *die, int max_level)
19854{
19855 dump_die_1 (gdb_stdlog, 0, max_level, die);
19856}
19857
f9aca02d 19858static void
51545339 19859store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
c906108c 19860{
51545339 19861 void **slot;
c906108c 19862
b64f50a1
JK
19863 slot = htab_find_slot_with_hash (cu->die_hash, die, die->offset.sect_off,
19864 INSERT);
51545339
DJ
19865
19866 *slot = die;
c906108c
SS
19867}
19868
b64f50a1
JK
19869/* Return DIE offset of ATTR. Return 0 with complaint if ATTR is not of the
19870 required kind. */
19871
19872static sect_offset
ff39bb5e 19873dwarf2_get_ref_die_offset (const struct attribute *attr)
93311388 19874{
4568ecf9 19875 sect_offset retval = { DW_UNSND (attr) };
b64f50a1 19876
7771576e 19877 if (attr_form_is_ref (attr))
b64f50a1 19878 return retval;
93311388 19879
b64f50a1 19880 retval.sect_off = 0;
93311388
DE
19881 complaint (&symfile_complaints,
19882 _("unsupported die ref attribute form: '%s'"),
19883 dwarf_form_name (attr->form));
b64f50a1 19884 return retval;
c906108c
SS
19885}
19886
43bbcdc2
PH
19887/* Return the constant value held by ATTR. Return DEFAULT_VALUE if
19888 * the value held by the attribute is not constant. */
a02abb62 19889
43bbcdc2 19890static LONGEST
ff39bb5e 19891dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
a02abb62
JB
19892{
19893 if (attr->form == DW_FORM_sdata)
19894 return DW_SND (attr);
19895 else if (attr->form == DW_FORM_udata
19896 || attr->form == DW_FORM_data1
19897 || attr->form == DW_FORM_data2
19898 || attr->form == DW_FORM_data4
19899 || attr->form == DW_FORM_data8)
19900 return DW_UNSND (attr);
19901 else
19902 {
3e43a32a
MS
19903 complaint (&symfile_complaints,
19904 _("Attribute value is not a constant (%s)"),
a02abb62
JB
19905 dwarf_form_name (attr->form));
19906 return default_value;
19907 }
19908}
19909
348e048f
DE
19910/* Follow reference or signature attribute ATTR of SRC_DIE.
19911 On entry *REF_CU is the CU of SRC_DIE.
19912 On exit *REF_CU is the CU of the result. */
19913
19914static struct die_info *
ff39bb5e 19915follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
348e048f
DE
19916 struct dwarf2_cu **ref_cu)
19917{
19918 struct die_info *die;
19919
7771576e 19920 if (attr_form_is_ref (attr))
348e048f 19921 die = follow_die_ref (src_die, attr, ref_cu);
55f1336d 19922 else if (attr->form == DW_FORM_ref_sig8)
348e048f
DE
19923 die = follow_die_sig (src_die, attr, ref_cu);
19924 else
19925 {
19926 dump_die_for_error (src_die);
19927 error (_("Dwarf Error: Expected reference attribute [in module %s]"),
4262abfb 19928 objfile_name ((*ref_cu)->objfile));
348e048f
DE
19929 }
19930
19931 return die;
03dd20cc
DJ
19932}
19933
5c631832 19934/* Follow reference OFFSET.
673bfd45
DE
19935 On entry *REF_CU is the CU of the source die referencing OFFSET.
19936 On exit *REF_CU is the CU of the result.
19937 Returns NULL if OFFSET is invalid. */
f504f079 19938
f9aca02d 19939static struct die_info *
36586728
TT
19940follow_die_offset (sect_offset offset, int offset_in_dwz,
19941 struct dwarf2_cu **ref_cu)
c906108c 19942{
10b3939b 19943 struct die_info temp_die;
f2f0e013 19944 struct dwarf2_cu *target_cu, *cu = *ref_cu;
10b3939b 19945
348e048f
DE
19946 gdb_assert (cu->per_cu != NULL);
19947
98bfdba5
PA
19948 target_cu = cu;
19949
3019eac3 19950 if (cu->per_cu->is_debug_types)
348e048f
DE
19951 {
19952 /* .debug_types CUs cannot reference anything outside their CU.
19953 If they need to, they have to reference a signatured type via
55f1336d 19954 DW_FORM_ref_sig8. */
348e048f 19955 if (! offset_in_cu_p (&cu->header, offset))
5c631832 19956 return NULL;
348e048f 19957 }
36586728
TT
19958 else if (offset_in_dwz != cu->per_cu->is_dwz
19959 || ! offset_in_cu_p (&cu->header, offset))
10b3939b
DJ
19960 {
19961 struct dwarf2_per_cu_data *per_cu;
9a619af0 19962
36586728
TT
19963 per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
19964 cu->objfile);
03dd20cc
DJ
19965
19966 /* If necessary, add it to the queue and load its DIEs. */
95554aad
TT
19967 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
19968 load_full_comp_unit (per_cu, cu->language);
03dd20cc 19969
10b3939b
DJ
19970 target_cu = per_cu->cu;
19971 }
98bfdba5
PA
19972 else if (cu->dies == NULL)
19973 {
19974 /* We're loading full DIEs during partial symbol reading. */
19975 gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
95554aad 19976 load_full_comp_unit (cu->per_cu, language_minimal);
98bfdba5 19977 }
c906108c 19978
f2f0e013 19979 *ref_cu = target_cu;
51545339 19980 temp_die.offset = offset;
b64f50a1 19981 return htab_find_with_hash (target_cu->die_hash, &temp_die, offset.sect_off);
5c631832 19982}
10b3939b 19983
5c631832
JK
19984/* Follow reference attribute ATTR of SRC_DIE.
19985 On entry *REF_CU is the CU of SRC_DIE.
19986 On exit *REF_CU is the CU of the result. */
19987
19988static struct die_info *
ff39bb5e 19989follow_die_ref (struct die_info *src_die, const struct attribute *attr,
5c631832
JK
19990 struct dwarf2_cu **ref_cu)
19991{
b64f50a1 19992 sect_offset offset = dwarf2_get_ref_die_offset (attr);
5c631832
JK
19993 struct dwarf2_cu *cu = *ref_cu;
19994 struct die_info *die;
19995
36586728
TT
19996 die = follow_die_offset (offset,
19997 (attr->form == DW_FORM_GNU_ref_alt
19998 || cu->per_cu->is_dwz),
19999 ref_cu);
5c631832
JK
20000 if (!die)
20001 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
20002 "at 0x%x [in module %s]"),
4262abfb
JK
20003 offset.sect_off, src_die->offset.sect_off,
20004 objfile_name (cu->objfile));
348e048f 20005
5c631832
JK
20006 return die;
20007}
20008
d83e736b
JK
20009/* Return DWARF block referenced by DW_AT_location of DIE at OFFSET at PER_CU.
20010 Returned value is intended for DW_OP_call*. Returned
20011 dwarf2_locexpr_baton->data has lifetime of PER_CU->OBJFILE. */
5c631832
JK
20012
20013struct dwarf2_locexpr_baton
8b9737bf
TT
20014dwarf2_fetch_die_loc_sect_off (sect_offset offset,
20015 struct dwarf2_per_cu_data *per_cu,
20016 CORE_ADDR (*get_frame_pc) (void *baton),
20017 void *baton)
5c631832 20018{
918dd910 20019 struct dwarf2_cu *cu;
5c631832
JK
20020 struct die_info *die;
20021 struct attribute *attr;
20022 struct dwarf2_locexpr_baton retval;
20023
8cf6f0b1
TT
20024 dw2_setup (per_cu->objfile);
20025
918dd910
JK
20026 if (per_cu->cu == NULL)
20027 load_cu (per_cu);
20028 cu = per_cu->cu;
cc12ce38
DE
20029 if (cu == NULL)
20030 {
20031 /* We shouldn't get here for a dummy CU, but don't crash on the user.
20032 Instead just throw an error, not much else we can do. */
20033 error (_("Dwarf Error: Dummy CU at 0x%x referenced in module %s"),
20034 offset.sect_off, objfile_name (per_cu->objfile));
20035 }
918dd910 20036
36586728 20037 die = follow_die_offset (offset, per_cu->is_dwz, &cu);
5c631832
JK
20038 if (!die)
20039 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
4262abfb 20040 offset.sect_off, objfile_name (per_cu->objfile));
5c631832
JK
20041
20042 attr = dwarf2_attr (die, DW_AT_location, cu);
20043 if (!attr)
20044 {
e103e986
JK
20045 /* DWARF: "If there is no such attribute, then there is no effect.".
20046 DATA is ignored if SIZE is 0. */
5c631832 20047
e103e986 20048 retval.data = NULL;
5c631832
JK
20049 retval.size = 0;
20050 }
8cf6f0b1
TT
20051 else if (attr_form_is_section_offset (attr))
20052 {
20053 struct dwarf2_loclist_baton loclist_baton;
20054 CORE_ADDR pc = (*get_frame_pc) (baton);
20055 size_t size;
20056
20057 fill_in_loclist_baton (cu, &loclist_baton, attr);
20058
20059 retval.data = dwarf2_find_location_expression (&loclist_baton,
20060 &size, pc);
20061 retval.size = size;
20062 }
5c631832
JK
20063 else
20064 {
20065 if (!attr_form_is_block (attr))
20066 error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
20067 "is neither DW_FORM_block* nor DW_FORM_exprloc"),
4262abfb 20068 offset.sect_off, objfile_name (per_cu->objfile));
5c631832
JK
20069
20070 retval.data = DW_BLOCK (attr)->data;
20071 retval.size = DW_BLOCK (attr)->size;
20072 }
20073 retval.per_cu = cu->per_cu;
918dd910 20074
918dd910
JK
20075 age_cached_comp_units ();
20076
5c631832 20077 return retval;
348e048f
DE
20078}
20079
8b9737bf
TT
20080/* Like dwarf2_fetch_die_loc_sect_off, but take a CU
20081 offset. */
20082
20083struct dwarf2_locexpr_baton
20084dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
20085 struct dwarf2_per_cu_data *per_cu,
20086 CORE_ADDR (*get_frame_pc) (void *baton),
20087 void *baton)
20088{
20089 sect_offset offset = { per_cu->offset.sect_off + offset_in_cu.cu_off };
20090
20091 return dwarf2_fetch_die_loc_sect_off (offset, per_cu, get_frame_pc, baton);
20092}
20093
b6807d98
TT
20094/* Write a constant of a given type as target-ordered bytes into
20095 OBSTACK. */
20096
20097static const gdb_byte *
20098write_constant_as_bytes (struct obstack *obstack,
20099 enum bfd_endian byte_order,
20100 struct type *type,
20101 ULONGEST value,
20102 LONGEST *len)
20103{
20104 gdb_byte *result;
20105
20106 *len = TYPE_LENGTH (type);
20107 result = obstack_alloc (obstack, *len);
20108 store_unsigned_integer (result, *len, byte_order, value);
20109
20110 return result;
20111}
20112
20113/* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
20114 pointer to the constant bytes and set LEN to the length of the
20115 data. If memory is needed, allocate it on OBSTACK. If the DIE
20116 does not have a DW_AT_const_value, return NULL. */
20117
20118const gdb_byte *
20119dwarf2_fetch_constant_bytes (sect_offset offset,
20120 struct dwarf2_per_cu_data *per_cu,
20121 struct obstack *obstack,
20122 LONGEST *len)
20123{
20124 struct dwarf2_cu *cu;
20125 struct die_info *die;
20126 struct attribute *attr;
20127 const gdb_byte *result = NULL;
20128 struct type *type;
20129 LONGEST value;
20130 enum bfd_endian byte_order;
20131
20132 dw2_setup (per_cu->objfile);
20133
20134 if (per_cu->cu == NULL)
20135 load_cu (per_cu);
20136 cu = per_cu->cu;
cc12ce38
DE
20137 if (cu == NULL)
20138 {
20139 /* We shouldn't get here for a dummy CU, but don't crash on the user.
20140 Instead just throw an error, not much else we can do. */
20141 error (_("Dwarf Error: Dummy CU at 0x%x referenced in module %s"),
20142 offset.sect_off, objfile_name (per_cu->objfile));
20143 }
b6807d98
TT
20144
20145 die = follow_die_offset (offset, per_cu->is_dwz, &cu);
20146 if (!die)
20147 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
4262abfb 20148 offset.sect_off, objfile_name (per_cu->objfile));
b6807d98
TT
20149
20150
20151 attr = dwarf2_attr (die, DW_AT_const_value, cu);
20152 if (attr == NULL)
20153 return NULL;
20154
20155 byte_order = (bfd_big_endian (per_cu->objfile->obfd)
20156 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
20157
20158 switch (attr->form)
20159 {
20160 case DW_FORM_addr:
20161 case DW_FORM_GNU_addr_index:
20162 {
20163 gdb_byte *tem;
20164
20165 *len = cu->header.addr_size;
20166 tem = obstack_alloc (obstack, *len);
20167 store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
20168 result = tem;
20169 }
20170 break;
20171 case DW_FORM_string:
20172 case DW_FORM_strp:
20173 case DW_FORM_GNU_str_index:
20174 case DW_FORM_GNU_strp_alt:
20175 /* DW_STRING is already allocated on the objfile obstack, point
20176 directly to it. */
20177 result = (const gdb_byte *) DW_STRING (attr);
20178 *len = strlen (DW_STRING (attr));
20179 break;
20180 case DW_FORM_block1:
20181 case DW_FORM_block2:
20182 case DW_FORM_block4:
20183 case DW_FORM_block:
20184 case DW_FORM_exprloc:
20185 result = DW_BLOCK (attr)->data;
20186 *len = DW_BLOCK (attr)->size;
20187 break;
20188
20189 /* The DW_AT_const_value attributes are supposed to carry the
20190 symbol's value "represented as it would be on the target
20191 architecture." By the time we get here, it's already been
20192 converted to host endianness, so we just need to sign- or
20193 zero-extend it as appropriate. */
20194 case DW_FORM_data1:
20195 type = die_type (die, cu);
20196 result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
20197 if (result == NULL)
20198 result = write_constant_as_bytes (obstack, byte_order,
20199 type, value, len);
20200 break;
20201 case DW_FORM_data2:
20202 type = die_type (die, cu);
20203 result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
20204 if (result == NULL)
20205 result = write_constant_as_bytes (obstack, byte_order,
20206 type, value, len);
20207 break;
20208 case DW_FORM_data4:
20209 type = die_type (die, cu);
20210 result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
20211 if (result == NULL)
20212 result = write_constant_as_bytes (obstack, byte_order,
20213 type, value, len);
20214 break;
20215 case DW_FORM_data8:
20216 type = die_type (die, cu);
20217 result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
20218 if (result == NULL)
20219 result = write_constant_as_bytes (obstack, byte_order,
20220 type, value, len);
20221 break;
20222
20223 case DW_FORM_sdata:
20224 type = die_type (die, cu);
20225 result = write_constant_as_bytes (obstack, byte_order,
20226 type, DW_SND (attr), len);
20227 break;
20228
20229 case DW_FORM_udata:
20230 type = die_type (die, cu);
20231 result = write_constant_as_bytes (obstack, byte_order,
20232 type, DW_UNSND (attr), len);
20233 break;
20234
20235 default:
20236 complaint (&symfile_complaints,
20237 _("unsupported const value attribute form: '%s'"),
20238 dwarf_form_name (attr->form));
20239 break;
20240 }
20241
20242 return result;
20243}
20244
8a9b8146
TT
20245/* Return the type of the DIE at DIE_OFFSET in the CU named by
20246 PER_CU. */
20247
20248struct type *
b64f50a1 20249dwarf2_get_die_type (cu_offset die_offset,
8a9b8146
TT
20250 struct dwarf2_per_cu_data *per_cu)
20251{
b64f50a1
JK
20252 sect_offset die_offset_sect;
20253
8a9b8146 20254 dw2_setup (per_cu->objfile);
b64f50a1
JK
20255
20256 die_offset_sect.sect_off = per_cu->offset.sect_off + die_offset.cu_off;
20257 return get_die_type_at_offset (die_offset_sect, per_cu);
8a9b8146
TT
20258}
20259
ac9ec31b 20260/* Follow type unit SIG_TYPE referenced by SRC_DIE.
348e048f 20261 On entry *REF_CU is the CU of SRC_DIE.
ac9ec31b
DE
20262 On exit *REF_CU is the CU of the result.
20263 Returns NULL if the referenced DIE isn't found. */
348e048f
DE
20264
20265static struct die_info *
ac9ec31b
DE
20266follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
20267 struct dwarf2_cu **ref_cu)
348e048f
DE
20268{
20269 struct objfile *objfile = (*ref_cu)->objfile;
20270 struct die_info temp_die;
348e048f
DE
20271 struct dwarf2_cu *sig_cu;
20272 struct die_info *die;
20273
ac9ec31b
DE
20274 /* While it might be nice to assert sig_type->type == NULL here,
20275 we can get here for DW_AT_imported_declaration where we need
20276 the DIE not the type. */
348e048f
DE
20277
20278 /* If necessary, add it to the queue and load its DIEs. */
20279
95554aad 20280 if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
a0f42c21 20281 read_signatured_type (sig_type);
348e048f 20282
348e048f 20283 sig_cu = sig_type->per_cu.cu;
69d751e3 20284 gdb_assert (sig_cu != NULL);
3019eac3
DE
20285 gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
20286 temp_die.offset = sig_type->type_offset_in_section;
b64f50a1
JK
20287 die = htab_find_with_hash (sig_cu->die_hash, &temp_die,
20288 temp_die.offset.sect_off);
348e048f
DE
20289 if (die)
20290 {
796a7ff8
DE
20291 /* For .gdb_index version 7 keep track of included TUs.
20292 http://sourceware.org/bugzilla/show_bug.cgi?id=15021. */
20293 if (dwarf2_per_objfile->index_table != NULL
20294 && dwarf2_per_objfile->index_table->version <= 7)
20295 {
20296 VEC_safe_push (dwarf2_per_cu_ptr,
20297 (*ref_cu)->per_cu->imported_symtabs,
20298 sig_cu->per_cu);
20299 }
20300
348e048f
DE
20301 *ref_cu = sig_cu;
20302 return die;
20303 }
20304
ac9ec31b
DE
20305 return NULL;
20306}
20307
20308/* Follow signatured type referenced by ATTR in SRC_DIE.
20309 On entry *REF_CU is the CU of SRC_DIE.
20310 On exit *REF_CU is the CU of the result.
20311 The result is the DIE of the type.
20312 If the referenced type cannot be found an error is thrown. */
20313
20314static struct die_info *
ff39bb5e 20315follow_die_sig (struct die_info *src_die, const struct attribute *attr,
ac9ec31b
DE
20316 struct dwarf2_cu **ref_cu)
20317{
20318 ULONGEST signature = DW_SIGNATURE (attr);
20319 struct signatured_type *sig_type;
20320 struct die_info *die;
20321
20322 gdb_assert (attr->form == DW_FORM_ref_sig8);
20323
a2ce51a0 20324 sig_type = lookup_signatured_type (*ref_cu, signature);
ac9ec31b
DE
20325 /* sig_type will be NULL if the signatured type is missing from
20326 the debug info. */
20327 if (sig_type == NULL)
20328 {
20329 error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
20330 " from DIE at 0x%x [in module %s]"),
20331 hex_string (signature), src_die->offset.sect_off,
4262abfb 20332 objfile_name ((*ref_cu)->objfile));
ac9ec31b
DE
20333 }
20334
20335 die = follow_die_sig_1 (src_die, sig_type, ref_cu);
20336 if (die == NULL)
20337 {
20338 dump_die_for_error (src_die);
20339 error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
20340 " from DIE at 0x%x [in module %s]"),
20341 hex_string (signature), src_die->offset.sect_off,
4262abfb 20342 objfile_name ((*ref_cu)->objfile));
ac9ec31b
DE
20343 }
20344
20345 return die;
20346}
20347
20348/* Get the type specified by SIGNATURE referenced in DIE/CU,
20349 reading in and processing the type unit if necessary. */
20350
20351static struct type *
20352get_signatured_type (struct die_info *die, ULONGEST signature,
20353 struct dwarf2_cu *cu)
20354{
20355 struct signatured_type *sig_type;
20356 struct dwarf2_cu *type_cu;
20357 struct die_info *type_die;
20358 struct type *type;
20359
a2ce51a0 20360 sig_type = lookup_signatured_type (cu, signature);
ac9ec31b
DE
20361 /* sig_type will be NULL if the signatured type is missing from
20362 the debug info. */
20363 if (sig_type == NULL)
20364 {
20365 complaint (&symfile_complaints,
20366 _("Dwarf Error: Cannot find signatured DIE %s referenced"
20367 " from DIE at 0x%x [in module %s]"),
20368 hex_string (signature), die->offset.sect_off,
4262abfb 20369 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20370 return build_error_marker_type (cu, die);
20371 }
20372
20373 /* If we already know the type we're done. */
20374 if (sig_type->type != NULL)
20375 return sig_type->type;
20376
20377 type_cu = cu;
20378 type_die = follow_die_sig_1 (die, sig_type, &type_cu);
20379 if (type_die != NULL)
20380 {
20381 /* N.B. We need to call get_die_type to ensure only one type for this DIE
20382 is created. This is important, for example, because for c++ classes
20383 we need TYPE_NAME set which is only done by new_symbol. Blech. */
20384 type = read_type_die (type_die, type_cu);
20385 if (type == NULL)
20386 {
20387 complaint (&symfile_complaints,
20388 _("Dwarf Error: Cannot build signatured type %s"
20389 " referenced from DIE at 0x%x [in module %s]"),
20390 hex_string (signature), die->offset.sect_off,
4262abfb 20391 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20392 type = build_error_marker_type (cu, die);
20393 }
20394 }
20395 else
20396 {
20397 complaint (&symfile_complaints,
20398 _("Dwarf Error: Problem reading signatured DIE %s referenced"
20399 " from DIE at 0x%x [in module %s]"),
20400 hex_string (signature), die->offset.sect_off,
4262abfb 20401 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20402 type = build_error_marker_type (cu, die);
20403 }
20404 sig_type->type = type;
20405
20406 return type;
20407}
20408
20409/* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
20410 reading in and processing the type unit if necessary. */
20411
20412static struct type *
ff39bb5e 20413get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
b385a60d 20414 struct dwarf2_cu *cu) /* ARI: editCase function */
ac9ec31b
DE
20415{
20416 /* Yes, DW_AT_signature can use a non-ref_sig8 reference. */
7771576e 20417 if (attr_form_is_ref (attr))
ac9ec31b
DE
20418 {
20419 struct dwarf2_cu *type_cu = cu;
20420 struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
20421
20422 return read_type_die (type_die, type_cu);
20423 }
20424 else if (attr->form == DW_FORM_ref_sig8)
20425 {
20426 return get_signatured_type (die, DW_SIGNATURE (attr), cu);
20427 }
20428 else
20429 {
20430 complaint (&symfile_complaints,
20431 _("Dwarf Error: DW_AT_signature has bad form %s in DIE"
20432 " at 0x%x [in module %s]"),
20433 dwarf_form_name (attr->form), die->offset.sect_off,
4262abfb 20434 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20435 return build_error_marker_type (cu, die);
20436 }
348e048f
DE
20437}
20438
e5fe5e75 20439/* Load the DIEs associated with type unit PER_CU into memory. */
348e048f
DE
20440
20441static void
e5fe5e75 20442load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
348e048f 20443{
52dc124a 20444 struct signatured_type *sig_type;
348e048f 20445
f4dc4d17
DE
20446 /* Caller is responsible for ensuring type_unit_groups don't get here. */
20447 gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
20448
6721b2ec
DE
20449 /* We have the per_cu, but we need the signatured_type.
20450 Fortunately this is an easy translation. */
20451 gdb_assert (per_cu->is_debug_types);
20452 sig_type = (struct signatured_type *) per_cu;
348e048f 20453
6721b2ec 20454 gdb_assert (per_cu->cu == NULL);
348e048f 20455
52dc124a 20456 read_signatured_type (sig_type);
348e048f 20457
6721b2ec 20458 gdb_assert (per_cu->cu != NULL);
348e048f
DE
20459}
20460
dee91e82
DE
20461/* die_reader_func for read_signatured_type.
20462 This is identical to load_full_comp_unit_reader,
20463 but is kept separate for now. */
348e048f
DE
20464
20465static void
dee91e82 20466read_signatured_type_reader (const struct die_reader_specs *reader,
d521ce57 20467 const gdb_byte *info_ptr,
dee91e82
DE
20468 struct die_info *comp_unit_die,
20469 int has_children,
20470 void *data)
348e048f 20471{
dee91e82 20472 struct dwarf2_cu *cu = reader->cu;
348e048f 20473
dee91e82
DE
20474 gdb_assert (cu->die_hash == NULL);
20475 cu->die_hash =
20476 htab_create_alloc_ex (cu->header.length / 12,
20477 die_hash,
20478 die_eq,
20479 NULL,
20480 &cu->comp_unit_obstack,
20481 hashtab_obstack_allocate,
20482 dummy_obstack_deallocate);
348e048f 20483
dee91e82
DE
20484 if (has_children)
20485 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
20486 &info_ptr, comp_unit_die);
20487 cu->dies = comp_unit_die;
20488 /* comp_unit_die is not stored in die_hash, no need. */
348e048f
DE
20489
20490 /* We try not to read any attributes in this function, because not
9cdd5dbd 20491 all CUs needed for references have been loaded yet, and symbol
348e048f 20492 table processing isn't initialized. But we have to set the CU language,
dee91e82
DE
20493 or we won't be able to build types correctly.
20494 Similarly, if we do not read the producer, we can not apply
20495 producer-specific interpretation. */
95554aad 20496 prepare_one_comp_unit (cu, cu->dies, language_minimal);
dee91e82 20497}
348e048f 20498
3019eac3
DE
20499/* Read in a signatured type and build its CU and DIEs.
20500 If the type is a stub for the real type in a DWO file,
20501 read in the real type from the DWO file as well. */
dee91e82
DE
20502
20503static void
20504read_signatured_type (struct signatured_type *sig_type)
20505{
20506 struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
348e048f 20507
3019eac3 20508 gdb_assert (per_cu->is_debug_types);
dee91e82 20509 gdb_assert (per_cu->cu == NULL);
348e048f 20510
f4dc4d17
DE
20511 init_cutu_and_read_dies (per_cu, NULL, 0, 1,
20512 read_signatured_type_reader, NULL);
7ee85ab1 20513 sig_type->per_cu.tu_read = 1;
c906108c
SS
20514}
20515
c906108c
SS
20516/* Decode simple location descriptions.
20517 Given a pointer to a dwarf block that defines a location, compute
20518 the location and return the value.
20519
4cecd739
DJ
20520 NOTE drow/2003-11-18: This function is called in two situations
20521 now: for the address of static or global variables (partial symbols
20522 only) and for offsets into structures which are expected to be
20523 (more or less) constant. The partial symbol case should go away,
20524 and only the constant case should remain. That will let this
20525 function complain more accurately. A few special modes are allowed
20526 without complaint for global variables (for instance, global
20527 register values and thread-local values).
c906108c
SS
20528
20529 A location description containing no operations indicates that the
4cecd739 20530 object is optimized out. The return value is 0 for that case.
6b992462
DJ
20531 FIXME drow/2003-11-16: No callers check for this case any more; soon all
20532 callers will only want a very basic result and this can become a
21ae7a4d
JK
20533 complaint.
20534
20535 Note that stack[0] is unused except as a default error return. */
c906108c
SS
20536
20537static CORE_ADDR
e7c27a73 20538decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
c906108c 20539{
e7c27a73 20540 struct objfile *objfile = cu->objfile;
56eb65bd
SP
20541 size_t i;
20542 size_t size = blk->size;
d521ce57 20543 const gdb_byte *data = blk->data;
21ae7a4d
JK
20544 CORE_ADDR stack[64];
20545 int stacki;
20546 unsigned int bytes_read, unsnd;
20547 gdb_byte op;
c906108c 20548
21ae7a4d
JK
20549 i = 0;
20550 stacki = 0;
20551 stack[stacki] = 0;
20552 stack[++stacki] = 0;
20553
20554 while (i < size)
20555 {
20556 op = data[i++];
20557 switch (op)
20558 {
20559 case DW_OP_lit0:
20560 case DW_OP_lit1:
20561 case DW_OP_lit2:
20562 case DW_OP_lit3:
20563 case DW_OP_lit4:
20564 case DW_OP_lit5:
20565 case DW_OP_lit6:
20566 case DW_OP_lit7:
20567 case DW_OP_lit8:
20568 case DW_OP_lit9:
20569 case DW_OP_lit10:
20570 case DW_OP_lit11:
20571 case DW_OP_lit12:
20572 case DW_OP_lit13:
20573 case DW_OP_lit14:
20574 case DW_OP_lit15:
20575 case DW_OP_lit16:
20576 case DW_OP_lit17:
20577 case DW_OP_lit18:
20578 case DW_OP_lit19:
20579 case DW_OP_lit20:
20580 case DW_OP_lit21:
20581 case DW_OP_lit22:
20582 case DW_OP_lit23:
20583 case DW_OP_lit24:
20584 case DW_OP_lit25:
20585 case DW_OP_lit26:
20586 case DW_OP_lit27:
20587 case DW_OP_lit28:
20588 case DW_OP_lit29:
20589 case DW_OP_lit30:
20590 case DW_OP_lit31:
20591 stack[++stacki] = op - DW_OP_lit0;
20592 break;
f1bea926 20593
21ae7a4d
JK
20594 case DW_OP_reg0:
20595 case DW_OP_reg1:
20596 case DW_OP_reg2:
20597 case DW_OP_reg3:
20598 case DW_OP_reg4:
20599 case DW_OP_reg5:
20600 case DW_OP_reg6:
20601 case DW_OP_reg7:
20602 case DW_OP_reg8:
20603 case DW_OP_reg9:
20604 case DW_OP_reg10:
20605 case DW_OP_reg11:
20606 case DW_OP_reg12:
20607 case DW_OP_reg13:
20608 case DW_OP_reg14:
20609 case DW_OP_reg15:
20610 case DW_OP_reg16:
20611 case DW_OP_reg17:
20612 case DW_OP_reg18:
20613 case DW_OP_reg19:
20614 case DW_OP_reg20:
20615 case DW_OP_reg21:
20616 case DW_OP_reg22:
20617 case DW_OP_reg23:
20618 case DW_OP_reg24:
20619 case DW_OP_reg25:
20620 case DW_OP_reg26:
20621 case DW_OP_reg27:
20622 case DW_OP_reg28:
20623 case DW_OP_reg29:
20624 case DW_OP_reg30:
20625 case DW_OP_reg31:
20626 stack[++stacki] = op - DW_OP_reg0;
20627 if (i < size)
20628 dwarf2_complex_location_expr_complaint ();
20629 break;
c906108c 20630
21ae7a4d
JK
20631 case DW_OP_regx:
20632 unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
20633 i += bytes_read;
20634 stack[++stacki] = unsnd;
20635 if (i < size)
20636 dwarf2_complex_location_expr_complaint ();
20637 break;
c906108c 20638
21ae7a4d
JK
20639 case DW_OP_addr:
20640 stack[++stacki] = read_address (objfile->obfd, &data[i],
20641 cu, &bytes_read);
20642 i += bytes_read;
20643 break;
d53d4ac5 20644
21ae7a4d
JK
20645 case DW_OP_const1u:
20646 stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
20647 i += 1;
20648 break;
20649
20650 case DW_OP_const1s:
20651 stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
20652 i += 1;
20653 break;
20654
20655 case DW_OP_const2u:
20656 stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
20657 i += 2;
20658 break;
20659
20660 case DW_OP_const2s:
20661 stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
20662 i += 2;
20663 break;
d53d4ac5 20664
21ae7a4d
JK
20665 case DW_OP_const4u:
20666 stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
20667 i += 4;
20668 break;
20669
20670 case DW_OP_const4s:
20671 stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
20672 i += 4;
20673 break;
20674
585861ea
JK
20675 case DW_OP_const8u:
20676 stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
20677 i += 8;
20678 break;
20679
21ae7a4d
JK
20680 case DW_OP_constu:
20681 stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
20682 &bytes_read);
20683 i += bytes_read;
20684 break;
20685
20686 case DW_OP_consts:
20687 stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
20688 i += bytes_read;
20689 break;
20690
20691 case DW_OP_dup:
20692 stack[stacki + 1] = stack[stacki];
20693 stacki++;
20694 break;
20695
20696 case DW_OP_plus:
20697 stack[stacki - 1] += stack[stacki];
20698 stacki--;
20699 break;
20700
20701 case DW_OP_plus_uconst:
20702 stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
20703 &bytes_read);
20704 i += bytes_read;
20705 break;
20706
20707 case DW_OP_minus:
20708 stack[stacki - 1] -= stack[stacki];
20709 stacki--;
20710 break;
20711
20712 case DW_OP_deref:
20713 /* If we're not the last op, then we definitely can't encode
20714 this using GDB's address_class enum. This is valid for partial
20715 global symbols, although the variable's address will be bogus
20716 in the psymtab. */
20717 if (i < size)
20718 dwarf2_complex_location_expr_complaint ();
20719 break;
20720
20721 case DW_OP_GNU_push_tls_address:
20722 /* The top of the stack has the offset from the beginning
20723 of the thread control block at which the variable is located. */
20724 /* Nothing should follow this operator, so the top of stack would
20725 be returned. */
20726 /* This is valid for partial global symbols, but the variable's
585861ea
JK
20727 address will be bogus in the psymtab. Make it always at least
20728 non-zero to not look as a variable garbage collected by linker
20729 which have DW_OP_addr 0. */
21ae7a4d
JK
20730 if (i < size)
20731 dwarf2_complex_location_expr_complaint ();
585861ea 20732 stack[stacki]++;
21ae7a4d
JK
20733 break;
20734
20735 case DW_OP_GNU_uninit:
20736 break;
20737
3019eac3 20738 case DW_OP_GNU_addr_index:
49f6c839 20739 case DW_OP_GNU_const_index:
3019eac3
DE
20740 stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
20741 &bytes_read);
20742 i += bytes_read;
20743 break;
20744
21ae7a4d
JK
20745 default:
20746 {
f39c6ffd 20747 const char *name = get_DW_OP_name (op);
21ae7a4d
JK
20748
20749 if (name)
20750 complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
20751 name);
20752 else
20753 complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
20754 op);
20755 }
20756
20757 return (stack[stacki]);
d53d4ac5 20758 }
3c6e0cb3 20759
21ae7a4d
JK
20760 /* Enforce maximum stack depth of SIZE-1 to avoid writing
20761 outside of the allocated space. Also enforce minimum>0. */
20762 if (stacki >= ARRAY_SIZE (stack) - 1)
20763 {
20764 complaint (&symfile_complaints,
20765 _("location description stack overflow"));
20766 return 0;
20767 }
20768
20769 if (stacki <= 0)
20770 {
20771 complaint (&symfile_complaints,
20772 _("location description stack underflow"));
20773 return 0;
20774 }
20775 }
20776 return (stack[stacki]);
c906108c
SS
20777}
20778
20779/* memory allocation interface */
20780
c906108c 20781static struct dwarf_block *
7b5a2f43 20782dwarf_alloc_block (struct dwarf2_cu *cu)
c906108c
SS
20783{
20784 struct dwarf_block *blk;
20785
20786 blk = (struct dwarf_block *)
7b5a2f43 20787 obstack_alloc (&cu->comp_unit_obstack, sizeof (struct dwarf_block));
c906108c
SS
20788 return (blk);
20789}
20790
c906108c 20791static struct die_info *
b60c80d6 20792dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
c906108c
SS
20793{
20794 struct die_info *die;
b60c80d6
DJ
20795 size_t size = sizeof (struct die_info);
20796
20797 if (num_attrs > 1)
20798 size += (num_attrs - 1) * sizeof (struct attribute);
c906108c 20799
b60c80d6 20800 die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
c906108c
SS
20801 memset (die, 0, sizeof (struct die_info));
20802 return (die);
20803}
2e276125
JB
20804
20805\f
20806/* Macro support. */
20807
233d95b5
JK
20808/* Return file name relative to the compilation directory of file number I in
20809 *LH's file name table. The result is allocated using xmalloc; the caller is
2e276125 20810 responsible for freeing it. */
233d95b5 20811
2e276125 20812static char *
233d95b5 20813file_file_name (int file, struct line_header *lh)
2e276125 20814{
6a83a1e6
EZ
20815 /* Is the file number a valid index into the line header's file name
20816 table? Remember that file numbers start with one, not zero. */
20817 if (1 <= file && file <= lh->num_file_names)
20818 {
20819 struct file_entry *fe = &lh->file_names[file - 1];
6e70227d 20820
afa6c9ab
SL
20821 if (IS_ABSOLUTE_PATH (fe->name) || fe->dir_index == 0
20822 || lh->include_dirs == NULL)
6a83a1e6 20823 return xstrdup (fe->name);
233d95b5
JK
20824 return concat (lh->include_dirs[fe->dir_index - 1], SLASH_STRING,
20825 fe->name, NULL);
6a83a1e6 20826 }
2e276125
JB
20827 else
20828 {
6a83a1e6
EZ
20829 /* The compiler produced a bogus file number. We can at least
20830 record the macro definitions made in the file, even if we
20831 won't be able to find the file by name. */
20832 char fake_name[80];
9a619af0 20833
8c042590
PM
20834 xsnprintf (fake_name, sizeof (fake_name),
20835 "<bad macro file number %d>", file);
2e276125 20836
6e70227d 20837 complaint (&symfile_complaints,
6a83a1e6
EZ
20838 _("bad file number in macro information (%d)"),
20839 file);
2e276125 20840
6a83a1e6 20841 return xstrdup (fake_name);
2e276125
JB
20842 }
20843}
20844
233d95b5
JK
20845/* Return the full name of file number I in *LH's file name table.
20846 Use COMP_DIR as the name of the current directory of the
20847 compilation. The result is allocated using xmalloc; the caller is
20848 responsible for freeing it. */
20849static char *
20850file_full_name (int file, struct line_header *lh, const char *comp_dir)
20851{
20852 /* Is the file number a valid index into the line header's file name
20853 table? Remember that file numbers start with one, not zero. */
20854 if (1 <= file && file <= lh->num_file_names)
20855 {
20856 char *relative = file_file_name (file, lh);
20857
20858 if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
20859 return relative;
20860 return reconcat (relative, comp_dir, SLASH_STRING, relative, NULL);
20861 }
20862 else
20863 return file_file_name (file, lh);
20864}
20865
2e276125
JB
20866
20867static struct macro_source_file *
20868macro_start_file (int file, int line,
20869 struct macro_source_file *current_file,
43f3e411 20870 struct line_header *lh)
2e276125 20871{
233d95b5
JK
20872 /* File name relative to the compilation directory of this source file. */
20873 char *file_name = file_file_name (file, lh);
2e276125 20874
2e276125 20875 if (! current_file)
abc9d0dc 20876 {
fc474241
DE
20877 /* Note: We don't create a macro table for this compilation unit
20878 at all until we actually get a filename. */
43f3e411 20879 struct macro_table *macro_table = get_macro_table ();
fc474241 20880
abc9d0dc
TT
20881 /* If we have no current file, then this must be the start_file
20882 directive for the compilation unit's main source file. */
fc474241
DE
20883 current_file = macro_set_main (macro_table, file_name);
20884 macro_define_special (macro_table);
abc9d0dc 20885 }
2e276125 20886 else
233d95b5 20887 current_file = macro_include (current_file, line, file_name);
2e276125 20888
233d95b5 20889 xfree (file_name);
6e70227d 20890
2e276125
JB
20891 return current_file;
20892}
20893
20894
20895/* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
20896 followed by a null byte. */
20897static char *
20898copy_string (const char *buf, int len)
20899{
20900 char *s = xmalloc (len + 1);
9a619af0 20901
2e276125
JB
20902 memcpy (s, buf, len);
20903 s[len] = '\0';
2e276125
JB
20904 return s;
20905}
20906
20907
20908static const char *
20909consume_improper_spaces (const char *p, const char *body)
20910{
20911 if (*p == ' ')
20912 {
4d3c2250 20913 complaint (&symfile_complaints,
3e43a32a
MS
20914 _("macro definition contains spaces "
20915 "in formal argument list:\n`%s'"),
4d3c2250 20916 body);
2e276125
JB
20917
20918 while (*p == ' ')
20919 p++;
20920 }
20921
20922 return p;
20923}
20924
20925
20926static void
20927parse_macro_definition (struct macro_source_file *file, int line,
20928 const char *body)
20929{
20930 const char *p;
20931
20932 /* The body string takes one of two forms. For object-like macro
20933 definitions, it should be:
20934
20935 <macro name> " " <definition>
20936
20937 For function-like macro definitions, it should be:
20938
20939 <macro name> "() " <definition>
20940 or
20941 <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
20942
20943 Spaces may appear only where explicitly indicated, and in the
20944 <definition>.
20945
20946 The Dwarf 2 spec says that an object-like macro's name is always
20947 followed by a space, but versions of GCC around March 2002 omit
6e70227d 20948 the space when the macro's definition is the empty string.
2e276125
JB
20949
20950 The Dwarf 2 spec says that there should be no spaces between the
20951 formal arguments in a function-like macro's formal argument list,
20952 but versions of GCC around March 2002 include spaces after the
20953 commas. */
20954
20955
20956 /* Find the extent of the macro name. The macro name is terminated
20957 by either a space or null character (for an object-like macro) or
20958 an opening paren (for a function-like macro). */
20959 for (p = body; *p; p++)
20960 if (*p == ' ' || *p == '(')
20961 break;
20962
20963 if (*p == ' ' || *p == '\0')
20964 {
20965 /* It's an object-like macro. */
20966 int name_len = p - body;
20967 char *name = copy_string (body, name_len);
20968 const char *replacement;
20969
20970 if (*p == ' ')
20971 replacement = body + name_len + 1;
20972 else
20973 {
4d3c2250 20974 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
20975 replacement = body + name_len;
20976 }
6e70227d 20977
2e276125
JB
20978 macro_define_object (file, line, name, replacement);
20979
20980 xfree (name);
20981 }
20982 else if (*p == '(')
20983 {
20984 /* It's a function-like macro. */
20985 char *name = copy_string (body, p - body);
20986 int argc = 0;
20987 int argv_size = 1;
20988 char **argv = xmalloc (argv_size * sizeof (*argv));
20989
20990 p++;
20991
20992 p = consume_improper_spaces (p, body);
20993
20994 /* Parse the formal argument list. */
20995 while (*p && *p != ')')
20996 {
20997 /* Find the extent of the current argument name. */
20998 const char *arg_start = p;
20999
21000 while (*p && *p != ',' && *p != ')' && *p != ' ')
21001 p++;
21002
21003 if (! *p || p == arg_start)
4d3c2250 21004 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21005 else
21006 {
21007 /* Make sure argv has room for the new argument. */
21008 if (argc >= argv_size)
21009 {
21010 argv_size *= 2;
21011 argv = xrealloc (argv, argv_size * sizeof (*argv));
21012 }
21013
21014 argv[argc++] = copy_string (arg_start, p - arg_start);
21015 }
21016
21017 p = consume_improper_spaces (p, body);
21018
21019 /* Consume the comma, if present. */
21020 if (*p == ',')
21021 {
21022 p++;
21023
21024 p = consume_improper_spaces (p, body);
21025 }
21026 }
21027
21028 if (*p == ')')
21029 {
21030 p++;
21031
21032 if (*p == ' ')
21033 /* Perfectly formed definition, no complaints. */
21034 macro_define_function (file, line, name,
6e70227d 21035 argc, (const char **) argv,
2e276125
JB
21036 p + 1);
21037 else if (*p == '\0')
21038 {
21039 /* Complain, but do define it. */
4d3c2250 21040 dwarf2_macro_malformed_definition_complaint (body);
2e276125 21041 macro_define_function (file, line, name,
6e70227d 21042 argc, (const char **) argv,
2e276125
JB
21043 p);
21044 }
21045 else
21046 /* Just complain. */
4d3c2250 21047 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21048 }
21049 else
21050 /* Just complain. */
4d3c2250 21051 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21052
21053 xfree (name);
21054 {
21055 int i;
21056
21057 for (i = 0; i < argc; i++)
21058 xfree (argv[i]);
21059 }
21060 xfree (argv);
21061 }
21062 else
4d3c2250 21063 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21064}
21065
cf2c3c16
TT
21066/* Skip some bytes from BYTES according to the form given in FORM.
21067 Returns the new pointer. */
2e276125 21068
d521ce57
TT
21069static const gdb_byte *
21070skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
cf2c3c16
TT
21071 enum dwarf_form form,
21072 unsigned int offset_size,
21073 struct dwarf2_section_info *section)
2e276125 21074{
cf2c3c16 21075 unsigned int bytes_read;
2e276125 21076
cf2c3c16 21077 switch (form)
2e276125 21078 {
cf2c3c16
TT
21079 case DW_FORM_data1:
21080 case DW_FORM_flag:
21081 ++bytes;
21082 break;
21083
21084 case DW_FORM_data2:
21085 bytes += 2;
21086 break;
21087
21088 case DW_FORM_data4:
21089 bytes += 4;
21090 break;
21091
21092 case DW_FORM_data8:
21093 bytes += 8;
21094 break;
21095
21096 case DW_FORM_string:
21097 read_direct_string (abfd, bytes, &bytes_read);
21098 bytes += bytes_read;
21099 break;
21100
21101 case DW_FORM_sec_offset:
21102 case DW_FORM_strp:
36586728 21103 case DW_FORM_GNU_strp_alt:
cf2c3c16
TT
21104 bytes += offset_size;
21105 break;
21106
21107 case DW_FORM_block:
21108 bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
21109 bytes += bytes_read;
21110 break;
21111
21112 case DW_FORM_block1:
21113 bytes += 1 + read_1_byte (abfd, bytes);
21114 break;
21115 case DW_FORM_block2:
21116 bytes += 2 + read_2_bytes (abfd, bytes);
21117 break;
21118 case DW_FORM_block4:
21119 bytes += 4 + read_4_bytes (abfd, bytes);
21120 break;
21121
21122 case DW_FORM_sdata:
21123 case DW_FORM_udata:
3019eac3
DE
21124 case DW_FORM_GNU_addr_index:
21125 case DW_FORM_GNU_str_index:
d521ce57 21126 bytes = gdb_skip_leb128 (bytes, buffer_end);
f664829e
DE
21127 if (bytes == NULL)
21128 {
21129 dwarf2_section_buffer_overflow_complaint (section);
21130 return NULL;
21131 }
cf2c3c16
TT
21132 break;
21133
21134 default:
21135 {
21136 complain:
21137 complaint (&symfile_complaints,
21138 _("invalid form 0x%x in `%s'"),
a32a8923 21139 form, get_section_name (section));
cf2c3c16
TT
21140 return NULL;
21141 }
2e276125
JB
21142 }
21143
cf2c3c16
TT
21144 return bytes;
21145}
757a13d0 21146
cf2c3c16
TT
21147/* A helper for dwarf_decode_macros that handles skipping an unknown
21148 opcode. Returns an updated pointer to the macro data buffer; or,
21149 on error, issues a complaint and returns NULL. */
757a13d0 21150
d521ce57 21151static const gdb_byte *
cf2c3c16 21152skip_unknown_opcode (unsigned int opcode,
d521ce57
TT
21153 const gdb_byte **opcode_definitions,
21154 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
cf2c3c16
TT
21155 bfd *abfd,
21156 unsigned int offset_size,
21157 struct dwarf2_section_info *section)
21158{
21159 unsigned int bytes_read, i;
21160 unsigned long arg;
d521ce57 21161 const gdb_byte *defn;
2e276125 21162
cf2c3c16 21163 if (opcode_definitions[opcode] == NULL)
2e276125 21164 {
cf2c3c16
TT
21165 complaint (&symfile_complaints,
21166 _("unrecognized DW_MACFINO opcode 0x%x"),
21167 opcode);
21168 return NULL;
21169 }
2e276125 21170
cf2c3c16
TT
21171 defn = opcode_definitions[opcode];
21172 arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
21173 defn += bytes_read;
2e276125 21174
cf2c3c16
TT
21175 for (i = 0; i < arg; ++i)
21176 {
aead7601
SM
21177 mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
21178 (enum dwarf_form) defn[i], offset_size,
f664829e 21179 section);
cf2c3c16
TT
21180 if (mac_ptr == NULL)
21181 {
21182 /* skip_form_bytes already issued the complaint. */
21183 return NULL;
21184 }
21185 }
757a13d0 21186
cf2c3c16
TT
21187 return mac_ptr;
21188}
757a13d0 21189
cf2c3c16
TT
21190/* A helper function which parses the header of a macro section.
21191 If the macro section is the extended (for now called "GNU") type,
21192 then this updates *OFFSET_SIZE. Returns a pointer to just after
21193 the header, or issues a complaint and returns NULL on error. */
757a13d0 21194
d521ce57
TT
21195static const gdb_byte *
21196dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
cf2c3c16 21197 bfd *abfd,
d521ce57 21198 const gdb_byte *mac_ptr,
cf2c3c16
TT
21199 unsigned int *offset_size,
21200 int section_is_gnu)
21201{
21202 memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
757a13d0 21203
cf2c3c16
TT
21204 if (section_is_gnu)
21205 {
21206 unsigned int version, flags;
757a13d0 21207
cf2c3c16
TT
21208 version = read_2_bytes (abfd, mac_ptr);
21209 if (version != 4)
21210 {
21211 complaint (&symfile_complaints,
21212 _("unrecognized version `%d' in .debug_macro section"),
21213 version);
21214 return NULL;
21215 }
21216 mac_ptr += 2;
757a13d0 21217
cf2c3c16
TT
21218 flags = read_1_byte (abfd, mac_ptr);
21219 ++mac_ptr;
21220 *offset_size = (flags & 1) ? 8 : 4;
757a13d0 21221
cf2c3c16
TT
21222 if ((flags & 2) != 0)
21223 /* We don't need the line table offset. */
21224 mac_ptr += *offset_size;
757a13d0 21225
cf2c3c16
TT
21226 /* Vendor opcode descriptions. */
21227 if ((flags & 4) != 0)
21228 {
21229 unsigned int i, count;
757a13d0 21230
cf2c3c16
TT
21231 count = read_1_byte (abfd, mac_ptr);
21232 ++mac_ptr;
21233 for (i = 0; i < count; ++i)
21234 {
21235 unsigned int opcode, bytes_read;
21236 unsigned long arg;
21237
21238 opcode = read_1_byte (abfd, mac_ptr);
21239 ++mac_ptr;
21240 opcode_definitions[opcode] = mac_ptr;
21241 arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21242 mac_ptr += bytes_read;
21243 mac_ptr += arg;
21244 }
757a13d0 21245 }
cf2c3c16 21246 }
757a13d0 21247
cf2c3c16
TT
21248 return mac_ptr;
21249}
757a13d0 21250
cf2c3c16 21251/* A helper for dwarf_decode_macros that handles the GNU extensions,
8fc3fc34 21252 including DW_MACRO_GNU_transparent_include. */
cf2c3c16
TT
21253
21254static void
d521ce57
TT
21255dwarf_decode_macro_bytes (bfd *abfd,
21256 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
cf2c3c16 21257 struct macro_source_file *current_file,
43f3e411 21258 struct line_header *lh,
cf2c3c16 21259 struct dwarf2_section_info *section,
36586728 21260 int section_is_gnu, int section_is_dwz,
cf2c3c16 21261 unsigned int offset_size,
8fc3fc34 21262 htab_t include_hash)
cf2c3c16 21263{
4d663531 21264 struct objfile *objfile = dwarf2_per_objfile->objfile;
cf2c3c16
TT
21265 enum dwarf_macro_record_type macinfo_type;
21266 int at_commandline;
d521ce57 21267 const gdb_byte *opcode_definitions[256];
757a13d0 21268
cf2c3c16
TT
21269 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21270 &offset_size, section_is_gnu);
21271 if (mac_ptr == NULL)
21272 {
21273 /* We already issued a complaint. */
21274 return;
21275 }
757a13d0
JK
21276
21277 /* Determines if GDB is still before first DW_MACINFO_start_file. If true
21278 GDB is still reading the definitions from command line. First
21279 DW_MACINFO_start_file will need to be ignored as it was already executed
21280 to create CURRENT_FILE for the main source holding also the command line
21281 definitions. On first met DW_MACINFO_start_file this flag is reset to
21282 normally execute all the remaining DW_MACINFO_start_file macinfos. */
21283
21284 at_commandline = 1;
21285
21286 do
21287 {
21288 /* Do we at least have room for a macinfo type byte? */
21289 if (mac_ptr >= mac_end)
21290 {
f664829e 21291 dwarf2_section_buffer_overflow_complaint (section);
757a13d0
JK
21292 break;
21293 }
21294
aead7601 21295 macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
757a13d0
JK
21296 mac_ptr++;
21297
cf2c3c16
TT
21298 /* Note that we rely on the fact that the corresponding GNU and
21299 DWARF constants are the same. */
757a13d0
JK
21300 switch (macinfo_type)
21301 {
21302 /* A zero macinfo type indicates the end of the macro
21303 information. */
21304 case 0:
21305 break;
2e276125 21306
cf2c3c16
TT
21307 case DW_MACRO_GNU_define:
21308 case DW_MACRO_GNU_undef:
21309 case DW_MACRO_GNU_define_indirect:
21310 case DW_MACRO_GNU_undef_indirect:
36586728
TT
21311 case DW_MACRO_GNU_define_indirect_alt:
21312 case DW_MACRO_GNU_undef_indirect_alt:
2e276125 21313 {
891d2f0b 21314 unsigned int bytes_read;
2e276125 21315 int line;
d521ce57 21316 const char *body;
cf2c3c16 21317 int is_define;
2e276125 21318
cf2c3c16
TT
21319 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21320 mac_ptr += bytes_read;
21321
21322 if (macinfo_type == DW_MACRO_GNU_define
21323 || macinfo_type == DW_MACRO_GNU_undef)
21324 {
21325 body = read_direct_string (abfd, mac_ptr, &bytes_read);
21326 mac_ptr += bytes_read;
21327 }
21328 else
21329 {
21330 LONGEST str_offset;
21331
21332 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
21333 mac_ptr += offset_size;
2e276125 21334
36586728 21335 if (macinfo_type == DW_MACRO_GNU_define_indirect_alt
f7a35f02
TT
21336 || macinfo_type == DW_MACRO_GNU_undef_indirect_alt
21337 || section_is_dwz)
36586728
TT
21338 {
21339 struct dwz_file *dwz = dwarf2_get_dwz_file ();
21340
21341 body = read_indirect_string_from_dwz (dwz, str_offset);
21342 }
21343 else
21344 body = read_indirect_string_at_offset (abfd, str_offset);
cf2c3c16
TT
21345 }
21346
21347 is_define = (macinfo_type == DW_MACRO_GNU_define
36586728
TT
21348 || macinfo_type == DW_MACRO_GNU_define_indirect
21349 || macinfo_type == DW_MACRO_GNU_define_indirect_alt);
2e276125 21350 if (! current_file)
757a13d0
JK
21351 {
21352 /* DWARF violation as no main source is present. */
21353 complaint (&symfile_complaints,
21354 _("debug info with no main source gives macro %s "
21355 "on line %d: %s"),
cf2c3c16
TT
21356 is_define ? _("definition") : _("undefinition"),
21357 line, body);
757a13d0
JK
21358 break;
21359 }
3e43a32a
MS
21360 if ((line == 0 && !at_commandline)
21361 || (line != 0 && at_commandline))
4d3c2250 21362 complaint (&symfile_complaints,
757a13d0
JK
21363 _("debug info gives %s macro %s with %s line %d: %s"),
21364 at_commandline ? _("command-line") : _("in-file"),
cf2c3c16 21365 is_define ? _("definition") : _("undefinition"),
757a13d0
JK
21366 line == 0 ? _("zero") : _("non-zero"), line, body);
21367
cf2c3c16 21368 if (is_define)
757a13d0 21369 parse_macro_definition (current_file, line, body);
cf2c3c16
TT
21370 else
21371 {
21372 gdb_assert (macinfo_type == DW_MACRO_GNU_undef
36586728
TT
21373 || macinfo_type == DW_MACRO_GNU_undef_indirect
21374 || macinfo_type == DW_MACRO_GNU_undef_indirect_alt);
cf2c3c16
TT
21375 macro_undef (current_file, line, body);
21376 }
2e276125
JB
21377 }
21378 break;
21379
cf2c3c16 21380 case DW_MACRO_GNU_start_file:
2e276125 21381 {
891d2f0b 21382 unsigned int bytes_read;
2e276125
JB
21383 int line, file;
21384
21385 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21386 mac_ptr += bytes_read;
21387 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21388 mac_ptr += bytes_read;
21389
3e43a32a
MS
21390 if ((line == 0 && !at_commandline)
21391 || (line != 0 && at_commandline))
757a13d0
JK
21392 complaint (&symfile_complaints,
21393 _("debug info gives source %d included "
21394 "from %s at %s line %d"),
21395 file, at_commandline ? _("command-line") : _("file"),
21396 line == 0 ? _("zero") : _("non-zero"), line);
21397
21398 if (at_commandline)
21399 {
cf2c3c16
TT
21400 /* This DW_MACRO_GNU_start_file was executed in the
21401 pass one. */
757a13d0
JK
21402 at_commandline = 0;
21403 }
21404 else
43f3e411 21405 current_file = macro_start_file (file, line, current_file, lh);
2e276125
JB
21406 }
21407 break;
21408
cf2c3c16 21409 case DW_MACRO_GNU_end_file:
2e276125 21410 if (! current_file)
4d3c2250 21411 complaint (&symfile_complaints,
3e43a32a
MS
21412 _("macro debug info has an unmatched "
21413 "`close_file' directive"));
2e276125
JB
21414 else
21415 {
21416 current_file = current_file->included_by;
21417 if (! current_file)
21418 {
cf2c3c16 21419 enum dwarf_macro_record_type next_type;
2e276125
JB
21420
21421 /* GCC circa March 2002 doesn't produce the zero
21422 type byte marking the end of the compilation
21423 unit. Complain if it's not there, but exit no
21424 matter what. */
21425
21426 /* Do we at least have room for a macinfo type byte? */
21427 if (mac_ptr >= mac_end)
21428 {
f664829e 21429 dwarf2_section_buffer_overflow_complaint (section);
2e276125
JB
21430 return;
21431 }
21432
21433 /* We don't increment mac_ptr here, so this is just
21434 a look-ahead. */
aead7601
SM
21435 next_type
21436 = (enum dwarf_macro_record_type) read_1_byte (abfd,
21437 mac_ptr);
2e276125 21438 if (next_type != 0)
4d3c2250 21439 complaint (&symfile_complaints,
3e43a32a
MS
21440 _("no terminating 0-type entry for "
21441 "macros in `.debug_macinfo' section"));
2e276125
JB
21442
21443 return;
21444 }
21445 }
21446 break;
21447
cf2c3c16 21448 case DW_MACRO_GNU_transparent_include:
36586728 21449 case DW_MACRO_GNU_transparent_include_alt:
cf2c3c16
TT
21450 {
21451 LONGEST offset;
8fc3fc34 21452 void **slot;
a036ba48
TT
21453 bfd *include_bfd = abfd;
21454 struct dwarf2_section_info *include_section = section;
21455 struct dwarf2_section_info alt_section;
d521ce57 21456 const gdb_byte *include_mac_end = mac_end;
a036ba48 21457 int is_dwz = section_is_dwz;
d521ce57 21458 const gdb_byte *new_mac_ptr;
cf2c3c16
TT
21459
21460 offset = read_offset_1 (abfd, mac_ptr, offset_size);
21461 mac_ptr += offset_size;
21462
a036ba48
TT
21463 if (macinfo_type == DW_MACRO_GNU_transparent_include_alt)
21464 {
21465 struct dwz_file *dwz = dwarf2_get_dwz_file ();
21466
4d663531 21467 dwarf2_read_section (objfile, &dwz->macro);
a036ba48 21468
a036ba48 21469 include_section = &dwz->macro;
a32a8923 21470 include_bfd = get_section_bfd_owner (include_section);
a036ba48
TT
21471 include_mac_end = dwz->macro.buffer + dwz->macro.size;
21472 is_dwz = 1;
21473 }
21474
21475 new_mac_ptr = include_section->buffer + offset;
21476 slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
21477
8fc3fc34
TT
21478 if (*slot != NULL)
21479 {
21480 /* This has actually happened; see
21481 http://sourceware.org/bugzilla/show_bug.cgi?id=13568. */
21482 complaint (&symfile_complaints,
21483 _("recursive DW_MACRO_GNU_transparent_include in "
21484 ".debug_macro section"));
21485 }
21486 else
21487 {
d521ce57 21488 *slot = (void *) new_mac_ptr;
36586728 21489
a036ba48 21490 dwarf_decode_macro_bytes (include_bfd, new_mac_ptr,
43f3e411 21491 include_mac_end, current_file, lh,
36586728 21492 section, section_is_gnu, is_dwz,
4d663531 21493 offset_size, include_hash);
8fc3fc34 21494
d521ce57 21495 htab_remove_elt (include_hash, (void *) new_mac_ptr);
8fc3fc34 21496 }
cf2c3c16
TT
21497 }
21498 break;
21499
2e276125 21500 case DW_MACINFO_vendor_ext:
cf2c3c16
TT
21501 if (!section_is_gnu)
21502 {
21503 unsigned int bytes_read;
21504 int constant;
2e276125 21505
cf2c3c16
TT
21506 constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21507 mac_ptr += bytes_read;
21508 read_direct_string (abfd, mac_ptr, &bytes_read);
21509 mac_ptr += bytes_read;
2e276125 21510
cf2c3c16
TT
21511 /* We don't recognize any vendor extensions. */
21512 break;
21513 }
21514 /* FALLTHROUGH */
21515
21516 default:
21517 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
f664829e 21518 mac_ptr, mac_end, abfd, offset_size,
cf2c3c16
TT
21519 section);
21520 if (mac_ptr == NULL)
21521 return;
21522 break;
2e276125 21523 }
757a13d0 21524 } while (macinfo_type != 0);
2e276125 21525}
8e19ed76 21526
cf2c3c16 21527static void
09262596 21528dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
43f3e411 21529 int section_is_gnu)
cf2c3c16 21530{
bb5ed363 21531 struct objfile *objfile = dwarf2_per_objfile->objfile;
09262596
DE
21532 struct line_header *lh = cu->line_header;
21533 bfd *abfd;
d521ce57 21534 const gdb_byte *mac_ptr, *mac_end;
cf2c3c16
TT
21535 struct macro_source_file *current_file = 0;
21536 enum dwarf_macro_record_type macinfo_type;
21537 unsigned int offset_size = cu->header.offset_size;
d521ce57 21538 const gdb_byte *opcode_definitions[256];
8fc3fc34
TT
21539 struct cleanup *cleanup;
21540 htab_t include_hash;
21541 void **slot;
09262596
DE
21542 struct dwarf2_section_info *section;
21543 const char *section_name;
21544
21545 if (cu->dwo_unit != NULL)
21546 {
21547 if (section_is_gnu)
21548 {
21549 section = &cu->dwo_unit->dwo_file->sections.macro;
21550 section_name = ".debug_macro.dwo";
21551 }
21552 else
21553 {
21554 section = &cu->dwo_unit->dwo_file->sections.macinfo;
21555 section_name = ".debug_macinfo.dwo";
21556 }
21557 }
21558 else
21559 {
21560 if (section_is_gnu)
21561 {
21562 section = &dwarf2_per_objfile->macro;
21563 section_name = ".debug_macro";
21564 }
21565 else
21566 {
21567 section = &dwarf2_per_objfile->macinfo;
21568 section_name = ".debug_macinfo";
21569 }
21570 }
cf2c3c16 21571
bb5ed363 21572 dwarf2_read_section (objfile, section);
cf2c3c16
TT
21573 if (section->buffer == NULL)
21574 {
fceca515 21575 complaint (&symfile_complaints, _("missing %s section"), section_name);
cf2c3c16
TT
21576 return;
21577 }
a32a8923 21578 abfd = get_section_bfd_owner (section);
cf2c3c16
TT
21579
21580 /* First pass: Find the name of the base filename.
21581 This filename is needed in order to process all macros whose definition
21582 (or undefinition) comes from the command line. These macros are defined
21583 before the first DW_MACINFO_start_file entry, and yet still need to be
21584 associated to the base file.
21585
21586 To determine the base file name, we scan the macro definitions until we
21587 reach the first DW_MACINFO_start_file entry. We then initialize
21588 CURRENT_FILE accordingly so that any macro definition found before the
21589 first DW_MACINFO_start_file can still be associated to the base file. */
21590
21591 mac_ptr = section->buffer + offset;
21592 mac_end = section->buffer + section->size;
21593
21594 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21595 &offset_size, section_is_gnu);
21596 if (mac_ptr == NULL)
21597 {
21598 /* We already issued a complaint. */
21599 return;
21600 }
21601
21602 do
21603 {
21604 /* Do we at least have room for a macinfo type byte? */
21605 if (mac_ptr >= mac_end)
21606 {
21607 /* Complaint is printed during the second pass as GDB will probably
21608 stop the first pass earlier upon finding
21609 DW_MACINFO_start_file. */
21610 break;
21611 }
21612
aead7601 21613 macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
cf2c3c16
TT
21614 mac_ptr++;
21615
21616 /* Note that we rely on the fact that the corresponding GNU and
21617 DWARF constants are the same. */
21618 switch (macinfo_type)
21619 {
21620 /* A zero macinfo type indicates the end of the macro
21621 information. */
21622 case 0:
21623 break;
21624
21625 case DW_MACRO_GNU_define:
21626 case DW_MACRO_GNU_undef:
21627 /* Only skip the data by MAC_PTR. */
21628 {
21629 unsigned int bytes_read;
21630
21631 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21632 mac_ptr += bytes_read;
21633 read_direct_string (abfd, mac_ptr, &bytes_read);
21634 mac_ptr += bytes_read;
21635 }
21636 break;
21637
21638 case DW_MACRO_GNU_start_file:
21639 {
21640 unsigned int bytes_read;
21641 int line, file;
21642
21643 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21644 mac_ptr += bytes_read;
21645 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21646 mac_ptr += bytes_read;
21647
43f3e411 21648 current_file = macro_start_file (file, line, current_file, lh);
cf2c3c16
TT
21649 }
21650 break;
21651
21652 case DW_MACRO_GNU_end_file:
21653 /* No data to skip by MAC_PTR. */
21654 break;
21655
21656 case DW_MACRO_GNU_define_indirect:
21657 case DW_MACRO_GNU_undef_indirect:
f7a35f02
TT
21658 case DW_MACRO_GNU_define_indirect_alt:
21659 case DW_MACRO_GNU_undef_indirect_alt:
cf2c3c16
TT
21660 {
21661 unsigned int bytes_read;
21662
21663 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21664 mac_ptr += bytes_read;
21665 mac_ptr += offset_size;
21666 }
21667 break;
21668
21669 case DW_MACRO_GNU_transparent_include:
f7a35f02 21670 case DW_MACRO_GNU_transparent_include_alt:
cf2c3c16
TT
21671 /* Note that, according to the spec, a transparent include
21672 chain cannot call DW_MACRO_GNU_start_file. So, we can just
21673 skip this opcode. */
21674 mac_ptr += offset_size;
21675 break;
21676
21677 case DW_MACINFO_vendor_ext:
21678 /* Only skip the data by MAC_PTR. */
21679 if (!section_is_gnu)
21680 {
21681 unsigned int bytes_read;
21682
21683 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21684 mac_ptr += bytes_read;
21685 read_direct_string (abfd, mac_ptr, &bytes_read);
21686 mac_ptr += bytes_read;
21687 }
21688 /* FALLTHROUGH */
21689
21690 default:
21691 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
f664829e 21692 mac_ptr, mac_end, abfd, offset_size,
cf2c3c16
TT
21693 section);
21694 if (mac_ptr == NULL)
21695 return;
21696 break;
21697 }
21698 } while (macinfo_type != 0 && current_file == NULL);
21699
21700 /* Second pass: Process all entries.
21701
21702 Use the AT_COMMAND_LINE flag to determine whether we are still processing
21703 command-line macro definitions/undefinitions. This flag is unset when we
21704 reach the first DW_MACINFO_start_file entry. */
21705
8fc3fc34
TT
21706 include_hash = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
21707 NULL, xcalloc, xfree);
21708 cleanup = make_cleanup_htab_delete (include_hash);
21709 mac_ptr = section->buffer + offset;
21710 slot = htab_find_slot (include_hash, mac_ptr, INSERT);
d521ce57 21711 *slot = (void *) mac_ptr;
8fc3fc34 21712 dwarf_decode_macro_bytes (abfd, mac_ptr, mac_end,
43f3e411 21713 current_file, lh, section,
4d663531 21714 section_is_gnu, 0, offset_size, include_hash);
8fc3fc34 21715 do_cleanups (cleanup);
cf2c3c16
TT
21716}
21717
8e19ed76 21718/* Check if the attribute's form is a DW_FORM_block*
0963b4bd 21719 if so return true else false. */
380bca97 21720
8e19ed76 21721static int
6e5a29e1 21722attr_form_is_block (const struct attribute *attr)
8e19ed76
PS
21723{
21724 return (attr == NULL ? 0 :
21725 attr->form == DW_FORM_block1
21726 || attr->form == DW_FORM_block2
21727 || attr->form == DW_FORM_block4
2dc7f7b3
TT
21728 || attr->form == DW_FORM_block
21729 || attr->form == DW_FORM_exprloc);
8e19ed76 21730}
4c2df51b 21731
c6a0999f
JB
21732/* Return non-zero if ATTR's value is a section offset --- classes
21733 lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
21734 You may use DW_UNSND (attr) to retrieve such offsets.
21735
21736 Section 7.5.4, "Attribute Encodings", explains that no attribute
21737 may have a value that belongs to more than one of these classes; it
21738 would be ambiguous if we did, because we use the same forms for all
21739 of them. */
380bca97 21740
3690dd37 21741static int
6e5a29e1 21742attr_form_is_section_offset (const struct attribute *attr)
3690dd37
JB
21743{
21744 return (attr->form == DW_FORM_data4
2dc7f7b3
TT
21745 || attr->form == DW_FORM_data8
21746 || attr->form == DW_FORM_sec_offset);
3690dd37
JB
21747}
21748
3690dd37
JB
21749/* Return non-zero if ATTR's value falls in the 'constant' class, or
21750 zero otherwise. When this function returns true, you can apply
21751 dwarf2_get_attr_constant_value to it.
21752
21753 However, note that for some attributes you must check
21754 attr_form_is_section_offset before using this test. DW_FORM_data4
21755 and DW_FORM_data8 are members of both the constant class, and of
21756 the classes that contain offsets into other debug sections
21757 (lineptr, loclistptr, macptr or rangelistptr). The DWARF spec says
21758 that, if an attribute's can be either a constant or one of the
21759 section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
21760 taken as section offsets, not constants. */
380bca97 21761
3690dd37 21762static int
6e5a29e1 21763attr_form_is_constant (const struct attribute *attr)
3690dd37
JB
21764{
21765 switch (attr->form)
21766 {
21767 case DW_FORM_sdata:
21768 case DW_FORM_udata:
21769 case DW_FORM_data1:
21770 case DW_FORM_data2:
21771 case DW_FORM_data4:
21772 case DW_FORM_data8:
21773 return 1;
21774 default:
21775 return 0;
21776 }
21777}
21778
7771576e
SA
21779
21780/* DW_ADDR is always stored already as sect_offset; despite for the forms
21781 besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file. */
21782
21783static int
6e5a29e1 21784attr_form_is_ref (const struct attribute *attr)
7771576e
SA
21785{
21786 switch (attr->form)
21787 {
21788 case DW_FORM_ref_addr:
21789 case DW_FORM_ref1:
21790 case DW_FORM_ref2:
21791 case DW_FORM_ref4:
21792 case DW_FORM_ref8:
21793 case DW_FORM_ref_udata:
21794 case DW_FORM_GNU_ref_alt:
21795 return 1;
21796 default:
21797 return 0;
21798 }
21799}
21800
3019eac3
DE
21801/* Return the .debug_loc section to use for CU.
21802 For DWO files use .debug_loc.dwo. */
21803
21804static struct dwarf2_section_info *
21805cu_debug_loc_section (struct dwarf2_cu *cu)
21806{
21807 if (cu->dwo_unit)
21808 return &cu->dwo_unit->dwo_file->sections.loc;
21809 return &dwarf2_per_objfile->loc;
21810}
21811
8cf6f0b1
TT
21812/* A helper function that fills in a dwarf2_loclist_baton. */
21813
21814static void
21815fill_in_loclist_baton (struct dwarf2_cu *cu,
21816 struct dwarf2_loclist_baton *baton,
ff39bb5e 21817 const struct attribute *attr)
8cf6f0b1 21818{
3019eac3
DE
21819 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
21820
21821 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
8cf6f0b1
TT
21822
21823 baton->per_cu = cu->per_cu;
21824 gdb_assert (baton->per_cu);
21825 /* We don't know how long the location list is, but make sure we
21826 don't run off the edge of the section. */
3019eac3
DE
21827 baton->size = section->size - DW_UNSND (attr);
21828 baton->data = section->buffer + DW_UNSND (attr);
8cf6f0b1 21829 baton->base_address = cu->base_address;
f664829e 21830 baton->from_dwo = cu->dwo_unit != NULL;
8cf6f0b1
TT
21831}
21832
4c2df51b 21833static void
ff39bb5e 21834dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
f1e6e072 21835 struct dwarf2_cu *cu, int is_block)
4c2df51b 21836{
bb5ed363 21837 struct objfile *objfile = dwarf2_per_objfile->objfile;
3019eac3 21838 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
bb5ed363 21839
3690dd37 21840 if (attr_form_is_section_offset (attr)
3019eac3 21841 /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
99bcc461
DJ
21842 the section. If so, fall through to the complaint in the
21843 other branch. */
3019eac3 21844 && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
4c2df51b 21845 {
0d53c4c4 21846 struct dwarf2_loclist_baton *baton;
4c2df51b 21847
bb5ed363 21848 baton = obstack_alloc (&objfile->objfile_obstack,
0d53c4c4 21849 sizeof (struct dwarf2_loclist_baton));
4c2df51b 21850
8cf6f0b1 21851 fill_in_loclist_baton (cu, baton, attr);
be391dca 21852
d00adf39 21853 if (cu->base_known == 0)
0d53c4c4 21854 complaint (&symfile_complaints,
3e43a32a
MS
21855 _("Location list used without "
21856 "specifying the CU base address."));
4c2df51b 21857
f1e6e072
TT
21858 SYMBOL_ACLASS_INDEX (sym) = (is_block
21859 ? dwarf2_loclist_block_index
21860 : dwarf2_loclist_index);
0d53c4c4
DJ
21861 SYMBOL_LOCATION_BATON (sym) = baton;
21862 }
21863 else
21864 {
21865 struct dwarf2_locexpr_baton *baton;
21866
bb5ed363 21867 baton = obstack_alloc (&objfile->objfile_obstack,
0d53c4c4 21868 sizeof (struct dwarf2_locexpr_baton));
ae0d2f24
UW
21869 baton->per_cu = cu->per_cu;
21870 gdb_assert (baton->per_cu);
0d53c4c4
DJ
21871
21872 if (attr_form_is_block (attr))
21873 {
21874 /* Note that we're just copying the block's data pointer
21875 here, not the actual data. We're still pointing into the
6502dd73
DJ
21876 info_buffer for SYM's objfile; right now we never release
21877 that buffer, but when we do clean up properly this may
21878 need to change. */
0d53c4c4
DJ
21879 baton->size = DW_BLOCK (attr)->size;
21880 baton->data = DW_BLOCK (attr)->data;
21881 }
21882 else
21883 {
21884 dwarf2_invalid_attrib_class_complaint ("location description",
21885 SYMBOL_NATURAL_NAME (sym));
21886 baton->size = 0;
0d53c4c4 21887 }
6e70227d 21888
f1e6e072
TT
21889 SYMBOL_ACLASS_INDEX (sym) = (is_block
21890 ? dwarf2_locexpr_block_index
21891 : dwarf2_locexpr_index);
0d53c4c4
DJ
21892 SYMBOL_LOCATION_BATON (sym) = baton;
21893 }
4c2df51b 21894}
6502dd73 21895
9aa1f1e3
TT
21896/* Return the OBJFILE associated with the compilation unit CU. If CU
21897 came from a separate debuginfo file, then the master objfile is
21898 returned. */
ae0d2f24
UW
21899
21900struct objfile *
21901dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
21902{
9291a0cd 21903 struct objfile *objfile = per_cu->objfile;
ae0d2f24
UW
21904
21905 /* Return the master objfile, so that we can report and look up the
21906 correct file containing this variable. */
21907 if (objfile->separate_debug_objfile_backlink)
21908 objfile = objfile->separate_debug_objfile_backlink;
21909
21910 return objfile;
21911}
21912
96408a79
SA
21913/* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
21914 (CU_HEADERP is unused in such case) or prepare a temporary copy at
21915 CU_HEADERP first. */
21916
21917static const struct comp_unit_head *
21918per_cu_header_read_in (struct comp_unit_head *cu_headerp,
21919 struct dwarf2_per_cu_data *per_cu)
21920{
d521ce57 21921 const gdb_byte *info_ptr;
96408a79
SA
21922
21923 if (per_cu->cu)
21924 return &per_cu->cu->header;
21925
8a0459fd 21926 info_ptr = per_cu->section->buffer + per_cu->offset.sect_off;
96408a79
SA
21927
21928 memset (cu_headerp, 0, sizeof (*cu_headerp));
0bc3a05c 21929 read_comp_unit_head (cu_headerp, info_ptr, per_cu->objfile->obfd);
96408a79
SA
21930
21931 return cu_headerp;
21932}
21933
ae0d2f24
UW
21934/* Return the address size given in the compilation unit header for CU. */
21935
98714339 21936int
ae0d2f24
UW
21937dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
21938{
96408a79
SA
21939 struct comp_unit_head cu_header_local;
21940 const struct comp_unit_head *cu_headerp;
c471e790 21941
96408a79
SA
21942 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21943
21944 return cu_headerp->addr_size;
ae0d2f24
UW
21945}
21946
9eae7c52
TT
21947/* Return the offset size given in the compilation unit header for CU. */
21948
21949int
21950dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
21951{
96408a79
SA
21952 struct comp_unit_head cu_header_local;
21953 const struct comp_unit_head *cu_headerp;
9c6c53f7 21954
96408a79
SA
21955 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21956
21957 return cu_headerp->offset_size;
21958}
21959
21960/* See its dwarf2loc.h declaration. */
21961
21962int
21963dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
21964{
21965 struct comp_unit_head cu_header_local;
21966 const struct comp_unit_head *cu_headerp;
21967
21968 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21969
21970 if (cu_headerp->version == 2)
21971 return cu_headerp->addr_size;
21972 else
21973 return cu_headerp->offset_size;
181cebd4
JK
21974}
21975
9aa1f1e3
TT
21976/* Return the text offset of the CU. The returned offset comes from
21977 this CU's objfile. If this objfile came from a separate debuginfo
21978 file, then the offset may be different from the corresponding
21979 offset in the parent objfile. */
21980
21981CORE_ADDR
21982dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
21983{
bb3fa9d0 21984 struct objfile *objfile = per_cu->objfile;
9aa1f1e3
TT
21985
21986 return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21987}
21988
348e048f
DE
21989/* Locate the .debug_info compilation unit from CU's objfile which contains
21990 the DIE at OFFSET. Raises an error on failure. */
ae038cb0
DJ
21991
21992static struct dwarf2_per_cu_data *
b64f50a1 21993dwarf2_find_containing_comp_unit (sect_offset offset,
36586728 21994 unsigned int offset_in_dwz,
ae038cb0
DJ
21995 struct objfile *objfile)
21996{
21997 struct dwarf2_per_cu_data *this_cu;
21998 int low, high;
36586728 21999 const sect_offset *cu_off;
ae038cb0 22000
ae038cb0
DJ
22001 low = 0;
22002 high = dwarf2_per_objfile->n_comp_units - 1;
22003 while (high > low)
22004 {
36586728 22005 struct dwarf2_per_cu_data *mid_cu;
ae038cb0 22006 int mid = low + (high - low) / 2;
9a619af0 22007
36586728
TT
22008 mid_cu = dwarf2_per_objfile->all_comp_units[mid];
22009 cu_off = &mid_cu->offset;
22010 if (mid_cu->is_dwz > offset_in_dwz
22011 || (mid_cu->is_dwz == offset_in_dwz
22012 && cu_off->sect_off >= offset.sect_off))
ae038cb0
DJ
22013 high = mid;
22014 else
22015 low = mid + 1;
22016 }
22017 gdb_assert (low == high);
36586728
TT
22018 this_cu = dwarf2_per_objfile->all_comp_units[low];
22019 cu_off = &this_cu->offset;
22020 if (this_cu->is_dwz != offset_in_dwz || cu_off->sect_off > offset.sect_off)
ae038cb0 22021 {
36586728 22022 if (low == 0 || this_cu->is_dwz != offset_in_dwz)
8a3fe4f8
AC
22023 error (_("Dwarf Error: could not find partial DIE containing "
22024 "offset 0x%lx [in module %s]"),
b64f50a1 22025 (long) offset.sect_off, bfd_get_filename (objfile->obfd));
10b3939b 22026
b64f50a1
JK
22027 gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset.sect_off
22028 <= offset.sect_off);
ae038cb0
DJ
22029 return dwarf2_per_objfile->all_comp_units[low-1];
22030 }
22031 else
22032 {
22033 this_cu = dwarf2_per_objfile->all_comp_units[low];
22034 if (low == dwarf2_per_objfile->n_comp_units - 1
b64f50a1
JK
22035 && offset.sect_off >= this_cu->offset.sect_off + this_cu->length)
22036 error (_("invalid dwarf2 offset %u"), offset.sect_off);
22037 gdb_assert (offset.sect_off < this_cu->offset.sect_off + this_cu->length);
ae038cb0
DJ
22038 return this_cu;
22039 }
22040}
22041
23745b47 22042/* Initialize dwarf2_cu CU, owned by PER_CU. */
93311388 22043
9816fde3 22044static void
23745b47 22045init_one_comp_unit (struct dwarf2_cu *cu, struct dwarf2_per_cu_data *per_cu)
93311388 22046{
9816fde3 22047 memset (cu, 0, sizeof (*cu));
23745b47
DE
22048 per_cu->cu = cu;
22049 cu->per_cu = per_cu;
22050 cu->objfile = per_cu->objfile;
93311388 22051 obstack_init (&cu->comp_unit_obstack);
9816fde3
JK
22052}
22053
22054/* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE. */
22055
22056static void
95554aad
TT
22057prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
22058 enum language pretend_language)
9816fde3
JK
22059{
22060 struct attribute *attr;
22061
22062 /* Set the language we're debugging. */
22063 attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
22064 if (attr)
22065 set_cu_language (DW_UNSND (attr), cu);
22066 else
9cded63f 22067 {
95554aad 22068 cu->language = pretend_language;
9cded63f
TT
22069 cu->language_defn = language_def (cu->language);
22070 }
dee91e82
DE
22071
22072 attr = dwarf2_attr (comp_unit_die, DW_AT_producer, cu);
22073 if (attr)
22074 cu->producer = DW_STRING (attr);
93311388
DE
22075}
22076
ae038cb0
DJ
22077/* Release one cached compilation unit, CU. We unlink it from the tree
22078 of compilation units, but we don't remove it from the read_in_chain;
93311388
DE
22079 the caller is responsible for that.
22080 NOTE: DATA is a void * because this function is also used as a
22081 cleanup routine. */
ae038cb0
DJ
22082
22083static void
68dc6402 22084free_heap_comp_unit (void *data)
ae038cb0
DJ
22085{
22086 struct dwarf2_cu *cu = data;
22087
23745b47
DE
22088 gdb_assert (cu->per_cu != NULL);
22089 cu->per_cu->cu = NULL;
ae038cb0
DJ
22090 cu->per_cu = NULL;
22091
22092 obstack_free (&cu->comp_unit_obstack, NULL);
22093
22094 xfree (cu);
22095}
22096
72bf9492 22097/* This cleanup function is passed the address of a dwarf2_cu on the stack
ae038cb0 22098 when we're finished with it. We can't free the pointer itself, but be
dee91e82 22099 sure to unlink it from the cache. Also release any associated storage. */
72bf9492
DJ
22100
22101static void
22102free_stack_comp_unit (void *data)
22103{
22104 struct dwarf2_cu *cu = data;
22105
23745b47
DE
22106 gdb_assert (cu->per_cu != NULL);
22107 cu->per_cu->cu = NULL;
22108 cu->per_cu = NULL;
22109
72bf9492
DJ
22110 obstack_free (&cu->comp_unit_obstack, NULL);
22111 cu->partial_dies = NULL;
ae038cb0
DJ
22112}
22113
22114/* Free all cached compilation units. */
22115
22116static void
22117free_cached_comp_units (void *data)
22118{
22119 struct dwarf2_per_cu_data *per_cu, **last_chain;
22120
22121 per_cu = dwarf2_per_objfile->read_in_chain;
22122 last_chain = &dwarf2_per_objfile->read_in_chain;
22123 while (per_cu != NULL)
22124 {
22125 struct dwarf2_per_cu_data *next_cu;
22126
22127 next_cu = per_cu->cu->read_in_chain;
22128
68dc6402 22129 free_heap_comp_unit (per_cu->cu);
ae038cb0
DJ
22130 *last_chain = next_cu;
22131
22132 per_cu = next_cu;
22133 }
22134}
22135
22136/* Increase the age counter on each cached compilation unit, and free
22137 any that are too old. */
22138
22139static void
22140age_cached_comp_units (void)
22141{
22142 struct dwarf2_per_cu_data *per_cu, **last_chain;
22143
22144 dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
22145 per_cu = dwarf2_per_objfile->read_in_chain;
22146 while (per_cu != NULL)
22147 {
22148 per_cu->cu->last_used ++;
b4f54984 22149 if (per_cu->cu->last_used <= dwarf_max_cache_age)
ae038cb0
DJ
22150 dwarf2_mark (per_cu->cu);
22151 per_cu = per_cu->cu->read_in_chain;
22152 }
22153
22154 per_cu = dwarf2_per_objfile->read_in_chain;
22155 last_chain = &dwarf2_per_objfile->read_in_chain;
22156 while (per_cu != NULL)
22157 {
22158 struct dwarf2_per_cu_data *next_cu;
22159
22160 next_cu = per_cu->cu->read_in_chain;
22161
22162 if (!per_cu->cu->mark)
22163 {
68dc6402 22164 free_heap_comp_unit (per_cu->cu);
ae038cb0
DJ
22165 *last_chain = next_cu;
22166 }
22167 else
22168 last_chain = &per_cu->cu->read_in_chain;
22169
22170 per_cu = next_cu;
22171 }
22172}
22173
22174/* Remove a single compilation unit from the cache. */
22175
22176static void
dee91e82 22177free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
ae038cb0
DJ
22178{
22179 struct dwarf2_per_cu_data *per_cu, **last_chain;
22180
22181 per_cu = dwarf2_per_objfile->read_in_chain;
22182 last_chain = &dwarf2_per_objfile->read_in_chain;
22183 while (per_cu != NULL)
22184 {
22185 struct dwarf2_per_cu_data *next_cu;
22186
22187 next_cu = per_cu->cu->read_in_chain;
22188
dee91e82 22189 if (per_cu == target_per_cu)
ae038cb0 22190 {
68dc6402 22191 free_heap_comp_unit (per_cu->cu);
dee91e82 22192 per_cu->cu = NULL;
ae038cb0
DJ
22193 *last_chain = next_cu;
22194 break;
22195 }
22196 else
22197 last_chain = &per_cu->cu->read_in_chain;
22198
22199 per_cu = next_cu;
22200 }
22201}
22202
fe3e1990
DJ
22203/* Release all extra memory associated with OBJFILE. */
22204
22205void
22206dwarf2_free_objfile (struct objfile *objfile)
22207{
22208 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
22209
22210 if (dwarf2_per_objfile == NULL)
22211 return;
22212
22213 /* Cached DIE trees use xmalloc and the comp_unit_obstack. */
22214 free_cached_comp_units (NULL);
22215
7b9f3c50
DE
22216 if (dwarf2_per_objfile->quick_file_names_table)
22217 htab_delete (dwarf2_per_objfile->quick_file_names_table);
9291a0cd 22218
527f3840
JK
22219 if (dwarf2_per_objfile->line_header_hash)
22220 htab_delete (dwarf2_per_objfile->line_header_hash);
22221
fe3e1990
DJ
22222 /* Everything else should be on the objfile obstack. */
22223}
22224
dee91e82
DE
22225/* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
22226 We store these in a hash table separate from the DIEs, and preserve them
22227 when the DIEs are flushed out of cache.
22228
22229 The CU "per_cu" pointer is needed because offset alone is not enough to
3019eac3 22230 uniquely identify the type. A file may have multiple .debug_types sections,
c88ee1f0
DE
22231 or the type may come from a DWO file. Furthermore, while it's more logical
22232 to use per_cu->section+offset, with Fission the section with the data is in
22233 the DWO file but we don't know that section at the point we need it.
22234 We have to use something in dwarf2_per_cu_data (or the pointer to it)
22235 because we can enter the lookup routine, get_die_type_at_offset, from
22236 outside this file, and thus won't necessarily have PER_CU->cu.
22237 Fortunately, PER_CU is stable for the life of the objfile. */
1c379e20 22238
dee91e82 22239struct dwarf2_per_cu_offset_and_type
1c379e20 22240{
dee91e82 22241 const struct dwarf2_per_cu_data *per_cu;
b64f50a1 22242 sect_offset offset;
1c379e20
DJ
22243 struct type *type;
22244};
22245
dee91e82 22246/* Hash function for a dwarf2_per_cu_offset_and_type. */
1c379e20
DJ
22247
22248static hashval_t
dee91e82 22249per_cu_offset_and_type_hash (const void *item)
1c379e20 22250{
dee91e82 22251 const struct dwarf2_per_cu_offset_and_type *ofs = item;
9a619af0 22252
dee91e82 22253 return (uintptr_t) ofs->per_cu + ofs->offset.sect_off;
1c379e20
DJ
22254}
22255
dee91e82 22256/* Equality function for a dwarf2_per_cu_offset_and_type. */
1c379e20
DJ
22257
22258static int
dee91e82 22259per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
1c379e20 22260{
dee91e82
DE
22261 const struct dwarf2_per_cu_offset_and_type *ofs_lhs = item_lhs;
22262 const struct dwarf2_per_cu_offset_and_type *ofs_rhs = item_rhs;
9a619af0 22263
dee91e82
DE
22264 return (ofs_lhs->per_cu == ofs_rhs->per_cu
22265 && ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off);
1c379e20
DJ
22266}
22267
22268/* Set the type associated with DIE to TYPE. Save it in CU's hash
7e314c57
JK
22269 table if necessary. For convenience, return TYPE.
22270
22271 The DIEs reading must have careful ordering to:
22272 * Not cause infite loops trying to read in DIEs as a prerequisite for
22273 reading current DIE.
22274 * Not trying to dereference contents of still incompletely read in types
22275 while reading in other DIEs.
22276 * Enable referencing still incompletely read in types just by a pointer to
22277 the type without accessing its fields.
22278
22279 Therefore caller should follow these rules:
22280 * Try to fetch any prerequisite types we may need to build this DIE type
22281 before building the type and calling set_die_type.
e71ec853 22282 * After building type call set_die_type for current DIE as soon as
7e314c57
JK
22283 possible before fetching more types to complete the current type.
22284 * Make the type as complete as possible before fetching more types. */
1c379e20 22285
f792889a 22286static struct type *
1c379e20
DJ
22287set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
22288{
dee91e82 22289 struct dwarf2_per_cu_offset_and_type **slot, ofs;
673bfd45 22290 struct objfile *objfile = cu->objfile;
3cdcd0ce
JB
22291 struct attribute *attr;
22292 struct dynamic_prop prop;
1c379e20 22293
b4ba55a1
JB
22294 /* For Ada types, make sure that the gnat-specific data is always
22295 initialized (if not already set). There are a few types where
22296 we should not be doing so, because the type-specific area is
22297 already used to hold some other piece of info (eg: TYPE_CODE_FLT
22298 where the type-specific area is used to store the floatformat).
22299 But this is not a problem, because the gnat-specific information
22300 is actually not needed for these types. */
22301 if (need_gnat_info (cu)
22302 && TYPE_CODE (type) != TYPE_CODE_FUNC
22303 && TYPE_CODE (type) != TYPE_CODE_FLT
09e2d7c7
DE
22304 && TYPE_CODE (type) != TYPE_CODE_METHODPTR
22305 && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
22306 && TYPE_CODE (type) != TYPE_CODE_METHOD
b4ba55a1
JB
22307 && !HAVE_GNAT_AUX_INFO (type))
22308 INIT_GNAT_SPECIFIC (type);
22309
3cdcd0ce
JB
22310 /* Read DW_AT_data_location and set in type. */
22311 attr = dwarf2_attr (die, DW_AT_data_location, cu);
22312 if (attr_to_dynamic_prop (attr, die, cu, &prop))
93a8e227 22313 add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type, objfile);
3cdcd0ce 22314
dee91e82 22315 if (dwarf2_per_objfile->die_type_hash == NULL)
f792889a 22316 {
dee91e82
DE
22317 dwarf2_per_objfile->die_type_hash =
22318 htab_create_alloc_ex (127,
22319 per_cu_offset_and_type_hash,
22320 per_cu_offset_and_type_eq,
22321 NULL,
22322 &objfile->objfile_obstack,
22323 hashtab_obstack_allocate,
22324 dummy_obstack_deallocate);
f792889a 22325 }
1c379e20 22326
dee91e82 22327 ofs.per_cu = cu->per_cu;
1c379e20
DJ
22328 ofs.offset = die->offset;
22329 ofs.type = type;
dee91e82
DE
22330 slot = (struct dwarf2_per_cu_offset_and_type **)
22331 htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
7e314c57
JK
22332 if (*slot)
22333 complaint (&symfile_complaints,
22334 _("A problem internal to GDB: DIE 0x%x has type already set"),
b64f50a1 22335 die->offset.sect_off);
673bfd45 22336 *slot = obstack_alloc (&objfile->objfile_obstack, sizeof (**slot));
1c379e20 22337 **slot = ofs;
f792889a 22338 return type;
1c379e20
DJ
22339}
22340
02142a6c
DE
22341/* Look up the type for the die at OFFSET in PER_CU in die_type_hash,
22342 or return NULL if the die does not have a saved type. */
1c379e20
DJ
22343
22344static struct type *
b64f50a1 22345get_die_type_at_offset (sect_offset offset,
673bfd45 22346 struct dwarf2_per_cu_data *per_cu)
1c379e20 22347{
dee91e82 22348 struct dwarf2_per_cu_offset_and_type *slot, ofs;
f792889a 22349
dee91e82 22350 if (dwarf2_per_objfile->die_type_hash == NULL)
f792889a 22351 return NULL;
1c379e20 22352
dee91e82 22353 ofs.per_cu = per_cu;
673bfd45 22354 ofs.offset = offset;
dee91e82 22355 slot = htab_find (dwarf2_per_objfile->die_type_hash, &ofs);
1c379e20
DJ
22356 if (slot)
22357 return slot->type;
22358 else
22359 return NULL;
22360}
22361
02142a6c 22362/* Look up the type for DIE in CU in die_type_hash,
673bfd45
DE
22363 or return NULL if DIE does not have a saved type. */
22364
22365static struct type *
22366get_die_type (struct die_info *die, struct dwarf2_cu *cu)
22367{
22368 return get_die_type_at_offset (die->offset, cu->per_cu);
22369}
22370
10b3939b
DJ
22371/* Add a dependence relationship from CU to REF_PER_CU. */
22372
22373static void
22374dwarf2_add_dependence (struct dwarf2_cu *cu,
22375 struct dwarf2_per_cu_data *ref_per_cu)
22376{
22377 void **slot;
22378
22379 if (cu->dependencies == NULL)
22380 cu->dependencies
22381 = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
22382 NULL, &cu->comp_unit_obstack,
22383 hashtab_obstack_allocate,
22384 dummy_obstack_deallocate);
22385
22386 slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
22387 if (*slot == NULL)
22388 *slot = ref_per_cu;
22389}
1c379e20 22390
f504f079
DE
22391/* Subroutine of dwarf2_mark to pass to htab_traverse.
22392 Set the mark field in every compilation unit in the
ae038cb0
DJ
22393 cache that we must keep because we are keeping CU. */
22394
10b3939b
DJ
22395static int
22396dwarf2_mark_helper (void **slot, void *data)
22397{
22398 struct dwarf2_per_cu_data *per_cu;
22399
22400 per_cu = (struct dwarf2_per_cu_data *) *slot;
d07ed419
JK
22401
22402 /* cu->dependencies references may not yet have been ever read if QUIT aborts
22403 reading of the chain. As such dependencies remain valid it is not much
22404 useful to track and undo them during QUIT cleanups. */
22405 if (per_cu->cu == NULL)
22406 return 1;
22407
10b3939b
DJ
22408 if (per_cu->cu->mark)
22409 return 1;
22410 per_cu->cu->mark = 1;
22411
22412 if (per_cu->cu->dependencies != NULL)
22413 htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
22414
22415 return 1;
22416}
22417
f504f079
DE
22418/* Set the mark field in CU and in every other compilation unit in the
22419 cache that we must keep because we are keeping CU. */
22420
ae038cb0
DJ
22421static void
22422dwarf2_mark (struct dwarf2_cu *cu)
22423{
22424 if (cu->mark)
22425 return;
22426 cu->mark = 1;
10b3939b
DJ
22427 if (cu->dependencies != NULL)
22428 htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
ae038cb0
DJ
22429}
22430
22431static void
22432dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
22433{
22434 while (per_cu)
22435 {
22436 per_cu->cu->mark = 0;
22437 per_cu = per_cu->cu->read_in_chain;
22438 }
72bf9492
DJ
22439}
22440
72bf9492
DJ
22441/* Trivial hash function for partial_die_info: the hash value of a DIE
22442 is its offset in .debug_info for this objfile. */
22443
22444static hashval_t
22445partial_die_hash (const void *item)
22446{
22447 const struct partial_die_info *part_die = item;
9a619af0 22448
b64f50a1 22449 return part_die->offset.sect_off;
72bf9492
DJ
22450}
22451
22452/* Trivial comparison function for partial_die_info structures: two DIEs
22453 are equal if they have the same offset. */
22454
22455static int
22456partial_die_eq (const void *item_lhs, const void *item_rhs)
22457{
22458 const struct partial_die_info *part_die_lhs = item_lhs;
22459 const struct partial_die_info *part_die_rhs = item_rhs;
9a619af0 22460
b64f50a1 22461 return part_die_lhs->offset.sect_off == part_die_rhs->offset.sect_off;
72bf9492
DJ
22462}
22463
b4f54984
DE
22464static struct cmd_list_element *set_dwarf_cmdlist;
22465static struct cmd_list_element *show_dwarf_cmdlist;
ae038cb0
DJ
22466
22467static void
b4f54984 22468set_dwarf_cmd (char *args, int from_tty)
ae038cb0 22469{
b4f54984 22470 help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
635c7e8a 22471 gdb_stdout);
ae038cb0
DJ
22472}
22473
22474static void
b4f54984 22475show_dwarf_cmd (char *args, int from_tty)
6e70227d 22476{
b4f54984 22477 cmd_show_list (show_dwarf_cmdlist, from_tty, "");
ae038cb0
DJ
22478}
22479
4bf44c1c 22480/* Free data associated with OBJFILE, if necessary. */
dce234bc
PP
22481
22482static void
c1bd65d0 22483dwarf2_per_objfile_free (struct objfile *objfile, void *d)
dce234bc
PP
22484{
22485 struct dwarf2_per_objfile *data = d;
8b70b953 22486 int ix;
8b70b953 22487
626f2d1c
TT
22488 /* Make sure we don't accidentally use dwarf2_per_objfile while
22489 cleaning up. */
22490 dwarf2_per_objfile = NULL;
22491
59b0c7c1
JB
22492 for (ix = 0; ix < data->n_comp_units; ++ix)
22493 VEC_free (dwarf2_per_cu_ptr, data->all_comp_units[ix]->imported_symtabs);
796a7ff8 22494
59b0c7c1 22495 for (ix = 0; ix < data->n_type_units; ++ix)
796a7ff8 22496 VEC_free (dwarf2_per_cu_ptr,
59b0c7c1
JB
22497 data->all_type_units[ix]->per_cu.imported_symtabs);
22498 xfree (data->all_type_units);
95554aad 22499
8b70b953 22500 VEC_free (dwarf2_section_info_def, data->types);
3019eac3
DE
22501
22502 if (data->dwo_files)
22503 free_dwo_files (data->dwo_files, objfile);
5c6fa7ab
DE
22504 if (data->dwp_file)
22505 gdb_bfd_unref (data->dwp_file->dbfd);
36586728
TT
22506
22507 if (data->dwz_file && data->dwz_file->dwz_bfd)
22508 gdb_bfd_unref (data->dwz_file->dwz_bfd);
9291a0cd
TT
22509}
22510
22511\f
ae2de4f8 22512/* The "save gdb-index" command. */
9291a0cd
TT
22513
22514/* The contents of the hash table we create when building the string
22515 table. */
22516struct strtab_entry
22517{
22518 offset_type offset;
22519 const char *str;
22520};
22521
559a7a62
JK
22522/* Hash function for a strtab_entry.
22523
22524 Function is used only during write_hash_table so no index format backward
22525 compatibility is needed. */
b89be57b 22526
9291a0cd
TT
22527static hashval_t
22528hash_strtab_entry (const void *e)
22529{
22530 const struct strtab_entry *entry = e;
559a7a62 22531 return mapped_index_string_hash (INT_MAX, entry->str);
9291a0cd
TT
22532}
22533
22534/* Equality function for a strtab_entry. */
b89be57b 22535
9291a0cd
TT
22536static int
22537eq_strtab_entry (const void *a, const void *b)
22538{
22539 const struct strtab_entry *ea = a;
22540 const struct strtab_entry *eb = b;
22541 return !strcmp (ea->str, eb->str);
22542}
22543
22544/* Create a strtab_entry hash table. */
b89be57b 22545
9291a0cd
TT
22546static htab_t
22547create_strtab (void)
22548{
22549 return htab_create_alloc (100, hash_strtab_entry, eq_strtab_entry,
22550 xfree, xcalloc, xfree);
22551}
22552
22553/* Add a string to the constant pool. Return the string's offset in
22554 host order. */
b89be57b 22555
9291a0cd
TT
22556static offset_type
22557add_string (htab_t table, struct obstack *cpool, const char *str)
22558{
22559 void **slot;
22560 struct strtab_entry entry;
22561 struct strtab_entry *result;
22562
22563 entry.str = str;
22564 slot = htab_find_slot (table, &entry, INSERT);
22565 if (*slot)
22566 result = *slot;
22567 else
22568 {
22569 result = XNEW (struct strtab_entry);
22570 result->offset = obstack_object_size (cpool);
22571 result->str = str;
22572 obstack_grow_str0 (cpool, str);
22573 *slot = result;
22574 }
22575 return result->offset;
22576}
22577
22578/* An entry in the symbol table. */
22579struct symtab_index_entry
22580{
22581 /* The name of the symbol. */
22582 const char *name;
22583 /* The offset of the name in the constant pool. */
22584 offset_type index_offset;
22585 /* A sorted vector of the indices of all the CUs that hold an object
22586 of this name. */
22587 VEC (offset_type) *cu_indices;
22588};
22589
22590/* The symbol table. This is a power-of-2-sized hash table. */
22591struct mapped_symtab
22592{
22593 offset_type n_elements;
22594 offset_type size;
22595 struct symtab_index_entry **data;
22596};
22597
22598/* Hash function for a symtab_index_entry. */
b89be57b 22599
9291a0cd
TT
22600static hashval_t
22601hash_symtab_entry (const void *e)
22602{
22603 const struct symtab_index_entry *entry = e;
22604 return iterative_hash (VEC_address (offset_type, entry->cu_indices),
22605 sizeof (offset_type) * VEC_length (offset_type,
22606 entry->cu_indices),
22607 0);
22608}
22609
22610/* Equality function for a symtab_index_entry. */
b89be57b 22611
9291a0cd
TT
22612static int
22613eq_symtab_entry (const void *a, const void *b)
22614{
22615 const struct symtab_index_entry *ea = a;
22616 const struct symtab_index_entry *eb = b;
22617 int len = VEC_length (offset_type, ea->cu_indices);
22618 if (len != VEC_length (offset_type, eb->cu_indices))
22619 return 0;
22620 return !memcmp (VEC_address (offset_type, ea->cu_indices),
22621 VEC_address (offset_type, eb->cu_indices),
22622 sizeof (offset_type) * len);
22623}
22624
22625/* Destroy a symtab_index_entry. */
b89be57b 22626
9291a0cd
TT
22627static void
22628delete_symtab_entry (void *p)
22629{
22630 struct symtab_index_entry *entry = p;
22631 VEC_free (offset_type, entry->cu_indices);
22632 xfree (entry);
22633}
22634
22635/* Create a hash table holding symtab_index_entry objects. */
b89be57b 22636
9291a0cd 22637static htab_t
3876f04e 22638create_symbol_hash_table (void)
9291a0cd
TT
22639{
22640 return htab_create_alloc (100, hash_symtab_entry, eq_symtab_entry,
22641 delete_symtab_entry, xcalloc, xfree);
22642}
22643
22644/* Create a new mapped symtab object. */
b89be57b 22645
9291a0cd
TT
22646static struct mapped_symtab *
22647create_mapped_symtab (void)
22648{
22649 struct mapped_symtab *symtab = XNEW (struct mapped_symtab);
22650 symtab->n_elements = 0;
22651 symtab->size = 1024;
22652 symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22653 return symtab;
22654}
22655
22656/* Destroy a mapped_symtab. */
b89be57b 22657
9291a0cd
TT
22658static void
22659cleanup_mapped_symtab (void *p)
22660{
22661 struct mapped_symtab *symtab = p;
22662 /* The contents of the array are freed when the other hash table is
22663 destroyed. */
22664 xfree (symtab->data);
22665 xfree (symtab);
22666}
22667
22668/* Find a slot in SYMTAB for the symbol NAME. Returns a pointer to
559a7a62
JK
22669 the slot.
22670
22671 Function is used only during write_hash_table so no index format backward
22672 compatibility is needed. */
b89be57b 22673
9291a0cd
TT
22674static struct symtab_index_entry **
22675find_slot (struct mapped_symtab *symtab, const char *name)
22676{
559a7a62 22677 offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
9291a0cd
TT
22678
22679 index = hash & (symtab->size - 1);
22680 step = ((hash * 17) & (symtab->size - 1)) | 1;
22681
22682 for (;;)
22683 {
22684 if (!symtab->data[index] || !strcmp (name, symtab->data[index]->name))
22685 return &symtab->data[index];
22686 index = (index + step) & (symtab->size - 1);
22687 }
22688}
22689
22690/* Expand SYMTAB's hash table. */
b89be57b 22691
9291a0cd
TT
22692static void
22693hash_expand (struct mapped_symtab *symtab)
22694{
22695 offset_type old_size = symtab->size;
22696 offset_type i;
22697 struct symtab_index_entry **old_entries = symtab->data;
22698
22699 symtab->size *= 2;
22700 symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22701
22702 for (i = 0; i < old_size; ++i)
22703 {
22704 if (old_entries[i])
22705 {
22706 struct symtab_index_entry **slot = find_slot (symtab,
22707 old_entries[i]->name);
22708 *slot = old_entries[i];
22709 }
22710 }
22711
22712 xfree (old_entries);
22713}
22714
156942c7
DE
22715/* Add an entry to SYMTAB. NAME is the name of the symbol.
22716 CU_INDEX is the index of the CU in which the symbol appears.
22717 IS_STATIC is one if the symbol is static, otherwise zero (global). */
b89be57b 22718
9291a0cd
TT
22719static void
22720add_index_entry (struct mapped_symtab *symtab, const char *name,
156942c7 22721 int is_static, gdb_index_symbol_kind kind,
9291a0cd
TT
22722 offset_type cu_index)
22723{
22724 struct symtab_index_entry **slot;
156942c7 22725 offset_type cu_index_and_attrs;
9291a0cd
TT
22726
22727 ++symtab->n_elements;
22728 if (4 * symtab->n_elements / 3 >= symtab->size)
22729 hash_expand (symtab);
22730
22731 slot = find_slot (symtab, name);
22732 if (!*slot)
22733 {
22734 *slot = XNEW (struct symtab_index_entry);
22735 (*slot)->name = name;
156942c7 22736 /* index_offset is set later. */
9291a0cd
TT
22737 (*slot)->cu_indices = NULL;
22738 }
156942c7
DE
22739
22740 cu_index_and_attrs = 0;
22741 DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
22742 DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
22743 DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
22744
22745 /* We don't want to record an index value twice as we want to avoid the
22746 duplication.
22747 We process all global symbols and then all static symbols
22748 (which would allow us to avoid the duplication by only having to check
22749 the last entry pushed), but a symbol could have multiple kinds in one CU.
22750 To keep things simple we don't worry about the duplication here and
22751 sort and uniqufy the list after we've processed all symbols. */
22752 VEC_safe_push (offset_type, (*slot)->cu_indices, cu_index_and_attrs);
22753}
22754
22755/* qsort helper routine for uniquify_cu_indices. */
22756
22757static int
22758offset_type_compare (const void *ap, const void *bp)
22759{
22760 offset_type a = *(offset_type *) ap;
22761 offset_type b = *(offset_type *) bp;
22762
22763 return (a > b) - (b > a);
22764}
22765
22766/* Sort and remove duplicates of all symbols' cu_indices lists. */
22767
22768static void
22769uniquify_cu_indices (struct mapped_symtab *symtab)
22770{
22771 int i;
22772
22773 for (i = 0; i < symtab->size; ++i)
22774 {
22775 struct symtab_index_entry *entry = symtab->data[i];
22776
22777 if (entry
22778 && entry->cu_indices != NULL)
22779 {
22780 unsigned int next_to_insert, next_to_check;
22781 offset_type last_value;
22782
22783 qsort (VEC_address (offset_type, entry->cu_indices),
22784 VEC_length (offset_type, entry->cu_indices),
22785 sizeof (offset_type), offset_type_compare);
22786
22787 last_value = VEC_index (offset_type, entry->cu_indices, 0);
22788 next_to_insert = 1;
22789 for (next_to_check = 1;
22790 next_to_check < VEC_length (offset_type, entry->cu_indices);
22791 ++next_to_check)
22792 {
22793 if (VEC_index (offset_type, entry->cu_indices, next_to_check)
22794 != last_value)
22795 {
22796 last_value = VEC_index (offset_type, entry->cu_indices,
22797 next_to_check);
22798 VEC_replace (offset_type, entry->cu_indices, next_to_insert,
22799 last_value);
22800 ++next_to_insert;
22801 }
22802 }
22803 VEC_truncate (offset_type, entry->cu_indices, next_to_insert);
22804 }
22805 }
9291a0cd
TT
22806}
22807
22808/* Add a vector of indices to the constant pool. */
b89be57b 22809
9291a0cd 22810static offset_type
3876f04e 22811add_indices_to_cpool (htab_t symbol_hash_table, struct obstack *cpool,
9291a0cd
TT
22812 struct symtab_index_entry *entry)
22813{
22814 void **slot;
22815
3876f04e 22816 slot = htab_find_slot (symbol_hash_table, entry, INSERT);
9291a0cd
TT
22817 if (!*slot)
22818 {
22819 offset_type len = VEC_length (offset_type, entry->cu_indices);
22820 offset_type val = MAYBE_SWAP (len);
22821 offset_type iter;
22822 int i;
22823
22824 *slot = entry;
22825 entry->index_offset = obstack_object_size (cpool);
22826
22827 obstack_grow (cpool, &val, sizeof (val));
22828 for (i = 0;
22829 VEC_iterate (offset_type, entry->cu_indices, i, iter);
22830 ++i)
22831 {
22832 val = MAYBE_SWAP (iter);
22833 obstack_grow (cpool, &val, sizeof (val));
22834 }
22835 }
22836 else
22837 {
22838 struct symtab_index_entry *old_entry = *slot;
22839 entry->index_offset = old_entry->index_offset;
22840 entry = old_entry;
22841 }
22842 return entry->index_offset;
22843}
22844
22845/* Write the mapped hash table SYMTAB to the obstack OUTPUT, with
22846 constant pool entries going into the obstack CPOOL. */
b89be57b 22847
9291a0cd
TT
22848static void
22849write_hash_table (struct mapped_symtab *symtab,
22850 struct obstack *output, struct obstack *cpool)
22851{
22852 offset_type i;
3876f04e 22853 htab_t symbol_hash_table;
9291a0cd
TT
22854 htab_t str_table;
22855
3876f04e 22856 symbol_hash_table = create_symbol_hash_table ();
9291a0cd 22857 str_table = create_strtab ();
3876f04e 22858
9291a0cd
TT
22859 /* We add all the index vectors to the constant pool first, to
22860 ensure alignment is ok. */
22861 for (i = 0; i < symtab->size; ++i)
22862 {
22863 if (symtab->data[i])
3876f04e 22864 add_indices_to_cpool (symbol_hash_table, cpool, symtab->data[i]);
9291a0cd
TT
22865 }
22866
22867 /* Now write out the hash table. */
22868 for (i = 0; i < symtab->size; ++i)
22869 {
22870 offset_type str_off, vec_off;
22871
22872 if (symtab->data[i])
22873 {
22874 str_off = add_string (str_table, cpool, symtab->data[i]->name);
22875 vec_off = symtab->data[i]->index_offset;
22876 }
22877 else
22878 {
22879 /* While 0 is a valid constant pool index, it is not valid
22880 to have 0 for both offsets. */
22881 str_off = 0;
22882 vec_off = 0;
22883 }
22884
22885 str_off = MAYBE_SWAP (str_off);
22886 vec_off = MAYBE_SWAP (vec_off);
22887
22888 obstack_grow (output, &str_off, sizeof (str_off));
22889 obstack_grow (output, &vec_off, sizeof (vec_off));
22890 }
22891
22892 htab_delete (str_table);
3876f04e 22893 htab_delete (symbol_hash_table);
9291a0cd
TT
22894}
22895
0a5429f6
DE
22896/* Struct to map psymtab to CU index in the index file. */
22897struct psymtab_cu_index_map
22898{
22899 struct partial_symtab *psymtab;
22900 unsigned int cu_index;
22901};
22902
22903static hashval_t
22904hash_psymtab_cu_index (const void *item)
22905{
22906 const struct psymtab_cu_index_map *map = item;
22907
22908 return htab_hash_pointer (map->psymtab);
22909}
22910
22911static int
22912eq_psymtab_cu_index (const void *item_lhs, const void *item_rhs)
22913{
22914 const struct psymtab_cu_index_map *lhs = item_lhs;
22915 const struct psymtab_cu_index_map *rhs = item_rhs;
22916
22917 return lhs->psymtab == rhs->psymtab;
22918}
22919
22920/* Helper struct for building the address table. */
22921struct addrmap_index_data
22922{
22923 struct objfile *objfile;
22924 struct obstack *addr_obstack;
22925 htab_t cu_index_htab;
22926
22927 /* Non-zero if the previous_* fields are valid.
22928 We can't write an entry until we see the next entry (since it is only then
22929 that we know the end of the entry). */
22930 int previous_valid;
22931 /* Index of the CU in the table of all CUs in the index file. */
22932 unsigned int previous_cu_index;
0963b4bd 22933 /* Start address of the CU. */
0a5429f6
DE
22934 CORE_ADDR previous_cu_start;
22935};
22936
22937/* Write an address entry to OBSTACK. */
b89be57b 22938
9291a0cd 22939static void
0a5429f6
DE
22940add_address_entry (struct objfile *objfile, struct obstack *obstack,
22941 CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
9291a0cd 22942{
0a5429f6 22943 offset_type cu_index_to_write;
948f8e3d 22944 gdb_byte addr[8];
9291a0cd
TT
22945 CORE_ADDR baseaddr;
22946
22947 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
22948
0a5429f6
DE
22949 store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, start - baseaddr);
22950 obstack_grow (obstack, addr, 8);
22951 store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, end - baseaddr);
22952 obstack_grow (obstack, addr, 8);
22953 cu_index_to_write = MAYBE_SWAP (cu_index);
22954 obstack_grow (obstack, &cu_index_to_write, sizeof (offset_type));
22955}
22956
22957/* Worker function for traversing an addrmap to build the address table. */
22958
22959static int
22960add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
22961{
22962 struct addrmap_index_data *data = datap;
22963 struct partial_symtab *pst = obj;
0a5429f6
DE
22964
22965 if (data->previous_valid)
22966 add_address_entry (data->objfile, data->addr_obstack,
22967 data->previous_cu_start, start_addr,
22968 data->previous_cu_index);
22969
22970 data->previous_cu_start = start_addr;
22971 if (pst != NULL)
22972 {
22973 struct psymtab_cu_index_map find_map, *map;
22974 find_map.psymtab = pst;
22975 map = htab_find (data->cu_index_htab, &find_map);
22976 gdb_assert (map != NULL);
22977 data->previous_cu_index = map->cu_index;
22978 data->previous_valid = 1;
22979 }
22980 else
22981 data->previous_valid = 0;
22982
22983 return 0;
22984}
22985
22986/* Write OBJFILE's address map to OBSTACK.
22987 CU_INDEX_HTAB is used to map addrmap entries to their CU indices
22988 in the index file. */
22989
22990static void
22991write_address_map (struct objfile *objfile, struct obstack *obstack,
22992 htab_t cu_index_htab)
22993{
22994 struct addrmap_index_data addrmap_index_data;
22995
22996 /* When writing the address table, we have to cope with the fact that
22997 the addrmap iterator only provides the start of a region; we have to
22998 wait until the next invocation to get the start of the next region. */
22999
23000 addrmap_index_data.objfile = objfile;
23001 addrmap_index_data.addr_obstack = obstack;
23002 addrmap_index_data.cu_index_htab = cu_index_htab;
23003 addrmap_index_data.previous_valid = 0;
23004
23005 addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
23006 &addrmap_index_data);
23007
23008 /* It's highly unlikely the last entry (end address = 0xff...ff)
23009 is valid, but we should still handle it.
23010 The end address is recorded as the start of the next region, but that
23011 doesn't work here. To cope we pass 0xff...ff, this is a rare situation
23012 anyway. */
23013 if (addrmap_index_data.previous_valid)
23014 add_address_entry (objfile, obstack,
23015 addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
23016 addrmap_index_data.previous_cu_index);
9291a0cd
TT
23017}
23018
156942c7
DE
23019/* Return the symbol kind of PSYM. */
23020
23021static gdb_index_symbol_kind
23022symbol_kind (struct partial_symbol *psym)
23023{
23024 domain_enum domain = PSYMBOL_DOMAIN (psym);
23025 enum address_class aclass = PSYMBOL_CLASS (psym);
23026
23027 switch (domain)
23028 {
23029 case VAR_DOMAIN:
23030 switch (aclass)
23031 {
23032 case LOC_BLOCK:
23033 return GDB_INDEX_SYMBOL_KIND_FUNCTION;
23034 case LOC_TYPEDEF:
23035 return GDB_INDEX_SYMBOL_KIND_TYPE;
23036 case LOC_COMPUTED:
23037 case LOC_CONST_BYTES:
23038 case LOC_OPTIMIZED_OUT:
23039 case LOC_STATIC:
23040 return GDB_INDEX_SYMBOL_KIND_VARIABLE;
23041 case LOC_CONST:
23042 /* Note: It's currently impossible to recognize psyms as enum values
23043 short of reading the type info. For now punt. */
23044 return GDB_INDEX_SYMBOL_KIND_VARIABLE;
23045 default:
23046 /* There are other LOC_FOO values that one might want to classify
23047 as variables, but dwarf2read.c doesn't currently use them. */
23048 return GDB_INDEX_SYMBOL_KIND_OTHER;
23049 }
23050 case STRUCT_DOMAIN:
23051 return GDB_INDEX_SYMBOL_KIND_TYPE;
23052 default:
23053 return GDB_INDEX_SYMBOL_KIND_OTHER;
23054 }
23055}
23056
9291a0cd 23057/* Add a list of partial symbols to SYMTAB. */
b89be57b 23058
9291a0cd
TT
23059static void
23060write_psymbols (struct mapped_symtab *symtab,
987d643c 23061 htab_t psyms_seen,
9291a0cd
TT
23062 struct partial_symbol **psymp,
23063 int count,
987d643c
TT
23064 offset_type cu_index,
23065 int is_static)
9291a0cd
TT
23066{
23067 for (; count-- > 0; ++psymp)
23068 {
156942c7
DE
23069 struct partial_symbol *psym = *psymp;
23070 void **slot;
987d643c 23071
156942c7 23072 if (SYMBOL_LANGUAGE (psym) == language_ada)
9291a0cd 23073 error (_("Ada is not currently supported by the index"));
987d643c 23074
987d643c 23075 /* Only add a given psymbol once. */
156942c7 23076 slot = htab_find_slot (psyms_seen, psym, INSERT);
987d643c
TT
23077 if (!*slot)
23078 {
156942c7
DE
23079 gdb_index_symbol_kind kind = symbol_kind (psym);
23080
23081 *slot = psym;
23082 add_index_entry (symtab, SYMBOL_SEARCH_NAME (psym),
23083 is_static, kind, cu_index);
987d643c 23084 }
9291a0cd
TT
23085 }
23086}
23087
23088/* Write the contents of an ("unfinished") obstack to FILE. Throw an
23089 exception if there is an error. */
b89be57b 23090
9291a0cd
TT
23091static void
23092write_obstack (FILE *file, struct obstack *obstack)
23093{
23094 if (fwrite (obstack_base (obstack), 1, obstack_object_size (obstack),
23095 file)
23096 != obstack_object_size (obstack))
23097 error (_("couldn't data write to file"));
23098}
23099
23100/* Unlink a file if the argument is not NULL. */
b89be57b 23101
9291a0cd
TT
23102static void
23103unlink_if_set (void *p)
23104{
23105 char **filename = p;
23106 if (*filename)
23107 unlink (*filename);
23108}
23109
1fd400ff
TT
23110/* A helper struct used when iterating over debug_types. */
23111struct signatured_type_index_data
23112{
23113 struct objfile *objfile;
23114 struct mapped_symtab *symtab;
23115 struct obstack *types_list;
987d643c 23116 htab_t psyms_seen;
1fd400ff
TT
23117 int cu_index;
23118};
23119
23120/* A helper function that writes a single signatured_type to an
23121 obstack. */
b89be57b 23122
1fd400ff
TT
23123static int
23124write_one_signatured_type (void **slot, void *d)
23125{
23126 struct signatured_type_index_data *info = d;
23127 struct signatured_type *entry = (struct signatured_type *) *slot;
0186c6a7 23128 struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
1fd400ff
TT
23129 gdb_byte val[8];
23130
23131 write_psymbols (info->symtab,
987d643c 23132 info->psyms_seen,
3e43a32a
MS
23133 info->objfile->global_psymbols.list
23134 + psymtab->globals_offset,
987d643c
TT
23135 psymtab->n_global_syms, info->cu_index,
23136 0);
1fd400ff 23137 write_psymbols (info->symtab,
987d643c 23138 info->psyms_seen,
3e43a32a
MS
23139 info->objfile->static_psymbols.list
23140 + psymtab->statics_offset,
987d643c
TT
23141 psymtab->n_static_syms, info->cu_index,
23142 1);
1fd400ff 23143
b64f50a1
JK
23144 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23145 entry->per_cu.offset.sect_off);
1fd400ff 23146 obstack_grow (info->types_list, val, 8);
3019eac3
DE
23147 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23148 entry->type_offset_in_tu.cu_off);
1fd400ff
TT
23149 obstack_grow (info->types_list, val, 8);
23150 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->signature);
23151 obstack_grow (info->types_list, val, 8);
23152
23153 ++info->cu_index;
23154
23155 return 1;
23156}
23157
95554aad
TT
23158/* Recurse into all "included" dependencies and write their symbols as
23159 if they appeared in this psymtab. */
23160
23161static void
23162recursively_write_psymbols (struct objfile *objfile,
23163 struct partial_symtab *psymtab,
23164 struct mapped_symtab *symtab,
23165 htab_t psyms_seen,
23166 offset_type cu_index)
23167{
23168 int i;
23169
23170 for (i = 0; i < psymtab->number_of_dependencies; ++i)
23171 if (psymtab->dependencies[i]->user != NULL)
23172 recursively_write_psymbols (objfile, psymtab->dependencies[i],
23173 symtab, psyms_seen, cu_index);
23174
23175 write_psymbols (symtab,
23176 psyms_seen,
23177 objfile->global_psymbols.list + psymtab->globals_offset,
23178 psymtab->n_global_syms, cu_index,
23179 0);
23180 write_psymbols (symtab,
23181 psyms_seen,
23182 objfile->static_psymbols.list + psymtab->statics_offset,
23183 psymtab->n_static_syms, cu_index,
23184 1);
23185}
23186
9291a0cd 23187/* Create an index file for OBJFILE in the directory DIR. */
b89be57b 23188
9291a0cd
TT
23189static void
23190write_psymtabs_to_index (struct objfile *objfile, const char *dir)
23191{
23192 struct cleanup *cleanup;
23193 char *filename, *cleanup_filename;
1fd400ff
TT
23194 struct obstack contents, addr_obstack, constant_pool, symtab_obstack;
23195 struct obstack cu_list, types_cu_list;
9291a0cd
TT
23196 int i;
23197 FILE *out_file;
23198 struct mapped_symtab *symtab;
23199 offset_type val, size_of_contents, total_len;
23200 struct stat st;
987d643c 23201 htab_t psyms_seen;
0a5429f6
DE
23202 htab_t cu_index_htab;
23203 struct psymtab_cu_index_map *psymtab_cu_index_map;
9291a0cd 23204
9291a0cd
TT
23205 if (dwarf2_per_objfile->using_index)
23206 error (_("Cannot use an index to create the index"));
23207
8b70b953
TT
23208 if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) > 1)
23209 error (_("Cannot make an index when the file has multiple .debug_types sections"));
23210
260b681b
DE
23211 if (!objfile->psymtabs || !objfile->psymtabs_addrmap)
23212 return;
23213
4262abfb
JK
23214 if (stat (objfile_name (objfile), &st) < 0)
23215 perror_with_name (objfile_name (objfile));
9291a0cd 23216
4262abfb 23217 filename = concat (dir, SLASH_STRING, lbasename (objfile_name (objfile)),
9291a0cd
TT
23218 INDEX_SUFFIX, (char *) NULL);
23219 cleanup = make_cleanup (xfree, filename);
23220
614c279d 23221 out_file = gdb_fopen_cloexec (filename, "wb");
9291a0cd
TT
23222 if (!out_file)
23223 error (_("Can't open `%s' for writing"), filename);
23224
23225 cleanup_filename = filename;
23226 make_cleanup (unlink_if_set, &cleanup_filename);
23227
23228 symtab = create_mapped_symtab ();
23229 make_cleanup (cleanup_mapped_symtab, symtab);
23230
23231 obstack_init (&addr_obstack);
23232 make_cleanup_obstack_free (&addr_obstack);
23233
23234 obstack_init (&cu_list);
23235 make_cleanup_obstack_free (&cu_list);
23236
1fd400ff
TT
23237 obstack_init (&types_cu_list);
23238 make_cleanup_obstack_free (&types_cu_list);
23239
987d643c
TT
23240 psyms_seen = htab_create_alloc (100, htab_hash_pointer, htab_eq_pointer,
23241 NULL, xcalloc, xfree);
96408a79 23242 make_cleanup_htab_delete (psyms_seen);
987d643c 23243
0a5429f6
DE
23244 /* While we're scanning CU's create a table that maps a psymtab pointer
23245 (which is what addrmap records) to its index (which is what is recorded
23246 in the index file). This will later be needed to write the address
23247 table. */
23248 cu_index_htab = htab_create_alloc (100,
23249 hash_psymtab_cu_index,
23250 eq_psymtab_cu_index,
23251 NULL, xcalloc, xfree);
96408a79 23252 make_cleanup_htab_delete (cu_index_htab);
0a5429f6
DE
23253 psymtab_cu_index_map = (struct psymtab_cu_index_map *)
23254 xmalloc (sizeof (struct psymtab_cu_index_map)
23255 * dwarf2_per_objfile->n_comp_units);
23256 make_cleanup (xfree, psymtab_cu_index_map);
23257
23258 /* The CU list is already sorted, so we don't need to do additional
1fd400ff
TT
23259 work here. Also, the debug_types entries do not appear in
23260 all_comp_units, but only in their own hash table. */
9291a0cd
TT
23261 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
23262 {
3e43a32a
MS
23263 struct dwarf2_per_cu_data *per_cu
23264 = dwarf2_per_objfile->all_comp_units[i];
e254ef6a 23265 struct partial_symtab *psymtab = per_cu->v.psymtab;
9291a0cd 23266 gdb_byte val[8];
0a5429f6
DE
23267 struct psymtab_cu_index_map *map;
23268 void **slot;
9291a0cd 23269
92fac807
JK
23270 /* CU of a shared file from 'dwz -m' may be unused by this main file.
23271 It may be referenced from a local scope but in such case it does not
23272 need to be present in .gdb_index. */
23273 if (psymtab == NULL)
23274 continue;
23275
95554aad
TT
23276 if (psymtab->user == NULL)
23277 recursively_write_psymbols (objfile, psymtab, symtab, psyms_seen, i);
9291a0cd 23278
0a5429f6
DE
23279 map = &psymtab_cu_index_map[i];
23280 map->psymtab = psymtab;
23281 map->cu_index = i;
23282 slot = htab_find_slot (cu_index_htab, map, INSERT);
23283 gdb_assert (slot != NULL);
23284 gdb_assert (*slot == NULL);
23285 *slot = map;
9291a0cd 23286
b64f50a1
JK
23287 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23288 per_cu->offset.sect_off);
9291a0cd 23289 obstack_grow (&cu_list, val, 8);
e254ef6a 23290 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, per_cu->length);
9291a0cd
TT
23291 obstack_grow (&cu_list, val, 8);
23292 }
23293
0a5429f6
DE
23294 /* Dump the address map. */
23295 write_address_map (objfile, &addr_obstack, cu_index_htab);
23296
1fd400ff
TT
23297 /* Write out the .debug_type entries, if any. */
23298 if (dwarf2_per_objfile->signatured_types)
23299 {
23300 struct signatured_type_index_data sig_data;
23301
23302 sig_data.objfile = objfile;
23303 sig_data.symtab = symtab;
23304 sig_data.types_list = &types_cu_list;
987d643c 23305 sig_data.psyms_seen = psyms_seen;
1fd400ff
TT
23306 sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
23307 htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
23308 write_one_signatured_type, &sig_data);
23309 }
23310
156942c7
DE
23311 /* Now that we've processed all symbols we can shrink their cu_indices
23312 lists. */
23313 uniquify_cu_indices (symtab);
23314
9291a0cd
TT
23315 obstack_init (&constant_pool);
23316 make_cleanup_obstack_free (&constant_pool);
23317 obstack_init (&symtab_obstack);
23318 make_cleanup_obstack_free (&symtab_obstack);
23319 write_hash_table (symtab, &symtab_obstack, &constant_pool);
23320
23321 obstack_init (&contents);
23322 make_cleanup_obstack_free (&contents);
1fd400ff 23323 size_of_contents = 6 * sizeof (offset_type);
9291a0cd
TT
23324 total_len = size_of_contents;
23325
23326 /* The version number. */
796a7ff8 23327 val = MAYBE_SWAP (8);
9291a0cd
TT
23328 obstack_grow (&contents, &val, sizeof (val));
23329
23330 /* The offset of the CU list from the start of the file. */
23331 val = MAYBE_SWAP (total_len);
23332 obstack_grow (&contents, &val, sizeof (val));
23333 total_len += obstack_object_size (&cu_list);
23334
1fd400ff
TT
23335 /* The offset of the types CU list from the start of the file. */
23336 val = MAYBE_SWAP (total_len);
23337 obstack_grow (&contents, &val, sizeof (val));
23338 total_len += obstack_object_size (&types_cu_list);
23339
9291a0cd
TT
23340 /* The offset of the address table from the start of the file. */
23341 val = MAYBE_SWAP (total_len);
23342 obstack_grow (&contents, &val, sizeof (val));
23343 total_len += obstack_object_size (&addr_obstack);
23344
23345 /* The offset of the symbol table from the start of the file. */
23346 val = MAYBE_SWAP (total_len);
23347 obstack_grow (&contents, &val, sizeof (val));
23348 total_len += obstack_object_size (&symtab_obstack);
23349
23350 /* The offset of the constant pool from the start of the file. */
23351 val = MAYBE_SWAP (total_len);
23352 obstack_grow (&contents, &val, sizeof (val));
23353 total_len += obstack_object_size (&constant_pool);
23354
23355 gdb_assert (obstack_object_size (&contents) == size_of_contents);
23356
23357 write_obstack (out_file, &contents);
23358 write_obstack (out_file, &cu_list);
1fd400ff 23359 write_obstack (out_file, &types_cu_list);
9291a0cd
TT
23360 write_obstack (out_file, &addr_obstack);
23361 write_obstack (out_file, &symtab_obstack);
23362 write_obstack (out_file, &constant_pool);
23363
23364 fclose (out_file);
23365
23366 /* We want to keep the file, so we set cleanup_filename to NULL
23367 here. See unlink_if_set. */
23368 cleanup_filename = NULL;
23369
23370 do_cleanups (cleanup);
23371}
23372
90476074
TT
23373/* Implementation of the `save gdb-index' command.
23374
23375 Note that the file format used by this command is documented in the
23376 GDB manual. Any changes here must be documented there. */
11570e71 23377
9291a0cd
TT
23378static void
23379save_gdb_index_command (char *arg, int from_tty)
23380{
23381 struct objfile *objfile;
23382
23383 if (!arg || !*arg)
96d19272 23384 error (_("usage: save gdb-index DIRECTORY"));
9291a0cd
TT
23385
23386 ALL_OBJFILES (objfile)
23387 {
23388 struct stat st;
23389
23390 /* If the objfile does not correspond to an actual file, skip it. */
4262abfb 23391 if (stat (objfile_name (objfile), &st) < 0)
9291a0cd
TT
23392 continue;
23393
23394 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
23395 if (dwarf2_per_objfile)
23396 {
9291a0cd 23397
492d29ea 23398 TRY
9291a0cd
TT
23399 {
23400 write_psymtabs_to_index (objfile, arg);
23401 }
492d29ea
PA
23402 CATCH (except, RETURN_MASK_ERROR)
23403 {
23404 exception_fprintf (gdb_stderr, except,
23405 _("Error while writing index for `%s': "),
23406 objfile_name (objfile));
23407 }
23408 END_CATCH
9291a0cd
TT
23409 }
23410 }
dce234bc
PP
23411}
23412
9291a0cd
TT
23413\f
23414
b4f54984 23415int dwarf_always_disassemble;
9eae7c52
TT
23416
23417static void
b4f54984
DE
23418show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
23419 struct cmd_list_element *c, const char *value)
9eae7c52 23420{
3e43a32a
MS
23421 fprintf_filtered (file,
23422 _("Whether to always disassemble "
23423 "DWARF expressions is %s.\n"),
9eae7c52
TT
23424 value);
23425}
23426
900e11f9
JK
23427static void
23428show_check_physname (struct ui_file *file, int from_tty,
23429 struct cmd_list_element *c, const char *value)
23430{
23431 fprintf_filtered (file,
23432 _("Whether to check \"physname\" is %s.\n"),
23433 value);
23434}
23435
6502dd73
DJ
23436void _initialize_dwarf2_read (void);
23437
23438void
23439_initialize_dwarf2_read (void)
23440{
96d19272
JK
23441 struct cmd_list_element *c;
23442
dce234bc 23443 dwarf2_objfile_data_key
c1bd65d0 23444 = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
ae038cb0 23445
b4f54984
DE
23446 add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
23447Set DWARF specific variables.\n\
23448Configure DWARF variables such as the cache size"),
23449 &set_dwarf_cmdlist, "maintenance set dwarf ",
ae038cb0
DJ
23450 0/*allow-unknown*/, &maintenance_set_cmdlist);
23451
b4f54984
DE
23452 add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
23453Show DWARF specific variables\n\
23454Show DWARF variables such as the cache size"),
23455 &show_dwarf_cmdlist, "maintenance show dwarf ",
ae038cb0
DJ
23456 0/*allow-unknown*/, &maintenance_show_cmdlist);
23457
23458 add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
b4f54984
DE
23459 &dwarf_max_cache_age, _("\
23460Set the upper bound on the age of cached DWARF compilation units."), _("\
23461Show the upper bound on the age of cached DWARF compilation units."), _("\
7915a72c
AC
23462A higher limit means that cached compilation units will be stored\n\
23463in memory longer, and more total memory will be used. Zero disables\n\
23464caching, which can slow down startup."),
2c5b56ce 23465 NULL,
b4f54984
DE
23466 show_dwarf_max_cache_age,
23467 &set_dwarf_cmdlist,
23468 &show_dwarf_cmdlist);
d97bc12b 23469
9eae7c52 23470 add_setshow_boolean_cmd ("always-disassemble", class_obscure,
b4f54984 23471 &dwarf_always_disassemble, _("\
9eae7c52
TT
23472Set whether `info address' always disassembles DWARF expressions."), _("\
23473Show whether `info address' always disassembles DWARF expressions."), _("\
23474When enabled, DWARF expressions are always printed in an assembly-like\n\
23475syntax. When disabled, expressions will be printed in a more\n\
23476conversational style, when possible."),
23477 NULL,
b4f54984
DE
23478 show_dwarf_always_disassemble,
23479 &set_dwarf_cmdlist,
23480 &show_dwarf_cmdlist);
23481
23482 add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
23483Set debugging of the DWARF reader."), _("\
23484Show debugging of the DWARF reader."), _("\
23485When enabled (non-zero), debugging messages are printed during DWARF\n\
73be47f5
DE
23486reading and symtab expansion. A value of 1 (one) provides basic\n\
23487information. A value greater than 1 provides more verbose information."),
45cfd468
DE
23488 NULL,
23489 NULL,
23490 &setdebuglist, &showdebuglist);
23491
b4f54984
DE
23492 add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
23493Set debugging of the DWARF DIE reader."), _("\
23494Show debugging of the DWARF DIE reader."), _("\
d97bc12b
DE
23495When enabled (non-zero), DIEs are dumped after they are read in.\n\
23496The value is the maximum depth to print."),
ccce17b0
YQ
23497 NULL,
23498 NULL,
23499 &setdebuglist, &showdebuglist);
9291a0cd 23500
27e0867f
DE
23501 add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
23502Set debugging of the dwarf line reader."), _("\
23503Show debugging of the dwarf line reader."), _("\
23504When enabled (non-zero), line number entries are dumped as they are read in.\n\
23505A value of 1 (one) provides basic information.\n\
23506A value greater than 1 provides more verbose information."),
23507 NULL,
23508 NULL,
23509 &setdebuglist, &showdebuglist);
23510
900e11f9
JK
23511 add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
23512Set cross-checking of \"physname\" code against demangler."), _("\
23513Show cross-checking of \"physname\" code against demangler."), _("\
23514When enabled, GDB's internal \"physname\" code is checked against\n\
23515the demangler."),
23516 NULL, show_check_physname,
23517 &setdebuglist, &showdebuglist);
23518
e615022a
DE
23519 add_setshow_boolean_cmd ("use-deprecated-index-sections",
23520 no_class, &use_deprecated_index_sections, _("\
23521Set whether to use deprecated gdb_index sections."), _("\
23522Show whether to use deprecated gdb_index sections."), _("\
23523When enabled, deprecated .gdb_index sections are used anyway.\n\
23524Normally they are ignored either because of a missing feature or\n\
23525performance issue.\n\
23526Warning: This option must be enabled before gdb reads the file."),
23527 NULL,
23528 NULL,
23529 &setlist, &showlist);
23530
96d19272 23531 c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
11570e71 23532 _("\
fc1a9d6e 23533Save a gdb-index file.\n\
11570e71 23534Usage: save gdb-index DIRECTORY"),
96d19272
JK
23535 &save_cmdlist);
23536 set_cmd_completer (c, filename_completer);
f1e6e072
TT
23537
23538 dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
23539 &dwarf2_locexpr_funcs);
23540 dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
23541 &dwarf2_loclist_funcs);
23542
23543 dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
23544 &dwarf2_block_frame_base_locexpr_funcs);
23545 dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
23546 &dwarf2_block_frame_base_loclist_funcs);
6502dd73 23547}
This page took 4.13135 seconds and 4 git commands to generate.