Code cleanup: Use explicit NULL comparison
[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
JK
612 /* Set to non-NULL iff this CU is currently loaded. When it gets freed out
613 of the CU cache it gets reset to NULL again. */
ae038cb0 614 struct dwarf2_cu *cu;
1c379e20 615
9cdd5dbd
DE
616 /* The corresponding objfile.
617 Normally we can get the objfile from dwarf2_per_objfile.
618 However we can enter this file with just a "per_cu" handle. */
9291a0cd
TT
619 struct objfile *objfile;
620
fffbe6a8
YQ
621 /* When dwarf2_per_objfile->using_index is true, the 'quick' field
622 is active. Otherwise, the 'psymtab' field is active. */
9291a0cd
TT
623 union
624 {
625 /* The partial symbol table associated with this compilation unit,
95554aad 626 or NULL for unread partial units. */
9291a0cd
TT
627 struct partial_symtab *psymtab;
628
629 /* Data needed by the "quick" functions. */
630 struct dwarf2_per_cu_quick_data *quick;
631 } v;
95554aad 632
796a7ff8
DE
633 /* The CUs we import using DW_TAG_imported_unit. This is filled in
634 while reading psymtabs, used to compute the psymtab dependencies,
635 and then cleared. Then it is filled in again while reading full
636 symbols, and only deleted when the objfile is destroyed.
637
638 This is also used to work around a difference between the way gold
639 generates .gdb_index version <=7 and the way gdb does. Arguably this
640 is a gold bug. For symbols coming from TUs, gold records in the index
641 the CU that includes the TU instead of the TU itself. This breaks
642 dw2_lookup_symbol: It assumes that if the index says symbol X lives
643 in CU/TU Y, then one need only expand Y and a subsequent lookup in Y
644 will find X. Alas TUs live in their own symtab, so after expanding CU Y
645 we need to look in TU Z to find X. Fortunately, this is akin to
646 DW_TAG_imported_unit, so we just use the same mechanism: For
647 .gdb_index version <=7 this also records the TUs that the CU referred
648 to. Concurrently with this change gdb was modified to emit version 8
69d751e3
DE
649 indices so we only pay a price for gold generated indices.
650 http://sourceware.org/bugzilla/show_bug.cgi?id=15021. */
796a7ff8 651 VEC (dwarf2_per_cu_ptr) *imported_symtabs;
ae038cb0
DJ
652};
653
348e048f
DE
654/* Entry in the signatured_types hash table. */
655
656struct signatured_type
657{
42e7ad6c 658 /* The "per_cu" object of this type.
ac9ec31b 659 This struct is used iff per_cu.is_debug_types.
42e7ad6c
DE
660 N.B.: This is the first member so that it's easy to convert pointers
661 between them. */
662 struct dwarf2_per_cu_data per_cu;
663
3019eac3 664 /* The type's signature. */
348e048f
DE
665 ULONGEST signature;
666
3019eac3 667 /* Offset in the TU of the type's DIE, as read from the TU header.
c88ee1f0
DE
668 If this TU is a DWO stub and the definition lives in a DWO file
669 (specified by DW_AT_GNU_dwo_name), this value is unusable. */
3019eac3
DE
670 cu_offset type_offset_in_tu;
671
672 /* Offset in the section of the type's DIE.
673 If the definition lives in a DWO file, this is the offset in the
674 .debug_types.dwo section.
675 The value is zero until the actual value is known.
676 Zero is otherwise not a valid section offset. */
677 sect_offset type_offset_in_section;
0186c6a7
DE
678
679 /* Type units are grouped by their DW_AT_stmt_list entry so that they
680 can share them. This points to the containing symtab. */
681 struct type_unit_group *type_unit_group;
ac9ec31b
DE
682
683 /* The type.
684 The first time we encounter this type we fully read it in and install it
685 in the symbol tables. Subsequent times we only need the type. */
686 struct type *type;
a2ce51a0
DE
687
688 /* Containing DWO unit.
689 This field is valid iff per_cu.reading_dwo_directly. */
690 struct dwo_unit *dwo_unit;
348e048f
DE
691};
692
0186c6a7
DE
693typedef struct signatured_type *sig_type_ptr;
694DEF_VEC_P (sig_type_ptr);
695
094b34ac
DE
696/* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
697 This includes type_unit_group and quick_file_names. */
698
699struct stmt_list_hash
700{
701 /* The DWO unit this table is from or NULL if there is none. */
702 struct dwo_unit *dwo_unit;
703
704 /* Offset in .debug_line or .debug_line.dwo. */
705 sect_offset line_offset;
706};
707
f4dc4d17
DE
708/* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
709 an object of this type. */
710
711struct type_unit_group
712{
0186c6a7 713 /* dwarf2read.c's main "handle" on a TU symtab.
f4dc4d17
DE
714 To simplify things we create an artificial CU that "includes" all the
715 type units using this stmt_list so that the rest of the code still has
716 a "per_cu" handle on the symtab.
717 This PER_CU is recognized by having no section. */
8a0459fd 718#define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
094b34ac
DE
719 struct dwarf2_per_cu_data per_cu;
720
0186c6a7
DE
721 /* The TUs that share this DW_AT_stmt_list entry.
722 This is added to while parsing type units to build partial symtabs,
723 and is deleted afterwards and not used again. */
724 VEC (sig_type_ptr) *tus;
f4dc4d17 725
43f3e411 726 /* The compunit symtab.
094b34ac 727 Type units in a group needn't all be defined in the same source file,
43f3e411
DE
728 so we create an essentially anonymous symtab as the compunit symtab. */
729 struct compunit_symtab *compunit_symtab;
f4dc4d17 730
094b34ac
DE
731 /* The data used to construct the hash key. */
732 struct stmt_list_hash hash;
f4dc4d17
DE
733
734 /* The number of symtabs from the line header.
735 The value here must match line_header.num_file_names. */
736 unsigned int num_symtabs;
737
738 /* The symbol tables for this TU (obtained from the files listed in
739 DW_AT_stmt_list).
740 WARNING: The order of entries here must match the order of entries
741 in the line header. After the first TU using this type_unit_group, the
742 line header for the subsequent TUs is recreated from this. This is done
743 because we need to use the same symtabs for each TU using the same
744 DW_AT_stmt_list value. Also note that symtabs may be repeated here,
745 there's no guarantee the line header doesn't have duplicate entries. */
746 struct symtab **symtabs;
747};
748
73869dc2 749/* These sections are what may appear in a (real or virtual) DWO file. */
3019eac3
DE
750
751struct dwo_sections
752{
753 struct dwarf2_section_info abbrev;
3019eac3
DE
754 struct dwarf2_section_info line;
755 struct dwarf2_section_info loc;
09262596
DE
756 struct dwarf2_section_info macinfo;
757 struct dwarf2_section_info macro;
3019eac3
DE
758 struct dwarf2_section_info str;
759 struct dwarf2_section_info str_offsets;
80626a55
DE
760 /* In the case of a virtual DWO file, these two are unused. */
761 struct dwarf2_section_info info;
3019eac3
DE
762 VEC (dwarf2_section_info_def) *types;
763};
764
c88ee1f0 765/* CUs/TUs in DWP/DWO files. */
3019eac3
DE
766
767struct dwo_unit
768{
769 /* Backlink to the containing struct dwo_file. */
770 struct dwo_file *dwo_file;
771
772 /* The "id" that distinguishes this CU/TU.
773 .debug_info calls this "dwo_id", .debug_types calls this "signature".
774 Since signatures came first, we stick with it for consistency. */
775 ULONGEST signature;
776
777 /* The section this CU/TU lives in, in the DWO file. */
8a0459fd 778 struct dwarf2_section_info *section;
3019eac3 779
19ac8c2e 780 /* Same as dwarf2_per_cu_data:{offset,length} but in the DWO section. */
3019eac3
DE
781 sect_offset offset;
782 unsigned int length;
783
784 /* For types, offset in the type's DIE of the type defined by this TU. */
785 cu_offset type_offset_in_tu;
786};
787
73869dc2
DE
788/* include/dwarf2.h defines the DWP section codes.
789 It defines a max value but it doesn't define a min value, which we
790 use for error checking, so provide one. */
791
792enum dwp_v2_section_ids
793{
794 DW_SECT_MIN = 1
795};
796
80626a55 797/* Data for one DWO file.
57d63ce2
DE
798
799 This includes virtual DWO files (a virtual DWO file is a DWO file as it
800 appears in a DWP file). DWP files don't really have DWO files per se -
801 comdat folding of types "loses" the DWO file they came from, and from
802 a high level view DWP files appear to contain a mass of random types.
803 However, to maintain consistency with the non-DWP case we pretend DWP
804 files contain virtual DWO files, and we assign each TU with one virtual
805 DWO file (generally based on the line and abbrev section offsets -
806 a heuristic that seems to work in practice). */
3019eac3
DE
807
808struct dwo_file
809{
0ac5b59e 810 /* The DW_AT_GNU_dwo_name attribute.
80626a55
DE
811 For virtual DWO files the name is constructed from the section offsets
812 of abbrev,line,loc,str_offsets so that we combine virtual DWO files
813 from related CU+TUs. */
0ac5b59e
DE
814 const char *dwo_name;
815
816 /* The DW_AT_comp_dir attribute. */
817 const char *comp_dir;
3019eac3 818
80626a55
DE
819 /* The bfd, when the file is open. Otherwise this is NULL.
820 This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd. */
821 bfd *dbfd;
3019eac3 822
73869dc2
DE
823 /* The sections that make up this DWO file.
824 Remember that for virtual DWO files in DWP V2, these are virtual
825 sections (for lack of a better name). */
3019eac3
DE
826 struct dwo_sections sections;
827
19c3d4c9
DE
828 /* The CU in the file.
829 We only support one because having more than one requires hacking the
830 dwo_name of each to match, which is highly unlikely to happen.
831 Doing this means all TUs can share comp_dir: We also assume that
832 DW_AT_comp_dir across all TUs in a DWO file will be identical. */
833 struct dwo_unit *cu;
3019eac3
DE
834
835 /* Table of TUs in the file.
836 Each element is a struct dwo_unit. */
837 htab_t tus;
838};
839
80626a55
DE
840/* These sections are what may appear in a DWP file. */
841
842struct dwp_sections
843{
73869dc2 844 /* These are used by both DWP version 1 and 2. */
80626a55
DE
845 struct dwarf2_section_info str;
846 struct dwarf2_section_info cu_index;
847 struct dwarf2_section_info tu_index;
73869dc2
DE
848
849 /* These are only used by DWP version 2 files.
850 In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
851 sections are referenced by section number, and are not recorded here.
852 In DWP version 2 there is at most one copy of all these sections, each
853 section being (effectively) comprised of the concatenation of all of the
854 individual sections that exist in the version 1 format.
855 To keep the code simple we treat each of these concatenated pieces as a
856 section itself (a virtual section?). */
857 struct dwarf2_section_info abbrev;
858 struct dwarf2_section_info info;
859 struct dwarf2_section_info line;
860 struct dwarf2_section_info loc;
861 struct dwarf2_section_info macinfo;
862 struct dwarf2_section_info macro;
863 struct dwarf2_section_info str_offsets;
864 struct dwarf2_section_info types;
80626a55
DE
865};
866
73869dc2
DE
867/* These sections are what may appear in a virtual DWO file in DWP version 1.
868 A virtual DWO file is a DWO file as it appears in a DWP file. */
80626a55 869
73869dc2 870struct virtual_v1_dwo_sections
80626a55
DE
871{
872 struct dwarf2_section_info abbrev;
873 struct dwarf2_section_info line;
874 struct dwarf2_section_info loc;
875 struct dwarf2_section_info macinfo;
876 struct dwarf2_section_info macro;
877 struct dwarf2_section_info str_offsets;
878 /* Each DWP hash table entry records one CU or one TU.
8a0459fd 879 That is recorded here, and copied to dwo_unit.section. */
80626a55
DE
880 struct dwarf2_section_info info_or_types;
881};
882
73869dc2
DE
883/* Similar to virtual_v1_dwo_sections, but for DWP version 2.
884 In version 2, the sections of the DWO files are concatenated together
885 and stored in one section of that name. Thus each ELF section contains
886 several "virtual" sections. */
887
888struct virtual_v2_dwo_sections
889{
890 bfd_size_type abbrev_offset;
891 bfd_size_type abbrev_size;
892
893 bfd_size_type line_offset;
894 bfd_size_type line_size;
895
896 bfd_size_type loc_offset;
897 bfd_size_type loc_size;
898
899 bfd_size_type macinfo_offset;
900 bfd_size_type macinfo_size;
901
902 bfd_size_type macro_offset;
903 bfd_size_type macro_size;
904
905 bfd_size_type str_offsets_offset;
906 bfd_size_type str_offsets_size;
907
908 /* Each DWP hash table entry records one CU or one TU.
909 That is recorded here, and copied to dwo_unit.section. */
910 bfd_size_type info_or_types_offset;
911 bfd_size_type info_or_types_size;
912};
913
80626a55
DE
914/* Contents of DWP hash tables. */
915
916struct dwp_hash_table
917{
73869dc2 918 uint32_t version, nr_columns;
80626a55 919 uint32_t nr_units, nr_slots;
73869dc2
DE
920 const gdb_byte *hash_table, *unit_table;
921 union
922 {
923 struct
924 {
925 const gdb_byte *indices;
926 } v1;
927 struct
928 {
929 /* This is indexed by column number and gives the id of the section
930 in that column. */
931#define MAX_NR_V2_DWO_SECTIONS \
932 (1 /* .debug_info or .debug_types */ \
933 + 1 /* .debug_abbrev */ \
934 + 1 /* .debug_line */ \
935 + 1 /* .debug_loc */ \
936 + 1 /* .debug_str_offsets */ \
937 + 1 /* .debug_macro or .debug_macinfo */)
938 int section_ids[MAX_NR_V2_DWO_SECTIONS];
939 const gdb_byte *offsets;
940 const gdb_byte *sizes;
941 } v2;
942 } section_pool;
80626a55
DE
943};
944
945/* Data for one DWP file. */
946
947struct dwp_file
948{
949 /* Name of the file. */
950 const char *name;
951
73869dc2
DE
952 /* File format version. */
953 int version;
954
93417882 955 /* The bfd. */
80626a55
DE
956 bfd *dbfd;
957
958 /* Section info for this file. */
959 struct dwp_sections sections;
960
57d63ce2 961 /* Table of CUs in the file. */
80626a55
DE
962 const struct dwp_hash_table *cus;
963
964 /* Table of TUs in the file. */
965 const struct dwp_hash_table *tus;
966
19ac8c2e
DE
967 /* Tables of loaded CUs/TUs. Each entry is a struct dwo_unit *. */
968 htab_t loaded_cus;
969 htab_t loaded_tus;
80626a55 970
73869dc2
DE
971 /* Table to map ELF section numbers to their sections.
972 This is only needed for the DWP V1 file format. */
80626a55
DE
973 unsigned int num_sections;
974 asection **elf_sections;
975};
976
36586728
TT
977/* This represents a '.dwz' file. */
978
979struct dwz_file
980{
981 /* A dwz file can only contain a few sections. */
982 struct dwarf2_section_info abbrev;
983 struct dwarf2_section_info info;
984 struct dwarf2_section_info str;
985 struct dwarf2_section_info line;
986 struct dwarf2_section_info macro;
2ec9a5e0 987 struct dwarf2_section_info gdb_index;
36586728
TT
988
989 /* The dwz's BFD. */
990 bfd *dwz_bfd;
991};
992
0963b4bd
MS
993/* Struct used to pass misc. parameters to read_die_and_children, et
994 al. which are used for both .debug_info and .debug_types dies.
995 All parameters here are unchanging for the life of the call. This
dee91e82 996 struct exists to abstract away the constant parameters of die reading. */
93311388
DE
997
998struct die_reader_specs
999{
a32a8923 1000 /* The bfd of die_section. */
93311388
DE
1001 bfd* abfd;
1002
1003 /* The CU of the DIE we are parsing. */
1004 struct dwarf2_cu *cu;
1005
80626a55 1006 /* Non-NULL if reading a DWO file (including one packaged into a DWP). */
3019eac3
DE
1007 struct dwo_file *dwo_file;
1008
dee91e82 1009 /* The section the die comes from.
3019eac3 1010 This is either .debug_info or .debug_types, or the .dwo variants. */
dee91e82
DE
1011 struct dwarf2_section_info *die_section;
1012
1013 /* die_section->buffer. */
d521ce57 1014 const gdb_byte *buffer;
f664829e
DE
1015
1016 /* The end of the buffer. */
1017 const gdb_byte *buffer_end;
a2ce51a0
DE
1018
1019 /* The value of the DW_AT_comp_dir attribute. */
1020 const char *comp_dir;
93311388
DE
1021};
1022
fd820528 1023/* Type of function passed to init_cutu_and_read_dies, et.al. */
dee91e82 1024typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
d521ce57 1025 const gdb_byte *info_ptr,
dee91e82
DE
1026 struct die_info *comp_unit_die,
1027 int has_children,
1028 void *data);
1029
52059ffd
TT
1030struct file_entry
1031{
1032 const char *name;
1033 unsigned int dir_index;
1034 unsigned int mod_time;
1035 unsigned int length;
83769d0b
DE
1036 /* Non-zero if referenced by the Line Number Program. */
1037 int included_p;
1038 /* The associated symbol table, if any. */
1039 struct symtab *symtab;
52059ffd
TT
1040};
1041
debd256d
JB
1042/* The line number information for a compilation unit (found in the
1043 .debug_line section) begins with a "statement program header",
1044 which contains the following information. */
1045struct line_header
1046{
527f3840
JK
1047 /* Offset of line number information in .debug_line section. */
1048 sect_offset offset;
1049
1050 /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile. */
1051 unsigned offset_in_dwz : 1;
1052
debd256d
JB
1053 unsigned int total_length;
1054 unsigned short version;
1055 unsigned int header_length;
1056 unsigned char minimum_instruction_length;
2dc7f7b3 1057 unsigned char maximum_ops_per_instruction;
debd256d
JB
1058 unsigned char default_is_stmt;
1059 int line_base;
1060 unsigned char line_range;
1061 unsigned char opcode_base;
1062
1063 /* standard_opcode_lengths[i] is the number of operands for the
1064 standard opcode whose value is i. This means that
1065 standard_opcode_lengths[0] is unused, and the last meaningful
1066 element is standard_opcode_lengths[opcode_base - 1]. */
1067 unsigned char *standard_opcode_lengths;
1068
1069 /* The include_directories table. NOTE! These strings are not
1070 allocated with xmalloc; instead, they are pointers into
1071 debug_line_buffer. If you try to free them, `free' will get
1072 indigestion. */
1073 unsigned int num_include_dirs, include_dirs_size;
d521ce57 1074 const char **include_dirs;
debd256d
JB
1075
1076 /* The file_names table. NOTE! These strings are not allocated
1077 with xmalloc; instead, they are pointers into debug_line_buffer.
1078 Don't try to free them directly. */
1079 unsigned int num_file_names, file_names_size;
52059ffd 1080 struct file_entry *file_names;
debd256d
JB
1081
1082 /* The start and end of the statement program following this
6502dd73 1083 header. These point into dwarf2_per_objfile->line_buffer. */
d521ce57 1084 const gdb_byte *statement_program_start, *statement_program_end;
debd256d 1085};
c906108c
SS
1086
1087/* When we construct a partial symbol table entry we only
0963b4bd 1088 need this much information. */
c906108c
SS
1089struct partial_die_info
1090 {
72bf9492 1091 /* Offset of this DIE. */
b64f50a1 1092 sect_offset offset;
72bf9492
DJ
1093
1094 /* DWARF-2 tag for this DIE. */
1095 ENUM_BITFIELD(dwarf_tag) tag : 16;
1096
72bf9492
DJ
1097 /* Assorted flags describing the data found in this DIE. */
1098 unsigned int has_children : 1;
1099 unsigned int is_external : 1;
1100 unsigned int is_declaration : 1;
1101 unsigned int has_type : 1;
1102 unsigned int has_specification : 1;
1103 unsigned int has_pc_info : 1;
481860b3 1104 unsigned int may_be_inlined : 1;
72bf9492
DJ
1105
1106 /* Flag set if the SCOPE field of this structure has been
1107 computed. */
1108 unsigned int scope_set : 1;
1109
fa4028e9
JB
1110 /* Flag set if the DIE has a byte_size attribute. */
1111 unsigned int has_byte_size : 1;
1112
ff908ebf
AW
1113 /* Flag set if the DIE has a DW_AT_const_value attribute. */
1114 unsigned int has_const_value : 1;
1115
98bfdba5
PA
1116 /* Flag set if any of the DIE's children are template arguments. */
1117 unsigned int has_template_arguments : 1;
1118
abc72ce4
DE
1119 /* Flag set if fixup_partial_die has been called on this die. */
1120 unsigned int fixup_called : 1;
1121
36586728
TT
1122 /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt. */
1123 unsigned int is_dwz : 1;
1124
1125 /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt. */
1126 unsigned int spec_is_dwz : 1;
1127
72bf9492 1128 /* The name of this DIE. Normally the value of DW_AT_name, but
94af9270 1129 sometimes a default name for unnamed DIEs. */
15d034d0 1130 const char *name;
72bf9492 1131
abc72ce4
DE
1132 /* The linkage name, if present. */
1133 const char *linkage_name;
1134
72bf9492
DJ
1135 /* The scope to prepend to our children. This is generally
1136 allocated on the comp_unit_obstack, so will disappear
1137 when this compilation unit leaves the cache. */
15d034d0 1138 const char *scope;
72bf9492 1139
95554aad
TT
1140 /* Some data associated with the partial DIE. The tag determines
1141 which field is live. */
1142 union
1143 {
1144 /* The location description associated with this DIE, if any. */
1145 struct dwarf_block *locdesc;
1146 /* The offset of an import, for DW_TAG_imported_unit. */
1147 sect_offset offset;
1148 } d;
72bf9492
DJ
1149
1150 /* If HAS_PC_INFO, the PC range associated with this DIE. */
c906108c
SS
1151 CORE_ADDR lowpc;
1152 CORE_ADDR highpc;
72bf9492 1153
93311388 1154 /* Pointer into the info_buffer (or types_buffer) pointing at the target of
72bf9492 1155 DW_AT_sibling, if any. */
abc72ce4
DE
1156 /* NOTE: This member isn't strictly necessary, read_partial_die could
1157 return DW_AT_sibling values to its caller load_partial_dies. */
d521ce57 1158 const gdb_byte *sibling;
72bf9492
DJ
1159
1160 /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1161 DW_AT_specification (or DW_AT_abstract_origin or
1162 DW_AT_extension). */
b64f50a1 1163 sect_offset spec_offset;
72bf9492
DJ
1164
1165 /* Pointers to this DIE's parent, first child, and next sibling,
1166 if any. */
1167 struct partial_die_info *die_parent, *die_child, *die_sibling;
c906108c
SS
1168 };
1169
0963b4bd 1170/* This data structure holds the information of an abbrev. */
c906108c
SS
1171struct abbrev_info
1172 {
1173 unsigned int number; /* number identifying abbrev */
1174 enum dwarf_tag tag; /* dwarf tag */
f3dd6933
DJ
1175 unsigned short has_children; /* boolean */
1176 unsigned short num_attrs; /* number of attributes */
c906108c
SS
1177 struct attr_abbrev *attrs; /* an array of attribute descriptions */
1178 struct abbrev_info *next; /* next in chain */
1179 };
1180
1181struct attr_abbrev
1182 {
9d25dd43
DE
1183 ENUM_BITFIELD(dwarf_attribute) name : 16;
1184 ENUM_BITFIELD(dwarf_form) form : 16;
c906108c
SS
1185 };
1186
433df2d4
DE
1187/* Size of abbrev_table.abbrev_hash_table. */
1188#define ABBREV_HASH_SIZE 121
1189
1190/* Top level data structure to contain an abbreviation table. */
1191
1192struct abbrev_table
1193{
f4dc4d17
DE
1194 /* Where the abbrev table came from.
1195 This is used as a sanity check when the table is used. */
433df2d4
DE
1196 sect_offset offset;
1197
1198 /* Storage for the abbrev table. */
1199 struct obstack abbrev_obstack;
1200
1201 /* Hash table of abbrevs.
1202 This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1203 It could be statically allocated, but the previous code didn't so we
1204 don't either. */
1205 struct abbrev_info **abbrevs;
1206};
1207
0963b4bd 1208/* Attributes have a name and a value. */
b60c80d6
DJ
1209struct attribute
1210 {
9d25dd43 1211 ENUM_BITFIELD(dwarf_attribute) name : 16;
8285870a
JK
1212 ENUM_BITFIELD(dwarf_form) form : 15;
1213
1214 /* Has DW_STRING already been updated by dwarf2_canonicalize_name? This
1215 field should be in u.str (existing only for DW_STRING) but it is kept
1216 here for better struct attribute alignment. */
1217 unsigned int string_is_canonical : 1;
1218
b60c80d6
DJ
1219 union
1220 {
15d034d0 1221 const char *str;
b60c80d6 1222 struct dwarf_block *blk;
43bbcdc2
PH
1223 ULONGEST unsnd;
1224 LONGEST snd;
b60c80d6 1225 CORE_ADDR addr;
ac9ec31b 1226 ULONGEST signature;
b60c80d6
DJ
1227 }
1228 u;
1229 };
1230
0963b4bd 1231/* This data structure holds a complete die structure. */
c906108c
SS
1232struct die_info
1233 {
76815b17
DE
1234 /* DWARF-2 tag for this DIE. */
1235 ENUM_BITFIELD(dwarf_tag) tag : 16;
1236
1237 /* Number of attributes */
98bfdba5
PA
1238 unsigned char num_attrs;
1239
1240 /* True if we're presently building the full type name for the
1241 type derived from this DIE. */
1242 unsigned char building_fullname : 1;
76815b17 1243
adde2bff
DE
1244 /* True if this die is in process. PR 16581. */
1245 unsigned char in_process : 1;
1246
76815b17
DE
1247 /* Abbrev number */
1248 unsigned int abbrev;
1249
93311388 1250 /* Offset in .debug_info or .debug_types section. */
b64f50a1 1251 sect_offset offset;
78ba4af6
JB
1252
1253 /* The dies in a compilation unit form an n-ary tree. PARENT
1254 points to this die's parent; CHILD points to the first child of
1255 this node; and all the children of a given node are chained
4950bc1c 1256 together via their SIBLING fields. */
639d11d3
DC
1257 struct die_info *child; /* Its first child, if any. */
1258 struct die_info *sibling; /* Its next sibling, if any. */
1259 struct die_info *parent; /* Its parent, if any. */
c906108c 1260
b60c80d6
DJ
1261 /* An array of attributes, with NUM_ATTRS elements. There may be
1262 zero, but it's not common and zero-sized arrays are not
1263 sufficiently portable C. */
1264 struct attribute attrs[1];
c906108c
SS
1265 };
1266
0963b4bd 1267/* Get at parts of an attribute structure. */
c906108c
SS
1268
1269#define DW_STRING(attr) ((attr)->u.str)
8285870a 1270#define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
c906108c
SS
1271#define DW_UNSND(attr) ((attr)->u.unsnd)
1272#define DW_BLOCK(attr) ((attr)->u.blk)
1273#define DW_SND(attr) ((attr)->u.snd)
1274#define DW_ADDR(attr) ((attr)->u.addr)
ac9ec31b 1275#define DW_SIGNATURE(attr) ((attr)->u.signature)
c906108c 1276
0963b4bd 1277/* Blocks are a bunch of untyped bytes. */
c906108c
SS
1278struct dwarf_block
1279 {
56eb65bd 1280 size_t size;
1d6edc3c
JK
1281
1282 /* Valid only if SIZE is not zero. */
d521ce57 1283 const gdb_byte *data;
c906108c
SS
1284 };
1285
c906108c
SS
1286#ifndef ATTR_ALLOC_CHUNK
1287#define ATTR_ALLOC_CHUNK 4
1288#endif
1289
c906108c
SS
1290/* Allocate fields for structs, unions and enums in this size. */
1291#ifndef DW_FIELD_ALLOC_CHUNK
1292#define DW_FIELD_ALLOC_CHUNK 4
1293#endif
1294
c906108c
SS
1295/* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1296 but this would require a corresponding change in unpack_field_as_long
1297 and friends. */
1298static int bits_per_byte = 8;
1299
52059ffd
TT
1300struct nextfield
1301{
1302 struct nextfield *next;
1303 int accessibility;
1304 int virtuality;
1305 struct field field;
1306};
1307
1308struct nextfnfield
1309{
1310 struct nextfnfield *next;
1311 struct fn_field fnfield;
1312};
1313
1314struct fnfieldlist
1315{
1316 const char *name;
1317 int length;
1318 struct nextfnfield *head;
1319};
1320
1321struct typedef_field_list
1322{
1323 struct typedef_field field;
1324 struct typedef_field_list *next;
1325};
1326
c906108c
SS
1327/* The routines that read and process dies for a C struct or C++ class
1328 pass lists of data member fields and lists of member function fields
1329 in an instance of a field_info structure, as defined below. */
1330struct field_info
c5aa993b 1331 {
0963b4bd 1332 /* List of data member and baseclasses fields. */
52059ffd 1333 struct nextfield *fields, *baseclasses;
c906108c 1334
7d0ccb61 1335 /* Number of fields (including baseclasses). */
c5aa993b 1336 int nfields;
c906108c 1337
c5aa993b
JM
1338 /* Number of baseclasses. */
1339 int nbaseclasses;
c906108c 1340
c5aa993b
JM
1341 /* Set if the accesibility of one of the fields is not public. */
1342 int non_public_fields;
c906108c 1343
c5aa993b
JM
1344 /* Member function fields array, entries are allocated in the order they
1345 are encountered in the object file. */
52059ffd 1346 struct nextfnfield *fnfields;
c906108c 1347
c5aa993b
JM
1348 /* Member function fieldlist array, contains name of possibly overloaded
1349 member function, number of overloaded member functions and a pointer
1350 to the head of the member function field chain. */
52059ffd 1351 struct fnfieldlist *fnfieldlists;
c906108c 1352
c5aa993b
JM
1353 /* Number of entries in the fnfieldlists array. */
1354 int nfnfields;
98751a41
JK
1355
1356 /* typedefs defined inside this class. TYPEDEF_FIELD_LIST contains head of
1357 a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements. */
52059ffd 1358 struct typedef_field_list *typedef_field_list;
98751a41 1359 unsigned typedef_field_list_count;
c5aa993b 1360 };
c906108c 1361
10b3939b
DJ
1362/* One item on the queue of compilation units to read in full symbols
1363 for. */
1364struct dwarf2_queue_item
1365{
1366 struct dwarf2_per_cu_data *per_cu;
95554aad 1367 enum language pretend_language;
10b3939b
DJ
1368 struct dwarf2_queue_item *next;
1369};
1370
1371/* The current queue. */
1372static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1373
ae038cb0
DJ
1374/* Loaded secondary compilation units are kept in memory until they
1375 have not been referenced for the processing of this many
1376 compilation units. Set this to zero to disable caching. Cache
1377 sizes of up to at least twenty will improve startup time for
1378 typical inter-CU-reference binaries, at an obvious memory cost. */
b4f54984 1379static int dwarf_max_cache_age = 5;
920d2a44 1380static void
b4f54984
DE
1381show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1382 struct cmd_list_element *c, const char *value)
920d2a44 1383{
3e43a32a 1384 fprintf_filtered (file, _("The upper bound on the age of cached "
b4f54984 1385 "DWARF compilation units is %s.\n"),
920d2a44
AC
1386 value);
1387}
4390d890 1388\f
c906108c
SS
1389/* local function prototypes */
1390
a32a8923
DE
1391static const char *get_section_name (const struct dwarf2_section_info *);
1392
1393static const char *get_section_file_name (const struct dwarf2_section_info *);
1394
4efb68b1 1395static void dwarf2_locate_sections (bfd *, asection *, void *);
c906108c 1396
918dd910
JK
1397static void dwarf2_find_base_address (struct die_info *die,
1398 struct dwarf2_cu *cu);
1399
0018ea6f
DE
1400static struct partial_symtab *create_partial_symtab
1401 (struct dwarf2_per_cu_data *per_cu, const char *name);
1402
c67a9c90 1403static void dwarf2_build_psymtabs_hard (struct objfile *);
c906108c 1404
72bf9492
DJ
1405static void scan_partial_symbols (struct partial_die_info *,
1406 CORE_ADDR *, CORE_ADDR *,
5734ee8b 1407 int, struct dwarf2_cu *);
c906108c 1408
72bf9492
DJ
1409static void add_partial_symbol (struct partial_die_info *,
1410 struct dwarf2_cu *);
63d06c5c 1411
72bf9492
DJ
1412static void add_partial_namespace (struct partial_die_info *pdi,
1413 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 1414 int set_addrmap, struct dwarf2_cu *cu);
63d06c5c 1415
5d7cb8df 1416static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
cdc07690 1417 CORE_ADDR *highpc, int set_addrmap,
5d7cb8df
JK
1418 struct dwarf2_cu *cu);
1419
72bf9492
DJ
1420static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1421 struct dwarf2_cu *cu);
91c24f0a 1422
bc30ff58
JB
1423static void add_partial_subprogram (struct partial_die_info *pdi,
1424 CORE_ADDR *lowpc, CORE_ADDR *highpc,
5734ee8b 1425 int need_pc, struct dwarf2_cu *cu);
bc30ff58 1426
257e7a09
YQ
1427static void dwarf2_read_symtab (struct partial_symtab *,
1428 struct objfile *);
c906108c 1429
a14ed312 1430static void psymtab_to_symtab_1 (struct partial_symtab *);
c906108c 1431
433df2d4
DE
1432static struct abbrev_info *abbrev_table_lookup_abbrev
1433 (const struct abbrev_table *, unsigned int);
1434
1435static struct abbrev_table *abbrev_table_read_table
1436 (struct dwarf2_section_info *, sect_offset);
1437
1438static void abbrev_table_free (struct abbrev_table *);
1439
f4dc4d17
DE
1440static void abbrev_table_free_cleanup (void *);
1441
dee91e82
DE
1442static void dwarf2_read_abbrevs (struct dwarf2_cu *,
1443 struct dwarf2_section_info *);
c906108c 1444
f3dd6933 1445static void dwarf2_free_abbrev_table (void *);
c906108c 1446
d521ce57 1447static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
6caca83c 1448
dee91e82 1449static struct partial_die_info *load_partial_dies
d521ce57 1450 (const struct die_reader_specs *, const gdb_byte *, int);
72bf9492 1451
d521ce57
TT
1452static const gdb_byte *read_partial_die (const struct die_reader_specs *,
1453 struct partial_die_info *,
1454 struct abbrev_info *,
1455 unsigned int,
1456 const gdb_byte *);
c906108c 1457
36586728 1458static struct partial_die_info *find_partial_die (sect_offset, int,
10b3939b 1459 struct dwarf2_cu *);
72bf9492
DJ
1460
1461static void fixup_partial_die (struct partial_die_info *,
1462 struct dwarf2_cu *);
1463
d521ce57
TT
1464static const gdb_byte *read_attribute (const struct die_reader_specs *,
1465 struct attribute *, struct attr_abbrev *,
1466 const gdb_byte *);
a8329558 1467
a1855c1d 1468static unsigned int read_1_byte (bfd *, const gdb_byte *);
c906108c 1469
a1855c1d 1470static int read_1_signed_byte (bfd *, const gdb_byte *);
c906108c 1471
a1855c1d 1472static unsigned int read_2_bytes (bfd *, const gdb_byte *);
c906108c 1473
a1855c1d 1474static unsigned int read_4_bytes (bfd *, const gdb_byte *);
c906108c 1475
a1855c1d 1476static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
c906108c 1477
d521ce57 1478static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
891d2f0b 1479 unsigned int *);
c906108c 1480
d521ce57 1481static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
c764a876
DE
1482
1483static LONGEST read_checked_initial_length_and_offset
d521ce57 1484 (bfd *, const gdb_byte *, const struct comp_unit_head *,
c764a876 1485 unsigned int *, unsigned int *);
613e1657 1486
d521ce57
TT
1487static LONGEST read_offset (bfd *, const gdb_byte *,
1488 const struct comp_unit_head *,
c764a876
DE
1489 unsigned int *);
1490
d521ce57 1491static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
613e1657 1492
f4dc4d17
DE
1493static sect_offset read_abbrev_offset (struct dwarf2_section_info *,
1494 sect_offset);
1495
d521ce57 1496static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
c906108c 1497
d521ce57 1498static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
c906108c 1499
d521ce57
TT
1500static const char *read_indirect_string (bfd *, const gdb_byte *,
1501 const struct comp_unit_head *,
1502 unsigned int *);
4bdf3d34 1503
d521ce57 1504static const char *read_indirect_string_from_dwz (struct dwz_file *, LONGEST);
36586728 1505
d521ce57 1506static ULONGEST read_unsigned_leb128 (bfd *, const gdb_byte *, unsigned int *);
c906108c 1507
d521ce57 1508static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
c906108c 1509
d521ce57
TT
1510static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1511 const gdb_byte *,
3019eac3
DE
1512 unsigned int *);
1513
d521ce57 1514static const char *read_str_index (const struct die_reader_specs *reader,
342587c4 1515 ULONGEST str_index);
3019eac3 1516
e142c38c 1517static void set_cu_language (unsigned int, struct dwarf2_cu *);
c906108c 1518
e142c38c
DJ
1519static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1520 struct dwarf2_cu *);
c906108c 1521
348e048f 1522static struct attribute *dwarf2_attr_no_follow (struct die_info *,
45e58e77 1523 unsigned int);
348e048f 1524
05cf31d1
JB
1525static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1526 struct dwarf2_cu *cu);
1527
e142c38c 1528static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
3ca72b44 1529
e142c38c 1530static struct die_info *die_specification (struct die_info *die,
f2f0e013 1531 struct dwarf2_cu **);
63d06c5c 1532
debd256d
JB
1533static void free_line_header (struct line_header *lh);
1534
3019eac3
DE
1535static struct line_header *dwarf_decode_line_header (unsigned int offset,
1536 struct dwarf2_cu *cu);
debd256d 1537
f3f5162e 1538static void dwarf_decode_lines (struct line_header *, const char *,
c3b7b696 1539 struct dwarf2_cu *, struct partial_symtab *,
527f3840 1540 CORE_ADDR, int decode_mapping);
c906108c 1541
4d663531 1542static void dwarf2_start_subfile (const char *, const char *);
c906108c 1543
43f3e411
DE
1544static struct compunit_symtab *dwarf2_start_symtab (struct dwarf2_cu *,
1545 const char *, const char *,
1546 CORE_ADDR);
f4dc4d17 1547
a14ed312 1548static struct symbol *new_symbol (struct die_info *, struct type *,
e7c27a73 1549 struct dwarf2_cu *);
c906108c 1550
34eaf542
TT
1551static struct symbol *new_symbol_full (struct die_info *, struct type *,
1552 struct dwarf2_cu *, struct symbol *);
1553
ff39bb5e 1554static void dwarf2_const_value (const struct attribute *, struct symbol *,
e7c27a73 1555 struct dwarf2_cu *);
c906108c 1556
ff39bb5e 1557static void dwarf2_const_value_attr (const struct attribute *attr,
98bfdba5
PA
1558 struct type *type,
1559 const char *name,
1560 struct obstack *obstack,
12df843f 1561 struct dwarf2_cu *cu, LONGEST *value,
d521ce57 1562 const gdb_byte **bytes,
98bfdba5 1563 struct dwarf2_locexpr_baton **baton);
2df3850c 1564
e7c27a73 1565static struct type *die_type (struct die_info *, struct dwarf2_cu *);
c906108c 1566
b4ba55a1
JB
1567static int need_gnat_info (struct dwarf2_cu *);
1568
3e43a32a
MS
1569static struct type *die_descriptive_type (struct die_info *,
1570 struct dwarf2_cu *);
b4ba55a1
JB
1571
1572static void set_descriptive_type (struct type *, struct die_info *,
1573 struct dwarf2_cu *);
1574
e7c27a73
DJ
1575static struct type *die_containing_type (struct die_info *,
1576 struct dwarf2_cu *);
c906108c 1577
ff39bb5e 1578static struct type *lookup_die_type (struct die_info *, const struct attribute *,
673bfd45 1579 struct dwarf2_cu *);
c906108c 1580
f792889a 1581static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
c906108c 1582
673bfd45
DE
1583static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1584
0d5cff50 1585static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
63d06c5c 1586
6e70227d 1587static char *typename_concat (struct obstack *obs, const char *prefix,
f55ee35c
JK
1588 const char *suffix, int physname,
1589 struct dwarf2_cu *cu);
63d06c5c 1590
e7c27a73 1591static void read_file_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1592
348e048f
DE
1593static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1594
e7c27a73 1595static void read_func_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1596
e7c27a73 1597static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1598
96408a79
SA
1599static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1600
ff013f42
JK
1601static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1602 struct dwarf2_cu *, struct partial_symtab *);
1603
a14ed312 1604static int dwarf2_get_pc_bounds (struct die_info *,
d85a05f0
DJ
1605 CORE_ADDR *, CORE_ADDR *, struct dwarf2_cu *,
1606 struct partial_symtab *);
c906108c 1607
fae299cd
DC
1608static void get_scope_pc_bounds (struct die_info *,
1609 CORE_ADDR *, CORE_ADDR *,
1610 struct dwarf2_cu *);
1611
801e3a5b
JB
1612static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1613 CORE_ADDR, struct dwarf2_cu *);
1614
a14ed312 1615static void dwarf2_add_field (struct field_info *, struct die_info *,
e7c27a73 1616 struct dwarf2_cu *);
c906108c 1617
a14ed312 1618static void dwarf2_attach_fields_to_type (struct field_info *,
e7c27a73 1619 struct type *, struct dwarf2_cu *);
c906108c 1620
a14ed312 1621static void dwarf2_add_member_fn (struct field_info *,
e26fb1d7 1622 struct die_info *, struct type *,
e7c27a73 1623 struct dwarf2_cu *);
c906108c 1624
a14ed312 1625static void dwarf2_attach_fn_fields_to_type (struct field_info *,
3e43a32a
MS
1626 struct type *,
1627 struct dwarf2_cu *);
c906108c 1628
134d01f1 1629static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1630
e7c27a73 1631static void read_common_block (struct die_info *, struct dwarf2_cu *);
c906108c 1632
e7c27a73 1633static void read_namespace (struct die_info *die, struct dwarf2_cu *);
d9fa45fe 1634
5d7cb8df
JK
1635static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1636
27aa8d6a
SW
1637static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1638
74921315
KS
1639static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1640
f55ee35c
JK
1641static struct type *read_module_type (struct die_info *die,
1642 struct dwarf2_cu *cu);
1643
38d518c9 1644static const char *namespace_name (struct die_info *die,
e142c38c 1645 int *is_anonymous, struct dwarf2_cu *);
38d518c9 1646
134d01f1 1647static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1648
e7c27a73 1649static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
c906108c 1650
6e70227d 1651static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
7ca2d3a3
DL
1652 struct dwarf2_cu *);
1653
bf6af496 1654static struct die_info *read_die_and_siblings_1
d521ce57 1655 (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
bf6af496 1656 struct die_info *);
639d11d3 1657
dee91e82 1658static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
d521ce57
TT
1659 const gdb_byte *info_ptr,
1660 const gdb_byte **new_info_ptr,
639d11d3
DC
1661 struct die_info *parent);
1662
d521ce57
TT
1663static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1664 struct die_info **, const gdb_byte *,
1665 int *, int);
3019eac3 1666
d521ce57
TT
1667static const gdb_byte *read_full_die (const struct die_reader_specs *,
1668 struct die_info **, const gdb_byte *,
1669 int *);
93311388 1670
e7c27a73 1671static void process_die (struct die_info *, struct dwarf2_cu *);
c906108c 1672
15d034d0
TT
1673static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1674 struct obstack *);
71c25dea 1675
15d034d0 1676static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
9219021c 1677
15d034d0 1678static const char *dwarf2_full_name (const char *name,
98bfdba5
PA
1679 struct die_info *die,
1680 struct dwarf2_cu *cu);
1681
ca69b9e6
DE
1682static const char *dwarf2_physname (const char *name, struct die_info *die,
1683 struct dwarf2_cu *cu);
1684
e142c38c 1685static struct die_info *dwarf2_extension (struct die_info *die,
f2f0e013 1686 struct dwarf2_cu **);
9219021c 1687
f39c6ffd 1688static const char *dwarf_tag_name (unsigned int);
c906108c 1689
f39c6ffd 1690static const char *dwarf_attr_name (unsigned int);
c906108c 1691
f39c6ffd 1692static const char *dwarf_form_name (unsigned int);
c906108c 1693
a14ed312 1694static char *dwarf_bool_name (unsigned int);
c906108c 1695
f39c6ffd 1696static const char *dwarf_type_encoding_name (unsigned int);
c906108c 1697
f9aca02d 1698static struct die_info *sibling_die (struct die_info *);
c906108c 1699
d97bc12b
DE
1700static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1701
1702static void dump_die_for_error (struct die_info *);
1703
1704static void dump_die_1 (struct ui_file *, int level, int max_level,
1705 struct die_info *);
c906108c 1706
d97bc12b 1707/*static*/ void dump_die (struct die_info *, int max_level);
c906108c 1708
51545339 1709static void store_in_ref_table (struct die_info *,
10b3939b 1710 struct dwarf2_cu *);
c906108c 1711
ff39bb5e 1712static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
c906108c 1713
ff39bb5e 1714static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
a02abb62 1715
348e048f 1716static struct die_info *follow_die_ref_or_sig (struct die_info *,
ff39bb5e 1717 const struct attribute *,
348e048f
DE
1718 struct dwarf2_cu **);
1719
10b3939b 1720static struct die_info *follow_die_ref (struct die_info *,
ff39bb5e 1721 const struct attribute *,
f2f0e013 1722 struct dwarf2_cu **);
c906108c 1723
348e048f 1724static struct die_info *follow_die_sig (struct die_info *,
ff39bb5e 1725 const struct attribute *,
348e048f
DE
1726 struct dwarf2_cu **);
1727
ac9ec31b
DE
1728static struct type *get_signatured_type (struct die_info *, ULONGEST,
1729 struct dwarf2_cu *);
1730
1731static struct type *get_DW_AT_signature_type (struct die_info *,
ff39bb5e 1732 const struct attribute *,
ac9ec31b
DE
1733 struct dwarf2_cu *);
1734
e5fe5e75 1735static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
348e048f 1736
52dc124a 1737static void read_signatured_type (struct signatured_type *);
348e048f 1738
c906108c
SS
1739/* memory allocation interface */
1740
7b5a2f43 1741static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
c906108c 1742
b60c80d6 1743static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
c906108c 1744
43f3e411 1745static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
2e276125 1746
6e5a29e1 1747static int attr_form_is_block (const struct attribute *);
8e19ed76 1748
6e5a29e1 1749static int attr_form_is_section_offset (const struct attribute *);
3690dd37 1750
6e5a29e1 1751static int attr_form_is_constant (const struct attribute *);
3690dd37 1752
6e5a29e1 1753static int attr_form_is_ref (const struct attribute *);
7771576e 1754
8cf6f0b1
TT
1755static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1756 struct dwarf2_loclist_baton *baton,
ff39bb5e 1757 const struct attribute *attr);
8cf6f0b1 1758
ff39bb5e 1759static void dwarf2_symbol_mark_computed (const struct attribute *attr,
93e7bd98 1760 struct symbol *sym,
f1e6e072
TT
1761 struct dwarf2_cu *cu,
1762 int is_block);
4c2df51b 1763
d521ce57
TT
1764static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1765 const gdb_byte *info_ptr,
1766 struct abbrev_info *abbrev);
4bb7a0a7 1767
72bf9492
DJ
1768static void free_stack_comp_unit (void *);
1769
72bf9492
DJ
1770static hashval_t partial_die_hash (const void *item);
1771
1772static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1773
ae038cb0 1774static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
36586728 1775 (sect_offset offset, unsigned int offset_in_dwz, struct objfile *objfile);
ae038cb0 1776
9816fde3 1777static void init_one_comp_unit (struct dwarf2_cu *cu,
23745b47 1778 struct dwarf2_per_cu_data *per_cu);
9816fde3
JK
1779
1780static void prepare_one_comp_unit (struct dwarf2_cu *cu,
95554aad
TT
1781 struct die_info *comp_unit_die,
1782 enum language pretend_language);
93311388 1783
68dc6402 1784static void free_heap_comp_unit (void *);
ae038cb0
DJ
1785
1786static void free_cached_comp_units (void *);
1787
1788static void age_cached_comp_units (void);
1789
dee91e82 1790static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
ae038cb0 1791
f792889a
DJ
1792static struct type *set_die_type (struct die_info *, struct type *,
1793 struct dwarf2_cu *);
1c379e20 1794
ae038cb0
DJ
1795static void create_all_comp_units (struct objfile *);
1796
0e50663e 1797static int create_all_type_units (struct objfile *);
1fd400ff 1798
95554aad
TT
1799static void load_full_comp_unit (struct dwarf2_per_cu_data *,
1800 enum language);
10b3939b 1801
95554aad
TT
1802static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1803 enum language);
10b3939b 1804
f4dc4d17
DE
1805static void process_full_type_unit (struct dwarf2_per_cu_data *,
1806 enum language);
1807
10b3939b
DJ
1808static void dwarf2_add_dependence (struct dwarf2_cu *,
1809 struct dwarf2_per_cu_data *);
1810
ae038cb0
DJ
1811static void dwarf2_mark (struct dwarf2_cu *);
1812
1813static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1814
b64f50a1 1815static struct type *get_die_type_at_offset (sect_offset,
ac9ec31b 1816 struct dwarf2_per_cu_data *);
673bfd45 1817
f792889a 1818static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
72019c9c 1819
9291a0cd
TT
1820static void dwarf2_release_queue (void *dummy);
1821
95554aad
TT
1822static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1823 enum language pretend_language);
1824
a0f42c21 1825static void process_queue (void);
9291a0cd
TT
1826
1827static void find_file_and_directory (struct die_info *die,
1828 struct dwarf2_cu *cu,
15d034d0 1829 const char **name, const char **comp_dir);
9291a0cd
TT
1830
1831static char *file_full_name (int file, struct line_header *lh,
1832 const char *comp_dir);
1833
d521ce57 1834static const gdb_byte *read_and_check_comp_unit_head
36586728
TT
1835 (struct comp_unit_head *header,
1836 struct dwarf2_section_info *section,
d521ce57 1837 struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
36586728
TT
1838 int is_debug_types_section);
1839
fd820528 1840static void init_cutu_and_read_dies
f4dc4d17
DE
1841 (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1842 int use_existing_cu, int keep,
3019eac3
DE
1843 die_reader_func_ftype *die_reader_func, void *data);
1844
dee91e82
DE
1845static void init_cutu_and_read_dies_simple
1846 (struct dwarf2_per_cu_data *this_cu,
1847 die_reader_func_ftype *die_reader_func, void *data);
9291a0cd 1848
673bfd45 1849static htab_t allocate_signatured_type_table (struct objfile *objfile);
1fd400ff 1850
3019eac3
DE
1851static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1852
57d63ce2
DE
1853static struct dwo_unit *lookup_dwo_unit_in_dwp
1854 (struct dwp_file *dwp_file, const char *comp_dir,
1855 ULONGEST signature, int is_debug_types);
a2ce51a0
DE
1856
1857static struct dwp_file *get_dwp_file (void);
1858
3019eac3 1859static struct dwo_unit *lookup_dwo_comp_unit
a1855c1d 1860 (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
3019eac3
DE
1861
1862static struct dwo_unit *lookup_dwo_type_unit
a1855c1d 1863 (struct signatured_type *, const char *, const char *);
3019eac3 1864
89e63ee4
DE
1865static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1866
3019eac3
DE
1867static void free_dwo_file_cleanup (void *);
1868
95554aad
TT
1869static void process_cu_includes (void);
1870
1b80a9fa 1871static void check_producer (struct dwarf2_cu *cu);
527f3840
JK
1872
1873static void free_line_header_voidp (void *arg);
4390d890
DE
1874\f
1875/* Various complaints about symbol reading that don't abort the process. */
1876
1877static void
1878dwarf2_statement_list_fits_in_line_number_section_complaint (void)
1879{
1880 complaint (&symfile_complaints,
1881 _("statement list doesn't fit in .debug_line section"));
1882}
1883
1884static void
1885dwarf2_debug_line_missing_file_complaint (void)
1886{
1887 complaint (&symfile_complaints,
1888 _(".debug_line section has line data without a file"));
1889}
1890
1891static void
1892dwarf2_debug_line_missing_end_sequence_complaint (void)
1893{
1894 complaint (&symfile_complaints,
1895 _(".debug_line section has line "
1896 "program sequence without an end"));
1897}
1898
1899static void
1900dwarf2_complex_location_expr_complaint (void)
1901{
1902 complaint (&symfile_complaints, _("location expression too complex"));
1903}
1904
1905static void
1906dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
1907 int arg3)
1908{
1909 complaint (&symfile_complaints,
1910 _("const value length mismatch for '%s', got %d, expected %d"),
1911 arg1, arg2, arg3);
1912}
1913
1914static void
1915dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
1916{
1917 complaint (&symfile_complaints,
1918 _("debug info runs off end of %s section"
1919 " [in module %s]"),
a32a8923
DE
1920 get_section_name (section),
1921 get_section_file_name (section));
4390d890 1922}
1b80a9fa 1923
4390d890
DE
1924static void
1925dwarf2_macro_malformed_definition_complaint (const char *arg1)
1926{
1927 complaint (&symfile_complaints,
1928 _("macro debug info contains a "
1929 "malformed macro definition:\n`%s'"),
1930 arg1);
1931}
1932
1933static void
1934dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
1935{
1936 complaint (&symfile_complaints,
1937 _("invalid attribute class or form for '%s' in '%s'"),
1938 arg1, arg2);
1939}
527f3840
JK
1940
1941/* Hash function for line_header_hash. */
1942
1943static hashval_t
1944line_header_hash (const struct line_header *ofs)
1945{
1946 return ofs->offset.sect_off ^ ofs->offset_in_dwz;
1947}
1948
1949/* Hash function for htab_create_alloc_ex for line_header_hash. */
1950
1951static hashval_t
1952line_header_hash_voidp (const void *item)
1953{
1954 const struct line_header *ofs = item;
1955
1956 return line_header_hash (ofs);
1957}
1958
1959/* Equality function for line_header_hash. */
1960
1961static int
1962line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
1963{
1964 const struct line_header *ofs_lhs = item_lhs;
1965 const struct line_header *ofs_rhs = item_rhs;
1966
1967 return (ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off
1968 && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
1969}
1970
4390d890 1971\f
9291a0cd
TT
1972#if WORDS_BIGENDIAN
1973
1974/* Convert VALUE between big- and little-endian. */
1975static offset_type
1976byte_swap (offset_type value)
1977{
1978 offset_type result;
1979
1980 result = (value & 0xff) << 24;
1981 result |= (value & 0xff00) << 8;
1982 result |= (value & 0xff0000) >> 8;
1983 result |= (value & 0xff000000) >> 24;
1984 return result;
1985}
1986
1987#define MAYBE_SWAP(V) byte_swap (V)
1988
1989#else
1990#define MAYBE_SWAP(V) (V)
1991#endif /* WORDS_BIGENDIAN */
1992
31aa7e4e
JB
1993/* Read the given attribute value as an address, taking the attribute's
1994 form into account. */
1995
1996static CORE_ADDR
1997attr_value_as_address (struct attribute *attr)
1998{
1999 CORE_ADDR addr;
2000
2001 if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
2002 {
2003 /* Aside from a few clearly defined exceptions, attributes that
2004 contain an address must always be in DW_FORM_addr form.
2005 Unfortunately, some compilers happen to be violating this
2006 requirement by encoding addresses using other forms, such
2007 as DW_FORM_data4 for example. For those broken compilers,
2008 we try to do our best, without any guarantee of success,
2009 to interpret the address correctly. It would also be nice
2010 to generate a complaint, but that would require us to maintain
2011 a list of legitimate cases where a non-address form is allowed,
2012 as well as update callers to pass in at least the CU's DWARF
2013 version. This is more overhead than what we're willing to
2014 expand for a pretty rare case. */
2015 addr = DW_UNSND (attr);
2016 }
2017 else
2018 addr = DW_ADDR (attr);
2019
2020 return addr;
2021}
2022
9291a0cd
TT
2023/* The suffix for an index file. */
2024#define INDEX_SUFFIX ".gdb-index"
2025
c906108c 2026/* Try to locate the sections we need for DWARF 2 debugging
251d32d9
TG
2027 information and return true if we have enough to do something.
2028 NAMES points to the dwarf2 section names, or is NULL if the standard
2029 ELF names are used. */
c906108c
SS
2030
2031int
251d32d9
TG
2032dwarf2_has_info (struct objfile *objfile,
2033 const struct dwarf2_debug_sections *names)
c906108c 2034{
be391dca
TT
2035 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
2036 if (!dwarf2_per_objfile)
2037 {
2038 /* Initialize per-objfile state. */
2039 struct dwarf2_per_objfile *data
2040 = obstack_alloc (&objfile->objfile_obstack, sizeof (*data));
9a619af0 2041
be391dca
TT
2042 memset (data, 0, sizeof (*data));
2043 set_objfile_data (objfile, dwarf2_objfile_data_key, data);
2044 dwarf2_per_objfile = data;
6502dd73 2045
251d32d9
TG
2046 bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections,
2047 (void *) names);
be391dca
TT
2048 dwarf2_per_objfile->objfile = objfile;
2049 }
73869dc2
DE
2050 return (!dwarf2_per_objfile->info.is_virtual
2051 && dwarf2_per_objfile->info.s.asection != NULL
2052 && !dwarf2_per_objfile->abbrev.is_virtual
2053 && dwarf2_per_objfile->abbrev.s.asection != NULL);
2054}
2055
2056/* Return the containing section of virtual section SECTION. */
2057
2058static struct dwarf2_section_info *
2059get_containing_section (const struct dwarf2_section_info *section)
2060{
2061 gdb_assert (section->is_virtual);
2062 return section->s.containing_section;
c906108c
SS
2063}
2064
a32a8923
DE
2065/* Return the bfd owner of SECTION. */
2066
2067static struct bfd *
2068get_section_bfd_owner (const struct dwarf2_section_info *section)
2069{
73869dc2
DE
2070 if (section->is_virtual)
2071 {
2072 section = get_containing_section (section);
2073 gdb_assert (!section->is_virtual);
2074 }
2075 return section->s.asection->owner;
a32a8923
DE
2076}
2077
2078/* Return the bfd section of SECTION.
2079 Returns NULL if the section is not present. */
2080
2081static asection *
2082get_section_bfd_section (const struct dwarf2_section_info *section)
2083{
73869dc2
DE
2084 if (section->is_virtual)
2085 {
2086 section = get_containing_section (section);
2087 gdb_assert (!section->is_virtual);
2088 }
2089 return section->s.asection;
a32a8923
DE
2090}
2091
2092/* Return the name of SECTION. */
2093
2094static const char *
2095get_section_name (const struct dwarf2_section_info *section)
2096{
2097 asection *sectp = get_section_bfd_section (section);
2098
2099 gdb_assert (sectp != NULL);
2100 return bfd_section_name (get_section_bfd_owner (section), sectp);
2101}
2102
2103/* Return the name of the file SECTION is in. */
2104
2105static const char *
2106get_section_file_name (const struct dwarf2_section_info *section)
2107{
2108 bfd *abfd = get_section_bfd_owner (section);
2109
2110 return bfd_get_filename (abfd);
2111}
2112
2113/* Return the id of SECTION.
2114 Returns 0 if SECTION doesn't exist. */
2115
2116static int
2117get_section_id (const struct dwarf2_section_info *section)
2118{
2119 asection *sectp = get_section_bfd_section (section);
2120
2121 if (sectp == NULL)
2122 return 0;
2123 return sectp->id;
2124}
2125
2126/* Return the flags of SECTION.
73869dc2 2127 SECTION (or containing section if this is a virtual section) must exist. */
a32a8923
DE
2128
2129static int
2130get_section_flags (const struct dwarf2_section_info *section)
2131{
2132 asection *sectp = get_section_bfd_section (section);
2133
2134 gdb_assert (sectp != NULL);
2135 return bfd_get_section_flags (sectp->owner, sectp);
2136}
2137
251d32d9
TG
2138/* When loading sections, we look either for uncompressed section or for
2139 compressed section names. */
233a11ab
CS
2140
2141static int
251d32d9
TG
2142section_is_p (const char *section_name,
2143 const struct dwarf2_section_names *names)
233a11ab 2144{
251d32d9
TG
2145 if (names->normal != NULL
2146 && strcmp (section_name, names->normal) == 0)
2147 return 1;
2148 if (names->compressed != NULL
2149 && strcmp (section_name, names->compressed) == 0)
2150 return 1;
2151 return 0;
233a11ab
CS
2152}
2153
c906108c
SS
2154/* This function is mapped across the sections and remembers the
2155 offset and size of each of the debugging sections we are interested
2156 in. */
2157
2158static void
251d32d9 2159dwarf2_locate_sections (bfd *abfd, asection *sectp, void *vnames)
c906108c 2160{
251d32d9 2161 const struct dwarf2_debug_sections *names;
dc7650b8 2162 flagword aflag = bfd_get_section_flags (abfd, sectp);
251d32d9
TG
2163
2164 if (vnames == NULL)
2165 names = &dwarf2_elf_names;
2166 else
2167 names = (const struct dwarf2_debug_sections *) vnames;
2168
dc7650b8
JK
2169 if ((aflag & SEC_HAS_CONTENTS) == 0)
2170 {
2171 }
2172 else if (section_is_p (sectp->name, &names->info))
c906108c 2173 {
73869dc2 2174 dwarf2_per_objfile->info.s.asection = sectp;
dce234bc 2175 dwarf2_per_objfile->info.size = bfd_get_section_size (sectp);
c906108c 2176 }
251d32d9 2177 else if (section_is_p (sectp->name, &names->abbrev))
c906108c 2178 {
73869dc2 2179 dwarf2_per_objfile->abbrev.s.asection = sectp;
dce234bc 2180 dwarf2_per_objfile->abbrev.size = bfd_get_section_size (sectp);
c906108c 2181 }
251d32d9 2182 else if (section_is_p (sectp->name, &names->line))
c906108c 2183 {
73869dc2 2184 dwarf2_per_objfile->line.s.asection = sectp;
dce234bc 2185 dwarf2_per_objfile->line.size = bfd_get_section_size (sectp);
c906108c 2186 }
251d32d9 2187 else if (section_is_p (sectp->name, &names->loc))
c906108c 2188 {
73869dc2 2189 dwarf2_per_objfile->loc.s.asection = sectp;
dce234bc 2190 dwarf2_per_objfile->loc.size = bfd_get_section_size (sectp);
c906108c 2191 }
251d32d9 2192 else if (section_is_p (sectp->name, &names->macinfo))
c906108c 2193 {
73869dc2 2194 dwarf2_per_objfile->macinfo.s.asection = sectp;
dce234bc 2195 dwarf2_per_objfile->macinfo.size = bfd_get_section_size (sectp);
c906108c 2196 }
cf2c3c16
TT
2197 else if (section_is_p (sectp->name, &names->macro))
2198 {
73869dc2 2199 dwarf2_per_objfile->macro.s.asection = sectp;
cf2c3c16
TT
2200 dwarf2_per_objfile->macro.size = bfd_get_section_size (sectp);
2201 }
251d32d9 2202 else if (section_is_p (sectp->name, &names->str))
c906108c 2203 {
73869dc2 2204 dwarf2_per_objfile->str.s.asection = sectp;
dce234bc 2205 dwarf2_per_objfile->str.size = bfd_get_section_size (sectp);
c906108c 2206 }
3019eac3
DE
2207 else if (section_is_p (sectp->name, &names->addr))
2208 {
73869dc2 2209 dwarf2_per_objfile->addr.s.asection = sectp;
3019eac3
DE
2210 dwarf2_per_objfile->addr.size = bfd_get_section_size (sectp);
2211 }
251d32d9 2212 else if (section_is_p (sectp->name, &names->frame))
b6af0555 2213 {
73869dc2 2214 dwarf2_per_objfile->frame.s.asection = sectp;
dce234bc 2215 dwarf2_per_objfile->frame.size = bfd_get_section_size (sectp);
b6af0555 2216 }
251d32d9 2217 else if (section_is_p (sectp->name, &names->eh_frame))
b6af0555 2218 {
73869dc2 2219 dwarf2_per_objfile->eh_frame.s.asection = sectp;
dc7650b8 2220 dwarf2_per_objfile->eh_frame.size = bfd_get_section_size (sectp);
b6af0555 2221 }
251d32d9 2222 else if (section_is_p (sectp->name, &names->ranges))
af34e669 2223 {
73869dc2 2224 dwarf2_per_objfile->ranges.s.asection = sectp;
dce234bc 2225 dwarf2_per_objfile->ranges.size = bfd_get_section_size (sectp);
af34e669 2226 }
251d32d9 2227 else if (section_is_p (sectp->name, &names->types))
348e048f 2228 {
8b70b953
TT
2229 struct dwarf2_section_info type_section;
2230
2231 memset (&type_section, 0, sizeof (type_section));
73869dc2 2232 type_section.s.asection = sectp;
8b70b953
TT
2233 type_section.size = bfd_get_section_size (sectp);
2234
2235 VEC_safe_push (dwarf2_section_info_def, dwarf2_per_objfile->types,
2236 &type_section);
348e048f 2237 }
251d32d9 2238 else if (section_is_p (sectp->name, &names->gdb_index))
9291a0cd 2239 {
73869dc2 2240 dwarf2_per_objfile->gdb_index.s.asection = sectp;
9291a0cd
TT
2241 dwarf2_per_objfile->gdb_index.size = bfd_get_section_size (sectp);
2242 }
dce234bc 2243
72dca2f5
FR
2244 if ((bfd_get_section_flags (abfd, sectp) & SEC_LOAD)
2245 && bfd_section_vma (abfd, sectp) == 0)
2246 dwarf2_per_objfile->has_section_at_zero = 1;
c906108c
SS
2247}
2248
fceca515
DE
2249/* A helper function that decides whether a section is empty,
2250 or not present. */
9e0ac564
TT
2251
2252static int
19ac8c2e 2253dwarf2_section_empty_p (const struct dwarf2_section_info *section)
9e0ac564 2254{
73869dc2
DE
2255 if (section->is_virtual)
2256 return section->size == 0;
2257 return section->s.asection == NULL || section->size == 0;
9e0ac564
TT
2258}
2259
3019eac3
DE
2260/* Read the contents of the section INFO.
2261 OBJFILE is the main object file, but not necessarily the file where
a32a8923
DE
2262 the section comes from. E.g., for DWO files the bfd of INFO is the bfd
2263 of the DWO file.
dce234bc 2264 If the section is compressed, uncompress it before returning. */
c906108c 2265
dce234bc
PP
2266static void
2267dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info)
c906108c 2268{
a32a8923 2269 asection *sectp;
3019eac3 2270 bfd *abfd;
dce234bc 2271 gdb_byte *buf, *retbuf;
c906108c 2272
be391dca
TT
2273 if (info->readin)
2274 return;
dce234bc 2275 info->buffer = NULL;
be391dca 2276 info->readin = 1;
188dd5d6 2277
9e0ac564 2278 if (dwarf2_section_empty_p (info))
dce234bc 2279 return;
c906108c 2280
a32a8923 2281 sectp = get_section_bfd_section (info);
3019eac3 2282
73869dc2
DE
2283 /* If this is a virtual section we need to read in the real one first. */
2284 if (info->is_virtual)
2285 {
2286 struct dwarf2_section_info *containing_section =
2287 get_containing_section (info);
2288
2289 gdb_assert (sectp != NULL);
2290 if ((sectp->flags & SEC_RELOC) != 0)
2291 {
2292 error (_("Dwarf Error: DWP format V2 with relocations is not"
2293 " supported in section %s [in module %s]"),
2294 get_section_name (info), get_section_file_name (info));
2295 }
2296 dwarf2_read_section (objfile, containing_section);
2297 /* Other code should have already caught virtual sections that don't
2298 fit. */
2299 gdb_assert (info->virtual_offset + info->size
2300 <= containing_section->size);
2301 /* If the real section is empty or there was a problem reading the
2302 section we shouldn't get here. */
2303 gdb_assert (containing_section->buffer != NULL);
2304 info->buffer = containing_section->buffer + info->virtual_offset;
2305 return;
2306 }
2307
4bf44c1c
TT
2308 /* If the section has relocations, we must read it ourselves.
2309 Otherwise we attach it to the BFD. */
2310 if ((sectp->flags & SEC_RELOC) == 0)
dce234bc 2311 {
d521ce57 2312 info->buffer = gdb_bfd_map_section (sectp, &info->size);
4bf44c1c 2313 return;
dce234bc 2314 }
dce234bc 2315
4bf44c1c
TT
2316 buf = obstack_alloc (&objfile->objfile_obstack, info->size);
2317 info->buffer = buf;
dce234bc
PP
2318
2319 /* When debugging .o files, we may need to apply relocations; see
2320 http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2321 We never compress sections in .o files, so we only need to
2322 try this when the section is not compressed. */
ac8035ab 2323 retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
dce234bc
PP
2324 if (retbuf != NULL)
2325 {
2326 info->buffer = retbuf;
2327 return;
2328 }
2329
a32a8923
DE
2330 abfd = get_section_bfd_owner (info);
2331 gdb_assert (abfd != NULL);
2332
dce234bc
PP
2333 if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2334 || bfd_bread (buf, info->size, abfd) != info->size)
19ac8c2e
DE
2335 {
2336 error (_("Dwarf Error: Can't read DWARF data"
2337 " in section %s [in module %s]"),
2338 bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2339 }
dce234bc
PP
2340}
2341
9e0ac564
TT
2342/* A helper function that returns the size of a section in a safe way.
2343 If you are positive that the section has been read before using the
2344 size, then it is safe to refer to the dwarf2_section_info object's
2345 "size" field directly. In other cases, you must call this
2346 function, because for compressed sections the size field is not set
2347 correctly until the section has been read. */
2348
2349static bfd_size_type
2350dwarf2_section_size (struct objfile *objfile,
2351 struct dwarf2_section_info *info)
2352{
2353 if (!info->readin)
2354 dwarf2_read_section (objfile, info);
2355 return info->size;
2356}
2357
dce234bc 2358/* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
0963b4bd 2359 SECTION_NAME. */
af34e669 2360
dce234bc 2361void
3017a003
TG
2362dwarf2_get_section_info (struct objfile *objfile,
2363 enum dwarf2_section_enum sect,
d521ce57 2364 asection **sectp, const gdb_byte **bufp,
dce234bc
PP
2365 bfd_size_type *sizep)
2366{
2367 struct dwarf2_per_objfile *data
2368 = objfile_data (objfile, dwarf2_objfile_data_key);
2369 struct dwarf2_section_info *info;
a3b2a86b
TT
2370
2371 /* We may see an objfile without any DWARF, in which case we just
2372 return nothing. */
2373 if (data == NULL)
2374 {
2375 *sectp = NULL;
2376 *bufp = NULL;
2377 *sizep = 0;
2378 return;
2379 }
3017a003
TG
2380 switch (sect)
2381 {
2382 case DWARF2_DEBUG_FRAME:
2383 info = &data->frame;
2384 break;
2385 case DWARF2_EH_FRAME:
2386 info = &data->eh_frame;
2387 break;
2388 default:
2389 gdb_assert_not_reached ("unexpected section");
2390 }
dce234bc 2391
9e0ac564 2392 dwarf2_read_section (objfile, info);
dce234bc 2393
a32a8923 2394 *sectp = get_section_bfd_section (info);
dce234bc
PP
2395 *bufp = info->buffer;
2396 *sizep = info->size;
2397}
2398
36586728
TT
2399/* A helper function to find the sections for a .dwz file. */
2400
2401static void
2402locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2403{
2404 struct dwz_file *dwz_file = arg;
2405
2406 /* Note that we only support the standard ELF names, because .dwz
2407 is ELF-only (at the time of writing). */
2408 if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2409 {
73869dc2 2410 dwz_file->abbrev.s.asection = sectp;
36586728
TT
2411 dwz_file->abbrev.size = bfd_get_section_size (sectp);
2412 }
2413 else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2414 {
73869dc2 2415 dwz_file->info.s.asection = sectp;
36586728
TT
2416 dwz_file->info.size = bfd_get_section_size (sectp);
2417 }
2418 else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2419 {
73869dc2 2420 dwz_file->str.s.asection = sectp;
36586728
TT
2421 dwz_file->str.size = bfd_get_section_size (sectp);
2422 }
2423 else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2424 {
73869dc2 2425 dwz_file->line.s.asection = sectp;
36586728
TT
2426 dwz_file->line.size = bfd_get_section_size (sectp);
2427 }
2428 else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2429 {
73869dc2 2430 dwz_file->macro.s.asection = sectp;
36586728
TT
2431 dwz_file->macro.size = bfd_get_section_size (sectp);
2432 }
2ec9a5e0
TT
2433 else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2434 {
73869dc2 2435 dwz_file->gdb_index.s.asection = sectp;
2ec9a5e0
TT
2436 dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2437 }
36586728
TT
2438}
2439
4db1a1dc
TT
2440/* Open the separate '.dwz' debug file, if needed. Return NULL if
2441 there is no .gnu_debugaltlink section in the file. Error if there
2442 is such a section but the file cannot be found. */
36586728
TT
2443
2444static struct dwz_file *
2445dwarf2_get_dwz_file (void)
2446{
4db1a1dc
TT
2447 bfd *dwz_bfd;
2448 char *data;
36586728
TT
2449 struct cleanup *cleanup;
2450 const char *filename;
2451 struct dwz_file *result;
acd13123 2452 bfd_size_type buildid_len_arg;
dc294be5
TT
2453 size_t buildid_len;
2454 bfd_byte *buildid;
36586728
TT
2455
2456 if (dwarf2_per_objfile->dwz_file != NULL)
2457 return dwarf2_per_objfile->dwz_file;
2458
4db1a1dc
TT
2459 bfd_set_error (bfd_error_no_error);
2460 data = bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
acd13123 2461 &buildid_len_arg, &buildid);
4db1a1dc
TT
2462 if (data == NULL)
2463 {
2464 if (bfd_get_error () == bfd_error_no_error)
2465 return NULL;
2466 error (_("could not read '.gnu_debugaltlink' section: %s"),
2467 bfd_errmsg (bfd_get_error ()));
2468 }
36586728 2469 cleanup = make_cleanup (xfree, data);
dc294be5 2470 make_cleanup (xfree, buildid);
36586728 2471
acd13123
TT
2472 buildid_len = (size_t) buildid_len_arg;
2473
f9d83a0b 2474 filename = (const char *) data;
36586728
TT
2475 if (!IS_ABSOLUTE_PATH (filename))
2476 {
4262abfb 2477 char *abs = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
36586728
TT
2478 char *rel;
2479
2480 make_cleanup (xfree, abs);
2481 abs = ldirname (abs);
2482 make_cleanup (xfree, abs);
2483
2484 rel = concat (abs, SLASH_STRING, filename, (char *) NULL);
2485 make_cleanup (xfree, rel);
2486 filename = rel;
2487 }
2488
dc294be5
TT
2489 /* First try the file name given in the section. If that doesn't
2490 work, try to use the build-id instead. */
36586728 2491 dwz_bfd = gdb_bfd_open (filename, gnutarget, -1);
dc294be5 2492 if (dwz_bfd != NULL)
36586728 2493 {
dc294be5
TT
2494 if (!build_id_verify (dwz_bfd, buildid_len, buildid))
2495 {
2496 gdb_bfd_unref (dwz_bfd);
2497 dwz_bfd = NULL;
2498 }
36586728
TT
2499 }
2500
dc294be5
TT
2501 if (dwz_bfd == NULL)
2502 dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2503
2504 if (dwz_bfd == NULL)
2505 error (_("could not find '.gnu_debugaltlink' file for %s"),
2506 objfile_name (dwarf2_per_objfile->objfile));
2507
36586728
TT
2508 result = OBSTACK_ZALLOC (&dwarf2_per_objfile->objfile->objfile_obstack,
2509 struct dwz_file);
2510 result->dwz_bfd = dwz_bfd;
2511
2512 bfd_map_over_sections (dwz_bfd, locate_dwz_sections, result);
2513
2514 do_cleanups (cleanup);
2515
13aaf454 2516 gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, dwz_bfd);
8d2cc612 2517 dwarf2_per_objfile->dwz_file = result;
36586728
TT
2518 return result;
2519}
9291a0cd 2520\f
7b9f3c50
DE
2521/* DWARF quick_symbols_functions support. */
2522
2523/* TUs can share .debug_line entries, and there can be a lot more TUs than
2524 unique line tables, so we maintain a separate table of all .debug_line
2525 derived entries to support the sharing.
2526 All the quick functions need is the list of file names. We discard the
2527 line_header when we're done and don't need to record it here. */
2528struct quick_file_names
2529{
094b34ac
DE
2530 /* The data used to construct the hash key. */
2531 struct stmt_list_hash hash;
7b9f3c50
DE
2532
2533 /* The number of entries in file_names, real_names. */
2534 unsigned int num_file_names;
2535
2536 /* The file names from the line table, after being run through
2537 file_full_name. */
2538 const char **file_names;
2539
2540 /* The file names from the line table after being run through
2541 gdb_realpath. These are computed lazily. */
2542 const char **real_names;
2543};
2544
2545/* When using the index (and thus not using psymtabs), each CU has an
2546 object of this type. This is used to hold information needed by
2547 the various "quick" methods. */
2548struct dwarf2_per_cu_quick_data
2549{
2550 /* The file table. This can be NULL if there was no file table
2551 or it's currently not read in.
2552 NOTE: This points into dwarf2_per_objfile->quick_file_names_table. */
2553 struct quick_file_names *file_names;
2554
2555 /* The corresponding symbol table. This is NULL if symbols for this
2556 CU have not yet been read. */
43f3e411 2557 struct compunit_symtab *compunit_symtab;
7b9f3c50
DE
2558
2559 /* A temporary mark bit used when iterating over all CUs in
2560 expand_symtabs_matching. */
2561 unsigned int mark : 1;
2562
2563 /* True if we've tried to read the file table and found there isn't one.
2564 There will be no point in trying to read it again next time. */
2565 unsigned int no_file_data : 1;
2566};
2567
094b34ac
DE
2568/* Utility hash function for a stmt_list_hash. */
2569
2570static hashval_t
2571hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2572{
2573 hashval_t v = 0;
2574
2575 if (stmt_list_hash->dwo_unit != NULL)
2576 v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2577 v += stmt_list_hash->line_offset.sect_off;
2578 return v;
2579}
2580
2581/* Utility equality function for a stmt_list_hash. */
2582
2583static int
2584eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2585 const struct stmt_list_hash *rhs)
2586{
2587 if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2588 return 0;
2589 if (lhs->dwo_unit != NULL
2590 && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2591 return 0;
2592
2593 return lhs->line_offset.sect_off == rhs->line_offset.sect_off;
2594}
2595
7b9f3c50
DE
2596/* Hash function for a quick_file_names. */
2597
2598static hashval_t
2599hash_file_name_entry (const void *e)
2600{
2601 const struct quick_file_names *file_data = e;
2602
094b34ac 2603 return hash_stmt_list_entry (&file_data->hash);
7b9f3c50
DE
2604}
2605
2606/* Equality function for a quick_file_names. */
2607
2608static int
2609eq_file_name_entry (const void *a, const void *b)
2610{
2611 const struct quick_file_names *ea = a;
2612 const struct quick_file_names *eb = b;
2613
094b34ac 2614 return eq_stmt_list_entry (&ea->hash, &eb->hash);
7b9f3c50
DE
2615}
2616
2617/* Delete function for a quick_file_names. */
2618
2619static void
2620delete_file_name_entry (void *e)
2621{
2622 struct quick_file_names *file_data = e;
2623 int i;
2624
2625 for (i = 0; i < file_data->num_file_names; ++i)
2626 {
2627 xfree ((void*) file_data->file_names[i]);
2628 if (file_data->real_names)
2629 xfree ((void*) file_data->real_names[i]);
2630 }
2631
2632 /* The space for the struct itself lives on objfile_obstack,
2633 so we don't free it here. */
2634}
2635
2636/* Create a quick_file_names hash table. */
2637
2638static htab_t
2639create_quick_file_names_table (unsigned int nr_initial_entries)
2640{
2641 return htab_create_alloc (nr_initial_entries,
2642 hash_file_name_entry, eq_file_name_entry,
2643 delete_file_name_entry, xcalloc, xfree);
2644}
9291a0cd 2645
918dd910
JK
2646/* Read in PER_CU->CU. This function is unrelated to symtabs, symtab would
2647 have to be created afterwards. You should call age_cached_comp_units after
2648 processing PER_CU->CU. dw2_setup must have been already called. */
2649
2650static void
2651load_cu (struct dwarf2_per_cu_data *per_cu)
2652{
3019eac3 2653 if (per_cu->is_debug_types)
e5fe5e75 2654 load_full_type_unit (per_cu);
918dd910 2655 else
95554aad 2656 load_full_comp_unit (per_cu, language_minimal);
918dd910 2657
918dd910 2658 gdb_assert (per_cu->cu != NULL);
2dc860c0
DE
2659
2660 dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
918dd910
JK
2661}
2662
a0f42c21 2663/* Read in the symbols for PER_CU. */
2fdf6df6 2664
9291a0cd 2665static void
a0f42c21 2666dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
9291a0cd
TT
2667{
2668 struct cleanup *back_to;
2669
f4dc4d17
DE
2670 /* Skip type_unit_groups, reading the type units they contain
2671 is handled elsewhere. */
2672 if (IS_TYPE_UNIT_GROUP (per_cu))
2673 return;
2674
9291a0cd
TT
2675 back_to = make_cleanup (dwarf2_release_queue, NULL);
2676
95554aad 2677 if (dwarf2_per_objfile->using_index
43f3e411 2678 ? per_cu->v.quick->compunit_symtab == NULL
95554aad
TT
2679 : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2680 {
2681 queue_comp_unit (per_cu, language_minimal);
2682 load_cu (per_cu);
89e63ee4
DE
2683
2684 /* If we just loaded a CU from a DWO, and we're working with an index
2685 that may badly handle TUs, load all the TUs in that DWO as well.
2686 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
2687 if (!per_cu->is_debug_types
2688 && per_cu->cu->dwo_unit != NULL
2689 && dwarf2_per_objfile->index_table != NULL
2690 && dwarf2_per_objfile->index_table->version <= 7
2691 /* DWP files aren't supported yet. */
2692 && get_dwp_file () == NULL)
2693 queue_and_load_all_dwo_tus (per_cu);
95554aad 2694 }
9291a0cd 2695
a0f42c21 2696 process_queue ();
9291a0cd
TT
2697
2698 /* Age the cache, releasing compilation units that have not
2699 been used recently. */
2700 age_cached_comp_units ();
2701
2702 do_cleanups (back_to);
2703}
2704
2705/* Ensure that the symbols for PER_CU have been read in. OBJFILE is
2706 the objfile from which this CU came. Returns the resulting symbol
2707 table. */
2fdf6df6 2708
43f3e411 2709static struct compunit_symtab *
a0f42c21 2710dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
9291a0cd 2711{
95554aad 2712 gdb_assert (dwarf2_per_objfile->using_index);
43f3e411 2713 if (!per_cu->v.quick->compunit_symtab)
9291a0cd
TT
2714 {
2715 struct cleanup *back_to = make_cleanup (free_cached_comp_units, NULL);
2716 increment_reading_symtab ();
a0f42c21 2717 dw2_do_instantiate_symtab (per_cu);
95554aad 2718 process_cu_includes ();
9291a0cd
TT
2719 do_cleanups (back_to);
2720 }
f194fefb 2721
43f3e411 2722 return per_cu->v.quick->compunit_symtab;
9291a0cd
TT
2723}
2724
8832e7e3 2725/* Return the CU/TU given its index.
f4dc4d17
DE
2726
2727 This is intended for loops like:
2728
2729 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2730 + dwarf2_per_objfile->n_type_units); ++i)
2731 {
8832e7e3 2732 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
f4dc4d17
DE
2733
2734 ...;
2735 }
2736*/
2fdf6df6 2737
1fd400ff 2738static struct dwarf2_per_cu_data *
8832e7e3 2739dw2_get_cutu (int index)
1fd400ff
TT
2740{
2741 if (index >= dwarf2_per_objfile->n_comp_units)
2742 {
f4dc4d17 2743 index -= dwarf2_per_objfile->n_comp_units;
094b34ac
DE
2744 gdb_assert (index < dwarf2_per_objfile->n_type_units);
2745 return &dwarf2_per_objfile->all_type_units[index]->per_cu;
f4dc4d17
DE
2746 }
2747
2748 return dwarf2_per_objfile->all_comp_units[index];
2749}
2750
8832e7e3
DE
2751/* Return the CU given its index.
2752 This differs from dw2_get_cutu in that it's for when you know INDEX
2753 refers to a CU. */
f4dc4d17
DE
2754
2755static struct dwarf2_per_cu_data *
8832e7e3 2756dw2_get_cu (int index)
f4dc4d17 2757{
8832e7e3 2758 gdb_assert (index >= 0 && index < dwarf2_per_objfile->n_comp_units);
f4dc4d17 2759
1fd400ff
TT
2760 return dwarf2_per_objfile->all_comp_units[index];
2761}
2762
2ec9a5e0
TT
2763/* A helper for create_cus_from_index that handles a given list of
2764 CUs. */
2fdf6df6 2765
74a0d9f6 2766static void
2ec9a5e0
TT
2767create_cus_from_index_list (struct objfile *objfile,
2768 const gdb_byte *cu_list, offset_type n_elements,
2769 struct dwarf2_section_info *section,
2770 int is_dwz,
2771 int base_offset)
9291a0cd
TT
2772{
2773 offset_type i;
9291a0cd 2774
2ec9a5e0 2775 for (i = 0; i < n_elements; i += 2)
9291a0cd
TT
2776 {
2777 struct dwarf2_per_cu_data *the_cu;
2778 ULONGEST offset, length;
2779
74a0d9f6
JK
2780 gdb_static_assert (sizeof (ULONGEST) >= 8);
2781 offset = extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2782 length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
9291a0cd
TT
2783 cu_list += 2 * 8;
2784
2785 the_cu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2786 struct dwarf2_per_cu_data);
b64f50a1 2787 the_cu->offset.sect_off = offset;
9291a0cd
TT
2788 the_cu->length = length;
2789 the_cu->objfile = objfile;
8a0459fd 2790 the_cu->section = section;
9291a0cd
TT
2791 the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2792 struct dwarf2_per_cu_quick_data);
2ec9a5e0
TT
2793 the_cu->is_dwz = is_dwz;
2794 dwarf2_per_objfile->all_comp_units[base_offset + i / 2] = the_cu;
9291a0cd 2795 }
9291a0cd
TT
2796}
2797
2ec9a5e0 2798/* Read the CU list from the mapped index, and use it to create all
74a0d9f6 2799 the CU objects for this objfile. */
2ec9a5e0 2800
74a0d9f6 2801static void
2ec9a5e0
TT
2802create_cus_from_index (struct objfile *objfile,
2803 const gdb_byte *cu_list, offset_type cu_list_elements,
2804 const gdb_byte *dwz_list, offset_type dwz_elements)
2805{
2806 struct dwz_file *dwz;
2807
2808 dwarf2_per_objfile->n_comp_units = (cu_list_elements + dwz_elements) / 2;
2809 dwarf2_per_objfile->all_comp_units
2810 = obstack_alloc (&objfile->objfile_obstack,
2811 dwarf2_per_objfile->n_comp_units
2812 * sizeof (struct dwarf2_per_cu_data *));
2813
74a0d9f6
JK
2814 create_cus_from_index_list (objfile, cu_list, cu_list_elements,
2815 &dwarf2_per_objfile->info, 0, 0);
2ec9a5e0
TT
2816
2817 if (dwz_elements == 0)
74a0d9f6 2818 return;
2ec9a5e0
TT
2819
2820 dwz = dwarf2_get_dwz_file ();
74a0d9f6
JK
2821 create_cus_from_index_list (objfile, dwz_list, dwz_elements, &dwz->info, 1,
2822 cu_list_elements / 2);
2ec9a5e0
TT
2823}
2824
1fd400ff 2825/* Create the signatured type hash table from the index. */
673bfd45 2826
74a0d9f6 2827static void
673bfd45 2828create_signatured_type_table_from_index (struct objfile *objfile,
8b70b953 2829 struct dwarf2_section_info *section,
673bfd45
DE
2830 const gdb_byte *bytes,
2831 offset_type elements)
1fd400ff
TT
2832{
2833 offset_type i;
673bfd45 2834 htab_t sig_types_hash;
1fd400ff 2835
6aa5f3a6
DE
2836 dwarf2_per_objfile->n_type_units
2837 = dwarf2_per_objfile->n_allocated_type_units
2838 = elements / 3;
d467dd73 2839 dwarf2_per_objfile->all_type_units
a2ce51a0
DE
2840 = xmalloc (dwarf2_per_objfile->n_type_units
2841 * sizeof (struct signatured_type *));
1fd400ff 2842
673bfd45 2843 sig_types_hash = allocate_signatured_type_table (objfile);
1fd400ff
TT
2844
2845 for (i = 0; i < elements; i += 3)
2846 {
52dc124a
DE
2847 struct signatured_type *sig_type;
2848 ULONGEST offset, type_offset_in_tu, signature;
1fd400ff
TT
2849 void **slot;
2850
74a0d9f6
JK
2851 gdb_static_assert (sizeof (ULONGEST) >= 8);
2852 offset = extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
2853 type_offset_in_tu = extract_unsigned_integer (bytes + 8, 8,
2854 BFD_ENDIAN_LITTLE);
1fd400ff
TT
2855 signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
2856 bytes += 3 * 8;
2857
52dc124a 2858 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
1fd400ff 2859 struct signatured_type);
52dc124a 2860 sig_type->signature = signature;
3019eac3
DE
2861 sig_type->type_offset_in_tu.cu_off = type_offset_in_tu;
2862 sig_type->per_cu.is_debug_types = 1;
8a0459fd 2863 sig_type->per_cu.section = section;
52dc124a
DE
2864 sig_type->per_cu.offset.sect_off = offset;
2865 sig_type->per_cu.objfile = objfile;
2866 sig_type->per_cu.v.quick
1fd400ff
TT
2867 = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2868 struct dwarf2_per_cu_quick_data);
2869
52dc124a
DE
2870 slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
2871 *slot = sig_type;
1fd400ff 2872
b4dd5633 2873 dwarf2_per_objfile->all_type_units[i / 3] = sig_type;
1fd400ff
TT
2874 }
2875
673bfd45 2876 dwarf2_per_objfile->signatured_types = sig_types_hash;
1fd400ff
TT
2877}
2878
9291a0cd
TT
2879/* Read the address map data from the mapped index, and use it to
2880 populate the objfile's psymtabs_addrmap. */
2fdf6df6 2881
9291a0cd
TT
2882static void
2883create_addrmap_from_index (struct objfile *objfile, struct mapped_index *index)
2884{
3e29f34a 2885 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9291a0cd
TT
2886 const gdb_byte *iter, *end;
2887 struct obstack temp_obstack;
2888 struct addrmap *mutable_map;
2889 struct cleanup *cleanup;
2890 CORE_ADDR baseaddr;
2891
2892 obstack_init (&temp_obstack);
2893 cleanup = make_cleanup_obstack_free (&temp_obstack);
2894 mutable_map = addrmap_create_mutable (&temp_obstack);
2895
2896 iter = index->address_table;
2897 end = iter + index->address_table_size;
2898
2899 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
2900
2901 while (iter < end)
2902 {
2903 ULONGEST hi, lo, cu_index;
2904 lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2905 iter += 8;
2906 hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2907 iter += 8;
2908 cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
2909 iter += 4;
f652bce2 2910
24a55014 2911 if (lo > hi)
f652bce2 2912 {
24a55014
DE
2913 complaint (&symfile_complaints,
2914 _(".gdb_index address table has invalid range (%s - %s)"),
c0cd8254 2915 hex_string (lo), hex_string (hi));
24a55014 2916 continue;
f652bce2 2917 }
24a55014
DE
2918
2919 if (cu_index >= dwarf2_per_objfile->n_comp_units)
f652bce2
DE
2920 {
2921 complaint (&symfile_complaints,
2922 _(".gdb_index address table has invalid CU number %u"),
2923 (unsigned) cu_index);
24a55014 2924 continue;
f652bce2 2925 }
24a55014 2926
3e29f34a
MR
2927 lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr);
2928 hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr);
2929 addrmap_set_empty (mutable_map, lo, hi - 1, dw2_get_cutu (cu_index));
9291a0cd
TT
2930 }
2931
2932 objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
2933 &objfile->objfile_obstack);
2934 do_cleanups (cleanup);
2935}
2936
59d7bcaf
JK
2937/* The hash function for strings in the mapped index. This is the same as
2938 SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
2939 implementation. This is necessary because the hash function is tied to the
2940 format of the mapped index file. The hash values do not have to match with
559a7a62
JK
2941 SYMBOL_HASH_NEXT.
2942
2943 Use INT_MAX for INDEX_VERSION if you generate the current index format. */
2fdf6df6 2944
9291a0cd 2945static hashval_t
559a7a62 2946mapped_index_string_hash (int index_version, const void *p)
9291a0cd
TT
2947{
2948 const unsigned char *str = (const unsigned char *) p;
2949 hashval_t r = 0;
2950 unsigned char c;
2951
2952 while ((c = *str++) != 0)
559a7a62
JK
2953 {
2954 if (index_version >= 5)
2955 c = tolower (c);
2956 r = r * 67 + c - 113;
2957 }
9291a0cd
TT
2958
2959 return r;
2960}
2961
2962/* Find a slot in the mapped index INDEX for the object named NAME.
2963 If NAME is found, set *VEC_OUT to point to the CU vector in the
2964 constant pool and return 1. If NAME cannot be found, return 0. */
2fdf6df6 2965
9291a0cd
TT
2966static int
2967find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
2968 offset_type **vec_out)
2969{
0cf03b49
JK
2970 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2971 offset_type hash;
9291a0cd 2972 offset_type slot, step;
559a7a62 2973 int (*cmp) (const char *, const char *);
9291a0cd 2974
0cf03b49
JK
2975 if (current_language->la_language == language_cplus
2976 || current_language->la_language == language_java
2977 || current_language->la_language == language_fortran)
2978 {
2979 /* NAME is already canonical. Drop any qualifiers as .gdb_index does
2980 not contain any. */
a8719064 2981
72998fb3 2982 if (strchr (name, '(') != NULL)
0cf03b49 2983 {
72998fb3 2984 char *without_params = cp_remove_params (name);
0cf03b49 2985
72998fb3
DE
2986 if (without_params != NULL)
2987 {
2988 make_cleanup (xfree, without_params);
2989 name = without_params;
2990 }
0cf03b49
JK
2991 }
2992 }
2993
559a7a62 2994 /* Index version 4 did not support case insensitive searches. But the
feea76c2 2995 indices for case insensitive languages are built in lowercase, therefore
559a7a62
JK
2996 simulate our NAME being searched is also lowercased. */
2997 hash = mapped_index_string_hash ((index->version == 4
2998 && case_sensitivity == case_sensitive_off
2999 ? 5 : index->version),
3000 name);
3001
3876f04e
DE
3002 slot = hash & (index->symbol_table_slots - 1);
3003 step = ((hash * 17) & (index->symbol_table_slots - 1)) | 1;
559a7a62 3004 cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
9291a0cd
TT
3005
3006 for (;;)
3007 {
3008 /* Convert a slot number to an offset into the table. */
3009 offset_type i = 2 * slot;
3010 const char *str;
3876f04e 3011 if (index->symbol_table[i] == 0 && index->symbol_table[i + 1] == 0)
0cf03b49
JK
3012 {
3013 do_cleanups (back_to);
3014 return 0;
3015 }
9291a0cd 3016
3876f04e 3017 str = index->constant_pool + MAYBE_SWAP (index->symbol_table[i]);
559a7a62 3018 if (!cmp (name, str))
9291a0cd
TT
3019 {
3020 *vec_out = (offset_type *) (index->constant_pool
3876f04e 3021 + MAYBE_SWAP (index->symbol_table[i + 1]));
0cf03b49 3022 do_cleanups (back_to);
9291a0cd
TT
3023 return 1;
3024 }
3025
3876f04e 3026 slot = (slot + step) & (index->symbol_table_slots - 1);
9291a0cd
TT
3027 }
3028}
3029
2ec9a5e0
TT
3030/* A helper function that reads the .gdb_index from SECTION and fills
3031 in MAP. FILENAME is the name of the file containing the section;
3032 it is used for error reporting. DEPRECATED_OK is nonzero if it is
3033 ok to use deprecated sections.
3034
3035 CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3036 out parameters that are filled in with information about the CU and
3037 TU lists in the section.
3038
3039 Returns 1 if all went well, 0 otherwise. */
2fdf6df6 3040
9291a0cd 3041static int
2ec9a5e0
TT
3042read_index_from_section (struct objfile *objfile,
3043 const char *filename,
3044 int deprecated_ok,
3045 struct dwarf2_section_info *section,
3046 struct mapped_index *map,
3047 const gdb_byte **cu_list,
3048 offset_type *cu_list_elements,
3049 const gdb_byte **types_list,
3050 offset_type *types_list_elements)
9291a0cd 3051{
948f8e3d 3052 const gdb_byte *addr;
2ec9a5e0 3053 offset_type version;
b3b272e1 3054 offset_type *metadata;
1fd400ff 3055 int i;
9291a0cd 3056
2ec9a5e0 3057 if (dwarf2_section_empty_p (section))
9291a0cd 3058 return 0;
82430852
JK
3059
3060 /* Older elfutils strip versions could keep the section in the main
3061 executable while splitting it for the separate debug info file. */
a32a8923 3062 if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
82430852
JK
3063 return 0;
3064
2ec9a5e0 3065 dwarf2_read_section (objfile, section);
9291a0cd 3066
2ec9a5e0 3067 addr = section->buffer;
9291a0cd 3068 /* Version check. */
1fd400ff 3069 version = MAYBE_SWAP (*(offset_type *) addr);
987d643c 3070 /* Versions earlier than 3 emitted every copy of a psymbol. This
a6e293d1 3071 causes the index to behave very poorly for certain requests. Version 3
831adc1f 3072 contained incomplete addrmap. So, it seems better to just ignore such
481860b3 3073 indices. */
831adc1f 3074 if (version < 4)
481860b3
GB
3075 {
3076 static int warning_printed = 0;
3077 if (!warning_printed)
3078 {
3079 warning (_("Skipping obsolete .gdb_index section in %s."),
2ec9a5e0 3080 filename);
481860b3
GB
3081 warning_printed = 1;
3082 }
3083 return 0;
3084 }
3085 /* Index version 4 uses a different hash function than index version
3086 5 and later.
3087
3088 Versions earlier than 6 did not emit psymbols for inlined
3089 functions. Using these files will cause GDB not to be able to
3090 set breakpoints on inlined functions by name, so we ignore these
e615022a
DE
3091 indices unless the user has done
3092 "set use-deprecated-index-sections on". */
2ec9a5e0 3093 if (version < 6 && !deprecated_ok)
481860b3
GB
3094 {
3095 static int warning_printed = 0;
3096 if (!warning_printed)
3097 {
e615022a
DE
3098 warning (_("\
3099Skipping deprecated .gdb_index section in %s.\n\
3100Do \"set use-deprecated-index-sections on\" before the file is read\n\
3101to use the section anyway."),
2ec9a5e0 3102 filename);
481860b3
GB
3103 warning_printed = 1;
3104 }
3105 return 0;
3106 }
796a7ff8 3107 /* Version 7 indices generated by gold refer to the CU for a symbol instead
8943b874
DE
3108 of the TU (for symbols coming from TUs),
3109 http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3110 Plus gold-generated indices can have duplicate entries for global symbols,
3111 http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3112 These are just performance bugs, and we can't distinguish gdb-generated
3113 indices from gold-generated ones, so issue no warning here. */
796a7ff8 3114
481860b3 3115 /* Indexes with higher version than the one supported by GDB may be no
594e8718 3116 longer backward compatible. */
796a7ff8 3117 if (version > 8)
594e8718 3118 return 0;
9291a0cd 3119
559a7a62 3120 map->version = version;
2ec9a5e0 3121 map->total_size = section->size;
9291a0cd
TT
3122
3123 metadata = (offset_type *) (addr + sizeof (offset_type));
1fd400ff
TT
3124
3125 i = 0;
2ec9a5e0
TT
3126 *cu_list = addr + MAYBE_SWAP (metadata[i]);
3127 *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3128 / 8);
1fd400ff
TT
3129 ++i;
3130
2ec9a5e0
TT
3131 *types_list = addr + MAYBE_SWAP (metadata[i]);
3132 *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3133 - MAYBE_SWAP (metadata[i]))
3134 / 8);
987d643c 3135 ++i;
1fd400ff
TT
3136
3137 map->address_table = addr + MAYBE_SWAP (metadata[i]);
3138 map->address_table_size = (MAYBE_SWAP (metadata[i + 1])
3139 - MAYBE_SWAP (metadata[i]));
3140 ++i;
3141
3876f04e
DE
3142 map->symbol_table = (offset_type *) (addr + MAYBE_SWAP (metadata[i]));
3143 map->symbol_table_slots = ((MAYBE_SWAP (metadata[i + 1])
3144 - MAYBE_SWAP (metadata[i]))
3145 / (2 * sizeof (offset_type)));
1fd400ff 3146 ++i;
9291a0cd 3147
f9d83a0b 3148 map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
1fd400ff 3149
2ec9a5e0
TT
3150 return 1;
3151}
3152
3153
3154/* Read the index file. If everything went ok, initialize the "quick"
3155 elements of all the CUs and return 1. Otherwise, return 0. */
3156
3157static int
3158dwarf2_read_index (struct objfile *objfile)
3159{
3160 struct mapped_index local_map, *map;
3161 const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3162 offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
4db1a1dc 3163 struct dwz_file *dwz;
2ec9a5e0 3164
4262abfb 3165 if (!read_index_from_section (objfile, objfile_name (objfile),
2ec9a5e0
TT
3166 use_deprecated_index_sections,
3167 &dwarf2_per_objfile->gdb_index, &local_map,
3168 &cu_list, &cu_list_elements,
3169 &types_list, &types_list_elements))
3170 return 0;
3171
0fefef59 3172 /* Don't use the index if it's empty. */
2ec9a5e0 3173 if (local_map.symbol_table_slots == 0)
0fefef59
DE
3174 return 0;
3175
2ec9a5e0
TT
3176 /* If there is a .dwz file, read it so we can get its CU list as
3177 well. */
4db1a1dc
TT
3178 dwz = dwarf2_get_dwz_file ();
3179 if (dwz != NULL)
2ec9a5e0 3180 {
2ec9a5e0
TT
3181 struct mapped_index dwz_map;
3182 const gdb_byte *dwz_types_ignore;
3183 offset_type dwz_types_elements_ignore;
3184
3185 if (!read_index_from_section (objfile, bfd_get_filename (dwz->dwz_bfd),
3186 1,
3187 &dwz->gdb_index, &dwz_map,
3188 &dwz_list, &dwz_list_elements,
3189 &dwz_types_ignore,
3190 &dwz_types_elements_ignore))
3191 {
3192 warning (_("could not read '.gdb_index' section from %s; skipping"),
3193 bfd_get_filename (dwz->dwz_bfd));
3194 return 0;
3195 }
3196 }
3197
74a0d9f6
JK
3198 create_cus_from_index (objfile, cu_list, cu_list_elements, dwz_list,
3199 dwz_list_elements);
1fd400ff 3200
8b70b953
TT
3201 if (types_list_elements)
3202 {
3203 struct dwarf2_section_info *section;
3204
3205 /* We can only handle a single .debug_types when we have an
3206 index. */
3207 if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3208 return 0;
3209
3210 section = VEC_index (dwarf2_section_info_def,
3211 dwarf2_per_objfile->types, 0);
3212
74a0d9f6
JK
3213 create_signatured_type_table_from_index (objfile, section, types_list,
3214 types_list_elements);
8b70b953 3215 }
9291a0cd 3216
2ec9a5e0
TT
3217 create_addrmap_from_index (objfile, &local_map);
3218
3219 map = obstack_alloc (&objfile->objfile_obstack, sizeof (struct mapped_index));
3220 *map = local_map;
9291a0cd
TT
3221
3222 dwarf2_per_objfile->index_table = map;
3223 dwarf2_per_objfile->using_index = 1;
7b9f3c50
DE
3224 dwarf2_per_objfile->quick_file_names_table =
3225 create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
9291a0cd
TT
3226
3227 return 1;
3228}
3229
3230/* A helper for the "quick" functions which sets the global
3231 dwarf2_per_objfile according to OBJFILE. */
2fdf6df6 3232
9291a0cd
TT
3233static void
3234dw2_setup (struct objfile *objfile)
3235{
3236 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
3237 gdb_assert (dwarf2_per_objfile);
3238}
3239
dee91e82 3240/* die_reader_func for dw2_get_file_names. */
2fdf6df6 3241
dee91e82
DE
3242static void
3243dw2_get_file_names_reader (const struct die_reader_specs *reader,
d521ce57 3244 const gdb_byte *info_ptr,
dee91e82
DE
3245 struct die_info *comp_unit_die,
3246 int has_children,
3247 void *data)
9291a0cd 3248{
dee91e82
DE
3249 struct dwarf2_cu *cu = reader->cu;
3250 struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3251 struct objfile *objfile = dwarf2_per_objfile->objfile;
094b34ac 3252 struct dwarf2_per_cu_data *lh_cu;
7b9f3c50 3253 struct line_header *lh;
9291a0cd 3254 struct attribute *attr;
dee91e82 3255 int i;
15d034d0 3256 const char *name, *comp_dir;
7b9f3c50
DE
3257 void **slot;
3258 struct quick_file_names *qfn;
3259 unsigned int line_offset;
9291a0cd 3260
0186c6a7
DE
3261 gdb_assert (! this_cu->is_debug_types);
3262
07261596
TT
3263 /* Our callers never want to match partial units -- instead they
3264 will match the enclosing full CU. */
3265 if (comp_unit_die->tag == DW_TAG_partial_unit)
3266 {
3267 this_cu->v.quick->no_file_data = 1;
3268 return;
3269 }
3270
0186c6a7 3271 lh_cu = this_cu;
7b9f3c50
DE
3272 lh = NULL;
3273 slot = NULL;
3274 line_offset = 0;
dee91e82
DE
3275
3276 attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
9291a0cd
TT
3277 if (attr)
3278 {
7b9f3c50
DE
3279 struct quick_file_names find_entry;
3280
3281 line_offset = DW_UNSND (attr);
3282
3283 /* We may have already read in this line header (TU line header sharing).
3284 If we have we're done. */
094b34ac
DE
3285 find_entry.hash.dwo_unit = cu->dwo_unit;
3286 find_entry.hash.line_offset.sect_off = line_offset;
7b9f3c50
DE
3287 slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3288 &find_entry, INSERT);
3289 if (*slot != NULL)
3290 {
094b34ac 3291 lh_cu->v.quick->file_names = *slot;
dee91e82 3292 return;
7b9f3c50
DE
3293 }
3294
3019eac3 3295 lh = dwarf_decode_line_header (line_offset, cu);
9291a0cd
TT
3296 }
3297 if (lh == NULL)
3298 {
094b34ac 3299 lh_cu->v.quick->no_file_data = 1;
dee91e82 3300 return;
9291a0cd
TT
3301 }
3302
7b9f3c50 3303 qfn = obstack_alloc (&objfile->objfile_obstack, sizeof (*qfn));
094b34ac
DE
3304 qfn->hash.dwo_unit = cu->dwo_unit;
3305 qfn->hash.line_offset.sect_off = line_offset;
7b9f3c50
DE
3306 gdb_assert (slot != NULL);
3307 *slot = qfn;
9291a0cd 3308
dee91e82 3309 find_file_and_directory (comp_unit_die, cu, &name, &comp_dir);
9291a0cd 3310
7b9f3c50
DE
3311 qfn->num_file_names = lh->num_file_names;
3312 qfn->file_names = obstack_alloc (&objfile->objfile_obstack,
3313 lh->num_file_names * sizeof (char *));
9291a0cd 3314 for (i = 0; i < lh->num_file_names; ++i)
7b9f3c50
DE
3315 qfn->file_names[i] = file_full_name (i + 1, lh, comp_dir);
3316 qfn->real_names = NULL;
9291a0cd 3317
7b9f3c50 3318 free_line_header (lh);
7b9f3c50 3319
094b34ac 3320 lh_cu->v.quick->file_names = qfn;
dee91e82
DE
3321}
3322
3323/* A helper for the "quick" functions which attempts to read the line
3324 table for THIS_CU. */
3325
3326static struct quick_file_names *
e4a48d9d 3327dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
dee91e82 3328{
0186c6a7
DE
3329 /* This should never be called for TUs. */
3330 gdb_assert (! this_cu->is_debug_types);
3331 /* Nor type unit groups. */
3332 gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
f4dc4d17 3333
dee91e82
DE
3334 if (this_cu->v.quick->file_names != NULL)
3335 return this_cu->v.quick->file_names;
3336 /* If we know there is no line data, no point in looking again. */
3337 if (this_cu->v.quick->no_file_data)
3338 return NULL;
3339
0186c6a7 3340 init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
dee91e82
DE
3341
3342 if (this_cu->v.quick->no_file_data)
3343 return NULL;
3344 return this_cu->v.quick->file_names;
9291a0cd
TT
3345}
3346
3347/* A helper for the "quick" functions which computes and caches the
7b9f3c50 3348 real path for a given file name from the line table. */
2fdf6df6 3349
9291a0cd 3350static const char *
7b9f3c50
DE
3351dw2_get_real_path (struct objfile *objfile,
3352 struct quick_file_names *qfn, int index)
9291a0cd 3353{
7b9f3c50
DE
3354 if (qfn->real_names == NULL)
3355 qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
26f2dc30 3356 qfn->num_file_names, const char *);
9291a0cd 3357
7b9f3c50
DE
3358 if (qfn->real_names[index] == NULL)
3359 qfn->real_names[index] = gdb_realpath (qfn->file_names[index]);
9291a0cd 3360
7b9f3c50 3361 return qfn->real_names[index];
9291a0cd
TT
3362}
3363
3364static struct symtab *
3365dw2_find_last_source_symtab (struct objfile *objfile)
3366{
43f3e411 3367 struct compunit_symtab *cust;
9291a0cd 3368 int index;
ae2de4f8 3369
9291a0cd
TT
3370 dw2_setup (objfile);
3371 index = dwarf2_per_objfile->n_comp_units - 1;
43f3e411
DE
3372 cust = dw2_instantiate_symtab (dw2_get_cutu (index));
3373 if (cust == NULL)
3374 return NULL;
3375 return compunit_primary_filetab (cust);
9291a0cd
TT
3376}
3377
7b9f3c50
DE
3378/* Traversal function for dw2_forget_cached_source_info. */
3379
3380static int
3381dw2_free_cached_file_names (void **slot, void *info)
9291a0cd 3382{
7b9f3c50 3383 struct quick_file_names *file_data = (struct quick_file_names *) *slot;
9291a0cd 3384
7b9f3c50 3385 if (file_data->real_names)
9291a0cd 3386 {
7b9f3c50 3387 int i;
9291a0cd 3388
7b9f3c50 3389 for (i = 0; i < file_data->num_file_names; ++i)
9291a0cd 3390 {
7b9f3c50
DE
3391 xfree ((void*) file_data->real_names[i]);
3392 file_data->real_names[i] = NULL;
9291a0cd
TT
3393 }
3394 }
7b9f3c50
DE
3395
3396 return 1;
3397}
3398
3399static void
3400dw2_forget_cached_source_info (struct objfile *objfile)
3401{
3402 dw2_setup (objfile);
3403
3404 htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3405 dw2_free_cached_file_names, NULL);
9291a0cd
TT
3406}
3407
f8eba3c6
TT
3408/* Helper function for dw2_map_symtabs_matching_filename that expands
3409 the symtabs and calls the iterator. */
3410
3411static int
3412dw2_map_expand_apply (struct objfile *objfile,
3413 struct dwarf2_per_cu_data *per_cu,
f5b95b50 3414 const char *name, const char *real_path,
f8eba3c6
TT
3415 int (*callback) (struct symtab *, void *),
3416 void *data)
3417{
43f3e411 3418 struct compunit_symtab *last_made = objfile->compunit_symtabs;
f8eba3c6
TT
3419
3420 /* Don't visit already-expanded CUs. */
43f3e411 3421 if (per_cu->v.quick->compunit_symtab)
f8eba3c6
TT
3422 return 0;
3423
3424 /* This may expand more than one symtab, and we want to iterate over
3425 all of them. */
a0f42c21 3426 dw2_instantiate_symtab (per_cu);
f8eba3c6 3427
f5b95b50 3428 return iterate_over_some_symtabs (name, real_path, callback, data,
43f3e411 3429 objfile->compunit_symtabs, last_made);
f8eba3c6
TT
3430}
3431
3432/* Implementation of the map_symtabs_matching_filename method. */
3433
9291a0cd 3434static int
f8eba3c6 3435dw2_map_symtabs_matching_filename (struct objfile *objfile, const char *name,
f5b95b50 3436 const char *real_path,
f8eba3c6
TT
3437 int (*callback) (struct symtab *, void *),
3438 void *data)
9291a0cd
TT
3439{
3440 int i;
c011a4f4 3441 const char *name_basename = lbasename (name);
9291a0cd
TT
3442
3443 dw2_setup (objfile);
ae2de4f8 3444
848e3e78
DE
3445 /* The rule is CUs specify all the files, including those used by
3446 any TU, so there's no need to scan TUs here. */
f4dc4d17 3447
848e3e78 3448 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
3449 {
3450 int j;
8832e7e3 3451 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
7b9f3c50 3452 struct quick_file_names *file_data;
9291a0cd 3453
3d7bb9d9 3454 /* We only need to look at symtabs not already expanded. */
43f3e411 3455 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3456 continue;
3457
e4a48d9d 3458 file_data = dw2_get_file_names (per_cu);
7b9f3c50 3459 if (file_data == NULL)
9291a0cd
TT
3460 continue;
3461
7b9f3c50 3462 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 3463 {
7b9f3c50 3464 const char *this_name = file_data->file_names[j];
da235a7c 3465 const char *this_real_name;
9291a0cd 3466
af529f8f 3467 if (compare_filenames_for_search (this_name, name))
9291a0cd 3468 {
f5b95b50 3469 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
f8eba3c6
TT
3470 callback, data))
3471 return 1;
288e77a7 3472 continue;
4aac40c8 3473 }
9291a0cd 3474
c011a4f4
DE
3475 /* Before we invoke realpath, which can get expensive when many
3476 files are involved, do a quick comparison of the basenames. */
3477 if (! basenames_may_differ
3478 && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3479 continue;
3480
da235a7c
JK
3481 this_real_name = dw2_get_real_path (objfile, file_data, j);
3482 if (compare_filenames_for_search (this_real_name, name))
9291a0cd 3483 {
da235a7c
JK
3484 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3485 callback, data))
3486 return 1;
288e77a7 3487 continue;
da235a7c 3488 }
9291a0cd 3489
da235a7c
JK
3490 if (real_path != NULL)
3491 {
af529f8f
JK
3492 gdb_assert (IS_ABSOLUTE_PATH (real_path));
3493 gdb_assert (IS_ABSOLUTE_PATH (name));
7b9f3c50 3494 if (this_real_name != NULL
af529f8f 3495 && FILENAME_CMP (real_path, this_real_name) == 0)
9291a0cd 3496 {
f5b95b50 3497 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
f8eba3c6
TT
3498 callback, data))
3499 return 1;
288e77a7 3500 continue;
9291a0cd
TT
3501 }
3502 }
3503 }
3504 }
3505
9291a0cd
TT
3506 return 0;
3507}
3508
da51c347
DE
3509/* Struct used to manage iterating over all CUs looking for a symbol. */
3510
3511struct dw2_symtab_iterator
9291a0cd 3512{
da51c347
DE
3513 /* The internalized form of .gdb_index. */
3514 struct mapped_index *index;
3515 /* If non-zero, only look for symbols that match BLOCK_INDEX. */
3516 int want_specific_block;
3517 /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3518 Unused if !WANT_SPECIFIC_BLOCK. */
3519 int block_index;
3520 /* The kind of symbol we're looking for. */
3521 domain_enum domain;
3522 /* The list of CUs from the index entry of the symbol,
3523 or NULL if not found. */
3524 offset_type *vec;
3525 /* The next element in VEC to look at. */
3526 int next;
3527 /* The number of elements in VEC, or zero if there is no match. */
3528 int length;
8943b874
DE
3529 /* Have we seen a global version of the symbol?
3530 If so we can ignore all further global instances.
3531 This is to work around gold/15646, inefficient gold-generated
3532 indices. */
3533 int global_seen;
da51c347 3534};
9291a0cd 3535
da51c347
DE
3536/* Initialize the index symtab iterator ITER.
3537 If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3538 in block BLOCK_INDEX. Otherwise BLOCK_INDEX is ignored. */
2fdf6df6 3539
9291a0cd 3540static void
da51c347
DE
3541dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3542 struct mapped_index *index,
3543 int want_specific_block,
3544 int block_index,
3545 domain_enum domain,
3546 const char *name)
3547{
3548 iter->index = index;
3549 iter->want_specific_block = want_specific_block;
3550 iter->block_index = block_index;
3551 iter->domain = domain;
3552 iter->next = 0;
8943b874 3553 iter->global_seen = 0;
da51c347
DE
3554
3555 if (find_slot_in_mapped_hash (index, name, &iter->vec))
3556 iter->length = MAYBE_SWAP (*iter->vec);
3557 else
3558 {
3559 iter->vec = NULL;
3560 iter->length = 0;
3561 }
3562}
3563
3564/* Return the next matching CU or NULL if there are no more. */
3565
3566static struct dwarf2_per_cu_data *
3567dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3568{
3569 for ( ; iter->next < iter->length; ++iter->next)
3570 {
3571 offset_type cu_index_and_attrs =
3572 MAYBE_SWAP (iter->vec[iter->next + 1]);
3573 offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3190f0c6 3574 struct dwarf2_per_cu_data *per_cu;
da51c347
DE
3575 int want_static = iter->block_index != GLOBAL_BLOCK;
3576 /* This value is only valid for index versions >= 7. */
3577 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3578 gdb_index_symbol_kind symbol_kind =
3579 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3580 /* Only check the symbol attributes if they're present.
3581 Indices prior to version 7 don't record them,
3582 and indices >= 7 may elide them for certain symbols
3583 (gold does this). */
3584 int attrs_valid =
3585 (iter->index->version >= 7
3586 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3587
3190f0c6
DE
3588 /* Don't crash on bad data. */
3589 if (cu_index >= (dwarf2_per_objfile->n_comp_units
3590 + dwarf2_per_objfile->n_type_units))
3591 {
3592 complaint (&symfile_complaints,
3593 _(".gdb_index entry has bad CU index"
4262abfb
JK
3594 " [in module %s]"),
3595 objfile_name (dwarf2_per_objfile->objfile));
3190f0c6
DE
3596 continue;
3597 }
3598
8832e7e3 3599 per_cu = dw2_get_cutu (cu_index);
3190f0c6 3600
da51c347 3601 /* Skip if already read in. */
43f3e411 3602 if (per_cu->v.quick->compunit_symtab)
da51c347
DE
3603 continue;
3604
8943b874
DE
3605 /* Check static vs global. */
3606 if (attrs_valid)
3607 {
3608 if (iter->want_specific_block
3609 && want_static != is_static)
3610 continue;
3611 /* Work around gold/15646. */
3612 if (!is_static && iter->global_seen)
3613 continue;
3614 if (!is_static)
3615 iter->global_seen = 1;
3616 }
da51c347
DE
3617
3618 /* Only check the symbol's kind if it has one. */
3619 if (attrs_valid)
3620 {
3621 switch (iter->domain)
3622 {
3623 case VAR_DOMAIN:
3624 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
3625 && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
3626 /* Some types are also in VAR_DOMAIN. */
3627 && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3628 continue;
3629 break;
3630 case STRUCT_DOMAIN:
3631 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3632 continue;
3633 break;
3634 case LABEL_DOMAIN:
3635 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3636 continue;
3637 break;
3638 default:
3639 break;
3640 }
3641 }
3642
3643 ++iter->next;
3644 return per_cu;
3645 }
3646
3647 return NULL;
3648}
3649
43f3e411 3650static struct compunit_symtab *
da51c347
DE
3651dw2_lookup_symbol (struct objfile *objfile, int block_index,
3652 const char *name, domain_enum domain)
9291a0cd 3653{
43f3e411 3654 struct compunit_symtab *stab_best = NULL;
156942c7
DE
3655 struct mapped_index *index;
3656
9291a0cd
TT
3657 dw2_setup (objfile);
3658
156942c7
DE
3659 index = dwarf2_per_objfile->index_table;
3660
da51c347 3661 /* index is NULL if OBJF_READNOW. */
156942c7 3662 if (index)
9291a0cd 3663 {
da51c347
DE
3664 struct dw2_symtab_iterator iter;
3665 struct dwarf2_per_cu_data *per_cu;
3666
3667 dw2_symtab_iter_init (&iter, index, 1, block_index, domain, name);
9291a0cd 3668
da51c347 3669 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
9291a0cd 3670 {
b2e2f908 3671 struct symbol *sym, *with_opaque = NULL;
43f3e411
DE
3672 struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu);
3673 const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
f194fefb 3674 struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
da51c347 3675
b2e2f908
DE
3676 sym = block_find_symbol (block, name, domain,
3677 block_find_non_opaque_type_preferred,
3678 &with_opaque);
3679
da51c347
DE
3680 /* Some caution must be observed with overloaded functions
3681 and methods, since the index will not contain any overload
3682 information (but NAME might contain it). */
da51c347 3683
b2e2f908
DE
3684 if (sym != NULL
3685 && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
3686 return stab;
3687 if (with_opaque != NULL
3688 && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
3689 stab_best = stab;
da51c347
DE
3690
3691 /* Keep looking through other CUs. */
9291a0cd
TT
3692 }
3693 }
9291a0cd 3694
da51c347 3695 return stab_best;
9291a0cd
TT
3696}
3697
3698static void
3699dw2_print_stats (struct objfile *objfile)
3700{
e4a48d9d 3701 int i, total, count;
9291a0cd
TT
3702
3703 dw2_setup (objfile);
e4a48d9d 3704 total = dwarf2_per_objfile->n_comp_units + dwarf2_per_objfile->n_type_units;
9291a0cd 3705 count = 0;
e4a48d9d 3706 for (i = 0; i < total; ++i)
9291a0cd 3707 {
8832e7e3 3708 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 3709
43f3e411 3710 if (!per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3711 ++count;
3712 }
e4a48d9d 3713 printf_filtered (_(" Number of read CUs: %d\n"), total - count);
9291a0cd
TT
3714 printf_filtered (_(" Number of unread CUs: %d\n"), count);
3715}
3716
779bd270
DE
3717/* This dumps minimal information about the index.
3718 It is called via "mt print objfiles".
3719 One use is to verify .gdb_index has been loaded by the
3720 gdb.dwarf2/gdb-index.exp testcase. */
3721
9291a0cd
TT
3722static void
3723dw2_dump (struct objfile *objfile)
3724{
779bd270
DE
3725 dw2_setup (objfile);
3726 gdb_assert (dwarf2_per_objfile->using_index);
3727 printf_filtered (".gdb_index:");
3728 if (dwarf2_per_objfile->index_table != NULL)
3729 {
3730 printf_filtered (" version %d\n",
3731 dwarf2_per_objfile->index_table->version);
3732 }
3733 else
3734 printf_filtered (" faked for \"readnow\"\n");
3735 printf_filtered ("\n");
9291a0cd
TT
3736}
3737
3738static void
3189cb12
DE
3739dw2_relocate (struct objfile *objfile,
3740 const struct section_offsets *new_offsets,
3741 const struct section_offsets *delta)
9291a0cd
TT
3742{
3743 /* There's nothing to relocate here. */
3744}
3745
3746static void
3747dw2_expand_symtabs_for_function (struct objfile *objfile,
3748 const char *func_name)
3749{
da51c347
DE
3750 struct mapped_index *index;
3751
3752 dw2_setup (objfile);
3753
3754 index = dwarf2_per_objfile->index_table;
3755
3756 /* index is NULL if OBJF_READNOW. */
3757 if (index)
3758 {
3759 struct dw2_symtab_iterator iter;
3760 struct dwarf2_per_cu_data *per_cu;
3761
3762 /* Note: It doesn't matter what we pass for block_index here. */
3763 dw2_symtab_iter_init (&iter, index, 0, GLOBAL_BLOCK, VAR_DOMAIN,
3764 func_name);
3765
3766 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3767 dw2_instantiate_symtab (per_cu);
3768 }
9291a0cd
TT
3769}
3770
3771static void
3772dw2_expand_all_symtabs (struct objfile *objfile)
3773{
3774 int i;
3775
3776 dw2_setup (objfile);
1fd400ff
TT
3777
3778 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
d467dd73 3779 + dwarf2_per_objfile->n_type_units); ++i)
9291a0cd 3780 {
8832e7e3 3781 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 3782
a0f42c21 3783 dw2_instantiate_symtab (per_cu);
9291a0cd
TT
3784 }
3785}
3786
3787static void
652a8996
JK
3788dw2_expand_symtabs_with_fullname (struct objfile *objfile,
3789 const char *fullname)
9291a0cd
TT
3790{
3791 int i;
3792
3793 dw2_setup (objfile);
d4637a04
DE
3794
3795 /* We don't need to consider type units here.
3796 This is only called for examining code, e.g. expand_line_sal.
3797 There can be an order of magnitude (or more) more type units
3798 than comp units, and we avoid them if we can. */
3799
3800 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
3801 {
3802 int j;
8832e7e3 3803 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
7b9f3c50 3804 struct quick_file_names *file_data;
9291a0cd 3805
3d7bb9d9 3806 /* We only need to look at symtabs not already expanded. */
43f3e411 3807 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3808 continue;
3809
e4a48d9d 3810 file_data = dw2_get_file_names (per_cu);
7b9f3c50 3811 if (file_data == NULL)
9291a0cd
TT
3812 continue;
3813
7b9f3c50 3814 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 3815 {
652a8996
JK
3816 const char *this_fullname = file_data->file_names[j];
3817
3818 if (filename_cmp (this_fullname, fullname) == 0)
9291a0cd 3819 {
a0f42c21 3820 dw2_instantiate_symtab (per_cu);
9291a0cd
TT
3821 break;
3822 }
3823 }
3824 }
3825}
3826
9291a0cd 3827static void
ade7ed9e 3828dw2_map_matching_symbols (struct objfile *objfile,
fe978cb0 3829 const char * name, domain_enum domain,
ade7ed9e 3830 int global,
40658b94
PH
3831 int (*callback) (struct block *,
3832 struct symbol *, void *),
2edb89d3
JK
3833 void *data, symbol_compare_ftype *match,
3834 symbol_compare_ftype *ordered_compare)
9291a0cd 3835{
40658b94 3836 /* Currently unimplemented; used for Ada. The function can be called if the
a9e6a4bb
JK
3837 current language is Ada for a non-Ada objfile using GNU index. As Ada
3838 does not look for non-Ada symbols this function should just return. */
9291a0cd
TT
3839}
3840
3841static void
f8eba3c6
TT
3842dw2_expand_symtabs_matching
3843 (struct objfile *objfile,
206f2a57
DE
3844 expand_symtabs_file_matcher_ftype *file_matcher,
3845 expand_symtabs_symbol_matcher_ftype *symbol_matcher,
276d885b 3846 expand_symtabs_exp_notify_ftype *expansion_notify,
f8eba3c6
TT
3847 enum search_domain kind,
3848 void *data)
9291a0cd
TT
3849{
3850 int i;
3851 offset_type iter;
4b5246aa 3852 struct mapped_index *index;
9291a0cd
TT
3853
3854 dw2_setup (objfile);
ae2de4f8
DE
3855
3856 /* index_table is NULL if OBJF_READNOW. */
9291a0cd
TT
3857 if (!dwarf2_per_objfile->index_table)
3858 return;
4b5246aa 3859 index = dwarf2_per_objfile->index_table;
9291a0cd 3860
7b08b9eb 3861 if (file_matcher != NULL)
24c79950
TT
3862 {
3863 struct cleanup *cleanup;
3864 htab_t visited_found, visited_not_found;
3865
3866 visited_found = htab_create_alloc (10,
3867 htab_hash_pointer, htab_eq_pointer,
3868 NULL, xcalloc, xfree);
3869 cleanup = make_cleanup_htab_delete (visited_found);
3870 visited_not_found = htab_create_alloc (10,
3871 htab_hash_pointer, htab_eq_pointer,
3872 NULL, xcalloc, xfree);
3873 make_cleanup_htab_delete (visited_not_found);
3874
848e3e78
DE
3875 /* The rule is CUs specify all the files, including those used by
3876 any TU, so there's no need to scan TUs here. */
3877
3878 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
24c79950
TT
3879 {
3880 int j;
8832e7e3 3881 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
24c79950
TT
3882 struct quick_file_names *file_data;
3883 void **slot;
7b08b9eb 3884
61d96d7e
DE
3885 QUIT;
3886
24c79950 3887 per_cu->v.quick->mark = 0;
3d7bb9d9 3888
24c79950 3889 /* We only need to look at symtabs not already expanded. */
43f3e411 3890 if (per_cu->v.quick->compunit_symtab)
24c79950 3891 continue;
7b08b9eb 3892
e4a48d9d 3893 file_data = dw2_get_file_names (per_cu);
24c79950
TT
3894 if (file_data == NULL)
3895 continue;
7b08b9eb 3896
24c79950
TT
3897 if (htab_find (visited_not_found, file_data) != NULL)
3898 continue;
3899 else if (htab_find (visited_found, file_data) != NULL)
3900 {
3901 per_cu->v.quick->mark = 1;
3902 continue;
3903 }
3904
3905 for (j = 0; j < file_data->num_file_names; ++j)
3906 {
da235a7c
JK
3907 const char *this_real_name;
3908
fbd9ab74 3909 if (file_matcher (file_data->file_names[j], data, 0))
24c79950
TT
3910 {
3911 per_cu->v.quick->mark = 1;
3912 break;
3913 }
da235a7c
JK
3914
3915 /* Before we invoke realpath, which can get expensive when many
3916 files are involved, do a quick comparison of the basenames. */
3917 if (!basenames_may_differ
3918 && !file_matcher (lbasename (file_data->file_names[j]),
3919 data, 1))
3920 continue;
3921
3922 this_real_name = dw2_get_real_path (objfile, file_data, j);
3923 if (file_matcher (this_real_name, data, 0))
3924 {
3925 per_cu->v.quick->mark = 1;
3926 break;
3927 }
24c79950
TT
3928 }
3929
3930 slot = htab_find_slot (per_cu->v.quick->mark
3931 ? visited_found
3932 : visited_not_found,
3933 file_data, INSERT);
3934 *slot = file_data;
3935 }
3936
3937 do_cleanups (cleanup);
3938 }
9291a0cd 3939
3876f04e 3940 for (iter = 0; iter < index->symbol_table_slots; ++iter)
9291a0cd
TT
3941 {
3942 offset_type idx = 2 * iter;
3943 const char *name;
3944 offset_type *vec, vec_len, vec_idx;
8943b874 3945 int global_seen = 0;
9291a0cd 3946
61d96d7e
DE
3947 QUIT;
3948
3876f04e 3949 if (index->symbol_table[idx] == 0 && index->symbol_table[idx + 1] == 0)
9291a0cd
TT
3950 continue;
3951
3876f04e 3952 name = index->constant_pool + MAYBE_SWAP (index->symbol_table[idx]);
9291a0cd 3953
206f2a57 3954 if (! (*symbol_matcher) (name, data))
9291a0cd
TT
3955 continue;
3956
3957 /* The name was matched, now expand corresponding CUs that were
3958 marked. */
4b5246aa 3959 vec = (offset_type *) (index->constant_pool
3876f04e 3960 + MAYBE_SWAP (index->symbol_table[idx + 1]));
9291a0cd
TT
3961 vec_len = MAYBE_SWAP (vec[0]);
3962 for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
3963 {
e254ef6a 3964 struct dwarf2_per_cu_data *per_cu;
156942c7 3965 offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
8943b874
DE
3966 /* This value is only valid for index versions >= 7. */
3967 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
156942c7
DE
3968 gdb_index_symbol_kind symbol_kind =
3969 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3970 int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3190f0c6
DE
3971 /* Only check the symbol attributes if they're present.
3972 Indices prior to version 7 don't record them,
3973 and indices >= 7 may elide them for certain symbols
3974 (gold does this). */
3975 int attrs_valid =
3976 (index->version >= 7
3977 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3978
8943b874
DE
3979 /* Work around gold/15646. */
3980 if (attrs_valid)
3981 {
3982 if (!is_static && global_seen)
3983 continue;
3984 if (!is_static)
3985 global_seen = 1;
3986 }
3987
3190f0c6
DE
3988 /* Only check the symbol's kind if it has one. */
3989 if (attrs_valid)
156942c7
DE
3990 {
3991 switch (kind)
3992 {
3993 case VARIABLES_DOMAIN:
3994 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
3995 continue;
3996 break;
3997 case FUNCTIONS_DOMAIN:
3998 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
3999 continue;
4000 break;
4001 case TYPES_DOMAIN:
4002 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4003 continue;
4004 break;
4005 default:
4006 break;
4007 }
4008 }
4009
3190f0c6
DE
4010 /* Don't crash on bad data. */
4011 if (cu_index >= (dwarf2_per_objfile->n_comp_units
4012 + dwarf2_per_objfile->n_type_units))
4013 {
4014 complaint (&symfile_complaints,
4015 _(".gdb_index entry has bad CU index"
4262abfb 4016 " [in module %s]"), objfile_name (objfile));
3190f0c6
DE
4017 continue;
4018 }
4019
8832e7e3 4020 per_cu = dw2_get_cutu (cu_index);
7b08b9eb 4021 if (file_matcher == NULL || per_cu->v.quick->mark)
276d885b
GB
4022 {
4023 int symtab_was_null =
4024 (per_cu->v.quick->compunit_symtab == NULL);
4025
4026 dw2_instantiate_symtab (per_cu);
4027
4028 if (expansion_notify != NULL
4029 && symtab_was_null
4030 && per_cu->v.quick->compunit_symtab != NULL)
4031 {
4032 expansion_notify (per_cu->v.quick->compunit_symtab,
4033 data);
4034 }
4035 }
9291a0cd
TT
4036 }
4037 }
4038}
4039
43f3e411 4040/* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
9703b513
TT
4041 symtab. */
4042
43f3e411
DE
4043static struct compunit_symtab *
4044recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
4045 CORE_ADDR pc)
9703b513
TT
4046{
4047 int i;
4048
43f3e411
DE
4049 if (COMPUNIT_BLOCKVECTOR (cust) != NULL
4050 && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
4051 return cust;
9703b513 4052
43f3e411 4053 if (cust->includes == NULL)
a3ec0bb1
DE
4054 return NULL;
4055
43f3e411 4056 for (i = 0; cust->includes[i]; ++i)
9703b513 4057 {
43f3e411 4058 struct compunit_symtab *s = cust->includes[i];
9703b513 4059
43f3e411 4060 s = recursively_find_pc_sect_compunit_symtab (s, pc);
9703b513
TT
4061 if (s != NULL)
4062 return s;
4063 }
4064
4065 return NULL;
4066}
4067
43f3e411
DE
4068static struct compunit_symtab *
4069dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
4070 struct bound_minimal_symbol msymbol,
4071 CORE_ADDR pc,
4072 struct obj_section *section,
4073 int warn_if_readin)
9291a0cd
TT
4074{
4075 struct dwarf2_per_cu_data *data;
43f3e411 4076 struct compunit_symtab *result;
9291a0cd
TT
4077
4078 dw2_setup (objfile);
4079
4080 if (!objfile->psymtabs_addrmap)
4081 return NULL;
4082
4083 data = addrmap_find (objfile->psymtabs_addrmap, pc);
4084 if (!data)
4085 return NULL;
4086
43f3e411 4087 if (warn_if_readin && data->v.quick->compunit_symtab)
abebb8b0 4088 warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
9291a0cd
TT
4089 paddress (get_objfile_arch (objfile), pc));
4090
43f3e411
DE
4091 result
4092 = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data),
4093 pc);
9703b513
TT
4094 gdb_assert (result != NULL);
4095 return result;
9291a0cd
TT
4096}
4097
9291a0cd 4098static void
44b13c5a 4099dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
74e2f255 4100 void *data, int need_fullname)
9291a0cd
TT
4101{
4102 int i;
24c79950
TT
4103 struct cleanup *cleanup;
4104 htab_t visited = htab_create_alloc (10, htab_hash_pointer, htab_eq_pointer,
4105 NULL, xcalloc, xfree);
9291a0cd 4106
24c79950 4107 cleanup = make_cleanup_htab_delete (visited);
9291a0cd 4108 dw2_setup (objfile);
ae2de4f8 4109
848e3e78
DE
4110 /* The rule is CUs specify all the files, including those used by
4111 any TU, so there's no need to scan TUs here.
4112 We can ignore file names coming from already-expanded CUs. */
f4dc4d17 4113
848e3e78 4114 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
24c79950 4115 {
8832e7e3 4116 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
24c79950 4117
43f3e411 4118 if (per_cu->v.quick->compunit_symtab)
24c79950
TT
4119 {
4120 void **slot = htab_find_slot (visited, per_cu->v.quick->file_names,
4121 INSERT);
4122
4123 *slot = per_cu->v.quick->file_names;
4124 }
4125 }
4126
848e3e78 4127 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
4128 {
4129 int j;
8832e7e3 4130 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
7b9f3c50 4131 struct quick_file_names *file_data;
24c79950 4132 void **slot;
9291a0cd 4133
3d7bb9d9 4134 /* We only need to look at symtabs not already expanded. */
43f3e411 4135 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
4136 continue;
4137
e4a48d9d 4138 file_data = dw2_get_file_names (per_cu);
7b9f3c50 4139 if (file_data == NULL)
9291a0cd
TT
4140 continue;
4141
24c79950
TT
4142 slot = htab_find_slot (visited, file_data, INSERT);
4143 if (*slot)
4144 {
4145 /* Already visited. */
4146 continue;
4147 }
4148 *slot = file_data;
4149
7b9f3c50 4150 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 4151 {
74e2f255
DE
4152 const char *this_real_name;
4153
4154 if (need_fullname)
4155 this_real_name = dw2_get_real_path (objfile, file_data, j);
4156 else
4157 this_real_name = NULL;
7b9f3c50 4158 (*fun) (file_data->file_names[j], this_real_name, data);
9291a0cd
TT
4159 }
4160 }
24c79950
TT
4161
4162 do_cleanups (cleanup);
9291a0cd
TT
4163}
4164
4165static int
4166dw2_has_symbols (struct objfile *objfile)
4167{
4168 return 1;
4169}
4170
4171const struct quick_symbol_functions dwarf2_gdb_index_functions =
4172{
4173 dw2_has_symbols,
4174 dw2_find_last_source_symtab,
4175 dw2_forget_cached_source_info,
f8eba3c6 4176 dw2_map_symtabs_matching_filename,
9291a0cd 4177 dw2_lookup_symbol,
9291a0cd
TT
4178 dw2_print_stats,
4179 dw2_dump,
4180 dw2_relocate,
4181 dw2_expand_symtabs_for_function,
4182 dw2_expand_all_symtabs,
652a8996 4183 dw2_expand_symtabs_with_fullname,
40658b94 4184 dw2_map_matching_symbols,
9291a0cd 4185 dw2_expand_symtabs_matching,
43f3e411 4186 dw2_find_pc_sect_compunit_symtab,
9291a0cd
TT
4187 dw2_map_symbol_filenames
4188};
4189
4190/* Initialize for reading DWARF for this objfile. Return 0 if this
4191 file will use psymtabs, or 1 if using the GNU index. */
4192
4193int
4194dwarf2_initialize_objfile (struct objfile *objfile)
4195{
4196 /* If we're about to read full symbols, don't bother with the
4197 indices. In this case we also don't care if some other debug
4198 format is making psymtabs, because they are all about to be
4199 expanded anyway. */
4200 if ((objfile->flags & OBJF_READNOW))
4201 {
4202 int i;
4203
4204 dwarf2_per_objfile->using_index = 1;
4205 create_all_comp_units (objfile);
0e50663e 4206 create_all_type_units (objfile);
7b9f3c50
DE
4207 dwarf2_per_objfile->quick_file_names_table =
4208 create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
9291a0cd 4209
1fd400ff 4210 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
d467dd73 4211 + dwarf2_per_objfile->n_type_units); ++i)
9291a0cd 4212 {
8832e7e3 4213 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 4214
e254ef6a
DE
4215 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4216 struct dwarf2_per_cu_quick_data);
9291a0cd
TT
4217 }
4218
4219 /* Return 1 so that gdb sees the "quick" functions. However,
4220 these functions will be no-ops because we will have expanded
4221 all symtabs. */
4222 return 1;
4223 }
4224
4225 if (dwarf2_read_index (objfile))
4226 return 1;
4227
9291a0cd
TT
4228 return 0;
4229}
4230
4231\f
4232
dce234bc
PP
4233/* Build a partial symbol table. */
4234
4235void
f29dff0a 4236dwarf2_build_psymtabs (struct objfile *objfile)
dce234bc 4237{
c9bf0622 4238
f29dff0a 4239 if (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0)
c906108c
SS
4240 {
4241 init_psymbol_list (objfile, 1024);
4242 }
4243
492d29ea 4244 TRY
c9bf0622
TT
4245 {
4246 /* This isn't really ideal: all the data we allocate on the
4247 objfile's obstack is still uselessly kept around. However,
4248 freeing it seems unsafe. */
4249 struct cleanup *cleanups = make_cleanup_discard_psymtabs (objfile);
4250
4251 dwarf2_build_psymtabs_hard (objfile);
4252 discard_cleanups (cleanups);
4253 }
492d29ea
PA
4254 CATCH (except, RETURN_MASK_ERROR)
4255 {
4256 exception_print (gdb_stderr, except);
4257 }
4258 END_CATCH
c906108c 4259}
c906108c 4260
1ce1cefd
DE
4261/* Return the total length of the CU described by HEADER. */
4262
4263static unsigned int
4264get_cu_length (const struct comp_unit_head *header)
4265{
4266 return header->initial_length_size + header->length;
4267}
4268
45452591
DE
4269/* Return TRUE if OFFSET is within CU_HEADER. */
4270
4271static inline int
b64f50a1 4272offset_in_cu_p (const struct comp_unit_head *cu_header, sect_offset offset)
45452591 4273{
b64f50a1 4274 sect_offset bottom = { cu_header->offset.sect_off };
1ce1cefd 4275 sect_offset top = { cu_header->offset.sect_off + get_cu_length (cu_header) };
9a619af0 4276
b64f50a1 4277 return (offset.sect_off >= bottom.sect_off && offset.sect_off < top.sect_off);
45452591
DE
4278}
4279
3b80fe9b
DE
4280/* Find the base address of the compilation unit for range lists and
4281 location lists. It will normally be specified by DW_AT_low_pc.
4282 In DWARF-3 draft 4, the base address could be overridden by
4283 DW_AT_entry_pc. It's been removed, but GCC still uses this for
4284 compilation units with discontinuous ranges. */
4285
4286static void
4287dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
4288{
4289 struct attribute *attr;
4290
4291 cu->base_known = 0;
4292 cu->base_address = 0;
4293
4294 attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
4295 if (attr)
4296 {
31aa7e4e 4297 cu->base_address = attr_value_as_address (attr);
3b80fe9b
DE
4298 cu->base_known = 1;
4299 }
4300 else
4301 {
4302 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
4303 if (attr)
4304 {
31aa7e4e 4305 cu->base_address = attr_value_as_address (attr);
3b80fe9b
DE
4306 cu->base_known = 1;
4307 }
4308 }
4309}
4310
93311388
DE
4311/* Read in the comp unit header information from the debug_info at info_ptr.
4312 NOTE: This leaves members offset, first_die_offset to be filled in
4313 by the caller. */
107d2387 4314
d521ce57 4315static const gdb_byte *
107d2387 4316read_comp_unit_head (struct comp_unit_head *cu_header,
d521ce57 4317 const gdb_byte *info_ptr, bfd *abfd)
107d2387
AC
4318{
4319 int signed_addr;
891d2f0b 4320 unsigned int bytes_read;
c764a876
DE
4321
4322 cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
4323 cu_header->initial_length_size = bytes_read;
4324 cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
613e1657 4325 info_ptr += bytes_read;
107d2387
AC
4326 cu_header->version = read_2_bytes (abfd, info_ptr);
4327 info_ptr += 2;
b64f50a1
JK
4328 cu_header->abbrev_offset.sect_off = read_offset (abfd, info_ptr, cu_header,
4329 &bytes_read);
613e1657 4330 info_ptr += bytes_read;
107d2387
AC
4331 cu_header->addr_size = read_1_byte (abfd, info_ptr);
4332 info_ptr += 1;
4333 signed_addr = bfd_get_sign_extend_vma (abfd);
4334 if (signed_addr < 0)
8e65ff28 4335 internal_error (__FILE__, __LINE__,
e2e0b3e5 4336 _("read_comp_unit_head: dwarf from non elf file"));
107d2387 4337 cu_header->signed_addr_p = signed_addr;
c764a876 4338
107d2387
AC
4339 return info_ptr;
4340}
4341
36586728
TT
4342/* Helper function that returns the proper abbrev section for
4343 THIS_CU. */
4344
4345static struct dwarf2_section_info *
4346get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
4347{
4348 struct dwarf2_section_info *abbrev;
4349
4350 if (this_cu->is_dwz)
4351 abbrev = &dwarf2_get_dwz_file ()->abbrev;
4352 else
4353 abbrev = &dwarf2_per_objfile->abbrev;
4354
4355 return abbrev;
4356}
4357
9ff913ba
DE
4358/* Subroutine of read_and_check_comp_unit_head and
4359 read_and_check_type_unit_head to simplify them.
4360 Perform various error checking on the header. */
4361
4362static void
4363error_check_comp_unit_head (struct comp_unit_head *header,
4bdcc0c1
DE
4364 struct dwarf2_section_info *section,
4365 struct dwarf2_section_info *abbrev_section)
9ff913ba 4366{
a32a8923
DE
4367 bfd *abfd = get_section_bfd_owner (section);
4368 const char *filename = get_section_file_name (section);
9ff913ba
DE
4369
4370 if (header->version != 2 && header->version != 3 && header->version != 4)
4371 error (_("Dwarf Error: wrong version in compilation unit header "
4372 "(is %d, should be 2, 3, or 4) [in module %s]"), header->version,
4373 filename);
4374
b64f50a1 4375 if (header->abbrev_offset.sect_off
36586728 4376 >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
9ff913ba
DE
4377 error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
4378 "(offset 0x%lx + 6) [in module %s]"),
b64f50a1 4379 (long) header->abbrev_offset.sect_off, (long) header->offset.sect_off,
9ff913ba
DE
4380 filename);
4381
4382 /* Cast to unsigned long to use 64-bit arithmetic when possible to
4383 avoid potential 32-bit overflow. */
1ce1cefd 4384 if (((unsigned long) header->offset.sect_off + get_cu_length (header))
9ff913ba
DE
4385 > section->size)
4386 error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
4387 "(offset 0x%lx + 0) [in module %s]"),
b64f50a1 4388 (long) header->length, (long) header->offset.sect_off,
9ff913ba
DE
4389 filename);
4390}
4391
4392/* Read in a CU/TU header and perform some basic error checking.
4393 The contents of the header are stored in HEADER.
4394 The result is a pointer to the start of the first DIE. */
adabb602 4395
d521ce57 4396static const gdb_byte *
9ff913ba
DE
4397read_and_check_comp_unit_head (struct comp_unit_head *header,
4398 struct dwarf2_section_info *section,
4bdcc0c1 4399 struct dwarf2_section_info *abbrev_section,
d521ce57 4400 const gdb_byte *info_ptr,
9ff913ba 4401 int is_debug_types_section)
72bf9492 4402{
d521ce57 4403 const gdb_byte *beg_of_comp_unit = info_ptr;
a32a8923 4404 bfd *abfd = get_section_bfd_owner (section);
72bf9492 4405
b64f50a1 4406 header->offset.sect_off = beg_of_comp_unit - section->buffer;
adabb602 4407
72bf9492
DJ
4408 info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4409
460c1c54
CC
4410 /* If we're reading a type unit, skip over the signature and
4411 type_offset fields. */
b0df02fd 4412 if (is_debug_types_section)
460c1c54
CC
4413 info_ptr += 8 /*signature*/ + header->offset_size;
4414
b64f50a1 4415 header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
adabb602 4416
4bdcc0c1 4417 error_check_comp_unit_head (header, section, abbrev_section);
72bf9492
DJ
4418
4419 return info_ptr;
4420}
4421
348e048f
DE
4422/* Read in the types comp unit header information from .debug_types entry at
4423 types_ptr. The result is a pointer to one past the end of the header. */
4424
d521ce57 4425static const gdb_byte *
9ff913ba
DE
4426read_and_check_type_unit_head (struct comp_unit_head *header,
4427 struct dwarf2_section_info *section,
4bdcc0c1 4428 struct dwarf2_section_info *abbrev_section,
d521ce57 4429 const gdb_byte *info_ptr,
dee91e82
DE
4430 ULONGEST *signature,
4431 cu_offset *type_offset_in_tu)
348e048f 4432{
d521ce57 4433 const gdb_byte *beg_of_comp_unit = info_ptr;
a32a8923 4434 bfd *abfd = get_section_bfd_owner (section);
348e048f 4435
b64f50a1 4436 header->offset.sect_off = beg_of_comp_unit - section->buffer;
348e048f 4437
9ff913ba 4438 info_ptr = read_comp_unit_head (header, info_ptr, abfd);
348e048f 4439
9ff913ba
DE
4440 /* If we're reading a type unit, skip over the signature and
4441 type_offset fields. */
4442 if (signature != NULL)
4443 *signature = read_8_bytes (abfd, info_ptr);
4444 info_ptr += 8;
dee91e82
DE
4445 if (type_offset_in_tu != NULL)
4446 type_offset_in_tu->cu_off = read_offset_1 (abfd, info_ptr,
4447 header->offset_size);
9ff913ba
DE
4448 info_ptr += header->offset_size;
4449
b64f50a1 4450 header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
348e048f 4451
4bdcc0c1 4452 error_check_comp_unit_head (header, section, abbrev_section);
9ff913ba
DE
4453
4454 return info_ptr;
348e048f
DE
4455}
4456
f4dc4d17
DE
4457/* Fetch the abbreviation table offset from a comp or type unit header. */
4458
4459static sect_offset
4460read_abbrev_offset (struct dwarf2_section_info *section,
4461 sect_offset offset)
4462{
a32a8923 4463 bfd *abfd = get_section_bfd_owner (section);
d521ce57 4464 const gdb_byte *info_ptr;
f4dc4d17
DE
4465 unsigned int length, initial_length_size, offset_size;
4466 sect_offset abbrev_offset;
4467
4468 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
4469 info_ptr = section->buffer + offset.sect_off;
4470 length = read_initial_length (abfd, info_ptr, &initial_length_size);
4471 offset_size = initial_length_size == 4 ? 4 : 8;
4472 info_ptr += initial_length_size + 2 /*version*/;
4473 abbrev_offset.sect_off = read_offset_1 (abfd, info_ptr, offset_size);
4474 return abbrev_offset;
4475}
4476
aaa75496
JB
4477/* Allocate a new partial symtab for file named NAME and mark this new
4478 partial symtab as being an include of PST. */
4479
4480static void
d521ce57 4481dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
aaa75496
JB
4482 struct objfile *objfile)
4483{
4484 struct partial_symtab *subpst = allocate_psymtab (name, objfile);
4485
fbd9ab74
JK
4486 if (!IS_ABSOLUTE_PATH (subpst->filename))
4487 {
4488 /* It shares objfile->objfile_obstack. */
4489 subpst->dirname = pst->dirname;
4490 }
4491
aaa75496
JB
4492 subpst->section_offsets = pst->section_offsets;
4493 subpst->textlow = 0;
4494 subpst->texthigh = 0;
4495
4496 subpst->dependencies = (struct partial_symtab **)
4497 obstack_alloc (&objfile->objfile_obstack,
4498 sizeof (struct partial_symtab *));
4499 subpst->dependencies[0] = pst;
4500 subpst->number_of_dependencies = 1;
4501
4502 subpst->globals_offset = 0;
4503 subpst->n_global_syms = 0;
4504 subpst->statics_offset = 0;
4505 subpst->n_static_syms = 0;
43f3e411 4506 subpst->compunit_symtab = NULL;
aaa75496
JB
4507 subpst->read_symtab = pst->read_symtab;
4508 subpst->readin = 0;
4509
4510 /* No private part is necessary for include psymtabs. This property
4511 can be used to differentiate between such include psymtabs and
10b3939b 4512 the regular ones. */
58a9656e 4513 subpst->read_symtab_private = NULL;
aaa75496
JB
4514}
4515
4516/* Read the Line Number Program data and extract the list of files
4517 included by the source file represented by PST. Build an include
d85a05f0 4518 partial symtab for each of these included files. */
aaa75496
JB
4519
4520static void
4521dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
dee91e82
DE
4522 struct die_info *die,
4523 struct partial_symtab *pst)
aaa75496 4524{
d85a05f0
DJ
4525 struct line_header *lh = NULL;
4526 struct attribute *attr;
aaa75496 4527
d85a05f0
DJ
4528 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
4529 if (attr)
3019eac3 4530 lh = dwarf_decode_line_header (DW_UNSND (attr), cu);
aaa75496
JB
4531 if (lh == NULL)
4532 return; /* No linetable, so no includes. */
4533
c6da4cef 4534 /* NOTE: pst->dirname is DW_AT_comp_dir (if present). */
527f3840 4535 dwarf_decode_lines (lh, pst->dirname, cu, pst, pst->textlow, 1);
aaa75496
JB
4536
4537 free_line_header (lh);
4538}
4539
348e048f 4540static hashval_t
52dc124a 4541hash_signatured_type (const void *item)
348e048f 4542{
52dc124a 4543 const struct signatured_type *sig_type = item;
9a619af0 4544
348e048f 4545 /* This drops the top 32 bits of the signature, but is ok for a hash. */
52dc124a 4546 return sig_type->signature;
348e048f
DE
4547}
4548
4549static int
52dc124a 4550eq_signatured_type (const void *item_lhs, const void *item_rhs)
348e048f
DE
4551{
4552 const struct signatured_type *lhs = item_lhs;
4553 const struct signatured_type *rhs = item_rhs;
9a619af0 4554
348e048f
DE
4555 return lhs->signature == rhs->signature;
4556}
4557
1fd400ff
TT
4558/* Allocate a hash table for signatured types. */
4559
4560static htab_t
673bfd45 4561allocate_signatured_type_table (struct objfile *objfile)
1fd400ff
TT
4562{
4563 return htab_create_alloc_ex (41,
52dc124a
DE
4564 hash_signatured_type,
4565 eq_signatured_type,
1fd400ff
TT
4566 NULL,
4567 &objfile->objfile_obstack,
4568 hashtab_obstack_allocate,
4569 dummy_obstack_deallocate);
4570}
4571
d467dd73 4572/* A helper function to add a signatured type CU to a table. */
1fd400ff
TT
4573
4574static int
d467dd73 4575add_signatured_type_cu_to_table (void **slot, void *datum)
1fd400ff
TT
4576{
4577 struct signatured_type *sigt = *slot;
b4dd5633 4578 struct signatured_type ***datap = datum;
1fd400ff 4579
b4dd5633 4580 **datap = sigt;
1fd400ff
TT
4581 ++*datap;
4582
4583 return 1;
4584}
4585
c88ee1f0
DE
4586/* Create the hash table of all entries in the .debug_types
4587 (or .debug_types.dwo) section(s).
4588 If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
4589 otherwise it is NULL.
4590
4591 The result is a pointer to the hash table or NULL if there are no types.
4592
4593 Note: This function processes DWO files only, not DWP files. */
348e048f 4594
3019eac3
DE
4595static htab_t
4596create_debug_types_hash_table (struct dwo_file *dwo_file,
4597 VEC (dwarf2_section_info_def) *types)
348e048f 4598{
3019eac3 4599 struct objfile *objfile = dwarf2_per_objfile->objfile;
8b70b953 4600 htab_t types_htab = NULL;
8b70b953
TT
4601 int ix;
4602 struct dwarf2_section_info *section;
4bdcc0c1 4603 struct dwarf2_section_info *abbrev_section;
348e048f 4604
3019eac3
DE
4605 if (VEC_empty (dwarf2_section_info_def, types))
4606 return NULL;
348e048f 4607
4bdcc0c1
DE
4608 abbrev_section = (dwo_file != NULL
4609 ? &dwo_file->sections.abbrev
4610 : &dwarf2_per_objfile->abbrev);
4611
b4f54984 4612 if (dwarf_read_debug)
09406207
DE
4613 fprintf_unfiltered (gdb_stdlog, "Reading .debug_types%s for %s:\n",
4614 dwo_file ? ".dwo" : "",
a32a8923 4615 get_section_file_name (abbrev_section));
09406207 4616
8b70b953 4617 for (ix = 0;
3019eac3 4618 VEC_iterate (dwarf2_section_info_def, types, ix, section);
8b70b953
TT
4619 ++ix)
4620 {
3019eac3 4621 bfd *abfd;
d521ce57 4622 const gdb_byte *info_ptr, *end_ptr;
348e048f 4623
8b70b953
TT
4624 dwarf2_read_section (objfile, section);
4625 info_ptr = section->buffer;
348e048f 4626
8b70b953
TT
4627 if (info_ptr == NULL)
4628 continue;
348e048f 4629
3019eac3 4630 /* We can't set abfd until now because the section may be empty or
a32a8923
DE
4631 not present, in which case the bfd is unknown. */
4632 abfd = get_section_bfd_owner (section);
3019eac3 4633
dee91e82
DE
4634 /* We don't use init_cutu_and_read_dies_simple, or some such, here
4635 because we don't need to read any dies: the signature is in the
4636 header. */
8b70b953
TT
4637
4638 end_ptr = info_ptr + section->size;
4639 while (info_ptr < end_ptr)
4640 {
b64f50a1 4641 sect_offset offset;
3019eac3 4642 cu_offset type_offset_in_tu;
8b70b953 4643 ULONGEST signature;
52dc124a 4644 struct signatured_type *sig_type;
3019eac3 4645 struct dwo_unit *dwo_tu;
8b70b953 4646 void **slot;
d521ce57 4647 const gdb_byte *ptr = info_ptr;
9ff913ba 4648 struct comp_unit_head header;
dee91e82 4649 unsigned int length;
348e048f 4650
b64f50a1 4651 offset.sect_off = ptr - section->buffer;
348e048f 4652
8b70b953 4653 /* We need to read the type's signature in order to build the hash
9ff913ba 4654 table, but we don't need anything else just yet. */
348e048f 4655
4bdcc0c1
DE
4656 ptr = read_and_check_type_unit_head (&header, section,
4657 abbrev_section, ptr,
3019eac3 4658 &signature, &type_offset_in_tu);
6caca83c 4659
1ce1cefd 4660 length = get_cu_length (&header);
dee91e82 4661
6caca83c 4662 /* Skip dummy type units. */
dee91e82
DE
4663 if (ptr >= info_ptr + length
4664 || peek_abbrev_code (abfd, ptr) == 0)
6caca83c 4665 {
1ce1cefd 4666 info_ptr += length;
6caca83c
CC
4667 continue;
4668 }
8b70b953 4669
0349ea22
DE
4670 if (types_htab == NULL)
4671 {
4672 if (dwo_file)
4673 types_htab = allocate_dwo_unit_table (objfile);
4674 else
4675 types_htab = allocate_signatured_type_table (objfile);
4676 }
4677
3019eac3
DE
4678 if (dwo_file)
4679 {
4680 sig_type = NULL;
4681 dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4682 struct dwo_unit);
4683 dwo_tu->dwo_file = dwo_file;
4684 dwo_tu->signature = signature;
4685 dwo_tu->type_offset_in_tu = type_offset_in_tu;
8a0459fd 4686 dwo_tu->section = section;
3019eac3
DE
4687 dwo_tu->offset = offset;
4688 dwo_tu->length = length;
4689 }
4690 else
4691 {
4692 /* N.B.: type_offset is not usable if this type uses a DWO file.
4693 The real type_offset is in the DWO file. */
4694 dwo_tu = NULL;
4695 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4696 struct signatured_type);
4697 sig_type->signature = signature;
4698 sig_type->type_offset_in_tu = type_offset_in_tu;
4699 sig_type->per_cu.objfile = objfile;
4700 sig_type->per_cu.is_debug_types = 1;
8a0459fd 4701 sig_type->per_cu.section = section;
3019eac3
DE
4702 sig_type->per_cu.offset = offset;
4703 sig_type->per_cu.length = length;
4704 }
8b70b953 4705
3019eac3
DE
4706 slot = htab_find_slot (types_htab,
4707 dwo_file ? (void*) dwo_tu : (void *) sig_type,
4708 INSERT);
8b70b953
TT
4709 gdb_assert (slot != NULL);
4710 if (*slot != NULL)
4711 {
3019eac3
DE
4712 sect_offset dup_offset;
4713
4714 if (dwo_file)
4715 {
4716 const struct dwo_unit *dup_tu = *slot;
4717
4718 dup_offset = dup_tu->offset;
4719 }
4720 else
4721 {
4722 const struct signatured_type *dup_tu = *slot;
4723
4724 dup_offset = dup_tu->per_cu.offset;
4725 }
b3c8eb43 4726
8b70b953 4727 complaint (&symfile_complaints,
c88ee1f0 4728 _("debug type entry at offset 0x%x is duplicate to"
4031ecc5 4729 " the entry at offset 0x%x, signature %s"),
3019eac3 4730 offset.sect_off, dup_offset.sect_off,
4031ecc5 4731 hex_string (signature));
8b70b953 4732 }
3019eac3 4733 *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
348e048f 4734
b4f54984 4735 if (dwarf_read_debug > 1)
4031ecc5 4736 fprintf_unfiltered (gdb_stdlog, " offset 0x%x, signature %s\n",
b64f50a1 4737 offset.sect_off,
4031ecc5 4738 hex_string (signature));
348e048f 4739
dee91e82 4740 info_ptr += length;
8b70b953 4741 }
348e048f
DE
4742 }
4743
3019eac3
DE
4744 return types_htab;
4745}
4746
4747/* Create the hash table of all entries in the .debug_types section,
4748 and initialize all_type_units.
4749 The result is zero if there is an error (e.g. missing .debug_types section),
4750 otherwise non-zero. */
4751
4752static int
4753create_all_type_units (struct objfile *objfile)
4754{
4755 htab_t types_htab;
b4dd5633 4756 struct signatured_type **iter;
3019eac3
DE
4757
4758 types_htab = create_debug_types_hash_table (NULL, dwarf2_per_objfile->types);
4759 if (types_htab == NULL)
4760 {
4761 dwarf2_per_objfile->signatured_types = NULL;
4762 return 0;
4763 }
4764
348e048f
DE
4765 dwarf2_per_objfile->signatured_types = types_htab;
4766
6aa5f3a6
DE
4767 dwarf2_per_objfile->n_type_units
4768 = dwarf2_per_objfile->n_allocated_type_units
4769 = htab_elements (types_htab);
d467dd73 4770 dwarf2_per_objfile->all_type_units
a2ce51a0
DE
4771 = xmalloc (dwarf2_per_objfile->n_type_units
4772 * sizeof (struct signatured_type *));
d467dd73
DE
4773 iter = &dwarf2_per_objfile->all_type_units[0];
4774 htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table, &iter);
4775 gdb_assert (iter - &dwarf2_per_objfile->all_type_units[0]
4776 == dwarf2_per_objfile->n_type_units);
1fd400ff 4777
348e048f
DE
4778 return 1;
4779}
4780
6aa5f3a6
DE
4781/* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
4782 If SLOT is non-NULL, it is the entry to use in the hash table.
4783 Otherwise we find one. */
4784
4785static struct signatured_type *
4786add_type_unit (ULONGEST sig, void **slot)
4787{
4788 struct objfile *objfile = dwarf2_per_objfile->objfile;
4789 int n_type_units = dwarf2_per_objfile->n_type_units;
4790 struct signatured_type *sig_type;
4791
4792 gdb_assert (n_type_units <= dwarf2_per_objfile->n_allocated_type_units);
4793 ++n_type_units;
4794 if (n_type_units > dwarf2_per_objfile->n_allocated_type_units)
4795 {
4796 if (dwarf2_per_objfile->n_allocated_type_units == 0)
4797 dwarf2_per_objfile->n_allocated_type_units = 1;
4798 dwarf2_per_objfile->n_allocated_type_units *= 2;
4799 dwarf2_per_objfile->all_type_units
4800 = xrealloc (dwarf2_per_objfile->all_type_units,
4801 dwarf2_per_objfile->n_allocated_type_units
4802 * sizeof (struct signatured_type *));
4803 ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
4804 }
4805 dwarf2_per_objfile->n_type_units = n_type_units;
4806
4807 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4808 struct signatured_type);
4809 dwarf2_per_objfile->all_type_units[n_type_units - 1] = sig_type;
4810 sig_type->signature = sig;
4811 sig_type->per_cu.is_debug_types = 1;
4812 if (dwarf2_per_objfile->using_index)
4813 {
4814 sig_type->per_cu.v.quick =
4815 OBSTACK_ZALLOC (&objfile->objfile_obstack,
4816 struct dwarf2_per_cu_quick_data);
4817 }
4818
4819 if (slot == NULL)
4820 {
4821 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4822 sig_type, INSERT);
4823 }
4824 gdb_assert (*slot == NULL);
4825 *slot = sig_type;
4826 /* The rest of sig_type must be filled in by the caller. */
4827 return sig_type;
4828}
4829
a2ce51a0
DE
4830/* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
4831 Fill in SIG_ENTRY with DWO_ENTRY. */
4832
4833static void
4834fill_in_sig_entry_from_dwo_entry (struct objfile *objfile,
4835 struct signatured_type *sig_entry,
4836 struct dwo_unit *dwo_entry)
4837{
7ee85ab1 4838 /* Make sure we're not clobbering something we don't expect to. */
a2ce51a0
DE
4839 gdb_assert (! sig_entry->per_cu.queued);
4840 gdb_assert (sig_entry->per_cu.cu == NULL);
6aa5f3a6
DE
4841 if (dwarf2_per_objfile->using_index)
4842 {
4843 gdb_assert (sig_entry->per_cu.v.quick != NULL);
43f3e411 4844 gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6aa5f3a6
DE
4845 }
4846 else
4847 gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
a2ce51a0
DE
4848 gdb_assert (sig_entry->signature == dwo_entry->signature);
4849 gdb_assert (sig_entry->type_offset_in_section.sect_off == 0);
4850 gdb_assert (sig_entry->type_unit_group == NULL);
7ee85ab1
DE
4851 gdb_assert (sig_entry->dwo_unit == NULL);
4852
4853 sig_entry->per_cu.section = dwo_entry->section;
4854 sig_entry->per_cu.offset = dwo_entry->offset;
4855 sig_entry->per_cu.length = dwo_entry->length;
4856 sig_entry->per_cu.reading_dwo_directly = 1;
4857 sig_entry->per_cu.objfile = objfile;
a2ce51a0
DE
4858 sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
4859 sig_entry->dwo_unit = dwo_entry;
4860}
4861
4862/* Subroutine of lookup_signatured_type.
7ee85ab1
DE
4863 If we haven't read the TU yet, create the signatured_type data structure
4864 for a TU to be read in directly from a DWO file, bypassing the stub.
4865 This is the "Stay in DWO Optimization": When there is no DWP file and we're
4866 using .gdb_index, then when reading a CU we want to stay in the DWO file
4867 containing that CU. Otherwise we could end up reading several other DWO
4868 files (due to comdat folding) to process the transitive closure of all the
4869 mentioned TUs, and that can be slow. The current DWO file will have every
4870 type signature that it needs.
a2ce51a0
DE
4871 We only do this for .gdb_index because in the psymtab case we already have
4872 to read all the DWOs to build the type unit groups. */
4873
4874static struct signatured_type *
4875lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4876{
4877 struct objfile *objfile = dwarf2_per_objfile->objfile;
4878 struct dwo_file *dwo_file;
4879 struct dwo_unit find_dwo_entry, *dwo_entry;
4880 struct signatured_type find_sig_entry, *sig_entry;
6aa5f3a6 4881 void **slot;
a2ce51a0
DE
4882
4883 gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4884
6aa5f3a6
DE
4885 /* If TU skeletons have been removed then we may not have read in any
4886 TUs yet. */
4887 if (dwarf2_per_objfile->signatured_types == NULL)
4888 {
4889 dwarf2_per_objfile->signatured_types
4890 = allocate_signatured_type_table (objfile);
4891 }
a2ce51a0
DE
4892
4893 /* We only ever need to read in one copy of a signatured type.
6aa5f3a6
DE
4894 Use the global signatured_types array to do our own comdat-folding
4895 of types. If this is the first time we're reading this TU, and
4896 the TU has an entry in .gdb_index, replace the recorded data from
4897 .gdb_index with this TU. */
a2ce51a0 4898
a2ce51a0 4899 find_sig_entry.signature = sig;
6aa5f3a6
DE
4900 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4901 &find_sig_entry, INSERT);
4902 sig_entry = *slot;
7ee85ab1
DE
4903
4904 /* We can get here with the TU already read, *or* in the process of being
6aa5f3a6
DE
4905 read. Don't reassign the global entry to point to this DWO if that's
4906 the case. Also note that if the TU is already being read, it may not
4907 have come from a DWO, the program may be a mix of Fission-compiled
4908 code and non-Fission-compiled code. */
4909
4910 /* Have we already tried to read this TU?
4911 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
4912 needn't exist in the global table yet). */
4913 if (sig_entry != NULL && sig_entry->per_cu.tu_read)
a2ce51a0
DE
4914 return sig_entry;
4915
6aa5f3a6
DE
4916 /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
4917 dwo_unit of the TU itself. */
4918 dwo_file = cu->dwo_unit->dwo_file;
4919
a2ce51a0
DE
4920 /* Ok, this is the first time we're reading this TU. */
4921 if (dwo_file->tus == NULL)
4922 return NULL;
4923 find_dwo_entry.signature = sig;
4924 dwo_entry = htab_find (dwo_file->tus, &find_dwo_entry);
4925 if (dwo_entry == NULL)
4926 return NULL;
4927
6aa5f3a6
DE
4928 /* If the global table doesn't have an entry for this TU, add one. */
4929 if (sig_entry == NULL)
4930 sig_entry = add_type_unit (sig, slot);
4931
a2ce51a0 4932 fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
89e63ee4 4933 sig_entry->per_cu.tu_read = 1;
a2ce51a0
DE
4934 return sig_entry;
4935}
4936
a2ce51a0
DE
4937/* Subroutine of lookup_signatured_type.
4938 Look up the type for signature SIG, and if we can't find SIG in .gdb_index
6aa5f3a6
DE
4939 then try the DWP file. If the TU stub (skeleton) has been removed then
4940 it won't be in .gdb_index. */
a2ce51a0
DE
4941
4942static struct signatured_type *
4943lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4944{
4945 struct objfile *objfile = dwarf2_per_objfile->objfile;
4946 struct dwp_file *dwp_file = get_dwp_file ();
4947 struct dwo_unit *dwo_entry;
4948 struct signatured_type find_sig_entry, *sig_entry;
6aa5f3a6 4949 void **slot;
a2ce51a0
DE
4950
4951 gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4952 gdb_assert (dwp_file != NULL);
4953
6aa5f3a6
DE
4954 /* If TU skeletons have been removed then we may not have read in any
4955 TUs yet. */
4956 if (dwarf2_per_objfile->signatured_types == NULL)
a2ce51a0 4957 {
6aa5f3a6
DE
4958 dwarf2_per_objfile->signatured_types
4959 = allocate_signatured_type_table (objfile);
a2ce51a0
DE
4960 }
4961
6aa5f3a6
DE
4962 find_sig_entry.signature = sig;
4963 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4964 &find_sig_entry, INSERT);
4965 sig_entry = *slot;
4966
4967 /* Have we already tried to read this TU?
4968 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
4969 needn't exist in the global table yet). */
4970 if (sig_entry != NULL)
4971 return sig_entry;
4972
a2ce51a0
DE
4973 if (dwp_file->tus == NULL)
4974 return NULL;
57d63ce2
DE
4975 dwo_entry = lookup_dwo_unit_in_dwp (dwp_file, NULL,
4976 sig, 1 /* is_debug_types */);
a2ce51a0
DE
4977 if (dwo_entry == NULL)
4978 return NULL;
4979
6aa5f3a6 4980 sig_entry = add_type_unit (sig, slot);
a2ce51a0
DE
4981 fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
4982
a2ce51a0
DE
4983 return sig_entry;
4984}
4985
380bca97 4986/* Lookup a signature based type for DW_FORM_ref_sig8.
5a8b3f62
DE
4987 Returns NULL if signature SIG is not present in the table.
4988 It is up to the caller to complain about this. */
348e048f
DE
4989
4990static struct signatured_type *
a2ce51a0 4991lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
348e048f 4992{
a2ce51a0
DE
4993 if (cu->dwo_unit
4994 && dwarf2_per_objfile->using_index)
4995 {
4996 /* We're in a DWO/DWP file, and we're using .gdb_index.
4997 These cases require special processing. */
4998 if (get_dwp_file () == NULL)
4999 return lookup_dwo_signatured_type (cu, sig);
5000 else
5001 return lookup_dwp_signatured_type (cu, sig);
5002 }
5003 else
5004 {
5005 struct signatured_type find_entry, *entry;
348e048f 5006
a2ce51a0
DE
5007 if (dwarf2_per_objfile->signatured_types == NULL)
5008 return NULL;
5009 find_entry.signature = sig;
5010 entry = htab_find (dwarf2_per_objfile->signatured_types, &find_entry);
5011 return entry;
5012 }
348e048f 5013}
42e7ad6c
DE
5014\f
5015/* Low level DIE reading support. */
348e048f 5016
d85a05f0
DJ
5017/* Initialize a die_reader_specs struct from a dwarf2_cu struct. */
5018
5019static void
5020init_cu_die_reader (struct die_reader_specs *reader,
dee91e82 5021 struct dwarf2_cu *cu,
3019eac3
DE
5022 struct dwarf2_section_info *section,
5023 struct dwo_file *dwo_file)
d85a05f0 5024{
fceca515 5025 gdb_assert (section->readin && section->buffer != NULL);
a32a8923 5026 reader->abfd = get_section_bfd_owner (section);
d85a05f0 5027 reader->cu = cu;
3019eac3 5028 reader->dwo_file = dwo_file;
dee91e82
DE
5029 reader->die_section = section;
5030 reader->buffer = section->buffer;
f664829e 5031 reader->buffer_end = section->buffer + section->size;
a2ce51a0 5032 reader->comp_dir = NULL;
d85a05f0
DJ
5033}
5034
b0c7bfa9
DE
5035/* Subroutine of init_cutu_and_read_dies to simplify it.
5036 Read in the rest of a CU/TU top level DIE from DWO_UNIT.
5037 There's just a lot of work to do, and init_cutu_and_read_dies is big enough
5038 already.
5039
5040 STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
5041 from it to the DIE in the DWO. If NULL we are skipping the stub.
a2ce51a0
DE
5042 STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
5043 from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
c54a1dd8
DE
5044 attribute of the referencing CU. At most one of STUB_COMP_UNIT_DIE and
5045 STUB_COMP_DIR may be non-NULL.
b0c7bfa9
DE
5046 *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
5047 are filled in with the info of the DIE from the DWO file.
5048 ABBREV_TABLE_PROVIDED is non-zero if the caller of init_cutu_and_read_dies
5049 provided an abbrev table to use.
5050 The result is non-zero if a valid (non-dummy) DIE was found. */
5051
5052static int
5053read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
5054 struct dwo_unit *dwo_unit,
5055 int abbrev_table_provided,
5056 struct die_info *stub_comp_unit_die,
a2ce51a0 5057 const char *stub_comp_dir,
b0c7bfa9 5058 struct die_reader_specs *result_reader,
d521ce57 5059 const gdb_byte **result_info_ptr,
b0c7bfa9
DE
5060 struct die_info **result_comp_unit_die,
5061 int *result_has_children)
5062{
5063 struct objfile *objfile = dwarf2_per_objfile->objfile;
5064 struct dwarf2_cu *cu = this_cu->cu;
5065 struct dwarf2_section_info *section;
5066 bfd *abfd;
d521ce57 5067 const gdb_byte *begin_info_ptr, *info_ptr;
b0c7bfa9
DE
5068 ULONGEST signature; /* Or dwo_id. */
5069 struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
5070 int i,num_extra_attrs;
5071 struct dwarf2_section_info *dwo_abbrev_section;
5072 struct attribute *attr;
5073 struct die_info *comp_unit_die;
5074
b0aeadb3
DE
5075 /* At most one of these may be provided. */
5076 gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
a2ce51a0 5077
b0c7bfa9
DE
5078 /* These attributes aren't processed until later:
5079 DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
0d60c288
DE
5080 DW_AT_comp_dir is used now, to find the DWO file, but it is also
5081 referenced later. However, these attributes are found in the stub
5082 which we won't have later. In order to not impose this complication
5083 on the rest of the code, we read them here and copy them to the
5084 DWO CU/TU die. */
b0c7bfa9
DE
5085
5086 stmt_list = NULL;
5087 low_pc = NULL;
5088 high_pc = NULL;
5089 ranges = NULL;
5090 comp_dir = NULL;
5091
5092 if (stub_comp_unit_die != NULL)
5093 {
5094 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
5095 DWO file. */
5096 if (! this_cu->is_debug_types)
5097 stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
5098 low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
5099 high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
5100 ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
5101 comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
5102
5103 /* There should be a DW_AT_addr_base attribute here (if needed).
5104 We need the value before we can process DW_FORM_GNU_addr_index. */
5105 cu->addr_base = 0;
5106 attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
5107 if (attr)
5108 cu->addr_base = DW_UNSND (attr);
5109
5110 /* There should be a DW_AT_ranges_base attribute here (if needed).
5111 We need the value before we can process DW_AT_ranges. */
5112 cu->ranges_base = 0;
5113 attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
5114 if (attr)
5115 cu->ranges_base = DW_UNSND (attr);
5116 }
a2ce51a0
DE
5117 else if (stub_comp_dir != NULL)
5118 {
5119 /* Reconstruct the comp_dir attribute to simplify the code below. */
5120 comp_dir = (struct attribute *)
5121 obstack_alloc (&cu->comp_unit_obstack, sizeof (*comp_dir));
5122 comp_dir->name = DW_AT_comp_dir;
5123 comp_dir->form = DW_FORM_string;
5124 DW_STRING_IS_CANONICAL (comp_dir) = 0;
5125 DW_STRING (comp_dir) = stub_comp_dir;
5126 }
b0c7bfa9
DE
5127
5128 /* Set up for reading the DWO CU/TU. */
5129 cu->dwo_unit = dwo_unit;
5130 section = dwo_unit->section;
5131 dwarf2_read_section (objfile, section);
a32a8923 5132 abfd = get_section_bfd_owner (section);
b0c7bfa9
DE
5133 begin_info_ptr = info_ptr = section->buffer + dwo_unit->offset.sect_off;
5134 dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
5135 init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file);
5136
5137 if (this_cu->is_debug_types)
5138 {
5139 ULONGEST header_signature;
5140 cu_offset type_offset_in_tu;
5141 struct signatured_type *sig_type = (struct signatured_type *) this_cu;
5142
5143 info_ptr = read_and_check_type_unit_head (&cu->header, section,
5144 dwo_abbrev_section,
5145 info_ptr,
5146 &header_signature,
5147 &type_offset_in_tu);
a2ce51a0
DE
5148 /* This is not an assert because it can be caused by bad debug info. */
5149 if (sig_type->signature != header_signature)
5150 {
5151 error (_("Dwarf Error: signature mismatch %s vs %s while reading"
5152 " TU at offset 0x%x [in module %s]"),
5153 hex_string (sig_type->signature),
5154 hex_string (header_signature),
5155 dwo_unit->offset.sect_off,
5156 bfd_get_filename (abfd));
5157 }
b0c7bfa9
DE
5158 gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5159 /* For DWOs coming from DWP files, we don't know the CU length
5160 nor the type's offset in the TU until now. */
5161 dwo_unit->length = get_cu_length (&cu->header);
5162 dwo_unit->type_offset_in_tu = type_offset_in_tu;
5163
5164 /* Establish the type offset that can be used to lookup the type.
5165 For DWO files, we don't know it until now. */
5166 sig_type->type_offset_in_section.sect_off =
5167 dwo_unit->offset.sect_off + dwo_unit->type_offset_in_tu.cu_off;
5168 }
5169 else
5170 {
5171 info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5172 dwo_abbrev_section,
5173 info_ptr, 0);
5174 gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5175 /* For DWOs coming from DWP files, we don't know the CU length
5176 until now. */
5177 dwo_unit->length = get_cu_length (&cu->header);
5178 }
5179
02142a6c
DE
5180 /* Replace the CU's original abbrev table with the DWO's.
5181 Reminder: We can't read the abbrev table until we've read the header. */
b0c7bfa9
DE
5182 if (abbrev_table_provided)
5183 {
5184 /* Don't free the provided abbrev table, the caller of
5185 init_cutu_and_read_dies owns it. */
5186 dwarf2_read_abbrevs (cu, dwo_abbrev_section);
02142a6c 5187 /* Ensure the DWO abbrev table gets freed. */
b0c7bfa9
DE
5188 make_cleanup (dwarf2_free_abbrev_table, cu);
5189 }
5190 else
5191 {
5192 dwarf2_free_abbrev_table (cu);
5193 dwarf2_read_abbrevs (cu, dwo_abbrev_section);
02142a6c 5194 /* Leave any existing abbrev table cleanup as is. */
b0c7bfa9
DE
5195 }
5196
5197 /* Read in the die, but leave space to copy over the attributes
5198 from the stub. This has the benefit of simplifying the rest of
5199 the code - all the work to maintain the illusion of a single
5200 DW_TAG_{compile,type}_unit DIE is done here. */
5201 num_extra_attrs = ((stmt_list != NULL)
5202 + (low_pc != NULL)
5203 + (high_pc != NULL)
5204 + (ranges != NULL)
5205 + (comp_dir != NULL));
5206 info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
5207 result_has_children, num_extra_attrs);
5208
5209 /* Copy over the attributes from the stub to the DIE we just read in. */
5210 comp_unit_die = *result_comp_unit_die;
5211 i = comp_unit_die->num_attrs;
5212 if (stmt_list != NULL)
5213 comp_unit_die->attrs[i++] = *stmt_list;
5214 if (low_pc != NULL)
5215 comp_unit_die->attrs[i++] = *low_pc;
5216 if (high_pc != NULL)
5217 comp_unit_die->attrs[i++] = *high_pc;
5218 if (ranges != NULL)
5219 comp_unit_die->attrs[i++] = *ranges;
5220 if (comp_dir != NULL)
5221 comp_unit_die->attrs[i++] = *comp_dir;
5222 comp_unit_die->num_attrs += num_extra_attrs;
5223
b4f54984 5224 if (dwarf_die_debug)
bf6af496
DE
5225 {
5226 fprintf_unfiltered (gdb_stdlog,
5227 "Read die from %s@0x%x of %s:\n",
a32a8923 5228 get_section_name (section),
bf6af496
DE
5229 (unsigned) (begin_info_ptr - section->buffer),
5230 bfd_get_filename (abfd));
b4f54984 5231 dump_die (comp_unit_die, dwarf_die_debug);
bf6af496
DE
5232 }
5233
a2ce51a0
DE
5234 /* Save the comp_dir attribute. If there is no DWP file then we'll read
5235 TUs by skipping the stub and going directly to the entry in the DWO file.
5236 However, skipping the stub means we won't get DW_AT_comp_dir, so we have
5237 to get it via circuitous means. Blech. */
5238 if (comp_dir != NULL)
5239 result_reader->comp_dir = DW_STRING (comp_dir);
5240
b0c7bfa9
DE
5241 /* Skip dummy compilation units. */
5242 if (info_ptr >= begin_info_ptr + dwo_unit->length
5243 || peek_abbrev_code (abfd, info_ptr) == 0)
5244 return 0;
5245
5246 *result_info_ptr = info_ptr;
5247 return 1;
5248}
5249
5250/* Subroutine of init_cutu_and_read_dies to simplify it.
5251 Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
6a506a2d 5252 Returns NULL if the specified DWO unit cannot be found. */
b0c7bfa9
DE
5253
5254static struct dwo_unit *
5255lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
5256 struct die_info *comp_unit_die)
5257{
5258 struct dwarf2_cu *cu = this_cu->cu;
5259 struct attribute *attr;
5260 ULONGEST signature;
5261 struct dwo_unit *dwo_unit;
5262 const char *comp_dir, *dwo_name;
5263
a2ce51a0
DE
5264 gdb_assert (cu != NULL);
5265
b0c7bfa9
DE
5266 /* Yeah, we look dwo_name up again, but it simplifies the code. */
5267 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5268 gdb_assert (attr != NULL);
5269 dwo_name = DW_STRING (attr);
5270 comp_dir = NULL;
5271 attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
5272 if (attr)
5273 comp_dir = DW_STRING (attr);
5274
5275 if (this_cu->is_debug_types)
5276 {
5277 struct signatured_type *sig_type;
5278
5279 /* Since this_cu is the first member of struct signatured_type,
5280 we can go from a pointer to one to a pointer to the other. */
5281 sig_type = (struct signatured_type *) this_cu;
5282 signature = sig_type->signature;
5283 dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
5284 }
5285 else
5286 {
5287 struct attribute *attr;
5288
5289 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
5290 if (! attr)
5291 error (_("Dwarf Error: missing dwo_id for dwo_name %s"
5292 " [in module %s]"),
4262abfb 5293 dwo_name, objfile_name (this_cu->objfile));
b0c7bfa9
DE
5294 signature = DW_UNSND (attr);
5295 dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
5296 signature);
5297 }
5298
b0c7bfa9
DE
5299 return dwo_unit;
5300}
5301
a2ce51a0 5302/* Subroutine of init_cutu_and_read_dies to simplify it.
6aa5f3a6
DE
5303 See it for a description of the parameters.
5304 Read a TU directly from a DWO file, bypassing the stub.
5305
5306 Note: This function could be a little bit simpler if we shared cleanups
5307 with our caller, init_cutu_and_read_dies. That's generally a fragile thing
5308 to do, so we keep this function self-contained. Or we could move this
5309 into our caller, but it's complex enough already. */
a2ce51a0
DE
5310
5311static void
6aa5f3a6
DE
5312init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
5313 int use_existing_cu, int keep,
a2ce51a0
DE
5314 die_reader_func_ftype *die_reader_func,
5315 void *data)
5316{
5317 struct dwarf2_cu *cu;
5318 struct signatured_type *sig_type;
6aa5f3a6 5319 struct cleanup *cleanups, *free_cu_cleanup = NULL;
a2ce51a0
DE
5320 struct die_reader_specs reader;
5321 const gdb_byte *info_ptr;
5322 struct die_info *comp_unit_die;
5323 int has_children;
5324
5325 /* Verify we can do the following downcast, and that we have the
5326 data we need. */
5327 gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
5328 sig_type = (struct signatured_type *) this_cu;
5329 gdb_assert (sig_type->dwo_unit != NULL);
5330
5331 cleanups = make_cleanup (null_cleanup, NULL);
5332
6aa5f3a6
DE
5333 if (use_existing_cu && this_cu->cu != NULL)
5334 {
5335 gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
5336 cu = this_cu->cu;
5337 /* There's no need to do the rereading_dwo_cu handling that
5338 init_cutu_and_read_dies does since we don't read the stub. */
5339 }
5340 else
5341 {
5342 /* If !use_existing_cu, this_cu->cu must be NULL. */
5343 gdb_assert (this_cu->cu == NULL);
5344 cu = xmalloc (sizeof (*cu));
5345 init_one_comp_unit (cu, this_cu);
5346 /* If an error occurs while loading, release our storage. */
5347 free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5348 }
5349
5350 /* A future optimization, if needed, would be to use an existing
5351 abbrev table. When reading DWOs with skeletonless TUs, all the TUs
5352 could share abbrev tables. */
a2ce51a0
DE
5353
5354 if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
5355 0 /* abbrev_table_provided */,
5356 NULL /* stub_comp_unit_die */,
5357 sig_type->dwo_unit->dwo_file->comp_dir,
5358 &reader, &info_ptr,
5359 &comp_unit_die, &has_children) == 0)
5360 {
5361 /* Dummy die. */
5362 do_cleanups (cleanups);
5363 return;
5364 }
5365
5366 /* All the "real" work is done here. */
5367 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5368
6aa5f3a6 5369 /* This duplicates the code in init_cutu_and_read_dies,
a2ce51a0
DE
5370 but the alternative is making the latter more complex.
5371 This function is only for the special case of using DWO files directly:
5372 no point in overly complicating the general case just to handle this. */
6aa5f3a6 5373 if (free_cu_cleanup != NULL)
a2ce51a0 5374 {
6aa5f3a6
DE
5375 if (keep)
5376 {
5377 /* We've successfully allocated this compilation unit. Let our
5378 caller clean it up when finished with it. */
5379 discard_cleanups (free_cu_cleanup);
a2ce51a0 5380
6aa5f3a6
DE
5381 /* We can only discard free_cu_cleanup and all subsequent cleanups.
5382 So we have to manually free the abbrev table. */
5383 dwarf2_free_abbrev_table (cu);
a2ce51a0 5384
6aa5f3a6
DE
5385 /* Link this CU into read_in_chain. */
5386 this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5387 dwarf2_per_objfile->read_in_chain = this_cu;
5388 }
5389 else
5390 do_cleanups (free_cu_cleanup);
a2ce51a0 5391 }
a2ce51a0
DE
5392
5393 do_cleanups (cleanups);
5394}
5395
fd820528 5396/* Initialize a CU (or TU) and read its DIEs.
3019eac3 5397 If the CU defers to a DWO file, read the DWO file as well.
dee91e82 5398
f4dc4d17
DE
5399 ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
5400 Otherwise the table specified in the comp unit header is read in and used.
5401 This is an optimization for when we already have the abbrev table.
5402
dee91e82
DE
5403 If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
5404 Otherwise, a new CU is allocated with xmalloc.
5405
5406 If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
5407 read_in_chain. Otherwise the dwarf2_cu data is freed at the end.
5408
5409 WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
fd820528 5410 linker) then DIE_READER_FUNC will not get called. */
aaa75496 5411
70221824 5412static void
fd820528 5413init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
f4dc4d17 5414 struct abbrev_table *abbrev_table,
fd820528
DE
5415 int use_existing_cu, int keep,
5416 die_reader_func_ftype *die_reader_func,
5417 void *data)
c906108c 5418{
dee91e82 5419 struct objfile *objfile = dwarf2_per_objfile->objfile;
8a0459fd 5420 struct dwarf2_section_info *section = this_cu->section;
a32a8923 5421 bfd *abfd = get_section_bfd_owner (section);
dee91e82 5422 struct dwarf2_cu *cu;
d521ce57 5423 const gdb_byte *begin_info_ptr, *info_ptr;
dee91e82 5424 struct die_reader_specs reader;
d85a05f0 5425 struct die_info *comp_unit_die;
dee91e82 5426 int has_children;
d85a05f0 5427 struct attribute *attr;
365156ad 5428 struct cleanup *cleanups, *free_cu_cleanup = NULL;
dee91e82 5429 struct signatured_type *sig_type = NULL;
4bdcc0c1 5430 struct dwarf2_section_info *abbrev_section;
42e7ad6c
DE
5431 /* Non-zero if CU currently points to a DWO file and we need to
5432 reread it. When this happens we need to reread the skeleton die
a2ce51a0 5433 before we can reread the DWO file (this only applies to CUs, not TUs). */
42e7ad6c 5434 int rereading_dwo_cu = 0;
c906108c 5435
b4f54984 5436 if (dwarf_die_debug)
09406207
DE
5437 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5438 this_cu->is_debug_types ? "type" : "comp",
5439 this_cu->offset.sect_off);
5440
dee91e82
DE
5441 if (use_existing_cu)
5442 gdb_assert (keep);
23745b47 5443
a2ce51a0
DE
5444 /* If we're reading a TU directly from a DWO file, including a virtual DWO
5445 file (instead of going through the stub), short-circuit all of this. */
5446 if (this_cu->reading_dwo_directly)
5447 {
5448 /* Narrow down the scope of possibilities to have to understand. */
5449 gdb_assert (this_cu->is_debug_types);
5450 gdb_assert (abbrev_table == NULL);
6aa5f3a6
DE
5451 init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
5452 die_reader_func, data);
a2ce51a0
DE
5453 return;
5454 }
5455
dee91e82
DE
5456 cleanups = make_cleanup (null_cleanup, NULL);
5457
5458 /* This is cheap if the section is already read in. */
5459 dwarf2_read_section (objfile, section);
5460
5461 begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
36586728
TT
5462
5463 abbrev_section = get_abbrev_section_for_cu (this_cu);
dee91e82
DE
5464
5465 if (use_existing_cu && this_cu->cu != NULL)
5466 {
5467 cu = this_cu->cu;
42e7ad6c
DE
5468 /* If this CU is from a DWO file we need to start over, we need to
5469 refetch the attributes from the skeleton CU.
5470 This could be optimized by retrieving those attributes from when we
5471 were here the first time: the previous comp_unit_die was stored in
5472 comp_unit_obstack. But there's no data yet that we need this
5473 optimization. */
5474 if (cu->dwo_unit != NULL)
5475 rereading_dwo_cu = 1;
dee91e82
DE
5476 }
5477 else
5478 {
5479 /* If !use_existing_cu, this_cu->cu must be NULL. */
5480 gdb_assert (this_cu->cu == NULL);
dee91e82
DE
5481 cu = xmalloc (sizeof (*cu));
5482 init_one_comp_unit (cu, this_cu);
dee91e82 5483 /* If an error occurs while loading, release our storage. */
365156ad 5484 free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
42e7ad6c 5485 }
dee91e82 5486
b0c7bfa9 5487 /* Get the header. */
42e7ad6c
DE
5488 if (cu->header.first_die_offset.cu_off != 0 && ! rereading_dwo_cu)
5489 {
5490 /* We already have the header, there's no need to read it in again. */
5491 info_ptr += cu->header.first_die_offset.cu_off;
5492 }
5493 else
5494 {
3019eac3 5495 if (this_cu->is_debug_types)
dee91e82
DE
5496 {
5497 ULONGEST signature;
42e7ad6c 5498 cu_offset type_offset_in_tu;
dee91e82 5499
4bdcc0c1
DE
5500 info_ptr = read_and_check_type_unit_head (&cu->header, section,
5501 abbrev_section, info_ptr,
42e7ad6c
DE
5502 &signature,
5503 &type_offset_in_tu);
dee91e82 5504
42e7ad6c
DE
5505 /* Since per_cu is the first member of struct signatured_type,
5506 we can go from a pointer to one to a pointer to the other. */
5507 sig_type = (struct signatured_type *) this_cu;
5508 gdb_assert (sig_type->signature == signature);
5509 gdb_assert (sig_type->type_offset_in_tu.cu_off
5510 == type_offset_in_tu.cu_off);
dee91e82
DE
5511 gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5512
42e7ad6c
DE
5513 /* LENGTH has not been set yet for type units if we're
5514 using .gdb_index. */
1ce1cefd 5515 this_cu->length = get_cu_length (&cu->header);
3019eac3
DE
5516
5517 /* Establish the type offset that can be used to lookup the type. */
5518 sig_type->type_offset_in_section.sect_off =
5519 this_cu->offset.sect_off + sig_type->type_offset_in_tu.cu_off;
dee91e82
DE
5520 }
5521 else
5522 {
4bdcc0c1
DE
5523 info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5524 abbrev_section,
5525 info_ptr, 0);
dee91e82
DE
5526
5527 gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
1ce1cefd 5528 gdb_assert (this_cu->length == get_cu_length (&cu->header));
dee91e82
DE
5529 }
5530 }
10b3939b 5531
6caca83c 5532 /* Skip dummy compilation units. */
dee91e82 5533 if (info_ptr >= begin_info_ptr + this_cu->length
6caca83c
CC
5534 || peek_abbrev_code (abfd, info_ptr) == 0)
5535 {
dee91e82 5536 do_cleanups (cleanups);
21b2bd31 5537 return;
6caca83c
CC
5538 }
5539
433df2d4
DE
5540 /* If we don't have them yet, read the abbrevs for this compilation unit.
5541 And if we need to read them now, make sure they're freed when we're
42e7ad6c
DE
5542 done. Note that it's important that if the CU had an abbrev table
5543 on entry we don't free it when we're done: Somewhere up the call stack
5544 it may be in use. */
f4dc4d17
DE
5545 if (abbrev_table != NULL)
5546 {
5547 gdb_assert (cu->abbrev_table == NULL);
5548 gdb_assert (cu->header.abbrev_offset.sect_off
5549 == abbrev_table->offset.sect_off);
5550 cu->abbrev_table = abbrev_table;
5551 }
5552 else if (cu->abbrev_table == NULL)
dee91e82 5553 {
4bdcc0c1 5554 dwarf2_read_abbrevs (cu, abbrev_section);
dee91e82
DE
5555 make_cleanup (dwarf2_free_abbrev_table, cu);
5556 }
42e7ad6c
DE
5557 else if (rereading_dwo_cu)
5558 {
5559 dwarf2_free_abbrev_table (cu);
5560 dwarf2_read_abbrevs (cu, abbrev_section);
5561 }
af703f96 5562
dee91e82 5563 /* Read the top level CU/TU die. */
3019eac3 5564 init_cu_die_reader (&reader, cu, section, NULL);
dee91e82 5565 info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
93311388 5566
b0c7bfa9
DE
5567 /* If we are in a DWO stub, process it and then read in the "real" CU/TU
5568 from the DWO file.
5569 Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
5570 DWO CU, that this test will fail (the attribute will not be present). */
3019eac3
DE
5571 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5572 if (attr)
5573 {
3019eac3 5574 struct dwo_unit *dwo_unit;
b0c7bfa9 5575 struct die_info *dwo_comp_unit_die;
3019eac3
DE
5576
5577 if (has_children)
6a506a2d
DE
5578 {
5579 complaint (&symfile_complaints,
5580 _("compilation unit with DW_AT_GNU_dwo_name"
5581 " has children (offset 0x%x) [in module %s]"),
5582 this_cu->offset.sect_off, bfd_get_filename (abfd));
5583 }
b0c7bfa9 5584 dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
6a506a2d 5585 if (dwo_unit != NULL)
3019eac3 5586 {
6a506a2d
DE
5587 if (read_cutu_die_from_dwo (this_cu, dwo_unit,
5588 abbrev_table != NULL,
a2ce51a0 5589 comp_unit_die, NULL,
6a506a2d
DE
5590 &reader, &info_ptr,
5591 &dwo_comp_unit_die, &has_children) == 0)
5592 {
5593 /* Dummy die. */
5594 do_cleanups (cleanups);
5595 return;
5596 }
5597 comp_unit_die = dwo_comp_unit_die;
5598 }
5599 else
5600 {
5601 /* Yikes, we couldn't find the rest of the DIE, we only have
5602 the stub. A complaint has already been logged. There's
5603 not much more we can do except pass on the stub DIE to
5604 die_reader_func. We don't want to throw an error on bad
5605 debug info. */
3019eac3
DE
5606 }
5607 }
5608
b0c7bfa9 5609 /* All of the above is setup for this call. Yikes. */
dee91e82
DE
5610 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5611
b0c7bfa9 5612 /* Done, clean up. */
365156ad 5613 if (free_cu_cleanup != NULL)
348e048f 5614 {
365156ad
TT
5615 if (keep)
5616 {
5617 /* We've successfully allocated this compilation unit. Let our
5618 caller clean it up when finished with it. */
5619 discard_cleanups (free_cu_cleanup);
dee91e82 5620
365156ad
TT
5621 /* We can only discard free_cu_cleanup and all subsequent cleanups.
5622 So we have to manually free the abbrev table. */
5623 dwarf2_free_abbrev_table (cu);
dee91e82 5624
365156ad
TT
5625 /* Link this CU into read_in_chain. */
5626 this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5627 dwarf2_per_objfile->read_in_chain = this_cu;
5628 }
5629 else
5630 do_cleanups (free_cu_cleanup);
348e048f 5631 }
365156ad
TT
5632
5633 do_cleanups (cleanups);
dee91e82
DE
5634}
5635
33e80786
DE
5636/* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
5637 DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
5638 to have already done the lookup to find the DWO file).
dee91e82
DE
5639
5640 The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
3019eac3 5641 THIS_CU->is_debug_types, but nothing else.
dee91e82
DE
5642
5643 We fill in THIS_CU->length.
5644
5645 WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5646 linker) then DIE_READER_FUNC will not get called.
5647
5648 THIS_CU->cu is always freed when done.
3019eac3
DE
5649 This is done in order to not leave THIS_CU->cu in a state where we have
5650 to care whether it refers to the "main" CU or the DWO CU. */
dee91e82
DE
5651
5652static void
5653init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
3019eac3 5654 struct dwo_file *dwo_file,
dee91e82
DE
5655 die_reader_func_ftype *die_reader_func,
5656 void *data)
5657{
5658 struct objfile *objfile = dwarf2_per_objfile->objfile;
8a0459fd 5659 struct dwarf2_section_info *section = this_cu->section;
a32a8923 5660 bfd *abfd = get_section_bfd_owner (section);
33e80786 5661 struct dwarf2_section_info *abbrev_section;
dee91e82 5662 struct dwarf2_cu cu;
d521ce57 5663 const gdb_byte *begin_info_ptr, *info_ptr;
dee91e82
DE
5664 struct die_reader_specs reader;
5665 struct cleanup *cleanups;
5666 struct die_info *comp_unit_die;
5667 int has_children;
5668
b4f54984 5669 if (dwarf_die_debug)
09406207
DE
5670 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5671 this_cu->is_debug_types ? "type" : "comp",
5672 this_cu->offset.sect_off);
5673
dee91e82
DE
5674 gdb_assert (this_cu->cu == NULL);
5675
33e80786
DE
5676 abbrev_section = (dwo_file != NULL
5677 ? &dwo_file->sections.abbrev
5678 : get_abbrev_section_for_cu (this_cu));
5679
dee91e82
DE
5680 /* This is cheap if the section is already read in. */
5681 dwarf2_read_section (objfile, section);
5682
5683 init_one_comp_unit (&cu, this_cu);
5684
5685 cleanups = make_cleanup (free_stack_comp_unit, &cu);
5686
5687 begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
4bdcc0c1
DE
5688 info_ptr = read_and_check_comp_unit_head (&cu.header, section,
5689 abbrev_section, info_ptr,
3019eac3 5690 this_cu->is_debug_types);
dee91e82 5691
1ce1cefd 5692 this_cu->length = get_cu_length (&cu.header);
dee91e82
DE
5693
5694 /* Skip dummy compilation units. */
5695 if (info_ptr >= begin_info_ptr + this_cu->length
5696 || peek_abbrev_code (abfd, info_ptr) == 0)
c906108c 5697 {
dee91e82 5698 do_cleanups (cleanups);
21b2bd31 5699 return;
93311388 5700 }
72bf9492 5701
dee91e82
DE
5702 dwarf2_read_abbrevs (&cu, abbrev_section);
5703 make_cleanup (dwarf2_free_abbrev_table, &cu);
5704
3019eac3 5705 init_cu_die_reader (&reader, &cu, section, dwo_file);
dee91e82
DE
5706 info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5707
5708 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5709
5710 do_cleanups (cleanups);
5711}
5712
3019eac3
DE
5713/* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
5714 does not lookup the specified DWO file.
5715 This cannot be used to read DWO files.
dee91e82
DE
5716
5717 THIS_CU->cu is always freed when done.
3019eac3
DE
5718 This is done in order to not leave THIS_CU->cu in a state where we have
5719 to care whether it refers to the "main" CU or the DWO CU.
5720 We can revisit this if the data shows there's a performance issue. */
dee91e82
DE
5721
5722static void
5723init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
5724 die_reader_func_ftype *die_reader_func,
5725 void *data)
5726{
33e80786 5727 init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
dee91e82 5728}
0018ea6f
DE
5729\f
5730/* Type Unit Groups.
dee91e82 5731
0018ea6f
DE
5732 Type Unit Groups are a way to collapse the set of all TUs (type units) into
5733 a more manageable set. The grouping is done by DW_AT_stmt_list entry
5734 so that all types coming from the same compilation (.o file) are grouped
5735 together. A future step could be to put the types in the same symtab as
5736 the CU the types ultimately came from. */
ff013f42 5737
f4dc4d17
DE
5738static hashval_t
5739hash_type_unit_group (const void *item)
5740{
094b34ac 5741 const struct type_unit_group *tu_group = item;
f4dc4d17 5742
094b34ac 5743 return hash_stmt_list_entry (&tu_group->hash);
f4dc4d17 5744}
348e048f
DE
5745
5746static int
f4dc4d17 5747eq_type_unit_group (const void *item_lhs, const void *item_rhs)
348e048f 5748{
f4dc4d17
DE
5749 const struct type_unit_group *lhs = item_lhs;
5750 const struct type_unit_group *rhs = item_rhs;
348e048f 5751
094b34ac 5752 return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
f4dc4d17 5753}
348e048f 5754
f4dc4d17
DE
5755/* Allocate a hash table for type unit groups. */
5756
5757static htab_t
5758allocate_type_unit_groups_table (void)
5759{
5760 return htab_create_alloc_ex (3,
5761 hash_type_unit_group,
5762 eq_type_unit_group,
5763 NULL,
5764 &dwarf2_per_objfile->objfile->objfile_obstack,
5765 hashtab_obstack_allocate,
5766 dummy_obstack_deallocate);
5767}
dee91e82 5768
f4dc4d17
DE
5769/* Type units that don't have DW_AT_stmt_list are grouped into their own
5770 partial symtabs. We combine several TUs per psymtab to not let the size
5771 of any one psymtab grow too big. */
5772#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
5773#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
dee91e82 5774
094b34ac 5775/* Helper routine for get_type_unit_group.
f4dc4d17
DE
5776 Create the type_unit_group object used to hold one or more TUs. */
5777
5778static struct type_unit_group *
094b34ac 5779create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
f4dc4d17
DE
5780{
5781 struct objfile *objfile = dwarf2_per_objfile->objfile;
094b34ac 5782 struct dwarf2_per_cu_data *per_cu;
f4dc4d17 5783 struct type_unit_group *tu_group;
f4dc4d17
DE
5784
5785 tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5786 struct type_unit_group);
094b34ac 5787 per_cu = &tu_group->per_cu;
f4dc4d17 5788 per_cu->objfile = objfile;
f4dc4d17 5789
094b34ac
DE
5790 if (dwarf2_per_objfile->using_index)
5791 {
5792 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5793 struct dwarf2_per_cu_quick_data);
094b34ac
DE
5794 }
5795 else
5796 {
5797 unsigned int line_offset = line_offset_struct.sect_off;
5798 struct partial_symtab *pst;
5799 char *name;
5800
5801 /* Give the symtab a useful name for debug purposes. */
5802 if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
5803 name = xstrprintf ("<type_units_%d>",
5804 (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
5805 else
5806 name = xstrprintf ("<type_units_at_0x%x>", line_offset);
5807
5808 pst = create_partial_symtab (per_cu, name);
5809 pst->anonymous = 1;
f4dc4d17 5810
094b34ac
DE
5811 xfree (name);
5812 }
f4dc4d17 5813
094b34ac
DE
5814 tu_group->hash.dwo_unit = cu->dwo_unit;
5815 tu_group->hash.line_offset = line_offset_struct;
f4dc4d17
DE
5816
5817 return tu_group;
5818}
5819
094b34ac
DE
5820/* Look up the type_unit_group for type unit CU, and create it if necessary.
5821 STMT_LIST is a DW_AT_stmt_list attribute. */
f4dc4d17
DE
5822
5823static struct type_unit_group *
ff39bb5e 5824get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
f4dc4d17
DE
5825{
5826 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
5827 struct type_unit_group *tu_group;
5828 void **slot;
5829 unsigned int line_offset;
5830 struct type_unit_group type_unit_group_for_lookup;
5831
5832 if (dwarf2_per_objfile->type_unit_groups == NULL)
5833 {
5834 dwarf2_per_objfile->type_unit_groups =
5835 allocate_type_unit_groups_table ();
5836 }
5837
5838 /* Do we need to create a new group, or can we use an existing one? */
5839
5840 if (stmt_list)
5841 {
5842 line_offset = DW_UNSND (stmt_list);
5843 ++tu_stats->nr_symtab_sharers;
5844 }
5845 else
5846 {
5847 /* Ugh, no stmt_list. Rare, but we have to handle it.
5848 We can do various things here like create one group per TU or
5849 spread them over multiple groups to split up the expansion work.
5850 To avoid worst case scenarios (too many groups or too large groups)
5851 we, umm, group them in bunches. */
5852 line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
5853 | (tu_stats->nr_stmt_less_type_units
5854 / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
5855 ++tu_stats->nr_stmt_less_type_units;
5856 }
5857
094b34ac
DE
5858 type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
5859 type_unit_group_for_lookup.hash.line_offset.sect_off = line_offset;
f4dc4d17
DE
5860 slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
5861 &type_unit_group_for_lookup, INSERT);
5862 if (*slot != NULL)
5863 {
5864 tu_group = *slot;
5865 gdb_assert (tu_group != NULL);
5866 }
5867 else
5868 {
5869 sect_offset line_offset_struct;
5870
5871 line_offset_struct.sect_off = line_offset;
094b34ac 5872 tu_group = create_type_unit_group (cu, line_offset_struct);
f4dc4d17
DE
5873 *slot = tu_group;
5874 ++tu_stats->nr_symtabs;
5875 }
5876
5877 return tu_group;
5878}
0018ea6f
DE
5879\f
5880/* Partial symbol tables. */
5881
5882/* Create a psymtab named NAME and assign it to PER_CU.
5883
5884 The caller must fill in the following details:
5885 dirname, textlow, texthigh. */
5886
5887static struct partial_symtab *
5888create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
5889{
5890 struct objfile *objfile = per_cu->objfile;
5891 struct partial_symtab *pst;
5892
5893 pst = start_psymtab_common (objfile, objfile->section_offsets,
5894 name, 0,
5895 objfile->global_psymbols.next,
5896 objfile->static_psymbols.next);
5897
5898 pst->psymtabs_addrmap_supported = 1;
5899
5900 /* This is the glue that links PST into GDB's symbol API. */
5901 pst->read_symtab_private = per_cu;
5902 pst->read_symtab = dwarf2_read_symtab;
5903 per_cu->v.psymtab = pst;
5904
5905 return pst;
5906}
5907
b93601f3
TT
5908/* The DATA object passed to process_psymtab_comp_unit_reader has this
5909 type. */
5910
5911struct process_psymtab_comp_unit_data
5912{
5913 /* True if we are reading a DW_TAG_partial_unit. */
5914
5915 int want_partial_unit;
5916
5917 /* The "pretend" language that is used if the CU doesn't declare a
5918 language. */
5919
5920 enum language pretend_language;
5921};
5922
0018ea6f
DE
5923/* die_reader_func for process_psymtab_comp_unit. */
5924
5925static void
5926process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 5927 const gdb_byte *info_ptr,
0018ea6f
DE
5928 struct die_info *comp_unit_die,
5929 int has_children,
5930 void *data)
5931{
5932 struct dwarf2_cu *cu = reader->cu;
5933 struct objfile *objfile = cu->objfile;
3e29f34a 5934 struct gdbarch *gdbarch = get_objfile_arch (objfile);
0018ea6f
DE
5935 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
5936 struct attribute *attr;
5937 CORE_ADDR baseaddr;
5938 CORE_ADDR best_lowpc = 0, best_highpc = 0;
5939 struct partial_symtab *pst;
5940 int has_pc_info;
5941 const char *filename;
b93601f3 5942 struct process_psymtab_comp_unit_data *info = data;
0018ea6f 5943
b93601f3 5944 if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
0018ea6f
DE
5945 return;
5946
5947 gdb_assert (! per_cu->is_debug_types);
5948
b93601f3 5949 prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
0018ea6f
DE
5950
5951 cu->list_in_scope = &file_symbols;
5952
5953 /* Allocate a new partial symbol table structure. */
5954 attr = dwarf2_attr (comp_unit_die, DW_AT_name, cu);
5955 if (attr == NULL || !DW_STRING (attr))
5956 filename = "";
5957 else
5958 filename = DW_STRING (attr);
5959
5960 pst = create_partial_symtab (per_cu, filename);
5961
5962 /* This must be done before calling dwarf2_build_include_psymtabs. */
5963 attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
5964 if (attr != NULL)
5965 pst->dirname = DW_STRING (attr);
5966
5967 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5968
5969 dwarf2_find_base_address (comp_unit_die, cu);
5970
5971 /* Possibly set the default values of LOWPC and HIGHPC from
5972 `DW_AT_ranges'. */
5973 has_pc_info = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
5974 &best_highpc, cu, pst);
5975 if (has_pc_info == 1 && best_lowpc < best_highpc)
5976 /* Store the contiguous range if it is not empty; it can be empty for
5977 CUs with no code. */
5978 addrmap_set_empty (objfile->psymtabs_addrmap,
3e29f34a
MR
5979 gdbarch_adjust_dwarf2_addr (gdbarch,
5980 best_lowpc + baseaddr),
5981 gdbarch_adjust_dwarf2_addr (gdbarch,
5982 best_highpc + baseaddr) - 1,
5983 pst);
0018ea6f
DE
5984
5985 /* Check if comp unit has_children.
5986 If so, read the rest of the partial symbols from this comp unit.
5987 If not, there's no more debug_info for this comp unit. */
5988 if (has_children)
5989 {
5990 struct partial_die_info *first_die;
5991 CORE_ADDR lowpc, highpc;
5992
5993 lowpc = ((CORE_ADDR) -1);
5994 highpc = ((CORE_ADDR) 0);
5995
5996 first_die = load_partial_dies (reader, info_ptr, 1);
5997
5998 scan_partial_symbols (first_die, &lowpc, &highpc,
5999 ! has_pc_info, cu);
6000
6001 /* If we didn't find a lowpc, set it to highpc to avoid
6002 complaints from `maint check'. */
6003 if (lowpc == ((CORE_ADDR) -1))
6004 lowpc = highpc;
6005
6006 /* If the compilation unit didn't have an explicit address range,
6007 then use the information extracted from its child dies. */
6008 if (! has_pc_info)
6009 {
6010 best_lowpc = lowpc;
6011 best_highpc = highpc;
6012 }
6013 }
3e29f34a
MR
6014 pst->textlow = gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr);
6015 pst->texthigh = gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr);
0018ea6f
DE
6016
6017 pst->n_global_syms = objfile->global_psymbols.next -
6018 (objfile->global_psymbols.list + pst->globals_offset);
6019 pst->n_static_syms = objfile->static_psymbols.next -
6020 (objfile->static_psymbols.list + pst->statics_offset);
6021 sort_pst_symbols (objfile, pst);
6022
6023 if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
6024 {
6025 int i;
6026 int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6027 struct dwarf2_per_cu_data *iter;
6028
6029 /* Fill in 'dependencies' here; we fill in 'users' in a
6030 post-pass. */
6031 pst->number_of_dependencies = len;
6032 pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
6033 len * sizeof (struct symtab *));
6034 for (i = 0;
6035 VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
6036 i, iter);
6037 ++i)
6038 pst->dependencies[i] = iter->v.psymtab;
6039
6040 VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6041 }
6042
6043 /* Get the list of files included in the current compilation unit,
6044 and build a psymtab for each of them. */
6045 dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
6046
b4f54984 6047 if (dwarf_read_debug)
0018ea6f
DE
6048 {
6049 struct gdbarch *gdbarch = get_objfile_arch (objfile);
6050
6051 fprintf_unfiltered (gdb_stdlog,
6052 "Psymtab for %s unit @0x%x: %s - %s"
6053 ", %d global, %d static syms\n",
6054 per_cu->is_debug_types ? "type" : "comp",
6055 per_cu->offset.sect_off,
6056 paddress (gdbarch, pst->textlow),
6057 paddress (gdbarch, pst->texthigh),
6058 pst->n_global_syms, pst->n_static_syms);
6059 }
6060}
6061
6062/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6063 Process compilation unit THIS_CU for a psymtab. */
6064
6065static void
6066process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
b93601f3
TT
6067 int want_partial_unit,
6068 enum language pretend_language)
0018ea6f 6069{
b93601f3
TT
6070 struct process_psymtab_comp_unit_data info;
6071
0018ea6f
DE
6072 /* If this compilation unit was already read in, free the
6073 cached copy in order to read it in again. This is
6074 necessary because we skipped some symbols when we first
6075 read in the compilation unit (see load_partial_dies).
6076 This problem could be avoided, but the benefit is unclear. */
6077 if (this_cu->cu != NULL)
6078 free_one_cached_comp_unit (this_cu);
6079
6080 gdb_assert (! this_cu->is_debug_types);
b93601f3
TT
6081 info.want_partial_unit = want_partial_unit;
6082 info.pretend_language = pretend_language;
0018ea6f
DE
6083 init_cutu_and_read_dies (this_cu, NULL, 0, 0,
6084 process_psymtab_comp_unit_reader,
b93601f3 6085 &info);
0018ea6f
DE
6086
6087 /* Age out any secondary CUs. */
6088 age_cached_comp_units ();
6089}
f4dc4d17
DE
6090
6091/* Reader function for build_type_psymtabs. */
6092
6093static void
6094build_type_psymtabs_reader (const struct die_reader_specs *reader,
d521ce57 6095 const gdb_byte *info_ptr,
f4dc4d17
DE
6096 struct die_info *type_unit_die,
6097 int has_children,
6098 void *data)
6099{
6100 struct objfile *objfile = dwarf2_per_objfile->objfile;
6101 struct dwarf2_cu *cu = reader->cu;
6102 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
0186c6a7 6103 struct signatured_type *sig_type;
f4dc4d17
DE
6104 struct type_unit_group *tu_group;
6105 struct attribute *attr;
6106 struct partial_die_info *first_die;
6107 CORE_ADDR lowpc, highpc;
6108 struct partial_symtab *pst;
6109
6110 gdb_assert (data == NULL);
0186c6a7
DE
6111 gdb_assert (per_cu->is_debug_types);
6112 sig_type = (struct signatured_type *) per_cu;
f4dc4d17
DE
6113
6114 if (! has_children)
6115 return;
6116
6117 attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
094b34ac 6118 tu_group = get_type_unit_group (cu, attr);
f4dc4d17 6119
0186c6a7 6120 VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
f4dc4d17
DE
6121
6122 prepare_one_comp_unit (cu, type_unit_die, language_minimal);
6123 cu->list_in_scope = &file_symbols;
6124 pst = create_partial_symtab (per_cu, "");
6125 pst->anonymous = 1;
6126
6127 first_die = load_partial_dies (reader, info_ptr, 1);
6128
6129 lowpc = (CORE_ADDR) -1;
6130 highpc = (CORE_ADDR) 0;
6131 scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
6132
6133 pst->n_global_syms = objfile->global_psymbols.next -
6134 (objfile->global_psymbols.list + pst->globals_offset);
6135 pst->n_static_syms = objfile->static_psymbols.next -
6136 (objfile->static_psymbols.list + pst->statics_offset);
5c80ed9d 6137 sort_pst_symbols (objfile, pst);
f4dc4d17
DE
6138}
6139
73051182
DE
6140/* Struct used to sort TUs by their abbreviation table offset. */
6141
6142struct tu_abbrev_offset
6143{
6144 struct signatured_type *sig_type;
6145 sect_offset abbrev_offset;
6146};
6147
6148/* Helper routine for build_type_psymtabs_1, passed to qsort. */
6149
6150static int
6151sort_tu_by_abbrev_offset (const void *ap, const void *bp)
6152{
6153 const struct tu_abbrev_offset * const *a = ap;
6154 const struct tu_abbrev_offset * const *b = bp;
6155 unsigned int aoff = (*a)->abbrev_offset.sect_off;
6156 unsigned int boff = (*b)->abbrev_offset.sect_off;
6157
6158 return (aoff > boff) - (aoff < boff);
6159}
6160
6161/* Efficiently read all the type units.
6162 This does the bulk of the work for build_type_psymtabs.
6163
6164 The efficiency is because we sort TUs by the abbrev table they use and
6165 only read each abbrev table once. In one program there are 200K TUs
6166 sharing 8K abbrev tables.
6167
6168 The main purpose of this function is to support building the
6169 dwarf2_per_objfile->type_unit_groups table.
6170 TUs typically share the DW_AT_stmt_list of the CU they came from, so we
6171 can collapse the search space by grouping them by stmt_list.
6172 The savings can be significant, in the same program from above the 200K TUs
6173 share 8K stmt_list tables.
6174
6175 FUNC is expected to call get_type_unit_group, which will create the
6176 struct type_unit_group if necessary and add it to
6177 dwarf2_per_objfile->type_unit_groups. */
6178
6179static void
6180build_type_psymtabs_1 (void)
6181{
6182 struct objfile *objfile = dwarf2_per_objfile->objfile;
6183 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6184 struct cleanup *cleanups;
6185 struct abbrev_table *abbrev_table;
6186 sect_offset abbrev_offset;
6187 struct tu_abbrev_offset *sorted_by_abbrev;
6188 struct type_unit_group **iter;
6189 int i;
6190
6191 /* It's up to the caller to not call us multiple times. */
6192 gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
6193
6194 if (dwarf2_per_objfile->n_type_units == 0)
6195 return;
6196
6197 /* TUs typically share abbrev tables, and there can be way more TUs than
6198 abbrev tables. Sort by abbrev table to reduce the number of times we
6199 read each abbrev table in.
6200 Alternatives are to punt or to maintain a cache of abbrev tables.
6201 This is simpler and efficient enough for now.
6202
6203 Later we group TUs by their DW_AT_stmt_list value (as this defines the
6204 symtab to use). Typically TUs with the same abbrev offset have the same
6205 stmt_list value too so in practice this should work well.
6206
6207 The basic algorithm here is:
6208
6209 sort TUs by abbrev table
6210 for each TU with same abbrev table:
6211 read abbrev table if first user
6212 read TU top level DIE
6213 [IWBN if DWO skeletons had DW_AT_stmt_list]
6214 call FUNC */
6215
b4f54984 6216 if (dwarf_read_debug)
73051182
DE
6217 fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
6218
6219 /* Sort in a separate table to maintain the order of all_type_units
6220 for .gdb_index: TU indices directly index all_type_units. */
6221 sorted_by_abbrev = XNEWVEC (struct tu_abbrev_offset,
6222 dwarf2_per_objfile->n_type_units);
6223 for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6224 {
6225 struct signatured_type *sig_type = dwarf2_per_objfile->all_type_units[i];
6226
6227 sorted_by_abbrev[i].sig_type = sig_type;
6228 sorted_by_abbrev[i].abbrev_offset =
6229 read_abbrev_offset (sig_type->per_cu.section,
6230 sig_type->per_cu.offset);
6231 }
6232 cleanups = make_cleanup (xfree, sorted_by_abbrev);
6233 qsort (sorted_by_abbrev, dwarf2_per_objfile->n_type_units,
6234 sizeof (struct tu_abbrev_offset), sort_tu_by_abbrev_offset);
6235
6236 abbrev_offset.sect_off = ~(unsigned) 0;
6237 abbrev_table = NULL;
6238 make_cleanup (abbrev_table_free_cleanup, &abbrev_table);
6239
6240 for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6241 {
6242 const struct tu_abbrev_offset *tu = &sorted_by_abbrev[i];
6243
6244 /* Switch to the next abbrev table if necessary. */
6245 if (abbrev_table == NULL
6246 || tu->abbrev_offset.sect_off != abbrev_offset.sect_off)
6247 {
6248 if (abbrev_table != NULL)
6249 {
6250 abbrev_table_free (abbrev_table);
6251 /* Reset to NULL in case abbrev_table_read_table throws
6252 an error: abbrev_table_free_cleanup will get called. */
6253 abbrev_table = NULL;
6254 }
6255 abbrev_offset = tu->abbrev_offset;
6256 abbrev_table =
6257 abbrev_table_read_table (&dwarf2_per_objfile->abbrev,
6258 abbrev_offset);
6259 ++tu_stats->nr_uniq_abbrev_tables;
6260 }
6261
6262 init_cutu_and_read_dies (&tu->sig_type->per_cu, abbrev_table, 0, 0,
6263 build_type_psymtabs_reader, NULL);
6264 }
6265
73051182 6266 do_cleanups (cleanups);
6aa5f3a6 6267}
73051182 6268
6aa5f3a6
DE
6269/* Print collected type unit statistics. */
6270
6271static void
6272print_tu_stats (void)
6273{
6274 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6275
6276 fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
6277 fprintf_unfiltered (gdb_stdlog, " %d TUs\n",
6278 dwarf2_per_objfile->n_type_units);
6279 fprintf_unfiltered (gdb_stdlog, " %d uniq abbrev tables\n",
6280 tu_stats->nr_uniq_abbrev_tables);
6281 fprintf_unfiltered (gdb_stdlog, " %d symtabs from stmt_list entries\n",
6282 tu_stats->nr_symtabs);
6283 fprintf_unfiltered (gdb_stdlog, " %d symtab sharers\n",
6284 tu_stats->nr_symtab_sharers);
6285 fprintf_unfiltered (gdb_stdlog, " %d type units without a stmt_list\n",
6286 tu_stats->nr_stmt_less_type_units);
6287 fprintf_unfiltered (gdb_stdlog, " %d all_type_units reallocs\n",
6288 tu_stats->nr_all_type_units_reallocs);
73051182
DE
6289}
6290
f4dc4d17
DE
6291/* Traversal function for build_type_psymtabs. */
6292
6293static int
6294build_type_psymtab_dependencies (void **slot, void *info)
6295{
6296 struct objfile *objfile = dwarf2_per_objfile->objfile;
6297 struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
094b34ac 6298 struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
f4dc4d17 6299 struct partial_symtab *pst = per_cu->v.psymtab;
0186c6a7
DE
6300 int len = VEC_length (sig_type_ptr, tu_group->tus);
6301 struct signatured_type *iter;
f4dc4d17
DE
6302 int i;
6303
6304 gdb_assert (len > 0);
0186c6a7 6305 gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
f4dc4d17
DE
6306
6307 pst->number_of_dependencies = len;
6308 pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
6309 len * sizeof (struct psymtab *));
6310 for (i = 0;
0186c6a7 6311 VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
f4dc4d17
DE
6312 ++i)
6313 {
0186c6a7
DE
6314 gdb_assert (iter->per_cu.is_debug_types);
6315 pst->dependencies[i] = iter->per_cu.v.psymtab;
796a7ff8 6316 iter->type_unit_group = tu_group;
f4dc4d17
DE
6317 }
6318
0186c6a7 6319 VEC_free (sig_type_ptr, tu_group->tus);
348e048f
DE
6320
6321 return 1;
6322}
6323
6324/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6325 Build partial symbol tables for the .debug_types comp-units. */
6326
6327static void
6328build_type_psymtabs (struct objfile *objfile)
6329{
0e50663e 6330 if (! create_all_type_units (objfile))
348e048f
DE
6331 return;
6332
73051182 6333 build_type_psymtabs_1 ();
6aa5f3a6 6334}
f4dc4d17 6335
6aa5f3a6
DE
6336/* Traversal function for process_skeletonless_type_unit.
6337 Read a TU in a DWO file and build partial symbols for it. */
6338
6339static int
6340process_skeletonless_type_unit (void **slot, void *info)
6341{
6342 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
6343 struct objfile *objfile = info;
6344 struct signatured_type find_entry, *entry;
6345
6346 /* If this TU doesn't exist in the global table, add it and read it in. */
6347
6348 if (dwarf2_per_objfile->signatured_types == NULL)
6349 {
6350 dwarf2_per_objfile->signatured_types
6351 = allocate_signatured_type_table (objfile);
6352 }
6353
6354 find_entry.signature = dwo_unit->signature;
6355 slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
6356 INSERT);
6357 /* If we've already seen this type there's nothing to do. What's happening
6358 is we're doing our own version of comdat-folding here. */
6359 if (*slot != NULL)
6360 return 1;
6361
6362 /* This does the job that create_all_type_units would have done for
6363 this TU. */
6364 entry = add_type_unit (dwo_unit->signature, slot);
6365 fill_in_sig_entry_from_dwo_entry (objfile, entry, dwo_unit);
6366 *slot = entry;
6367
6368 /* This does the job that build_type_psymtabs_1 would have done. */
6369 init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0,
6370 build_type_psymtabs_reader, NULL);
6371
6372 return 1;
6373}
6374
6375/* Traversal function for process_skeletonless_type_units. */
6376
6377static int
6378process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
6379{
6380 struct dwo_file *dwo_file = (struct dwo_file *) *slot;
6381
6382 if (dwo_file->tus != NULL)
6383 {
6384 htab_traverse_noresize (dwo_file->tus,
6385 process_skeletonless_type_unit, info);
6386 }
6387
6388 return 1;
6389}
6390
6391/* Scan all TUs of DWO files, verifying we've processed them.
6392 This is needed in case a TU was emitted without its skeleton.
6393 Note: This can't be done until we know what all the DWO files are. */
6394
6395static void
6396process_skeletonless_type_units (struct objfile *objfile)
6397{
6398 /* Skeletonless TUs in DWP files without .gdb_index is not supported yet. */
6399 if (get_dwp_file () == NULL
6400 && dwarf2_per_objfile->dwo_files != NULL)
6401 {
6402 htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
6403 process_dwo_file_for_skeletonless_type_units,
6404 objfile);
6405 }
348e048f
DE
6406}
6407
60606b2c
TT
6408/* A cleanup function that clears objfile's psymtabs_addrmap field. */
6409
6410static void
6411psymtabs_addrmap_cleanup (void *o)
6412{
6413 struct objfile *objfile = o;
ec61707d 6414
60606b2c
TT
6415 objfile->psymtabs_addrmap = NULL;
6416}
6417
95554aad
TT
6418/* Compute the 'user' field for each psymtab in OBJFILE. */
6419
6420static void
6421set_partial_user (struct objfile *objfile)
6422{
6423 int i;
6424
6425 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6426 {
8832e7e3 6427 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
95554aad
TT
6428 struct partial_symtab *pst = per_cu->v.psymtab;
6429 int j;
6430
36586728
TT
6431 if (pst == NULL)
6432 continue;
6433
95554aad
TT
6434 for (j = 0; j < pst->number_of_dependencies; ++j)
6435 {
6436 /* Set the 'user' field only if it is not already set. */
6437 if (pst->dependencies[j]->user == NULL)
6438 pst->dependencies[j]->user = pst;
6439 }
6440 }
6441}
6442
93311388
DE
6443/* Build the partial symbol table by doing a quick pass through the
6444 .debug_info and .debug_abbrev sections. */
72bf9492 6445
93311388 6446static void
c67a9c90 6447dwarf2_build_psymtabs_hard (struct objfile *objfile)
93311388 6448{
60606b2c
TT
6449 struct cleanup *back_to, *addrmap_cleanup;
6450 struct obstack temp_obstack;
21b2bd31 6451 int i;
93311388 6452
b4f54984 6453 if (dwarf_read_debug)
45cfd468
DE
6454 {
6455 fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
4262abfb 6456 objfile_name (objfile));
45cfd468
DE
6457 }
6458
98bfdba5
PA
6459 dwarf2_per_objfile->reading_partial_symbols = 1;
6460
be391dca 6461 dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
91c24f0a 6462
93311388
DE
6463 /* Any cached compilation units will be linked by the per-objfile
6464 read_in_chain. Make sure to free them when we're done. */
6465 back_to = make_cleanup (free_cached_comp_units, NULL);
72bf9492 6466
348e048f
DE
6467 build_type_psymtabs (objfile);
6468
93311388 6469 create_all_comp_units (objfile);
c906108c 6470
60606b2c
TT
6471 /* Create a temporary address map on a temporary obstack. We later
6472 copy this to the final obstack. */
6473 obstack_init (&temp_obstack);
6474 make_cleanup_obstack_free (&temp_obstack);
6475 objfile->psymtabs_addrmap = addrmap_create_mutable (&temp_obstack);
6476 addrmap_cleanup = make_cleanup (psymtabs_addrmap_cleanup, objfile);
72bf9492 6477
21b2bd31 6478 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
93311388 6479 {
8832e7e3 6480 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
aaa75496 6481
b93601f3 6482 process_psymtab_comp_unit (per_cu, 0, language_minimal);
c906108c 6483 }
ff013f42 6484
6aa5f3a6
DE
6485 /* This has to wait until we read the CUs, we need the list of DWOs. */
6486 process_skeletonless_type_units (objfile);
6487
6488 /* Now that all TUs have been processed we can fill in the dependencies. */
6489 if (dwarf2_per_objfile->type_unit_groups != NULL)
6490 {
6491 htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
6492 build_type_psymtab_dependencies, NULL);
6493 }
6494
b4f54984 6495 if (dwarf_read_debug)
6aa5f3a6
DE
6496 print_tu_stats ();
6497
95554aad
TT
6498 set_partial_user (objfile);
6499
ff013f42
JK
6500 objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
6501 &objfile->objfile_obstack);
60606b2c 6502 discard_cleanups (addrmap_cleanup);
ff013f42 6503
ae038cb0 6504 do_cleanups (back_to);
45cfd468 6505
b4f54984 6506 if (dwarf_read_debug)
45cfd468 6507 fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
4262abfb 6508 objfile_name (objfile));
ae038cb0
DJ
6509}
6510
3019eac3 6511/* die_reader_func for load_partial_comp_unit. */
ae038cb0
DJ
6512
6513static void
dee91e82 6514load_partial_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 6515 const gdb_byte *info_ptr,
dee91e82
DE
6516 struct die_info *comp_unit_die,
6517 int has_children,
6518 void *data)
ae038cb0 6519{
dee91e82 6520 struct dwarf2_cu *cu = reader->cu;
ae038cb0 6521
95554aad 6522 prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
ae038cb0 6523
ae038cb0
DJ
6524 /* Check if comp unit has_children.
6525 If so, read the rest of the partial symbols from this comp unit.
0963b4bd 6526 If not, there's no more debug_info for this comp unit. */
d85a05f0 6527 if (has_children)
dee91e82
DE
6528 load_partial_dies (reader, info_ptr, 0);
6529}
98bfdba5 6530
dee91e82
DE
6531/* Load the partial DIEs for a secondary CU into memory.
6532 This is also used when rereading a primary CU with load_all_dies. */
c5b7e1cb 6533
dee91e82
DE
6534static void
6535load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
6536{
f4dc4d17
DE
6537 init_cutu_and_read_dies (this_cu, NULL, 1, 1,
6538 load_partial_comp_unit_reader, NULL);
ae038cb0
DJ
6539}
6540
ae038cb0 6541static void
36586728
TT
6542read_comp_units_from_section (struct objfile *objfile,
6543 struct dwarf2_section_info *section,
6544 unsigned int is_dwz,
6545 int *n_allocated,
6546 int *n_comp_units,
6547 struct dwarf2_per_cu_data ***all_comp_units)
ae038cb0 6548{
d521ce57 6549 const gdb_byte *info_ptr;
a32a8923 6550 bfd *abfd = get_section_bfd_owner (section);
be391dca 6551
b4f54984 6552 if (dwarf_read_debug)
bf6af496 6553 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
a32a8923
DE
6554 get_section_name (section),
6555 get_section_file_name (section));
bf6af496 6556
36586728 6557 dwarf2_read_section (objfile, section);
ae038cb0 6558
36586728 6559 info_ptr = section->buffer;
6e70227d 6560
36586728 6561 while (info_ptr < section->buffer + section->size)
ae038cb0 6562 {
c764a876 6563 unsigned int length, initial_length_size;
ae038cb0 6564 struct dwarf2_per_cu_data *this_cu;
b64f50a1 6565 sect_offset offset;
ae038cb0 6566
36586728 6567 offset.sect_off = info_ptr - section->buffer;
ae038cb0
DJ
6568
6569 /* Read just enough information to find out where the next
6570 compilation unit is. */
36586728 6571 length = read_initial_length (abfd, info_ptr, &initial_length_size);
ae038cb0
DJ
6572
6573 /* Save the compilation unit for later lookup. */
6574 this_cu = obstack_alloc (&objfile->objfile_obstack,
6575 sizeof (struct dwarf2_per_cu_data));
6576 memset (this_cu, 0, sizeof (*this_cu));
6577 this_cu->offset = offset;
c764a876 6578 this_cu->length = length + initial_length_size;
36586728 6579 this_cu->is_dwz = is_dwz;
9291a0cd 6580 this_cu->objfile = objfile;
8a0459fd 6581 this_cu->section = section;
ae038cb0 6582
36586728 6583 if (*n_comp_units == *n_allocated)
ae038cb0 6584 {
36586728
TT
6585 *n_allocated *= 2;
6586 *all_comp_units = xrealloc (*all_comp_units,
6587 *n_allocated
6588 * sizeof (struct dwarf2_per_cu_data *));
ae038cb0 6589 }
36586728
TT
6590 (*all_comp_units)[*n_comp_units] = this_cu;
6591 ++*n_comp_units;
ae038cb0
DJ
6592
6593 info_ptr = info_ptr + this_cu->length;
6594 }
36586728
TT
6595}
6596
6597/* Create a list of all compilation units in OBJFILE.
6598 This is only done for -readnow and building partial symtabs. */
6599
6600static void
6601create_all_comp_units (struct objfile *objfile)
6602{
6603 int n_allocated;
6604 int n_comp_units;
6605 struct dwarf2_per_cu_data **all_comp_units;
4db1a1dc 6606 struct dwz_file *dwz;
36586728
TT
6607
6608 n_comp_units = 0;
6609 n_allocated = 10;
6610 all_comp_units = xmalloc (n_allocated
6611 * sizeof (struct dwarf2_per_cu_data *));
6612
6613 read_comp_units_from_section (objfile, &dwarf2_per_objfile->info, 0,
6614 &n_allocated, &n_comp_units, &all_comp_units);
6615
4db1a1dc
TT
6616 dwz = dwarf2_get_dwz_file ();
6617 if (dwz != NULL)
6618 read_comp_units_from_section (objfile, &dwz->info, 1,
6619 &n_allocated, &n_comp_units,
6620 &all_comp_units);
ae038cb0
DJ
6621
6622 dwarf2_per_objfile->all_comp_units
6623 = obstack_alloc (&objfile->objfile_obstack,
6624 n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6625 memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
6626 n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6627 xfree (all_comp_units);
6628 dwarf2_per_objfile->n_comp_units = n_comp_units;
c906108c
SS
6629}
6630
5734ee8b 6631/* Process all loaded DIEs for compilation unit CU, starting at
cdc07690 6632 FIRST_DIE. The caller should pass SET_ADDRMAP == 1 if the compilation
5734ee8b 6633 unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
cdc07690
YQ
6634 DW_AT_ranges). See the comments of add_partial_subprogram on how
6635 SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated. */
c906108c 6636
72bf9492
DJ
6637static void
6638scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
cdc07690
YQ
6639 CORE_ADDR *highpc, int set_addrmap,
6640 struct dwarf2_cu *cu)
c906108c 6641{
72bf9492 6642 struct partial_die_info *pdi;
c906108c 6643
91c24f0a
DC
6644 /* Now, march along the PDI's, descending into ones which have
6645 interesting children but skipping the children of the other ones,
6646 until we reach the end of the compilation unit. */
c906108c 6647
72bf9492 6648 pdi = first_die;
91c24f0a 6649
72bf9492
DJ
6650 while (pdi != NULL)
6651 {
6652 fixup_partial_die (pdi, cu);
c906108c 6653
f55ee35c 6654 /* Anonymous namespaces or modules have no name but have interesting
91c24f0a
DC
6655 children, so we need to look at them. Ditto for anonymous
6656 enums. */
933c6fe4 6657
72bf9492 6658 if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
95554aad
TT
6659 || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
6660 || pdi->tag == DW_TAG_imported_unit)
c906108c 6661 {
72bf9492 6662 switch (pdi->tag)
c906108c
SS
6663 {
6664 case DW_TAG_subprogram:
cdc07690 6665 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
c906108c 6666 break;
72929c62 6667 case DW_TAG_constant:
c906108c
SS
6668 case DW_TAG_variable:
6669 case DW_TAG_typedef:
91c24f0a 6670 case DW_TAG_union_type:
72bf9492 6671 if (!pdi->is_declaration)
63d06c5c 6672 {
72bf9492 6673 add_partial_symbol (pdi, cu);
63d06c5c
DC
6674 }
6675 break;
c906108c 6676 case DW_TAG_class_type:
680b30c7 6677 case DW_TAG_interface_type:
c906108c 6678 case DW_TAG_structure_type:
72bf9492 6679 if (!pdi->is_declaration)
c906108c 6680 {
72bf9492 6681 add_partial_symbol (pdi, cu);
c906108c
SS
6682 }
6683 break;
91c24f0a 6684 case DW_TAG_enumeration_type:
72bf9492
DJ
6685 if (!pdi->is_declaration)
6686 add_partial_enumeration (pdi, cu);
c906108c
SS
6687 break;
6688 case DW_TAG_base_type:
a02abb62 6689 case DW_TAG_subrange_type:
c906108c 6690 /* File scope base type definitions are added to the partial
c5aa993b 6691 symbol table. */
72bf9492 6692 add_partial_symbol (pdi, cu);
c906108c 6693 break;
d9fa45fe 6694 case DW_TAG_namespace:
cdc07690 6695 add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
91c24f0a 6696 break;
5d7cb8df 6697 case DW_TAG_module:
cdc07690 6698 add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
5d7cb8df 6699 break;
95554aad
TT
6700 case DW_TAG_imported_unit:
6701 {
6702 struct dwarf2_per_cu_data *per_cu;
6703
f4dc4d17
DE
6704 /* For now we don't handle imported units in type units. */
6705 if (cu->per_cu->is_debug_types)
6706 {
6707 error (_("Dwarf Error: DW_TAG_imported_unit is not"
6708 " supported in type units [in module %s]"),
4262abfb 6709 objfile_name (cu->objfile));
f4dc4d17
DE
6710 }
6711
95554aad 6712 per_cu = dwarf2_find_containing_comp_unit (pdi->d.offset,
36586728 6713 pdi->is_dwz,
95554aad
TT
6714 cu->objfile);
6715
6716 /* Go read the partial unit, if needed. */
6717 if (per_cu->v.psymtab == NULL)
b93601f3 6718 process_psymtab_comp_unit (per_cu, 1, cu->language);
95554aad 6719
f4dc4d17 6720 VEC_safe_push (dwarf2_per_cu_ptr,
796a7ff8 6721 cu->per_cu->imported_symtabs, per_cu);
95554aad
TT
6722 }
6723 break;
74921315
KS
6724 case DW_TAG_imported_declaration:
6725 add_partial_symbol (pdi, cu);
6726 break;
c906108c
SS
6727 default:
6728 break;
6729 }
6730 }
6731
72bf9492
DJ
6732 /* If the die has a sibling, skip to the sibling. */
6733
6734 pdi = pdi->die_sibling;
6735 }
6736}
6737
6738/* Functions used to compute the fully scoped name of a partial DIE.
91c24f0a 6739
72bf9492 6740 Normally, this is simple. For C++, the parent DIE's fully scoped
987504bb
JJ
6741 name is concatenated with "::" and the partial DIE's name. For
6742 Java, the same thing occurs except that "." is used instead of "::".
72bf9492
DJ
6743 Enumerators are an exception; they use the scope of their parent
6744 enumeration type, i.e. the name of the enumeration type is not
6745 prepended to the enumerator.
91c24f0a 6746
72bf9492
DJ
6747 There are two complexities. One is DW_AT_specification; in this
6748 case "parent" means the parent of the target of the specification,
6749 instead of the direct parent of the DIE. The other is compilers
6750 which do not emit DW_TAG_namespace; in this case we try to guess
6751 the fully qualified name of structure types from their members'
6752 linkage names. This must be done using the DIE's children rather
6753 than the children of any DW_AT_specification target. We only need
6754 to do this for structures at the top level, i.e. if the target of
6755 any DW_AT_specification (if any; otherwise the DIE itself) does not
6756 have a parent. */
6757
6758/* Compute the scope prefix associated with PDI's parent, in
6759 compilation unit CU. The result will be allocated on CU's
6760 comp_unit_obstack, or a copy of the already allocated PDI->NAME
6761 field. NULL is returned if no prefix is necessary. */
15d034d0 6762static const char *
72bf9492
DJ
6763partial_die_parent_scope (struct partial_die_info *pdi,
6764 struct dwarf2_cu *cu)
6765{
15d034d0 6766 const char *grandparent_scope;
72bf9492 6767 struct partial_die_info *parent, *real_pdi;
91c24f0a 6768
72bf9492
DJ
6769 /* We need to look at our parent DIE; if we have a DW_AT_specification,
6770 then this means the parent of the specification DIE. */
6771
6772 real_pdi = pdi;
72bf9492 6773 while (real_pdi->has_specification)
36586728
TT
6774 real_pdi = find_partial_die (real_pdi->spec_offset,
6775 real_pdi->spec_is_dwz, cu);
72bf9492
DJ
6776
6777 parent = real_pdi->die_parent;
6778 if (parent == NULL)
6779 return NULL;
6780
6781 if (parent->scope_set)
6782 return parent->scope;
6783
6784 fixup_partial_die (parent, cu);
6785
10b3939b 6786 grandparent_scope = partial_die_parent_scope (parent, cu);
72bf9492 6787
acebe513
UW
6788 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
6789 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
6790 Work around this problem here. */
6791 if (cu->language == language_cplus
6e70227d 6792 && parent->tag == DW_TAG_namespace
acebe513
UW
6793 && strcmp (parent->name, "::") == 0
6794 && grandparent_scope == NULL)
6795 {
6796 parent->scope = NULL;
6797 parent->scope_set = 1;
6798 return NULL;
6799 }
6800
9c6c53f7
SA
6801 if (pdi->tag == DW_TAG_enumerator)
6802 /* Enumerators should not get the name of the enumeration as a prefix. */
6803 parent->scope = grandparent_scope;
6804 else if (parent->tag == DW_TAG_namespace
f55ee35c 6805 || parent->tag == DW_TAG_module
72bf9492
DJ
6806 || parent->tag == DW_TAG_structure_type
6807 || parent->tag == DW_TAG_class_type
680b30c7 6808 || parent->tag == DW_TAG_interface_type
ceeb3d5a
TT
6809 || parent->tag == DW_TAG_union_type
6810 || parent->tag == DW_TAG_enumeration_type)
72bf9492
DJ
6811 {
6812 if (grandparent_scope == NULL)
6813 parent->scope = parent->name;
6814 else
3e43a32a
MS
6815 parent->scope = typename_concat (&cu->comp_unit_obstack,
6816 grandparent_scope,
f55ee35c 6817 parent->name, 0, cu);
72bf9492 6818 }
72bf9492
DJ
6819 else
6820 {
6821 /* FIXME drow/2004-04-01: What should we be doing with
6822 function-local names? For partial symbols, we should probably be
6823 ignoring them. */
6824 complaint (&symfile_complaints,
e2e0b3e5 6825 _("unhandled containing DIE tag %d for DIE at %d"),
b64f50a1 6826 parent->tag, pdi->offset.sect_off);
72bf9492 6827 parent->scope = grandparent_scope;
c906108c
SS
6828 }
6829
72bf9492
DJ
6830 parent->scope_set = 1;
6831 return parent->scope;
6832}
6833
6834/* Return the fully scoped name associated with PDI, from compilation unit
6835 CU. The result will be allocated with malloc. */
4568ecf9 6836
72bf9492
DJ
6837static char *
6838partial_die_full_name (struct partial_die_info *pdi,
6839 struct dwarf2_cu *cu)
6840{
15d034d0 6841 const char *parent_scope;
72bf9492 6842
98bfdba5
PA
6843 /* If this is a template instantiation, we can not work out the
6844 template arguments from partial DIEs. So, unfortunately, we have
6845 to go through the full DIEs. At least any work we do building
6846 types here will be reused if full symbols are loaded later. */
6847 if (pdi->has_template_arguments)
6848 {
6849 fixup_partial_die (pdi, cu);
6850
6851 if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
6852 {
6853 struct die_info *die;
6854 struct attribute attr;
6855 struct dwarf2_cu *ref_cu = cu;
6856
b64f50a1 6857 /* DW_FORM_ref_addr is using section offset. */
98bfdba5
PA
6858 attr.name = 0;
6859 attr.form = DW_FORM_ref_addr;
4568ecf9 6860 attr.u.unsnd = pdi->offset.sect_off;
98bfdba5
PA
6861 die = follow_die_ref (NULL, &attr, &ref_cu);
6862
6863 return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
6864 }
6865 }
6866
72bf9492
DJ
6867 parent_scope = partial_die_parent_scope (pdi, cu);
6868 if (parent_scope == NULL)
6869 return NULL;
6870 else
f55ee35c 6871 return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
c906108c
SS
6872}
6873
6874static void
72bf9492 6875add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
c906108c 6876{
e7c27a73 6877 struct objfile *objfile = cu->objfile;
3e29f34a 6878 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c 6879 CORE_ADDR addr = 0;
15d034d0 6880 const char *actual_name = NULL;
e142c38c 6881 CORE_ADDR baseaddr;
15d034d0 6882 char *built_actual_name;
e142c38c
DJ
6883
6884 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 6885
15d034d0
TT
6886 built_actual_name = partial_die_full_name (pdi, cu);
6887 if (built_actual_name != NULL)
6888 actual_name = built_actual_name;
63d06c5c 6889
72bf9492
DJ
6890 if (actual_name == NULL)
6891 actual_name = pdi->name;
6892
c906108c
SS
6893 switch (pdi->tag)
6894 {
6895 case DW_TAG_subprogram:
3e29f34a 6896 addr = gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr);
2cfa0c8d 6897 if (pdi->is_external || cu->language == language_ada)
c906108c 6898 {
2cfa0c8d
JB
6899 /* brobecker/2007-12-26: Normally, only "external" DIEs are part
6900 of the global scope. But in Ada, we want to be able to access
6901 nested procedures globally. So all Ada subprograms are stored
6902 in the global scope. */
3e29f34a
MR
6903 /* prim_record_minimal_symbol (actual_name, addr, mst_text,
6904 objfile); */
f47fb265 6905 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6906 built_actual_name != NULL,
f47fb265
MS
6907 VAR_DOMAIN, LOC_BLOCK,
6908 &objfile->global_psymbols,
3e29f34a 6909 0, addr, cu->language, objfile);
c906108c
SS
6910 }
6911 else
6912 {
3e29f34a
MR
6913 /* prim_record_minimal_symbol (actual_name, addr, mst_file_text,
6914 objfile); */
f47fb265 6915 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6916 built_actual_name != NULL,
f47fb265
MS
6917 VAR_DOMAIN, LOC_BLOCK,
6918 &objfile->static_psymbols,
3e29f34a 6919 0, addr, cu->language, objfile);
c906108c
SS
6920 }
6921 break;
72929c62
JB
6922 case DW_TAG_constant:
6923 {
6924 struct psymbol_allocation_list *list;
6925
6926 if (pdi->is_external)
6927 list = &objfile->global_psymbols;
6928 else
6929 list = &objfile->static_psymbols;
f47fb265 6930 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6931 built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
f47fb265 6932 list, 0, 0, cu->language, objfile);
72929c62
JB
6933 }
6934 break;
c906108c 6935 case DW_TAG_variable:
95554aad
TT
6936 if (pdi->d.locdesc)
6937 addr = decode_locdesc (pdi->d.locdesc, cu);
caac4577 6938
95554aad 6939 if (pdi->d.locdesc
caac4577
JG
6940 && addr == 0
6941 && !dwarf2_per_objfile->has_section_at_zero)
6942 {
6943 /* A global or static variable may also have been stripped
6944 out by the linker if unused, in which case its address
6945 will be nullified; do not add such variables into partial
6946 symbol table then. */
6947 }
6948 else if (pdi->is_external)
c906108c
SS
6949 {
6950 /* Global Variable.
6951 Don't enter into the minimal symbol tables as there is
6952 a minimal symbol table entry from the ELF symbols already.
6953 Enter into partial symbol table if it has a location
6954 descriptor or a type.
6955 If the location descriptor is missing, new_symbol will create
6956 a LOC_UNRESOLVED symbol, the address of the variable will then
6957 be determined from the minimal symbol table whenever the variable
6958 is referenced.
6959 The address for the partial symbol table entry is not
6960 used by GDB, but it comes in handy for debugging partial symbol
6961 table building. */
6962
95554aad 6963 if (pdi->d.locdesc || pdi->has_type)
f47fb265 6964 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6965 built_actual_name != NULL,
f47fb265
MS
6966 VAR_DOMAIN, LOC_STATIC,
6967 &objfile->global_psymbols,
6968 0, addr + baseaddr,
6969 cu->language, objfile);
c906108c
SS
6970 }
6971 else
6972 {
ff908ebf
AW
6973 int has_loc = pdi->d.locdesc != NULL;
6974
6975 /* Static Variable. Skip symbols whose value we cannot know (those
6976 without location descriptors or constant values). */
6977 if (!has_loc && !pdi->has_const_value)
decbce07 6978 {
15d034d0 6979 xfree (built_actual_name);
decbce07
MS
6980 return;
6981 }
ff908ebf 6982
f47fb265 6983 /* prim_record_minimal_symbol (actual_name, addr + baseaddr,
c5aa993b 6984 mst_file_data, objfile); */
f47fb265 6985 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6986 built_actual_name != NULL,
f47fb265
MS
6987 VAR_DOMAIN, LOC_STATIC,
6988 &objfile->static_psymbols,
ff908ebf
AW
6989 0,
6990 has_loc ? addr + baseaddr : (CORE_ADDR) 0,
f47fb265 6991 cu->language, objfile);
c906108c
SS
6992 }
6993 break;
6994 case DW_TAG_typedef:
6995 case DW_TAG_base_type:
a02abb62 6996 case DW_TAG_subrange_type:
38d518c9 6997 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6998 built_actual_name != NULL,
176620f1 6999 VAR_DOMAIN, LOC_TYPEDEF,
c906108c 7000 &objfile->static_psymbols,
e142c38c 7001 0, (CORE_ADDR) 0, cu->language, objfile);
c906108c 7002 break;
74921315 7003 case DW_TAG_imported_declaration:
72bf9492
DJ
7004 case DW_TAG_namespace:
7005 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7006 built_actual_name != NULL,
72bf9492
DJ
7007 VAR_DOMAIN, LOC_TYPEDEF,
7008 &objfile->global_psymbols,
7009 0, (CORE_ADDR) 0, cu->language, objfile);
7010 break;
530e8392
KB
7011 case DW_TAG_module:
7012 add_psymbol_to_list (actual_name, strlen (actual_name),
7013 built_actual_name != NULL,
7014 MODULE_DOMAIN, LOC_TYPEDEF,
7015 &objfile->global_psymbols,
7016 0, (CORE_ADDR) 0, cu->language, objfile);
7017 break;
c906108c 7018 case DW_TAG_class_type:
680b30c7 7019 case DW_TAG_interface_type:
c906108c
SS
7020 case DW_TAG_structure_type:
7021 case DW_TAG_union_type:
7022 case DW_TAG_enumeration_type:
fa4028e9
JB
7023 /* Skip external references. The DWARF standard says in the section
7024 about "Structure, Union, and Class Type Entries": "An incomplete
7025 structure, union or class type is represented by a structure,
7026 union or class entry that does not have a byte size attribute
7027 and that has a DW_AT_declaration attribute." */
7028 if (!pdi->has_byte_size && pdi->is_declaration)
decbce07 7029 {
15d034d0 7030 xfree (built_actual_name);
decbce07
MS
7031 return;
7032 }
fa4028e9 7033
63d06c5c
DC
7034 /* NOTE: carlton/2003-10-07: See comment in new_symbol about
7035 static vs. global. */
38d518c9 7036 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7037 built_actual_name != NULL,
176620f1 7038 STRUCT_DOMAIN, LOC_TYPEDEF,
987504bb
JJ
7039 (cu->language == language_cplus
7040 || cu->language == language_java)
63d06c5c
DC
7041 ? &objfile->global_psymbols
7042 : &objfile->static_psymbols,
e142c38c 7043 0, (CORE_ADDR) 0, cu->language, objfile);
c906108c 7044
c906108c
SS
7045 break;
7046 case DW_TAG_enumerator:
38d518c9 7047 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7048 built_actual_name != NULL,
176620f1 7049 VAR_DOMAIN, LOC_CONST,
987504bb
JJ
7050 (cu->language == language_cplus
7051 || cu->language == language_java)
f6fe98ef
DJ
7052 ? &objfile->global_psymbols
7053 : &objfile->static_psymbols,
e142c38c 7054 0, (CORE_ADDR) 0, cu->language, objfile);
c906108c
SS
7055 break;
7056 default:
7057 break;
7058 }
5c4e30ca 7059
15d034d0 7060 xfree (built_actual_name);
c906108c
SS
7061}
7062
5c4e30ca
DC
7063/* Read a partial die corresponding to a namespace; also, add a symbol
7064 corresponding to that namespace to the symbol table. NAMESPACE is
7065 the name of the enclosing namespace. */
91c24f0a 7066
72bf9492
DJ
7067static void
7068add_partial_namespace (struct partial_die_info *pdi,
91c24f0a 7069 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 7070 int set_addrmap, struct dwarf2_cu *cu)
91c24f0a 7071{
72bf9492 7072 /* Add a symbol for the namespace. */
e7c27a73 7073
72bf9492 7074 add_partial_symbol (pdi, cu);
5c4e30ca
DC
7075
7076 /* Now scan partial symbols in that namespace. */
7077
91c24f0a 7078 if (pdi->has_children)
cdc07690 7079 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
91c24f0a
DC
7080}
7081
5d7cb8df
JK
7082/* Read a partial die corresponding to a Fortran module. */
7083
7084static void
7085add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
cdc07690 7086 CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
5d7cb8df 7087{
530e8392
KB
7088 /* Add a symbol for the namespace. */
7089
7090 add_partial_symbol (pdi, cu);
7091
f55ee35c 7092 /* Now scan partial symbols in that module. */
5d7cb8df
JK
7093
7094 if (pdi->has_children)
cdc07690 7095 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
5d7cb8df
JK
7096}
7097
bc30ff58
JB
7098/* Read a partial die corresponding to a subprogram and create a partial
7099 symbol for that subprogram. When the CU language allows it, this
7100 routine also defines a partial symbol for each nested subprogram
cdc07690 7101 that this subprogram contains. If SET_ADDRMAP is true, record the
428fc5fc
YQ
7102 covered ranges in the addrmap. Set *LOWPC and *HIGHPC to the lowest
7103 and highest PC values found in PDI.
6e70227d 7104
cdc07690
YQ
7105 PDI may also be a lexical block, in which case we simply search
7106 recursively for subprograms defined inside that lexical block.
bc30ff58
JB
7107 Again, this is only performed when the CU language allows this
7108 type of definitions. */
7109
7110static void
7111add_partial_subprogram (struct partial_die_info *pdi,
7112 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 7113 int set_addrmap, struct dwarf2_cu *cu)
bc30ff58
JB
7114{
7115 if (pdi->tag == DW_TAG_subprogram)
7116 {
7117 if (pdi->has_pc_info)
7118 {
7119 if (pdi->lowpc < *lowpc)
7120 *lowpc = pdi->lowpc;
7121 if (pdi->highpc > *highpc)
7122 *highpc = pdi->highpc;
cdc07690 7123 if (set_addrmap)
5734ee8b 7124 {
5734ee8b 7125 struct objfile *objfile = cu->objfile;
3e29f34a
MR
7126 struct gdbarch *gdbarch = get_objfile_arch (objfile);
7127 CORE_ADDR baseaddr;
7128 CORE_ADDR highpc;
7129 CORE_ADDR lowpc;
5734ee8b
DJ
7130
7131 baseaddr = ANOFFSET (objfile->section_offsets,
7132 SECT_OFF_TEXT (objfile));
3e29f34a
MR
7133 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7134 pdi->lowpc + baseaddr);
7135 highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7136 pdi->highpc + baseaddr);
7137 addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
9291a0cd 7138 cu->per_cu->v.psymtab);
5734ee8b 7139 }
481860b3
GB
7140 }
7141
7142 if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
7143 {
bc30ff58 7144 if (!pdi->is_declaration)
e8d05480
JB
7145 /* Ignore subprogram DIEs that do not have a name, they are
7146 illegal. Do not emit a complaint at this point, we will
7147 do so when we convert this psymtab into a symtab. */
7148 if (pdi->name)
7149 add_partial_symbol (pdi, cu);
bc30ff58
JB
7150 }
7151 }
6e70227d 7152
bc30ff58
JB
7153 if (! pdi->has_children)
7154 return;
7155
7156 if (cu->language == language_ada)
7157 {
7158 pdi = pdi->die_child;
7159 while (pdi != NULL)
7160 {
7161 fixup_partial_die (pdi, cu);
7162 if (pdi->tag == DW_TAG_subprogram
7163 || pdi->tag == DW_TAG_lexical_block)
cdc07690 7164 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
bc30ff58
JB
7165 pdi = pdi->die_sibling;
7166 }
7167 }
7168}
7169
91c24f0a
DC
7170/* Read a partial die corresponding to an enumeration type. */
7171
72bf9492
DJ
7172static void
7173add_partial_enumeration (struct partial_die_info *enum_pdi,
7174 struct dwarf2_cu *cu)
91c24f0a 7175{
72bf9492 7176 struct partial_die_info *pdi;
91c24f0a
DC
7177
7178 if (enum_pdi->name != NULL)
72bf9492
DJ
7179 add_partial_symbol (enum_pdi, cu);
7180
7181 pdi = enum_pdi->die_child;
7182 while (pdi)
91c24f0a 7183 {
72bf9492 7184 if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
e2e0b3e5 7185 complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
91c24f0a 7186 else
72bf9492
DJ
7187 add_partial_symbol (pdi, cu);
7188 pdi = pdi->die_sibling;
91c24f0a 7189 }
91c24f0a
DC
7190}
7191
6caca83c
CC
7192/* Return the initial uleb128 in the die at INFO_PTR. */
7193
7194static unsigned int
d521ce57 7195peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
6caca83c
CC
7196{
7197 unsigned int bytes_read;
7198
7199 return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7200}
7201
4bb7a0a7
DJ
7202/* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
7203 Return the corresponding abbrev, or NULL if the number is zero (indicating
7204 an empty DIE). In either case *BYTES_READ will be set to the length of
7205 the initial number. */
7206
7207static struct abbrev_info *
d521ce57 7208peek_die_abbrev (const gdb_byte *info_ptr, unsigned int *bytes_read,
891d2f0b 7209 struct dwarf2_cu *cu)
4bb7a0a7
DJ
7210{
7211 bfd *abfd = cu->objfile->obfd;
7212 unsigned int abbrev_number;
7213 struct abbrev_info *abbrev;
7214
7215 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
7216
7217 if (abbrev_number == 0)
7218 return NULL;
7219
433df2d4 7220 abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
4bb7a0a7
DJ
7221 if (!abbrev)
7222 {
422b9917
DE
7223 error (_("Dwarf Error: Could not find abbrev number %d in %s"
7224 " at offset 0x%x [in module %s]"),
7225 abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
7226 cu->header.offset.sect_off, bfd_get_filename (abfd));
4bb7a0a7
DJ
7227 }
7228
7229 return abbrev;
7230}
7231
93311388
DE
7232/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7233 Returns a pointer to the end of a series of DIEs, terminated by an empty
4bb7a0a7
DJ
7234 DIE. Any children of the skipped DIEs will also be skipped. */
7235
d521ce57
TT
7236static const gdb_byte *
7237skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
4bb7a0a7 7238{
dee91e82 7239 struct dwarf2_cu *cu = reader->cu;
4bb7a0a7
DJ
7240 struct abbrev_info *abbrev;
7241 unsigned int bytes_read;
7242
7243 while (1)
7244 {
7245 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
7246 if (abbrev == NULL)
7247 return info_ptr + bytes_read;
7248 else
dee91e82 7249 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
4bb7a0a7
DJ
7250 }
7251}
7252
93311388
DE
7253/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7254 INFO_PTR should point just after the initial uleb128 of a DIE, and the
4bb7a0a7
DJ
7255 abbrev corresponding to that skipped uleb128 should be passed in
7256 ABBREV. Returns a pointer to this DIE's sibling, skipping any
7257 children. */
7258
d521ce57
TT
7259static const gdb_byte *
7260skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
dee91e82 7261 struct abbrev_info *abbrev)
4bb7a0a7
DJ
7262{
7263 unsigned int bytes_read;
7264 struct attribute attr;
dee91e82
DE
7265 bfd *abfd = reader->abfd;
7266 struct dwarf2_cu *cu = reader->cu;
d521ce57 7267 const gdb_byte *buffer = reader->buffer;
f664829e 7268 const gdb_byte *buffer_end = reader->buffer_end;
d521ce57 7269 const gdb_byte *start_info_ptr = info_ptr;
4bb7a0a7
DJ
7270 unsigned int form, i;
7271
7272 for (i = 0; i < abbrev->num_attrs; i++)
7273 {
7274 /* The only abbrev we care about is DW_AT_sibling. */
7275 if (abbrev->attrs[i].name == DW_AT_sibling)
7276 {
dee91e82 7277 read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
4bb7a0a7 7278 if (attr.form == DW_FORM_ref_addr)
3e43a32a
MS
7279 complaint (&symfile_complaints,
7280 _("ignoring absolute DW_AT_sibling"));
4bb7a0a7 7281 else
b9502d3f
WN
7282 {
7283 unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
7284 const gdb_byte *sibling_ptr = buffer + off;
7285
7286 if (sibling_ptr < info_ptr)
7287 complaint (&symfile_complaints,
7288 _("DW_AT_sibling points backwards"));
22869d73
KS
7289 else if (sibling_ptr > reader->buffer_end)
7290 dwarf2_section_buffer_overflow_complaint (reader->die_section);
b9502d3f
WN
7291 else
7292 return sibling_ptr;
7293 }
4bb7a0a7
DJ
7294 }
7295
7296 /* If it isn't DW_AT_sibling, skip this attribute. */
7297 form = abbrev->attrs[i].form;
7298 skip_attribute:
7299 switch (form)
7300 {
4bb7a0a7 7301 case DW_FORM_ref_addr:
ae411497
TT
7302 /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
7303 and later it is offset sized. */
7304 if (cu->header.version == 2)
7305 info_ptr += cu->header.addr_size;
7306 else
7307 info_ptr += cu->header.offset_size;
7308 break;
36586728
TT
7309 case DW_FORM_GNU_ref_alt:
7310 info_ptr += cu->header.offset_size;
7311 break;
ae411497 7312 case DW_FORM_addr:
4bb7a0a7
DJ
7313 info_ptr += cu->header.addr_size;
7314 break;
7315 case DW_FORM_data1:
7316 case DW_FORM_ref1:
7317 case DW_FORM_flag:
7318 info_ptr += 1;
7319 break;
2dc7f7b3
TT
7320 case DW_FORM_flag_present:
7321 break;
4bb7a0a7
DJ
7322 case DW_FORM_data2:
7323 case DW_FORM_ref2:
7324 info_ptr += 2;
7325 break;
7326 case DW_FORM_data4:
7327 case DW_FORM_ref4:
7328 info_ptr += 4;
7329 break;
7330 case DW_FORM_data8:
7331 case DW_FORM_ref8:
55f1336d 7332 case DW_FORM_ref_sig8:
4bb7a0a7
DJ
7333 info_ptr += 8;
7334 break;
7335 case DW_FORM_string:
9b1c24c8 7336 read_direct_string (abfd, info_ptr, &bytes_read);
4bb7a0a7
DJ
7337 info_ptr += bytes_read;
7338 break;
2dc7f7b3 7339 case DW_FORM_sec_offset:
4bb7a0a7 7340 case DW_FORM_strp:
36586728 7341 case DW_FORM_GNU_strp_alt:
4bb7a0a7
DJ
7342 info_ptr += cu->header.offset_size;
7343 break;
2dc7f7b3 7344 case DW_FORM_exprloc:
4bb7a0a7
DJ
7345 case DW_FORM_block:
7346 info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7347 info_ptr += bytes_read;
7348 break;
7349 case DW_FORM_block1:
7350 info_ptr += 1 + read_1_byte (abfd, info_ptr);
7351 break;
7352 case DW_FORM_block2:
7353 info_ptr += 2 + read_2_bytes (abfd, info_ptr);
7354 break;
7355 case DW_FORM_block4:
7356 info_ptr += 4 + read_4_bytes (abfd, info_ptr);
7357 break;
7358 case DW_FORM_sdata:
7359 case DW_FORM_udata:
7360 case DW_FORM_ref_udata:
3019eac3
DE
7361 case DW_FORM_GNU_addr_index:
7362 case DW_FORM_GNU_str_index:
d521ce57 7363 info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
4bb7a0a7
DJ
7364 break;
7365 case DW_FORM_indirect:
7366 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7367 info_ptr += bytes_read;
7368 /* We need to continue parsing from here, so just go back to
7369 the top. */
7370 goto skip_attribute;
7371
7372 default:
3e43a32a
MS
7373 error (_("Dwarf Error: Cannot handle %s "
7374 "in DWARF reader [in module %s]"),
4bb7a0a7
DJ
7375 dwarf_form_name (form),
7376 bfd_get_filename (abfd));
7377 }
7378 }
7379
7380 if (abbrev->has_children)
dee91e82 7381 return skip_children (reader, info_ptr);
4bb7a0a7
DJ
7382 else
7383 return info_ptr;
7384}
7385
93311388 7386/* Locate ORIG_PDI's sibling.
dee91e82 7387 INFO_PTR should point to the start of the next DIE after ORIG_PDI. */
91c24f0a 7388
d521ce57 7389static const gdb_byte *
dee91e82
DE
7390locate_pdi_sibling (const struct die_reader_specs *reader,
7391 struct partial_die_info *orig_pdi,
d521ce57 7392 const gdb_byte *info_ptr)
91c24f0a
DC
7393{
7394 /* Do we know the sibling already? */
72bf9492 7395
91c24f0a
DC
7396 if (orig_pdi->sibling)
7397 return orig_pdi->sibling;
7398
7399 /* Are there any children to deal with? */
7400
7401 if (!orig_pdi->has_children)
7402 return info_ptr;
7403
4bb7a0a7 7404 /* Skip the children the long way. */
91c24f0a 7405
dee91e82 7406 return skip_children (reader, info_ptr);
91c24f0a
DC
7407}
7408
257e7a09 7409/* Expand this partial symbol table into a full symbol table. SELF is
442e4d9c 7410 not NULL. */
c906108c
SS
7411
7412static void
257e7a09
YQ
7413dwarf2_read_symtab (struct partial_symtab *self,
7414 struct objfile *objfile)
c906108c 7415{
257e7a09 7416 if (self->readin)
c906108c 7417 {
442e4d9c 7418 warning (_("bug: psymtab for %s is already read in."),
257e7a09 7419 self->filename);
442e4d9c
YQ
7420 }
7421 else
7422 {
7423 if (info_verbose)
c906108c 7424 {
442e4d9c 7425 printf_filtered (_("Reading in symbols for %s..."),
257e7a09 7426 self->filename);
442e4d9c 7427 gdb_flush (gdb_stdout);
c906108c 7428 }
c906108c 7429
442e4d9c
YQ
7430 /* Restore our global data. */
7431 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
10b3939b 7432
442e4d9c
YQ
7433 /* If this psymtab is constructed from a debug-only objfile, the
7434 has_section_at_zero flag will not necessarily be correct. We
7435 can get the correct value for this flag by looking at the data
7436 associated with the (presumably stripped) associated objfile. */
7437 if (objfile->separate_debug_objfile_backlink)
7438 {
7439 struct dwarf2_per_objfile *dpo_backlink
7440 = objfile_data (objfile->separate_debug_objfile_backlink,
7441 dwarf2_objfile_data_key);
9a619af0 7442
442e4d9c
YQ
7443 dwarf2_per_objfile->has_section_at_zero
7444 = dpo_backlink->has_section_at_zero;
7445 }
b2ab525c 7446
442e4d9c 7447 dwarf2_per_objfile->reading_partial_symbols = 0;
98bfdba5 7448
257e7a09 7449 psymtab_to_symtab_1 (self);
c906108c 7450
442e4d9c
YQ
7451 /* Finish up the debug error message. */
7452 if (info_verbose)
7453 printf_filtered (_("done.\n"));
c906108c 7454 }
95554aad
TT
7455
7456 process_cu_includes ();
c906108c 7457}
9cdd5dbd
DE
7458\f
7459/* Reading in full CUs. */
c906108c 7460
10b3939b
DJ
7461/* Add PER_CU to the queue. */
7462
7463static void
95554aad
TT
7464queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
7465 enum language pretend_language)
10b3939b
DJ
7466{
7467 struct dwarf2_queue_item *item;
7468
7469 per_cu->queued = 1;
7470 item = xmalloc (sizeof (*item));
7471 item->per_cu = per_cu;
95554aad 7472 item->pretend_language = pretend_language;
10b3939b
DJ
7473 item->next = NULL;
7474
7475 if (dwarf2_queue == NULL)
7476 dwarf2_queue = item;
7477 else
7478 dwarf2_queue_tail->next = item;
7479
7480 dwarf2_queue_tail = item;
7481}
7482
89e63ee4
DE
7483/* If PER_CU is not yet queued, add it to the queue.
7484 If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
7485 dependency.
0907af0c 7486 The result is non-zero if PER_CU was queued, otherwise the result is zero
69d751e3
DE
7487 meaning either PER_CU is already queued or it is already loaded.
7488
7489 N.B. There is an invariant here that if a CU is queued then it is loaded.
7490 The caller is required to load PER_CU if we return non-zero. */
0907af0c
DE
7491
7492static int
89e63ee4 7493maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
0907af0c
DE
7494 struct dwarf2_per_cu_data *per_cu,
7495 enum language pretend_language)
7496{
7497 /* We may arrive here during partial symbol reading, if we need full
7498 DIEs to process an unusual case (e.g. template arguments). Do
7499 not queue PER_CU, just tell our caller to load its DIEs. */
7500 if (dwarf2_per_objfile->reading_partial_symbols)
7501 {
7502 if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
7503 return 1;
7504 return 0;
7505 }
7506
7507 /* Mark the dependence relation so that we don't flush PER_CU
7508 too early. */
89e63ee4
DE
7509 if (dependent_cu != NULL)
7510 dwarf2_add_dependence (dependent_cu, per_cu);
0907af0c
DE
7511
7512 /* If it's already on the queue, we have nothing to do. */
7513 if (per_cu->queued)
7514 return 0;
7515
7516 /* If the compilation unit is already loaded, just mark it as
7517 used. */
7518 if (per_cu->cu != NULL)
7519 {
7520 per_cu->cu->last_used = 0;
7521 return 0;
7522 }
7523
7524 /* Add it to the queue. */
7525 queue_comp_unit (per_cu, pretend_language);
7526
7527 return 1;
7528}
7529
10b3939b
DJ
7530/* Process the queue. */
7531
7532static void
a0f42c21 7533process_queue (void)
10b3939b
DJ
7534{
7535 struct dwarf2_queue_item *item, *next_item;
7536
b4f54984 7537 if (dwarf_read_debug)
45cfd468
DE
7538 {
7539 fprintf_unfiltered (gdb_stdlog,
7540 "Expanding one or more symtabs of objfile %s ...\n",
4262abfb 7541 objfile_name (dwarf2_per_objfile->objfile));
45cfd468
DE
7542 }
7543
03dd20cc
DJ
7544 /* The queue starts out with one item, but following a DIE reference
7545 may load a new CU, adding it to the end of the queue. */
10b3939b
DJ
7546 for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
7547 {
9291a0cd 7548 if (dwarf2_per_objfile->using_index
43f3e411 7549 ? !item->per_cu->v.quick->compunit_symtab
9291a0cd 7550 : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
f4dc4d17
DE
7551 {
7552 struct dwarf2_per_cu_data *per_cu = item->per_cu;
73be47f5 7553 unsigned int debug_print_threshold;
247f5c4f 7554 char buf[100];
f4dc4d17 7555
247f5c4f 7556 if (per_cu->is_debug_types)
f4dc4d17 7557 {
247f5c4f
DE
7558 struct signatured_type *sig_type =
7559 (struct signatured_type *) per_cu;
7560
7561 sprintf (buf, "TU %s at offset 0x%x",
73be47f5
DE
7562 hex_string (sig_type->signature),
7563 per_cu->offset.sect_off);
7564 /* There can be 100s of TUs.
7565 Only print them in verbose mode. */
7566 debug_print_threshold = 2;
f4dc4d17 7567 }
247f5c4f 7568 else
73be47f5
DE
7569 {
7570 sprintf (buf, "CU at offset 0x%x", per_cu->offset.sect_off);
7571 debug_print_threshold = 1;
7572 }
247f5c4f 7573
b4f54984 7574 if (dwarf_read_debug >= debug_print_threshold)
247f5c4f 7575 fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
f4dc4d17
DE
7576
7577 if (per_cu->is_debug_types)
7578 process_full_type_unit (per_cu, item->pretend_language);
7579 else
7580 process_full_comp_unit (per_cu, item->pretend_language);
7581
b4f54984 7582 if (dwarf_read_debug >= debug_print_threshold)
247f5c4f 7583 fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
f4dc4d17 7584 }
10b3939b
DJ
7585
7586 item->per_cu->queued = 0;
7587 next_item = item->next;
7588 xfree (item);
7589 }
7590
7591 dwarf2_queue_tail = NULL;
45cfd468 7592
b4f54984 7593 if (dwarf_read_debug)
45cfd468
DE
7594 {
7595 fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
4262abfb 7596 objfile_name (dwarf2_per_objfile->objfile));
45cfd468 7597 }
10b3939b
DJ
7598}
7599
7600/* Free all allocated queue entries. This function only releases anything if
7601 an error was thrown; if the queue was processed then it would have been
7602 freed as we went along. */
7603
7604static void
7605dwarf2_release_queue (void *dummy)
7606{
7607 struct dwarf2_queue_item *item, *last;
7608
7609 item = dwarf2_queue;
7610 while (item)
7611 {
7612 /* Anything still marked queued is likely to be in an
7613 inconsistent state, so discard it. */
7614 if (item->per_cu->queued)
7615 {
7616 if (item->per_cu->cu != NULL)
dee91e82 7617 free_one_cached_comp_unit (item->per_cu);
10b3939b
DJ
7618 item->per_cu->queued = 0;
7619 }
7620
7621 last = item;
7622 item = item->next;
7623 xfree (last);
7624 }
7625
7626 dwarf2_queue = dwarf2_queue_tail = NULL;
7627}
7628
7629/* Read in full symbols for PST, and anything it depends on. */
7630
c906108c 7631static void
fba45db2 7632psymtab_to_symtab_1 (struct partial_symtab *pst)
c906108c 7633{
10b3939b 7634 struct dwarf2_per_cu_data *per_cu;
aaa75496
JB
7635 int i;
7636
95554aad
TT
7637 if (pst->readin)
7638 return;
7639
aaa75496 7640 for (i = 0; i < pst->number_of_dependencies; i++)
95554aad
TT
7641 if (!pst->dependencies[i]->readin
7642 && pst->dependencies[i]->user == NULL)
aaa75496
JB
7643 {
7644 /* Inform about additional files that need to be read in. */
7645 if (info_verbose)
7646 {
a3f17187 7647 /* FIXME: i18n: Need to make this a single string. */
aaa75496
JB
7648 fputs_filtered (" ", gdb_stdout);
7649 wrap_here ("");
7650 fputs_filtered ("and ", gdb_stdout);
7651 wrap_here ("");
7652 printf_filtered ("%s...", pst->dependencies[i]->filename);
0963b4bd 7653 wrap_here (""); /* Flush output. */
aaa75496
JB
7654 gdb_flush (gdb_stdout);
7655 }
7656 psymtab_to_symtab_1 (pst->dependencies[i]);
7657 }
7658
e38df1d0 7659 per_cu = pst->read_symtab_private;
10b3939b
DJ
7660
7661 if (per_cu == NULL)
aaa75496
JB
7662 {
7663 /* It's an include file, no symbols to read for it.
7664 Everything is in the parent symtab. */
7665 pst->readin = 1;
7666 return;
7667 }
c906108c 7668
a0f42c21 7669 dw2_do_instantiate_symtab (per_cu);
10b3939b
DJ
7670}
7671
dee91e82
DE
7672/* Trivial hash function for die_info: the hash value of a DIE
7673 is its offset in .debug_info for this objfile. */
10b3939b 7674
dee91e82
DE
7675static hashval_t
7676die_hash (const void *item)
10b3939b 7677{
dee91e82 7678 const struct die_info *die = item;
6502dd73 7679
dee91e82
DE
7680 return die->offset.sect_off;
7681}
63d06c5c 7682
dee91e82
DE
7683/* Trivial comparison function for die_info structures: two DIEs
7684 are equal if they have the same offset. */
98bfdba5 7685
dee91e82
DE
7686static int
7687die_eq (const void *item_lhs, const void *item_rhs)
7688{
7689 const struct die_info *die_lhs = item_lhs;
7690 const struct die_info *die_rhs = item_rhs;
c906108c 7691
dee91e82
DE
7692 return die_lhs->offset.sect_off == die_rhs->offset.sect_off;
7693}
c906108c 7694
dee91e82
DE
7695/* die_reader_func for load_full_comp_unit.
7696 This is identical to read_signatured_type_reader,
7697 but is kept separate for now. */
c906108c 7698
dee91e82
DE
7699static void
7700load_full_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 7701 const gdb_byte *info_ptr,
dee91e82
DE
7702 struct die_info *comp_unit_die,
7703 int has_children,
7704 void *data)
7705{
7706 struct dwarf2_cu *cu = reader->cu;
95554aad 7707 enum language *language_ptr = data;
6caca83c 7708
dee91e82
DE
7709 gdb_assert (cu->die_hash == NULL);
7710 cu->die_hash =
7711 htab_create_alloc_ex (cu->header.length / 12,
7712 die_hash,
7713 die_eq,
7714 NULL,
7715 &cu->comp_unit_obstack,
7716 hashtab_obstack_allocate,
7717 dummy_obstack_deallocate);
e142c38c 7718
dee91e82
DE
7719 if (has_children)
7720 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
7721 &info_ptr, comp_unit_die);
7722 cu->dies = comp_unit_die;
7723 /* comp_unit_die is not stored in die_hash, no need. */
10b3939b
DJ
7724
7725 /* We try not to read any attributes in this function, because not
9cdd5dbd 7726 all CUs needed for references have been loaded yet, and symbol
10b3939b 7727 table processing isn't initialized. But we have to set the CU language,
dee91e82
DE
7728 or we won't be able to build types correctly.
7729 Similarly, if we do not read the producer, we can not apply
7730 producer-specific interpretation. */
95554aad 7731 prepare_one_comp_unit (cu, cu->dies, *language_ptr);
dee91e82 7732}
10b3939b 7733
dee91e82 7734/* Load the DIEs associated with PER_CU into memory. */
a6c727b2 7735
dee91e82 7736static void
95554aad
TT
7737load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
7738 enum language pretend_language)
dee91e82 7739{
3019eac3 7740 gdb_assert (! this_cu->is_debug_types);
c5b7e1cb 7741
f4dc4d17
DE
7742 init_cutu_and_read_dies (this_cu, NULL, 1, 1,
7743 load_full_comp_unit_reader, &pretend_language);
10b3939b
DJ
7744}
7745
3da10d80
KS
7746/* Add a DIE to the delayed physname list. */
7747
7748static void
7749add_to_method_list (struct type *type, int fnfield_index, int index,
7750 const char *name, struct die_info *die,
7751 struct dwarf2_cu *cu)
7752{
7753 struct delayed_method_info mi;
7754 mi.type = type;
7755 mi.fnfield_index = fnfield_index;
7756 mi.index = index;
7757 mi.name = name;
7758 mi.die = die;
7759 VEC_safe_push (delayed_method_info, cu->method_list, &mi);
7760}
7761
7762/* A cleanup for freeing the delayed method list. */
7763
7764static void
7765free_delayed_list (void *ptr)
7766{
7767 struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
7768 if (cu->method_list != NULL)
7769 {
7770 VEC_free (delayed_method_info, cu->method_list);
7771 cu->method_list = NULL;
7772 }
7773}
7774
7775/* Compute the physnames of any methods on the CU's method list.
7776
7777 The computation of method physnames is delayed in order to avoid the
7778 (bad) condition that one of the method's formal parameters is of an as yet
7779 incomplete type. */
7780
7781static void
7782compute_delayed_physnames (struct dwarf2_cu *cu)
7783{
7784 int i;
7785 struct delayed_method_info *mi;
7786 for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
7787 {
1d06ead6 7788 const char *physname;
3da10d80
KS
7789 struct fn_fieldlist *fn_flp
7790 = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
7d455152 7791 physname = dwarf2_physname (mi->name, mi->die, cu);
005e54bb
DE
7792 TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi->index)
7793 = physname ? physname : "";
3da10d80
KS
7794 }
7795}
7796
a766d390
DE
7797/* Go objects should be embedded in a DW_TAG_module DIE,
7798 and it's not clear if/how imported objects will appear.
7799 To keep Go support simple until that's worked out,
7800 go back through what we've read and create something usable.
7801 We could do this while processing each DIE, and feels kinda cleaner,
7802 but that way is more invasive.
7803 This is to, for example, allow the user to type "p var" or "b main"
7804 without having to specify the package name, and allow lookups
7805 of module.object to work in contexts that use the expression
7806 parser. */
7807
7808static void
7809fixup_go_packaging (struct dwarf2_cu *cu)
7810{
7811 char *package_name = NULL;
7812 struct pending *list;
7813 int i;
7814
7815 for (list = global_symbols; list != NULL; list = list->next)
7816 {
7817 for (i = 0; i < list->nsyms; ++i)
7818 {
7819 struct symbol *sym = list->symbol[i];
7820
7821 if (SYMBOL_LANGUAGE (sym) == language_go
7822 && SYMBOL_CLASS (sym) == LOC_BLOCK)
7823 {
7824 char *this_package_name = go_symbol_package_name (sym);
7825
7826 if (this_package_name == NULL)
7827 continue;
7828 if (package_name == NULL)
7829 package_name = this_package_name;
7830 else
7831 {
7832 if (strcmp (package_name, this_package_name) != 0)
7833 complaint (&symfile_complaints,
7834 _("Symtab %s has objects from two different Go packages: %s and %s"),
08be3fe3
DE
7835 (symbol_symtab (sym) != NULL
7836 ? symtab_to_filename_for_display
7837 (symbol_symtab (sym))
4262abfb 7838 : objfile_name (cu->objfile)),
a766d390
DE
7839 this_package_name, package_name);
7840 xfree (this_package_name);
7841 }
7842 }
7843 }
7844 }
7845
7846 if (package_name != NULL)
7847 {
7848 struct objfile *objfile = cu->objfile;
34a68019
TT
7849 const char *saved_package_name
7850 = obstack_copy0 (&objfile->per_bfd->storage_obstack,
7851 package_name,
7852 strlen (package_name));
a766d390 7853 struct type *type = init_type (TYPE_CODE_MODULE, 0, 0,
86f62fd7 7854 saved_package_name, objfile);
a766d390
DE
7855 struct symbol *sym;
7856
7857 TYPE_TAG_NAME (type) = TYPE_NAME (type);
7858
e623cf5d 7859 sym = allocate_symbol (objfile);
f85f34ed 7860 SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
86f62fd7
TT
7861 SYMBOL_SET_NAMES (sym, saved_package_name,
7862 strlen (saved_package_name), 0, objfile);
a766d390
DE
7863 /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
7864 e.g., "main" finds the "main" module and not C's main(). */
7865 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
f1e6e072 7866 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
a766d390
DE
7867 SYMBOL_TYPE (sym) = type;
7868
7869 add_symbol_to_list (sym, &global_symbols);
7870
7871 xfree (package_name);
7872 }
7873}
7874
95554aad
TT
7875/* Return the symtab for PER_CU. This works properly regardless of
7876 whether we're using the index or psymtabs. */
7877
43f3e411
DE
7878static struct compunit_symtab *
7879get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
95554aad
TT
7880{
7881 return (dwarf2_per_objfile->using_index
43f3e411
DE
7882 ? per_cu->v.quick->compunit_symtab
7883 : per_cu->v.psymtab->compunit_symtab);
95554aad
TT
7884}
7885
7886/* A helper function for computing the list of all symbol tables
7887 included by PER_CU. */
7888
7889static void
43f3e411 7890recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
ec94af83 7891 htab_t all_children, htab_t all_type_symtabs,
f9125b6c 7892 struct dwarf2_per_cu_data *per_cu,
43f3e411 7893 struct compunit_symtab *immediate_parent)
95554aad
TT
7894{
7895 void **slot;
7896 int ix;
43f3e411 7897 struct compunit_symtab *cust;
95554aad
TT
7898 struct dwarf2_per_cu_data *iter;
7899
7900 slot = htab_find_slot (all_children, per_cu, INSERT);
7901 if (*slot != NULL)
7902 {
7903 /* This inclusion and its children have been processed. */
7904 return;
7905 }
7906
7907 *slot = per_cu;
7908 /* Only add a CU if it has a symbol table. */
43f3e411
DE
7909 cust = get_compunit_symtab (per_cu);
7910 if (cust != NULL)
ec94af83
DE
7911 {
7912 /* If this is a type unit only add its symbol table if we haven't
7913 seen it yet (type unit per_cu's can share symtabs). */
7914 if (per_cu->is_debug_types)
7915 {
43f3e411 7916 slot = htab_find_slot (all_type_symtabs, cust, INSERT);
ec94af83
DE
7917 if (*slot == NULL)
7918 {
43f3e411
DE
7919 *slot = cust;
7920 VEC_safe_push (compunit_symtab_ptr, *result, cust);
7921 if (cust->user == NULL)
7922 cust->user = immediate_parent;
ec94af83
DE
7923 }
7924 }
7925 else
f9125b6c 7926 {
43f3e411
DE
7927 VEC_safe_push (compunit_symtab_ptr, *result, cust);
7928 if (cust->user == NULL)
7929 cust->user = immediate_parent;
f9125b6c 7930 }
ec94af83 7931 }
95554aad
TT
7932
7933 for (ix = 0;
796a7ff8 7934 VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
95554aad 7935 ++ix)
ec94af83
DE
7936 {
7937 recursively_compute_inclusions (result, all_children,
43f3e411 7938 all_type_symtabs, iter, cust);
ec94af83 7939 }
95554aad
TT
7940}
7941
43f3e411 7942/* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
95554aad
TT
7943 PER_CU. */
7944
7945static void
43f3e411 7946compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
95554aad 7947{
f4dc4d17
DE
7948 gdb_assert (! per_cu->is_debug_types);
7949
796a7ff8 7950 if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
95554aad
TT
7951 {
7952 int ix, len;
ec94af83 7953 struct dwarf2_per_cu_data *per_cu_iter;
43f3e411
DE
7954 struct compunit_symtab *compunit_symtab_iter;
7955 VEC (compunit_symtab_ptr) *result_symtabs = NULL;
ec94af83 7956 htab_t all_children, all_type_symtabs;
43f3e411 7957 struct compunit_symtab *cust = get_compunit_symtab (per_cu);
95554aad
TT
7958
7959 /* If we don't have a symtab, we can just skip this case. */
43f3e411 7960 if (cust == NULL)
95554aad
TT
7961 return;
7962
7963 all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7964 NULL, xcalloc, xfree);
ec94af83
DE
7965 all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7966 NULL, xcalloc, xfree);
95554aad
TT
7967
7968 for (ix = 0;
796a7ff8 7969 VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
ec94af83 7970 ix, per_cu_iter);
95554aad 7971 ++ix)
ec94af83
DE
7972 {
7973 recursively_compute_inclusions (&result_symtabs, all_children,
f9125b6c 7974 all_type_symtabs, per_cu_iter,
43f3e411 7975 cust);
ec94af83 7976 }
95554aad 7977
ec94af83 7978 /* Now we have a transitive closure of all the included symtabs. */
43f3e411
DE
7979 len = VEC_length (compunit_symtab_ptr, result_symtabs);
7980 cust->includes
95554aad
TT
7981 = obstack_alloc (&dwarf2_per_objfile->objfile->objfile_obstack,
7982 (len + 1) * sizeof (struct symtab *));
7983 for (ix = 0;
43f3e411
DE
7984 VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
7985 compunit_symtab_iter);
95554aad 7986 ++ix)
43f3e411
DE
7987 cust->includes[ix] = compunit_symtab_iter;
7988 cust->includes[len] = NULL;
95554aad 7989
43f3e411 7990 VEC_free (compunit_symtab_ptr, result_symtabs);
95554aad 7991 htab_delete (all_children);
ec94af83 7992 htab_delete (all_type_symtabs);
95554aad
TT
7993 }
7994}
7995
7996/* Compute the 'includes' field for the symtabs of all the CUs we just
7997 read. */
7998
7999static void
8000process_cu_includes (void)
8001{
8002 int ix;
8003 struct dwarf2_per_cu_data *iter;
8004
8005 for (ix = 0;
8006 VEC_iterate (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus,
8007 ix, iter);
8008 ++ix)
f4dc4d17
DE
8009 {
8010 if (! iter->is_debug_types)
43f3e411 8011 compute_compunit_symtab_includes (iter);
f4dc4d17 8012 }
95554aad
TT
8013
8014 VEC_free (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus);
8015}
8016
9cdd5dbd 8017/* Generate full symbol information for PER_CU, whose DIEs have
10b3939b
DJ
8018 already been loaded into memory. */
8019
8020static void
95554aad
TT
8021process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
8022 enum language pretend_language)
10b3939b 8023{
10b3939b 8024 struct dwarf2_cu *cu = per_cu->cu;
9291a0cd 8025 struct objfile *objfile = per_cu->objfile;
3e29f34a 8026 struct gdbarch *gdbarch = get_objfile_arch (objfile);
10b3939b 8027 CORE_ADDR lowpc, highpc;
43f3e411 8028 struct compunit_symtab *cust;
3da10d80 8029 struct cleanup *back_to, *delayed_list_cleanup;
10b3939b 8030 CORE_ADDR baseaddr;
4359dff1 8031 struct block *static_block;
3e29f34a 8032 CORE_ADDR addr;
10b3939b
DJ
8033
8034 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8035
10b3939b
DJ
8036 buildsym_init ();
8037 back_to = make_cleanup (really_free_pendings, NULL);
3da10d80 8038 delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
10b3939b
DJ
8039
8040 cu->list_in_scope = &file_symbols;
c906108c 8041
95554aad
TT
8042 cu->language = pretend_language;
8043 cu->language_defn = language_def (cu->language);
8044
c906108c 8045 /* Do line number decoding in read_file_scope () */
10b3939b 8046 process_die (cu->dies, cu);
c906108c 8047
a766d390
DE
8048 /* For now fudge the Go package. */
8049 if (cu->language == language_go)
8050 fixup_go_packaging (cu);
8051
3da10d80
KS
8052 /* Now that we have processed all the DIEs in the CU, all the types
8053 should be complete, and it should now be safe to compute all of the
8054 physnames. */
8055 compute_delayed_physnames (cu);
8056 do_cleanups (delayed_list_cleanup);
8057
fae299cd
DC
8058 /* Some compilers don't define a DW_AT_high_pc attribute for the
8059 compilation unit. If the DW_AT_high_pc is missing, synthesize
8060 it, by scanning the DIE's below the compilation unit. */
10b3939b 8061 get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
c906108c 8062
3e29f34a
MR
8063 addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
8064 static_block = end_symtab_get_static_block (addr, 0, 1);
4359dff1
JK
8065
8066 /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
8067 Also, DW_AT_ranges may record ranges not belonging to any child DIEs
8068 (such as virtual method tables). Record the ranges in STATIC_BLOCK's
8069 addrmap to help ensure it has an accurate map of pc values belonging to
8070 this comp unit. */
8071 dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
8072
43f3e411
DE
8073 cust = end_symtab_from_static_block (static_block,
8074 SECT_OFF_TEXT (objfile), 0);
c906108c 8075
43f3e411 8076 if (cust != NULL)
c906108c 8077 {
df15bd07 8078 int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
4632c0d0 8079
8be455d7
JK
8080 /* Set symtab language to language from DW_AT_language. If the
8081 compilation is from a C file generated by language preprocessors, do
8082 not set the language if it was already deduced by start_subfile. */
43f3e411
DE
8083 if (!(cu->language == language_c
8084 && COMPUNIT_FILETABS (cust)->language != language_c))
8085 COMPUNIT_FILETABS (cust)->language = cu->language;
8be455d7
JK
8086
8087 /* GCC-4.0 has started to support -fvar-tracking. GCC-3.x still can
8088 produce DW_AT_location with location lists but it can be possibly
ab260dad
JK
8089 invalid without -fvar-tracking. Still up to GCC-4.4.x incl. 4.4.0
8090 there were bugs in prologue debug info, fixed later in GCC-4.5
8091 by "unwind info for epilogues" patch (which is not directly related).
8be455d7
JK
8092
8093 For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
8094 needed, it would be wrong due to missing DW_AT_producer there.
8095
8096 Still one can confuse GDB by using non-standard GCC compilation
8097 options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
8098 */
ab260dad 8099 if (cu->has_loclist && gcc_4_minor >= 5)
43f3e411 8100 cust->locations_valid = 1;
e0d00bc7
JK
8101
8102 if (gcc_4_minor >= 5)
43f3e411 8103 cust->epilogue_unwind_valid = 1;
96408a79 8104
43f3e411 8105 cust->call_site_htab = cu->call_site_htab;
c906108c 8106 }
9291a0cd
TT
8107
8108 if (dwarf2_per_objfile->using_index)
43f3e411 8109 per_cu->v.quick->compunit_symtab = cust;
9291a0cd
TT
8110 else
8111 {
8112 struct partial_symtab *pst = per_cu->v.psymtab;
43f3e411 8113 pst->compunit_symtab = cust;
9291a0cd
TT
8114 pst->readin = 1;
8115 }
c906108c 8116
95554aad
TT
8117 /* Push it for inclusion processing later. */
8118 VEC_safe_push (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus, per_cu);
8119
c906108c 8120 do_cleanups (back_to);
f4dc4d17 8121}
45cfd468 8122
f4dc4d17
DE
8123/* Generate full symbol information for type unit PER_CU, whose DIEs have
8124 already been loaded into memory. */
8125
8126static void
8127process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
8128 enum language pretend_language)
8129{
8130 struct dwarf2_cu *cu = per_cu->cu;
8131 struct objfile *objfile = per_cu->objfile;
43f3e411 8132 struct compunit_symtab *cust;
f4dc4d17 8133 struct cleanup *back_to, *delayed_list_cleanup;
0186c6a7
DE
8134 struct signatured_type *sig_type;
8135
8136 gdb_assert (per_cu->is_debug_types);
8137 sig_type = (struct signatured_type *) per_cu;
f4dc4d17
DE
8138
8139 buildsym_init ();
8140 back_to = make_cleanup (really_free_pendings, NULL);
8141 delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
8142
8143 cu->list_in_scope = &file_symbols;
8144
8145 cu->language = pretend_language;
8146 cu->language_defn = language_def (cu->language);
8147
8148 /* The symbol tables are set up in read_type_unit_scope. */
8149 process_die (cu->dies, cu);
8150
8151 /* For now fudge the Go package. */
8152 if (cu->language == language_go)
8153 fixup_go_packaging (cu);
8154
8155 /* Now that we have processed all the DIEs in the CU, all the types
8156 should be complete, and it should now be safe to compute all of the
8157 physnames. */
8158 compute_delayed_physnames (cu);
8159 do_cleanups (delayed_list_cleanup);
8160
8161 /* TUs share symbol tables.
8162 If this is the first TU to use this symtab, complete the construction
094b34ac
DE
8163 of it with end_expandable_symtab. Otherwise, complete the addition of
8164 this TU's symbols to the existing symtab. */
43f3e411 8165 if (sig_type->type_unit_group->compunit_symtab == NULL)
45cfd468 8166 {
43f3e411
DE
8167 cust = end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
8168 sig_type->type_unit_group->compunit_symtab = cust;
f4dc4d17 8169
43f3e411 8170 if (cust != NULL)
f4dc4d17
DE
8171 {
8172 /* Set symtab language to language from DW_AT_language. If the
8173 compilation is from a C file generated by language preprocessors,
8174 do not set the language if it was already deduced by
8175 start_subfile. */
43f3e411
DE
8176 if (!(cu->language == language_c
8177 && COMPUNIT_FILETABS (cust)->language != language_c))
8178 COMPUNIT_FILETABS (cust)->language = cu->language;
f4dc4d17
DE
8179 }
8180 }
8181 else
8182 {
0ab9ce85 8183 augment_type_symtab ();
43f3e411 8184 cust = sig_type->type_unit_group->compunit_symtab;
f4dc4d17
DE
8185 }
8186
8187 if (dwarf2_per_objfile->using_index)
43f3e411 8188 per_cu->v.quick->compunit_symtab = cust;
f4dc4d17
DE
8189 else
8190 {
8191 struct partial_symtab *pst = per_cu->v.psymtab;
43f3e411 8192 pst->compunit_symtab = cust;
f4dc4d17 8193 pst->readin = 1;
45cfd468 8194 }
f4dc4d17
DE
8195
8196 do_cleanups (back_to);
c906108c
SS
8197}
8198
95554aad
TT
8199/* Process an imported unit DIE. */
8200
8201static void
8202process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
8203{
8204 struct attribute *attr;
8205
f4dc4d17
DE
8206 /* For now we don't handle imported units in type units. */
8207 if (cu->per_cu->is_debug_types)
8208 {
8209 error (_("Dwarf Error: DW_TAG_imported_unit is not"
8210 " supported in type units [in module %s]"),
4262abfb 8211 objfile_name (cu->objfile));
f4dc4d17
DE
8212 }
8213
95554aad
TT
8214 attr = dwarf2_attr (die, DW_AT_import, cu);
8215 if (attr != NULL)
8216 {
8217 struct dwarf2_per_cu_data *per_cu;
8218 struct symtab *imported_symtab;
8219 sect_offset offset;
36586728 8220 int is_dwz;
95554aad
TT
8221
8222 offset = dwarf2_get_ref_die_offset (attr);
36586728
TT
8223 is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
8224 per_cu = dwarf2_find_containing_comp_unit (offset, is_dwz, cu->objfile);
95554aad 8225
69d751e3 8226 /* If necessary, add it to the queue and load its DIEs. */
95554aad
TT
8227 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
8228 load_full_comp_unit (per_cu, cu->language);
8229
796a7ff8 8230 VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
95554aad
TT
8231 per_cu);
8232 }
8233}
8234
adde2bff
DE
8235/* Reset the in_process bit of a die. */
8236
8237static void
8238reset_die_in_process (void *arg)
8239{
8240 struct die_info *die = arg;
8c3cb9fa 8241
adde2bff
DE
8242 die->in_process = 0;
8243}
8244
c906108c
SS
8245/* Process a die and its children. */
8246
8247static void
e7c27a73 8248process_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 8249{
adde2bff
DE
8250 struct cleanup *in_process;
8251
8252 /* We should only be processing those not already in process. */
8253 gdb_assert (!die->in_process);
8254
8255 die->in_process = 1;
8256 in_process = make_cleanup (reset_die_in_process,die);
8257
c906108c
SS
8258 switch (die->tag)
8259 {
8260 case DW_TAG_padding:
8261 break;
8262 case DW_TAG_compile_unit:
95554aad 8263 case DW_TAG_partial_unit:
e7c27a73 8264 read_file_scope (die, cu);
c906108c 8265 break;
348e048f
DE
8266 case DW_TAG_type_unit:
8267 read_type_unit_scope (die, cu);
8268 break;
c906108c 8269 case DW_TAG_subprogram:
c906108c 8270 case DW_TAG_inlined_subroutine:
edb3359d 8271 read_func_scope (die, cu);
c906108c
SS
8272 break;
8273 case DW_TAG_lexical_block:
14898363
L
8274 case DW_TAG_try_block:
8275 case DW_TAG_catch_block:
e7c27a73 8276 read_lexical_block_scope (die, cu);
c906108c 8277 break;
96408a79
SA
8278 case DW_TAG_GNU_call_site:
8279 read_call_site_scope (die, cu);
8280 break;
c906108c 8281 case DW_TAG_class_type:
680b30c7 8282 case DW_TAG_interface_type:
c906108c
SS
8283 case DW_TAG_structure_type:
8284 case DW_TAG_union_type:
134d01f1 8285 process_structure_scope (die, cu);
c906108c
SS
8286 break;
8287 case DW_TAG_enumeration_type:
134d01f1 8288 process_enumeration_scope (die, cu);
c906108c 8289 break;
134d01f1 8290
f792889a
DJ
8291 /* These dies have a type, but processing them does not create
8292 a symbol or recurse to process the children. Therefore we can
8293 read them on-demand through read_type_die. */
c906108c 8294 case DW_TAG_subroutine_type:
72019c9c 8295 case DW_TAG_set_type:
c906108c 8296 case DW_TAG_array_type:
c906108c 8297 case DW_TAG_pointer_type:
c906108c 8298 case DW_TAG_ptr_to_member_type:
c906108c 8299 case DW_TAG_reference_type:
c906108c 8300 case DW_TAG_string_type:
c906108c 8301 break;
134d01f1 8302
c906108c 8303 case DW_TAG_base_type:
a02abb62 8304 case DW_TAG_subrange_type:
cb249c71 8305 case DW_TAG_typedef:
134d01f1
DJ
8306 /* Add a typedef symbol for the type definition, if it has a
8307 DW_AT_name. */
f792889a 8308 new_symbol (die, read_type_die (die, cu), cu);
a02abb62 8309 break;
c906108c 8310 case DW_TAG_common_block:
e7c27a73 8311 read_common_block (die, cu);
c906108c
SS
8312 break;
8313 case DW_TAG_common_inclusion:
8314 break;
d9fa45fe 8315 case DW_TAG_namespace:
4d4ec4e5 8316 cu->processing_has_namespace_info = 1;
e7c27a73 8317 read_namespace (die, cu);
d9fa45fe 8318 break;
5d7cb8df 8319 case DW_TAG_module:
4d4ec4e5 8320 cu->processing_has_namespace_info = 1;
5d7cb8df
JK
8321 read_module (die, cu);
8322 break;
d9fa45fe 8323 case DW_TAG_imported_declaration:
74921315
KS
8324 cu->processing_has_namespace_info = 1;
8325 if (read_namespace_alias (die, cu))
8326 break;
8327 /* The declaration is not a global namespace alias: fall through. */
d9fa45fe 8328 case DW_TAG_imported_module:
4d4ec4e5 8329 cu->processing_has_namespace_info = 1;
27aa8d6a
SW
8330 if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
8331 || cu->language != language_fortran))
8332 complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
8333 dwarf_tag_name (die->tag));
8334 read_import_statement (die, cu);
d9fa45fe 8335 break;
95554aad
TT
8336
8337 case DW_TAG_imported_unit:
8338 process_imported_unit_die (die, cu);
8339 break;
8340
c906108c 8341 default:
e7c27a73 8342 new_symbol (die, NULL, cu);
c906108c
SS
8343 break;
8344 }
adde2bff
DE
8345
8346 do_cleanups (in_process);
c906108c 8347}
ca69b9e6
DE
8348\f
8349/* DWARF name computation. */
c906108c 8350
94af9270
KS
8351/* A helper function for dwarf2_compute_name which determines whether DIE
8352 needs to have the name of the scope prepended to the name listed in the
8353 die. */
8354
8355static int
8356die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
8357{
1c809c68
TT
8358 struct attribute *attr;
8359
94af9270
KS
8360 switch (die->tag)
8361 {
8362 case DW_TAG_namespace:
8363 case DW_TAG_typedef:
8364 case DW_TAG_class_type:
8365 case DW_TAG_interface_type:
8366 case DW_TAG_structure_type:
8367 case DW_TAG_union_type:
8368 case DW_TAG_enumeration_type:
8369 case DW_TAG_enumerator:
8370 case DW_TAG_subprogram:
08a76f8a 8371 case DW_TAG_inlined_subroutine:
94af9270 8372 case DW_TAG_member:
74921315 8373 case DW_TAG_imported_declaration:
94af9270
KS
8374 return 1;
8375
8376 case DW_TAG_variable:
c2b0a229 8377 case DW_TAG_constant:
94af9270
KS
8378 /* We only need to prefix "globally" visible variables. These include
8379 any variable marked with DW_AT_external or any variable that
8380 lives in a namespace. [Variables in anonymous namespaces
8381 require prefixing, but they are not DW_AT_external.] */
8382
8383 if (dwarf2_attr (die, DW_AT_specification, cu))
8384 {
8385 struct dwarf2_cu *spec_cu = cu;
9a619af0 8386
94af9270
KS
8387 return die_needs_namespace (die_specification (die, &spec_cu),
8388 spec_cu);
8389 }
8390
1c809c68 8391 attr = dwarf2_attr (die, DW_AT_external, cu);
f55ee35c
JK
8392 if (attr == NULL && die->parent->tag != DW_TAG_namespace
8393 && die->parent->tag != DW_TAG_module)
1c809c68
TT
8394 return 0;
8395 /* A variable in a lexical block of some kind does not need a
8396 namespace, even though in C++ such variables may be external
8397 and have a mangled name. */
8398 if (die->parent->tag == DW_TAG_lexical_block
8399 || die->parent->tag == DW_TAG_try_block
1054b214
TT
8400 || die->parent->tag == DW_TAG_catch_block
8401 || die->parent->tag == DW_TAG_subprogram)
1c809c68
TT
8402 return 0;
8403 return 1;
94af9270
KS
8404
8405 default:
8406 return 0;
8407 }
8408}
8409
98bfdba5
PA
8410/* Retrieve the last character from a mem_file. */
8411
8412static void
8413do_ui_file_peek_last (void *object, const char *buffer, long length)
8414{
8415 char *last_char_p = (char *) object;
8416
8417 if (length > 0)
8418 *last_char_p = buffer[length - 1];
8419}
8420
94af9270 8421/* Compute the fully qualified name of DIE in CU. If PHYSNAME is nonzero,
a766d390
DE
8422 compute the physname for the object, which include a method's:
8423 - formal parameters (C++/Java),
8424 - receiver type (Go),
8425 - return type (Java).
8426
8427 The term "physname" is a bit confusing.
8428 For C++, for example, it is the demangled name.
8429 For Go, for example, it's the mangled name.
94af9270 8430
af6b7be1
JB
8431 For Ada, return the DIE's linkage name rather than the fully qualified
8432 name. PHYSNAME is ignored..
8433
94af9270
KS
8434 The result is allocated on the objfile_obstack and canonicalized. */
8435
8436static const char *
15d034d0
TT
8437dwarf2_compute_name (const char *name,
8438 struct die_info *die, struct dwarf2_cu *cu,
94af9270
KS
8439 int physname)
8440{
bb5ed363
DE
8441 struct objfile *objfile = cu->objfile;
8442
94af9270
KS
8443 if (name == NULL)
8444 name = dwarf2_name (die, cu);
8445
f55ee35c
JK
8446 /* For Fortran GDB prefers DW_AT_*linkage_name if present but otherwise
8447 compute it by typename_concat inside GDB. */
8448 if (cu->language == language_ada
8449 || (cu->language == language_fortran && physname))
8450 {
8451 /* For Ada unit, we prefer the linkage name over the name, as
8452 the former contains the exported name, which the user expects
8453 to be able to reference. Ideally, we want the user to be able
8454 to reference this entity using either natural or linkage name,
8455 but we haven't started looking at this enhancement yet. */
8456 struct attribute *attr;
8457
8458 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8459 if (attr == NULL)
8460 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8461 if (attr && DW_STRING (attr))
8462 return DW_STRING (attr);
8463 }
8464
94af9270
KS
8465 /* These are the only languages we know how to qualify names in. */
8466 if (name != NULL
f55ee35c
JK
8467 && (cu->language == language_cplus || cu->language == language_java
8468 || cu->language == language_fortran))
94af9270
KS
8469 {
8470 if (die_needs_namespace (die, cu))
8471 {
8472 long length;
0d5cff50 8473 const char *prefix;
94af9270 8474 struct ui_file *buf;
34a68019
TT
8475 char *intermediate_name;
8476 const char *canonical_name = NULL;
94af9270
KS
8477
8478 prefix = determine_prefix (die, cu);
8479 buf = mem_fileopen ();
8480 if (*prefix != '\0')
8481 {
f55ee35c
JK
8482 char *prefixed_name = typename_concat (NULL, prefix, name,
8483 physname, cu);
9a619af0 8484
94af9270
KS
8485 fputs_unfiltered (prefixed_name, buf);
8486 xfree (prefixed_name);
8487 }
8488 else
62d5b8da 8489 fputs_unfiltered (name, buf);
94af9270 8490
98bfdba5
PA
8491 /* Template parameters may be specified in the DIE's DW_AT_name, or
8492 as children with DW_TAG_template_type_param or
8493 DW_TAG_value_type_param. If the latter, add them to the name
8494 here. If the name already has template parameters, then
8495 skip this step; some versions of GCC emit both, and
8496 it is more efficient to use the pre-computed name.
8497
8498 Something to keep in mind about this process: it is very
8499 unlikely, or in some cases downright impossible, to produce
8500 something that will match the mangled name of a function.
8501 If the definition of the function has the same debug info,
8502 we should be able to match up with it anyway. But fallbacks
8503 using the minimal symbol, for instance to find a method
8504 implemented in a stripped copy of libstdc++, will not work.
8505 If we do not have debug info for the definition, we will have to
8506 match them up some other way.
8507
8508 When we do name matching there is a related problem with function
8509 templates; two instantiated function templates are allowed to
8510 differ only by their return types, which we do not add here. */
8511
8512 if (cu->language == language_cplus && strchr (name, '<') == NULL)
8513 {
8514 struct attribute *attr;
8515 struct die_info *child;
8516 int first = 1;
8517
8518 die->building_fullname = 1;
8519
8520 for (child = die->child; child != NULL; child = child->sibling)
8521 {
8522 struct type *type;
12df843f 8523 LONGEST value;
d521ce57 8524 const gdb_byte *bytes;
98bfdba5
PA
8525 struct dwarf2_locexpr_baton *baton;
8526 struct value *v;
8527
8528 if (child->tag != DW_TAG_template_type_param
8529 && child->tag != DW_TAG_template_value_param)
8530 continue;
8531
8532 if (first)
8533 {
8534 fputs_unfiltered ("<", buf);
8535 first = 0;
8536 }
8537 else
8538 fputs_unfiltered (", ", buf);
8539
8540 attr = dwarf2_attr (child, DW_AT_type, cu);
8541 if (attr == NULL)
8542 {
8543 complaint (&symfile_complaints,
8544 _("template parameter missing DW_AT_type"));
8545 fputs_unfiltered ("UNKNOWN_TYPE", buf);
8546 continue;
8547 }
8548 type = die_type (child, cu);
8549
8550 if (child->tag == DW_TAG_template_type_param)
8551 {
79d43c61 8552 c_print_type (type, "", buf, -1, 0, &type_print_raw_options);
98bfdba5
PA
8553 continue;
8554 }
8555
8556 attr = dwarf2_attr (child, DW_AT_const_value, cu);
8557 if (attr == NULL)
8558 {
8559 complaint (&symfile_complaints,
3e43a32a
MS
8560 _("template parameter missing "
8561 "DW_AT_const_value"));
98bfdba5
PA
8562 fputs_unfiltered ("UNKNOWN_VALUE", buf);
8563 continue;
8564 }
8565
8566 dwarf2_const_value_attr (attr, type, name,
8567 &cu->comp_unit_obstack, cu,
8568 &value, &bytes, &baton);
8569
8570 if (TYPE_NOSIGN (type))
8571 /* GDB prints characters as NUMBER 'CHAR'. If that's
8572 changed, this can use value_print instead. */
8573 c_printchar (value, type, buf);
8574 else
8575 {
8576 struct value_print_options opts;
8577
8578 if (baton != NULL)
8579 v = dwarf2_evaluate_loc_desc (type, NULL,
8580 baton->data,
8581 baton->size,
8582 baton->per_cu);
8583 else if (bytes != NULL)
8584 {
8585 v = allocate_value (type);
8586 memcpy (value_contents_writeable (v), bytes,
8587 TYPE_LENGTH (type));
8588 }
8589 else
8590 v = value_from_longest (type, value);
8591
3e43a32a
MS
8592 /* Specify decimal so that we do not depend on
8593 the radix. */
98bfdba5
PA
8594 get_formatted_print_options (&opts, 'd');
8595 opts.raw = 1;
8596 value_print (v, buf, &opts);
8597 release_value (v);
8598 value_free (v);
8599 }
8600 }
8601
8602 die->building_fullname = 0;
8603
8604 if (!first)
8605 {
8606 /* Close the argument list, with a space if necessary
8607 (nested templates). */
8608 char last_char = '\0';
8609 ui_file_put (buf, do_ui_file_peek_last, &last_char);
8610 if (last_char == '>')
8611 fputs_unfiltered (" >", buf);
8612 else
8613 fputs_unfiltered (">", buf);
8614 }
8615 }
8616
94af9270
KS
8617 /* For Java and C++ methods, append formal parameter type
8618 information, if PHYSNAME. */
6e70227d 8619
94af9270
KS
8620 if (physname && die->tag == DW_TAG_subprogram
8621 && (cu->language == language_cplus
8622 || cu->language == language_java))
8623 {
8624 struct type *type = read_type_die (die, cu);
8625
79d43c61
TT
8626 c_type_print_args (type, buf, 1, cu->language,
8627 &type_print_raw_options);
94af9270
KS
8628
8629 if (cu->language == language_java)
8630 {
8631 /* For java, we must append the return type to method
0963b4bd 8632 names. */
94af9270
KS
8633 if (die->tag == DW_TAG_subprogram)
8634 java_print_type (TYPE_TARGET_TYPE (type), "", buf,
79d43c61 8635 0, 0, &type_print_raw_options);
94af9270
KS
8636 }
8637 else if (cu->language == language_cplus)
8638 {
60430eff
DJ
8639 /* Assume that an artificial first parameter is
8640 "this", but do not crash if it is not. RealView
8641 marks unnamed (and thus unused) parameters as
8642 artificial; there is no way to differentiate
8643 the two cases. */
94af9270
KS
8644 if (TYPE_NFIELDS (type) > 0
8645 && TYPE_FIELD_ARTIFICIAL (type, 0)
60430eff 8646 && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
3e43a32a
MS
8647 && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
8648 0))))
94af9270
KS
8649 fputs_unfiltered (" const", buf);
8650 }
8651 }
8652
34a68019 8653 intermediate_name = ui_file_xstrdup (buf, &length);
94af9270
KS
8654 ui_file_delete (buf);
8655
8656 if (cu->language == language_cplus)
34a68019
TT
8657 canonical_name
8658 = dwarf2_canonicalize_name (intermediate_name, cu,
8659 &objfile->per_bfd->storage_obstack);
8660
8661 /* If we only computed INTERMEDIATE_NAME, or if
8662 INTERMEDIATE_NAME is already canonical, then we need to
8663 copy it to the appropriate obstack. */
8664 if (canonical_name == NULL || canonical_name == intermediate_name)
8665 name = obstack_copy0 (&objfile->per_bfd->storage_obstack,
8666 intermediate_name,
8667 strlen (intermediate_name));
8668 else
8669 name = canonical_name;
9a619af0 8670
34a68019 8671 xfree (intermediate_name);
94af9270
KS
8672 }
8673 }
8674
8675 return name;
8676}
8677
0114d602
DJ
8678/* Return the fully qualified name of DIE, based on its DW_AT_name.
8679 If scope qualifiers are appropriate they will be added. The result
34a68019 8680 will be allocated on the storage_obstack, or NULL if the DIE does
94af9270
KS
8681 not have a name. NAME may either be from a previous call to
8682 dwarf2_name or NULL.
8683
0963b4bd 8684 The output string will be canonicalized (if C++/Java). */
0114d602
DJ
8685
8686static const char *
15d034d0 8687dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
0114d602 8688{
94af9270
KS
8689 return dwarf2_compute_name (name, die, cu, 0);
8690}
0114d602 8691
94af9270
KS
8692/* Construct a physname for the given DIE in CU. NAME may either be
8693 from a previous call to dwarf2_name or NULL. The result will be
8694 allocated on the objfile_objstack or NULL if the DIE does not have a
8695 name.
0114d602 8696
94af9270 8697 The output string will be canonicalized (if C++/Java). */
0114d602 8698
94af9270 8699static const char *
15d034d0 8700dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
94af9270 8701{
bb5ed363 8702 struct objfile *objfile = cu->objfile;
900e11f9
JK
8703 struct attribute *attr;
8704 const char *retval, *mangled = NULL, *canon = NULL;
8705 struct cleanup *back_to;
8706 int need_copy = 1;
8707
8708 /* In this case dwarf2_compute_name is just a shortcut not building anything
8709 on its own. */
8710 if (!die_needs_namespace (die, cu))
8711 return dwarf2_compute_name (name, die, cu, 1);
8712
8713 back_to = make_cleanup (null_cleanup, NULL);
8714
8715 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8716 if (!attr)
8717 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8718
8719 /* DW_AT_linkage_name is missing in some cases - depend on what GDB
8720 has computed. */
8721 if (attr && DW_STRING (attr))
8722 {
8723 char *demangled;
8724
8725 mangled = DW_STRING (attr);
8726
8727 /* Use DMGL_RET_DROP for C++ template functions to suppress their return
8728 type. It is easier for GDB users to search for such functions as
8729 `name(params)' than `long name(params)'. In such case the minimal
8730 symbol names do not match the full symbol names but for template
8731 functions there is never a need to look up their definition from their
8732 declaration so the only disadvantage remains the minimal symbol
8733 variant `long name(params)' does not have the proper inferior type.
8734 */
8735
a766d390
DE
8736 if (cu->language == language_go)
8737 {
8738 /* This is a lie, but we already lie to the caller new_symbol_full.
8739 new_symbol_full assumes we return the mangled name.
8740 This just undoes that lie until things are cleaned up. */
8741 demangled = NULL;
8742 }
8743 else
8744 {
8de20a37
TT
8745 demangled = gdb_demangle (mangled,
8746 (DMGL_PARAMS | DMGL_ANSI
8747 | (cu->language == language_java
8748 ? DMGL_JAVA | DMGL_RET_POSTFIX
8749 : DMGL_RET_DROP)));
a766d390 8750 }
900e11f9
JK
8751 if (demangled)
8752 {
8753 make_cleanup (xfree, demangled);
8754 canon = demangled;
8755 }
8756 else
8757 {
8758 canon = mangled;
8759 need_copy = 0;
8760 }
8761 }
8762
8763 if (canon == NULL || check_physname)
8764 {
8765 const char *physname = dwarf2_compute_name (name, die, cu, 1);
8766
8767 if (canon != NULL && strcmp (physname, canon) != 0)
8768 {
8769 /* It may not mean a bug in GDB. The compiler could also
8770 compute DW_AT_linkage_name incorrectly. But in such case
8771 GDB would need to be bug-to-bug compatible. */
8772
8773 complaint (&symfile_complaints,
8774 _("Computed physname <%s> does not match demangled <%s> "
8775 "(from linkage <%s>) - DIE at 0x%x [in module %s]"),
4262abfb
JK
8776 physname, canon, mangled, die->offset.sect_off,
8777 objfile_name (objfile));
900e11f9
JK
8778
8779 /* Prefer DW_AT_linkage_name (in the CANON form) - when it
8780 is available here - over computed PHYSNAME. It is safer
8781 against both buggy GDB and buggy compilers. */
8782
8783 retval = canon;
8784 }
8785 else
8786 {
8787 retval = physname;
8788 need_copy = 0;
8789 }
8790 }
8791 else
8792 retval = canon;
8793
8794 if (need_copy)
34a68019
TT
8795 retval = obstack_copy0 (&objfile->per_bfd->storage_obstack,
8796 retval, strlen (retval));
900e11f9
JK
8797
8798 do_cleanups (back_to);
8799 return retval;
0114d602
DJ
8800}
8801
74921315
KS
8802/* Inspect DIE in CU for a namespace alias. If one exists, record
8803 a new symbol for it.
8804
8805 Returns 1 if a namespace alias was recorded, 0 otherwise. */
8806
8807static int
8808read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
8809{
8810 struct attribute *attr;
8811
8812 /* If the die does not have a name, this is not a namespace
8813 alias. */
8814 attr = dwarf2_attr (die, DW_AT_name, cu);
8815 if (attr != NULL)
8816 {
8817 int num;
8818 struct die_info *d = die;
8819 struct dwarf2_cu *imported_cu = cu;
8820
8821 /* If the compiler has nested DW_AT_imported_declaration DIEs,
8822 keep inspecting DIEs until we hit the underlying import. */
8823#define MAX_NESTED_IMPORTED_DECLARATIONS 100
8824 for (num = 0; num < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
8825 {
8826 attr = dwarf2_attr (d, DW_AT_import, cu);
8827 if (attr == NULL)
8828 break;
8829
8830 d = follow_die_ref (d, attr, &imported_cu);
8831 if (d->tag != DW_TAG_imported_declaration)
8832 break;
8833 }
8834
8835 if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
8836 {
8837 complaint (&symfile_complaints,
8838 _("DIE at 0x%x has too many recursively imported "
8839 "declarations"), d->offset.sect_off);
8840 return 0;
8841 }
8842
8843 if (attr != NULL)
8844 {
8845 struct type *type;
8846 sect_offset offset = dwarf2_get_ref_die_offset (attr);
8847
8848 type = get_die_type_at_offset (offset, cu->per_cu);
8849 if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
8850 {
8851 /* This declaration is a global namespace alias. Add
8852 a symbol for it whose type is the aliased namespace. */
8853 new_symbol (die, type, cu);
8854 return 1;
8855 }
8856 }
8857 }
8858
8859 return 0;
8860}
8861
27aa8d6a
SW
8862/* Read the import statement specified by the given die and record it. */
8863
8864static void
8865read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
8866{
bb5ed363 8867 struct objfile *objfile = cu->objfile;
27aa8d6a 8868 struct attribute *import_attr;
32019081 8869 struct die_info *imported_die, *child_die;
de4affc9 8870 struct dwarf2_cu *imported_cu;
27aa8d6a 8871 const char *imported_name;
794684b6 8872 const char *imported_name_prefix;
13387711
SW
8873 const char *canonical_name;
8874 const char *import_alias;
8875 const char *imported_declaration = NULL;
794684b6 8876 const char *import_prefix;
32019081
JK
8877 VEC (const_char_ptr) *excludes = NULL;
8878 struct cleanup *cleanups;
13387711 8879
27aa8d6a
SW
8880 import_attr = dwarf2_attr (die, DW_AT_import, cu);
8881 if (import_attr == NULL)
8882 {
8883 complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8884 dwarf_tag_name (die->tag));
8885 return;
8886 }
8887
de4affc9
CC
8888 imported_cu = cu;
8889 imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
8890 imported_name = dwarf2_name (imported_die, imported_cu);
27aa8d6a
SW
8891 if (imported_name == NULL)
8892 {
8893 /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
8894
8895 The import in the following code:
8896 namespace A
8897 {
8898 typedef int B;
8899 }
8900
8901 int main ()
8902 {
8903 using A::B;
8904 B b;
8905 return b;
8906 }
8907
8908 ...
8909 <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
8910 <52> DW_AT_decl_file : 1
8911 <53> DW_AT_decl_line : 6
8912 <54> DW_AT_import : <0x75>
8913 <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
8914 <59> DW_AT_name : B
8915 <5b> DW_AT_decl_file : 1
8916 <5c> DW_AT_decl_line : 2
8917 <5d> DW_AT_type : <0x6e>
8918 ...
8919 <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
8920 <76> DW_AT_byte_size : 4
8921 <77> DW_AT_encoding : 5 (signed)
8922
8923 imports the wrong die ( 0x75 instead of 0x58 ).
8924 This case will be ignored until the gcc bug is fixed. */
8925 return;
8926 }
8927
82856980
SW
8928 /* Figure out the local name after import. */
8929 import_alias = dwarf2_name (die, cu);
27aa8d6a 8930
794684b6
SW
8931 /* Figure out where the statement is being imported to. */
8932 import_prefix = determine_prefix (die, cu);
8933
8934 /* Figure out what the scope of the imported die is and prepend it
8935 to the name of the imported die. */
de4affc9 8936 imported_name_prefix = determine_prefix (imported_die, imported_cu);
794684b6 8937
f55ee35c
JK
8938 if (imported_die->tag != DW_TAG_namespace
8939 && imported_die->tag != DW_TAG_module)
794684b6 8940 {
13387711
SW
8941 imported_declaration = imported_name;
8942 canonical_name = imported_name_prefix;
794684b6 8943 }
13387711 8944 else if (strlen (imported_name_prefix) > 0)
12aaed36
TT
8945 canonical_name = obconcat (&objfile->objfile_obstack,
8946 imported_name_prefix, "::", imported_name,
8947 (char *) NULL);
13387711
SW
8948 else
8949 canonical_name = imported_name;
794684b6 8950
32019081
JK
8951 cleanups = make_cleanup (VEC_cleanup (const_char_ptr), &excludes);
8952
8953 if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
8954 for (child_die = die->child; child_die && child_die->tag;
8955 child_die = sibling_die (child_die))
8956 {
8957 /* DWARF-4: A Fortran use statement with a “rename list” may be
8958 represented by an imported module entry with an import attribute
8959 referring to the module and owned entries corresponding to those
8960 entities that are renamed as part of being imported. */
8961
8962 if (child_die->tag != DW_TAG_imported_declaration)
8963 {
8964 complaint (&symfile_complaints,
8965 _("child DW_TAG_imported_declaration expected "
8966 "- DIE at 0x%x [in module %s]"),
4262abfb 8967 child_die->offset.sect_off, objfile_name (objfile));
32019081
JK
8968 continue;
8969 }
8970
8971 import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
8972 if (import_attr == NULL)
8973 {
8974 complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8975 dwarf_tag_name (child_die->tag));
8976 continue;
8977 }
8978
8979 imported_cu = cu;
8980 imported_die = follow_die_ref_or_sig (child_die, import_attr,
8981 &imported_cu);
8982 imported_name = dwarf2_name (imported_die, imported_cu);
8983 if (imported_name == NULL)
8984 {
8985 complaint (&symfile_complaints,
8986 _("child DW_TAG_imported_declaration has unknown "
8987 "imported name - DIE at 0x%x [in module %s]"),
4262abfb 8988 child_die->offset.sect_off, objfile_name (objfile));
32019081
JK
8989 continue;
8990 }
8991
8992 VEC_safe_push (const_char_ptr, excludes, imported_name);
8993
8994 process_die (child_die, cu);
8995 }
8996
c0cc3a76
SW
8997 cp_add_using_directive (import_prefix,
8998 canonical_name,
8999 import_alias,
13387711 9000 imported_declaration,
32019081 9001 excludes,
12aaed36 9002 0,
bb5ed363 9003 &objfile->objfile_obstack);
32019081
JK
9004
9005 do_cleanups (cleanups);
27aa8d6a
SW
9006}
9007
f4dc4d17 9008/* Cleanup function for handle_DW_AT_stmt_list. */
ae2de4f8 9009
cb1df416
DJ
9010static void
9011free_cu_line_header (void *arg)
9012{
9013 struct dwarf2_cu *cu = arg;
9014
9015 free_line_header (cu->line_header);
9016 cu->line_header = NULL;
9017}
9018
1b80a9fa
JK
9019/* Check for possibly missing DW_AT_comp_dir with relative .debug_line
9020 directory paths. GCC SVN r127613 (new option -fdebug-prefix-map) fixed
9021 this, it was first present in GCC release 4.3.0. */
9022
9023static int
9024producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
9025{
9026 if (!cu->checked_producer)
9027 check_producer (cu);
9028
9029 return cu->producer_is_gcc_lt_4_3;
9030}
9031
9291a0cd
TT
9032static void
9033find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu,
15d034d0 9034 const char **name, const char **comp_dir)
9291a0cd
TT
9035{
9036 struct attribute *attr;
9037
9038 *name = NULL;
9039 *comp_dir = NULL;
9040
9041 /* Find the filename. Do not use dwarf2_name here, since the filename
9042 is not a source language identifier. */
9043 attr = dwarf2_attr (die, DW_AT_name, cu);
9044 if (attr)
9045 {
9046 *name = DW_STRING (attr);
9047 }
9048
9049 attr = dwarf2_attr (die, DW_AT_comp_dir, cu);
9050 if (attr)
9051 *comp_dir = DW_STRING (attr);
1b80a9fa
JK
9052 else if (producer_is_gcc_lt_4_3 (cu) && *name != NULL
9053 && IS_ABSOLUTE_PATH (*name))
9291a0cd 9054 {
15d034d0
TT
9055 char *d = ldirname (*name);
9056
9057 *comp_dir = d;
9058 if (d != NULL)
9059 make_cleanup (xfree, d);
9291a0cd
TT
9060 }
9061 if (*comp_dir != NULL)
9062 {
9063 /* Irix 6.2 native cc prepends <machine>.: to the compilation
9064 directory, get rid of it. */
9065 char *cp = strchr (*comp_dir, ':');
9066
9067 if (cp && cp != *comp_dir && cp[-1] == '.' && cp[1] == '/')
9068 *comp_dir = cp + 1;
9069 }
9070
9071 if (*name == NULL)
9072 *name = "<unknown>";
9073}
9074
f4dc4d17
DE
9075/* Handle DW_AT_stmt_list for a compilation unit.
9076 DIE is the DW_TAG_compile_unit die for CU.
c3b7b696
YQ
9077 COMP_DIR is the compilation directory. LOWPC is passed to
9078 dwarf_decode_lines. See dwarf_decode_lines comments about it. */
2ab95328
TT
9079
9080static void
9081handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
c3b7b696 9082 const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
2ab95328 9083{
527f3840 9084 struct objfile *objfile = dwarf2_per_objfile->objfile;
2ab95328 9085 struct attribute *attr;
527f3840
JK
9086 unsigned int line_offset;
9087 struct line_header line_header_local;
9088 hashval_t line_header_local_hash;
9089 unsigned u;
9090 void **slot;
9091 int decode_mapping;
2ab95328 9092
f4dc4d17
DE
9093 gdb_assert (! cu->per_cu->is_debug_types);
9094
2ab95328 9095 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
527f3840
JK
9096 if (attr == NULL)
9097 return;
9098
9099 line_offset = DW_UNSND (attr);
9100
9101 /* The line header hash table is only created if needed (it exists to
9102 prevent redundant reading of the line table for partial_units).
9103 If we're given a partial_unit, we'll need it. If we're given a
9104 compile_unit, then use the line header hash table if it's already
9105 created, but don't create one just yet. */
9106
9107 if (dwarf2_per_objfile->line_header_hash == NULL
9108 && die->tag == DW_TAG_partial_unit)
2ab95328 9109 {
527f3840
JK
9110 dwarf2_per_objfile->line_header_hash
9111 = htab_create_alloc_ex (127, line_header_hash_voidp,
9112 line_header_eq_voidp,
9113 free_line_header_voidp,
9114 &objfile->objfile_obstack,
9115 hashtab_obstack_allocate,
9116 dummy_obstack_deallocate);
9117 }
2ab95328 9118
527f3840
JK
9119 line_header_local.offset.sect_off = line_offset;
9120 line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
9121 line_header_local_hash = line_header_hash (&line_header_local);
9122 if (dwarf2_per_objfile->line_header_hash != NULL)
9123 {
9124 slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
9125 &line_header_local,
9126 line_header_local_hash, NO_INSERT);
9127
9128 /* For DW_TAG_compile_unit we need info like symtab::linetable which
9129 is not present in *SLOT (since if there is something in *SLOT then
9130 it will be for a partial_unit). */
9131 if (die->tag == DW_TAG_partial_unit && slot != NULL)
dee91e82 9132 {
527f3840
JK
9133 gdb_assert (*slot != NULL);
9134 cu->line_header = *slot;
9135 return;
dee91e82 9136 }
2ab95328 9137 }
527f3840
JK
9138
9139 /* dwarf_decode_line_header does not yet provide sufficient information.
9140 We always have to call also dwarf_decode_lines for it. */
9141 cu->line_header = dwarf_decode_line_header (line_offset, cu);
9142 if (cu->line_header == NULL)
9143 return;
9144
9145 if (dwarf2_per_objfile->line_header_hash == NULL)
9146 slot = NULL;
9147 else
9148 {
9149 slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
9150 &line_header_local,
9151 line_header_local_hash, INSERT);
9152 gdb_assert (slot != NULL);
9153 }
9154 if (slot != NULL && *slot == NULL)
9155 {
9156 /* This newly decoded line number information unit will be owned
9157 by line_header_hash hash table. */
9158 *slot = cu->line_header;
9159 }
9160 else
9161 {
9162 /* We cannot free any current entry in (*slot) as that struct line_header
9163 may be already used by multiple CUs. Create only temporary decoded
9164 line_header for this CU - it may happen at most once for each line
9165 number information unit. And if we're not using line_header_hash
9166 then this is what we want as well. */
9167 gdb_assert (die->tag != DW_TAG_partial_unit);
9168 make_cleanup (free_cu_line_header, cu);
9169 }
9170 decode_mapping = (die->tag != DW_TAG_partial_unit);
9171 dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
9172 decode_mapping);
2ab95328
TT
9173}
9174
95554aad 9175/* Process DW_TAG_compile_unit or DW_TAG_partial_unit. */
ae2de4f8 9176
c906108c 9177static void
e7c27a73 9178read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 9179{
dee91e82 9180 struct objfile *objfile = dwarf2_per_objfile->objfile;
3e29f34a 9181 struct gdbarch *gdbarch = get_objfile_arch (objfile);
debd256d 9182 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2acceee2 9183 CORE_ADDR lowpc = ((CORE_ADDR) -1);
c906108c
SS
9184 CORE_ADDR highpc = ((CORE_ADDR) 0);
9185 struct attribute *attr;
15d034d0
TT
9186 const char *name = NULL;
9187 const char *comp_dir = NULL;
c906108c
SS
9188 struct die_info *child_die;
9189 bfd *abfd = objfile->obfd;
e142c38c 9190 CORE_ADDR baseaddr;
6e70227d 9191
e142c38c 9192 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 9193
fae299cd 9194 get_scope_pc_bounds (die, &lowpc, &highpc, cu);
c906108c
SS
9195
9196 /* If we didn't find a lowpc, set it to highpc to avoid complaints
9197 from finish_block. */
2acceee2 9198 if (lowpc == ((CORE_ADDR) -1))
c906108c 9199 lowpc = highpc;
3e29f34a 9200 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
c906108c 9201
9291a0cd 9202 find_file_and_directory (die, cu, &name, &comp_dir);
e1024ff1 9203
95554aad 9204 prepare_one_comp_unit (cu, die, cu->language);
303b6f5d 9205
f4b8a18d
KW
9206 /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
9207 standardised yet. As a workaround for the language detection we fall
9208 back to the DW_AT_producer string. */
9209 if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
9210 cu->language = language_opencl;
9211
3019eac3
DE
9212 /* Similar hack for Go. */
9213 if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
9214 set_cu_language (DW_LANG_Go, cu);
9215
f4dc4d17 9216 dwarf2_start_symtab (cu, name, comp_dir, lowpc);
3019eac3
DE
9217
9218 /* Decode line number information if present. We do this before
9219 processing child DIEs, so that the line header table is available
9220 for DW_AT_decl_file. */
c3b7b696 9221 handle_DW_AT_stmt_list (die, cu, comp_dir, lowpc);
3019eac3
DE
9222
9223 /* Process all dies in compilation unit. */
9224 if (die->child != NULL)
9225 {
9226 child_die = die->child;
9227 while (child_die && child_die->tag)
9228 {
9229 process_die (child_die, cu);
9230 child_die = sibling_die (child_die);
9231 }
9232 }
9233
9234 /* Decode macro information, if present. Dwarf 2 macro information
9235 refers to information in the line number info statement program
9236 header, so we can only read it if we've read the header
9237 successfully. */
9238 attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
9239 if (attr && cu->line_header)
9240 {
9241 if (dwarf2_attr (die, DW_AT_macro_info, cu))
9242 complaint (&symfile_complaints,
9243 _("CU refers to both DW_AT_GNU_macros and DW_AT_macro_info"));
9244
43f3e411 9245 dwarf_decode_macros (cu, DW_UNSND (attr), 1);
3019eac3
DE
9246 }
9247 else
9248 {
9249 attr = dwarf2_attr (die, DW_AT_macro_info, cu);
9250 if (attr && cu->line_header)
9251 {
9252 unsigned int macro_offset = DW_UNSND (attr);
9253
43f3e411 9254 dwarf_decode_macros (cu, macro_offset, 0);
3019eac3
DE
9255 }
9256 }
9257
9258 do_cleanups (back_to);
9259}
9260
f4dc4d17
DE
9261/* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
9262 Create the set of symtabs used by this TU, or if this TU is sharing
9263 symtabs with another TU and the symtabs have already been created
9264 then restore those symtabs in the line header.
9265 We don't need the pc/line-number mapping for type units. */
3019eac3
DE
9266
9267static void
f4dc4d17 9268setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
3019eac3 9269{
f4dc4d17
DE
9270 struct objfile *objfile = dwarf2_per_objfile->objfile;
9271 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
9272 struct type_unit_group *tu_group;
9273 int first_time;
9274 struct line_header *lh;
3019eac3 9275 struct attribute *attr;
f4dc4d17 9276 unsigned int i, line_offset;
0186c6a7 9277 struct signatured_type *sig_type;
3019eac3 9278
f4dc4d17 9279 gdb_assert (per_cu->is_debug_types);
0186c6a7 9280 sig_type = (struct signatured_type *) per_cu;
3019eac3 9281
f4dc4d17 9282 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
3019eac3 9283
f4dc4d17 9284 /* If we're using .gdb_index (includes -readnow) then
74e04d1c 9285 per_cu->type_unit_group may not have been set up yet. */
0186c6a7
DE
9286 if (sig_type->type_unit_group == NULL)
9287 sig_type->type_unit_group = get_type_unit_group (cu, attr);
9288 tu_group = sig_type->type_unit_group;
f4dc4d17
DE
9289
9290 /* If we've already processed this stmt_list there's no real need to
9291 do it again, we could fake it and just recreate the part we need
9292 (file name,index -> symtab mapping). If data shows this optimization
9293 is useful we can do it then. */
43f3e411 9294 first_time = tu_group->compunit_symtab == NULL;
f4dc4d17
DE
9295
9296 /* We have to handle the case of both a missing DW_AT_stmt_list or bad
9297 debug info. */
9298 lh = NULL;
9299 if (attr != NULL)
3019eac3 9300 {
f4dc4d17
DE
9301 line_offset = DW_UNSND (attr);
9302 lh = dwarf_decode_line_header (line_offset, cu);
9303 }
9304 if (lh == NULL)
9305 {
9306 if (first_time)
9307 dwarf2_start_symtab (cu, "", NULL, 0);
9308 else
9309 {
9310 gdb_assert (tu_group->symtabs == NULL);
0ab9ce85 9311 restart_symtab (tu_group->compunit_symtab, "", 0);
f4dc4d17 9312 }
f4dc4d17 9313 return;
3019eac3
DE
9314 }
9315
f4dc4d17
DE
9316 cu->line_header = lh;
9317 make_cleanup (free_cu_line_header, cu);
3019eac3 9318
f4dc4d17
DE
9319 if (first_time)
9320 {
43f3e411 9321 struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
3019eac3 9322
f4dc4d17
DE
9323 tu_group->num_symtabs = lh->num_file_names;
9324 tu_group->symtabs = XNEWVEC (struct symtab *, lh->num_file_names);
3019eac3 9325
f4dc4d17
DE
9326 for (i = 0; i < lh->num_file_names; ++i)
9327 {
d521ce57 9328 const char *dir = NULL;
f4dc4d17 9329 struct file_entry *fe = &lh->file_names[i];
3019eac3 9330
afa6c9ab 9331 if (fe->dir_index && lh->include_dirs != NULL)
f4dc4d17 9332 dir = lh->include_dirs[fe->dir_index - 1];
4d663531 9333 dwarf2_start_subfile (fe->name, dir);
3019eac3 9334
f4dc4d17
DE
9335 if (current_subfile->symtab == NULL)
9336 {
9337 /* NOTE: start_subfile will recognize when it's been passed
9338 a file it has already seen. So we can't assume there's a
43f3e411 9339 simple mapping from lh->file_names to subfiles, plus
f4dc4d17 9340 lh->file_names may contain dups. */
43f3e411
DE
9341 current_subfile->symtab
9342 = allocate_symtab (cust, current_subfile->name);
f4dc4d17
DE
9343 }
9344
9345 fe->symtab = current_subfile->symtab;
9346 tu_group->symtabs[i] = fe->symtab;
9347 }
9348 }
9349 else
3019eac3 9350 {
0ab9ce85 9351 restart_symtab (tu_group->compunit_symtab, "", 0);
f4dc4d17
DE
9352
9353 for (i = 0; i < lh->num_file_names; ++i)
9354 {
9355 struct file_entry *fe = &lh->file_names[i];
9356
9357 fe->symtab = tu_group->symtabs[i];
9358 }
3019eac3
DE
9359 }
9360
f4dc4d17
DE
9361 /* The main symtab is allocated last. Type units don't have DW_AT_name
9362 so they don't have a "real" (so to speak) symtab anyway.
9363 There is later code that will assign the main symtab to all symbols
9364 that don't have one. We need to handle the case of a symbol with a
9365 missing symtab (DW_AT_decl_file) anyway. */
9366}
3019eac3 9367
f4dc4d17
DE
9368/* Process DW_TAG_type_unit.
9369 For TUs we want to skip the first top level sibling if it's not the
9370 actual type being defined by this TU. In this case the first top
9371 level sibling is there to provide context only. */
3019eac3 9372
f4dc4d17
DE
9373static void
9374read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
9375{
9376 struct die_info *child_die;
3019eac3 9377
f4dc4d17
DE
9378 prepare_one_comp_unit (cu, die, language_minimal);
9379
9380 /* Initialize (or reinitialize) the machinery for building symtabs.
9381 We do this before processing child DIEs, so that the line header table
9382 is available for DW_AT_decl_file. */
9383 setup_type_unit_groups (die, cu);
9384
9385 if (die->child != NULL)
9386 {
9387 child_die = die->child;
9388 while (child_die && child_die->tag)
9389 {
9390 process_die (child_die, cu);
9391 child_die = sibling_die (child_die);
9392 }
9393 }
3019eac3
DE
9394}
9395\f
80626a55
DE
9396/* DWO/DWP files.
9397
9398 http://gcc.gnu.org/wiki/DebugFission
9399 http://gcc.gnu.org/wiki/DebugFissionDWP
9400
9401 To simplify handling of both DWO files ("object" files with the DWARF info)
9402 and DWP files (a file with the DWOs packaged up into one file), we treat
9403 DWP files as having a collection of virtual DWO files. */
3019eac3
DE
9404
9405static hashval_t
9406hash_dwo_file (const void *item)
9407{
9408 const struct dwo_file *dwo_file = item;
a2ce51a0 9409 hashval_t hash;
3019eac3 9410
a2ce51a0
DE
9411 hash = htab_hash_string (dwo_file->dwo_name);
9412 if (dwo_file->comp_dir != NULL)
9413 hash += htab_hash_string (dwo_file->comp_dir);
9414 return hash;
3019eac3
DE
9415}
9416
9417static int
9418eq_dwo_file (const void *item_lhs, const void *item_rhs)
9419{
9420 const struct dwo_file *lhs = item_lhs;
9421 const struct dwo_file *rhs = item_rhs;
9422
a2ce51a0
DE
9423 if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
9424 return 0;
9425 if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
9426 return lhs->comp_dir == rhs->comp_dir;
9427 return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
3019eac3
DE
9428}
9429
9430/* Allocate a hash table for DWO files. */
9431
9432static htab_t
9433allocate_dwo_file_hash_table (void)
9434{
9435 struct objfile *objfile = dwarf2_per_objfile->objfile;
9436
9437 return htab_create_alloc_ex (41,
9438 hash_dwo_file,
9439 eq_dwo_file,
9440 NULL,
9441 &objfile->objfile_obstack,
9442 hashtab_obstack_allocate,
9443 dummy_obstack_deallocate);
9444}
9445
80626a55
DE
9446/* Lookup DWO file DWO_NAME. */
9447
9448static void **
0ac5b59e 9449lookup_dwo_file_slot (const char *dwo_name, const char *comp_dir)
80626a55
DE
9450{
9451 struct dwo_file find_entry;
9452 void **slot;
9453
9454 if (dwarf2_per_objfile->dwo_files == NULL)
9455 dwarf2_per_objfile->dwo_files = allocate_dwo_file_hash_table ();
9456
9457 memset (&find_entry, 0, sizeof (find_entry));
0ac5b59e
DE
9458 find_entry.dwo_name = dwo_name;
9459 find_entry.comp_dir = comp_dir;
80626a55
DE
9460 slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
9461
9462 return slot;
9463}
9464
3019eac3
DE
9465static hashval_t
9466hash_dwo_unit (const void *item)
9467{
9468 const struct dwo_unit *dwo_unit = item;
9469
9470 /* This drops the top 32 bits of the id, but is ok for a hash. */
9471 return dwo_unit->signature;
9472}
9473
9474static int
9475eq_dwo_unit (const void *item_lhs, const void *item_rhs)
9476{
9477 const struct dwo_unit *lhs = item_lhs;
9478 const struct dwo_unit *rhs = item_rhs;
9479
9480 /* The signature is assumed to be unique within the DWO file.
9481 So while object file CU dwo_id's always have the value zero,
9482 that's OK, assuming each object file DWO file has only one CU,
9483 and that's the rule for now. */
9484 return lhs->signature == rhs->signature;
9485}
9486
9487/* Allocate a hash table for DWO CUs,TUs.
9488 There is one of these tables for each of CUs,TUs for each DWO file. */
9489
9490static htab_t
9491allocate_dwo_unit_table (struct objfile *objfile)
9492{
9493 /* Start out with a pretty small number.
9494 Generally DWO files contain only one CU and maybe some TUs. */
9495 return htab_create_alloc_ex (3,
9496 hash_dwo_unit,
9497 eq_dwo_unit,
9498 NULL,
9499 &objfile->objfile_obstack,
9500 hashtab_obstack_allocate,
9501 dummy_obstack_deallocate);
9502}
9503
80626a55 9504/* Structure used to pass data to create_dwo_debug_info_hash_table_reader. */
3019eac3 9505
19c3d4c9 9506struct create_dwo_cu_data
3019eac3
DE
9507{
9508 struct dwo_file *dwo_file;
19c3d4c9 9509 struct dwo_unit dwo_unit;
3019eac3
DE
9510};
9511
19c3d4c9 9512/* die_reader_func for create_dwo_cu. */
3019eac3
DE
9513
9514static void
19c3d4c9
DE
9515create_dwo_cu_reader (const struct die_reader_specs *reader,
9516 const gdb_byte *info_ptr,
9517 struct die_info *comp_unit_die,
9518 int has_children,
9519 void *datap)
3019eac3
DE
9520{
9521 struct dwarf2_cu *cu = reader->cu;
9522 struct objfile *objfile = dwarf2_per_objfile->objfile;
9523 sect_offset offset = cu->per_cu->offset;
8a0459fd 9524 struct dwarf2_section_info *section = cu->per_cu->section;
19c3d4c9 9525 struct create_dwo_cu_data *data = datap;
3019eac3 9526 struct dwo_file *dwo_file = data->dwo_file;
19c3d4c9 9527 struct dwo_unit *dwo_unit = &data->dwo_unit;
3019eac3 9528 struct attribute *attr;
3019eac3
DE
9529
9530 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
9531 if (attr == NULL)
9532 {
19c3d4c9
DE
9533 complaint (&symfile_complaints,
9534 _("Dwarf Error: debug entry at offset 0x%x is missing"
9535 " its dwo_id [in module %s]"),
9536 offset.sect_off, dwo_file->dwo_name);
3019eac3
DE
9537 return;
9538 }
9539
3019eac3
DE
9540 dwo_unit->dwo_file = dwo_file;
9541 dwo_unit->signature = DW_UNSND (attr);
8a0459fd 9542 dwo_unit->section = section;
3019eac3
DE
9543 dwo_unit->offset = offset;
9544 dwo_unit->length = cu->per_cu->length;
9545
b4f54984 9546 if (dwarf_read_debug)
4031ecc5
DE
9547 fprintf_unfiltered (gdb_stdlog, " offset 0x%x, dwo_id %s\n",
9548 offset.sect_off, hex_string (dwo_unit->signature));
3019eac3
DE
9549}
9550
19c3d4c9
DE
9551/* Create the dwo_unit for the lone CU in DWO_FILE.
9552 Note: This function processes DWO files only, not DWP files. */
3019eac3 9553
19c3d4c9
DE
9554static struct dwo_unit *
9555create_dwo_cu (struct dwo_file *dwo_file)
3019eac3
DE
9556{
9557 struct objfile *objfile = dwarf2_per_objfile->objfile;
9558 struct dwarf2_section_info *section = &dwo_file->sections.info;
9559 bfd *abfd;
9560 htab_t cu_htab;
d521ce57 9561 const gdb_byte *info_ptr, *end_ptr;
19c3d4c9
DE
9562 struct create_dwo_cu_data create_dwo_cu_data;
9563 struct dwo_unit *dwo_unit;
3019eac3
DE
9564
9565 dwarf2_read_section (objfile, section);
9566 info_ptr = section->buffer;
9567
9568 if (info_ptr == NULL)
9569 return NULL;
9570
9571 /* We can't set abfd until now because the section may be empty or
9572 not present, in which case section->asection will be NULL. */
a32a8923 9573 abfd = get_section_bfd_owner (section);
3019eac3 9574
b4f54984 9575 if (dwarf_read_debug)
19c3d4c9
DE
9576 {
9577 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
a32a8923
DE
9578 get_section_name (section),
9579 get_section_file_name (section));
19c3d4c9 9580 }
3019eac3 9581
19c3d4c9
DE
9582 create_dwo_cu_data.dwo_file = dwo_file;
9583 dwo_unit = NULL;
3019eac3
DE
9584
9585 end_ptr = info_ptr + section->size;
9586 while (info_ptr < end_ptr)
9587 {
9588 struct dwarf2_per_cu_data per_cu;
9589
19c3d4c9
DE
9590 memset (&create_dwo_cu_data.dwo_unit, 0,
9591 sizeof (create_dwo_cu_data.dwo_unit));
3019eac3
DE
9592 memset (&per_cu, 0, sizeof (per_cu));
9593 per_cu.objfile = objfile;
9594 per_cu.is_debug_types = 0;
9595 per_cu.offset.sect_off = info_ptr - section->buffer;
8a0459fd 9596 per_cu.section = section;
3019eac3 9597
33e80786 9598 init_cutu_and_read_dies_no_follow (&per_cu, dwo_file,
19c3d4c9
DE
9599 create_dwo_cu_reader,
9600 &create_dwo_cu_data);
9601
9602 if (create_dwo_cu_data.dwo_unit.dwo_file != NULL)
9603 {
9604 /* If we've already found one, complain. We only support one
9605 because having more than one requires hacking the dwo_name of
9606 each to match, which is highly unlikely to happen. */
9607 if (dwo_unit != NULL)
9608 {
9609 complaint (&symfile_complaints,
9610 _("Multiple CUs in DWO file %s [in module %s]"),
4262abfb 9611 dwo_file->dwo_name, objfile_name (objfile));
19c3d4c9
DE
9612 break;
9613 }
9614
9615 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
9616 *dwo_unit = create_dwo_cu_data.dwo_unit;
9617 }
3019eac3
DE
9618
9619 info_ptr += per_cu.length;
9620 }
9621
19c3d4c9 9622 return dwo_unit;
3019eac3
DE
9623}
9624
80626a55
DE
9625/* DWP file .debug_{cu,tu}_index section format:
9626 [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
9627
d2415c6c
DE
9628 DWP Version 1:
9629
80626a55
DE
9630 Both index sections have the same format, and serve to map a 64-bit
9631 signature to a set of section numbers. Each section begins with a header,
9632 followed by a hash table of 64-bit signatures, a parallel table of 32-bit
9633 indexes, and a pool of 32-bit section numbers. The index sections will be
9634 aligned at 8-byte boundaries in the file.
9635
d2415c6c
DE
9636 The index section header consists of:
9637
9638 V, 32 bit version number
9639 -, 32 bits unused
9640 N, 32 bit number of compilation units or type units in the index
9641 M, 32 bit number of slots in the hash table
80626a55 9642
d2415c6c 9643 Numbers are recorded using the byte order of the application binary.
80626a55 9644
d2415c6c
DE
9645 The hash table begins at offset 16 in the section, and consists of an array
9646 of M 64-bit slots. Each slot contains a 64-bit signature (using the byte
9647 order of the application binary). Unused slots in the hash table are 0.
9648 (We rely on the extreme unlikeliness of a signature being exactly 0.)
80626a55 9649
d2415c6c
DE
9650 The parallel table begins immediately after the hash table
9651 (at offset 16 + 8 * M from the beginning of the section), and consists of an
9652 array of 32-bit indexes (using the byte order of the application binary),
9653 corresponding 1-1 with slots in the hash table. Each entry in the parallel
9654 table contains a 32-bit index into the pool of section numbers. For unused
9655 hash table slots, the corresponding entry in the parallel table will be 0.
80626a55 9656
73869dc2
DE
9657 The pool of section numbers begins immediately following the hash table
9658 (at offset 16 + 12 * M from the beginning of the section). The pool of
9659 section numbers consists of an array of 32-bit words (using the byte order
9660 of the application binary). Each item in the array is indexed starting
9661 from 0. The hash table entry provides the index of the first section
9662 number in the set. Additional section numbers in the set follow, and the
9663 set is terminated by a 0 entry (section number 0 is not used in ELF).
9664
9665 In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
9666 section must be the first entry in the set, and the .debug_abbrev.dwo must
9667 be the second entry. Other members of the set may follow in any order.
9668
9669 ---
9670
9671 DWP Version 2:
9672
9673 DWP Version 2 combines all the .debug_info, etc. sections into one,
9674 and the entries in the index tables are now offsets into these sections.
9675 CU offsets begin at 0. TU offsets begin at the size of the .debug_info
9676 section.
9677
9678 Index Section Contents:
9679 Header
9680 Hash Table of Signatures dwp_hash_table.hash_table
9681 Parallel Table of Indices dwp_hash_table.unit_table
9682 Table of Section Offsets dwp_hash_table.v2.{section_ids,offsets}
9683 Table of Section Sizes dwp_hash_table.v2.sizes
9684
9685 The index section header consists of:
9686
9687 V, 32 bit version number
9688 L, 32 bit number of columns in the table of section offsets
9689 N, 32 bit number of compilation units or type units in the index
9690 M, 32 bit number of slots in the hash table
9691
9692 Numbers are recorded using the byte order of the application binary.
9693
9694 The hash table has the same format as version 1.
9695 The parallel table of indices has the same format as version 1,
9696 except that the entries are origin-1 indices into the table of sections
9697 offsets and the table of section sizes.
9698
9699 The table of offsets begins immediately following the parallel table
9700 (at offset 16 + 12 * M from the beginning of the section). The table is
9701 a two-dimensional array of 32-bit words (using the byte order of the
9702 application binary), with L columns and N+1 rows, in row-major order.
9703 Each row in the array is indexed starting from 0. The first row provides
9704 a key to the remaining rows: each column in this row provides an identifier
9705 for a debug section, and the offsets in the same column of subsequent rows
9706 refer to that section. The section identifiers are:
9707
9708 DW_SECT_INFO 1 .debug_info.dwo
9709 DW_SECT_TYPES 2 .debug_types.dwo
9710 DW_SECT_ABBREV 3 .debug_abbrev.dwo
9711 DW_SECT_LINE 4 .debug_line.dwo
9712 DW_SECT_LOC 5 .debug_loc.dwo
9713 DW_SECT_STR_OFFSETS 6 .debug_str_offsets.dwo
9714 DW_SECT_MACINFO 7 .debug_macinfo.dwo
9715 DW_SECT_MACRO 8 .debug_macro.dwo
9716
9717 The offsets provided by the CU and TU index sections are the base offsets
9718 for the contributions made by each CU or TU to the corresponding section
9719 in the package file. Each CU and TU header contains an abbrev_offset
9720 field, used to find the abbreviations table for that CU or TU within the
9721 contribution to the .debug_abbrev.dwo section for that CU or TU, and should
9722 be interpreted as relative to the base offset given in the index section.
9723 Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
9724 should be interpreted as relative to the base offset for .debug_line.dwo,
9725 and offsets into other debug sections obtained from DWARF attributes should
9726 also be interpreted as relative to the corresponding base offset.
9727
9728 The table of sizes begins immediately following the table of offsets.
9729 Like the table of offsets, it is a two-dimensional array of 32-bit words,
9730 with L columns and N rows, in row-major order. Each row in the array is
9731 indexed starting from 1 (row 0 is shared by the two tables).
9732
9733 ---
9734
9735 Hash table lookup is handled the same in version 1 and 2:
9736
9737 We assume that N and M will not exceed 2^32 - 1.
9738 The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
9739
d2415c6c
DE
9740 Given a 64-bit compilation unit signature or a type signature S, an entry
9741 in the hash table is located as follows:
80626a55 9742
d2415c6c
DE
9743 1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
9744 the low-order k bits all set to 1.
80626a55 9745
d2415c6c 9746 2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
80626a55 9747
d2415c6c
DE
9748 3) If the hash table entry at index H matches the signature, use that
9749 entry. If the hash table entry at index H is unused (all zeroes),
9750 terminate the search: the signature is not present in the table.
80626a55 9751
d2415c6c 9752 4) Let H = (H + H') modulo M. Repeat at Step 3.
80626a55 9753
d2415c6c 9754 Because M > N and H' and M are relatively prime, the search is guaranteed
73869dc2 9755 to stop at an unused slot or find the match. */
80626a55
DE
9756
9757/* Create a hash table to map DWO IDs to their CU/TU entry in
9758 .debug_{info,types}.dwo in DWP_FILE.
9759 Returns NULL if there isn't one.
9760 Note: This function processes DWP files only, not DWO files. */
9761
9762static struct dwp_hash_table *
9763create_dwp_hash_table (struct dwp_file *dwp_file, int is_debug_types)
9764{
9765 struct objfile *objfile = dwarf2_per_objfile->objfile;
9766 bfd *dbfd = dwp_file->dbfd;
948f8e3d 9767 const gdb_byte *index_ptr, *index_end;
80626a55 9768 struct dwarf2_section_info *index;
73869dc2 9769 uint32_t version, nr_columns, nr_units, nr_slots;
80626a55
DE
9770 struct dwp_hash_table *htab;
9771
9772 if (is_debug_types)
9773 index = &dwp_file->sections.tu_index;
9774 else
9775 index = &dwp_file->sections.cu_index;
9776
9777 if (dwarf2_section_empty_p (index))
9778 return NULL;
9779 dwarf2_read_section (objfile, index);
9780
9781 index_ptr = index->buffer;
9782 index_end = index_ptr + index->size;
9783
9784 version = read_4_bytes (dbfd, index_ptr);
73869dc2
DE
9785 index_ptr += 4;
9786 if (version == 2)
9787 nr_columns = read_4_bytes (dbfd, index_ptr);
9788 else
9789 nr_columns = 0;
9790 index_ptr += 4;
80626a55
DE
9791 nr_units = read_4_bytes (dbfd, index_ptr);
9792 index_ptr += 4;
9793 nr_slots = read_4_bytes (dbfd, index_ptr);
9794 index_ptr += 4;
9795
73869dc2 9796 if (version != 1 && version != 2)
80626a55 9797 {
21aa081e 9798 error (_("Dwarf Error: unsupported DWP file version (%s)"
80626a55 9799 " [in module %s]"),
21aa081e 9800 pulongest (version), dwp_file->name);
80626a55
DE
9801 }
9802 if (nr_slots != (nr_slots & -nr_slots))
9803 {
21aa081e 9804 error (_("Dwarf Error: number of slots in DWP hash table (%s)"
80626a55 9805 " is not power of 2 [in module %s]"),
21aa081e 9806 pulongest (nr_slots), dwp_file->name);
80626a55
DE
9807 }
9808
9809 htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
73869dc2
DE
9810 htab->version = version;
9811 htab->nr_columns = nr_columns;
80626a55
DE
9812 htab->nr_units = nr_units;
9813 htab->nr_slots = nr_slots;
9814 htab->hash_table = index_ptr;
9815 htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
73869dc2
DE
9816
9817 /* Exit early if the table is empty. */
9818 if (nr_slots == 0 || nr_units == 0
9819 || (version == 2 && nr_columns == 0))
9820 {
9821 /* All must be zero. */
9822 if (nr_slots != 0 || nr_units != 0
9823 || (version == 2 && nr_columns != 0))
9824 {
9825 complaint (&symfile_complaints,
9826 _("Empty DWP but nr_slots,nr_units,nr_columns not"
9827 " all zero [in modules %s]"),
9828 dwp_file->name);
9829 }
9830 return htab;
9831 }
9832
9833 if (version == 1)
9834 {
9835 htab->section_pool.v1.indices =
9836 htab->unit_table + sizeof (uint32_t) * nr_slots;
9837 /* It's harder to decide whether the section is too small in v1.
9838 V1 is deprecated anyway so we punt. */
9839 }
9840 else
9841 {
9842 const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
9843 int *ids = htab->section_pool.v2.section_ids;
9844 /* Reverse map for error checking. */
9845 int ids_seen[DW_SECT_MAX + 1];
9846 int i;
9847
9848 if (nr_columns < 2)
9849 {
9850 error (_("Dwarf Error: bad DWP hash table, too few columns"
9851 " in section table [in module %s]"),
9852 dwp_file->name);
9853 }
9854 if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
9855 {
9856 error (_("Dwarf Error: bad DWP hash table, too many columns"
9857 " in section table [in module %s]"),
9858 dwp_file->name);
9859 }
9860 memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9861 memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9862 for (i = 0; i < nr_columns; ++i)
9863 {
9864 int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
9865
9866 if (id < DW_SECT_MIN || id > DW_SECT_MAX)
9867 {
9868 error (_("Dwarf Error: bad DWP hash table, bad section id %d"
9869 " in section table [in module %s]"),
9870 id, dwp_file->name);
9871 }
9872 if (ids_seen[id] != -1)
9873 {
9874 error (_("Dwarf Error: bad DWP hash table, duplicate section"
9875 " id %d in section table [in module %s]"),
9876 id, dwp_file->name);
9877 }
9878 ids_seen[id] = i;
9879 ids[i] = id;
9880 }
9881 /* Must have exactly one info or types section. */
9882 if (((ids_seen[DW_SECT_INFO] != -1)
9883 + (ids_seen[DW_SECT_TYPES] != -1))
9884 != 1)
9885 {
9886 error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
9887 " DWO info/types section [in module %s]"),
9888 dwp_file->name);
9889 }
9890 /* Must have an abbrev section. */
9891 if (ids_seen[DW_SECT_ABBREV] == -1)
9892 {
9893 error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
9894 " section [in module %s]"),
9895 dwp_file->name);
9896 }
9897 htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
9898 htab->section_pool.v2.sizes =
9899 htab->section_pool.v2.offsets + (sizeof (uint32_t)
9900 * nr_units * nr_columns);
9901 if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
9902 * nr_units * nr_columns))
9903 > index_end)
9904 {
9905 error (_("Dwarf Error: DWP index section is corrupt (too small)"
9906 " [in module %s]"),
9907 dwp_file->name);
9908 }
9909 }
80626a55
DE
9910
9911 return htab;
9912}
9913
9914/* Update SECTIONS with the data from SECTP.
9915
9916 This function is like the other "locate" section routines that are
9917 passed to bfd_map_over_sections, but in this context the sections to
73869dc2 9918 read comes from the DWP V1 hash table, not the full ELF section table.
80626a55
DE
9919
9920 The result is non-zero for success, or zero if an error was found. */
9921
9922static int
73869dc2
DE
9923locate_v1_virtual_dwo_sections (asection *sectp,
9924 struct virtual_v1_dwo_sections *sections)
80626a55
DE
9925{
9926 const struct dwop_section_names *names = &dwop_section_names;
9927
9928 if (section_is_p (sectp->name, &names->abbrev_dwo))
9929 {
9930 /* There can be only one. */
73869dc2 9931 if (sections->abbrev.s.asection != NULL)
80626a55 9932 return 0;
73869dc2 9933 sections->abbrev.s.asection = sectp;
80626a55
DE
9934 sections->abbrev.size = bfd_get_section_size (sectp);
9935 }
9936 else if (section_is_p (sectp->name, &names->info_dwo)
9937 || section_is_p (sectp->name, &names->types_dwo))
9938 {
9939 /* There can be only one. */
73869dc2 9940 if (sections->info_or_types.s.asection != NULL)
80626a55 9941 return 0;
73869dc2 9942 sections->info_or_types.s.asection = sectp;
80626a55
DE
9943 sections->info_or_types.size = bfd_get_section_size (sectp);
9944 }
9945 else if (section_is_p (sectp->name, &names->line_dwo))
9946 {
9947 /* There can be only one. */
73869dc2 9948 if (sections->line.s.asection != NULL)
80626a55 9949 return 0;
73869dc2 9950 sections->line.s.asection = sectp;
80626a55
DE
9951 sections->line.size = bfd_get_section_size (sectp);
9952 }
9953 else if (section_is_p (sectp->name, &names->loc_dwo))
9954 {
9955 /* There can be only one. */
73869dc2 9956 if (sections->loc.s.asection != NULL)
80626a55 9957 return 0;
73869dc2 9958 sections->loc.s.asection = sectp;
80626a55
DE
9959 sections->loc.size = bfd_get_section_size (sectp);
9960 }
9961 else if (section_is_p (sectp->name, &names->macinfo_dwo))
9962 {
9963 /* There can be only one. */
73869dc2 9964 if (sections->macinfo.s.asection != NULL)
80626a55 9965 return 0;
73869dc2 9966 sections->macinfo.s.asection = sectp;
80626a55
DE
9967 sections->macinfo.size = bfd_get_section_size (sectp);
9968 }
9969 else if (section_is_p (sectp->name, &names->macro_dwo))
9970 {
9971 /* There can be only one. */
73869dc2 9972 if (sections->macro.s.asection != NULL)
80626a55 9973 return 0;
73869dc2 9974 sections->macro.s.asection = sectp;
80626a55
DE
9975 sections->macro.size = bfd_get_section_size (sectp);
9976 }
9977 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
9978 {
9979 /* There can be only one. */
73869dc2 9980 if (sections->str_offsets.s.asection != NULL)
80626a55 9981 return 0;
73869dc2 9982 sections->str_offsets.s.asection = sectp;
80626a55
DE
9983 sections->str_offsets.size = bfd_get_section_size (sectp);
9984 }
9985 else
9986 {
9987 /* No other kind of section is valid. */
9988 return 0;
9989 }
9990
9991 return 1;
9992}
9993
73869dc2
DE
9994/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
9995 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
9996 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
9997 This is for DWP version 1 files. */
80626a55
DE
9998
9999static struct dwo_unit *
73869dc2
DE
10000create_dwo_unit_in_dwp_v1 (struct dwp_file *dwp_file,
10001 uint32_t unit_index,
10002 const char *comp_dir,
10003 ULONGEST signature, int is_debug_types)
80626a55
DE
10004{
10005 struct objfile *objfile = dwarf2_per_objfile->objfile;
73869dc2
DE
10006 const struct dwp_hash_table *dwp_htab =
10007 is_debug_types ? dwp_file->tus : dwp_file->cus;
80626a55
DE
10008 bfd *dbfd = dwp_file->dbfd;
10009 const char *kind = is_debug_types ? "TU" : "CU";
10010 struct dwo_file *dwo_file;
10011 struct dwo_unit *dwo_unit;
73869dc2 10012 struct virtual_v1_dwo_sections sections;
80626a55
DE
10013 void **dwo_file_slot;
10014 char *virtual_dwo_name;
10015 struct dwarf2_section_info *cutu;
10016 struct cleanup *cleanups;
10017 int i;
10018
73869dc2
DE
10019 gdb_assert (dwp_file->version == 1);
10020
b4f54984 10021 if (dwarf_read_debug)
80626a55 10022 {
73869dc2 10023 fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
80626a55 10024 kind,
73869dc2 10025 pulongest (unit_index), hex_string (signature),
80626a55
DE
10026 dwp_file->name);
10027 }
10028
19ac8c2e 10029 /* Fetch the sections of this DWO unit.
80626a55
DE
10030 Put a limit on the number of sections we look for so that bad data
10031 doesn't cause us to loop forever. */
10032
73869dc2 10033#define MAX_NR_V1_DWO_SECTIONS \
80626a55
DE
10034 (1 /* .debug_info or .debug_types */ \
10035 + 1 /* .debug_abbrev */ \
10036 + 1 /* .debug_line */ \
10037 + 1 /* .debug_loc */ \
10038 + 1 /* .debug_str_offsets */ \
19ac8c2e 10039 + 1 /* .debug_macro or .debug_macinfo */ \
80626a55
DE
10040 + 1 /* trailing zero */)
10041
10042 memset (&sections, 0, sizeof (sections));
10043 cleanups = make_cleanup (null_cleanup, 0);
10044
73869dc2 10045 for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
80626a55
DE
10046 {
10047 asection *sectp;
10048 uint32_t section_nr =
10049 read_4_bytes (dbfd,
73869dc2
DE
10050 dwp_htab->section_pool.v1.indices
10051 + (unit_index + i) * sizeof (uint32_t));
80626a55
DE
10052
10053 if (section_nr == 0)
10054 break;
10055 if (section_nr >= dwp_file->num_sections)
10056 {
10057 error (_("Dwarf Error: bad DWP hash table, section number too large"
10058 " [in module %s]"),
10059 dwp_file->name);
10060 }
10061
10062 sectp = dwp_file->elf_sections[section_nr];
73869dc2 10063 if (! locate_v1_virtual_dwo_sections (sectp, &sections))
80626a55
DE
10064 {
10065 error (_("Dwarf Error: bad DWP hash table, invalid section found"
10066 " [in module %s]"),
10067 dwp_file->name);
10068 }
10069 }
10070
10071 if (i < 2
a32a8923
DE
10072 || dwarf2_section_empty_p (&sections.info_or_types)
10073 || dwarf2_section_empty_p (&sections.abbrev))
80626a55
DE
10074 {
10075 error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
10076 " [in module %s]"),
10077 dwp_file->name);
10078 }
73869dc2 10079 if (i == MAX_NR_V1_DWO_SECTIONS)
80626a55
DE
10080 {
10081 error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
10082 " [in module %s]"),
10083 dwp_file->name);
10084 }
10085
10086 /* It's easier for the rest of the code if we fake a struct dwo_file and
10087 have dwo_unit "live" in that. At least for now.
10088
10089 The DWP file can be made up of a random collection of CUs and TUs.
c766f7ec 10090 However, for each CU + set of TUs that came from the same original DWO
57d63ce2
DE
10091 file, we can combine them back into a virtual DWO file to save space
10092 (fewer struct dwo_file objects to allocate). Remember that for really
80626a55
DE
10093 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
10094
2792b94d
PM
10095 virtual_dwo_name =
10096 xstrprintf ("virtual-dwo/%d-%d-%d-%d",
a32a8923
DE
10097 get_section_id (&sections.abbrev),
10098 get_section_id (&sections.line),
10099 get_section_id (&sections.loc),
10100 get_section_id (&sections.str_offsets));
80626a55
DE
10101 make_cleanup (xfree, virtual_dwo_name);
10102 /* Can we use an existing virtual DWO file? */
0ac5b59e 10103 dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
80626a55
DE
10104 /* Create one if necessary. */
10105 if (*dwo_file_slot == NULL)
10106 {
b4f54984 10107 if (dwarf_read_debug)
80626a55
DE
10108 {
10109 fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
10110 virtual_dwo_name);
10111 }
10112 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
0ac5b59e
DE
10113 dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
10114 virtual_dwo_name,
10115 strlen (virtual_dwo_name));
10116 dwo_file->comp_dir = comp_dir;
80626a55
DE
10117 dwo_file->sections.abbrev = sections.abbrev;
10118 dwo_file->sections.line = sections.line;
10119 dwo_file->sections.loc = sections.loc;
10120 dwo_file->sections.macinfo = sections.macinfo;
10121 dwo_file->sections.macro = sections.macro;
10122 dwo_file->sections.str_offsets = sections.str_offsets;
10123 /* The "str" section is global to the entire DWP file. */
10124 dwo_file->sections.str = dwp_file->sections.str;
57d63ce2 10125 /* The info or types section is assigned below to dwo_unit,
80626a55
DE
10126 there's no need to record it in dwo_file.
10127 Also, we can't simply record type sections in dwo_file because
10128 we record a pointer into the vector in dwo_unit. As we collect more
10129 types we'll grow the vector and eventually have to reallocate space
57d63ce2
DE
10130 for it, invalidating all copies of pointers into the previous
10131 contents. */
80626a55
DE
10132 *dwo_file_slot = dwo_file;
10133 }
10134 else
10135 {
b4f54984 10136 if (dwarf_read_debug)
80626a55
DE
10137 {
10138 fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10139 virtual_dwo_name);
10140 }
10141 dwo_file = *dwo_file_slot;
10142 }
10143 do_cleanups (cleanups);
10144
10145 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10146 dwo_unit->dwo_file = dwo_file;
10147 dwo_unit->signature = signature;
8a0459fd
DE
10148 dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
10149 sizeof (struct dwarf2_section_info));
10150 *dwo_unit->section = sections.info_or_types;
57d63ce2 10151 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
80626a55
DE
10152
10153 return dwo_unit;
10154}
10155
73869dc2
DE
10156/* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
10157 Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
10158 piece within that section used by a TU/CU, return a virtual section
10159 of just that piece. */
10160
10161static struct dwarf2_section_info
10162create_dwp_v2_section (struct dwarf2_section_info *section,
10163 bfd_size_type offset, bfd_size_type size)
10164{
10165 struct dwarf2_section_info result;
10166 asection *sectp;
10167
10168 gdb_assert (section != NULL);
10169 gdb_assert (!section->is_virtual);
10170
10171 memset (&result, 0, sizeof (result));
10172 result.s.containing_section = section;
10173 result.is_virtual = 1;
10174
10175 if (size == 0)
10176 return result;
10177
10178 sectp = get_section_bfd_section (section);
10179
10180 /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
10181 bounds of the real section. This is a pretty-rare event, so just
10182 flag an error (easier) instead of a warning and trying to cope. */
10183 if (sectp == NULL
10184 || offset + size > bfd_get_section_size (sectp))
10185 {
10186 bfd *abfd = sectp->owner;
10187
10188 error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
10189 " in section %s [in module %s]"),
10190 sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
10191 objfile_name (dwarf2_per_objfile->objfile));
10192 }
10193
10194 result.virtual_offset = offset;
10195 result.size = size;
10196 return result;
10197}
10198
10199/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
10200 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
10201 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
10202 This is for DWP version 2 files. */
10203
10204static struct dwo_unit *
10205create_dwo_unit_in_dwp_v2 (struct dwp_file *dwp_file,
10206 uint32_t unit_index,
10207 const char *comp_dir,
10208 ULONGEST signature, int is_debug_types)
10209{
10210 struct objfile *objfile = dwarf2_per_objfile->objfile;
10211 const struct dwp_hash_table *dwp_htab =
10212 is_debug_types ? dwp_file->tus : dwp_file->cus;
10213 bfd *dbfd = dwp_file->dbfd;
10214 const char *kind = is_debug_types ? "TU" : "CU";
10215 struct dwo_file *dwo_file;
10216 struct dwo_unit *dwo_unit;
10217 struct virtual_v2_dwo_sections sections;
10218 void **dwo_file_slot;
10219 char *virtual_dwo_name;
10220 struct dwarf2_section_info *cutu;
10221 struct cleanup *cleanups;
10222 int i;
10223
10224 gdb_assert (dwp_file->version == 2);
10225
b4f54984 10226 if (dwarf_read_debug)
73869dc2
DE
10227 {
10228 fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
10229 kind,
10230 pulongest (unit_index), hex_string (signature),
10231 dwp_file->name);
10232 }
10233
10234 /* Fetch the section offsets of this DWO unit. */
10235
10236 memset (&sections, 0, sizeof (sections));
10237 cleanups = make_cleanup (null_cleanup, 0);
10238
10239 for (i = 0; i < dwp_htab->nr_columns; ++i)
10240 {
10241 uint32_t offset = read_4_bytes (dbfd,
10242 dwp_htab->section_pool.v2.offsets
10243 + (((unit_index - 1) * dwp_htab->nr_columns
10244 + i)
10245 * sizeof (uint32_t)));
10246 uint32_t size = read_4_bytes (dbfd,
10247 dwp_htab->section_pool.v2.sizes
10248 + (((unit_index - 1) * dwp_htab->nr_columns
10249 + i)
10250 * sizeof (uint32_t)));
10251
10252 switch (dwp_htab->section_pool.v2.section_ids[i])
10253 {
10254 case DW_SECT_INFO:
10255 case DW_SECT_TYPES:
10256 sections.info_or_types_offset = offset;
10257 sections.info_or_types_size = size;
10258 break;
10259 case DW_SECT_ABBREV:
10260 sections.abbrev_offset = offset;
10261 sections.abbrev_size = size;
10262 break;
10263 case DW_SECT_LINE:
10264 sections.line_offset = offset;
10265 sections.line_size = size;
10266 break;
10267 case DW_SECT_LOC:
10268 sections.loc_offset = offset;
10269 sections.loc_size = size;
10270 break;
10271 case DW_SECT_STR_OFFSETS:
10272 sections.str_offsets_offset = offset;
10273 sections.str_offsets_size = size;
10274 break;
10275 case DW_SECT_MACINFO:
10276 sections.macinfo_offset = offset;
10277 sections.macinfo_size = size;
10278 break;
10279 case DW_SECT_MACRO:
10280 sections.macro_offset = offset;
10281 sections.macro_size = size;
10282 break;
10283 }
10284 }
10285
10286 /* It's easier for the rest of the code if we fake a struct dwo_file and
10287 have dwo_unit "live" in that. At least for now.
10288
10289 The DWP file can be made up of a random collection of CUs and TUs.
10290 However, for each CU + set of TUs that came from the same original DWO
10291 file, we can combine them back into a virtual DWO file to save space
10292 (fewer struct dwo_file objects to allocate). Remember that for really
10293 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
10294
10295 virtual_dwo_name =
10296 xstrprintf ("virtual-dwo/%ld-%ld-%ld-%ld",
10297 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
10298 (long) (sections.line_size ? sections.line_offset : 0),
10299 (long) (sections.loc_size ? sections.loc_offset : 0),
10300 (long) (sections.str_offsets_size
10301 ? sections.str_offsets_offset : 0));
10302 make_cleanup (xfree, virtual_dwo_name);
10303 /* Can we use an existing virtual DWO file? */
10304 dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
10305 /* Create one if necessary. */
10306 if (*dwo_file_slot == NULL)
10307 {
b4f54984 10308 if (dwarf_read_debug)
73869dc2
DE
10309 {
10310 fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
10311 virtual_dwo_name);
10312 }
10313 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
10314 dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
10315 virtual_dwo_name,
10316 strlen (virtual_dwo_name));
10317 dwo_file->comp_dir = comp_dir;
10318 dwo_file->sections.abbrev =
10319 create_dwp_v2_section (&dwp_file->sections.abbrev,
10320 sections.abbrev_offset, sections.abbrev_size);
10321 dwo_file->sections.line =
10322 create_dwp_v2_section (&dwp_file->sections.line,
10323 sections.line_offset, sections.line_size);
10324 dwo_file->sections.loc =
10325 create_dwp_v2_section (&dwp_file->sections.loc,
10326 sections.loc_offset, sections.loc_size);
10327 dwo_file->sections.macinfo =
10328 create_dwp_v2_section (&dwp_file->sections.macinfo,
10329 sections.macinfo_offset, sections.macinfo_size);
10330 dwo_file->sections.macro =
10331 create_dwp_v2_section (&dwp_file->sections.macro,
10332 sections.macro_offset, sections.macro_size);
10333 dwo_file->sections.str_offsets =
10334 create_dwp_v2_section (&dwp_file->sections.str_offsets,
10335 sections.str_offsets_offset,
10336 sections.str_offsets_size);
10337 /* The "str" section is global to the entire DWP file. */
10338 dwo_file->sections.str = dwp_file->sections.str;
10339 /* The info or types section is assigned below to dwo_unit,
10340 there's no need to record it in dwo_file.
10341 Also, we can't simply record type sections in dwo_file because
10342 we record a pointer into the vector in dwo_unit. As we collect more
10343 types we'll grow the vector and eventually have to reallocate space
10344 for it, invalidating all copies of pointers into the previous
10345 contents. */
10346 *dwo_file_slot = dwo_file;
10347 }
10348 else
10349 {
b4f54984 10350 if (dwarf_read_debug)
73869dc2
DE
10351 {
10352 fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10353 virtual_dwo_name);
10354 }
10355 dwo_file = *dwo_file_slot;
10356 }
10357 do_cleanups (cleanups);
10358
10359 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10360 dwo_unit->dwo_file = dwo_file;
10361 dwo_unit->signature = signature;
10362 dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
10363 sizeof (struct dwarf2_section_info));
10364 *dwo_unit->section = create_dwp_v2_section (is_debug_types
10365 ? &dwp_file->sections.types
10366 : &dwp_file->sections.info,
10367 sections.info_or_types_offset,
10368 sections.info_or_types_size);
10369 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
10370
10371 return dwo_unit;
10372}
10373
57d63ce2
DE
10374/* Lookup the DWO unit with SIGNATURE in DWP_FILE.
10375 Returns NULL if the signature isn't found. */
80626a55
DE
10376
10377static struct dwo_unit *
57d63ce2
DE
10378lookup_dwo_unit_in_dwp (struct dwp_file *dwp_file, const char *comp_dir,
10379 ULONGEST signature, int is_debug_types)
80626a55 10380{
57d63ce2
DE
10381 const struct dwp_hash_table *dwp_htab =
10382 is_debug_types ? dwp_file->tus : dwp_file->cus;
80626a55 10383 bfd *dbfd = dwp_file->dbfd;
57d63ce2 10384 uint32_t mask = dwp_htab->nr_slots - 1;
80626a55
DE
10385 uint32_t hash = signature & mask;
10386 uint32_t hash2 = ((signature >> 32) & mask) | 1;
10387 unsigned int i;
10388 void **slot;
10389 struct dwo_unit find_dwo_cu, *dwo_cu;
10390
10391 memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
10392 find_dwo_cu.signature = signature;
19ac8c2e
DE
10393 slot = htab_find_slot (is_debug_types
10394 ? dwp_file->loaded_tus
10395 : dwp_file->loaded_cus,
10396 &find_dwo_cu, INSERT);
80626a55
DE
10397
10398 if (*slot != NULL)
10399 return *slot;
10400
10401 /* Use a for loop so that we don't loop forever on bad debug info. */
57d63ce2 10402 for (i = 0; i < dwp_htab->nr_slots; ++i)
80626a55
DE
10403 {
10404 ULONGEST signature_in_table;
10405
10406 signature_in_table =
57d63ce2 10407 read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
80626a55
DE
10408 if (signature_in_table == signature)
10409 {
57d63ce2
DE
10410 uint32_t unit_index =
10411 read_4_bytes (dbfd,
10412 dwp_htab->unit_table + hash * sizeof (uint32_t));
80626a55 10413
73869dc2
DE
10414 if (dwp_file->version == 1)
10415 {
10416 *slot = create_dwo_unit_in_dwp_v1 (dwp_file, unit_index,
10417 comp_dir, signature,
10418 is_debug_types);
10419 }
10420 else
10421 {
10422 *slot = create_dwo_unit_in_dwp_v2 (dwp_file, unit_index,
10423 comp_dir, signature,
10424 is_debug_types);
10425 }
80626a55
DE
10426 return *slot;
10427 }
10428 if (signature_in_table == 0)
10429 return NULL;
10430 hash = (hash + hash2) & mask;
10431 }
10432
10433 error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
10434 " [in module %s]"),
10435 dwp_file->name);
10436}
10437
ab5088bf 10438/* Subroutine of open_dwo_file,open_dwp_file to simplify them.
3019eac3
DE
10439 Open the file specified by FILE_NAME and hand it off to BFD for
10440 preliminary analysis. Return a newly initialized bfd *, which
10441 includes a canonicalized copy of FILE_NAME.
80626a55 10442 If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
6ac97d4c
DE
10443 SEARCH_CWD is true if the current directory is to be searched.
10444 It will be searched before debug-file-directory.
13aaf454
DE
10445 If successful, the file is added to the bfd include table of the
10446 objfile's bfd (see gdb_bfd_record_inclusion).
6ac97d4c 10447 If unable to find/open the file, return NULL.
3019eac3
DE
10448 NOTE: This function is derived from symfile_bfd_open. */
10449
10450static bfd *
6ac97d4c 10451try_open_dwop_file (const char *file_name, int is_dwp, int search_cwd)
3019eac3
DE
10452{
10453 bfd *sym_bfd;
80626a55 10454 int desc, flags;
3019eac3 10455 char *absolute_name;
9c02c129
DE
10456 /* Blech. OPF_TRY_CWD_FIRST also disables searching the path list if
10457 FILE_NAME contains a '/'. So we can't use it. Instead prepend "."
10458 to debug_file_directory. */
10459 char *search_path;
10460 static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
10461
6ac97d4c
DE
10462 if (search_cwd)
10463 {
10464 if (*debug_file_directory != '\0')
10465 search_path = concat (".", dirname_separator_string,
10466 debug_file_directory, NULL);
10467 else
10468 search_path = xstrdup (".");
10469 }
9c02c129 10470 else
6ac97d4c 10471 search_path = xstrdup (debug_file_directory);
3019eac3 10472
492c0ab7 10473 flags = OPF_RETURN_REALPATH;
80626a55
DE
10474 if (is_dwp)
10475 flags |= OPF_SEARCH_IN_PATH;
9c02c129 10476 desc = openp (search_path, flags, file_name,
3019eac3 10477 O_RDONLY | O_BINARY, &absolute_name);
9c02c129 10478 xfree (search_path);
3019eac3
DE
10479 if (desc < 0)
10480 return NULL;
10481
bb397797 10482 sym_bfd = gdb_bfd_open (absolute_name, gnutarget, desc);
a4453b7e 10483 xfree (absolute_name);
9c02c129
DE
10484 if (sym_bfd == NULL)
10485 return NULL;
3019eac3
DE
10486 bfd_set_cacheable (sym_bfd, 1);
10487
10488 if (!bfd_check_format (sym_bfd, bfd_object))
10489 {
cbb099e8 10490 gdb_bfd_unref (sym_bfd); /* This also closes desc. */
3019eac3
DE
10491 return NULL;
10492 }
10493
13aaf454
DE
10494 /* Success. Record the bfd as having been included by the objfile's bfd.
10495 This is important because things like demangled_names_hash lives in the
10496 objfile's per_bfd space and may have references to things like symbol
10497 names that live in the DWO/DWP file's per_bfd space. PR 16426. */
10498 gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd);
10499
3019eac3
DE
10500 return sym_bfd;
10501}
10502
ab5088bf 10503/* Try to open DWO file FILE_NAME.
3019eac3
DE
10504 COMP_DIR is the DW_AT_comp_dir attribute.
10505 The result is the bfd handle of the file.
10506 If there is a problem finding or opening the file, return NULL.
10507 Upon success, the canonicalized path of the file is stored in the bfd,
10508 same as symfile_bfd_open. */
10509
10510static bfd *
ab5088bf 10511open_dwo_file (const char *file_name, const char *comp_dir)
3019eac3
DE
10512{
10513 bfd *abfd;
3019eac3 10514
80626a55 10515 if (IS_ABSOLUTE_PATH (file_name))
6ac97d4c 10516 return try_open_dwop_file (file_name, 0 /*is_dwp*/, 0 /*search_cwd*/);
3019eac3
DE
10517
10518 /* Before trying the search path, try DWO_NAME in COMP_DIR. */
10519
10520 if (comp_dir != NULL)
10521 {
80626a55 10522 char *path_to_try = concat (comp_dir, SLASH_STRING, file_name, NULL);
3019eac3
DE
10523
10524 /* NOTE: If comp_dir is a relative path, this will also try the
10525 search path, which seems useful. */
6ac97d4c 10526 abfd = try_open_dwop_file (path_to_try, 0 /*is_dwp*/, 1 /*search_cwd*/);
3019eac3
DE
10527 xfree (path_to_try);
10528 if (abfd != NULL)
10529 return abfd;
10530 }
10531
10532 /* That didn't work, try debug-file-directory, which, despite its name,
10533 is a list of paths. */
10534
10535 if (*debug_file_directory == '\0')
10536 return NULL;
10537
6ac97d4c 10538 return try_open_dwop_file (file_name, 0 /*is_dwp*/, 1 /*search_cwd*/);
3019eac3
DE
10539}
10540
80626a55
DE
10541/* This function is mapped across the sections and remembers the offset and
10542 size of each of the DWO debugging sections we are interested in. */
10543
10544static void
10545dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
10546{
10547 struct dwo_sections *dwo_sections = dwo_sections_ptr;
10548 const struct dwop_section_names *names = &dwop_section_names;
10549
10550 if (section_is_p (sectp->name, &names->abbrev_dwo))
10551 {
73869dc2 10552 dwo_sections->abbrev.s.asection = sectp;
80626a55
DE
10553 dwo_sections->abbrev.size = bfd_get_section_size (sectp);
10554 }
10555 else if (section_is_p (sectp->name, &names->info_dwo))
10556 {
73869dc2 10557 dwo_sections->info.s.asection = sectp;
80626a55
DE
10558 dwo_sections->info.size = bfd_get_section_size (sectp);
10559 }
10560 else if (section_is_p (sectp->name, &names->line_dwo))
10561 {
73869dc2 10562 dwo_sections->line.s.asection = sectp;
80626a55
DE
10563 dwo_sections->line.size = bfd_get_section_size (sectp);
10564 }
10565 else if (section_is_p (sectp->name, &names->loc_dwo))
10566 {
73869dc2 10567 dwo_sections->loc.s.asection = sectp;
80626a55
DE
10568 dwo_sections->loc.size = bfd_get_section_size (sectp);
10569 }
10570 else if (section_is_p (sectp->name, &names->macinfo_dwo))
10571 {
73869dc2 10572 dwo_sections->macinfo.s.asection = sectp;
80626a55
DE
10573 dwo_sections->macinfo.size = bfd_get_section_size (sectp);
10574 }
10575 else if (section_is_p (sectp->name, &names->macro_dwo))
10576 {
73869dc2 10577 dwo_sections->macro.s.asection = sectp;
80626a55
DE
10578 dwo_sections->macro.size = bfd_get_section_size (sectp);
10579 }
10580 else if (section_is_p (sectp->name, &names->str_dwo))
10581 {
73869dc2 10582 dwo_sections->str.s.asection = sectp;
80626a55
DE
10583 dwo_sections->str.size = bfd_get_section_size (sectp);
10584 }
10585 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10586 {
73869dc2 10587 dwo_sections->str_offsets.s.asection = sectp;
80626a55
DE
10588 dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
10589 }
10590 else if (section_is_p (sectp->name, &names->types_dwo))
10591 {
10592 struct dwarf2_section_info type_section;
10593
10594 memset (&type_section, 0, sizeof (type_section));
73869dc2 10595 type_section.s.asection = sectp;
80626a55
DE
10596 type_section.size = bfd_get_section_size (sectp);
10597 VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
10598 &type_section);
10599 }
10600}
10601
ab5088bf 10602/* Initialize the use of the DWO file specified by DWO_NAME and referenced
19c3d4c9 10603 by PER_CU. This is for the non-DWP case.
80626a55 10604 The result is NULL if DWO_NAME can't be found. */
3019eac3
DE
10605
10606static struct dwo_file *
0ac5b59e
DE
10607open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
10608 const char *dwo_name, const char *comp_dir)
3019eac3
DE
10609{
10610 struct objfile *objfile = dwarf2_per_objfile->objfile;
80626a55
DE
10611 struct dwo_file *dwo_file;
10612 bfd *dbfd;
3019eac3
DE
10613 struct cleanup *cleanups;
10614
ab5088bf 10615 dbfd = open_dwo_file (dwo_name, comp_dir);
80626a55
DE
10616 if (dbfd == NULL)
10617 {
b4f54984 10618 if (dwarf_read_debug)
80626a55
DE
10619 fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
10620 return NULL;
10621 }
10622 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
0ac5b59e
DE
10623 dwo_file->dwo_name = dwo_name;
10624 dwo_file->comp_dir = comp_dir;
80626a55 10625 dwo_file->dbfd = dbfd;
3019eac3
DE
10626
10627 cleanups = make_cleanup (free_dwo_file_cleanup, dwo_file);
10628
80626a55 10629 bfd_map_over_sections (dbfd, dwarf2_locate_dwo_sections, &dwo_file->sections);
3019eac3 10630
19c3d4c9 10631 dwo_file->cu = create_dwo_cu (dwo_file);
3019eac3
DE
10632
10633 dwo_file->tus = create_debug_types_hash_table (dwo_file,
10634 dwo_file->sections.types);
10635
10636 discard_cleanups (cleanups);
10637
b4f54984 10638 if (dwarf_read_debug)
80626a55
DE
10639 fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
10640
3019eac3
DE
10641 return dwo_file;
10642}
10643
80626a55 10644/* This function is mapped across the sections and remembers the offset and
73869dc2
DE
10645 size of each of the DWP debugging sections common to version 1 and 2 that
10646 we are interested in. */
3019eac3 10647
80626a55 10648static void
73869dc2
DE
10649dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
10650 void *dwp_file_ptr)
3019eac3 10651{
80626a55
DE
10652 struct dwp_file *dwp_file = dwp_file_ptr;
10653 const struct dwop_section_names *names = &dwop_section_names;
10654 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
3019eac3 10655
80626a55 10656 /* Record the ELF section number for later lookup: this is what the
73869dc2 10657 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
80626a55
DE
10658 gdb_assert (elf_section_nr < dwp_file->num_sections);
10659 dwp_file->elf_sections[elf_section_nr] = sectp;
3019eac3 10660
80626a55
DE
10661 /* Look for specific sections that we need. */
10662 if (section_is_p (sectp->name, &names->str_dwo))
10663 {
73869dc2 10664 dwp_file->sections.str.s.asection = sectp;
80626a55
DE
10665 dwp_file->sections.str.size = bfd_get_section_size (sectp);
10666 }
10667 else if (section_is_p (sectp->name, &names->cu_index))
10668 {
73869dc2 10669 dwp_file->sections.cu_index.s.asection = sectp;
80626a55
DE
10670 dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
10671 }
10672 else if (section_is_p (sectp->name, &names->tu_index))
10673 {
73869dc2 10674 dwp_file->sections.tu_index.s.asection = sectp;
80626a55
DE
10675 dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
10676 }
10677}
3019eac3 10678
73869dc2
DE
10679/* This function is mapped across the sections and remembers the offset and
10680 size of each of the DWP version 2 debugging sections that we are interested
10681 in. This is split into a separate function because we don't know if we
10682 have version 1 or 2 until we parse the cu_index/tu_index sections. */
10683
10684static void
10685dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
10686{
10687 struct dwp_file *dwp_file = dwp_file_ptr;
10688 const struct dwop_section_names *names = &dwop_section_names;
10689 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10690
10691 /* Record the ELF section number for later lookup: this is what the
10692 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
10693 gdb_assert (elf_section_nr < dwp_file->num_sections);
10694 dwp_file->elf_sections[elf_section_nr] = sectp;
10695
10696 /* Look for specific sections that we need. */
10697 if (section_is_p (sectp->name, &names->abbrev_dwo))
10698 {
10699 dwp_file->sections.abbrev.s.asection = sectp;
10700 dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
10701 }
10702 else if (section_is_p (sectp->name, &names->info_dwo))
10703 {
10704 dwp_file->sections.info.s.asection = sectp;
10705 dwp_file->sections.info.size = bfd_get_section_size (sectp);
10706 }
10707 else if (section_is_p (sectp->name, &names->line_dwo))
10708 {
10709 dwp_file->sections.line.s.asection = sectp;
10710 dwp_file->sections.line.size = bfd_get_section_size (sectp);
10711 }
10712 else if (section_is_p (sectp->name, &names->loc_dwo))
10713 {
10714 dwp_file->sections.loc.s.asection = sectp;
10715 dwp_file->sections.loc.size = bfd_get_section_size (sectp);
10716 }
10717 else if (section_is_p (sectp->name, &names->macinfo_dwo))
10718 {
10719 dwp_file->sections.macinfo.s.asection = sectp;
10720 dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
10721 }
10722 else if (section_is_p (sectp->name, &names->macro_dwo))
10723 {
10724 dwp_file->sections.macro.s.asection = sectp;
10725 dwp_file->sections.macro.size = bfd_get_section_size (sectp);
10726 }
10727 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10728 {
10729 dwp_file->sections.str_offsets.s.asection = sectp;
10730 dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
10731 }
10732 else if (section_is_p (sectp->name, &names->types_dwo))
10733 {
10734 dwp_file->sections.types.s.asection = sectp;
10735 dwp_file->sections.types.size = bfd_get_section_size (sectp);
10736 }
10737}
10738
80626a55 10739/* Hash function for dwp_file loaded CUs/TUs. */
3019eac3 10740
80626a55
DE
10741static hashval_t
10742hash_dwp_loaded_cutus (const void *item)
10743{
10744 const struct dwo_unit *dwo_unit = item;
3019eac3 10745
80626a55
DE
10746 /* This drops the top 32 bits of the signature, but is ok for a hash. */
10747 return dwo_unit->signature;
3019eac3
DE
10748}
10749
80626a55 10750/* Equality function for dwp_file loaded CUs/TUs. */
3019eac3 10751
80626a55
DE
10752static int
10753eq_dwp_loaded_cutus (const void *a, const void *b)
3019eac3 10754{
80626a55
DE
10755 const struct dwo_unit *dua = a;
10756 const struct dwo_unit *dub = b;
3019eac3 10757
80626a55
DE
10758 return dua->signature == dub->signature;
10759}
3019eac3 10760
80626a55 10761/* Allocate a hash table for dwp_file loaded CUs/TUs. */
3019eac3 10762
80626a55
DE
10763static htab_t
10764allocate_dwp_loaded_cutus_table (struct objfile *objfile)
10765{
10766 return htab_create_alloc_ex (3,
10767 hash_dwp_loaded_cutus,
10768 eq_dwp_loaded_cutus,
10769 NULL,
10770 &objfile->objfile_obstack,
10771 hashtab_obstack_allocate,
10772 dummy_obstack_deallocate);
10773}
3019eac3 10774
ab5088bf
DE
10775/* Try to open DWP file FILE_NAME.
10776 The result is the bfd handle of the file.
10777 If there is a problem finding or opening the file, return NULL.
10778 Upon success, the canonicalized path of the file is stored in the bfd,
10779 same as symfile_bfd_open. */
10780
10781static bfd *
10782open_dwp_file (const char *file_name)
10783{
6ac97d4c
DE
10784 bfd *abfd;
10785
10786 abfd = try_open_dwop_file (file_name, 1 /*is_dwp*/, 1 /*search_cwd*/);
10787 if (abfd != NULL)
10788 return abfd;
10789
10790 /* Work around upstream bug 15652.
10791 http://sourceware.org/bugzilla/show_bug.cgi?id=15652
10792 [Whether that's a "bug" is debatable, but it is getting in our way.]
10793 We have no real idea where the dwp file is, because gdb's realpath-ing
10794 of the executable's path may have discarded the needed info.
10795 [IWBN if the dwp file name was recorded in the executable, akin to
10796 .gnu_debuglink, but that doesn't exist yet.]
10797 Strip the directory from FILE_NAME and search again. */
10798 if (*debug_file_directory != '\0')
10799 {
10800 /* Don't implicitly search the current directory here.
10801 If the user wants to search "." to handle this case,
10802 it must be added to debug-file-directory. */
10803 return try_open_dwop_file (lbasename (file_name), 1 /*is_dwp*/,
10804 0 /*search_cwd*/);
10805 }
10806
10807 return NULL;
ab5088bf
DE
10808}
10809
80626a55
DE
10810/* Initialize the use of the DWP file for the current objfile.
10811 By convention the name of the DWP file is ${objfile}.dwp.
10812 The result is NULL if it can't be found. */
a766d390 10813
80626a55 10814static struct dwp_file *
ab5088bf 10815open_and_init_dwp_file (void)
80626a55
DE
10816{
10817 struct objfile *objfile = dwarf2_per_objfile->objfile;
10818 struct dwp_file *dwp_file;
10819 char *dwp_name;
10820 bfd *dbfd;
10821 struct cleanup *cleanups;
10822
82bf32bc
JK
10823 /* Try to find first .dwp for the binary file before any symbolic links
10824 resolving. */
10825 dwp_name = xstrprintf ("%s.dwp", objfile->original_name);
80626a55
DE
10826 cleanups = make_cleanup (xfree, dwp_name);
10827
ab5088bf 10828 dbfd = open_dwp_file (dwp_name);
82bf32bc
JK
10829 if (dbfd == NULL
10830 && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
10831 {
10832 /* Try to find .dwp for the binary file after gdb_realpath resolving. */
10833 dwp_name = xstrprintf ("%s.dwp", objfile_name (objfile));
10834 make_cleanup (xfree, dwp_name);
10835 dbfd = open_dwp_file (dwp_name);
10836 }
10837
80626a55
DE
10838 if (dbfd == NULL)
10839 {
b4f54984 10840 if (dwarf_read_debug)
80626a55
DE
10841 fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name);
10842 do_cleanups (cleanups);
10843 return NULL;
3019eac3 10844 }
80626a55 10845 dwp_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_file);
93417882 10846 dwp_file->name = bfd_get_filename (dbfd);
80626a55
DE
10847 dwp_file->dbfd = dbfd;
10848 do_cleanups (cleanups);
c906108c 10849
80626a55
DE
10850 /* +1: section 0 is unused */
10851 dwp_file->num_sections = bfd_count_sections (dbfd) + 1;
10852 dwp_file->elf_sections =
10853 OBSTACK_CALLOC (&objfile->objfile_obstack,
10854 dwp_file->num_sections, asection *);
10855
73869dc2 10856 bfd_map_over_sections (dbfd, dwarf2_locate_common_dwp_sections, dwp_file);
80626a55
DE
10857
10858 dwp_file->cus = create_dwp_hash_table (dwp_file, 0);
10859
10860 dwp_file->tus = create_dwp_hash_table (dwp_file, 1);
10861
73869dc2
DE
10862 /* The DWP file version is stored in the hash table. Oh well. */
10863 if (dwp_file->cus->version != dwp_file->tus->version)
10864 {
10865 /* Technically speaking, we should try to limp along, but this is
fbcbc3fd 10866 pretty bizarre. We use pulongest here because that's the established
4d65956b 10867 portability solution (e.g, we cannot use %u for uint32_t). */
fbcbc3fd
DE
10868 error (_("Dwarf Error: DWP file CU version %s doesn't match"
10869 " TU version %s [in DWP file %s]"),
10870 pulongest (dwp_file->cus->version),
10871 pulongest (dwp_file->tus->version), dwp_name);
73869dc2
DE
10872 }
10873 dwp_file->version = dwp_file->cus->version;
10874
10875 if (dwp_file->version == 2)
10876 bfd_map_over_sections (dbfd, dwarf2_locate_v2_dwp_sections, dwp_file);
10877
19ac8c2e
DE
10878 dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
10879 dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
80626a55 10880
b4f54984 10881 if (dwarf_read_debug)
80626a55
DE
10882 {
10883 fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
10884 fprintf_unfiltered (gdb_stdlog,
21aa081e
PA
10885 " %s CUs, %s TUs\n",
10886 pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
10887 pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
80626a55
DE
10888 }
10889
10890 return dwp_file;
3019eac3 10891}
c906108c 10892
ab5088bf
DE
10893/* Wrapper around open_and_init_dwp_file, only open it once. */
10894
10895static struct dwp_file *
10896get_dwp_file (void)
10897{
10898 if (! dwarf2_per_objfile->dwp_checked)
10899 {
10900 dwarf2_per_objfile->dwp_file = open_and_init_dwp_file ();
10901 dwarf2_per_objfile->dwp_checked = 1;
10902 }
10903 return dwarf2_per_objfile->dwp_file;
10904}
10905
80626a55
DE
10906/* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
10907 Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
10908 or in the DWP file for the objfile, referenced by THIS_UNIT.
3019eac3 10909 If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
80626a55
DE
10910 IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
10911
10912 This is called, for example, when wanting to read a variable with a
10913 complex location. Therefore we don't want to do file i/o for every call.
10914 Therefore we don't want to look for a DWO file on every call.
10915 Therefore we first see if we've already seen SIGNATURE in a DWP file,
10916 then we check if we've already seen DWO_NAME, and only THEN do we check
10917 for a DWO file.
10918
1c658ad5 10919 The result is a pointer to the dwo_unit object or NULL if we didn't find it
80626a55 10920 (dwo_id mismatch or couldn't find the DWO/DWP file). */
debd256d 10921
3019eac3 10922static struct dwo_unit *
80626a55
DE
10923lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
10924 const char *dwo_name, const char *comp_dir,
10925 ULONGEST signature, int is_debug_types)
3019eac3
DE
10926{
10927 struct objfile *objfile = dwarf2_per_objfile->objfile;
80626a55
DE
10928 const char *kind = is_debug_types ? "TU" : "CU";
10929 void **dwo_file_slot;
3019eac3 10930 struct dwo_file *dwo_file;
80626a55 10931 struct dwp_file *dwp_file;
cb1df416 10932
6a506a2d
DE
10933 /* First see if there's a DWP file.
10934 If we have a DWP file but didn't find the DWO inside it, don't
10935 look for the original DWO file. It makes gdb behave differently
10936 depending on whether one is debugging in the build tree. */
cf2c3c16 10937
ab5088bf 10938 dwp_file = get_dwp_file ();
80626a55 10939 if (dwp_file != NULL)
cf2c3c16 10940 {
80626a55
DE
10941 const struct dwp_hash_table *dwp_htab =
10942 is_debug_types ? dwp_file->tus : dwp_file->cus;
10943
10944 if (dwp_htab != NULL)
10945 {
10946 struct dwo_unit *dwo_cutu =
57d63ce2
DE
10947 lookup_dwo_unit_in_dwp (dwp_file, comp_dir,
10948 signature, is_debug_types);
80626a55
DE
10949
10950 if (dwo_cutu != NULL)
10951 {
b4f54984 10952 if (dwarf_read_debug)
80626a55
DE
10953 {
10954 fprintf_unfiltered (gdb_stdlog,
10955 "Virtual DWO %s %s found: @%s\n",
10956 kind, hex_string (signature),
10957 host_address_to_string (dwo_cutu));
10958 }
10959 return dwo_cutu;
10960 }
10961 }
10962 }
6a506a2d 10963 else
80626a55 10964 {
6a506a2d 10965 /* No DWP file, look for the DWO file. */
80626a55 10966
6a506a2d
DE
10967 dwo_file_slot = lookup_dwo_file_slot (dwo_name, comp_dir);
10968 if (*dwo_file_slot == NULL)
80626a55 10969 {
6a506a2d
DE
10970 /* Read in the file and build a table of the CUs/TUs it contains. */
10971 *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
19c3d4c9 10972 }
6a506a2d
DE
10973 /* NOTE: This will be NULL if unable to open the file. */
10974 dwo_file = *dwo_file_slot;
3019eac3 10975
6a506a2d 10976 if (dwo_file != NULL)
19c3d4c9 10977 {
6a506a2d
DE
10978 struct dwo_unit *dwo_cutu = NULL;
10979
10980 if (is_debug_types && dwo_file->tus)
10981 {
10982 struct dwo_unit find_dwo_cutu;
10983
10984 memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
10985 find_dwo_cutu.signature = signature;
10986 dwo_cutu = htab_find (dwo_file->tus, &find_dwo_cutu);
10987 }
10988 else if (!is_debug_types && dwo_file->cu)
80626a55 10989 {
6a506a2d
DE
10990 if (signature == dwo_file->cu->signature)
10991 dwo_cutu = dwo_file->cu;
10992 }
10993
10994 if (dwo_cutu != NULL)
10995 {
b4f54984 10996 if (dwarf_read_debug)
6a506a2d
DE
10997 {
10998 fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
10999 kind, dwo_name, hex_string (signature),
11000 host_address_to_string (dwo_cutu));
11001 }
11002 return dwo_cutu;
80626a55
DE
11003 }
11004 }
2e276125 11005 }
9cdd5dbd 11006
80626a55
DE
11007 /* We didn't find it. This could mean a dwo_id mismatch, or
11008 someone deleted the DWO/DWP file, or the search path isn't set up
11009 correctly to find the file. */
11010
b4f54984 11011 if (dwarf_read_debug)
80626a55
DE
11012 {
11013 fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
11014 kind, dwo_name, hex_string (signature));
11015 }
3019eac3 11016
6656a72d
DE
11017 /* This is a warning and not a complaint because it can be caused by
11018 pilot error (e.g., user accidentally deleting the DWO). */
43942612
DE
11019 {
11020 /* Print the name of the DWP file if we looked there, helps the user
11021 better diagnose the problem. */
11022 char *dwp_text = NULL;
11023 struct cleanup *cleanups;
11024
11025 if (dwp_file != NULL)
11026 dwp_text = xstrprintf (" [in DWP file %s]", lbasename (dwp_file->name));
11027 cleanups = make_cleanup (xfree, dwp_text);
11028
11029 warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset 0x%x"
11030 " [in module %s]"),
11031 kind, dwo_name, hex_string (signature),
11032 dwp_text != NULL ? dwp_text : "",
11033 this_unit->is_debug_types ? "TU" : "CU",
11034 this_unit->offset.sect_off, objfile_name (objfile));
11035
11036 do_cleanups (cleanups);
11037 }
3019eac3 11038 return NULL;
5fb290d7
DJ
11039}
11040
80626a55
DE
11041/* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
11042 See lookup_dwo_cutu_unit for details. */
11043
11044static struct dwo_unit *
11045lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
11046 const char *dwo_name, const char *comp_dir,
11047 ULONGEST signature)
11048{
11049 return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
11050}
11051
11052/* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
11053 See lookup_dwo_cutu_unit for details. */
11054
11055static struct dwo_unit *
11056lookup_dwo_type_unit (struct signatured_type *this_tu,
11057 const char *dwo_name, const char *comp_dir)
11058{
11059 return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
11060}
11061
89e63ee4
DE
11062/* Traversal function for queue_and_load_all_dwo_tus. */
11063
11064static int
11065queue_and_load_dwo_tu (void **slot, void *info)
11066{
11067 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
11068 struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
11069 ULONGEST signature = dwo_unit->signature;
11070 struct signatured_type *sig_type =
11071 lookup_dwo_signatured_type (per_cu->cu, signature);
11072
11073 if (sig_type != NULL)
11074 {
11075 struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
11076
11077 /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
11078 a real dependency of PER_CU on SIG_TYPE. That is detected later
11079 while processing PER_CU. */
11080 if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
11081 load_full_type_unit (sig_cu);
11082 VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
11083 }
11084
11085 return 1;
11086}
11087
11088/* Queue all TUs contained in the DWO of PER_CU to be read in.
11089 The DWO may have the only definition of the type, though it may not be
11090 referenced anywhere in PER_CU. Thus we have to load *all* its TUs.
11091 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
11092
11093static void
11094queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
11095{
11096 struct dwo_unit *dwo_unit;
11097 struct dwo_file *dwo_file;
11098
11099 gdb_assert (!per_cu->is_debug_types);
11100 gdb_assert (get_dwp_file () == NULL);
11101 gdb_assert (per_cu->cu != NULL);
11102
11103 dwo_unit = per_cu->cu->dwo_unit;
11104 gdb_assert (dwo_unit != NULL);
11105
11106 dwo_file = dwo_unit->dwo_file;
11107 if (dwo_file->tus != NULL)
11108 htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
11109}
11110
3019eac3
DE
11111/* Free all resources associated with DWO_FILE.
11112 Close the DWO file and munmap the sections.
11113 All memory should be on the objfile obstack. */
348e048f
DE
11114
11115static void
3019eac3 11116free_dwo_file (struct dwo_file *dwo_file, struct objfile *objfile)
348e048f 11117{
3019eac3
DE
11118 int ix;
11119 struct dwarf2_section_info *section;
348e048f 11120
5c6fa7ab 11121 /* Note: dbfd is NULL for virtual DWO files. */
80626a55 11122 gdb_bfd_unref (dwo_file->dbfd);
348e048f 11123
3019eac3
DE
11124 VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
11125}
348e048f 11126
3019eac3 11127/* Wrapper for free_dwo_file for use in cleanups. */
348e048f 11128
3019eac3
DE
11129static void
11130free_dwo_file_cleanup (void *arg)
11131{
11132 struct dwo_file *dwo_file = (struct dwo_file *) arg;
11133 struct objfile *objfile = dwarf2_per_objfile->objfile;
348e048f 11134
3019eac3
DE
11135 free_dwo_file (dwo_file, objfile);
11136}
348e048f 11137
3019eac3 11138/* Traversal function for free_dwo_files. */
2ab95328 11139
3019eac3
DE
11140static int
11141free_dwo_file_from_slot (void **slot, void *info)
11142{
11143 struct dwo_file *dwo_file = (struct dwo_file *) *slot;
11144 struct objfile *objfile = (struct objfile *) info;
348e048f 11145
3019eac3 11146 free_dwo_file (dwo_file, objfile);
348e048f 11147
3019eac3
DE
11148 return 1;
11149}
348e048f 11150
3019eac3 11151/* Free all resources associated with DWO_FILES. */
348e048f 11152
3019eac3
DE
11153static void
11154free_dwo_files (htab_t dwo_files, struct objfile *objfile)
11155{
11156 htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
348e048f 11157}
3019eac3
DE
11158\f
11159/* Read in various DIEs. */
348e048f 11160
d389af10
JK
11161/* qsort helper for inherit_abstract_dies. */
11162
11163static int
11164unsigned_int_compar (const void *ap, const void *bp)
11165{
11166 unsigned int a = *(unsigned int *) ap;
11167 unsigned int b = *(unsigned int *) bp;
11168
11169 return (a > b) - (b > a);
11170}
11171
11172/* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
3e43a32a
MS
11173 Inherit only the children of the DW_AT_abstract_origin DIE not being
11174 already referenced by DW_AT_abstract_origin from the children of the
11175 current DIE. */
d389af10
JK
11176
11177static void
11178inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
11179{
11180 struct die_info *child_die;
11181 unsigned die_children_count;
11182 /* CU offsets which were referenced by children of the current DIE. */
b64f50a1
JK
11183 sect_offset *offsets;
11184 sect_offset *offsets_end, *offsetp;
d389af10
JK
11185 /* Parent of DIE - referenced by DW_AT_abstract_origin. */
11186 struct die_info *origin_die;
11187 /* Iterator of the ORIGIN_DIE children. */
11188 struct die_info *origin_child_die;
11189 struct cleanup *cleanups;
11190 struct attribute *attr;
cd02d79d
PA
11191 struct dwarf2_cu *origin_cu;
11192 struct pending **origin_previous_list_in_scope;
d389af10
JK
11193
11194 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11195 if (!attr)
11196 return;
11197
cd02d79d
PA
11198 /* Note that following die references may follow to a die in a
11199 different cu. */
11200
11201 origin_cu = cu;
11202 origin_die = follow_die_ref (die, attr, &origin_cu);
11203
11204 /* We're inheriting ORIGIN's children into the scope we'd put DIE's
11205 symbols in. */
11206 origin_previous_list_in_scope = origin_cu->list_in_scope;
11207 origin_cu->list_in_scope = cu->list_in_scope;
11208
edb3359d
DJ
11209 if (die->tag != origin_die->tag
11210 && !(die->tag == DW_TAG_inlined_subroutine
11211 && origin_die->tag == DW_TAG_subprogram))
d389af10
JK
11212 complaint (&symfile_complaints,
11213 _("DIE 0x%x and its abstract origin 0x%x have different tags"),
b64f50a1 11214 die->offset.sect_off, origin_die->offset.sect_off);
d389af10
JK
11215
11216 child_die = die->child;
11217 die_children_count = 0;
11218 while (child_die && child_die->tag)
11219 {
11220 child_die = sibling_die (child_die);
11221 die_children_count++;
11222 }
11223 offsets = xmalloc (sizeof (*offsets) * die_children_count);
11224 cleanups = make_cleanup (xfree, offsets);
11225
11226 offsets_end = offsets;
3ea89b92
PMR
11227 for (child_die = die->child;
11228 child_die && child_die->tag;
11229 child_die = sibling_die (child_die))
11230 {
11231 struct die_info *child_origin_die;
11232 struct dwarf2_cu *child_origin_cu;
11233
11234 /* We are trying to process concrete instance entries:
11235 DW_TAG_GNU_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
11236 it's not relevant to our analysis here. i.e. detecting DIEs that are
11237 present in the abstract instance but not referenced in the concrete
11238 one. */
11239 if (child_die->tag == DW_TAG_GNU_call_site)
11240 continue;
11241
c38f313d
DJ
11242 /* For each CHILD_DIE, find the corresponding child of
11243 ORIGIN_DIE. If there is more than one layer of
11244 DW_AT_abstract_origin, follow them all; there shouldn't be,
11245 but GCC versions at least through 4.4 generate this (GCC PR
11246 40573). */
3ea89b92
PMR
11247 child_origin_die = child_die;
11248 child_origin_cu = cu;
c38f313d
DJ
11249 while (1)
11250 {
cd02d79d
PA
11251 attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
11252 child_origin_cu);
c38f313d
DJ
11253 if (attr == NULL)
11254 break;
cd02d79d
PA
11255 child_origin_die = follow_die_ref (child_origin_die, attr,
11256 &child_origin_cu);
c38f313d
DJ
11257 }
11258
d389af10
JK
11259 /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
11260 counterpart may exist. */
c38f313d 11261 if (child_origin_die != child_die)
d389af10 11262 {
edb3359d
DJ
11263 if (child_die->tag != child_origin_die->tag
11264 && !(child_die->tag == DW_TAG_inlined_subroutine
11265 && child_origin_die->tag == DW_TAG_subprogram))
d389af10
JK
11266 complaint (&symfile_complaints,
11267 _("Child DIE 0x%x and its abstract origin 0x%x have "
b64f50a1
JK
11268 "different tags"), child_die->offset.sect_off,
11269 child_origin_die->offset.sect_off);
c38f313d
DJ
11270 if (child_origin_die->parent != origin_die)
11271 complaint (&symfile_complaints,
11272 _("Child DIE 0x%x and its abstract origin 0x%x have "
b64f50a1
JK
11273 "different parents"), child_die->offset.sect_off,
11274 child_origin_die->offset.sect_off);
c38f313d
DJ
11275 else
11276 *offsets_end++ = child_origin_die->offset;
d389af10 11277 }
d389af10
JK
11278 }
11279 qsort (offsets, offsets_end - offsets, sizeof (*offsets),
11280 unsigned_int_compar);
11281 for (offsetp = offsets + 1; offsetp < offsets_end; offsetp++)
b64f50a1 11282 if (offsetp[-1].sect_off == offsetp->sect_off)
3e43a32a
MS
11283 complaint (&symfile_complaints,
11284 _("Multiple children of DIE 0x%x refer "
11285 "to DIE 0x%x as their abstract origin"),
b64f50a1 11286 die->offset.sect_off, offsetp->sect_off);
d389af10
JK
11287
11288 offsetp = offsets;
11289 origin_child_die = origin_die->child;
11290 while (origin_child_die && origin_child_die->tag)
11291 {
11292 /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children? */
b64f50a1
JK
11293 while (offsetp < offsets_end
11294 && offsetp->sect_off < origin_child_die->offset.sect_off)
d389af10 11295 offsetp++;
b64f50a1
JK
11296 if (offsetp >= offsets_end
11297 || offsetp->sect_off > origin_child_die->offset.sect_off)
d389af10 11298 {
adde2bff
DE
11299 /* Found that ORIGIN_CHILD_DIE is really not referenced.
11300 Check whether we're already processing ORIGIN_CHILD_DIE.
11301 This can happen with mutually referenced abstract_origins.
11302 PR 16581. */
11303 if (!origin_child_die->in_process)
11304 process_die (origin_child_die, origin_cu);
d389af10
JK
11305 }
11306 origin_child_die = sibling_die (origin_child_die);
11307 }
cd02d79d 11308 origin_cu->list_in_scope = origin_previous_list_in_scope;
d389af10
JK
11309
11310 do_cleanups (cleanups);
11311}
11312
c906108c 11313static void
e7c27a73 11314read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 11315{
e7c27a73 11316 struct objfile *objfile = cu->objfile;
3e29f34a 11317 struct gdbarch *gdbarch = get_objfile_arch (objfile);
fe978cb0 11318 struct context_stack *newobj;
c906108c
SS
11319 CORE_ADDR lowpc;
11320 CORE_ADDR highpc;
11321 struct die_info *child_die;
edb3359d 11322 struct attribute *attr, *call_line, *call_file;
15d034d0 11323 const char *name;
e142c38c 11324 CORE_ADDR baseaddr;
801e3a5b 11325 struct block *block;
edb3359d 11326 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
34eaf542
TT
11327 VEC (symbolp) *template_args = NULL;
11328 struct template_symbol *templ_func = NULL;
edb3359d
DJ
11329
11330 if (inlined_func)
11331 {
11332 /* If we do not have call site information, we can't show the
11333 caller of this inlined function. That's too confusing, so
11334 only use the scope for local variables. */
11335 call_line = dwarf2_attr (die, DW_AT_call_line, cu);
11336 call_file = dwarf2_attr (die, DW_AT_call_file, cu);
11337 if (call_line == NULL || call_file == NULL)
11338 {
11339 read_lexical_block_scope (die, cu);
11340 return;
11341 }
11342 }
c906108c 11343
e142c38c
DJ
11344 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11345
94af9270 11346 name = dwarf2_name (die, cu);
c906108c 11347
e8d05480
JB
11348 /* Ignore functions with missing or empty names. These are actually
11349 illegal according to the DWARF standard. */
11350 if (name == NULL)
11351 {
11352 complaint (&symfile_complaints,
b64f50a1
JK
11353 _("missing name for subprogram DIE at %d"),
11354 die->offset.sect_off);
e8d05480
JB
11355 return;
11356 }
11357
11358 /* Ignore functions with missing or invalid low and high pc attributes. */
11359 if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
11360 {
ae4d0c03
PM
11361 attr = dwarf2_attr (die, DW_AT_external, cu);
11362 if (!attr || !DW_UNSND (attr))
11363 complaint (&symfile_complaints,
3e43a32a
MS
11364 _("cannot get low and high bounds "
11365 "for subprogram DIE at %d"),
b64f50a1 11366 die->offset.sect_off);
e8d05480
JB
11367 return;
11368 }
c906108c 11369
3e29f34a
MR
11370 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11371 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
c906108c 11372
34eaf542
TT
11373 /* If we have any template arguments, then we must allocate a
11374 different sort of symbol. */
11375 for (child_die = die->child; child_die; child_die = sibling_die (child_die))
11376 {
11377 if (child_die->tag == DW_TAG_template_type_param
11378 || child_die->tag == DW_TAG_template_value_param)
11379 {
e623cf5d 11380 templ_func = allocate_template_symbol (objfile);
34eaf542
TT
11381 templ_func->base.is_cplus_template_function = 1;
11382 break;
11383 }
11384 }
11385
fe978cb0
PA
11386 newobj = push_context (0, lowpc);
11387 newobj->name = new_symbol_full (die, read_type_die (die, cu), cu,
34eaf542 11388 (struct symbol *) templ_func);
4c2df51b 11389
4cecd739
DJ
11390 /* If there is a location expression for DW_AT_frame_base, record
11391 it. */
e142c38c 11392 attr = dwarf2_attr (die, DW_AT_frame_base, cu);
4c2df51b 11393 if (attr)
fe978cb0 11394 dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
4c2df51b 11395
e142c38c 11396 cu->list_in_scope = &local_symbols;
c906108c 11397
639d11d3 11398 if (die->child != NULL)
c906108c 11399 {
639d11d3 11400 child_die = die->child;
c906108c
SS
11401 while (child_die && child_die->tag)
11402 {
34eaf542
TT
11403 if (child_die->tag == DW_TAG_template_type_param
11404 || child_die->tag == DW_TAG_template_value_param)
11405 {
11406 struct symbol *arg = new_symbol (child_die, NULL, cu);
11407
f1078f66
DJ
11408 if (arg != NULL)
11409 VEC_safe_push (symbolp, template_args, arg);
34eaf542
TT
11410 }
11411 else
11412 process_die (child_die, cu);
c906108c
SS
11413 child_die = sibling_die (child_die);
11414 }
11415 }
11416
d389af10
JK
11417 inherit_abstract_dies (die, cu);
11418
4a811a97
UW
11419 /* If we have a DW_AT_specification, we might need to import using
11420 directives from the context of the specification DIE. See the
11421 comment in determine_prefix. */
11422 if (cu->language == language_cplus
11423 && dwarf2_attr (die, DW_AT_specification, cu))
11424 {
11425 struct dwarf2_cu *spec_cu = cu;
11426 struct die_info *spec_die = die_specification (die, &spec_cu);
11427
11428 while (spec_die)
11429 {
11430 child_die = spec_die->child;
11431 while (child_die && child_die->tag)
11432 {
11433 if (child_die->tag == DW_TAG_imported_module)
11434 process_die (child_die, spec_cu);
11435 child_die = sibling_die (child_die);
11436 }
11437
11438 /* In some cases, GCC generates specification DIEs that
11439 themselves contain DW_AT_specification attributes. */
11440 spec_die = die_specification (spec_die, &spec_cu);
11441 }
11442 }
11443
fe978cb0 11444 newobj = pop_context ();
c906108c 11445 /* Make a block for the local symbols within. */
fe978cb0 11446 block = finish_block (newobj->name, &local_symbols, newobj->old_blocks,
4d663531 11447 lowpc, highpc);
801e3a5b 11448
df8a16a1 11449 /* For C++, set the block's scope. */
195a3f6c 11450 if ((cu->language == language_cplus || cu->language == language_fortran)
4d4ec4e5 11451 && cu->processing_has_namespace_info)
195a3f6c
TT
11452 block_set_scope (block, determine_prefix (die, cu),
11453 &objfile->objfile_obstack);
df8a16a1 11454
801e3a5b
JB
11455 /* If we have address ranges, record them. */
11456 dwarf2_record_block_ranges (die, block, baseaddr, cu);
6e70227d 11457
fe978cb0 11458 gdbarch_make_symbol_special (gdbarch, newobj->name, objfile);
3e29f34a 11459
34eaf542
TT
11460 /* Attach template arguments to function. */
11461 if (! VEC_empty (symbolp, template_args))
11462 {
11463 gdb_assert (templ_func != NULL);
11464
11465 templ_func->n_template_arguments = VEC_length (symbolp, template_args);
11466 templ_func->template_arguments
11467 = obstack_alloc (&objfile->objfile_obstack,
11468 (templ_func->n_template_arguments
11469 * sizeof (struct symbol *)));
11470 memcpy (templ_func->template_arguments,
11471 VEC_address (symbolp, template_args),
11472 (templ_func->n_template_arguments * sizeof (struct symbol *)));
11473 VEC_free (symbolp, template_args);
11474 }
11475
208d8187
JB
11476 /* In C++, we can have functions nested inside functions (e.g., when
11477 a function declares a class that has methods). This means that
11478 when we finish processing a function scope, we may need to go
11479 back to building a containing block's symbol lists. */
fe978cb0
PA
11480 local_symbols = newobj->locals;
11481 using_directives = newobj->using_directives;
208d8187 11482
921e78cf
JB
11483 /* If we've finished processing a top-level function, subsequent
11484 symbols go in the file symbol list. */
11485 if (outermost_context_p ())
e142c38c 11486 cu->list_in_scope = &file_symbols;
c906108c
SS
11487}
11488
11489/* Process all the DIES contained within a lexical block scope. Start
11490 a new scope, process the dies, and then close the scope. */
11491
11492static void
e7c27a73 11493read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 11494{
e7c27a73 11495 struct objfile *objfile = cu->objfile;
3e29f34a 11496 struct gdbarch *gdbarch = get_objfile_arch (objfile);
fe978cb0 11497 struct context_stack *newobj;
c906108c
SS
11498 CORE_ADDR lowpc, highpc;
11499 struct die_info *child_die;
e142c38c
DJ
11500 CORE_ADDR baseaddr;
11501
11502 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c
SS
11503
11504 /* Ignore blocks with missing or invalid low and high pc attributes. */
af34e669
DJ
11505 /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
11506 as multiple lexical blocks? Handling children in a sane way would
6e70227d 11507 be nasty. Might be easier to properly extend generic blocks to
af34e669 11508 describe ranges. */
d85a05f0 11509 if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
c906108c 11510 return;
3e29f34a
MR
11511 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11512 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
c906108c
SS
11513
11514 push_context (0, lowpc);
639d11d3 11515 if (die->child != NULL)
c906108c 11516 {
639d11d3 11517 child_die = die->child;
c906108c
SS
11518 while (child_die && child_die->tag)
11519 {
e7c27a73 11520 process_die (child_die, cu);
c906108c
SS
11521 child_die = sibling_die (child_die);
11522 }
11523 }
3ea89b92 11524 inherit_abstract_dies (die, cu);
fe978cb0 11525 newobj = pop_context ();
c906108c 11526
8540c487 11527 if (local_symbols != NULL || using_directives != NULL)
c906108c 11528 {
801e3a5b 11529 struct block *block
fe978cb0
PA
11530 = finish_block (0, &local_symbols, newobj->old_blocks,
11531 newobj->start_addr, highpc);
801e3a5b
JB
11532
11533 /* Note that recording ranges after traversing children, as we
11534 do here, means that recording a parent's ranges entails
11535 walking across all its children's ranges as they appear in
11536 the address map, which is quadratic behavior.
11537
11538 It would be nicer to record the parent's ranges before
11539 traversing its children, simply overriding whatever you find
11540 there. But since we don't even decide whether to create a
11541 block until after we've traversed its children, that's hard
11542 to do. */
11543 dwarf2_record_block_ranges (die, block, baseaddr, cu);
c906108c 11544 }
fe978cb0
PA
11545 local_symbols = newobj->locals;
11546 using_directives = newobj->using_directives;
c906108c
SS
11547}
11548
96408a79
SA
11549/* Read in DW_TAG_GNU_call_site and insert it to CU->call_site_htab. */
11550
11551static void
11552read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
11553{
11554 struct objfile *objfile = cu->objfile;
11555 struct gdbarch *gdbarch = get_objfile_arch (objfile);
11556 CORE_ADDR pc, baseaddr;
11557 struct attribute *attr;
11558 struct call_site *call_site, call_site_local;
11559 void **slot;
11560 int nparams;
11561 struct die_info *child_die;
11562
11563 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11564
11565 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11566 if (!attr)
11567 {
11568 complaint (&symfile_complaints,
11569 _("missing DW_AT_low_pc for DW_TAG_GNU_call_site "
11570 "DIE 0x%x [in module %s]"),
4262abfb 11571 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11572 return;
11573 }
31aa7e4e 11574 pc = attr_value_as_address (attr) + baseaddr;
3e29f34a 11575 pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
96408a79
SA
11576
11577 if (cu->call_site_htab == NULL)
11578 cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
11579 NULL, &objfile->objfile_obstack,
11580 hashtab_obstack_allocate, NULL);
11581 call_site_local.pc = pc;
11582 slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
11583 if (*slot != NULL)
11584 {
11585 complaint (&symfile_complaints,
11586 _("Duplicate PC %s for DW_TAG_GNU_call_site "
11587 "DIE 0x%x [in module %s]"),
4262abfb
JK
11588 paddress (gdbarch, pc), die->offset.sect_off,
11589 objfile_name (objfile));
96408a79
SA
11590 return;
11591 }
11592
11593 /* Count parameters at the caller. */
11594
11595 nparams = 0;
11596 for (child_die = die->child; child_die && child_die->tag;
11597 child_die = sibling_die (child_die))
11598 {
11599 if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11600 {
11601 complaint (&symfile_complaints,
11602 _("Tag %d is not DW_TAG_GNU_call_site_parameter in "
11603 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb
JK
11604 child_die->tag, child_die->offset.sect_off,
11605 objfile_name (objfile));
96408a79
SA
11606 continue;
11607 }
11608
11609 nparams++;
11610 }
11611
11612 call_site = obstack_alloc (&objfile->objfile_obstack,
11613 (sizeof (*call_site)
11614 + (sizeof (*call_site->parameter)
11615 * (nparams - 1))));
11616 *slot = call_site;
11617 memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
11618 call_site->pc = pc;
11619
11620 if (dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
11621 {
11622 struct die_info *func_die;
11623
11624 /* Skip also over DW_TAG_inlined_subroutine. */
11625 for (func_die = die->parent;
11626 func_die && func_die->tag != DW_TAG_subprogram
11627 && func_die->tag != DW_TAG_subroutine_type;
11628 func_die = func_die->parent);
11629
11630 /* DW_AT_GNU_all_call_sites is a superset
11631 of DW_AT_GNU_all_tail_call_sites. */
11632 if (func_die
11633 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
11634 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
11635 {
11636 /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
11637 not complete. But keep CALL_SITE for look ups via call_site_htab,
11638 both the initial caller containing the real return address PC and
11639 the final callee containing the current PC of a chain of tail
11640 calls do not need to have the tail call list complete. But any
11641 function candidate for a virtual tail call frame searched via
11642 TYPE_TAIL_CALL_LIST must have the tail call list complete to be
11643 determined unambiguously. */
11644 }
11645 else
11646 {
11647 struct type *func_type = NULL;
11648
11649 if (func_die)
11650 func_type = get_die_type (func_die, cu);
11651 if (func_type != NULL)
11652 {
11653 gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
11654
11655 /* Enlist this call site to the function. */
11656 call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
11657 TYPE_TAIL_CALL_LIST (func_type) = call_site;
11658 }
11659 else
11660 complaint (&symfile_complaints,
11661 _("Cannot find function owning DW_TAG_GNU_call_site "
11662 "DIE 0x%x [in module %s]"),
4262abfb 11663 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11664 }
11665 }
11666
11667 attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
11668 if (attr == NULL)
11669 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11670 SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
11671 if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
11672 /* Keep NULL DWARF_BLOCK. */;
11673 else if (attr_form_is_block (attr))
11674 {
11675 struct dwarf2_locexpr_baton *dlbaton;
11676
11677 dlbaton = obstack_alloc (&objfile->objfile_obstack, sizeof (*dlbaton));
11678 dlbaton->data = DW_BLOCK (attr)->data;
11679 dlbaton->size = DW_BLOCK (attr)->size;
11680 dlbaton->per_cu = cu->per_cu;
11681
11682 SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
11683 }
7771576e 11684 else if (attr_form_is_ref (attr))
96408a79 11685 {
96408a79
SA
11686 struct dwarf2_cu *target_cu = cu;
11687 struct die_info *target_die;
11688
ac9ec31b 11689 target_die = follow_die_ref (die, attr, &target_cu);
96408a79
SA
11690 gdb_assert (target_cu->objfile == objfile);
11691 if (die_is_declaration (target_die, target_cu))
11692 {
9112db09
JK
11693 const char *target_physname = NULL;
11694 struct attribute *target_attr;
11695
11696 /* Prefer the mangled name; otherwise compute the demangled one. */
11697 target_attr = dwarf2_attr (target_die, DW_AT_linkage_name, target_cu);
11698 if (target_attr == NULL)
11699 target_attr = dwarf2_attr (target_die, DW_AT_MIPS_linkage_name,
11700 target_cu);
11701 if (target_attr != NULL && DW_STRING (target_attr) != NULL)
11702 target_physname = DW_STRING (target_attr);
11703 else
11704 target_physname = dwarf2_physname (NULL, target_die, target_cu);
96408a79
SA
11705 if (target_physname == NULL)
11706 complaint (&symfile_complaints,
11707 _("DW_AT_GNU_call_site_target target DIE has invalid "
11708 "physname, for referencing DIE 0x%x [in module %s]"),
4262abfb 11709 die->offset.sect_off, objfile_name (objfile));
96408a79 11710 else
7d455152 11711 SET_FIELD_PHYSNAME (call_site->target, target_physname);
96408a79
SA
11712 }
11713 else
11714 {
11715 CORE_ADDR lowpc;
11716
11717 /* DW_AT_entry_pc should be preferred. */
11718 if (!dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL))
11719 complaint (&symfile_complaints,
11720 _("DW_AT_GNU_call_site_target target DIE has invalid "
11721 "low pc, for referencing DIE 0x%x [in module %s]"),
4262abfb 11722 die->offset.sect_off, objfile_name (objfile));
96408a79 11723 else
3e29f34a
MR
11724 {
11725 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11726 SET_FIELD_PHYSADDR (call_site->target, lowpc);
11727 }
96408a79
SA
11728 }
11729 }
11730 else
11731 complaint (&symfile_complaints,
11732 _("DW_TAG_GNU_call_site DW_AT_GNU_call_site_target is neither "
11733 "block nor reference, for DIE 0x%x [in module %s]"),
4262abfb 11734 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11735
11736 call_site->per_cu = cu->per_cu;
11737
11738 for (child_die = die->child;
11739 child_die && child_die->tag;
11740 child_die = sibling_die (child_die))
11741 {
96408a79 11742 struct call_site_parameter *parameter;
1788b2d3 11743 struct attribute *loc, *origin;
96408a79
SA
11744
11745 if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11746 {
11747 /* Already printed the complaint above. */
11748 continue;
11749 }
11750
11751 gdb_assert (call_site->parameter_count < nparams);
11752 parameter = &call_site->parameter[call_site->parameter_count];
11753
1788b2d3
JK
11754 /* DW_AT_location specifies the register number or DW_AT_abstract_origin
11755 specifies DW_TAG_formal_parameter. Value of the data assumed for the
11756 register is contained in DW_AT_GNU_call_site_value. */
96408a79 11757
24c5c679 11758 loc = dwarf2_attr (child_die, DW_AT_location, cu);
1788b2d3 11759 origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
7771576e 11760 if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
1788b2d3
JK
11761 {
11762 sect_offset offset;
11763
11764 parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
11765 offset = dwarf2_get_ref_die_offset (origin);
d76b7dbc
JK
11766 if (!offset_in_cu_p (&cu->header, offset))
11767 {
11768 /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
11769 binding can be done only inside one CU. Such referenced DIE
11770 therefore cannot be even moved to DW_TAG_partial_unit. */
11771 complaint (&symfile_complaints,
11772 _("DW_AT_abstract_origin offset is not in CU for "
11773 "DW_TAG_GNU_call_site child DIE 0x%x "
11774 "[in module %s]"),
4262abfb 11775 child_die->offset.sect_off, objfile_name (objfile));
d76b7dbc
JK
11776 continue;
11777 }
1788b2d3
JK
11778 parameter->u.param_offset.cu_off = (offset.sect_off
11779 - cu->header.offset.sect_off);
11780 }
11781 else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
96408a79
SA
11782 {
11783 complaint (&symfile_complaints,
11784 _("No DW_FORM_block* DW_AT_location for "
11785 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11786 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11787 continue;
11788 }
24c5c679 11789 else
96408a79 11790 {
24c5c679
JK
11791 parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
11792 (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
11793 if (parameter->u.dwarf_reg != -1)
11794 parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
11795 else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
11796 &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
11797 &parameter->u.fb_offset))
11798 parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
11799 else
11800 {
11801 complaint (&symfile_complaints,
11802 _("Only single DW_OP_reg or DW_OP_fbreg is supported "
11803 "for DW_FORM_block* DW_AT_location is supported for "
11804 "DW_TAG_GNU_call_site child DIE 0x%x "
11805 "[in module %s]"),
4262abfb 11806 child_die->offset.sect_off, objfile_name (objfile));
24c5c679
JK
11807 continue;
11808 }
96408a79
SA
11809 }
11810
11811 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
11812 if (!attr_form_is_block (attr))
11813 {
11814 complaint (&symfile_complaints,
11815 _("No DW_FORM_block* DW_AT_GNU_call_site_value for "
11816 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11817 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11818 continue;
11819 }
11820 parameter->value = DW_BLOCK (attr)->data;
11821 parameter->value_size = DW_BLOCK (attr)->size;
11822
11823 /* Parameters are not pre-cleared by memset above. */
11824 parameter->data_value = NULL;
11825 parameter->data_value_size = 0;
11826 call_site->parameter_count++;
11827
11828 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
11829 if (attr)
11830 {
11831 if (!attr_form_is_block (attr))
11832 complaint (&symfile_complaints,
11833 _("No DW_FORM_block* DW_AT_GNU_call_site_data_value for "
11834 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11835 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11836 else
11837 {
11838 parameter->data_value = DW_BLOCK (attr)->data;
11839 parameter->data_value_size = DW_BLOCK (attr)->size;
11840 }
11841 }
11842 }
11843}
11844
43039443 11845/* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
ff013f42
JK
11846 Return 1 if the attributes are present and valid, otherwise, return 0.
11847 If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'. */
43039443
JK
11848
11849static int
11850dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
ff013f42
JK
11851 CORE_ADDR *high_return, struct dwarf2_cu *cu,
11852 struct partial_symtab *ranges_pst)
43039443
JK
11853{
11854 struct objfile *objfile = cu->objfile;
3e29f34a 11855 struct gdbarch *gdbarch = get_objfile_arch (objfile);
43039443
JK
11856 struct comp_unit_head *cu_header = &cu->header;
11857 bfd *obfd = objfile->obfd;
11858 unsigned int addr_size = cu_header->addr_size;
11859 CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
11860 /* Base address selection entry. */
11861 CORE_ADDR base;
11862 int found_base;
11863 unsigned int dummy;
d521ce57 11864 const gdb_byte *buffer;
43039443
JK
11865 CORE_ADDR marker;
11866 int low_set;
11867 CORE_ADDR low = 0;
11868 CORE_ADDR high = 0;
ff013f42 11869 CORE_ADDR baseaddr;
43039443 11870
d00adf39
DE
11871 found_base = cu->base_known;
11872 base = cu->base_address;
43039443 11873
be391dca 11874 dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
dce234bc 11875 if (offset >= dwarf2_per_objfile->ranges.size)
43039443
JK
11876 {
11877 complaint (&symfile_complaints,
11878 _("Offset %d out of bounds for DW_AT_ranges attribute"),
11879 offset);
11880 return 0;
11881 }
dce234bc 11882 buffer = dwarf2_per_objfile->ranges.buffer + offset;
43039443
JK
11883
11884 /* Read in the largest possible address. */
11885 marker = read_address (obfd, buffer, cu, &dummy);
11886 if ((marker & mask) == mask)
11887 {
11888 /* If we found the largest possible address, then
11889 read the base address. */
11890 base = read_address (obfd, buffer + addr_size, cu, &dummy);
11891 buffer += 2 * addr_size;
11892 offset += 2 * addr_size;
11893 found_base = 1;
11894 }
11895
11896 low_set = 0;
11897
e7030f15 11898 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
ff013f42 11899
43039443
JK
11900 while (1)
11901 {
11902 CORE_ADDR range_beginning, range_end;
11903
11904 range_beginning = read_address (obfd, buffer, cu, &dummy);
11905 buffer += addr_size;
11906 range_end = read_address (obfd, buffer, cu, &dummy);
11907 buffer += addr_size;
11908 offset += 2 * addr_size;
11909
11910 /* An end of list marker is a pair of zero addresses. */
11911 if (range_beginning == 0 && range_end == 0)
11912 /* Found the end of list entry. */
11913 break;
11914
11915 /* Each base address selection entry is a pair of 2 values.
11916 The first is the largest possible address, the second is
11917 the base address. Check for a base address here. */
11918 if ((range_beginning & mask) == mask)
11919 {
11920 /* If we found the largest possible address, then
11921 read the base address. */
11922 base = read_address (obfd, buffer + addr_size, cu, &dummy);
11923 found_base = 1;
11924 continue;
11925 }
11926
11927 if (!found_base)
11928 {
11929 /* We have no valid base address for the ranges
11930 data. */
11931 complaint (&symfile_complaints,
11932 _("Invalid .debug_ranges data (no base address)"));
11933 return 0;
11934 }
11935
9277c30c
UW
11936 if (range_beginning > range_end)
11937 {
11938 /* Inverted range entries are invalid. */
11939 complaint (&symfile_complaints,
11940 _("Invalid .debug_ranges data (inverted range)"));
11941 return 0;
11942 }
11943
11944 /* Empty range entries have no effect. */
11945 if (range_beginning == range_end)
11946 continue;
11947
43039443
JK
11948 range_beginning += base;
11949 range_end += base;
11950
01093045
DE
11951 /* A not-uncommon case of bad debug info.
11952 Don't pollute the addrmap with bad data. */
11953 if (range_beginning + baseaddr == 0
11954 && !dwarf2_per_objfile->has_section_at_zero)
11955 {
11956 complaint (&symfile_complaints,
11957 _(".debug_ranges entry has start address of zero"
4262abfb 11958 " [in module %s]"), objfile_name (objfile));
01093045
DE
11959 continue;
11960 }
11961
9277c30c 11962 if (ranges_pst != NULL)
3e29f34a
MR
11963 {
11964 CORE_ADDR lowpc;
11965 CORE_ADDR highpc;
11966
11967 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
11968 range_beginning + baseaddr);
11969 highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
11970 range_end + baseaddr);
11971 addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
11972 ranges_pst);
11973 }
ff013f42 11974
43039443
JK
11975 /* FIXME: This is recording everything as a low-high
11976 segment of consecutive addresses. We should have a
11977 data structure for discontiguous block ranges
11978 instead. */
11979 if (! low_set)
11980 {
11981 low = range_beginning;
11982 high = range_end;
11983 low_set = 1;
11984 }
11985 else
11986 {
11987 if (range_beginning < low)
11988 low = range_beginning;
11989 if (range_end > high)
11990 high = range_end;
11991 }
11992 }
11993
11994 if (! low_set)
11995 /* If the first entry is an end-of-list marker, the range
11996 describes an empty scope, i.e. no instructions. */
11997 return 0;
11998
11999 if (low_return)
12000 *low_return = low;
12001 if (high_return)
12002 *high_return = high;
12003 return 1;
12004}
12005
af34e669
DJ
12006/* Get low and high pc attributes from a die. Return 1 if the attributes
12007 are present and valid, otherwise, return 0. Return -1 if the range is
12008 discontinuous, i.e. derived from DW_AT_ranges information. */
380bca97 12009
c906108c 12010static int
af34e669 12011dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
d85a05f0
DJ
12012 CORE_ADDR *highpc, struct dwarf2_cu *cu,
12013 struct partial_symtab *pst)
c906108c
SS
12014{
12015 struct attribute *attr;
91da1414 12016 struct attribute *attr_high;
af34e669
DJ
12017 CORE_ADDR low = 0;
12018 CORE_ADDR high = 0;
12019 int ret = 0;
c906108c 12020
91da1414
MW
12021 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
12022 if (attr_high)
af34e669 12023 {
e142c38c 12024 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
af34e669 12025 if (attr)
91da1414 12026 {
31aa7e4e
JB
12027 low = attr_value_as_address (attr);
12028 high = attr_value_as_address (attr_high);
12029 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12030 high += low;
91da1414 12031 }
af34e669
DJ
12032 else
12033 /* Found high w/o low attribute. */
12034 return 0;
12035
12036 /* Found consecutive range of addresses. */
12037 ret = 1;
12038 }
c906108c 12039 else
af34e669 12040 {
e142c38c 12041 attr = dwarf2_attr (die, DW_AT_ranges, cu);
af34e669
DJ
12042 if (attr != NULL)
12043 {
ab435259
DE
12044 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12045 We take advantage of the fact that DW_AT_ranges does not appear
12046 in DW_TAG_compile_unit of DWO files. */
12047 int need_ranges_base = die->tag != DW_TAG_compile_unit;
12048 unsigned int ranges_offset = (DW_UNSND (attr)
12049 + (need_ranges_base
12050 ? cu->ranges_base
12051 : 0));
2e3cf129 12052
af34e669 12053 /* Value of the DW_AT_ranges attribute is the offset in the
a604369a 12054 .debug_ranges section. */
2e3cf129 12055 if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
af34e669 12056 return 0;
43039443 12057 /* Found discontinuous range of addresses. */
af34e669
DJ
12058 ret = -1;
12059 }
12060 }
c906108c 12061
9373cf26
JK
12062 /* read_partial_die has also the strict LOW < HIGH requirement. */
12063 if (high <= low)
c906108c
SS
12064 return 0;
12065
12066 /* When using the GNU linker, .gnu.linkonce. sections are used to
12067 eliminate duplicate copies of functions and vtables and such.
12068 The linker will arbitrarily choose one and discard the others.
12069 The AT_*_pc values for such functions refer to local labels in
12070 these sections. If the section from that file was discarded, the
12071 labels are not in the output, so the relocs get a value of 0.
12072 If this is a discarded function, mark the pc bounds as invalid,
12073 so that GDB will ignore it. */
72dca2f5 12074 if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
c906108c
SS
12075 return 0;
12076
12077 *lowpc = low;
96408a79
SA
12078 if (highpc)
12079 *highpc = high;
af34e669 12080 return ret;
c906108c
SS
12081}
12082
b084d499
JB
12083/* Assuming that DIE represents a subprogram DIE or a lexical block, get
12084 its low and high PC addresses. Do nothing if these addresses could not
12085 be determined. Otherwise, set LOWPC to the low address if it is smaller,
12086 and HIGHPC to the high address if greater than HIGHPC. */
12087
12088static void
12089dwarf2_get_subprogram_pc_bounds (struct die_info *die,
12090 CORE_ADDR *lowpc, CORE_ADDR *highpc,
12091 struct dwarf2_cu *cu)
12092{
12093 CORE_ADDR low, high;
12094 struct die_info *child = die->child;
12095
d85a05f0 12096 if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL))
b084d499
JB
12097 {
12098 *lowpc = min (*lowpc, low);
12099 *highpc = max (*highpc, high);
12100 }
12101
12102 /* If the language does not allow nested subprograms (either inside
12103 subprograms or lexical blocks), we're done. */
12104 if (cu->language != language_ada)
12105 return;
6e70227d 12106
b084d499
JB
12107 /* Check all the children of the given DIE. If it contains nested
12108 subprograms, then check their pc bounds. Likewise, we need to
12109 check lexical blocks as well, as they may also contain subprogram
12110 definitions. */
12111 while (child && child->tag)
12112 {
12113 if (child->tag == DW_TAG_subprogram
12114 || child->tag == DW_TAG_lexical_block)
12115 dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
12116 child = sibling_die (child);
12117 }
12118}
12119
fae299cd
DC
12120/* Get the low and high pc's represented by the scope DIE, and store
12121 them in *LOWPC and *HIGHPC. If the correct values can't be
12122 determined, set *LOWPC to -1 and *HIGHPC to 0. */
12123
12124static void
12125get_scope_pc_bounds (struct die_info *die,
12126 CORE_ADDR *lowpc, CORE_ADDR *highpc,
12127 struct dwarf2_cu *cu)
12128{
12129 CORE_ADDR best_low = (CORE_ADDR) -1;
12130 CORE_ADDR best_high = (CORE_ADDR) 0;
12131 CORE_ADDR current_low, current_high;
12132
d85a05f0 12133 if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL))
fae299cd
DC
12134 {
12135 best_low = current_low;
12136 best_high = current_high;
12137 }
12138 else
12139 {
12140 struct die_info *child = die->child;
12141
12142 while (child && child->tag)
12143 {
12144 switch (child->tag) {
12145 case DW_TAG_subprogram:
b084d499 12146 dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
fae299cd
DC
12147 break;
12148 case DW_TAG_namespace:
f55ee35c 12149 case DW_TAG_module:
fae299cd
DC
12150 /* FIXME: carlton/2004-01-16: Should we do this for
12151 DW_TAG_class_type/DW_TAG_structure_type, too? I think
12152 that current GCC's always emit the DIEs corresponding
12153 to definitions of methods of classes as children of a
12154 DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
12155 the DIEs giving the declarations, which could be
12156 anywhere). But I don't see any reason why the
12157 standards says that they have to be there. */
12158 get_scope_pc_bounds (child, &current_low, &current_high, cu);
12159
12160 if (current_low != ((CORE_ADDR) -1))
12161 {
12162 best_low = min (best_low, current_low);
12163 best_high = max (best_high, current_high);
12164 }
12165 break;
12166 default:
0963b4bd 12167 /* Ignore. */
fae299cd
DC
12168 break;
12169 }
12170
12171 child = sibling_die (child);
12172 }
12173 }
12174
12175 *lowpc = best_low;
12176 *highpc = best_high;
12177}
12178
801e3a5b
JB
12179/* Record the address ranges for BLOCK, offset by BASEADDR, as given
12180 in DIE. */
380bca97 12181
801e3a5b
JB
12182static void
12183dwarf2_record_block_ranges (struct die_info *die, struct block *block,
12184 CORE_ADDR baseaddr, struct dwarf2_cu *cu)
12185{
bb5ed363 12186 struct objfile *objfile = cu->objfile;
3e29f34a 12187 struct gdbarch *gdbarch = get_objfile_arch (objfile);
801e3a5b 12188 struct attribute *attr;
91da1414 12189 struct attribute *attr_high;
801e3a5b 12190
91da1414
MW
12191 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
12192 if (attr_high)
801e3a5b 12193 {
801e3a5b
JB
12194 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
12195 if (attr)
12196 {
31aa7e4e
JB
12197 CORE_ADDR low = attr_value_as_address (attr);
12198 CORE_ADDR high = attr_value_as_address (attr_high);
12199
12200 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12201 high += low;
9a619af0 12202
3e29f34a
MR
12203 low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
12204 high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
12205 record_block_range (block, low, high - 1);
801e3a5b
JB
12206 }
12207 }
12208
12209 attr = dwarf2_attr (die, DW_AT_ranges, cu);
12210 if (attr)
12211 {
bb5ed363 12212 bfd *obfd = objfile->obfd;
ab435259
DE
12213 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12214 We take advantage of the fact that DW_AT_ranges does not appear
12215 in DW_TAG_compile_unit of DWO files. */
12216 int need_ranges_base = die->tag != DW_TAG_compile_unit;
801e3a5b
JB
12217
12218 /* The value of the DW_AT_ranges attribute is the offset of the
12219 address range list in the .debug_ranges section. */
ab435259
DE
12220 unsigned long offset = (DW_UNSND (attr)
12221 + (need_ranges_base ? cu->ranges_base : 0));
d62bfeaf 12222 const gdb_byte *buffer;
801e3a5b
JB
12223
12224 /* For some target architectures, but not others, the
12225 read_address function sign-extends the addresses it returns.
12226 To recognize base address selection entries, we need a
12227 mask. */
12228 unsigned int addr_size = cu->header.addr_size;
12229 CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
12230
12231 /* The base address, to which the next pair is relative. Note
12232 that this 'base' is a DWARF concept: most entries in a range
12233 list are relative, to reduce the number of relocs against the
12234 debugging information. This is separate from this function's
12235 'baseaddr' argument, which GDB uses to relocate debugging
12236 information from a shared library based on the address at
12237 which the library was loaded. */
d00adf39
DE
12238 CORE_ADDR base = cu->base_address;
12239 int base_known = cu->base_known;
801e3a5b 12240
d62bfeaf 12241 dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
dce234bc 12242 if (offset >= dwarf2_per_objfile->ranges.size)
801e3a5b
JB
12243 {
12244 complaint (&symfile_complaints,
12245 _("Offset %lu out of bounds for DW_AT_ranges attribute"),
12246 offset);
12247 return;
12248 }
d62bfeaf 12249 buffer = dwarf2_per_objfile->ranges.buffer + offset;
801e3a5b
JB
12250
12251 for (;;)
12252 {
12253 unsigned int bytes_read;
12254 CORE_ADDR start, end;
12255
12256 start = read_address (obfd, buffer, cu, &bytes_read);
12257 buffer += bytes_read;
12258 end = read_address (obfd, buffer, cu, &bytes_read);
12259 buffer += bytes_read;
12260
12261 /* Did we find the end of the range list? */
12262 if (start == 0 && end == 0)
12263 break;
12264
12265 /* Did we find a base address selection entry? */
12266 else if ((start & base_select_mask) == base_select_mask)
12267 {
12268 base = end;
12269 base_known = 1;
12270 }
12271
12272 /* We found an ordinary address range. */
12273 else
12274 {
12275 if (!base_known)
12276 {
12277 complaint (&symfile_complaints,
3e43a32a
MS
12278 _("Invalid .debug_ranges data "
12279 "(no base address)"));
801e3a5b
JB
12280 return;
12281 }
12282
9277c30c
UW
12283 if (start > end)
12284 {
12285 /* Inverted range entries are invalid. */
12286 complaint (&symfile_complaints,
12287 _("Invalid .debug_ranges data "
12288 "(inverted range)"));
12289 return;
12290 }
12291
12292 /* Empty range entries have no effect. */
12293 if (start == end)
12294 continue;
12295
01093045
DE
12296 start += base + baseaddr;
12297 end += base + baseaddr;
12298
12299 /* A not-uncommon case of bad debug info.
12300 Don't pollute the addrmap with bad data. */
12301 if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
12302 {
12303 complaint (&symfile_complaints,
12304 _(".debug_ranges entry has start address of zero"
4262abfb 12305 " [in module %s]"), objfile_name (objfile));
01093045
DE
12306 continue;
12307 }
12308
3e29f34a
MR
12309 start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
12310 end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
01093045 12311 record_block_range (block, start, end - 1);
801e3a5b
JB
12312 }
12313 }
12314 }
12315}
12316
685b1105
JK
12317/* Check whether the producer field indicates either of GCC < 4.6, or the
12318 Intel C/C++ compiler, and cache the result in CU. */
60d5a603 12319
685b1105
JK
12320static void
12321check_producer (struct dwarf2_cu *cu)
60d5a603
JK
12322{
12323 const char *cs;
38360086 12324 int major, minor;
60d5a603
JK
12325
12326 if (cu->producer == NULL)
12327 {
12328 /* For unknown compilers expect their behavior is DWARF version
12329 compliant.
12330
12331 GCC started to support .debug_types sections by -gdwarf-4 since
12332 gcc-4.5.x. As the .debug_types sections are missing DW_AT_producer
12333 for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
12334 combination. gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
12335 interpreted incorrectly by GDB now - GCC PR debug/48229. */
60d5a603 12336 }
b1ffba5a 12337 else if (producer_is_gcc (cu->producer, &major, &minor))
60d5a603 12338 {
38360086
MW
12339 cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
12340 cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
685b1105 12341 }
61012eef 12342 else if (startswith (cu->producer, "Intel(R) C"))
685b1105
JK
12343 cu->producer_is_icc = 1;
12344 else
12345 {
12346 /* For other non-GCC compilers, expect their behavior is DWARF version
12347 compliant. */
60d5a603
JK
12348 }
12349
ba919b58 12350 cu->checked_producer = 1;
685b1105 12351}
ba919b58 12352
685b1105
JK
12353/* Check for GCC PR debug/45124 fix which is not present in any G++ version up
12354 to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
12355 during 4.6.0 experimental. */
12356
12357static int
12358producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
12359{
12360 if (!cu->checked_producer)
12361 check_producer (cu);
12362
12363 return cu->producer_is_gxx_lt_4_6;
60d5a603
JK
12364}
12365
12366/* Return the default accessibility type if it is not overriden by
12367 DW_AT_accessibility. */
12368
12369static enum dwarf_access_attribute
12370dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
12371{
12372 if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
12373 {
12374 /* The default DWARF 2 accessibility for members is public, the default
12375 accessibility for inheritance is private. */
12376
12377 if (die->tag != DW_TAG_inheritance)
12378 return DW_ACCESS_public;
12379 else
12380 return DW_ACCESS_private;
12381 }
12382 else
12383 {
12384 /* DWARF 3+ defines the default accessibility a different way. The same
12385 rules apply now for DW_TAG_inheritance as for the members and it only
12386 depends on the container kind. */
12387
12388 if (die->parent->tag == DW_TAG_class_type)
12389 return DW_ACCESS_private;
12390 else
12391 return DW_ACCESS_public;
12392 }
12393}
12394
74ac6d43
TT
12395/* Look for DW_AT_data_member_location. Set *OFFSET to the byte
12396 offset. If the attribute was not found return 0, otherwise return
12397 1. If it was found but could not properly be handled, set *OFFSET
12398 to 0. */
12399
12400static int
12401handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
12402 LONGEST *offset)
12403{
12404 struct attribute *attr;
12405
12406 attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
12407 if (attr != NULL)
12408 {
12409 *offset = 0;
12410
12411 /* Note that we do not check for a section offset first here.
12412 This is because DW_AT_data_member_location is new in DWARF 4,
12413 so if we see it, we can assume that a constant form is really
12414 a constant and not a section offset. */
12415 if (attr_form_is_constant (attr))
12416 *offset = dwarf2_get_attr_constant_value (attr, 0);
12417 else if (attr_form_is_section_offset (attr))
12418 dwarf2_complex_location_expr_complaint ();
12419 else if (attr_form_is_block (attr))
12420 *offset = decode_locdesc (DW_BLOCK (attr), cu);
12421 else
12422 dwarf2_complex_location_expr_complaint ();
12423
12424 return 1;
12425 }
12426
12427 return 0;
12428}
12429
c906108c
SS
12430/* Add an aggregate field to the field list. */
12431
12432static void
107d2387 12433dwarf2_add_field (struct field_info *fip, struct die_info *die,
e7c27a73 12434 struct dwarf2_cu *cu)
6e70227d 12435{
e7c27a73 12436 struct objfile *objfile = cu->objfile;
5e2b427d 12437 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
12438 struct nextfield *new_field;
12439 struct attribute *attr;
12440 struct field *fp;
15d034d0 12441 const char *fieldname = "";
c906108c
SS
12442
12443 /* Allocate a new field list entry and link it in. */
12444 new_field = (struct nextfield *) xmalloc (sizeof (struct nextfield));
b8c9b27d 12445 make_cleanup (xfree, new_field);
c906108c 12446 memset (new_field, 0, sizeof (struct nextfield));
7d0ccb61
DJ
12447
12448 if (die->tag == DW_TAG_inheritance)
12449 {
12450 new_field->next = fip->baseclasses;
12451 fip->baseclasses = new_field;
12452 }
12453 else
12454 {
12455 new_field->next = fip->fields;
12456 fip->fields = new_field;
12457 }
c906108c
SS
12458 fip->nfields++;
12459
e142c38c 12460 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c
SS
12461 if (attr)
12462 new_field->accessibility = DW_UNSND (attr);
60d5a603
JK
12463 else
12464 new_field->accessibility = dwarf2_default_access_attribute (die, cu);
c906108c
SS
12465 if (new_field->accessibility != DW_ACCESS_public)
12466 fip->non_public_fields = 1;
60d5a603 12467
e142c38c 12468 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
c906108c
SS
12469 if (attr)
12470 new_field->virtuality = DW_UNSND (attr);
60d5a603
JK
12471 else
12472 new_field->virtuality = DW_VIRTUALITY_none;
c906108c
SS
12473
12474 fp = &new_field->field;
a9a9bd0f 12475
e142c38c 12476 if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
c906108c 12477 {
74ac6d43
TT
12478 LONGEST offset;
12479
a9a9bd0f 12480 /* Data member other than a C++ static data member. */
6e70227d 12481
c906108c 12482 /* Get type of field. */
e7c27a73 12483 fp->type = die_type (die, cu);
c906108c 12484
d6a843b5 12485 SET_FIELD_BITPOS (*fp, 0);
01ad7f36 12486
c906108c 12487 /* Get bit size of field (zero if none). */
e142c38c 12488 attr = dwarf2_attr (die, DW_AT_bit_size, cu);
c906108c
SS
12489 if (attr)
12490 {
12491 FIELD_BITSIZE (*fp) = DW_UNSND (attr);
12492 }
12493 else
12494 {
12495 FIELD_BITSIZE (*fp) = 0;
12496 }
12497
12498 /* Get bit offset of field. */
74ac6d43
TT
12499 if (handle_data_member_location (die, cu, &offset))
12500 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
e142c38c 12501 attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
c906108c
SS
12502 if (attr)
12503 {
5e2b427d 12504 if (gdbarch_bits_big_endian (gdbarch))
c906108c
SS
12505 {
12506 /* For big endian bits, the DW_AT_bit_offset gives the
c5aa993b
JM
12507 additional bit offset from the MSB of the containing
12508 anonymous object to the MSB of the field. We don't
12509 have to do anything special since we don't need to
12510 know the size of the anonymous object. */
f41f5e61 12511 SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
c906108c
SS
12512 }
12513 else
12514 {
12515 /* For little endian bits, compute the bit offset to the
c5aa993b
JM
12516 MSB of the anonymous object, subtract off the number of
12517 bits from the MSB of the field to the MSB of the
12518 object, and then subtract off the number of bits of
12519 the field itself. The result is the bit offset of
12520 the LSB of the field. */
c906108c
SS
12521 int anonymous_size;
12522 int bit_offset = DW_UNSND (attr);
12523
e142c38c 12524 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
12525 if (attr)
12526 {
12527 /* The size of the anonymous object containing
12528 the bit field is explicit, so use the
12529 indicated size (in bytes). */
12530 anonymous_size = DW_UNSND (attr);
12531 }
12532 else
12533 {
12534 /* The size of the anonymous object containing
12535 the bit field must be inferred from the type
12536 attribute of the data member containing the
12537 bit field. */
12538 anonymous_size = TYPE_LENGTH (fp->type);
12539 }
f41f5e61
PA
12540 SET_FIELD_BITPOS (*fp,
12541 (FIELD_BITPOS (*fp)
12542 + anonymous_size * bits_per_byte
12543 - bit_offset - FIELD_BITSIZE (*fp)));
c906108c
SS
12544 }
12545 }
12546
12547 /* Get name of field. */
39cbfefa
DJ
12548 fieldname = dwarf2_name (die, cu);
12549 if (fieldname == NULL)
12550 fieldname = "";
d8151005
DJ
12551
12552 /* The name is already allocated along with this objfile, so we don't
12553 need to duplicate it for the type. */
12554 fp->name = fieldname;
c906108c
SS
12555
12556 /* Change accessibility for artificial fields (e.g. virtual table
c5aa993b 12557 pointer or virtual base class pointer) to private. */
e142c38c 12558 if (dwarf2_attr (die, DW_AT_artificial, cu))
c906108c 12559 {
d48cc9dd 12560 FIELD_ARTIFICIAL (*fp) = 1;
c906108c
SS
12561 new_field->accessibility = DW_ACCESS_private;
12562 fip->non_public_fields = 1;
12563 }
12564 }
a9a9bd0f 12565 else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
c906108c 12566 {
a9a9bd0f
DC
12567 /* C++ static member. */
12568
12569 /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
12570 is a declaration, but all versions of G++ as of this writing
12571 (so through at least 3.2.1) incorrectly generate
12572 DW_TAG_variable tags. */
6e70227d 12573
ff355380 12574 const char *physname;
c906108c 12575
a9a9bd0f 12576 /* Get name of field. */
39cbfefa
DJ
12577 fieldname = dwarf2_name (die, cu);
12578 if (fieldname == NULL)
c906108c
SS
12579 return;
12580
254e6b9e 12581 attr = dwarf2_attr (die, DW_AT_const_value, cu);
3863f96c
DE
12582 if (attr
12583 /* Only create a symbol if this is an external value.
12584 new_symbol checks this and puts the value in the global symbol
12585 table, which we want. If it is not external, new_symbol
12586 will try to put the value in cu->list_in_scope which is wrong. */
12587 && dwarf2_flag_true_p (die, DW_AT_external, cu))
254e6b9e
DE
12588 {
12589 /* A static const member, not much different than an enum as far as
12590 we're concerned, except that we can support more types. */
12591 new_symbol (die, NULL, cu);
12592 }
12593
2df3850c 12594 /* Get physical name. */
ff355380 12595 physname = dwarf2_physname (fieldname, die, cu);
c906108c 12596
d8151005
DJ
12597 /* The name is already allocated along with this objfile, so we don't
12598 need to duplicate it for the type. */
12599 SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
e7c27a73 12600 FIELD_TYPE (*fp) = die_type (die, cu);
d8151005 12601 FIELD_NAME (*fp) = fieldname;
c906108c
SS
12602 }
12603 else if (die->tag == DW_TAG_inheritance)
12604 {
74ac6d43 12605 LONGEST offset;
d4b96c9a 12606
74ac6d43
TT
12607 /* C++ base class field. */
12608 if (handle_data_member_location (die, cu, &offset))
12609 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
c906108c 12610 FIELD_BITSIZE (*fp) = 0;
e7c27a73 12611 FIELD_TYPE (*fp) = die_type (die, cu);
c906108c
SS
12612 FIELD_NAME (*fp) = type_name_no_tag (fp->type);
12613 fip->nbaseclasses++;
12614 }
12615}
12616
98751a41
JK
12617/* Add a typedef defined in the scope of the FIP's class. */
12618
12619static void
12620dwarf2_add_typedef (struct field_info *fip, struct die_info *die,
12621 struct dwarf2_cu *cu)
6e70227d 12622{
98751a41 12623 struct objfile *objfile = cu->objfile;
98751a41
JK
12624 struct typedef_field_list *new_field;
12625 struct attribute *attr;
12626 struct typedef_field *fp;
12627 char *fieldname = "";
12628
12629 /* Allocate a new field list entry and link it in. */
12630 new_field = xzalloc (sizeof (*new_field));
12631 make_cleanup (xfree, new_field);
12632
12633 gdb_assert (die->tag == DW_TAG_typedef);
12634
12635 fp = &new_field->field;
12636
12637 /* Get name of field. */
12638 fp->name = dwarf2_name (die, cu);
12639 if (fp->name == NULL)
12640 return;
12641
12642 fp->type = read_type_die (die, cu);
12643
12644 new_field->next = fip->typedef_field_list;
12645 fip->typedef_field_list = new_field;
12646 fip->typedef_field_list_count++;
12647}
12648
c906108c
SS
12649/* Create the vector of fields, and attach it to the type. */
12650
12651static void
fba45db2 12652dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 12653 struct dwarf2_cu *cu)
c906108c
SS
12654{
12655 int nfields = fip->nfields;
12656
12657 /* Record the field count, allocate space for the array of fields,
12658 and create blank accessibility bitfields if necessary. */
12659 TYPE_NFIELDS (type) = nfields;
12660 TYPE_FIELDS (type) = (struct field *)
12661 TYPE_ALLOC (type, sizeof (struct field) * nfields);
12662 memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
12663
b4ba55a1 12664 if (fip->non_public_fields && cu->language != language_ada)
c906108c
SS
12665 {
12666 ALLOCATE_CPLUS_STRUCT_TYPE (type);
12667
12668 TYPE_FIELD_PRIVATE_BITS (type) =
12669 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12670 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
12671
12672 TYPE_FIELD_PROTECTED_BITS (type) =
12673 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12674 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
12675
774b6a14
TT
12676 TYPE_FIELD_IGNORE_BITS (type) =
12677 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12678 B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
c906108c
SS
12679 }
12680
12681 /* If the type has baseclasses, allocate and clear a bit vector for
12682 TYPE_FIELD_VIRTUAL_BITS. */
b4ba55a1 12683 if (fip->nbaseclasses && cu->language != language_ada)
c906108c
SS
12684 {
12685 int num_bytes = B_BYTES (fip->nbaseclasses);
fe1b8b76 12686 unsigned char *pointer;
c906108c
SS
12687
12688 ALLOCATE_CPLUS_STRUCT_TYPE (type);
fe1b8b76
JB
12689 pointer = TYPE_ALLOC (type, num_bytes);
12690 TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
c906108c
SS
12691 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
12692 TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
12693 }
12694
3e43a32a
MS
12695 /* Copy the saved-up fields into the field vector. Start from the head of
12696 the list, adding to the tail of the field array, so that they end up in
12697 the same order in the array in which they were added to the list. */
c906108c
SS
12698 while (nfields-- > 0)
12699 {
7d0ccb61
DJ
12700 struct nextfield *fieldp;
12701
12702 if (fip->fields)
12703 {
12704 fieldp = fip->fields;
12705 fip->fields = fieldp->next;
12706 }
12707 else
12708 {
12709 fieldp = fip->baseclasses;
12710 fip->baseclasses = fieldp->next;
12711 }
12712
12713 TYPE_FIELD (type, nfields) = fieldp->field;
12714 switch (fieldp->accessibility)
c906108c 12715 {
c5aa993b 12716 case DW_ACCESS_private:
b4ba55a1
JB
12717 if (cu->language != language_ada)
12718 SET_TYPE_FIELD_PRIVATE (type, nfields);
c5aa993b 12719 break;
c906108c 12720
c5aa993b 12721 case DW_ACCESS_protected:
b4ba55a1
JB
12722 if (cu->language != language_ada)
12723 SET_TYPE_FIELD_PROTECTED (type, nfields);
c5aa993b 12724 break;
c906108c 12725
c5aa993b
JM
12726 case DW_ACCESS_public:
12727 break;
c906108c 12728
c5aa993b
JM
12729 default:
12730 /* Unknown accessibility. Complain and treat it as public. */
12731 {
e2e0b3e5 12732 complaint (&symfile_complaints, _("unsupported accessibility %d"),
7d0ccb61 12733 fieldp->accessibility);
c5aa993b
JM
12734 }
12735 break;
c906108c
SS
12736 }
12737 if (nfields < fip->nbaseclasses)
12738 {
7d0ccb61 12739 switch (fieldp->virtuality)
c906108c 12740 {
c5aa993b
JM
12741 case DW_VIRTUALITY_virtual:
12742 case DW_VIRTUALITY_pure_virtual:
b4ba55a1 12743 if (cu->language == language_ada)
a73c6dcd 12744 error (_("unexpected virtuality in component of Ada type"));
c5aa993b
JM
12745 SET_TYPE_FIELD_VIRTUAL (type, nfields);
12746 break;
c906108c
SS
12747 }
12748 }
c906108c
SS
12749 }
12750}
12751
7d27a96d
TT
12752/* Return true if this member function is a constructor, false
12753 otherwise. */
12754
12755static int
12756dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
12757{
12758 const char *fieldname;
fe978cb0 12759 const char *type_name;
7d27a96d
TT
12760 int len;
12761
12762 if (die->parent == NULL)
12763 return 0;
12764
12765 if (die->parent->tag != DW_TAG_structure_type
12766 && die->parent->tag != DW_TAG_union_type
12767 && die->parent->tag != DW_TAG_class_type)
12768 return 0;
12769
12770 fieldname = dwarf2_name (die, cu);
fe978cb0
PA
12771 type_name = dwarf2_name (die->parent, cu);
12772 if (fieldname == NULL || type_name == NULL)
7d27a96d
TT
12773 return 0;
12774
12775 len = strlen (fieldname);
fe978cb0
PA
12776 return (strncmp (fieldname, type_name, len) == 0
12777 && (type_name[len] == '\0' || type_name[len] == '<'));
7d27a96d
TT
12778}
12779
c906108c
SS
12780/* Add a member function to the proper fieldlist. */
12781
12782static void
107d2387 12783dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
e7c27a73 12784 struct type *type, struct dwarf2_cu *cu)
c906108c 12785{
e7c27a73 12786 struct objfile *objfile = cu->objfile;
c906108c
SS
12787 struct attribute *attr;
12788 struct fnfieldlist *flp;
12789 int i;
12790 struct fn_field *fnp;
15d034d0 12791 const char *fieldname;
c906108c 12792 struct nextfnfield *new_fnfield;
f792889a 12793 struct type *this_type;
60d5a603 12794 enum dwarf_access_attribute accessibility;
c906108c 12795
b4ba55a1 12796 if (cu->language == language_ada)
a73c6dcd 12797 error (_("unexpected member function in Ada type"));
b4ba55a1 12798
2df3850c 12799 /* Get name of member function. */
39cbfefa
DJ
12800 fieldname = dwarf2_name (die, cu);
12801 if (fieldname == NULL)
2df3850c 12802 return;
c906108c 12803
c906108c
SS
12804 /* Look up member function name in fieldlist. */
12805 for (i = 0; i < fip->nfnfields; i++)
12806 {
27bfe10e 12807 if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
c906108c
SS
12808 break;
12809 }
12810
12811 /* Create new list element if necessary. */
12812 if (i < fip->nfnfields)
12813 flp = &fip->fnfieldlists[i];
12814 else
12815 {
12816 if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
12817 {
12818 fip->fnfieldlists = (struct fnfieldlist *)
12819 xrealloc (fip->fnfieldlists,
12820 (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
c5aa993b 12821 * sizeof (struct fnfieldlist));
c906108c 12822 if (fip->nfnfields == 0)
c13c43fd 12823 make_cleanup (free_current_contents, &fip->fnfieldlists);
c906108c
SS
12824 }
12825 flp = &fip->fnfieldlists[fip->nfnfields];
12826 flp->name = fieldname;
12827 flp->length = 0;
12828 flp->head = NULL;
3da10d80 12829 i = fip->nfnfields++;
c906108c
SS
12830 }
12831
12832 /* Create a new member function field and chain it to the field list
0963b4bd 12833 entry. */
c906108c 12834 new_fnfield = (struct nextfnfield *) xmalloc (sizeof (struct nextfnfield));
b8c9b27d 12835 make_cleanup (xfree, new_fnfield);
c906108c
SS
12836 memset (new_fnfield, 0, sizeof (struct nextfnfield));
12837 new_fnfield->next = flp->head;
12838 flp->head = new_fnfield;
12839 flp->length++;
12840
12841 /* Fill in the member function field info. */
12842 fnp = &new_fnfield->fnfield;
3da10d80
KS
12843
12844 /* Delay processing of the physname until later. */
12845 if (cu->language == language_cplus || cu->language == language_java)
12846 {
12847 add_to_method_list (type, i, flp->length - 1, fieldname,
12848 die, cu);
12849 }
12850 else
12851 {
1d06ead6 12852 const char *physname = dwarf2_physname (fieldname, die, cu);
3da10d80
KS
12853 fnp->physname = physname ? physname : "";
12854 }
12855
c906108c 12856 fnp->type = alloc_type (objfile);
f792889a
DJ
12857 this_type = read_type_die (die, cu);
12858 if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
c906108c 12859 {
f792889a 12860 int nparams = TYPE_NFIELDS (this_type);
c906108c 12861
f792889a 12862 /* TYPE is the domain of this method, and THIS_TYPE is the type
e26fb1d7
DC
12863 of the method itself (TYPE_CODE_METHOD). */
12864 smash_to_method_type (fnp->type, type,
f792889a
DJ
12865 TYPE_TARGET_TYPE (this_type),
12866 TYPE_FIELDS (this_type),
12867 TYPE_NFIELDS (this_type),
12868 TYPE_VARARGS (this_type));
c906108c
SS
12869
12870 /* Handle static member functions.
c5aa993b 12871 Dwarf2 has no clean way to discern C++ static and non-static
0963b4bd
MS
12872 member functions. G++ helps GDB by marking the first
12873 parameter for non-static member functions (which is the this
12874 pointer) as artificial. We obtain this information from
12875 read_subroutine_type via TYPE_FIELD_ARTIFICIAL. */
f792889a 12876 if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
c906108c
SS
12877 fnp->voffset = VOFFSET_STATIC;
12878 }
12879 else
e2e0b3e5 12880 complaint (&symfile_complaints, _("member function type missing for '%s'"),
3da10d80 12881 dwarf2_full_name (fieldname, die, cu));
c906108c
SS
12882
12883 /* Get fcontext from DW_AT_containing_type if present. */
e142c38c 12884 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
e7c27a73 12885 fnp->fcontext = die_containing_type (die, cu);
c906108c 12886
3e43a32a
MS
12887 /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
12888 is_volatile is irrelevant, as it is needed by gdb_mangle_name only. */
c906108c
SS
12889
12890 /* Get accessibility. */
e142c38c 12891 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c 12892 if (attr)
60d5a603
JK
12893 accessibility = DW_UNSND (attr);
12894 else
12895 accessibility = dwarf2_default_access_attribute (die, cu);
12896 switch (accessibility)
c906108c 12897 {
60d5a603
JK
12898 case DW_ACCESS_private:
12899 fnp->is_private = 1;
12900 break;
12901 case DW_ACCESS_protected:
12902 fnp->is_protected = 1;
12903 break;
c906108c
SS
12904 }
12905
b02dede2 12906 /* Check for artificial methods. */
e142c38c 12907 attr = dwarf2_attr (die, DW_AT_artificial, cu);
b02dede2
DJ
12908 if (attr && DW_UNSND (attr) != 0)
12909 fnp->is_artificial = 1;
12910
7d27a96d
TT
12911 fnp->is_constructor = dwarf2_is_constructor (die, cu);
12912
0d564a31 12913 /* Get index in virtual function table if it is a virtual member
aec5aa8b
TT
12914 function. For older versions of GCC, this is an offset in the
12915 appropriate virtual table, as specified by DW_AT_containing_type.
12916 For everyone else, it is an expression to be evaluated relative
0d564a31
DJ
12917 to the object address. */
12918
e142c38c 12919 attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
aec5aa8b 12920 if (attr)
8e19ed76 12921 {
aec5aa8b 12922 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
8e19ed76 12923 {
aec5aa8b
TT
12924 if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
12925 {
12926 /* Old-style GCC. */
12927 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
12928 }
12929 else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
12930 || (DW_BLOCK (attr)->size > 1
12931 && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
12932 && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
12933 {
12934 struct dwarf_block blk;
12935 int offset;
12936
12937 offset = (DW_BLOCK (attr)->data[0] == DW_OP_deref
12938 ? 1 : 2);
12939 blk.size = DW_BLOCK (attr)->size - offset;
12940 blk.data = DW_BLOCK (attr)->data + offset;
12941 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
12942 if ((fnp->voffset % cu->header.addr_size) != 0)
12943 dwarf2_complex_location_expr_complaint ();
12944 else
12945 fnp->voffset /= cu->header.addr_size;
12946 fnp->voffset += 2;
12947 }
12948 else
12949 dwarf2_complex_location_expr_complaint ();
12950
12951 if (!fnp->fcontext)
7e993ebf
KS
12952 {
12953 /* If there is no `this' field and no DW_AT_containing_type,
12954 we cannot actually find a base class context for the
12955 vtable! */
12956 if (TYPE_NFIELDS (this_type) == 0
12957 || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
12958 {
12959 complaint (&symfile_complaints,
12960 _("cannot determine context for virtual member "
12961 "function \"%s\" (offset %d)"),
12962 fieldname, die->offset.sect_off);
12963 }
12964 else
12965 {
12966 fnp->fcontext
12967 = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
12968 }
12969 }
aec5aa8b 12970 }
3690dd37 12971 else if (attr_form_is_section_offset (attr))
8e19ed76 12972 {
4d3c2250 12973 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
12974 }
12975 else
12976 {
4d3c2250
KB
12977 dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
12978 fieldname);
8e19ed76 12979 }
0d564a31 12980 }
d48cc9dd
DJ
12981 else
12982 {
12983 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
12984 if (attr && DW_UNSND (attr))
12985 {
12986 /* GCC does this, as of 2008-08-25; PR debug/37237. */
12987 complaint (&symfile_complaints,
3e43a32a
MS
12988 _("Member function \"%s\" (offset %d) is virtual "
12989 "but the vtable offset is not specified"),
b64f50a1 12990 fieldname, die->offset.sect_off);
9655fd1a 12991 ALLOCATE_CPLUS_STRUCT_TYPE (type);
d48cc9dd
DJ
12992 TYPE_CPLUS_DYNAMIC (type) = 1;
12993 }
12994 }
c906108c
SS
12995}
12996
12997/* Create the vector of member function fields, and attach it to the type. */
12998
12999static void
fba45db2 13000dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 13001 struct dwarf2_cu *cu)
c906108c
SS
13002{
13003 struct fnfieldlist *flp;
c906108c
SS
13004 int i;
13005
b4ba55a1 13006 if (cu->language == language_ada)
a73c6dcd 13007 error (_("unexpected member functions in Ada type"));
b4ba55a1 13008
c906108c
SS
13009 ALLOCATE_CPLUS_STRUCT_TYPE (type);
13010 TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
13011 TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
13012
13013 for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
13014 {
13015 struct nextfnfield *nfp = flp->head;
13016 struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
13017 int k;
13018
13019 TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
13020 TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
13021 fn_flp->fn_fields = (struct fn_field *)
13022 TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
13023 for (k = flp->length; (k--, nfp); nfp = nfp->next)
c5aa993b 13024 fn_flp->fn_fields[k] = nfp->fnfield;
c906108c
SS
13025 }
13026
13027 TYPE_NFN_FIELDS (type) = fip->nfnfields;
c906108c
SS
13028}
13029
1168df01
JB
13030/* Returns non-zero if NAME is the name of a vtable member in CU's
13031 language, zero otherwise. */
13032static int
13033is_vtable_name (const char *name, struct dwarf2_cu *cu)
13034{
13035 static const char vptr[] = "_vptr";
987504bb 13036 static const char vtable[] = "vtable";
1168df01 13037
987504bb
JJ
13038 /* Look for the C++ and Java forms of the vtable. */
13039 if ((cu->language == language_java
61012eef
GB
13040 && startswith (name, vtable))
13041 || (startswith (name, vptr)
987504bb 13042 && is_cplus_marker (name[sizeof (vptr) - 1])))
1168df01
JB
13043 return 1;
13044
13045 return 0;
13046}
13047
c0dd20ea 13048/* GCC outputs unnamed structures that are really pointers to member
0b92b5bb
TT
13049 functions, with the ABI-specified layout. If TYPE describes
13050 such a structure, smash it into a member function type.
61049d3b
DJ
13051
13052 GCC shouldn't do this; it should just output pointer to member DIEs.
13053 This is GCC PR debug/28767. */
c0dd20ea 13054
0b92b5bb
TT
13055static void
13056quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
c0dd20ea 13057{
09e2d7c7 13058 struct type *pfn_type, *self_type, *new_type;
c0dd20ea
DJ
13059
13060 /* Check for a structure with no name and two children. */
0b92b5bb
TT
13061 if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
13062 return;
c0dd20ea
DJ
13063
13064 /* Check for __pfn and __delta members. */
0b92b5bb
TT
13065 if (TYPE_FIELD_NAME (type, 0) == NULL
13066 || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
13067 || TYPE_FIELD_NAME (type, 1) == NULL
13068 || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
13069 return;
c0dd20ea
DJ
13070
13071 /* Find the type of the method. */
0b92b5bb 13072 pfn_type = TYPE_FIELD_TYPE (type, 0);
c0dd20ea
DJ
13073 if (pfn_type == NULL
13074 || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
13075 || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
0b92b5bb 13076 return;
c0dd20ea
DJ
13077
13078 /* Look for the "this" argument. */
13079 pfn_type = TYPE_TARGET_TYPE (pfn_type);
13080 if (TYPE_NFIELDS (pfn_type) == 0
0b92b5bb 13081 /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
c0dd20ea 13082 || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
0b92b5bb 13083 return;
c0dd20ea 13084
09e2d7c7 13085 self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
0b92b5bb 13086 new_type = alloc_type (objfile);
09e2d7c7 13087 smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
c0dd20ea
DJ
13088 TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
13089 TYPE_VARARGS (pfn_type));
0b92b5bb 13090 smash_to_methodptr_type (type, new_type);
c0dd20ea 13091}
1168df01 13092
685b1105
JK
13093/* Return non-zero if the CU's PRODUCER string matches the Intel C/C++ compiler
13094 (icc). */
13095
13096static int
13097producer_is_icc (struct dwarf2_cu *cu)
13098{
13099 if (!cu->checked_producer)
13100 check_producer (cu);
13101
13102 return cu->producer_is_icc;
13103}
13104
c906108c 13105/* Called when we find the DIE that starts a structure or union scope
c767944b
DJ
13106 (definition) to create a type for the structure or union. Fill in
13107 the type's name and general properties; the members will not be
83655187
DE
13108 processed until process_structure_scope. A symbol table entry for
13109 the type will also not be done until process_structure_scope (assuming
13110 the type has a name).
c906108c 13111
c767944b
DJ
13112 NOTE: we need to call these functions regardless of whether or not the
13113 DIE has a DW_AT_name attribute, since it might be an anonymous
c906108c 13114 structure or union. This gets the type entered into our set of
83655187 13115 user defined types. */
c906108c 13116
f792889a 13117static struct type *
134d01f1 13118read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13119{
e7c27a73 13120 struct objfile *objfile = cu->objfile;
c906108c
SS
13121 struct type *type;
13122 struct attribute *attr;
15d034d0 13123 const char *name;
c906108c 13124
348e048f
DE
13125 /* If the definition of this type lives in .debug_types, read that type.
13126 Don't follow DW_AT_specification though, that will take us back up
13127 the chain and we want to go down. */
45e58e77 13128 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
348e048f
DE
13129 if (attr)
13130 {
ac9ec31b 13131 type = get_DW_AT_signature_type (die, attr, cu);
9dc481d3 13132
ac9ec31b 13133 /* The type's CU may not be the same as CU.
02142a6c 13134 Ensure TYPE is recorded with CU in die_type_hash. */
348e048f
DE
13135 return set_die_type (die, type, cu);
13136 }
13137
c0dd20ea 13138 type = alloc_type (objfile);
c906108c 13139 INIT_CPLUS_SPECIFIC (type);
93311388 13140
39cbfefa
DJ
13141 name = dwarf2_name (die, cu);
13142 if (name != NULL)
c906108c 13143 {
987504bb
JJ
13144 if (cu->language == language_cplus
13145 || cu->language == language_java)
63d06c5c 13146 {
15d034d0 13147 const char *full_name = dwarf2_full_name (name, die, cu);
3da10d80
KS
13148
13149 /* dwarf2_full_name might have already finished building the DIE's
13150 type. If so, there is no need to continue. */
13151 if (get_die_type (die, cu) != NULL)
13152 return get_die_type (die, cu);
13153
13154 TYPE_TAG_NAME (type) = full_name;
94af9270
KS
13155 if (die->tag == DW_TAG_structure_type
13156 || die->tag == DW_TAG_class_type)
13157 TYPE_NAME (type) = TYPE_TAG_NAME (type);
63d06c5c
DC
13158 }
13159 else
13160 {
d8151005
DJ
13161 /* The name is already allocated along with this objfile, so
13162 we don't need to duplicate it for the type. */
7d455152 13163 TYPE_TAG_NAME (type) = name;
94af9270
KS
13164 if (die->tag == DW_TAG_class_type)
13165 TYPE_NAME (type) = TYPE_TAG_NAME (type);
63d06c5c 13166 }
c906108c
SS
13167 }
13168
13169 if (die->tag == DW_TAG_structure_type)
13170 {
13171 TYPE_CODE (type) = TYPE_CODE_STRUCT;
13172 }
13173 else if (die->tag == DW_TAG_union_type)
13174 {
13175 TYPE_CODE (type) = TYPE_CODE_UNION;
13176 }
13177 else
13178 {
4753d33b 13179 TYPE_CODE (type) = TYPE_CODE_STRUCT;
c906108c
SS
13180 }
13181
0cc2414c
TT
13182 if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
13183 TYPE_DECLARED_CLASS (type) = 1;
13184
e142c38c 13185 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
13186 if (attr)
13187 {
13188 TYPE_LENGTH (type) = DW_UNSND (attr);
13189 }
13190 else
13191 {
13192 TYPE_LENGTH (type) = 0;
13193 }
13194
422b1cb0 13195 if (producer_is_icc (cu) && (TYPE_LENGTH (type) == 0))
685b1105
JK
13196 {
13197 /* ICC does not output the required DW_AT_declaration
13198 on incomplete types, but gives them a size of zero. */
422b1cb0 13199 TYPE_STUB (type) = 1;
685b1105
JK
13200 }
13201 else
13202 TYPE_STUB_SUPPORTED (type) = 1;
13203
dc718098 13204 if (die_is_declaration (die, cu))
876cecd0 13205 TYPE_STUB (type) = 1;
a6c727b2
DJ
13206 else if (attr == NULL && die->child == NULL
13207 && producer_is_realview (cu->producer))
13208 /* RealView does not output the required DW_AT_declaration
13209 on incomplete types. */
13210 TYPE_STUB (type) = 1;
dc718098 13211
c906108c
SS
13212 /* We need to add the type field to the die immediately so we don't
13213 infinitely recurse when dealing with pointers to the structure
0963b4bd 13214 type within the structure itself. */
1c379e20 13215 set_die_type (die, type, cu);
c906108c 13216
7e314c57
JK
13217 /* set_die_type should be already done. */
13218 set_descriptive_type (type, die, cu);
13219
c767944b
DJ
13220 return type;
13221}
13222
13223/* Finish creating a structure or union type, including filling in
13224 its members and creating a symbol for it. */
13225
13226static void
13227process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
13228{
13229 struct objfile *objfile = cu->objfile;
ca040673 13230 struct die_info *child_die;
c767944b
DJ
13231 struct type *type;
13232
13233 type = get_die_type (die, cu);
13234 if (type == NULL)
13235 type = read_structure_type (die, cu);
13236
e142c38c 13237 if (die->child != NULL && ! die_is_declaration (die, cu))
c906108c
SS
13238 {
13239 struct field_info fi;
34eaf542 13240 VEC (symbolp) *template_args = NULL;
c767944b 13241 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
c906108c
SS
13242
13243 memset (&fi, 0, sizeof (struct field_info));
13244
639d11d3 13245 child_die = die->child;
c906108c
SS
13246
13247 while (child_die && child_die->tag)
13248 {
a9a9bd0f
DC
13249 if (child_die->tag == DW_TAG_member
13250 || child_die->tag == DW_TAG_variable)
c906108c 13251 {
a9a9bd0f
DC
13252 /* NOTE: carlton/2002-11-05: A C++ static data member
13253 should be a DW_TAG_member that is a declaration, but
13254 all versions of G++ as of this writing (so through at
13255 least 3.2.1) incorrectly generate DW_TAG_variable
13256 tags for them instead. */
e7c27a73 13257 dwarf2_add_field (&fi, child_die, cu);
c906108c 13258 }
8713b1b1 13259 else if (child_die->tag == DW_TAG_subprogram)
c906108c 13260 {
0963b4bd 13261 /* C++ member function. */
e7c27a73 13262 dwarf2_add_member_fn (&fi, child_die, type, cu);
c906108c
SS
13263 }
13264 else if (child_die->tag == DW_TAG_inheritance)
13265 {
13266 /* C++ base class field. */
e7c27a73 13267 dwarf2_add_field (&fi, child_die, cu);
c906108c 13268 }
98751a41
JK
13269 else if (child_die->tag == DW_TAG_typedef)
13270 dwarf2_add_typedef (&fi, child_die, cu);
34eaf542
TT
13271 else if (child_die->tag == DW_TAG_template_type_param
13272 || child_die->tag == DW_TAG_template_value_param)
13273 {
13274 struct symbol *arg = new_symbol (child_die, NULL, cu);
13275
f1078f66
DJ
13276 if (arg != NULL)
13277 VEC_safe_push (symbolp, template_args, arg);
34eaf542
TT
13278 }
13279
c906108c
SS
13280 child_die = sibling_die (child_die);
13281 }
13282
34eaf542
TT
13283 /* Attach template arguments to type. */
13284 if (! VEC_empty (symbolp, template_args))
13285 {
13286 ALLOCATE_CPLUS_STRUCT_TYPE (type);
13287 TYPE_N_TEMPLATE_ARGUMENTS (type)
13288 = VEC_length (symbolp, template_args);
13289 TYPE_TEMPLATE_ARGUMENTS (type)
13290 = obstack_alloc (&objfile->objfile_obstack,
13291 (TYPE_N_TEMPLATE_ARGUMENTS (type)
13292 * sizeof (struct symbol *)));
13293 memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
13294 VEC_address (symbolp, template_args),
13295 (TYPE_N_TEMPLATE_ARGUMENTS (type)
13296 * sizeof (struct symbol *)));
13297 VEC_free (symbolp, template_args);
13298 }
13299
c906108c
SS
13300 /* Attach fields and member functions to the type. */
13301 if (fi.nfields)
e7c27a73 13302 dwarf2_attach_fields_to_type (&fi, type, cu);
c906108c
SS
13303 if (fi.nfnfields)
13304 {
e7c27a73 13305 dwarf2_attach_fn_fields_to_type (&fi, type, cu);
c906108c 13306
c5aa993b 13307 /* Get the type which refers to the base class (possibly this
c906108c 13308 class itself) which contains the vtable pointer for the current
0d564a31
DJ
13309 class from the DW_AT_containing_type attribute. This use of
13310 DW_AT_containing_type is a GNU extension. */
c906108c 13311
e142c38c 13312 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
c906108c 13313 {
e7c27a73 13314 struct type *t = die_containing_type (die, cu);
c906108c 13315
ae6ae975 13316 set_type_vptr_basetype (type, t);
c906108c
SS
13317 if (type == t)
13318 {
c906108c
SS
13319 int i;
13320
13321 /* Our own class provides vtbl ptr. */
13322 for (i = TYPE_NFIELDS (t) - 1;
13323 i >= TYPE_N_BASECLASSES (t);
13324 --i)
13325 {
0d5cff50 13326 const char *fieldname = TYPE_FIELD_NAME (t, i);
c906108c 13327
1168df01 13328 if (is_vtable_name (fieldname, cu))
c906108c 13329 {
ae6ae975 13330 set_type_vptr_fieldno (type, i);
c906108c
SS
13331 break;
13332 }
13333 }
13334
13335 /* Complain if virtual function table field not found. */
13336 if (i < TYPE_N_BASECLASSES (t))
4d3c2250 13337 complaint (&symfile_complaints,
3e43a32a
MS
13338 _("virtual function table pointer "
13339 "not found when defining class '%s'"),
4d3c2250
KB
13340 TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
13341 "");
c906108c
SS
13342 }
13343 else
13344 {
ae6ae975 13345 set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
c906108c
SS
13346 }
13347 }
f6235d4c 13348 else if (cu->producer
61012eef 13349 && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
f6235d4c
EZ
13350 {
13351 /* The IBM XLC compiler does not provide direct indication
13352 of the containing type, but the vtable pointer is
13353 always named __vfp. */
13354
13355 int i;
13356
13357 for (i = TYPE_NFIELDS (type) - 1;
13358 i >= TYPE_N_BASECLASSES (type);
13359 --i)
13360 {
13361 if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
13362 {
ae6ae975
DE
13363 set_type_vptr_fieldno (type, i);
13364 set_type_vptr_basetype (type, type);
f6235d4c
EZ
13365 break;
13366 }
13367 }
13368 }
c906108c 13369 }
98751a41
JK
13370
13371 /* Copy fi.typedef_field_list linked list elements content into the
13372 allocated array TYPE_TYPEDEF_FIELD_ARRAY (type). */
13373 if (fi.typedef_field_list)
13374 {
13375 int i = fi.typedef_field_list_count;
13376
a0d7a4ff 13377 ALLOCATE_CPLUS_STRUCT_TYPE (type);
98751a41
JK
13378 TYPE_TYPEDEF_FIELD_ARRAY (type)
13379 = TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i);
13380 TYPE_TYPEDEF_FIELD_COUNT (type) = i;
13381
13382 /* Reverse the list order to keep the debug info elements order. */
13383 while (--i >= 0)
13384 {
13385 struct typedef_field *dest, *src;
6e70227d 13386
98751a41
JK
13387 dest = &TYPE_TYPEDEF_FIELD (type, i);
13388 src = &fi.typedef_field_list->field;
13389 fi.typedef_field_list = fi.typedef_field_list->next;
13390 *dest = *src;
13391 }
13392 }
c767944b
DJ
13393
13394 do_cleanups (back_to);
eb2a6f42
TT
13395
13396 if (HAVE_CPLUS_STRUCT (type))
13397 TYPE_CPLUS_REALLY_JAVA (type) = cu->language == language_java;
c906108c 13398 }
63d06c5c 13399
bb5ed363 13400 quirk_gcc_member_function_pointer (type, objfile);
0b92b5bb 13401
90aeadfc
DC
13402 /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
13403 snapshots) has been known to create a die giving a declaration
13404 for a class that has, as a child, a die giving a definition for a
13405 nested class. So we have to process our children even if the
13406 current die is a declaration. Normally, of course, a declaration
13407 won't have any children at all. */
134d01f1 13408
ca040673
DE
13409 child_die = die->child;
13410
90aeadfc
DC
13411 while (child_die != NULL && child_die->tag)
13412 {
13413 if (child_die->tag == DW_TAG_member
13414 || child_die->tag == DW_TAG_variable
34eaf542
TT
13415 || child_die->tag == DW_TAG_inheritance
13416 || child_die->tag == DW_TAG_template_value_param
13417 || child_die->tag == DW_TAG_template_type_param)
134d01f1 13418 {
90aeadfc 13419 /* Do nothing. */
134d01f1 13420 }
90aeadfc
DC
13421 else
13422 process_die (child_die, cu);
134d01f1 13423
90aeadfc 13424 child_die = sibling_die (child_die);
134d01f1
DJ
13425 }
13426
fa4028e9
JB
13427 /* Do not consider external references. According to the DWARF standard,
13428 these DIEs are identified by the fact that they have no byte_size
13429 attribute, and a declaration attribute. */
13430 if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
13431 || !die_is_declaration (die, cu))
c767944b 13432 new_symbol (die, type, cu);
134d01f1
DJ
13433}
13434
55426c9d
JB
13435/* Assuming DIE is an enumeration type, and TYPE is its associated type,
13436 update TYPE using some information only available in DIE's children. */
13437
13438static void
13439update_enumeration_type_from_children (struct die_info *die,
13440 struct type *type,
13441 struct dwarf2_cu *cu)
13442{
13443 struct obstack obstack;
60f7655a 13444 struct die_info *child_die;
55426c9d
JB
13445 int unsigned_enum = 1;
13446 int flag_enum = 1;
13447 ULONGEST mask = 0;
13448 struct cleanup *old_chain;
13449
13450 obstack_init (&obstack);
13451 old_chain = make_cleanup_obstack_free (&obstack);
13452
60f7655a
DE
13453 for (child_die = die->child;
13454 child_die != NULL && child_die->tag;
13455 child_die = sibling_die (child_die))
55426c9d
JB
13456 {
13457 struct attribute *attr;
13458 LONGEST value;
13459 const gdb_byte *bytes;
13460 struct dwarf2_locexpr_baton *baton;
13461 const char *name;
60f7655a 13462
55426c9d
JB
13463 if (child_die->tag != DW_TAG_enumerator)
13464 continue;
13465
13466 attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
13467 if (attr == NULL)
13468 continue;
13469
13470 name = dwarf2_name (child_die, cu);
13471 if (name == NULL)
13472 name = "<anonymous enumerator>";
13473
13474 dwarf2_const_value_attr (attr, type, name, &obstack, cu,
13475 &value, &bytes, &baton);
13476 if (value < 0)
13477 {
13478 unsigned_enum = 0;
13479 flag_enum = 0;
13480 }
13481 else if ((mask & value) != 0)
13482 flag_enum = 0;
13483 else
13484 mask |= value;
13485
13486 /* If we already know that the enum type is neither unsigned, nor
13487 a flag type, no need to look at the rest of the enumerates. */
13488 if (!unsigned_enum && !flag_enum)
13489 break;
55426c9d
JB
13490 }
13491
13492 if (unsigned_enum)
13493 TYPE_UNSIGNED (type) = 1;
13494 if (flag_enum)
13495 TYPE_FLAG_ENUM (type) = 1;
13496
13497 do_cleanups (old_chain);
13498}
13499
134d01f1
DJ
13500/* Given a DW_AT_enumeration_type die, set its type. We do not
13501 complete the type's fields yet, or create any symbols. */
c906108c 13502
f792889a 13503static struct type *
134d01f1 13504read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13505{
e7c27a73 13506 struct objfile *objfile = cu->objfile;
c906108c 13507 struct type *type;
c906108c 13508 struct attribute *attr;
0114d602 13509 const char *name;
134d01f1 13510
348e048f
DE
13511 /* If the definition of this type lives in .debug_types, read that type.
13512 Don't follow DW_AT_specification though, that will take us back up
13513 the chain and we want to go down. */
45e58e77 13514 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
348e048f
DE
13515 if (attr)
13516 {
ac9ec31b 13517 type = get_DW_AT_signature_type (die, attr, cu);
9dc481d3 13518
ac9ec31b 13519 /* The type's CU may not be the same as CU.
02142a6c 13520 Ensure TYPE is recorded with CU in die_type_hash. */
348e048f
DE
13521 return set_die_type (die, type, cu);
13522 }
13523
c906108c
SS
13524 type = alloc_type (objfile);
13525
13526 TYPE_CODE (type) = TYPE_CODE_ENUM;
94af9270 13527 name = dwarf2_full_name (NULL, die, cu);
39cbfefa 13528 if (name != NULL)
7d455152 13529 TYPE_TAG_NAME (type) = name;
c906108c 13530
0626fc76
TT
13531 attr = dwarf2_attr (die, DW_AT_type, cu);
13532 if (attr != NULL)
13533 {
13534 struct type *underlying_type = die_type (die, cu);
13535
13536 TYPE_TARGET_TYPE (type) = underlying_type;
13537 }
13538
e142c38c 13539 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
13540 if (attr)
13541 {
13542 TYPE_LENGTH (type) = DW_UNSND (attr);
13543 }
13544 else
13545 {
13546 TYPE_LENGTH (type) = 0;
13547 }
13548
137033e9
JB
13549 /* The enumeration DIE can be incomplete. In Ada, any type can be
13550 declared as private in the package spec, and then defined only
13551 inside the package body. Such types are known as Taft Amendment
13552 Types. When another package uses such a type, an incomplete DIE
13553 may be generated by the compiler. */
02eb380e 13554 if (die_is_declaration (die, cu))
876cecd0 13555 TYPE_STUB (type) = 1;
02eb380e 13556
0626fc76
TT
13557 /* Finish the creation of this type by using the enum's children.
13558 We must call this even when the underlying type has been provided
13559 so that we can determine if we're looking at a "flag" enum. */
55426c9d
JB
13560 update_enumeration_type_from_children (die, type, cu);
13561
0626fc76
TT
13562 /* If this type has an underlying type that is not a stub, then we
13563 may use its attributes. We always use the "unsigned" attribute
13564 in this situation, because ordinarily we guess whether the type
13565 is unsigned -- but the guess can be wrong and the underlying type
13566 can tell us the reality. However, we defer to a local size
13567 attribute if one exists, because this lets the compiler override
13568 the underlying type if needed. */
13569 if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
13570 {
13571 TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
13572 if (TYPE_LENGTH (type) == 0)
13573 TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
13574 }
13575
3d567982
TT
13576 TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
13577
f792889a 13578 return set_die_type (die, type, cu);
134d01f1
DJ
13579}
13580
13581/* Given a pointer to a die which begins an enumeration, process all
13582 the dies that define the members of the enumeration, and create the
13583 symbol for the enumeration type.
13584
13585 NOTE: We reverse the order of the element list. */
13586
13587static void
13588process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
13589{
f792889a 13590 struct type *this_type;
134d01f1 13591
f792889a
DJ
13592 this_type = get_die_type (die, cu);
13593 if (this_type == NULL)
13594 this_type = read_enumeration_type (die, cu);
9dc481d3 13595
639d11d3 13596 if (die->child != NULL)
c906108c 13597 {
9dc481d3
DE
13598 struct die_info *child_die;
13599 struct symbol *sym;
13600 struct field *fields = NULL;
13601 int num_fields = 0;
15d034d0 13602 const char *name;
9dc481d3 13603
639d11d3 13604 child_die = die->child;
c906108c
SS
13605 while (child_die && child_die->tag)
13606 {
13607 if (child_die->tag != DW_TAG_enumerator)
13608 {
e7c27a73 13609 process_die (child_die, cu);
c906108c
SS
13610 }
13611 else
13612 {
39cbfefa
DJ
13613 name = dwarf2_name (child_die, cu);
13614 if (name)
c906108c 13615 {
f792889a 13616 sym = new_symbol (child_die, this_type, cu);
c906108c
SS
13617
13618 if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
13619 {
13620 fields = (struct field *)
13621 xrealloc (fields,
13622 (num_fields + DW_FIELD_ALLOC_CHUNK)
c5aa993b 13623 * sizeof (struct field));
c906108c
SS
13624 }
13625
3567439c 13626 FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
c906108c 13627 FIELD_TYPE (fields[num_fields]) = NULL;
14e75d8e 13628 SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
c906108c
SS
13629 FIELD_BITSIZE (fields[num_fields]) = 0;
13630
13631 num_fields++;
13632 }
13633 }
13634
13635 child_die = sibling_die (child_die);
13636 }
13637
13638 if (num_fields)
13639 {
f792889a
DJ
13640 TYPE_NFIELDS (this_type) = num_fields;
13641 TYPE_FIELDS (this_type) = (struct field *)
13642 TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
13643 memcpy (TYPE_FIELDS (this_type), fields,
c906108c 13644 sizeof (struct field) * num_fields);
b8c9b27d 13645 xfree (fields);
c906108c 13646 }
c906108c 13647 }
134d01f1 13648
6c83ed52
TT
13649 /* If we are reading an enum from a .debug_types unit, and the enum
13650 is a declaration, and the enum is not the signatured type in the
13651 unit, then we do not want to add a symbol for it. Adding a
13652 symbol would in some cases obscure the true definition of the
13653 enum, giving users an incomplete type when the definition is
13654 actually available. Note that we do not want to do this for all
13655 enums which are just declarations, because C++0x allows forward
13656 enum declarations. */
3019eac3 13657 if (cu->per_cu->is_debug_types
6c83ed52
TT
13658 && die_is_declaration (die, cu))
13659 {
52dc124a 13660 struct signatured_type *sig_type;
6c83ed52 13661
c0f78cd4 13662 sig_type = (struct signatured_type *) cu->per_cu;
3019eac3
DE
13663 gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
13664 if (sig_type->type_offset_in_section.sect_off != die->offset.sect_off)
6c83ed52
TT
13665 return;
13666 }
13667
f792889a 13668 new_symbol (die, this_type, cu);
c906108c
SS
13669}
13670
13671/* Extract all information from a DW_TAG_array_type DIE and put it in
13672 the DIE's type field. For now, this only handles one dimensional
13673 arrays. */
13674
f792889a 13675static struct type *
e7c27a73 13676read_array_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13677{
e7c27a73 13678 struct objfile *objfile = cu->objfile;
c906108c 13679 struct die_info *child_die;
7e314c57 13680 struct type *type;
c906108c
SS
13681 struct type *element_type, *range_type, *index_type;
13682 struct type **range_types = NULL;
13683 struct attribute *attr;
13684 int ndim = 0;
13685 struct cleanup *back_to;
15d034d0 13686 const char *name;
dc53a7ad 13687 unsigned int bit_stride = 0;
c906108c 13688
e7c27a73 13689 element_type = die_type (die, cu);
c906108c 13690
7e314c57
JK
13691 /* The die_type call above may have already set the type for this DIE. */
13692 type = get_die_type (die, cu);
13693 if (type)
13694 return type;
13695
dc53a7ad
JB
13696 attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
13697 if (attr != NULL)
13698 bit_stride = DW_UNSND (attr) * 8;
13699
13700 attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
13701 if (attr != NULL)
13702 bit_stride = DW_UNSND (attr);
13703
c906108c
SS
13704 /* Irix 6.2 native cc creates array types without children for
13705 arrays with unspecified length. */
639d11d3 13706 if (die->child == NULL)
c906108c 13707 {
46bf5051 13708 index_type = objfile_type (objfile)->builtin_int;
0c9c3474 13709 range_type = create_static_range_type (NULL, index_type, 0, -1);
dc53a7ad
JB
13710 type = create_array_type_with_stride (NULL, element_type, range_type,
13711 bit_stride);
f792889a 13712 return set_die_type (die, type, cu);
c906108c
SS
13713 }
13714
13715 back_to = make_cleanup (null_cleanup, NULL);
639d11d3 13716 child_die = die->child;
c906108c
SS
13717 while (child_die && child_die->tag)
13718 {
13719 if (child_die->tag == DW_TAG_subrange_type)
13720 {
f792889a 13721 struct type *child_type = read_type_die (child_die, cu);
9a619af0 13722
f792889a 13723 if (child_type != NULL)
a02abb62 13724 {
0963b4bd
MS
13725 /* The range type was succesfully read. Save it for the
13726 array type creation. */
a02abb62
JB
13727 if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
13728 {
13729 range_types = (struct type **)
13730 xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
13731 * sizeof (struct type *));
13732 if (ndim == 0)
13733 make_cleanup (free_current_contents, &range_types);
13734 }
f792889a 13735 range_types[ndim++] = child_type;
a02abb62 13736 }
c906108c
SS
13737 }
13738 child_die = sibling_die (child_die);
13739 }
13740
13741 /* Dwarf2 dimensions are output from left to right, create the
13742 necessary array types in backwards order. */
7ca2d3a3 13743
c906108c 13744 type = element_type;
7ca2d3a3
DL
13745
13746 if (read_array_order (die, cu) == DW_ORD_col_major)
13747 {
13748 int i = 0;
9a619af0 13749
7ca2d3a3 13750 while (i < ndim)
dc53a7ad
JB
13751 type = create_array_type_with_stride (NULL, type, range_types[i++],
13752 bit_stride);
7ca2d3a3
DL
13753 }
13754 else
13755 {
13756 while (ndim-- > 0)
dc53a7ad
JB
13757 type = create_array_type_with_stride (NULL, type, range_types[ndim],
13758 bit_stride);
7ca2d3a3 13759 }
c906108c 13760
f5f8a009
EZ
13761 /* Understand Dwarf2 support for vector types (like they occur on
13762 the PowerPC w/ AltiVec). Gcc just adds another attribute to the
13763 array type. This is not part of the Dwarf2/3 standard yet, but a
13764 custom vendor extension. The main difference between a regular
13765 array and the vector variant is that vectors are passed by value
13766 to functions. */
e142c38c 13767 attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
f5f8a009 13768 if (attr)
ea37ba09 13769 make_vector_type (type);
f5f8a009 13770
dbc98a8b
KW
13771 /* The DIE may have DW_AT_byte_size set. For example an OpenCL
13772 implementation may choose to implement triple vectors using this
13773 attribute. */
13774 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13775 if (attr)
13776 {
13777 if (DW_UNSND (attr) >= TYPE_LENGTH (type))
13778 TYPE_LENGTH (type) = DW_UNSND (attr);
13779 else
3e43a32a
MS
13780 complaint (&symfile_complaints,
13781 _("DW_AT_byte_size for array type smaller "
13782 "than the total size of elements"));
dbc98a8b
KW
13783 }
13784
39cbfefa
DJ
13785 name = dwarf2_name (die, cu);
13786 if (name)
13787 TYPE_NAME (type) = name;
6e70227d 13788
0963b4bd 13789 /* Install the type in the die. */
7e314c57
JK
13790 set_die_type (die, type, cu);
13791
13792 /* set_die_type should be already done. */
b4ba55a1
JB
13793 set_descriptive_type (type, die, cu);
13794
c906108c
SS
13795 do_cleanups (back_to);
13796
7e314c57 13797 return type;
c906108c
SS
13798}
13799
7ca2d3a3 13800static enum dwarf_array_dim_ordering
6e70227d 13801read_array_order (struct die_info *die, struct dwarf2_cu *cu)
7ca2d3a3
DL
13802{
13803 struct attribute *attr;
13804
13805 attr = dwarf2_attr (die, DW_AT_ordering, cu);
13806
13807 if (attr) return DW_SND (attr);
13808
0963b4bd
MS
13809 /* GNU F77 is a special case, as at 08/2004 array type info is the
13810 opposite order to the dwarf2 specification, but data is still
13811 laid out as per normal fortran.
7ca2d3a3 13812
0963b4bd
MS
13813 FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
13814 version checking. */
7ca2d3a3 13815
905e0470
PM
13816 if (cu->language == language_fortran
13817 && cu->producer && strstr (cu->producer, "GNU F77"))
7ca2d3a3
DL
13818 {
13819 return DW_ORD_row_major;
13820 }
13821
6e70227d 13822 switch (cu->language_defn->la_array_ordering)
7ca2d3a3
DL
13823 {
13824 case array_column_major:
13825 return DW_ORD_col_major;
13826 case array_row_major:
13827 default:
13828 return DW_ORD_row_major;
13829 };
13830}
13831
72019c9c 13832/* Extract all information from a DW_TAG_set_type DIE and put it in
0963b4bd 13833 the DIE's type field. */
72019c9c 13834
f792889a 13835static struct type *
72019c9c
GM
13836read_set_type (struct die_info *die, struct dwarf2_cu *cu)
13837{
7e314c57
JK
13838 struct type *domain_type, *set_type;
13839 struct attribute *attr;
f792889a 13840
7e314c57
JK
13841 domain_type = die_type (die, cu);
13842
13843 /* The die_type call above may have already set the type for this DIE. */
13844 set_type = get_die_type (die, cu);
13845 if (set_type)
13846 return set_type;
13847
13848 set_type = create_set_type (NULL, domain_type);
13849
13850 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
d09039dd
PM
13851 if (attr)
13852 TYPE_LENGTH (set_type) = DW_UNSND (attr);
7e314c57 13853
f792889a 13854 return set_die_type (die, set_type, cu);
72019c9c 13855}
7ca2d3a3 13856
0971de02
TT
13857/* A helper for read_common_block that creates a locexpr baton.
13858 SYM is the symbol which we are marking as computed.
13859 COMMON_DIE is the DIE for the common block.
13860 COMMON_LOC is the location expression attribute for the common
13861 block itself.
13862 MEMBER_LOC is the location expression attribute for the particular
13863 member of the common block that we are processing.
13864 CU is the CU from which the above come. */
13865
13866static void
13867mark_common_block_symbol_computed (struct symbol *sym,
13868 struct die_info *common_die,
13869 struct attribute *common_loc,
13870 struct attribute *member_loc,
13871 struct dwarf2_cu *cu)
13872{
13873 struct objfile *objfile = dwarf2_per_objfile->objfile;
13874 struct dwarf2_locexpr_baton *baton;
13875 gdb_byte *ptr;
13876 unsigned int cu_off;
13877 enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
13878 LONGEST offset = 0;
13879
13880 gdb_assert (common_loc && member_loc);
13881 gdb_assert (attr_form_is_block (common_loc));
13882 gdb_assert (attr_form_is_block (member_loc)
13883 || attr_form_is_constant (member_loc));
13884
13885 baton = obstack_alloc (&objfile->objfile_obstack,
13886 sizeof (struct dwarf2_locexpr_baton));
13887 baton->per_cu = cu->per_cu;
13888 gdb_assert (baton->per_cu);
13889
13890 baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
13891
13892 if (attr_form_is_constant (member_loc))
13893 {
13894 offset = dwarf2_get_attr_constant_value (member_loc, 0);
13895 baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
13896 }
13897 else
13898 baton->size += DW_BLOCK (member_loc)->size;
13899
13900 ptr = obstack_alloc (&objfile->objfile_obstack, baton->size);
13901 baton->data = ptr;
13902
13903 *ptr++ = DW_OP_call4;
13904 cu_off = common_die->offset.sect_off - cu->per_cu->offset.sect_off;
13905 store_unsigned_integer (ptr, 4, byte_order, cu_off);
13906 ptr += 4;
13907
13908 if (attr_form_is_constant (member_loc))
13909 {
13910 *ptr++ = DW_OP_addr;
13911 store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
13912 ptr += cu->header.addr_size;
13913 }
13914 else
13915 {
13916 /* We have to copy the data here, because DW_OP_call4 will only
13917 use a DW_AT_location attribute. */
13918 memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
13919 ptr += DW_BLOCK (member_loc)->size;
13920 }
13921
13922 *ptr++ = DW_OP_plus;
13923 gdb_assert (ptr - baton->data == baton->size);
13924
0971de02 13925 SYMBOL_LOCATION_BATON (sym) = baton;
f1e6e072 13926 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
0971de02
TT
13927}
13928
4357ac6c
TT
13929/* Create appropriate locally-scoped variables for all the
13930 DW_TAG_common_block entries. Also create a struct common_block
13931 listing all such variables for `info common'. COMMON_BLOCK_DOMAIN
13932 is used to sepate the common blocks name namespace from regular
13933 variable names. */
c906108c
SS
13934
13935static void
e7c27a73 13936read_common_block (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13937{
0971de02
TT
13938 struct attribute *attr;
13939
13940 attr = dwarf2_attr (die, DW_AT_location, cu);
13941 if (attr)
13942 {
13943 /* Support the .debug_loc offsets. */
13944 if (attr_form_is_block (attr))
13945 {
13946 /* Ok. */
13947 }
13948 else if (attr_form_is_section_offset (attr))
13949 {
13950 dwarf2_complex_location_expr_complaint ();
13951 attr = NULL;
13952 }
13953 else
13954 {
13955 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
13956 "common block member");
13957 attr = NULL;
13958 }
13959 }
13960
639d11d3 13961 if (die->child != NULL)
c906108c 13962 {
4357ac6c
TT
13963 struct objfile *objfile = cu->objfile;
13964 struct die_info *child_die;
13965 size_t n_entries = 0, size;
13966 struct common_block *common_block;
13967 struct symbol *sym;
74ac6d43 13968
4357ac6c
TT
13969 for (child_die = die->child;
13970 child_die && child_die->tag;
13971 child_die = sibling_die (child_die))
13972 ++n_entries;
13973
13974 size = (sizeof (struct common_block)
13975 + (n_entries - 1) * sizeof (struct symbol *));
13976 common_block = obstack_alloc (&objfile->objfile_obstack, size);
13977 memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
13978 common_block->n_entries = 0;
13979
13980 for (child_die = die->child;
13981 child_die && child_die->tag;
13982 child_die = sibling_die (child_die))
13983 {
13984 /* Create the symbol in the DW_TAG_common_block block in the current
13985 symbol scope. */
e7c27a73 13986 sym = new_symbol (child_die, NULL, cu);
0971de02
TT
13987 if (sym != NULL)
13988 {
13989 struct attribute *member_loc;
13990
13991 common_block->contents[common_block->n_entries++] = sym;
13992
13993 member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
13994 cu);
13995 if (member_loc)
13996 {
13997 /* GDB has handled this for a long time, but it is
13998 not specified by DWARF. It seems to have been
13999 emitted by gfortran at least as recently as:
14000 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057. */
14001 complaint (&symfile_complaints,
14002 _("Variable in common block has "
14003 "DW_AT_data_member_location "
14004 "- DIE at 0x%x [in module %s]"),
4262abfb
JK
14005 child_die->offset.sect_off,
14006 objfile_name (cu->objfile));
0971de02
TT
14007
14008 if (attr_form_is_section_offset (member_loc))
14009 dwarf2_complex_location_expr_complaint ();
14010 else if (attr_form_is_constant (member_loc)
14011 || attr_form_is_block (member_loc))
14012 {
14013 if (attr)
14014 mark_common_block_symbol_computed (sym, die, attr,
14015 member_loc, cu);
14016 }
14017 else
14018 dwarf2_complex_location_expr_complaint ();
14019 }
14020 }
c906108c 14021 }
4357ac6c
TT
14022
14023 sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
14024 SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
c906108c
SS
14025 }
14026}
14027
0114d602 14028/* Create a type for a C++ namespace. */
d9fa45fe 14029
0114d602
DJ
14030static struct type *
14031read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
d9fa45fe 14032{
e7c27a73 14033 struct objfile *objfile = cu->objfile;
0114d602 14034 const char *previous_prefix, *name;
9219021c 14035 int is_anonymous;
0114d602
DJ
14036 struct type *type;
14037
14038 /* For extensions, reuse the type of the original namespace. */
14039 if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
14040 {
14041 struct die_info *ext_die;
14042 struct dwarf2_cu *ext_cu = cu;
9a619af0 14043
0114d602
DJ
14044 ext_die = dwarf2_extension (die, &ext_cu);
14045 type = read_type_die (ext_die, ext_cu);
9dc481d3
DE
14046
14047 /* EXT_CU may not be the same as CU.
02142a6c 14048 Ensure TYPE is recorded with CU in die_type_hash. */
0114d602
DJ
14049 return set_die_type (die, type, cu);
14050 }
9219021c 14051
e142c38c 14052 name = namespace_name (die, &is_anonymous, cu);
9219021c
DC
14053
14054 /* Now build the name of the current namespace. */
14055
0114d602
DJ
14056 previous_prefix = determine_prefix (die, cu);
14057 if (previous_prefix[0] != '\0')
14058 name = typename_concat (&objfile->objfile_obstack,
f55ee35c 14059 previous_prefix, name, 0, cu);
0114d602
DJ
14060
14061 /* Create the type. */
14062 type = init_type (TYPE_CODE_NAMESPACE, 0, 0, NULL,
14063 objfile);
abee88f2 14064 TYPE_NAME (type) = name;
0114d602
DJ
14065 TYPE_TAG_NAME (type) = TYPE_NAME (type);
14066
60531b24 14067 return set_die_type (die, type, cu);
0114d602
DJ
14068}
14069
14070/* Read a C++ namespace. */
14071
14072static void
14073read_namespace (struct die_info *die, struct dwarf2_cu *cu)
14074{
14075 struct objfile *objfile = cu->objfile;
0114d602 14076 int is_anonymous;
9219021c 14077
5c4e30ca
DC
14078 /* Add a symbol associated to this if we haven't seen the namespace
14079 before. Also, add a using directive if it's an anonymous
14080 namespace. */
9219021c 14081
f2f0e013 14082 if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
5c4e30ca
DC
14083 {
14084 struct type *type;
14085
0114d602 14086 type = read_type_die (die, cu);
e7c27a73 14087 new_symbol (die, type, cu);
5c4e30ca 14088
e8e80198 14089 namespace_name (die, &is_anonymous, cu);
5c4e30ca 14090 if (is_anonymous)
0114d602
DJ
14091 {
14092 const char *previous_prefix = determine_prefix (die, cu);
9a619af0 14093
c0cc3a76 14094 cp_add_using_directive (previous_prefix, TYPE_NAME (type), NULL,
12aaed36 14095 NULL, NULL, 0, &objfile->objfile_obstack);
0114d602 14096 }
5c4e30ca 14097 }
9219021c 14098
639d11d3 14099 if (die->child != NULL)
d9fa45fe 14100 {
639d11d3 14101 struct die_info *child_die = die->child;
6e70227d 14102
d9fa45fe
DC
14103 while (child_die && child_die->tag)
14104 {
e7c27a73 14105 process_die (child_die, cu);
d9fa45fe
DC
14106 child_die = sibling_die (child_die);
14107 }
14108 }
38d518c9
EZ
14109}
14110
f55ee35c
JK
14111/* Read a Fortran module as type. This DIE can be only a declaration used for
14112 imported module. Still we need that type as local Fortran "use ... only"
14113 declaration imports depend on the created type in determine_prefix. */
14114
14115static struct type *
14116read_module_type (struct die_info *die, struct dwarf2_cu *cu)
14117{
14118 struct objfile *objfile = cu->objfile;
15d034d0 14119 const char *module_name;
f55ee35c
JK
14120 struct type *type;
14121
14122 module_name = dwarf2_name (die, cu);
14123 if (!module_name)
3e43a32a
MS
14124 complaint (&symfile_complaints,
14125 _("DW_TAG_module has no name, offset 0x%x"),
b64f50a1 14126 die->offset.sect_off);
f55ee35c
JK
14127 type = init_type (TYPE_CODE_MODULE, 0, 0, module_name, objfile);
14128
14129 /* determine_prefix uses TYPE_TAG_NAME. */
14130 TYPE_TAG_NAME (type) = TYPE_NAME (type);
14131
14132 return set_die_type (die, type, cu);
14133}
14134
5d7cb8df
JK
14135/* Read a Fortran module. */
14136
14137static void
14138read_module (struct die_info *die, struct dwarf2_cu *cu)
14139{
14140 struct die_info *child_die = die->child;
530e8392
KB
14141 struct type *type;
14142
14143 type = read_type_die (die, cu);
14144 new_symbol (die, type, cu);
5d7cb8df 14145
5d7cb8df
JK
14146 while (child_die && child_die->tag)
14147 {
14148 process_die (child_die, cu);
14149 child_die = sibling_die (child_die);
14150 }
14151}
14152
38d518c9
EZ
14153/* Return the name of the namespace represented by DIE. Set
14154 *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
14155 namespace. */
14156
14157static const char *
e142c38c 14158namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
38d518c9
EZ
14159{
14160 struct die_info *current_die;
14161 const char *name = NULL;
14162
14163 /* Loop through the extensions until we find a name. */
14164
14165 for (current_die = die;
14166 current_die != NULL;
f2f0e013 14167 current_die = dwarf2_extension (die, &cu))
38d518c9 14168 {
96553a0c
DE
14169 /* We don't use dwarf2_name here so that we can detect the absence
14170 of a name -> anonymous namespace. */
14171 struct attribute *attr = dwarf2_attr (die, DW_AT_name, cu);
14172
14173 if (attr != NULL)
14174 name = DW_STRING (attr);
38d518c9
EZ
14175 if (name != NULL)
14176 break;
14177 }
14178
14179 /* Is it an anonymous namespace? */
14180
14181 *is_anonymous = (name == NULL);
14182 if (*is_anonymous)
2b1dbab0 14183 name = CP_ANONYMOUS_NAMESPACE_STR;
38d518c9
EZ
14184
14185 return name;
d9fa45fe
DC
14186}
14187
c906108c
SS
14188/* Extract all information from a DW_TAG_pointer_type DIE and add to
14189 the user defined type vector. */
14190
f792889a 14191static struct type *
e7c27a73 14192read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14193{
5e2b427d 14194 struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
e7c27a73 14195 struct comp_unit_head *cu_header = &cu->header;
c906108c 14196 struct type *type;
8b2dbe47
KB
14197 struct attribute *attr_byte_size;
14198 struct attribute *attr_address_class;
14199 int byte_size, addr_class;
7e314c57
JK
14200 struct type *target_type;
14201
14202 target_type = die_type (die, cu);
c906108c 14203
7e314c57
JK
14204 /* The die_type call above may have already set the type for this DIE. */
14205 type = get_die_type (die, cu);
14206 if (type)
14207 return type;
14208
14209 type = lookup_pointer_type (target_type);
8b2dbe47 14210
e142c38c 14211 attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
8b2dbe47
KB
14212 if (attr_byte_size)
14213 byte_size = DW_UNSND (attr_byte_size);
c906108c 14214 else
8b2dbe47
KB
14215 byte_size = cu_header->addr_size;
14216
e142c38c 14217 attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
8b2dbe47
KB
14218 if (attr_address_class)
14219 addr_class = DW_UNSND (attr_address_class);
14220 else
14221 addr_class = DW_ADDR_none;
14222
14223 /* If the pointer size or address class is different than the
14224 default, create a type variant marked as such and set the
14225 length accordingly. */
14226 if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
c906108c 14227 {
5e2b427d 14228 if (gdbarch_address_class_type_flags_p (gdbarch))
8b2dbe47
KB
14229 {
14230 int type_flags;
14231
849957d9 14232 type_flags = gdbarch_address_class_type_flags
5e2b427d 14233 (gdbarch, byte_size, addr_class);
876cecd0
TT
14234 gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
14235 == 0);
8b2dbe47
KB
14236 type = make_type_with_address_space (type, type_flags);
14237 }
14238 else if (TYPE_LENGTH (type) != byte_size)
14239 {
3e43a32a
MS
14240 complaint (&symfile_complaints,
14241 _("invalid pointer size %d"), byte_size);
8b2dbe47 14242 }
6e70227d 14243 else
9a619af0
MS
14244 {
14245 /* Should we also complain about unhandled address classes? */
14246 }
c906108c 14247 }
8b2dbe47
KB
14248
14249 TYPE_LENGTH (type) = byte_size;
f792889a 14250 return set_die_type (die, type, cu);
c906108c
SS
14251}
14252
14253/* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
14254 the user defined type vector. */
14255
f792889a 14256static struct type *
e7c27a73 14257read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c
SS
14258{
14259 struct type *type;
14260 struct type *to_type;
14261 struct type *domain;
14262
e7c27a73
DJ
14263 to_type = die_type (die, cu);
14264 domain = die_containing_type (die, cu);
0d5de010 14265
7e314c57
JK
14266 /* The calls above may have already set the type for this DIE. */
14267 type = get_die_type (die, cu);
14268 if (type)
14269 return type;
14270
0d5de010
DJ
14271 if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
14272 type = lookup_methodptr_type (to_type);
7078baeb
TT
14273 else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
14274 {
14275 struct type *new_type = alloc_type (cu->objfile);
14276
14277 smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
14278 TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
14279 TYPE_VARARGS (to_type));
14280 type = lookup_methodptr_type (new_type);
14281 }
0d5de010
DJ
14282 else
14283 type = lookup_memberptr_type (to_type, domain);
c906108c 14284
f792889a 14285 return set_die_type (die, type, cu);
c906108c
SS
14286}
14287
14288/* Extract all information from a DW_TAG_reference_type DIE and add to
14289 the user defined type vector. */
14290
f792889a 14291static struct type *
e7c27a73 14292read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14293{
e7c27a73 14294 struct comp_unit_head *cu_header = &cu->header;
7e314c57 14295 struct type *type, *target_type;
c906108c
SS
14296 struct attribute *attr;
14297
7e314c57
JK
14298 target_type = die_type (die, cu);
14299
14300 /* The die_type call above may have already set the type for this DIE. */
14301 type = get_die_type (die, cu);
14302 if (type)
14303 return type;
14304
14305 type = lookup_reference_type (target_type);
e142c38c 14306 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
14307 if (attr)
14308 {
14309 TYPE_LENGTH (type) = DW_UNSND (attr);
14310 }
14311 else
14312 {
107d2387 14313 TYPE_LENGTH (type) = cu_header->addr_size;
c906108c 14314 }
f792889a 14315 return set_die_type (die, type, cu);
c906108c
SS
14316}
14317
cf363f18
MW
14318/* Add the given cv-qualifiers to the element type of the array. GCC
14319 outputs DWARF type qualifiers that apply to an array, not the
14320 element type. But GDB relies on the array element type to carry
14321 the cv-qualifiers. This mimics section 6.7.3 of the C99
14322 specification. */
14323
14324static struct type *
14325add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
14326 struct type *base_type, int cnst, int voltl)
14327{
14328 struct type *el_type, *inner_array;
14329
14330 base_type = copy_type (base_type);
14331 inner_array = base_type;
14332
14333 while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
14334 {
14335 TYPE_TARGET_TYPE (inner_array) =
14336 copy_type (TYPE_TARGET_TYPE (inner_array));
14337 inner_array = TYPE_TARGET_TYPE (inner_array);
14338 }
14339
14340 el_type = TYPE_TARGET_TYPE (inner_array);
14341 cnst |= TYPE_CONST (el_type);
14342 voltl |= TYPE_VOLATILE (el_type);
14343 TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
14344
14345 return set_die_type (die, base_type, cu);
14346}
14347
f792889a 14348static struct type *
e7c27a73 14349read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14350{
f792889a 14351 struct type *base_type, *cv_type;
c906108c 14352
e7c27a73 14353 base_type = die_type (die, cu);
7e314c57
JK
14354
14355 /* The die_type call above may have already set the type for this DIE. */
14356 cv_type = get_die_type (die, cu);
14357 if (cv_type)
14358 return cv_type;
14359
2f608a3a
KW
14360 /* In case the const qualifier is applied to an array type, the element type
14361 is so qualified, not the array type (section 6.7.3 of C99). */
14362 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
cf363f18 14363 return add_array_cv_type (die, cu, base_type, 1, 0);
2f608a3a 14364
f792889a
DJ
14365 cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
14366 return set_die_type (die, cv_type, cu);
c906108c
SS
14367}
14368
f792889a 14369static struct type *
e7c27a73 14370read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14371{
f792889a 14372 struct type *base_type, *cv_type;
c906108c 14373
e7c27a73 14374 base_type = die_type (die, cu);
7e314c57
JK
14375
14376 /* The die_type call above may have already set the type for this DIE. */
14377 cv_type = get_die_type (die, cu);
14378 if (cv_type)
14379 return cv_type;
14380
cf363f18
MW
14381 /* In case the volatile qualifier is applied to an array type, the
14382 element type is so qualified, not the array type (section 6.7.3
14383 of C99). */
14384 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
14385 return add_array_cv_type (die, cu, base_type, 0, 1);
14386
f792889a
DJ
14387 cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
14388 return set_die_type (die, cv_type, cu);
c906108c
SS
14389}
14390
06d66ee9
TT
14391/* Handle DW_TAG_restrict_type. */
14392
14393static struct type *
14394read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
14395{
14396 struct type *base_type, *cv_type;
14397
14398 base_type = die_type (die, cu);
14399
14400 /* The die_type call above may have already set the type for this DIE. */
14401 cv_type = get_die_type (die, cu);
14402 if (cv_type)
14403 return cv_type;
14404
14405 cv_type = make_restrict_type (base_type);
14406 return set_die_type (die, cv_type, cu);
14407}
14408
a2c2acaf
MW
14409/* Handle DW_TAG_atomic_type. */
14410
14411static struct type *
14412read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
14413{
14414 struct type *base_type, *cv_type;
14415
14416 base_type = die_type (die, cu);
14417
14418 /* The die_type call above may have already set the type for this DIE. */
14419 cv_type = get_die_type (die, cu);
14420 if (cv_type)
14421 return cv_type;
14422
14423 cv_type = make_atomic_type (base_type);
14424 return set_die_type (die, cv_type, cu);
14425}
14426
c906108c
SS
14427/* Extract all information from a DW_TAG_string_type DIE and add to
14428 the user defined type vector. It isn't really a user defined type,
14429 but it behaves like one, with other DIE's using an AT_user_def_type
14430 attribute to reference it. */
14431
f792889a 14432static struct type *
e7c27a73 14433read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14434{
e7c27a73 14435 struct objfile *objfile = cu->objfile;
3b7538c0 14436 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
14437 struct type *type, *range_type, *index_type, *char_type;
14438 struct attribute *attr;
14439 unsigned int length;
14440
e142c38c 14441 attr = dwarf2_attr (die, DW_AT_string_length, cu);
c906108c
SS
14442 if (attr)
14443 {
14444 length = DW_UNSND (attr);
14445 }
14446 else
14447 {
0963b4bd 14448 /* Check for the DW_AT_byte_size attribute. */
e142c38c 14449 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
b21b22e0
PS
14450 if (attr)
14451 {
14452 length = DW_UNSND (attr);
14453 }
14454 else
14455 {
14456 length = 1;
14457 }
c906108c 14458 }
6ccb9162 14459
46bf5051 14460 index_type = objfile_type (objfile)->builtin_int;
0c9c3474 14461 range_type = create_static_range_type (NULL, index_type, 1, length);
3b7538c0
UW
14462 char_type = language_string_char_type (cu->language_defn, gdbarch);
14463 type = create_string_type (NULL, char_type, range_type);
6ccb9162 14464
f792889a 14465 return set_die_type (die, type, cu);
c906108c
SS
14466}
14467
4d804846
JB
14468/* Assuming that DIE corresponds to a function, returns nonzero
14469 if the function is prototyped. */
14470
14471static int
14472prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
14473{
14474 struct attribute *attr;
14475
14476 attr = dwarf2_attr (die, DW_AT_prototyped, cu);
14477 if (attr && (DW_UNSND (attr) != 0))
14478 return 1;
14479
14480 /* The DWARF standard implies that the DW_AT_prototyped attribute
14481 is only meaninful for C, but the concept also extends to other
14482 languages that allow unprototyped functions (Eg: Objective C).
14483 For all other languages, assume that functions are always
14484 prototyped. */
14485 if (cu->language != language_c
14486 && cu->language != language_objc
14487 && cu->language != language_opencl)
14488 return 1;
14489
14490 /* RealView does not emit DW_AT_prototyped. We can not distinguish
14491 prototyped and unprototyped functions; default to prototyped,
14492 since that is more common in modern code (and RealView warns
14493 about unprototyped functions). */
14494 if (producer_is_realview (cu->producer))
14495 return 1;
14496
14497 return 0;
14498}
14499
c906108c
SS
14500/* Handle DIES due to C code like:
14501
14502 struct foo
c5aa993b
JM
14503 {
14504 int (*funcp)(int a, long l);
14505 int b;
14506 };
c906108c 14507
0963b4bd 14508 ('funcp' generates a DW_TAG_subroutine_type DIE). */
c906108c 14509
f792889a 14510static struct type *
e7c27a73 14511read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14512{
bb5ed363 14513 struct objfile *objfile = cu->objfile;
0963b4bd
MS
14514 struct type *type; /* Type that this function returns. */
14515 struct type *ftype; /* Function that returns above type. */
c906108c
SS
14516 struct attribute *attr;
14517
e7c27a73 14518 type = die_type (die, cu);
7e314c57
JK
14519
14520 /* The die_type call above may have already set the type for this DIE. */
14521 ftype = get_die_type (die, cu);
14522 if (ftype)
14523 return ftype;
14524
0c8b41f1 14525 ftype = lookup_function_type (type);
c906108c 14526
4d804846 14527 if (prototyped_function_p (die, cu))
a6c727b2 14528 TYPE_PROTOTYPED (ftype) = 1;
c906108c 14529
c055b101
CV
14530 /* Store the calling convention in the type if it's available in
14531 the subroutine die. Otherwise set the calling convention to
14532 the default value DW_CC_normal. */
14533 attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
54fcddd0
UW
14534 if (attr)
14535 TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
14536 else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
14537 TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
14538 else
14539 TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
76c10ea2 14540
743649fd
MW
14541 /* Record whether the function returns normally to its caller or not
14542 if the DWARF producer set that information. */
14543 attr = dwarf2_attr (die, DW_AT_noreturn, cu);
14544 if (attr && (DW_UNSND (attr) != 0))
14545 TYPE_NO_RETURN (ftype) = 1;
14546
76c10ea2
GM
14547 /* We need to add the subroutine type to the die immediately so
14548 we don't infinitely recurse when dealing with parameters
0963b4bd 14549 declared as the same subroutine type. */
76c10ea2 14550 set_die_type (die, ftype, cu);
6e70227d 14551
639d11d3 14552 if (die->child != NULL)
c906108c 14553 {
bb5ed363 14554 struct type *void_type = objfile_type (objfile)->builtin_void;
c906108c 14555 struct die_info *child_die;
8072405b 14556 int nparams, iparams;
c906108c
SS
14557
14558 /* Count the number of parameters.
14559 FIXME: GDB currently ignores vararg functions, but knows about
14560 vararg member functions. */
8072405b 14561 nparams = 0;
639d11d3 14562 child_die = die->child;
c906108c
SS
14563 while (child_die && child_die->tag)
14564 {
14565 if (child_die->tag == DW_TAG_formal_parameter)
14566 nparams++;
14567 else if (child_die->tag == DW_TAG_unspecified_parameters)
876cecd0 14568 TYPE_VARARGS (ftype) = 1;
c906108c
SS
14569 child_die = sibling_die (child_die);
14570 }
14571
14572 /* Allocate storage for parameters and fill them in. */
14573 TYPE_NFIELDS (ftype) = nparams;
14574 TYPE_FIELDS (ftype) = (struct field *)
ae5a43e0 14575 TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
c906108c 14576
8072405b
JK
14577 /* TYPE_FIELD_TYPE must never be NULL. Pre-fill the array to ensure it
14578 even if we error out during the parameters reading below. */
14579 for (iparams = 0; iparams < nparams; iparams++)
14580 TYPE_FIELD_TYPE (ftype, iparams) = void_type;
14581
14582 iparams = 0;
639d11d3 14583 child_die = die->child;
c906108c
SS
14584 while (child_die && child_die->tag)
14585 {
14586 if (child_die->tag == DW_TAG_formal_parameter)
14587 {
3ce3b1ba
PA
14588 struct type *arg_type;
14589
14590 /* DWARF version 2 has no clean way to discern C++
14591 static and non-static member functions. G++ helps
14592 GDB by marking the first parameter for non-static
14593 member functions (which is the this pointer) as
14594 artificial. We pass this information to
14595 dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
14596
14597 DWARF version 3 added DW_AT_object_pointer, which GCC
14598 4.5 does not yet generate. */
e142c38c 14599 attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
c906108c
SS
14600 if (attr)
14601 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
14602 else
418835cc
KS
14603 {
14604 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
14605
14606 /* GCC/43521: In java, the formal parameter
14607 "this" is sometimes not marked with DW_AT_artificial. */
14608 if (cu->language == language_java)
14609 {
14610 const char *name = dwarf2_name (child_die, cu);
9a619af0 14611
418835cc
KS
14612 if (name && !strcmp (name, "this"))
14613 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 1;
14614 }
14615 }
3ce3b1ba
PA
14616 arg_type = die_type (child_die, cu);
14617
14618 /* RealView does not mark THIS as const, which the testsuite
14619 expects. GCC marks THIS as const in method definitions,
14620 but not in the class specifications (GCC PR 43053). */
14621 if (cu->language == language_cplus && !TYPE_CONST (arg_type)
14622 && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
14623 {
14624 int is_this = 0;
14625 struct dwarf2_cu *arg_cu = cu;
14626 const char *name = dwarf2_name (child_die, cu);
14627
14628 attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
14629 if (attr)
14630 {
14631 /* If the compiler emits this, use it. */
14632 if (follow_die_ref (die, attr, &arg_cu) == child_die)
14633 is_this = 1;
14634 }
14635 else if (name && strcmp (name, "this") == 0)
14636 /* Function definitions will have the argument names. */
14637 is_this = 1;
14638 else if (name == NULL && iparams == 0)
14639 /* Declarations may not have the names, so like
14640 elsewhere in GDB, assume an artificial first
14641 argument is "this". */
14642 is_this = 1;
14643
14644 if (is_this)
14645 arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
14646 arg_type, 0);
14647 }
14648
14649 TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
c906108c
SS
14650 iparams++;
14651 }
14652 child_die = sibling_die (child_die);
14653 }
14654 }
14655
76c10ea2 14656 return ftype;
c906108c
SS
14657}
14658
f792889a 14659static struct type *
e7c27a73 14660read_typedef (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14661{
e7c27a73 14662 struct objfile *objfile = cu->objfile;
0114d602 14663 const char *name = NULL;
3c8e0968 14664 struct type *this_type, *target_type;
c906108c 14665
94af9270 14666 name = dwarf2_full_name (NULL, die, cu);
f792889a 14667 this_type = init_type (TYPE_CODE_TYPEDEF, 0,
0114d602 14668 TYPE_FLAG_TARGET_STUB, NULL, objfile);
abee88f2 14669 TYPE_NAME (this_type) = name;
f792889a 14670 set_die_type (die, this_type, cu);
3c8e0968
DE
14671 target_type = die_type (die, cu);
14672 if (target_type != this_type)
14673 TYPE_TARGET_TYPE (this_type) = target_type;
14674 else
14675 {
14676 /* Self-referential typedefs are, it seems, not allowed by the DWARF
14677 spec and cause infinite loops in GDB. */
14678 complaint (&symfile_complaints,
14679 _("Self-referential DW_TAG_typedef "
14680 "- DIE at 0x%x [in module %s]"),
4262abfb 14681 die->offset.sect_off, objfile_name (objfile));
3c8e0968
DE
14682 TYPE_TARGET_TYPE (this_type) = NULL;
14683 }
f792889a 14684 return this_type;
c906108c
SS
14685}
14686
14687/* Find a representation of a given base type and install
14688 it in the TYPE field of the die. */
14689
f792889a 14690static struct type *
e7c27a73 14691read_base_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14692{
e7c27a73 14693 struct objfile *objfile = cu->objfile;
c906108c
SS
14694 struct type *type;
14695 struct attribute *attr;
14696 int encoding = 0, size = 0;
15d034d0 14697 const char *name;
6ccb9162
UW
14698 enum type_code code = TYPE_CODE_INT;
14699 int type_flags = 0;
14700 struct type *target_type = NULL;
c906108c 14701
e142c38c 14702 attr = dwarf2_attr (die, DW_AT_encoding, cu);
c906108c
SS
14703 if (attr)
14704 {
14705 encoding = DW_UNSND (attr);
14706 }
e142c38c 14707 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
14708 if (attr)
14709 {
14710 size = DW_UNSND (attr);
14711 }
39cbfefa 14712 name = dwarf2_name (die, cu);
6ccb9162 14713 if (!name)
c906108c 14714 {
6ccb9162
UW
14715 complaint (&symfile_complaints,
14716 _("DW_AT_name missing from DW_TAG_base_type"));
c906108c 14717 }
6ccb9162
UW
14718
14719 switch (encoding)
c906108c 14720 {
6ccb9162
UW
14721 case DW_ATE_address:
14722 /* Turn DW_ATE_address into a void * pointer. */
14723 code = TYPE_CODE_PTR;
14724 type_flags |= TYPE_FLAG_UNSIGNED;
14725 target_type = init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
14726 break;
14727 case DW_ATE_boolean:
14728 code = TYPE_CODE_BOOL;
14729 type_flags |= TYPE_FLAG_UNSIGNED;
14730 break;
14731 case DW_ATE_complex_float:
14732 code = TYPE_CODE_COMPLEX;
14733 target_type = init_type (TYPE_CODE_FLT, size / 2, 0, NULL, objfile);
14734 break;
14735 case DW_ATE_decimal_float:
14736 code = TYPE_CODE_DECFLOAT;
14737 break;
14738 case DW_ATE_float:
14739 code = TYPE_CODE_FLT;
14740 break;
14741 case DW_ATE_signed:
14742 break;
14743 case DW_ATE_unsigned:
14744 type_flags |= TYPE_FLAG_UNSIGNED;
3b2b8fea
TT
14745 if (cu->language == language_fortran
14746 && name
61012eef 14747 && startswith (name, "character("))
3b2b8fea 14748 code = TYPE_CODE_CHAR;
6ccb9162
UW
14749 break;
14750 case DW_ATE_signed_char:
6e70227d 14751 if (cu->language == language_ada || cu->language == language_m2
3b2b8fea
TT
14752 || cu->language == language_pascal
14753 || cu->language == language_fortran)
6ccb9162
UW
14754 code = TYPE_CODE_CHAR;
14755 break;
14756 case DW_ATE_unsigned_char:
868a0084 14757 if (cu->language == language_ada || cu->language == language_m2
3b2b8fea
TT
14758 || cu->language == language_pascal
14759 || cu->language == language_fortran)
6ccb9162
UW
14760 code = TYPE_CODE_CHAR;
14761 type_flags |= TYPE_FLAG_UNSIGNED;
14762 break;
75079b2b
TT
14763 case DW_ATE_UTF:
14764 /* We just treat this as an integer and then recognize the
14765 type by name elsewhere. */
14766 break;
14767
6ccb9162
UW
14768 default:
14769 complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
14770 dwarf_type_encoding_name (encoding));
14771 break;
c906108c 14772 }
6ccb9162 14773
0114d602
DJ
14774 type = init_type (code, size, type_flags, NULL, objfile);
14775 TYPE_NAME (type) = name;
6ccb9162
UW
14776 TYPE_TARGET_TYPE (type) = target_type;
14777
0114d602 14778 if (name && strcmp (name, "char") == 0)
876cecd0 14779 TYPE_NOSIGN (type) = 1;
0114d602 14780
f792889a 14781 return set_die_type (die, type, cu);
c906108c
SS
14782}
14783
80180f79
SA
14784/* Parse dwarf attribute if it's a block, reference or constant and put the
14785 resulting value of the attribute into struct bound_prop.
14786 Returns 1 if ATTR could be resolved into PROP, 0 otherwise. */
14787
14788static int
14789attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
14790 struct dwarf2_cu *cu, struct dynamic_prop *prop)
14791{
14792 struct dwarf2_property_baton *baton;
14793 struct obstack *obstack = &cu->objfile->objfile_obstack;
14794
14795 if (attr == NULL || prop == NULL)
14796 return 0;
14797
14798 if (attr_form_is_block (attr))
14799 {
14800 baton = obstack_alloc (obstack, sizeof (*baton));
14801 baton->referenced_type = NULL;
14802 baton->locexpr.per_cu = cu->per_cu;
14803 baton->locexpr.size = DW_BLOCK (attr)->size;
14804 baton->locexpr.data = DW_BLOCK (attr)->data;
14805 prop->data.baton = baton;
14806 prop->kind = PROP_LOCEXPR;
14807 gdb_assert (prop->data.baton != NULL);
14808 }
14809 else if (attr_form_is_ref (attr))
14810 {
14811 struct dwarf2_cu *target_cu = cu;
14812 struct die_info *target_die;
14813 struct attribute *target_attr;
14814
14815 target_die = follow_die_ref (die, attr, &target_cu);
14816 target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
df25ebbd
JB
14817 if (target_attr == NULL)
14818 target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
14819 target_cu);
80180f79
SA
14820 if (target_attr == NULL)
14821 return 0;
14822
df25ebbd 14823 switch (target_attr->name)
80180f79 14824 {
df25ebbd
JB
14825 case DW_AT_location:
14826 if (attr_form_is_section_offset (target_attr))
14827 {
14828 baton = obstack_alloc (obstack, sizeof (*baton));
14829 baton->referenced_type = die_type (target_die, target_cu);
14830 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
14831 prop->data.baton = baton;
14832 prop->kind = PROP_LOCLIST;
14833 gdb_assert (prop->data.baton != NULL);
14834 }
14835 else if (attr_form_is_block (target_attr))
14836 {
14837 baton = obstack_alloc (obstack, sizeof (*baton));
14838 baton->referenced_type = die_type (target_die, target_cu);
14839 baton->locexpr.per_cu = cu->per_cu;
14840 baton->locexpr.size = DW_BLOCK (target_attr)->size;
14841 baton->locexpr.data = DW_BLOCK (target_attr)->data;
14842 prop->data.baton = baton;
14843 prop->kind = PROP_LOCEXPR;
14844 gdb_assert (prop->data.baton != NULL);
14845 }
14846 else
14847 {
14848 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
14849 "dynamic property");
14850 return 0;
14851 }
14852 break;
14853 case DW_AT_data_member_location:
14854 {
14855 LONGEST offset;
14856
14857 if (!handle_data_member_location (target_die, target_cu,
14858 &offset))
14859 return 0;
14860
14861 baton = obstack_alloc (obstack, sizeof (*baton));
6ad395a7
JB
14862 baton->referenced_type = read_type_die (target_die->parent,
14863 target_cu);
df25ebbd
JB
14864 baton->offset_info.offset = offset;
14865 baton->offset_info.type = die_type (target_die, target_cu);
14866 prop->data.baton = baton;
14867 prop->kind = PROP_ADDR_OFFSET;
14868 break;
14869 }
80180f79
SA
14870 }
14871 }
14872 else if (attr_form_is_constant (attr))
14873 {
14874 prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
14875 prop->kind = PROP_CONST;
14876 }
14877 else
14878 {
14879 dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
14880 dwarf2_name (die, cu));
14881 return 0;
14882 }
14883
14884 return 1;
14885}
14886
a02abb62
JB
14887/* Read the given DW_AT_subrange DIE. */
14888
f792889a 14889static struct type *
a02abb62
JB
14890read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
14891{
4c9ad8c2 14892 struct type *base_type, *orig_base_type;
a02abb62
JB
14893 struct type *range_type;
14894 struct attribute *attr;
729efb13 14895 struct dynamic_prop low, high;
4fae6e18 14896 int low_default_is_valid;
c451ebe5 14897 int high_bound_is_count = 0;
15d034d0 14898 const char *name;
43bbcdc2 14899 LONGEST negative_mask;
e77813c8 14900
4c9ad8c2
TT
14901 orig_base_type = die_type (die, cu);
14902 /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
14903 whereas the real type might be. So, we use ORIG_BASE_TYPE when
14904 creating the range type, but we use the result of check_typedef
14905 when examining properties of the type. */
14906 base_type = check_typedef (orig_base_type);
a02abb62 14907
7e314c57
JK
14908 /* The die_type call above may have already set the type for this DIE. */
14909 range_type = get_die_type (die, cu);
14910 if (range_type)
14911 return range_type;
14912
729efb13
SA
14913 low.kind = PROP_CONST;
14914 high.kind = PROP_CONST;
14915 high.data.const_val = 0;
14916
4fae6e18
JK
14917 /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
14918 omitting DW_AT_lower_bound. */
14919 switch (cu->language)
6e70227d 14920 {
4fae6e18
JK
14921 case language_c:
14922 case language_cplus:
729efb13 14923 low.data.const_val = 0;
4fae6e18
JK
14924 low_default_is_valid = 1;
14925 break;
14926 case language_fortran:
729efb13 14927 low.data.const_val = 1;
4fae6e18
JK
14928 low_default_is_valid = 1;
14929 break;
14930 case language_d:
14931 case language_java:
14932 case language_objc:
729efb13 14933 low.data.const_val = 0;
4fae6e18
JK
14934 low_default_is_valid = (cu->header.version >= 4);
14935 break;
14936 case language_ada:
14937 case language_m2:
14938 case language_pascal:
729efb13 14939 low.data.const_val = 1;
4fae6e18
JK
14940 low_default_is_valid = (cu->header.version >= 4);
14941 break;
14942 default:
729efb13 14943 low.data.const_val = 0;
4fae6e18
JK
14944 low_default_is_valid = 0;
14945 break;
a02abb62
JB
14946 }
14947
e142c38c 14948 attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
a02abb62 14949 if (attr)
11c1ba78 14950 attr_to_dynamic_prop (attr, die, cu, &low);
4fae6e18
JK
14951 else if (!low_default_is_valid)
14952 complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
14953 "- DIE at 0x%x [in module %s]"),
4262abfb 14954 die->offset.sect_off, objfile_name (cu->objfile));
a02abb62 14955
e142c38c 14956 attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
80180f79 14957 if (!attr_to_dynamic_prop (attr, die, cu, &high))
e77813c8
PM
14958 {
14959 attr = dwarf2_attr (die, DW_AT_count, cu);
c451ebe5 14960 if (attr_to_dynamic_prop (attr, die, cu, &high))
6b662e19 14961 {
c451ebe5
SA
14962 /* If bounds are constant do the final calculation here. */
14963 if (low.kind == PROP_CONST && high.kind == PROP_CONST)
14964 high.data.const_val = low.data.const_val + high.data.const_val - 1;
14965 else
14966 high_bound_is_count = 1;
c2ff108b 14967 }
e77813c8
PM
14968 }
14969
14970 /* Dwarf-2 specifications explicitly allows to create subrange types
14971 without specifying a base type.
14972 In that case, the base type must be set to the type of
14973 the lower bound, upper bound or count, in that order, if any of these
14974 three attributes references an object that has a type.
14975 If no base type is found, the Dwarf-2 specifications say that
14976 a signed integer type of size equal to the size of an address should
14977 be used.
14978 For the following C code: `extern char gdb_int [];'
14979 GCC produces an empty range DIE.
14980 FIXME: muller/2010-05-28: Possible references to object for low bound,
0963b4bd 14981 high bound or count are not yet handled by this code. */
e77813c8
PM
14982 if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
14983 {
14984 struct objfile *objfile = cu->objfile;
14985 struct gdbarch *gdbarch = get_objfile_arch (objfile);
14986 int addr_size = gdbarch_addr_bit (gdbarch) /8;
14987 struct type *int_type = objfile_type (objfile)->builtin_int;
14988
14989 /* Test "int", "long int", and "long long int" objfile types,
14990 and select the first one having a size above or equal to the
14991 architecture address size. */
14992 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14993 base_type = int_type;
14994 else
14995 {
14996 int_type = objfile_type (objfile)->builtin_long;
14997 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14998 base_type = int_type;
14999 else
15000 {
15001 int_type = objfile_type (objfile)->builtin_long_long;
15002 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15003 base_type = int_type;
15004 }
15005 }
15006 }
a02abb62 15007
dbb9c2b1
JB
15008 /* Normally, the DWARF producers are expected to use a signed
15009 constant form (Eg. DW_FORM_sdata) to express negative bounds.
15010 But this is unfortunately not always the case, as witnessed
15011 with GCC, for instance, where the ambiguous DW_FORM_dataN form
15012 is used instead. To work around that ambiguity, we treat
15013 the bounds as signed, and thus sign-extend their values, when
15014 the base type is signed. */
6e70227d 15015 negative_mask =
43bbcdc2 15016 (LONGEST) -1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1);
729efb13
SA
15017 if (low.kind == PROP_CONST
15018 && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
15019 low.data.const_val |= negative_mask;
15020 if (high.kind == PROP_CONST
15021 && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
15022 high.data.const_val |= negative_mask;
43bbcdc2 15023
729efb13 15024 range_type = create_range_type (NULL, orig_base_type, &low, &high);
a02abb62 15025
c451ebe5
SA
15026 if (high_bound_is_count)
15027 TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
15028
c2ff108b
JK
15029 /* Ada expects an empty array on no boundary attributes. */
15030 if (attr == NULL && cu->language != language_ada)
729efb13 15031 TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
c2ff108b 15032
39cbfefa
DJ
15033 name = dwarf2_name (die, cu);
15034 if (name)
15035 TYPE_NAME (range_type) = name;
6e70227d 15036
e142c38c 15037 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
a02abb62
JB
15038 if (attr)
15039 TYPE_LENGTH (range_type) = DW_UNSND (attr);
15040
7e314c57
JK
15041 set_die_type (die, range_type, cu);
15042
15043 /* set_die_type should be already done. */
b4ba55a1
JB
15044 set_descriptive_type (range_type, die, cu);
15045
7e314c57 15046 return range_type;
a02abb62 15047}
6e70227d 15048
f792889a 15049static struct type *
81a17f79
JB
15050read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
15051{
15052 struct type *type;
81a17f79 15053
81a17f79
JB
15054 /* For now, we only support the C meaning of an unspecified type: void. */
15055
0114d602
DJ
15056 type = init_type (TYPE_CODE_VOID, 0, 0, NULL, cu->objfile);
15057 TYPE_NAME (type) = dwarf2_name (die, cu);
81a17f79 15058
f792889a 15059 return set_die_type (die, type, cu);
81a17f79 15060}
a02abb62 15061
639d11d3
DC
15062/* Read a single die and all its descendents. Set the die's sibling
15063 field to NULL; set other fields in the die correctly, and set all
15064 of the descendents' fields correctly. Set *NEW_INFO_PTR to the
15065 location of the info_ptr after reading all of those dies. PARENT
15066 is the parent of the die in question. */
15067
15068static struct die_info *
dee91e82 15069read_die_and_children (const struct die_reader_specs *reader,
d521ce57
TT
15070 const gdb_byte *info_ptr,
15071 const gdb_byte **new_info_ptr,
dee91e82 15072 struct die_info *parent)
639d11d3
DC
15073{
15074 struct die_info *die;
d521ce57 15075 const gdb_byte *cur_ptr;
639d11d3
DC
15076 int has_children;
15077
bf6af496 15078 cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
1d325ec1
DJ
15079 if (die == NULL)
15080 {
15081 *new_info_ptr = cur_ptr;
15082 return NULL;
15083 }
93311388 15084 store_in_ref_table (die, reader->cu);
639d11d3
DC
15085
15086 if (has_children)
bf6af496 15087 die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
639d11d3
DC
15088 else
15089 {
15090 die->child = NULL;
15091 *new_info_ptr = cur_ptr;
15092 }
15093
15094 die->sibling = NULL;
15095 die->parent = parent;
15096 return die;
15097}
15098
15099/* Read a die, all of its descendents, and all of its siblings; set
15100 all of the fields of all of the dies correctly. Arguments are as
15101 in read_die_and_children. */
15102
15103static struct die_info *
bf6af496 15104read_die_and_siblings_1 (const struct die_reader_specs *reader,
d521ce57
TT
15105 const gdb_byte *info_ptr,
15106 const gdb_byte **new_info_ptr,
bf6af496 15107 struct die_info *parent)
639d11d3
DC
15108{
15109 struct die_info *first_die, *last_sibling;
d521ce57 15110 const gdb_byte *cur_ptr;
639d11d3 15111
c906108c 15112 cur_ptr = info_ptr;
639d11d3
DC
15113 first_die = last_sibling = NULL;
15114
15115 while (1)
c906108c 15116 {
639d11d3 15117 struct die_info *die
dee91e82 15118 = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
639d11d3 15119
1d325ec1 15120 if (die == NULL)
c906108c 15121 {
639d11d3
DC
15122 *new_info_ptr = cur_ptr;
15123 return first_die;
c906108c 15124 }
1d325ec1
DJ
15125
15126 if (!first_die)
15127 first_die = die;
c906108c 15128 else
1d325ec1
DJ
15129 last_sibling->sibling = die;
15130
15131 last_sibling = die;
c906108c 15132 }
c906108c
SS
15133}
15134
bf6af496
DE
15135/* Read a die, all of its descendents, and all of its siblings; set
15136 all of the fields of all of the dies correctly. Arguments are as
15137 in read_die_and_children.
15138 This the main entry point for reading a DIE and all its children. */
15139
15140static struct die_info *
15141read_die_and_siblings (const struct die_reader_specs *reader,
d521ce57
TT
15142 const gdb_byte *info_ptr,
15143 const gdb_byte **new_info_ptr,
bf6af496
DE
15144 struct die_info *parent)
15145{
15146 struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
15147 new_info_ptr, parent);
15148
b4f54984 15149 if (dwarf_die_debug)
bf6af496
DE
15150 {
15151 fprintf_unfiltered (gdb_stdlog,
15152 "Read die from %s@0x%x of %s:\n",
a32a8923 15153 get_section_name (reader->die_section),
bf6af496
DE
15154 (unsigned) (info_ptr - reader->die_section->buffer),
15155 bfd_get_filename (reader->abfd));
b4f54984 15156 dump_die (die, dwarf_die_debug);
bf6af496
DE
15157 }
15158
15159 return die;
15160}
15161
3019eac3
DE
15162/* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
15163 attributes.
15164 The caller is responsible for filling in the extra attributes
15165 and updating (*DIEP)->num_attrs.
15166 Set DIEP to point to a newly allocated die with its information,
15167 except for its child, sibling, and parent fields.
15168 Set HAS_CHILDREN to tell whether the die has children or not. */
93311388 15169
d521ce57 15170static const gdb_byte *
3019eac3 15171read_full_die_1 (const struct die_reader_specs *reader,
d521ce57 15172 struct die_info **diep, const gdb_byte *info_ptr,
3019eac3 15173 int *has_children, int num_extra_attrs)
93311388 15174{
b64f50a1
JK
15175 unsigned int abbrev_number, bytes_read, i;
15176 sect_offset offset;
93311388
DE
15177 struct abbrev_info *abbrev;
15178 struct die_info *die;
15179 struct dwarf2_cu *cu = reader->cu;
15180 bfd *abfd = reader->abfd;
15181
b64f50a1 15182 offset.sect_off = info_ptr - reader->buffer;
93311388
DE
15183 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15184 info_ptr += bytes_read;
15185 if (!abbrev_number)
15186 {
15187 *diep = NULL;
15188 *has_children = 0;
15189 return info_ptr;
15190 }
15191
433df2d4 15192 abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
93311388 15193 if (!abbrev)
348e048f
DE
15194 error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
15195 abbrev_number,
15196 bfd_get_filename (abfd));
15197
3019eac3 15198 die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
93311388
DE
15199 die->offset = offset;
15200 die->tag = abbrev->tag;
15201 die->abbrev = abbrev_number;
15202
3019eac3
DE
15203 /* Make the result usable.
15204 The caller needs to update num_attrs after adding the extra
15205 attributes. */
93311388
DE
15206 die->num_attrs = abbrev->num_attrs;
15207
15208 for (i = 0; i < abbrev->num_attrs; ++i)
dee91e82
DE
15209 info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
15210 info_ptr);
93311388
DE
15211
15212 *diep = die;
15213 *has_children = abbrev->has_children;
15214 return info_ptr;
15215}
15216
3019eac3
DE
15217/* Read a die and all its attributes.
15218 Set DIEP to point to a newly allocated die with its information,
15219 except for its child, sibling, and parent fields.
15220 Set HAS_CHILDREN to tell whether the die has children or not. */
15221
d521ce57 15222static const gdb_byte *
3019eac3 15223read_full_die (const struct die_reader_specs *reader,
d521ce57 15224 struct die_info **diep, const gdb_byte *info_ptr,
3019eac3
DE
15225 int *has_children)
15226{
d521ce57 15227 const gdb_byte *result;
bf6af496
DE
15228
15229 result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
15230
b4f54984 15231 if (dwarf_die_debug)
bf6af496
DE
15232 {
15233 fprintf_unfiltered (gdb_stdlog,
15234 "Read die from %s@0x%x of %s:\n",
a32a8923 15235 get_section_name (reader->die_section),
bf6af496
DE
15236 (unsigned) (info_ptr - reader->die_section->buffer),
15237 bfd_get_filename (reader->abfd));
b4f54984 15238 dump_die (*diep, dwarf_die_debug);
bf6af496
DE
15239 }
15240
15241 return result;
3019eac3 15242}
433df2d4
DE
15243\f
15244/* Abbreviation tables.
3019eac3 15245
433df2d4 15246 In DWARF version 2, the description of the debugging information is
c906108c
SS
15247 stored in a separate .debug_abbrev section. Before we read any
15248 dies from a section we read in all abbreviations and install them
433df2d4
DE
15249 in a hash table. */
15250
15251/* Allocate space for a struct abbrev_info object in ABBREV_TABLE. */
15252
15253static struct abbrev_info *
15254abbrev_table_alloc_abbrev (struct abbrev_table *abbrev_table)
15255{
15256 struct abbrev_info *abbrev;
15257
15258 abbrev = (struct abbrev_info *)
15259 obstack_alloc (&abbrev_table->abbrev_obstack, sizeof (struct abbrev_info));
15260 memset (abbrev, 0, sizeof (struct abbrev_info));
15261 return abbrev;
15262}
15263
15264/* Add an abbreviation to the table. */
c906108c
SS
15265
15266static void
433df2d4
DE
15267abbrev_table_add_abbrev (struct abbrev_table *abbrev_table,
15268 unsigned int abbrev_number,
15269 struct abbrev_info *abbrev)
15270{
15271 unsigned int hash_number;
15272
15273 hash_number = abbrev_number % ABBREV_HASH_SIZE;
15274 abbrev->next = abbrev_table->abbrevs[hash_number];
15275 abbrev_table->abbrevs[hash_number] = abbrev;
15276}
dee91e82 15277
433df2d4
DE
15278/* Look up an abbrev in the table.
15279 Returns NULL if the abbrev is not found. */
15280
15281static struct abbrev_info *
15282abbrev_table_lookup_abbrev (const struct abbrev_table *abbrev_table,
15283 unsigned int abbrev_number)
c906108c 15284{
433df2d4
DE
15285 unsigned int hash_number;
15286 struct abbrev_info *abbrev;
15287
15288 hash_number = abbrev_number % ABBREV_HASH_SIZE;
15289 abbrev = abbrev_table->abbrevs[hash_number];
15290
15291 while (abbrev)
15292 {
15293 if (abbrev->number == abbrev_number)
15294 return abbrev;
15295 abbrev = abbrev->next;
15296 }
15297 return NULL;
15298}
15299
15300/* Read in an abbrev table. */
15301
15302static struct abbrev_table *
15303abbrev_table_read_table (struct dwarf2_section_info *section,
15304 sect_offset offset)
15305{
15306 struct objfile *objfile = dwarf2_per_objfile->objfile;
a32a8923 15307 bfd *abfd = get_section_bfd_owner (section);
433df2d4 15308 struct abbrev_table *abbrev_table;
d521ce57 15309 const gdb_byte *abbrev_ptr;
c906108c
SS
15310 struct abbrev_info *cur_abbrev;
15311 unsigned int abbrev_number, bytes_read, abbrev_name;
433df2d4 15312 unsigned int abbrev_form;
f3dd6933
DJ
15313 struct attr_abbrev *cur_attrs;
15314 unsigned int allocated_attrs;
c906108c 15315
70ba0933 15316 abbrev_table = XNEW (struct abbrev_table);
f4dc4d17 15317 abbrev_table->offset = offset;
433df2d4
DE
15318 obstack_init (&abbrev_table->abbrev_obstack);
15319 abbrev_table->abbrevs = obstack_alloc (&abbrev_table->abbrev_obstack,
15320 (ABBREV_HASH_SIZE
15321 * sizeof (struct abbrev_info *)));
15322 memset (abbrev_table->abbrevs, 0,
15323 ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
c906108c 15324
433df2d4
DE
15325 dwarf2_read_section (objfile, section);
15326 abbrev_ptr = section->buffer + offset.sect_off;
c906108c
SS
15327 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15328 abbrev_ptr += bytes_read;
15329
f3dd6933
DJ
15330 allocated_attrs = ATTR_ALLOC_CHUNK;
15331 cur_attrs = xmalloc (allocated_attrs * sizeof (struct attr_abbrev));
6e70227d 15332
0963b4bd 15333 /* Loop until we reach an abbrev number of 0. */
c906108c
SS
15334 while (abbrev_number)
15335 {
433df2d4 15336 cur_abbrev = abbrev_table_alloc_abbrev (abbrev_table);
c906108c
SS
15337
15338 /* read in abbrev header */
15339 cur_abbrev->number = abbrev_number;
15340 cur_abbrev->tag = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15341 abbrev_ptr += bytes_read;
15342 cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
15343 abbrev_ptr += 1;
15344
15345 /* now read in declarations */
15346 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15347 abbrev_ptr += bytes_read;
15348 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15349 abbrev_ptr += bytes_read;
15350 while (abbrev_name)
15351 {
f3dd6933 15352 if (cur_abbrev->num_attrs == allocated_attrs)
c906108c 15353 {
f3dd6933
DJ
15354 allocated_attrs += ATTR_ALLOC_CHUNK;
15355 cur_attrs
15356 = xrealloc (cur_attrs, (allocated_attrs
15357 * sizeof (struct attr_abbrev)));
c906108c 15358 }
ae038cb0 15359
f3dd6933
DJ
15360 cur_attrs[cur_abbrev->num_attrs].name = abbrev_name;
15361 cur_attrs[cur_abbrev->num_attrs++].form = abbrev_form;
c906108c
SS
15362 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15363 abbrev_ptr += bytes_read;
15364 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15365 abbrev_ptr += bytes_read;
15366 }
15367
433df2d4 15368 cur_abbrev->attrs = obstack_alloc (&abbrev_table->abbrev_obstack,
f3dd6933
DJ
15369 (cur_abbrev->num_attrs
15370 * sizeof (struct attr_abbrev)));
15371 memcpy (cur_abbrev->attrs, cur_attrs,
15372 cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
15373
433df2d4 15374 abbrev_table_add_abbrev (abbrev_table, abbrev_number, cur_abbrev);
c906108c
SS
15375
15376 /* Get next abbreviation.
15377 Under Irix6 the abbreviations for a compilation unit are not
c5aa993b
JM
15378 always properly terminated with an abbrev number of 0.
15379 Exit loop if we encounter an abbreviation which we have
15380 already read (which means we are about to read the abbreviations
15381 for the next compile unit) or if the end of the abbreviation
15382 table is reached. */
433df2d4 15383 if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
c906108c
SS
15384 break;
15385 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15386 abbrev_ptr += bytes_read;
433df2d4 15387 if (abbrev_table_lookup_abbrev (abbrev_table, abbrev_number) != NULL)
c906108c
SS
15388 break;
15389 }
f3dd6933
DJ
15390
15391 xfree (cur_attrs);
433df2d4 15392 return abbrev_table;
c906108c
SS
15393}
15394
433df2d4 15395/* Free the resources held by ABBREV_TABLE. */
c906108c 15396
c906108c 15397static void
433df2d4 15398abbrev_table_free (struct abbrev_table *abbrev_table)
c906108c 15399{
433df2d4
DE
15400 obstack_free (&abbrev_table->abbrev_obstack, NULL);
15401 xfree (abbrev_table);
c906108c
SS
15402}
15403
f4dc4d17
DE
15404/* Same as abbrev_table_free but as a cleanup.
15405 We pass in a pointer to the pointer to the table so that we can
15406 set the pointer to NULL when we're done. It also simplifies
73051182 15407 build_type_psymtabs_1. */
f4dc4d17
DE
15408
15409static void
15410abbrev_table_free_cleanup (void *table_ptr)
15411{
15412 struct abbrev_table **abbrev_table_ptr = table_ptr;
15413
15414 if (*abbrev_table_ptr != NULL)
15415 abbrev_table_free (*abbrev_table_ptr);
15416 *abbrev_table_ptr = NULL;
15417}
15418
433df2d4
DE
15419/* Read the abbrev table for CU from ABBREV_SECTION. */
15420
15421static void
15422dwarf2_read_abbrevs (struct dwarf2_cu *cu,
15423 struct dwarf2_section_info *abbrev_section)
c906108c 15424{
433df2d4
DE
15425 cu->abbrev_table =
15426 abbrev_table_read_table (abbrev_section, cu->header.abbrev_offset);
15427}
c906108c 15428
433df2d4 15429/* Release the memory used by the abbrev table for a compilation unit. */
c906108c 15430
433df2d4
DE
15431static void
15432dwarf2_free_abbrev_table (void *ptr_to_cu)
15433{
15434 struct dwarf2_cu *cu = ptr_to_cu;
c906108c 15435
a2ce51a0
DE
15436 if (cu->abbrev_table != NULL)
15437 abbrev_table_free (cu->abbrev_table);
433df2d4
DE
15438 /* Set this to NULL so that we SEGV if we try to read it later,
15439 and also because free_comp_unit verifies this is NULL. */
15440 cu->abbrev_table = NULL;
15441}
15442\f
72bf9492
DJ
15443/* Returns nonzero if TAG represents a type that we might generate a partial
15444 symbol for. */
15445
15446static int
15447is_type_tag_for_partial (int tag)
15448{
15449 switch (tag)
15450 {
15451#if 0
15452 /* Some types that would be reasonable to generate partial symbols for,
15453 that we don't at present. */
15454 case DW_TAG_array_type:
15455 case DW_TAG_file_type:
15456 case DW_TAG_ptr_to_member_type:
15457 case DW_TAG_set_type:
15458 case DW_TAG_string_type:
15459 case DW_TAG_subroutine_type:
15460#endif
15461 case DW_TAG_base_type:
15462 case DW_TAG_class_type:
680b30c7 15463 case DW_TAG_interface_type:
72bf9492
DJ
15464 case DW_TAG_enumeration_type:
15465 case DW_TAG_structure_type:
15466 case DW_TAG_subrange_type:
15467 case DW_TAG_typedef:
15468 case DW_TAG_union_type:
15469 return 1;
15470 default:
15471 return 0;
15472 }
15473}
15474
15475/* Load all DIEs that are interesting for partial symbols into memory. */
15476
15477static struct partial_die_info *
dee91e82 15478load_partial_dies (const struct die_reader_specs *reader,
d521ce57 15479 const gdb_byte *info_ptr, int building_psymtab)
72bf9492 15480{
dee91e82 15481 struct dwarf2_cu *cu = reader->cu;
bb5ed363 15482 struct objfile *objfile = cu->objfile;
72bf9492
DJ
15483 struct partial_die_info *part_die;
15484 struct partial_die_info *parent_die, *last_die, *first_die = NULL;
15485 struct abbrev_info *abbrev;
15486 unsigned int bytes_read;
5afb4e99 15487 unsigned int load_all = 0;
72bf9492
DJ
15488 int nesting_level = 1;
15489
15490 parent_die = NULL;
15491 last_die = NULL;
15492
7adf1e79
DE
15493 gdb_assert (cu->per_cu != NULL);
15494 if (cu->per_cu->load_all_dies)
5afb4e99
DJ
15495 load_all = 1;
15496
72bf9492
DJ
15497 cu->partial_dies
15498 = htab_create_alloc_ex (cu->header.length / 12,
15499 partial_die_hash,
15500 partial_die_eq,
15501 NULL,
15502 &cu->comp_unit_obstack,
15503 hashtab_obstack_allocate,
15504 dummy_obstack_deallocate);
15505
15506 part_die = obstack_alloc (&cu->comp_unit_obstack,
15507 sizeof (struct partial_die_info));
15508
15509 while (1)
15510 {
15511 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
15512
15513 /* A NULL abbrev means the end of a series of children. */
15514 if (abbrev == NULL)
15515 {
15516 if (--nesting_level == 0)
15517 {
15518 /* PART_DIE was probably the last thing allocated on the
15519 comp_unit_obstack, so we could call obstack_free
15520 here. We don't do that because the waste is small,
15521 and will be cleaned up when we're done with this
15522 compilation unit. This way, we're also more robust
15523 against other users of the comp_unit_obstack. */
15524 return first_die;
15525 }
15526 info_ptr += bytes_read;
15527 last_die = parent_die;
15528 parent_die = parent_die->die_parent;
15529 continue;
15530 }
15531
98bfdba5
PA
15532 /* Check for template arguments. We never save these; if
15533 they're seen, we just mark the parent, and go on our way. */
15534 if (parent_die != NULL
15535 && cu->language == language_cplus
15536 && (abbrev->tag == DW_TAG_template_type_param
15537 || abbrev->tag == DW_TAG_template_value_param))
15538 {
15539 parent_die->has_template_arguments = 1;
15540
15541 if (!load_all)
15542 {
15543 /* We don't need a partial DIE for the template argument. */
dee91e82 15544 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
98bfdba5
PA
15545 continue;
15546 }
15547 }
15548
0d99eb77 15549 /* We only recurse into c++ subprograms looking for template arguments.
98bfdba5
PA
15550 Skip their other children. */
15551 if (!load_all
15552 && cu->language == language_cplus
15553 && parent_die != NULL
15554 && parent_die->tag == DW_TAG_subprogram)
15555 {
dee91e82 15556 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
98bfdba5
PA
15557 continue;
15558 }
15559
5afb4e99
DJ
15560 /* Check whether this DIE is interesting enough to save. Normally
15561 we would not be interested in members here, but there may be
15562 later variables referencing them via DW_AT_specification (for
15563 static members). */
15564 if (!load_all
15565 && !is_type_tag_for_partial (abbrev->tag)
72929c62 15566 && abbrev->tag != DW_TAG_constant
72bf9492
DJ
15567 && abbrev->tag != DW_TAG_enumerator
15568 && abbrev->tag != DW_TAG_subprogram
bc30ff58 15569 && abbrev->tag != DW_TAG_lexical_block
72bf9492 15570 && abbrev->tag != DW_TAG_variable
5afb4e99 15571 && abbrev->tag != DW_TAG_namespace
f55ee35c 15572 && abbrev->tag != DW_TAG_module
95554aad 15573 && abbrev->tag != DW_TAG_member
74921315
KS
15574 && abbrev->tag != DW_TAG_imported_unit
15575 && abbrev->tag != DW_TAG_imported_declaration)
72bf9492
DJ
15576 {
15577 /* Otherwise we skip to the next sibling, if any. */
dee91e82 15578 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
72bf9492
DJ
15579 continue;
15580 }
15581
dee91e82
DE
15582 info_ptr = read_partial_die (reader, part_die, abbrev, bytes_read,
15583 info_ptr);
72bf9492
DJ
15584
15585 /* This two-pass algorithm for processing partial symbols has a
15586 high cost in cache pressure. Thus, handle some simple cases
15587 here which cover the majority of C partial symbols. DIEs
15588 which neither have specification tags in them, nor could have
15589 specification tags elsewhere pointing at them, can simply be
15590 processed and discarded.
15591
15592 This segment is also optional; scan_partial_symbols and
15593 add_partial_symbol will handle these DIEs if we chain
15594 them in normally. When compilers which do not emit large
15595 quantities of duplicate debug information are more common,
15596 this code can probably be removed. */
15597
15598 /* Any complete simple types at the top level (pretty much all
15599 of them, for a language without namespaces), can be processed
15600 directly. */
15601 if (parent_die == NULL
15602 && part_die->has_specification == 0
15603 && part_die->is_declaration == 0
d8228535 15604 && ((part_die->tag == DW_TAG_typedef && !part_die->has_children)
72bf9492
DJ
15605 || part_die->tag == DW_TAG_base_type
15606 || part_die->tag == DW_TAG_subrange_type))
15607 {
15608 if (building_psymtab && part_die->name != NULL)
04a679b8 15609 add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
72bf9492 15610 VAR_DOMAIN, LOC_TYPEDEF,
bb5ed363
DE
15611 &objfile->static_psymbols,
15612 0, (CORE_ADDR) 0, cu->language, objfile);
dee91e82 15613 info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
72bf9492
DJ
15614 continue;
15615 }
15616
d8228535
JK
15617 /* The exception for DW_TAG_typedef with has_children above is
15618 a workaround of GCC PR debug/47510. In the case of this complaint
15619 type_name_no_tag_or_error will error on such types later.
15620
15621 GDB skipped children of DW_TAG_typedef by the shortcut above and then
15622 it could not find the child DIEs referenced later, this is checked
15623 above. In correct DWARF DW_TAG_typedef should have no children. */
15624
15625 if (part_die->tag == DW_TAG_typedef && part_die->has_children)
15626 complaint (&symfile_complaints,
15627 _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
15628 "- DIE at 0x%x [in module %s]"),
4262abfb 15629 part_die->offset.sect_off, objfile_name (objfile));
d8228535 15630
72bf9492
DJ
15631 /* If we're at the second level, and we're an enumerator, and
15632 our parent has no specification (meaning possibly lives in a
15633 namespace elsewhere), then we can add the partial symbol now
15634 instead of queueing it. */
15635 if (part_die->tag == DW_TAG_enumerator
15636 && parent_die != NULL
15637 && parent_die->die_parent == NULL
15638 && parent_die->tag == DW_TAG_enumeration_type
15639 && parent_die->has_specification == 0)
15640 {
15641 if (part_die->name == NULL)
3e43a32a
MS
15642 complaint (&symfile_complaints,
15643 _("malformed enumerator DIE ignored"));
72bf9492 15644 else if (building_psymtab)
04a679b8 15645 add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
72bf9492 15646 VAR_DOMAIN, LOC_CONST,
987504bb
JJ
15647 (cu->language == language_cplus
15648 || cu->language == language_java)
bb5ed363
DE
15649 ? &objfile->global_psymbols
15650 : &objfile->static_psymbols,
15651 0, (CORE_ADDR) 0, cu->language, objfile);
72bf9492 15652
dee91e82 15653 info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
72bf9492
DJ
15654 continue;
15655 }
15656
15657 /* We'll save this DIE so link it in. */
15658 part_die->die_parent = parent_die;
15659 part_die->die_sibling = NULL;
15660 part_die->die_child = NULL;
15661
15662 if (last_die && last_die == parent_die)
15663 last_die->die_child = part_die;
15664 else if (last_die)
15665 last_die->die_sibling = part_die;
15666
15667 last_die = part_die;
15668
15669 if (first_die == NULL)
15670 first_die = part_die;
15671
15672 /* Maybe add the DIE to the hash table. Not all DIEs that we
15673 find interesting need to be in the hash table, because we
15674 also have the parent/sibling/child chains; only those that we
15675 might refer to by offset later during partial symbol reading.
15676
15677 For now this means things that might have be the target of a
15678 DW_AT_specification, DW_AT_abstract_origin, or
15679 DW_AT_extension. DW_AT_extension will refer only to
15680 namespaces; DW_AT_abstract_origin refers to functions (and
15681 many things under the function DIE, but we do not recurse
15682 into function DIEs during partial symbol reading) and
15683 possibly variables as well; DW_AT_specification refers to
15684 declarations. Declarations ought to have the DW_AT_declaration
15685 flag. It happens that GCC forgets to put it in sometimes, but
15686 only for functions, not for types.
15687
15688 Adding more things than necessary to the hash table is harmless
15689 except for the performance cost. Adding too few will result in
5afb4e99
DJ
15690 wasted time in find_partial_die, when we reread the compilation
15691 unit with load_all_dies set. */
72bf9492 15692
5afb4e99 15693 if (load_all
72929c62 15694 || abbrev->tag == DW_TAG_constant
5afb4e99 15695 || abbrev->tag == DW_TAG_subprogram
72bf9492
DJ
15696 || abbrev->tag == DW_TAG_variable
15697 || abbrev->tag == DW_TAG_namespace
15698 || part_die->is_declaration)
15699 {
15700 void **slot;
15701
15702 slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
b64f50a1 15703 part_die->offset.sect_off, INSERT);
72bf9492
DJ
15704 *slot = part_die;
15705 }
15706
15707 part_die = obstack_alloc (&cu->comp_unit_obstack,
15708 sizeof (struct partial_die_info));
15709
15710 /* For some DIEs we want to follow their children (if any). For C
bc30ff58 15711 we have no reason to follow the children of structures; for other
98bfdba5
PA
15712 languages we have to, so that we can get at method physnames
15713 to infer fully qualified class names, for DW_AT_specification,
15714 and for C++ template arguments. For C++, we also look one level
15715 inside functions to find template arguments (if the name of the
15716 function does not already contain the template arguments).
bc30ff58
JB
15717
15718 For Ada, we need to scan the children of subprograms and lexical
15719 blocks as well because Ada allows the definition of nested
15720 entities that could be interesting for the debugger, such as
15721 nested subprograms for instance. */
72bf9492 15722 if (last_die->has_children
5afb4e99
DJ
15723 && (load_all
15724 || last_die->tag == DW_TAG_namespace
f55ee35c 15725 || last_die->tag == DW_TAG_module
72bf9492 15726 || last_die->tag == DW_TAG_enumeration_type
98bfdba5
PA
15727 || (cu->language == language_cplus
15728 && last_die->tag == DW_TAG_subprogram
15729 && (last_die->name == NULL
15730 || strchr (last_die->name, '<') == NULL))
72bf9492
DJ
15731 || (cu->language != language_c
15732 && (last_die->tag == DW_TAG_class_type
680b30c7 15733 || last_die->tag == DW_TAG_interface_type
72bf9492 15734 || last_die->tag == DW_TAG_structure_type
bc30ff58
JB
15735 || last_die->tag == DW_TAG_union_type))
15736 || (cu->language == language_ada
15737 && (last_die->tag == DW_TAG_subprogram
15738 || last_die->tag == DW_TAG_lexical_block))))
72bf9492
DJ
15739 {
15740 nesting_level++;
15741 parent_die = last_die;
15742 continue;
15743 }
15744
15745 /* Otherwise we skip to the next sibling, if any. */
dee91e82 15746 info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
72bf9492
DJ
15747
15748 /* Back to the top, do it again. */
15749 }
15750}
15751
c906108c
SS
15752/* Read a minimal amount of information into the minimal die structure. */
15753
d521ce57 15754static const gdb_byte *
dee91e82
DE
15755read_partial_die (const struct die_reader_specs *reader,
15756 struct partial_die_info *part_die,
15757 struct abbrev_info *abbrev, unsigned int abbrev_len,
d521ce57 15758 const gdb_byte *info_ptr)
c906108c 15759{
dee91e82 15760 struct dwarf2_cu *cu = reader->cu;
bb5ed363 15761 struct objfile *objfile = cu->objfile;
d521ce57 15762 const gdb_byte *buffer = reader->buffer;
fa238c03 15763 unsigned int i;
c906108c 15764 struct attribute attr;
c5aa993b 15765 int has_low_pc_attr = 0;
c906108c 15766 int has_high_pc_attr = 0;
91da1414 15767 int high_pc_relative = 0;
c906108c 15768
72bf9492 15769 memset (part_die, 0, sizeof (struct partial_die_info));
c906108c 15770
b64f50a1 15771 part_die->offset.sect_off = info_ptr - buffer;
72bf9492
DJ
15772
15773 info_ptr += abbrev_len;
15774
15775 if (abbrev == NULL)
15776 return info_ptr;
15777
c906108c
SS
15778 part_die->tag = abbrev->tag;
15779 part_die->has_children = abbrev->has_children;
c906108c
SS
15780
15781 for (i = 0; i < abbrev->num_attrs; ++i)
15782 {
dee91e82 15783 info_ptr = read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
c906108c
SS
15784
15785 /* Store the data if it is of an attribute we want to keep in a
c5aa993b 15786 partial symbol table. */
c906108c
SS
15787 switch (attr.name)
15788 {
15789 case DW_AT_name:
71c25dea
TT
15790 switch (part_die->tag)
15791 {
15792 case DW_TAG_compile_unit:
95554aad 15793 case DW_TAG_partial_unit:
348e048f 15794 case DW_TAG_type_unit:
71c25dea
TT
15795 /* Compilation units have a DW_AT_name that is a filename, not
15796 a source language identifier. */
15797 case DW_TAG_enumeration_type:
15798 case DW_TAG_enumerator:
15799 /* These tags always have simple identifiers already; no need
15800 to canonicalize them. */
15801 part_die->name = DW_STRING (&attr);
15802 break;
15803 default:
15804 part_die->name
15805 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
34a68019 15806 &objfile->per_bfd->storage_obstack);
71c25dea
TT
15807 break;
15808 }
c906108c 15809 break;
31ef98ae 15810 case DW_AT_linkage_name:
c906108c 15811 case DW_AT_MIPS_linkage_name:
31ef98ae
TT
15812 /* Note that both forms of linkage name might appear. We
15813 assume they will be the same, and we only store the last
15814 one we see. */
94af9270
KS
15815 if (cu->language == language_ada)
15816 part_die->name = DW_STRING (&attr);
abc72ce4 15817 part_die->linkage_name = DW_STRING (&attr);
c906108c
SS
15818 break;
15819 case DW_AT_low_pc:
15820 has_low_pc_attr = 1;
31aa7e4e 15821 part_die->lowpc = attr_value_as_address (&attr);
c906108c
SS
15822 break;
15823 case DW_AT_high_pc:
15824 has_high_pc_attr = 1;
31aa7e4e
JB
15825 part_die->highpc = attr_value_as_address (&attr);
15826 if (cu->header.version >= 4 && attr_form_is_constant (&attr))
15827 high_pc_relative = 1;
c906108c
SS
15828 break;
15829 case DW_AT_location:
0963b4bd 15830 /* Support the .debug_loc offsets. */
8e19ed76
PS
15831 if (attr_form_is_block (&attr))
15832 {
95554aad 15833 part_die->d.locdesc = DW_BLOCK (&attr);
8e19ed76 15834 }
3690dd37 15835 else if (attr_form_is_section_offset (&attr))
8e19ed76 15836 {
4d3c2250 15837 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
15838 }
15839 else
15840 {
4d3c2250
KB
15841 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
15842 "partial symbol information");
8e19ed76 15843 }
c906108c 15844 break;
c906108c
SS
15845 case DW_AT_external:
15846 part_die->is_external = DW_UNSND (&attr);
15847 break;
15848 case DW_AT_declaration:
15849 part_die->is_declaration = DW_UNSND (&attr);
15850 break;
15851 case DW_AT_type:
15852 part_die->has_type = 1;
15853 break;
15854 case DW_AT_abstract_origin:
15855 case DW_AT_specification:
72bf9492
DJ
15856 case DW_AT_extension:
15857 part_die->has_specification = 1;
c764a876 15858 part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
36586728
TT
15859 part_die->spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15860 || cu->per_cu->is_dwz);
c906108c
SS
15861 break;
15862 case DW_AT_sibling:
15863 /* Ignore absolute siblings, they might point outside of
15864 the current compile unit. */
15865 if (attr.form == DW_FORM_ref_addr)
3e43a32a
MS
15866 complaint (&symfile_complaints,
15867 _("ignoring absolute DW_AT_sibling"));
c906108c 15868 else
b9502d3f
WN
15869 {
15870 unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
15871 const gdb_byte *sibling_ptr = buffer + off;
15872
15873 if (sibling_ptr < info_ptr)
15874 complaint (&symfile_complaints,
15875 _("DW_AT_sibling points backwards"));
22869d73
KS
15876 else if (sibling_ptr > reader->buffer_end)
15877 dwarf2_section_buffer_overflow_complaint (reader->die_section);
b9502d3f
WN
15878 else
15879 part_die->sibling = sibling_ptr;
15880 }
c906108c 15881 break;
fa4028e9
JB
15882 case DW_AT_byte_size:
15883 part_die->has_byte_size = 1;
15884 break;
ff908ebf
AW
15885 case DW_AT_const_value:
15886 part_die->has_const_value = 1;
15887 break;
68511cec
CES
15888 case DW_AT_calling_convention:
15889 /* DWARF doesn't provide a way to identify a program's source-level
15890 entry point. DW_AT_calling_convention attributes are only meant
15891 to describe functions' calling conventions.
15892
15893 However, because it's a necessary piece of information in
15894 Fortran, and because DW_CC_program is the only piece of debugging
15895 information whose definition refers to a 'main program' at all,
15896 several compilers have begun marking Fortran main programs with
15897 DW_CC_program --- even when those functions use the standard
15898 calling conventions.
15899
15900 So until DWARF specifies a way to provide this information and
15901 compilers pick up the new representation, we'll support this
15902 practice. */
15903 if (DW_UNSND (&attr) == DW_CC_program
15904 && cu->language == language_fortran)
3d548a53 15905 set_objfile_main_name (objfile, part_die->name, language_fortran);
68511cec 15906 break;
481860b3
GB
15907 case DW_AT_inline:
15908 if (DW_UNSND (&attr) == DW_INL_inlined
15909 || DW_UNSND (&attr) == DW_INL_declared_inlined)
15910 part_die->may_be_inlined = 1;
15911 break;
95554aad
TT
15912
15913 case DW_AT_import:
15914 if (part_die->tag == DW_TAG_imported_unit)
36586728
TT
15915 {
15916 part_die->d.offset = dwarf2_get_ref_die_offset (&attr);
15917 part_die->is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15918 || cu->per_cu->is_dwz);
15919 }
95554aad
TT
15920 break;
15921
c906108c
SS
15922 default:
15923 break;
15924 }
15925 }
15926
91da1414
MW
15927 if (high_pc_relative)
15928 part_die->highpc += part_die->lowpc;
15929
9373cf26
JK
15930 if (has_low_pc_attr && has_high_pc_attr)
15931 {
15932 /* When using the GNU linker, .gnu.linkonce. sections are used to
15933 eliminate duplicate copies of functions and vtables and such.
15934 The linker will arbitrarily choose one and discard the others.
15935 The AT_*_pc values for such functions refer to local labels in
15936 these sections. If the section from that file was discarded, the
15937 labels are not in the output, so the relocs get a value of 0.
15938 If this is a discarded function, mark the pc bounds as invalid,
15939 so that GDB will ignore it. */
15940 if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
15941 {
bb5ed363 15942 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9373cf26
JK
15943
15944 complaint (&symfile_complaints,
15945 _("DW_AT_low_pc %s is zero "
15946 "for DIE at 0x%x [in module %s]"),
15947 paddress (gdbarch, part_die->lowpc),
4262abfb 15948 part_die->offset.sect_off, objfile_name (objfile));
9373cf26
JK
15949 }
15950 /* dwarf2_get_pc_bounds has also the strict low < high requirement. */
15951 else if (part_die->lowpc >= part_die->highpc)
15952 {
bb5ed363 15953 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9373cf26
JK
15954
15955 complaint (&symfile_complaints,
15956 _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
15957 "for DIE at 0x%x [in module %s]"),
15958 paddress (gdbarch, part_die->lowpc),
15959 paddress (gdbarch, part_die->highpc),
4262abfb 15960 part_die->offset.sect_off, objfile_name (objfile));
9373cf26
JK
15961 }
15962 else
15963 part_die->has_pc_info = 1;
15964 }
85cbf3d3 15965
c906108c
SS
15966 return info_ptr;
15967}
15968
72bf9492
DJ
15969/* Find a cached partial DIE at OFFSET in CU. */
15970
15971static struct partial_die_info *
b64f50a1 15972find_partial_die_in_comp_unit (sect_offset offset, struct dwarf2_cu *cu)
72bf9492
DJ
15973{
15974 struct partial_die_info *lookup_die = NULL;
15975 struct partial_die_info part_die;
15976
15977 part_die.offset = offset;
b64f50a1
JK
15978 lookup_die = htab_find_with_hash (cu->partial_dies, &part_die,
15979 offset.sect_off);
72bf9492 15980
72bf9492
DJ
15981 return lookup_die;
15982}
15983
348e048f
DE
15984/* Find a partial DIE at OFFSET, which may or may not be in CU,
15985 except in the case of .debug_types DIEs which do not reference
15986 outside their CU (they do however referencing other types via
55f1336d 15987 DW_FORM_ref_sig8). */
72bf9492
DJ
15988
15989static struct partial_die_info *
36586728 15990find_partial_die (sect_offset offset, int offset_in_dwz, struct dwarf2_cu *cu)
72bf9492 15991{
bb5ed363 15992 struct objfile *objfile = cu->objfile;
5afb4e99
DJ
15993 struct dwarf2_per_cu_data *per_cu = NULL;
15994 struct partial_die_info *pd = NULL;
72bf9492 15995
36586728
TT
15996 if (offset_in_dwz == cu->per_cu->is_dwz
15997 && offset_in_cu_p (&cu->header, offset))
5afb4e99
DJ
15998 {
15999 pd = find_partial_die_in_comp_unit (offset, cu);
16000 if (pd != NULL)
16001 return pd;
0d99eb77
DE
16002 /* We missed recording what we needed.
16003 Load all dies and try again. */
16004 per_cu = cu->per_cu;
5afb4e99 16005 }
0d99eb77
DE
16006 else
16007 {
16008 /* TUs don't reference other CUs/TUs (except via type signatures). */
3019eac3 16009 if (cu->per_cu->is_debug_types)
0d99eb77
DE
16010 {
16011 error (_("Dwarf Error: Type Unit at offset 0x%lx contains"
16012 " external reference to offset 0x%lx [in module %s].\n"),
16013 (long) cu->header.offset.sect_off, (long) offset.sect_off,
16014 bfd_get_filename (objfile->obfd));
16015 }
36586728
TT
16016 per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
16017 objfile);
72bf9492 16018
0d99eb77
DE
16019 if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
16020 load_partial_comp_unit (per_cu);
ae038cb0 16021
0d99eb77
DE
16022 per_cu->cu->last_used = 0;
16023 pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
16024 }
5afb4e99 16025
dee91e82
DE
16026 /* If we didn't find it, and not all dies have been loaded,
16027 load them all and try again. */
16028
5afb4e99
DJ
16029 if (pd == NULL && per_cu->load_all_dies == 0)
16030 {
5afb4e99 16031 per_cu->load_all_dies = 1;
fd820528
DE
16032
16033 /* This is nasty. When we reread the DIEs, somewhere up the call chain
16034 THIS_CU->cu may already be in use. So we can't just free it and
16035 replace its DIEs with the ones we read in. Instead, we leave those
16036 DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
16037 and clobber THIS_CU->cu->partial_dies with the hash table for the new
16038 set. */
dee91e82 16039 load_partial_comp_unit (per_cu);
5afb4e99
DJ
16040
16041 pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
16042 }
16043
16044 if (pd == NULL)
16045 internal_error (__FILE__, __LINE__,
3e43a32a
MS
16046 _("could not find partial DIE 0x%x "
16047 "in cache [from module %s]\n"),
b64f50a1 16048 offset.sect_off, bfd_get_filename (objfile->obfd));
5afb4e99 16049 return pd;
72bf9492
DJ
16050}
16051
abc72ce4
DE
16052/* See if we can figure out if the class lives in a namespace. We do
16053 this by looking for a member function; its demangled name will
16054 contain namespace info, if there is any. */
16055
16056static void
16057guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
16058 struct dwarf2_cu *cu)
16059{
16060 /* NOTE: carlton/2003-10-07: Getting the info this way changes
16061 what template types look like, because the demangler
16062 frequently doesn't give the same name as the debug info. We
16063 could fix this by only using the demangled name to get the
16064 prefix (but see comment in read_structure_type). */
16065
16066 struct partial_die_info *real_pdi;
16067 struct partial_die_info *child_pdi;
16068
16069 /* If this DIE (this DIE's specification, if any) has a parent, then
16070 we should not do this. We'll prepend the parent's fully qualified
16071 name when we create the partial symbol. */
16072
16073 real_pdi = struct_pdi;
16074 while (real_pdi->has_specification)
36586728
TT
16075 real_pdi = find_partial_die (real_pdi->spec_offset,
16076 real_pdi->spec_is_dwz, cu);
abc72ce4
DE
16077
16078 if (real_pdi->die_parent != NULL)
16079 return;
16080
16081 for (child_pdi = struct_pdi->die_child;
16082 child_pdi != NULL;
16083 child_pdi = child_pdi->die_sibling)
16084 {
16085 if (child_pdi->tag == DW_TAG_subprogram
16086 && child_pdi->linkage_name != NULL)
16087 {
16088 char *actual_class_name
16089 = language_class_name_from_physname (cu->language_defn,
16090 child_pdi->linkage_name);
16091 if (actual_class_name != NULL)
16092 {
16093 struct_pdi->name
34a68019 16094 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb
TT
16095 actual_class_name,
16096 strlen (actual_class_name));
abc72ce4
DE
16097 xfree (actual_class_name);
16098 }
16099 break;
16100 }
16101 }
16102}
16103
72bf9492
DJ
16104/* Adjust PART_DIE before generating a symbol for it. This function
16105 may set the is_external flag or change the DIE's name. */
16106
16107static void
16108fixup_partial_die (struct partial_die_info *part_die,
16109 struct dwarf2_cu *cu)
16110{
abc72ce4
DE
16111 /* Once we've fixed up a die, there's no point in doing so again.
16112 This also avoids a memory leak if we were to call
16113 guess_partial_die_structure_name multiple times. */
16114 if (part_die->fixup_called)
16115 return;
16116
72bf9492
DJ
16117 /* If we found a reference attribute and the DIE has no name, try
16118 to find a name in the referred to DIE. */
16119
16120 if (part_die->name == NULL && part_die->has_specification)
16121 {
16122 struct partial_die_info *spec_die;
72bf9492 16123
36586728
TT
16124 spec_die = find_partial_die (part_die->spec_offset,
16125 part_die->spec_is_dwz, cu);
72bf9492 16126
10b3939b 16127 fixup_partial_die (spec_die, cu);
72bf9492
DJ
16128
16129 if (spec_die->name)
16130 {
16131 part_die->name = spec_die->name;
16132
16133 /* Copy DW_AT_external attribute if it is set. */
16134 if (spec_die->is_external)
16135 part_die->is_external = spec_die->is_external;
16136 }
16137 }
16138
16139 /* Set default names for some unnamed DIEs. */
72bf9492
DJ
16140
16141 if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
2b1dbab0 16142 part_die->name = CP_ANONYMOUS_NAMESPACE_STR;
72bf9492 16143
abc72ce4
DE
16144 /* If there is no parent die to provide a namespace, and there are
16145 children, see if we can determine the namespace from their linkage
122d1940 16146 name. */
abc72ce4 16147 if (cu->language == language_cplus
8b70b953 16148 && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
abc72ce4
DE
16149 && part_die->die_parent == NULL
16150 && part_die->has_children
16151 && (part_die->tag == DW_TAG_class_type
16152 || part_die->tag == DW_TAG_structure_type
16153 || part_die->tag == DW_TAG_union_type))
16154 guess_partial_die_structure_name (part_die, cu);
16155
53832f31
TT
16156 /* GCC might emit a nameless struct or union that has a linkage
16157 name. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
16158 if (part_die->name == NULL
96408a79
SA
16159 && (part_die->tag == DW_TAG_class_type
16160 || part_die->tag == DW_TAG_interface_type
16161 || part_die->tag == DW_TAG_structure_type
16162 || part_die->tag == DW_TAG_union_type)
53832f31
TT
16163 && part_die->linkage_name != NULL)
16164 {
16165 char *demangled;
16166
8de20a37 16167 demangled = gdb_demangle (part_die->linkage_name, DMGL_TYPES);
53832f31
TT
16168 if (demangled)
16169 {
96408a79
SA
16170 const char *base;
16171
16172 /* Strip any leading namespaces/classes, keep only the base name.
16173 DW_AT_name for named DIEs does not contain the prefixes. */
16174 base = strrchr (demangled, ':');
16175 if (base && base > demangled && base[-1] == ':')
16176 base++;
16177 else
16178 base = demangled;
16179
34a68019
TT
16180 part_die->name
16181 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
16182 base, strlen (base));
53832f31
TT
16183 xfree (demangled);
16184 }
16185 }
16186
abc72ce4 16187 part_die->fixup_called = 1;
72bf9492
DJ
16188}
16189
a8329558 16190/* Read an attribute value described by an attribute form. */
c906108c 16191
d521ce57 16192static const gdb_byte *
dee91e82
DE
16193read_attribute_value (const struct die_reader_specs *reader,
16194 struct attribute *attr, unsigned form,
d521ce57 16195 const gdb_byte *info_ptr)
c906108c 16196{
dee91e82 16197 struct dwarf2_cu *cu = reader->cu;
3e29f34a
MR
16198 struct objfile *objfile = cu->objfile;
16199 struct gdbarch *gdbarch = get_objfile_arch (objfile);
dee91e82 16200 bfd *abfd = reader->abfd;
e7c27a73 16201 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
16202 unsigned int bytes_read;
16203 struct dwarf_block *blk;
16204
a8329558
KW
16205 attr->form = form;
16206 switch (form)
c906108c 16207 {
c906108c 16208 case DW_FORM_ref_addr:
ae411497 16209 if (cu->header.version == 2)
4568ecf9 16210 DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
ae411497 16211 else
4568ecf9
DE
16212 DW_UNSND (attr) = read_offset (abfd, info_ptr,
16213 &cu->header, &bytes_read);
ae411497
TT
16214 info_ptr += bytes_read;
16215 break;
36586728
TT
16216 case DW_FORM_GNU_ref_alt:
16217 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16218 info_ptr += bytes_read;
16219 break;
ae411497 16220 case DW_FORM_addr:
e7c27a73 16221 DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
3e29f34a 16222 DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
107d2387 16223 info_ptr += bytes_read;
c906108c
SS
16224 break;
16225 case DW_FORM_block2:
7b5a2f43 16226 blk = dwarf_alloc_block (cu);
c906108c
SS
16227 blk->size = read_2_bytes (abfd, info_ptr);
16228 info_ptr += 2;
16229 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16230 info_ptr += blk->size;
16231 DW_BLOCK (attr) = blk;
16232 break;
16233 case DW_FORM_block4:
7b5a2f43 16234 blk = dwarf_alloc_block (cu);
c906108c
SS
16235 blk->size = read_4_bytes (abfd, info_ptr);
16236 info_ptr += 4;
16237 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16238 info_ptr += blk->size;
16239 DW_BLOCK (attr) = blk;
16240 break;
16241 case DW_FORM_data2:
16242 DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
16243 info_ptr += 2;
16244 break;
16245 case DW_FORM_data4:
16246 DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
16247 info_ptr += 4;
16248 break;
16249 case DW_FORM_data8:
16250 DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
16251 info_ptr += 8;
16252 break;
2dc7f7b3
TT
16253 case DW_FORM_sec_offset:
16254 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16255 info_ptr += bytes_read;
16256 break;
c906108c 16257 case DW_FORM_string:
9b1c24c8 16258 DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
8285870a 16259 DW_STRING_IS_CANONICAL (attr) = 0;
c906108c
SS
16260 info_ptr += bytes_read;
16261 break;
4bdf3d34 16262 case DW_FORM_strp:
36586728
TT
16263 if (!cu->per_cu->is_dwz)
16264 {
16265 DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
16266 &bytes_read);
16267 DW_STRING_IS_CANONICAL (attr) = 0;
16268 info_ptr += bytes_read;
16269 break;
16270 }
16271 /* FALLTHROUGH */
16272 case DW_FORM_GNU_strp_alt:
16273 {
16274 struct dwz_file *dwz = dwarf2_get_dwz_file ();
16275 LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
16276 &bytes_read);
16277
16278 DW_STRING (attr) = read_indirect_string_from_dwz (dwz, str_offset);
16279 DW_STRING_IS_CANONICAL (attr) = 0;
16280 info_ptr += bytes_read;
16281 }
4bdf3d34 16282 break;
2dc7f7b3 16283 case DW_FORM_exprloc:
c906108c 16284 case DW_FORM_block:
7b5a2f43 16285 blk = dwarf_alloc_block (cu);
c906108c
SS
16286 blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16287 info_ptr += bytes_read;
16288 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16289 info_ptr += blk->size;
16290 DW_BLOCK (attr) = blk;
16291 break;
16292 case DW_FORM_block1:
7b5a2f43 16293 blk = dwarf_alloc_block (cu);
c906108c
SS
16294 blk->size = read_1_byte (abfd, info_ptr);
16295 info_ptr += 1;
16296 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16297 info_ptr += blk->size;
16298 DW_BLOCK (attr) = blk;
16299 break;
16300 case DW_FORM_data1:
16301 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16302 info_ptr += 1;
16303 break;
16304 case DW_FORM_flag:
16305 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16306 info_ptr += 1;
16307 break;
2dc7f7b3
TT
16308 case DW_FORM_flag_present:
16309 DW_UNSND (attr) = 1;
16310 break;
c906108c
SS
16311 case DW_FORM_sdata:
16312 DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
16313 info_ptr += bytes_read;
16314 break;
16315 case DW_FORM_udata:
16316 DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16317 info_ptr += bytes_read;
16318 break;
16319 case DW_FORM_ref1:
4568ecf9
DE
16320 DW_UNSND (attr) = (cu->header.offset.sect_off
16321 + read_1_byte (abfd, info_ptr));
c906108c
SS
16322 info_ptr += 1;
16323 break;
16324 case DW_FORM_ref2:
4568ecf9
DE
16325 DW_UNSND (attr) = (cu->header.offset.sect_off
16326 + read_2_bytes (abfd, info_ptr));
c906108c
SS
16327 info_ptr += 2;
16328 break;
16329 case DW_FORM_ref4:
4568ecf9
DE
16330 DW_UNSND (attr) = (cu->header.offset.sect_off
16331 + read_4_bytes (abfd, info_ptr));
c906108c
SS
16332 info_ptr += 4;
16333 break;
613e1657 16334 case DW_FORM_ref8:
4568ecf9
DE
16335 DW_UNSND (attr) = (cu->header.offset.sect_off
16336 + read_8_bytes (abfd, info_ptr));
613e1657
KB
16337 info_ptr += 8;
16338 break;
55f1336d 16339 case DW_FORM_ref_sig8:
ac9ec31b 16340 DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
348e048f
DE
16341 info_ptr += 8;
16342 break;
c906108c 16343 case DW_FORM_ref_udata:
4568ecf9
DE
16344 DW_UNSND (attr) = (cu->header.offset.sect_off
16345 + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
c906108c
SS
16346 info_ptr += bytes_read;
16347 break;
c906108c 16348 case DW_FORM_indirect:
a8329558
KW
16349 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16350 info_ptr += bytes_read;
dee91e82 16351 info_ptr = read_attribute_value (reader, attr, form, info_ptr);
a8329558 16352 break;
3019eac3
DE
16353 case DW_FORM_GNU_addr_index:
16354 if (reader->dwo_file == NULL)
16355 {
16356 /* For now flag a hard error.
16357 Later we can turn this into a complaint. */
16358 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16359 dwarf_form_name (form),
16360 bfd_get_filename (abfd));
16361 }
16362 DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
16363 info_ptr += bytes_read;
16364 break;
16365 case DW_FORM_GNU_str_index:
16366 if (reader->dwo_file == NULL)
16367 {
16368 /* For now flag a hard error.
16369 Later we can turn this into a complaint if warranted. */
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 {
16375 ULONGEST str_index =
16376 read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16377
342587c4 16378 DW_STRING (attr) = read_str_index (reader, str_index);
3019eac3
DE
16379 DW_STRING_IS_CANONICAL (attr) = 0;
16380 info_ptr += bytes_read;
16381 }
16382 break;
c906108c 16383 default:
8a3fe4f8 16384 error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
659b0389
ML
16385 dwarf_form_name (form),
16386 bfd_get_filename (abfd));
c906108c 16387 }
28e94949 16388
36586728 16389 /* Super hack. */
7771576e 16390 if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
36586728
TT
16391 attr->form = DW_FORM_GNU_ref_alt;
16392
28e94949
JB
16393 /* We have seen instances where the compiler tried to emit a byte
16394 size attribute of -1 which ended up being encoded as an unsigned
16395 0xffffffff. Although 0xffffffff is technically a valid size value,
16396 an object of this size seems pretty unlikely so we can relatively
16397 safely treat these cases as if the size attribute was invalid and
16398 treat them as zero by default. */
16399 if (attr->name == DW_AT_byte_size
16400 && form == DW_FORM_data4
16401 && DW_UNSND (attr) >= 0xffffffff)
01c66ae6
JB
16402 {
16403 complaint
16404 (&symfile_complaints,
43bbcdc2
PH
16405 _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
16406 hex_string (DW_UNSND (attr)));
01c66ae6
JB
16407 DW_UNSND (attr) = 0;
16408 }
28e94949 16409
c906108c
SS
16410 return info_ptr;
16411}
16412
a8329558
KW
16413/* Read an attribute described by an abbreviated attribute. */
16414
d521ce57 16415static const gdb_byte *
dee91e82
DE
16416read_attribute (const struct die_reader_specs *reader,
16417 struct attribute *attr, struct attr_abbrev *abbrev,
d521ce57 16418 const gdb_byte *info_ptr)
a8329558
KW
16419{
16420 attr->name = abbrev->name;
dee91e82 16421 return read_attribute_value (reader, attr, abbrev->form, info_ptr);
a8329558
KW
16422}
16423
0963b4bd 16424/* Read dwarf information from a buffer. */
c906108c
SS
16425
16426static unsigned int
a1855c1d 16427read_1_byte (bfd *abfd, const gdb_byte *buf)
c906108c 16428{
fe1b8b76 16429 return bfd_get_8 (abfd, buf);
c906108c
SS
16430}
16431
16432static int
a1855c1d 16433read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
c906108c 16434{
fe1b8b76 16435 return bfd_get_signed_8 (abfd, buf);
c906108c
SS
16436}
16437
16438static unsigned int
a1855c1d 16439read_2_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16440{
fe1b8b76 16441 return bfd_get_16 (abfd, buf);
c906108c
SS
16442}
16443
21ae7a4d 16444static int
a1855c1d 16445read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
21ae7a4d
JK
16446{
16447 return bfd_get_signed_16 (abfd, buf);
16448}
16449
c906108c 16450static unsigned int
a1855c1d 16451read_4_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16452{
fe1b8b76 16453 return bfd_get_32 (abfd, buf);
c906108c
SS
16454}
16455
21ae7a4d 16456static int
a1855c1d 16457read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
21ae7a4d
JK
16458{
16459 return bfd_get_signed_32 (abfd, buf);
16460}
16461
93311388 16462static ULONGEST
a1855c1d 16463read_8_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16464{
fe1b8b76 16465 return bfd_get_64 (abfd, buf);
c906108c
SS
16466}
16467
16468static CORE_ADDR
d521ce57 16469read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
891d2f0b 16470 unsigned int *bytes_read)
c906108c 16471{
e7c27a73 16472 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
16473 CORE_ADDR retval = 0;
16474
107d2387 16475 if (cu_header->signed_addr_p)
c906108c 16476 {
107d2387
AC
16477 switch (cu_header->addr_size)
16478 {
16479 case 2:
fe1b8b76 16480 retval = bfd_get_signed_16 (abfd, buf);
107d2387
AC
16481 break;
16482 case 4:
fe1b8b76 16483 retval = bfd_get_signed_32 (abfd, buf);
107d2387
AC
16484 break;
16485 case 8:
fe1b8b76 16486 retval = bfd_get_signed_64 (abfd, buf);
107d2387
AC
16487 break;
16488 default:
8e65ff28 16489 internal_error (__FILE__, __LINE__,
e2e0b3e5 16490 _("read_address: bad switch, signed [in module %s]"),
659b0389 16491 bfd_get_filename (abfd));
107d2387
AC
16492 }
16493 }
16494 else
16495 {
16496 switch (cu_header->addr_size)
16497 {
16498 case 2:
fe1b8b76 16499 retval = bfd_get_16 (abfd, buf);
107d2387
AC
16500 break;
16501 case 4:
fe1b8b76 16502 retval = bfd_get_32 (abfd, buf);
107d2387
AC
16503 break;
16504 case 8:
fe1b8b76 16505 retval = bfd_get_64 (abfd, buf);
107d2387
AC
16506 break;
16507 default:
8e65ff28 16508 internal_error (__FILE__, __LINE__,
a73c6dcd
MS
16509 _("read_address: bad switch, "
16510 "unsigned [in module %s]"),
659b0389 16511 bfd_get_filename (abfd));
107d2387 16512 }
c906108c 16513 }
64367e0a 16514
107d2387
AC
16515 *bytes_read = cu_header->addr_size;
16516 return retval;
c906108c
SS
16517}
16518
f7ef9339 16519/* Read the initial length from a section. The (draft) DWARF 3
613e1657
KB
16520 specification allows the initial length to take up either 4 bytes
16521 or 12 bytes. If the first 4 bytes are 0xffffffff, then the next 8
16522 bytes describe the length and all offsets will be 8 bytes in length
16523 instead of 4.
16524
f7ef9339
KB
16525 An older, non-standard 64-bit format is also handled by this
16526 function. The older format in question stores the initial length
16527 as an 8-byte quantity without an escape value. Lengths greater
16528 than 2^32 aren't very common which means that the initial 4 bytes
16529 is almost always zero. Since a length value of zero doesn't make
16530 sense for the 32-bit format, this initial zero can be considered to
16531 be an escape value which indicates the presence of the older 64-bit
16532 format. As written, the code can't detect (old format) lengths
917c78fc
MK
16533 greater than 4GB. If it becomes necessary to handle lengths
16534 somewhat larger than 4GB, we could allow other small values (such
16535 as the non-sensical values of 1, 2, and 3) to also be used as
16536 escape values indicating the presence of the old format.
f7ef9339 16537
917c78fc
MK
16538 The value returned via bytes_read should be used to increment the
16539 relevant pointer after calling read_initial_length().
c764a876 16540
613e1657
KB
16541 [ Note: read_initial_length() and read_offset() are based on the
16542 document entitled "DWARF Debugging Information Format", revision
f7ef9339 16543 3, draft 8, dated November 19, 2001. This document was obtained
613e1657
KB
16544 from:
16545
f7ef9339 16546 http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
6e70227d 16547
613e1657
KB
16548 This document is only a draft and is subject to change. (So beware.)
16549
f7ef9339 16550 Details regarding the older, non-standard 64-bit format were
917c78fc
MK
16551 determined empirically by examining 64-bit ELF files produced by
16552 the SGI toolchain on an IRIX 6.5 machine.
f7ef9339
KB
16553
16554 - Kevin, July 16, 2002
613e1657
KB
16555 ] */
16556
16557static LONGEST
d521ce57 16558read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
613e1657 16559{
fe1b8b76 16560 LONGEST length = bfd_get_32 (abfd, buf);
613e1657 16561
dd373385 16562 if (length == 0xffffffff)
613e1657 16563 {
fe1b8b76 16564 length = bfd_get_64 (abfd, buf + 4);
613e1657 16565 *bytes_read = 12;
613e1657 16566 }
dd373385 16567 else if (length == 0)
f7ef9339 16568 {
dd373385 16569 /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX. */
fe1b8b76 16570 length = bfd_get_64 (abfd, buf);
f7ef9339 16571 *bytes_read = 8;
f7ef9339 16572 }
613e1657
KB
16573 else
16574 {
16575 *bytes_read = 4;
613e1657
KB
16576 }
16577
c764a876
DE
16578 return length;
16579}
dd373385 16580
c764a876
DE
16581/* Cover function for read_initial_length.
16582 Returns the length of the object at BUF, and stores the size of the
16583 initial length in *BYTES_READ and stores the size that offsets will be in
16584 *OFFSET_SIZE.
16585 If the initial length size is not equivalent to that specified in
16586 CU_HEADER then issue a complaint.
16587 This is useful when reading non-comp-unit headers. */
dd373385 16588
c764a876 16589static LONGEST
d521ce57 16590read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
c764a876
DE
16591 const struct comp_unit_head *cu_header,
16592 unsigned int *bytes_read,
16593 unsigned int *offset_size)
16594{
16595 LONGEST length = read_initial_length (abfd, buf, bytes_read);
16596
16597 gdb_assert (cu_header->initial_length_size == 4
16598 || cu_header->initial_length_size == 8
16599 || cu_header->initial_length_size == 12);
16600
16601 if (cu_header->initial_length_size != *bytes_read)
16602 complaint (&symfile_complaints,
16603 _("intermixed 32-bit and 64-bit DWARF sections"));
dd373385 16604
c764a876 16605 *offset_size = (*bytes_read == 4) ? 4 : 8;
dd373385 16606 return length;
613e1657
KB
16607}
16608
16609/* Read an offset from the data stream. The size of the offset is
917c78fc 16610 given by cu_header->offset_size. */
613e1657
KB
16611
16612static LONGEST
d521ce57
TT
16613read_offset (bfd *abfd, const gdb_byte *buf,
16614 const struct comp_unit_head *cu_header,
891d2f0b 16615 unsigned int *bytes_read)
c764a876
DE
16616{
16617 LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
9a619af0 16618
c764a876
DE
16619 *bytes_read = cu_header->offset_size;
16620 return offset;
16621}
16622
16623/* Read an offset from the data stream. */
16624
16625static LONGEST
d521ce57 16626read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
613e1657
KB
16627{
16628 LONGEST retval = 0;
16629
c764a876 16630 switch (offset_size)
613e1657
KB
16631 {
16632 case 4:
fe1b8b76 16633 retval = bfd_get_32 (abfd, buf);
613e1657
KB
16634 break;
16635 case 8:
fe1b8b76 16636 retval = bfd_get_64 (abfd, buf);
613e1657
KB
16637 break;
16638 default:
8e65ff28 16639 internal_error (__FILE__, __LINE__,
c764a876 16640 _("read_offset_1: bad switch [in module %s]"),
659b0389 16641 bfd_get_filename (abfd));
613e1657
KB
16642 }
16643
917c78fc 16644 return retval;
613e1657
KB
16645}
16646
d521ce57
TT
16647static const gdb_byte *
16648read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
c906108c
SS
16649{
16650 /* If the size of a host char is 8 bits, we can return a pointer
16651 to the buffer, otherwise we have to copy the data to a buffer
16652 allocated on the temporary obstack. */
4bdf3d34 16653 gdb_assert (HOST_CHAR_BIT == 8);
c906108c 16654 return buf;
c906108c
SS
16655}
16656
d521ce57
TT
16657static const char *
16658read_direct_string (bfd *abfd, const gdb_byte *buf,
16659 unsigned int *bytes_read_ptr)
c906108c
SS
16660{
16661 /* If the size of a host char is 8 bits, we can return a pointer
16662 to the string, otherwise we have to copy the string to a buffer
16663 allocated on the temporary obstack. */
4bdf3d34 16664 gdb_assert (HOST_CHAR_BIT == 8);
c906108c
SS
16665 if (*buf == '\0')
16666 {
16667 *bytes_read_ptr = 1;
16668 return NULL;
16669 }
d521ce57
TT
16670 *bytes_read_ptr = strlen ((const char *) buf) + 1;
16671 return (const char *) buf;
4bdf3d34
JJ
16672}
16673
d521ce57 16674static const char *
cf2c3c16 16675read_indirect_string_at_offset (bfd *abfd, LONGEST str_offset)
4bdf3d34 16676{
be391dca 16677 dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->str);
dce234bc 16678 if (dwarf2_per_objfile->str.buffer == NULL)
cf2c3c16
TT
16679 error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
16680 bfd_get_filename (abfd));
dce234bc 16681 if (str_offset >= dwarf2_per_objfile->str.size)
cf2c3c16
TT
16682 error (_("DW_FORM_strp pointing outside of "
16683 ".debug_str section [in module %s]"),
16684 bfd_get_filename (abfd));
4bdf3d34 16685 gdb_assert (HOST_CHAR_BIT == 8);
dce234bc 16686 if (dwarf2_per_objfile->str.buffer[str_offset] == '\0')
4bdf3d34 16687 return NULL;
d521ce57 16688 return (const char *) (dwarf2_per_objfile->str.buffer + str_offset);
c906108c
SS
16689}
16690
36586728
TT
16691/* Read a string at offset STR_OFFSET in the .debug_str section from
16692 the .dwz file DWZ. Throw an error if the offset is too large. If
16693 the string consists of a single NUL byte, return NULL; otherwise
16694 return a pointer to the string. */
16695
d521ce57 16696static const char *
36586728
TT
16697read_indirect_string_from_dwz (struct dwz_file *dwz, LONGEST str_offset)
16698{
16699 dwarf2_read_section (dwarf2_per_objfile->objfile, &dwz->str);
16700
16701 if (dwz->str.buffer == NULL)
16702 error (_("DW_FORM_GNU_strp_alt used without .debug_str "
16703 "section [in module %s]"),
16704 bfd_get_filename (dwz->dwz_bfd));
16705 if (str_offset >= dwz->str.size)
16706 error (_("DW_FORM_GNU_strp_alt pointing outside of "
16707 ".debug_str section [in module %s]"),
16708 bfd_get_filename (dwz->dwz_bfd));
16709 gdb_assert (HOST_CHAR_BIT == 8);
16710 if (dwz->str.buffer[str_offset] == '\0')
16711 return NULL;
d521ce57 16712 return (const char *) (dwz->str.buffer + str_offset);
36586728
TT
16713}
16714
d521ce57
TT
16715static const char *
16716read_indirect_string (bfd *abfd, const gdb_byte *buf,
cf2c3c16
TT
16717 const struct comp_unit_head *cu_header,
16718 unsigned int *bytes_read_ptr)
16719{
16720 LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
16721
16722 return read_indirect_string_at_offset (abfd, str_offset);
16723}
16724
12df843f 16725static ULONGEST
d521ce57
TT
16726read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
16727 unsigned int *bytes_read_ptr)
c906108c 16728{
12df843f 16729 ULONGEST result;
ce5d95e1 16730 unsigned int num_read;
c906108c
SS
16731 int i, shift;
16732 unsigned char byte;
16733
16734 result = 0;
16735 shift = 0;
16736 num_read = 0;
16737 i = 0;
16738 while (1)
16739 {
fe1b8b76 16740 byte = bfd_get_8 (abfd, buf);
c906108c
SS
16741 buf++;
16742 num_read++;
12df843f 16743 result |= ((ULONGEST) (byte & 127) << shift);
c906108c
SS
16744 if ((byte & 128) == 0)
16745 {
16746 break;
16747 }
16748 shift += 7;
16749 }
16750 *bytes_read_ptr = num_read;
16751 return result;
16752}
16753
12df843f 16754static LONGEST
d521ce57
TT
16755read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
16756 unsigned int *bytes_read_ptr)
c906108c 16757{
12df843f 16758 LONGEST result;
77e0b926 16759 int i, shift, num_read;
c906108c
SS
16760 unsigned char byte;
16761
16762 result = 0;
16763 shift = 0;
c906108c
SS
16764 num_read = 0;
16765 i = 0;
16766 while (1)
16767 {
fe1b8b76 16768 byte = bfd_get_8 (abfd, buf);
c906108c
SS
16769 buf++;
16770 num_read++;
12df843f 16771 result |= ((LONGEST) (byte & 127) << shift);
c906108c
SS
16772 shift += 7;
16773 if ((byte & 128) == 0)
16774 {
16775 break;
16776 }
16777 }
77e0b926 16778 if ((shift < 8 * sizeof (result)) && (byte & 0x40))
12df843f 16779 result |= -(((LONGEST) 1) << shift);
c906108c
SS
16780 *bytes_read_ptr = num_read;
16781 return result;
16782}
16783
3019eac3
DE
16784/* Given index ADDR_INDEX in .debug_addr, fetch the value.
16785 ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
16786 ADDR_SIZE is the size of addresses from the CU header. */
16787
16788static CORE_ADDR
16789read_addr_index_1 (unsigned int addr_index, ULONGEST addr_base, int addr_size)
16790{
16791 struct objfile *objfile = dwarf2_per_objfile->objfile;
16792 bfd *abfd = objfile->obfd;
16793 const gdb_byte *info_ptr;
16794
16795 dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
16796 if (dwarf2_per_objfile->addr.buffer == NULL)
16797 error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
4262abfb 16798 objfile_name (objfile));
3019eac3
DE
16799 if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
16800 error (_("DW_FORM_addr_index pointing outside of "
16801 ".debug_addr section [in module %s]"),
4262abfb 16802 objfile_name (objfile));
3019eac3
DE
16803 info_ptr = (dwarf2_per_objfile->addr.buffer
16804 + addr_base + addr_index * addr_size);
16805 if (addr_size == 4)
16806 return bfd_get_32 (abfd, info_ptr);
16807 else
16808 return bfd_get_64 (abfd, info_ptr);
16809}
16810
16811/* Given index ADDR_INDEX in .debug_addr, fetch the value. */
16812
16813static CORE_ADDR
16814read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
16815{
16816 return read_addr_index_1 (addr_index, cu->addr_base, cu->header.addr_size);
16817}
16818
16819/* Given a pointer to an leb128 value, fetch the value from .debug_addr. */
16820
16821static CORE_ADDR
d521ce57 16822read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
3019eac3
DE
16823 unsigned int *bytes_read)
16824{
16825 bfd *abfd = cu->objfile->obfd;
16826 unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
16827
16828 return read_addr_index (cu, addr_index);
16829}
16830
16831/* Data structure to pass results from dwarf2_read_addr_index_reader
16832 back to dwarf2_read_addr_index. */
16833
16834struct dwarf2_read_addr_index_data
16835{
16836 ULONGEST addr_base;
16837 int addr_size;
16838};
16839
16840/* die_reader_func for dwarf2_read_addr_index. */
16841
16842static void
16843dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
d521ce57 16844 const gdb_byte *info_ptr,
3019eac3
DE
16845 struct die_info *comp_unit_die,
16846 int has_children,
16847 void *data)
16848{
16849 struct dwarf2_cu *cu = reader->cu;
16850 struct dwarf2_read_addr_index_data *aidata =
16851 (struct dwarf2_read_addr_index_data *) data;
16852
16853 aidata->addr_base = cu->addr_base;
16854 aidata->addr_size = cu->header.addr_size;
16855}
16856
16857/* Given an index in .debug_addr, fetch the value.
16858 NOTE: This can be called during dwarf expression evaluation,
16859 long after the debug information has been read, and thus per_cu->cu
16860 may no longer exist. */
16861
16862CORE_ADDR
16863dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
16864 unsigned int addr_index)
16865{
16866 struct objfile *objfile = per_cu->objfile;
16867 struct dwarf2_cu *cu = per_cu->cu;
16868 ULONGEST addr_base;
16869 int addr_size;
16870
16871 /* This is intended to be called from outside this file. */
16872 dw2_setup (objfile);
16873
16874 /* We need addr_base and addr_size.
16875 If we don't have PER_CU->cu, we have to get it.
16876 Nasty, but the alternative is storing the needed info in PER_CU,
16877 which at this point doesn't seem justified: it's not clear how frequently
16878 it would get used and it would increase the size of every PER_CU.
16879 Entry points like dwarf2_per_cu_addr_size do a similar thing
16880 so we're not in uncharted territory here.
16881 Alas we need to be a bit more complicated as addr_base is contained
16882 in the DIE.
16883
16884 We don't need to read the entire CU(/TU).
16885 We just need the header and top level die.
a1b64ce1 16886
3019eac3 16887 IWBN to use the aging mechanism to let us lazily later discard the CU.
a1b64ce1 16888 For now we skip this optimization. */
3019eac3
DE
16889
16890 if (cu != NULL)
16891 {
16892 addr_base = cu->addr_base;
16893 addr_size = cu->header.addr_size;
16894 }
16895 else
16896 {
16897 struct dwarf2_read_addr_index_data aidata;
16898
a1b64ce1
DE
16899 /* Note: We can't use init_cutu_and_read_dies_simple here,
16900 we need addr_base. */
16901 init_cutu_and_read_dies (per_cu, NULL, 0, 0,
16902 dwarf2_read_addr_index_reader, &aidata);
3019eac3
DE
16903 addr_base = aidata.addr_base;
16904 addr_size = aidata.addr_size;
16905 }
16906
16907 return read_addr_index_1 (addr_index, addr_base, addr_size);
16908}
16909
57d63ce2
DE
16910/* Given a DW_FORM_GNU_str_index, fetch the string.
16911 This is only used by the Fission support. */
3019eac3 16912
d521ce57 16913static const char *
342587c4 16914read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
3019eac3
DE
16915{
16916 struct objfile *objfile = dwarf2_per_objfile->objfile;
c5164cbc 16917 const char *objf_name = objfile_name (objfile);
3019eac3 16918 bfd *abfd = objfile->obfd;
342587c4 16919 struct dwarf2_cu *cu = reader->cu;
73869dc2
DE
16920 struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
16921 struct dwarf2_section_info *str_offsets_section =
16922 &reader->dwo_file->sections.str_offsets;
d521ce57 16923 const gdb_byte *info_ptr;
3019eac3 16924 ULONGEST str_offset;
57d63ce2 16925 static const char form_name[] = "DW_FORM_GNU_str_index";
3019eac3 16926
73869dc2
DE
16927 dwarf2_read_section (objfile, str_section);
16928 dwarf2_read_section (objfile, str_offsets_section);
16929 if (str_section->buffer == NULL)
57d63ce2 16930 error (_("%s used without .debug_str.dwo section"
3019eac3 16931 " in CU at offset 0x%lx [in module %s]"),
c5164cbc 16932 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16933 if (str_offsets_section->buffer == NULL)
57d63ce2 16934 error (_("%s used without .debug_str_offsets.dwo section"
3019eac3 16935 " in CU at offset 0x%lx [in module %s]"),
c5164cbc 16936 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16937 if (str_index * cu->header.offset_size >= str_offsets_section->size)
57d63ce2 16938 error (_("%s pointing outside of .debug_str_offsets.dwo"
3019eac3 16939 " section in CU at offset 0x%lx [in module %s]"),
c5164cbc 16940 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16941 info_ptr = (str_offsets_section->buffer
3019eac3
DE
16942 + str_index * cu->header.offset_size);
16943 if (cu->header.offset_size == 4)
16944 str_offset = bfd_get_32 (abfd, info_ptr);
16945 else
16946 str_offset = bfd_get_64 (abfd, info_ptr);
73869dc2 16947 if (str_offset >= str_section->size)
57d63ce2 16948 error (_("Offset from %s pointing outside of"
3019eac3 16949 " .debug_str.dwo section in CU at offset 0x%lx [in module %s]"),
c5164cbc 16950 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16951 return (const char *) (str_section->buffer + str_offset);
3019eac3
DE
16952}
16953
3019eac3
DE
16954/* Return the length of an LEB128 number in BUF. */
16955
16956static int
16957leb128_size (const gdb_byte *buf)
16958{
16959 const gdb_byte *begin = buf;
16960 gdb_byte byte;
16961
16962 while (1)
16963 {
16964 byte = *buf++;
16965 if ((byte & 128) == 0)
16966 return buf - begin;
16967 }
16968}
16969
c906108c 16970static void
e142c38c 16971set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
c906108c
SS
16972{
16973 switch (lang)
16974 {
16975 case DW_LANG_C89:
76bee0cc 16976 case DW_LANG_C99:
0cfd832f 16977 case DW_LANG_C11:
c906108c 16978 case DW_LANG_C:
d1be3247 16979 case DW_LANG_UPC:
e142c38c 16980 cu->language = language_c;
c906108c
SS
16981 break;
16982 case DW_LANG_C_plus_plus:
0cfd832f
MW
16983 case DW_LANG_C_plus_plus_11:
16984 case DW_LANG_C_plus_plus_14:
e142c38c 16985 cu->language = language_cplus;
c906108c 16986 break;
6aecb9c2
JB
16987 case DW_LANG_D:
16988 cu->language = language_d;
16989 break;
c906108c
SS
16990 case DW_LANG_Fortran77:
16991 case DW_LANG_Fortran90:
b21b22e0 16992 case DW_LANG_Fortran95:
f7de9aab
MW
16993 case DW_LANG_Fortran03:
16994 case DW_LANG_Fortran08:
e142c38c 16995 cu->language = language_fortran;
c906108c 16996 break;
a766d390
DE
16997 case DW_LANG_Go:
16998 cu->language = language_go;
16999 break;
c906108c 17000 case DW_LANG_Mips_Assembler:
e142c38c 17001 cu->language = language_asm;
c906108c 17002 break;
bebd888e 17003 case DW_LANG_Java:
e142c38c 17004 cu->language = language_java;
bebd888e 17005 break;
c906108c 17006 case DW_LANG_Ada83:
8aaf0b47 17007 case DW_LANG_Ada95:
bc5f45f8
JB
17008 cu->language = language_ada;
17009 break;
72019c9c
GM
17010 case DW_LANG_Modula2:
17011 cu->language = language_m2;
17012 break;
fe8e67fd
PM
17013 case DW_LANG_Pascal83:
17014 cu->language = language_pascal;
17015 break;
22566fbd
DJ
17016 case DW_LANG_ObjC:
17017 cu->language = language_objc;
17018 break;
c906108c
SS
17019 case DW_LANG_Cobol74:
17020 case DW_LANG_Cobol85:
c906108c 17021 default:
e142c38c 17022 cu->language = language_minimal;
c906108c
SS
17023 break;
17024 }
e142c38c 17025 cu->language_defn = language_def (cu->language);
c906108c
SS
17026}
17027
17028/* Return the named attribute or NULL if not there. */
17029
17030static struct attribute *
e142c38c 17031dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
c906108c 17032{
a48e046c 17033 for (;;)
c906108c 17034 {
a48e046c
TT
17035 unsigned int i;
17036 struct attribute *spec = NULL;
17037
17038 for (i = 0; i < die->num_attrs; ++i)
17039 {
17040 if (die->attrs[i].name == name)
17041 return &die->attrs[i];
17042 if (die->attrs[i].name == DW_AT_specification
17043 || die->attrs[i].name == DW_AT_abstract_origin)
17044 spec = &die->attrs[i];
17045 }
17046
17047 if (!spec)
17048 break;
c906108c 17049
f2f0e013 17050 die = follow_die_ref (die, spec, &cu);
f2f0e013 17051 }
c5aa993b 17052
c906108c
SS
17053 return NULL;
17054}
17055
348e048f
DE
17056/* Return the named attribute or NULL if not there,
17057 but do not follow DW_AT_specification, etc.
17058 This is for use in contexts where we're reading .debug_types dies.
17059 Following DW_AT_specification, DW_AT_abstract_origin will take us
17060 back up the chain, and we want to go down. */
17061
17062static struct attribute *
45e58e77 17063dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
348e048f
DE
17064{
17065 unsigned int i;
17066
17067 for (i = 0; i < die->num_attrs; ++i)
17068 if (die->attrs[i].name == name)
17069 return &die->attrs[i];
17070
17071 return NULL;
17072}
17073
05cf31d1
JB
17074/* Return non-zero iff the attribute NAME is defined for the given DIE,
17075 and holds a non-zero value. This function should only be used for
2dc7f7b3 17076 DW_FORM_flag or DW_FORM_flag_present attributes. */
05cf31d1
JB
17077
17078static int
17079dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
17080{
17081 struct attribute *attr = dwarf2_attr (die, name, cu);
17082
17083 return (attr && DW_UNSND (attr));
17084}
17085
3ca72b44 17086static int
e142c38c 17087die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
3ca72b44 17088{
05cf31d1
JB
17089 /* A DIE is a declaration if it has a DW_AT_declaration attribute
17090 which value is non-zero. However, we have to be careful with
17091 DIEs having a DW_AT_specification attribute, because dwarf2_attr()
17092 (via dwarf2_flag_true_p) follows this attribute. So we may
17093 end up accidently finding a declaration attribute that belongs
17094 to a different DIE referenced by the specification attribute,
17095 even though the given DIE does not have a declaration attribute. */
17096 return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
17097 && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
3ca72b44
AC
17098}
17099
63d06c5c 17100/* Return the die giving the specification for DIE, if there is
f2f0e013 17101 one. *SPEC_CU is the CU containing DIE on input, and the CU
edb3359d
DJ
17102 containing the return value on output. If there is no
17103 specification, but there is an abstract origin, that is
17104 returned. */
63d06c5c
DC
17105
17106static struct die_info *
f2f0e013 17107die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
63d06c5c 17108{
f2f0e013
DJ
17109 struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
17110 *spec_cu);
63d06c5c 17111
edb3359d
DJ
17112 if (spec_attr == NULL)
17113 spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
17114
63d06c5c
DC
17115 if (spec_attr == NULL)
17116 return NULL;
17117 else
f2f0e013 17118 return follow_die_ref (die, spec_attr, spec_cu);
63d06c5c 17119}
c906108c 17120
debd256d 17121/* Free the line_header structure *LH, and any arrays and strings it
ae2de4f8
DE
17122 refers to.
17123 NOTE: This is also used as a "cleanup" function. */
17124
debd256d
JB
17125static void
17126free_line_header (struct line_header *lh)
17127{
17128 if (lh->standard_opcode_lengths)
a8bc7b56 17129 xfree (lh->standard_opcode_lengths);
debd256d
JB
17130
17131 /* Remember that all the lh->file_names[i].name pointers are
17132 pointers into debug_line_buffer, and don't need to be freed. */
17133 if (lh->file_names)
a8bc7b56 17134 xfree (lh->file_names);
debd256d
JB
17135
17136 /* Similarly for the include directory names. */
17137 if (lh->include_dirs)
a8bc7b56 17138 xfree (lh->include_dirs);
debd256d 17139
a8bc7b56 17140 xfree (lh);
debd256d
JB
17141}
17142
527f3840
JK
17143/* Stub for free_line_header to match void * callback types. */
17144
17145static void
17146free_line_header_voidp (void *arg)
17147{
17148 struct line_header *lh = arg;
17149
17150 free_line_header (lh);
17151}
17152
debd256d 17153/* Add an entry to LH's include directory table. */
ae2de4f8 17154
debd256d 17155static void
d521ce57 17156add_include_dir (struct line_header *lh, const char *include_dir)
c906108c 17157{
27e0867f
DE
17158 if (dwarf_line_debug >= 2)
17159 fprintf_unfiltered (gdb_stdlog, "Adding dir %u: %s\n",
17160 lh->num_include_dirs + 1, include_dir);
17161
debd256d
JB
17162 /* Grow the array if necessary. */
17163 if (lh->include_dirs_size == 0)
c5aa993b 17164 {
debd256d
JB
17165 lh->include_dirs_size = 1; /* for testing */
17166 lh->include_dirs = xmalloc (lh->include_dirs_size
17167 * sizeof (*lh->include_dirs));
17168 }
17169 else if (lh->num_include_dirs >= lh->include_dirs_size)
17170 {
17171 lh->include_dirs_size *= 2;
17172 lh->include_dirs = xrealloc (lh->include_dirs,
17173 (lh->include_dirs_size
17174 * sizeof (*lh->include_dirs)));
c5aa993b 17175 }
c906108c 17176
debd256d
JB
17177 lh->include_dirs[lh->num_include_dirs++] = include_dir;
17178}
6e70227d 17179
debd256d 17180/* Add an entry to LH's file name table. */
ae2de4f8 17181
debd256d
JB
17182static void
17183add_file_name (struct line_header *lh,
d521ce57 17184 const char *name,
debd256d
JB
17185 unsigned int dir_index,
17186 unsigned int mod_time,
17187 unsigned int length)
17188{
17189 struct file_entry *fe;
17190
27e0867f
DE
17191 if (dwarf_line_debug >= 2)
17192 fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
17193 lh->num_file_names + 1, name);
17194
debd256d
JB
17195 /* Grow the array if necessary. */
17196 if (lh->file_names_size == 0)
17197 {
17198 lh->file_names_size = 1; /* for testing */
17199 lh->file_names = xmalloc (lh->file_names_size
17200 * sizeof (*lh->file_names));
17201 }
17202 else if (lh->num_file_names >= lh->file_names_size)
17203 {
17204 lh->file_names_size *= 2;
17205 lh->file_names = xrealloc (lh->file_names,
17206 (lh->file_names_size
17207 * sizeof (*lh->file_names)));
17208 }
17209
17210 fe = &lh->file_names[lh->num_file_names++];
17211 fe->name = name;
17212 fe->dir_index = dir_index;
17213 fe->mod_time = mod_time;
17214 fe->length = length;
aaa75496 17215 fe->included_p = 0;
cb1df416 17216 fe->symtab = NULL;
debd256d 17217}
6e70227d 17218
83769d0b 17219/* A convenience function to find the proper .debug_line section for a CU. */
36586728
TT
17220
17221static struct dwarf2_section_info *
17222get_debug_line_section (struct dwarf2_cu *cu)
17223{
17224 struct dwarf2_section_info *section;
17225
17226 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
17227 DWO file. */
17228 if (cu->dwo_unit && cu->per_cu->is_debug_types)
17229 section = &cu->dwo_unit->dwo_file->sections.line;
17230 else if (cu->per_cu->is_dwz)
17231 {
17232 struct dwz_file *dwz = dwarf2_get_dwz_file ();
17233
17234 section = &dwz->line;
17235 }
17236 else
17237 section = &dwarf2_per_objfile->line;
17238
17239 return section;
17240}
17241
debd256d 17242/* Read the statement program header starting at OFFSET in
3019eac3 17243 .debug_line, or .debug_line.dwo. Return a pointer
6502dd73 17244 to a struct line_header, allocated using xmalloc.
cd366ee8
DE
17245 Returns NULL if there is a problem reading the header, e.g., if it
17246 has a version we don't understand.
debd256d
JB
17247
17248 NOTE: the strings in the include directory and file name tables of
3019eac3
DE
17249 the returned object point into the dwarf line section buffer,
17250 and must not be freed. */
ae2de4f8 17251
debd256d 17252static struct line_header *
3019eac3 17253dwarf_decode_line_header (unsigned int offset, struct dwarf2_cu *cu)
debd256d
JB
17254{
17255 struct cleanup *back_to;
17256 struct line_header *lh;
d521ce57 17257 const gdb_byte *line_ptr;
c764a876 17258 unsigned int bytes_read, offset_size;
debd256d 17259 int i;
d521ce57 17260 const char *cur_dir, *cur_file;
3019eac3
DE
17261 struct dwarf2_section_info *section;
17262 bfd *abfd;
17263
36586728 17264 section = get_debug_line_section (cu);
3019eac3
DE
17265 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
17266 if (section->buffer == NULL)
debd256d 17267 {
3019eac3
DE
17268 if (cu->dwo_unit && cu->per_cu->is_debug_types)
17269 complaint (&symfile_complaints, _("missing .debug_line.dwo section"));
17270 else
17271 complaint (&symfile_complaints, _("missing .debug_line section"));
debd256d
JB
17272 return 0;
17273 }
17274
fceca515
DE
17275 /* We can't do this until we know the section is non-empty.
17276 Only then do we know we have such a section. */
a32a8923 17277 abfd = get_section_bfd_owner (section);
fceca515 17278
a738430d
MK
17279 /* Make sure that at least there's room for the total_length field.
17280 That could be 12 bytes long, but we're just going to fudge that. */
3019eac3 17281 if (offset + 4 >= section->size)
debd256d 17282 {
4d3c2250 17283 dwarf2_statement_list_fits_in_line_number_section_complaint ();
debd256d
JB
17284 return 0;
17285 }
17286
17287 lh = xmalloc (sizeof (*lh));
17288 memset (lh, 0, sizeof (*lh));
17289 back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
17290 (void *) lh);
17291
527f3840
JK
17292 lh->offset.sect_off = offset;
17293 lh->offset_in_dwz = cu->per_cu->is_dwz;
17294
3019eac3 17295 line_ptr = section->buffer + offset;
debd256d 17296
a738430d 17297 /* Read in the header. */
6e70227d 17298 lh->total_length =
c764a876
DE
17299 read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
17300 &bytes_read, &offset_size);
debd256d 17301 line_ptr += bytes_read;
3019eac3 17302 if (line_ptr + lh->total_length > (section->buffer + section->size))
debd256d 17303 {
4d3c2250 17304 dwarf2_statement_list_fits_in_line_number_section_complaint ();
2f324bf6 17305 do_cleanups (back_to);
debd256d
JB
17306 return 0;
17307 }
17308 lh->statement_program_end = line_ptr + lh->total_length;
17309 lh->version = read_2_bytes (abfd, line_ptr);
17310 line_ptr += 2;
cd366ee8
DE
17311 if (lh->version > 4)
17312 {
17313 /* This is a version we don't understand. The format could have
17314 changed in ways we don't handle properly so just punt. */
17315 complaint (&symfile_complaints,
17316 _("unsupported version in .debug_line section"));
17317 return NULL;
17318 }
c764a876
DE
17319 lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
17320 line_ptr += offset_size;
debd256d
JB
17321 lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
17322 line_ptr += 1;
2dc7f7b3
TT
17323 if (lh->version >= 4)
17324 {
17325 lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
17326 line_ptr += 1;
17327 }
17328 else
17329 lh->maximum_ops_per_instruction = 1;
17330
17331 if (lh->maximum_ops_per_instruction == 0)
17332 {
17333 lh->maximum_ops_per_instruction = 1;
17334 complaint (&symfile_complaints,
3e43a32a
MS
17335 _("invalid maximum_ops_per_instruction "
17336 "in `.debug_line' section"));
2dc7f7b3
TT
17337 }
17338
debd256d
JB
17339 lh->default_is_stmt = read_1_byte (abfd, line_ptr);
17340 line_ptr += 1;
17341 lh->line_base = read_1_signed_byte (abfd, line_ptr);
17342 line_ptr += 1;
17343 lh->line_range = read_1_byte (abfd, line_ptr);
17344 line_ptr += 1;
17345 lh->opcode_base = read_1_byte (abfd, line_ptr);
17346 line_ptr += 1;
17347 lh->standard_opcode_lengths
fe1b8b76 17348 = xmalloc (lh->opcode_base * sizeof (lh->standard_opcode_lengths[0]));
debd256d
JB
17349
17350 lh->standard_opcode_lengths[0] = 1; /* This should never be used anyway. */
17351 for (i = 1; i < lh->opcode_base; ++i)
17352 {
17353 lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
17354 line_ptr += 1;
17355 }
17356
a738430d 17357 /* Read directory table. */
9b1c24c8 17358 while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
debd256d
JB
17359 {
17360 line_ptr += bytes_read;
17361 add_include_dir (lh, cur_dir);
17362 }
17363 line_ptr += bytes_read;
17364
a738430d 17365 /* Read file name table. */
9b1c24c8 17366 while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
debd256d
JB
17367 {
17368 unsigned int dir_index, mod_time, length;
17369
17370 line_ptr += bytes_read;
17371 dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17372 line_ptr += bytes_read;
17373 mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17374 line_ptr += bytes_read;
17375 length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17376 line_ptr += bytes_read;
17377
17378 add_file_name (lh, cur_file, dir_index, mod_time, length);
17379 }
17380 line_ptr += bytes_read;
6e70227d 17381 lh->statement_program_start = line_ptr;
debd256d 17382
3019eac3 17383 if (line_ptr > (section->buffer + section->size))
4d3c2250 17384 complaint (&symfile_complaints,
3e43a32a
MS
17385 _("line number info header doesn't "
17386 "fit in `.debug_line' section"));
debd256d
JB
17387
17388 discard_cleanups (back_to);
17389 return lh;
17390}
c906108c 17391
c6da4cef
DE
17392/* Subroutine of dwarf_decode_lines to simplify it.
17393 Return the file name of the psymtab for included file FILE_INDEX
17394 in line header LH of PST.
17395 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
17396 If space for the result is malloc'd, it will be freed by a cleanup.
1ed59174
JK
17397 Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.
17398
17399 The function creates dangling cleanup registration. */
c6da4cef 17400
d521ce57 17401static const char *
c6da4cef
DE
17402psymtab_include_file_name (const struct line_header *lh, int file_index,
17403 const struct partial_symtab *pst,
17404 const char *comp_dir)
17405{
17406 const struct file_entry fe = lh->file_names [file_index];
d521ce57
TT
17407 const char *include_name = fe.name;
17408 const char *include_name_to_compare = include_name;
17409 const char *dir_name = NULL;
72b9f47f
TT
17410 const char *pst_filename;
17411 char *copied_name = NULL;
c6da4cef
DE
17412 int file_is_pst;
17413
afa6c9ab 17414 if (fe.dir_index && lh->include_dirs != NULL)
c6da4cef
DE
17415 dir_name = lh->include_dirs[fe.dir_index - 1];
17416
17417 if (!IS_ABSOLUTE_PATH (include_name)
17418 && (dir_name != NULL || comp_dir != NULL))
17419 {
17420 /* Avoid creating a duplicate psymtab for PST.
17421 We do this by comparing INCLUDE_NAME and PST_FILENAME.
17422 Before we do the comparison, however, we need to account
17423 for DIR_NAME and COMP_DIR.
17424 First prepend dir_name (if non-NULL). If we still don't
17425 have an absolute path prepend comp_dir (if non-NULL).
17426 However, the directory we record in the include-file's
17427 psymtab does not contain COMP_DIR (to match the
17428 corresponding symtab(s)).
17429
17430 Example:
17431
17432 bash$ cd /tmp
17433 bash$ gcc -g ./hello.c
17434 include_name = "hello.c"
17435 dir_name = "."
17436 DW_AT_comp_dir = comp_dir = "/tmp"
5f52445b
YQ
17437 DW_AT_name = "./hello.c"
17438
17439 */
c6da4cef
DE
17440
17441 if (dir_name != NULL)
17442 {
d521ce57
TT
17443 char *tem = concat (dir_name, SLASH_STRING,
17444 include_name, (char *)NULL);
17445
17446 make_cleanup (xfree, tem);
17447 include_name = tem;
c6da4cef 17448 include_name_to_compare = include_name;
c6da4cef
DE
17449 }
17450 if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
17451 {
d521ce57
TT
17452 char *tem = concat (comp_dir, SLASH_STRING,
17453 include_name, (char *)NULL);
17454
17455 make_cleanup (xfree, tem);
17456 include_name_to_compare = tem;
c6da4cef
DE
17457 }
17458 }
17459
17460 pst_filename = pst->filename;
17461 if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
17462 {
72b9f47f
TT
17463 copied_name = concat (pst->dirname, SLASH_STRING,
17464 pst_filename, (char *)NULL);
17465 pst_filename = copied_name;
c6da4cef
DE
17466 }
17467
1e3fad37 17468 file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
c6da4cef 17469
72b9f47f
TT
17470 if (copied_name != NULL)
17471 xfree (copied_name);
c6da4cef
DE
17472
17473 if (file_is_pst)
17474 return NULL;
17475 return include_name;
17476}
17477
d9b3de22
DE
17478/* State machine to track the state of the line number program. */
17479
17480typedef struct
17481{
17482 /* These are part of the standard DWARF line number state machine. */
17483
17484 unsigned char op_index;
17485 unsigned int file;
17486 unsigned int line;
17487 CORE_ADDR address;
17488 int is_stmt;
17489 unsigned int discriminator;
17490
17491 /* Additional bits of state we need to track. */
17492
17493 /* The last file that we called dwarf2_start_subfile for.
17494 This is only used for TLLs. */
17495 unsigned int last_file;
17496 /* The last file a line number was recorded for. */
17497 struct subfile *last_subfile;
17498
17499 /* The function to call to record a line. */
17500 record_line_ftype *record_line;
17501
17502 /* The last line number that was recorded, used to coalesce
17503 consecutive entries for the same line. This can happen, for
17504 example, when discriminators are present. PR 17276. */
17505 unsigned int last_line;
17506 int line_has_non_zero_discriminator;
17507} lnp_state_machine;
17508
17509/* There's a lot of static state to pass to dwarf_record_line.
17510 This keeps it all together. */
17511
17512typedef struct
17513{
17514 /* The gdbarch. */
17515 struct gdbarch *gdbarch;
17516
17517 /* The line number header. */
17518 struct line_header *line_header;
17519
17520 /* Non-zero if we're recording lines.
17521 Otherwise we're building partial symtabs and are just interested in
17522 finding include files mentioned by the line number program. */
17523 int record_lines_p;
17524} lnp_reader_state;
17525
c91513d8
PP
17526/* Ignore this record_line request. */
17527
17528static void
17529noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
17530{
17531 return;
17532}
17533
a05a36a5
DE
17534/* Return non-zero if we should add LINE to the line number table.
17535 LINE is the line to add, LAST_LINE is the last line that was added,
17536 LAST_SUBFILE is the subfile for LAST_LINE.
17537 LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
17538 had a non-zero discriminator.
17539
17540 We have to be careful in the presence of discriminators.
17541 E.g., for this line:
17542
17543 for (i = 0; i < 100000; i++);
17544
17545 clang can emit four line number entries for that one line,
17546 each with a different discriminator.
17547 See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
17548
17549 However, we want gdb to coalesce all four entries into one.
17550 Otherwise the user could stepi into the middle of the line and
17551 gdb would get confused about whether the pc really was in the
17552 middle of the line.
17553
17554 Things are further complicated by the fact that two consecutive
17555 line number entries for the same line is a heuristic used by gcc
17556 to denote the end of the prologue. So we can't just discard duplicate
17557 entries, we have to be selective about it. The heuristic we use is
17558 that we only collapse consecutive entries for the same line if at least
17559 one of those entries has a non-zero discriminator. PR 17276.
17560
17561 Note: Addresses in the line number state machine can never go backwards
17562 within one sequence, thus this coalescing is ok. */
17563
17564static int
17565dwarf_record_line_p (unsigned int line, unsigned int last_line,
17566 int line_has_non_zero_discriminator,
17567 struct subfile *last_subfile)
17568{
17569 if (current_subfile != last_subfile)
17570 return 1;
17571 if (line != last_line)
17572 return 1;
17573 /* Same line for the same file that we've seen already.
17574 As a last check, for pr 17276, only record the line if the line
17575 has never had a non-zero discriminator. */
17576 if (!line_has_non_zero_discriminator)
17577 return 1;
17578 return 0;
17579}
17580
252a6764
DE
17581/* Use P_RECORD_LINE to record line number LINE beginning at address ADDRESS
17582 in the line table of subfile SUBFILE. */
17583
17584static void
d9b3de22
DE
17585dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
17586 unsigned int line, CORE_ADDR address,
17587 record_line_ftype p_record_line)
252a6764
DE
17588{
17589 CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
17590
27e0867f
DE
17591 if (dwarf_line_debug)
17592 {
17593 fprintf_unfiltered (gdb_stdlog,
17594 "Recording line %u, file %s, address %s\n",
17595 line, lbasename (subfile->name),
17596 paddress (gdbarch, address));
17597 }
17598
d5962de5 17599 (*p_record_line) (subfile, line, addr);
252a6764
DE
17600}
17601
17602/* Subroutine of dwarf_decode_lines_1 to simplify it.
17603 Mark the end of a set of line number records.
d9b3de22 17604 The arguments are the same as for dwarf_record_line_1.
252a6764
DE
17605 If SUBFILE is NULL the request is ignored. */
17606
17607static void
17608dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
17609 CORE_ADDR address, record_line_ftype p_record_line)
17610{
27e0867f
DE
17611 if (subfile == NULL)
17612 return;
17613
17614 if (dwarf_line_debug)
17615 {
17616 fprintf_unfiltered (gdb_stdlog,
17617 "Finishing current line, file %s, address %s\n",
17618 lbasename (subfile->name),
17619 paddress (gdbarch, address));
17620 }
17621
d9b3de22
DE
17622 dwarf_record_line_1 (gdbarch, subfile, 0, address, p_record_line);
17623}
17624
17625/* Record the line in STATE.
17626 END_SEQUENCE is non-zero if we're processing the end of a sequence. */
17627
17628static void
17629dwarf_record_line (lnp_reader_state *reader, lnp_state_machine *state,
17630 int end_sequence)
17631{
17632 const struct line_header *lh = reader->line_header;
17633 unsigned int file, line, discriminator;
17634 int is_stmt;
17635
17636 file = state->file;
17637 line = state->line;
17638 is_stmt = state->is_stmt;
17639 discriminator = state->discriminator;
17640
17641 if (dwarf_line_debug)
17642 {
17643 fprintf_unfiltered (gdb_stdlog,
17644 "Processing actual line %u: file %u,"
17645 " address %s, is_stmt %u, discrim %u\n",
17646 line, file,
17647 paddress (reader->gdbarch, state->address),
17648 is_stmt, discriminator);
17649 }
17650
17651 if (file == 0 || file - 1 >= lh->num_file_names)
17652 dwarf2_debug_line_missing_file_complaint ();
17653 /* For now we ignore lines not starting on an instruction boundary.
17654 But not when processing end_sequence for compatibility with the
17655 previous version of the code. */
17656 else if (state->op_index == 0 || end_sequence)
17657 {
17658 lh->file_names[file - 1].included_p = 1;
17659 if (reader->record_lines_p && is_stmt)
17660 {
17661 if (state->last_subfile != current_subfile)
17662 {
17663 dwarf_finish_line (reader->gdbarch, state->last_subfile,
17664 state->address, state->record_line);
17665 }
17666
17667 if (!end_sequence)
17668 {
17669 if (dwarf_record_line_p (line, state->last_line,
17670 state->line_has_non_zero_discriminator,
17671 state->last_subfile))
17672 {
17673 dwarf_record_line_1 (reader->gdbarch, current_subfile,
17674 line, state->address,
17675 state->record_line);
17676 }
17677 state->last_subfile = current_subfile;
17678 state->last_line = line;
17679 }
17680 }
17681 }
17682}
17683
17684/* Initialize STATE for the start of a line number program. */
17685
17686static void
17687init_lnp_state_machine (lnp_state_machine *state,
17688 const lnp_reader_state *reader)
17689{
17690 memset (state, 0, sizeof (*state));
17691
17692 /* Just starting, there is no "last file". */
17693 state->last_file = 0;
17694 state->last_subfile = NULL;
17695
17696 state->record_line = record_line;
17697
17698 state->last_line = 0;
17699 state->line_has_non_zero_discriminator = 0;
17700
17701 /* Initialize these according to the DWARF spec. */
17702 state->op_index = 0;
17703 state->file = 1;
17704 state->line = 1;
17705 /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
17706 was a line entry for it so that the backend has a chance to adjust it
17707 and also record it in case it needs it. This is currently used by MIPS
17708 code, cf. `mips_adjust_dwarf2_line'. */
17709 state->address = gdbarch_adjust_dwarf2_line (reader->gdbarch, 0, 0);
17710 state->is_stmt = reader->line_header->default_is_stmt;
17711 state->discriminator = 0;
252a6764
DE
17712}
17713
924c2928
DE
17714/* Check address and if invalid nop-out the rest of the lines in this
17715 sequence. */
17716
17717static void
d9b3de22 17718check_line_address (struct dwarf2_cu *cu, lnp_state_machine *state,
924c2928
DE
17719 const gdb_byte *line_ptr,
17720 CORE_ADDR lowpc, CORE_ADDR address)
17721{
17722 /* If address < lowpc then it's not a usable value, it's outside the
17723 pc range of the CU. However, we restrict the test to only address
17724 values of zero to preserve GDB's previous behaviour which is to
17725 handle the specific case of a function being GC'd by the linker. */
17726
17727 if (address == 0 && address < lowpc)
17728 {
17729 /* This line table is for a function which has been
17730 GCd by the linker. Ignore it. PR gdb/12528 */
17731
17732 struct objfile *objfile = cu->objfile;
17733 long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
17734
17735 complaint (&symfile_complaints,
17736 _(".debug_line address at offset 0x%lx is 0 [in module %s]"),
17737 line_offset, objfile_name (objfile));
d9b3de22
DE
17738 state->record_line = noop_record_line;
17739 /* Note: sm.record_line is left as noop_record_line
924c2928
DE
17740 until we see DW_LNE_end_sequence. */
17741 }
17742}
17743
f3f5162e 17744/* Subroutine of dwarf_decode_lines to simplify it.
d9b3de22
DE
17745 Process the line number information in LH.
17746 If DECODE_FOR_PST_P is non-zero, all we do is process the line number
17747 program in order to set included_p for every referenced header. */
debd256d 17748
c906108c 17749static void
43f3e411
DE
17750dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
17751 const int decode_for_pst_p, CORE_ADDR lowpc)
c906108c 17752{
d521ce57
TT
17753 const gdb_byte *line_ptr, *extended_end;
17754 const gdb_byte *line_end;
a8c50c1f 17755 unsigned int bytes_read, extended_len;
699ca60a 17756 unsigned char op_code, extended_op;
e142c38c
DJ
17757 CORE_ADDR baseaddr;
17758 struct objfile *objfile = cu->objfile;
f3f5162e 17759 bfd *abfd = objfile->obfd;
fbf65064 17760 struct gdbarch *gdbarch = get_objfile_arch (objfile);
d9b3de22
DE
17761 /* Non-zero if we're recording line info (as opposed to building partial
17762 symtabs). */
17763 int record_lines_p = !decode_for_pst_p;
17764 /* A collection of things we need to pass to dwarf_record_line. */
17765 lnp_reader_state reader_state;
e142c38c
DJ
17766
17767 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 17768
debd256d
JB
17769 line_ptr = lh->statement_program_start;
17770 line_end = lh->statement_program_end;
c906108c 17771
d9b3de22
DE
17772 reader_state.gdbarch = gdbarch;
17773 reader_state.line_header = lh;
17774 reader_state.record_lines_p = record_lines_p;
17775
c906108c
SS
17776 /* Read the statement sequences until there's nothing left. */
17777 while (line_ptr < line_end)
17778 {
d9b3de22
DE
17779 /* The DWARF line number program state machine. */
17780 lnp_state_machine state_machine;
c906108c 17781 int end_sequence = 0;
d9b3de22
DE
17782
17783 /* Reset the state machine at the start of each sequence. */
17784 init_lnp_state_machine (&state_machine, &reader_state);
17785
17786 if (record_lines_p && lh->num_file_names >= state_machine.file)
c906108c 17787 {
aaa75496 17788 /* Start a subfile for the current file of the state machine. */
debd256d
JB
17789 /* lh->include_dirs and lh->file_names are 0-based, but the
17790 directory and file name numbers in the statement program
17791 are 1-based. */
d9b3de22 17792 struct file_entry *fe = &lh->file_names[state_machine.file - 1];
d521ce57 17793 const char *dir = NULL;
a738430d 17794
afa6c9ab 17795 if (fe->dir_index && lh->include_dirs != NULL)
debd256d 17796 dir = lh->include_dirs[fe->dir_index - 1];
4f1520fb 17797
4d663531 17798 dwarf2_start_subfile (fe->name, dir);
c906108c
SS
17799 }
17800
a738430d 17801 /* Decode the table. */
d9b3de22 17802 while (line_ptr < line_end && !end_sequence)
c906108c
SS
17803 {
17804 op_code = read_1_byte (abfd, line_ptr);
17805 line_ptr += 1;
9aa1fe7e 17806
debd256d 17807 if (op_code >= lh->opcode_base)
6e70227d 17808 {
8e07a239 17809 /* Special opcode. */
699ca60a 17810 unsigned char adj_opcode;
3e29f34a 17811 CORE_ADDR addr_adj;
a05a36a5 17812 int line_delta;
8e07a239 17813
debd256d 17814 adj_opcode = op_code - lh->opcode_base;
d9b3de22
DE
17815 addr_adj = (((state_machine.op_index
17816 + (adj_opcode / lh->line_range))
2dc7f7b3
TT
17817 / lh->maximum_ops_per_instruction)
17818 * lh->minimum_instruction_length);
d9b3de22
DE
17819 state_machine.address
17820 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17821 state_machine.op_index = ((state_machine.op_index
17822 + (adj_opcode / lh->line_range))
17823 % lh->maximum_ops_per_instruction);
a05a36a5 17824 line_delta = lh->line_base + (adj_opcode % lh->line_range);
d9b3de22 17825 state_machine.line += line_delta;
a05a36a5 17826 if (line_delta != 0)
d9b3de22
DE
17827 state_machine.line_has_non_zero_discriminator
17828 = state_machine.discriminator != 0;
17829
17830 dwarf_record_line (&reader_state, &state_machine, 0);
17831 state_machine.discriminator = 0;
9aa1fe7e
GK
17832 }
17833 else switch (op_code)
c906108c
SS
17834 {
17835 case DW_LNS_extended_op:
3e43a32a
MS
17836 extended_len = read_unsigned_leb128 (abfd, line_ptr,
17837 &bytes_read);
473b7be6 17838 line_ptr += bytes_read;
a8c50c1f 17839 extended_end = line_ptr + extended_len;
c906108c
SS
17840 extended_op = read_1_byte (abfd, line_ptr);
17841 line_ptr += 1;
17842 switch (extended_op)
17843 {
17844 case DW_LNE_end_sequence:
d9b3de22 17845 state_machine.record_line = record_line;
c906108c 17846 end_sequence = 1;
c906108c
SS
17847 break;
17848 case DW_LNE_set_address:
d9b3de22
DE
17849 {
17850 CORE_ADDR address
17851 = read_address (abfd, line_ptr, cu, &bytes_read);
17852
17853 line_ptr += bytes_read;
17854 check_line_address (cu, &state_machine, line_ptr,
17855 lowpc, address);
17856 state_machine.op_index = 0;
17857 address += baseaddr;
17858 state_machine.address
17859 = gdbarch_adjust_dwarf2_line (gdbarch, address, 0);
17860 }
c906108c
SS
17861 break;
17862 case DW_LNE_define_file:
debd256d 17863 {
d521ce57 17864 const char *cur_file;
debd256d 17865 unsigned int dir_index, mod_time, length;
6e70227d 17866
3e43a32a
MS
17867 cur_file = read_direct_string (abfd, line_ptr,
17868 &bytes_read);
debd256d
JB
17869 line_ptr += bytes_read;
17870 dir_index =
17871 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17872 line_ptr += bytes_read;
17873 mod_time =
17874 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17875 line_ptr += bytes_read;
17876 length =
17877 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17878 line_ptr += bytes_read;
17879 add_file_name (lh, cur_file, dir_index, mod_time, length);
17880 }
c906108c 17881 break;
d0c6ba3d
CC
17882 case DW_LNE_set_discriminator:
17883 /* The discriminator is not interesting to the debugger;
a05a36a5
DE
17884 just ignore it. We still need to check its value though:
17885 if there are consecutive entries for the same
17886 (non-prologue) line we want to coalesce them.
17887 PR 17276. */
d9b3de22
DE
17888 state_machine.discriminator
17889 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17890 state_machine.line_has_non_zero_discriminator
17891 |= state_machine.discriminator != 0;
a05a36a5 17892 line_ptr += bytes_read;
d0c6ba3d 17893 break;
c906108c 17894 default:
4d3c2250 17895 complaint (&symfile_complaints,
e2e0b3e5 17896 _("mangled .debug_line section"));
debd256d 17897 return;
c906108c 17898 }
a8c50c1f
DJ
17899 /* Make sure that we parsed the extended op correctly. If e.g.
17900 we expected a different address size than the producer used,
17901 we may have read the wrong number of bytes. */
17902 if (line_ptr != extended_end)
17903 {
17904 complaint (&symfile_complaints,
17905 _("mangled .debug_line section"));
17906 return;
17907 }
c906108c
SS
17908 break;
17909 case DW_LNS_copy:
d9b3de22
DE
17910 dwarf_record_line (&reader_state, &state_machine, 0);
17911 state_machine.discriminator = 0;
c906108c
SS
17912 break;
17913 case DW_LNS_advance_pc:
2dc7f7b3
TT
17914 {
17915 CORE_ADDR adjust
17916 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
3e29f34a 17917 CORE_ADDR addr_adj;
2dc7f7b3 17918
d9b3de22 17919 addr_adj = (((state_machine.op_index + adjust)
2dc7f7b3
TT
17920 / lh->maximum_ops_per_instruction)
17921 * lh->minimum_instruction_length);
d9b3de22
DE
17922 state_machine.address
17923 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17924 state_machine.op_index = ((state_machine.op_index + adjust)
17925 % lh->maximum_ops_per_instruction);
2dc7f7b3
TT
17926 line_ptr += bytes_read;
17927 }
c906108c
SS
17928 break;
17929 case DW_LNS_advance_line:
a05a36a5
DE
17930 {
17931 int line_delta
17932 = read_signed_leb128 (abfd, line_ptr, &bytes_read);
17933
d9b3de22 17934 state_machine.line += line_delta;
a05a36a5 17935 if (line_delta != 0)
d9b3de22
DE
17936 state_machine.line_has_non_zero_discriminator
17937 = state_machine.discriminator != 0;
a05a36a5
DE
17938 line_ptr += bytes_read;
17939 }
c906108c
SS
17940 break;
17941 case DW_LNS_set_file:
d9b3de22
DE
17942 {
17943 /* The arrays lh->include_dirs and lh->file_names are
17944 0-based, but the directory and file name numbers in
17945 the statement program are 1-based. */
17946 struct file_entry *fe;
17947 const char *dir = NULL;
17948
17949 state_machine.file = read_unsigned_leb128 (abfd, line_ptr,
17950 &bytes_read);
17951 line_ptr += bytes_read;
17952 if (state_machine.file == 0
17953 || state_machine.file - 1 >= lh->num_file_names)
17954 dwarf2_debug_line_missing_file_complaint ();
17955 else
17956 {
17957 fe = &lh->file_names[state_machine.file - 1];
17958 if (fe->dir_index && lh->include_dirs != NULL)
17959 dir = lh->include_dirs[fe->dir_index - 1];
17960 if (record_lines_p)
17961 {
17962 state_machine.last_subfile = current_subfile;
17963 state_machine.line_has_non_zero_discriminator
17964 = state_machine.discriminator != 0;
17965 dwarf2_start_subfile (fe->name, dir);
17966 }
17967 }
17968 }
c906108c
SS
17969 break;
17970 case DW_LNS_set_column:
0ad93d4f 17971 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
c906108c
SS
17972 line_ptr += bytes_read;
17973 break;
17974 case DW_LNS_negate_stmt:
d9b3de22 17975 state_machine.is_stmt = (!state_machine.is_stmt);
c906108c
SS
17976 break;
17977 case DW_LNS_set_basic_block:
c906108c 17978 break;
c2c6d25f
JM
17979 /* Add to the address register of the state machine the
17980 address increment value corresponding to special opcode
a738430d
MK
17981 255. I.e., this value is scaled by the minimum
17982 instruction length since special opcode 255 would have
b021a221 17983 scaled the increment. */
c906108c 17984 case DW_LNS_const_add_pc:
2dc7f7b3
TT
17985 {
17986 CORE_ADDR adjust = (255 - lh->opcode_base) / lh->line_range;
3e29f34a 17987 CORE_ADDR addr_adj;
2dc7f7b3 17988
d9b3de22 17989 addr_adj = (((state_machine.op_index + adjust)
2dc7f7b3
TT
17990 / lh->maximum_ops_per_instruction)
17991 * lh->minimum_instruction_length);
d9b3de22
DE
17992 state_machine.address
17993 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17994 state_machine.op_index = ((state_machine.op_index + adjust)
17995 % lh->maximum_ops_per_instruction);
2dc7f7b3 17996 }
c906108c
SS
17997 break;
17998 case DW_LNS_fixed_advance_pc:
3e29f34a
MR
17999 {
18000 CORE_ADDR addr_adj;
18001
18002 addr_adj = read_2_bytes (abfd, line_ptr);
d9b3de22
DE
18003 state_machine.address
18004 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
18005 state_machine.op_index = 0;
3e29f34a
MR
18006 line_ptr += 2;
18007 }
c906108c 18008 break;
9aa1fe7e 18009 default:
a738430d
MK
18010 {
18011 /* Unknown standard opcode, ignore it. */
9aa1fe7e 18012 int i;
a738430d 18013
debd256d 18014 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
9aa1fe7e
GK
18015 {
18016 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
18017 line_ptr += bytes_read;
18018 }
18019 }
c906108c
SS
18020 }
18021 }
d9b3de22
DE
18022
18023 if (!end_sequence)
18024 dwarf2_debug_line_missing_end_sequence_complaint ();
18025
18026 /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
18027 in which case we still finish recording the last line). */
18028 dwarf_record_line (&reader_state, &state_machine, 1);
c906108c 18029 }
f3f5162e
DE
18030}
18031
18032/* Decode the Line Number Program (LNP) for the given line_header
18033 structure and CU. The actual information extracted and the type
18034 of structures created from the LNP depends on the value of PST.
18035
18036 1. If PST is NULL, then this procedure uses the data from the program
18037 to create all necessary symbol tables, and their linetables.
18038
18039 2. If PST is not NULL, this procedure reads the program to determine
18040 the list of files included by the unit represented by PST, and
18041 builds all the associated partial symbol tables.
18042
18043 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
18044 It is used for relative paths in the line table.
18045 NOTE: When processing partial symtabs (pst != NULL),
18046 comp_dir == pst->dirname.
18047
18048 NOTE: It is important that psymtabs have the same file name (via strcmp)
18049 as the corresponding symtab. Since COMP_DIR is not used in the name of the
18050 symtab we don't use it in the name of the psymtabs we create.
18051 E.g. expand_line_sal requires this when finding psymtabs to expand.
c3b7b696
YQ
18052 A good testcase for this is mb-inline.exp.
18053
527f3840
JK
18054 LOWPC is the lowest address in CU (or 0 if not known).
18055
18056 Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
18057 for its PC<->lines mapping information. Otherwise only the filename
18058 table is read in. */
f3f5162e
DE
18059
18060static void
18061dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
c3b7b696 18062 struct dwarf2_cu *cu, struct partial_symtab *pst,
527f3840 18063 CORE_ADDR lowpc, int decode_mapping)
f3f5162e
DE
18064{
18065 struct objfile *objfile = cu->objfile;
18066 const int decode_for_pst_p = (pst != NULL);
f3f5162e 18067
527f3840
JK
18068 if (decode_mapping)
18069 dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
aaa75496
JB
18070
18071 if (decode_for_pst_p)
18072 {
18073 int file_index;
18074
18075 /* Now that we're done scanning the Line Header Program, we can
18076 create the psymtab of each included file. */
18077 for (file_index = 0; file_index < lh->num_file_names; file_index++)
18078 if (lh->file_names[file_index].included_p == 1)
18079 {
d521ce57 18080 const char *include_name =
c6da4cef
DE
18081 psymtab_include_file_name (lh, file_index, pst, comp_dir);
18082 if (include_name != NULL)
aaa75496
JB
18083 dwarf2_create_include_psymtab (include_name, pst, objfile);
18084 }
18085 }
cb1df416
DJ
18086 else
18087 {
18088 /* Make sure a symtab is created for every file, even files
18089 which contain only variables (i.e. no code with associated
18090 line numbers). */
43f3e411 18091 struct compunit_symtab *cust = buildsym_compunit_symtab ();
cb1df416 18092 int i;
cb1df416
DJ
18093
18094 for (i = 0; i < lh->num_file_names; i++)
18095 {
d521ce57 18096 const char *dir = NULL;
f3f5162e 18097 struct file_entry *fe;
9a619af0 18098
cb1df416 18099 fe = &lh->file_names[i];
afa6c9ab 18100 if (fe->dir_index && lh->include_dirs != NULL)
cb1df416 18101 dir = lh->include_dirs[fe->dir_index - 1];
4d663531 18102 dwarf2_start_subfile (fe->name, dir);
cb1df416 18103
cb1df416 18104 if (current_subfile->symtab == NULL)
43f3e411
DE
18105 {
18106 current_subfile->symtab
18107 = allocate_symtab (cust, current_subfile->name);
18108 }
cb1df416
DJ
18109 fe->symtab = current_subfile->symtab;
18110 }
18111 }
c906108c
SS
18112}
18113
18114/* Start a subfile for DWARF. FILENAME is the name of the file and
18115 DIRNAME the name of the source directory which contains FILENAME
4d663531 18116 or NULL if not known.
c906108c
SS
18117 This routine tries to keep line numbers from identical absolute and
18118 relative file names in a common subfile.
18119
18120 Using the `list' example from the GDB testsuite, which resides in
18121 /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
18122 of /srcdir/list0.c yields the following debugging information for list0.c:
18123
c5aa993b 18124 DW_AT_name: /srcdir/list0.c
4d663531 18125 DW_AT_comp_dir: /compdir
357e46e7 18126 files.files[0].name: list0.h
c5aa993b 18127 files.files[0].dir: /srcdir
357e46e7 18128 files.files[1].name: list0.c
c5aa993b 18129 files.files[1].dir: /srcdir
c906108c
SS
18130
18131 The line number information for list0.c has to end up in a single
4f1520fb
FR
18132 subfile, so that `break /srcdir/list0.c:1' works as expected.
18133 start_subfile will ensure that this happens provided that we pass the
18134 concatenation of files.files[1].dir and files.files[1].name as the
18135 subfile's name. */
c906108c
SS
18136
18137static void
4d663531 18138dwarf2_start_subfile (const char *filename, const char *dirname)
c906108c 18139{
d521ce57 18140 char *copy = NULL;
4f1520fb 18141
4d663531 18142 /* In order not to lose the line information directory,
4f1520fb
FR
18143 we concatenate it to the filename when it makes sense.
18144 Note that the Dwarf3 standard says (speaking of filenames in line
18145 information): ``The directory index is ignored for file names
18146 that represent full path names''. Thus ignoring dirname in the
18147 `else' branch below isn't an issue. */
c906108c 18148
d5166ae1 18149 if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
d521ce57
TT
18150 {
18151 copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
18152 filename = copy;
18153 }
c906108c 18154
4d663531 18155 start_subfile (filename);
4f1520fb 18156
d521ce57
TT
18157 if (copy != NULL)
18158 xfree (copy);
c906108c
SS
18159}
18160
f4dc4d17
DE
18161/* Start a symtab for DWARF.
18162 NAME, COMP_DIR, LOW_PC are passed to start_symtab. */
18163
43f3e411 18164static struct compunit_symtab *
f4dc4d17 18165dwarf2_start_symtab (struct dwarf2_cu *cu,
15d034d0 18166 const char *name, const char *comp_dir, CORE_ADDR low_pc)
f4dc4d17 18167{
43f3e411
DE
18168 struct compunit_symtab *cust
18169 = start_symtab (cu->objfile, name, comp_dir, low_pc);
18170
f4dc4d17
DE
18171 record_debugformat ("DWARF 2");
18172 record_producer (cu->producer);
18173
18174 /* We assume that we're processing GCC output. */
18175 processing_gcc_compilation = 2;
18176
4d4ec4e5 18177 cu->processing_has_namespace_info = 0;
43f3e411
DE
18178
18179 return cust;
f4dc4d17
DE
18180}
18181
4c2df51b
DJ
18182static void
18183var_decode_location (struct attribute *attr, struct symbol *sym,
e7c27a73 18184 struct dwarf2_cu *cu)
4c2df51b 18185{
e7c27a73
DJ
18186 struct objfile *objfile = cu->objfile;
18187 struct comp_unit_head *cu_header = &cu->header;
18188
4c2df51b
DJ
18189 /* NOTE drow/2003-01-30: There used to be a comment and some special
18190 code here to turn a symbol with DW_AT_external and a
18191 SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol. This was
18192 necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
18193 with some versions of binutils) where shared libraries could have
18194 relocations against symbols in their debug information - the
18195 minimal symbol would have the right address, but the debug info
18196 would not. It's no longer necessary, because we will explicitly
18197 apply relocations when we read in the debug information now. */
18198
18199 /* A DW_AT_location attribute with no contents indicates that a
18200 variable has been optimized away. */
18201 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
18202 {
f1e6e072 18203 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
4c2df51b
DJ
18204 return;
18205 }
18206
18207 /* Handle one degenerate form of location expression specially, to
18208 preserve GDB's previous behavior when section offsets are
3019eac3
DE
18209 specified. If this is just a DW_OP_addr or DW_OP_GNU_addr_index
18210 then mark this symbol as LOC_STATIC. */
4c2df51b
DJ
18211
18212 if (attr_form_is_block (attr)
3019eac3
DE
18213 && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
18214 && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
18215 || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
18216 && (DW_BLOCK (attr)->size
18217 == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
4c2df51b 18218 {
891d2f0b 18219 unsigned int dummy;
4c2df51b 18220
3019eac3
DE
18221 if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
18222 SYMBOL_VALUE_ADDRESS (sym) =
18223 read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
18224 else
18225 SYMBOL_VALUE_ADDRESS (sym) =
18226 read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
f1e6e072 18227 SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
4c2df51b
DJ
18228 fixup_symbol_section (sym, objfile);
18229 SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
18230 SYMBOL_SECTION (sym));
4c2df51b
DJ
18231 return;
18232 }
18233
18234 /* NOTE drow/2002-01-30: It might be worthwhile to have a static
18235 expression evaluator, and use LOC_COMPUTED only when necessary
18236 (i.e. when the value of a register or memory location is
18237 referenced, or a thread-local block, etc.). Then again, it might
18238 not be worthwhile. I'm assuming that it isn't unless performance
18239 or memory numbers show me otherwise. */
18240
f1e6e072 18241 dwarf2_symbol_mark_computed (attr, sym, cu, 0);
8be455d7 18242
f1e6e072 18243 if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
8be455d7 18244 cu->has_loclist = 1;
4c2df51b
DJ
18245}
18246
c906108c
SS
18247/* Given a pointer to a DWARF information entry, figure out if we need
18248 to make a symbol table entry for it, and if so, create a new entry
18249 and return a pointer to it.
18250 If TYPE is NULL, determine symbol type from the die, otherwise
34eaf542
TT
18251 used the passed type.
18252 If SPACE is not NULL, use it to hold the new symbol. If it is
18253 NULL, allocate a new symbol on the objfile's obstack. */
c906108c
SS
18254
18255static struct symbol *
34eaf542
TT
18256new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
18257 struct symbol *space)
c906108c 18258{
e7c27a73 18259 struct objfile *objfile = cu->objfile;
3e29f34a 18260 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c 18261 struct symbol *sym = NULL;
15d034d0 18262 const char *name;
c906108c
SS
18263 struct attribute *attr = NULL;
18264 struct attribute *attr2 = NULL;
e142c38c 18265 CORE_ADDR baseaddr;
e37fd15a
SW
18266 struct pending **list_to_add = NULL;
18267
edb3359d 18268 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
e142c38c
DJ
18269
18270 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 18271
94af9270 18272 name = dwarf2_name (die, cu);
c906108c
SS
18273 if (name)
18274 {
94af9270 18275 const char *linkagename;
34eaf542 18276 int suppress_add = 0;
94af9270 18277
34eaf542
TT
18278 if (space)
18279 sym = space;
18280 else
e623cf5d 18281 sym = allocate_symbol (objfile);
c906108c 18282 OBJSTAT (objfile, n_syms++);
2de7ced7
DJ
18283
18284 /* Cache this symbol's name and the name's demangled form (if any). */
f85f34ed 18285 SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
94af9270
KS
18286 linkagename = dwarf2_physname (name, die, cu);
18287 SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
c906108c 18288
f55ee35c
JK
18289 /* Fortran does not have mangling standard and the mangling does differ
18290 between gfortran, iFort etc. */
18291 if (cu->language == language_fortran
b250c185 18292 && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
29df156d 18293 symbol_set_demangled_name (&(sym->ginfo),
cfc594ee 18294 dwarf2_full_name (name, die, cu),
29df156d 18295 NULL);
f55ee35c 18296
c906108c 18297 /* Default assumptions.
c5aa993b 18298 Use the passed type or decode it from the die. */
176620f1 18299 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
f1e6e072 18300 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
c906108c
SS
18301 if (type != NULL)
18302 SYMBOL_TYPE (sym) = type;
18303 else
e7c27a73 18304 SYMBOL_TYPE (sym) = die_type (die, cu);
edb3359d
DJ
18305 attr = dwarf2_attr (die,
18306 inlined_func ? DW_AT_call_line : DW_AT_decl_line,
18307 cu);
c906108c
SS
18308 if (attr)
18309 {
18310 SYMBOL_LINE (sym) = DW_UNSND (attr);
18311 }
cb1df416 18312
edb3359d
DJ
18313 attr = dwarf2_attr (die,
18314 inlined_func ? DW_AT_call_file : DW_AT_decl_file,
18315 cu);
cb1df416
DJ
18316 if (attr)
18317 {
18318 int file_index = DW_UNSND (attr);
9a619af0 18319
cb1df416
DJ
18320 if (cu->line_header == NULL
18321 || file_index > cu->line_header->num_file_names)
18322 complaint (&symfile_complaints,
18323 _("file index out of range"));
1c3d648d 18324 else if (file_index > 0)
cb1df416
DJ
18325 {
18326 struct file_entry *fe;
9a619af0 18327
cb1df416 18328 fe = &cu->line_header->file_names[file_index - 1];
08be3fe3 18329 symbol_set_symtab (sym, fe->symtab);
cb1df416
DJ
18330 }
18331 }
18332
c906108c
SS
18333 switch (die->tag)
18334 {
18335 case DW_TAG_label:
e142c38c 18336 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
c906108c 18337 if (attr)
3e29f34a
MR
18338 {
18339 CORE_ADDR addr;
18340
18341 addr = attr_value_as_address (attr);
18342 addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
18343 SYMBOL_VALUE_ADDRESS (sym) = addr;
18344 }
0f5238ed
TT
18345 SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
18346 SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
f1e6e072 18347 SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
0f5238ed 18348 add_symbol_to_list (sym, cu->list_in_scope);
c906108c
SS
18349 break;
18350 case DW_TAG_subprogram:
18351 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18352 finish_block. */
f1e6e072 18353 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
e142c38c 18354 attr2 = dwarf2_attr (die, DW_AT_external, cu);
2cfa0c8d
JB
18355 if ((attr2 && (DW_UNSND (attr2) != 0))
18356 || cu->language == language_ada)
c906108c 18357 {
2cfa0c8d
JB
18358 /* Subprograms marked external are stored as a global symbol.
18359 Ada subprograms, whether marked external or not, are always
18360 stored as a global symbol, because we want to be able to
18361 access them globally. For instance, we want to be able
18362 to break on a nested subprogram without having to
18363 specify the context. */
e37fd15a 18364 list_to_add = &global_symbols;
c906108c
SS
18365 }
18366 else
18367 {
e37fd15a 18368 list_to_add = cu->list_in_scope;
c906108c
SS
18369 }
18370 break;
edb3359d
DJ
18371 case DW_TAG_inlined_subroutine:
18372 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18373 finish_block. */
f1e6e072 18374 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
edb3359d 18375 SYMBOL_INLINED (sym) = 1;
481860b3 18376 list_to_add = cu->list_in_scope;
edb3359d 18377 break;
34eaf542
TT
18378 case DW_TAG_template_value_param:
18379 suppress_add = 1;
18380 /* Fall through. */
72929c62 18381 case DW_TAG_constant:
c906108c 18382 case DW_TAG_variable:
254e6b9e 18383 case DW_TAG_member:
0963b4bd
MS
18384 /* Compilation with minimal debug info may result in
18385 variables with missing type entries. Change the
18386 misleading `void' type to something sensible. */
c906108c 18387 if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
64c50499 18388 SYMBOL_TYPE (sym)
46bf5051 18389 = objfile_type (objfile)->nodebug_data_symbol;
64c50499 18390
e142c38c 18391 attr = dwarf2_attr (die, DW_AT_const_value, cu);
254e6b9e
DE
18392 /* In the case of DW_TAG_member, we should only be called for
18393 static const members. */
18394 if (die->tag == DW_TAG_member)
18395 {
3863f96c
DE
18396 /* dwarf2_add_field uses die_is_declaration,
18397 so we do the same. */
254e6b9e
DE
18398 gdb_assert (die_is_declaration (die, cu));
18399 gdb_assert (attr);
18400 }
c906108c
SS
18401 if (attr)
18402 {
e7c27a73 18403 dwarf2_const_value (attr, sym, cu);
e142c38c 18404 attr2 = dwarf2_attr (die, DW_AT_external, cu);
e37fd15a 18405 if (!suppress_add)
34eaf542
TT
18406 {
18407 if (attr2 && (DW_UNSND (attr2) != 0))
e37fd15a 18408 list_to_add = &global_symbols;
34eaf542 18409 else
e37fd15a 18410 list_to_add = cu->list_in_scope;
34eaf542 18411 }
c906108c
SS
18412 break;
18413 }
e142c38c 18414 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
18415 if (attr)
18416 {
e7c27a73 18417 var_decode_location (attr, sym, cu);
e142c38c 18418 attr2 = dwarf2_attr (die, DW_AT_external, cu);
4357ac6c
TT
18419
18420 /* Fortran explicitly imports any global symbols to the local
18421 scope by DW_TAG_common_block. */
18422 if (cu->language == language_fortran && die->parent
18423 && die->parent->tag == DW_TAG_common_block)
18424 attr2 = NULL;
18425
caac4577
JG
18426 if (SYMBOL_CLASS (sym) == LOC_STATIC
18427 && SYMBOL_VALUE_ADDRESS (sym) == 0
18428 && !dwarf2_per_objfile->has_section_at_zero)
18429 {
18430 /* When a static variable is eliminated by the linker,
18431 the corresponding debug information is not stripped
18432 out, but the variable address is set to null;
18433 do not add such variables into symbol table. */
18434 }
18435 else if (attr2 && (DW_UNSND (attr2) != 0))
1c809c68 18436 {
f55ee35c
JK
18437 /* Workaround gfortran PR debug/40040 - it uses
18438 DW_AT_location for variables in -fPIC libraries which may
18439 get overriden by other libraries/executable and get
18440 a different address. Resolve it by the minimal symbol
18441 which may come from inferior's executable using copy
18442 relocation. Make this workaround only for gfortran as for
18443 other compilers GDB cannot guess the minimal symbol
18444 Fortran mangling kind. */
18445 if (cu->language == language_fortran && die->parent
18446 && die->parent->tag == DW_TAG_module
18447 && cu->producer
61012eef 18448 && startswith (cu->producer, "GNU Fortran "))
f1e6e072 18449 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
f55ee35c 18450
1c809c68
TT
18451 /* A variable with DW_AT_external is never static,
18452 but it may be block-scoped. */
18453 list_to_add = (cu->list_in_scope == &file_symbols
18454 ? &global_symbols : cu->list_in_scope);
1c809c68 18455 }
c906108c 18456 else
e37fd15a 18457 list_to_add = cu->list_in_scope;
c906108c
SS
18458 }
18459 else
18460 {
18461 /* We do not know the address of this symbol.
c5aa993b
JM
18462 If it is an external symbol and we have type information
18463 for it, enter the symbol as a LOC_UNRESOLVED symbol.
18464 The address of the variable will then be determined from
18465 the minimal symbol table whenever the variable is
18466 referenced. */
e142c38c 18467 attr2 = dwarf2_attr (die, DW_AT_external, cu);
0971de02
TT
18468
18469 /* Fortran explicitly imports any global symbols to the local
18470 scope by DW_TAG_common_block. */
18471 if (cu->language == language_fortran && die->parent
18472 && die->parent->tag == DW_TAG_common_block)
18473 {
18474 /* SYMBOL_CLASS doesn't matter here because
18475 read_common_block is going to reset it. */
18476 if (!suppress_add)
18477 list_to_add = cu->list_in_scope;
18478 }
18479 else if (attr2 && (DW_UNSND (attr2) != 0)
18480 && dwarf2_attr (die, DW_AT_type, cu) != NULL)
c906108c 18481 {
0fe7935b
DJ
18482 /* A variable with DW_AT_external is never static, but it
18483 may be block-scoped. */
18484 list_to_add = (cu->list_in_scope == &file_symbols
18485 ? &global_symbols : cu->list_in_scope);
18486
f1e6e072 18487 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
c906108c 18488 }
442ddf59
JK
18489 else if (!die_is_declaration (die, cu))
18490 {
18491 /* Use the default LOC_OPTIMIZED_OUT class. */
18492 gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
e37fd15a
SW
18493 if (!suppress_add)
18494 list_to_add = cu->list_in_scope;
442ddf59 18495 }
c906108c
SS
18496 }
18497 break;
18498 case DW_TAG_formal_parameter:
edb3359d
DJ
18499 /* If we are inside a function, mark this as an argument. If
18500 not, we might be looking at an argument to an inlined function
18501 when we do not have enough information to show inlined frames;
18502 pretend it's a local variable in that case so that the user can
18503 still see it. */
18504 if (context_stack_depth > 0
18505 && context_stack[context_stack_depth - 1].name != NULL)
18506 SYMBOL_IS_ARGUMENT (sym) = 1;
e142c38c 18507 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
18508 if (attr)
18509 {
e7c27a73 18510 var_decode_location (attr, sym, cu);
c906108c 18511 }
e142c38c 18512 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
18513 if (attr)
18514 {
e7c27a73 18515 dwarf2_const_value (attr, sym, cu);
c906108c 18516 }
f346a30d 18517
e37fd15a 18518 list_to_add = cu->list_in_scope;
c906108c
SS
18519 break;
18520 case DW_TAG_unspecified_parameters:
18521 /* From varargs functions; gdb doesn't seem to have any
18522 interest in this information, so just ignore it for now.
18523 (FIXME?) */
18524 break;
34eaf542
TT
18525 case DW_TAG_template_type_param:
18526 suppress_add = 1;
18527 /* Fall through. */
c906108c 18528 case DW_TAG_class_type:
680b30c7 18529 case DW_TAG_interface_type:
c906108c
SS
18530 case DW_TAG_structure_type:
18531 case DW_TAG_union_type:
72019c9c 18532 case DW_TAG_set_type:
c906108c 18533 case DW_TAG_enumeration_type:
f1e6e072 18534 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
176620f1 18535 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
c906108c 18536
63d06c5c 18537 {
987504bb 18538 /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't
63d06c5c
DC
18539 really ever be static objects: otherwise, if you try
18540 to, say, break of a class's method and you're in a file
18541 which doesn't mention that class, it won't work unless
18542 the check for all static symbols in lookup_symbol_aux
18543 saves you. See the OtherFileClass tests in
18544 gdb.c++/namespace.exp. */
18545
e37fd15a 18546 if (!suppress_add)
34eaf542 18547 {
34eaf542
TT
18548 list_to_add = (cu->list_in_scope == &file_symbols
18549 && (cu->language == language_cplus
18550 || cu->language == language_java)
18551 ? &global_symbols : cu->list_in_scope);
63d06c5c 18552
64382290
TT
18553 /* The semantics of C++ state that "struct foo {
18554 ... }" also defines a typedef for "foo". A Java
18555 class declaration also defines a typedef for the
18556 class. */
18557 if (cu->language == language_cplus
18558 || cu->language == language_java
18559 || cu->language == language_ada)
18560 {
18561 /* The symbol's name is already allocated along
18562 with this objfile, so we don't need to
18563 duplicate it for the type. */
18564 if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
18565 TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
18566 }
63d06c5c
DC
18567 }
18568 }
c906108c
SS
18569 break;
18570 case DW_TAG_typedef:
f1e6e072 18571 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
63d06c5c 18572 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e37fd15a 18573 list_to_add = cu->list_in_scope;
63d06c5c 18574 break;
c906108c 18575 case DW_TAG_base_type:
a02abb62 18576 case DW_TAG_subrange_type:
f1e6e072 18577 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
176620f1 18578 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e37fd15a 18579 list_to_add = cu->list_in_scope;
c906108c
SS
18580 break;
18581 case DW_TAG_enumerator:
e142c38c 18582 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
18583 if (attr)
18584 {
e7c27a73 18585 dwarf2_const_value (attr, sym, cu);
c906108c 18586 }
63d06c5c
DC
18587 {
18588 /* NOTE: carlton/2003-11-10: See comment above in the
18589 DW_TAG_class_type, etc. block. */
18590
e142c38c 18591 list_to_add = (cu->list_in_scope == &file_symbols
987504bb
JJ
18592 && (cu->language == language_cplus
18593 || cu->language == language_java)
e142c38c 18594 ? &global_symbols : cu->list_in_scope);
63d06c5c 18595 }
c906108c 18596 break;
74921315 18597 case DW_TAG_imported_declaration:
5c4e30ca 18598 case DW_TAG_namespace:
f1e6e072 18599 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
e37fd15a 18600 list_to_add = &global_symbols;
5c4e30ca 18601 break;
530e8392
KB
18602 case DW_TAG_module:
18603 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18604 SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
18605 list_to_add = &global_symbols;
18606 break;
4357ac6c 18607 case DW_TAG_common_block:
f1e6e072 18608 SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
4357ac6c
TT
18609 SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
18610 add_symbol_to_list (sym, cu->list_in_scope);
18611 break;
c906108c
SS
18612 default:
18613 /* Not a tag we recognize. Hopefully we aren't processing
18614 trash data, but since we must specifically ignore things
18615 we don't recognize, there is nothing else we should do at
0963b4bd 18616 this point. */
e2e0b3e5 18617 complaint (&symfile_complaints, _("unsupported tag: '%s'"),
4d3c2250 18618 dwarf_tag_name (die->tag));
c906108c
SS
18619 break;
18620 }
df8a16a1 18621
e37fd15a
SW
18622 if (suppress_add)
18623 {
18624 sym->hash_next = objfile->template_symbols;
18625 objfile->template_symbols = sym;
18626 list_to_add = NULL;
18627 }
18628
18629 if (list_to_add != NULL)
18630 add_symbol_to_list (sym, list_to_add);
18631
df8a16a1
DJ
18632 /* For the benefit of old versions of GCC, check for anonymous
18633 namespaces based on the demangled name. */
4d4ec4e5 18634 if (!cu->processing_has_namespace_info
94af9270 18635 && cu->language == language_cplus)
a10964d1 18636 cp_scan_for_anonymous_namespaces (sym, objfile);
c906108c
SS
18637 }
18638 return (sym);
18639}
18640
34eaf542
TT
18641/* A wrapper for new_symbol_full that always allocates a new symbol. */
18642
18643static struct symbol *
18644new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
18645{
18646 return new_symbol_full (die, type, cu, NULL);
18647}
18648
98bfdba5
PA
18649/* Given an attr with a DW_FORM_dataN value in host byte order,
18650 zero-extend it as appropriate for the symbol's type. The DWARF
18651 standard (v4) is not entirely clear about the meaning of using
18652 DW_FORM_dataN for a constant with a signed type, where the type is
18653 wider than the data. The conclusion of a discussion on the DWARF
18654 list was that this is unspecified. We choose to always zero-extend
18655 because that is the interpretation long in use by GCC. */
c906108c 18656
98bfdba5 18657static gdb_byte *
ff39bb5e 18658dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
12df843f 18659 struct dwarf2_cu *cu, LONGEST *value, int bits)
c906108c 18660{
e7c27a73 18661 struct objfile *objfile = cu->objfile;
e17a4113
UW
18662 enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
18663 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
98bfdba5
PA
18664 LONGEST l = DW_UNSND (attr);
18665
18666 if (bits < sizeof (*value) * 8)
18667 {
18668 l &= ((LONGEST) 1 << bits) - 1;
18669 *value = l;
18670 }
18671 else if (bits == sizeof (*value) * 8)
18672 *value = l;
18673 else
18674 {
18675 gdb_byte *bytes = obstack_alloc (obstack, bits / 8);
18676 store_unsigned_integer (bytes, bits / 8, byte_order, l);
18677 return bytes;
18678 }
18679
18680 return NULL;
18681}
18682
18683/* Read a constant value from an attribute. Either set *VALUE, or if
18684 the value does not fit in *VALUE, set *BYTES - either already
18685 allocated on the objfile obstack, or newly allocated on OBSTACK,
18686 or, set *BATON, if we translated the constant to a location
18687 expression. */
18688
18689static void
ff39bb5e 18690dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
98bfdba5
PA
18691 const char *name, struct obstack *obstack,
18692 struct dwarf2_cu *cu,
d521ce57 18693 LONGEST *value, const gdb_byte **bytes,
98bfdba5
PA
18694 struct dwarf2_locexpr_baton **baton)
18695{
18696 struct objfile *objfile = cu->objfile;
18697 struct comp_unit_head *cu_header = &cu->header;
c906108c 18698 struct dwarf_block *blk;
98bfdba5
PA
18699 enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
18700 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
18701
18702 *value = 0;
18703 *bytes = NULL;
18704 *baton = NULL;
c906108c
SS
18705
18706 switch (attr->form)
18707 {
18708 case DW_FORM_addr:
3019eac3 18709 case DW_FORM_GNU_addr_index:
ac56253d 18710 {
ac56253d
TT
18711 gdb_byte *data;
18712
98bfdba5
PA
18713 if (TYPE_LENGTH (type) != cu_header->addr_size)
18714 dwarf2_const_value_length_mismatch_complaint (name,
ac56253d 18715 cu_header->addr_size,
98bfdba5 18716 TYPE_LENGTH (type));
ac56253d
TT
18717 /* Symbols of this form are reasonably rare, so we just
18718 piggyback on the existing location code rather than writing
18719 a new implementation of symbol_computed_ops. */
7919a973 18720 *baton = obstack_alloc (obstack, sizeof (struct dwarf2_locexpr_baton));
98bfdba5
PA
18721 (*baton)->per_cu = cu->per_cu;
18722 gdb_assert ((*baton)->per_cu);
ac56253d 18723
98bfdba5 18724 (*baton)->size = 2 + cu_header->addr_size;
7919a973 18725 data = obstack_alloc (obstack, (*baton)->size);
98bfdba5 18726 (*baton)->data = data;
ac56253d
TT
18727
18728 data[0] = DW_OP_addr;
18729 store_unsigned_integer (&data[1], cu_header->addr_size,
18730 byte_order, DW_ADDR (attr));
18731 data[cu_header->addr_size + 1] = DW_OP_stack_value;
ac56253d 18732 }
c906108c 18733 break;
4ac36638 18734 case DW_FORM_string:
93b5768b 18735 case DW_FORM_strp:
3019eac3 18736 case DW_FORM_GNU_str_index:
36586728 18737 case DW_FORM_GNU_strp_alt:
98bfdba5
PA
18738 /* DW_STRING is already allocated on the objfile obstack, point
18739 directly to it. */
d521ce57 18740 *bytes = (const gdb_byte *) DW_STRING (attr);
93b5768b 18741 break;
c906108c
SS
18742 case DW_FORM_block1:
18743 case DW_FORM_block2:
18744 case DW_FORM_block4:
18745 case DW_FORM_block:
2dc7f7b3 18746 case DW_FORM_exprloc:
c906108c 18747 blk = DW_BLOCK (attr);
98bfdba5
PA
18748 if (TYPE_LENGTH (type) != blk->size)
18749 dwarf2_const_value_length_mismatch_complaint (name, blk->size,
18750 TYPE_LENGTH (type));
18751 *bytes = blk->data;
c906108c 18752 break;
2df3850c
JM
18753
18754 /* The DW_AT_const_value attributes are supposed to carry the
18755 symbol's value "represented as it would be on the target
18756 architecture." By the time we get here, it's already been
18757 converted to host endianness, so we just need to sign- or
18758 zero-extend it as appropriate. */
18759 case DW_FORM_data1:
3aef2284 18760 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
2df3850c 18761 break;
c906108c 18762 case DW_FORM_data2:
3aef2284 18763 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
2df3850c 18764 break;
c906108c 18765 case DW_FORM_data4:
3aef2284 18766 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
2df3850c 18767 break;
c906108c 18768 case DW_FORM_data8:
3aef2284 18769 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
2df3850c
JM
18770 break;
18771
c906108c 18772 case DW_FORM_sdata:
98bfdba5 18773 *value = DW_SND (attr);
2df3850c
JM
18774 break;
18775
c906108c 18776 case DW_FORM_udata:
98bfdba5 18777 *value = DW_UNSND (attr);
c906108c 18778 break;
2df3850c 18779
c906108c 18780 default:
4d3c2250 18781 complaint (&symfile_complaints,
e2e0b3e5 18782 _("unsupported const value attribute form: '%s'"),
4d3c2250 18783 dwarf_form_name (attr->form));
98bfdba5 18784 *value = 0;
c906108c
SS
18785 break;
18786 }
18787}
18788
2df3850c 18789
98bfdba5
PA
18790/* Copy constant value from an attribute to a symbol. */
18791
2df3850c 18792static void
ff39bb5e 18793dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
98bfdba5 18794 struct dwarf2_cu *cu)
2df3850c 18795{
98bfdba5
PA
18796 struct objfile *objfile = cu->objfile;
18797 struct comp_unit_head *cu_header = &cu->header;
12df843f 18798 LONGEST value;
d521ce57 18799 const gdb_byte *bytes;
98bfdba5 18800 struct dwarf2_locexpr_baton *baton;
2df3850c 18801
98bfdba5
PA
18802 dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
18803 SYMBOL_PRINT_NAME (sym),
18804 &objfile->objfile_obstack, cu,
18805 &value, &bytes, &baton);
2df3850c 18806
98bfdba5
PA
18807 if (baton != NULL)
18808 {
98bfdba5 18809 SYMBOL_LOCATION_BATON (sym) = baton;
f1e6e072 18810 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
98bfdba5
PA
18811 }
18812 else if (bytes != NULL)
18813 {
18814 SYMBOL_VALUE_BYTES (sym) = bytes;
f1e6e072 18815 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
98bfdba5
PA
18816 }
18817 else
18818 {
18819 SYMBOL_VALUE (sym) = value;
f1e6e072 18820 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
98bfdba5 18821 }
2df3850c
JM
18822}
18823
c906108c
SS
18824/* Return the type of the die in question using its DW_AT_type attribute. */
18825
18826static struct type *
e7c27a73 18827die_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 18828{
c906108c 18829 struct attribute *type_attr;
c906108c 18830
e142c38c 18831 type_attr = dwarf2_attr (die, DW_AT_type, cu);
c906108c
SS
18832 if (!type_attr)
18833 {
18834 /* A missing DW_AT_type represents a void type. */
46bf5051 18835 return objfile_type (cu->objfile)->builtin_void;
c906108c 18836 }
348e048f 18837
673bfd45 18838 return lookup_die_type (die, type_attr, cu);
c906108c
SS
18839}
18840
b4ba55a1
JB
18841/* True iff CU's producer generates GNAT Ada auxiliary information
18842 that allows to find parallel types through that information instead
18843 of having to do expensive parallel lookups by type name. */
18844
18845static int
18846need_gnat_info (struct dwarf2_cu *cu)
18847{
18848 /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
18849 of GNAT produces this auxiliary information, without any indication
18850 that it is produced. Part of enhancing the FSF version of GNAT
18851 to produce that information will be to put in place an indicator
18852 that we can use in order to determine whether the descriptive type
18853 info is available or not. One suggestion that has been made is
18854 to use a new attribute, attached to the CU die. For now, assume
18855 that the descriptive type info is not available. */
18856 return 0;
18857}
18858
b4ba55a1
JB
18859/* Return the auxiliary type of the die in question using its
18860 DW_AT_GNAT_descriptive_type attribute. Returns NULL if the
18861 attribute is not present. */
18862
18863static struct type *
18864die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
18865{
b4ba55a1 18866 struct attribute *type_attr;
b4ba55a1
JB
18867
18868 type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
18869 if (!type_attr)
18870 return NULL;
18871
673bfd45 18872 return lookup_die_type (die, type_attr, cu);
b4ba55a1
JB
18873}
18874
18875/* If DIE has a descriptive_type attribute, then set the TYPE's
18876 descriptive type accordingly. */
18877
18878static void
18879set_descriptive_type (struct type *type, struct die_info *die,
18880 struct dwarf2_cu *cu)
18881{
18882 struct type *descriptive_type = die_descriptive_type (die, cu);
18883
18884 if (descriptive_type)
18885 {
18886 ALLOCATE_GNAT_AUX_TYPE (type);
18887 TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
18888 }
18889}
18890
c906108c
SS
18891/* Return the containing type of the die in question using its
18892 DW_AT_containing_type attribute. */
18893
18894static struct type *
e7c27a73 18895die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 18896{
c906108c 18897 struct attribute *type_attr;
c906108c 18898
e142c38c 18899 type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
33ac96f0
JK
18900 if (!type_attr)
18901 error (_("Dwarf Error: Problem turning containing type into gdb type "
4262abfb 18902 "[in module %s]"), objfile_name (cu->objfile));
33ac96f0 18903
673bfd45 18904 return lookup_die_type (die, type_attr, cu);
c906108c
SS
18905}
18906
ac9ec31b
DE
18907/* Return an error marker type to use for the ill formed type in DIE/CU. */
18908
18909static struct type *
18910build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
18911{
18912 struct objfile *objfile = dwarf2_per_objfile->objfile;
18913 char *message, *saved;
18914
18915 message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
4262abfb 18916 objfile_name (objfile),
ac9ec31b
DE
18917 cu->header.offset.sect_off,
18918 die->offset.sect_off);
18919 saved = obstack_copy0 (&objfile->objfile_obstack,
18920 message, strlen (message));
18921 xfree (message);
18922
18923 return init_type (TYPE_CODE_ERROR, 0, 0, saved, objfile);
18924}
18925
673bfd45 18926/* Look up the type of DIE in CU using its type attribute ATTR.
ac9ec31b
DE
18927 ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
18928 DW_AT_containing_type.
673bfd45
DE
18929 If there is no type substitute an error marker. */
18930
c906108c 18931static struct type *
ff39bb5e 18932lookup_die_type (struct die_info *die, const struct attribute *attr,
673bfd45 18933 struct dwarf2_cu *cu)
c906108c 18934{
bb5ed363 18935 struct objfile *objfile = cu->objfile;
f792889a
DJ
18936 struct type *this_type;
18937
ac9ec31b
DE
18938 gdb_assert (attr->name == DW_AT_type
18939 || attr->name == DW_AT_GNAT_descriptive_type
18940 || attr->name == DW_AT_containing_type);
18941
673bfd45
DE
18942 /* First see if we have it cached. */
18943
36586728
TT
18944 if (attr->form == DW_FORM_GNU_ref_alt)
18945 {
18946 struct dwarf2_per_cu_data *per_cu;
18947 sect_offset offset = dwarf2_get_ref_die_offset (attr);
18948
18949 per_cu = dwarf2_find_containing_comp_unit (offset, 1, cu->objfile);
18950 this_type = get_die_type_at_offset (offset, per_cu);
18951 }
7771576e 18952 else if (attr_form_is_ref (attr))
673bfd45 18953 {
b64f50a1 18954 sect_offset offset = dwarf2_get_ref_die_offset (attr);
673bfd45
DE
18955
18956 this_type = get_die_type_at_offset (offset, cu->per_cu);
18957 }
55f1336d 18958 else if (attr->form == DW_FORM_ref_sig8)
673bfd45 18959 {
ac9ec31b 18960 ULONGEST signature = DW_SIGNATURE (attr);
673bfd45 18961
ac9ec31b 18962 return get_signatured_type (die, signature, cu);
673bfd45
DE
18963 }
18964 else
18965 {
ac9ec31b
DE
18966 complaint (&symfile_complaints,
18967 _("Dwarf Error: Bad type attribute %s in DIE"
18968 " at 0x%x [in module %s]"),
18969 dwarf_attr_name (attr->name), die->offset.sect_off,
4262abfb 18970 objfile_name (objfile));
ac9ec31b 18971 return build_error_marker_type (cu, die);
673bfd45
DE
18972 }
18973
18974 /* If not cached we need to read it in. */
18975
18976 if (this_type == NULL)
18977 {
ac9ec31b 18978 struct die_info *type_die = NULL;
673bfd45
DE
18979 struct dwarf2_cu *type_cu = cu;
18980
7771576e 18981 if (attr_form_is_ref (attr))
ac9ec31b
DE
18982 type_die = follow_die_ref (die, attr, &type_cu);
18983 if (type_die == NULL)
18984 return build_error_marker_type (cu, die);
18985 /* If we find the type now, it's probably because the type came
3019eac3
DE
18986 from an inter-CU reference and the type's CU got expanded before
18987 ours. */
ac9ec31b 18988 this_type = read_type_die (type_die, type_cu);
673bfd45
DE
18989 }
18990
18991 /* If we still don't have a type use an error marker. */
18992
18993 if (this_type == NULL)
ac9ec31b 18994 return build_error_marker_type (cu, die);
673bfd45 18995
f792889a 18996 return this_type;
c906108c
SS
18997}
18998
673bfd45
DE
18999/* Return the type in DIE, CU.
19000 Returns NULL for invalid types.
19001
02142a6c 19002 This first does a lookup in die_type_hash,
673bfd45
DE
19003 and only reads the die in if necessary.
19004
19005 NOTE: This can be called when reading in partial or full symbols. */
19006
f792889a 19007static struct type *
e7c27a73 19008read_type_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 19009{
f792889a
DJ
19010 struct type *this_type;
19011
19012 this_type = get_die_type (die, cu);
19013 if (this_type)
19014 return this_type;
19015
673bfd45
DE
19016 return read_type_die_1 (die, cu);
19017}
19018
19019/* Read the type in DIE, CU.
19020 Returns NULL for invalid types. */
19021
19022static struct type *
19023read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
19024{
19025 struct type *this_type = NULL;
19026
c906108c
SS
19027 switch (die->tag)
19028 {
19029 case DW_TAG_class_type:
680b30c7 19030 case DW_TAG_interface_type:
c906108c
SS
19031 case DW_TAG_structure_type:
19032 case DW_TAG_union_type:
f792889a 19033 this_type = read_structure_type (die, cu);
c906108c
SS
19034 break;
19035 case DW_TAG_enumeration_type:
f792889a 19036 this_type = read_enumeration_type (die, cu);
c906108c
SS
19037 break;
19038 case DW_TAG_subprogram:
19039 case DW_TAG_subroutine_type:
edb3359d 19040 case DW_TAG_inlined_subroutine:
f792889a 19041 this_type = read_subroutine_type (die, cu);
c906108c
SS
19042 break;
19043 case DW_TAG_array_type:
f792889a 19044 this_type = read_array_type (die, cu);
c906108c 19045 break;
72019c9c 19046 case DW_TAG_set_type:
f792889a 19047 this_type = read_set_type (die, cu);
72019c9c 19048 break;
c906108c 19049 case DW_TAG_pointer_type:
f792889a 19050 this_type = read_tag_pointer_type (die, cu);
c906108c
SS
19051 break;
19052 case DW_TAG_ptr_to_member_type:
f792889a 19053 this_type = read_tag_ptr_to_member_type (die, cu);
c906108c
SS
19054 break;
19055 case DW_TAG_reference_type:
f792889a 19056 this_type = read_tag_reference_type (die, cu);
c906108c
SS
19057 break;
19058 case DW_TAG_const_type:
f792889a 19059 this_type = read_tag_const_type (die, cu);
c906108c
SS
19060 break;
19061 case DW_TAG_volatile_type:
f792889a 19062 this_type = read_tag_volatile_type (die, cu);
c906108c 19063 break;
06d66ee9
TT
19064 case DW_TAG_restrict_type:
19065 this_type = read_tag_restrict_type (die, cu);
19066 break;
c906108c 19067 case DW_TAG_string_type:
f792889a 19068 this_type = read_tag_string_type (die, cu);
c906108c
SS
19069 break;
19070 case DW_TAG_typedef:
f792889a 19071 this_type = read_typedef (die, cu);
c906108c 19072 break;
a02abb62 19073 case DW_TAG_subrange_type:
f792889a 19074 this_type = read_subrange_type (die, cu);
a02abb62 19075 break;
c906108c 19076 case DW_TAG_base_type:
f792889a 19077 this_type = read_base_type (die, cu);
c906108c 19078 break;
81a17f79 19079 case DW_TAG_unspecified_type:
f792889a 19080 this_type = read_unspecified_type (die, cu);
81a17f79 19081 break;
0114d602
DJ
19082 case DW_TAG_namespace:
19083 this_type = read_namespace_type (die, cu);
19084 break;
f55ee35c
JK
19085 case DW_TAG_module:
19086 this_type = read_module_type (die, cu);
19087 break;
a2c2acaf
MW
19088 case DW_TAG_atomic_type:
19089 this_type = read_tag_atomic_type (die, cu);
19090 break;
c906108c 19091 default:
3e43a32a
MS
19092 complaint (&symfile_complaints,
19093 _("unexpected tag in read_type_die: '%s'"),
4d3c2250 19094 dwarf_tag_name (die->tag));
c906108c
SS
19095 break;
19096 }
63d06c5c 19097
f792889a 19098 return this_type;
63d06c5c
DC
19099}
19100
abc72ce4
DE
19101/* See if we can figure out if the class lives in a namespace. We do
19102 this by looking for a member function; its demangled name will
19103 contain namespace info, if there is any.
19104 Return the computed name or NULL.
19105 Space for the result is allocated on the objfile's obstack.
19106 This is the full-die version of guess_partial_die_structure_name.
19107 In this case we know DIE has no useful parent. */
19108
19109static char *
19110guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
19111{
19112 struct die_info *spec_die;
19113 struct dwarf2_cu *spec_cu;
19114 struct die_info *child;
19115
19116 spec_cu = cu;
19117 spec_die = die_specification (die, &spec_cu);
19118 if (spec_die != NULL)
19119 {
19120 die = spec_die;
19121 cu = spec_cu;
19122 }
19123
19124 for (child = die->child;
19125 child != NULL;
19126 child = child->sibling)
19127 {
19128 if (child->tag == DW_TAG_subprogram)
19129 {
19130 struct attribute *attr;
19131
19132 attr = dwarf2_attr (child, DW_AT_linkage_name, cu);
19133 if (attr == NULL)
19134 attr = dwarf2_attr (child, DW_AT_MIPS_linkage_name, cu);
19135 if (attr != NULL)
19136 {
19137 char *actual_name
19138 = language_class_name_from_physname (cu->language_defn,
19139 DW_STRING (attr));
19140 char *name = NULL;
19141
19142 if (actual_name != NULL)
19143 {
15d034d0 19144 const char *die_name = dwarf2_name (die, cu);
abc72ce4
DE
19145
19146 if (die_name != NULL
19147 && strcmp (die_name, actual_name) != 0)
19148 {
19149 /* Strip off the class name from the full name.
19150 We want the prefix. */
19151 int die_name_len = strlen (die_name);
19152 int actual_name_len = strlen (actual_name);
19153
19154 /* Test for '::' as a sanity check. */
19155 if (actual_name_len > die_name_len + 2
3e43a32a
MS
19156 && actual_name[actual_name_len
19157 - die_name_len - 1] == ':')
abc72ce4 19158 name =
34a68019 19159 obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb
TT
19160 actual_name,
19161 actual_name_len - die_name_len - 2);
abc72ce4
DE
19162 }
19163 }
19164 xfree (actual_name);
19165 return name;
19166 }
19167 }
19168 }
19169
19170 return NULL;
19171}
19172
96408a79
SA
19173/* GCC might emit a nameless typedef that has a linkage name. Determine the
19174 prefix part in such case. See
19175 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
19176
19177static char *
19178anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
19179{
19180 struct attribute *attr;
19181 char *base;
19182
19183 if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
19184 && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
19185 return NULL;
19186
19187 attr = dwarf2_attr (die, DW_AT_name, cu);
19188 if (attr != NULL && DW_STRING (attr) != NULL)
19189 return NULL;
19190
19191 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19192 if (attr == NULL)
19193 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19194 if (attr == NULL || DW_STRING (attr) == NULL)
19195 return NULL;
19196
19197 /* dwarf2_name had to be already called. */
19198 gdb_assert (DW_STRING_IS_CANONICAL (attr));
19199
19200 /* Strip the base name, keep any leading namespaces/classes. */
19201 base = strrchr (DW_STRING (attr), ':');
19202 if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
19203 return "";
19204
34a68019 19205 return obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb 19206 DW_STRING (attr), &base[-1] - DW_STRING (attr));
96408a79
SA
19207}
19208
fdde2d81 19209/* Return the name of the namespace/class that DIE is defined within,
0114d602 19210 or "" if we can't tell. The caller should not xfree the result.
fdde2d81 19211
0114d602
DJ
19212 For example, if we're within the method foo() in the following
19213 code:
19214
19215 namespace N {
19216 class C {
19217 void foo () {
19218 }
19219 };
19220 }
19221
19222 then determine_prefix on foo's die will return "N::C". */
fdde2d81 19223
0d5cff50 19224static const char *
e142c38c 19225determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
63d06c5c 19226{
0114d602
DJ
19227 struct die_info *parent, *spec_die;
19228 struct dwarf2_cu *spec_cu;
19229 struct type *parent_type;
96408a79 19230 char *retval;
63d06c5c 19231
f55ee35c
JK
19232 if (cu->language != language_cplus && cu->language != language_java
19233 && cu->language != language_fortran)
0114d602
DJ
19234 return "";
19235
96408a79
SA
19236 retval = anonymous_struct_prefix (die, cu);
19237 if (retval)
19238 return retval;
19239
0114d602
DJ
19240 /* We have to be careful in the presence of DW_AT_specification.
19241 For example, with GCC 3.4, given the code
19242
19243 namespace N {
19244 void foo() {
19245 // Definition of N::foo.
19246 }
19247 }
19248
19249 then we'll have a tree of DIEs like this:
19250
19251 1: DW_TAG_compile_unit
19252 2: DW_TAG_namespace // N
19253 3: DW_TAG_subprogram // declaration of N::foo
19254 4: DW_TAG_subprogram // definition of N::foo
19255 DW_AT_specification // refers to die #3
19256
19257 Thus, when processing die #4, we have to pretend that we're in
19258 the context of its DW_AT_specification, namely the contex of die
19259 #3. */
19260 spec_cu = cu;
19261 spec_die = die_specification (die, &spec_cu);
19262 if (spec_die == NULL)
19263 parent = die->parent;
19264 else
63d06c5c 19265 {
0114d602
DJ
19266 parent = spec_die->parent;
19267 cu = spec_cu;
63d06c5c 19268 }
0114d602
DJ
19269
19270 if (parent == NULL)
19271 return "";
98bfdba5
PA
19272 else if (parent->building_fullname)
19273 {
19274 const char *name;
19275 const char *parent_name;
19276
19277 /* It has been seen on RealView 2.2 built binaries,
19278 DW_TAG_template_type_param types actually _defined_ as
19279 children of the parent class:
19280
19281 enum E {};
19282 template class <class Enum> Class{};
19283 Class<enum E> class_e;
19284
19285 1: DW_TAG_class_type (Class)
19286 2: DW_TAG_enumeration_type (E)
19287 3: DW_TAG_enumerator (enum1:0)
19288 3: DW_TAG_enumerator (enum2:1)
19289 ...
19290 2: DW_TAG_template_type_param
19291 DW_AT_type DW_FORM_ref_udata (E)
19292
19293 Besides being broken debug info, it can put GDB into an
19294 infinite loop. Consider:
19295
19296 When we're building the full name for Class<E>, we'll start
19297 at Class, and go look over its template type parameters,
19298 finding E. We'll then try to build the full name of E, and
19299 reach here. We're now trying to build the full name of E,
19300 and look over the parent DIE for containing scope. In the
19301 broken case, if we followed the parent DIE of E, we'd again
19302 find Class, and once again go look at its template type
19303 arguments, etc., etc. Simply don't consider such parent die
19304 as source-level parent of this die (it can't be, the language
19305 doesn't allow it), and break the loop here. */
19306 name = dwarf2_name (die, cu);
19307 parent_name = dwarf2_name (parent, cu);
19308 complaint (&symfile_complaints,
19309 _("template param type '%s' defined within parent '%s'"),
19310 name ? name : "<unknown>",
19311 parent_name ? parent_name : "<unknown>");
19312 return "";
19313 }
63d06c5c 19314 else
0114d602
DJ
19315 switch (parent->tag)
19316 {
63d06c5c 19317 case DW_TAG_namespace:
0114d602 19318 parent_type = read_type_die (parent, cu);
acebe513
UW
19319 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
19320 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
19321 Work around this problem here. */
19322 if (cu->language == language_cplus
19323 && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
19324 return "";
0114d602
DJ
19325 /* We give a name to even anonymous namespaces. */
19326 return TYPE_TAG_NAME (parent_type);
63d06c5c 19327 case DW_TAG_class_type:
680b30c7 19328 case DW_TAG_interface_type:
63d06c5c 19329 case DW_TAG_structure_type:
0114d602 19330 case DW_TAG_union_type:
f55ee35c 19331 case DW_TAG_module:
0114d602
DJ
19332 parent_type = read_type_die (parent, cu);
19333 if (TYPE_TAG_NAME (parent_type) != NULL)
19334 return TYPE_TAG_NAME (parent_type);
19335 else
19336 /* An anonymous structure is only allowed non-static data
19337 members; no typedefs, no member functions, et cetera.
19338 So it does not need a prefix. */
19339 return "";
abc72ce4 19340 case DW_TAG_compile_unit:
95554aad 19341 case DW_TAG_partial_unit:
abc72ce4
DE
19342 /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace. Cope. */
19343 if (cu->language == language_cplus
8b70b953 19344 && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
abc72ce4
DE
19345 && die->child != NULL
19346 && (die->tag == DW_TAG_class_type
19347 || die->tag == DW_TAG_structure_type
19348 || die->tag == DW_TAG_union_type))
19349 {
19350 char *name = guess_full_die_structure_name (die, cu);
19351 if (name != NULL)
19352 return name;
19353 }
19354 return "";
3d567982
TT
19355 case DW_TAG_enumeration_type:
19356 parent_type = read_type_die (parent, cu);
19357 if (TYPE_DECLARED_CLASS (parent_type))
19358 {
19359 if (TYPE_TAG_NAME (parent_type) != NULL)
19360 return TYPE_TAG_NAME (parent_type);
19361 return "";
19362 }
19363 /* Fall through. */
63d06c5c 19364 default:
8176b9b8 19365 return determine_prefix (parent, cu);
63d06c5c 19366 }
63d06c5c
DC
19367}
19368
3e43a32a
MS
19369/* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
19370 with appropriate separator. If PREFIX or SUFFIX is NULL or empty, then
19371 simply copy the SUFFIX or PREFIX, respectively. If OBS is non-null, perform
19372 an obconcat, otherwise allocate storage for the result. The CU argument is
19373 used to determine the language and hence, the appropriate separator. */
987504bb 19374
f55ee35c 19375#define MAX_SEP_LEN 7 /* strlen ("__") + strlen ("_MOD_") */
63d06c5c
DC
19376
19377static char *
f55ee35c
JK
19378typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
19379 int physname, struct dwarf2_cu *cu)
63d06c5c 19380{
f55ee35c 19381 const char *lead = "";
5c315b68 19382 const char *sep;
63d06c5c 19383
3e43a32a
MS
19384 if (suffix == NULL || suffix[0] == '\0'
19385 || prefix == NULL || prefix[0] == '\0')
987504bb
JJ
19386 sep = "";
19387 else if (cu->language == language_java)
19388 sep = ".";
f55ee35c
JK
19389 else if (cu->language == language_fortran && physname)
19390 {
19391 /* This is gfortran specific mangling. Normally DW_AT_linkage_name or
19392 DW_AT_MIPS_linkage_name is preferred and used instead. */
19393
19394 lead = "__";
19395 sep = "_MOD_";
19396 }
987504bb
JJ
19397 else
19398 sep = "::";
63d06c5c 19399
6dd47d34
DE
19400 if (prefix == NULL)
19401 prefix = "";
19402 if (suffix == NULL)
19403 suffix = "";
19404
987504bb
JJ
19405 if (obs == NULL)
19406 {
3e43a32a
MS
19407 char *retval
19408 = xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1);
9a619af0 19409
f55ee35c
JK
19410 strcpy (retval, lead);
19411 strcat (retval, prefix);
6dd47d34
DE
19412 strcat (retval, sep);
19413 strcat (retval, suffix);
63d06c5c
DC
19414 return retval;
19415 }
987504bb
JJ
19416 else
19417 {
19418 /* We have an obstack. */
f55ee35c 19419 return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
987504bb 19420 }
63d06c5c
DC
19421}
19422
c906108c
SS
19423/* Return sibling of die, NULL if no sibling. */
19424
f9aca02d 19425static struct die_info *
fba45db2 19426sibling_die (struct die_info *die)
c906108c 19427{
639d11d3 19428 return die->sibling;
c906108c
SS
19429}
19430
71c25dea
TT
19431/* Get name of a die, return NULL if not found. */
19432
15d034d0
TT
19433static const char *
19434dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
71c25dea
TT
19435 struct obstack *obstack)
19436{
19437 if (name && cu->language == language_cplus)
19438 {
19439 char *canon_name = cp_canonicalize_string (name);
19440
19441 if (canon_name != NULL)
19442 {
19443 if (strcmp (canon_name, name) != 0)
10f0c4bb 19444 name = obstack_copy0 (obstack, canon_name, strlen (canon_name));
71c25dea
TT
19445 xfree (canon_name);
19446 }
19447 }
19448
19449 return name;
c906108c
SS
19450}
19451
96553a0c
DE
19452/* Get name of a die, return NULL if not found.
19453 Anonymous namespaces are converted to their magic string. */
9219021c 19454
15d034d0 19455static const char *
e142c38c 19456dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
9219021c
DC
19457{
19458 struct attribute *attr;
19459
e142c38c 19460 attr = dwarf2_attr (die, DW_AT_name, cu);
53832f31 19461 if ((!attr || !DW_STRING (attr))
96553a0c 19462 && die->tag != DW_TAG_namespace
53832f31
TT
19463 && die->tag != DW_TAG_class_type
19464 && die->tag != DW_TAG_interface_type
19465 && die->tag != DW_TAG_structure_type
19466 && die->tag != DW_TAG_union_type)
71c25dea
TT
19467 return NULL;
19468
19469 switch (die->tag)
19470 {
19471 case DW_TAG_compile_unit:
95554aad 19472 case DW_TAG_partial_unit:
71c25dea
TT
19473 /* Compilation units have a DW_AT_name that is a filename, not
19474 a source language identifier. */
19475 case DW_TAG_enumeration_type:
19476 case DW_TAG_enumerator:
19477 /* These tags always have simple identifiers already; no need
19478 to canonicalize them. */
19479 return DW_STRING (attr);
907af001 19480
96553a0c
DE
19481 case DW_TAG_namespace:
19482 if (attr != NULL && DW_STRING (attr) != NULL)
19483 return DW_STRING (attr);
19484 return CP_ANONYMOUS_NAMESPACE_STR;
19485
418835cc
KS
19486 case DW_TAG_subprogram:
19487 /* Java constructors will all be named "<init>", so return
19488 the class name when we see this special case. */
19489 if (cu->language == language_java
19490 && DW_STRING (attr) != NULL
19491 && strcmp (DW_STRING (attr), "<init>") == 0)
19492 {
19493 struct dwarf2_cu *spec_cu = cu;
19494 struct die_info *spec_die;
19495
19496 /* GCJ will output '<init>' for Java constructor names.
19497 For this special case, return the name of the parent class. */
19498
cdc07690 19499 /* GCJ may output subprogram DIEs with AT_specification set.
418835cc
KS
19500 If so, use the name of the specified DIE. */
19501 spec_die = die_specification (die, &spec_cu);
19502 if (spec_die != NULL)
19503 return dwarf2_name (spec_die, spec_cu);
19504
19505 do
19506 {
19507 die = die->parent;
19508 if (die->tag == DW_TAG_class_type)
19509 return dwarf2_name (die, cu);
19510 }
95554aad
TT
19511 while (die->tag != DW_TAG_compile_unit
19512 && die->tag != DW_TAG_partial_unit);
418835cc 19513 }
907af001
UW
19514 break;
19515
19516 case DW_TAG_class_type:
19517 case DW_TAG_interface_type:
19518 case DW_TAG_structure_type:
19519 case DW_TAG_union_type:
19520 /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
19521 structures or unions. These were of the form "._%d" in GCC 4.1,
19522 or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
19523 and GCC 4.4. We work around this problem by ignoring these. */
53832f31 19524 if (attr && DW_STRING (attr)
61012eef
GB
19525 && (startswith (DW_STRING (attr), "._")
19526 || startswith (DW_STRING (attr), "<anonymous")))
907af001 19527 return NULL;
53832f31
TT
19528
19529 /* GCC might emit a nameless typedef that has a linkage name. See
19530 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
19531 if (!attr || DW_STRING (attr) == NULL)
19532 {
df5c6c50 19533 char *demangled = NULL;
53832f31
TT
19534
19535 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19536 if (attr == NULL)
19537 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19538
19539 if (attr == NULL || DW_STRING (attr) == NULL)
19540 return NULL;
19541
df5c6c50
JK
19542 /* Avoid demangling DW_STRING (attr) the second time on a second
19543 call for the same DIE. */
19544 if (!DW_STRING_IS_CANONICAL (attr))
8de20a37 19545 demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
53832f31
TT
19546
19547 if (demangled)
19548 {
96408a79
SA
19549 char *base;
19550
53832f31 19551 /* FIXME: we already did this for the partial symbol... */
34a68019
TT
19552 DW_STRING (attr)
19553 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
19554 demangled, strlen (demangled));
53832f31
TT
19555 DW_STRING_IS_CANONICAL (attr) = 1;
19556 xfree (demangled);
96408a79
SA
19557
19558 /* Strip any leading namespaces/classes, keep only the base name.
19559 DW_AT_name for named DIEs does not contain the prefixes. */
19560 base = strrchr (DW_STRING (attr), ':');
19561 if (base && base > DW_STRING (attr) && base[-1] == ':')
19562 return &base[1];
19563 else
19564 return DW_STRING (attr);
53832f31
TT
19565 }
19566 }
907af001
UW
19567 break;
19568
71c25dea 19569 default:
907af001
UW
19570 break;
19571 }
19572
19573 if (!DW_STRING_IS_CANONICAL (attr))
19574 {
19575 DW_STRING (attr)
19576 = dwarf2_canonicalize_name (DW_STRING (attr), cu,
34a68019 19577 &cu->objfile->per_bfd->storage_obstack);
907af001 19578 DW_STRING_IS_CANONICAL (attr) = 1;
71c25dea 19579 }
907af001 19580 return DW_STRING (attr);
9219021c
DC
19581}
19582
19583/* Return the die that this die in an extension of, or NULL if there
f2f0e013
DJ
19584 is none. *EXT_CU is the CU containing DIE on input, and the CU
19585 containing the return value on output. */
9219021c
DC
19586
19587static struct die_info *
f2f0e013 19588dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
9219021c
DC
19589{
19590 struct attribute *attr;
9219021c 19591
f2f0e013 19592 attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
9219021c
DC
19593 if (attr == NULL)
19594 return NULL;
19595
f2f0e013 19596 return follow_die_ref (die, attr, ext_cu);
9219021c
DC
19597}
19598
c906108c
SS
19599/* Convert a DIE tag into its string name. */
19600
f39c6ffd 19601static const char *
aa1ee363 19602dwarf_tag_name (unsigned tag)
c906108c 19603{
f39c6ffd
TT
19604 const char *name = get_DW_TAG_name (tag);
19605
19606 if (name == NULL)
19607 return "DW_TAG_<unknown>";
19608
19609 return name;
c906108c
SS
19610}
19611
19612/* Convert a DWARF attribute code into its string name. */
19613
f39c6ffd 19614static const char *
aa1ee363 19615dwarf_attr_name (unsigned attr)
c906108c 19616{
f39c6ffd
TT
19617 const char *name;
19618
c764a876 19619#ifdef MIPS /* collides with DW_AT_HP_block_index */
f39c6ffd
TT
19620 if (attr == DW_AT_MIPS_fde)
19621 return "DW_AT_MIPS_fde";
19622#else
19623 if (attr == DW_AT_HP_block_index)
19624 return "DW_AT_HP_block_index";
c764a876 19625#endif
f39c6ffd
TT
19626
19627 name = get_DW_AT_name (attr);
19628
19629 if (name == NULL)
19630 return "DW_AT_<unknown>";
19631
19632 return name;
c906108c
SS
19633}
19634
19635/* Convert a DWARF value form code into its string name. */
19636
f39c6ffd 19637static const char *
aa1ee363 19638dwarf_form_name (unsigned form)
c906108c 19639{
f39c6ffd
TT
19640 const char *name = get_DW_FORM_name (form);
19641
19642 if (name == NULL)
19643 return "DW_FORM_<unknown>";
19644
19645 return name;
c906108c
SS
19646}
19647
19648static char *
fba45db2 19649dwarf_bool_name (unsigned mybool)
c906108c
SS
19650{
19651 if (mybool)
19652 return "TRUE";
19653 else
19654 return "FALSE";
19655}
19656
19657/* Convert a DWARF type code into its string name. */
19658
f39c6ffd 19659static const char *
aa1ee363 19660dwarf_type_encoding_name (unsigned enc)
c906108c 19661{
f39c6ffd 19662 const char *name = get_DW_ATE_name (enc);
c906108c 19663
f39c6ffd
TT
19664 if (name == NULL)
19665 return "DW_ATE_<unknown>";
c906108c 19666
f39c6ffd 19667 return name;
c906108c 19668}
c906108c 19669
f9aca02d 19670static void
d97bc12b 19671dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
c906108c
SS
19672{
19673 unsigned int i;
19674
d97bc12b
DE
19675 print_spaces (indent, f);
19676 fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
b64f50a1 19677 dwarf_tag_name (die->tag), die->abbrev, die->offset.sect_off);
d97bc12b
DE
19678
19679 if (die->parent != NULL)
19680 {
19681 print_spaces (indent, f);
19682 fprintf_unfiltered (f, " parent at offset: 0x%x\n",
b64f50a1 19683 die->parent->offset.sect_off);
d97bc12b
DE
19684 }
19685
19686 print_spaces (indent, f);
19687 fprintf_unfiltered (f, " has children: %s\n",
639d11d3 19688 dwarf_bool_name (die->child != NULL));
c906108c 19689
d97bc12b
DE
19690 print_spaces (indent, f);
19691 fprintf_unfiltered (f, " attributes:\n");
19692
c906108c
SS
19693 for (i = 0; i < die->num_attrs; ++i)
19694 {
d97bc12b
DE
19695 print_spaces (indent, f);
19696 fprintf_unfiltered (f, " %s (%s) ",
c906108c
SS
19697 dwarf_attr_name (die->attrs[i].name),
19698 dwarf_form_name (die->attrs[i].form));
d97bc12b 19699
c906108c
SS
19700 switch (die->attrs[i].form)
19701 {
c906108c 19702 case DW_FORM_addr:
3019eac3 19703 case DW_FORM_GNU_addr_index:
d97bc12b 19704 fprintf_unfiltered (f, "address: ");
5af949e3 19705 fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
c906108c
SS
19706 break;
19707 case DW_FORM_block2:
19708 case DW_FORM_block4:
19709 case DW_FORM_block:
19710 case DW_FORM_block1:
56eb65bd
SP
19711 fprintf_unfiltered (f, "block: size %s",
19712 pulongest (DW_BLOCK (&die->attrs[i])->size));
c906108c 19713 break;
2dc7f7b3 19714 case DW_FORM_exprloc:
56eb65bd
SP
19715 fprintf_unfiltered (f, "expression: size %s",
19716 pulongest (DW_BLOCK (&die->attrs[i])->size));
2dc7f7b3 19717 break;
4568ecf9
DE
19718 case DW_FORM_ref_addr:
19719 fprintf_unfiltered (f, "ref address: ");
19720 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19721 break;
36586728
TT
19722 case DW_FORM_GNU_ref_alt:
19723 fprintf_unfiltered (f, "alt ref address: ");
19724 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19725 break;
10b3939b
DJ
19726 case DW_FORM_ref1:
19727 case DW_FORM_ref2:
19728 case DW_FORM_ref4:
4568ecf9
DE
19729 case DW_FORM_ref8:
19730 case DW_FORM_ref_udata:
d97bc12b 19731 fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
4568ecf9 19732 (long) (DW_UNSND (&die->attrs[i])));
10b3939b 19733 break;
c906108c
SS
19734 case DW_FORM_data1:
19735 case DW_FORM_data2:
19736 case DW_FORM_data4:
ce5d95e1 19737 case DW_FORM_data8:
c906108c
SS
19738 case DW_FORM_udata:
19739 case DW_FORM_sdata:
43bbcdc2
PH
19740 fprintf_unfiltered (f, "constant: %s",
19741 pulongest (DW_UNSND (&die->attrs[i])));
c906108c 19742 break;
2dc7f7b3
TT
19743 case DW_FORM_sec_offset:
19744 fprintf_unfiltered (f, "section offset: %s",
19745 pulongest (DW_UNSND (&die->attrs[i])));
19746 break;
55f1336d 19747 case DW_FORM_ref_sig8:
ac9ec31b
DE
19748 fprintf_unfiltered (f, "signature: %s",
19749 hex_string (DW_SIGNATURE (&die->attrs[i])));
348e048f 19750 break;
c906108c 19751 case DW_FORM_string:
4bdf3d34 19752 case DW_FORM_strp:
3019eac3 19753 case DW_FORM_GNU_str_index:
36586728 19754 case DW_FORM_GNU_strp_alt:
8285870a 19755 fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
c906108c 19756 DW_STRING (&die->attrs[i])
8285870a
JK
19757 ? DW_STRING (&die->attrs[i]) : "",
19758 DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
c906108c
SS
19759 break;
19760 case DW_FORM_flag:
19761 if (DW_UNSND (&die->attrs[i]))
d97bc12b 19762 fprintf_unfiltered (f, "flag: TRUE");
c906108c 19763 else
d97bc12b 19764 fprintf_unfiltered (f, "flag: FALSE");
c906108c 19765 break;
2dc7f7b3
TT
19766 case DW_FORM_flag_present:
19767 fprintf_unfiltered (f, "flag: TRUE");
19768 break;
a8329558 19769 case DW_FORM_indirect:
0963b4bd
MS
19770 /* The reader will have reduced the indirect form to
19771 the "base form" so this form should not occur. */
3e43a32a
MS
19772 fprintf_unfiltered (f,
19773 "unexpected attribute form: DW_FORM_indirect");
a8329558 19774 break;
c906108c 19775 default:
d97bc12b 19776 fprintf_unfiltered (f, "unsupported attribute form: %d.",
c5aa993b 19777 die->attrs[i].form);
d97bc12b 19778 break;
c906108c 19779 }
d97bc12b 19780 fprintf_unfiltered (f, "\n");
c906108c
SS
19781 }
19782}
19783
f9aca02d 19784static void
d97bc12b 19785dump_die_for_error (struct die_info *die)
c906108c 19786{
d97bc12b
DE
19787 dump_die_shallow (gdb_stderr, 0, die);
19788}
19789
19790static void
19791dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
19792{
19793 int indent = level * 4;
19794
19795 gdb_assert (die != NULL);
19796
19797 if (level >= max_level)
19798 return;
19799
19800 dump_die_shallow (f, indent, die);
19801
19802 if (die->child != NULL)
c906108c 19803 {
d97bc12b
DE
19804 print_spaces (indent, f);
19805 fprintf_unfiltered (f, " Children:");
19806 if (level + 1 < max_level)
19807 {
19808 fprintf_unfiltered (f, "\n");
19809 dump_die_1 (f, level + 1, max_level, die->child);
19810 }
19811 else
19812 {
3e43a32a
MS
19813 fprintf_unfiltered (f,
19814 " [not printed, max nesting level reached]\n");
d97bc12b
DE
19815 }
19816 }
19817
19818 if (die->sibling != NULL && level > 0)
19819 {
19820 dump_die_1 (f, level, max_level, die->sibling);
c906108c
SS
19821 }
19822}
19823
d97bc12b
DE
19824/* This is called from the pdie macro in gdbinit.in.
19825 It's not static so gcc will keep a copy callable from gdb. */
19826
19827void
19828dump_die (struct die_info *die, int max_level)
19829{
19830 dump_die_1 (gdb_stdlog, 0, max_level, die);
19831}
19832
f9aca02d 19833static void
51545339 19834store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
c906108c 19835{
51545339 19836 void **slot;
c906108c 19837
b64f50a1
JK
19838 slot = htab_find_slot_with_hash (cu->die_hash, die, die->offset.sect_off,
19839 INSERT);
51545339
DJ
19840
19841 *slot = die;
c906108c
SS
19842}
19843
b64f50a1
JK
19844/* Return DIE offset of ATTR. Return 0 with complaint if ATTR is not of the
19845 required kind. */
19846
19847static sect_offset
ff39bb5e 19848dwarf2_get_ref_die_offset (const struct attribute *attr)
93311388 19849{
4568ecf9 19850 sect_offset retval = { DW_UNSND (attr) };
b64f50a1 19851
7771576e 19852 if (attr_form_is_ref (attr))
b64f50a1 19853 return retval;
93311388 19854
b64f50a1 19855 retval.sect_off = 0;
93311388
DE
19856 complaint (&symfile_complaints,
19857 _("unsupported die ref attribute form: '%s'"),
19858 dwarf_form_name (attr->form));
b64f50a1 19859 return retval;
c906108c
SS
19860}
19861
43bbcdc2
PH
19862/* Return the constant value held by ATTR. Return DEFAULT_VALUE if
19863 * the value held by the attribute is not constant. */
a02abb62 19864
43bbcdc2 19865static LONGEST
ff39bb5e 19866dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
a02abb62
JB
19867{
19868 if (attr->form == DW_FORM_sdata)
19869 return DW_SND (attr);
19870 else if (attr->form == DW_FORM_udata
19871 || attr->form == DW_FORM_data1
19872 || attr->form == DW_FORM_data2
19873 || attr->form == DW_FORM_data4
19874 || attr->form == DW_FORM_data8)
19875 return DW_UNSND (attr);
19876 else
19877 {
3e43a32a
MS
19878 complaint (&symfile_complaints,
19879 _("Attribute value is not a constant (%s)"),
a02abb62
JB
19880 dwarf_form_name (attr->form));
19881 return default_value;
19882 }
19883}
19884
348e048f
DE
19885/* Follow reference or signature attribute ATTR of SRC_DIE.
19886 On entry *REF_CU is the CU of SRC_DIE.
19887 On exit *REF_CU is the CU of the result. */
19888
19889static struct die_info *
ff39bb5e 19890follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
348e048f
DE
19891 struct dwarf2_cu **ref_cu)
19892{
19893 struct die_info *die;
19894
7771576e 19895 if (attr_form_is_ref (attr))
348e048f 19896 die = follow_die_ref (src_die, attr, ref_cu);
55f1336d 19897 else if (attr->form == DW_FORM_ref_sig8)
348e048f
DE
19898 die = follow_die_sig (src_die, attr, ref_cu);
19899 else
19900 {
19901 dump_die_for_error (src_die);
19902 error (_("Dwarf Error: Expected reference attribute [in module %s]"),
4262abfb 19903 objfile_name ((*ref_cu)->objfile));
348e048f
DE
19904 }
19905
19906 return die;
03dd20cc
DJ
19907}
19908
5c631832 19909/* Follow reference OFFSET.
673bfd45
DE
19910 On entry *REF_CU is the CU of the source die referencing OFFSET.
19911 On exit *REF_CU is the CU of the result.
19912 Returns NULL if OFFSET is invalid. */
f504f079 19913
f9aca02d 19914static struct die_info *
36586728
TT
19915follow_die_offset (sect_offset offset, int offset_in_dwz,
19916 struct dwarf2_cu **ref_cu)
c906108c 19917{
10b3939b 19918 struct die_info temp_die;
f2f0e013 19919 struct dwarf2_cu *target_cu, *cu = *ref_cu;
10b3939b 19920
348e048f
DE
19921 gdb_assert (cu->per_cu != NULL);
19922
98bfdba5
PA
19923 target_cu = cu;
19924
3019eac3 19925 if (cu->per_cu->is_debug_types)
348e048f
DE
19926 {
19927 /* .debug_types CUs cannot reference anything outside their CU.
19928 If they need to, they have to reference a signatured type via
55f1336d 19929 DW_FORM_ref_sig8. */
348e048f 19930 if (! offset_in_cu_p (&cu->header, offset))
5c631832 19931 return NULL;
348e048f 19932 }
36586728
TT
19933 else if (offset_in_dwz != cu->per_cu->is_dwz
19934 || ! offset_in_cu_p (&cu->header, offset))
10b3939b
DJ
19935 {
19936 struct dwarf2_per_cu_data *per_cu;
9a619af0 19937
36586728
TT
19938 per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
19939 cu->objfile);
03dd20cc
DJ
19940
19941 /* If necessary, add it to the queue and load its DIEs. */
95554aad
TT
19942 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
19943 load_full_comp_unit (per_cu, cu->language);
03dd20cc 19944
10b3939b
DJ
19945 target_cu = per_cu->cu;
19946 }
98bfdba5
PA
19947 else if (cu->dies == NULL)
19948 {
19949 /* We're loading full DIEs during partial symbol reading. */
19950 gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
95554aad 19951 load_full_comp_unit (cu->per_cu, language_minimal);
98bfdba5 19952 }
c906108c 19953
f2f0e013 19954 *ref_cu = target_cu;
51545339 19955 temp_die.offset = offset;
b64f50a1 19956 return htab_find_with_hash (target_cu->die_hash, &temp_die, offset.sect_off);
5c631832 19957}
10b3939b 19958
5c631832
JK
19959/* Follow reference attribute ATTR of SRC_DIE.
19960 On entry *REF_CU is the CU of SRC_DIE.
19961 On exit *REF_CU is the CU of the result. */
19962
19963static struct die_info *
ff39bb5e 19964follow_die_ref (struct die_info *src_die, const struct attribute *attr,
5c631832
JK
19965 struct dwarf2_cu **ref_cu)
19966{
b64f50a1 19967 sect_offset offset = dwarf2_get_ref_die_offset (attr);
5c631832
JK
19968 struct dwarf2_cu *cu = *ref_cu;
19969 struct die_info *die;
19970
36586728
TT
19971 die = follow_die_offset (offset,
19972 (attr->form == DW_FORM_GNU_ref_alt
19973 || cu->per_cu->is_dwz),
19974 ref_cu);
5c631832
JK
19975 if (!die)
19976 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
19977 "at 0x%x [in module %s]"),
4262abfb
JK
19978 offset.sect_off, src_die->offset.sect_off,
19979 objfile_name (cu->objfile));
348e048f 19980
5c631832
JK
19981 return die;
19982}
19983
d83e736b
JK
19984/* Return DWARF block referenced by DW_AT_location of DIE at OFFSET at PER_CU.
19985 Returned value is intended for DW_OP_call*. Returned
19986 dwarf2_locexpr_baton->data has lifetime of PER_CU->OBJFILE. */
5c631832
JK
19987
19988struct dwarf2_locexpr_baton
8b9737bf
TT
19989dwarf2_fetch_die_loc_sect_off (sect_offset offset,
19990 struct dwarf2_per_cu_data *per_cu,
19991 CORE_ADDR (*get_frame_pc) (void *baton),
19992 void *baton)
5c631832 19993{
918dd910 19994 struct dwarf2_cu *cu;
5c631832
JK
19995 struct die_info *die;
19996 struct attribute *attr;
19997 struct dwarf2_locexpr_baton retval;
19998
8cf6f0b1
TT
19999 dw2_setup (per_cu->objfile);
20000
918dd910
JK
20001 if (per_cu->cu == NULL)
20002 load_cu (per_cu);
20003 cu = per_cu->cu;
20004
36586728 20005 die = follow_die_offset (offset, per_cu->is_dwz, &cu);
5c631832
JK
20006 if (!die)
20007 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
4262abfb 20008 offset.sect_off, objfile_name (per_cu->objfile));
5c631832
JK
20009
20010 attr = dwarf2_attr (die, DW_AT_location, cu);
20011 if (!attr)
20012 {
e103e986
JK
20013 /* DWARF: "If there is no such attribute, then there is no effect.".
20014 DATA is ignored if SIZE is 0. */
5c631832 20015
e103e986 20016 retval.data = NULL;
5c631832
JK
20017 retval.size = 0;
20018 }
8cf6f0b1
TT
20019 else if (attr_form_is_section_offset (attr))
20020 {
20021 struct dwarf2_loclist_baton loclist_baton;
20022 CORE_ADDR pc = (*get_frame_pc) (baton);
20023 size_t size;
20024
20025 fill_in_loclist_baton (cu, &loclist_baton, attr);
20026
20027 retval.data = dwarf2_find_location_expression (&loclist_baton,
20028 &size, pc);
20029 retval.size = size;
20030 }
5c631832
JK
20031 else
20032 {
20033 if (!attr_form_is_block (attr))
20034 error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
20035 "is neither DW_FORM_block* nor DW_FORM_exprloc"),
4262abfb 20036 offset.sect_off, objfile_name (per_cu->objfile));
5c631832
JK
20037
20038 retval.data = DW_BLOCK (attr)->data;
20039 retval.size = DW_BLOCK (attr)->size;
20040 }
20041 retval.per_cu = cu->per_cu;
918dd910 20042
918dd910
JK
20043 age_cached_comp_units ();
20044
5c631832 20045 return retval;
348e048f
DE
20046}
20047
8b9737bf
TT
20048/* Like dwarf2_fetch_die_loc_sect_off, but take a CU
20049 offset. */
20050
20051struct dwarf2_locexpr_baton
20052dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
20053 struct dwarf2_per_cu_data *per_cu,
20054 CORE_ADDR (*get_frame_pc) (void *baton),
20055 void *baton)
20056{
20057 sect_offset offset = { per_cu->offset.sect_off + offset_in_cu.cu_off };
20058
20059 return dwarf2_fetch_die_loc_sect_off (offset, per_cu, get_frame_pc, baton);
20060}
20061
b6807d98
TT
20062/* Write a constant of a given type as target-ordered bytes into
20063 OBSTACK. */
20064
20065static const gdb_byte *
20066write_constant_as_bytes (struct obstack *obstack,
20067 enum bfd_endian byte_order,
20068 struct type *type,
20069 ULONGEST value,
20070 LONGEST *len)
20071{
20072 gdb_byte *result;
20073
20074 *len = TYPE_LENGTH (type);
20075 result = obstack_alloc (obstack, *len);
20076 store_unsigned_integer (result, *len, byte_order, value);
20077
20078 return result;
20079}
20080
20081/* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
20082 pointer to the constant bytes and set LEN to the length of the
20083 data. If memory is needed, allocate it on OBSTACK. If the DIE
20084 does not have a DW_AT_const_value, return NULL. */
20085
20086const gdb_byte *
20087dwarf2_fetch_constant_bytes (sect_offset offset,
20088 struct dwarf2_per_cu_data *per_cu,
20089 struct obstack *obstack,
20090 LONGEST *len)
20091{
20092 struct dwarf2_cu *cu;
20093 struct die_info *die;
20094 struct attribute *attr;
20095 const gdb_byte *result = NULL;
20096 struct type *type;
20097 LONGEST value;
20098 enum bfd_endian byte_order;
20099
20100 dw2_setup (per_cu->objfile);
20101
20102 if (per_cu->cu == NULL)
20103 load_cu (per_cu);
20104 cu = per_cu->cu;
20105
20106 die = follow_die_offset (offset, per_cu->is_dwz, &cu);
20107 if (!die)
20108 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
4262abfb 20109 offset.sect_off, objfile_name (per_cu->objfile));
b6807d98
TT
20110
20111
20112 attr = dwarf2_attr (die, DW_AT_const_value, cu);
20113 if (attr == NULL)
20114 return NULL;
20115
20116 byte_order = (bfd_big_endian (per_cu->objfile->obfd)
20117 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
20118
20119 switch (attr->form)
20120 {
20121 case DW_FORM_addr:
20122 case DW_FORM_GNU_addr_index:
20123 {
20124 gdb_byte *tem;
20125
20126 *len = cu->header.addr_size;
20127 tem = obstack_alloc (obstack, *len);
20128 store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
20129 result = tem;
20130 }
20131 break;
20132 case DW_FORM_string:
20133 case DW_FORM_strp:
20134 case DW_FORM_GNU_str_index:
20135 case DW_FORM_GNU_strp_alt:
20136 /* DW_STRING is already allocated on the objfile obstack, point
20137 directly to it. */
20138 result = (const gdb_byte *) DW_STRING (attr);
20139 *len = strlen (DW_STRING (attr));
20140 break;
20141 case DW_FORM_block1:
20142 case DW_FORM_block2:
20143 case DW_FORM_block4:
20144 case DW_FORM_block:
20145 case DW_FORM_exprloc:
20146 result = DW_BLOCK (attr)->data;
20147 *len = DW_BLOCK (attr)->size;
20148 break;
20149
20150 /* The DW_AT_const_value attributes are supposed to carry the
20151 symbol's value "represented as it would be on the target
20152 architecture." By the time we get here, it's already been
20153 converted to host endianness, so we just need to sign- or
20154 zero-extend it as appropriate. */
20155 case DW_FORM_data1:
20156 type = die_type (die, cu);
20157 result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
20158 if (result == NULL)
20159 result = write_constant_as_bytes (obstack, byte_order,
20160 type, value, len);
20161 break;
20162 case DW_FORM_data2:
20163 type = die_type (die, cu);
20164 result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
20165 if (result == NULL)
20166 result = write_constant_as_bytes (obstack, byte_order,
20167 type, value, len);
20168 break;
20169 case DW_FORM_data4:
20170 type = die_type (die, cu);
20171 result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
20172 if (result == NULL)
20173 result = write_constant_as_bytes (obstack, byte_order,
20174 type, value, len);
20175 break;
20176 case DW_FORM_data8:
20177 type = die_type (die, cu);
20178 result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
20179 if (result == NULL)
20180 result = write_constant_as_bytes (obstack, byte_order,
20181 type, value, len);
20182 break;
20183
20184 case DW_FORM_sdata:
20185 type = die_type (die, cu);
20186 result = write_constant_as_bytes (obstack, byte_order,
20187 type, DW_SND (attr), len);
20188 break;
20189
20190 case DW_FORM_udata:
20191 type = die_type (die, cu);
20192 result = write_constant_as_bytes (obstack, byte_order,
20193 type, DW_UNSND (attr), len);
20194 break;
20195
20196 default:
20197 complaint (&symfile_complaints,
20198 _("unsupported const value attribute form: '%s'"),
20199 dwarf_form_name (attr->form));
20200 break;
20201 }
20202
20203 return result;
20204}
20205
8a9b8146
TT
20206/* Return the type of the DIE at DIE_OFFSET in the CU named by
20207 PER_CU. */
20208
20209struct type *
b64f50a1 20210dwarf2_get_die_type (cu_offset die_offset,
8a9b8146
TT
20211 struct dwarf2_per_cu_data *per_cu)
20212{
b64f50a1
JK
20213 sect_offset die_offset_sect;
20214
8a9b8146 20215 dw2_setup (per_cu->objfile);
b64f50a1
JK
20216
20217 die_offset_sect.sect_off = per_cu->offset.sect_off + die_offset.cu_off;
20218 return get_die_type_at_offset (die_offset_sect, per_cu);
8a9b8146
TT
20219}
20220
ac9ec31b 20221/* Follow type unit SIG_TYPE referenced by SRC_DIE.
348e048f 20222 On entry *REF_CU is the CU of SRC_DIE.
ac9ec31b
DE
20223 On exit *REF_CU is the CU of the result.
20224 Returns NULL if the referenced DIE isn't found. */
348e048f
DE
20225
20226static struct die_info *
ac9ec31b
DE
20227follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
20228 struct dwarf2_cu **ref_cu)
348e048f
DE
20229{
20230 struct objfile *objfile = (*ref_cu)->objfile;
20231 struct die_info temp_die;
348e048f
DE
20232 struct dwarf2_cu *sig_cu;
20233 struct die_info *die;
20234
ac9ec31b
DE
20235 /* While it might be nice to assert sig_type->type == NULL here,
20236 we can get here for DW_AT_imported_declaration where we need
20237 the DIE not the type. */
348e048f
DE
20238
20239 /* If necessary, add it to the queue and load its DIEs. */
20240
95554aad 20241 if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
a0f42c21 20242 read_signatured_type (sig_type);
348e048f 20243
348e048f 20244 sig_cu = sig_type->per_cu.cu;
69d751e3 20245 gdb_assert (sig_cu != NULL);
3019eac3
DE
20246 gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
20247 temp_die.offset = sig_type->type_offset_in_section;
b64f50a1
JK
20248 die = htab_find_with_hash (sig_cu->die_hash, &temp_die,
20249 temp_die.offset.sect_off);
348e048f
DE
20250 if (die)
20251 {
796a7ff8
DE
20252 /* For .gdb_index version 7 keep track of included TUs.
20253 http://sourceware.org/bugzilla/show_bug.cgi?id=15021. */
20254 if (dwarf2_per_objfile->index_table != NULL
20255 && dwarf2_per_objfile->index_table->version <= 7)
20256 {
20257 VEC_safe_push (dwarf2_per_cu_ptr,
20258 (*ref_cu)->per_cu->imported_symtabs,
20259 sig_cu->per_cu);
20260 }
20261
348e048f
DE
20262 *ref_cu = sig_cu;
20263 return die;
20264 }
20265
ac9ec31b
DE
20266 return NULL;
20267}
20268
20269/* Follow signatured type referenced by ATTR in SRC_DIE.
20270 On entry *REF_CU is the CU of SRC_DIE.
20271 On exit *REF_CU is the CU of the result.
20272 The result is the DIE of the type.
20273 If the referenced type cannot be found an error is thrown. */
20274
20275static struct die_info *
ff39bb5e 20276follow_die_sig (struct die_info *src_die, const struct attribute *attr,
ac9ec31b
DE
20277 struct dwarf2_cu **ref_cu)
20278{
20279 ULONGEST signature = DW_SIGNATURE (attr);
20280 struct signatured_type *sig_type;
20281 struct die_info *die;
20282
20283 gdb_assert (attr->form == DW_FORM_ref_sig8);
20284
a2ce51a0 20285 sig_type = lookup_signatured_type (*ref_cu, signature);
ac9ec31b
DE
20286 /* sig_type will be NULL if the signatured type is missing from
20287 the debug info. */
20288 if (sig_type == NULL)
20289 {
20290 error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
20291 " from DIE at 0x%x [in module %s]"),
20292 hex_string (signature), src_die->offset.sect_off,
4262abfb 20293 objfile_name ((*ref_cu)->objfile));
ac9ec31b
DE
20294 }
20295
20296 die = follow_die_sig_1 (src_die, sig_type, ref_cu);
20297 if (die == NULL)
20298 {
20299 dump_die_for_error (src_die);
20300 error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
20301 " from DIE at 0x%x [in module %s]"),
20302 hex_string (signature), src_die->offset.sect_off,
4262abfb 20303 objfile_name ((*ref_cu)->objfile));
ac9ec31b
DE
20304 }
20305
20306 return die;
20307}
20308
20309/* Get the type specified by SIGNATURE referenced in DIE/CU,
20310 reading in and processing the type unit if necessary. */
20311
20312static struct type *
20313get_signatured_type (struct die_info *die, ULONGEST signature,
20314 struct dwarf2_cu *cu)
20315{
20316 struct signatured_type *sig_type;
20317 struct dwarf2_cu *type_cu;
20318 struct die_info *type_die;
20319 struct type *type;
20320
a2ce51a0 20321 sig_type = lookup_signatured_type (cu, signature);
ac9ec31b
DE
20322 /* sig_type will be NULL if the signatured type is missing from
20323 the debug info. */
20324 if (sig_type == NULL)
20325 {
20326 complaint (&symfile_complaints,
20327 _("Dwarf Error: Cannot find signatured DIE %s referenced"
20328 " from DIE at 0x%x [in module %s]"),
20329 hex_string (signature), die->offset.sect_off,
4262abfb 20330 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20331 return build_error_marker_type (cu, die);
20332 }
20333
20334 /* If we already know the type we're done. */
20335 if (sig_type->type != NULL)
20336 return sig_type->type;
20337
20338 type_cu = cu;
20339 type_die = follow_die_sig_1 (die, sig_type, &type_cu);
20340 if (type_die != NULL)
20341 {
20342 /* N.B. We need to call get_die_type to ensure only one type for this DIE
20343 is created. This is important, for example, because for c++ classes
20344 we need TYPE_NAME set which is only done by new_symbol. Blech. */
20345 type = read_type_die (type_die, type_cu);
20346 if (type == NULL)
20347 {
20348 complaint (&symfile_complaints,
20349 _("Dwarf Error: Cannot build signatured type %s"
20350 " referenced from DIE at 0x%x [in module %s]"),
20351 hex_string (signature), die->offset.sect_off,
4262abfb 20352 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20353 type = build_error_marker_type (cu, die);
20354 }
20355 }
20356 else
20357 {
20358 complaint (&symfile_complaints,
20359 _("Dwarf Error: Problem reading signatured DIE %s referenced"
20360 " from DIE at 0x%x [in module %s]"),
20361 hex_string (signature), die->offset.sect_off,
4262abfb 20362 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20363 type = build_error_marker_type (cu, die);
20364 }
20365 sig_type->type = type;
20366
20367 return type;
20368}
20369
20370/* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
20371 reading in and processing the type unit if necessary. */
20372
20373static struct type *
ff39bb5e 20374get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
b385a60d 20375 struct dwarf2_cu *cu) /* ARI: editCase function */
ac9ec31b
DE
20376{
20377 /* Yes, DW_AT_signature can use a non-ref_sig8 reference. */
7771576e 20378 if (attr_form_is_ref (attr))
ac9ec31b
DE
20379 {
20380 struct dwarf2_cu *type_cu = cu;
20381 struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
20382
20383 return read_type_die (type_die, type_cu);
20384 }
20385 else if (attr->form == DW_FORM_ref_sig8)
20386 {
20387 return get_signatured_type (die, DW_SIGNATURE (attr), cu);
20388 }
20389 else
20390 {
20391 complaint (&symfile_complaints,
20392 _("Dwarf Error: DW_AT_signature has bad form %s in DIE"
20393 " at 0x%x [in module %s]"),
20394 dwarf_form_name (attr->form), die->offset.sect_off,
4262abfb 20395 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20396 return build_error_marker_type (cu, die);
20397 }
348e048f
DE
20398}
20399
e5fe5e75 20400/* Load the DIEs associated with type unit PER_CU into memory. */
348e048f
DE
20401
20402static void
e5fe5e75 20403load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
348e048f 20404{
52dc124a 20405 struct signatured_type *sig_type;
348e048f 20406
f4dc4d17
DE
20407 /* Caller is responsible for ensuring type_unit_groups don't get here. */
20408 gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
20409
6721b2ec
DE
20410 /* We have the per_cu, but we need the signatured_type.
20411 Fortunately this is an easy translation. */
20412 gdb_assert (per_cu->is_debug_types);
20413 sig_type = (struct signatured_type *) per_cu;
348e048f 20414
6721b2ec 20415 gdb_assert (per_cu->cu == NULL);
348e048f 20416
52dc124a 20417 read_signatured_type (sig_type);
348e048f 20418
6721b2ec 20419 gdb_assert (per_cu->cu != NULL);
348e048f
DE
20420}
20421
dee91e82
DE
20422/* die_reader_func for read_signatured_type.
20423 This is identical to load_full_comp_unit_reader,
20424 but is kept separate for now. */
348e048f
DE
20425
20426static void
dee91e82 20427read_signatured_type_reader (const struct die_reader_specs *reader,
d521ce57 20428 const gdb_byte *info_ptr,
dee91e82
DE
20429 struct die_info *comp_unit_die,
20430 int has_children,
20431 void *data)
348e048f 20432{
dee91e82 20433 struct dwarf2_cu *cu = reader->cu;
348e048f 20434
dee91e82
DE
20435 gdb_assert (cu->die_hash == NULL);
20436 cu->die_hash =
20437 htab_create_alloc_ex (cu->header.length / 12,
20438 die_hash,
20439 die_eq,
20440 NULL,
20441 &cu->comp_unit_obstack,
20442 hashtab_obstack_allocate,
20443 dummy_obstack_deallocate);
348e048f 20444
dee91e82
DE
20445 if (has_children)
20446 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
20447 &info_ptr, comp_unit_die);
20448 cu->dies = comp_unit_die;
20449 /* comp_unit_die is not stored in die_hash, no need. */
348e048f
DE
20450
20451 /* We try not to read any attributes in this function, because not
9cdd5dbd 20452 all CUs needed for references have been loaded yet, and symbol
348e048f 20453 table processing isn't initialized. But we have to set the CU language,
dee91e82
DE
20454 or we won't be able to build types correctly.
20455 Similarly, if we do not read the producer, we can not apply
20456 producer-specific interpretation. */
95554aad 20457 prepare_one_comp_unit (cu, cu->dies, language_minimal);
dee91e82 20458}
348e048f 20459
3019eac3
DE
20460/* Read in a signatured type and build its CU and DIEs.
20461 If the type is a stub for the real type in a DWO file,
20462 read in the real type from the DWO file as well. */
dee91e82
DE
20463
20464static void
20465read_signatured_type (struct signatured_type *sig_type)
20466{
20467 struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
348e048f 20468
3019eac3 20469 gdb_assert (per_cu->is_debug_types);
dee91e82 20470 gdb_assert (per_cu->cu == NULL);
348e048f 20471
f4dc4d17
DE
20472 init_cutu_and_read_dies (per_cu, NULL, 0, 1,
20473 read_signatured_type_reader, NULL);
7ee85ab1 20474 sig_type->per_cu.tu_read = 1;
c906108c
SS
20475}
20476
c906108c
SS
20477/* Decode simple location descriptions.
20478 Given a pointer to a dwarf block that defines a location, compute
20479 the location and return the value.
20480
4cecd739
DJ
20481 NOTE drow/2003-11-18: This function is called in two situations
20482 now: for the address of static or global variables (partial symbols
20483 only) and for offsets into structures which are expected to be
20484 (more or less) constant. The partial symbol case should go away,
20485 and only the constant case should remain. That will let this
20486 function complain more accurately. A few special modes are allowed
20487 without complaint for global variables (for instance, global
20488 register values and thread-local values).
c906108c
SS
20489
20490 A location description containing no operations indicates that the
4cecd739 20491 object is optimized out. The return value is 0 for that case.
6b992462
DJ
20492 FIXME drow/2003-11-16: No callers check for this case any more; soon all
20493 callers will only want a very basic result and this can become a
21ae7a4d
JK
20494 complaint.
20495
20496 Note that stack[0] is unused except as a default error return. */
c906108c
SS
20497
20498static CORE_ADDR
e7c27a73 20499decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
c906108c 20500{
e7c27a73 20501 struct objfile *objfile = cu->objfile;
56eb65bd
SP
20502 size_t i;
20503 size_t size = blk->size;
d521ce57 20504 const gdb_byte *data = blk->data;
21ae7a4d
JK
20505 CORE_ADDR stack[64];
20506 int stacki;
20507 unsigned int bytes_read, unsnd;
20508 gdb_byte op;
c906108c 20509
21ae7a4d
JK
20510 i = 0;
20511 stacki = 0;
20512 stack[stacki] = 0;
20513 stack[++stacki] = 0;
20514
20515 while (i < size)
20516 {
20517 op = data[i++];
20518 switch (op)
20519 {
20520 case DW_OP_lit0:
20521 case DW_OP_lit1:
20522 case DW_OP_lit2:
20523 case DW_OP_lit3:
20524 case DW_OP_lit4:
20525 case DW_OP_lit5:
20526 case DW_OP_lit6:
20527 case DW_OP_lit7:
20528 case DW_OP_lit8:
20529 case DW_OP_lit9:
20530 case DW_OP_lit10:
20531 case DW_OP_lit11:
20532 case DW_OP_lit12:
20533 case DW_OP_lit13:
20534 case DW_OP_lit14:
20535 case DW_OP_lit15:
20536 case DW_OP_lit16:
20537 case DW_OP_lit17:
20538 case DW_OP_lit18:
20539 case DW_OP_lit19:
20540 case DW_OP_lit20:
20541 case DW_OP_lit21:
20542 case DW_OP_lit22:
20543 case DW_OP_lit23:
20544 case DW_OP_lit24:
20545 case DW_OP_lit25:
20546 case DW_OP_lit26:
20547 case DW_OP_lit27:
20548 case DW_OP_lit28:
20549 case DW_OP_lit29:
20550 case DW_OP_lit30:
20551 case DW_OP_lit31:
20552 stack[++stacki] = op - DW_OP_lit0;
20553 break;
f1bea926 20554
21ae7a4d
JK
20555 case DW_OP_reg0:
20556 case DW_OP_reg1:
20557 case DW_OP_reg2:
20558 case DW_OP_reg3:
20559 case DW_OP_reg4:
20560 case DW_OP_reg5:
20561 case DW_OP_reg6:
20562 case DW_OP_reg7:
20563 case DW_OP_reg8:
20564 case DW_OP_reg9:
20565 case DW_OP_reg10:
20566 case DW_OP_reg11:
20567 case DW_OP_reg12:
20568 case DW_OP_reg13:
20569 case DW_OP_reg14:
20570 case DW_OP_reg15:
20571 case DW_OP_reg16:
20572 case DW_OP_reg17:
20573 case DW_OP_reg18:
20574 case DW_OP_reg19:
20575 case DW_OP_reg20:
20576 case DW_OP_reg21:
20577 case DW_OP_reg22:
20578 case DW_OP_reg23:
20579 case DW_OP_reg24:
20580 case DW_OP_reg25:
20581 case DW_OP_reg26:
20582 case DW_OP_reg27:
20583 case DW_OP_reg28:
20584 case DW_OP_reg29:
20585 case DW_OP_reg30:
20586 case DW_OP_reg31:
20587 stack[++stacki] = op - DW_OP_reg0;
20588 if (i < size)
20589 dwarf2_complex_location_expr_complaint ();
20590 break;
c906108c 20591
21ae7a4d
JK
20592 case DW_OP_regx:
20593 unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
20594 i += bytes_read;
20595 stack[++stacki] = unsnd;
20596 if (i < size)
20597 dwarf2_complex_location_expr_complaint ();
20598 break;
c906108c 20599
21ae7a4d
JK
20600 case DW_OP_addr:
20601 stack[++stacki] = read_address (objfile->obfd, &data[i],
20602 cu, &bytes_read);
20603 i += bytes_read;
20604 break;
d53d4ac5 20605
21ae7a4d
JK
20606 case DW_OP_const1u:
20607 stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
20608 i += 1;
20609 break;
20610
20611 case DW_OP_const1s:
20612 stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
20613 i += 1;
20614 break;
20615
20616 case DW_OP_const2u:
20617 stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
20618 i += 2;
20619 break;
20620
20621 case DW_OP_const2s:
20622 stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
20623 i += 2;
20624 break;
d53d4ac5 20625
21ae7a4d
JK
20626 case DW_OP_const4u:
20627 stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
20628 i += 4;
20629 break;
20630
20631 case DW_OP_const4s:
20632 stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
20633 i += 4;
20634 break;
20635
585861ea
JK
20636 case DW_OP_const8u:
20637 stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
20638 i += 8;
20639 break;
20640
21ae7a4d
JK
20641 case DW_OP_constu:
20642 stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
20643 &bytes_read);
20644 i += bytes_read;
20645 break;
20646
20647 case DW_OP_consts:
20648 stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
20649 i += bytes_read;
20650 break;
20651
20652 case DW_OP_dup:
20653 stack[stacki + 1] = stack[stacki];
20654 stacki++;
20655 break;
20656
20657 case DW_OP_plus:
20658 stack[stacki - 1] += stack[stacki];
20659 stacki--;
20660 break;
20661
20662 case DW_OP_plus_uconst:
20663 stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
20664 &bytes_read);
20665 i += bytes_read;
20666 break;
20667
20668 case DW_OP_minus:
20669 stack[stacki - 1] -= stack[stacki];
20670 stacki--;
20671 break;
20672
20673 case DW_OP_deref:
20674 /* If we're not the last op, then we definitely can't encode
20675 this using GDB's address_class enum. This is valid for partial
20676 global symbols, although the variable's address will be bogus
20677 in the psymtab. */
20678 if (i < size)
20679 dwarf2_complex_location_expr_complaint ();
20680 break;
20681
20682 case DW_OP_GNU_push_tls_address:
20683 /* The top of the stack has the offset from the beginning
20684 of the thread control block at which the variable is located. */
20685 /* Nothing should follow this operator, so the top of stack would
20686 be returned. */
20687 /* This is valid for partial global symbols, but the variable's
585861ea
JK
20688 address will be bogus in the psymtab. Make it always at least
20689 non-zero to not look as a variable garbage collected by linker
20690 which have DW_OP_addr 0. */
21ae7a4d
JK
20691 if (i < size)
20692 dwarf2_complex_location_expr_complaint ();
585861ea 20693 stack[stacki]++;
21ae7a4d
JK
20694 break;
20695
20696 case DW_OP_GNU_uninit:
20697 break;
20698
3019eac3 20699 case DW_OP_GNU_addr_index:
49f6c839 20700 case DW_OP_GNU_const_index:
3019eac3
DE
20701 stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
20702 &bytes_read);
20703 i += bytes_read;
20704 break;
20705
21ae7a4d
JK
20706 default:
20707 {
f39c6ffd 20708 const char *name = get_DW_OP_name (op);
21ae7a4d
JK
20709
20710 if (name)
20711 complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
20712 name);
20713 else
20714 complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
20715 op);
20716 }
20717
20718 return (stack[stacki]);
d53d4ac5 20719 }
3c6e0cb3 20720
21ae7a4d
JK
20721 /* Enforce maximum stack depth of SIZE-1 to avoid writing
20722 outside of the allocated space. Also enforce minimum>0. */
20723 if (stacki >= ARRAY_SIZE (stack) - 1)
20724 {
20725 complaint (&symfile_complaints,
20726 _("location description stack overflow"));
20727 return 0;
20728 }
20729
20730 if (stacki <= 0)
20731 {
20732 complaint (&symfile_complaints,
20733 _("location description stack underflow"));
20734 return 0;
20735 }
20736 }
20737 return (stack[stacki]);
c906108c
SS
20738}
20739
20740/* memory allocation interface */
20741
c906108c 20742static struct dwarf_block *
7b5a2f43 20743dwarf_alloc_block (struct dwarf2_cu *cu)
c906108c
SS
20744{
20745 struct dwarf_block *blk;
20746
20747 blk = (struct dwarf_block *)
7b5a2f43 20748 obstack_alloc (&cu->comp_unit_obstack, sizeof (struct dwarf_block));
c906108c
SS
20749 return (blk);
20750}
20751
c906108c 20752static struct die_info *
b60c80d6 20753dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
c906108c
SS
20754{
20755 struct die_info *die;
b60c80d6
DJ
20756 size_t size = sizeof (struct die_info);
20757
20758 if (num_attrs > 1)
20759 size += (num_attrs - 1) * sizeof (struct attribute);
c906108c 20760
b60c80d6 20761 die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
c906108c
SS
20762 memset (die, 0, sizeof (struct die_info));
20763 return (die);
20764}
2e276125
JB
20765
20766\f
20767/* Macro support. */
20768
233d95b5
JK
20769/* Return file name relative to the compilation directory of file number I in
20770 *LH's file name table. The result is allocated using xmalloc; the caller is
2e276125 20771 responsible for freeing it. */
233d95b5 20772
2e276125 20773static char *
233d95b5 20774file_file_name (int file, struct line_header *lh)
2e276125 20775{
6a83a1e6
EZ
20776 /* Is the file number a valid index into the line header's file name
20777 table? Remember that file numbers start with one, not zero. */
20778 if (1 <= file && file <= lh->num_file_names)
20779 {
20780 struct file_entry *fe = &lh->file_names[file - 1];
6e70227d 20781
afa6c9ab
SL
20782 if (IS_ABSOLUTE_PATH (fe->name) || fe->dir_index == 0
20783 || lh->include_dirs == NULL)
6a83a1e6 20784 return xstrdup (fe->name);
233d95b5
JK
20785 return concat (lh->include_dirs[fe->dir_index - 1], SLASH_STRING,
20786 fe->name, NULL);
6a83a1e6 20787 }
2e276125
JB
20788 else
20789 {
6a83a1e6
EZ
20790 /* The compiler produced a bogus file number. We can at least
20791 record the macro definitions made in the file, even if we
20792 won't be able to find the file by name. */
20793 char fake_name[80];
9a619af0 20794
8c042590
PM
20795 xsnprintf (fake_name, sizeof (fake_name),
20796 "<bad macro file number %d>", file);
2e276125 20797
6e70227d 20798 complaint (&symfile_complaints,
6a83a1e6
EZ
20799 _("bad file number in macro information (%d)"),
20800 file);
2e276125 20801
6a83a1e6 20802 return xstrdup (fake_name);
2e276125
JB
20803 }
20804}
20805
233d95b5
JK
20806/* Return the full name of file number I in *LH's file name table.
20807 Use COMP_DIR as the name of the current directory of the
20808 compilation. The result is allocated using xmalloc; the caller is
20809 responsible for freeing it. */
20810static char *
20811file_full_name (int file, struct line_header *lh, const char *comp_dir)
20812{
20813 /* Is the file number a valid index into the line header's file name
20814 table? Remember that file numbers start with one, not zero. */
20815 if (1 <= file && file <= lh->num_file_names)
20816 {
20817 char *relative = file_file_name (file, lh);
20818
20819 if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
20820 return relative;
20821 return reconcat (relative, comp_dir, SLASH_STRING, relative, NULL);
20822 }
20823 else
20824 return file_file_name (file, lh);
20825}
20826
2e276125
JB
20827
20828static struct macro_source_file *
20829macro_start_file (int file, int line,
20830 struct macro_source_file *current_file,
43f3e411 20831 struct line_header *lh)
2e276125 20832{
233d95b5
JK
20833 /* File name relative to the compilation directory of this source file. */
20834 char *file_name = file_file_name (file, lh);
2e276125 20835
2e276125 20836 if (! current_file)
abc9d0dc 20837 {
fc474241
DE
20838 /* Note: We don't create a macro table for this compilation unit
20839 at all until we actually get a filename. */
43f3e411 20840 struct macro_table *macro_table = get_macro_table ();
fc474241 20841
abc9d0dc
TT
20842 /* If we have no current file, then this must be the start_file
20843 directive for the compilation unit's main source file. */
fc474241
DE
20844 current_file = macro_set_main (macro_table, file_name);
20845 macro_define_special (macro_table);
abc9d0dc 20846 }
2e276125 20847 else
233d95b5 20848 current_file = macro_include (current_file, line, file_name);
2e276125 20849
233d95b5 20850 xfree (file_name);
6e70227d 20851
2e276125
JB
20852 return current_file;
20853}
20854
20855
20856/* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
20857 followed by a null byte. */
20858static char *
20859copy_string (const char *buf, int len)
20860{
20861 char *s = xmalloc (len + 1);
9a619af0 20862
2e276125
JB
20863 memcpy (s, buf, len);
20864 s[len] = '\0';
2e276125
JB
20865 return s;
20866}
20867
20868
20869static const char *
20870consume_improper_spaces (const char *p, const char *body)
20871{
20872 if (*p == ' ')
20873 {
4d3c2250 20874 complaint (&symfile_complaints,
3e43a32a
MS
20875 _("macro definition contains spaces "
20876 "in formal argument list:\n`%s'"),
4d3c2250 20877 body);
2e276125
JB
20878
20879 while (*p == ' ')
20880 p++;
20881 }
20882
20883 return p;
20884}
20885
20886
20887static void
20888parse_macro_definition (struct macro_source_file *file, int line,
20889 const char *body)
20890{
20891 const char *p;
20892
20893 /* The body string takes one of two forms. For object-like macro
20894 definitions, it should be:
20895
20896 <macro name> " " <definition>
20897
20898 For function-like macro definitions, it should be:
20899
20900 <macro name> "() " <definition>
20901 or
20902 <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
20903
20904 Spaces may appear only where explicitly indicated, and in the
20905 <definition>.
20906
20907 The Dwarf 2 spec says that an object-like macro's name is always
20908 followed by a space, but versions of GCC around March 2002 omit
6e70227d 20909 the space when the macro's definition is the empty string.
2e276125
JB
20910
20911 The Dwarf 2 spec says that there should be no spaces between the
20912 formal arguments in a function-like macro's formal argument list,
20913 but versions of GCC around March 2002 include spaces after the
20914 commas. */
20915
20916
20917 /* Find the extent of the macro name. The macro name is terminated
20918 by either a space or null character (for an object-like macro) or
20919 an opening paren (for a function-like macro). */
20920 for (p = body; *p; p++)
20921 if (*p == ' ' || *p == '(')
20922 break;
20923
20924 if (*p == ' ' || *p == '\0')
20925 {
20926 /* It's an object-like macro. */
20927 int name_len = p - body;
20928 char *name = copy_string (body, name_len);
20929 const char *replacement;
20930
20931 if (*p == ' ')
20932 replacement = body + name_len + 1;
20933 else
20934 {
4d3c2250 20935 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
20936 replacement = body + name_len;
20937 }
6e70227d 20938
2e276125
JB
20939 macro_define_object (file, line, name, replacement);
20940
20941 xfree (name);
20942 }
20943 else if (*p == '(')
20944 {
20945 /* It's a function-like macro. */
20946 char *name = copy_string (body, p - body);
20947 int argc = 0;
20948 int argv_size = 1;
20949 char **argv = xmalloc (argv_size * sizeof (*argv));
20950
20951 p++;
20952
20953 p = consume_improper_spaces (p, body);
20954
20955 /* Parse the formal argument list. */
20956 while (*p && *p != ')')
20957 {
20958 /* Find the extent of the current argument name. */
20959 const char *arg_start = p;
20960
20961 while (*p && *p != ',' && *p != ')' && *p != ' ')
20962 p++;
20963
20964 if (! *p || p == arg_start)
4d3c2250 20965 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
20966 else
20967 {
20968 /* Make sure argv has room for the new argument. */
20969 if (argc >= argv_size)
20970 {
20971 argv_size *= 2;
20972 argv = xrealloc (argv, argv_size * sizeof (*argv));
20973 }
20974
20975 argv[argc++] = copy_string (arg_start, p - arg_start);
20976 }
20977
20978 p = consume_improper_spaces (p, body);
20979
20980 /* Consume the comma, if present. */
20981 if (*p == ',')
20982 {
20983 p++;
20984
20985 p = consume_improper_spaces (p, body);
20986 }
20987 }
20988
20989 if (*p == ')')
20990 {
20991 p++;
20992
20993 if (*p == ' ')
20994 /* Perfectly formed definition, no complaints. */
20995 macro_define_function (file, line, name,
6e70227d 20996 argc, (const char **) argv,
2e276125
JB
20997 p + 1);
20998 else if (*p == '\0')
20999 {
21000 /* Complain, but do define it. */
4d3c2250 21001 dwarf2_macro_malformed_definition_complaint (body);
2e276125 21002 macro_define_function (file, line, name,
6e70227d 21003 argc, (const char **) argv,
2e276125
JB
21004 p);
21005 }
21006 else
21007 /* Just complain. */
4d3c2250 21008 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21009 }
21010 else
21011 /* Just complain. */
4d3c2250 21012 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21013
21014 xfree (name);
21015 {
21016 int i;
21017
21018 for (i = 0; i < argc; i++)
21019 xfree (argv[i]);
21020 }
21021 xfree (argv);
21022 }
21023 else
4d3c2250 21024 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21025}
21026
cf2c3c16
TT
21027/* Skip some bytes from BYTES according to the form given in FORM.
21028 Returns the new pointer. */
2e276125 21029
d521ce57
TT
21030static const gdb_byte *
21031skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
cf2c3c16
TT
21032 enum dwarf_form form,
21033 unsigned int offset_size,
21034 struct dwarf2_section_info *section)
2e276125 21035{
cf2c3c16 21036 unsigned int bytes_read;
2e276125 21037
cf2c3c16 21038 switch (form)
2e276125 21039 {
cf2c3c16
TT
21040 case DW_FORM_data1:
21041 case DW_FORM_flag:
21042 ++bytes;
21043 break;
21044
21045 case DW_FORM_data2:
21046 bytes += 2;
21047 break;
21048
21049 case DW_FORM_data4:
21050 bytes += 4;
21051 break;
21052
21053 case DW_FORM_data8:
21054 bytes += 8;
21055 break;
21056
21057 case DW_FORM_string:
21058 read_direct_string (abfd, bytes, &bytes_read);
21059 bytes += bytes_read;
21060 break;
21061
21062 case DW_FORM_sec_offset:
21063 case DW_FORM_strp:
36586728 21064 case DW_FORM_GNU_strp_alt:
cf2c3c16
TT
21065 bytes += offset_size;
21066 break;
21067
21068 case DW_FORM_block:
21069 bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
21070 bytes += bytes_read;
21071 break;
21072
21073 case DW_FORM_block1:
21074 bytes += 1 + read_1_byte (abfd, bytes);
21075 break;
21076 case DW_FORM_block2:
21077 bytes += 2 + read_2_bytes (abfd, bytes);
21078 break;
21079 case DW_FORM_block4:
21080 bytes += 4 + read_4_bytes (abfd, bytes);
21081 break;
21082
21083 case DW_FORM_sdata:
21084 case DW_FORM_udata:
3019eac3
DE
21085 case DW_FORM_GNU_addr_index:
21086 case DW_FORM_GNU_str_index:
d521ce57 21087 bytes = gdb_skip_leb128 (bytes, buffer_end);
f664829e
DE
21088 if (bytes == NULL)
21089 {
21090 dwarf2_section_buffer_overflow_complaint (section);
21091 return NULL;
21092 }
cf2c3c16
TT
21093 break;
21094
21095 default:
21096 {
21097 complain:
21098 complaint (&symfile_complaints,
21099 _("invalid form 0x%x in `%s'"),
a32a8923 21100 form, get_section_name (section));
cf2c3c16
TT
21101 return NULL;
21102 }
2e276125
JB
21103 }
21104
cf2c3c16
TT
21105 return bytes;
21106}
757a13d0 21107
cf2c3c16
TT
21108/* A helper for dwarf_decode_macros that handles skipping an unknown
21109 opcode. Returns an updated pointer to the macro data buffer; or,
21110 on error, issues a complaint and returns NULL. */
757a13d0 21111
d521ce57 21112static const gdb_byte *
cf2c3c16 21113skip_unknown_opcode (unsigned int opcode,
d521ce57
TT
21114 const gdb_byte **opcode_definitions,
21115 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
cf2c3c16
TT
21116 bfd *abfd,
21117 unsigned int offset_size,
21118 struct dwarf2_section_info *section)
21119{
21120 unsigned int bytes_read, i;
21121 unsigned long arg;
d521ce57 21122 const gdb_byte *defn;
2e276125 21123
cf2c3c16 21124 if (opcode_definitions[opcode] == NULL)
2e276125 21125 {
cf2c3c16
TT
21126 complaint (&symfile_complaints,
21127 _("unrecognized DW_MACFINO opcode 0x%x"),
21128 opcode);
21129 return NULL;
21130 }
2e276125 21131
cf2c3c16
TT
21132 defn = opcode_definitions[opcode];
21133 arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
21134 defn += bytes_read;
2e276125 21135
cf2c3c16
TT
21136 for (i = 0; i < arg; ++i)
21137 {
f664829e
DE
21138 mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end, defn[i], offset_size,
21139 section);
cf2c3c16
TT
21140 if (mac_ptr == NULL)
21141 {
21142 /* skip_form_bytes already issued the complaint. */
21143 return NULL;
21144 }
21145 }
757a13d0 21146
cf2c3c16
TT
21147 return mac_ptr;
21148}
757a13d0 21149
cf2c3c16
TT
21150/* A helper function which parses the header of a macro section.
21151 If the macro section is the extended (for now called "GNU") type,
21152 then this updates *OFFSET_SIZE. Returns a pointer to just after
21153 the header, or issues a complaint and returns NULL on error. */
757a13d0 21154
d521ce57
TT
21155static const gdb_byte *
21156dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
cf2c3c16 21157 bfd *abfd,
d521ce57 21158 const gdb_byte *mac_ptr,
cf2c3c16
TT
21159 unsigned int *offset_size,
21160 int section_is_gnu)
21161{
21162 memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
757a13d0 21163
cf2c3c16
TT
21164 if (section_is_gnu)
21165 {
21166 unsigned int version, flags;
757a13d0 21167
cf2c3c16
TT
21168 version = read_2_bytes (abfd, mac_ptr);
21169 if (version != 4)
21170 {
21171 complaint (&symfile_complaints,
21172 _("unrecognized version `%d' in .debug_macro section"),
21173 version);
21174 return NULL;
21175 }
21176 mac_ptr += 2;
757a13d0 21177
cf2c3c16
TT
21178 flags = read_1_byte (abfd, mac_ptr);
21179 ++mac_ptr;
21180 *offset_size = (flags & 1) ? 8 : 4;
757a13d0 21181
cf2c3c16
TT
21182 if ((flags & 2) != 0)
21183 /* We don't need the line table offset. */
21184 mac_ptr += *offset_size;
757a13d0 21185
cf2c3c16
TT
21186 /* Vendor opcode descriptions. */
21187 if ((flags & 4) != 0)
21188 {
21189 unsigned int i, count;
757a13d0 21190
cf2c3c16
TT
21191 count = read_1_byte (abfd, mac_ptr);
21192 ++mac_ptr;
21193 for (i = 0; i < count; ++i)
21194 {
21195 unsigned int opcode, bytes_read;
21196 unsigned long arg;
21197
21198 opcode = read_1_byte (abfd, mac_ptr);
21199 ++mac_ptr;
21200 opcode_definitions[opcode] = mac_ptr;
21201 arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21202 mac_ptr += bytes_read;
21203 mac_ptr += arg;
21204 }
757a13d0 21205 }
cf2c3c16 21206 }
757a13d0 21207
cf2c3c16
TT
21208 return mac_ptr;
21209}
757a13d0 21210
cf2c3c16 21211/* A helper for dwarf_decode_macros that handles the GNU extensions,
8fc3fc34 21212 including DW_MACRO_GNU_transparent_include. */
cf2c3c16
TT
21213
21214static void
d521ce57
TT
21215dwarf_decode_macro_bytes (bfd *abfd,
21216 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
cf2c3c16 21217 struct macro_source_file *current_file,
43f3e411 21218 struct line_header *lh,
cf2c3c16 21219 struct dwarf2_section_info *section,
36586728 21220 int section_is_gnu, int section_is_dwz,
cf2c3c16 21221 unsigned int offset_size,
8fc3fc34 21222 htab_t include_hash)
cf2c3c16 21223{
4d663531 21224 struct objfile *objfile = dwarf2_per_objfile->objfile;
cf2c3c16
TT
21225 enum dwarf_macro_record_type macinfo_type;
21226 int at_commandline;
d521ce57 21227 const gdb_byte *opcode_definitions[256];
757a13d0 21228
cf2c3c16
TT
21229 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21230 &offset_size, section_is_gnu);
21231 if (mac_ptr == NULL)
21232 {
21233 /* We already issued a complaint. */
21234 return;
21235 }
757a13d0
JK
21236
21237 /* Determines if GDB is still before first DW_MACINFO_start_file. If true
21238 GDB is still reading the definitions from command line. First
21239 DW_MACINFO_start_file will need to be ignored as it was already executed
21240 to create CURRENT_FILE for the main source holding also the command line
21241 definitions. On first met DW_MACINFO_start_file this flag is reset to
21242 normally execute all the remaining DW_MACINFO_start_file macinfos. */
21243
21244 at_commandline = 1;
21245
21246 do
21247 {
21248 /* Do we at least have room for a macinfo type byte? */
21249 if (mac_ptr >= mac_end)
21250 {
f664829e 21251 dwarf2_section_buffer_overflow_complaint (section);
757a13d0
JK
21252 break;
21253 }
21254
21255 macinfo_type = read_1_byte (abfd, mac_ptr);
21256 mac_ptr++;
21257
cf2c3c16
TT
21258 /* Note that we rely on the fact that the corresponding GNU and
21259 DWARF constants are the same. */
757a13d0
JK
21260 switch (macinfo_type)
21261 {
21262 /* A zero macinfo type indicates the end of the macro
21263 information. */
21264 case 0:
21265 break;
2e276125 21266
cf2c3c16
TT
21267 case DW_MACRO_GNU_define:
21268 case DW_MACRO_GNU_undef:
21269 case DW_MACRO_GNU_define_indirect:
21270 case DW_MACRO_GNU_undef_indirect:
36586728
TT
21271 case DW_MACRO_GNU_define_indirect_alt:
21272 case DW_MACRO_GNU_undef_indirect_alt:
2e276125 21273 {
891d2f0b 21274 unsigned int bytes_read;
2e276125 21275 int line;
d521ce57 21276 const char *body;
cf2c3c16 21277 int is_define;
2e276125 21278
cf2c3c16
TT
21279 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21280 mac_ptr += bytes_read;
21281
21282 if (macinfo_type == DW_MACRO_GNU_define
21283 || macinfo_type == DW_MACRO_GNU_undef)
21284 {
21285 body = read_direct_string (abfd, mac_ptr, &bytes_read);
21286 mac_ptr += bytes_read;
21287 }
21288 else
21289 {
21290 LONGEST str_offset;
21291
21292 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
21293 mac_ptr += offset_size;
2e276125 21294
36586728 21295 if (macinfo_type == DW_MACRO_GNU_define_indirect_alt
f7a35f02
TT
21296 || macinfo_type == DW_MACRO_GNU_undef_indirect_alt
21297 || section_is_dwz)
36586728
TT
21298 {
21299 struct dwz_file *dwz = dwarf2_get_dwz_file ();
21300
21301 body = read_indirect_string_from_dwz (dwz, str_offset);
21302 }
21303 else
21304 body = read_indirect_string_at_offset (abfd, str_offset);
cf2c3c16
TT
21305 }
21306
21307 is_define = (macinfo_type == DW_MACRO_GNU_define
36586728
TT
21308 || macinfo_type == DW_MACRO_GNU_define_indirect
21309 || macinfo_type == DW_MACRO_GNU_define_indirect_alt);
2e276125 21310 if (! current_file)
757a13d0
JK
21311 {
21312 /* DWARF violation as no main source is present. */
21313 complaint (&symfile_complaints,
21314 _("debug info with no main source gives macro %s "
21315 "on line %d: %s"),
cf2c3c16
TT
21316 is_define ? _("definition") : _("undefinition"),
21317 line, body);
757a13d0
JK
21318 break;
21319 }
3e43a32a
MS
21320 if ((line == 0 && !at_commandline)
21321 || (line != 0 && at_commandline))
4d3c2250 21322 complaint (&symfile_complaints,
757a13d0
JK
21323 _("debug info gives %s macro %s with %s line %d: %s"),
21324 at_commandline ? _("command-line") : _("in-file"),
cf2c3c16 21325 is_define ? _("definition") : _("undefinition"),
757a13d0
JK
21326 line == 0 ? _("zero") : _("non-zero"), line, body);
21327
cf2c3c16 21328 if (is_define)
757a13d0 21329 parse_macro_definition (current_file, line, body);
cf2c3c16
TT
21330 else
21331 {
21332 gdb_assert (macinfo_type == DW_MACRO_GNU_undef
36586728
TT
21333 || macinfo_type == DW_MACRO_GNU_undef_indirect
21334 || macinfo_type == DW_MACRO_GNU_undef_indirect_alt);
cf2c3c16
TT
21335 macro_undef (current_file, line, body);
21336 }
2e276125
JB
21337 }
21338 break;
21339
cf2c3c16 21340 case DW_MACRO_GNU_start_file:
2e276125 21341 {
891d2f0b 21342 unsigned int bytes_read;
2e276125
JB
21343 int line, file;
21344
21345 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21346 mac_ptr += bytes_read;
21347 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21348 mac_ptr += bytes_read;
21349
3e43a32a
MS
21350 if ((line == 0 && !at_commandline)
21351 || (line != 0 && at_commandline))
757a13d0
JK
21352 complaint (&symfile_complaints,
21353 _("debug info gives source %d included "
21354 "from %s at %s line %d"),
21355 file, at_commandline ? _("command-line") : _("file"),
21356 line == 0 ? _("zero") : _("non-zero"), line);
21357
21358 if (at_commandline)
21359 {
cf2c3c16
TT
21360 /* This DW_MACRO_GNU_start_file was executed in the
21361 pass one. */
757a13d0
JK
21362 at_commandline = 0;
21363 }
21364 else
43f3e411 21365 current_file = macro_start_file (file, line, current_file, lh);
2e276125
JB
21366 }
21367 break;
21368
cf2c3c16 21369 case DW_MACRO_GNU_end_file:
2e276125 21370 if (! current_file)
4d3c2250 21371 complaint (&symfile_complaints,
3e43a32a
MS
21372 _("macro debug info has an unmatched "
21373 "`close_file' directive"));
2e276125
JB
21374 else
21375 {
21376 current_file = current_file->included_by;
21377 if (! current_file)
21378 {
cf2c3c16 21379 enum dwarf_macro_record_type next_type;
2e276125
JB
21380
21381 /* GCC circa March 2002 doesn't produce the zero
21382 type byte marking the end of the compilation
21383 unit. Complain if it's not there, but exit no
21384 matter what. */
21385
21386 /* Do we at least have room for a macinfo type byte? */
21387 if (mac_ptr >= mac_end)
21388 {
f664829e 21389 dwarf2_section_buffer_overflow_complaint (section);
2e276125
JB
21390 return;
21391 }
21392
21393 /* We don't increment mac_ptr here, so this is just
21394 a look-ahead. */
21395 next_type = read_1_byte (abfd, mac_ptr);
21396 if (next_type != 0)
4d3c2250 21397 complaint (&symfile_complaints,
3e43a32a
MS
21398 _("no terminating 0-type entry for "
21399 "macros in `.debug_macinfo' section"));
2e276125
JB
21400
21401 return;
21402 }
21403 }
21404 break;
21405
cf2c3c16 21406 case DW_MACRO_GNU_transparent_include:
36586728 21407 case DW_MACRO_GNU_transparent_include_alt:
cf2c3c16
TT
21408 {
21409 LONGEST offset;
8fc3fc34 21410 void **slot;
a036ba48
TT
21411 bfd *include_bfd = abfd;
21412 struct dwarf2_section_info *include_section = section;
21413 struct dwarf2_section_info alt_section;
d521ce57 21414 const gdb_byte *include_mac_end = mac_end;
a036ba48 21415 int is_dwz = section_is_dwz;
d521ce57 21416 const gdb_byte *new_mac_ptr;
cf2c3c16
TT
21417
21418 offset = read_offset_1 (abfd, mac_ptr, offset_size);
21419 mac_ptr += offset_size;
21420
a036ba48
TT
21421 if (macinfo_type == DW_MACRO_GNU_transparent_include_alt)
21422 {
21423 struct dwz_file *dwz = dwarf2_get_dwz_file ();
21424
4d663531 21425 dwarf2_read_section (objfile, &dwz->macro);
a036ba48 21426
a036ba48 21427 include_section = &dwz->macro;
a32a8923 21428 include_bfd = get_section_bfd_owner (include_section);
a036ba48
TT
21429 include_mac_end = dwz->macro.buffer + dwz->macro.size;
21430 is_dwz = 1;
21431 }
21432
21433 new_mac_ptr = include_section->buffer + offset;
21434 slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
21435
8fc3fc34
TT
21436 if (*slot != NULL)
21437 {
21438 /* This has actually happened; see
21439 http://sourceware.org/bugzilla/show_bug.cgi?id=13568. */
21440 complaint (&symfile_complaints,
21441 _("recursive DW_MACRO_GNU_transparent_include in "
21442 ".debug_macro section"));
21443 }
21444 else
21445 {
d521ce57 21446 *slot = (void *) new_mac_ptr;
36586728 21447
a036ba48 21448 dwarf_decode_macro_bytes (include_bfd, new_mac_ptr,
43f3e411 21449 include_mac_end, current_file, lh,
36586728 21450 section, section_is_gnu, is_dwz,
4d663531 21451 offset_size, include_hash);
8fc3fc34 21452
d521ce57 21453 htab_remove_elt (include_hash, (void *) new_mac_ptr);
8fc3fc34 21454 }
cf2c3c16
TT
21455 }
21456 break;
21457
2e276125 21458 case DW_MACINFO_vendor_ext:
cf2c3c16
TT
21459 if (!section_is_gnu)
21460 {
21461 unsigned int bytes_read;
21462 int constant;
2e276125 21463
cf2c3c16
TT
21464 constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21465 mac_ptr += bytes_read;
21466 read_direct_string (abfd, mac_ptr, &bytes_read);
21467 mac_ptr += bytes_read;
2e276125 21468
cf2c3c16
TT
21469 /* We don't recognize any vendor extensions. */
21470 break;
21471 }
21472 /* FALLTHROUGH */
21473
21474 default:
21475 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
f664829e 21476 mac_ptr, mac_end, abfd, offset_size,
cf2c3c16
TT
21477 section);
21478 if (mac_ptr == NULL)
21479 return;
21480 break;
2e276125 21481 }
757a13d0 21482 } while (macinfo_type != 0);
2e276125 21483}
8e19ed76 21484
cf2c3c16 21485static void
09262596 21486dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
43f3e411 21487 int section_is_gnu)
cf2c3c16 21488{
bb5ed363 21489 struct objfile *objfile = dwarf2_per_objfile->objfile;
09262596
DE
21490 struct line_header *lh = cu->line_header;
21491 bfd *abfd;
d521ce57 21492 const gdb_byte *mac_ptr, *mac_end;
cf2c3c16
TT
21493 struct macro_source_file *current_file = 0;
21494 enum dwarf_macro_record_type macinfo_type;
21495 unsigned int offset_size = cu->header.offset_size;
d521ce57 21496 const gdb_byte *opcode_definitions[256];
8fc3fc34
TT
21497 struct cleanup *cleanup;
21498 htab_t include_hash;
21499 void **slot;
09262596
DE
21500 struct dwarf2_section_info *section;
21501 const char *section_name;
21502
21503 if (cu->dwo_unit != NULL)
21504 {
21505 if (section_is_gnu)
21506 {
21507 section = &cu->dwo_unit->dwo_file->sections.macro;
21508 section_name = ".debug_macro.dwo";
21509 }
21510 else
21511 {
21512 section = &cu->dwo_unit->dwo_file->sections.macinfo;
21513 section_name = ".debug_macinfo.dwo";
21514 }
21515 }
21516 else
21517 {
21518 if (section_is_gnu)
21519 {
21520 section = &dwarf2_per_objfile->macro;
21521 section_name = ".debug_macro";
21522 }
21523 else
21524 {
21525 section = &dwarf2_per_objfile->macinfo;
21526 section_name = ".debug_macinfo";
21527 }
21528 }
cf2c3c16 21529
bb5ed363 21530 dwarf2_read_section (objfile, section);
cf2c3c16
TT
21531 if (section->buffer == NULL)
21532 {
fceca515 21533 complaint (&symfile_complaints, _("missing %s section"), section_name);
cf2c3c16
TT
21534 return;
21535 }
a32a8923 21536 abfd = get_section_bfd_owner (section);
cf2c3c16
TT
21537
21538 /* First pass: Find the name of the base filename.
21539 This filename is needed in order to process all macros whose definition
21540 (or undefinition) comes from the command line. These macros are defined
21541 before the first DW_MACINFO_start_file entry, and yet still need to be
21542 associated to the base file.
21543
21544 To determine the base file name, we scan the macro definitions until we
21545 reach the first DW_MACINFO_start_file entry. We then initialize
21546 CURRENT_FILE accordingly so that any macro definition found before the
21547 first DW_MACINFO_start_file can still be associated to the base file. */
21548
21549 mac_ptr = section->buffer + offset;
21550 mac_end = section->buffer + section->size;
21551
21552 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21553 &offset_size, section_is_gnu);
21554 if (mac_ptr == NULL)
21555 {
21556 /* We already issued a complaint. */
21557 return;
21558 }
21559
21560 do
21561 {
21562 /* Do we at least have room for a macinfo type byte? */
21563 if (mac_ptr >= mac_end)
21564 {
21565 /* Complaint is printed during the second pass as GDB will probably
21566 stop the first pass earlier upon finding
21567 DW_MACINFO_start_file. */
21568 break;
21569 }
21570
21571 macinfo_type = read_1_byte (abfd, mac_ptr);
21572 mac_ptr++;
21573
21574 /* Note that we rely on the fact that the corresponding GNU and
21575 DWARF constants are the same. */
21576 switch (macinfo_type)
21577 {
21578 /* A zero macinfo type indicates the end of the macro
21579 information. */
21580 case 0:
21581 break;
21582
21583 case DW_MACRO_GNU_define:
21584 case DW_MACRO_GNU_undef:
21585 /* Only skip the data by MAC_PTR. */
21586 {
21587 unsigned int bytes_read;
21588
21589 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21590 mac_ptr += bytes_read;
21591 read_direct_string (abfd, mac_ptr, &bytes_read);
21592 mac_ptr += bytes_read;
21593 }
21594 break;
21595
21596 case DW_MACRO_GNU_start_file:
21597 {
21598 unsigned int bytes_read;
21599 int line, file;
21600
21601 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21602 mac_ptr += bytes_read;
21603 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21604 mac_ptr += bytes_read;
21605
43f3e411 21606 current_file = macro_start_file (file, line, current_file, lh);
cf2c3c16
TT
21607 }
21608 break;
21609
21610 case DW_MACRO_GNU_end_file:
21611 /* No data to skip by MAC_PTR. */
21612 break;
21613
21614 case DW_MACRO_GNU_define_indirect:
21615 case DW_MACRO_GNU_undef_indirect:
f7a35f02
TT
21616 case DW_MACRO_GNU_define_indirect_alt:
21617 case DW_MACRO_GNU_undef_indirect_alt:
cf2c3c16
TT
21618 {
21619 unsigned int bytes_read;
21620
21621 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21622 mac_ptr += bytes_read;
21623 mac_ptr += offset_size;
21624 }
21625 break;
21626
21627 case DW_MACRO_GNU_transparent_include:
f7a35f02 21628 case DW_MACRO_GNU_transparent_include_alt:
cf2c3c16
TT
21629 /* Note that, according to the spec, a transparent include
21630 chain cannot call DW_MACRO_GNU_start_file. So, we can just
21631 skip this opcode. */
21632 mac_ptr += offset_size;
21633 break;
21634
21635 case DW_MACINFO_vendor_ext:
21636 /* Only skip the data by MAC_PTR. */
21637 if (!section_is_gnu)
21638 {
21639 unsigned int bytes_read;
21640
21641 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21642 mac_ptr += bytes_read;
21643 read_direct_string (abfd, mac_ptr, &bytes_read);
21644 mac_ptr += bytes_read;
21645 }
21646 /* FALLTHROUGH */
21647
21648 default:
21649 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
f664829e 21650 mac_ptr, mac_end, abfd, offset_size,
cf2c3c16
TT
21651 section);
21652 if (mac_ptr == NULL)
21653 return;
21654 break;
21655 }
21656 } while (macinfo_type != 0 && current_file == NULL);
21657
21658 /* Second pass: Process all entries.
21659
21660 Use the AT_COMMAND_LINE flag to determine whether we are still processing
21661 command-line macro definitions/undefinitions. This flag is unset when we
21662 reach the first DW_MACINFO_start_file entry. */
21663
8fc3fc34
TT
21664 include_hash = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
21665 NULL, xcalloc, xfree);
21666 cleanup = make_cleanup_htab_delete (include_hash);
21667 mac_ptr = section->buffer + offset;
21668 slot = htab_find_slot (include_hash, mac_ptr, INSERT);
d521ce57 21669 *slot = (void *) mac_ptr;
8fc3fc34 21670 dwarf_decode_macro_bytes (abfd, mac_ptr, mac_end,
43f3e411 21671 current_file, lh, section,
4d663531 21672 section_is_gnu, 0, offset_size, include_hash);
8fc3fc34 21673 do_cleanups (cleanup);
cf2c3c16
TT
21674}
21675
8e19ed76 21676/* Check if the attribute's form is a DW_FORM_block*
0963b4bd 21677 if so return true else false. */
380bca97 21678
8e19ed76 21679static int
6e5a29e1 21680attr_form_is_block (const struct attribute *attr)
8e19ed76
PS
21681{
21682 return (attr == NULL ? 0 :
21683 attr->form == DW_FORM_block1
21684 || attr->form == DW_FORM_block2
21685 || attr->form == DW_FORM_block4
2dc7f7b3
TT
21686 || attr->form == DW_FORM_block
21687 || attr->form == DW_FORM_exprloc);
8e19ed76 21688}
4c2df51b 21689
c6a0999f
JB
21690/* Return non-zero if ATTR's value is a section offset --- classes
21691 lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
21692 You may use DW_UNSND (attr) to retrieve such offsets.
21693
21694 Section 7.5.4, "Attribute Encodings", explains that no attribute
21695 may have a value that belongs to more than one of these classes; it
21696 would be ambiguous if we did, because we use the same forms for all
21697 of them. */
380bca97 21698
3690dd37 21699static int
6e5a29e1 21700attr_form_is_section_offset (const struct attribute *attr)
3690dd37
JB
21701{
21702 return (attr->form == DW_FORM_data4
2dc7f7b3
TT
21703 || attr->form == DW_FORM_data8
21704 || attr->form == DW_FORM_sec_offset);
3690dd37
JB
21705}
21706
3690dd37
JB
21707/* Return non-zero if ATTR's value falls in the 'constant' class, or
21708 zero otherwise. When this function returns true, you can apply
21709 dwarf2_get_attr_constant_value to it.
21710
21711 However, note that for some attributes you must check
21712 attr_form_is_section_offset before using this test. DW_FORM_data4
21713 and DW_FORM_data8 are members of both the constant class, and of
21714 the classes that contain offsets into other debug sections
21715 (lineptr, loclistptr, macptr or rangelistptr). The DWARF spec says
21716 that, if an attribute's can be either a constant or one of the
21717 section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
21718 taken as section offsets, not constants. */
380bca97 21719
3690dd37 21720static int
6e5a29e1 21721attr_form_is_constant (const struct attribute *attr)
3690dd37
JB
21722{
21723 switch (attr->form)
21724 {
21725 case DW_FORM_sdata:
21726 case DW_FORM_udata:
21727 case DW_FORM_data1:
21728 case DW_FORM_data2:
21729 case DW_FORM_data4:
21730 case DW_FORM_data8:
21731 return 1;
21732 default:
21733 return 0;
21734 }
21735}
21736
7771576e
SA
21737
21738/* DW_ADDR is always stored already as sect_offset; despite for the forms
21739 besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file. */
21740
21741static int
6e5a29e1 21742attr_form_is_ref (const struct attribute *attr)
7771576e
SA
21743{
21744 switch (attr->form)
21745 {
21746 case DW_FORM_ref_addr:
21747 case DW_FORM_ref1:
21748 case DW_FORM_ref2:
21749 case DW_FORM_ref4:
21750 case DW_FORM_ref8:
21751 case DW_FORM_ref_udata:
21752 case DW_FORM_GNU_ref_alt:
21753 return 1;
21754 default:
21755 return 0;
21756 }
21757}
21758
3019eac3
DE
21759/* Return the .debug_loc section to use for CU.
21760 For DWO files use .debug_loc.dwo. */
21761
21762static struct dwarf2_section_info *
21763cu_debug_loc_section (struct dwarf2_cu *cu)
21764{
21765 if (cu->dwo_unit)
21766 return &cu->dwo_unit->dwo_file->sections.loc;
21767 return &dwarf2_per_objfile->loc;
21768}
21769
8cf6f0b1
TT
21770/* A helper function that fills in a dwarf2_loclist_baton. */
21771
21772static void
21773fill_in_loclist_baton (struct dwarf2_cu *cu,
21774 struct dwarf2_loclist_baton *baton,
ff39bb5e 21775 const struct attribute *attr)
8cf6f0b1 21776{
3019eac3
DE
21777 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
21778
21779 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
8cf6f0b1
TT
21780
21781 baton->per_cu = cu->per_cu;
21782 gdb_assert (baton->per_cu);
21783 /* We don't know how long the location list is, but make sure we
21784 don't run off the edge of the section. */
3019eac3
DE
21785 baton->size = section->size - DW_UNSND (attr);
21786 baton->data = section->buffer + DW_UNSND (attr);
8cf6f0b1 21787 baton->base_address = cu->base_address;
f664829e 21788 baton->from_dwo = cu->dwo_unit != NULL;
8cf6f0b1
TT
21789}
21790
4c2df51b 21791static void
ff39bb5e 21792dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
f1e6e072 21793 struct dwarf2_cu *cu, int is_block)
4c2df51b 21794{
bb5ed363 21795 struct objfile *objfile = dwarf2_per_objfile->objfile;
3019eac3 21796 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
bb5ed363 21797
3690dd37 21798 if (attr_form_is_section_offset (attr)
3019eac3 21799 /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
99bcc461
DJ
21800 the section. If so, fall through to the complaint in the
21801 other branch. */
3019eac3 21802 && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
4c2df51b 21803 {
0d53c4c4 21804 struct dwarf2_loclist_baton *baton;
4c2df51b 21805
bb5ed363 21806 baton = obstack_alloc (&objfile->objfile_obstack,
0d53c4c4 21807 sizeof (struct dwarf2_loclist_baton));
4c2df51b 21808
8cf6f0b1 21809 fill_in_loclist_baton (cu, baton, attr);
be391dca 21810
d00adf39 21811 if (cu->base_known == 0)
0d53c4c4 21812 complaint (&symfile_complaints,
3e43a32a
MS
21813 _("Location list used without "
21814 "specifying the CU base address."));
4c2df51b 21815
f1e6e072
TT
21816 SYMBOL_ACLASS_INDEX (sym) = (is_block
21817 ? dwarf2_loclist_block_index
21818 : dwarf2_loclist_index);
0d53c4c4
DJ
21819 SYMBOL_LOCATION_BATON (sym) = baton;
21820 }
21821 else
21822 {
21823 struct dwarf2_locexpr_baton *baton;
21824
bb5ed363 21825 baton = obstack_alloc (&objfile->objfile_obstack,
0d53c4c4 21826 sizeof (struct dwarf2_locexpr_baton));
ae0d2f24
UW
21827 baton->per_cu = cu->per_cu;
21828 gdb_assert (baton->per_cu);
0d53c4c4
DJ
21829
21830 if (attr_form_is_block (attr))
21831 {
21832 /* Note that we're just copying the block's data pointer
21833 here, not the actual data. We're still pointing into the
6502dd73
DJ
21834 info_buffer for SYM's objfile; right now we never release
21835 that buffer, but when we do clean up properly this may
21836 need to change. */
0d53c4c4
DJ
21837 baton->size = DW_BLOCK (attr)->size;
21838 baton->data = DW_BLOCK (attr)->data;
21839 }
21840 else
21841 {
21842 dwarf2_invalid_attrib_class_complaint ("location description",
21843 SYMBOL_NATURAL_NAME (sym));
21844 baton->size = 0;
0d53c4c4 21845 }
6e70227d 21846
f1e6e072
TT
21847 SYMBOL_ACLASS_INDEX (sym) = (is_block
21848 ? dwarf2_locexpr_block_index
21849 : dwarf2_locexpr_index);
0d53c4c4
DJ
21850 SYMBOL_LOCATION_BATON (sym) = baton;
21851 }
4c2df51b 21852}
6502dd73 21853
9aa1f1e3
TT
21854/* Return the OBJFILE associated with the compilation unit CU. If CU
21855 came from a separate debuginfo file, then the master objfile is
21856 returned. */
ae0d2f24
UW
21857
21858struct objfile *
21859dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
21860{
9291a0cd 21861 struct objfile *objfile = per_cu->objfile;
ae0d2f24
UW
21862
21863 /* Return the master objfile, so that we can report and look up the
21864 correct file containing this variable. */
21865 if (objfile->separate_debug_objfile_backlink)
21866 objfile = objfile->separate_debug_objfile_backlink;
21867
21868 return objfile;
21869}
21870
96408a79
SA
21871/* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
21872 (CU_HEADERP is unused in such case) or prepare a temporary copy at
21873 CU_HEADERP first. */
21874
21875static const struct comp_unit_head *
21876per_cu_header_read_in (struct comp_unit_head *cu_headerp,
21877 struct dwarf2_per_cu_data *per_cu)
21878{
d521ce57 21879 const gdb_byte *info_ptr;
96408a79
SA
21880
21881 if (per_cu->cu)
21882 return &per_cu->cu->header;
21883
8a0459fd 21884 info_ptr = per_cu->section->buffer + per_cu->offset.sect_off;
96408a79
SA
21885
21886 memset (cu_headerp, 0, sizeof (*cu_headerp));
0bc3a05c 21887 read_comp_unit_head (cu_headerp, info_ptr, per_cu->objfile->obfd);
96408a79
SA
21888
21889 return cu_headerp;
21890}
21891
ae0d2f24
UW
21892/* Return the address size given in the compilation unit header for CU. */
21893
98714339 21894int
ae0d2f24
UW
21895dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
21896{
96408a79
SA
21897 struct comp_unit_head cu_header_local;
21898 const struct comp_unit_head *cu_headerp;
c471e790 21899
96408a79
SA
21900 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21901
21902 return cu_headerp->addr_size;
ae0d2f24
UW
21903}
21904
9eae7c52
TT
21905/* Return the offset size given in the compilation unit header for CU. */
21906
21907int
21908dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
21909{
96408a79
SA
21910 struct comp_unit_head cu_header_local;
21911 const struct comp_unit_head *cu_headerp;
9c6c53f7 21912
96408a79
SA
21913 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21914
21915 return cu_headerp->offset_size;
21916}
21917
21918/* See its dwarf2loc.h declaration. */
21919
21920int
21921dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
21922{
21923 struct comp_unit_head cu_header_local;
21924 const struct comp_unit_head *cu_headerp;
21925
21926 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21927
21928 if (cu_headerp->version == 2)
21929 return cu_headerp->addr_size;
21930 else
21931 return cu_headerp->offset_size;
181cebd4
JK
21932}
21933
9aa1f1e3
TT
21934/* Return the text offset of the CU. The returned offset comes from
21935 this CU's objfile. If this objfile came from a separate debuginfo
21936 file, then the offset may be different from the corresponding
21937 offset in the parent objfile. */
21938
21939CORE_ADDR
21940dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
21941{
bb3fa9d0 21942 struct objfile *objfile = per_cu->objfile;
9aa1f1e3
TT
21943
21944 return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21945}
21946
348e048f
DE
21947/* Locate the .debug_info compilation unit from CU's objfile which contains
21948 the DIE at OFFSET. Raises an error on failure. */
ae038cb0
DJ
21949
21950static struct dwarf2_per_cu_data *
b64f50a1 21951dwarf2_find_containing_comp_unit (sect_offset offset,
36586728 21952 unsigned int offset_in_dwz,
ae038cb0
DJ
21953 struct objfile *objfile)
21954{
21955 struct dwarf2_per_cu_data *this_cu;
21956 int low, high;
36586728 21957 const sect_offset *cu_off;
ae038cb0 21958
ae038cb0
DJ
21959 low = 0;
21960 high = dwarf2_per_objfile->n_comp_units - 1;
21961 while (high > low)
21962 {
36586728 21963 struct dwarf2_per_cu_data *mid_cu;
ae038cb0 21964 int mid = low + (high - low) / 2;
9a619af0 21965
36586728
TT
21966 mid_cu = dwarf2_per_objfile->all_comp_units[mid];
21967 cu_off = &mid_cu->offset;
21968 if (mid_cu->is_dwz > offset_in_dwz
21969 || (mid_cu->is_dwz == offset_in_dwz
21970 && cu_off->sect_off >= offset.sect_off))
ae038cb0
DJ
21971 high = mid;
21972 else
21973 low = mid + 1;
21974 }
21975 gdb_assert (low == high);
36586728
TT
21976 this_cu = dwarf2_per_objfile->all_comp_units[low];
21977 cu_off = &this_cu->offset;
21978 if (this_cu->is_dwz != offset_in_dwz || cu_off->sect_off > offset.sect_off)
ae038cb0 21979 {
36586728 21980 if (low == 0 || this_cu->is_dwz != offset_in_dwz)
8a3fe4f8
AC
21981 error (_("Dwarf Error: could not find partial DIE containing "
21982 "offset 0x%lx [in module %s]"),
b64f50a1 21983 (long) offset.sect_off, bfd_get_filename (objfile->obfd));
10b3939b 21984
b64f50a1
JK
21985 gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset.sect_off
21986 <= offset.sect_off);
ae038cb0
DJ
21987 return dwarf2_per_objfile->all_comp_units[low-1];
21988 }
21989 else
21990 {
21991 this_cu = dwarf2_per_objfile->all_comp_units[low];
21992 if (low == dwarf2_per_objfile->n_comp_units - 1
b64f50a1
JK
21993 && offset.sect_off >= this_cu->offset.sect_off + this_cu->length)
21994 error (_("invalid dwarf2 offset %u"), offset.sect_off);
21995 gdb_assert (offset.sect_off < this_cu->offset.sect_off + this_cu->length);
ae038cb0
DJ
21996 return this_cu;
21997 }
21998}
21999
23745b47 22000/* Initialize dwarf2_cu CU, owned by PER_CU. */
93311388 22001
9816fde3 22002static void
23745b47 22003init_one_comp_unit (struct dwarf2_cu *cu, struct dwarf2_per_cu_data *per_cu)
93311388 22004{
9816fde3 22005 memset (cu, 0, sizeof (*cu));
23745b47
DE
22006 per_cu->cu = cu;
22007 cu->per_cu = per_cu;
22008 cu->objfile = per_cu->objfile;
93311388 22009 obstack_init (&cu->comp_unit_obstack);
9816fde3
JK
22010}
22011
22012/* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE. */
22013
22014static void
95554aad
TT
22015prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
22016 enum language pretend_language)
9816fde3
JK
22017{
22018 struct attribute *attr;
22019
22020 /* Set the language we're debugging. */
22021 attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
22022 if (attr)
22023 set_cu_language (DW_UNSND (attr), cu);
22024 else
9cded63f 22025 {
95554aad 22026 cu->language = pretend_language;
9cded63f
TT
22027 cu->language_defn = language_def (cu->language);
22028 }
dee91e82
DE
22029
22030 attr = dwarf2_attr (comp_unit_die, DW_AT_producer, cu);
22031 if (attr)
22032 cu->producer = DW_STRING (attr);
93311388
DE
22033}
22034
ae038cb0
DJ
22035/* Release one cached compilation unit, CU. We unlink it from the tree
22036 of compilation units, but we don't remove it from the read_in_chain;
93311388
DE
22037 the caller is responsible for that.
22038 NOTE: DATA is a void * because this function is also used as a
22039 cleanup routine. */
ae038cb0
DJ
22040
22041static void
68dc6402 22042free_heap_comp_unit (void *data)
ae038cb0
DJ
22043{
22044 struct dwarf2_cu *cu = data;
22045
23745b47
DE
22046 gdb_assert (cu->per_cu != NULL);
22047 cu->per_cu->cu = NULL;
ae038cb0
DJ
22048 cu->per_cu = NULL;
22049
22050 obstack_free (&cu->comp_unit_obstack, NULL);
22051
22052 xfree (cu);
22053}
22054
72bf9492 22055/* This cleanup function is passed the address of a dwarf2_cu on the stack
ae038cb0 22056 when we're finished with it. We can't free the pointer itself, but be
dee91e82 22057 sure to unlink it from the cache. Also release any associated storage. */
72bf9492
DJ
22058
22059static void
22060free_stack_comp_unit (void *data)
22061{
22062 struct dwarf2_cu *cu = data;
22063
23745b47
DE
22064 gdb_assert (cu->per_cu != NULL);
22065 cu->per_cu->cu = NULL;
22066 cu->per_cu = NULL;
22067
72bf9492
DJ
22068 obstack_free (&cu->comp_unit_obstack, NULL);
22069 cu->partial_dies = NULL;
ae038cb0
DJ
22070}
22071
22072/* Free all cached compilation units. */
22073
22074static void
22075free_cached_comp_units (void *data)
22076{
22077 struct dwarf2_per_cu_data *per_cu, **last_chain;
22078
22079 per_cu = dwarf2_per_objfile->read_in_chain;
22080 last_chain = &dwarf2_per_objfile->read_in_chain;
22081 while (per_cu != NULL)
22082 {
22083 struct dwarf2_per_cu_data *next_cu;
22084
22085 next_cu = per_cu->cu->read_in_chain;
22086
68dc6402 22087 free_heap_comp_unit (per_cu->cu);
ae038cb0
DJ
22088 *last_chain = next_cu;
22089
22090 per_cu = next_cu;
22091 }
22092}
22093
22094/* Increase the age counter on each cached compilation unit, and free
22095 any that are too old. */
22096
22097static void
22098age_cached_comp_units (void)
22099{
22100 struct dwarf2_per_cu_data *per_cu, **last_chain;
22101
22102 dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
22103 per_cu = dwarf2_per_objfile->read_in_chain;
22104 while (per_cu != NULL)
22105 {
22106 per_cu->cu->last_used ++;
b4f54984 22107 if (per_cu->cu->last_used <= dwarf_max_cache_age)
ae038cb0
DJ
22108 dwarf2_mark (per_cu->cu);
22109 per_cu = per_cu->cu->read_in_chain;
22110 }
22111
22112 per_cu = dwarf2_per_objfile->read_in_chain;
22113 last_chain = &dwarf2_per_objfile->read_in_chain;
22114 while (per_cu != NULL)
22115 {
22116 struct dwarf2_per_cu_data *next_cu;
22117
22118 next_cu = per_cu->cu->read_in_chain;
22119
22120 if (!per_cu->cu->mark)
22121 {
68dc6402 22122 free_heap_comp_unit (per_cu->cu);
ae038cb0
DJ
22123 *last_chain = next_cu;
22124 }
22125 else
22126 last_chain = &per_cu->cu->read_in_chain;
22127
22128 per_cu = next_cu;
22129 }
22130}
22131
22132/* Remove a single compilation unit from the cache. */
22133
22134static void
dee91e82 22135free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
ae038cb0
DJ
22136{
22137 struct dwarf2_per_cu_data *per_cu, **last_chain;
22138
22139 per_cu = dwarf2_per_objfile->read_in_chain;
22140 last_chain = &dwarf2_per_objfile->read_in_chain;
22141 while (per_cu != NULL)
22142 {
22143 struct dwarf2_per_cu_data *next_cu;
22144
22145 next_cu = per_cu->cu->read_in_chain;
22146
dee91e82 22147 if (per_cu == target_per_cu)
ae038cb0 22148 {
68dc6402 22149 free_heap_comp_unit (per_cu->cu);
dee91e82 22150 per_cu->cu = NULL;
ae038cb0
DJ
22151 *last_chain = next_cu;
22152 break;
22153 }
22154 else
22155 last_chain = &per_cu->cu->read_in_chain;
22156
22157 per_cu = next_cu;
22158 }
22159}
22160
fe3e1990
DJ
22161/* Release all extra memory associated with OBJFILE. */
22162
22163void
22164dwarf2_free_objfile (struct objfile *objfile)
22165{
22166 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
22167
22168 if (dwarf2_per_objfile == NULL)
22169 return;
22170
22171 /* Cached DIE trees use xmalloc and the comp_unit_obstack. */
22172 free_cached_comp_units (NULL);
22173
7b9f3c50
DE
22174 if (dwarf2_per_objfile->quick_file_names_table)
22175 htab_delete (dwarf2_per_objfile->quick_file_names_table);
9291a0cd 22176
527f3840
JK
22177 if (dwarf2_per_objfile->line_header_hash)
22178 htab_delete (dwarf2_per_objfile->line_header_hash);
22179
fe3e1990
DJ
22180 /* Everything else should be on the objfile obstack. */
22181}
22182
dee91e82
DE
22183/* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
22184 We store these in a hash table separate from the DIEs, and preserve them
22185 when the DIEs are flushed out of cache.
22186
22187 The CU "per_cu" pointer is needed because offset alone is not enough to
3019eac3 22188 uniquely identify the type. A file may have multiple .debug_types sections,
c88ee1f0
DE
22189 or the type may come from a DWO file. Furthermore, while it's more logical
22190 to use per_cu->section+offset, with Fission the section with the data is in
22191 the DWO file but we don't know that section at the point we need it.
22192 We have to use something in dwarf2_per_cu_data (or the pointer to it)
22193 because we can enter the lookup routine, get_die_type_at_offset, from
22194 outside this file, and thus won't necessarily have PER_CU->cu.
22195 Fortunately, PER_CU is stable for the life of the objfile. */
1c379e20 22196
dee91e82 22197struct dwarf2_per_cu_offset_and_type
1c379e20 22198{
dee91e82 22199 const struct dwarf2_per_cu_data *per_cu;
b64f50a1 22200 sect_offset offset;
1c379e20
DJ
22201 struct type *type;
22202};
22203
dee91e82 22204/* Hash function for a dwarf2_per_cu_offset_and_type. */
1c379e20
DJ
22205
22206static hashval_t
dee91e82 22207per_cu_offset_and_type_hash (const void *item)
1c379e20 22208{
dee91e82 22209 const struct dwarf2_per_cu_offset_and_type *ofs = item;
9a619af0 22210
dee91e82 22211 return (uintptr_t) ofs->per_cu + ofs->offset.sect_off;
1c379e20
DJ
22212}
22213
dee91e82 22214/* Equality function for a dwarf2_per_cu_offset_and_type. */
1c379e20
DJ
22215
22216static int
dee91e82 22217per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
1c379e20 22218{
dee91e82
DE
22219 const struct dwarf2_per_cu_offset_and_type *ofs_lhs = item_lhs;
22220 const struct dwarf2_per_cu_offset_and_type *ofs_rhs = item_rhs;
9a619af0 22221
dee91e82
DE
22222 return (ofs_lhs->per_cu == ofs_rhs->per_cu
22223 && ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off);
1c379e20
DJ
22224}
22225
22226/* Set the type associated with DIE to TYPE. Save it in CU's hash
7e314c57
JK
22227 table if necessary. For convenience, return TYPE.
22228
22229 The DIEs reading must have careful ordering to:
22230 * Not cause infite loops trying to read in DIEs as a prerequisite for
22231 reading current DIE.
22232 * Not trying to dereference contents of still incompletely read in types
22233 while reading in other DIEs.
22234 * Enable referencing still incompletely read in types just by a pointer to
22235 the type without accessing its fields.
22236
22237 Therefore caller should follow these rules:
22238 * Try to fetch any prerequisite types we may need to build this DIE type
22239 before building the type and calling set_die_type.
e71ec853 22240 * After building type call set_die_type for current DIE as soon as
7e314c57
JK
22241 possible before fetching more types to complete the current type.
22242 * Make the type as complete as possible before fetching more types. */
1c379e20 22243
f792889a 22244static struct type *
1c379e20
DJ
22245set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
22246{
dee91e82 22247 struct dwarf2_per_cu_offset_and_type **slot, ofs;
673bfd45 22248 struct objfile *objfile = cu->objfile;
3cdcd0ce
JB
22249 struct attribute *attr;
22250 struct dynamic_prop prop;
1c379e20 22251
b4ba55a1
JB
22252 /* For Ada types, make sure that the gnat-specific data is always
22253 initialized (if not already set). There are a few types where
22254 we should not be doing so, because the type-specific area is
22255 already used to hold some other piece of info (eg: TYPE_CODE_FLT
22256 where the type-specific area is used to store the floatformat).
22257 But this is not a problem, because the gnat-specific information
22258 is actually not needed for these types. */
22259 if (need_gnat_info (cu)
22260 && TYPE_CODE (type) != TYPE_CODE_FUNC
22261 && TYPE_CODE (type) != TYPE_CODE_FLT
09e2d7c7
DE
22262 && TYPE_CODE (type) != TYPE_CODE_METHODPTR
22263 && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
22264 && TYPE_CODE (type) != TYPE_CODE_METHOD
b4ba55a1
JB
22265 && !HAVE_GNAT_AUX_INFO (type))
22266 INIT_GNAT_SPECIFIC (type);
22267
3cdcd0ce
JB
22268 /* Read DW_AT_data_location and set in type. */
22269 attr = dwarf2_attr (die, DW_AT_data_location, cu);
22270 if (attr_to_dynamic_prop (attr, die, cu, &prop))
93a8e227 22271 add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type, objfile);
3cdcd0ce 22272
dee91e82 22273 if (dwarf2_per_objfile->die_type_hash == NULL)
f792889a 22274 {
dee91e82
DE
22275 dwarf2_per_objfile->die_type_hash =
22276 htab_create_alloc_ex (127,
22277 per_cu_offset_and_type_hash,
22278 per_cu_offset_and_type_eq,
22279 NULL,
22280 &objfile->objfile_obstack,
22281 hashtab_obstack_allocate,
22282 dummy_obstack_deallocate);
f792889a 22283 }
1c379e20 22284
dee91e82 22285 ofs.per_cu = cu->per_cu;
1c379e20
DJ
22286 ofs.offset = die->offset;
22287 ofs.type = type;
dee91e82
DE
22288 slot = (struct dwarf2_per_cu_offset_and_type **)
22289 htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
7e314c57
JK
22290 if (*slot)
22291 complaint (&symfile_complaints,
22292 _("A problem internal to GDB: DIE 0x%x has type already set"),
b64f50a1 22293 die->offset.sect_off);
673bfd45 22294 *slot = obstack_alloc (&objfile->objfile_obstack, sizeof (**slot));
1c379e20 22295 **slot = ofs;
f792889a 22296 return type;
1c379e20
DJ
22297}
22298
02142a6c
DE
22299/* Look up the type for the die at OFFSET in PER_CU in die_type_hash,
22300 or return NULL if the die does not have a saved type. */
1c379e20
DJ
22301
22302static struct type *
b64f50a1 22303get_die_type_at_offset (sect_offset offset,
673bfd45 22304 struct dwarf2_per_cu_data *per_cu)
1c379e20 22305{
dee91e82 22306 struct dwarf2_per_cu_offset_and_type *slot, ofs;
f792889a 22307
dee91e82 22308 if (dwarf2_per_objfile->die_type_hash == NULL)
f792889a 22309 return NULL;
1c379e20 22310
dee91e82 22311 ofs.per_cu = per_cu;
673bfd45 22312 ofs.offset = offset;
dee91e82 22313 slot = htab_find (dwarf2_per_objfile->die_type_hash, &ofs);
1c379e20
DJ
22314 if (slot)
22315 return slot->type;
22316 else
22317 return NULL;
22318}
22319
02142a6c 22320/* Look up the type for DIE in CU in die_type_hash,
673bfd45
DE
22321 or return NULL if DIE does not have a saved type. */
22322
22323static struct type *
22324get_die_type (struct die_info *die, struct dwarf2_cu *cu)
22325{
22326 return get_die_type_at_offset (die->offset, cu->per_cu);
22327}
22328
10b3939b
DJ
22329/* Add a dependence relationship from CU to REF_PER_CU. */
22330
22331static void
22332dwarf2_add_dependence (struct dwarf2_cu *cu,
22333 struct dwarf2_per_cu_data *ref_per_cu)
22334{
22335 void **slot;
22336
22337 if (cu->dependencies == NULL)
22338 cu->dependencies
22339 = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
22340 NULL, &cu->comp_unit_obstack,
22341 hashtab_obstack_allocate,
22342 dummy_obstack_deallocate);
22343
22344 slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
22345 if (*slot == NULL)
22346 *slot = ref_per_cu;
22347}
1c379e20 22348
f504f079
DE
22349/* Subroutine of dwarf2_mark to pass to htab_traverse.
22350 Set the mark field in every compilation unit in the
ae038cb0
DJ
22351 cache that we must keep because we are keeping CU. */
22352
10b3939b
DJ
22353static int
22354dwarf2_mark_helper (void **slot, void *data)
22355{
22356 struct dwarf2_per_cu_data *per_cu;
22357
22358 per_cu = (struct dwarf2_per_cu_data *) *slot;
d07ed419
JK
22359
22360 /* cu->dependencies references may not yet have been ever read if QUIT aborts
22361 reading of the chain. As such dependencies remain valid it is not much
22362 useful to track and undo them during QUIT cleanups. */
22363 if (per_cu->cu == NULL)
22364 return 1;
22365
10b3939b
DJ
22366 if (per_cu->cu->mark)
22367 return 1;
22368 per_cu->cu->mark = 1;
22369
22370 if (per_cu->cu->dependencies != NULL)
22371 htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
22372
22373 return 1;
22374}
22375
f504f079
DE
22376/* Set the mark field in CU and in every other compilation unit in the
22377 cache that we must keep because we are keeping CU. */
22378
ae038cb0
DJ
22379static void
22380dwarf2_mark (struct dwarf2_cu *cu)
22381{
22382 if (cu->mark)
22383 return;
22384 cu->mark = 1;
10b3939b
DJ
22385 if (cu->dependencies != NULL)
22386 htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
ae038cb0
DJ
22387}
22388
22389static void
22390dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
22391{
22392 while (per_cu)
22393 {
22394 per_cu->cu->mark = 0;
22395 per_cu = per_cu->cu->read_in_chain;
22396 }
72bf9492
DJ
22397}
22398
72bf9492
DJ
22399/* Trivial hash function for partial_die_info: the hash value of a DIE
22400 is its offset in .debug_info for this objfile. */
22401
22402static hashval_t
22403partial_die_hash (const void *item)
22404{
22405 const struct partial_die_info *part_die = item;
9a619af0 22406
b64f50a1 22407 return part_die->offset.sect_off;
72bf9492
DJ
22408}
22409
22410/* Trivial comparison function for partial_die_info structures: two DIEs
22411 are equal if they have the same offset. */
22412
22413static int
22414partial_die_eq (const void *item_lhs, const void *item_rhs)
22415{
22416 const struct partial_die_info *part_die_lhs = item_lhs;
22417 const struct partial_die_info *part_die_rhs = item_rhs;
9a619af0 22418
b64f50a1 22419 return part_die_lhs->offset.sect_off == part_die_rhs->offset.sect_off;
72bf9492
DJ
22420}
22421
b4f54984
DE
22422static struct cmd_list_element *set_dwarf_cmdlist;
22423static struct cmd_list_element *show_dwarf_cmdlist;
ae038cb0
DJ
22424
22425static void
b4f54984 22426set_dwarf_cmd (char *args, int from_tty)
ae038cb0 22427{
b4f54984 22428 help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
635c7e8a 22429 gdb_stdout);
ae038cb0
DJ
22430}
22431
22432static void
b4f54984 22433show_dwarf_cmd (char *args, int from_tty)
6e70227d 22434{
b4f54984 22435 cmd_show_list (show_dwarf_cmdlist, from_tty, "");
ae038cb0
DJ
22436}
22437
4bf44c1c 22438/* Free data associated with OBJFILE, if necessary. */
dce234bc
PP
22439
22440static void
c1bd65d0 22441dwarf2_per_objfile_free (struct objfile *objfile, void *d)
dce234bc
PP
22442{
22443 struct dwarf2_per_objfile *data = d;
8b70b953 22444 int ix;
8b70b953 22445
626f2d1c
TT
22446 /* Make sure we don't accidentally use dwarf2_per_objfile while
22447 cleaning up. */
22448 dwarf2_per_objfile = NULL;
22449
59b0c7c1
JB
22450 for (ix = 0; ix < data->n_comp_units; ++ix)
22451 VEC_free (dwarf2_per_cu_ptr, data->all_comp_units[ix]->imported_symtabs);
796a7ff8 22452
59b0c7c1 22453 for (ix = 0; ix < data->n_type_units; ++ix)
796a7ff8 22454 VEC_free (dwarf2_per_cu_ptr,
59b0c7c1
JB
22455 data->all_type_units[ix]->per_cu.imported_symtabs);
22456 xfree (data->all_type_units);
95554aad 22457
8b70b953 22458 VEC_free (dwarf2_section_info_def, data->types);
3019eac3
DE
22459
22460 if (data->dwo_files)
22461 free_dwo_files (data->dwo_files, objfile);
5c6fa7ab
DE
22462 if (data->dwp_file)
22463 gdb_bfd_unref (data->dwp_file->dbfd);
36586728
TT
22464
22465 if (data->dwz_file && data->dwz_file->dwz_bfd)
22466 gdb_bfd_unref (data->dwz_file->dwz_bfd);
9291a0cd
TT
22467}
22468
22469\f
ae2de4f8 22470/* The "save gdb-index" command. */
9291a0cd
TT
22471
22472/* The contents of the hash table we create when building the string
22473 table. */
22474struct strtab_entry
22475{
22476 offset_type offset;
22477 const char *str;
22478};
22479
559a7a62
JK
22480/* Hash function for a strtab_entry.
22481
22482 Function is used only during write_hash_table so no index format backward
22483 compatibility is needed. */
b89be57b 22484
9291a0cd
TT
22485static hashval_t
22486hash_strtab_entry (const void *e)
22487{
22488 const struct strtab_entry *entry = e;
559a7a62 22489 return mapped_index_string_hash (INT_MAX, entry->str);
9291a0cd
TT
22490}
22491
22492/* Equality function for a strtab_entry. */
b89be57b 22493
9291a0cd
TT
22494static int
22495eq_strtab_entry (const void *a, const void *b)
22496{
22497 const struct strtab_entry *ea = a;
22498 const struct strtab_entry *eb = b;
22499 return !strcmp (ea->str, eb->str);
22500}
22501
22502/* Create a strtab_entry hash table. */
b89be57b 22503
9291a0cd
TT
22504static htab_t
22505create_strtab (void)
22506{
22507 return htab_create_alloc (100, hash_strtab_entry, eq_strtab_entry,
22508 xfree, xcalloc, xfree);
22509}
22510
22511/* Add a string to the constant pool. Return the string's offset in
22512 host order. */
b89be57b 22513
9291a0cd
TT
22514static offset_type
22515add_string (htab_t table, struct obstack *cpool, const char *str)
22516{
22517 void **slot;
22518 struct strtab_entry entry;
22519 struct strtab_entry *result;
22520
22521 entry.str = str;
22522 slot = htab_find_slot (table, &entry, INSERT);
22523 if (*slot)
22524 result = *slot;
22525 else
22526 {
22527 result = XNEW (struct strtab_entry);
22528 result->offset = obstack_object_size (cpool);
22529 result->str = str;
22530 obstack_grow_str0 (cpool, str);
22531 *slot = result;
22532 }
22533 return result->offset;
22534}
22535
22536/* An entry in the symbol table. */
22537struct symtab_index_entry
22538{
22539 /* The name of the symbol. */
22540 const char *name;
22541 /* The offset of the name in the constant pool. */
22542 offset_type index_offset;
22543 /* A sorted vector of the indices of all the CUs that hold an object
22544 of this name. */
22545 VEC (offset_type) *cu_indices;
22546};
22547
22548/* The symbol table. This is a power-of-2-sized hash table. */
22549struct mapped_symtab
22550{
22551 offset_type n_elements;
22552 offset_type size;
22553 struct symtab_index_entry **data;
22554};
22555
22556/* Hash function for a symtab_index_entry. */
b89be57b 22557
9291a0cd
TT
22558static hashval_t
22559hash_symtab_entry (const void *e)
22560{
22561 const struct symtab_index_entry *entry = e;
22562 return iterative_hash (VEC_address (offset_type, entry->cu_indices),
22563 sizeof (offset_type) * VEC_length (offset_type,
22564 entry->cu_indices),
22565 0);
22566}
22567
22568/* Equality function for a symtab_index_entry. */
b89be57b 22569
9291a0cd
TT
22570static int
22571eq_symtab_entry (const void *a, const void *b)
22572{
22573 const struct symtab_index_entry *ea = a;
22574 const struct symtab_index_entry *eb = b;
22575 int len = VEC_length (offset_type, ea->cu_indices);
22576 if (len != VEC_length (offset_type, eb->cu_indices))
22577 return 0;
22578 return !memcmp (VEC_address (offset_type, ea->cu_indices),
22579 VEC_address (offset_type, eb->cu_indices),
22580 sizeof (offset_type) * len);
22581}
22582
22583/* Destroy a symtab_index_entry. */
b89be57b 22584
9291a0cd
TT
22585static void
22586delete_symtab_entry (void *p)
22587{
22588 struct symtab_index_entry *entry = p;
22589 VEC_free (offset_type, entry->cu_indices);
22590 xfree (entry);
22591}
22592
22593/* Create a hash table holding symtab_index_entry objects. */
b89be57b 22594
9291a0cd 22595static htab_t
3876f04e 22596create_symbol_hash_table (void)
9291a0cd
TT
22597{
22598 return htab_create_alloc (100, hash_symtab_entry, eq_symtab_entry,
22599 delete_symtab_entry, xcalloc, xfree);
22600}
22601
22602/* Create a new mapped symtab object. */
b89be57b 22603
9291a0cd
TT
22604static struct mapped_symtab *
22605create_mapped_symtab (void)
22606{
22607 struct mapped_symtab *symtab = XNEW (struct mapped_symtab);
22608 symtab->n_elements = 0;
22609 symtab->size = 1024;
22610 symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22611 return symtab;
22612}
22613
22614/* Destroy a mapped_symtab. */
b89be57b 22615
9291a0cd
TT
22616static void
22617cleanup_mapped_symtab (void *p)
22618{
22619 struct mapped_symtab *symtab = p;
22620 /* The contents of the array are freed when the other hash table is
22621 destroyed. */
22622 xfree (symtab->data);
22623 xfree (symtab);
22624}
22625
22626/* Find a slot in SYMTAB for the symbol NAME. Returns a pointer to
559a7a62
JK
22627 the slot.
22628
22629 Function is used only during write_hash_table so no index format backward
22630 compatibility is needed. */
b89be57b 22631
9291a0cd
TT
22632static struct symtab_index_entry **
22633find_slot (struct mapped_symtab *symtab, const char *name)
22634{
559a7a62 22635 offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
9291a0cd
TT
22636
22637 index = hash & (symtab->size - 1);
22638 step = ((hash * 17) & (symtab->size - 1)) | 1;
22639
22640 for (;;)
22641 {
22642 if (!symtab->data[index] || !strcmp (name, symtab->data[index]->name))
22643 return &symtab->data[index];
22644 index = (index + step) & (symtab->size - 1);
22645 }
22646}
22647
22648/* Expand SYMTAB's hash table. */
b89be57b 22649
9291a0cd
TT
22650static void
22651hash_expand (struct mapped_symtab *symtab)
22652{
22653 offset_type old_size = symtab->size;
22654 offset_type i;
22655 struct symtab_index_entry **old_entries = symtab->data;
22656
22657 symtab->size *= 2;
22658 symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22659
22660 for (i = 0; i < old_size; ++i)
22661 {
22662 if (old_entries[i])
22663 {
22664 struct symtab_index_entry **slot = find_slot (symtab,
22665 old_entries[i]->name);
22666 *slot = old_entries[i];
22667 }
22668 }
22669
22670 xfree (old_entries);
22671}
22672
156942c7
DE
22673/* Add an entry to SYMTAB. NAME is the name of the symbol.
22674 CU_INDEX is the index of the CU in which the symbol appears.
22675 IS_STATIC is one if the symbol is static, otherwise zero (global). */
b89be57b 22676
9291a0cd
TT
22677static void
22678add_index_entry (struct mapped_symtab *symtab, const char *name,
156942c7 22679 int is_static, gdb_index_symbol_kind kind,
9291a0cd
TT
22680 offset_type cu_index)
22681{
22682 struct symtab_index_entry **slot;
156942c7 22683 offset_type cu_index_and_attrs;
9291a0cd
TT
22684
22685 ++symtab->n_elements;
22686 if (4 * symtab->n_elements / 3 >= symtab->size)
22687 hash_expand (symtab);
22688
22689 slot = find_slot (symtab, name);
22690 if (!*slot)
22691 {
22692 *slot = XNEW (struct symtab_index_entry);
22693 (*slot)->name = name;
156942c7 22694 /* index_offset is set later. */
9291a0cd
TT
22695 (*slot)->cu_indices = NULL;
22696 }
156942c7
DE
22697
22698 cu_index_and_attrs = 0;
22699 DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
22700 DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
22701 DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
22702
22703 /* We don't want to record an index value twice as we want to avoid the
22704 duplication.
22705 We process all global symbols and then all static symbols
22706 (which would allow us to avoid the duplication by only having to check
22707 the last entry pushed), but a symbol could have multiple kinds in one CU.
22708 To keep things simple we don't worry about the duplication here and
22709 sort and uniqufy the list after we've processed all symbols. */
22710 VEC_safe_push (offset_type, (*slot)->cu_indices, cu_index_and_attrs);
22711}
22712
22713/* qsort helper routine for uniquify_cu_indices. */
22714
22715static int
22716offset_type_compare (const void *ap, const void *bp)
22717{
22718 offset_type a = *(offset_type *) ap;
22719 offset_type b = *(offset_type *) bp;
22720
22721 return (a > b) - (b > a);
22722}
22723
22724/* Sort and remove duplicates of all symbols' cu_indices lists. */
22725
22726static void
22727uniquify_cu_indices (struct mapped_symtab *symtab)
22728{
22729 int i;
22730
22731 for (i = 0; i < symtab->size; ++i)
22732 {
22733 struct symtab_index_entry *entry = symtab->data[i];
22734
22735 if (entry
22736 && entry->cu_indices != NULL)
22737 {
22738 unsigned int next_to_insert, next_to_check;
22739 offset_type last_value;
22740
22741 qsort (VEC_address (offset_type, entry->cu_indices),
22742 VEC_length (offset_type, entry->cu_indices),
22743 sizeof (offset_type), offset_type_compare);
22744
22745 last_value = VEC_index (offset_type, entry->cu_indices, 0);
22746 next_to_insert = 1;
22747 for (next_to_check = 1;
22748 next_to_check < VEC_length (offset_type, entry->cu_indices);
22749 ++next_to_check)
22750 {
22751 if (VEC_index (offset_type, entry->cu_indices, next_to_check)
22752 != last_value)
22753 {
22754 last_value = VEC_index (offset_type, entry->cu_indices,
22755 next_to_check);
22756 VEC_replace (offset_type, entry->cu_indices, next_to_insert,
22757 last_value);
22758 ++next_to_insert;
22759 }
22760 }
22761 VEC_truncate (offset_type, entry->cu_indices, next_to_insert);
22762 }
22763 }
9291a0cd
TT
22764}
22765
22766/* Add a vector of indices to the constant pool. */
b89be57b 22767
9291a0cd 22768static offset_type
3876f04e 22769add_indices_to_cpool (htab_t symbol_hash_table, struct obstack *cpool,
9291a0cd
TT
22770 struct symtab_index_entry *entry)
22771{
22772 void **slot;
22773
3876f04e 22774 slot = htab_find_slot (symbol_hash_table, entry, INSERT);
9291a0cd
TT
22775 if (!*slot)
22776 {
22777 offset_type len = VEC_length (offset_type, entry->cu_indices);
22778 offset_type val = MAYBE_SWAP (len);
22779 offset_type iter;
22780 int i;
22781
22782 *slot = entry;
22783 entry->index_offset = obstack_object_size (cpool);
22784
22785 obstack_grow (cpool, &val, sizeof (val));
22786 for (i = 0;
22787 VEC_iterate (offset_type, entry->cu_indices, i, iter);
22788 ++i)
22789 {
22790 val = MAYBE_SWAP (iter);
22791 obstack_grow (cpool, &val, sizeof (val));
22792 }
22793 }
22794 else
22795 {
22796 struct symtab_index_entry *old_entry = *slot;
22797 entry->index_offset = old_entry->index_offset;
22798 entry = old_entry;
22799 }
22800 return entry->index_offset;
22801}
22802
22803/* Write the mapped hash table SYMTAB to the obstack OUTPUT, with
22804 constant pool entries going into the obstack CPOOL. */
b89be57b 22805
9291a0cd
TT
22806static void
22807write_hash_table (struct mapped_symtab *symtab,
22808 struct obstack *output, struct obstack *cpool)
22809{
22810 offset_type i;
3876f04e 22811 htab_t symbol_hash_table;
9291a0cd
TT
22812 htab_t str_table;
22813
3876f04e 22814 symbol_hash_table = create_symbol_hash_table ();
9291a0cd 22815 str_table = create_strtab ();
3876f04e 22816
9291a0cd
TT
22817 /* We add all the index vectors to the constant pool first, to
22818 ensure alignment is ok. */
22819 for (i = 0; i < symtab->size; ++i)
22820 {
22821 if (symtab->data[i])
3876f04e 22822 add_indices_to_cpool (symbol_hash_table, cpool, symtab->data[i]);
9291a0cd
TT
22823 }
22824
22825 /* Now write out the hash table. */
22826 for (i = 0; i < symtab->size; ++i)
22827 {
22828 offset_type str_off, vec_off;
22829
22830 if (symtab->data[i])
22831 {
22832 str_off = add_string (str_table, cpool, symtab->data[i]->name);
22833 vec_off = symtab->data[i]->index_offset;
22834 }
22835 else
22836 {
22837 /* While 0 is a valid constant pool index, it is not valid
22838 to have 0 for both offsets. */
22839 str_off = 0;
22840 vec_off = 0;
22841 }
22842
22843 str_off = MAYBE_SWAP (str_off);
22844 vec_off = MAYBE_SWAP (vec_off);
22845
22846 obstack_grow (output, &str_off, sizeof (str_off));
22847 obstack_grow (output, &vec_off, sizeof (vec_off));
22848 }
22849
22850 htab_delete (str_table);
3876f04e 22851 htab_delete (symbol_hash_table);
9291a0cd
TT
22852}
22853
0a5429f6
DE
22854/* Struct to map psymtab to CU index in the index file. */
22855struct psymtab_cu_index_map
22856{
22857 struct partial_symtab *psymtab;
22858 unsigned int cu_index;
22859};
22860
22861static hashval_t
22862hash_psymtab_cu_index (const void *item)
22863{
22864 const struct psymtab_cu_index_map *map = item;
22865
22866 return htab_hash_pointer (map->psymtab);
22867}
22868
22869static int
22870eq_psymtab_cu_index (const void *item_lhs, const void *item_rhs)
22871{
22872 const struct psymtab_cu_index_map *lhs = item_lhs;
22873 const struct psymtab_cu_index_map *rhs = item_rhs;
22874
22875 return lhs->psymtab == rhs->psymtab;
22876}
22877
22878/* Helper struct for building the address table. */
22879struct addrmap_index_data
22880{
22881 struct objfile *objfile;
22882 struct obstack *addr_obstack;
22883 htab_t cu_index_htab;
22884
22885 /* Non-zero if the previous_* fields are valid.
22886 We can't write an entry until we see the next entry (since it is only then
22887 that we know the end of the entry). */
22888 int previous_valid;
22889 /* Index of the CU in the table of all CUs in the index file. */
22890 unsigned int previous_cu_index;
0963b4bd 22891 /* Start address of the CU. */
0a5429f6
DE
22892 CORE_ADDR previous_cu_start;
22893};
22894
22895/* Write an address entry to OBSTACK. */
b89be57b 22896
9291a0cd 22897static void
0a5429f6
DE
22898add_address_entry (struct objfile *objfile, struct obstack *obstack,
22899 CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
9291a0cd 22900{
0a5429f6 22901 offset_type cu_index_to_write;
948f8e3d 22902 gdb_byte addr[8];
9291a0cd
TT
22903 CORE_ADDR baseaddr;
22904
22905 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
22906
0a5429f6
DE
22907 store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, start - baseaddr);
22908 obstack_grow (obstack, addr, 8);
22909 store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, end - baseaddr);
22910 obstack_grow (obstack, addr, 8);
22911 cu_index_to_write = MAYBE_SWAP (cu_index);
22912 obstack_grow (obstack, &cu_index_to_write, sizeof (offset_type));
22913}
22914
22915/* Worker function for traversing an addrmap to build the address table. */
22916
22917static int
22918add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
22919{
22920 struct addrmap_index_data *data = datap;
22921 struct partial_symtab *pst = obj;
0a5429f6
DE
22922
22923 if (data->previous_valid)
22924 add_address_entry (data->objfile, data->addr_obstack,
22925 data->previous_cu_start, start_addr,
22926 data->previous_cu_index);
22927
22928 data->previous_cu_start = start_addr;
22929 if (pst != NULL)
22930 {
22931 struct psymtab_cu_index_map find_map, *map;
22932 find_map.psymtab = pst;
22933 map = htab_find (data->cu_index_htab, &find_map);
22934 gdb_assert (map != NULL);
22935 data->previous_cu_index = map->cu_index;
22936 data->previous_valid = 1;
22937 }
22938 else
22939 data->previous_valid = 0;
22940
22941 return 0;
22942}
22943
22944/* Write OBJFILE's address map to OBSTACK.
22945 CU_INDEX_HTAB is used to map addrmap entries to their CU indices
22946 in the index file. */
22947
22948static void
22949write_address_map (struct objfile *objfile, struct obstack *obstack,
22950 htab_t cu_index_htab)
22951{
22952 struct addrmap_index_data addrmap_index_data;
22953
22954 /* When writing the address table, we have to cope with the fact that
22955 the addrmap iterator only provides the start of a region; we have to
22956 wait until the next invocation to get the start of the next region. */
22957
22958 addrmap_index_data.objfile = objfile;
22959 addrmap_index_data.addr_obstack = obstack;
22960 addrmap_index_data.cu_index_htab = cu_index_htab;
22961 addrmap_index_data.previous_valid = 0;
22962
22963 addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
22964 &addrmap_index_data);
22965
22966 /* It's highly unlikely the last entry (end address = 0xff...ff)
22967 is valid, but we should still handle it.
22968 The end address is recorded as the start of the next region, but that
22969 doesn't work here. To cope we pass 0xff...ff, this is a rare situation
22970 anyway. */
22971 if (addrmap_index_data.previous_valid)
22972 add_address_entry (objfile, obstack,
22973 addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
22974 addrmap_index_data.previous_cu_index);
9291a0cd
TT
22975}
22976
156942c7
DE
22977/* Return the symbol kind of PSYM. */
22978
22979static gdb_index_symbol_kind
22980symbol_kind (struct partial_symbol *psym)
22981{
22982 domain_enum domain = PSYMBOL_DOMAIN (psym);
22983 enum address_class aclass = PSYMBOL_CLASS (psym);
22984
22985 switch (domain)
22986 {
22987 case VAR_DOMAIN:
22988 switch (aclass)
22989 {
22990 case LOC_BLOCK:
22991 return GDB_INDEX_SYMBOL_KIND_FUNCTION;
22992 case LOC_TYPEDEF:
22993 return GDB_INDEX_SYMBOL_KIND_TYPE;
22994 case LOC_COMPUTED:
22995 case LOC_CONST_BYTES:
22996 case LOC_OPTIMIZED_OUT:
22997 case LOC_STATIC:
22998 return GDB_INDEX_SYMBOL_KIND_VARIABLE;
22999 case LOC_CONST:
23000 /* Note: It's currently impossible to recognize psyms as enum values
23001 short of reading the type info. For now punt. */
23002 return GDB_INDEX_SYMBOL_KIND_VARIABLE;
23003 default:
23004 /* There are other LOC_FOO values that one might want to classify
23005 as variables, but dwarf2read.c doesn't currently use them. */
23006 return GDB_INDEX_SYMBOL_KIND_OTHER;
23007 }
23008 case STRUCT_DOMAIN:
23009 return GDB_INDEX_SYMBOL_KIND_TYPE;
23010 default:
23011 return GDB_INDEX_SYMBOL_KIND_OTHER;
23012 }
23013}
23014
9291a0cd 23015/* Add a list of partial symbols to SYMTAB. */
b89be57b 23016
9291a0cd
TT
23017static void
23018write_psymbols (struct mapped_symtab *symtab,
987d643c 23019 htab_t psyms_seen,
9291a0cd
TT
23020 struct partial_symbol **psymp,
23021 int count,
987d643c
TT
23022 offset_type cu_index,
23023 int is_static)
9291a0cd
TT
23024{
23025 for (; count-- > 0; ++psymp)
23026 {
156942c7
DE
23027 struct partial_symbol *psym = *psymp;
23028 void **slot;
987d643c 23029
156942c7 23030 if (SYMBOL_LANGUAGE (psym) == language_ada)
9291a0cd 23031 error (_("Ada is not currently supported by the index"));
987d643c 23032
987d643c 23033 /* Only add a given psymbol once. */
156942c7 23034 slot = htab_find_slot (psyms_seen, psym, INSERT);
987d643c
TT
23035 if (!*slot)
23036 {
156942c7
DE
23037 gdb_index_symbol_kind kind = symbol_kind (psym);
23038
23039 *slot = psym;
23040 add_index_entry (symtab, SYMBOL_SEARCH_NAME (psym),
23041 is_static, kind, cu_index);
987d643c 23042 }
9291a0cd
TT
23043 }
23044}
23045
23046/* Write the contents of an ("unfinished") obstack to FILE. Throw an
23047 exception if there is an error. */
b89be57b 23048
9291a0cd
TT
23049static void
23050write_obstack (FILE *file, struct obstack *obstack)
23051{
23052 if (fwrite (obstack_base (obstack), 1, obstack_object_size (obstack),
23053 file)
23054 != obstack_object_size (obstack))
23055 error (_("couldn't data write to file"));
23056}
23057
23058/* Unlink a file if the argument is not NULL. */
b89be57b 23059
9291a0cd
TT
23060static void
23061unlink_if_set (void *p)
23062{
23063 char **filename = p;
23064 if (*filename)
23065 unlink (*filename);
23066}
23067
1fd400ff
TT
23068/* A helper struct used when iterating over debug_types. */
23069struct signatured_type_index_data
23070{
23071 struct objfile *objfile;
23072 struct mapped_symtab *symtab;
23073 struct obstack *types_list;
987d643c 23074 htab_t psyms_seen;
1fd400ff
TT
23075 int cu_index;
23076};
23077
23078/* A helper function that writes a single signatured_type to an
23079 obstack. */
b89be57b 23080
1fd400ff
TT
23081static int
23082write_one_signatured_type (void **slot, void *d)
23083{
23084 struct signatured_type_index_data *info = d;
23085 struct signatured_type *entry = (struct signatured_type *) *slot;
0186c6a7 23086 struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
1fd400ff
TT
23087 gdb_byte val[8];
23088
23089 write_psymbols (info->symtab,
987d643c 23090 info->psyms_seen,
3e43a32a
MS
23091 info->objfile->global_psymbols.list
23092 + psymtab->globals_offset,
987d643c
TT
23093 psymtab->n_global_syms, info->cu_index,
23094 0);
1fd400ff 23095 write_psymbols (info->symtab,
987d643c 23096 info->psyms_seen,
3e43a32a
MS
23097 info->objfile->static_psymbols.list
23098 + psymtab->statics_offset,
987d643c
TT
23099 psymtab->n_static_syms, info->cu_index,
23100 1);
1fd400ff 23101
b64f50a1
JK
23102 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23103 entry->per_cu.offset.sect_off);
1fd400ff 23104 obstack_grow (info->types_list, val, 8);
3019eac3
DE
23105 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23106 entry->type_offset_in_tu.cu_off);
1fd400ff
TT
23107 obstack_grow (info->types_list, val, 8);
23108 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->signature);
23109 obstack_grow (info->types_list, val, 8);
23110
23111 ++info->cu_index;
23112
23113 return 1;
23114}
23115
95554aad
TT
23116/* Recurse into all "included" dependencies and write their symbols as
23117 if they appeared in this psymtab. */
23118
23119static void
23120recursively_write_psymbols (struct objfile *objfile,
23121 struct partial_symtab *psymtab,
23122 struct mapped_symtab *symtab,
23123 htab_t psyms_seen,
23124 offset_type cu_index)
23125{
23126 int i;
23127
23128 for (i = 0; i < psymtab->number_of_dependencies; ++i)
23129 if (psymtab->dependencies[i]->user != NULL)
23130 recursively_write_psymbols (objfile, psymtab->dependencies[i],
23131 symtab, psyms_seen, cu_index);
23132
23133 write_psymbols (symtab,
23134 psyms_seen,
23135 objfile->global_psymbols.list + psymtab->globals_offset,
23136 psymtab->n_global_syms, cu_index,
23137 0);
23138 write_psymbols (symtab,
23139 psyms_seen,
23140 objfile->static_psymbols.list + psymtab->statics_offset,
23141 psymtab->n_static_syms, cu_index,
23142 1);
23143}
23144
9291a0cd 23145/* Create an index file for OBJFILE in the directory DIR. */
b89be57b 23146
9291a0cd
TT
23147static void
23148write_psymtabs_to_index (struct objfile *objfile, const char *dir)
23149{
23150 struct cleanup *cleanup;
23151 char *filename, *cleanup_filename;
1fd400ff
TT
23152 struct obstack contents, addr_obstack, constant_pool, symtab_obstack;
23153 struct obstack cu_list, types_cu_list;
9291a0cd
TT
23154 int i;
23155 FILE *out_file;
23156 struct mapped_symtab *symtab;
23157 offset_type val, size_of_contents, total_len;
23158 struct stat st;
987d643c 23159 htab_t psyms_seen;
0a5429f6
DE
23160 htab_t cu_index_htab;
23161 struct psymtab_cu_index_map *psymtab_cu_index_map;
9291a0cd 23162
9291a0cd
TT
23163 if (dwarf2_per_objfile->using_index)
23164 error (_("Cannot use an index to create the index"));
23165
8b70b953
TT
23166 if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) > 1)
23167 error (_("Cannot make an index when the file has multiple .debug_types sections"));
23168
260b681b
DE
23169 if (!objfile->psymtabs || !objfile->psymtabs_addrmap)
23170 return;
23171
4262abfb
JK
23172 if (stat (objfile_name (objfile), &st) < 0)
23173 perror_with_name (objfile_name (objfile));
9291a0cd 23174
4262abfb 23175 filename = concat (dir, SLASH_STRING, lbasename (objfile_name (objfile)),
9291a0cd
TT
23176 INDEX_SUFFIX, (char *) NULL);
23177 cleanup = make_cleanup (xfree, filename);
23178
614c279d 23179 out_file = gdb_fopen_cloexec (filename, "wb");
9291a0cd
TT
23180 if (!out_file)
23181 error (_("Can't open `%s' for writing"), filename);
23182
23183 cleanup_filename = filename;
23184 make_cleanup (unlink_if_set, &cleanup_filename);
23185
23186 symtab = create_mapped_symtab ();
23187 make_cleanup (cleanup_mapped_symtab, symtab);
23188
23189 obstack_init (&addr_obstack);
23190 make_cleanup_obstack_free (&addr_obstack);
23191
23192 obstack_init (&cu_list);
23193 make_cleanup_obstack_free (&cu_list);
23194
1fd400ff
TT
23195 obstack_init (&types_cu_list);
23196 make_cleanup_obstack_free (&types_cu_list);
23197
987d643c
TT
23198 psyms_seen = htab_create_alloc (100, htab_hash_pointer, htab_eq_pointer,
23199 NULL, xcalloc, xfree);
96408a79 23200 make_cleanup_htab_delete (psyms_seen);
987d643c 23201
0a5429f6
DE
23202 /* While we're scanning CU's create a table that maps a psymtab pointer
23203 (which is what addrmap records) to its index (which is what is recorded
23204 in the index file). This will later be needed to write the address
23205 table. */
23206 cu_index_htab = htab_create_alloc (100,
23207 hash_psymtab_cu_index,
23208 eq_psymtab_cu_index,
23209 NULL, xcalloc, xfree);
96408a79 23210 make_cleanup_htab_delete (cu_index_htab);
0a5429f6
DE
23211 psymtab_cu_index_map = (struct psymtab_cu_index_map *)
23212 xmalloc (sizeof (struct psymtab_cu_index_map)
23213 * dwarf2_per_objfile->n_comp_units);
23214 make_cleanup (xfree, psymtab_cu_index_map);
23215
23216 /* The CU list is already sorted, so we don't need to do additional
1fd400ff
TT
23217 work here. Also, the debug_types entries do not appear in
23218 all_comp_units, but only in their own hash table. */
9291a0cd
TT
23219 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
23220 {
3e43a32a
MS
23221 struct dwarf2_per_cu_data *per_cu
23222 = dwarf2_per_objfile->all_comp_units[i];
e254ef6a 23223 struct partial_symtab *psymtab = per_cu->v.psymtab;
9291a0cd 23224 gdb_byte val[8];
0a5429f6
DE
23225 struct psymtab_cu_index_map *map;
23226 void **slot;
9291a0cd 23227
92fac807
JK
23228 /* CU of a shared file from 'dwz -m' may be unused by this main file.
23229 It may be referenced from a local scope but in such case it does not
23230 need to be present in .gdb_index. */
23231 if (psymtab == NULL)
23232 continue;
23233
95554aad
TT
23234 if (psymtab->user == NULL)
23235 recursively_write_psymbols (objfile, psymtab, symtab, psyms_seen, i);
9291a0cd 23236
0a5429f6
DE
23237 map = &psymtab_cu_index_map[i];
23238 map->psymtab = psymtab;
23239 map->cu_index = i;
23240 slot = htab_find_slot (cu_index_htab, map, INSERT);
23241 gdb_assert (slot != NULL);
23242 gdb_assert (*slot == NULL);
23243 *slot = map;
9291a0cd 23244
b64f50a1
JK
23245 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23246 per_cu->offset.sect_off);
9291a0cd 23247 obstack_grow (&cu_list, val, 8);
e254ef6a 23248 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, per_cu->length);
9291a0cd
TT
23249 obstack_grow (&cu_list, val, 8);
23250 }
23251
0a5429f6
DE
23252 /* Dump the address map. */
23253 write_address_map (objfile, &addr_obstack, cu_index_htab);
23254
1fd400ff
TT
23255 /* Write out the .debug_type entries, if any. */
23256 if (dwarf2_per_objfile->signatured_types)
23257 {
23258 struct signatured_type_index_data sig_data;
23259
23260 sig_data.objfile = objfile;
23261 sig_data.symtab = symtab;
23262 sig_data.types_list = &types_cu_list;
987d643c 23263 sig_data.psyms_seen = psyms_seen;
1fd400ff
TT
23264 sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
23265 htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
23266 write_one_signatured_type, &sig_data);
23267 }
23268
156942c7
DE
23269 /* Now that we've processed all symbols we can shrink their cu_indices
23270 lists. */
23271 uniquify_cu_indices (symtab);
23272
9291a0cd
TT
23273 obstack_init (&constant_pool);
23274 make_cleanup_obstack_free (&constant_pool);
23275 obstack_init (&symtab_obstack);
23276 make_cleanup_obstack_free (&symtab_obstack);
23277 write_hash_table (symtab, &symtab_obstack, &constant_pool);
23278
23279 obstack_init (&contents);
23280 make_cleanup_obstack_free (&contents);
1fd400ff 23281 size_of_contents = 6 * sizeof (offset_type);
9291a0cd
TT
23282 total_len = size_of_contents;
23283
23284 /* The version number. */
796a7ff8 23285 val = MAYBE_SWAP (8);
9291a0cd
TT
23286 obstack_grow (&contents, &val, sizeof (val));
23287
23288 /* The offset of the CU list from the start of the file. */
23289 val = MAYBE_SWAP (total_len);
23290 obstack_grow (&contents, &val, sizeof (val));
23291 total_len += obstack_object_size (&cu_list);
23292
1fd400ff
TT
23293 /* The offset of the types CU list from the start of the file. */
23294 val = MAYBE_SWAP (total_len);
23295 obstack_grow (&contents, &val, sizeof (val));
23296 total_len += obstack_object_size (&types_cu_list);
23297
9291a0cd
TT
23298 /* The offset of the address table from the start of the file. */
23299 val = MAYBE_SWAP (total_len);
23300 obstack_grow (&contents, &val, sizeof (val));
23301 total_len += obstack_object_size (&addr_obstack);
23302
23303 /* The offset of the symbol table from the start of the file. */
23304 val = MAYBE_SWAP (total_len);
23305 obstack_grow (&contents, &val, sizeof (val));
23306 total_len += obstack_object_size (&symtab_obstack);
23307
23308 /* The offset of the constant pool from the start of the file. */
23309 val = MAYBE_SWAP (total_len);
23310 obstack_grow (&contents, &val, sizeof (val));
23311 total_len += obstack_object_size (&constant_pool);
23312
23313 gdb_assert (obstack_object_size (&contents) == size_of_contents);
23314
23315 write_obstack (out_file, &contents);
23316 write_obstack (out_file, &cu_list);
1fd400ff 23317 write_obstack (out_file, &types_cu_list);
9291a0cd
TT
23318 write_obstack (out_file, &addr_obstack);
23319 write_obstack (out_file, &symtab_obstack);
23320 write_obstack (out_file, &constant_pool);
23321
23322 fclose (out_file);
23323
23324 /* We want to keep the file, so we set cleanup_filename to NULL
23325 here. See unlink_if_set. */
23326 cleanup_filename = NULL;
23327
23328 do_cleanups (cleanup);
23329}
23330
90476074
TT
23331/* Implementation of the `save gdb-index' command.
23332
23333 Note that the file format used by this command is documented in the
23334 GDB manual. Any changes here must be documented there. */
11570e71 23335
9291a0cd
TT
23336static void
23337save_gdb_index_command (char *arg, int from_tty)
23338{
23339 struct objfile *objfile;
23340
23341 if (!arg || !*arg)
96d19272 23342 error (_("usage: save gdb-index DIRECTORY"));
9291a0cd
TT
23343
23344 ALL_OBJFILES (objfile)
23345 {
23346 struct stat st;
23347
23348 /* If the objfile does not correspond to an actual file, skip it. */
4262abfb 23349 if (stat (objfile_name (objfile), &st) < 0)
9291a0cd
TT
23350 continue;
23351
23352 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
23353 if (dwarf2_per_objfile)
23354 {
9291a0cd 23355
492d29ea 23356 TRY
9291a0cd
TT
23357 {
23358 write_psymtabs_to_index (objfile, arg);
23359 }
492d29ea
PA
23360 CATCH (except, RETURN_MASK_ERROR)
23361 {
23362 exception_fprintf (gdb_stderr, except,
23363 _("Error while writing index for `%s': "),
23364 objfile_name (objfile));
23365 }
23366 END_CATCH
9291a0cd
TT
23367 }
23368 }
dce234bc
PP
23369}
23370
9291a0cd
TT
23371\f
23372
b4f54984 23373int dwarf_always_disassemble;
9eae7c52
TT
23374
23375static void
b4f54984
DE
23376show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
23377 struct cmd_list_element *c, const char *value)
9eae7c52 23378{
3e43a32a
MS
23379 fprintf_filtered (file,
23380 _("Whether to always disassemble "
23381 "DWARF expressions is %s.\n"),
9eae7c52
TT
23382 value);
23383}
23384
900e11f9
JK
23385static void
23386show_check_physname (struct ui_file *file, int from_tty,
23387 struct cmd_list_element *c, const char *value)
23388{
23389 fprintf_filtered (file,
23390 _("Whether to check \"physname\" is %s.\n"),
23391 value);
23392}
23393
6502dd73
DJ
23394void _initialize_dwarf2_read (void);
23395
23396void
23397_initialize_dwarf2_read (void)
23398{
96d19272
JK
23399 struct cmd_list_element *c;
23400
dce234bc 23401 dwarf2_objfile_data_key
c1bd65d0 23402 = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
ae038cb0 23403
b4f54984
DE
23404 add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
23405Set DWARF specific variables.\n\
23406Configure DWARF variables such as the cache size"),
23407 &set_dwarf_cmdlist, "maintenance set dwarf ",
ae038cb0
DJ
23408 0/*allow-unknown*/, &maintenance_set_cmdlist);
23409
b4f54984
DE
23410 add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
23411Show DWARF specific variables\n\
23412Show DWARF variables such as the cache size"),
23413 &show_dwarf_cmdlist, "maintenance show dwarf ",
ae038cb0
DJ
23414 0/*allow-unknown*/, &maintenance_show_cmdlist);
23415
23416 add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
b4f54984
DE
23417 &dwarf_max_cache_age, _("\
23418Set the upper bound on the age of cached DWARF compilation units."), _("\
23419Show the upper bound on the age of cached DWARF compilation units."), _("\
7915a72c
AC
23420A higher limit means that cached compilation units will be stored\n\
23421in memory longer, and more total memory will be used. Zero disables\n\
23422caching, which can slow down startup."),
2c5b56ce 23423 NULL,
b4f54984
DE
23424 show_dwarf_max_cache_age,
23425 &set_dwarf_cmdlist,
23426 &show_dwarf_cmdlist);
d97bc12b 23427
9eae7c52 23428 add_setshow_boolean_cmd ("always-disassemble", class_obscure,
b4f54984 23429 &dwarf_always_disassemble, _("\
9eae7c52
TT
23430Set whether `info address' always disassembles DWARF expressions."), _("\
23431Show whether `info address' always disassembles DWARF expressions."), _("\
23432When enabled, DWARF expressions are always printed in an assembly-like\n\
23433syntax. When disabled, expressions will be printed in a more\n\
23434conversational style, when possible."),
23435 NULL,
b4f54984
DE
23436 show_dwarf_always_disassemble,
23437 &set_dwarf_cmdlist,
23438 &show_dwarf_cmdlist);
23439
23440 add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
23441Set debugging of the DWARF reader."), _("\
23442Show debugging of the DWARF reader."), _("\
23443When enabled (non-zero), debugging messages are printed during DWARF\n\
73be47f5
DE
23444reading and symtab expansion. A value of 1 (one) provides basic\n\
23445information. A value greater than 1 provides more verbose information."),
45cfd468
DE
23446 NULL,
23447 NULL,
23448 &setdebuglist, &showdebuglist);
23449
b4f54984
DE
23450 add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
23451Set debugging of the DWARF DIE reader."), _("\
23452Show debugging of the DWARF DIE reader."), _("\
d97bc12b
DE
23453When enabled (non-zero), DIEs are dumped after they are read in.\n\
23454The value is the maximum depth to print."),
ccce17b0
YQ
23455 NULL,
23456 NULL,
23457 &setdebuglist, &showdebuglist);
9291a0cd 23458
27e0867f
DE
23459 add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
23460Set debugging of the dwarf line reader."), _("\
23461Show debugging of the dwarf line reader."), _("\
23462When enabled (non-zero), line number entries are dumped as they are read in.\n\
23463A value of 1 (one) provides basic information.\n\
23464A value greater than 1 provides more verbose information."),
23465 NULL,
23466 NULL,
23467 &setdebuglist, &showdebuglist);
23468
900e11f9
JK
23469 add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
23470Set cross-checking of \"physname\" code against demangler."), _("\
23471Show cross-checking of \"physname\" code against demangler."), _("\
23472When enabled, GDB's internal \"physname\" code is checked against\n\
23473the demangler."),
23474 NULL, show_check_physname,
23475 &setdebuglist, &showdebuglist);
23476
e615022a
DE
23477 add_setshow_boolean_cmd ("use-deprecated-index-sections",
23478 no_class, &use_deprecated_index_sections, _("\
23479Set whether to use deprecated gdb_index sections."), _("\
23480Show whether to use deprecated gdb_index sections."), _("\
23481When enabled, deprecated .gdb_index sections are used anyway.\n\
23482Normally they are ignored either because of a missing feature or\n\
23483performance issue.\n\
23484Warning: This option must be enabled before gdb reads the file."),
23485 NULL,
23486 NULL,
23487 &setlist, &showlist);
23488
96d19272 23489 c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
11570e71 23490 _("\
fc1a9d6e 23491Save a gdb-index file.\n\
11570e71 23492Usage: save gdb-index DIRECTORY"),
96d19272
JK
23493 &save_cmdlist);
23494 set_cmd_completer (c, filename_completer);
f1e6e072
TT
23495
23496 dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
23497 &dwarf2_locexpr_funcs);
23498 dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
23499 &dwarf2_loclist_funcs);
23500
23501 dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
23502 &dwarf2_block_frame_base_locexpr_funcs);
23503 dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
23504 &dwarf2_block_frame_base_loclist_funcs);
6502dd73 23505}
This page took 4.804969 seconds and 4 git commands to generate.