gdb.ada/info_exc.exp: Adjust expected output in "info exception" test.
[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
b4e1fd61 2244 if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
72dca2f5
FR
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
45280282
IB
2977 || current_language->la_language == language_fortran
2978 || current_language->la_language == language_d)
0cf03b49
JK
2979 {
2980 /* NAME is already canonical. Drop any qualifiers as .gdb_index does
2981 not contain any. */
a8719064 2982
72998fb3 2983 if (strchr (name, '(') != NULL)
0cf03b49 2984 {
72998fb3 2985 char *without_params = cp_remove_params (name);
0cf03b49 2986
72998fb3
DE
2987 if (without_params != NULL)
2988 {
2989 make_cleanup (xfree, without_params);
2990 name = without_params;
2991 }
0cf03b49
JK
2992 }
2993 }
2994
559a7a62 2995 /* Index version 4 did not support case insensitive searches. But the
feea76c2 2996 indices for case insensitive languages are built in lowercase, therefore
559a7a62
JK
2997 simulate our NAME being searched is also lowercased. */
2998 hash = mapped_index_string_hash ((index->version == 4
2999 && case_sensitivity == case_sensitive_off
3000 ? 5 : index->version),
3001 name);
3002
3876f04e
DE
3003 slot = hash & (index->symbol_table_slots - 1);
3004 step = ((hash * 17) & (index->symbol_table_slots - 1)) | 1;
559a7a62 3005 cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
9291a0cd
TT
3006
3007 for (;;)
3008 {
3009 /* Convert a slot number to an offset into the table. */
3010 offset_type i = 2 * slot;
3011 const char *str;
3876f04e 3012 if (index->symbol_table[i] == 0 && index->symbol_table[i + 1] == 0)
0cf03b49
JK
3013 {
3014 do_cleanups (back_to);
3015 return 0;
3016 }
9291a0cd 3017
3876f04e 3018 str = index->constant_pool + MAYBE_SWAP (index->symbol_table[i]);
559a7a62 3019 if (!cmp (name, str))
9291a0cd
TT
3020 {
3021 *vec_out = (offset_type *) (index->constant_pool
3876f04e 3022 + MAYBE_SWAP (index->symbol_table[i + 1]));
0cf03b49 3023 do_cleanups (back_to);
9291a0cd
TT
3024 return 1;
3025 }
3026
3876f04e 3027 slot = (slot + step) & (index->symbol_table_slots - 1);
9291a0cd
TT
3028 }
3029}
3030
2ec9a5e0
TT
3031/* A helper function that reads the .gdb_index from SECTION and fills
3032 in MAP. FILENAME is the name of the file containing the section;
3033 it is used for error reporting. DEPRECATED_OK is nonzero if it is
3034 ok to use deprecated sections.
3035
3036 CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3037 out parameters that are filled in with information about the CU and
3038 TU lists in the section.
3039
3040 Returns 1 if all went well, 0 otherwise. */
2fdf6df6 3041
9291a0cd 3042static int
2ec9a5e0
TT
3043read_index_from_section (struct objfile *objfile,
3044 const char *filename,
3045 int deprecated_ok,
3046 struct dwarf2_section_info *section,
3047 struct mapped_index *map,
3048 const gdb_byte **cu_list,
3049 offset_type *cu_list_elements,
3050 const gdb_byte **types_list,
3051 offset_type *types_list_elements)
9291a0cd 3052{
948f8e3d 3053 const gdb_byte *addr;
2ec9a5e0 3054 offset_type version;
b3b272e1 3055 offset_type *metadata;
1fd400ff 3056 int i;
9291a0cd 3057
2ec9a5e0 3058 if (dwarf2_section_empty_p (section))
9291a0cd 3059 return 0;
82430852
JK
3060
3061 /* Older elfutils strip versions could keep the section in the main
3062 executable while splitting it for the separate debug info file. */
a32a8923 3063 if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
82430852
JK
3064 return 0;
3065
2ec9a5e0 3066 dwarf2_read_section (objfile, section);
9291a0cd 3067
2ec9a5e0 3068 addr = section->buffer;
9291a0cd 3069 /* Version check. */
1fd400ff 3070 version = MAYBE_SWAP (*(offset_type *) addr);
987d643c 3071 /* Versions earlier than 3 emitted every copy of a psymbol. This
a6e293d1 3072 causes the index to behave very poorly for certain requests. Version 3
831adc1f 3073 contained incomplete addrmap. So, it seems better to just ignore such
481860b3 3074 indices. */
831adc1f 3075 if (version < 4)
481860b3
GB
3076 {
3077 static int warning_printed = 0;
3078 if (!warning_printed)
3079 {
3080 warning (_("Skipping obsolete .gdb_index section in %s."),
2ec9a5e0 3081 filename);
481860b3
GB
3082 warning_printed = 1;
3083 }
3084 return 0;
3085 }
3086 /* Index version 4 uses a different hash function than index version
3087 5 and later.
3088
3089 Versions earlier than 6 did not emit psymbols for inlined
3090 functions. Using these files will cause GDB not to be able to
3091 set breakpoints on inlined functions by name, so we ignore these
e615022a
DE
3092 indices unless the user has done
3093 "set use-deprecated-index-sections on". */
2ec9a5e0 3094 if (version < 6 && !deprecated_ok)
481860b3
GB
3095 {
3096 static int warning_printed = 0;
3097 if (!warning_printed)
3098 {
e615022a
DE
3099 warning (_("\
3100Skipping deprecated .gdb_index section in %s.\n\
3101Do \"set use-deprecated-index-sections on\" before the file is read\n\
3102to use the section anyway."),
2ec9a5e0 3103 filename);
481860b3
GB
3104 warning_printed = 1;
3105 }
3106 return 0;
3107 }
796a7ff8 3108 /* Version 7 indices generated by gold refer to the CU for a symbol instead
8943b874
DE
3109 of the TU (for symbols coming from TUs),
3110 http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3111 Plus gold-generated indices can have duplicate entries for global symbols,
3112 http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3113 These are just performance bugs, and we can't distinguish gdb-generated
3114 indices from gold-generated ones, so issue no warning here. */
796a7ff8 3115
481860b3 3116 /* Indexes with higher version than the one supported by GDB may be no
594e8718 3117 longer backward compatible. */
796a7ff8 3118 if (version > 8)
594e8718 3119 return 0;
9291a0cd 3120
559a7a62 3121 map->version = version;
2ec9a5e0 3122 map->total_size = section->size;
9291a0cd
TT
3123
3124 metadata = (offset_type *) (addr + sizeof (offset_type));
1fd400ff
TT
3125
3126 i = 0;
2ec9a5e0
TT
3127 *cu_list = addr + MAYBE_SWAP (metadata[i]);
3128 *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3129 / 8);
1fd400ff
TT
3130 ++i;
3131
2ec9a5e0
TT
3132 *types_list = addr + MAYBE_SWAP (metadata[i]);
3133 *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3134 - MAYBE_SWAP (metadata[i]))
3135 / 8);
987d643c 3136 ++i;
1fd400ff
TT
3137
3138 map->address_table = addr + MAYBE_SWAP (metadata[i]);
3139 map->address_table_size = (MAYBE_SWAP (metadata[i + 1])
3140 - MAYBE_SWAP (metadata[i]));
3141 ++i;
3142
3876f04e
DE
3143 map->symbol_table = (offset_type *) (addr + MAYBE_SWAP (metadata[i]));
3144 map->symbol_table_slots = ((MAYBE_SWAP (metadata[i + 1])
3145 - MAYBE_SWAP (metadata[i]))
3146 / (2 * sizeof (offset_type)));
1fd400ff 3147 ++i;
9291a0cd 3148
f9d83a0b 3149 map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
1fd400ff 3150
2ec9a5e0
TT
3151 return 1;
3152}
3153
3154
3155/* Read the index file. If everything went ok, initialize the "quick"
3156 elements of all the CUs and return 1. Otherwise, return 0. */
3157
3158static int
3159dwarf2_read_index (struct objfile *objfile)
3160{
3161 struct mapped_index local_map, *map;
3162 const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3163 offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
4db1a1dc 3164 struct dwz_file *dwz;
2ec9a5e0 3165
4262abfb 3166 if (!read_index_from_section (objfile, objfile_name (objfile),
2ec9a5e0
TT
3167 use_deprecated_index_sections,
3168 &dwarf2_per_objfile->gdb_index, &local_map,
3169 &cu_list, &cu_list_elements,
3170 &types_list, &types_list_elements))
3171 return 0;
3172
0fefef59 3173 /* Don't use the index if it's empty. */
2ec9a5e0 3174 if (local_map.symbol_table_slots == 0)
0fefef59
DE
3175 return 0;
3176
2ec9a5e0
TT
3177 /* If there is a .dwz file, read it so we can get its CU list as
3178 well. */
4db1a1dc
TT
3179 dwz = dwarf2_get_dwz_file ();
3180 if (dwz != NULL)
2ec9a5e0 3181 {
2ec9a5e0
TT
3182 struct mapped_index dwz_map;
3183 const gdb_byte *dwz_types_ignore;
3184 offset_type dwz_types_elements_ignore;
3185
3186 if (!read_index_from_section (objfile, bfd_get_filename (dwz->dwz_bfd),
3187 1,
3188 &dwz->gdb_index, &dwz_map,
3189 &dwz_list, &dwz_list_elements,
3190 &dwz_types_ignore,
3191 &dwz_types_elements_ignore))
3192 {
3193 warning (_("could not read '.gdb_index' section from %s; skipping"),
3194 bfd_get_filename (dwz->dwz_bfd));
3195 return 0;
3196 }
3197 }
3198
74a0d9f6
JK
3199 create_cus_from_index (objfile, cu_list, cu_list_elements, dwz_list,
3200 dwz_list_elements);
1fd400ff 3201
8b70b953
TT
3202 if (types_list_elements)
3203 {
3204 struct dwarf2_section_info *section;
3205
3206 /* We can only handle a single .debug_types when we have an
3207 index. */
3208 if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3209 return 0;
3210
3211 section = VEC_index (dwarf2_section_info_def,
3212 dwarf2_per_objfile->types, 0);
3213
74a0d9f6
JK
3214 create_signatured_type_table_from_index (objfile, section, types_list,
3215 types_list_elements);
8b70b953 3216 }
9291a0cd 3217
2ec9a5e0
TT
3218 create_addrmap_from_index (objfile, &local_map);
3219
3220 map = obstack_alloc (&objfile->objfile_obstack, sizeof (struct mapped_index));
3221 *map = local_map;
9291a0cd
TT
3222
3223 dwarf2_per_objfile->index_table = map;
3224 dwarf2_per_objfile->using_index = 1;
7b9f3c50
DE
3225 dwarf2_per_objfile->quick_file_names_table =
3226 create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
9291a0cd
TT
3227
3228 return 1;
3229}
3230
3231/* A helper for the "quick" functions which sets the global
3232 dwarf2_per_objfile according to OBJFILE. */
2fdf6df6 3233
9291a0cd
TT
3234static void
3235dw2_setup (struct objfile *objfile)
3236{
3237 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
3238 gdb_assert (dwarf2_per_objfile);
3239}
3240
dee91e82 3241/* die_reader_func for dw2_get_file_names. */
2fdf6df6 3242
dee91e82
DE
3243static void
3244dw2_get_file_names_reader (const struct die_reader_specs *reader,
d521ce57 3245 const gdb_byte *info_ptr,
dee91e82
DE
3246 struct die_info *comp_unit_die,
3247 int has_children,
3248 void *data)
9291a0cd 3249{
dee91e82
DE
3250 struct dwarf2_cu *cu = reader->cu;
3251 struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3252 struct objfile *objfile = dwarf2_per_objfile->objfile;
094b34ac 3253 struct dwarf2_per_cu_data *lh_cu;
7b9f3c50 3254 struct line_header *lh;
9291a0cd 3255 struct attribute *attr;
dee91e82 3256 int i;
15d034d0 3257 const char *name, *comp_dir;
7b9f3c50
DE
3258 void **slot;
3259 struct quick_file_names *qfn;
3260 unsigned int line_offset;
9291a0cd 3261
0186c6a7
DE
3262 gdb_assert (! this_cu->is_debug_types);
3263
07261596
TT
3264 /* Our callers never want to match partial units -- instead they
3265 will match the enclosing full CU. */
3266 if (comp_unit_die->tag == DW_TAG_partial_unit)
3267 {
3268 this_cu->v.quick->no_file_data = 1;
3269 return;
3270 }
3271
0186c6a7 3272 lh_cu = this_cu;
7b9f3c50
DE
3273 lh = NULL;
3274 slot = NULL;
3275 line_offset = 0;
dee91e82
DE
3276
3277 attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
9291a0cd
TT
3278 if (attr)
3279 {
7b9f3c50
DE
3280 struct quick_file_names find_entry;
3281
3282 line_offset = DW_UNSND (attr);
3283
3284 /* We may have already read in this line header (TU line header sharing).
3285 If we have we're done. */
094b34ac
DE
3286 find_entry.hash.dwo_unit = cu->dwo_unit;
3287 find_entry.hash.line_offset.sect_off = line_offset;
7b9f3c50
DE
3288 slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3289 &find_entry, INSERT);
3290 if (*slot != NULL)
3291 {
094b34ac 3292 lh_cu->v.quick->file_names = *slot;
dee91e82 3293 return;
7b9f3c50
DE
3294 }
3295
3019eac3 3296 lh = dwarf_decode_line_header (line_offset, cu);
9291a0cd
TT
3297 }
3298 if (lh == NULL)
3299 {
094b34ac 3300 lh_cu->v.quick->no_file_data = 1;
dee91e82 3301 return;
9291a0cd
TT
3302 }
3303
7b9f3c50 3304 qfn = obstack_alloc (&objfile->objfile_obstack, sizeof (*qfn));
094b34ac
DE
3305 qfn->hash.dwo_unit = cu->dwo_unit;
3306 qfn->hash.line_offset.sect_off = line_offset;
7b9f3c50
DE
3307 gdb_assert (slot != NULL);
3308 *slot = qfn;
9291a0cd 3309
dee91e82 3310 find_file_and_directory (comp_unit_die, cu, &name, &comp_dir);
9291a0cd 3311
7b9f3c50
DE
3312 qfn->num_file_names = lh->num_file_names;
3313 qfn->file_names = obstack_alloc (&objfile->objfile_obstack,
3314 lh->num_file_names * sizeof (char *));
9291a0cd 3315 for (i = 0; i < lh->num_file_names; ++i)
7b9f3c50
DE
3316 qfn->file_names[i] = file_full_name (i + 1, lh, comp_dir);
3317 qfn->real_names = NULL;
9291a0cd 3318
7b9f3c50 3319 free_line_header (lh);
7b9f3c50 3320
094b34ac 3321 lh_cu->v.quick->file_names = qfn;
dee91e82
DE
3322}
3323
3324/* A helper for the "quick" functions which attempts to read the line
3325 table for THIS_CU. */
3326
3327static struct quick_file_names *
e4a48d9d 3328dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
dee91e82 3329{
0186c6a7
DE
3330 /* This should never be called for TUs. */
3331 gdb_assert (! this_cu->is_debug_types);
3332 /* Nor type unit groups. */
3333 gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
f4dc4d17 3334
dee91e82
DE
3335 if (this_cu->v.quick->file_names != NULL)
3336 return this_cu->v.quick->file_names;
3337 /* If we know there is no line data, no point in looking again. */
3338 if (this_cu->v.quick->no_file_data)
3339 return NULL;
3340
0186c6a7 3341 init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
dee91e82
DE
3342
3343 if (this_cu->v.quick->no_file_data)
3344 return NULL;
3345 return this_cu->v.quick->file_names;
9291a0cd
TT
3346}
3347
3348/* A helper for the "quick" functions which computes and caches the
7b9f3c50 3349 real path for a given file name from the line table. */
2fdf6df6 3350
9291a0cd 3351static const char *
7b9f3c50
DE
3352dw2_get_real_path (struct objfile *objfile,
3353 struct quick_file_names *qfn, int index)
9291a0cd 3354{
7b9f3c50
DE
3355 if (qfn->real_names == NULL)
3356 qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
26f2dc30 3357 qfn->num_file_names, const char *);
9291a0cd 3358
7b9f3c50
DE
3359 if (qfn->real_names[index] == NULL)
3360 qfn->real_names[index] = gdb_realpath (qfn->file_names[index]);
9291a0cd 3361
7b9f3c50 3362 return qfn->real_names[index];
9291a0cd
TT
3363}
3364
3365static struct symtab *
3366dw2_find_last_source_symtab (struct objfile *objfile)
3367{
43f3e411 3368 struct compunit_symtab *cust;
9291a0cd 3369 int index;
ae2de4f8 3370
9291a0cd
TT
3371 dw2_setup (objfile);
3372 index = dwarf2_per_objfile->n_comp_units - 1;
43f3e411
DE
3373 cust = dw2_instantiate_symtab (dw2_get_cutu (index));
3374 if (cust == NULL)
3375 return NULL;
3376 return compunit_primary_filetab (cust);
9291a0cd
TT
3377}
3378
7b9f3c50
DE
3379/* Traversal function for dw2_forget_cached_source_info. */
3380
3381static int
3382dw2_free_cached_file_names (void **slot, void *info)
9291a0cd 3383{
7b9f3c50 3384 struct quick_file_names *file_data = (struct quick_file_names *) *slot;
9291a0cd 3385
7b9f3c50 3386 if (file_data->real_names)
9291a0cd 3387 {
7b9f3c50 3388 int i;
9291a0cd 3389
7b9f3c50 3390 for (i = 0; i < file_data->num_file_names; ++i)
9291a0cd 3391 {
7b9f3c50
DE
3392 xfree ((void*) file_data->real_names[i]);
3393 file_data->real_names[i] = NULL;
9291a0cd
TT
3394 }
3395 }
7b9f3c50
DE
3396
3397 return 1;
3398}
3399
3400static void
3401dw2_forget_cached_source_info (struct objfile *objfile)
3402{
3403 dw2_setup (objfile);
3404
3405 htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3406 dw2_free_cached_file_names, NULL);
9291a0cd
TT
3407}
3408
f8eba3c6
TT
3409/* Helper function for dw2_map_symtabs_matching_filename that expands
3410 the symtabs and calls the iterator. */
3411
3412static int
3413dw2_map_expand_apply (struct objfile *objfile,
3414 struct dwarf2_per_cu_data *per_cu,
f5b95b50 3415 const char *name, const char *real_path,
f8eba3c6
TT
3416 int (*callback) (struct symtab *, void *),
3417 void *data)
3418{
43f3e411 3419 struct compunit_symtab *last_made = objfile->compunit_symtabs;
f8eba3c6
TT
3420
3421 /* Don't visit already-expanded CUs. */
43f3e411 3422 if (per_cu->v.quick->compunit_symtab)
f8eba3c6
TT
3423 return 0;
3424
3425 /* This may expand more than one symtab, and we want to iterate over
3426 all of them. */
a0f42c21 3427 dw2_instantiate_symtab (per_cu);
f8eba3c6 3428
f5b95b50 3429 return iterate_over_some_symtabs (name, real_path, callback, data,
43f3e411 3430 objfile->compunit_symtabs, last_made);
f8eba3c6
TT
3431}
3432
3433/* Implementation of the map_symtabs_matching_filename method. */
3434
9291a0cd 3435static int
f8eba3c6 3436dw2_map_symtabs_matching_filename (struct objfile *objfile, const char *name,
f5b95b50 3437 const char *real_path,
f8eba3c6
TT
3438 int (*callback) (struct symtab *, void *),
3439 void *data)
9291a0cd
TT
3440{
3441 int i;
c011a4f4 3442 const char *name_basename = lbasename (name);
9291a0cd
TT
3443
3444 dw2_setup (objfile);
ae2de4f8 3445
848e3e78
DE
3446 /* The rule is CUs specify all the files, including those used by
3447 any TU, so there's no need to scan TUs here. */
f4dc4d17 3448
848e3e78 3449 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
3450 {
3451 int j;
8832e7e3 3452 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
7b9f3c50 3453 struct quick_file_names *file_data;
9291a0cd 3454
3d7bb9d9 3455 /* We only need to look at symtabs not already expanded. */
43f3e411 3456 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3457 continue;
3458
e4a48d9d 3459 file_data = dw2_get_file_names (per_cu);
7b9f3c50 3460 if (file_data == NULL)
9291a0cd
TT
3461 continue;
3462
7b9f3c50 3463 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 3464 {
7b9f3c50 3465 const char *this_name = file_data->file_names[j];
da235a7c 3466 const char *this_real_name;
9291a0cd 3467
af529f8f 3468 if (compare_filenames_for_search (this_name, name))
9291a0cd 3469 {
f5b95b50 3470 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
f8eba3c6
TT
3471 callback, data))
3472 return 1;
288e77a7 3473 continue;
4aac40c8 3474 }
9291a0cd 3475
c011a4f4
DE
3476 /* Before we invoke realpath, which can get expensive when many
3477 files are involved, do a quick comparison of the basenames. */
3478 if (! basenames_may_differ
3479 && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3480 continue;
3481
da235a7c
JK
3482 this_real_name = dw2_get_real_path (objfile, file_data, j);
3483 if (compare_filenames_for_search (this_real_name, name))
9291a0cd 3484 {
da235a7c
JK
3485 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3486 callback, data))
3487 return 1;
288e77a7 3488 continue;
da235a7c 3489 }
9291a0cd 3490
da235a7c
JK
3491 if (real_path != NULL)
3492 {
af529f8f
JK
3493 gdb_assert (IS_ABSOLUTE_PATH (real_path));
3494 gdb_assert (IS_ABSOLUTE_PATH (name));
7b9f3c50 3495 if (this_real_name != NULL
af529f8f 3496 && FILENAME_CMP (real_path, this_real_name) == 0)
9291a0cd 3497 {
f5b95b50 3498 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
f8eba3c6
TT
3499 callback, data))
3500 return 1;
288e77a7 3501 continue;
9291a0cd
TT
3502 }
3503 }
3504 }
3505 }
3506
9291a0cd
TT
3507 return 0;
3508}
3509
da51c347
DE
3510/* Struct used to manage iterating over all CUs looking for a symbol. */
3511
3512struct dw2_symtab_iterator
9291a0cd 3513{
da51c347
DE
3514 /* The internalized form of .gdb_index. */
3515 struct mapped_index *index;
3516 /* If non-zero, only look for symbols that match BLOCK_INDEX. */
3517 int want_specific_block;
3518 /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3519 Unused if !WANT_SPECIFIC_BLOCK. */
3520 int block_index;
3521 /* The kind of symbol we're looking for. */
3522 domain_enum domain;
3523 /* The list of CUs from the index entry of the symbol,
3524 or NULL if not found. */
3525 offset_type *vec;
3526 /* The next element in VEC to look at. */
3527 int next;
3528 /* The number of elements in VEC, or zero if there is no match. */
3529 int length;
8943b874
DE
3530 /* Have we seen a global version of the symbol?
3531 If so we can ignore all further global instances.
3532 This is to work around gold/15646, inefficient gold-generated
3533 indices. */
3534 int global_seen;
da51c347 3535};
9291a0cd 3536
da51c347
DE
3537/* Initialize the index symtab iterator ITER.
3538 If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3539 in block BLOCK_INDEX. Otherwise BLOCK_INDEX is ignored. */
2fdf6df6 3540
9291a0cd 3541static void
da51c347
DE
3542dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3543 struct mapped_index *index,
3544 int want_specific_block,
3545 int block_index,
3546 domain_enum domain,
3547 const char *name)
3548{
3549 iter->index = index;
3550 iter->want_specific_block = want_specific_block;
3551 iter->block_index = block_index;
3552 iter->domain = domain;
3553 iter->next = 0;
8943b874 3554 iter->global_seen = 0;
da51c347
DE
3555
3556 if (find_slot_in_mapped_hash (index, name, &iter->vec))
3557 iter->length = MAYBE_SWAP (*iter->vec);
3558 else
3559 {
3560 iter->vec = NULL;
3561 iter->length = 0;
3562 }
3563}
3564
3565/* Return the next matching CU or NULL if there are no more. */
3566
3567static struct dwarf2_per_cu_data *
3568dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3569{
3570 for ( ; iter->next < iter->length; ++iter->next)
3571 {
3572 offset_type cu_index_and_attrs =
3573 MAYBE_SWAP (iter->vec[iter->next + 1]);
3574 offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3190f0c6 3575 struct dwarf2_per_cu_data *per_cu;
da51c347
DE
3576 int want_static = iter->block_index != GLOBAL_BLOCK;
3577 /* This value is only valid for index versions >= 7. */
3578 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3579 gdb_index_symbol_kind symbol_kind =
3580 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3581 /* Only check the symbol attributes if they're present.
3582 Indices prior to version 7 don't record them,
3583 and indices >= 7 may elide them for certain symbols
3584 (gold does this). */
3585 int attrs_valid =
3586 (iter->index->version >= 7
3587 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3588
3190f0c6
DE
3589 /* Don't crash on bad data. */
3590 if (cu_index >= (dwarf2_per_objfile->n_comp_units
3591 + dwarf2_per_objfile->n_type_units))
3592 {
3593 complaint (&symfile_complaints,
3594 _(".gdb_index entry has bad CU index"
4262abfb
JK
3595 " [in module %s]"),
3596 objfile_name (dwarf2_per_objfile->objfile));
3190f0c6
DE
3597 continue;
3598 }
3599
8832e7e3 3600 per_cu = dw2_get_cutu (cu_index);
3190f0c6 3601
da51c347 3602 /* Skip if already read in. */
43f3e411 3603 if (per_cu->v.quick->compunit_symtab)
da51c347
DE
3604 continue;
3605
8943b874
DE
3606 /* Check static vs global. */
3607 if (attrs_valid)
3608 {
3609 if (iter->want_specific_block
3610 && want_static != is_static)
3611 continue;
3612 /* Work around gold/15646. */
3613 if (!is_static && iter->global_seen)
3614 continue;
3615 if (!is_static)
3616 iter->global_seen = 1;
3617 }
da51c347
DE
3618
3619 /* Only check the symbol's kind if it has one. */
3620 if (attrs_valid)
3621 {
3622 switch (iter->domain)
3623 {
3624 case VAR_DOMAIN:
3625 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
3626 && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
3627 /* Some types are also in VAR_DOMAIN. */
3628 && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3629 continue;
3630 break;
3631 case STRUCT_DOMAIN:
3632 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3633 continue;
3634 break;
3635 case LABEL_DOMAIN:
3636 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3637 continue;
3638 break;
3639 default:
3640 break;
3641 }
3642 }
3643
3644 ++iter->next;
3645 return per_cu;
3646 }
3647
3648 return NULL;
3649}
3650
43f3e411 3651static struct compunit_symtab *
da51c347
DE
3652dw2_lookup_symbol (struct objfile *objfile, int block_index,
3653 const char *name, domain_enum domain)
9291a0cd 3654{
43f3e411 3655 struct compunit_symtab *stab_best = NULL;
156942c7
DE
3656 struct mapped_index *index;
3657
9291a0cd
TT
3658 dw2_setup (objfile);
3659
156942c7
DE
3660 index = dwarf2_per_objfile->index_table;
3661
da51c347 3662 /* index is NULL if OBJF_READNOW. */
156942c7 3663 if (index)
9291a0cd 3664 {
da51c347
DE
3665 struct dw2_symtab_iterator iter;
3666 struct dwarf2_per_cu_data *per_cu;
3667
3668 dw2_symtab_iter_init (&iter, index, 1, block_index, domain, name);
9291a0cd 3669
da51c347 3670 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
9291a0cd 3671 {
b2e2f908 3672 struct symbol *sym, *with_opaque = NULL;
43f3e411
DE
3673 struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu);
3674 const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
f194fefb 3675 struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
da51c347 3676
b2e2f908
DE
3677 sym = block_find_symbol (block, name, domain,
3678 block_find_non_opaque_type_preferred,
3679 &with_opaque);
3680
da51c347
DE
3681 /* Some caution must be observed with overloaded functions
3682 and methods, since the index will not contain any overload
3683 information (but NAME might contain it). */
da51c347 3684
b2e2f908
DE
3685 if (sym != NULL
3686 && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
3687 return stab;
3688 if (with_opaque != NULL
3689 && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
3690 stab_best = stab;
da51c347
DE
3691
3692 /* Keep looking through other CUs. */
9291a0cd
TT
3693 }
3694 }
9291a0cd 3695
da51c347 3696 return stab_best;
9291a0cd
TT
3697}
3698
3699static void
3700dw2_print_stats (struct objfile *objfile)
3701{
e4a48d9d 3702 int i, total, count;
9291a0cd
TT
3703
3704 dw2_setup (objfile);
e4a48d9d 3705 total = dwarf2_per_objfile->n_comp_units + dwarf2_per_objfile->n_type_units;
9291a0cd 3706 count = 0;
e4a48d9d 3707 for (i = 0; i < total; ++i)
9291a0cd 3708 {
8832e7e3 3709 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 3710
43f3e411 3711 if (!per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3712 ++count;
3713 }
e4a48d9d 3714 printf_filtered (_(" Number of read CUs: %d\n"), total - count);
9291a0cd
TT
3715 printf_filtered (_(" Number of unread CUs: %d\n"), count);
3716}
3717
779bd270
DE
3718/* This dumps minimal information about the index.
3719 It is called via "mt print objfiles".
3720 One use is to verify .gdb_index has been loaded by the
3721 gdb.dwarf2/gdb-index.exp testcase. */
3722
9291a0cd
TT
3723static void
3724dw2_dump (struct objfile *objfile)
3725{
779bd270
DE
3726 dw2_setup (objfile);
3727 gdb_assert (dwarf2_per_objfile->using_index);
3728 printf_filtered (".gdb_index:");
3729 if (dwarf2_per_objfile->index_table != NULL)
3730 {
3731 printf_filtered (" version %d\n",
3732 dwarf2_per_objfile->index_table->version);
3733 }
3734 else
3735 printf_filtered (" faked for \"readnow\"\n");
3736 printf_filtered ("\n");
9291a0cd
TT
3737}
3738
3739static void
3189cb12
DE
3740dw2_relocate (struct objfile *objfile,
3741 const struct section_offsets *new_offsets,
3742 const struct section_offsets *delta)
9291a0cd
TT
3743{
3744 /* There's nothing to relocate here. */
3745}
3746
3747static void
3748dw2_expand_symtabs_for_function (struct objfile *objfile,
3749 const char *func_name)
3750{
da51c347
DE
3751 struct mapped_index *index;
3752
3753 dw2_setup (objfile);
3754
3755 index = dwarf2_per_objfile->index_table;
3756
3757 /* index is NULL if OBJF_READNOW. */
3758 if (index)
3759 {
3760 struct dw2_symtab_iterator iter;
3761 struct dwarf2_per_cu_data *per_cu;
3762
3763 /* Note: It doesn't matter what we pass for block_index here. */
3764 dw2_symtab_iter_init (&iter, index, 0, GLOBAL_BLOCK, VAR_DOMAIN,
3765 func_name);
3766
3767 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3768 dw2_instantiate_symtab (per_cu);
3769 }
9291a0cd
TT
3770}
3771
3772static void
3773dw2_expand_all_symtabs (struct objfile *objfile)
3774{
3775 int i;
3776
3777 dw2_setup (objfile);
1fd400ff
TT
3778
3779 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
d467dd73 3780 + dwarf2_per_objfile->n_type_units); ++i)
9291a0cd 3781 {
8832e7e3 3782 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 3783
a0f42c21 3784 dw2_instantiate_symtab (per_cu);
9291a0cd
TT
3785 }
3786}
3787
3788static void
652a8996
JK
3789dw2_expand_symtabs_with_fullname (struct objfile *objfile,
3790 const char *fullname)
9291a0cd
TT
3791{
3792 int i;
3793
3794 dw2_setup (objfile);
d4637a04
DE
3795
3796 /* We don't need to consider type units here.
3797 This is only called for examining code, e.g. expand_line_sal.
3798 There can be an order of magnitude (or more) more type units
3799 than comp units, and we avoid them if we can. */
3800
3801 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
3802 {
3803 int j;
8832e7e3 3804 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
7b9f3c50 3805 struct quick_file_names *file_data;
9291a0cd 3806
3d7bb9d9 3807 /* We only need to look at symtabs not already expanded. */
43f3e411 3808 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3809 continue;
3810
e4a48d9d 3811 file_data = dw2_get_file_names (per_cu);
7b9f3c50 3812 if (file_data == NULL)
9291a0cd
TT
3813 continue;
3814
7b9f3c50 3815 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 3816 {
652a8996
JK
3817 const char *this_fullname = file_data->file_names[j];
3818
3819 if (filename_cmp (this_fullname, fullname) == 0)
9291a0cd 3820 {
a0f42c21 3821 dw2_instantiate_symtab (per_cu);
9291a0cd
TT
3822 break;
3823 }
3824 }
3825 }
3826}
3827
9291a0cd 3828static void
ade7ed9e 3829dw2_map_matching_symbols (struct objfile *objfile,
fe978cb0 3830 const char * name, domain_enum domain,
ade7ed9e 3831 int global,
40658b94
PH
3832 int (*callback) (struct block *,
3833 struct symbol *, void *),
2edb89d3
JK
3834 void *data, symbol_compare_ftype *match,
3835 symbol_compare_ftype *ordered_compare)
9291a0cd 3836{
40658b94 3837 /* Currently unimplemented; used for Ada. The function can be called if the
a9e6a4bb
JK
3838 current language is Ada for a non-Ada objfile using GNU index. As Ada
3839 does not look for non-Ada symbols this function should just return. */
9291a0cd
TT
3840}
3841
3842static void
f8eba3c6
TT
3843dw2_expand_symtabs_matching
3844 (struct objfile *objfile,
206f2a57
DE
3845 expand_symtabs_file_matcher_ftype *file_matcher,
3846 expand_symtabs_symbol_matcher_ftype *symbol_matcher,
276d885b 3847 expand_symtabs_exp_notify_ftype *expansion_notify,
f8eba3c6
TT
3848 enum search_domain kind,
3849 void *data)
9291a0cd
TT
3850{
3851 int i;
3852 offset_type iter;
4b5246aa 3853 struct mapped_index *index;
9291a0cd
TT
3854
3855 dw2_setup (objfile);
ae2de4f8
DE
3856
3857 /* index_table is NULL if OBJF_READNOW. */
9291a0cd
TT
3858 if (!dwarf2_per_objfile->index_table)
3859 return;
4b5246aa 3860 index = dwarf2_per_objfile->index_table;
9291a0cd 3861
7b08b9eb 3862 if (file_matcher != NULL)
24c79950
TT
3863 {
3864 struct cleanup *cleanup;
3865 htab_t visited_found, visited_not_found;
3866
3867 visited_found = htab_create_alloc (10,
3868 htab_hash_pointer, htab_eq_pointer,
3869 NULL, xcalloc, xfree);
3870 cleanup = make_cleanup_htab_delete (visited_found);
3871 visited_not_found = htab_create_alloc (10,
3872 htab_hash_pointer, htab_eq_pointer,
3873 NULL, xcalloc, xfree);
3874 make_cleanup_htab_delete (visited_not_found);
3875
848e3e78
DE
3876 /* The rule is CUs specify all the files, including those used by
3877 any TU, so there's no need to scan TUs here. */
3878
3879 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
24c79950
TT
3880 {
3881 int j;
8832e7e3 3882 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
24c79950
TT
3883 struct quick_file_names *file_data;
3884 void **slot;
7b08b9eb 3885
61d96d7e
DE
3886 QUIT;
3887
24c79950 3888 per_cu->v.quick->mark = 0;
3d7bb9d9 3889
24c79950 3890 /* We only need to look at symtabs not already expanded. */
43f3e411 3891 if (per_cu->v.quick->compunit_symtab)
24c79950 3892 continue;
7b08b9eb 3893
e4a48d9d 3894 file_data = dw2_get_file_names (per_cu);
24c79950
TT
3895 if (file_data == NULL)
3896 continue;
7b08b9eb 3897
24c79950
TT
3898 if (htab_find (visited_not_found, file_data) != NULL)
3899 continue;
3900 else if (htab_find (visited_found, file_data) != NULL)
3901 {
3902 per_cu->v.quick->mark = 1;
3903 continue;
3904 }
3905
3906 for (j = 0; j < file_data->num_file_names; ++j)
3907 {
da235a7c
JK
3908 const char *this_real_name;
3909
fbd9ab74 3910 if (file_matcher (file_data->file_names[j], data, 0))
24c79950
TT
3911 {
3912 per_cu->v.quick->mark = 1;
3913 break;
3914 }
da235a7c
JK
3915
3916 /* Before we invoke realpath, which can get expensive when many
3917 files are involved, do a quick comparison of the basenames. */
3918 if (!basenames_may_differ
3919 && !file_matcher (lbasename (file_data->file_names[j]),
3920 data, 1))
3921 continue;
3922
3923 this_real_name = dw2_get_real_path (objfile, file_data, j);
3924 if (file_matcher (this_real_name, data, 0))
3925 {
3926 per_cu->v.quick->mark = 1;
3927 break;
3928 }
24c79950
TT
3929 }
3930
3931 slot = htab_find_slot (per_cu->v.quick->mark
3932 ? visited_found
3933 : visited_not_found,
3934 file_data, INSERT);
3935 *slot = file_data;
3936 }
3937
3938 do_cleanups (cleanup);
3939 }
9291a0cd 3940
3876f04e 3941 for (iter = 0; iter < index->symbol_table_slots; ++iter)
9291a0cd
TT
3942 {
3943 offset_type idx = 2 * iter;
3944 const char *name;
3945 offset_type *vec, vec_len, vec_idx;
8943b874 3946 int global_seen = 0;
9291a0cd 3947
61d96d7e
DE
3948 QUIT;
3949
3876f04e 3950 if (index->symbol_table[idx] == 0 && index->symbol_table[idx + 1] == 0)
9291a0cd
TT
3951 continue;
3952
3876f04e 3953 name = index->constant_pool + MAYBE_SWAP (index->symbol_table[idx]);
9291a0cd 3954
206f2a57 3955 if (! (*symbol_matcher) (name, data))
9291a0cd
TT
3956 continue;
3957
3958 /* The name was matched, now expand corresponding CUs that were
3959 marked. */
4b5246aa 3960 vec = (offset_type *) (index->constant_pool
3876f04e 3961 + MAYBE_SWAP (index->symbol_table[idx + 1]));
9291a0cd
TT
3962 vec_len = MAYBE_SWAP (vec[0]);
3963 for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
3964 {
e254ef6a 3965 struct dwarf2_per_cu_data *per_cu;
156942c7 3966 offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
8943b874
DE
3967 /* This value is only valid for index versions >= 7. */
3968 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
156942c7
DE
3969 gdb_index_symbol_kind symbol_kind =
3970 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3971 int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3190f0c6
DE
3972 /* Only check the symbol attributes if they're present.
3973 Indices prior to version 7 don't record them,
3974 and indices >= 7 may elide them for certain symbols
3975 (gold does this). */
3976 int attrs_valid =
3977 (index->version >= 7
3978 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3979
8943b874
DE
3980 /* Work around gold/15646. */
3981 if (attrs_valid)
3982 {
3983 if (!is_static && global_seen)
3984 continue;
3985 if (!is_static)
3986 global_seen = 1;
3987 }
3988
3190f0c6
DE
3989 /* Only check the symbol's kind if it has one. */
3990 if (attrs_valid)
156942c7
DE
3991 {
3992 switch (kind)
3993 {
3994 case VARIABLES_DOMAIN:
3995 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
3996 continue;
3997 break;
3998 case FUNCTIONS_DOMAIN:
3999 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
4000 continue;
4001 break;
4002 case TYPES_DOMAIN:
4003 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4004 continue;
4005 break;
4006 default:
4007 break;
4008 }
4009 }
4010
3190f0c6
DE
4011 /* Don't crash on bad data. */
4012 if (cu_index >= (dwarf2_per_objfile->n_comp_units
4013 + dwarf2_per_objfile->n_type_units))
4014 {
4015 complaint (&symfile_complaints,
4016 _(".gdb_index entry has bad CU index"
4262abfb 4017 " [in module %s]"), objfile_name (objfile));
3190f0c6
DE
4018 continue;
4019 }
4020
8832e7e3 4021 per_cu = dw2_get_cutu (cu_index);
7b08b9eb 4022 if (file_matcher == NULL || per_cu->v.quick->mark)
276d885b
GB
4023 {
4024 int symtab_was_null =
4025 (per_cu->v.quick->compunit_symtab == NULL);
4026
4027 dw2_instantiate_symtab (per_cu);
4028
4029 if (expansion_notify != NULL
4030 && symtab_was_null
4031 && per_cu->v.quick->compunit_symtab != NULL)
4032 {
4033 expansion_notify (per_cu->v.quick->compunit_symtab,
4034 data);
4035 }
4036 }
9291a0cd
TT
4037 }
4038 }
4039}
4040
43f3e411 4041/* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
9703b513
TT
4042 symtab. */
4043
43f3e411
DE
4044static struct compunit_symtab *
4045recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
4046 CORE_ADDR pc)
9703b513
TT
4047{
4048 int i;
4049
43f3e411
DE
4050 if (COMPUNIT_BLOCKVECTOR (cust) != NULL
4051 && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
4052 return cust;
9703b513 4053
43f3e411 4054 if (cust->includes == NULL)
a3ec0bb1
DE
4055 return NULL;
4056
43f3e411 4057 for (i = 0; cust->includes[i]; ++i)
9703b513 4058 {
43f3e411 4059 struct compunit_symtab *s = cust->includes[i];
9703b513 4060
43f3e411 4061 s = recursively_find_pc_sect_compunit_symtab (s, pc);
9703b513
TT
4062 if (s != NULL)
4063 return s;
4064 }
4065
4066 return NULL;
4067}
4068
43f3e411
DE
4069static struct compunit_symtab *
4070dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
4071 struct bound_minimal_symbol msymbol,
4072 CORE_ADDR pc,
4073 struct obj_section *section,
4074 int warn_if_readin)
9291a0cd
TT
4075{
4076 struct dwarf2_per_cu_data *data;
43f3e411 4077 struct compunit_symtab *result;
9291a0cd
TT
4078
4079 dw2_setup (objfile);
4080
4081 if (!objfile->psymtabs_addrmap)
4082 return NULL;
4083
4084 data = addrmap_find (objfile->psymtabs_addrmap, pc);
4085 if (!data)
4086 return NULL;
4087
43f3e411 4088 if (warn_if_readin && data->v.quick->compunit_symtab)
abebb8b0 4089 warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
9291a0cd
TT
4090 paddress (get_objfile_arch (objfile), pc));
4091
43f3e411
DE
4092 result
4093 = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data),
4094 pc);
9703b513
TT
4095 gdb_assert (result != NULL);
4096 return result;
9291a0cd
TT
4097}
4098
9291a0cd 4099static void
44b13c5a 4100dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
74e2f255 4101 void *data, int need_fullname)
9291a0cd
TT
4102{
4103 int i;
24c79950
TT
4104 struct cleanup *cleanup;
4105 htab_t visited = htab_create_alloc (10, htab_hash_pointer, htab_eq_pointer,
4106 NULL, xcalloc, xfree);
9291a0cd 4107
24c79950 4108 cleanup = make_cleanup_htab_delete (visited);
9291a0cd 4109 dw2_setup (objfile);
ae2de4f8 4110
848e3e78
DE
4111 /* The rule is CUs specify all the files, including those used by
4112 any TU, so there's no need to scan TUs here.
4113 We can ignore file names coming from already-expanded CUs. */
f4dc4d17 4114
848e3e78 4115 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
24c79950 4116 {
8832e7e3 4117 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
24c79950 4118
43f3e411 4119 if (per_cu->v.quick->compunit_symtab)
24c79950
TT
4120 {
4121 void **slot = htab_find_slot (visited, per_cu->v.quick->file_names,
4122 INSERT);
4123
4124 *slot = per_cu->v.quick->file_names;
4125 }
4126 }
4127
848e3e78 4128 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
4129 {
4130 int j;
8832e7e3 4131 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
7b9f3c50 4132 struct quick_file_names *file_data;
24c79950 4133 void **slot;
9291a0cd 4134
3d7bb9d9 4135 /* We only need to look at symtabs not already expanded. */
43f3e411 4136 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
4137 continue;
4138
e4a48d9d 4139 file_data = dw2_get_file_names (per_cu);
7b9f3c50 4140 if (file_data == NULL)
9291a0cd
TT
4141 continue;
4142
24c79950
TT
4143 slot = htab_find_slot (visited, file_data, INSERT);
4144 if (*slot)
4145 {
4146 /* Already visited. */
4147 continue;
4148 }
4149 *slot = file_data;
4150
7b9f3c50 4151 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 4152 {
74e2f255
DE
4153 const char *this_real_name;
4154
4155 if (need_fullname)
4156 this_real_name = dw2_get_real_path (objfile, file_data, j);
4157 else
4158 this_real_name = NULL;
7b9f3c50 4159 (*fun) (file_data->file_names[j], this_real_name, data);
9291a0cd
TT
4160 }
4161 }
24c79950
TT
4162
4163 do_cleanups (cleanup);
9291a0cd
TT
4164}
4165
4166static int
4167dw2_has_symbols (struct objfile *objfile)
4168{
4169 return 1;
4170}
4171
4172const struct quick_symbol_functions dwarf2_gdb_index_functions =
4173{
4174 dw2_has_symbols,
4175 dw2_find_last_source_symtab,
4176 dw2_forget_cached_source_info,
f8eba3c6 4177 dw2_map_symtabs_matching_filename,
9291a0cd 4178 dw2_lookup_symbol,
9291a0cd
TT
4179 dw2_print_stats,
4180 dw2_dump,
4181 dw2_relocate,
4182 dw2_expand_symtabs_for_function,
4183 dw2_expand_all_symtabs,
652a8996 4184 dw2_expand_symtabs_with_fullname,
40658b94 4185 dw2_map_matching_symbols,
9291a0cd 4186 dw2_expand_symtabs_matching,
43f3e411 4187 dw2_find_pc_sect_compunit_symtab,
9291a0cd
TT
4188 dw2_map_symbol_filenames
4189};
4190
4191/* Initialize for reading DWARF for this objfile. Return 0 if this
4192 file will use psymtabs, or 1 if using the GNU index. */
4193
4194int
4195dwarf2_initialize_objfile (struct objfile *objfile)
4196{
4197 /* If we're about to read full symbols, don't bother with the
4198 indices. In this case we also don't care if some other debug
4199 format is making psymtabs, because they are all about to be
4200 expanded anyway. */
4201 if ((objfile->flags & OBJF_READNOW))
4202 {
4203 int i;
4204
4205 dwarf2_per_objfile->using_index = 1;
4206 create_all_comp_units (objfile);
0e50663e 4207 create_all_type_units (objfile);
7b9f3c50
DE
4208 dwarf2_per_objfile->quick_file_names_table =
4209 create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
9291a0cd 4210
1fd400ff 4211 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
d467dd73 4212 + dwarf2_per_objfile->n_type_units); ++i)
9291a0cd 4213 {
8832e7e3 4214 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 4215
e254ef6a
DE
4216 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4217 struct dwarf2_per_cu_quick_data);
9291a0cd
TT
4218 }
4219
4220 /* Return 1 so that gdb sees the "quick" functions. However,
4221 these functions will be no-ops because we will have expanded
4222 all symtabs. */
4223 return 1;
4224 }
4225
4226 if (dwarf2_read_index (objfile))
4227 return 1;
4228
9291a0cd
TT
4229 return 0;
4230}
4231
4232\f
4233
dce234bc
PP
4234/* Build a partial symbol table. */
4235
4236void
f29dff0a 4237dwarf2_build_psymtabs (struct objfile *objfile)
dce234bc 4238{
c9bf0622 4239
f29dff0a 4240 if (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0)
c906108c
SS
4241 {
4242 init_psymbol_list (objfile, 1024);
4243 }
4244
492d29ea 4245 TRY
c9bf0622
TT
4246 {
4247 /* This isn't really ideal: all the data we allocate on the
4248 objfile's obstack is still uselessly kept around. However,
4249 freeing it seems unsafe. */
4250 struct cleanup *cleanups = make_cleanup_discard_psymtabs (objfile);
4251
4252 dwarf2_build_psymtabs_hard (objfile);
4253 discard_cleanups (cleanups);
4254 }
492d29ea
PA
4255 CATCH (except, RETURN_MASK_ERROR)
4256 {
4257 exception_print (gdb_stderr, except);
4258 }
4259 END_CATCH
c906108c 4260}
c906108c 4261
1ce1cefd
DE
4262/* Return the total length of the CU described by HEADER. */
4263
4264static unsigned int
4265get_cu_length (const struct comp_unit_head *header)
4266{
4267 return header->initial_length_size + header->length;
4268}
4269
45452591
DE
4270/* Return TRUE if OFFSET is within CU_HEADER. */
4271
4272static inline int
b64f50a1 4273offset_in_cu_p (const struct comp_unit_head *cu_header, sect_offset offset)
45452591 4274{
b64f50a1 4275 sect_offset bottom = { cu_header->offset.sect_off };
1ce1cefd 4276 sect_offset top = { cu_header->offset.sect_off + get_cu_length (cu_header) };
9a619af0 4277
b64f50a1 4278 return (offset.sect_off >= bottom.sect_off && offset.sect_off < top.sect_off);
45452591
DE
4279}
4280
3b80fe9b
DE
4281/* Find the base address of the compilation unit for range lists and
4282 location lists. It will normally be specified by DW_AT_low_pc.
4283 In DWARF-3 draft 4, the base address could be overridden by
4284 DW_AT_entry_pc. It's been removed, but GCC still uses this for
4285 compilation units with discontinuous ranges. */
4286
4287static void
4288dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
4289{
4290 struct attribute *attr;
4291
4292 cu->base_known = 0;
4293 cu->base_address = 0;
4294
4295 attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
4296 if (attr)
4297 {
31aa7e4e 4298 cu->base_address = attr_value_as_address (attr);
3b80fe9b
DE
4299 cu->base_known = 1;
4300 }
4301 else
4302 {
4303 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
4304 if (attr)
4305 {
31aa7e4e 4306 cu->base_address = attr_value_as_address (attr);
3b80fe9b
DE
4307 cu->base_known = 1;
4308 }
4309 }
4310}
4311
93311388
DE
4312/* Read in the comp unit header information from the debug_info at info_ptr.
4313 NOTE: This leaves members offset, first_die_offset to be filled in
4314 by the caller. */
107d2387 4315
d521ce57 4316static const gdb_byte *
107d2387 4317read_comp_unit_head (struct comp_unit_head *cu_header,
d521ce57 4318 const gdb_byte *info_ptr, bfd *abfd)
107d2387
AC
4319{
4320 int signed_addr;
891d2f0b 4321 unsigned int bytes_read;
c764a876
DE
4322
4323 cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
4324 cu_header->initial_length_size = bytes_read;
4325 cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
613e1657 4326 info_ptr += bytes_read;
107d2387
AC
4327 cu_header->version = read_2_bytes (abfd, info_ptr);
4328 info_ptr += 2;
b64f50a1
JK
4329 cu_header->abbrev_offset.sect_off = read_offset (abfd, info_ptr, cu_header,
4330 &bytes_read);
613e1657 4331 info_ptr += bytes_read;
107d2387
AC
4332 cu_header->addr_size = read_1_byte (abfd, info_ptr);
4333 info_ptr += 1;
4334 signed_addr = bfd_get_sign_extend_vma (abfd);
4335 if (signed_addr < 0)
8e65ff28 4336 internal_error (__FILE__, __LINE__,
e2e0b3e5 4337 _("read_comp_unit_head: dwarf from non elf file"));
107d2387 4338 cu_header->signed_addr_p = signed_addr;
c764a876 4339
107d2387
AC
4340 return info_ptr;
4341}
4342
36586728
TT
4343/* Helper function that returns the proper abbrev section for
4344 THIS_CU. */
4345
4346static struct dwarf2_section_info *
4347get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
4348{
4349 struct dwarf2_section_info *abbrev;
4350
4351 if (this_cu->is_dwz)
4352 abbrev = &dwarf2_get_dwz_file ()->abbrev;
4353 else
4354 abbrev = &dwarf2_per_objfile->abbrev;
4355
4356 return abbrev;
4357}
4358
9ff913ba
DE
4359/* Subroutine of read_and_check_comp_unit_head and
4360 read_and_check_type_unit_head to simplify them.
4361 Perform various error checking on the header. */
4362
4363static void
4364error_check_comp_unit_head (struct comp_unit_head *header,
4bdcc0c1
DE
4365 struct dwarf2_section_info *section,
4366 struct dwarf2_section_info *abbrev_section)
9ff913ba 4367{
a32a8923
DE
4368 bfd *abfd = get_section_bfd_owner (section);
4369 const char *filename = get_section_file_name (section);
9ff913ba
DE
4370
4371 if (header->version != 2 && header->version != 3 && header->version != 4)
4372 error (_("Dwarf Error: wrong version in compilation unit header "
4373 "(is %d, should be 2, 3, or 4) [in module %s]"), header->version,
4374 filename);
4375
b64f50a1 4376 if (header->abbrev_offset.sect_off
36586728 4377 >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
9ff913ba
DE
4378 error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
4379 "(offset 0x%lx + 6) [in module %s]"),
b64f50a1 4380 (long) header->abbrev_offset.sect_off, (long) header->offset.sect_off,
9ff913ba
DE
4381 filename);
4382
4383 /* Cast to unsigned long to use 64-bit arithmetic when possible to
4384 avoid potential 32-bit overflow. */
1ce1cefd 4385 if (((unsigned long) header->offset.sect_off + get_cu_length (header))
9ff913ba
DE
4386 > section->size)
4387 error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
4388 "(offset 0x%lx + 0) [in module %s]"),
b64f50a1 4389 (long) header->length, (long) header->offset.sect_off,
9ff913ba
DE
4390 filename);
4391}
4392
4393/* Read in a CU/TU header and perform some basic error checking.
4394 The contents of the header are stored in HEADER.
4395 The result is a pointer to the start of the first DIE. */
adabb602 4396
d521ce57 4397static const gdb_byte *
9ff913ba
DE
4398read_and_check_comp_unit_head (struct comp_unit_head *header,
4399 struct dwarf2_section_info *section,
4bdcc0c1 4400 struct dwarf2_section_info *abbrev_section,
d521ce57 4401 const gdb_byte *info_ptr,
9ff913ba 4402 int is_debug_types_section)
72bf9492 4403{
d521ce57 4404 const gdb_byte *beg_of_comp_unit = info_ptr;
a32a8923 4405 bfd *abfd = get_section_bfd_owner (section);
72bf9492 4406
b64f50a1 4407 header->offset.sect_off = beg_of_comp_unit - section->buffer;
adabb602 4408
72bf9492
DJ
4409 info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4410
460c1c54
CC
4411 /* If we're reading a type unit, skip over the signature and
4412 type_offset fields. */
b0df02fd 4413 if (is_debug_types_section)
460c1c54
CC
4414 info_ptr += 8 /*signature*/ + header->offset_size;
4415
b64f50a1 4416 header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
adabb602 4417
4bdcc0c1 4418 error_check_comp_unit_head (header, section, abbrev_section);
72bf9492
DJ
4419
4420 return info_ptr;
4421}
4422
348e048f
DE
4423/* Read in the types comp unit header information from .debug_types entry at
4424 types_ptr. The result is a pointer to one past the end of the header. */
4425
d521ce57 4426static const gdb_byte *
9ff913ba
DE
4427read_and_check_type_unit_head (struct comp_unit_head *header,
4428 struct dwarf2_section_info *section,
4bdcc0c1 4429 struct dwarf2_section_info *abbrev_section,
d521ce57 4430 const gdb_byte *info_ptr,
dee91e82
DE
4431 ULONGEST *signature,
4432 cu_offset *type_offset_in_tu)
348e048f 4433{
d521ce57 4434 const gdb_byte *beg_of_comp_unit = info_ptr;
a32a8923 4435 bfd *abfd = get_section_bfd_owner (section);
348e048f 4436
b64f50a1 4437 header->offset.sect_off = beg_of_comp_unit - section->buffer;
348e048f 4438
9ff913ba 4439 info_ptr = read_comp_unit_head (header, info_ptr, abfd);
348e048f 4440
9ff913ba
DE
4441 /* If we're reading a type unit, skip over the signature and
4442 type_offset fields. */
4443 if (signature != NULL)
4444 *signature = read_8_bytes (abfd, info_ptr);
4445 info_ptr += 8;
dee91e82
DE
4446 if (type_offset_in_tu != NULL)
4447 type_offset_in_tu->cu_off = read_offset_1 (abfd, info_ptr,
4448 header->offset_size);
9ff913ba
DE
4449 info_ptr += header->offset_size;
4450
b64f50a1 4451 header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
348e048f 4452
4bdcc0c1 4453 error_check_comp_unit_head (header, section, abbrev_section);
9ff913ba
DE
4454
4455 return info_ptr;
348e048f
DE
4456}
4457
f4dc4d17
DE
4458/* Fetch the abbreviation table offset from a comp or type unit header. */
4459
4460static sect_offset
4461read_abbrev_offset (struct dwarf2_section_info *section,
4462 sect_offset offset)
4463{
a32a8923 4464 bfd *abfd = get_section_bfd_owner (section);
d521ce57 4465 const gdb_byte *info_ptr;
f4dc4d17
DE
4466 unsigned int length, initial_length_size, offset_size;
4467 sect_offset abbrev_offset;
4468
4469 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
4470 info_ptr = section->buffer + offset.sect_off;
4471 length = read_initial_length (abfd, info_ptr, &initial_length_size);
4472 offset_size = initial_length_size == 4 ? 4 : 8;
4473 info_ptr += initial_length_size + 2 /*version*/;
4474 abbrev_offset.sect_off = read_offset_1 (abfd, info_ptr, offset_size);
4475 return abbrev_offset;
4476}
4477
aaa75496
JB
4478/* Allocate a new partial symtab for file named NAME and mark this new
4479 partial symtab as being an include of PST. */
4480
4481static void
d521ce57 4482dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
aaa75496
JB
4483 struct objfile *objfile)
4484{
4485 struct partial_symtab *subpst = allocate_psymtab (name, objfile);
4486
fbd9ab74
JK
4487 if (!IS_ABSOLUTE_PATH (subpst->filename))
4488 {
4489 /* It shares objfile->objfile_obstack. */
4490 subpst->dirname = pst->dirname;
4491 }
4492
aaa75496
JB
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
18a94d75 5893 pst = start_psymtab_common (objfile, name, 0,
0018ea6f
DE
5894 objfile->global_psymbols.next,
5895 objfile->static_psymbols.next);
5896
5897 pst->psymtabs_addrmap_supported = 1;
5898
5899 /* This is the glue that links PST into GDB's symbol API. */
5900 pst->read_symtab_private = per_cu;
5901 pst->read_symtab = dwarf2_read_symtab;
5902 per_cu->v.psymtab = pst;
5903
5904 return pst;
5905}
5906
b93601f3
TT
5907/* The DATA object passed to process_psymtab_comp_unit_reader has this
5908 type. */
5909
5910struct process_psymtab_comp_unit_data
5911{
5912 /* True if we are reading a DW_TAG_partial_unit. */
5913
5914 int want_partial_unit;
5915
5916 /* The "pretend" language that is used if the CU doesn't declare a
5917 language. */
5918
5919 enum language pretend_language;
5920};
5921
0018ea6f
DE
5922/* die_reader_func for process_psymtab_comp_unit. */
5923
5924static void
5925process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 5926 const gdb_byte *info_ptr,
0018ea6f
DE
5927 struct die_info *comp_unit_die,
5928 int has_children,
5929 void *data)
5930{
5931 struct dwarf2_cu *cu = reader->cu;
5932 struct objfile *objfile = cu->objfile;
3e29f34a 5933 struct gdbarch *gdbarch = get_objfile_arch (objfile);
0018ea6f
DE
5934 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
5935 struct attribute *attr;
5936 CORE_ADDR baseaddr;
5937 CORE_ADDR best_lowpc = 0, best_highpc = 0;
5938 struct partial_symtab *pst;
5939 int has_pc_info;
5940 const char *filename;
b93601f3 5941 struct process_psymtab_comp_unit_data *info = data;
0018ea6f 5942
b93601f3 5943 if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
0018ea6f
DE
5944 return;
5945
5946 gdb_assert (! per_cu->is_debug_types);
5947
b93601f3 5948 prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
0018ea6f
DE
5949
5950 cu->list_in_scope = &file_symbols;
5951
5952 /* Allocate a new partial symbol table structure. */
5953 attr = dwarf2_attr (comp_unit_die, DW_AT_name, cu);
5954 if (attr == NULL || !DW_STRING (attr))
5955 filename = "";
5956 else
5957 filename = DW_STRING (attr);
5958
5959 pst = create_partial_symtab (per_cu, filename);
5960
5961 /* This must be done before calling dwarf2_build_include_psymtabs. */
5962 attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
5963 if (attr != NULL)
5964 pst->dirname = DW_STRING (attr);
5965
5966 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5967
5968 dwarf2_find_base_address (comp_unit_die, cu);
5969
5970 /* Possibly set the default values of LOWPC and HIGHPC from
5971 `DW_AT_ranges'. */
5972 has_pc_info = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
5973 &best_highpc, cu, pst);
5974 if (has_pc_info == 1 && best_lowpc < best_highpc)
5975 /* Store the contiguous range if it is not empty; it can be empty for
5976 CUs with no code. */
5977 addrmap_set_empty (objfile->psymtabs_addrmap,
3e29f34a
MR
5978 gdbarch_adjust_dwarf2_addr (gdbarch,
5979 best_lowpc + baseaddr),
5980 gdbarch_adjust_dwarf2_addr (gdbarch,
5981 best_highpc + baseaddr) - 1,
5982 pst);
0018ea6f
DE
5983
5984 /* Check if comp unit has_children.
5985 If so, read the rest of the partial symbols from this comp unit.
5986 If not, there's no more debug_info for this comp unit. */
5987 if (has_children)
5988 {
5989 struct partial_die_info *first_die;
5990 CORE_ADDR lowpc, highpc;
5991
5992 lowpc = ((CORE_ADDR) -1);
5993 highpc = ((CORE_ADDR) 0);
5994
5995 first_die = load_partial_dies (reader, info_ptr, 1);
5996
5997 scan_partial_symbols (first_die, &lowpc, &highpc,
5998 ! has_pc_info, cu);
5999
6000 /* If we didn't find a lowpc, set it to highpc to avoid
6001 complaints from `maint check'. */
6002 if (lowpc == ((CORE_ADDR) -1))
6003 lowpc = highpc;
6004
6005 /* If the compilation unit didn't have an explicit address range,
6006 then use the information extracted from its child dies. */
6007 if (! has_pc_info)
6008 {
6009 best_lowpc = lowpc;
6010 best_highpc = highpc;
6011 }
6012 }
3e29f34a
MR
6013 pst->textlow = gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr);
6014 pst->texthigh = gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr);
0018ea6f
DE
6015
6016 pst->n_global_syms = objfile->global_psymbols.next -
6017 (objfile->global_psymbols.list + pst->globals_offset);
6018 pst->n_static_syms = objfile->static_psymbols.next -
6019 (objfile->static_psymbols.list + pst->statics_offset);
6020 sort_pst_symbols (objfile, pst);
6021
6022 if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
6023 {
6024 int i;
6025 int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6026 struct dwarf2_per_cu_data *iter;
6027
6028 /* Fill in 'dependencies' here; we fill in 'users' in a
6029 post-pass. */
6030 pst->number_of_dependencies = len;
6031 pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
6032 len * sizeof (struct symtab *));
6033 for (i = 0;
6034 VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
6035 i, iter);
6036 ++i)
6037 pst->dependencies[i] = iter->v.psymtab;
6038
6039 VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6040 }
6041
6042 /* Get the list of files included in the current compilation unit,
6043 and build a psymtab for each of them. */
6044 dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
6045
b4f54984 6046 if (dwarf_read_debug)
0018ea6f
DE
6047 {
6048 struct gdbarch *gdbarch = get_objfile_arch (objfile);
6049
6050 fprintf_unfiltered (gdb_stdlog,
6051 "Psymtab for %s unit @0x%x: %s - %s"
6052 ", %d global, %d static syms\n",
6053 per_cu->is_debug_types ? "type" : "comp",
6054 per_cu->offset.sect_off,
6055 paddress (gdbarch, pst->textlow),
6056 paddress (gdbarch, pst->texthigh),
6057 pst->n_global_syms, pst->n_static_syms);
6058 }
6059}
6060
6061/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6062 Process compilation unit THIS_CU for a psymtab. */
6063
6064static void
6065process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
b93601f3
TT
6066 int want_partial_unit,
6067 enum language pretend_language)
0018ea6f 6068{
b93601f3
TT
6069 struct process_psymtab_comp_unit_data info;
6070
0018ea6f
DE
6071 /* If this compilation unit was already read in, free the
6072 cached copy in order to read it in again. This is
6073 necessary because we skipped some symbols when we first
6074 read in the compilation unit (see load_partial_dies).
6075 This problem could be avoided, but the benefit is unclear. */
6076 if (this_cu->cu != NULL)
6077 free_one_cached_comp_unit (this_cu);
6078
6079 gdb_assert (! this_cu->is_debug_types);
b93601f3
TT
6080 info.want_partial_unit = want_partial_unit;
6081 info.pretend_language = pretend_language;
0018ea6f
DE
6082 init_cutu_and_read_dies (this_cu, NULL, 0, 0,
6083 process_psymtab_comp_unit_reader,
b93601f3 6084 &info);
0018ea6f
DE
6085
6086 /* Age out any secondary CUs. */
6087 age_cached_comp_units ();
6088}
f4dc4d17
DE
6089
6090/* Reader function for build_type_psymtabs. */
6091
6092static void
6093build_type_psymtabs_reader (const struct die_reader_specs *reader,
d521ce57 6094 const gdb_byte *info_ptr,
f4dc4d17
DE
6095 struct die_info *type_unit_die,
6096 int has_children,
6097 void *data)
6098{
6099 struct objfile *objfile = dwarf2_per_objfile->objfile;
6100 struct dwarf2_cu *cu = reader->cu;
6101 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
0186c6a7 6102 struct signatured_type *sig_type;
f4dc4d17
DE
6103 struct type_unit_group *tu_group;
6104 struct attribute *attr;
6105 struct partial_die_info *first_die;
6106 CORE_ADDR lowpc, highpc;
6107 struct partial_symtab *pst;
6108
6109 gdb_assert (data == NULL);
0186c6a7
DE
6110 gdb_assert (per_cu->is_debug_types);
6111 sig_type = (struct signatured_type *) per_cu;
f4dc4d17
DE
6112
6113 if (! has_children)
6114 return;
6115
6116 attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
094b34ac 6117 tu_group = get_type_unit_group (cu, attr);
f4dc4d17 6118
0186c6a7 6119 VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
f4dc4d17
DE
6120
6121 prepare_one_comp_unit (cu, type_unit_die, language_minimal);
6122 cu->list_in_scope = &file_symbols;
6123 pst = create_partial_symtab (per_cu, "");
6124 pst->anonymous = 1;
6125
6126 first_die = load_partial_dies (reader, info_ptr, 1);
6127
6128 lowpc = (CORE_ADDR) -1;
6129 highpc = (CORE_ADDR) 0;
6130 scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
6131
6132 pst->n_global_syms = objfile->global_psymbols.next -
6133 (objfile->global_psymbols.list + pst->globals_offset);
6134 pst->n_static_syms = objfile->static_psymbols.next -
6135 (objfile->static_psymbols.list + pst->statics_offset);
5c80ed9d 6136 sort_pst_symbols (objfile, pst);
f4dc4d17
DE
6137}
6138
73051182
DE
6139/* Struct used to sort TUs by their abbreviation table offset. */
6140
6141struct tu_abbrev_offset
6142{
6143 struct signatured_type *sig_type;
6144 sect_offset abbrev_offset;
6145};
6146
6147/* Helper routine for build_type_psymtabs_1, passed to qsort. */
6148
6149static int
6150sort_tu_by_abbrev_offset (const void *ap, const void *bp)
6151{
6152 const struct tu_abbrev_offset * const *a = ap;
6153 const struct tu_abbrev_offset * const *b = bp;
6154 unsigned int aoff = (*a)->abbrev_offset.sect_off;
6155 unsigned int boff = (*b)->abbrev_offset.sect_off;
6156
6157 return (aoff > boff) - (aoff < boff);
6158}
6159
6160/* Efficiently read all the type units.
6161 This does the bulk of the work for build_type_psymtabs.
6162
6163 The efficiency is because we sort TUs by the abbrev table they use and
6164 only read each abbrev table once. In one program there are 200K TUs
6165 sharing 8K abbrev tables.
6166
6167 The main purpose of this function is to support building the
6168 dwarf2_per_objfile->type_unit_groups table.
6169 TUs typically share the DW_AT_stmt_list of the CU they came from, so we
6170 can collapse the search space by grouping them by stmt_list.
6171 The savings can be significant, in the same program from above the 200K TUs
6172 share 8K stmt_list tables.
6173
6174 FUNC is expected to call get_type_unit_group, which will create the
6175 struct type_unit_group if necessary and add it to
6176 dwarf2_per_objfile->type_unit_groups. */
6177
6178static void
6179build_type_psymtabs_1 (void)
6180{
6181 struct objfile *objfile = dwarf2_per_objfile->objfile;
6182 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6183 struct cleanup *cleanups;
6184 struct abbrev_table *abbrev_table;
6185 sect_offset abbrev_offset;
6186 struct tu_abbrev_offset *sorted_by_abbrev;
6187 struct type_unit_group **iter;
6188 int i;
6189
6190 /* It's up to the caller to not call us multiple times. */
6191 gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
6192
6193 if (dwarf2_per_objfile->n_type_units == 0)
6194 return;
6195
6196 /* TUs typically share abbrev tables, and there can be way more TUs than
6197 abbrev tables. Sort by abbrev table to reduce the number of times we
6198 read each abbrev table in.
6199 Alternatives are to punt or to maintain a cache of abbrev tables.
6200 This is simpler and efficient enough for now.
6201
6202 Later we group TUs by their DW_AT_stmt_list value (as this defines the
6203 symtab to use). Typically TUs with the same abbrev offset have the same
6204 stmt_list value too so in practice this should work well.
6205
6206 The basic algorithm here is:
6207
6208 sort TUs by abbrev table
6209 for each TU with same abbrev table:
6210 read abbrev table if first user
6211 read TU top level DIE
6212 [IWBN if DWO skeletons had DW_AT_stmt_list]
6213 call FUNC */
6214
b4f54984 6215 if (dwarf_read_debug)
73051182
DE
6216 fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
6217
6218 /* Sort in a separate table to maintain the order of all_type_units
6219 for .gdb_index: TU indices directly index all_type_units. */
6220 sorted_by_abbrev = XNEWVEC (struct tu_abbrev_offset,
6221 dwarf2_per_objfile->n_type_units);
6222 for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6223 {
6224 struct signatured_type *sig_type = dwarf2_per_objfile->all_type_units[i];
6225
6226 sorted_by_abbrev[i].sig_type = sig_type;
6227 sorted_by_abbrev[i].abbrev_offset =
6228 read_abbrev_offset (sig_type->per_cu.section,
6229 sig_type->per_cu.offset);
6230 }
6231 cleanups = make_cleanup (xfree, sorted_by_abbrev);
6232 qsort (sorted_by_abbrev, dwarf2_per_objfile->n_type_units,
6233 sizeof (struct tu_abbrev_offset), sort_tu_by_abbrev_offset);
6234
6235 abbrev_offset.sect_off = ~(unsigned) 0;
6236 abbrev_table = NULL;
6237 make_cleanup (abbrev_table_free_cleanup, &abbrev_table);
6238
6239 for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6240 {
6241 const struct tu_abbrev_offset *tu = &sorted_by_abbrev[i];
6242
6243 /* Switch to the next abbrev table if necessary. */
6244 if (abbrev_table == NULL
6245 || tu->abbrev_offset.sect_off != abbrev_offset.sect_off)
6246 {
6247 if (abbrev_table != NULL)
6248 {
6249 abbrev_table_free (abbrev_table);
6250 /* Reset to NULL in case abbrev_table_read_table throws
6251 an error: abbrev_table_free_cleanup will get called. */
6252 abbrev_table = NULL;
6253 }
6254 abbrev_offset = tu->abbrev_offset;
6255 abbrev_table =
6256 abbrev_table_read_table (&dwarf2_per_objfile->abbrev,
6257 abbrev_offset);
6258 ++tu_stats->nr_uniq_abbrev_tables;
6259 }
6260
6261 init_cutu_and_read_dies (&tu->sig_type->per_cu, abbrev_table, 0, 0,
6262 build_type_psymtabs_reader, NULL);
6263 }
6264
73051182 6265 do_cleanups (cleanups);
6aa5f3a6 6266}
73051182 6267
6aa5f3a6
DE
6268/* Print collected type unit statistics. */
6269
6270static void
6271print_tu_stats (void)
6272{
6273 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6274
6275 fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
6276 fprintf_unfiltered (gdb_stdlog, " %d TUs\n",
6277 dwarf2_per_objfile->n_type_units);
6278 fprintf_unfiltered (gdb_stdlog, " %d uniq abbrev tables\n",
6279 tu_stats->nr_uniq_abbrev_tables);
6280 fprintf_unfiltered (gdb_stdlog, " %d symtabs from stmt_list entries\n",
6281 tu_stats->nr_symtabs);
6282 fprintf_unfiltered (gdb_stdlog, " %d symtab sharers\n",
6283 tu_stats->nr_symtab_sharers);
6284 fprintf_unfiltered (gdb_stdlog, " %d type units without a stmt_list\n",
6285 tu_stats->nr_stmt_less_type_units);
6286 fprintf_unfiltered (gdb_stdlog, " %d all_type_units reallocs\n",
6287 tu_stats->nr_all_type_units_reallocs);
73051182
DE
6288}
6289
f4dc4d17
DE
6290/* Traversal function for build_type_psymtabs. */
6291
6292static int
6293build_type_psymtab_dependencies (void **slot, void *info)
6294{
6295 struct objfile *objfile = dwarf2_per_objfile->objfile;
6296 struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
094b34ac 6297 struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
f4dc4d17 6298 struct partial_symtab *pst = per_cu->v.psymtab;
0186c6a7
DE
6299 int len = VEC_length (sig_type_ptr, tu_group->tus);
6300 struct signatured_type *iter;
f4dc4d17
DE
6301 int i;
6302
6303 gdb_assert (len > 0);
0186c6a7 6304 gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
f4dc4d17
DE
6305
6306 pst->number_of_dependencies = len;
6307 pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
6308 len * sizeof (struct psymtab *));
6309 for (i = 0;
0186c6a7 6310 VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
f4dc4d17
DE
6311 ++i)
6312 {
0186c6a7
DE
6313 gdb_assert (iter->per_cu.is_debug_types);
6314 pst->dependencies[i] = iter->per_cu.v.psymtab;
796a7ff8 6315 iter->type_unit_group = tu_group;
f4dc4d17
DE
6316 }
6317
0186c6a7 6318 VEC_free (sig_type_ptr, tu_group->tus);
348e048f
DE
6319
6320 return 1;
6321}
6322
6323/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6324 Build partial symbol tables for the .debug_types comp-units. */
6325
6326static void
6327build_type_psymtabs (struct objfile *objfile)
6328{
0e50663e 6329 if (! create_all_type_units (objfile))
348e048f
DE
6330 return;
6331
73051182 6332 build_type_psymtabs_1 ();
6aa5f3a6 6333}
f4dc4d17 6334
6aa5f3a6
DE
6335/* Traversal function for process_skeletonless_type_unit.
6336 Read a TU in a DWO file and build partial symbols for it. */
6337
6338static int
6339process_skeletonless_type_unit (void **slot, void *info)
6340{
6341 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
6342 struct objfile *objfile = info;
6343 struct signatured_type find_entry, *entry;
6344
6345 /* If this TU doesn't exist in the global table, add it and read it in. */
6346
6347 if (dwarf2_per_objfile->signatured_types == NULL)
6348 {
6349 dwarf2_per_objfile->signatured_types
6350 = allocate_signatured_type_table (objfile);
6351 }
6352
6353 find_entry.signature = dwo_unit->signature;
6354 slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
6355 INSERT);
6356 /* If we've already seen this type there's nothing to do. What's happening
6357 is we're doing our own version of comdat-folding here. */
6358 if (*slot != NULL)
6359 return 1;
6360
6361 /* This does the job that create_all_type_units would have done for
6362 this TU. */
6363 entry = add_type_unit (dwo_unit->signature, slot);
6364 fill_in_sig_entry_from_dwo_entry (objfile, entry, dwo_unit);
6365 *slot = entry;
6366
6367 /* This does the job that build_type_psymtabs_1 would have done. */
6368 init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0,
6369 build_type_psymtabs_reader, NULL);
6370
6371 return 1;
6372}
6373
6374/* Traversal function for process_skeletonless_type_units. */
6375
6376static int
6377process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
6378{
6379 struct dwo_file *dwo_file = (struct dwo_file *) *slot;
6380
6381 if (dwo_file->tus != NULL)
6382 {
6383 htab_traverse_noresize (dwo_file->tus,
6384 process_skeletonless_type_unit, info);
6385 }
6386
6387 return 1;
6388}
6389
6390/* Scan all TUs of DWO files, verifying we've processed them.
6391 This is needed in case a TU was emitted without its skeleton.
6392 Note: This can't be done until we know what all the DWO files are. */
6393
6394static void
6395process_skeletonless_type_units (struct objfile *objfile)
6396{
6397 /* Skeletonless TUs in DWP files without .gdb_index is not supported yet. */
6398 if (get_dwp_file () == NULL
6399 && dwarf2_per_objfile->dwo_files != NULL)
6400 {
6401 htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
6402 process_dwo_file_for_skeletonless_type_units,
6403 objfile);
6404 }
348e048f
DE
6405}
6406
60606b2c
TT
6407/* A cleanup function that clears objfile's psymtabs_addrmap field. */
6408
6409static void
6410psymtabs_addrmap_cleanup (void *o)
6411{
6412 struct objfile *objfile = o;
ec61707d 6413
60606b2c
TT
6414 objfile->psymtabs_addrmap = NULL;
6415}
6416
95554aad
TT
6417/* Compute the 'user' field for each psymtab in OBJFILE. */
6418
6419static void
6420set_partial_user (struct objfile *objfile)
6421{
6422 int i;
6423
6424 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6425 {
8832e7e3 6426 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
95554aad
TT
6427 struct partial_symtab *pst = per_cu->v.psymtab;
6428 int j;
6429
36586728
TT
6430 if (pst == NULL)
6431 continue;
6432
95554aad
TT
6433 for (j = 0; j < pst->number_of_dependencies; ++j)
6434 {
6435 /* Set the 'user' field only if it is not already set. */
6436 if (pst->dependencies[j]->user == NULL)
6437 pst->dependencies[j]->user = pst;
6438 }
6439 }
6440}
6441
93311388
DE
6442/* Build the partial symbol table by doing a quick pass through the
6443 .debug_info and .debug_abbrev sections. */
72bf9492 6444
93311388 6445static void
c67a9c90 6446dwarf2_build_psymtabs_hard (struct objfile *objfile)
93311388 6447{
60606b2c
TT
6448 struct cleanup *back_to, *addrmap_cleanup;
6449 struct obstack temp_obstack;
21b2bd31 6450 int i;
93311388 6451
b4f54984 6452 if (dwarf_read_debug)
45cfd468
DE
6453 {
6454 fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
4262abfb 6455 objfile_name (objfile));
45cfd468
DE
6456 }
6457
98bfdba5
PA
6458 dwarf2_per_objfile->reading_partial_symbols = 1;
6459
be391dca 6460 dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
91c24f0a 6461
93311388
DE
6462 /* Any cached compilation units will be linked by the per-objfile
6463 read_in_chain. Make sure to free them when we're done. */
6464 back_to = make_cleanup (free_cached_comp_units, NULL);
72bf9492 6465
348e048f
DE
6466 build_type_psymtabs (objfile);
6467
93311388 6468 create_all_comp_units (objfile);
c906108c 6469
60606b2c
TT
6470 /* Create a temporary address map on a temporary obstack. We later
6471 copy this to the final obstack. */
6472 obstack_init (&temp_obstack);
6473 make_cleanup_obstack_free (&temp_obstack);
6474 objfile->psymtabs_addrmap = addrmap_create_mutable (&temp_obstack);
6475 addrmap_cleanup = make_cleanup (psymtabs_addrmap_cleanup, objfile);
72bf9492 6476
21b2bd31 6477 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
93311388 6478 {
8832e7e3 6479 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
aaa75496 6480
b93601f3 6481 process_psymtab_comp_unit (per_cu, 0, language_minimal);
c906108c 6482 }
ff013f42 6483
6aa5f3a6
DE
6484 /* This has to wait until we read the CUs, we need the list of DWOs. */
6485 process_skeletonless_type_units (objfile);
6486
6487 /* Now that all TUs have been processed we can fill in the dependencies. */
6488 if (dwarf2_per_objfile->type_unit_groups != NULL)
6489 {
6490 htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
6491 build_type_psymtab_dependencies, NULL);
6492 }
6493
b4f54984 6494 if (dwarf_read_debug)
6aa5f3a6
DE
6495 print_tu_stats ();
6496
95554aad
TT
6497 set_partial_user (objfile);
6498
ff013f42
JK
6499 objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
6500 &objfile->objfile_obstack);
60606b2c 6501 discard_cleanups (addrmap_cleanup);
ff013f42 6502
ae038cb0 6503 do_cleanups (back_to);
45cfd468 6504
b4f54984 6505 if (dwarf_read_debug)
45cfd468 6506 fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
4262abfb 6507 objfile_name (objfile));
ae038cb0
DJ
6508}
6509
3019eac3 6510/* die_reader_func for load_partial_comp_unit. */
ae038cb0
DJ
6511
6512static void
dee91e82 6513load_partial_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 6514 const gdb_byte *info_ptr,
dee91e82
DE
6515 struct die_info *comp_unit_die,
6516 int has_children,
6517 void *data)
ae038cb0 6518{
dee91e82 6519 struct dwarf2_cu *cu = reader->cu;
ae038cb0 6520
95554aad 6521 prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
ae038cb0 6522
ae038cb0
DJ
6523 /* Check if comp unit has_children.
6524 If so, read the rest of the partial symbols from this comp unit.
0963b4bd 6525 If not, there's no more debug_info for this comp unit. */
d85a05f0 6526 if (has_children)
dee91e82
DE
6527 load_partial_dies (reader, info_ptr, 0);
6528}
98bfdba5 6529
dee91e82
DE
6530/* Load the partial DIEs for a secondary CU into memory.
6531 This is also used when rereading a primary CU with load_all_dies. */
c5b7e1cb 6532
dee91e82
DE
6533static void
6534load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
6535{
f4dc4d17
DE
6536 init_cutu_and_read_dies (this_cu, NULL, 1, 1,
6537 load_partial_comp_unit_reader, NULL);
ae038cb0
DJ
6538}
6539
ae038cb0 6540static void
36586728
TT
6541read_comp_units_from_section (struct objfile *objfile,
6542 struct dwarf2_section_info *section,
6543 unsigned int is_dwz,
6544 int *n_allocated,
6545 int *n_comp_units,
6546 struct dwarf2_per_cu_data ***all_comp_units)
ae038cb0 6547{
d521ce57 6548 const gdb_byte *info_ptr;
a32a8923 6549 bfd *abfd = get_section_bfd_owner (section);
be391dca 6550
b4f54984 6551 if (dwarf_read_debug)
bf6af496 6552 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
a32a8923
DE
6553 get_section_name (section),
6554 get_section_file_name (section));
bf6af496 6555
36586728 6556 dwarf2_read_section (objfile, section);
ae038cb0 6557
36586728 6558 info_ptr = section->buffer;
6e70227d 6559
36586728 6560 while (info_ptr < section->buffer + section->size)
ae038cb0 6561 {
c764a876 6562 unsigned int length, initial_length_size;
ae038cb0 6563 struct dwarf2_per_cu_data *this_cu;
b64f50a1 6564 sect_offset offset;
ae038cb0 6565
36586728 6566 offset.sect_off = info_ptr - section->buffer;
ae038cb0
DJ
6567
6568 /* Read just enough information to find out where the next
6569 compilation unit is. */
36586728 6570 length = read_initial_length (abfd, info_ptr, &initial_length_size);
ae038cb0
DJ
6571
6572 /* Save the compilation unit for later lookup. */
6573 this_cu = obstack_alloc (&objfile->objfile_obstack,
6574 sizeof (struct dwarf2_per_cu_data));
6575 memset (this_cu, 0, sizeof (*this_cu));
6576 this_cu->offset = offset;
c764a876 6577 this_cu->length = length + initial_length_size;
36586728 6578 this_cu->is_dwz = is_dwz;
9291a0cd 6579 this_cu->objfile = objfile;
8a0459fd 6580 this_cu->section = section;
ae038cb0 6581
36586728 6582 if (*n_comp_units == *n_allocated)
ae038cb0 6583 {
36586728
TT
6584 *n_allocated *= 2;
6585 *all_comp_units = xrealloc (*all_comp_units,
6586 *n_allocated
6587 * sizeof (struct dwarf2_per_cu_data *));
ae038cb0 6588 }
36586728
TT
6589 (*all_comp_units)[*n_comp_units] = this_cu;
6590 ++*n_comp_units;
ae038cb0
DJ
6591
6592 info_ptr = info_ptr + this_cu->length;
6593 }
36586728
TT
6594}
6595
6596/* Create a list of all compilation units in OBJFILE.
6597 This is only done for -readnow and building partial symtabs. */
6598
6599static void
6600create_all_comp_units (struct objfile *objfile)
6601{
6602 int n_allocated;
6603 int n_comp_units;
6604 struct dwarf2_per_cu_data **all_comp_units;
4db1a1dc 6605 struct dwz_file *dwz;
36586728
TT
6606
6607 n_comp_units = 0;
6608 n_allocated = 10;
6609 all_comp_units = xmalloc (n_allocated
6610 * sizeof (struct dwarf2_per_cu_data *));
6611
6612 read_comp_units_from_section (objfile, &dwarf2_per_objfile->info, 0,
6613 &n_allocated, &n_comp_units, &all_comp_units);
6614
4db1a1dc
TT
6615 dwz = dwarf2_get_dwz_file ();
6616 if (dwz != NULL)
6617 read_comp_units_from_section (objfile, &dwz->info, 1,
6618 &n_allocated, &n_comp_units,
6619 &all_comp_units);
ae038cb0
DJ
6620
6621 dwarf2_per_objfile->all_comp_units
6622 = obstack_alloc (&objfile->objfile_obstack,
6623 n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6624 memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
6625 n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6626 xfree (all_comp_units);
6627 dwarf2_per_objfile->n_comp_units = n_comp_units;
c906108c
SS
6628}
6629
5734ee8b 6630/* Process all loaded DIEs for compilation unit CU, starting at
cdc07690 6631 FIRST_DIE. The caller should pass SET_ADDRMAP == 1 if the compilation
5734ee8b 6632 unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
cdc07690
YQ
6633 DW_AT_ranges). See the comments of add_partial_subprogram on how
6634 SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated. */
c906108c 6635
72bf9492
DJ
6636static void
6637scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
cdc07690
YQ
6638 CORE_ADDR *highpc, int set_addrmap,
6639 struct dwarf2_cu *cu)
c906108c 6640{
72bf9492 6641 struct partial_die_info *pdi;
c906108c 6642
91c24f0a
DC
6643 /* Now, march along the PDI's, descending into ones which have
6644 interesting children but skipping the children of the other ones,
6645 until we reach the end of the compilation unit. */
c906108c 6646
72bf9492 6647 pdi = first_die;
91c24f0a 6648
72bf9492
DJ
6649 while (pdi != NULL)
6650 {
6651 fixup_partial_die (pdi, cu);
c906108c 6652
f55ee35c 6653 /* Anonymous namespaces or modules have no name but have interesting
91c24f0a
DC
6654 children, so we need to look at them. Ditto for anonymous
6655 enums. */
933c6fe4 6656
72bf9492 6657 if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
95554aad
TT
6658 || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
6659 || pdi->tag == DW_TAG_imported_unit)
c906108c 6660 {
72bf9492 6661 switch (pdi->tag)
c906108c
SS
6662 {
6663 case DW_TAG_subprogram:
cdc07690 6664 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
c906108c 6665 break;
72929c62 6666 case DW_TAG_constant:
c906108c
SS
6667 case DW_TAG_variable:
6668 case DW_TAG_typedef:
91c24f0a 6669 case DW_TAG_union_type:
72bf9492 6670 if (!pdi->is_declaration)
63d06c5c 6671 {
72bf9492 6672 add_partial_symbol (pdi, cu);
63d06c5c
DC
6673 }
6674 break;
c906108c 6675 case DW_TAG_class_type:
680b30c7 6676 case DW_TAG_interface_type:
c906108c 6677 case DW_TAG_structure_type:
72bf9492 6678 if (!pdi->is_declaration)
c906108c 6679 {
72bf9492 6680 add_partial_symbol (pdi, cu);
c906108c
SS
6681 }
6682 break;
91c24f0a 6683 case DW_TAG_enumeration_type:
72bf9492
DJ
6684 if (!pdi->is_declaration)
6685 add_partial_enumeration (pdi, cu);
c906108c
SS
6686 break;
6687 case DW_TAG_base_type:
a02abb62 6688 case DW_TAG_subrange_type:
c906108c 6689 /* File scope base type definitions are added to the partial
c5aa993b 6690 symbol table. */
72bf9492 6691 add_partial_symbol (pdi, cu);
c906108c 6692 break;
d9fa45fe 6693 case DW_TAG_namespace:
cdc07690 6694 add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
91c24f0a 6695 break;
5d7cb8df 6696 case DW_TAG_module:
cdc07690 6697 add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
5d7cb8df 6698 break;
95554aad
TT
6699 case DW_TAG_imported_unit:
6700 {
6701 struct dwarf2_per_cu_data *per_cu;
6702
f4dc4d17
DE
6703 /* For now we don't handle imported units in type units. */
6704 if (cu->per_cu->is_debug_types)
6705 {
6706 error (_("Dwarf Error: DW_TAG_imported_unit is not"
6707 " supported in type units [in module %s]"),
4262abfb 6708 objfile_name (cu->objfile));
f4dc4d17
DE
6709 }
6710
95554aad 6711 per_cu = dwarf2_find_containing_comp_unit (pdi->d.offset,
36586728 6712 pdi->is_dwz,
95554aad
TT
6713 cu->objfile);
6714
6715 /* Go read the partial unit, if needed. */
6716 if (per_cu->v.psymtab == NULL)
b93601f3 6717 process_psymtab_comp_unit (per_cu, 1, cu->language);
95554aad 6718
f4dc4d17 6719 VEC_safe_push (dwarf2_per_cu_ptr,
796a7ff8 6720 cu->per_cu->imported_symtabs, per_cu);
95554aad
TT
6721 }
6722 break;
74921315
KS
6723 case DW_TAG_imported_declaration:
6724 add_partial_symbol (pdi, cu);
6725 break;
c906108c
SS
6726 default:
6727 break;
6728 }
6729 }
6730
72bf9492
DJ
6731 /* If the die has a sibling, skip to the sibling. */
6732
6733 pdi = pdi->die_sibling;
6734 }
6735}
6736
6737/* Functions used to compute the fully scoped name of a partial DIE.
91c24f0a 6738
72bf9492 6739 Normally, this is simple. For C++, the parent DIE's fully scoped
987504bb
JJ
6740 name is concatenated with "::" and the partial DIE's name. For
6741 Java, the same thing occurs except that "." is used instead of "::".
72bf9492
DJ
6742 Enumerators are an exception; they use the scope of their parent
6743 enumeration type, i.e. the name of the enumeration type is not
6744 prepended to the enumerator.
91c24f0a 6745
72bf9492
DJ
6746 There are two complexities. One is DW_AT_specification; in this
6747 case "parent" means the parent of the target of the specification,
6748 instead of the direct parent of the DIE. The other is compilers
6749 which do not emit DW_TAG_namespace; in this case we try to guess
6750 the fully qualified name of structure types from their members'
6751 linkage names. This must be done using the DIE's children rather
6752 than the children of any DW_AT_specification target. We only need
6753 to do this for structures at the top level, i.e. if the target of
6754 any DW_AT_specification (if any; otherwise the DIE itself) does not
6755 have a parent. */
6756
6757/* Compute the scope prefix associated with PDI's parent, in
6758 compilation unit CU. The result will be allocated on CU's
6759 comp_unit_obstack, or a copy of the already allocated PDI->NAME
6760 field. NULL is returned if no prefix is necessary. */
15d034d0 6761static const char *
72bf9492
DJ
6762partial_die_parent_scope (struct partial_die_info *pdi,
6763 struct dwarf2_cu *cu)
6764{
15d034d0 6765 const char *grandparent_scope;
72bf9492 6766 struct partial_die_info *parent, *real_pdi;
91c24f0a 6767
72bf9492
DJ
6768 /* We need to look at our parent DIE; if we have a DW_AT_specification,
6769 then this means the parent of the specification DIE. */
6770
6771 real_pdi = pdi;
72bf9492 6772 while (real_pdi->has_specification)
36586728
TT
6773 real_pdi = find_partial_die (real_pdi->spec_offset,
6774 real_pdi->spec_is_dwz, cu);
72bf9492
DJ
6775
6776 parent = real_pdi->die_parent;
6777 if (parent == NULL)
6778 return NULL;
6779
6780 if (parent->scope_set)
6781 return parent->scope;
6782
6783 fixup_partial_die (parent, cu);
6784
10b3939b 6785 grandparent_scope = partial_die_parent_scope (parent, cu);
72bf9492 6786
acebe513
UW
6787 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
6788 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
6789 Work around this problem here. */
6790 if (cu->language == language_cplus
6e70227d 6791 && parent->tag == DW_TAG_namespace
acebe513
UW
6792 && strcmp (parent->name, "::") == 0
6793 && grandparent_scope == NULL)
6794 {
6795 parent->scope = NULL;
6796 parent->scope_set = 1;
6797 return NULL;
6798 }
6799
9c6c53f7
SA
6800 if (pdi->tag == DW_TAG_enumerator)
6801 /* Enumerators should not get the name of the enumeration as a prefix. */
6802 parent->scope = grandparent_scope;
6803 else if (parent->tag == DW_TAG_namespace
f55ee35c 6804 || parent->tag == DW_TAG_module
72bf9492
DJ
6805 || parent->tag == DW_TAG_structure_type
6806 || parent->tag == DW_TAG_class_type
680b30c7 6807 || parent->tag == DW_TAG_interface_type
ceeb3d5a
TT
6808 || parent->tag == DW_TAG_union_type
6809 || parent->tag == DW_TAG_enumeration_type)
72bf9492
DJ
6810 {
6811 if (grandparent_scope == NULL)
6812 parent->scope = parent->name;
6813 else
3e43a32a
MS
6814 parent->scope = typename_concat (&cu->comp_unit_obstack,
6815 grandparent_scope,
f55ee35c 6816 parent->name, 0, cu);
72bf9492 6817 }
72bf9492
DJ
6818 else
6819 {
6820 /* FIXME drow/2004-04-01: What should we be doing with
6821 function-local names? For partial symbols, we should probably be
6822 ignoring them. */
6823 complaint (&symfile_complaints,
e2e0b3e5 6824 _("unhandled containing DIE tag %d for DIE at %d"),
b64f50a1 6825 parent->tag, pdi->offset.sect_off);
72bf9492 6826 parent->scope = grandparent_scope;
c906108c
SS
6827 }
6828
72bf9492
DJ
6829 parent->scope_set = 1;
6830 return parent->scope;
6831}
6832
6833/* Return the fully scoped name associated with PDI, from compilation unit
6834 CU. The result will be allocated with malloc. */
4568ecf9 6835
72bf9492
DJ
6836static char *
6837partial_die_full_name (struct partial_die_info *pdi,
6838 struct dwarf2_cu *cu)
6839{
15d034d0 6840 const char *parent_scope;
72bf9492 6841
98bfdba5
PA
6842 /* If this is a template instantiation, we can not work out the
6843 template arguments from partial DIEs. So, unfortunately, we have
6844 to go through the full DIEs. At least any work we do building
6845 types here will be reused if full symbols are loaded later. */
6846 if (pdi->has_template_arguments)
6847 {
6848 fixup_partial_die (pdi, cu);
6849
6850 if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
6851 {
6852 struct die_info *die;
6853 struct attribute attr;
6854 struct dwarf2_cu *ref_cu = cu;
6855
b64f50a1 6856 /* DW_FORM_ref_addr is using section offset. */
98bfdba5
PA
6857 attr.name = 0;
6858 attr.form = DW_FORM_ref_addr;
4568ecf9 6859 attr.u.unsnd = pdi->offset.sect_off;
98bfdba5
PA
6860 die = follow_die_ref (NULL, &attr, &ref_cu);
6861
6862 return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
6863 }
6864 }
6865
72bf9492
DJ
6866 parent_scope = partial_die_parent_scope (pdi, cu);
6867 if (parent_scope == NULL)
6868 return NULL;
6869 else
f55ee35c 6870 return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
c906108c
SS
6871}
6872
6873static void
72bf9492 6874add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
c906108c 6875{
e7c27a73 6876 struct objfile *objfile = cu->objfile;
3e29f34a 6877 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c 6878 CORE_ADDR addr = 0;
15d034d0 6879 const char *actual_name = NULL;
e142c38c 6880 CORE_ADDR baseaddr;
15d034d0 6881 char *built_actual_name;
e142c38c
DJ
6882
6883 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 6884
15d034d0
TT
6885 built_actual_name = partial_die_full_name (pdi, cu);
6886 if (built_actual_name != NULL)
6887 actual_name = built_actual_name;
63d06c5c 6888
72bf9492
DJ
6889 if (actual_name == NULL)
6890 actual_name = pdi->name;
6891
c906108c
SS
6892 switch (pdi->tag)
6893 {
6894 case DW_TAG_subprogram:
3e29f34a 6895 addr = gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr);
2cfa0c8d 6896 if (pdi->is_external || cu->language == language_ada)
c906108c 6897 {
2cfa0c8d
JB
6898 /* brobecker/2007-12-26: Normally, only "external" DIEs are part
6899 of the global scope. But in Ada, we want to be able to access
6900 nested procedures globally. So all Ada subprograms are stored
6901 in the global scope. */
3e29f34a
MR
6902 /* prim_record_minimal_symbol (actual_name, addr, mst_text,
6903 objfile); */
f47fb265 6904 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6905 built_actual_name != NULL,
f47fb265
MS
6906 VAR_DOMAIN, LOC_BLOCK,
6907 &objfile->global_psymbols,
3e29f34a 6908 0, addr, cu->language, objfile);
c906108c
SS
6909 }
6910 else
6911 {
3e29f34a
MR
6912 /* prim_record_minimal_symbol (actual_name, addr, mst_file_text,
6913 objfile); */
f47fb265 6914 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6915 built_actual_name != NULL,
f47fb265
MS
6916 VAR_DOMAIN, LOC_BLOCK,
6917 &objfile->static_psymbols,
3e29f34a 6918 0, addr, cu->language, objfile);
c906108c
SS
6919 }
6920 break;
72929c62
JB
6921 case DW_TAG_constant:
6922 {
6923 struct psymbol_allocation_list *list;
6924
6925 if (pdi->is_external)
6926 list = &objfile->global_psymbols;
6927 else
6928 list = &objfile->static_psymbols;
f47fb265 6929 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6930 built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
f47fb265 6931 list, 0, 0, cu->language, objfile);
72929c62
JB
6932 }
6933 break;
c906108c 6934 case DW_TAG_variable:
95554aad
TT
6935 if (pdi->d.locdesc)
6936 addr = decode_locdesc (pdi->d.locdesc, cu);
caac4577 6937
95554aad 6938 if (pdi->d.locdesc
caac4577
JG
6939 && addr == 0
6940 && !dwarf2_per_objfile->has_section_at_zero)
6941 {
6942 /* A global or static variable may also have been stripped
6943 out by the linker if unused, in which case its address
6944 will be nullified; do not add such variables into partial
6945 symbol table then. */
6946 }
6947 else if (pdi->is_external)
c906108c
SS
6948 {
6949 /* Global Variable.
6950 Don't enter into the minimal symbol tables as there is
6951 a minimal symbol table entry from the ELF symbols already.
6952 Enter into partial symbol table if it has a location
6953 descriptor or a type.
6954 If the location descriptor is missing, new_symbol will create
6955 a LOC_UNRESOLVED symbol, the address of the variable will then
6956 be determined from the minimal symbol table whenever the variable
6957 is referenced.
6958 The address for the partial symbol table entry is not
6959 used by GDB, but it comes in handy for debugging partial symbol
6960 table building. */
6961
95554aad 6962 if (pdi->d.locdesc || pdi->has_type)
f47fb265 6963 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6964 built_actual_name != NULL,
f47fb265
MS
6965 VAR_DOMAIN, LOC_STATIC,
6966 &objfile->global_psymbols,
6967 0, addr + baseaddr,
6968 cu->language, objfile);
c906108c
SS
6969 }
6970 else
6971 {
ff908ebf
AW
6972 int has_loc = pdi->d.locdesc != NULL;
6973
6974 /* Static Variable. Skip symbols whose value we cannot know (those
6975 without location descriptors or constant values). */
6976 if (!has_loc && !pdi->has_const_value)
decbce07 6977 {
15d034d0 6978 xfree (built_actual_name);
decbce07
MS
6979 return;
6980 }
ff908ebf 6981
f47fb265 6982 /* prim_record_minimal_symbol (actual_name, addr + baseaddr,
c5aa993b 6983 mst_file_data, objfile); */
f47fb265 6984 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6985 built_actual_name != NULL,
f47fb265
MS
6986 VAR_DOMAIN, LOC_STATIC,
6987 &objfile->static_psymbols,
ff908ebf
AW
6988 0,
6989 has_loc ? addr + baseaddr : (CORE_ADDR) 0,
f47fb265 6990 cu->language, objfile);
c906108c
SS
6991 }
6992 break;
6993 case DW_TAG_typedef:
6994 case DW_TAG_base_type:
a02abb62 6995 case DW_TAG_subrange_type:
38d518c9 6996 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6997 built_actual_name != NULL,
176620f1 6998 VAR_DOMAIN, LOC_TYPEDEF,
c906108c 6999 &objfile->static_psymbols,
e142c38c 7000 0, (CORE_ADDR) 0, cu->language, objfile);
c906108c 7001 break;
74921315 7002 case DW_TAG_imported_declaration:
72bf9492
DJ
7003 case DW_TAG_namespace:
7004 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7005 built_actual_name != NULL,
72bf9492
DJ
7006 VAR_DOMAIN, LOC_TYPEDEF,
7007 &objfile->global_psymbols,
7008 0, (CORE_ADDR) 0, cu->language, objfile);
7009 break;
530e8392
KB
7010 case DW_TAG_module:
7011 add_psymbol_to_list (actual_name, strlen (actual_name),
7012 built_actual_name != NULL,
7013 MODULE_DOMAIN, LOC_TYPEDEF,
7014 &objfile->global_psymbols,
7015 0, (CORE_ADDR) 0, cu->language, objfile);
7016 break;
c906108c 7017 case DW_TAG_class_type:
680b30c7 7018 case DW_TAG_interface_type:
c906108c
SS
7019 case DW_TAG_structure_type:
7020 case DW_TAG_union_type:
7021 case DW_TAG_enumeration_type:
fa4028e9
JB
7022 /* Skip external references. The DWARF standard says in the section
7023 about "Structure, Union, and Class Type Entries": "An incomplete
7024 structure, union or class type is represented by a structure,
7025 union or class entry that does not have a byte size attribute
7026 and that has a DW_AT_declaration attribute." */
7027 if (!pdi->has_byte_size && pdi->is_declaration)
decbce07 7028 {
15d034d0 7029 xfree (built_actual_name);
decbce07
MS
7030 return;
7031 }
fa4028e9 7032
63d06c5c
DC
7033 /* NOTE: carlton/2003-10-07: See comment in new_symbol about
7034 static vs. global. */
38d518c9 7035 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7036 built_actual_name != NULL,
176620f1 7037 STRUCT_DOMAIN, LOC_TYPEDEF,
987504bb
JJ
7038 (cu->language == language_cplus
7039 || cu->language == language_java)
63d06c5c
DC
7040 ? &objfile->global_psymbols
7041 : &objfile->static_psymbols,
e142c38c 7042 0, (CORE_ADDR) 0, cu->language, objfile);
c906108c 7043
c906108c
SS
7044 break;
7045 case DW_TAG_enumerator:
38d518c9 7046 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7047 built_actual_name != NULL,
176620f1 7048 VAR_DOMAIN, LOC_CONST,
987504bb
JJ
7049 (cu->language == language_cplus
7050 || cu->language == language_java)
f6fe98ef
DJ
7051 ? &objfile->global_psymbols
7052 : &objfile->static_psymbols,
e142c38c 7053 0, (CORE_ADDR) 0, cu->language, objfile);
c906108c
SS
7054 break;
7055 default:
7056 break;
7057 }
5c4e30ca 7058
15d034d0 7059 xfree (built_actual_name);
c906108c
SS
7060}
7061
5c4e30ca
DC
7062/* Read a partial die corresponding to a namespace; also, add a symbol
7063 corresponding to that namespace to the symbol table. NAMESPACE is
7064 the name of the enclosing namespace. */
91c24f0a 7065
72bf9492
DJ
7066static void
7067add_partial_namespace (struct partial_die_info *pdi,
91c24f0a 7068 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 7069 int set_addrmap, struct dwarf2_cu *cu)
91c24f0a 7070{
72bf9492 7071 /* Add a symbol for the namespace. */
e7c27a73 7072
72bf9492 7073 add_partial_symbol (pdi, cu);
5c4e30ca
DC
7074
7075 /* Now scan partial symbols in that namespace. */
7076
91c24f0a 7077 if (pdi->has_children)
cdc07690 7078 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
91c24f0a
DC
7079}
7080
5d7cb8df
JK
7081/* Read a partial die corresponding to a Fortran module. */
7082
7083static void
7084add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
cdc07690 7085 CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
5d7cb8df 7086{
530e8392
KB
7087 /* Add a symbol for the namespace. */
7088
7089 add_partial_symbol (pdi, cu);
7090
f55ee35c 7091 /* Now scan partial symbols in that module. */
5d7cb8df
JK
7092
7093 if (pdi->has_children)
cdc07690 7094 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
5d7cb8df
JK
7095}
7096
bc30ff58
JB
7097/* Read a partial die corresponding to a subprogram and create a partial
7098 symbol for that subprogram. When the CU language allows it, this
7099 routine also defines a partial symbol for each nested subprogram
cdc07690 7100 that this subprogram contains. If SET_ADDRMAP is true, record the
428fc5fc
YQ
7101 covered ranges in the addrmap. Set *LOWPC and *HIGHPC to the lowest
7102 and highest PC values found in PDI.
6e70227d 7103
cdc07690
YQ
7104 PDI may also be a lexical block, in which case we simply search
7105 recursively for subprograms defined inside that lexical block.
bc30ff58
JB
7106 Again, this is only performed when the CU language allows this
7107 type of definitions. */
7108
7109static void
7110add_partial_subprogram (struct partial_die_info *pdi,
7111 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 7112 int set_addrmap, struct dwarf2_cu *cu)
bc30ff58
JB
7113{
7114 if (pdi->tag == DW_TAG_subprogram)
7115 {
7116 if (pdi->has_pc_info)
7117 {
7118 if (pdi->lowpc < *lowpc)
7119 *lowpc = pdi->lowpc;
7120 if (pdi->highpc > *highpc)
7121 *highpc = pdi->highpc;
cdc07690 7122 if (set_addrmap)
5734ee8b 7123 {
5734ee8b 7124 struct objfile *objfile = cu->objfile;
3e29f34a
MR
7125 struct gdbarch *gdbarch = get_objfile_arch (objfile);
7126 CORE_ADDR baseaddr;
7127 CORE_ADDR highpc;
7128 CORE_ADDR lowpc;
5734ee8b
DJ
7129
7130 baseaddr = ANOFFSET (objfile->section_offsets,
7131 SECT_OFF_TEXT (objfile));
3e29f34a
MR
7132 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7133 pdi->lowpc + baseaddr);
7134 highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7135 pdi->highpc + baseaddr);
7136 addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
9291a0cd 7137 cu->per_cu->v.psymtab);
5734ee8b 7138 }
481860b3
GB
7139 }
7140
7141 if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
7142 {
bc30ff58 7143 if (!pdi->is_declaration)
e8d05480
JB
7144 /* Ignore subprogram DIEs that do not have a name, they are
7145 illegal. Do not emit a complaint at this point, we will
7146 do so when we convert this psymtab into a symtab. */
7147 if (pdi->name)
7148 add_partial_symbol (pdi, cu);
bc30ff58
JB
7149 }
7150 }
6e70227d 7151
bc30ff58
JB
7152 if (! pdi->has_children)
7153 return;
7154
7155 if (cu->language == language_ada)
7156 {
7157 pdi = pdi->die_child;
7158 while (pdi != NULL)
7159 {
7160 fixup_partial_die (pdi, cu);
7161 if (pdi->tag == DW_TAG_subprogram
7162 || pdi->tag == DW_TAG_lexical_block)
cdc07690 7163 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
bc30ff58
JB
7164 pdi = pdi->die_sibling;
7165 }
7166 }
7167}
7168
91c24f0a
DC
7169/* Read a partial die corresponding to an enumeration type. */
7170
72bf9492
DJ
7171static void
7172add_partial_enumeration (struct partial_die_info *enum_pdi,
7173 struct dwarf2_cu *cu)
91c24f0a 7174{
72bf9492 7175 struct partial_die_info *pdi;
91c24f0a
DC
7176
7177 if (enum_pdi->name != NULL)
72bf9492
DJ
7178 add_partial_symbol (enum_pdi, cu);
7179
7180 pdi = enum_pdi->die_child;
7181 while (pdi)
91c24f0a 7182 {
72bf9492 7183 if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
e2e0b3e5 7184 complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
91c24f0a 7185 else
72bf9492
DJ
7186 add_partial_symbol (pdi, cu);
7187 pdi = pdi->die_sibling;
91c24f0a 7188 }
91c24f0a
DC
7189}
7190
6caca83c
CC
7191/* Return the initial uleb128 in the die at INFO_PTR. */
7192
7193static unsigned int
d521ce57 7194peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
6caca83c
CC
7195{
7196 unsigned int bytes_read;
7197
7198 return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7199}
7200
4bb7a0a7
DJ
7201/* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
7202 Return the corresponding abbrev, or NULL if the number is zero (indicating
7203 an empty DIE). In either case *BYTES_READ will be set to the length of
7204 the initial number. */
7205
7206static struct abbrev_info *
d521ce57 7207peek_die_abbrev (const gdb_byte *info_ptr, unsigned int *bytes_read,
891d2f0b 7208 struct dwarf2_cu *cu)
4bb7a0a7
DJ
7209{
7210 bfd *abfd = cu->objfile->obfd;
7211 unsigned int abbrev_number;
7212 struct abbrev_info *abbrev;
7213
7214 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
7215
7216 if (abbrev_number == 0)
7217 return NULL;
7218
433df2d4 7219 abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
4bb7a0a7
DJ
7220 if (!abbrev)
7221 {
422b9917
DE
7222 error (_("Dwarf Error: Could not find abbrev number %d in %s"
7223 " at offset 0x%x [in module %s]"),
7224 abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
7225 cu->header.offset.sect_off, bfd_get_filename (abfd));
4bb7a0a7
DJ
7226 }
7227
7228 return abbrev;
7229}
7230
93311388
DE
7231/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7232 Returns a pointer to the end of a series of DIEs, terminated by an empty
4bb7a0a7
DJ
7233 DIE. Any children of the skipped DIEs will also be skipped. */
7234
d521ce57
TT
7235static const gdb_byte *
7236skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
4bb7a0a7 7237{
dee91e82 7238 struct dwarf2_cu *cu = reader->cu;
4bb7a0a7
DJ
7239 struct abbrev_info *abbrev;
7240 unsigned int bytes_read;
7241
7242 while (1)
7243 {
7244 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
7245 if (abbrev == NULL)
7246 return info_ptr + bytes_read;
7247 else
dee91e82 7248 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
4bb7a0a7
DJ
7249 }
7250}
7251
93311388
DE
7252/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7253 INFO_PTR should point just after the initial uleb128 of a DIE, and the
4bb7a0a7
DJ
7254 abbrev corresponding to that skipped uleb128 should be passed in
7255 ABBREV. Returns a pointer to this DIE's sibling, skipping any
7256 children. */
7257
d521ce57
TT
7258static const gdb_byte *
7259skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
dee91e82 7260 struct abbrev_info *abbrev)
4bb7a0a7
DJ
7261{
7262 unsigned int bytes_read;
7263 struct attribute attr;
dee91e82
DE
7264 bfd *abfd = reader->abfd;
7265 struct dwarf2_cu *cu = reader->cu;
d521ce57 7266 const gdb_byte *buffer = reader->buffer;
f664829e 7267 const gdb_byte *buffer_end = reader->buffer_end;
d521ce57 7268 const gdb_byte *start_info_ptr = info_ptr;
4bb7a0a7
DJ
7269 unsigned int form, i;
7270
7271 for (i = 0; i < abbrev->num_attrs; i++)
7272 {
7273 /* The only abbrev we care about is DW_AT_sibling. */
7274 if (abbrev->attrs[i].name == DW_AT_sibling)
7275 {
dee91e82 7276 read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
4bb7a0a7 7277 if (attr.form == DW_FORM_ref_addr)
3e43a32a
MS
7278 complaint (&symfile_complaints,
7279 _("ignoring absolute DW_AT_sibling"));
4bb7a0a7 7280 else
b9502d3f
WN
7281 {
7282 unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
7283 const gdb_byte *sibling_ptr = buffer + off;
7284
7285 if (sibling_ptr < info_ptr)
7286 complaint (&symfile_complaints,
7287 _("DW_AT_sibling points backwards"));
22869d73
KS
7288 else if (sibling_ptr > reader->buffer_end)
7289 dwarf2_section_buffer_overflow_complaint (reader->die_section);
b9502d3f
WN
7290 else
7291 return sibling_ptr;
7292 }
4bb7a0a7
DJ
7293 }
7294
7295 /* If it isn't DW_AT_sibling, skip this attribute. */
7296 form = abbrev->attrs[i].form;
7297 skip_attribute:
7298 switch (form)
7299 {
4bb7a0a7 7300 case DW_FORM_ref_addr:
ae411497
TT
7301 /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
7302 and later it is offset sized. */
7303 if (cu->header.version == 2)
7304 info_ptr += cu->header.addr_size;
7305 else
7306 info_ptr += cu->header.offset_size;
7307 break;
36586728
TT
7308 case DW_FORM_GNU_ref_alt:
7309 info_ptr += cu->header.offset_size;
7310 break;
ae411497 7311 case DW_FORM_addr:
4bb7a0a7
DJ
7312 info_ptr += cu->header.addr_size;
7313 break;
7314 case DW_FORM_data1:
7315 case DW_FORM_ref1:
7316 case DW_FORM_flag:
7317 info_ptr += 1;
7318 break;
2dc7f7b3
TT
7319 case DW_FORM_flag_present:
7320 break;
4bb7a0a7
DJ
7321 case DW_FORM_data2:
7322 case DW_FORM_ref2:
7323 info_ptr += 2;
7324 break;
7325 case DW_FORM_data4:
7326 case DW_FORM_ref4:
7327 info_ptr += 4;
7328 break;
7329 case DW_FORM_data8:
7330 case DW_FORM_ref8:
55f1336d 7331 case DW_FORM_ref_sig8:
4bb7a0a7
DJ
7332 info_ptr += 8;
7333 break;
7334 case DW_FORM_string:
9b1c24c8 7335 read_direct_string (abfd, info_ptr, &bytes_read);
4bb7a0a7
DJ
7336 info_ptr += bytes_read;
7337 break;
2dc7f7b3 7338 case DW_FORM_sec_offset:
4bb7a0a7 7339 case DW_FORM_strp:
36586728 7340 case DW_FORM_GNU_strp_alt:
4bb7a0a7
DJ
7341 info_ptr += cu->header.offset_size;
7342 break;
2dc7f7b3 7343 case DW_FORM_exprloc:
4bb7a0a7
DJ
7344 case DW_FORM_block:
7345 info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7346 info_ptr += bytes_read;
7347 break;
7348 case DW_FORM_block1:
7349 info_ptr += 1 + read_1_byte (abfd, info_ptr);
7350 break;
7351 case DW_FORM_block2:
7352 info_ptr += 2 + read_2_bytes (abfd, info_ptr);
7353 break;
7354 case DW_FORM_block4:
7355 info_ptr += 4 + read_4_bytes (abfd, info_ptr);
7356 break;
7357 case DW_FORM_sdata:
7358 case DW_FORM_udata:
7359 case DW_FORM_ref_udata:
3019eac3
DE
7360 case DW_FORM_GNU_addr_index:
7361 case DW_FORM_GNU_str_index:
d521ce57 7362 info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
4bb7a0a7
DJ
7363 break;
7364 case DW_FORM_indirect:
7365 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7366 info_ptr += bytes_read;
7367 /* We need to continue parsing from here, so just go back to
7368 the top. */
7369 goto skip_attribute;
7370
7371 default:
3e43a32a
MS
7372 error (_("Dwarf Error: Cannot handle %s "
7373 "in DWARF reader [in module %s]"),
4bb7a0a7
DJ
7374 dwarf_form_name (form),
7375 bfd_get_filename (abfd));
7376 }
7377 }
7378
7379 if (abbrev->has_children)
dee91e82 7380 return skip_children (reader, info_ptr);
4bb7a0a7
DJ
7381 else
7382 return info_ptr;
7383}
7384
93311388 7385/* Locate ORIG_PDI's sibling.
dee91e82 7386 INFO_PTR should point to the start of the next DIE after ORIG_PDI. */
91c24f0a 7387
d521ce57 7388static const gdb_byte *
dee91e82
DE
7389locate_pdi_sibling (const struct die_reader_specs *reader,
7390 struct partial_die_info *orig_pdi,
d521ce57 7391 const gdb_byte *info_ptr)
91c24f0a
DC
7392{
7393 /* Do we know the sibling already? */
72bf9492 7394
91c24f0a
DC
7395 if (orig_pdi->sibling)
7396 return orig_pdi->sibling;
7397
7398 /* Are there any children to deal with? */
7399
7400 if (!orig_pdi->has_children)
7401 return info_ptr;
7402
4bb7a0a7 7403 /* Skip the children the long way. */
91c24f0a 7404
dee91e82 7405 return skip_children (reader, info_ptr);
91c24f0a
DC
7406}
7407
257e7a09 7408/* Expand this partial symbol table into a full symbol table. SELF is
442e4d9c 7409 not NULL. */
c906108c
SS
7410
7411static void
257e7a09
YQ
7412dwarf2_read_symtab (struct partial_symtab *self,
7413 struct objfile *objfile)
c906108c 7414{
257e7a09 7415 if (self->readin)
c906108c 7416 {
442e4d9c 7417 warning (_("bug: psymtab for %s is already read in."),
257e7a09 7418 self->filename);
442e4d9c
YQ
7419 }
7420 else
7421 {
7422 if (info_verbose)
c906108c 7423 {
442e4d9c 7424 printf_filtered (_("Reading in symbols for %s..."),
257e7a09 7425 self->filename);
442e4d9c 7426 gdb_flush (gdb_stdout);
c906108c 7427 }
c906108c 7428
442e4d9c
YQ
7429 /* Restore our global data. */
7430 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
10b3939b 7431
442e4d9c
YQ
7432 /* If this psymtab is constructed from a debug-only objfile, the
7433 has_section_at_zero flag will not necessarily be correct. We
7434 can get the correct value for this flag by looking at the data
7435 associated with the (presumably stripped) associated objfile. */
7436 if (objfile->separate_debug_objfile_backlink)
7437 {
7438 struct dwarf2_per_objfile *dpo_backlink
7439 = objfile_data (objfile->separate_debug_objfile_backlink,
7440 dwarf2_objfile_data_key);
9a619af0 7441
442e4d9c
YQ
7442 dwarf2_per_objfile->has_section_at_zero
7443 = dpo_backlink->has_section_at_zero;
7444 }
b2ab525c 7445
442e4d9c 7446 dwarf2_per_objfile->reading_partial_symbols = 0;
98bfdba5 7447
257e7a09 7448 psymtab_to_symtab_1 (self);
c906108c 7449
442e4d9c
YQ
7450 /* Finish up the debug error message. */
7451 if (info_verbose)
7452 printf_filtered (_("done.\n"));
c906108c 7453 }
95554aad
TT
7454
7455 process_cu_includes ();
c906108c 7456}
9cdd5dbd
DE
7457\f
7458/* Reading in full CUs. */
c906108c 7459
10b3939b
DJ
7460/* Add PER_CU to the queue. */
7461
7462static void
95554aad
TT
7463queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
7464 enum language pretend_language)
10b3939b
DJ
7465{
7466 struct dwarf2_queue_item *item;
7467
7468 per_cu->queued = 1;
7469 item = xmalloc (sizeof (*item));
7470 item->per_cu = per_cu;
95554aad 7471 item->pretend_language = pretend_language;
10b3939b
DJ
7472 item->next = NULL;
7473
7474 if (dwarf2_queue == NULL)
7475 dwarf2_queue = item;
7476 else
7477 dwarf2_queue_tail->next = item;
7478
7479 dwarf2_queue_tail = item;
7480}
7481
89e63ee4
DE
7482/* If PER_CU is not yet queued, add it to the queue.
7483 If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
7484 dependency.
0907af0c 7485 The result is non-zero if PER_CU was queued, otherwise the result is zero
69d751e3
DE
7486 meaning either PER_CU is already queued or it is already loaded.
7487
7488 N.B. There is an invariant here that if a CU is queued then it is loaded.
7489 The caller is required to load PER_CU if we return non-zero. */
0907af0c
DE
7490
7491static int
89e63ee4 7492maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
0907af0c
DE
7493 struct dwarf2_per_cu_data *per_cu,
7494 enum language pretend_language)
7495{
7496 /* We may arrive here during partial symbol reading, if we need full
7497 DIEs to process an unusual case (e.g. template arguments). Do
7498 not queue PER_CU, just tell our caller to load its DIEs. */
7499 if (dwarf2_per_objfile->reading_partial_symbols)
7500 {
7501 if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
7502 return 1;
7503 return 0;
7504 }
7505
7506 /* Mark the dependence relation so that we don't flush PER_CU
7507 too early. */
89e63ee4
DE
7508 if (dependent_cu != NULL)
7509 dwarf2_add_dependence (dependent_cu, per_cu);
0907af0c
DE
7510
7511 /* If it's already on the queue, we have nothing to do. */
7512 if (per_cu->queued)
7513 return 0;
7514
7515 /* If the compilation unit is already loaded, just mark it as
7516 used. */
7517 if (per_cu->cu != NULL)
7518 {
7519 per_cu->cu->last_used = 0;
7520 return 0;
7521 }
7522
7523 /* Add it to the queue. */
7524 queue_comp_unit (per_cu, pretend_language);
7525
7526 return 1;
7527}
7528
10b3939b
DJ
7529/* Process the queue. */
7530
7531static void
a0f42c21 7532process_queue (void)
10b3939b
DJ
7533{
7534 struct dwarf2_queue_item *item, *next_item;
7535
b4f54984 7536 if (dwarf_read_debug)
45cfd468
DE
7537 {
7538 fprintf_unfiltered (gdb_stdlog,
7539 "Expanding one or more symtabs of objfile %s ...\n",
4262abfb 7540 objfile_name (dwarf2_per_objfile->objfile));
45cfd468
DE
7541 }
7542
03dd20cc
DJ
7543 /* The queue starts out with one item, but following a DIE reference
7544 may load a new CU, adding it to the end of the queue. */
10b3939b
DJ
7545 for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
7546 {
9291a0cd 7547 if (dwarf2_per_objfile->using_index
43f3e411 7548 ? !item->per_cu->v.quick->compunit_symtab
9291a0cd 7549 : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
f4dc4d17
DE
7550 {
7551 struct dwarf2_per_cu_data *per_cu = item->per_cu;
73be47f5 7552 unsigned int debug_print_threshold;
247f5c4f 7553 char buf[100];
f4dc4d17 7554
247f5c4f 7555 if (per_cu->is_debug_types)
f4dc4d17 7556 {
247f5c4f
DE
7557 struct signatured_type *sig_type =
7558 (struct signatured_type *) per_cu;
7559
7560 sprintf (buf, "TU %s at offset 0x%x",
73be47f5
DE
7561 hex_string (sig_type->signature),
7562 per_cu->offset.sect_off);
7563 /* There can be 100s of TUs.
7564 Only print them in verbose mode. */
7565 debug_print_threshold = 2;
f4dc4d17 7566 }
247f5c4f 7567 else
73be47f5
DE
7568 {
7569 sprintf (buf, "CU at offset 0x%x", per_cu->offset.sect_off);
7570 debug_print_threshold = 1;
7571 }
247f5c4f 7572
b4f54984 7573 if (dwarf_read_debug >= debug_print_threshold)
247f5c4f 7574 fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
f4dc4d17
DE
7575
7576 if (per_cu->is_debug_types)
7577 process_full_type_unit (per_cu, item->pretend_language);
7578 else
7579 process_full_comp_unit (per_cu, item->pretend_language);
7580
b4f54984 7581 if (dwarf_read_debug >= debug_print_threshold)
247f5c4f 7582 fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
f4dc4d17 7583 }
10b3939b
DJ
7584
7585 item->per_cu->queued = 0;
7586 next_item = item->next;
7587 xfree (item);
7588 }
7589
7590 dwarf2_queue_tail = NULL;
45cfd468 7591
b4f54984 7592 if (dwarf_read_debug)
45cfd468
DE
7593 {
7594 fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
4262abfb 7595 objfile_name (dwarf2_per_objfile->objfile));
45cfd468 7596 }
10b3939b
DJ
7597}
7598
7599/* Free all allocated queue entries. This function only releases anything if
7600 an error was thrown; if the queue was processed then it would have been
7601 freed as we went along. */
7602
7603static void
7604dwarf2_release_queue (void *dummy)
7605{
7606 struct dwarf2_queue_item *item, *last;
7607
7608 item = dwarf2_queue;
7609 while (item)
7610 {
7611 /* Anything still marked queued is likely to be in an
7612 inconsistent state, so discard it. */
7613 if (item->per_cu->queued)
7614 {
7615 if (item->per_cu->cu != NULL)
dee91e82 7616 free_one_cached_comp_unit (item->per_cu);
10b3939b
DJ
7617 item->per_cu->queued = 0;
7618 }
7619
7620 last = item;
7621 item = item->next;
7622 xfree (last);
7623 }
7624
7625 dwarf2_queue = dwarf2_queue_tail = NULL;
7626}
7627
7628/* Read in full symbols for PST, and anything it depends on. */
7629
c906108c 7630static void
fba45db2 7631psymtab_to_symtab_1 (struct partial_symtab *pst)
c906108c 7632{
10b3939b 7633 struct dwarf2_per_cu_data *per_cu;
aaa75496
JB
7634 int i;
7635
95554aad
TT
7636 if (pst->readin)
7637 return;
7638
aaa75496 7639 for (i = 0; i < pst->number_of_dependencies; i++)
95554aad
TT
7640 if (!pst->dependencies[i]->readin
7641 && pst->dependencies[i]->user == NULL)
aaa75496
JB
7642 {
7643 /* Inform about additional files that need to be read in. */
7644 if (info_verbose)
7645 {
a3f17187 7646 /* FIXME: i18n: Need to make this a single string. */
aaa75496
JB
7647 fputs_filtered (" ", gdb_stdout);
7648 wrap_here ("");
7649 fputs_filtered ("and ", gdb_stdout);
7650 wrap_here ("");
7651 printf_filtered ("%s...", pst->dependencies[i]->filename);
0963b4bd 7652 wrap_here (""); /* Flush output. */
aaa75496
JB
7653 gdb_flush (gdb_stdout);
7654 }
7655 psymtab_to_symtab_1 (pst->dependencies[i]);
7656 }
7657
e38df1d0 7658 per_cu = pst->read_symtab_private;
10b3939b
DJ
7659
7660 if (per_cu == NULL)
aaa75496
JB
7661 {
7662 /* It's an include file, no symbols to read for it.
7663 Everything is in the parent symtab. */
7664 pst->readin = 1;
7665 return;
7666 }
c906108c 7667
a0f42c21 7668 dw2_do_instantiate_symtab (per_cu);
10b3939b
DJ
7669}
7670
dee91e82
DE
7671/* Trivial hash function for die_info: the hash value of a DIE
7672 is its offset in .debug_info for this objfile. */
10b3939b 7673
dee91e82
DE
7674static hashval_t
7675die_hash (const void *item)
10b3939b 7676{
dee91e82 7677 const struct die_info *die = item;
6502dd73 7678
dee91e82
DE
7679 return die->offset.sect_off;
7680}
63d06c5c 7681
dee91e82
DE
7682/* Trivial comparison function for die_info structures: two DIEs
7683 are equal if they have the same offset. */
98bfdba5 7684
dee91e82
DE
7685static int
7686die_eq (const void *item_lhs, const void *item_rhs)
7687{
7688 const struct die_info *die_lhs = item_lhs;
7689 const struct die_info *die_rhs = item_rhs;
c906108c 7690
dee91e82
DE
7691 return die_lhs->offset.sect_off == die_rhs->offset.sect_off;
7692}
c906108c 7693
dee91e82
DE
7694/* die_reader_func for load_full_comp_unit.
7695 This is identical to read_signatured_type_reader,
7696 but is kept separate for now. */
c906108c 7697
dee91e82
DE
7698static void
7699load_full_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 7700 const gdb_byte *info_ptr,
dee91e82
DE
7701 struct die_info *comp_unit_die,
7702 int has_children,
7703 void *data)
7704{
7705 struct dwarf2_cu *cu = reader->cu;
95554aad 7706 enum language *language_ptr = data;
6caca83c 7707
dee91e82
DE
7708 gdb_assert (cu->die_hash == NULL);
7709 cu->die_hash =
7710 htab_create_alloc_ex (cu->header.length / 12,
7711 die_hash,
7712 die_eq,
7713 NULL,
7714 &cu->comp_unit_obstack,
7715 hashtab_obstack_allocate,
7716 dummy_obstack_deallocate);
e142c38c 7717
dee91e82
DE
7718 if (has_children)
7719 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
7720 &info_ptr, comp_unit_die);
7721 cu->dies = comp_unit_die;
7722 /* comp_unit_die is not stored in die_hash, no need. */
10b3939b
DJ
7723
7724 /* We try not to read any attributes in this function, because not
9cdd5dbd 7725 all CUs needed for references have been loaded yet, and symbol
10b3939b 7726 table processing isn't initialized. But we have to set the CU language,
dee91e82
DE
7727 or we won't be able to build types correctly.
7728 Similarly, if we do not read the producer, we can not apply
7729 producer-specific interpretation. */
95554aad 7730 prepare_one_comp_unit (cu, cu->dies, *language_ptr);
dee91e82 7731}
10b3939b 7732
dee91e82 7733/* Load the DIEs associated with PER_CU into memory. */
a6c727b2 7734
dee91e82 7735static void
95554aad
TT
7736load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
7737 enum language pretend_language)
dee91e82 7738{
3019eac3 7739 gdb_assert (! this_cu->is_debug_types);
c5b7e1cb 7740
f4dc4d17
DE
7741 init_cutu_and_read_dies (this_cu, NULL, 1, 1,
7742 load_full_comp_unit_reader, &pretend_language);
10b3939b
DJ
7743}
7744
3da10d80
KS
7745/* Add a DIE to the delayed physname list. */
7746
7747static void
7748add_to_method_list (struct type *type, int fnfield_index, int index,
7749 const char *name, struct die_info *die,
7750 struct dwarf2_cu *cu)
7751{
7752 struct delayed_method_info mi;
7753 mi.type = type;
7754 mi.fnfield_index = fnfield_index;
7755 mi.index = index;
7756 mi.name = name;
7757 mi.die = die;
7758 VEC_safe_push (delayed_method_info, cu->method_list, &mi);
7759}
7760
7761/* A cleanup for freeing the delayed method list. */
7762
7763static void
7764free_delayed_list (void *ptr)
7765{
7766 struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
7767 if (cu->method_list != NULL)
7768 {
7769 VEC_free (delayed_method_info, cu->method_list);
7770 cu->method_list = NULL;
7771 }
7772}
7773
7774/* Compute the physnames of any methods on the CU's method list.
7775
7776 The computation of method physnames is delayed in order to avoid the
7777 (bad) condition that one of the method's formal parameters is of an as yet
7778 incomplete type. */
7779
7780static void
7781compute_delayed_physnames (struct dwarf2_cu *cu)
7782{
7783 int i;
7784 struct delayed_method_info *mi;
7785 for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
7786 {
1d06ead6 7787 const char *physname;
3da10d80
KS
7788 struct fn_fieldlist *fn_flp
7789 = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
7d455152 7790 physname = dwarf2_physname (mi->name, mi->die, cu);
005e54bb
DE
7791 TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi->index)
7792 = physname ? physname : "";
3da10d80
KS
7793 }
7794}
7795
a766d390
DE
7796/* Go objects should be embedded in a DW_TAG_module DIE,
7797 and it's not clear if/how imported objects will appear.
7798 To keep Go support simple until that's worked out,
7799 go back through what we've read and create something usable.
7800 We could do this while processing each DIE, and feels kinda cleaner,
7801 but that way is more invasive.
7802 This is to, for example, allow the user to type "p var" or "b main"
7803 without having to specify the package name, and allow lookups
7804 of module.object to work in contexts that use the expression
7805 parser. */
7806
7807static void
7808fixup_go_packaging (struct dwarf2_cu *cu)
7809{
7810 char *package_name = NULL;
7811 struct pending *list;
7812 int i;
7813
7814 for (list = global_symbols; list != NULL; list = list->next)
7815 {
7816 for (i = 0; i < list->nsyms; ++i)
7817 {
7818 struct symbol *sym = list->symbol[i];
7819
7820 if (SYMBOL_LANGUAGE (sym) == language_go
7821 && SYMBOL_CLASS (sym) == LOC_BLOCK)
7822 {
7823 char *this_package_name = go_symbol_package_name (sym);
7824
7825 if (this_package_name == NULL)
7826 continue;
7827 if (package_name == NULL)
7828 package_name = this_package_name;
7829 else
7830 {
7831 if (strcmp (package_name, this_package_name) != 0)
7832 complaint (&symfile_complaints,
7833 _("Symtab %s has objects from two different Go packages: %s and %s"),
08be3fe3
DE
7834 (symbol_symtab (sym) != NULL
7835 ? symtab_to_filename_for_display
7836 (symbol_symtab (sym))
4262abfb 7837 : objfile_name (cu->objfile)),
a766d390
DE
7838 this_package_name, package_name);
7839 xfree (this_package_name);
7840 }
7841 }
7842 }
7843 }
7844
7845 if (package_name != NULL)
7846 {
7847 struct objfile *objfile = cu->objfile;
34a68019
TT
7848 const char *saved_package_name
7849 = obstack_copy0 (&objfile->per_bfd->storage_obstack,
7850 package_name,
7851 strlen (package_name));
a766d390 7852 struct type *type = init_type (TYPE_CODE_MODULE, 0, 0,
86f62fd7 7853 saved_package_name, objfile);
a766d390
DE
7854 struct symbol *sym;
7855
7856 TYPE_TAG_NAME (type) = TYPE_NAME (type);
7857
e623cf5d 7858 sym = allocate_symbol (objfile);
f85f34ed 7859 SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
86f62fd7
TT
7860 SYMBOL_SET_NAMES (sym, saved_package_name,
7861 strlen (saved_package_name), 0, objfile);
a766d390
DE
7862 /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
7863 e.g., "main" finds the "main" module and not C's main(). */
7864 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
f1e6e072 7865 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
a766d390
DE
7866 SYMBOL_TYPE (sym) = type;
7867
7868 add_symbol_to_list (sym, &global_symbols);
7869
7870 xfree (package_name);
7871 }
7872}
7873
95554aad
TT
7874/* Return the symtab for PER_CU. This works properly regardless of
7875 whether we're using the index or psymtabs. */
7876
43f3e411
DE
7877static struct compunit_symtab *
7878get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
95554aad
TT
7879{
7880 return (dwarf2_per_objfile->using_index
43f3e411
DE
7881 ? per_cu->v.quick->compunit_symtab
7882 : per_cu->v.psymtab->compunit_symtab);
95554aad
TT
7883}
7884
7885/* A helper function for computing the list of all symbol tables
7886 included by PER_CU. */
7887
7888static void
43f3e411 7889recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
ec94af83 7890 htab_t all_children, htab_t all_type_symtabs,
f9125b6c 7891 struct dwarf2_per_cu_data *per_cu,
43f3e411 7892 struct compunit_symtab *immediate_parent)
95554aad
TT
7893{
7894 void **slot;
7895 int ix;
43f3e411 7896 struct compunit_symtab *cust;
95554aad
TT
7897 struct dwarf2_per_cu_data *iter;
7898
7899 slot = htab_find_slot (all_children, per_cu, INSERT);
7900 if (*slot != NULL)
7901 {
7902 /* This inclusion and its children have been processed. */
7903 return;
7904 }
7905
7906 *slot = per_cu;
7907 /* Only add a CU if it has a symbol table. */
43f3e411
DE
7908 cust = get_compunit_symtab (per_cu);
7909 if (cust != NULL)
ec94af83
DE
7910 {
7911 /* If this is a type unit only add its symbol table if we haven't
7912 seen it yet (type unit per_cu's can share symtabs). */
7913 if (per_cu->is_debug_types)
7914 {
43f3e411 7915 slot = htab_find_slot (all_type_symtabs, cust, INSERT);
ec94af83
DE
7916 if (*slot == NULL)
7917 {
43f3e411
DE
7918 *slot = cust;
7919 VEC_safe_push (compunit_symtab_ptr, *result, cust);
7920 if (cust->user == NULL)
7921 cust->user = immediate_parent;
ec94af83
DE
7922 }
7923 }
7924 else
f9125b6c 7925 {
43f3e411
DE
7926 VEC_safe_push (compunit_symtab_ptr, *result, cust);
7927 if (cust->user == NULL)
7928 cust->user = immediate_parent;
f9125b6c 7929 }
ec94af83 7930 }
95554aad
TT
7931
7932 for (ix = 0;
796a7ff8 7933 VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
95554aad 7934 ++ix)
ec94af83
DE
7935 {
7936 recursively_compute_inclusions (result, all_children,
43f3e411 7937 all_type_symtabs, iter, cust);
ec94af83 7938 }
95554aad
TT
7939}
7940
43f3e411 7941/* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
95554aad
TT
7942 PER_CU. */
7943
7944static void
43f3e411 7945compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
95554aad 7946{
f4dc4d17
DE
7947 gdb_assert (! per_cu->is_debug_types);
7948
796a7ff8 7949 if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
95554aad
TT
7950 {
7951 int ix, len;
ec94af83 7952 struct dwarf2_per_cu_data *per_cu_iter;
43f3e411
DE
7953 struct compunit_symtab *compunit_symtab_iter;
7954 VEC (compunit_symtab_ptr) *result_symtabs = NULL;
ec94af83 7955 htab_t all_children, all_type_symtabs;
43f3e411 7956 struct compunit_symtab *cust = get_compunit_symtab (per_cu);
95554aad
TT
7957
7958 /* If we don't have a symtab, we can just skip this case. */
43f3e411 7959 if (cust == NULL)
95554aad
TT
7960 return;
7961
7962 all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7963 NULL, xcalloc, xfree);
ec94af83
DE
7964 all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7965 NULL, xcalloc, xfree);
95554aad
TT
7966
7967 for (ix = 0;
796a7ff8 7968 VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
ec94af83 7969 ix, per_cu_iter);
95554aad 7970 ++ix)
ec94af83
DE
7971 {
7972 recursively_compute_inclusions (&result_symtabs, all_children,
f9125b6c 7973 all_type_symtabs, per_cu_iter,
43f3e411 7974 cust);
ec94af83 7975 }
95554aad 7976
ec94af83 7977 /* Now we have a transitive closure of all the included symtabs. */
43f3e411
DE
7978 len = VEC_length (compunit_symtab_ptr, result_symtabs);
7979 cust->includes
95554aad
TT
7980 = obstack_alloc (&dwarf2_per_objfile->objfile->objfile_obstack,
7981 (len + 1) * sizeof (struct symtab *));
7982 for (ix = 0;
43f3e411
DE
7983 VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
7984 compunit_symtab_iter);
95554aad 7985 ++ix)
43f3e411
DE
7986 cust->includes[ix] = compunit_symtab_iter;
7987 cust->includes[len] = NULL;
95554aad 7988
43f3e411 7989 VEC_free (compunit_symtab_ptr, result_symtabs);
95554aad 7990 htab_delete (all_children);
ec94af83 7991 htab_delete (all_type_symtabs);
95554aad
TT
7992 }
7993}
7994
7995/* Compute the 'includes' field for the symtabs of all the CUs we just
7996 read. */
7997
7998static void
7999process_cu_includes (void)
8000{
8001 int ix;
8002 struct dwarf2_per_cu_data *iter;
8003
8004 for (ix = 0;
8005 VEC_iterate (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus,
8006 ix, iter);
8007 ++ix)
f4dc4d17
DE
8008 {
8009 if (! iter->is_debug_types)
43f3e411 8010 compute_compunit_symtab_includes (iter);
f4dc4d17 8011 }
95554aad
TT
8012
8013 VEC_free (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus);
8014}
8015
9cdd5dbd 8016/* Generate full symbol information for PER_CU, whose DIEs have
10b3939b
DJ
8017 already been loaded into memory. */
8018
8019static void
95554aad
TT
8020process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
8021 enum language pretend_language)
10b3939b 8022{
10b3939b 8023 struct dwarf2_cu *cu = per_cu->cu;
9291a0cd 8024 struct objfile *objfile = per_cu->objfile;
3e29f34a 8025 struct gdbarch *gdbarch = get_objfile_arch (objfile);
10b3939b 8026 CORE_ADDR lowpc, highpc;
43f3e411 8027 struct compunit_symtab *cust;
3da10d80 8028 struct cleanup *back_to, *delayed_list_cleanup;
10b3939b 8029 CORE_ADDR baseaddr;
4359dff1 8030 struct block *static_block;
3e29f34a 8031 CORE_ADDR addr;
10b3939b
DJ
8032
8033 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8034
10b3939b
DJ
8035 buildsym_init ();
8036 back_to = make_cleanup (really_free_pendings, NULL);
3da10d80 8037 delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
10b3939b
DJ
8038
8039 cu->list_in_scope = &file_symbols;
c906108c 8040
95554aad
TT
8041 cu->language = pretend_language;
8042 cu->language_defn = language_def (cu->language);
8043
c906108c 8044 /* Do line number decoding in read_file_scope () */
10b3939b 8045 process_die (cu->dies, cu);
c906108c 8046
a766d390
DE
8047 /* For now fudge the Go package. */
8048 if (cu->language == language_go)
8049 fixup_go_packaging (cu);
8050
3da10d80
KS
8051 /* Now that we have processed all the DIEs in the CU, all the types
8052 should be complete, and it should now be safe to compute all of the
8053 physnames. */
8054 compute_delayed_physnames (cu);
8055 do_cleanups (delayed_list_cleanup);
8056
fae299cd
DC
8057 /* Some compilers don't define a DW_AT_high_pc attribute for the
8058 compilation unit. If the DW_AT_high_pc is missing, synthesize
8059 it, by scanning the DIE's below the compilation unit. */
10b3939b 8060 get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
c906108c 8061
3e29f34a
MR
8062 addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
8063 static_block = end_symtab_get_static_block (addr, 0, 1);
4359dff1
JK
8064
8065 /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
8066 Also, DW_AT_ranges may record ranges not belonging to any child DIEs
8067 (such as virtual method tables). Record the ranges in STATIC_BLOCK's
8068 addrmap to help ensure it has an accurate map of pc values belonging to
8069 this comp unit. */
8070 dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
8071
43f3e411
DE
8072 cust = end_symtab_from_static_block (static_block,
8073 SECT_OFF_TEXT (objfile), 0);
c906108c 8074
43f3e411 8075 if (cust != NULL)
c906108c 8076 {
df15bd07 8077 int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
4632c0d0 8078
8be455d7
JK
8079 /* Set symtab language to language from DW_AT_language. If the
8080 compilation is from a C file generated by language preprocessors, do
8081 not set the language if it was already deduced by start_subfile. */
43f3e411
DE
8082 if (!(cu->language == language_c
8083 && COMPUNIT_FILETABS (cust)->language != language_c))
8084 COMPUNIT_FILETABS (cust)->language = cu->language;
8be455d7
JK
8085
8086 /* GCC-4.0 has started to support -fvar-tracking. GCC-3.x still can
8087 produce DW_AT_location with location lists but it can be possibly
ab260dad
JK
8088 invalid without -fvar-tracking. Still up to GCC-4.4.x incl. 4.4.0
8089 there were bugs in prologue debug info, fixed later in GCC-4.5
8090 by "unwind info for epilogues" patch (which is not directly related).
8be455d7
JK
8091
8092 For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
8093 needed, it would be wrong due to missing DW_AT_producer there.
8094
8095 Still one can confuse GDB by using non-standard GCC compilation
8096 options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
8097 */
ab260dad 8098 if (cu->has_loclist && gcc_4_minor >= 5)
43f3e411 8099 cust->locations_valid = 1;
e0d00bc7
JK
8100
8101 if (gcc_4_minor >= 5)
43f3e411 8102 cust->epilogue_unwind_valid = 1;
96408a79 8103
43f3e411 8104 cust->call_site_htab = cu->call_site_htab;
c906108c 8105 }
9291a0cd
TT
8106
8107 if (dwarf2_per_objfile->using_index)
43f3e411 8108 per_cu->v.quick->compunit_symtab = cust;
9291a0cd
TT
8109 else
8110 {
8111 struct partial_symtab *pst = per_cu->v.psymtab;
43f3e411 8112 pst->compunit_symtab = cust;
9291a0cd
TT
8113 pst->readin = 1;
8114 }
c906108c 8115
95554aad
TT
8116 /* Push it for inclusion processing later. */
8117 VEC_safe_push (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus, per_cu);
8118
c906108c 8119 do_cleanups (back_to);
f4dc4d17 8120}
45cfd468 8121
f4dc4d17
DE
8122/* Generate full symbol information for type unit PER_CU, whose DIEs have
8123 already been loaded into memory. */
8124
8125static void
8126process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
8127 enum language pretend_language)
8128{
8129 struct dwarf2_cu *cu = per_cu->cu;
8130 struct objfile *objfile = per_cu->objfile;
43f3e411 8131 struct compunit_symtab *cust;
f4dc4d17 8132 struct cleanup *back_to, *delayed_list_cleanup;
0186c6a7
DE
8133 struct signatured_type *sig_type;
8134
8135 gdb_assert (per_cu->is_debug_types);
8136 sig_type = (struct signatured_type *) per_cu;
f4dc4d17
DE
8137
8138 buildsym_init ();
8139 back_to = make_cleanup (really_free_pendings, NULL);
8140 delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
8141
8142 cu->list_in_scope = &file_symbols;
8143
8144 cu->language = pretend_language;
8145 cu->language_defn = language_def (cu->language);
8146
8147 /* The symbol tables are set up in read_type_unit_scope. */
8148 process_die (cu->dies, cu);
8149
8150 /* For now fudge the Go package. */
8151 if (cu->language == language_go)
8152 fixup_go_packaging (cu);
8153
8154 /* Now that we have processed all the DIEs in the CU, all the types
8155 should be complete, and it should now be safe to compute all of the
8156 physnames. */
8157 compute_delayed_physnames (cu);
8158 do_cleanups (delayed_list_cleanup);
8159
8160 /* TUs share symbol tables.
8161 If this is the first TU to use this symtab, complete the construction
094b34ac
DE
8162 of it with end_expandable_symtab. Otherwise, complete the addition of
8163 this TU's symbols to the existing symtab. */
43f3e411 8164 if (sig_type->type_unit_group->compunit_symtab == NULL)
45cfd468 8165 {
43f3e411
DE
8166 cust = end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
8167 sig_type->type_unit_group->compunit_symtab = cust;
f4dc4d17 8168
43f3e411 8169 if (cust != NULL)
f4dc4d17
DE
8170 {
8171 /* Set symtab language to language from DW_AT_language. If the
8172 compilation is from a C file generated by language preprocessors,
8173 do not set the language if it was already deduced by
8174 start_subfile. */
43f3e411
DE
8175 if (!(cu->language == language_c
8176 && COMPUNIT_FILETABS (cust)->language != language_c))
8177 COMPUNIT_FILETABS (cust)->language = cu->language;
f4dc4d17
DE
8178 }
8179 }
8180 else
8181 {
0ab9ce85 8182 augment_type_symtab ();
43f3e411 8183 cust = sig_type->type_unit_group->compunit_symtab;
f4dc4d17
DE
8184 }
8185
8186 if (dwarf2_per_objfile->using_index)
43f3e411 8187 per_cu->v.quick->compunit_symtab = cust;
f4dc4d17
DE
8188 else
8189 {
8190 struct partial_symtab *pst = per_cu->v.psymtab;
43f3e411 8191 pst->compunit_symtab = cust;
f4dc4d17 8192 pst->readin = 1;
45cfd468 8193 }
f4dc4d17
DE
8194
8195 do_cleanups (back_to);
c906108c
SS
8196}
8197
95554aad
TT
8198/* Process an imported unit DIE. */
8199
8200static void
8201process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
8202{
8203 struct attribute *attr;
8204
f4dc4d17
DE
8205 /* For now we don't handle imported units in type units. */
8206 if (cu->per_cu->is_debug_types)
8207 {
8208 error (_("Dwarf Error: DW_TAG_imported_unit is not"
8209 " supported in type units [in module %s]"),
4262abfb 8210 objfile_name (cu->objfile));
f4dc4d17
DE
8211 }
8212
95554aad
TT
8213 attr = dwarf2_attr (die, DW_AT_import, cu);
8214 if (attr != NULL)
8215 {
8216 struct dwarf2_per_cu_data *per_cu;
8217 struct symtab *imported_symtab;
8218 sect_offset offset;
36586728 8219 int is_dwz;
95554aad
TT
8220
8221 offset = dwarf2_get_ref_die_offset (attr);
36586728
TT
8222 is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
8223 per_cu = dwarf2_find_containing_comp_unit (offset, is_dwz, cu->objfile);
95554aad 8224
69d751e3 8225 /* If necessary, add it to the queue and load its DIEs. */
95554aad
TT
8226 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
8227 load_full_comp_unit (per_cu, cu->language);
8228
796a7ff8 8229 VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
95554aad
TT
8230 per_cu);
8231 }
8232}
8233
adde2bff
DE
8234/* Reset the in_process bit of a die. */
8235
8236static void
8237reset_die_in_process (void *arg)
8238{
8239 struct die_info *die = arg;
8c3cb9fa 8240
adde2bff
DE
8241 die->in_process = 0;
8242}
8243
c906108c
SS
8244/* Process a die and its children. */
8245
8246static void
e7c27a73 8247process_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 8248{
adde2bff
DE
8249 struct cleanup *in_process;
8250
8251 /* We should only be processing those not already in process. */
8252 gdb_assert (!die->in_process);
8253
8254 die->in_process = 1;
8255 in_process = make_cleanup (reset_die_in_process,die);
8256
c906108c
SS
8257 switch (die->tag)
8258 {
8259 case DW_TAG_padding:
8260 break;
8261 case DW_TAG_compile_unit:
95554aad 8262 case DW_TAG_partial_unit:
e7c27a73 8263 read_file_scope (die, cu);
c906108c 8264 break;
348e048f
DE
8265 case DW_TAG_type_unit:
8266 read_type_unit_scope (die, cu);
8267 break;
c906108c 8268 case DW_TAG_subprogram:
c906108c 8269 case DW_TAG_inlined_subroutine:
edb3359d 8270 read_func_scope (die, cu);
c906108c
SS
8271 break;
8272 case DW_TAG_lexical_block:
14898363
L
8273 case DW_TAG_try_block:
8274 case DW_TAG_catch_block:
e7c27a73 8275 read_lexical_block_scope (die, cu);
c906108c 8276 break;
96408a79
SA
8277 case DW_TAG_GNU_call_site:
8278 read_call_site_scope (die, cu);
8279 break;
c906108c 8280 case DW_TAG_class_type:
680b30c7 8281 case DW_TAG_interface_type:
c906108c
SS
8282 case DW_TAG_structure_type:
8283 case DW_TAG_union_type:
134d01f1 8284 process_structure_scope (die, cu);
c906108c
SS
8285 break;
8286 case DW_TAG_enumeration_type:
134d01f1 8287 process_enumeration_scope (die, cu);
c906108c 8288 break;
134d01f1 8289
f792889a
DJ
8290 /* These dies have a type, but processing them does not create
8291 a symbol or recurse to process the children. Therefore we can
8292 read them on-demand through read_type_die. */
c906108c 8293 case DW_TAG_subroutine_type:
72019c9c 8294 case DW_TAG_set_type:
c906108c 8295 case DW_TAG_array_type:
c906108c 8296 case DW_TAG_pointer_type:
c906108c 8297 case DW_TAG_ptr_to_member_type:
c906108c 8298 case DW_TAG_reference_type:
c906108c 8299 case DW_TAG_string_type:
c906108c 8300 break;
134d01f1 8301
c906108c 8302 case DW_TAG_base_type:
a02abb62 8303 case DW_TAG_subrange_type:
cb249c71 8304 case DW_TAG_typedef:
134d01f1
DJ
8305 /* Add a typedef symbol for the type definition, if it has a
8306 DW_AT_name. */
f792889a 8307 new_symbol (die, read_type_die (die, cu), cu);
a02abb62 8308 break;
c906108c 8309 case DW_TAG_common_block:
e7c27a73 8310 read_common_block (die, cu);
c906108c
SS
8311 break;
8312 case DW_TAG_common_inclusion:
8313 break;
d9fa45fe 8314 case DW_TAG_namespace:
4d4ec4e5 8315 cu->processing_has_namespace_info = 1;
e7c27a73 8316 read_namespace (die, cu);
d9fa45fe 8317 break;
5d7cb8df 8318 case DW_TAG_module:
4d4ec4e5 8319 cu->processing_has_namespace_info = 1;
5d7cb8df
JK
8320 read_module (die, cu);
8321 break;
d9fa45fe 8322 case DW_TAG_imported_declaration:
74921315
KS
8323 cu->processing_has_namespace_info = 1;
8324 if (read_namespace_alias (die, cu))
8325 break;
8326 /* The declaration is not a global namespace alias: fall through. */
d9fa45fe 8327 case DW_TAG_imported_module:
4d4ec4e5 8328 cu->processing_has_namespace_info = 1;
27aa8d6a
SW
8329 if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
8330 || cu->language != language_fortran))
8331 complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
8332 dwarf_tag_name (die->tag));
8333 read_import_statement (die, cu);
d9fa45fe 8334 break;
95554aad
TT
8335
8336 case DW_TAG_imported_unit:
8337 process_imported_unit_die (die, cu);
8338 break;
8339
c906108c 8340 default:
e7c27a73 8341 new_symbol (die, NULL, cu);
c906108c
SS
8342 break;
8343 }
adde2bff
DE
8344
8345 do_cleanups (in_process);
c906108c 8346}
ca69b9e6
DE
8347\f
8348/* DWARF name computation. */
c906108c 8349
94af9270
KS
8350/* A helper function for dwarf2_compute_name which determines whether DIE
8351 needs to have the name of the scope prepended to the name listed in the
8352 die. */
8353
8354static int
8355die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
8356{
1c809c68
TT
8357 struct attribute *attr;
8358
94af9270
KS
8359 switch (die->tag)
8360 {
8361 case DW_TAG_namespace:
8362 case DW_TAG_typedef:
8363 case DW_TAG_class_type:
8364 case DW_TAG_interface_type:
8365 case DW_TAG_structure_type:
8366 case DW_TAG_union_type:
8367 case DW_TAG_enumeration_type:
8368 case DW_TAG_enumerator:
8369 case DW_TAG_subprogram:
08a76f8a 8370 case DW_TAG_inlined_subroutine:
94af9270 8371 case DW_TAG_member:
74921315 8372 case DW_TAG_imported_declaration:
94af9270
KS
8373 return 1;
8374
8375 case DW_TAG_variable:
c2b0a229 8376 case DW_TAG_constant:
94af9270
KS
8377 /* We only need to prefix "globally" visible variables. These include
8378 any variable marked with DW_AT_external or any variable that
8379 lives in a namespace. [Variables in anonymous namespaces
8380 require prefixing, but they are not DW_AT_external.] */
8381
8382 if (dwarf2_attr (die, DW_AT_specification, cu))
8383 {
8384 struct dwarf2_cu *spec_cu = cu;
9a619af0 8385
94af9270
KS
8386 return die_needs_namespace (die_specification (die, &spec_cu),
8387 spec_cu);
8388 }
8389
1c809c68 8390 attr = dwarf2_attr (die, DW_AT_external, cu);
f55ee35c
JK
8391 if (attr == NULL && die->parent->tag != DW_TAG_namespace
8392 && die->parent->tag != DW_TAG_module)
1c809c68
TT
8393 return 0;
8394 /* A variable in a lexical block of some kind does not need a
8395 namespace, even though in C++ such variables may be external
8396 and have a mangled name. */
8397 if (die->parent->tag == DW_TAG_lexical_block
8398 || die->parent->tag == DW_TAG_try_block
1054b214
TT
8399 || die->parent->tag == DW_TAG_catch_block
8400 || die->parent->tag == DW_TAG_subprogram)
1c809c68
TT
8401 return 0;
8402 return 1;
94af9270
KS
8403
8404 default:
8405 return 0;
8406 }
8407}
8408
98bfdba5
PA
8409/* Retrieve the last character from a mem_file. */
8410
8411static void
8412do_ui_file_peek_last (void *object, const char *buffer, long length)
8413{
8414 char *last_char_p = (char *) object;
8415
8416 if (length > 0)
8417 *last_char_p = buffer[length - 1];
8418}
8419
94af9270 8420/* Compute the fully qualified name of DIE in CU. If PHYSNAME is nonzero,
a766d390
DE
8421 compute the physname for the object, which include a method's:
8422 - formal parameters (C++/Java),
8423 - receiver type (Go),
8424 - return type (Java).
8425
8426 The term "physname" is a bit confusing.
8427 For C++, for example, it is the demangled name.
8428 For Go, for example, it's the mangled name.
94af9270 8429
af6b7be1
JB
8430 For Ada, return the DIE's linkage name rather than the fully qualified
8431 name. PHYSNAME is ignored..
8432
94af9270
KS
8433 The result is allocated on the objfile_obstack and canonicalized. */
8434
8435static const char *
15d034d0
TT
8436dwarf2_compute_name (const char *name,
8437 struct die_info *die, struct dwarf2_cu *cu,
94af9270
KS
8438 int physname)
8439{
bb5ed363
DE
8440 struct objfile *objfile = cu->objfile;
8441
94af9270
KS
8442 if (name == NULL)
8443 name = dwarf2_name (die, cu);
8444
f55ee35c
JK
8445 /* For Fortran GDB prefers DW_AT_*linkage_name if present but otherwise
8446 compute it by typename_concat inside GDB. */
8447 if (cu->language == language_ada
8448 || (cu->language == language_fortran && physname))
8449 {
8450 /* For Ada unit, we prefer the linkage name over the name, as
8451 the former contains the exported name, which the user expects
8452 to be able to reference. Ideally, we want the user to be able
8453 to reference this entity using either natural or linkage name,
8454 but we haven't started looking at this enhancement yet. */
8455 struct attribute *attr;
8456
8457 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8458 if (attr == NULL)
8459 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8460 if (attr && DW_STRING (attr))
8461 return DW_STRING (attr);
8462 }
8463
94af9270
KS
8464 /* These are the only languages we know how to qualify names in. */
8465 if (name != NULL
f55ee35c 8466 && (cu->language == language_cplus || cu->language == language_java
45280282 8467 || cu->language == language_fortran || cu->language == language_d))
94af9270
KS
8468 {
8469 if (die_needs_namespace (die, cu))
8470 {
8471 long length;
0d5cff50 8472 const char *prefix;
94af9270 8473 struct ui_file *buf;
34a68019
TT
8474 char *intermediate_name;
8475 const char *canonical_name = NULL;
94af9270
KS
8476
8477 prefix = determine_prefix (die, cu);
8478 buf = mem_fileopen ();
8479 if (*prefix != '\0')
8480 {
f55ee35c
JK
8481 char *prefixed_name = typename_concat (NULL, prefix, name,
8482 physname, cu);
9a619af0 8483
94af9270
KS
8484 fputs_unfiltered (prefixed_name, buf);
8485 xfree (prefixed_name);
8486 }
8487 else
62d5b8da 8488 fputs_unfiltered (name, buf);
94af9270 8489
98bfdba5
PA
8490 /* Template parameters may be specified in the DIE's DW_AT_name, or
8491 as children with DW_TAG_template_type_param or
8492 DW_TAG_value_type_param. If the latter, add them to the name
8493 here. If the name already has template parameters, then
8494 skip this step; some versions of GCC emit both, and
8495 it is more efficient to use the pre-computed name.
8496
8497 Something to keep in mind about this process: it is very
8498 unlikely, or in some cases downright impossible, to produce
8499 something that will match the mangled name of a function.
8500 If the definition of the function has the same debug info,
8501 we should be able to match up with it anyway. But fallbacks
8502 using the minimal symbol, for instance to find a method
8503 implemented in a stripped copy of libstdc++, will not work.
8504 If we do not have debug info for the definition, we will have to
8505 match them up some other way.
8506
8507 When we do name matching there is a related problem with function
8508 templates; two instantiated function templates are allowed to
8509 differ only by their return types, which we do not add here. */
8510
8511 if (cu->language == language_cplus && strchr (name, '<') == NULL)
8512 {
8513 struct attribute *attr;
8514 struct die_info *child;
8515 int first = 1;
8516
8517 die->building_fullname = 1;
8518
8519 for (child = die->child; child != NULL; child = child->sibling)
8520 {
8521 struct type *type;
12df843f 8522 LONGEST value;
d521ce57 8523 const gdb_byte *bytes;
98bfdba5
PA
8524 struct dwarf2_locexpr_baton *baton;
8525 struct value *v;
8526
8527 if (child->tag != DW_TAG_template_type_param
8528 && child->tag != DW_TAG_template_value_param)
8529 continue;
8530
8531 if (first)
8532 {
8533 fputs_unfiltered ("<", buf);
8534 first = 0;
8535 }
8536 else
8537 fputs_unfiltered (", ", buf);
8538
8539 attr = dwarf2_attr (child, DW_AT_type, cu);
8540 if (attr == NULL)
8541 {
8542 complaint (&symfile_complaints,
8543 _("template parameter missing DW_AT_type"));
8544 fputs_unfiltered ("UNKNOWN_TYPE", buf);
8545 continue;
8546 }
8547 type = die_type (child, cu);
8548
8549 if (child->tag == DW_TAG_template_type_param)
8550 {
79d43c61 8551 c_print_type (type, "", buf, -1, 0, &type_print_raw_options);
98bfdba5
PA
8552 continue;
8553 }
8554
8555 attr = dwarf2_attr (child, DW_AT_const_value, cu);
8556 if (attr == NULL)
8557 {
8558 complaint (&symfile_complaints,
3e43a32a
MS
8559 _("template parameter missing "
8560 "DW_AT_const_value"));
98bfdba5
PA
8561 fputs_unfiltered ("UNKNOWN_VALUE", buf);
8562 continue;
8563 }
8564
8565 dwarf2_const_value_attr (attr, type, name,
8566 &cu->comp_unit_obstack, cu,
8567 &value, &bytes, &baton);
8568
8569 if (TYPE_NOSIGN (type))
8570 /* GDB prints characters as NUMBER 'CHAR'. If that's
8571 changed, this can use value_print instead. */
8572 c_printchar (value, type, buf);
8573 else
8574 {
8575 struct value_print_options opts;
8576
8577 if (baton != NULL)
8578 v = dwarf2_evaluate_loc_desc (type, NULL,
8579 baton->data,
8580 baton->size,
8581 baton->per_cu);
8582 else if (bytes != NULL)
8583 {
8584 v = allocate_value (type);
8585 memcpy (value_contents_writeable (v), bytes,
8586 TYPE_LENGTH (type));
8587 }
8588 else
8589 v = value_from_longest (type, value);
8590
3e43a32a
MS
8591 /* Specify decimal so that we do not depend on
8592 the radix. */
98bfdba5
PA
8593 get_formatted_print_options (&opts, 'd');
8594 opts.raw = 1;
8595 value_print (v, buf, &opts);
8596 release_value (v);
8597 value_free (v);
8598 }
8599 }
8600
8601 die->building_fullname = 0;
8602
8603 if (!first)
8604 {
8605 /* Close the argument list, with a space if necessary
8606 (nested templates). */
8607 char last_char = '\0';
8608 ui_file_put (buf, do_ui_file_peek_last, &last_char);
8609 if (last_char == '>')
8610 fputs_unfiltered (" >", buf);
8611 else
8612 fputs_unfiltered (">", buf);
8613 }
8614 }
8615
94af9270
KS
8616 /* For Java and C++ methods, append formal parameter type
8617 information, if PHYSNAME. */
6e70227d 8618
94af9270
KS
8619 if (physname && die->tag == DW_TAG_subprogram
8620 && (cu->language == language_cplus
8621 || cu->language == language_java))
8622 {
8623 struct type *type = read_type_die (die, cu);
8624
79d43c61
TT
8625 c_type_print_args (type, buf, 1, cu->language,
8626 &type_print_raw_options);
94af9270
KS
8627
8628 if (cu->language == language_java)
8629 {
8630 /* For java, we must append the return type to method
0963b4bd 8631 names. */
94af9270
KS
8632 if (die->tag == DW_TAG_subprogram)
8633 java_print_type (TYPE_TARGET_TYPE (type), "", buf,
79d43c61 8634 0, 0, &type_print_raw_options);
94af9270
KS
8635 }
8636 else if (cu->language == language_cplus)
8637 {
60430eff
DJ
8638 /* Assume that an artificial first parameter is
8639 "this", but do not crash if it is not. RealView
8640 marks unnamed (and thus unused) parameters as
8641 artificial; there is no way to differentiate
8642 the two cases. */
94af9270
KS
8643 if (TYPE_NFIELDS (type) > 0
8644 && TYPE_FIELD_ARTIFICIAL (type, 0)
60430eff 8645 && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
3e43a32a
MS
8646 && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
8647 0))))
94af9270
KS
8648 fputs_unfiltered (" const", buf);
8649 }
8650 }
8651
34a68019 8652 intermediate_name = ui_file_xstrdup (buf, &length);
94af9270
KS
8653 ui_file_delete (buf);
8654
8655 if (cu->language == language_cplus)
34a68019
TT
8656 canonical_name
8657 = dwarf2_canonicalize_name (intermediate_name, cu,
8658 &objfile->per_bfd->storage_obstack);
8659
8660 /* If we only computed INTERMEDIATE_NAME, or if
8661 INTERMEDIATE_NAME is already canonical, then we need to
8662 copy it to the appropriate obstack. */
8663 if (canonical_name == NULL || canonical_name == intermediate_name)
8664 name = obstack_copy0 (&objfile->per_bfd->storage_obstack,
8665 intermediate_name,
8666 strlen (intermediate_name));
8667 else
8668 name = canonical_name;
9a619af0 8669
34a68019 8670 xfree (intermediate_name);
94af9270
KS
8671 }
8672 }
8673
8674 return name;
8675}
8676
0114d602
DJ
8677/* Return the fully qualified name of DIE, based on its DW_AT_name.
8678 If scope qualifiers are appropriate they will be added. The result
34a68019 8679 will be allocated on the storage_obstack, or NULL if the DIE does
94af9270
KS
8680 not have a name. NAME may either be from a previous call to
8681 dwarf2_name or NULL.
8682
0963b4bd 8683 The output string will be canonicalized (if C++/Java). */
0114d602
DJ
8684
8685static const char *
15d034d0 8686dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
0114d602 8687{
94af9270
KS
8688 return dwarf2_compute_name (name, die, cu, 0);
8689}
0114d602 8690
94af9270
KS
8691/* Construct a physname for the given DIE in CU. NAME may either be
8692 from a previous call to dwarf2_name or NULL. The result will be
8693 allocated on the objfile_objstack or NULL if the DIE does not have a
8694 name.
0114d602 8695
94af9270 8696 The output string will be canonicalized (if C++/Java). */
0114d602 8697
94af9270 8698static const char *
15d034d0 8699dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
94af9270 8700{
bb5ed363 8701 struct objfile *objfile = cu->objfile;
900e11f9
JK
8702 struct attribute *attr;
8703 const char *retval, *mangled = NULL, *canon = NULL;
8704 struct cleanup *back_to;
8705 int need_copy = 1;
8706
8707 /* In this case dwarf2_compute_name is just a shortcut not building anything
8708 on its own. */
8709 if (!die_needs_namespace (die, cu))
8710 return dwarf2_compute_name (name, die, cu, 1);
8711
8712 back_to = make_cleanup (null_cleanup, NULL);
8713
8714 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8715 if (!attr)
8716 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8717
8718 /* DW_AT_linkage_name is missing in some cases - depend on what GDB
8719 has computed. */
8720 if (attr && DW_STRING (attr))
8721 {
8722 char *demangled;
8723
8724 mangled = DW_STRING (attr);
8725
8726 /* Use DMGL_RET_DROP for C++ template functions to suppress their return
8727 type. It is easier for GDB users to search for such functions as
8728 `name(params)' than `long name(params)'. In such case the minimal
8729 symbol names do not match the full symbol names but for template
8730 functions there is never a need to look up their definition from their
8731 declaration so the only disadvantage remains the minimal symbol
8732 variant `long name(params)' does not have the proper inferior type.
8733 */
8734
a766d390
DE
8735 if (cu->language == language_go)
8736 {
8737 /* This is a lie, but we already lie to the caller new_symbol_full.
8738 new_symbol_full assumes we return the mangled name.
8739 This just undoes that lie until things are cleaned up. */
8740 demangled = NULL;
8741 }
8742 else
8743 {
8de20a37
TT
8744 demangled = gdb_demangle (mangled,
8745 (DMGL_PARAMS | DMGL_ANSI
8746 | (cu->language == language_java
8747 ? DMGL_JAVA | DMGL_RET_POSTFIX
8748 : DMGL_RET_DROP)));
a766d390 8749 }
900e11f9
JK
8750 if (demangled)
8751 {
8752 make_cleanup (xfree, demangled);
8753 canon = demangled;
8754 }
8755 else
8756 {
8757 canon = mangled;
8758 need_copy = 0;
8759 }
8760 }
8761
8762 if (canon == NULL || check_physname)
8763 {
8764 const char *physname = dwarf2_compute_name (name, die, cu, 1);
8765
8766 if (canon != NULL && strcmp (physname, canon) != 0)
8767 {
8768 /* It may not mean a bug in GDB. The compiler could also
8769 compute DW_AT_linkage_name incorrectly. But in such case
8770 GDB would need to be bug-to-bug compatible. */
8771
8772 complaint (&symfile_complaints,
8773 _("Computed physname <%s> does not match demangled <%s> "
8774 "(from linkage <%s>) - DIE at 0x%x [in module %s]"),
4262abfb
JK
8775 physname, canon, mangled, die->offset.sect_off,
8776 objfile_name (objfile));
900e11f9
JK
8777
8778 /* Prefer DW_AT_linkage_name (in the CANON form) - when it
8779 is available here - over computed PHYSNAME. It is safer
8780 against both buggy GDB and buggy compilers. */
8781
8782 retval = canon;
8783 }
8784 else
8785 {
8786 retval = physname;
8787 need_copy = 0;
8788 }
8789 }
8790 else
8791 retval = canon;
8792
8793 if (need_copy)
34a68019
TT
8794 retval = obstack_copy0 (&objfile->per_bfd->storage_obstack,
8795 retval, strlen (retval));
900e11f9
JK
8796
8797 do_cleanups (back_to);
8798 return retval;
0114d602
DJ
8799}
8800
74921315
KS
8801/* Inspect DIE in CU for a namespace alias. If one exists, record
8802 a new symbol for it.
8803
8804 Returns 1 if a namespace alias was recorded, 0 otherwise. */
8805
8806static int
8807read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
8808{
8809 struct attribute *attr;
8810
8811 /* If the die does not have a name, this is not a namespace
8812 alias. */
8813 attr = dwarf2_attr (die, DW_AT_name, cu);
8814 if (attr != NULL)
8815 {
8816 int num;
8817 struct die_info *d = die;
8818 struct dwarf2_cu *imported_cu = cu;
8819
8820 /* If the compiler has nested DW_AT_imported_declaration DIEs,
8821 keep inspecting DIEs until we hit the underlying import. */
8822#define MAX_NESTED_IMPORTED_DECLARATIONS 100
8823 for (num = 0; num < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
8824 {
8825 attr = dwarf2_attr (d, DW_AT_import, cu);
8826 if (attr == NULL)
8827 break;
8828
8829 d = follow_die_ref (d, attr, &imported_cu);
8830 if (d->tag != DW_TAG_imported_declaration)
8831 break;
8832 }
8833
8834 if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
8835 {
8836 complaint (&symfile_complaints,
8837 _("DIE at 0x%x has too many recursively imported "
8838 "declarations"), d->offset.sect_off);
8839 return 0;
8840 }
8841
8842 if (attr != NULL)
8843 {
8844 struct type *type;
8845 sect_offset offset = dwarf2_get_ref_die_offset (attr);
8846
8847 type = get_die_type_at_offset (offset, cu->per_cu);
8848 if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
8849 {
8850 /* This declaration is a global namespace alias. Add
8851 a symbol for it whose type is the aliased namespace. */
8852 new_symbol (die, type, cu);
8853 return 1;
8854 }
8855 }
8856 }
8857
8858 return 0;
8859}
8860
27aa8d6a
SW
8861/* Read the import statement specified by the given die and record it. */
8862
8863static void
8864read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
8865{
bb5ed363 8866 struct objfile *objfile = cu->objfile;
27aa8d6a 8867 struct attribute *import_attr;
32019081 8868 struct die_info *imported_die, *child_die;
de4affc9 8869 struct dwarf2_cu *imported_cu;
27aa8d6a 8870 const char *imported_name;
794684b6 8871 const char *imported_name_prefix;
13387711
SW
8872 const char *canonical_name;
8873 const char *import_alias;
8874 const char *imported_declaration = NULL;
794684b6 8875 const char *import_prefix;
32019081
JK
8876 VEC (const_char_ptr) *excludes = NULL;
8877 struct cleanup *cleanups;
13387711 8878
27aa8d6a
SW
8879 import_attr = dwarf2_attr (die, DW_AT_import, cu);
8880 if (import_attr == NULL)
8881 {
8882 complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8883 dwarf_tag_name (die->tag));
8884 return;
8885 }
8886
de4affc9
CC
8887 imported_cu = cu;
8888 imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
8889 imported_name = dwarf2_name (imported_die, imported_cu);
27aa8d6a
SW
8890 if (imported_name == NULL)
8891 {
8892 /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
8893
8894 The import in the following code:
8895 namespace A
8896 {
8897 typedef int B;
8898 }
8899
8900 int main ()
8901 {
8902 using A::B;
8903 B b;
8904 return b;
8905 }
8906
8907 ...
8908 <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
8909 <52> DW_AT_decl_file : 1
8910 <53> DW_AT_decl_line : 6
8911 <54> DW_AT_import : <0x75>
8912 <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
8913 <59> DW_AT_name : B
8914 <5b> DW_AT_decl_file : 1
8915 <5c> DW_AT_decl_line : 2
8916 <5d> DW_AT_type : <0x6e>
8917 ...
8918 <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
8919 <76> DW_AT_byte_size : 4
8920 <77> DW_AT_encoding : 5 (signed)
8921
8922 imports the wrong die ( 0x75 instead of 0x58 ).
8923 This case will be ignored until the gcc bug is fixed. */
8924 return;
8925 }
8926
82856980
SW
8927 /* Figure out the local name after import. */
8928 import_alias = dwarf2_name (die, cu);
27aa8d6a 8929
794684b6
SW
8930 /* Figure out where the statement is being imported to. */
8931 import_prefix = determine_prefix (die, cu);
8932
8933 /* Figure out what the scope of the imported die is and prepend it
8934 to the name of the imported die. */
de4affc9 8935 imported_name_prefix = determine_prefix (imported_die, imported_cu);
794684b6 8936
f55ee35c
JK
8937 if (imported_die->tag != DW_TAG_namespace
8938 && imported_die->tag != DW_TAG_module)
794684b6 8939 {
13387711
SW
8940 imported_declaration = imported_name;
8941 canonical_name = imported_name_prefix;
794684b6 8942 }
13387711 8943 else if (strlen (imported_name_prefix) > 0)
12aaed36 8944 canonical_name = obconcat (&objfile->objfile_obstack,
45280282
IB
8945 imported_name_prefix,
8946 (cu->language == language_d ? "." : "::"),
8947 imported_name, (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. */
45280282
IB
11450 if ((cu->language == language_cplus
11451 || cu->language == language_fortran
11452 || cu->language == language_d)
4d4ec4e5 11453 && cu->processing_has_namespace_info)
195a3f6c
TT
11454 block_set_scope (block, determine_prefix (die, cu),
11455 &objfile->objfile_obstack);
df8a16a1 11456
801e3a5b
JB
11457 /* If we have address ranges, record them. */
11458 dwarf2_record_block_ranges (die, block, baseaddr, cu);
6e70227d 11459
fe978cb0 11460 gdbarch_make_symbol_special (gdbarch, newobj->name, objfile);
3e29f34a 11461
34eaf542
TT
11462 /* Attach template arguments to function. */
11463 if (! VEC_empty (symbolp, template_args))
11464 {
11465 gdb_assert (templ_func != NULL);
11466
11467 templ_func->n_template_arguments = VEC_length (symbolp, template_args);
11468 templ_func->template_arguments
11469 = obstack_alloc (&objfile->objfile_obstack,
11470 (templ_func->n_template_arguments
11471 * sizeof (struct symbol *)));
11472 memcpy (templ_func->template_arguments,
11473 VEC_address (symbolp, template_args),
11474 (templ_func->n_template_arguments * sizeof (struct symbol *)));
11475 VEC_free (symbolp, template_args);
11476 }
11477
208d8187
JB
11478 /* In C++, we can have functions nested inside functions (e.g., when
11479 a function declares a class that has methods). This means that
11480 when we finish processing a function scope, we may need to go
11481 back to building a containing block's symbol lists. */
fe978cb0
PA
11482 local_symbols = newobj->locals;
11483 using_directives = newobj->using_directives;
208d8187 11484
921e78cf
JB
11485 /* If we've finished processing a top-level function, subsequent
11486 symbols go in the file symbol list. */
11487 if (outermost_context_p ())
e142c38c 11488 cu->list_in_scope = &file_symbols;
c906108c
SS
11489}
11490
11491/* Process all the DIES contained within a lexical block scope. Start
11492 a new scope, process the dies, and then close the scope. */
11493
11494static void
e7c27a73 11495read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 11496{
e7c27a73 11497 struct objfile *objfile = cu->objfile;
3e29f34a 11498 struct gdbarch *gdbarch = get_objfile_arch (objfile);
fe978cb0 11499 struct context_stack *newobj;
c906108c
SS
11500 CORE_ADDR lowpc, highpc;
11501 struct die_info *child_die;
e142c38c
DJ
11502 CORE_ADDR baseaddr;
11503
11504 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c
SS
11505
11506 /* Ignore blocks with missing or invalid low and high pc attributes. */
af34e669
DJ
11507 /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
11508 as multiple lexical blocks? Handling children in a sane way would
6e70227d 11509 be nasty. Might be easier to properly extend generic blocks to
af34e669 11510 describe ranges. */
d85a05f0 11511 if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
c906108c 11512 return;
3e29f34a
MR
11513 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11514 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
c906108c
SS
11515
11516 push_context (0, lowpc);
639d11d3 11517 if (die->child != NULL)
c906108c 11518 {
639d11d3 11519 child_die = die->child;
c906108c
SS
11520 while (child_die && child_die->tag)
11521 {
e7c27a73 11522 process_die (child_die, cu);
c906108c
SS
11523 child_die = sibling_die (child_die);
11524 }
11525 }
3ea89b92 11526 inherit_abstract_dies (die, cu);
fe978cb0 11527 newobj = pop_context ();
c906108c 11528
8540c487 11529 if (local_symbols != NULL || using_directives != NULL)
c906108c 11530 {
801e3a5b 11531 struct block *block
fe978cb0
PA
11532 = finish_block (0, &local_symbols, newobj->old_blocks,
11533 newobj->start_addr, highpc);
801e3a5b
JB
11534
11535 /* Note that recording ranges after traversing children, as we
11536 do here, means that recording a parent's ranges entails
11537 walking across all its children's ranges as they appear in
11538 the address map, which is quadratic behavior.
11539
11540 It would be nicer to record the parent's ranges before
11541 traversing its children, simply overriding whatever you find
11542 there. But since we don't even decide whether to create a
11543 block until after we've traversed its children, that's hard
11544 to do. */
11545 dwarf2_record_block_ranges (die, block, baseaddr, cu);
c906108c 11546 }
fe978cb0
PA
11547 local_symbols = newobj->locals;
11548 using_directives = newobj->using_directives;
c906108c
SS
11549}
11550
96408a79
SA
11551/* Read in DW_TAG_GNU_call_site and insert it to CU->call_site_htab. */
11552
11553static void
11554read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
11555{
11556 struct objfile *objfile = cu->objfile;
11557 struct gdbarch *gdbarch = get_objfile_arch (objfile);
11558 CORE_ADDR pc, baseaddr;
11559 struct attribute *attr;
11560 struct call_site *call_site, call_site_local;
11561 void **slot;
11562 int nparams;
11563 struct die_info *child_die;
11564
11565 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11566
11567 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11568 if (!attr)
11569 {
11570 complaint (&symfile_complaints,
11571 _("missing DW_AT_low_pc for DW_TAG_GNU_call_site "
11572 "DIE 0x%x [in module %s]"),
4262abfb 11573 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11574 return;
11575 }
31aa7e4e 11576 pc = attr_value_as_address (attr) + baseaddr;
3e29f34a 11577 pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
96408a79
SA
11578
11579 if (cu->call_site_htab == NULL)
11580 cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
11581 NULL, &objfile->objfile_obstack,
11582 hashtab_obstack_allocate, NULL);
11583 call_site_local.pc = pc;
11584 slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
11585 if (*slot != NULL)
11586 {
11587 complaint (&symfile_complaints,
11588 _("Duplicate PC %s for DW_TAG_GNU_call_site "
11589 "DIE 0x%x [in module %s]"),
4262abfb
JK
11590 paddress (gdbarch, pc), die->offset.sect_off,
11591 objfile_name (objfile));
96408a79
SA
11592 return;
11593 }
11594
11595 /* Count parameters at the caller. */
11596
11597 nparams = 0;
11598 for (child_die = die->child; child_die && child_die->tag;
11599 child_die = sibling_die (child_die))
11600 {
11601 if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11602 {
11603 complaint (&symfile_complaints,
11604 _("Tag %d is not DW_TAG_GNU_call_site_parameter in "
11605 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb
JK
11606 child_die->tag, child_die->offset.sect_off,
11607 objfile_name (objfile));
96408a79
SA
11608 continue;
11609 }
11610
11611 nparams++;
11612 }
11613
11614 call_site = obstack_alloc (&objfile->objfile_obstack,
11615 (sizeof (*call_site)
11616 + (sizeof (*call_site->parameter)
11617 * (nparams - 1))));
11618 *slot = call_site;
11619 memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
11620 call_site->pc = pc;
11621
11622 if (dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
11623 {
11624 struct die_info *func_die;
11625
11626 /* Skip also over DW_TAG_inlined_subroutine. */
11627 for (func_die = die->parent;
11628 func_die && func_die->tag != DW_TAG_subprogram
11629 && func_die->tag != DW_TAG_subroutine_type;
11630 func_die = func_die->parent);
11631
11632 /* DW_AT_GNU_all_call_sites is a superset
11633 of DW_AT_GNU_all_tail_call_sites. */
11634 if (func_die
11635 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
11636 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
11637 {
11638 /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
11639 not complete. But keep CALL_SITE for look ups via call_site_htab,
11640 both the initial caller containing the real return address PC and
11641 the final callee containing the current PC of a chain of tail
11642 calls do not need to have the tail call list complete. But any
11643 function candidate for a virtual tail call frame searched via
11644 TYPE_TAIL_CALL_LIST must have the tail call list complete to be
11645 determined unambiguously. */
11646 }
11647 else
11648 {
11649 struct type *func_type = NULL;
11650
11651 if (func_die)
11652 func_type = get_die_type (func_die, cu);
11653 if (func_type != NULL)
11654 {
11655 gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
11656
11657 /* Enlist this call site to the function. */
11658 call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
11659 TYPE_TAIL_CALL_LIST (func_type) = call_site;
11660 }
11661 else
11662 complaint (&symfile_complaints,
11663 _("Cannot find function owning DW_TAG_GNU_call_site "
11664 "DIE 0x%x [in module %s]"),
4262abfb 11665 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11666 }
11667 }
11668
11669 attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
11670 if (attr == NULL)
11671 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11672 SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
11673 if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
11674 /* Keep NULL DWARF_BLOCK. */;
11675 else if (attr_form_is_block (attr))
11676 {
11677 struct dwarf2_locexpr_baton *dlbaton;
11678
11679 dlbaton = obstack_alloc (&objfile->objfile_obstack, sizeof (*dlbaton));
11680 dlbaton->data = DW_BLOCK (attr)->data;
11681 dlbaton->size = DW_BLOCK (attr)->size;
11682 dlbaton->per_cu = cu->per_cu;
11683
11684 SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
11685 }
7771576e 11686 else if (attr_form_is_ref (attr))
96408a79 11687 {
96408a79
SA
11688 struct dwarf2_cu *target_cu = cu;
11689 struct die_info *target_die;
11690
ac9ec31b 11691 target_die = follow_die_ref (die, attr, &target_cu);
96408a79
SA
11692 gdb_assert (target_cu->objfile == objfile);
11693 if (die_is_declaration (target_die, target_cu))
11694 {
9112db09
JK
11695 const char *target_physname = NULL;
11696 struct attribute *target_attr;
11697
11698 /* Prefer the mangled name; otherwise compute the demangled one. */
11699 target_attr = dwarf2_attr (target_die, DW_AT_linkage_name, target_cu);
11700 if (target_attr == NULL)
11701 target_attr = dwarf2_attr (target_die, DW_AT_MIPS_linkage_name,
11702 target_cu);
11703 if (target_attr != NULL && DW_STRING (target_attr) != NULL)
11704 target_physname = DW_STRING (target_attr);
11705 else
11706 target_physname = dwarf2_physname (NULL, target_die, target_cu);
96408a79
SA
11707 if (target_physname == NULL)
11708 complaint (&symfile_complaints,
11709 _("DW_AT_GNU_call_site_target target DIE has invalid "
11710 "physname, for referencing DIE 0x%x [in module %s]"),
4262abfb 11711 die->offset.sect_off, objfile_name (objfile));
96408a79 11712 else
7d455152 11713 SET_FIELD_PHYSNAME (call_site->target, target_physname);
96408a79
SA
11714 }
11715 else
11716 {
11717 CORE_ADDR lowpc;
11718
11719 /* DW_AT_entry_pc should be preferred. */
11720 if (!dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL))
11721 complaint (&symfile_complaints,
11722 _("DW_AT_GNU_call_site_target target DIE has invalid "
11723 "low pc, for referencing DIE 0x%x [in module %s]"),
4262abfb 11724 die->offset.sect_off, objfile_name (objfile));
96408a79 11725 else
3e29f34a
MR
11726 {
11727 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11728 SET_FIELD_PHYSADDR (call_site->target, lowpc);
11729 }
96408a79
SA
11730 }
11731 }
11732 else
11733 complaint (&symfile_complaints,
11734 _("DW_TAG_GNU_call_site DW_AT_GNU_call_site_target is neither "
11735 "block nor reference, for DIE 0x%x [in module %s]"),
4262abfb 11736 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11737
11738 call_site->per_cu = cu->per_cu;
11739
11740 for (child_die = die->child;
11741 child_die && child_die->tag;
11742 child_die = sibling_die (child_die))
11743 {
96408a79 11744 struct call_site_parameter *parameter;
1788b2d3 11745 struct attribute *loc, *origin;
96408a79
SA
11746
11747 if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11748 {
11749 /* Already printed the complaint above. */
11750 continue;
11751 }
11752
11753 gdb_assert (call_site->parameter_count < nparams);
11754 parameter = &call_site->parameter[call_site->parameter_count];
11755
1788b2d3
JK
11756 /* DW_AT_location specifies the register number or DW_AT_abstract_origin
11757 specifies DW_TAG_formal_parameter. Value of the data assumed for the
11758 register is contained in DW_AT_GNU_call_site_value. */
96408a79 11759
24c5c679 11760 loc = dwarf2_attr (child_die, DW_AT_location, cu);
1788b2d3 11761 origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
7771576e 11762 if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
1788b2d3
JK
11763 {
11764 sect_offset offset;
11765
11766 parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
11767 offset = dwarf2_get_ref_die_offset (origin);
d76b7dbc
JK
11768 if (!offset_in_cu_p (&cu->header, offset))
11769 {
11770 /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
11771 binding can be done only inside one CU. Such referenced DIE
11772 therefore cannot be even moved to DW_TAG_partial_unit. */
11773 complaint (&symfile_complaints,
11774 _("DW_AT_abstract_origin offset is not in CU for "
11775 "DW_TAG_GNU_call_site child DIE 0x%x "
11776 "[in module %s]"),
4262abfb 11777 child_die->offset.sect_off, objfile_name (objfile));
d76b7dbc
JK
11778 continue;
11779 }
1788b2d3
JK
11780 parameter->u.param_offset.cu_off = (offset.sect_off
11781 - cu->header.offset.sect_off);
11782 }
11783 else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
96408a79
SA
11784 {
11785 complaint (&symfile_complaints,
11786 _("No DW_FORM_block* DW_AT_location for "
11787 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11788 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11789 continue;
11790 }
24c5c679 11791 else
96408a79 11792 {
24c5c679
JK
11793 parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
11794 (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
11795 if (parameter->u.dwarf_reg != -1)
11796 parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
11797 else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
11798 &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
11799 &parameter->u.fb_offset))
11800 parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
11801 else
11802 {
11803 complaint (&symfile_complaints,
11804 _("Only single DW_OP_reg or DW_OP_fbreg is supported "
11805 "for DW_FORM_block* DW_AT_location is supported for "
11806 "DW_TAG_GNU_call_site child DIE 0x%x "
11807 "[in module %s]"),
4262abfb 11808 child_die->offset.sect_off, objfile_name (objfile));
24c5c679
JK
11809 continue;
11810 }
96408a79
SA
11811 }
11812
11813 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
11814 if (!attr_form_is_block (attr))
11815 {
11816 complaint (&symfile_complaints,
11817 _("No DW_FORM_block* DW_AT_GNU_call_site_value for "
11818 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11819 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11820 continue;
11821 }
11822 parameter->value = DW_BLOCK (attr)->data;
11823 parameter->value_size = DW_BLOCK (attr)->size;
11824
11825 /* Parameters are not pre-cleared by memset above. */
11826 parameter->data_value = NULL;
11827 parameter->data_value_size = 0;
11828 call_site->parameter_count++;
11829
11830 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
11831 if (attr)
11832 {
11833 if (!attr_form_is_block (attr))
11834 complaint (&symfile_complaints,
11835 _("No DW_FORM_block* DW_AT_GNU_call_site_data_value for "
11836 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11837 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11838 else
11839 {
11840 parameter->data_value = DW_BLOCK (attr)->data;
11841 parameter->data_value_size = DW_BLOCK (attr)->size;
11842 }
11843 }
11844 }
11845}
11846
43039443 11847/* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
ff013f42
JK
11848 Return 1 if the attributes are present and valid, otherwise, return 0.
11849 If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'. */
43039443
JK
11850
11851static int
11852dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
ff013f42
JK
11853 CORE_ADDR *high_return, struct dwarf2_cu *cu,
11854 struct partial_symtab *ranges_pst)
43039443
JK
11855{
11856 struct objfile *objfile = cu->objfile;
3e29f34a 11857 struct gdbarch *gdbarch = get_objfile_arch (objfile);
43039443
JK
11858 struct comp_unit_head *cu_header = &cu->header;
11859 bfd *obfd = objfile->obfd;
11860 unsigned int addr_size = cu_header->addr_size;
11861 CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
11862 /* Base address selection entry. */
11863 CORE_ADDR base;
11864 int found_base;
11865 unsigned int dummy;
d521ce57 11866 const gdb_byte *buffer;
43039443
JK
11867 CORE_ADDR marker;
11868 int low_set;
11869 CORE_ADDR low = 0;
11870 CORE_ADDR high = 0;
ff013f42 11871 CORE_ADDR baseaddr;
43039443 11872
d00adf39
DE
11873 found_base = cu->base_known;
11874 base = cu->base_address;
43039443 11875
be391dca 11876 dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
dce234bc 11877 if (offset >= dwarf2_per_objfile->ranges.size)
43039443
JK
11878 {
11879 complaint (&symfile_complaints,
11880 _("Offset %d out of bounds for DW_AT_ranges attribute"),
11881 offset);
11882 return 0;
11883 }
dce234bc 11884 buffer = dwarf2_per_objfile->ranges.buffer + offset;
43039443
JK
11885
11886 /* Read in the largest possible address. */
11887 marker = read_address (obfd, buffer, cu, &dummy);
11888 if ((marker & mask) == mask)
11889 {
11890 /* If we found the largest possible address, then
11891 read the base address. */
11892 base = read_address (obfd, buffer + addr_size, cu, &dummy);
11893 buffer += 2 * addr_size;
11894 offset += 2 * addr_size;
11895 found_base = 1;
11896 }
11897
11898 low_set = 0;
11899
e7030f15 11900 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
ff013f42 11901
43039443
JK
11902 while (1)
11903 {
11904 CORE_ADDR range_beginning, range_end;
11905
11906 range_beginning = read_address (obfd, buffer, cu, &dummy);
11907 buffer += addr_size;
11908 range_end = read_address (obfd, buffer, cu, &dummy);
11909 buffer += addr_size;
11910 offset += 2 * addr_size;
11911
11912 /* An end of list marker is a pair of zero addresses. */
11913 if (range_beginning == 0 && range_end == 0)
11914 /* Found the end of list entry. */
11915 break;
11916
11917 /* Each base address selection entry is a pair of 2 values.
11918 The first is the largest possible address, the second is
11919 the base address. Check for a base address here. */
11920 if ((range_beginning & mask) == mask)
11921 {
11922 /* If we found the largest possible address, then
11923 read the base address. */
11924 base = read_address (obfd, buffer + addr_size, cu, &dummy);
11925 found_base = 1;
11926 continue;
11927 }
11928
11929 if (!found_base)
11930 {
11931 /* We have no valid base address for the ranges
11932 data. */
11933 complaint (&symfile_complaints,
11934 _("Invalid .debug_ranges data (no base address)"));
11935 return 0;
11936 }
11937
9277c30c
UW
11938 if (range_beginning > range_end)
11939 {
11940 /* Inverted range entries are invalid. */
11941 complaint (&symfile_complaints,
11942 _("Invalid .debug_ranges data (inverted range)"));
11943 return 0;
11944 }
11945
11946 /* Empty range entries have no effect. */
11947 if (range_beginning == range_end)
11948 continue;
11949
43039443
JK
11950 range_beginning += base;
11951 range_end += base;
11952
01093045
DE
11953 /* A not-uncommon case of bad debug info.
11954 Don't pollute the addrmap with bad data. */
11955 if (range_beginning + baseaddr == 0
11956 && !dwarf2_per_objfile->has_section_at_zero)
11957 {
11958 complaint (&symfile_complaints,
11959 _(".debug_ranges entry has start address of zero"
4262abfb 11960 " [in module %s]"), objfile_name (objfile));
01093045
DE
11961 continue;
11962 }
11963
9277c30c 11964 if (ranges_pst != NULL)
3e29f34a
MR
11965 {
11966 CORE_ADDR lowpc;
11967 CORE_ADDR highpc;
11968
11969 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
11970 range_beginning + baseaddr);
11971 highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
11972 range_end + baseaddr);
11973 addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
11974 ranges_pst);
11975 }
ff013f42 11976
43039443
JK
11977 /* FIXME: This is recording everything as a low-high
11978 segment of consecutive addresses. We should have a
11979 data structure for discontiguous block ranges
11980 instead. */
11981 if (! low_set)
11982 {
11983 low = range_beginning;
11984 high = range_end;
11985 low_set = 1;
11986 }
11987 else
11988 {
11989 if (range_beginning < low)
11990 low = range_beginning;
11991 if (range_end > high)
11992 high = range_end;
11993 }
11994 }
11995
11996 if (! low_set)
11997 /* If the first entry is an end-of-list marker, the range
11998 describes an empty scope, i.e. no instructions. */
11999 return 0;
12000
12001 if (low_return)
12002 *low_return = low;
12003 if (high_return)
12004 *high_return = high;
12005 return 1;
12006}
12007
af34e669
DJ
12008/* Get low and high pc attributes from a die. Return 1 if the attributes
12009 are present and valid, otherwise, return 0. Return -1 if the range is
12010 discontinuous, i.e. derived from DW_AT_ranges information. */
380bca97 12011
c906108c 12012static int
af34e669 12013dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
d85a05f0
DJ
12014 CORE_ADDR *highpc, struct dwarf2_cu *cu,
12015 struct partial_symtab *pst)
c906108c
SS
12016{
12017 struct attribute *attr;
91da1414 12018 struct attribute *attr_high;
af34e669
DJ
12019 CORE_ADDR low = 0;
12020 CORE_ADDR high = 0;
12021 int ret = 0;
c906108c 12022
91da1414
MW
12023 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
12024 if (attr_high)
af34e669 12025 {
e142c38c 12026 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
af34e669 12027 if (attr)
91da1414 12028 {
31aa7e4e
JB
12029 low = attr_value_as_address (attr);
12030 high = attr_value_as_address (attr_high);
12031 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12032 high += low;
91da1414 12033 }
af34e669
DJ
12034 else
12035 /* Found high w/o low attribute. */
12036 return 0;
12037
12038 /* Found consecutive range of addresses. */
12039 ret = 1;
12040 }
c906108c 12041 else
af34e669 12042 {
e142c38c 12043 attr = dwarf2_attr (die, DW_AT_ranges, cu);
af34e669
DJ
12044 if (attr != NULL)
12045 {
ab435259
DE
12046 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12047 We take advantage of the fact that DW_AT_ranges does not appear
12048 in DW_TAG_compile_unit of DWO files. */
12049 int need_ranges_base = die->tag != DW_TAG_compile_unit;
12050 unsigned int ranges_offset = (DW_UNSND (attr)
12051 + (need_ranges_base
12052 ? cu->ranges_base
12053 : 0));
2e3cf129 12054
af34e669 12055 /* Value of the DW_AT_ranges attribute is the offset in the
a604369a 12056 .debug_ranges section. */
2e3cf129 12057 if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
af34e669 12058 return 0;
43039443 12059 /* Found discontinuous range of addresses. */
af34e669
DJ
12060 ret = -1;
12061 }
12062 }
c906108c 12063
9373cf26
JK
12064 /* read_partial_die has also the strict LOW < HIGH requirement. */
12065 if (high <= low)
c906108c
SS
12066 return 0;
12067
12068 /* When using the GNU linker, .gnu.linkonce. sections are used to
12069 eliminate duplicate copies of functions and vtables and such.
12070 The linker will arbitrarily choose one and discard the others.
12071 The AT_*_pc values for such functions refer to local labels in
12072 these sections. If the section from that file was discarded, the
12073 labels are not in the output, so the relocs get a value of 0.
12074 If this is a discarded function, mark the pc bounds as invalid,
12075 so that GDB will ignore it. */
72dca2f5 12076 if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
c906108c
SS
12077 return 0;
12078
12079 *lowpc = low;
96408a79
SA
12080 if (highpc)
12081 *highpc = high;
af34e669 12082 return ret;
c906108c
SS
12083}
12084
b084d499
JB
12085/* Assuming that DIE represents a subprogram DIE or a lexical block, get
12086 its low and high PC addresses. Do nothing if these addresses could not
12087 be determined. Otherwise, set LOWPC to the low address if it is smaller,
12088 and HIGHPC to the high address if greater than HIGHPC. */
12089
12090static void
12091dwarf2_get_subprogram_pc_bounds (struct die_info *die,
12092 CORE_ADDR *lowpc, CORE_ADDR *highpc,
12093 struct dwarf2_cu *cu)
12094{
12095 CORE_ADDR low, high;
12096 struct die_info *child = die->child;
12097
d85a05f0 12098 if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL))
b084d499
JB
12099 {
12100 *lowpc = min (*lowpc, low);
12101 *highpc = max (*highpc, high);
12102 }
12103
12104 /* If the language does not allow nested subprograms (either inside
12105 subprograms or lexical blocks), we're done. */
12106 if (cu->language != language_ada)
12107 return;
6e70227d 12108
b084d499
JB
12109 /* Check all the children of the given DIE. If it contains nested
12110 subprograms, then check their pc bounds. Likewise, we need to
12111 check lexical blocks as well, as they may also contain subprogram
12112 definitions. */
12113 while (child && child->tag)
12114 {
12115 if (child->tag == DW_TAG_subprogram
12116 || child->tag == DW_TAG_lexical_block)
12117 dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
12118 child = sibling_die (child);
12119 }
12120}
12121
fae299cd
DC
12122/* Get the low and high pc's represented by the scope DIE, and store
12123 them in *LOWPC and *HIGHPC. If the correct values can't be
12124 determined, set *LOWPC to -1 and *HIGHPC to 0. */
12125
12126static void
12127get_scope_pc_bounds (struct die_info *die,
12128 CORE_ADDR *lowpc, CORE_ADDR *highpc,
12129 struct dwarf2_cu *cu)
12130{
12131 CORE_ADDR best_low = (CORE_ADDR) -1;
12132 CORE_ADDR best_high = (CORE_ADDR) 0;
12133 CORE_ADDR current_low, current_high;
12134
d85a05f0 12135 if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL))
fae299cd
DC
12136 {
12137 best_low = current_low;
12138 best_high = current_high;
12139 }
12140 else
12141 {
12142 struct die_info *child = die->child;
12143
12144 while (child && child->tag)
12145 {
12146 switch (child->tag) {
12147 case DW_TAG_subprogram:
b084d499 12148 dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
fae299cd
DC
12149 break;
12150 case DW_TAG_namespace:
f55ee35c 12151 case DW_TAG_module:
fae299cd
DC
12152 /* FIXME: carlton/2004-01-16: Should we do this for
12153 DW_TAG_class_type/DW_TAG_structure_type, too? I think
12154 that current GCC's always emit the DIEs corresponding
12155 to definitions of methods of classes as children of a
12156 DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
12157 the DIEs giving the declarations, which could be
12158 anywhere). But I don't see any reason why the
12159 standards says that they have to be there. */
12160 get_scope_pc_bounds (child, &current_low, &current_high, cu);
12161
12162 if (current_low != ((CORE_ADDR) -1))
12163 {
12164 best_low = min (best_low, current_low);
12165 best_high = max (best_high, current_high);
12166 }
12167 break;
12168 default:
0963b4bd 12169 /* Ignore. */
fae299cd
DC
12170 break;
12171 }
12172
12173 child = sibling_die (child);
12174 }
12175 }
12176
12177 *lowpc = best_low;
12178 *highpc = best_high;
12179}
12180
801e3a5b
JB
12181/* Record the address ranges for BLOCK, offset by BASEADDR, as given
12182 in DIE. */
380bca97 12183
801e3a5b
JB
12184static void
12185dwarf2_record_block_ranges (struct die_info *die, struct block *block,
12186 CORE_ADDR baseaddr, struct dwarf2_cu *cu)
12187{
bb5ed363 12188 struct objfile *objfile = cu->objfile;
3e29f34a 12189 struct gdbarch *gdbarch = get_objfile_arch (objfile);
801e3a5b 12190 struct attribute *attr;
91da1414 12191 struct attribute *attr_high;
801e3a5b 12192
91da1414
MW
12193 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
12194 if (attr_high)
801e3a5b 12195 {
801e3a5b
JB
12196 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
12197 if (attr)
12198 {
31aa7e4e
JB
12199 CORE_ADDR low = attr_value_as_address (attr);
12200 CORE_ADDR high = attr_value_as_address (attr_high);
12201
12202 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12203 high += low;
9a619af0 12204
3e29f34a
MR
12205 low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
12206 high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
12207 record_block_range (block, low, high - 1);
801e3a5b
JB
12208 }
12209 }
12210
12211 attr = dwarf2_attr (die, DW_AT_ranges, cu);
12212 if (attr)
12213 {
bb5ed363 12214 bfd *obfd = objfile->obfd;
ab435259
DE
12215 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12216 We take advantage of the fact that DW_AT_ranges does not appear
12217 in DW_TAG_compile_unit of DWO files. */
12218 int need_ranges_base = die->tag != DW_TAG_compile_unit;
801e3a5b
JB
12219
12220 /* The value of the DW_AT_ranges attribute is the offset of the
12221 address range list in the .debug_ranges section. */
ab435259
DE
12222 unsigned long offset = (DW_UNSND (attr)
12223 + (need_ranges_base ? cu->ranges_base : 0));
d62bfeaf 12224 const gdb_byte *buffer;
801e3a5b
JB
12225
12226 /* For some target architectures, but not others, the
12227 read_address function sign-extends the addresses it returns.
12228 To recognize base address selection entries, we need a
12229 mask. */
12230 unsigned int addr_size = cu->header.addr_size;
12231 CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
12232
12233 /* The base address, to which the next pair is relative. Note
12234 that this 'base' is a DWARF concept: most entries in a range
12235 list are relative, to reduce the number of relocs against the
12236 debugging information. This is separate from this function's
12237 'baseaddr' argument, which GDB uses to relocate debugging
12238 information from a shared library based on the address at
12239 which the library was loaded. */
d00adf39
DE
12240 CORE_ADDR base = cu->base_address;
12241 int base_known = cu->base_known;
801e3a5b 12242
d62bfeaf 12243 dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
dce234bc 12244 if (offset >= dwarf2_per_objfile->ranges.size)
801e3a5b
JB
12245 {
12246 complaint (&symfile_complaints,
12247 _("Offset %lu out of bounds for DW_AT_ranges attribute"),
12248 offset);
12249 return;
12250 }
d62bfeaf 12251 buffer = dwarf2_per_objfile->ranges.buffer + offset;
801e3a5b
JB
12252
12253 for (;;)
12254 {
12255 unsigned int bytes_read;
12256 CORE_ADDR start, end;
12257
12258 start = read_address (obfd, buffer, cu, &bytes_read);
12259 buffer += bytes_read;
12260 end = read_address (obfd, buffer, cu, &bytes_read);
12261 buffer += bytes_read;
12262
12263 /* Did we find the end of the range list? */
12264 if (start == 0 && end == 0)
12265 break;
12266
12267 /* Did we find a base address selection entry? */
12268 else if ((start & base_select_mask) == base_select_mask)
12269 {
12270 base = end;
12271 base_known = 1;
12272 }
12273
12274 /* We found an ordinary address range. */
12275 else
12276 {
12277 if (!base_known)
12278 {
12279 complaint (&symfile_complaints,
3e43a32a
MS
12280 _("Invalid .debug_ranges data "
12281 "(no base address)"));
801e3a5b
JB
12282 return;
12283 }
12284
9277c30c
UW
12285 if (start > end)
12286 {
12287 /* Inverted range entries are invalid. */
12288 complaint (&symfile_complaints,
12289 _("Invalid .debug_ranges data "
12290 "(inverted range)"));
12291 return;
12292 }
12293
12294 /* Empty range entries have no effect. */
12295 if (start == end)
12296 continue;
12297
01093045
DE
12298 start += base + baseaddr;
12299 end += base + baseaddr;
12300
12301 /* A not-uncommon case of bad debug info.
12302 Don't pollute the addrmap with bad data. */
12303 if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
12304 {
12305 complaint (&symfile_complaints,
12306 _(".debug_ranges entry has start address of zero"
4262abfb 12307 " [in module %s]"), objfile_name (objfile));
01093045
DE
12308 continue;
12309 }
12310
3e29f34a
MR
12311 start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
12312 end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
01093045 12313 record_block_range (block, start, end - 1);
801e3a5b
JB
12314 }
12315 }
12316 }
12317}
12318
685b1105
JK
12319/* Check whether the producer field indicates either of GCC < 4.6, or the
12320 Intel C/C++ compiler, and cache the result in CU. */
60d5a603 12321
685b1105
JK
12322static void
12323check_producer (struct dwarf2_cu *cu)
60d5a603
JK
12324{
12325 const char *cs;
38360086 12326 int major, minor;
60d5a603
JK
12327
12328 if (cu->producer == NULL)
12329 {
12330 /* For unknown compilers expect their behavior is DWARF version
12331 compliant.
12332
12333 GCC started to support .debug_types sections by -gdwarf-4 since
12334 gcc-4.5.x. As the .debug_types sections are missing DW_AT_producer
12335 for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
12336 combination. gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
12337 interpreted incorrectly by GDB now - GCC PR debug/48229. */
60d5a603 12338 }
b1ffba5a 12339 else if (producer_is_gcc (cu->producer, &major, &minor))
60d5a603 12340 {
38360086
MW
12341 cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
12342 cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
685b1105 12343 }
61012eef 12344 else if (startswith (cu->producer, "Intel(R) C"))
685b1105
JK
12345 cu->producer_is_icc = 1;
12346 else
12347 {
12348 /* For other non-GCC compilers, expect their behavior is DWARF version
12349 compliant. */
60d5a603
JK
12350 }
12351
ba919b58 12352 cu->checked_producer = 1;
685b1105 12353}
ba919b58 12354
685b1105
JK
12355/* Check for GCC PR debug/45124 fix which is not present in any G++ version up
12356 to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
12357 during 4.6.0 experimental. */
12358
12359static int
12360producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
12361{
12362 if (!cu->checked_producer)
12363 check_producer (cu);
12364
12365 return cu->producer_is_gxx_lt_4_6;
60d5a603
JK
12366}
12367
12368/* Return the default accessibility type if it is not overriden by
12369 DW_AT_accessibility. */
12370
12371static enum dwarf_access_attribute
12372dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
12373{
12374 if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
12375 {
12376 /* The default DWARF 2 accessibility for members is public, the default
12377 accessibility for inheritance is private. */
12378
12379 if (die->tag != DW_TAG_inheritance)
12380 return DW_ACCESS_public;
12381 else
12382 return DW_ACCESS_private;
12383 }
12384 else
12385 {
12386 /* DWARF 3+ defines the default accessibility a different way. The same
12387 rules apply now for DW_TAG_inheritance as for the members and it only
12388 depends on the container kind. */
12389
12390 if (die->parent->tag == DW_TAG_class_type)
12391 return DW_ACCESS_private;
12392 else
12393 return DW_ACCESS_public;
12394 }
12395}
12396
74ac6d43
TT
12397/* Look for DW_AT_data_member_location. Set *OFFSET to the byte
12398 offset. If the attribute was not found return 0, otherwise return
12399 1. If it was found but could not properly be handled, set *OFFSET
12400 to 0. */
12401
12402static int
12403handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
12404 LONGEST *offset)
12405{
12406 struct attribute *attr;
12407
12408 attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
12409 if (attr != NULL)
12410 {
12411 *offset = 0;
12412
12413 /* Note that we do not check for a section offset first here.
12414 This is because DW_AT_data_member_location is new in DWARF 4,
12415 so if we see it, we can assume that a constant form is really
12416 a constant and not a section offset. */
12417 if (attr_form_is_constant (attr))
12418 *offset = dwarf2_get_attr_constant_value (attr, 0);
12419 else if (attr_form_is_section_offset (attr))
12420 dwarf2_complex_location_expr_complaint ();
12421 else if (attr_form_is_block (attr))
12422 *offset = decode_locdesc (DW_BLOCK (attr), cu);
12423 else
12424 dwarf2_complex_location_expr_complaint ();
12425
12426 return 1;
12427 }
12428
12429 return 0;
12430}
12431
c906108c
SS
12432/* Add an aggregate field to the field list. */
12433
12434static void
107d2387 12435dwarf2_add_field (struct field_info *fip, struct die_info *die,
e7c27a73 12436 struct dwarf2_cu *cu)
6e70227d 12437{
e7c27a73 12438 struct objfile *objfile = cu->objfile;
5e2b427d 12439 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
12440 struct nextfield *new_field;
12441 struct attribute *attr;
12442 struct field *fp;
15d034d0 12443 const char *fieldname = "";
c906108c
SS
12444
12445 /* Allocate a new field list entry and link it in. */
12446 new_field = (struct nextfield *) xmalloc (sizeof (struct nextfield));
b8c9b27d 12447 make_cleanup (xfree, new_field);
c906108c 12448 memset (new_field, 0, sizeof (struct nextfield));
7d0ccb61
DJ
12449
12450 if (die->tag == DW_TAG_inheritance)
12451 {
12452 new_field->next = fip->baseclasses;
12453 fip->baseclasses = new_field;
12454 }
12455 else
12456 {
12457 new_field->next = fip->fields;
12458 fip->fields = new_field;
12459 }
c906108c
SS
12460 fip->nfields++;
12461
e142c38c 12462 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c
SS
12463 if (attr)
12464 new_field->accessibility = DW_UNSND (attr);
60d5a603
JK
12465 else
12466 new_field->accessibility = dwarf2_default_access_attribute (die, cu);
c906108c
SS
12467 if (new_field->accessibility != DW_ACCESS_public)
12468 fip->non_public_fields = 1;
60d5a603 12469
e142c38c 12470 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
c906108c
SS
12471 if (attr)
12472 new_field->virtuality = DW_UNSND (attr);
60d5a603
JK
12473 else
12474 new_field->virtuality = DW_VIRTUALITY_none;
c906108c
SS
12475
12476 fp = &new_field->field;
a9a9bd0f 12477
e142c38c 12478 if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
c906108c 12479 {
74ac6d43
TT
12480 LONGEST offset;
12481
a9a9bd0f 12482 /* Data member other than a C++ static data member. */
6e70227d 12483
c906108c 12484 /* Get type of field. */
e7c27a73 12485 fp->type = die_type (die, cu);
c906108c 12486
d6a843b5 12487 SET_FIELD_BITPOS (*fp, 0);
01ad7f36 12488
c906108c 12489 /* Get bit size of field (zero if none). */
e142c38c 12490 attr = dwarf2_attr (die, DW_AT_bit_size, cu);
c906108c
SS
12491 if (attr)
12492 {
12493 FIELD_BITSIZE (*fp) = DW_UNSND (attr);
12494 }
12495 else
12496 {
12497 FIELD_BITSIZE (*fp) = 0;
12498 }
12499
12500 /* Get bit offset of field. */
74ac6d43
TT
12501 if (handle_data_member_location (die, cu, &offset))
12502 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
e142c38c 12503 attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
c906108c
SS
12504 if (attr)
12505 {
5e2b427d 12506 if (gdbarch_bits_big_endian (gdbarch))
c906108c
SS
12507 {
12508 /* For big endian bits, the DW_AT_bit_offset gives the
c5aa993b
JM
12509 additional bit offset from the MSB of the containing
12510 anonymous object to the MSB of the field. We don't
12511 have to do anything special since we don't need to
12512 know the size of the anonymous object. */
f41f5e61 12513 SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
c906108c
SS
12514 }
12515 else
12516 {
12517 /* For little endian bits, compute the bit offset to the
c5aa993b
JM
12518 MSB of the anonymous object, subtract off the number of
12519 bits from the MSB of the field to the MSB of the
12520 object, and then subtract off the number of bits of
12521 the field itself. The result is the bit offset of
12522 the LSB of the field. */
c906108c
SS
12523 int anonymous_size;
12524 int bit_offset = DW_UNSND (attr);
12525
e142c38c 12526 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
12527 if (attr)
12528 {
12529 /* The size of the anonymous object containing
12530 the bit field is explicit, so use the
12531 indicated size (in bytes). */
12532 anonymous_size = DW_UNSND (attr);
12533 }
12534 else
12535 {
12536 /* The size of the anonymous object containing
12537 the bit field must be inferred from the type
12538 attribute of the data member containing the
12539 bit field. */
12540 anonymous_size = TYPE_LENGTH (fp->type);
12541 }
f41f5e61
PA
12542 SET_FIELD_BITPOS (*fp,
12543 (FIELD_BITPOS (*fp)
12544 + anonymous_size * bits_per_byte
12545 - bit_offset - FIELD_BITSIZE (*fp)));
c906108c
SS
12546 }
12547 }
12548
12549 /* Get name of field. */
39cbfefa
DJ
12550 fieldname = dwarf2_name (die, cu);
12551 if (fieldname == NULL)
12552 fieldname = "";
d8151005
DJ
12553
12554 /* The name is already allocated along with this objfile, so we don't
12555 need to duplicate it for the type. */
12556 fp->name = fieldname;
c906108c
SS
12557
12558 /* Change accessibility for artificial fields (e.g. virtual table
c5aa993b 12559 pointer or virtual base class pointer) to private. */
e142c38c 12560 if (dwarf2_attr (die, DW_AT_artificial, cu))
c906108c 12561 {
d48cc9dd 12562 FIELD_ARTIFICIAL (*fp) = 1;
c906108c
SS
12563 new_field->accessibility = DW_ACCESS_private;
12564 fip->non_public_fields = 1;
12565 }
12566 }
a9a9bd0f 12567 else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
c906108c 12568 {
a9a9bd0f
DC
12569 /* C++ static member. */
12570
12571 /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
12572 is a declaration, but all versions of G++ as of this writing
12573 (so through at least 3.2.1) incorrectly generate
12574 DW_TAG_variable tags. */
6e70227d 12575
ff355380 12576 const char *physname;
c906108c 12577
a9a9bd0f 12578 /* Get name of field. */
39cbfefa
DJ
12579 fieldname = dwarf2_name (die, cu);
12580 if (fieldname == NULL)
c906108c
SS
12581 return;
12582
254e6b9e 12583 attr = dwarf2_attr (die, DW_AT_const_value, cu);
3863f96c
DE
12584 if (attr
12585 /* Only create a symbol if this is an external value.
12586 new_symbol checks this and puts the value in the global symbol
12587 table, which we want. If it is not external, new_symbol
12588 will try to put the value in cu->list_in_scope which is wrong. */
12589 && dwarf2_flag_true_p (die, DW_AT_external, cu))
254e6b9e
DE
12590 {
12591 /* A static const member, not much different than an enum as far as
12592 we're concerned, except that we can support more types. */
12593 new_symbol (die, NULL, cu);
12594 }
12595
2df3850c 12596 /* Get physical name. */
ff355380 12597 physname = dwarf2_physname (fieldname, die, cu);
c906108c 12598
d8151005
DJ
12599 /* The name is already allocated along with this objfile, so we don't
12600 need to duplicate it for the type. */
12601 SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
e7c27a73 12602 FIELD_TYPE (*fp) = die_type (die, cu);
d8151005 12603 FIELD_NAME (*fp) = fieldname;
c906108c
SS
12604 }
12605 else if (die->tag == DW_TAG_inheritance)
12606 {
74ac6d43 12607 LONGEST offset;
d4b96c9a 12608
74ac6d43
TT
12609 /* C++ base class field. */
12610 if (handle_data_member_location (die, cu, &offset))
12611 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
c906108c 12612 FIELD_BITSIZE (*fp) = 0;
e7c27a73 12613 FIELD_TYPE (*fp) = die_type (die, cu);
c906108c
SS
12614 FIELD_NAME (*fp) = type_name_no_tag (fp->type);
12615 fip->nbaseclasses++;
12616 }
12617}
12618
98751a41
JK
12619/* Add a typedef defined in the scope of the FIP's class. */
12620
12621static void
12622dwarf2_add_typedef (struct field_info *fip, struct die_info *die,
12623 struct dwarf2_cu *cu)
6e70227d 12624{
98751a41 12625 struct objfile *objfile = cu->objfile;
98751a41
JK
12626 struct typedef_field_list *new_field;
12627 struct attribute *attr;
12628 struct typedef_field *fp;
12629 char *fieldname = "";
12630
12631 /* Allocate a new field list entry and link it in. */
12632 new_field = xzalloc (sizeof (*new_field));
12633 make_cleanup (xfree, new_field);
12634
12635 gdb_assert (die->tag == DW_TAG_typedef);
12636
12637 fp = &new_field->field;
12638
12639 /* Get name of field. */
12640 fp->name = dwarf2_name (die, cu);
12641 if (fp->name == NULL)
12642 return;
12643
12644 fp->type = read_type_die (die, cu);
12645
12646 new_field->next = fip->typedef_field_list;
12647 fip->typedef_field_list = new_field;
12648 fip->typedef_field_list_count++;
12649}
12650
c906108c
SS
12651/* Create the vector of fields, and attach it to the type. */
12652
12653static void
fba45db2 12654dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 12655 struct dwarf2_cu *cu)
c906108c
SS
12656{
12657 int nfields = fip->nfields;
12658
12659 /* Record the field count, allocate space for the array of fields,
12660 and create blank accessibility bitfields if necessary. */
12661 TYPE_NFIELDS (type) = nfields;
12662 TYPE_FIELDS (type) = (struct field *)
12663 TYPE_ALLOC (type, sizeof (struct field) * nfields);
12664 memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
12665
b4ba55a1 12666 if (fip->non_public_fields && cu->language != language_ada)
c906108c
SS
12667 {
12668 ALLOCATE_CPLUS_STRUCT_TYPE (type);
12669
12670 TYPE_FIELD_PRIVATE_BITS (type) =
12671 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12672 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
12673
12674 TYPE_FIELD_PROTECTED_BITS (type) =
12675 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12676 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
12677
774b6a14
TT
12678 TYPE_FIELD_IGNORE_BITS (type) =
12679 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12680 B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
c906108c
SS
12681 }
12682
12683 /* If the type has baseclasses, allocate and clear a bit vector for
12684 TYPE_FIELD_VIRTUAL_BITS. */
b4ba55a1 12685 if (fip->nbaseclasses && cu->language != language_ada)
c906108c
SS
12686 {
12687 int num_bytes = B_BYTES (fip->nbaseclasses);
fe1b8b76 12688 unsigned char *pointer;
c906108c
SS
12689
12690 ALLOCATE_CPLUS_STRUCT_TYPE (type);
fe1b8b76
JB
12691 pointer = TYPE_ALLOC (type, num_bytes);
12692 TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
c906108c
SS
12693 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
12694 TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
12695 }
12696
3e43a32a
MS
12697 /* Copy the saved-up fields into the field vector. Start from the head of
12698 the list, adding to the tail of the field array, so that they end up in
12699 the same order in the array in which they were added to the list. */
c906108c
SS
12700 while (nfields-- > 0)
12701 {
7d0ccb61
DJ
12702 struct nextfield *fieldp;
12703
12704 if (fip->fields)
12705 {
12706 fieldp = fip->fields;
12707 fip->fields = fieldp->next;
12708 }
12709 else
12710 {
12711 fieldp = fip->baseclasses;
12712 fip->baseclasses = fieldp->next;
12713 }
12714
12715 TYPE_FIELD (type, nfields) = fieldp->field;
12716 switch (fieldp->accessibility)
c906108c 12717 {
c5aa993b 12718 case DW_ACCESS_private:
b4ba55a1
JB
12719 if (cu->language != language_ada)
12720 SET_TYPE_FIELD_PRIVATE (type, nfields);
c5aa993b 12721 break;
c906108c 12722
c5aa993b 12723 case DW_ACCESS_protected:
b4ba55a1
JB
12724 if (cu->language != language_ada)
12725 SET_TYPE_FIELD_PROTECTED (type, nfields);
c5aa993b 12726 break;
c906108c 12727
c5aa993b
JM
12728 case DW_ACCESS_public:
12729 break;
c906108c 12730
c5aa993b
JM
12731 default:
12732 /* Unknown accessibility. Complain and treat it as public. */
12733 {
e2e0b3e5 12734 complaint (&symfile_complaints, _("unsupported accessibility %d"),
7d0ccb61 12735 fieldp->accessibility);
c5aa993b
JM
12736 }
12737 break;
c906108c
SS
12738 }
12739 if (nfields < fip->nbaseclasses)
12740 {
7d0ccb61 12741 switch (fieldp->virtuality)
c906108c 12742 {
c5aa993b
JM
12743 case DW_VIRTUALITY_virtual:
12744 case DW_VIRTUALITY_pure_virtual:
b4ba55a1 12745 if (cu->language == language_ada)
a73c6dcd 12746 error (_("unexpected virtuality in component of Ada type"));
c5aa993b
JM
12747 SET_TYPE_FIELD_VIRTUAL (type, nfields);
12748 break;
c906108c
SS
12749 }
12750 }
c906108c
SS
12751 }
12752}
12753
7d27a96d
TT
12754/* Return true if this member function is a constructor, false
12755 otherwise. */
12756
12757static int
12758dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
12759{
12760 const char *fieldname;
fe978cb0 12761 const char *type_name;
7d27a96d
TT
12762 int len;
12763
12764 if (die->parent == NULL)
12765 return 0;
12766
12767 if (die->parent->tag != DW_TAG_structure_type
12768 && die->parent->tag != DW_TAG_union_type
12769 && die->parent->tag != DW_TAG_class_type)
12770 return 0;
12771
12772 fieldname = dwarf2_name (die, cu);
fe978cb0
PA
12773 type_name = dwarf2_name (die->parent, cu);
12774 if (fieldname == NULL || type_name == NULL)
7d27a96d
TT
12775 return 0;
12776
12777 len = strlen (fieldname);
fe978cb0
PA
12778 return (strncmp (fieldname, type_name, len) == 0
12779 && (type_name[len] == '\0' || type_name[len] == '<'));
7d27a96d
TT
12780}
12781
c906108c
SS
12782/* Add a member function to the proper fieldlist. */
12783
12784static void
107d2387 12785dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
e7c27a73 12786 struct type *type, struct dwarf2_cu *cu)
c906108c 12787{
e7c27a73 12788 struct objfile *objfile = cu->objfile;
c906108c
SS
12789 struct attribute *attr;
12790 struct fnfieldlist *flp;
12791 int i;
12792 struct fn_field *fnp;
15d034d0 12793 const char *fieldname;
c906108c 12794 struct nextfnfield *new_fnfield;
f792889a 12795 struct type *this_type;
60d5a603 12796 enum dwarf_access_attribute accessibility;
c906108c 12797
b4ba55a1 12798 if (cu->language == language_ada)
a73c6dcd 12799 error (_("unexpected member function in Ada type"));
b4ba55a1 12800
2df3850c 12801 /* Get name of member function. */
39cbfefa
DJ
12802 fieldname = dwarf2_name (die, cu);
12803 if (fieldname == NULL)
2df3850c 12804 return;
c906108c 12805
c906108c
SS
12806 /* Look up member function name in fieldlist. */
12807 for (i = 0; i < fip->nfnfields; i++)
12808 {
27bfe10e 12809 if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
c906108c
SS
12810 break;
12811 }
12812
12813 /* Create new list element if necessary. */
12814 if (i < fip->nfnfields)
12815 flp = &fip->fnfieldlists[i];
12816 else
12817 {
12818 if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
12819 {
12820 fip->fnfieldlists = (struct fnfieldlist *)
12821 xrealloc (fip->fnfieldlists,
12822 (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
c5aa993b 12823 * sizeof (struct fnfieldlist));
c906108c 12824 if (fip->nfnfields == 0)
c13c43fd 12825 make_cleanup (free_current_contents, &fip->fnfieldlists);
c906108c
SS
12826 }
12827 flp = &fip->fnfieldlists[fip->nfnfields];
12828 flp->name = fieldname;
12829 flp->length = 0;
12830 flp->head = NULL;
3da10d80 12831 i = fip->nfnfields++;
c906108c
SS
12832 }
12833
12834 /* Create a new member function field and chain it to the field list
0963b4bd 12835 entry. */
c906108c 12836 new_fnfield = (struct nextfnfield *) xmalloc (sizeof (struct nextfnfield));
b8c9b27d 12837 make_cleanup (xfree, new_fnfield);
c906108c
SS
12838 memset (new_fnfield, 0, sizeof (struct nextfnfield));
12839 new_fnfield->next = flp->head;
12840 flp->head = new_fnfield;
12841 flp->length++;
12842
12843 /* Fill in the member function field info. */
12844 fnp = &new_fnfield->fnfield;
3da10d80
KS
12845
12846 /* Delay processing of the physname until later. */
12847 if (cu->language == language_cplus || cu->language == language_java)
12848 {
12849 add_to_method_list (type, i, flp->length - 1, fieldname,
12850 die, cu);
12851 }
12852 else
12853 {
1d06ead6 12854 const char *physname = dwarf2_physname (fieldname, die, cu);
3da10d80
KS
12855 fnp->physname = physname ? physname : "";
12856 }
12857
c906108c 12858 fnp->type = alloc_type (objfile);
f792889a
DJ
12859 this_type = read_type_die (die, cu);
12860 if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
c906108c 12861 {
f792889a 12862 int nparams = TYPE_NFIELDS (this_type);
c906108c 12863
f792889a 12864 /* TYPE is the domain of this method, and THIS_TYPE is the type
e26fb1d7
DC
12865 of the method itself (TYPE_CODE_METHOD). */
12866 smash_to_method_type (fnp->type, type,
f792889a
DJ
12867 TYPE_TARGET_TYPE (this_type),
12868 TYPE_FIELDS (this_type),
12869 TYPE_NFIELDS (this_type),
12870 TYPE_VARARGS (this_type));
c906108c
SS
12871
12872 /* Handle static member functions.
c5aa993b 12873 Dwarf2 has no clean way to discern C++ static and non-static
0963b4bd
MS
12874 member functions. G++ helps GDB by marking the first
12875 parameter for non-static member functions (which is the this
12876 pointer) as artificial. We obtain this information from
12877 read_subroutine_type via TYPE_FIELD_ARTIFICIAL. */
f792889a 12878 if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
c906108c
SS
12879 fnp->voffset = VOFFSET_STATIC;
12880 }
12881 else
e2e0b3e5 12882 complaint (&symfile_complaints, _("member function type missing for '%s'"),
3da10d80 12883 dwarf2_full_name (fieldname, die, cu));
c906108c
SS
12884
12885 /* Get fcontext from DW_AT_containing_type if present. */
e142c38c 12886 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
e7c27a73 12887 fnp->fcontext = die_containing_type (die, cu);
c906108c 12888
3e43a32a
MS
12889 /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
12890 is_volatile is irrelevant, as it is needed by gdb_mangle_name only. */
c906108c
SS
12891
12892 /* Get accessibility. */
e142c38c 12893 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c 12894 if (attr)
60d5a603
JK
12895 accessibility = DW_UNSND (attr);
12896 else
12897 accessibility = dwarf2_default_access_attribute (die, cu);
12898 switch (accessibility)
c906108c 12899 {
60d5a603
JK
12900 case DW_ACCESS_private:
12901 fnp->is_private = 1;
12902 break;
12903 case DW_ACCESS_protected:
12904 fnp->is_protected = 1;
12905 break;
c906108c
SS
12906 }
12907
b02dede2 12908 /* Check for artificial methods. */
e142c38c 12909 attr = dwarf2_attr (die, DW_AT_artificial, cu);
b02dede2
DJ
12910 if (attr && DW_UNSND (attr) != 0)
12911 fnp->is_artificial = 1;
12912
7d27a96d
TT
12913 fnp->is_constructor = dwarf2_is_constructor (die, cu);
12914
0d564a31 12915 /* Get index in virtual function table if it is a virtual member
aec5aa8b
TT
12916 function. For older versions of GCC, this is an offset in the
12917 appropriate virtual table, as specified by DW_AT_containing_type.
12918 For everyone else, it is an expression to be evaluated relative
0d564a31
DJ
12919 to the object address. */
12920
e142c38c 12921 attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
aec5aa8b 12922 if (attr)
8e19ed76 12923 {
aec5aa8b 12924 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
8e19ed76 12925 {
aec5aa8b
TT
12926 if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
12927 {
12928 /* Old-style GCC. */
12929 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
12930 }
12931 else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
12932 || (DW_BLOCK (attr)->size > 1
12933 && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
12934 && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
12935 {
12936 struct dwarf_block blk;
12937 int offset;
12938
12939 offset = (DW_BLOCK (attr)->data[0] == DW_OP_deref
12940 ? 1 : 2);
12941 blk.size = DW_BLOCK (attr)->size - offset;
12942 blk.data = DW_BLOCK (attr)->data + offset;
12943 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
12944 if ((fnp->voffset % cu->header.addr_size) != 0)
12945 dwarf2_complex_location_expr_complaint ();
12946 else
12947 fnp->voffset /= cu->header.addr_size;
12948 fnp->voffset += 2;
12949 }
12950 else
12951 dwarf2_complex_location_expr_complaint ();
12952
12953 if (!fnp->fcontext)
7e993ebf
KS
12954 {
12955 /* If there is no `this' field and no DW_AT_containing_type,
12956 we cannot actually find a base class context for the
12957 vtable! */
12958 if (TYPE_NFIELDS (this_type) == 0
12959 || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
12960 {
12961 complaint (&symfile_complaints,
12962 _("cannot determine context for virtual member "
12963 "function \"%s\" (offset %d)"),
12964 fieldname, die->offset.sect_off);
12965 }
12966 else
12967 {
12968 fnp->fcontext
12969 = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
12970 }
12971 }
aec5aa8b 12972 }
3690dd37 12973 else if (attr_form_is_section_offset (attr))
8e19ed76 12974 {
4d3c2250 12975 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
12976 }
12977 else
12978 {
4d3c2250
KB
12979 dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
12980 fieldname);
8e19ed76 12981 }
0d564a31 12982 }
d48cc9dd
DJ
12983 else
12984 {
12985 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
12986 if (attr && DW_UNSND (attr))
12987 {
12988 /* GCC does this, as of 2008-08-25; PR debug/37237. */
12989 complaint (&symfile_complaints,
3e43a32a
MS
12990 _("Member function \"%s\" (offset %d) is virtual "
12991 "but the vtable offset is not specified"),
b64f50a1 12992 fieldname, die->offset.sect_off);
9655fd1a 12993 ALLOCATE_CPLUS_STRUCT_TYPE (type);
d48cc9dd
DJ
12994 TYPE_CPLUS_DYNAMIC (type) = 1;
12995 }
12996 }
c906108c
SS
12997}
12998
12999/* Create the vector of member function fields, and attach it to the type. */
13000
13001static void
fba45db2 13002dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 13003 struct dwarf2_cu *cu)
c906108c
SS
13004{
13005 struct fnfieldlist *flp;
c906108c
SS
13006 int i;
13007
b4ba55a1 13008 if (cu->language == language_ada)
a73c6dcd 13009 error (_("unexpected member functions in Ada type"));
b4ba55a1 13010
c906108c
SS
13011 ALLOCATE_CPLUS_STRUCT_TYPE (type);
13012 TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
13013 TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
13014
13015 for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
13016 {
13017 struct nextfnfield *nfp = flp->head;
13018 struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
13019 int k;
13020
13021 TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
13022 TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
13023 fn_flp->fn_fields = (struct fn_field *)
13024 TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
13025 for (k = flp->length; (k--, nfp); nfp = nfp->next)
c5aa993b 13026 fn_flp->fn_fields[k] = nfp->fnfield;
c906108c
SS
13027 }
13028
13029 TYPE_NFN_FIELDS (type) = fip->nfnfields;
c906108c
SS
13030}
13031
1168df01
JB
13032/* Returns non-zero if NAME is the name of a vtable member in CU's
13033 language, zero otherwise. */
13034static int
13035is_vtable_name (const char *name, struct dwarf2_cu *cu)
13036{
13037 static const char vptr[] = "_vptr";
987504bb 13038 static const char vtable[] = "vtable";
1168df01 13039
987504bb
JJ
13040 /* Look for the C++ and Java forms of the vtable. */
13041 if ((cu->language == language_java
61012eef
GB
13042 && startswith (name, vtable))
13043 || (startswith (name, vptr)
987504bb 13044 && is_cplus_marker (name[sizeof (vptr) - 1])))
1168df01
JB
13045 return 1;
13046
13047 return 0;
13048}
13049
c0dd20ea 13050/* GCC outputs unnamed structures that are really pointers to member
0b92b5bb
TT
13051 functions, with the ABI-specified layout. If TYPE describes
13052 such a structure, smash it into a member function type.
61049d3b
DJ
13053
13054 GCC shouldn't do this; it should just output pointer to member DIEs.
13055 This is GCC PR debug/28767. */
c0dd20ea 13056
0b92b5bb
TT
13057static void
13058quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
c0dd20ea 13059{
09e2d7c7 13060 struct type *pfn_type, *self_type, *new_type;
c0dd20ea
DJ
13061
13062 /* Check for a structure with no name and two children. */
0b92b5bb
TT
13063 if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
13064 return;
c0dd20ea
DJ
13065
13066 /* Check for __pfn and __delta members. */
0b92b5bb
TT
13067 if (TYPE_FIELD_NAME (type, 0) == NULL
13068 || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
13069 || TYPE_FIELD_NAME (type, 1) == NULL
13070 || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
13071 return;
c0dd20ea
DJ
13072
13073 /* Find the type of the method. */
0b92b5bb 13074 pfn_type = TYPE_FIELD_TYPE (type, 0);
c0dd20ea
DJ
13075 if (pfn_type == NULL
13076 || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
13077 || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
0b92b5bb 13078 return;
c0dd20ea
DJ
13079
13080 /* Look for the "this" argument. */
13081 pfn_type = TYPE_TARGET_TYPE (pfn_type);
13082 if (TYPE_NFIELDS (pfn_type) == 0
0b92b5bb 13083 /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
c0dd20ea 13084 || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
0b92b5bb 13085 return;
c0dd20ea 13086
09e2d7c7 13087 self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
0b92b5bb 13088 new_type = alloc_type (objfile);
09e2d7c7 13089 smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
c0dd20ea
DJ
13090 TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
13091 TYPE_VARARGS (pfn_type));
0b92b5bb 13092 smash_to_methodptr_type (type, new_type);
c0dd20ea 13093}
1168df01 13094
685b1105
JK
13095/* Return non-zero if the CU's PRODUCER string matches the Intel C/C++ compiler
13096 (icc). */
13097
13098static int
13099producer_is_icc (struct dwarf2_cu *cu)
13100{
13101 if (!cu->checked_producer)
13102 check_producer (cu);
13103
13104 return cu->producer_is_icc;
13105}
13106
c906108c 13107/* Called when we find the DIE that starts a structure or union scope
c767944b
DJ
13108 (definition) to create a type for the structure or union. Fill in
13109 the type's name and general properties; the members will not be
83655187
DE
13110 processed until process_structure_scope. A symbol table entry for
13111 the type will also not be done until process_structure_scope (assuming
13112 the type has a name).
c906108c 13113
c767944b
DJ
13114 NOTE: we need to call these functions regardless of whether or not the
13115 DIE has a DW_AT_name attribute, since it might be an anonymous
c906108c 13116 structure or union. This gets the type entered into our set of
83655187 13117 user defined types. */
c906108c 13118
f792889a 13119static struct type *
134d01f1 13120read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13121{
e7c27a73 13122 struct objfile *objfile = cu->objfile;
c906108c
SS
13123 struct type *type;
13124 struct attribute *attr;
15d034d0 13125 const char *name;
c906108c 13126
348e048f
DE
13127 /* If the definition of this type lives in .debug_types, read that type.
13128 Don't follow DW_AT_specification though, that will take us back up
13129 the chain and we want to go down. */
45e58e77 13130 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
348e048f
DE
13131 if (attr)
13132 {
ac9ec31b 13133 type = get_DW_AT_signature_type (die, attr, cu);
9dc481d3 13134
ac9ec31b 13135 /* The type's CU may not be the same as CU.
02142a6c 13136 Ensure TYPE is recorded with CU in die_type_hash. */
348e048f
DE
13137 return set_die_type (die, type, cu);
13138 }
13139
c0dd20ea 13140 type = alloc_type (objfile);
c906108c 13141 INIT_CPLUS_SPECIFIC (type);
93311388 13142
39cbfefa
DJ
13143 name = dwarf2_name (die, cu);
13144 if (name != NULL)
c906108c 13145 {
987504bb 13146 if (cu->language == language_cplus
45280282
IB
13147 || cu->language == language_java
13148 || cu->language == language_d)
63d06c5c 13149 {
15d034d0 13150 const char *full_name = dwarf2_full_name (name, die, cu);
3da10d80
KS
13151
13152 /* dwarf2_full_name might have already finished building the DIE's
13153 type. If so, there is no need to continue. */
13154 if (get_die_type (die, cu) != NULL)
13155 return get_die_type (die, cu);
13156
13157 TYPE_TAG_NAME (type) = full_name;
94af9270
KS
13158 if (die->tag == DW_TAG_structure_type
13159 || die->tag == DW_TAG_class_type)
13160 TYPE_NAME (type) = TYPE_TAG_NAME (type);
63d06c5c
DC
13161 }
13162 else
13163 {
d8151005
DJ
13164 /* The name is already allocated along with this objfile, so
13165 we don't need to duplicate it for the type. */
7d455152 13166 TYPE_TAG_NAME (type) = name;
94af9270
KS
13167 if (die->tag == DW_TAG_class_type)
13168 TYPE_NAME (type) = TYPE_TAG_NAME (type);
63d06c5c 13169 }
c906108c
SS
13170 }
13171
13172 if (die->tag == DW_TAG_structure_type)
13173 {
13174 TYPE_CODE (type) = TYPE_CODE_STRUCT;
13175 }
13176 else if (die->tag == DW_TAG_union_type)
13177 {
13178 TYPE_CODE (type) = TYPE_CODE_UNION;
13179 }
13180 else
13181 {
4753d33b 13182 TYPE_CODE (type) = TYPE_CODE_STRUCT;
c906108c
SS
13183 }
13184
0cc2414c
TT
13185 if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
13186 TYPE_DECLARED_CLASS (type) = 1;
13187
e142c38c 13188 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
13189 if (attr)
13190 {
13191 TYPE_LENGTH (type) = DW_UNSND (attr);
13192 }
13193 else
13194 {
13195 TYPE_LENGTH (type) = 0;
13196 }
13197
422b1cb0 13198 if (producer_is_icc (cu) && (TYPE_LENGTH (type) == 0))
685b1105
JK
13199 {
13200 /* ICC does not output the required DW_AT_declaration
13201 on incomplete types, but gives them a size of zero. */
422b1cb0 13202 TYPE_STUB (type) = 1;
685b1105
JK
13203 }
13204 else
13205 TYPE_STUB_SUPPORTED (type) = 1;
13206
dc718098 13207 if (die_is_declaration (die, cu))
876cecd0 13208 TYPE_STUB (type) = 1;
a6c727b2
DJ
13209 else if (attr == NULL && die->child == NULL
13210 && producer_is_realview (cu->producer))
13211 /* RealView does not output the required DW_AT_declaration
13212 on incomplete types. */
13213 TYPE_STUB (type) = 1;
dc718098 13214
c906108c
SS
13215 /* We need to add the type field to the die immediately so we don't
13216 infinitely recurse when dealing with pointers to the structure
0963b4bd 13217 type within the structure itself. */
1c379e20 13218 set_die_type (die, type, cu);
c906108c 13219
7e314c57
JK
13220 /* set_die_type should be already done. */
13221 set_descriptive_type (type, die, cu);
13222
c767944b
DJ
13223 return type;
13224}
13225
13226/* Finish creating a structure or union type, including filling in
13227 its members and creating a symbol for it. */
13228
13229static void
13230process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
13231{
13232 struct objfile *objfile = cu->objfile;
ca040673 13233 struct die_info *child_die;
c767944b
DJ
13234 struct type *type;
13235
13236 type = get_die_type (die, cu);
13237 if (type == NULL)
13238 type = read_structure_type (die, cu);
13239
e142c38c 13240 if (die->child != NULL && ! die_is_declaration (die, cu))
c906108c
SS
13241 {
13242 struct field_info fi;
34eaf542 13243 VEC (symbolp) *template_args = NULL;
c767944b 13244 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
c906108c
SS
13245
13246 memset (&fi, 0, sizeof (struct field_info));
13247
639d11d3 13248 child_die = die->child;
c906108c
SS
13249
13250 while (child_die && child_die->tag)
13251 {
a9a9bd0f
DC
13252 if (child_die->tag == DW_TAG_member
13253 || child_die->tag == DW_TAG_variable)
c906108c 13254 {
a9a9bd0f
DC
13255 /* NOTE: carlton/2002-11-05: A C++ static data member
13256 should be a DW_TAG_member that is a declaration, but
13257 all versions of G++ as of this writing (so through at
13258 least 3.2.1) incorrectly generate DW_TAG_variable
13259 tags for them instead. */
e7c27a73 13260 dwarf2_add_field (&fi, child_die, cu);
c906108c 13261 }
8713b1b1 13262 else if (child_die->tag == DW_TAG_subprogram)
c906108c 13263 {
0963b4bd 13264 /* C++ member function. */
e7c27a73 13265 dwarf2_add_member_fn (&fi, child_die, type, cu);
c906108c
SS
13266 }
13267 else if (child_die->tag == DW_TAG_inheritance)
13268 {
13269 /* C++ base class field. */
e7c27a73 13270 dwarf2_add_field (&fi, child_die, cu);
c906108c 13271 }
98751a41
JK
13272 else if (child_die->tag == DW_TAG_typedef)
13273 dwarf2_add_typedef (&fi, child_die, cu);
34eaf542
TT
13274 else if (child_die->tag == DW_TAG_template_type_param
13275 || child_die->tag == DW_TAG_template_value_param)
13276 {
13277 struct symbol *arg = new_symbol (child_die, NULL, cu);
13278
f1078f66
DJ
13279 if (arg != NULL)
13280 VEC_safe_push (symbolp, template_args, arg);
34eaf542
TT
13281 }
13282
c906108c
SS
13283 child_die = sibling_die (child_die);
13284 }
13285
34eaf542
TT
13286 /* Attach template arguments to type. */
13287 if (! VEC_empty (symbolp, template_args))
13288 {
13289 ALLOCATE_CPLUS_STRUCT_TYPE (type);
13290 TYPE_N_TEMPLATE_ARGUMENTS (type)
13291 = VEC_length (symbolp, template_args);
13292 TYPE_TEMPLATE_ARGUMENTS (type)
13293 = obstack_alloc (&objfile->objfile_obstack,
13294 (TYPE_N_TEMPLATE_ARGUMENTS (type)
13295 * sizeof (struct symbol *)));
13296 memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
13297 VEC_address (symbolp, template_args),
13298 (TYPE_N_TEMPLATE_ARGUMENTS (type)
13299 * sizeof (struct symbol *)));
13300 VEC_free (symbolp, template_args);
13301 }
13302
c906108c
SS
13303 /* Attach fields and member functions to the type. */
13304 if (fi.nfields)
e7c27a73 13305 dwarf2_attach_fields_to_type (&fi, type, cu);
c906108c
SS
13306 if (fi.nfnfields)
13307 {
e7c27a73 13308 dwarf2_attach_fn_fields_to_type (&fi, type, cu);
c906108c 13309
c5aa993b 13310 /* Get the type which refers to the base class (possibly this
c906108c 13311 class itself) which contains the vtable pointer for the current
0d564a31
DJ
13312 class from the DW_AT_containing_type attribute. This use of
13313 DW_AT_containing_type is a GNU extension. */
c906108c 13314
e142c38c 13315 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
c906108c 13316 {
e7c27a73 13317 struct type *t = die_containing_type (die, cu);
c906108c 13318
ae6ae975 13319 set_type_vptr_basetype (type, t);
c906108c
SS
13320 if (type == t)
13321 {
c906108c
SS
13322 int i;
13323
13324 /* Our own class provides vtbl ptr. */
13325 for (i = TYPE_NFIELDS (t) - 1;
13326 i >= TYPE_N_BASECLASSES (t);
13327 --i)
13328 {
0d5cff50 13329 const char *fieldname = TYPE_FIELD_NAME (t, i);
c906108c 13330
1168df01 13331 if (is_vtable_name (fieldname, cu))
c906108c 13332 {
ae6ae975 13333 set_type_vptr_fieldno (type, i);
c906108c
SS
13334 break;
13335 }
13336 }
13337
13338 /* Complain if virtual function table field not found. */
13339 if (i < TYPE_N_BASECLASSES (t))
4d3c2250 13340 complaint (&symfile_complaints,
3e43a32a
MS
13341 _("virtual function table pointer "
13342 "not found when defining class '%s'"),
4d3c2250
KB
13343 TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
13344 "");
c906108c
SS
13345 }
13346 else
13347 {
ae6ae975 13348 set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
c906108c
SS
13349 }
13350 }
f6235d4c 13351 else if (cu->producer
61012eef 13352 && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
f6235d4c
EZ
13353 {
13354 /* The IBM XLC compiler does not provide direct indication
13355 of the containing type, but the vtable pointer is
13356 always named __vfp. */
13357
13358 int i;
13359
13360 for (i = TYPE_NFIELDS (type) - 1;
13361 i >= TYPE_N_BASECLASSES (type);
13362 --i)
13363 {
13364 if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
13365 {
ae6ae975
DE
13366 set_type_vptr_fieldno (type, i);
13367 set_type_vptr_basetype (type, type);
f6235d4c
EZ
13368 break;
13369 }
13370 }
13371 }
c906108c 13372 }
98751a41
JK
13373
13374 /* Copy fi.typedef_field_list linked list elements content into the
13375 allocated array TYPE_TYPEDEF_FIELD_ARRAY (type). */
13376 if (fi.typedef_field_list)
13377 {
13378 int i = fi.typedef_field_list_count;
13379
a0d7a4ff 13380 ALLOCATE_CPLUS_STRUCT_TYPE (type);
98751a41
JK
13381 TYPE_TYPEDEF_FIELD_ARRAY (type)
13382 = TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i);
13383 TYPE_TYPEDEF_FIELD_COUNT (type) = i;
13384
13385 /* Reverse the list order to keep the debug info elements order. */
13386 while (--i >= 0)
13387 {
13388 struct typedef_field *dest, *src;
6e70227d 13389
98751a41
JK
13390 dest = &TYPE_TYPEDEF_FIELD (type, i);
13391 src = &fi.typedef_field_list->field;
13392 fi.typedef_field_list = fi.typedef_field_list->next;
13393 *dest = *src;
13394 }
13395 }
c767944b
DJ
13396
13397 do_cleanups (back_to);
eb2a6f42
TT
13398
13399 if (HAVE_CPLUS_STRUCT (type))
13400 TYPE_CPLUS_REALLY_JAVA (type) = cu->language == language_java;
c906108c 13401 }
63d06c5c 13402
bb5ed363 13403 quirk_gcc_member_function_pointer (type, objfile);
0b92b5bb 13404
90aeadfc
DC
13405 /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
13406 snapshots) has been known to create a die giving a declaration
13407 for a class that has, as a child, a die giving a definition for a
13408 nested class. So we have to process our children even if the
13409 current die is a declaration. Normally, of course, a declaration
13410 won't have any children at all. */
134d01f1 13411
ca040673
DE
13412 child_die = die->child;
13413
90aeadfc
DC
13414 while (child_die != NULL && child_die->tag)
13415 {
13416 if (child_die->tag == DW_TAG_member
13417 || child_die->tag == DW_TAG_variable
34eaf542
TT
13418 || child_die->tag == DW_TAG_inheritance
13419 || child_die->tag == DW_TAG_template_value_param
13420 || child_die->tag == DW_TAG_template_type_param)
134d01f1 13421 {
90aeadfc 13422 /* Do nothing. */
134d01f1 13423 }
90aeadfc
DC
13424 else
13425 process_die (child_die, cu);
134d01f1 13426
90aeadfc 13427 child_die = sibling_die (child_die);
134d01f1
DJ
13428 }
13429
fa4028e9
JB
13430 /* Do not consider external references. According to the DWARF standard,
13431 these DIEs are identified by the fact that they have no byte_size
13432 attribute, and a declaration attribute. */
13433 if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
13434 || !die_is_declaration (die, cu))
c767944b 13435 new_symbol (die, type, cu);
134d01f1
DJ
13436}
13437
55426c9d
JB
13438/* Assuming DIE is an enumeration type, and TYPE is its associated type,
13439 update TYPE using some information only available in DIE's children. */
13440
13441static void
13442update_enumeration_type_from_children (struct die_info *die,
13443 struct type *type,
13444 struct dwarf2_cu *cu)
13445{
13446 struct obstack obstack;
60f7655a 13447 struct die_info *child_die;
55426c9d
JB
13448 int unsigned_enum = 1;
13449 int flag_enum = 1;
13450 ULONGEST mask = 0;
13451 struct cleanup *old_chain;
13452
13453 obstack_init (&obstack);
13454 old_chain = make_cleanup_obstack_free (&obstack);
13455
60f7655a
DE
13456 for (child_die = die->child;
13457 child_die != NULL && child_die->tag;
13458 child_die = sibling_die (child_die))
55426c9d
JB
13459 {
13460 struct attribute *attr;
13461 LONGEST value;
13462 const gdb_byte *bytes;
13463 struct dwarf2_locexpr_baton *baton;
13464 const char *name;
60f7655a 13465
55426c9d
JB
13466 if (child_die->tag != DW_TAG_enumerator)
13467 continue;
13468
13469 attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
13470 if (attr == NULL)
13471 continue;
13472
13473 name = dwarf2_name (child_die, cu);
13474 if (name == NULL)
13475 name = "<anonymous enumerator>";
13476
13477 dwarf2_const_value_attr (attr, type, name, &obstack, cu,
13478 &value, &bytes, &baton);
13479 if (value < 0)
13480 {
13481 unsigned_enum = 0;
13482 flag_enum = 0;
13483 }
13484 else if ((mask & value) != 0)
13485 flag_enum = 0;
13486 else
13487 mask |= value;
13488
13489 /* If we already know that the enum type is neither unsigned, nor
13490 a flag type, no need to look at the rest of the enumerates. */
13491 if (!unsigned_enum && !flag_enum)
13492 break;
55426c9d
JB
13493 }
13494
13495 if (unsigned_enum)
13496 TYPE_UNSIGNED (type) = 1;
13497 if (flag_enum)
13498 TYPE_FLAG_ENUM (type) = 1;
13499
13500 do_cleanups (old_chain);
13501}
13502
134d01f1
DJ
13503/* Given a DW_AT_enumeration_type die, set its type. We do not
13504 complete the type's fields yet, or create any symbols. */
c906108c 13505
f792889a 13506static struct type *
134d01f1 13507read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13508{
e7c27a73 13509 struct objfile *objfile = cu->objfile;
c906108c 13510 struct type *type;
c906108c 13511 struct attribute *attr;
0114d602 13512 const char *name;
134d01f1 13513
348e048f
DE
13514 /* If the definition of this type lives in .debug_types, read that type.
13515 Don't follow DW_AT_specification though, that will take us back up
13516 the chain and we want to go down. */
45e58e77 13517 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
348e048f
DE
13518 if (attr)
13519 {
ac9ec31b 13520 type = get_DW_AT_signature_type (die, attr, cu);
9dc481d3 13521
ac9ec31b 13522 /* The type's CU may not be the same as CU.
02142a6c 13523 Ensure TYPE is recorded with CU in die_type_hash. */
348e048f
DE
13524 return set_die_type (die, type, cu);
13525 }
13526
c906108c
SS
13527 type = alloc_type (objfile);
13528
13529 TYPE_CODE (type) = TYPE_CODE_ENUM;
94af9270 13530 name = dwarf2_full_name (NULL, die, cu);
39cbfefa 13531 if (name != NULL)
7d455152 13532 TYPE_TAG_NAME (type) = name;
c906108c 13533
0626fc76
TT
13534 attr = dwarf2_attr (die, DW_AT_type, cu);
13535 if (attr != NULL)
13536 {
13537 struct type *underlying_type = die_type (die, cu);
13538
13539 TYPE_TARGET_TYPE (type) = underlying_type;
13540 }
13541
e142c38c 13542 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
13543 if (attr)
13544 {
13545 TYPE_LENGTH (type) = DW_UNSND (attr);
13546 }
13547 else
13548 {
13549 TYPE_LENGTH (type) = 0;
13550 }
13551
137033e9
JB
13552 /* The enumeration DIE can be incomplete. In Ada, any type can be
13553 declared as private in the package spec, and then defined only
13554 inside the package body. Such types are known as Taft Amendment
13555 Types. When another package uses such a type, an incomplete DIE
13556 may be generated by the compiler. */
02eb380e 13557 if (die_is_declaration (die, cu))
876cecd0 13558 TYPE_STUB (type) = 1;
02eb380e 13559
0626fc76
TT
13560 /* Finish the creation of this type by using the enum's children.
13561 We must call this even when the underlying type has been provided
13562 so that we can determine if we're looking at a "flag" enum. */
55426c9d
JB
13563 update_enumeration_type_from_children (die, type, cu);
13564
0626fc76
TT
13565 /* If this type has an underlying type that is not a stub, then we
13566 may use its attributes. We always use the "unsigned" attribute
13567 in this situation, because ordinarily we guess whether the type
13568 is unsigned -- but the guess can be wrong and the underlying type
13569 can tell us the reality. However, we defer to a local size
13570 attribute if one exists, because this lets the compiler override
13571 the underlying type if needed. */
13572 if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
13573 {
13574 TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
13575 if (TYPE_LENGTH (type) == 0)
13576 TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
13577 }
13578
3d567982
TT
13579 TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
13580
f792889a 13581 return set_die_type (die, type, cu);
134d01f1
DJ
13582}
13583
13584/* Given a pointer to a die which begins an enumeration, process all
13585 the dies that define the members of the enumeration, and create the
13586 symbol for the enumeration type.
13587
13588 NOTE: We reverse the order of the element list. */
13589
13590static void
13591process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
13592{
f792889a 13593 struct type *this_type;
134d01f1 13594
f792889a
DJ
13595 this_type = get_die_type (die, cu);
13596 if (this_type == NULL)
13597 this_type = read_enumeration_type (die, cu);
9dc481d3 13598
639d11d3 13599 if (die->child != NULL)
c906108c 13600 {
9dc481d3
DE
13601 struct die_info *child_die;
13602 struct symbol *sym;
13603 struct field *fields = NULL;
13604 int num_fields = 0;
15d034d0 13605 const char *name;
9dc481d3 13606
639d11d3 13607 child_die = die->child;
c906108c
SS
13608 while (child_die && child_die->tag)
13609 {
13610 if (child_die->tag != DW_TAG_enumerator)
13611 {
e7c27a73 13612 process_die (child_die, cu);
c906108c
SS
13613 }
13614 else
13615 {
39cbfefa
DJ
13616 name = dwarf2_name (child_die, cu);
13617 if (name)
c906108c 13618 {
f792889a 13619 sym = new_symbol (child_die, this_type, cu);
c906108c
SS
13620
13621 if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
13622 {
13623 fields = (struct field *)
13624 xrealloc (fields,
13625 (num_fields + DW_FIELD_ALLOC_CHUNK)
c5aa993b 13626 * sizeof (struct field));
c906108c
SS
13627 }
13628
3567439c 13629 FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
c906108c 13630 FIELD_TYPE (fields[num_fields]) = NULL;
14e75d8e 13631 SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
c906108c
SS
13632 FIELD_BITSIZE (fields[num_fields]) = 0;
13633
13634 num_fields++;
13635 }
13636 }
13637
13638 child_die = sibling_die (child_die);
13639 }
13640
13641 if (num_fields)
13642 {
f792889a
DJ
13643 TYPE_NFIELDS (this_type) = num_fields;
13644 TYPE_FIELDS (this_type) = (struct field *)
13645 TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
13646 memcpy (TYPE_FIELDS (this_type), fields,
c906108c 13647 sizeof (struct field) * num_fields);
b8c9b27d 13648 xfree (fields);
c906108c 13649 }
c906108c 13650 }
134d01f1 13651
6c83ed52
TT
13652 /* If we are reading an enum from a .debug_types unit, and the enum
13653 is a declaration, and the enum is not the signatured type in the
13654 unit, then we do not want to add a symbol for it. Adding a
13655 symbol would in some cases obscure the true definition of the
13656 enum, giving users an incomplete type when the definition is
13657 actually available. Note that we do not want to do this for all
13658 enums which are just declarations, because C++0x allows forward
13659 enum declarations. */
3019eac3 13660 if (cu->per_cu->is_debug_types
6c83ed52
TT
13661 && die_is_declaration (die, cu))
13662 {
52dc124a 13663 struct signatured_type *sig_type;
6c83ed52 13664
c0f78cd4 13665 sig_type = (struct signatured_type *) cu->per_cu;
3019eac3
DE
13666 gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
13667 if (sig_type->type_offset_in_section.sect_off != die->offset.sect_off)
6c83ed52
TT
13668 return;
13669 }
13670
f792889a 13671 new_symbol (die, this_type, cu);
c906108c
SS
13672}
13673
13674/* Extract all information from a DW_TAG_array_type DIE and put it in
13675 the DIE's type field. For now, this only handles one dimensional
13676 arrays. */
13677
f792889a 13678static struct type *
e7c27a73 13679read_array_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13680{
e7c27a73 13681 struct objfile *objfile = cu->objfile;
c906108c 13682 struct die_info *child_die;
7e314c57 13683 struct type *type;
c906108c
SS
13684 struct type *element_type, *range_type, *index_type;
13685 struct type **range_types = NULL;
13686 struct attribute *attr;
13687 int ndim = 0;
13688 struct cleanup *back_to;
15d034d0 13689 const char *name;
dc53a7ad 13690 unsigned int bit_stride = 0;
c906108c 13691
e7c27a73 13692 element_type = die_type (die, cu);
c906108c 13693
7e314c57
JK
13694 /* The die_type call above may have already set the type for this DIE. */
13695 type = get_die_type (die, cu);
13696 if (type)
13697 return type;
13698
dc53a7ad
JB
13699 attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
13700 if (attr != NULL)
13701 bit_stride = DW_UNSND (attr) * 8;
13702
13703 attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
13704 if (attr != NULL)
13705 bit_stride = DW_UNSND (attr);
13706
c906108c
SS
13707 /* Irix 6.2 native cc creates array types without children for
13708 arrays with unspecified length. */
639d11d3 13709 if (die->child == NULL)
c906108c 13710 {
46bf5051 13711 index_type = objfile_type (objfile)->builtin_int;
0c9c3474 13712 range_type = create_static_range_type (NULL, index_type, 0, -1);
dc53a7ad
JB
13713 type = create_array_type_with_stride (NULL, element_type, range_type,
13714 bit_stride);
f792889a 13715 return set_die_type (die, type, cu);
c906108c
SS
13716 }
13717
13718 back_to = make_cleanup (null_cleanup, NULL);
639d11d3 13719 child_die = die->child;
c906108c
SS
13720 while (child_die && child_die->tag)
13721 {
13722 if (child_die->tag == DW_TAG_subrange_type)
13723 {
f792889a 13724 struct type *child_type = read_type_die (child_die, cu);
9a619af0 13725
f792889a 13726 if (child_type != NULL)
a02abb62 13727 {
0963b4bd
MS
13728 /* The range type was succesfully read. Save it for the
13729 array type creation. */
a02abb62
JB
13730 if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
13731 {
13732 range_types = (struct type **)
13733 xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
13734 * sizeof (struct type *));
13735 if (ndim == 0)
13736 make_cleanup (free_current_contents, &range_types);
13737 }
f792889a 13738 range_types[ndim++] = child_type;
a02abb62 13739 }
c906108c
SS
13740 }
13741 child_die = sibling_die (child_die);
13742 }
13743
13744 /* Dwarf2 dimensions are output from left to right, create the
13745 necessary array types in backwards order. */
7ca2d3a3 13746
c906108c 13747 type = element_type;
7ca2d3a3
DL
13748
13749 if (read_array_order (die, cu) == DW_ORD_col_major)
13750 {
13751 int i = 0;
9a619af0 13752
7ca2d3a3 13753 while (i < ndim)
dc53a7ad
JB
13754 type = create_array_type_with_stride (NULL, type, range_types[i++],
13755 bit_stride);
7ca2d3a3
DL
13756 }
13757 else
13758 {
13759 while (ndim-- > 0)
dc53a7ad
JB
13760 type = create_array_type_with_stride (NULL, type, range_types[ndim],
13761 bit_stride);
7ca2d3a3 13762 }
c906108c 13763
f5f8a009
EZ
13764 /* Understand Dwarf2 support for vector types (like they occur on
13765 the PowerPC w/ AltiVec). Gcc just adds another attribute to the
13766 array type. This is not part of the Dwarf2/3 standard yet, but a
13767 custom vendor extension. The main difference between a regular
13768 array and the vector variant is that vectors are passed by value
13769 to functions. */
e142c38c 13770 attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
f5f8a009 13771 if (attr)
ea37ba09 13772 make_vector_type (type);
f5f8a009 13773
dbc98a8b
KW
13774 /* The DIE may have DW_AT_byte_size set. For example an OpenCL
13775 implementation may choose to implement triple vectors using this
13776 attribute. */
13777 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13778 if (attr)
13779 {
13780 if (DW_UNSND (attr) >= TYPE_LENGTH (type))
13781 TYPE_LENGTH (type) = DW_UNSND (attr);
13782 else
3e43a32a
MS
13783 complaint (&symfile_complaints,
13784 _("DW_AT_byte_size for array type smaller "
13785 "than the total size of elements"));
dbc98a8b
KW
13786 }
13787
39cbfefa
DJ
13788 name = dwarf2_name (die, cu);
13789 if (name)
13790 TYPE_NAME (type) = name;
6e70227d 13791
0963b4bd 13792 /* Install the type in the die. */
7e314c57
JK
13793 set_die_type (die, type, cu);
13794
13795 /* set_die_type should be already done. */
b4ba55a1
JB
13796 set_descriptive_type (type, die, cu);
13797
c906108c
SS
13798 do_cleanups (back_to);
13799
7e314c57 13800 return type;
c906108c
SS
13801}
13802
7ca2d3a3 13803static enum dwarf_array_dim_ordering
6e70227d 13804read_array_order (struct die_info *die, struct dwarf2_cu *cu)
7ca2d3a3
DL
13805{
13806 struct attribute *attr;
13807
13808 attr = dwarf2_attr (die, DW_AT_ordering, cu);
13809
13810 if (attr) return DW_SND (attr);
13811
0963b4bd
MS
13812 /* GNU F77 is a special case, as at 08/2004 array type info is the
13813 opposite order to the dwarf2 specification, but data is still
13814 laid out as per normal fortran.
7ca2d3a3 13815
0963b4bd
MS
13816 FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
13817 version checking. */
7ca2d3a3 13818
905e0470
PM
13819 if (cu->language == language_fortran
13820 && cu->producer && strstr (cu->producer, "GNU F77"))
7ca2d3a3
DL
13821 {
13822 return DW_ORD_row_major;
13823 }
13824
6e70227d 13825 switch (cu->language_defn->la_array_ordering)
7ca2d3a3
DL
13826 {
13827 case array_column_major:
13828 return DW_ORD_col_major;
13829 case array_row_major:
13830 default:
13831 return DW_ORD_row_major;
13832 };
13833}
13834
72019c9c 13835/* Extract all information from a DW_TAG_set_type DIE and put it in
0963b4bd 13836 the DIE's type field. */
72019c9c 13837
f792889a 13838static struct type *
72019c9c
GM
13839read_set_type (struct die_info *die, struct dwarf2_cu *cu)
13840{
7e314c57
JK
13841 struct type *domain_type, *set_type;
13842 struct attribute *attr;
f792889a 13843
7e314c57
JK
13844 domain_type = die_type (die, cu);
13845
13846 /* The die_type call above may have already set the type for this DIE. */
13847 set_type = get_die_type (die, cu);
13848 if (set_type)
13849 return set_type;
13850
13851 set_type = create_set_type (NULL, domain_type);
13852
13853 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
d09039dd
PM
13854 if (attr)
13855 TYPE_LENGTH (set_type) = DW_UNSND (attr);
7e314c57 13856
f792889a 13857 return set_die_type (die, set_type, cu);
72019c9c 13858}
7ca2d3a3 13859
0971de02
TT
13860/* A helper for read_common_block that creates a locexpr baton.
13861 SYM is the symbol which we are marking as computed.
13862 COMMON_DIE is the DIE for the common block.
13863 COMMON_LOC is the location expression attribute for the common
13864 block itself.
13865 MEMBER_LOC is the location expression attribute for the particular
13866 member of the common block that we are processing.
13867 CU is the CU from which the above come. */
13868
13869static void
13870mark_common_block_symbol_computed (struct symbol *sym,
13871 struct die_info *common_die,
13872 struct attribute *common_loc,
13873 struct attribute *member_loc,
13874 struct dwarf2_cu *cu)
13875{
13876 struct objfile *objfile = dwarf2_per_objfile->objfile;
13877 struct dwarf2_locexpr_baton *baton;
13878 gdb_byte *ptr;
13879 unsigned int cu_off;
13880 enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
13881 LONGEST offset = 0;
13882
13883 gdb_assert (common_loc && member_loc);
13884 gdb_assert (attr_form_is_block (common_loc));
13885 gdb_assert (attr_form_is_block (member_loc)
13886 || attr_form_is_constant (member_loc));
13887
13888 baton = obstack_alloc (&objfile->objfile_obstack,
13889 sizeof (struct dwarf2_locexpr_baton));
13890 baton->per_cu = cu->per_cu;
13891 gdb_assert (baton->per_cu);
13892
13893 baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
13894
13895 if (attr_form_is_constant (member_loc))
13896 {
13897 offset = dwarf2_get_attr_constant_value (member_loc, 0);
13898 baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
13899 }
13900 else
13901 baton->size += DW_BLOCK (member_loc)->size;
13902
13903 ptr = obstack_alloc (&objfile->objfile_obstack, baton->size);
13904 baton->data = ptr;
13905
13906 *ptr++ = DW_OP_call4;
13907 cu_off = common_die->offset.sect_off - cu->per_cu->offset.sect_off;
13908 store_unsigned_integer (ptr, 4, byte_order, cu_off);
13909 ptr += 4;
13910
13911 if (attr_form_is_constant (member_loc))
13912 {
13913 *ptr++ = DW_OP_addr;
13914 store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
13915 ptr += cu->header.addr_size;
13916 }
13917 else
13918 {
13919 /* We have to copy the data here, because DW_OP_call4 will only
13920 use a DW_AT_location attribute. */
13921 memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
13922 ptr += DW_BLOCK (member_loc)->size;
13923 }
13924
13925 *ptr++ = DW_OP_plus;
13926 gdb_assert (ptr - baton->data == baton->size);
13927
0971de02 13928 SYMBOL_LOCATION_BATON (sym) = baton;
f1e6e072 13929 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
0971de02
TT
13930}
13931
4357ac6c
TT
13932/* Create appropriate locally-scoped variables for all the
13933 DW_TAG_common_block entries. Also create a struct common_block
13934 listing all such variables for `info common'. COMMON_BLOCK_DOMAIN
13935 is used to sepate the common blocks name namespace from regular
13936 variable names. */
c906108c
SS
13937
13938static void
e7c27a73 13939read_common_block (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13940{
0971de02
TT
13941 struct attribute *attr;
13942
13943 attr = dwarf2_attr (die, DW_AT_location, cu);
13944 if (attr)
13945 {
13946 /* Support the .debug_loc offsets. */
13947 if (attr_form_is_block (attr))
13948 {
13949 /* Ok. */
13950 }
13951 else if (attr_form_is_section_offset (attr))
13952 {
13953 dwarf2_complex_location_expr_complaint ();
13954 attr = NULL;
13955 }
13956 else
13957 {
13958 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
13959 "common block member");
13960 attr = NULL;
13961 }
13962 }
13963
639d11d3 13964 if (die->child != NULL)
c906108c 13965 {
4357ac6c
TT
13966 struct objfile *objfile = cu->objfile;
13967 struct die_info *child_die;
13968 size_t n_entries = 0, size;
13969 struct common_block *common_block;
13970 struct symbol *sym;
74ac6d43 13971
4357ac6c
TT
13972 for (child_die = die->child;
13973 child_die && child_die->tag;
13974 child_die = sibling_die (child_die))
13975 ++n_entries;
13976
13977 size = (sizeof (struct common_block)
13978 + (n_entries - 1) * sizeof (struct symbol *));
13979 common_block = obstack_alloc (&objfile->objfile_obstack, size);
13980 memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
13981 common_block->n_entries = 0;
13982
13983 for (child_die = die->child;
13984 child_die && child_die->tag;
13985 child_die = sibling_die (child_die))
13986 {
13987 /* Create the symbol in the DW_TAG_common_block block in the current
13988 symbol scope. */
e7c27a73 13989 sym = new_symbol (child_die, NULL, cu);
0971de02
TT
13990 if (sym != NULL)
13991 {
13992 struct attribute *member_loc;
13993
13994 common_block->contents[common_block->n_entries++] = sym;
13995
13996 member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
13997 cu);
13998 if (member_loc)
13999 {
14000 /* GDB has handled this for a long time, but it is
14001 not specified by DWARF. It seems to have been
14002 emitted by gfortran at least as recently as:
14003 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057. */
14004 complaint (&symfile_complaints,
14005 _("Variable in common block has "
14006 "DW_AT_data_member_location "
14007 "- DIE at 0x%x [in module %s]"),
4262abfb
JK
14008 child_die->offset.sect_off,
14009 objfile_name (cu->objfile));
0971de02
TT
14010
14011 if (attr_form_is_section_offset (member_loc))
14012 dwarf2_complex_location_expr_complaint ();
14013 else if (attr_form_is_constant (member_loc)
14014 || attr_form_is_block (member_loc))
14015 {
14016 if (attr)
14017 mark_common_block_symbol_computed (sym, die, attr,
14018 member_loc, cu);
14019 }
14020 else
14021 dwarf2_complex_location_expr_complaint ();
14022 }
14023 }
c906108c 14024 }
4357ac6c
TT
14025
14026 sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
14027 SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
c906108c
SS
14028 }
14029}
14030
0114d602 14031/* Create a type for a C++ namespace. */
d9fa45fe 14032
0114d602
DJ
14033static struct type *
14034read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
d9fa45fe 14035{
e7c27a73 14036 struct objfile *objfile = cu->objfile;
0114d602 14037 const char *previous_prefix, *name;
9219021c 14038 int is_anonymous;
0114d602
DJ
14039 struct type *type;
14040
14041 /* For extensions, reuse the type of the original namespace. */
14042 if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
14043 {
14044 struct die_info *ext_die;
14045 struct dwarf2_cu *ext_cu = cu;
9a619af0 14046
0114d602
DJ
14047 ext_die = dwarf2_extension (die, &ext_cu);
14048 type = read_type_die (ext_die, ext_cu);
9dc481d3
DE
14049
14050 /* EXT_CU may not be the same as CU.
02142a6c 14051 Ensure TYPE is recorded with CU in die_type_hash. */
0114d602
DJ
14052 return set_die_type (die, type, cu);
14053 }
9219021c 14054
e142c38c 14055 name = namespace_name (die, &is_anonymous, cu);
9219021c
DC
14056
14057 /* Now build the name of the current namespace. */
14058
0114d602
DJ
14059 previous_prefix = determine_prefix (die, cu);
14060 if (previous_prefix[0] != '\0')
14061 name = typename_concat (&objfile->objfile_obstack,
f55ee35c 14062 previous_prefix, name, 0, cu);
0114d602
DJ
14063
14064 /* Create the type. */
14065 type = init_type (TYPE_CODE_NAMESPACE, 0, 0, NULL,
14066 objfile);
abee88f2 14067 TYPE_NAME (type) = name;
0114d602
DJ
14068 TYPE_TAG_NAME (type) = TYPE_NAME (type);
14069
60531b24 14070 return set_die_type (die, type, cu);
0114d602
DJ
14071}
14072
14073/* Read a C++ namespace. */
14074
14075static void
14076read_namespace (struct die_info *die, struct dwarf2_cu *cu)
14077{
14078 struct objfile *objfile = cu->objfile;
0114d602 14079 int is_anonymous;
9219021c 14080
5c4e30ca
DC
14081 /* Add a symbol associated to this if we haven't seen the namespace
14082 before. Also, add a using directive if it's an anonymous
14083 namespace. */
9219021c 14084
f2f0e013 14085 if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
5c4e30ca
DC
14086 {
14087 struct type *type;
14088
0114d602 14089 type = read_type_die (die, cu);
e7c27a73 14090 new_symbol (die, type, cu);
5c4e30ca 14091
e8e80198 14092 namespace_name (die, &is_anonymous, cu);
5c4e30ca 14093 if (is_anonymous)
0114d602
DJ
14094 {
14095 const char *previous_prefix = determine_prefix (die, cu);
9a619af0 14096
c0cc3a76 14097 cp_add_using_directive (previous_prefix, TYPE_NAME (type), NULL,
12aaed36 14098 NULL, NULL, 0, &objfile->objfile_obstack);
0114d602 14099 }
5c4e30ca 14100 }
9219021c 14101
639d11d3 14102 if (die->child != NULL)
d9fa45fe 14103 {
639d11d3 14104 struct die_info *child_die = die->child;
6e70227d 14105
d9fa45fe
DC
14106 while (child_die && child_die->tag)
14107 {
e7c27a73 14108 process_die (child_die, cu);
d9fa45fe
DC
14109 child_die = sibling_die (child_die);
14110 }
14111 }
38d518c9
EZ
14112}
14113
f55ee35c
JK
14114/* Read a Fortran module as type. This DIE can be only a declaration used for
14115 imported module. Still we need that type as local Fortran "use ... only"
14116 declaration imports depend on the created type in determine_prefix. */
14117
14118static struct type *
14119read_module_type (struct die_info *die, struct dwarf2_cu *cu)
14120{
14121 struct objfile *objfile = cu->objfile;
15d034d0 14122 const char *module_name;
f55ee35c
JK
14123 struct type *type;
14124
14125 module_name = dwarf2_name (die, cu);
14126 if (!module_name)
3e43a32a
MS
14127 complaint (&symfile_complaints,
14128 _("DW_TAG_module has no name, offset 0x%x"),
b64f50a1 14129 die->offset.sect_off);
f55ee35c
JK
14130 type = init_type (TYPE_CODE_MODULE, 0, 0, module_name, objfile);
14131
14132 /* determine_prefix uses TYPE_TAG_NAME. */
14133 TYPE_TAG_NAME (type) = TYPE_NAME (type);
14134
14135 return set_die_type (die, type, cu);
14136}
14137
5d7cb8df
JK
14138/* Read a Fortran module. */
14139
14140static void
14141read_module (struct die_info *die, struct dwarf2_cu *cu)
14142{
14143 struct die_info *child_die = die->child;
530e8392
KB
14144 struct type *type;
14145
14146 type = read_type_die (die, cu);
14147 new_symbol (die, type, cu);
5d7cb8df 14148
5d7cb8df
JK
14149 while (child_die && child_die->tag)
14150 {
14151 process_die (child_die, cu);
14152 child_die = sibling_die (child_die);
14153 }
14154}
14155
38d518c9
EZ
14156/* Return the name of the namespace represented by DIE. Set
14157 *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
14158 namespace. */
14159
14160static const char *
e142c38c 14161namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
38d518c9
EZ
14162{
14163 struct die_info *current_die;
14164 const char *name = NULL;
14165
14166 /* Loop through the extensions until we find a name. */
14167
14168 for (current_die = die;
14169 current_die != NULL;
f2f0e013 14170 current_die = dwarf2_extension (die, &cu))
38d518c9 14171 {
96553a0c
DE
14172 /* We don't use dwarf2_name here so that we can detect the absence
14173 of a name -> anonymous namespace. */
14174 struct attribute *attr = dwarf2_attr (die, DW_AT_name, cu);
14175
14176 if (attr != NULL)
14177 name = DW_STRING (attr);
38d518c9
EZ
14178 if (name != NULL)
14179 break;
14180 }
14181
14182 /* Is it an anonymous namespace? */
14183
14184 *is_anonymous = (name == NULL);
14185 if (*is_anonymous)
2b1dbab0 14186 name = CP_ANONYMOUS_NAMESPACE_STR;
38d518c9
EZ
14187
14188 return name;
d9fa45fe
DC
14189}
14190
c906108c
SS
14191/* Extract all information from a DW_TAG_pointer_type DIE and add to
14192 the user defined type vector. */
14193
f792889a 14194static struct type *
e7c27a73 14195read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14196{
5e2b427d 14197 struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
e7c27a73 14198 struct comp_unit_head *cu_header = &cu->header;
c906108c 14199 struct type *type;
8b2dbe47
KB
14200 struct attribute *attr_byte_size;
14201 struct attribute *attr_address_class;
14202 int byte_size, addr_class;
7e314c57
JK
14203 struct type *target_type;
14204
14205 target_type = die_type (die, cu);
c906108c 14206
7e314c57
JK
14207 /* The die_type call above may have already set the type for this DIE. */
14208 type = get_die_type (die, cu);
14209 if (type)
14210 return type;
14211
14212 type = lookup_pointer_type (target_type);
8b2dbe47 14213
e142c38c 14214 attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
8b2dbe47
KB
14215 if (attr_byte_size)
14216 byte_size = DW_UNSND (attr_byte_size);
c906108c 14217 else
8b2dbe47
KB
14218 byte_size = cu_header->addr_size;
14219
e142c38c 14220 attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
8b2dbe47
KB
14221 if (attr_address_class)
14222 addr_class = DW_UNSND (attr_address_class);
14223 else
14224 addr_class = DW_ADDR_none;
14225
14226 /* If the pointer size or address class is different than the
14227 default, create a type variant marked as such and set the
14228 length accordingly. */
14229 if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
c906108c 14230 {
5e2b427d 14231 if (gdbarch_address_class_type_flags_p (gdbarch))
8b2dbe47
KB
14232 {
14233 int type_flags;
14234
849957d9 14235 type_flags = gdbarch_address_class_type_flags
5e2b427d 14236 (gdbarch, byte_size, addr_class);
876cecd0
TT
14237 gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
14238 == 0);
8b2dbe47
KB
14239 type = make_type_with_address_space (type, type_flags);
14240 }
14241 else if (TYPE_LENGTH (type) != byte_size)
14242 {
3e43a32a
MS
14243 complaint (&symfile_complaints,
14244 _("invalid pointer size %d"), byte_size);
8b2dbe47 14245 }
6e70227d 14246 else
9a619af0
MS
14247 {
14248 /* Should we also complain about unhandled address classes? */
14249 }
c906108c 14250 }
8b2dbe47
KB
14251
14252 TYPE_LENGTH (type) = byte_size;
f792889a 14253 return set_die_type (die, type, cu);
c906108c
SS
14254}
14255
14256/* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
14257 the user defined type vector. */
14258
f792889a 14259static struct type *
e7c27a73 14260read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c
SS
14261{
14262 struct type *type;
14263 struct type *to_type;
14264 struct type *domain;
14265
e7c27a73
DJ
14266 to_type = die_type (die, cu);
14267 domain = die_containing_type (die, cu);
0d5de010 14268
7e314c57
JK
14269 /* The calls above may have already set the type for this DIE. */
14270 type = get_die_type (die, cu);
14271 if (type)
14272 return type;
14273
0d5de010
DJ
14274 if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
14275 type = lookup_methodptr_type (to_type);
7078baeb
TT
14276 else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
14277 {
14278 struct type *new_type = alloc_type (cu->objfile);
14279
14280 smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
14281 TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
14282 TYPE_VARARGS (to_type));
14283 type = lookup_methodptr_type (new_type);
14284 }
0d5de010
DJ
14285 else
14286 type = lookup_memberptr_type (to_type, domain);
c906108c 14287
f792889a 14288 return set_die_type (die, type, cu);
c906108c
SS
14289}
14290
14291/* Extract all information from a DW_TAG_reference_type DIE and add to
14292 the user defined type vector. */
14293
f792889a 14294static struct type *
e7c27a73 14295read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14296{
e7c27a73 14297 struct comp_unit_head *cu_header = &cu->header;
7e314c57 14298 struct type *type, *target_type;
c906108c
SS
14299 struct attribute *attr;
14300
7e314c57
JK
14301 target_type = die_type (die, cu);
14302
14303 /* The die_type call above may have already set the type for this DIE. */
14304 type = get_die_type (die, cu);
14305 if (type)
14306 return type;
14307
14308 type = lookup_reference_type (target_type);
e142c38c 14309 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
14310 if (attr)
14311 {
14312 TYPE_LENGTH (type) = DW_UNSND (attr);
14313 }
14314 else
14315 {
107d2387 14316 TYPE_LENGTH (type) = cu_header->addr_size;
c906108c 14317 }
f792889a 14318 return set_die_type (die, type, cu);
c906108c
SS
14319}
14320
cf363f18
MW
14321/* Add the given cv-qualifiers to the element type of the array. GCC
14322 outputs DWARF type qualifiers that apply to an array, not the
14323 element type. But GDB relies on the array element type to carry
14324 the cv-qualifiers. This mimics section 6.7.3 of the C99
14325 specification. */
14326
14327static struct type *
14328add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
14329 struct type *base_type, int cnst, int voltl)
14330{
14331 struct type *el_type, *inner_array;
14332
14333 base_type = copy_type (base_type);
14334 inner_array = base_type;
14335
14336 while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
14337 {
14338 TYPE_TARGET_TYPE (inner_array) =
14339 copy_type (TYPE_TARGET_TYPE (inner_array));
14340 inner_array = TYPE_TARGET_TYPE (inner_array);
14341 }
14342
14343 el_type = TYPE_TARGET_TYPE (inner_array);
14344 cnst |= TYPE_CONST (el_type);
14345 voltl |= TYPE_VOLATILE (el_type);
14346 TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
14347
14348 return set_die_type (die, base_type, cu);
14349}
14350
f792889a 14351static struct type *
e7c27a73 14352read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14353{
f792889a 14354 struct type *base_type, *cv_type;
c906108c 14355
e7c27a73 14356 base_type = die_type (die, cu);
7e314c57
JK
14357
14358 /* The die_type call above may have already set the type for this DIE. */
14359 cv_type = get_die_type (die, cu);
14360 if (cv_type)
14361 return cv_type;
14362
2f608a3a
KW
14363 /* In case the const qualifier is applied to an array type, the element type
14364 is so qualified, not the array type (section 6.7.3 of C99). */
14365 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
cf363f18 14366 return add_array_cv_type (die, cu, base_type, 1, 0);
2f608a3a 14367
f792889a
DJ
14368 cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
14369 return set_die_type (die, cv_type, cu);
c906108c
SS
14370}
14371
f792889a 14372static struct type *
e7c27a73 14373read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14374{
f792889a 14375 struct type *base_type, *cv_type;
c906108c 14376
e7c27a73 14377 base_type = die_type (die, cu);
7e314c57
JK
14378
14379 /* The die_type call above may have already set the type for this DIE. */
14380 cv_type = get_die_type (die, cu);
14381 if (cv_type)
14382 return cv_type;
14383
cf363f18
MW
14384 /* In case the volatile qualifier is applied to an array type, the
14385 element type is so qualified, not the array type (section 6.7.3
14386 of C99). */
14387 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
14388 return add_array_cv_type (die, cu, base_type, 0, 1);
14389
f792889a
DJ
14390 cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
14391 return set_die_type (die, cv_type, cu);
c906108c
SS
14392}
14393
06d66ee9
TT
14394/* Handle DW_TAG_restrict_type. */
14395
14396static struct type *
14397read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
14398{
14399 struct type *base_type, *cv_type;
14400
14401 base_type = die_type (die, cu);
14402
14403 /* The die_type call above may have already set the type for this DIE. */
14404 cv_type = get_die_type (die, cu);
14405 if (cv_type)
14406 return cv_type;
14407
14408 cv_type = make_restrict_type (base_type);
14409 return set_die_type (die, cv_type, cu);
14410}
14411
a2c2acaf
MW
14412/* Handle DW_TAG_atomic_type. */
14413
14414static struct type *
14415read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
14416{
14417 struct type *base_type, *cv_type;
14418
14419 base_type = die_type (die, cu);
14420
14421 /* The die_type call above may have already set the type for this DIE. */
14422 cv_type = get_die_type (die, cu);
14423 if (cv_type)
14424 return cv_type;
14425
14426 cv_type = make_atomic_type (base_type);
14427 return set_die_type (die, cv_type, cu);
14428}
14429
c906108c
SS
14430/* Extract all information from a DW_TAG_string_type DIE and add to
14431 the user defined type vector. It isn't really a user defined type,
14432 but it behaves like one, with other DIE's using an AT_user_def_type
14433 attribute to reference it. */
14434
f792889a 14435static struct type *
e7c27a73 14436read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14437{
e7c27a73 14438 struct objfile *objfile = cu->objfile;
3b7538c0 14439 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
14440 struct type *type, *range_type, *index_type, *char_type;
14441 struct attribute *attr;
14442 unsigned int length;
14443
e142c38c 14444 attr = dwarf2_attr (die, DW_AT_string_length, cu);
c906108c
SS
14445 if (attr)
14446 {
14447 length = DW_UNSND (attr);
14448 }
14449 else
14450 {
0963b4bd 14451 /* Check for the DW_AT_byte_size attribute. */
e142c38c 14452 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
b21b22e0
PS
14453 if (attr)
14454 {
14455 length = DW_UNSND (attr);
14456 }
14457 else
14458 {
14459 length = 1;
14460 }
c906108c 14461 }
6ccb9162 14462
46bf5051 14463 index_type = objfile_type (objfile)->builtin_int;
0c9c3474 14464 range_type = create_static_range_type (NULL, index_type, 1, length);
3b7538c0
UW
14465 char_type = language_string_char_type (cu->language_defn, gdbarch);
14466 type = create_string_type (NULL, char_type, range_type);
6ccb9162 14467
f792889a 14468 return set_die_type (die, type, cu);
c906108c
SS
14469}
14470
4d804846
JB
14471/* Assuming that DIE corresponds to a function, returns nonzero
14472 if the function is prototyped. */
14473
14474static int
14475prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
14476{
14477 struct attribute *attr;
14478
14479 attr = dwarf2_attr (die, DW_AT_prototyped, cu);
14480 if (attr && (DW_UNSND (attr) != 0))
14481 return 1;
14482
14483 /* The DWARF standard implies that the DW_AT_prototyped attribute
14484 is only meaninful for C, but the concept also extends to other
14485 languages that allow unprototyped functions (Eg: Objective C).
14486 For all other languages, assume that functions are always
14487 prototyped. */
14488 if (cu->language != language_c
14489 && cu->language != language_objc
14490 && cu->language != language_opencl)
14491 return 1;
14492
14493 /* RealView does not emit DW_AT_prototyped. We can not distinguish
14494 prototyped and unprototyped functions; default to prototyped,
14495 since that is more common in modern code (and RealView warns
14496 about unprototyped functions). */
14497 if (producer_is_realview (cu->producer))
14498 return 1;
14499
14500 return 0;
14501}
14502
c906108c
SS
14503/* Handle DIES due to C code like:
14504
14505 struct foo
c5aa993b
JM
14506 {
14507 int (*funcp)(int a, long l);
14508 int b;
14509 };
c906108c 14510
0963b4bd 14511 ('funcp' generates a DW_TAG_subroutine_type DIE). */
c906108c 14512
f792889a 14513static struct type *
e7c27a73 14514read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14515{
bb5ed363 14516 struct objfile *objfile = cu->objfile;
0963b4bd
MS
14517 struct type *type; /* Type that this function returns. */
14518 struct type *ftype; /* Function that returns above type. */
c906108c
SS
14519 struct attribute *attr;
14520
e7c27a73 14521 type = die_type (die, cu);
7e314c57
JK
14522
14523 /* The die_type call above may have already set the type for this DIE. */
14524 ftype = get_die_type (die, cu);
14525 if (ftype)
14526 return ftype;
14527
0c8b41f1 14528 ftype = lookup_function_type (type);
c906108c 14529
4d804846 14530 if (prototyped_function_p (die, cu))
a6c727b2 14531 TYPE_PROTOTYPED (ftype) = 1;
c906108c 14532
c055b101
CV
14533 /* Store the calling convention in the type if it's available in
14534 the subroutine die. Otherwise set the calling convention to
14535 the default value DW_CC_normal. */
14536 attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
54fcddd0
UW
14537 if (attr)
14538 TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
14539 else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
14540 TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
14541 else
14542 TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
76c10ea2 14543
743649fd
MW
14544 /* Record whether the function returns normally to its caller or not
14545 if the DWARF producer set that information. */
14546 attr = dwarf2_attr (die, DW_AT_noreturn, cu);
14547 if (attr && (DW_UNSND (attr) != 0))
14548 TYPE_NO_RETURN (ftype) = 1;
14549
76c10ea2
GM
14550 /* We need to add the subroutine type to the die immediately so
14551 we don't infinitely recurse when dealing with parameters
0963b4bd 14552 declared as the same subroutine type. */
76c10ea2 14553 set_die_type (die, ftype, cu);
6e70227d 14554
639d11d3 14555 if (die->child != NULL)
c906108c 14556 {
bb5ed363 14557 struct type *void_type = objfile_type (objfile)->builtin_void;
c906108c 14558 struct die_info *child_die;
8072405b 14559 int nparams, iparams;
c906108c
SS
14560
14561 /* Count the number of parameters.
14562 FIXME: GDB currently ignores vararg functions, but knows about
14563 vararg member functions. */
8072405b 14564 nparams = 0;
639d11d3 14565 child_die = die->child;
c906108c
SS
14566 while (child_die && child_die->tag)
14567 {
14568 if (child_die->tag == DW_TAG_formal_parameter)
14569 nparams++;
14570 else if (child_die->tag == DW_TAG_unspecified_parameters)
876cecd0 14571 TYPE_VARARGS (ftype) = 1;
c906108c
SS
14572 child_die = sibling_die (child_die);
14573 }
14574
14575 /* Allocate storage for parameters and fill them in. */
14576 TYPE_NFIELDS (ftype) = nparams;
14577 TYPE_FIELDS (ftype) = (struct field *)
ae5a43e0 14578 TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
c906108c 14579
8072405b
JK
14580 /* TYPE_FIELD_TYPE must never be NULL. Pre-fill the array to ensure it
14581 even if we error out during the parameters reading below. */
14582 for (iparams = 0; iparams < nparams; iparams++)
14583 TYPE_FIELD_TYPE (ftype, iparams) = void_type;
14584
14585 iparams = 0;
639d11d3 14586 child_die = die->child;
c906108c
SS
14587 while (child_die && child_die->tag)
14588 {
14589 if (child_die->tag == DW_TAG_formal_parameter)
14590 {
3ce3b1ba
PA
14591 struct type *arg_type;
14592
14593 /* DWARF version 2 has no clean way to discern C++
14594 static and non-static member functions. G++ helps
14595 GDB by marking the first parameter for non-static
14596 member functions (which is the this pointer) as
14597 artificial. We pass this information to
14598 dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
14599
14600 DWARF version 3 added DW_AT_object_pointer, which GCC
14601 4.5 does not yet generate. */
e142c38c 14602 attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
c906108c
SS
14603 if (attr)
14604 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
14605 else
418835cc
KS
14606 {
14607 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
14608
14609 /* GCC/43521: In java, the formal parameter
14610 "this" is sometimes not marked with DW_AT_artificial. */
14611 if (cu->language == language_java)
14612 {
14613 const char *name = dwarf2_name (child_die, cu);
9a619af0 14614
418835cc
KS
14615 if (name && !strcmp (name, "this"))
14616 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 1;
14617 }
14618 }
3ce3b1ba
PA
14619 arg_type = die_type (child_die, cu);
14620
14621 /* RealView does not mark THIS as const, which the testsuite
14622 expects. GCC marks THIS as const in method definitions,
14623 but not in the class specifications (GCC PR 43053). */
14624 if (cu->language == language_cplus && !TYPE_CONST (arg_type)
14625 && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
14626 {
14627 int is_this = 0;
14628 struct dwarf2_cu *arg_cu = cu;
14629 const char *name = dwarf2_name (child_die, cu);
14630
14631 attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
14632 if (attr)
14633 {
14634 /* If the compiler emits this, use it. */
14635 if (follow_die_ref (die, attr, &arg_cu) == child_die)
14636 is_this = 1;
14637 }
14638 else if (name && strcmp (name, "this") == 0)
14639 /* Function definitions will have the argument names. */
14640 is_this = 1;
14641 else if (name == NULL && iparams == 0)
14642 /* Declarations may not have the names, so like
14643 elsewhere in GDB, assume an artificial first
14644 argument is "this". */
14645 is_this = 1;
14646
14647 if (is_this)
14648 arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
14649 arg_type, 0);
14650 }
14651
14652 TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
c906108c
SS
14653 iparams++;
14654 }
14655 child_die = sibling_die (child_die);
14656 }
14657 }
14658
76c10ea2 14659 return ftype;
c906108c
SS
14660}
14661
f792889a 14662static struct type *
e7c27a73 14663read_typedef (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14664{
e7c27a73 14665 struct objfile *objfile = cu->objfile;
0114d602 14666 const char *name = NULL;
3c8e0968 14667 struct type *this_type, *target_type;
c906108c 14668
94af9270 14669 name = dwarf2_full_name (NULL, die, cu);
f792889a 14670 this_type = init_type (TYPE_CODE_TYPEDEF, 0,
0114d602 14671 TYPE_FLAG_TARGET_STUB, NULL, objfile);
abee88f2 14672 TYPE_NAME (this_type) = name;
f792889a 14673 set_die_type (die, this_type, cu);
3c8e0968
DE
14674 target_type = die_type (die, cu);
14675 if (target_type != this_type)
14676 TYPE_TARGET_TYPE (this_type) = target_type;
14677 else
14678 {
14679 /* Self-referential typedefs are, it seems, not allowed by the DWARF
14680 spec and cause infinite loops in GDB. */
14681 complaint (&symfile_complaints,
14682 _("Self-referential DW_TAG_typedef "
14683 "- DIE at 0x%x [in module %s]"),
4262abfb 14684 die->offset.sect_off, objfile_name (objfile));
3c8e0968
DE
14685 TYPE_TARGET_TYPE (this_type) = NULL;
14686 }
f792889a 14687 return this_type;
c906108c
SS
14688}
14689
14690/* Find a representation of a given base type and install
14691 it in the TYPE field of the die. */
14692
f792889a 14693static struct type *
e7c27a73 14694read_base_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14695{
e7c27a73 14696 struct objfile *objfile = cu->objfile;
c906108c
SS
14697 struct type *type;
14698 struct attribute *attr;
14699 int encoding = 0, size = 0;
15d034d0 14700 const char *name;
6ccb9162
UW
14701 enum type_code code = TYPE_CODE_INT;
14702 int type_flags = 0;
14703 struct type *target_type = NULL;
c906108c 14704
e142c38c 14705 attr = dwarf2_attr (die, DW_AT_encoding, cu);
c906108c
SS
14706 if (attr)
14707 {
14708 encoding = DW_UNSND (attr);
14709 }
e142c38c 14710 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
14711 if (attr)
14712 {
14713 size = DW_UNSND (attr);
14714 }
39cbfefa 14715 name = dwarf2_name (die, cu);
6ccb9162 14716 if (!name)
c906108c 14717 {
6ccb9162
UW
14718 complaint (&symfile_complaints,
14719 _("DW_AT_name missing from DW_TAG_base_type"));
c906108c 14720 }
6ccb9162
UW
14721
14722 switch (encoding)
c906108c 14723 {
6ccb9162
UW
14724 case DW_ATE_address:
14725 /* Turn DW_ATE_address into a void * pointer. */
14726 code = TYPE_CODE_PTR;
14727 type_flags |= TYPE_FLAG_UNSIGNED;
14728 target_type = init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
14729 break;
14730 case DW_ATE_boolean:
14731 code = TYPE_CODE_BOOL;
14732 type_flags |= TYPE_FLAG_UNSIGNED;
14733 break;
14734 case DW_ATE_complex_float:
14735 code = TYPE_CODE_COMPLEX;
14736 target_type = init_type (TYPE_CODE_FLT, size / 2, 0, NULL, objfile);
14737 break;
14738 case DW_ATE_decimal_float:
14739 code = TYPE_CODE_DECFLOAT;
14740 break;
14741 case DW_ATE_float:
14742 code = TYPE_CODE_FLT;
14743 break;
14744 case DW_ATE_signed:
14745 break;
14746 case DW_ATE_unsigned:
14747 type_flags |= TYPE_FLAG_UNSIGNED;
3b2b8fea
TT
14748 if (cu->language == language_fortran
14749 && name
61012eef 14750 && startswith (name, "character("))
3b2b8fea 14751 code = TYPE_CODE_CHAR;
6ccb9162
UW
14752 break;
14753 case DW_ATE_signed_char:
6e70227d 14754 if (cu->language == language_ada || cu->language == language_m2
3b2b8fea
TT
14755 || cu->language == language_pascal
14756 || cu->language == language_fortran)
6ccb9162
UW
14757 code = TYPE_CODE_CHAR;
14758 break;
14759 case DW_ATE_unsigned_char:
868a0084 14760 if (cu->language == language_ada || cu->language == language_m2
3b2b8fea
TT
14761 || cu->language == language_pascal
14762 || cu->language == language_fortran)
6ccb9162
UW
14763 code = TYPE_CODE_CHAR;
14764 type_flags |= TYPE_FLAG_UNSIGNED;
14765 break;
75079b2b
TT
14766 case DW_ATE_UTF:
14767 /* We just treat this as an integer and then recognize the
14768 type by name elsewhere. */
14769 break;
14770
6ccb9162
UW
14771 default:
14772 complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
14773 dwarf_type_encoding_name (encoding));
14774 break;
c906108c 14775 }
6ccb9162 14776
0114d602
DJ
14777 type = init_type (code, size, type_flags, NULL, objfile);
14778 TYPE_NAME (type) = name;
6ccb9162
UW
14779 TYPE_TARGET_TYPE (type) = target_type;
14780
0114d602 14781 if (name && strcmp (name, "char") == 0)
876cecd0 14782 TYPE_NOSIGN (type) = 1;
0114d602 14783
f792889a 14784 return set_die_type (die, type, cu);
c906108c
SS
14785}
14786
80180f79
SA
14787/* Parse dwarf attribute if it's a block, reference or constant and put the
14788 resulting value of the attribute into struct bound_prop.
14789 Returns 1 if ATTR could be resolved into PROP, 0 otherwise. */
14790
14791static int
14792attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
14793 struct dwarf2_cu *cu, struct dynamic_prop *prop)
14794{
14795 struct dwarf2_property_baton *baton;
14796 struct obstack *obstack = &cu->objfile->objfile_obstack;
14797
14798 if (attr == NULL || prop == NULL)
14799 return 0;
14800
14801 if (attr_form_is_block (attr))
14802 {
14803 baton = obstack_alloc (obstack, sizeof (*baton));
14804 baton->referenced_type = NULL;
14805 baton->locexpr.per_cu = cu->per_cu;
14806 baton->locexpr.size = DW_BLOCK (attr)->size;
14807 baton->locexpr.data = DW_BLOCK (attr)->data;
14808 prop->data.baton = baton;
14809 prop->kind = PROP_LOCEXPR;
14810 gdb_assert (prop->data.baton != NULL);
14811 }
14812 else if (attr_form_is_ref (attr))
14813 {
14814 struct dwarf2_cu *target_cu = cu;
14815 struct die_info *target_die;
14816 struct attribute *target_attr;
14817
14818 target_die = follow_die_ref (die, attr, &target_cu);
14819 target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
df25ebbd
JB
14820 if (target_attr == NULL)
14821 target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
14822 target_cu);
80180f79
SA
14823 if (target_attr == NULL)
14824 return 0;
14825
df25ebbd 14826 switch (target_attr->name)
80180f79 14827 {
df25ebbd
JB
14828 case DW_AT_location:
14829 if (attr_form_is_section_offset (target_attr))
14830 {
14831 baton = obstack_alloc (obstack, sizeof (*baton));
14832 baton->referenced_type = die_type (target_die, target_cu);
14833 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
14834 prop->data.baton = baton;
14835 prop->kind = PROP_LOCLIST;
14836 gdb_assert (prop->data.baton != NULL);
14837 }
14838 else if (attr_form_is_block (target_attr))
14839 {
14840 baton = obstack_alloc (obstack, sizeof (*baton));
14841 baton->referenced_type = die_type (target_die, target_cu);
14842 baton->locexpr.per_cu = cu->per_cu;
14843 baton->locexpr.size = DW_BLOCK (target_attr)->size;
14844 baton->locexpr.data = DW_BLOCK (target_attr)->data;
14845 prop->data.baton = baton;
14846 prop->kind = PROP_LOCEXPR;
14847 gdb_assert (prop->data.baton != NULL);
14848 }
14849 else
14850 {
14851 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
14852 "dynamic property");
14853 return 0;
14854 }
14855 break;
14856 case DW_AT_data_member_location:
14857 {
14858 LONGEST offset;
14859
14860 if (!handle_data_member_location (target_die, target_cu,
14861 &offset))
14862 return 0;
14863
14864 baton = obstack_alloc (obstack, sizeof (*baton));
6ad395a7
JB
14865 baton->referenced_type = read_type_die (target_die->parent,
14866 target_cu);
df25ebbd
JB
14867 baton->offset_info.offset = offset;
14868 baton->offset_info.type = die_type (target_die, target_cu);
14869 prop->data.baton = baton;
14870 prop->kind = PROP_ADDR_OFFSET;
14871 break;
14872 }
80180f79
SA
14873 }
14874 }
14875 else if (attr_form_is_constant (attr))
14876 {
14877 prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
14878 prop->kind = PROP_CONST;
14879 }
14880 else
14881 {
14882 dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
14883 dwarf2_name (die, cu));
14884 return 0;
14885 }
14886
14887 return 1;
14888}
14889
a02abb62
JB
14890/* Read the given DW_AT_subrange DIE. */
14891
f792889a 14892static struct type *
a02abb62
JB
14893read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
14894{
4c9ad8c2 14895 struct type *base_type, *orig_base_type;
a02abb62
JB
14896 struct type *range_type;
14897 struct attribute *attr;
729efb13 14898 struct dynamic_prop low, high;
4fae6e18 14899 int low_default_is_valid;
c451ebe5 14900 int high_bound_is_count = 0;
15d034d0 14901 const char *name;
43bbcdc2 14902 LONGEST negative_mask;
e77813c8 14903
4c9ad8c2
TT
14904 orig_base_type = die_type (die, cu);
14905 /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
14906 whereas the real type might be. So, we use ORIG_BASE_TYPE when
14907 creating the range type, but we use the result of check_typedef
14908 when examining properties of the type. */
14909 base_type = check_typedef (orig_base_type);
a02abb62 14910
7e314c57
JK
14911 /* The die_type call above may have already set the type for this DIE. */
14912 range_type = get_die_type (die, cu);
14913 if (range_type)
14914 return range_type;
14915
729efb13
SA
14916 low.kind = PROP_CONST;
14917 high.kind = PROP_CONST;
14918 high.data.const_val = 0;
14919
4fae6e18
JK
14920 /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
14921 omitting DW_AT_lower_bound. */
14922 switch (cu->language)
6e70227d 14923 {
4fae6e18
JK
14924 case language_c:
14925 case language_cplus:
729efb13 14926 low.data.const_val = 0;
4fae6e18
JK
14927 low_default_is_valid = 1;
14928 break;
14929 case language_fortran:
729efb13 14930 low.data.const_val = 1;
4fae6e18
JK
14931 low_default_is_valid = 1;
14932 break;
14933 case language_d:
14934 case language_java:
14935 case language_objc:
729efb13 14936 low.data.const_val = 0;
4fae6e18
JK
14937 low_default_is_valid = (cu->header.version >= 4);
14938 break;
14939 case language_ada:
14940 case language_m2:
14941 case language_pascal:
729efb13 14942 low.data.const_val = 1;
4fae6e18
JK
14943 low_default_is_valid = (cu->header.version >= 4);
14944 break;
14945 default:
729efb13 14946 low.data.const_val = 0;
4fae6e18
JK
14947 low_default_is_valid = 0;
14948 break;
a02abb62
JB
14949 }
14950
e142c38c 14951 attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
a02abb62 14952 if (attr)
11c1ba78 14953 attr_to_dynamic_prop (attr, die, cu, &low);
4fae6e18
JK
14954 else if (!low_default_is_valid)
14955 complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
14956 "- DIE at 0x%x [in module %s]"),
4262abfb 14957 die->offset.sect_off, objfile_name (cu->objfile));
a02abb62 14958
e142c38c 14959 attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
80180f79 14960 if (!attr_to_dynamic_prop (attr, die, cu, &high))
e77813c8
PM
14961 {
14962 attr = dwarf2_attr (die, DW_AT_count, cu);
c451ebe5 14963 if (attr_to_dynamic_prop (attr, die, cu, &high))
6b662e19 14964 {
c451ebe5
SA
14965 /* If bounds are constant do the final calculation here. */
14966 if (low.kind == PROP_CONST && high.kind == PROP_CONST)
14967 high.data.const_val = low.data.const_val + high.data.const_val - 1;
14968 else
14969 high_bound_is_count = 1;
c2ff108b 14970 }
e77813c8
PM
14971 }
14972
14973 /* Dwarf-2 specifications explicitly allows to create subrange types
14974 without specifying a base type.
14975 In that case, the base type must be set to the type of
14976 the lower bound, upper bound or count, in that order, if any of these
14977 three attributes references an object that has a type.
14978 If no base type is found, the Dwarf-2 specifications say that
14979 a signed integer type of size equal to the size of an address should
14980 be used.
14981 For the following C code: `extern char gdb_int [];'
14982 GCC produces an empty range DIE.
14983 FIXME: muller/2010-05-28: Possible references to object for low bound,
0963b4bd 14984 high bound or count are not yet handled by this code. */
e77813c8
PM
14985 if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
14986 {
14987 struct objfile *objfile = cu->objfile;
14988 struct gdbarch *gdbarch = get_objfile_arch (objfile);
14989 int addr_size = gdbarch_addr_bit (gdbarch) /8;
14990 struct type *int_type = objfile_type (objfile)->builtin_int;
14991
14992 /* Test "int", "long int", and "long long int" objfile types,
14993 and select the first one having a size above or equal to the
14994 architecture address size. */
14995 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14996 base_type = int_type;
14997 else
14998 {
14999 int_type = objfile_type (objfile)->builtin_long;
15000 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15001 base_type = int_type;
15002 else
15003 {
15004 int_type = objfile_type (objfile)->builtin_long_long;
15005 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15006 base_type = int_type;
15007 }
15008 }
15009 }
a02abb62 15010
dbb9c2b1
JB
15011 /* Normally, the DWARF producers are expected to use a signed
15012 constant form (Eg. DW_FORM_sdata) to express negative bounds.
15013 But this is unfortunately not always the case, as witnessed
15014 with GCC, for instance, where the ambiguous DW_FORM_dataN form
15015 is used instead. To work around that ambiguity, we treat
15016 the bounds as signed, and thus sign-extend their values, when
15017 the base type is signed. */
6e70227d 15018 negative_mask =
43bbcdc2 15019 (LONGEST) -1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1);
729efb13
SA
15020 if (low.kind == PROP_CONST
15021 && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
15022 low.data.const_val |= negative_mask;
15023 if (high.kind == PROP_CONST
15024 && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
15025 high.data.const_val |= negative_mask;
43bbcdc2 15026
729efb13 15027 range_type = create_range_type (NULL, orig_base_type, &low, &high);
a02abb62 15028
c451ebe5
SA
15029 if (high_bound_is_count)
15030 TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
15031
c2ff108b
JK
15032 /* Ada expects an empty array on no boundary attributes. */
15033 if (attr == NULL && cu->language != language_ada)
729efb13 15034 TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
c2ff108b 15035
39cbfefa
DJ
15036 name = dwarf2_name (die, cu);
15037 if (name)
15038 TYPE_NAME (range_type) = name;
6e70227d 15039
e142c38c 15040 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
a02abb62
JB
15041 if (attr)
15042 TYPE_LENGTH (range_type) = DW_UNSND (attr);
15043
7e314c57
JK
15044 set_die_type (die, range_type, cu);
15045
15046 /* set_die_type should be already done. */
b4ba55a1
JB
15047 set_descriptive_type (range_type, die, cu);
15048
7e314c57 15049 return range_type;
a02abb62 15050}
6e70227d 15051
f792889a 15052static struct type *
81a17f79
JB
15053read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
15054{
15055 struct type *type;
81a17f79 15056
81a17f79
JB
15057 /* For now, we only support the C meaning of an unspecified type: void. */
15058
0114d602
DJ
15059 type = init_type (TYPE_CODE_VOID, 0, 0, NULL, cu->objfile);
15060 TYPE_NAME (type) = dwarf2_name (die, cu);
81a17f79 15061
f792889a 15062 return set_die_type (die, type, cu);
81a17f79 15063}
a02abb62 15064
639d11d3
DC
15065/* Read a single die and all its descendents. Set the die's sibling
15066 field to NULL; set other fields in the die correctly, and set all
15067 of the descendents' fields correctly. Set *NEW_INFO_PTR to the
15068 location of the info_ptr after reading all of those dies. PARENT
15069 is the parent of the die in question. */
15070
15071static struct die_info *
dee91e82 15072read_die_and_children (const struct die_reader_specs *reader,
d521ce57
TT
15073 const gdb_byte *info_ptr,
15074 const gdb_byte **new_info_ptr,
dee91e82 15075 struct die_info *parent)
639d11d3
DC
15076{
15077 struct die_info *die;
d521ce57 15078 const gdb_byte *cur_ptr;
639d11d3
DC
15079 int has_children;
15080
bf6af496 15081 cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
1d325ec1
DJ
15082 if (die == NULL)
15083 {
15084 *new_info_ptr = cur_ptr;
15085 return NULL;
15086 }
93311388 15087 store_in_ref_table (die, reader->cu);
639d11d3
DC
15088
15089 if (has_children)
bf6af496 15090 die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
639d11d3
DC
15091 else
15092 {
15093 die->child = NULL;
15094 *new_info_ptr = cur_ptr;
15095 }
15096
15097 die->sibling = NULL;
15098 die->parent = parent;
15099 return die;
15100}
15101
15102/* Read a die, all of its descendents, and all of its siblings; set
15103 all of the fields of all of the dies correctly. Arguments are as
15104 in read_die_and_children. */
15105
15106static struct die_info *
bf6af496 15107read_die_and_siblings_1 (const struct die_reader_specs *reader,
d521ce57
TT
15108 const gdb_byte *info_ptr,
15109 const gdb_byte **new_info_ptr,
bf6af496 15110 struct die_info *parent)
639d11d3
DC
15111{
15112 struct die_info *first_die, *last_sibling;
d521ce57 15113 const gdb_byte *cur_ptr;
639d11d3 15114
c906108c 15115 cur_ptr = info_ptr;
639d11d3
DC
15116 first_die = last_sibling = NULL;
15117
15118 while (1)
c906108c 15119 {
639d11d3 15120 struct die_info *die
dee91e82 15121 = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
639d11d3 15122
1d325ec1 15123 if (die == NULL)
c906108c 15124 {
639d11d3
DC
15125 *new_info_ptr = cur_ptr;
15126 return first_die;
c906108c 15127 }
1d325ec1
DJ
15128
15129 if (!first_die)
15130 first_die = die;
c906108c 15131 else
1d325ec1
DJ
15132 last_sibling->sibling = die;
15133
15134 last_sibling = die;
c906108c 15135 }
c906108c
SS
15136}
15137
bf6af496
DE
15138/* Read a die, all of its descendents, and all of its siblings; set
15139 all of the fields of all of the dies correctly. Arguments are as
15140 in read_die_and_children.
15141 This the main entry point for reading a DIE and all its children. */
15142
15143static struct die_info *
15144read_die_and_siblings (const struct die_reader_specs *reader,
d521ce57
TT
15145 const gdb_byte *info_ptr,
15146 const gdb_byte **new_info_ptr,
bf6af496
DE
15147 struct die_info *parent)
15148{
15149 struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
15150 new_info_ptr, parent);
15151
b4f54984 15152 if (dwarf_die_debug)
bf6af496
DE
15153 {
15154 fprintf_unfiltered (gdb_stdlog,
15155 "Read die from %s@0x%x of %s:\n",
a32a8923 15156 get_section_name (reader->die_section),
bf6af496
DE
15157 (unsigned) (info_ptr - reader->die_section->buffer),
15158 bfd_get_filename (reader->abfd));
b4f54984 15159 dump_die (die, dwarf_die_debug);
bf6af496
DE
15160 }
15161
15162 return die;
15163}
15164
3019eac3
DE
15165/* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
15166 attributes.
15167 The caller is responsible for filling in the extra attributes
15168 and updating (*DIEP)->num_attrs.
15169 Set DIEP to point to a newly allocated die with its information,
15170 except for its child, sibling, and parent fields.
15171 Set HAS_CHILDREN to tell whether the die has children or not. */
93311388 15172
d521ce57 15173static const gdb_byte *
3019eac3 15174read_full_die_1 (const struct die_reader_specs *reader,
d521ce57 15175 struct die_info **diep, const gdb_byte *info_ptr,
3019eac3 15176 int *has_children, int num_extra_attrs)
93311388 15177{
b64f50a1
JK
15178 unsigned int abbrev_number, bytes_read, i;
15179 sect_offset offset;
93311388
DE
15180 struct abbrev_info *abbrev;
15181 struct die_info *die;
15182 struct dwarf2_cu *cu = reader->cu;
15183 bfd *abfd = reader->abfd;
15184
b64f50a1 15185 offset.sect_off = info_ptr - reader->buffer;
93311388
DE
15186 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15187 info_ptr += bytes_read;
15188 if (!abbrev_number)
15189 {
15190 *diep = NULL;
15191 *has_children = 0;
15192 return info_ptr;
15193 }
15194
433df2d4 15195 abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
93311388 15196 if (!abbrev)
348e048f
DE
15197 error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
15198 abbrev_number,
15199 bfd_get_filename (abfd));
15200
3019eac3 15201 die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
93311388
DE
15202 die->offset = offset;
15203 die->tag = abbrev->tag;
15204 die->abbrev = abbrev_number;
15205
3019eac3
DE
15206 /* Make the result usable.
15207 The caller needs to update num_attrs after adding the extra
15208 attributes. */
93311388
DE
15209 die->num_attrs = abbrev->num_attrs;
15210
15211 for (i = 0; i < abbrev->num_attrs; ++i)
dee91e82
DE
15212 info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
15213 info_ptr);
93311388
DE
15214
15215 *diep = die;
15216 *has_children = abbrev->has_children;
15217 return info_ptr;
15218}
15219
3019eac3
DE
15220/* Read a die and all its attributes.
15221 Set DIEP to point to a newly allocated die with its information,
15222 except for its child, sibling, and parent fields.
15223 Set HAS_CHILDREN to tell whether the die has children or not. */
15224
d521ce57 15225static const gdb_byte *
3019eac3 15226read_full_die (const struct die_reader_specs *reader,
d521ce57 15227 struct die_info **diep, const gdb_byte *info_ptr,
3019eac3
DE
15228 int *has_children)
15229{
d521ce57 15230 const gdb_byte *result;
bf6af496
DE
15231
15232 result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
15233
b4f54984 15234 if (dwarf_die_debug)
bf6af496
DE
15235 {
15236 fprintf_unfiltered (gdb_stdlog,
15237 "Read die from %s@0x%x of %s:\n",
a32a8923 15238 get_section_name (reader->die_section),
bf6af496
DE
15239 (unsigned) (info_ptr - reader->die_section->buffer),
15240 bfd_get_filename (reader->abfd));
b4f54984 15241 dump_die (*diep, dwarf_die_debug);
bf6af496
DE
15242 }
15243
15244 return result;
3019eac3 15245}
433df2d4
DE
15246\f
15247/* Abbreviation tables.
3019eac3 15248
433df2d4 15249 In DWARF version 2, the description of the debugging information is
c906108c
SS
15250 stored in a separate .debug_abbrev section. Before we read any
15251 dies from a section we read in all abbreviations and install them
433df2d4
DE
15252 in a hash table. */
15253
15254/* Allocate space for a struct abbrev_info object in ABBREV_TABLE. */
15255
15256static struct abbrev_info *
15257abbrev_table_alloc_abbrev (struct abbrev_table *abbrev_table)
15258{
15259 struct abbrev_info *abbrev;
15260
15261 abbrev = (struct abbrev_info *)
15262 obstack_alloc (&abbrev_table->abbrev_obstack, sizeof (struct abbrev_info));
15263 memset (abbrev, 0, sizeof (struct abbrev_info));
15264 return abbrev;
15265}
15266
15267/* Add an abbreviation to the table. */
c906108c
SS
15268
15269static void
433df2d4
DE
15270abbrev_table_add_abbrev (struct abbrev_table *abbrev_table,
15271 unsigned int abbrev_number,
15272 struct abbrev_info *abbrev)
15273{
15274 unsigned int hash_number;
15275
15276 hash_number = abbrev_number % ABBREV_HASH_SIZE;
15277 abbrev->next = abbrev_table->abbrevs[hash_number];
15278 abbrev_table->abbrevs[hash_number] = abbrev;
15279}
dee91e82 15280
433df2d4
DE
15281/* Look up an abbrev in the table.
15282 Returns NULL if the abbrev is not found. */
15283
15284static struct abbrev_info *
15285abbrev_table_lookup_abbrev (const struct abbrev_table *abbrev_table,
15286 unsigned int abbrev_number)
c906108c 15287{
433df2d4
DE
15288 unsigned int hash_number;
15289 struct abbrev_info *abbrev;
15290
15291 hash_number = abbrev_number % ABBREV_HASH_SIZE;
15292 abbrev = abbrev_table->abbrevs[hash_number];
15293
15294 while (abbrev)
15295 {
15296 if (abbrev->number == abbrev_number)
15297 return abbrev;
15298 abbrev = abbrev->next;
15299 }
15300 return NULL;
15301}
15302
15303/* Read in an abbrev table. */
15304
15305static struct abbrev_table *
15306abbrev_table_read_table (struct dwarf2_section_info *section,
15307 sect_offset offset)
15308{
15309 struct objfile *objfile = dwarf2_per_objfile->objfile;
a32a8923 15310 bfd *abfd = get_section_bfd_owner (section);
433df2d4 15311 struct abbrev_table *abbrev_table;
d521ce57 15312 const gdb_byte *abbrev_ptr;
c906108c
SS
15313 struct abbrev_info *cur_abbrev;
15314 unsigned int abbrev_number, bytes_read, abbrev_name;
433df2d4 15315 unsigned int abbrev_form;
f3dd6933
DJ
15316 struct attr_abbrev *cur_attrs;
15317 unsigned int allocated_attrs;
c906108c 15318
70ba0933 15319 abbrev_table = XNEW (struct abbrev_table);
f4dc4d17 15320 abbrev_table->offset = offset;
433df2d4
DE
15321 obstack_init (&abbrev_table->abbrev_obstack);
15322 abbrev_table->abbrevs = obstack_alloc (&abbrev_table->abbrev_obstack,
15323 (ABBREV_HASH_SIZE
15324 * sizeof (struct abbrev_info *)));
15325 memset (abbrev_table->abbrevs, 0,
15326 ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
c906108c 15327
433df2d4
DE
15328 dwarf2_read_section (objfile, section);
15329 abbrev_ptr = section->buffer + offset.sect_off;
c906108c
SS
15330 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15331 abbrev_ptr += bytes_read;
15332
f3dd6933
DJ
15333 allocated_attrs = ATTR_ALLOC_CHUNK;
15334 cur_attrs = xmalloc (allocated_attrs * sizeof (struct attr_abbrev));
6e70227d 15335
0963b4bd 15336 /* Loop until we reach an abbrev number of 0. */
c906108c
SS
15337 while (abbrev_number)
15338 {
433df2d4 15339 cur_abbrev = abbrev_table_alloc_abbrev (abbrev_table);
c906108c
SS
15340
15341 /* read in abbrev header */
15342 cur_abbrev->number = abbrev_number;
15343 cur_abbrev->tag = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15344 abbrev_ptr += bytes_read;
15345 cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
15346 abbrev_ptr += 1;
15347
15348 /* now read in declarations */
15349 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15350 abbrev_ptr += bytes_read;
15351 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15352 abbrev_ptr += bytes_read;
15353 while (abbrev_name)
15354 {
f3dd6933 15355 if (cur_abbrev->num_attrs == allocated_attrs)
c906108c 15356 {
f3dd6933
DJ
15357 allocated_attrs += ATTR_ALLOC_CHUNK;
15358 cur_attrs
15359 = xrealloc (cur_attrs, (allocated_attrs
15360 * sizeof (struct attr_abbrev)));
c906108c 15361 }
ae038cb0 15362
f3dd6933
DJ
15363 cur_attrs[cur_abbrev->num_attrs].name = abbrev_name;
15364 cur_attrs[cur_abbrev->num_attrs++].form = abbrev_form;
c906108c
SS
15365 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15366 abbrev_ptr += bytes_read;
15367 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15368 abbrev_ptr += bytes_read;
15369 }
15370
433df2d4 15371 cur_abbrev->attrs = obstack_alloc (&abbrev_table->abbrev_obstack,
f3dd6933
DJ
15372 (cur_abbrev->num_attrs
15373 * sizeof (struct attr_abbrev)));
15374 memcpy (cur_abbrev->attrs, cur_attrs,
15375 cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
15376
433df2d4 15377 abbrev_table_add_abbrev (abbrev_table, abbrev_number, cur_abbrev);
c906108c
SS
15378
15379 /* Get next abbreviation.
15380 Under Irix6 the abbreviations for a compilation unit are not
c5aa993b
JM
15381 always properly terminated with an abbrev number of 0.
15382 Exit loop if we encounter an abbreviation which we have
15383 already read (which means we are about to read the abbreviations
15384 for the next compile unit) or if the end of the abbreviation
15385 table is reached. */
433df2d4 15386 if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
c906108c
SS
15387 break;
15388 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15389 abbrev_ptr += bytes_read;
433df2d4 15390 if (abbrev_table_lookup_abbrev (abbrev_table, abbrev_number) != NULL)
c906108c
SS
15391 break;
15392 }
f3dd6933
DJ
15393
15394 xfree (cur_attrs);
433df2d4 15395 return abbrev_table;
c906108c
SS
15396}
15397
433df2d4 15398/* Free the resources held by ABBREV_TABLE. */
c906108c 15399
c906108c 15400static void
433df2d4 15401abbrev_table_free (struct abbrev_table *abbrev_table)
c906108c 15402{
433df2d4
DE
15403 obstack_free (&abbrev_table->abbrev_obstack, NULL);
15404 xfree (abbrev_table);
c906108c
SS
15405}
15406
f4dc4d17
DE
15407/* Same as abbrev_table_free but as a cleanup.
15408 We pass in a pointer to the pointer to the table so that we can
15409 set the pointer to NULL when we're done. It also simplifies
73051182 15410 build_type_psymtabs_1. */
f4dc4d17
DE
15411
15412static void
15413abbrev_table_free_cleanup (void *table_ptr)
15414{
15415 struct abbrev_table **abbrev_table_ptr = table_ptr;
15416
15417 if (*abbrev_table_ptr != NULL)
15418 abbrev_table_free (*abbrev_table_ptr);
15419 *abbrev_table_ptr = NULL;
15420}
15421
433df2d4
DE
15422/* Read the abbrev table for CU from ABBREV_SECTION. */
15423
15424static void
15425dwarf2_read_abbrevs (struct dwarf2_cu *cu,
15426 struct dwarf2_section_info *abbrev_section)
c906108c 15427{
433df2d4
DE
15428 cu->abbrev_table =
15429 abbrev_table_read_table (abbrev_section, cu->header.abbrev_offset);
15430}
c906108c 15431
433df2d4 15432/* Release the memory used by the abbrev table for a compilation unit. */
c906108c 15433
433df2d4
DE
15434static void
15435dwarf2_free_abbrev_table (void *ptr_to_cu)
15436{
15437 struct dwarf2_cu *cu = ptr_to_cu;
c906108c 15438
a2ce51a0
DE
15439 if (cu->abbrev_table != NULL)
15440 abbrev_table_free (cu->abbrev_table);
433df2d4
DE
15441 /* Set this to NULL so that we SEGV if we try to read it later,
15442 and also because free_comp_unit verifies this is NULL. */
15443 cu->abbrev_table = NULL;
15444}
15445\f
72bf9492
DJ
15446/* Returns nonzero if TAG represents a type that we might generate a partial
15447 symbol for. */
15448
15449static int
15450is_type_tag_for_partial (int tag)
15451{
15452 switch (tag)
15453 {
15454#if 0
15455 /* Some types that would be reasonable to generate partial symbols for,
15456 that we don't at present. */
15457 case DW_TAG_array_type:
15458 case DW_TAG_file_type:
15459 case DW_TAG_ptr_to_member_type:
15460 case DW_TAG_set_type:
15461 case DW_TAG_string_type:
15462 case DW_TAG_subroutine_type:
15463#endif
15464 case DW_TAG_base_type:
15465 case DW_TAG_class_type:
680b30c7 15466 case DW_TAG_interface_type:
72bf9492
DJ
15467 case DW_TAG_enumeration_type:
15468 case DW_TAG_structure_type:
15469 case DW_TAG_subrange_type:
15470 case DW_TAG_typedef:
15471 case DW_TAG_union_type:
15472 return 1;
15473 default:
15474 return 0;
15475 }
15476}
15477
15478/* Load all DIEs that are interesting for partial symbols into memory. */
15479
15480static struct partial_die_info *
dee91e82 15481load_partial_dies (const struct die_reader_specs *reader,
d521ce57 15482 const gdb_byte *info_ptr, int building_psymtab)
72bf9492 15483{
dee91e82 15484 struct dwarf2_cu *cu = reader->cu;
bb5ed363 15485 struct objfile *objfile = cu->objfile;
72bf9492
DJ
15486 struct partial_die_info *part_die;
15487 struct partial_die_info *parent_die, *last_die, *first_die = NULL;
15488 struct abbrev_info *abbrev;
15489 unsigned int bytes_read;
5afb4e99 15490 unsigned int load_all = 0;
72bf9492
DJ
15491 int nesting_level = 1;
15492
15493 parent_die = NULL;
15494 last_die = NULL;
15495
7adf1e79
DE
15496 gdb_assert (cu->per_cu != NULL);
15497 if (cu->per_cu->load_all_dies)
5afb4e99
DJ
15498 load_all = 1;
15499
72bf9492
DJ
15500 cu->partial_dies
15501 = htab_create_alloc_ex (cu->header.length / 12,
15502 partial_die_hash,
15503 partial_die_eq,
15504 NULL,
15505 &cu->comp_unit_obstack,
15506 hashtab_obstack_allocate,
15507 dummy_obstack_deallocate);
15508
15509 part_die = obstack_alloc (&cu->comp_unit_obstack,
15510 sizeof (struct partial_die_info));
15511
15512 while (1)
15513 {
15514 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
15515
15516 /* A NULL abbrev means the end of a series of children. */
15517 if (abbrev == NULL)
15518 {
15519 if (--nesting_level == 0)
15520 {
15521 /* PART_DIE was probably the last thing allocated on the
15522 comp_unit_obstack, so we could call obstack_free
15523 here. We don't do that because the waste is small,
15524 and will be cleaned up when we're done with this
15525 compilation unit. This way, we're also more robust
15526 against other users of the comp_unit_obstack. */
15527 return first_die;
15528 }
15529 info_ptr += bytes_read;
15530 last_die = parent_die;
15531 parent_die = parent_die->die_parent;
15532 continue;
15533 }
15534
98bfdba5
PA
15535 /* Check for template arguments. We never save these; if
15536 they're seen, we just mark the parent, and go on our way. */
15537 if (parent_die != NULL
15538 && cu->language == language_cplus
15539 && (abbrev->tag == DW_TAG_template_type_param
15540 || abbrev->tag == DW_TAG_template_value_param))
15541 {
15542 parent_die->has_template_arguments = 1;
15543
15544 if (!load_all)
15545 {
15546 /* We don't need a partial DIE for the template argument. */
dee91e82 15547 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
98bfdba5
PA
15548 continue;
15549 }
15550 }
15551
0d99eb77 15552 /* We only recurse into c++ subprograms looking for template arguments.
98bfdba5
PA
15553 Skip their other children. */
15554 if (!load_all
15555 && cu->language == language_cplus
15556 && parent_die != NULL
15557 && parent_die->tag == DW_TAG_subprogram)
15558 {
dee91e82 15559 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
98bfdba5
PA
15560 continue;
15561 }
15562
5afb4e99
DJ
15563 /* Check whether this DIE is interesting enough to save. Normally
15564 we would not be interested in members here, but there may be
15565 later variables referencing them via DW_AT_specification (for
15566 static members). */
15567 if (!load_all
15568 && !is_type_tag_for_partial (abbrev->tag)
72929c62 15569 && abbrev->tag != DW_TAG_constant
72bf9492
DJ
15570 && abbrev->tag != DW_TAG_enumerator
15571 && abbrev->tag != DW_TAG_subprogram
bc30ff58 15572 && abbrev->tag != DW_TAG_lexical_block
72bf9492 15573 && abbrev->tag != DW_TAG_variable
5afb4e99 15574 && abbrev->tag != DW_TAG_namespace
f55ee35c 15575 && abbrev->tag != DW_TAG_module
95554aad 15576 && abbrev->tag != DW_TAG_member
74921315
KS
15577 && abbrev->tag != DW_TAG_imported_unit
15578 && abbrev->tag != DW_TAG_imported_declaration)
72bf9492
DJ
15579 {
15580 /* Otherwise we skip to the next sibling, if any. */
dee91e82 15581 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
72bf9492
DJ
15582 continue;
15583 }
15584
dee91e82
DE
15585 info_ptr = read_partial_die (reader, part_die, abbrev, bytes_read,
15586 info_ptr);
72bf9492
DJ
15587
15588 /* This two-pass algorithm for processing partial symbols has a
15589 high cost in cache pressure. Thus, handle some simple cases
15590 here which cover the majority of C partial symbols. DIEs
15591 which neither have specification tags in them, nor could have
15592 specification tags elsewhere pointing at them, can simply be
15593 processed and discarded.
15594
15595 This segment is also optional; scan_partial_symbols and
15596 add_partial_symbol will handle these DIEs if we chain
15597 them in normally. When compilers which do not emit large
15598 quantities of duplicate debug information are more common,
15599 this code can probably be removed. */
15600
15601 /* Any complete simple types at the top level (pretty much all
15602 of them, for a language without namespaces), can be processed
15603 directly. */
15604 if (parent_die == NULL
15605 && part_die->has_specification == 0
15606 && part_die->is_declaration == 0
d8228535 15607 && ((part_die->tag == DW_TAG_typedef && !part_die->has_children)
72bf9492
DJ
15608 || part_die->tag == DW_TAG_base_type
15609 || part_die->tag == DW_TAG_subrange_type))
15610 {
15611 if (building_psymtab && part_die->name != NULL)
04a679b8 15612 add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
72bf9492 15613 VAR_DOMAIN, LOC_TYPEDEF,
bb5ed363
DE
15614 &objfile->static_psymbols,
15615 0, (CORE_ADDR) 0, cu->language, objfile);
dee91e82 15616 info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
72bf9492
DJ
15617 continue;
15618 }
15619
d8228535
JK
15620 /* The exception for DW_TAG_typedef with has_children above is
15621 a workaround of GCC PR debug/47510. In the case of this complaint
15622 type_name_no_tag_or_error will error on such types later.
15623
15624 GDB skipped children of DW_TAG_typedef by the shortcut above and then
15625 it could not find the child DIEs referenced later, this is checked
15626 above. In correct DWARF DW_TAG_typedef should have no children. */
15627
15628 if (part_die->tag == DW_TAG_typedef && part_die->has_children)
15629 complaint (&symfile_complaints,
15630 _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
15631 "- DIE at 0x%x [in module %s]"),
4262abfb 15632 part_die->offset.sect_off, objfile_name (objfile));
d8228535 15633
72bf9492
DJ
15634 /* If we're at the second level, and we're an enumerator, and
15635 our parent has no specification (meaning possibly lives in a
15636 namespace elsewhere), then we can add the partial symbol now
15637 instead of queueing it. */
15638 if (part_die->tag == DW_TAG_enumerator
15639 && parent_die != NULL
15640 && parent_die->die_parent == NULL
15641 && parent_die->tag == DW_TAG_enumeration_type
15642 && parent_die->has_specification == 0)
15643 {
15644 if (part_die->name == NULL)
3e43a32a
MS
15645 complaint (&symfile_complaints,
15646 _("malformed enumerator DIE ignored"));
72bf9492 15647 else if (building_psymtab)
04a679b8 15648 add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
72bf9492 15649 VAR_DOMAIN, LOC_CONST,
987504bb
JJ
15650 (cu->language == language_cplus
15651 || cu->language == language_java)
bb5ed363
DE
15652 ? &objfile->global_psymbols
15653 : &objfile->static_psymbols,
15654 0, (CORE_ADDR) 0, cu->language, objfile);
72bf9492 15655
dee91e82 15656 info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
72bf9492
DJ
15657 continue;
15658 }
15659
15660 /* We'll save this DIE so link it in. */
15661 part_die->die_parent = parent_die;
15662 part_die->die_sibling = NULL;
15663 part_die->die_child = NULL;
15664
15665 if (last_die && last_die == parent_die)
15666 last_die->die_child = part_die;
15667 else if (last_die)
15668 last_die->die_sibling = part_die;
15669
15670 last_die = part_die;
15671
15672 if (first_die == NULL)
15673 first_die = part_die;
15674
15675 /* Maybe add the DIE to the hash table. Not all DIEs that we
15676 find interesting need to be in the hash table, because we
15677 also have the parent/sibling/child chains; only those that we
15678 might refer to by offset later during partial symbol reading.
15679
15680 For now this means things that might have be the target of a
15681 DW_AT_specification, DW_AT_abstract_origin, or
15682 DW_AT_extension. DW_AT_extension will refer only to
15683 namespaces; DW_AT_abstract_origin refers to functions (and
15684 many things under the function DIE, but we do not recurse
15685 into function DIEs during partial symbol reading) and
15686 possibly variables as well; DW_AT_specification refers to
15687 declarations. Declarations ought to have the DW_AT_declaration
15688 flag. It happens that GCC forgets to put it in sometimes, but
15689 only for functions, not for types.
15690
15691 Adding more things than necessary to the hash table is harmless
15692 except for the performance cost. Adding too few will result in
5afb4e99
DJ
15693 wasted time in find_partial_die, when we reread the compilation
15694 unit with load_all_dies set. */
72bf9492 15695
5afb4e99 15696 if (load_all
72929c62 15697 || abbrev->tag == DW_TAG_constant
5afb4e99 15698 || abbrev->tag == DW_TAG_subprogram
72bf9492
DJ
15699 || abbrev->tag == DW_TAG_variable
15700 || abbrev->tag == DW_TAG_namespace
15701 || part_die->is_declaration)
15702 {
15703 void **slot;
15704
15705 slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
b64f50a1 15706 part_die->offset.sect_off, INSERT);
72bf9492
DJ
15707 *slot = part_die;
15708 }
15709
15710 part_die = obstack_alloc (&cu->comp_unit_obstack,
15711 sizeof (struct partial_die_info));
15712
15713 /* For some DIEs we want to follow their children (if any). For C
bc30ff58 15714 we have no reason to follow the children of structures; for other
98bfdba5
PA
15715 languages we have to, so that we can get at method physnames
15716 to infer fully qualified class names, for DW_AT_specification,
15717 and for C++ template arguments. For C++, we also look one level
15718 inside functions to find template arguments (if the name of the
15719 function does not already contain the template arguments).
bc30ff58
JB
15720
15721 For Ada, we need to scan the children of subprograms and lexical
15722 blocks as well because Ada allows the definition of nested
15723 entities that could be interesting for the debugger, such as
15724 nested subprograms for instance. */
72bf9492 15725 if (last_die->has_children
5afb4e99
DJ
15726 && (load_all
15727 || last_die->tag == DW_TAG_namespace
f55ee35c 15728 || last_die->tag == DW_TAG_module
72bf9492 15729 || last_die->tag == DW_TAG_enumeration_type
98bfdba5
PA
15730 || (cu->language == language_cplus
15731 && last_die->tag == DW_TAG_subprogram
15732 && (last_die->name == NULL
15733 || strchr (last_die->name, '<') == NULL))
72bf9492
DJ
15734 || (cu->language != language_c
15735 && (last_die->tag == DW_TAG_class_type
680b30c7 15736 || last_die->tag == DW_TAG_interface_type
72bf9492 15737 || last_die->tag == DW_TAG_structure_type
bc30ff58
JB
15738 || last_die->tag == DW_TAG_union_type))
15739 || (cu->language == language_ada
15740 && (last_die->tag == DW_TAG_subprogram
15741 || last_die->tag == DW_TAG_lexical_block))))
72bf9492
DJ
15742 {
15743 nesting_level++;
15744 parent_die = last_die;
15745 continue;
15746 }
15747
15748 /* Otherwise we skip to the next sibling, if any. */
dee91e82 15749 info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
72bf9492
DJ
15750
15751 /* Back to the top, do it again. */
15752 }
15753}
15754
c906108c
SS
15755/* Read a minimal amount of information into the minimal die structure. */
15756
d521ce57 15757static const gdb_byte *
dee91e82
DE
15758read_partial_die (const struct die_reader_specs *reader,
15759 struct partial_die_info *part_die,
15760 struct abbrev_info *abbrev, unsigned int abbrev_len,
d521ce57 15761 const gdb_byte *info_ptr)
c906108c 15762{
dee91e82 15763 struct dwarf2_cu *cu = reader->cu;
bb5ed363 15764 struct objfile *objfile = cu->objfile;
d521ce57 15765 const gdb_byte *buffer = reader->buffer;
fa238c03 15766 unsigned int i;
c906108c 15767 struct attribute attr;
c5aa993b 15768 int has_low_pc_attr = 0;
c906108c 15769 int has_high_pc_attr = 0;
91da1414 15770 int high_pc_relative = 0;
c906108c 15771
72bf9492 15772 memset (part_die, 0, sizeof (struct partial_die_info));
c906108c 15773
b64f50a1 15774 part_die->offset.sect_off = info_ptr - buffer;
72bf9492
DJ
15775
15776 info_ptr += abbrev_len;
15777
15778 if (abbrev == NULL)
15779 return info_ptr;
15780
c906108c
SS
15781 part_die->tag = abbrev->tag;
15782 part_die->has_children = abbrev->has_children;
c906108c
SS
15783
15784 for (i = 0; i < abbrev->num_attrs; ++i)
15785 {
dee91e82 15786 info_ptr = read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
c906108c
SS
15787
15788 /* Store the data if it is of an attribute we want to keep in a
c5aa993b 15789 partial symbol table. */
c906108c
SS
15790 switch (attr.name)
15791 {
15792 case DW_AT_name:
71c25dea
TT
15793 switch (part_die->tag)
15794 {
15795 case DW_TAG_compile_unit:
95554aad 15796 case DW_TAG_partial_unit:
348e048f 15797 case DW_TAG_type_unit:
71c25dea
TT
15798 /* Compilation units have a DW_AT_name that is a filename, not
15799 a source language identifier. */
15800 case DW_TAG_enumeration_type:
15801 case DW_TAG_enumerator:
15802 /* These tags always have simple identifiers already; no need
15803 to canonicalize them. */
15804 part_die->name = DW_STRING (&attr);
15805 break;
15806 default:
15807 part_die->name
15808 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
34a68019 15809 &objfile->per_bfd->storage_obstack);
71c25dea
TT
15810 break;
15811 }
c906108c 15812 break;
31ef98ae 15813 case DW_AT_linkage_name:
c906108c 15814 case DW_AT_MIPS_linkage_name:
31ef98ae
TT
15815 /* Note that both forms of linkage name might appear. We
15816 assume they will be the same, and we only store the last
15817 one we see. */
94af9270
KS
15818 if (cu->language == language_ada)
15819 part_die->name = DW_STRING (&attr);
abc72ce4 15820 part_die->linkage_name = DW_STRING (&attr);
c906108c
SS
15821 break;
15822 case DW_AT_low_pc:
15823 has_low_pc_attr = 1;
31aa7e4e 15824 part_die->lowpc = attr_value_as_address (&attr);
c906108c
SS
15825 break;
15826 case DW_AT_high_pc:
15827 has_high_pc_attr = 1;
31aa7e4e
JB
15828 part_die->highpc = attr_value_as_address (&attr);
15829 if (cu->header.version >= 4 && attr_form_is_constant (&attr))
15830 high_pc_relative = 1;
c906108c
SS
15831 break;
15832 case DW_AT_location:
0963b4bd 15833 /* Support the .debug_loc offsets. */
8e19ed76
PS
15834 if (attr_form_is_block (&attr))
15835 {
95554aad 15836 part_die->d.locdesc = DW_BLOCK (&attr);
8e19ed76 15837 }
3690dd37 15838 else if (attr_form_is_section_offset (&attr))
8e19ed76 15839 {
4d3c2250 15840 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
15841 }
15842 else
15843 {
4d3c2250
KB
15844 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
15845 "partial symbol information");
8e19ed76 15846 }
c906108c 15847 break;
c906108c
SS
15848 case DW_AT_external:
15849 part_die->is_external = DW_UNSND (&attr);
15850 break;
15851 case DW_AT_declaration:
15852 part_die->is_declaration = DW_UNSND (&attr);
15853 break;
15854 case DW_AT_type:
15855 part_die->has_type = 1;
15856 break;
15857 case DW_AT_abstract_origin:
15858 case DW_AT_specification:
72bf9492
DJ
15859 case DW_AT_extension:
15860 part_die->has_specification = 1;
c764a876 15861 part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
36586728
TT
15862 part_die->spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15863 || cu->per_cu->is_dwz);
c906108c
SS
15864 break;
15865 case DW_AT_sibling:
15866 /* Ignore absolute siblings, they might point outside of
15867 the current compile unit. */
15868 if (attr.form == DW_FORM_ref_addr)
3e43a32a
MS
15869 complaint (&symfile_complaints,
15870 _("ignoring absolute DW_AT_sibling"));
c906108c 15871 else
b9502d3f
WN
15872 {
15873 unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
15874 const gdb_byte *sibling_ptr = buffer + off;
15875
15876 if (sibling_ptr < info_ptr)
15877 complaint (&symfile_complaints,
15878 _("DW_AT_sibling points backwards"));
22869d73
KS
15879 else if (sibling_ptr > reader->buffer_end)
15880 dwarf2_section_buffer_overflow_complaint (reader->die_section);
b9502d3f
WN
15881 else
15882 part_die->sibling = sibling_ptr;
15883 }
c906108c 15884 break;
fa4028e9
JB
15885 case DW_AT_byte_size:
15886 part_die->has_byte_size = 1;
15887 break;
ff908ebf
AW
15888 case DW_AT_const_value:
15889 part_die->has_const_value = 1;
15890 break;
68511cec
CES
15891 case DW_AT_calling_convention:
15892 /* DWARF doesn't provide a way to identify a program's source-level
15893 entry point. DW_AT_calling_convention attributes are only meant
15894 to describe functions' calling conventions.
15895
15896 However, because it's a necessary piece of information in
15897 Fortran, and because DW_CC_program is the only piece of debugging
15898 information whose definition refers to a 'main program' at all,
15899 several compilers have begun marking Fortran main programs with
15900 DW_CC_program --- even when those functions use the standard
15901 calling conventions.
15902
15903 So until DWARF specifies a way to provide this information and
15904 compilers pick up the new representation, we'll support this
15905 practice. */
15906 if (DW_UNSND (&attr) == DW_CC_program
15907 && cu->language == language_fortran)
3d548a53 15908 set_objfile_main_name (objfile, part_die->name, language_fortran);
68511cec 15909 break;
481860b3
GB
15910 case DW_AT_inline:
15911 if (DW_UNSND (&attr) == DW_INL_inlined
15912 || DW_UNSND (&attr) == DW_INL_declared_inlined)
15913 part_die->may_be_inlined = 1;
15914 break;
95554aad
TT
15915
15916 case DW_AT_import:
15917 if (part_die->tag == DW_TAG_imported_unit)
36586728
TT
15918 {
15919 part_die->d.offset = dwarf2_get_ref_die_offset (&attr);
15920 part_die->is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15921 || cu->per_cu->is_dwz);
15922 }
95554aad
TT
15923 break;
15924
c906108c
SS
15925 default:
15926 break;
15927 }
15928 }
15929
91da1414
MW
15930 if (high_pc_relative)
15931 part_die->highpc += part_die->lowpc;
15932
9373cf26
JK
15933 if (has_low_pc_attr && has_high_pc_attr)
15934 {
15935 /* When using the GNU linker, .gnu.linkonce. sections are used to
15936 eliminate duplicate copies of functions and vtables and such.
15937 The linker will arbitrarily choose one and discard the others.
15938 The AT_*_pc values for such functions refer to local labels in
15939 these sections. If the section from that file was discarded, the
15940 labels are not in the output, so the relocs get a value of 0.
15941 If this is a discarded function, mark the pc bounds as invalid,
15942 so that GDB will ignore it. */
15943 if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
15944 {
bb5ed363 15945 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9373cf26
JK
15946
15947 complaint (&symfile_complaints,
15948 _("DW_AT_low_pc %s is zero "
15949 "for DIE at 0x%x [in module %s]"),
15950 paddress (gdbarch, part_die->lowpc),
4262abfb 15951 part_die->offset.sect_off, objfile_name (objfile));
9373cf26
JK
15952 }
15953 /* dwarf2_get_pc_bounds has also the strict low < high requirement. */
15954 else if (part_die->lowpc >= part_die->highpc)
15955 {
bb5ed363 15956 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9373cf26
JK
15957
15958 complaint (&symfile_complaints,
15959 _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
15960 "for DIE at 0x%x [in module %s]"),
15961 paddress (gdbarch, part_die->lowpc),
15962 paddress (gdbarch, part_die->highpc),
4262abfb 15963 part_die->offset.sect_off, objfile_name (objfile));
9373cf26
JK
15964 }
15965 else
15966 part_die->has_pc_info = 1;
15967 }
85cbf3d3 15968
c906108c
SS
15969 return info_ptr;
15970}
15971
72bf9492
DJ
15972/* Find a cached partial DIE at OFFSET in CU. */
15973
15974static struct partial_die_info *
b64f50a1 15975find_partial_die_in_comp_unit (sect_offset offset, struct dwarf2_cu *cu)
72bf9492
DJ
15976{
15977 struct partial_die_info *lookup_die = NULL;
15978 struct partial_die_info part_die;
15979
15980 part_die.offset = offset;
b64f50a1
JK
15981 lookup_die = htab_find_with_hash (cu->partial_dies, &part_die,
15982 offset.sect_off);
72bf9492 15983
72bf9492
DJ
15984 return lookup_die;
15985}
15986
348e048f
DE
15987/* Find a partial DIE at OFFSET, which may or may not be in CU,
15988 except in the case of .debug_types DIEs which do not reference
15989 outside their CU (they do however referencing other types via
55f1336d 15990 DW_FORM_ref_sig8). */
72bf9492
DJ
15991
15992static struct partial_die_info *
36586728 15993find_partial_die (sect_offset offset, int offset_in_dwz, struct dwarf2_cu *cu)
72bf9492 15994{
bb5ed363 15995 struct objfile *objfile = cu->objfile;
5afb4e99
DJ
15996 struct dwarf2_per_cu_data *per_cu = NULL;
15997 struct partial_die_info *pd = NULL;
72bf9492 15998
36586728
TT
15999 if (offset_in_dwz == cu->per_cu->is_dwz
16000 && offset_in_cu_p (&cu->header, offset))
5afb4e99
DJ
16001 {
16002 pd = find_partial_die_in_comp_unit (offset, cu);
16003 if (pd != NULL)
16004 return pd;
0d99eb77
DE
16005 /* We missed recording what we needed.
16006 Load all dies and try again. */
16007 per_cu = cu->per_cu;
5afb4e99 16008 }
0d99eb77
DE
16009 else
16010 {
16011 /* TUs don't reference other CUs/TUs (except via type signatures). */
3019eac3 16012 if (cu->per_cu->is_debug_types)
0d99eb77
DE
16013 {
16014 error (_("Dwarf Error: Type Unit at offset 0x%lx contains"
16015 " external reference to offset 0x%lx [in module %s].\n"),
16016 (long) cu->header.offset.sect_off, (long) offset.sect_off,
16017 bfd_get_filename (objfile->obfd));
16018 }
36586728
TT
16019 per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
16020 objfile);
72bf9492 16021
0d99eb77
DE
16022 if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
16023 load_partial_comp_unit (per_cu);
ae038cb0 16024
0d99eb77
DE
16025 per_cu->cu->last_used = 0;
16026 pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
16027 }
5afb4e99 16028
dee91e82
DE
16029 /* If we didn't find it, and not all dies have been loaded,
16030 load them all and try again. */
16031
5afb4e99
DJ
16032 if (pd == NULL && per_cu->load_all_dies == 0)
16033 {
5afb4e99 16034 per_cu->load_all_dies = 1;
fd820528
DE
16035
16036 /* This is nasty. When we reread the DIEs, somewhere up the call chain
16037 THIS_CU->cu may already be in use. So we can't just free it and
16038 replace its DIEs with the ones we read in. Instead, we leave those
16039 DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
16040 and clobber THIS_CU->cu->partial_dies with the hash table for the new
16041 set. */
dee91e82 16042 load_partial_comp_unit (per_cu);
5afb4e99
DJ
16043
16044 pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
16045 }
16046
16047 if (pd == NULL)
16048 internal_error (__FILE__, __LINE__,
3e43a32a
MS
16049 _("could not find partial DIE 0x%x "
16050 "in cache [from module %s]\n"),
b64f50a1 16051 offset.sect_off, bfd_get_filename (objfile->obfd));
5afb4e99 16052 return pd;
72bf9492
DJ
16053}
16054
abc72ce4
DE
16055/* See if we can figure out if the class lives in a namespace. We do
16056 this by looking for a member function; its demangled name will
16057 contain namespace info, if there is any. */
16058
16059static void
16060guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
16061 struct dwarf2_cu *cu)
16062{
16063 /* NOTE: carlton/2003-10-07: Getting the info this way changes
16064 what template types look like, because the demangler
16065 frequently doesn't give the same name as the debug info. We
16066 could fix this by only using the demangled name to get the
16067 prefix (but see comment in read_structure_type). */
16068
16069 struct partial_die_info *real_pdi;
16070 struct partial_die_info *child_pdi;
16071
16072 /* If this DIE (this DIE's specification, if any) has a parent, then
16073 we should not do this. We'll prepend the parent's fully qualified
16074 name when we create the partial symbol. */
16075
16076 real_pdi = struct_pdi;
16077 while (real_pdi->has_specification)
36586728
TT
16078 real_pdi = find_partial_die (real_pdi->spec_offset,
16079 real_pdi->spec_is_dwz, cu);
abc72ce4
DE
16080
16081 if (real_pdi->die_parent != NULL)
16082 return;
16083
16084 for (child_pdi = struct_pdi->die_child;
16085 child_pdi != NULL;
16086 child_pdi = child_pdi->die_sibling)
16087 {
16088 if (child_pdi->tag == DW_TAG_subprogram
16089 && child_pdi->linkage_name != NULL)
16090 {
16091 char *actual_class_name
16092 = language_class_name_from_physname (cu->language_defn,
16093 child_pdi->linkage_name);
16094 if (actual_class_name != NULL)
16095 {
16096 struct_pdi->name
34a68019 16097 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb
TT
16098 actual_class_name,
16099 strlen (actual_class_name));
abc72ce4
DE
16100 xfree (actual_class_name);
16101 }
16102 break;
16103 }
16104 }
16105}
16106
72bf9492
DJ
16107/* Adjust PART_DIE before generating a symbol for it. This function
16108 may set the is_external flag or change the DIE's name. */
16109
16110static void
16111fixup_partial_die (struct partial_die_info *part_die,
16112 struct dwarf2_cu *cu)
16113{
abc72ce4
DE
16114 /* Once we've fixed up a die, there's no point in doing so again.
16115 This also avoids a memory leak if we were to call
16116 guess_partial_die_structure_name multiple times. */
16117 if (part_die->fixup_called)
16118 return;
16119
72bf9492
DJ
16120 /* If we found a reference attribute and the DIE has no name, try
16121 to find a name in the referred to DIE. */
16122
16123 if (part_die->name == NULL && part_die->has_specification)
16124 {
16125 struct partial_die_info *spec_die;
72bf9492 16126
36586728
TT
16127 spec_die = find_partial_die (part_die->spec_offset,
16128 part_die->spec_is_dwz, cu);
72bf9492 16129
10b3939b 16130 fixup_partial_die (spec_die, cu);
72bf9492
DJ
16131
16132 if (spec_die->name)
16133 {
16134 part_die->name = spec_die->name;
16135
16136 /* Copy DW_AT_external attribute if it is set. */
16137 if (spec_die->is_external)
16138 part_die->is_external = spec_die->is_external;
16139 }
16140 }
16141
16142 /* Set default names for some unnamed DIEs. */
72bf9492
DJ
16143
16144 if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
2b1dbab0 16145 part_die->name = CP_ANONYMOUS_NAMESPACE_STR;
72bf9492 16146
abc72ce4
DE
16147 /* If there is no parent die to provide a namespace, and there are
16148 children, see if we can determine the namespace from their linkage
122d1940 16149 name. */
abc72ce4 16150 if (cu->language == language_cplus
8b70b953 16151 && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
abc72ce4
DE
16152 && part_die->die_parent == NULL
16153 && part_die->has_children
16154 && (part_die->tag == DW_TAG_class_type
16155 || part_die->tag == DW_TAG_structure_type
16156 || part_die->tag == DW_TAG_union_type))
16157 guess_partial_die_structure_name (part_die, cu);
16158
53832f31
TT
16159 /* GCC might emit a nameless struct or union that has a linkage
16160 name. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
16161 if (part_die->name == NULL
96408a79
SA
16162 && (part_die->tag == DW_TAG_class_type
16163 || part_die->tag == DW_TAG_interface_type
16164 || part_die->tag == DW_TAG_structure_type
16165 || part_die->tag == DW_TAG_union_type)
53832f31
TT
16166 && part_die->linkage_name != NULL)
16167 {
16168 char *demangled;
16169
8de20a37 16170 demangled = gdb_demangle (part_die->linkage_name, DMGL_TYPES);
53832f31
TT
16171 if (demangled)
16172 {
96408a79
SA
16173 const char *base;
16174
16175 /* Strip any leading namespaces/classes, keep only the base name.
16176 DW_AT_name for named DIEs does not contain the prefixes. */
16177 base = strrchr (demangled, ':');
16178 if (base && base > demangled && base[-1] == ':')
16179 base++;
16180 else
16181 base = demangled;
16182
34a68019
TT
16183 part_die->name
16184 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
16185 base, strlen (base));
53832f31
TT
16186 xfree (demangled);
16187 }
16188 }
16189
abc72ce4 16190 part_die->fixup_called = 1;
72bf9492
DJ
16191}
16192
a8329558 16193/* Read an attribute value described by an attribute form. */
c906108c 16194
d521ce57 16195static const gdb_byte *
dee91e82
DE
16196read_attribute_value (const struct die_reader_specs *reader,
16197 struct attribute *attr, unsigned form,
d521ce57 16198 const gdb_byte *info_ptr)
c906108c 16199{
dee91e82 16200 struct dwarf2_cu *cu = reader->cu;
3e29f34a
MR
16201 struct objfile *objfile = cu->objfile;
16202 struct gdbarch *gdbarch = get_objfile_arch (objfile);
dee91e82 16203 bfd *abfd = reader->abfd;
e7c27a73 16204 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
16205 unsigned int bytes_read;
16206 struct dwarf_block *blk;
16207
a8329558
KW
16208 attr->form = form;
16209 switch (form)
c906108c 16210 {
c906108c 16211 case DW_FORM_ref_addr:
ae411497 16212 if (cu->header.version == 2)
4568ecf9 16213 DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
ae411497 16214 else
4568ecf9
DE
16215 DW_UNSND (attr) = read_offset (abfd, info_ptr,
16216 &cu->header, &bytes_read);
ae411497
TT
16217 info_ptr += bytes_read;
16218 break;
36586728
TT
16219 case DW_FORM_GNU_ref_alt:
16220 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16221 info_ptr += bytes_read;
16222 break;
ae411497 16223 case DW_FORM_addr:
e7c27a73 16224 DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
3e29f34a 16225 DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
107d2387 16226 info_ptr += bytes_read;
c906108c
SS
16227 break;
16228 case DW_FORM_block2:
7b5a2f43 16229 blk = dwarf_alloc_block (cu);
c906108c
SS
16230 blk->size = read_2_bytes (abfd, info_ptr);
16231 info_ptr += 2;
16232 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16233 info_ptr += blk->size;
16234 DW_BLOCK (attr) = blk;
16235 break;
16236 case DW_FORM_block4:
7b5a2f43 16237 blk = dwarf_alloc_block (cu);
c906108c
SS
16238 blk->size = read_4_bytes (abfd, info_ptr);
16239 info_ptr += 4;
16240 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16241 info_ptr += blk->size;
16242 DW_BLOCK (attr) = blk;
16243 break;
16244 case DW_FORM_data2:
16245 DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
16246 info_ptr += 2;
16247 break;
16248 case DW_FORM_data4:
16249 DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
16250 info_ptr += 4;
16251 break;
16252 case DW_FORM_data8:
16253 DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
16254 info_ptr += 8;
16255 break;
2dc7f7b3
TT
16256 case DW_FORM_sec_offset:
16257 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16258 info_ptr += bytes_read;
16259 break;
c906108c 16260 case DW_FORM_string:
9b1c24c8 16261 DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
8285870a 16262 DW_STRING_IS_CANONICAL (attr) = 0;
c906108c
SS
16263 info_ptr += bytes_read;
16264 break;
4bdf3d34 16265 case DW_FORM_strp:
36586728
TT
16266 if (!cu->per_cu->is_dwz)
16267 {
16268 DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
16269 &bytes_read);
16270 DW_STRING_IS_CANONICAL (attr) = 0;
16271 info_ptr += bytes_read;
16272 break;
16273 }
16274 /* FALLTHROUGH */
16275 case DW_FORM_GNU_strp_alt:
16276 {
16277 struct dwz_file *dwz = dwarf2_get_dwz_file ();
16278 LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
16279 &bytes_read);
16280
16281 DW_STRING (attr) = read_indirect_string_from_dwz (dwz, str_offset);
16282 DW_STRING_IS_CANONICAL (attr) = 0;
16283 info_ptr += bytes_read;
16284 }
4bdf3d34 16285 break;
2dc7f7b3 16286 case DW_FORM_exprloc:
c906108c 16287 case DW_FORM_block:
7b5a2f43 16288 blk = dwarf_alloc_block (cu);
c906108c
SS
16289 blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16290 info_ptr += bytes_read;
16291 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16292 info_ptr += blk->size;
16293 DW_BLOCK (attr) = blk;
16294 break;
16295 case DW_FORM_block1:
7b5a2f43 16296 blk = dwarf_alloc_block (cu);
c906108c
SS
16297 blk->size = read_1_byte (abfd, info_ptr);
16298 info_ptr += 1;
16299 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16300 info_ptr += blk->size;
16301 DW_BLOCK (attr) = blk;
16302 break;
16303 case DW_FORM_data1:
16304 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16305 info_ptr += 1;
16306 break;
16307 case DW_FORM_flag:
16308 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16309 info_ptr += 1;
16310 break;
2dc7f7b3
TT
16311 case DW_FORM_flag_present:
16312 DW_UNSND (attr) = 1;
16313 break;
c906108c
SS
16314 case DW_FORM_sdata:
16315 DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
16316 info_ptr += bytes_read;
16317 break;
16318 case DW_FORM_udata:
16319 DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16320 info_ptr += bytes_read;
16321 break;
16322 case DW_FORM_ref1:
4568ecf9
DE
16323 DW_UNSND (attr) = (cu->header.offset.sect_off
16324 + read_1_byte (abfd, info_ptr));
c906108c
SS
16325 info_ptr += 1;
16326 break;
16327 case DW_FORM_ref2:
4568ecf9
DE
16328 DW_UNSND (attr) = (cu->header.offset.sect_off
16329 + read_2_bytes (abfd, info_ptr));
c906108c
SS
16330 info_ptr += 2;
16331 break;
16332 case DW_FORM_ref4:
4568ecf9
DE
16333 DW_UNSND (attr) = (cu->header.offset.sect_off
16334 + read_4_bytes (abfd, info_ptr));
c906108c
SS
16335 info_ptr += 4;
16336 break;
613e1657 16337 case DW_FORM_ref8:
4568ecf9
DE
16338 DW_UNSND (attr) = (cu->header.offset.sect_off
16339 + read_8_bytes (abfd, info_ptr));
613e1657
KB
16340 info_ptr += 8;
16341 break;
55f1336d 16342 case DW_FORM_ref_sig8:
ac9ec31b 16343 DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
348e048f
DE
16344 info_ptr += 8;
16345 break;
c906108c 16346 case DW_FORM_ref_udata:
4568ecf9
DE
16347 DW_UNSND (attr) = (cu->header.offset.sect_off
16348 + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
c906108c
SS
16349 info_ptr += bytes_read;
16350 break;
c906108c 16351 case DW_FORM_indirect:
a8329558
KW
16352 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16353 info_ptr += bytes_read;
dee91e82 16354 info_ptr = read_attribute_value (reader, attr, form, info_ptr);
a8329558 16355 break;
3019eac3
DE
16356 case DW_FORM_GNU_addr_index:
16357 if (reader->dwo_file == NULL)
16358 {
16359 /* For now flag a hard error.
16360 Later we can turn this into a complaint. */
16361 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16362 dwarf_form_name (form),
16363 bfd_get_filename (abfd));
16364 }
16365 DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
16366 info_ptr += bytes_read;
16367 break;
16368 case DW_FORM_GNU_str_index:
16369 if (reader->dwo_file == NULL)
16370 {
16371 /* For now flag a hard error.
16372 Later we can turn this into a complaint if warranted. */
16373 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16374 dwarf_form_name (form),
16375 bfd_get_filename (abfd));
16376 }
16377 {
16378 ULONGEST str_index =
16379 read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16380
342587c4 16381 DW_STRING (attr) = read_str_index (reader, str_index);
3019eac3
DE
16382 DW_STRING_IS_CANONICAL (attr) = 0;
16383 info_ptr += bytes_read;
16384 }
16385 break;
c906108c 16386 default:
8a3fe4f8 16387 error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
659b0389
ML
16388 dwarf_form_name (form),
16389 bfd_get_filename (abfd));
c906108c 16390 }
28e94949 16391
36586728 16392 /* Super hack. */
7771576e 16393 if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
36586728
TT
16394 attr->form = DW_FORM_GNU_ref_alt;
16395
28e94949
JB
16396 /* We have seen instances where the compiler tried to emit a byte
16397 size attribute of -1 which ended up being encoded as an unsigned
16398 0xffffffff. Although 0xffffffff is technically a valid size value,
16399 an object of this size seems pretty unlikely so we can relatively
16400 safely treat these cases as if the size attribute was invalid and
16401 treat them as zero by default. */
16402 if (attr->name == DW_AT_byte_size
16403 && form == DW_FORM_data4
16404 && DW_UNSND (attr) >= 0xffffffff)
01c66ae6
JB
16405 {
16406 complaint
16407 (&symfile_complaints,
43bbcdc2
PH
16408 _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
16409 hex_string (DW_UNSND (attr)));
01c66ae6
JB
16410 DW_UNSND (attr) = 0;
16411 }
28e94949 16412
c906108c
SS
16413 return info_ptr;
16414}
16415
a8329558
KW
16416/* Read an attribute described by an abbreviated attribute. */
16417
d521ce57 16418static const gdb_byte *
dee91e82
DE
16419read_attribute (const struct die_reader_specs *reader,
16420 struct attribute *attr, struct attr_abbrev *abbrev,
d521ce57 16421 const gdb_byte *info_ptr)
a8329558
KW
16422{
16423 attr->name = abbrev->name;
dee91e82 16424 return read_attribute_value (reader, attr, abbrev->form, info_ptr);
a8329558
KW
16425}
16426
0963b4bd 16427/* Read dwarf information from a buffer. */
c906108c
SS
16428
16429static unsigned int
a1855c1d 16430read_1_byte (bfd *abfd, const gdb_byte *buf)
c906108c 16431{
fe1b8b76 16432 return bfd_get_8 (abfd, buf);
c906108c
SS
16433}
16434
16435static int
a1855c1d 16436read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
c906108c 16437{
fe1b8b76 16438 return bfd_get_signed_8 (abfd, buf);
c906108c
SS
16439}
16440
16441static unsigned int
a1855c1d 16442read_2_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16443{
fe1b8b76 16444 return bfd_get_16 (abfd, buf);
c906108c
SS
16445}
16446
21ae7a4d 16447static int
a1855c1d 16448read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
21ae7a4d
JK
16449{
16450 return bfd_get_signed_16 (abfd, buf);
16451}
16452
c906108c 16453static unsigned int
a1855c1d 16454read_4_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16455{
fe1b8b76 16456 return bfd_get_32 (abfd, buf);
c906108c
SS
16457}
16458
21ae7a4d 16459static int
a1855c1d 16460read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
21ae7a4d
JK
16461{
16462 return bfd_get_signed_32 (abfd, buf);
16463}
16464
93311388 16465static ULONGEST
a1855c1d 16466read_8_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16467{
fe1b8b76 16468 return bfd_get_64 (abfd, buf);
c906108c
SS
16469}
16470
16471static CORE_ADDR
d521ce57 16472read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
891d2f0b 16473 unsigned int *bytes_read)
c906108c 16474{
e7c27a73 16475 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
16476 CORE_ADDR retval = 0;
16477
107d2387 16478 if (cu_header->signed_addr_p)
c906108c 16479 {
107d2387
AC
16480 switch (cu_header->addr_size)
16481 {
16482 case 2:
fe1b8b76 16483 retval = bfd_get_signed_16 (abfd, buf);
107d2387
AC
16484 break;
16485 case 4:
fe1b8b76 16486 retval = bfd_get_signed_32 (abfd, buf);
107d2387
AC
16487 break;
16488 case 8:
fe1b8b76 16489 retval = bfd_get_signed_64 (abfd, buf);
107d2387
AC
16490 break;
16491 default:
8e65ff28 16492 internal_error (__FILE__, __LINE__,
e2e0b3e5 16493 _("read_address: bad switch, signed [in module %s]"),
659b0389 16494 bfd_get_filename (abfd));
107d2387
AC
16495 }
16496 }
16497 else
16498 {
16499 switch (cu_header->addr_size)
16500 {
16501 case 2:
fe1b8b76 16502 retval = bfd_get_16 (abfd, buf);
107d2387
AC
16503 break;
16504 case 4:
fe1b8b76 16505 retval = bfd_get_32 (abfd, buf);
107d2387
AC
16506 break;
16507 case 8:
fe1b8b76 16508 retval = bfd_get_64 (abfd, buf);
107d2387
AC
16509 break;
16510 default:
8e65ff28 16511 internal_error (__FILE__, __LINE__,
a73c6dcd
MS
16512 _("read_address: bad switch, "
16513 "unsigned [in module %s]"),
659b0389 16514 bfd_get_filename (abfd));
107d2387 16515 }
c906108c 16516 }
64367e0a 16517
107d2387
AC
16518 *bytes_read = cu_header->addr_size;
16519 return retval;
c906108c
SS
16520}
16521
f7ef9339 16522/* Read the initial length from a section. The (draft) DWARF 3
613e1657
KB
16523 specification allows the initial length to take up either 4 bytes
16524 or 12 bytes. If the first 4 bytes are 0xffffffff, then the next 8
16525 bytes describe the length and all offsets will be 8 bytes in length
16526 instead of 4.
16527
f7ef9339
KB
16528 An older, non-standard 64-bit format is also handled by this
16529 function. The older format in question stores the initial length
16530 as an 8-byte quantity without an escape value. Lengths greater
16531 than 2^32 aren't very common which means that the initial 4 bytes
16532 is almost always zero. Since a length value of zero doesn't make
16533 sense for the 32-bit format, this initial zero can be considered to
16534 be an escape value which indicates the presence of the older 64-bit
16535 format. As written, the code can't detect (old format) lengths
917c78fc
MK
16536 greater than 4GB. If it becomes necessary to handle lengths
16537 somewhat larger than 4GB, we could allow other small values (such
16538 as the non-sensical values of 1, 2, and 3) to also be used as
16539 escape values indicating the presence of the old format.
f7ef9339 16540
917c78fc
MK
16541 The value returned via bytes_read should be used to increment the
16542 relevant pointer after calling read_initial_length().
c764a876 16543
613e1657
KB
16544 [ Note: read_initial_length() and read_offset() are based on the
16545 document entitled "DWARF Debugging Information Format", revision
f7ef9339 16546 3, draft 8, dated November 19, 2001. This document was obtained
613e1657
KB
16547 from:
16548
f7ef9339 16549 http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
6e70227d 16550
613e1657
KB
16551 This document is only a draft and is subject to change. (So beware.)
16552
f7ef9339 16553 Details regarding the older, non-standard 64-bit format were
917c78fc
MK
16554 determined empirically by examining 64-bit ELF files produced by
16555 the SGI toolchain on an IRIX 6.5 machine.
f7ef9339
KB
16556
16557 - Kevin, July 16, 2002
613e1657
KB
16558 ] */
16559
16560static LONGEST
d521ce57 16561read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
613e1657 16562{
fe1b8b76 16563 LONGEST length = bfd_get_32 (abfd, buf);
613e1657 16564
dd373385 16565 if (length == 0xffffffff)
613e1657 16566 {
fe1b8b76 16567 length = bfd_get_64 (abfd, buf + 4);
613e1657 16568 *bytes_read = 12;
613e1657 16569 }
dd373385 16570 else if (length == 0)
f7ef9339 16571 {
dd373385 16572 /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX. */
fe1b8b76 16573 length = bfd_get_64 (abfd, buf);
f7ef9339 16574 *bytes_read = 8;
f7ef9339 16575 }
613e1657
KB
16576 else
16577 {
16578 *bytes_read = 4;
613e1657
KB
16579 }
16580
c764a876
DE
16581 return length;
16582}
dd373385 16583
c764a876
DE
16584/* Cover function for read_initial_length.
16585 Returns the length of the object at BUF, and stores the size of the
16586 initial length in *BYTES_READ and stores the size that offsets will be in
16587 *OFFSET_SIZE.
16588 If the initial length size is not equivalent to that specified in
16589 CU_HEADER then issue a complaint.
16590 This is useful when reading non-comp-unit headers. */
dd373385 16591
c764a876 16592static LONGEST
d521ce57 16593read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
c764a876
DE
16594 const struct comp_unit_head *cu_header,
16595 unsigned int *bytes_read,
16596 unsigned int *offset_size)
16597{
16598 LONGEST length = read_initial_length (abfd, buf, bytes_read);
16599
16600 gdb_assert (cu_header->initial_length_size == 4
16601 || cu_header->initial_length_size == 8
16602 || cu_header->initial_length_size == 12);
16603
16604 if (cu_header->initial_length_size != *bytes_read)
16605 complaint (&symfile_complaints,
16606 _("intermixed 32-bit and 64-bit DWARF sections"));
dd373385 16607
c764a876 16608 *offset_size = (*bytes_read == 4) ? 4 : 8;
dd373385 16609 return length;
613e1657
KB
16610}
16611
16612/* Read an offset from the data stream. The size of the offset is
917c78fc 16613 given by cu_header->offset_size. */
613e1657
KB
16614
16615static LONGEST
d521ce57
TT
16616read_offset (bfd *abfd, const gdb_byte *buf,
16617 const struct comp_unit_head *cu_header,
891d2f0b 16618 unsigned int *bytes_read)
c764a876
DE
16619{
16620 LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
9a619af0 16621
c764a876
DE
16622 *bytes_read = cu_header->offset_size;
16623 return offset;
16624}
16625
16626/* Read an offset from the data stream. */
16627
16628static LONGEST
d521ce57 16629read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
613e1657
KB
16630{
16631 LONGEST retval = 0;
16632
c764a876 16633 switch (offset_size)
613e1657
KB
16634 {
16635 case 4:
fe1b8b76 16636 retval = bfd_get_32 (abfd, buf);
613e1657
KB
16637 break;
16638 case 8:
fe1b8b76 16639 retval = bfd_get_64 (abfd, buf);
613e1657
KB
16640 break;
16641 default:
8e65ff28 16642 internal_error (__FILE__, __LINE__,
c764a876 16643 _("read_offset_1: bad switch [in module %s]"),
659b0389 16644 bfd_get_filename (abfd));
613e1657
KB
16645 }
16646
917c78fc 16647 return retval;
613e1657
KB
16648}
16649
d521ce57
TT
16650static const gdb_byte *
16651read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
c906108c
SS
16652{
16653 /* If the size of a host char is 8 bits, we can return a pointer
16654 to the buffer, otherwise we have to copy the data to a buffer
16655 allocated on the temporary obstack. */
4bdf3d34 16656 gdb_assert (HOST_CHAR_BIT == 8);
c906108c 16657 return buf;
c906108c
SS
16658}
16659
d521ce57
TT
16660static const char *
16661read_direct_string (bfd *abfd, const gdb_byte *buf,
16662 unsigned int *bytes_read_ptr)
c906108c
SS
16663{
16664 /* If the size of a host char is 8 bits, we can return a pointer
16665 to the string, otherwise we have to copy the string to a buffer
16666 allocated on the temporary obstack. */
4bdf3d34 16667 gdb_assert (HOST_CHAR_BIT == 8);
c906108c
SS
16668 if (*buf == '\0')
16669 {
16670 *bytes_read_ptr = 1;
16671 return NULL;
16672 }
d521ce57
TT
16673 *bytes_read_ptr = strlen ((const char *) buf) + 1;
16674 return (const char *) buf;
4bdf3d34
JJ
16675}
16676
d521ce57 16677static const char *
cf2c3c16 16678read_indirect_string_at_offset (bfd *abfd, LONGEST str_offset)
4bdf3d34 16679{
be391dca 16680 dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->str);
dce234bc 16681 if (dwarf2_per_objfile->str.buffer == NULL)
cf2c3c16
TT
16682 error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
16683 bfd_get_filename (abfd));
dce234bc 16684 if (str_offset >= dwarf2_per_objfile->str.size)
cf2c3c16
TT
16685 error (_("DW_FORM_strp pointing outside of "
16686 ".debug_str section [in module %s]"),
16687 bfd_get_filename (abfd));
4bdf3d34 16688 gdb_assert (HOST_CHAR_BIT == 8);
dce234bc 16689 if (dwarf2_per_objfile->str.buffer[str_offset] == '\0')
4bdf3d34 16690 return NULL;
d521ce57 16691 return (const char *) (dwarf2_per_objfile->str.buffer + str_offset);
c906108c
SS
16692}
16693
36586728
TT
16694/* Read a string at offset STR_OFFSET in the .debug_str section from
16695 the .dwz file DWZ. Throw an error if the offset is too large. If
16696 the string consists of a single NUL byte, return NULL; otherwise
16697 return a pointer to the string. */
16698
d521ce57 16699static const char *
36586728
TT
16700read_indirect_string_from_dwz (struct dwz_file *dwz, LONGEST str_offset)
16701{
16702 dwarf2_read_section (dwarf2_per_objfile->objfile, &dwz->str);
16703
16704 if (dwz->str.buffer == NULL)
16705 error (_("DW_FORM_GNU_strp_alt used without .debug_str "
16706 "section [in module %s]"),
16707 bfd_get_filename (dwz->dwz_bfd));
16708 if (str_offset >= dwz->str.size)
16709 error (_("DW_FORM_GNU_strp_alt pointing outside of "
16710 ".debug_str section [in module %s]"),
16711 bfd_get_filename (dwz->dwz_bfd));
16712 gdb_assert (HOST_CHAR_BIT == 8);
16713 if (dwz->str.buffer[str_offset] == '\0')
16714 return NULL;
d521ce57 16715 return (const char *) (dwz->str.buffer + str_offset);
36586728
TT
16716}
16717
d521ce57
TT
16718static const char *
16719read_indirect_string (bfd *abfd, const gdb_byte *buf,
cf2c3c16
TT
16720 const struct comp_unit_head *cu_header,
16721 unsigned int *bytes_read_ptr)
16722{
16723 LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
16724
16725 return read_indirect_string_at_offset (abfd, str_offset);
16726}
16727
12df843f 16728static ULONGEST
d521ce57
TT
16729read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
16730 unsigned int *bytes_read_ptr)
c906108c 16731{
12df843f 16732 ULONGEST result;
ce5d95e1 16733 unsigned int num_read;
c906108c
SS
16734 int i, shift;
16735 unsigned char byte;
16736
16737 result = 0;
16738 shift = 0;
16739 num_read = 0;
16740 i = 0;
16741 while (1)
16742 {
fe1b8b76 16743 byte = bfd_get_8 (abfd, buf);
c906108c
SS
16744 buf++;
16745 num_read++;
12df843f 16746 result |= ((ULONGEST) (byte & 127) << shift);
c906108c
SS
16747 if ((byte & 128) == 0)
16748 {
16749 break;
16750 }
16751 shift += 7;
16752 }
16753 *bytes_read_ptr = num_read;
16754 return result;
16755}
16756
12df843f 16757static LONGEST
d521ce57
TT
16758read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
16759 unsigned int *bytes_read_ptr)
c906108c 16760{
12df843f 16761 LONGEST result;
77e0b926 16762 int i, shift, num_read;
c906108c
SS
16763 unsigned char byte;
16764
16765 result = 0;
16766 shift = 0;
c906108c
SS
16767 num_read = 0;
16768 i = 0;
16769 while (1)
16770 {
fe1b8b76 16771 byte = bfd_get_8 (abfd, buf);
c906108c
SS
16772 buf++;
16773 num_read++;
12df843f 16774 result |= ((LONGEST) (byte & 127) << shift);
c906108c
SS
16775 shift += 7;
16776 if ((byte & 128) == 0)
16777 {
16778 break;
16779 }
16780 }
77e0b926 16781 if ((shift < 8 * sizeof (result)) && (byte & 0x40))
12df843f 16782 result |= -(((LONGEST) 1) << shift);
c906108c
SS
16783 *bytes_read_ptr = num_read;
16784 return result;
16785}
16786
3019eac3
DE
16787/* Given index ADDR_INDEX in .debug_addr, fetch the value.
16788 ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
16789 ADDR_SIZE is the size of addresses from the CU header. */
16790
16791static CORE_ADDR
16792read_addr_index_1 (unsigned int addr_index, ULONGEST addr_base, int addr_size)
16793{
16794 struct objfile *objfile = dwarf2_per_objfile->objfile;
16795 bfd *abfd = objfile->obfd;
16796 const gdb_byte *info_ptr;
16797
16798 dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
16799 if (dwarf2_per_objfile->addr.buffer == NULL)
16800 error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
4262abfb 16801 objfile_name (objfile));
3019eac3
DE
16802 if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
16803 error (_("DW_FORM_addr_index pointing outside of "
16804 ".debug_addr section [in module %s]"),
4262abfb 16805 objfile_name (objfile));
3019eac3
DE
16806 info_ptr = (dwarf2_per_objfile->addr.buffer
16807 + addr_base + addr_index * addr_size);
16808 if (addr_size == 4)
16809 return bfd_get_32 (abfd, info_ptr);
16810 else
16811 return bfd_get_64 (abfd, info_ptr);
16812}
16813
16814/* Given index ADDR_INDEX in .debug_addr, fetch the value. */
16815
16816static CORE_ADDR
16817read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
16818{
16819 return read_addr_index_1 (addr_index, cu->addr_base, cu->header.addr_size);
16820}
16821
16822/* Given a pointer to an leb128 value, fetch the value from .debug_addr. */
16823
16824static CORE_ADDR
d521ce57 16825read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
3019eac3
DE
16826 unsigned int *bytes_read)
16827{
16828 bfd *abfd = cu->objfile->obfd;
16829 unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
16830
16831 return read_addr_index (cu, addr_index);
16832}
16833
16834/* Data structure to pass results from dwarf2_read_addr_index_reader
16835 back to dwarf2_read_addr_index. */
16836
16837struct dwarf2_read_addr_index_data
16838{
16839 ULONGEST addr_base;
16840 int addr_size;
16841};
16842
16843/* die_reader_func for dwarf2_read_addr_index. */
16844
16845static void
16846dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
d521ce57 16847 const gdb_byte *info_ptr,
3019eac3
DE
16848 struct die_info *comp_unit_die,
16849 int has_children,
16850 void *data)
16851{
16852 struct dwarf2_cu *cu = reader->cu;
16853 struct dwarf2_read_addr_index_data *aidata =
16854 (struct dwarf2_read_addr_index_data *) data;
16855
16856 aidata->addr_base = cu->addr_base;
16857 aidata->addr_size = cu->header.addr_size;
16858}
16859
16860/* Given an index in .debug_addr, fetch the value.
16861 NOTE: This can be called during dwarf expression evaluation,
16862 long after the debug information has been read, and thus per_cu->cu
16863 may no longer exist. */
16864
16865CORE_ADDR
16866dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
16867 unsigned int addr_index)
16868{
16869 struct objfile *objfile = per_cu->objfile;
16870 struct dwarf2_cu *cu = per_cu->cu;
16871 ULONGEST addr_base;
16872 int addr_size;
16873
16874 /* This is intended to be called from outside this file. */
16875 dw2_setup (objfile);
16876
16877 /* We need addr_base and addr_size.
16878 If we don't have PER_CU->cu, we have to get it.
16879 Nasty, but the alternative is storing the needed info in PER_CU,
16880 which at this point doesn't seem justified: it's not clear how frequently
16881 it would get used and it would increase the size of every PER_CU.
16882 Entry points like dwarf2_per_cu_addr_size do a similar thing
16883 so we're not in uncharted territory here.
16884 Alas we need to be a bit more complicated as addr_base is contained
16885 in the DIE.
16886
16887 We don't need to read the entire CU(/TU).
16888 We just need the header and top level die.
a1b64ce1 16889
3019eac3 16890 IWBN to use the aging mechanism to let us lazily later discard the CU.
a1b64ce1 16891 For now we skip this optimization. */
3019eac3
DE
16892
16893 if (cu != NULL)
16894 {
16895 addr_base = cu->addr_base;
16896 addr_size = cu->header.addr_size;
16897 }
16898 else
16899 {
16900 struct dwarf2_read_addr_index_data aidata;
16901
a1b64ce1
DE
16902 /* Note: We can't use init_cutu_and_read_dies_simple here,
16903 we need addr_base. */
16904 init_cutu_and_read_dies (per_cu, NULL, 0, 0,
16905 dwarf2_read_addr_index_reader, &aidata);
3019eac3
DE
16906 addr_base = aidata.addr_base;
16907 addr_size = aidata.addr_size;
16908 }
16909
16910 return read_addr_index_1 (addr_index, addr_base, addr_size);
16911}
16912
57d63ce2
DE
16913/* Given a DW_FORM_GNU_str_index, fetch the string.
16914 This is only used by the Fission support. */
3019eac3 16915
d521ce57 16916static const char *
342587c4 16917read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
3019eac3
DE
16918{
16919 struct objfile *objfile = dwarf2_per_objfile->objfile;
c5164cbc 16920 const char *objf_name = objfile_name (objfile);
3019eac3 16921 bfd *abfd = objfile->obfd;
342587c4 16922 struct dwarf2_cu *cu = reader->cu;
73869dc2
DE
16923 struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
16924 struct dwarf2_section_info *str_offsets_section =
16925 &reader->dwo_file->sections.str_offsets;
d521ce57 16926 const gdb_byte *info_ptr;
3019eac3 16927 ULONGEST str_offset;
57d63ce2 16928 static const char form_name[] = "DW_FORM_GNU_str_index";
3019eac3 16929
73869dc2
DE
16930 dwarf2_read_section (objfile, str_section);
16931 dwarf2_read_section (objfile, str_offsets_section);
16932 if (str_section->buffer == NULL)
57d63ce2 16933 error (_("%s used without .debug_str.dwo section"
3019eac3 16934 " in CU at offset 0x%lx [in module %s]"),
c5164cbc 16935 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16936 if (str_offsets_section->buffer == NULL)
57d63ce2 16937 error (_("%s used without .debug_str_offsets.dwo section"
3019eac3 16938 " in CU at offset 0x%lx [in module %s]"),
c5164cbc 16939 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16940 if (str_index * cu->header.offset_size >= str_offsets_section->size)
57d63ce2 16941 error (_("%s pointing outside of .debug_str_offsets.dwo"
3019eac3 16942 " section in CU at offset 0x%lx [in module %s]"),
c5164cbc 16943 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16944 info_ptr = (str_offsets_section->buffer
3019eac3
DE
16945 + str_index * cu->header.offset_size);
16946 if (cu->header.offset_size == 4)
16947 str_offset = bfd_get_32 (abfd, info_ptr);
16948 else
16949 str_offset = bfd_get_64 (abfd, info_ptr);
73869dc2 16950 if (str_offset >= str_section->size)
57d63ce2 16951 error (_("Offset from %s pointing outside of"
3019eac3 16952 " .debug_str.dwo section in CU at offset 0x%lx [in module %s]"),
c5164cbc 16953 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16954 return (const char *) (str_section->buffer + str_offset);
3019eac3
DE
16955}
16956
3019eac3
DE
16957/* Return the length of an LEB128 number in BUF. */
16958
16959static int
16960leb128_size (const gdb_byte *buf)
16961{
16962 const gdb_byte *begin = buf;
16963 gdb_byte byte;
16964
16965 while (1)
16966 {
16967 byte = *buf++;
16968 if ((byte & 128) == 0)
16969 return buf - begin;
16970 }
16971}
16972
c906108c 16973static void
e142c38c 16974set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
c906108c
SS
16975{
16976 switch (lang)
16977 {
16978 case DW_LANG_C89:
76bee0cc 16979 case DW_LANG_C99:
0cfd832f 16980 case DW_LANG_C11:
c906108c 16981 case DW_LANG_C:
d1be3247 16982 case DW_LANG_UPC:
e142c38c 16983 cu->language = language_c;
c906108c
SS
16984 break;
16985 case DW_LANG_C_plus_plus:
0cfd832f
MW
16986 case DW_LANG_C_plus_plus_11:
16987 case DW_LANG_C_plus_plus_14:
e142c38c 16988 cu->language = language_cplus;
c906108c 16989 break;
6aecb9c2
JB
16990 case DW_LANG_D:
16991 cu->language = language_d;
16992 break;
c906108c
SS
16993 case DW_LANG_Fortran77:
16994 case DW_LANG_Fortran90:
b21b22e0 16995 case DW_LANG_Fortran95:
f7de9aab
MW
16996 case DW_LANG_Fortran03:
16997 case DW_LANG_Fortran08:
e142c38c 16998 cu->language = language_fortran;
c906108c 16999 break;
a766d390
DE
17000 case DW_LANG_Go:
17001 cu->language = language_go;
17002 break;
c906108c 17003 case DW_LANG_Mips_Assembler:
e142c38c 17004 cu->language = language_asm;
c906108c 17005 break;
bebd888e 17006 case DW_LANG_Java:
e142c38c 17007 cu->language = language_java;
bebd888e 17008 break;
c906108c 17009 case DW_LANG_Ada83:
8aaf0b47 17010 case DW_LANG_Ada95:
bc5f45f8
JB
17011 cu->language = language_ada;
17012 break;
72019c9c
GM
17013 case DW_LANG_Modula2:
17014 cu->language = language_m2;
17015 break;
fe8e67fd
PM
17016 case DW_LANG_Pascal83:
17017 cu->language = language_pascal;
17018 break;
22566fbd
DJ
17019 case DW_LANG_ObjC:
17020 cu->language = language_objc;
17021 break;
c906108c
SS
17022 case DW_LANG_Cobol74:
17023 case DW_LANG_Cobol85:
c906108c 17024 default:
e142c38c 17025 cu->language = language_minimal;
c906108c
SS
17026 break;
17027 }
e142c38c 17028 cu->language_defn = language_def (cu->language);
c906108c
SS
17029}
17030
17031/* Return the named attribute or NULL if not there. */
17032
17033static struct attribute *
e142c38c 17034dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
c906108c 17035{
a48e046c 17036 for (;;)
c906108c 17037 {
a48e046c
TT
17038 unsigned int i;
17039 struct attribute *spec = NULL;
17040
17041 for (i = 0; i < die->num_attrs; ++i)
17042 {
17043 if (die->attrs[i].name == name)
17044 return &die->attrs[i];
17045 if (die->attrs[i].name == DW_AT_specification
17046 || die->attrs[i].name == DW_AT_abstract_origin)
17047 spec = &die->attrs[i];
17048 }
17049
17050 if (!spec)
17051 break;
c906108c 17052
f2f0e013 17053 die = follow_die_ref (die, spec, &cu);
f2f0e013 17054 }
c5aa993b 17055
c906108c
SS
17056 return NULL;
17057}
17058
348e048f
DE
17059/* Return the named attribute or NULL if not there,
17060 but do not follow DW_AT_specification, etc.
17061 This is for use in contexts where we're reading .debug_types dies.
17062 Following DW_AT_specification, DW_AT_abstract_origin will take us
17063 back up the chain, and we want to go down. */
17064
17065static struct attribute *
45e58e77 17066dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
348e048f
DE
17067{
17068 unsigned int i;
17069
17070 for (i = 0; i < die->num_attrs; ++i)
17071 if (die->attrs[i].name == name)
17072 return &die->attrs[i];
17073
17074 return NULL;
17075}
17076
05cf31d1
JB
17077/* Return non-zero iff the attribute NAME is defined for the given DIE,
17078 and holds a non-zero value. This function should only be used for
2dc7f7b3 17079 DW_FORM_flag or DW_FORM_flag_present attributes. */
05cf31d1
JB
17080
17081static int
17082dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
17083{
17084 struct attribute *attr = dwarf2_attr (die, name, cu);
17085
17086 return (attr && DW_UNSND (attr));
17087}
17088
3ca72b44 17089static int
e142c38c 17090die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
3ca72b44 17091{
05cf31d1
JB
17092 /* A DIE is a declaration if it has a DW_AT_declaration attribute
17093 which value is non-zero. However, we have to be careful with
17094 DIEs having a DW_AT_specification attribute, because dwarf2_attr()
17095 (via dwarf2_flag_true_p) follows this attribute. So we may
17096 end up accidently finding a declaration attribute that belongs
17097 to a different DIE referenced by the specification attribute,
17098 even though the given DIE does not have a declaration attribute. */
17099 return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
17100 && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
3ca72b44
AC
17101}
17102
63d06c5c 17103/* Return the die giving the specification for DIE, if there is
f2f0e013 17104 one. *SPEC_CU is the CU containing DIE on input, and the CU
edb3359d
DJ
17105 containing the return value on output. If there is no
17106 specification, but there is an abstract origin, that is
17107 returned. */
63d06c5c
DC
17108
17109static struct die_info *
f2f0e013 17110die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
63d06c5c 17111{
f2f0e013
DJ
17112 struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
17113 *spec_cu);
63d06c5c 17114
edb3359d
DJ
17115 if (spec_attr == NULL)
17116 spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
17117
63d06c5c
DC
17118 if (spec_attr == NULL)
17119 return NULL;
17120 else
f2f0e013 17121 return follow_die_ref (die, spec_attr, spec_cu);
63d06c5c 17122}
c906108c 17123
debd256d 17124/* Free the line_header structure *LH, and any arrays and strings it
ae2de4f8
DE
17125 refers to.
17126 NOTE: This is also used as a "cleanup" function. */
17127
debd256d
JB
17128static void
17129free_line_header (struct line_header *lh)
17130{
17131 if (lh->standard_opcode_lengths)
a8bc7b56 17132 xfree (lh->standard_opcode_lengths);
debd256d
JB
17133
17134 /* Remember that all the lh->file_names[i].name pointers are
17135 pointers into debug_line_buffer, and don't need to be freed. */
17136 if (lh->file_names)
a8bc7b56 17137 xfree (lh->file_names);
debd256d
JB
17138
17139 /* Similarly for the include directory names. */
17140 if (lh->include_dirs)
a8bc7b56 17141 xfree (lh->include_dirs);
debd256d 17142
a8bc7b56 17143 xfree (lh);
debd256d
JB
17144}
17145
527f3840
JK
17146/* Stub for free_line_header to match void * callback types. */
17147
17148static void
17149free_line_header_voidp (void *arg)
17150{
17151 struct line_header *lh = arg;
17152
17153 free_line_header (lh);
17154}
17155
debd256d 17156/* Add an entry to LH's include directory table. */
ae2de4f8 17157
debd256d 17158static void
d521ce57 17159add_include_dir (struct line_header *lh, const char *include_dir)
c906108c 17160{
27e0867f
DE
17161 if (dwarf_line_debug >= 2)
17162 fprintf_unfiltered (gdb_stdlog, "Adding dir %u: %s\n",
17163 lh->num_include_dirs + 1, include_dir);
17164
debd256d
JB
17165 /* Grow the array if necessary. */
17166 if (lh->include_dirs_size == 0)
c5aa993b 17167 {
debd256d
JB
17168 lh->include_dirs_size = 1; /* for testing */
17169 lh->include_dirs = xmalloc (lh->include_dirs_size
17170 * sizeof (*lh->include_dirs));
17171 }
17172 else if (lh->num_include_dirs >= lh->include_dirs_size)
17173 {
17174 lh->include_dirs_size *= 2;
17175 lh->include_dirs = xrealloc (lh->include_dirs,
17176 (lh->include_dirs_size
17177 * sizeof (*lh->include_dirs)));
c5aa993b 17178 }
c906108c 17179
debd256d
JB
17180 lh->include_dirs[lh->num_include_dirs++] = include_dir;
17181}
6e70227d 17182
debd256d 17183/* Add an entry to LH's file name table. */
ae2de4f8 17184
debd256d
JB
17185static void
17186add_file_name (struct line_header *lh,
d521ce57 17187 const char *name,
debd256d
JB
17188 unsigned int dir_index,
17189 unsigned int mod_time,
17190 unsigned int length)
17191{
17192 struct file_entry *fe;
17193
27e0867f
DE
17194 if (dwarf_line_debug >= 2)
17195 fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
17196 lh->num_file_names + 1, name);
17197
debd256d
JB
17198 /* Grow the array if necessary. */
17199 if (lh->file_names_size == 0)
17200 {
17201 lh->file_names_size = 1; /* for testing */
17202 lh->file_names = xmalloc (lh->file_names_size
17203 * sizeof (*lh->file_names));
17204 }
17205 else if (lh->num_file_names >= lh->file_names_size)
17206 {
17207 lh->file_names_size *= 2;
17208 lh->file_names = xrealloc (lh->file_names,
17209 (lh->file_names_size
17210 * sizeof (*lh->file_names)));
17211 }
17212
17213 fe = &lh->file_names[lh->num_file_names++];
17214 fe->name = name;
17215 fe->dir_index = dir_index;
17216 fe->mod_time = mod_time;
17217 fe->length = length;
aaa75496 17218 fe->included_p = 0;
cb1df416 17219 fe->symtab = NULL;
debd256d 17220}
6e70227d 17221
83769d0b 17222/* A convenience function to find the proper .debug_line section for a CU. */
36586728
TT
17223
17224static struct dwarf2_section_info *
17225get_debug_line_section (struct dwarf2_cu *cu)
17226{
17227 struct dwarf2_section_info *section;
17228
17229 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
17230 DWO file. */
17231 if (cu->dwo_unit && cu->per_cu->is_debug_types)
17232 section = &cu->dwo_unit->dwo_file->sections.line;
17233 else if (cu->per_cu->is_dwz)
17234 {
17235 struct dwz_file *dwz = dwarf2_get_dwz_file ();
17236
17237 section = &dwz->line;
17238 }
17239 else
17240 section = &dwarf2_per_objfile->line;
17241
17242 return section;
17243}
17244
debd256d 17245/* Read the statement program header starting at OFFSET in
3019eac3 17246 .debug_line, or .debug_line.dwo. Return a pointer
6502dd73 17247 to a struct line_header, allocated using xmalloc.
cd366ee8
DE
17248 Returns NULL if there is a problem reading the header, e.g., if it
17249 has a version we don't understand.
debd256d
JB
17250
17251 NOTE: the strings in the include directory and file name tables of
3019eac3
DE
17252 the returned object point into the dwarf line section buffer,
17253 and must not be freed. */
ae2de4f8 17254
debd256d 17255static struct line_header *
3019eac3 17256dwarf_decode_line_header (unsigned int offset, struct dwarf2_cu *cu)
debd256d
JB
17257{
17258 struct cleanup *back_to;
17259 struct line_header *lh;
d521ce57 17260 const gdb_byte *line_ptr;
c764a876 17261 unsigned int bytes_read, offset_size;
debd256d 17262 int i;
d521ce57 17263 const char *cur_dir, *cur_file;
3019eac3
DE
17264 struct dwarf2_section_info *section;
17265 bfd *abfd;
17266
36586728 17267 section = get_debug_line_section (cu);
3019eac3
DE
17268 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
17269 if (section->buffer == NULL)
debd256d 17270 {
3019eac3
DE
17271 if (cu->dwo_unit && cu->per_cu->is_debug_types)
17272 complaint (&symfile_complaints, _("missing .debug_line.dwo section"));
17273 else
17274 complaint (&symfile_complaints, _("missing .debug_line section"));
debd256d
JB
17275 return 0;
17276 }
17277
fceca515
DE
17278 /* We can't do this until we know the section is non-empty.
17279 Only then do we know we have such a section. */
a32a8923 17280 abfd = get_section_bfd_owner (section);
fceca515 17281
a738430d
MK
17282 /* Make sure that at least there's room for the total_length field.
17283 That could be 12 bytes long, but we're just going to fudge that. */
3019eac3 17284 if (offset + 4 >= section->size)
debd256d 17285 {
4d3c2250 17286 dwarf2_statement_list_fits_in_line_number_section_complaint ();
debd256d
JB
17287 return 0;
17288 }
17289
17290 lh = xmalloc (sizeof (*lh));
17291 memset (lh, 0, sizeof (*lh));
17292 back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
17293 (void *) lh);
17294
527f3840
JK
17295 lh->offset.sect_off = offset;
17296 lh->offset_in_dwz = cu->per_cu->is_dwz;
17297
3019eac3 17298 line_ptr = section->buffer + offset;
debd256d 17299
a738430d 17300 /* Read in the header. */
6e70227d 17301 lh->total_length =
c764a876
DE
17302 read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
17303 &bytes_read, &offset_size);
debd256d 17304 line_ptr += bytes_read;
3019eac3 17305 if (line_ptr + lh->total_length > (section->buffer + section->size))
debd256d 17306 {
4d3c2250 17307 dwarf2_statement_list_fits_in_line_number_section_complaint ();
2f324bf6 17308 do_cleanups (back_to);
debd256d
JB
17309 return 0;
17310 }
17311 lh->statement_program_end = line_ptr + lh->total_length;
17312 lh->version = read_2_bytes (abfd, line_ptr);
17313 line_ptr += 2;
cd366ee8
DE
17314 if (lh->version > 4)
17315 {
17316 /* This is a version we don't understand. The format could have
17317 changed in ways we don't handle properly so just punt. */
17318 complaint (&symfile_complaints,
17319 _("unsupported version in .debug_line section"));
17320 return NULL;
17321 }
c764a876
DE
17322 lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
17323 line_ptr += offset_size;
debd256d
JB
17324 lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
17325 line_ptr += 1;
2dc7f7b3
TT
17326 if (lh->version >= 4)
17327 {
17328 lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
17329 line_ptr += 1;
17330 }
17331 else
17332 lh->maximum_ops_per_instruction = 1;
17333
17334 if (lh->maximum_ops_per_instruction == 0)
17335 {
17336 lh->maximum_ops_per_instruction = 1;
17337 complaint (&symfile_complaints,
3e43a32a
MS
17338 _("invalid maximum_ops_per_instruction "
17339 "in `.debug_line' section"));
2dc7f7b3
TT
17340 }
17341
debd256d
JB
17342 lh->default_is_stmt = read_1_byte (abfd, line_ptr);
17343 line_ptr += 1;
17344 lh->line_base = read_1_signed_byte (abfd, line_ptr);
17345 line_ptr += 1;
17346 lh->line_range = read_1_byte (abfd, line_ptr);
17347 line_ptr += 1;
17348 lh->opcode_base = read_1_byte (abfd, line_ptr);
17349 line_ptr += 1;
17350 lh->standard_opcode_lengths
fe1b8b76 17351 = xmalloc (lh->opcode_base * sizeof (lh->standard_opcode_lengths[0]));
debd256d
JB
17352
17353 lh->standard_opcode_lengths[0] = 1; /* This should never be used anyway. */
17354 for (i = 1; i < lh->opcode_base; ++i)
17355 {
17356 lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
17357 line_ptr += 1;
17358 }
17359
a738430d 17360 /* Read directory table. */
9b1c24c8 17361 while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
debd256d
JB
17362 {
17363 line_ptr += bytes_read;
17364 add_include_dir (lh, cur_dir);
17365 }
17366 line_ptr += bytes_read;
17367
a738430d 17368 /* Read file name table. */
9b1c24c8 17369 while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
debd256d
JB
17370 {
17371 unsigned int dir_index, mod_time, length;
17372
17373 line_ptr += bytes_read;
17374 dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17375 line_ptr += bytes_read;
17376 mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17377 line_ptr += bytes_read;
17378 length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17379 line_ptr += bytes_read;
17380
17381 add_file_name (lh, cur_file, dir_index, mod_time, length);
17382 }
17383 line_ptr += bytes_read;
6e70227d 17384 lh->statement_program_start = line_ptr;
debd256d 17385
3019eac3 17386 if (line_ptr > (section->buffer + section->size))
4d3c2250 17387 complaint (&symfile_complaints,
3e43a32a
MS
17388 _("line number info header doesn't "
17389 "fit in `.debug_line' section"));
debd256d
JB
17390
17391 discard_cleanups (back_to);
17392 return lh;
17393}
c906108c 17394
c6da4cef
DE
17395/* Subroutine of dwarf_decode_lines to simplify it.
17396 Return the file name of the psymtab for included file FILE_INDEX
17397 in line header LH of PST.
17398 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
17399 If space for the result is malloc'd, it will be freed by a cleanup.
1ed59174
JK
17400 Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.
17401
17402 The function creates dangling cleanup registration. */
c6da4cef 17403
d521ce57 17404static const char *
c6da4cef
DE
17405psymtab_include_file_name (const struct line_header *lh, int file_index,
17406 const struct partial_symtab *pst,
17407 const char *comp_dir)
17408{
17409 const struct file_entry fe = lh->file_names [file_index];
d521ce57
TT
17410 const char *include_name = fe.name;
17411 const char *include_name_to_compare = include_name;
17412 const char *dir_name = NULL;
72b9f47f
TT
17413 const char *pst_filename;
17414 char *copied_name = NULL;
c6da4cef
DE
17415 int file_is_pst;
17416
afa6c9ab 17417 if (fe.dir_index && lh->include_dirs != NULL)
c6da4cef
DE
17418 dir_name = lh->include_dirs[fe.dir_index - 1];
17419
17420 if (!IS_ABSOLUTE_PATH (include_name)
17421 && (dir_name != NULL || comp_dir != NULL))
17422 {
17423 /* Avoid creating a duplicate psymtab for PST.
17424 We do this by comparing INCLUDE_NAME and PST_FILENAME.
17425 Before we do the comparison, however, we need to account
17426 for DIR_NAME and COMP_DIR.
17427 First prepend dir_name (if non-NULL). If we still don't
17428 have an absolute path prepend comp_dir (if non-NULL).
17429 However, the directory we record in the include-file's
17430 psymtab does not contain COMP_DIR (to match the
17431 corresponding symtab(s)).
17432
17433 Example:
17434
17435 bash$ cd /tmp
17436 bash$ gcc -g ./hello.c
17437 include_name = "hello.c"
17438 dir_name = "."
17439 DW_AT_comp_dir = comp_dir = "/tmp"
5f52445b
YQ
17440 DW_AT_name = "./hello.c"
17441
17442 */
c6da4cef
DE
17443
17444 if (dir_name != NULL)
17445 {
d521ce57
TT
17446 char *tem = concat (dir_name, SLASH_STRING,
17447 include_name, (char *)NULL);
17448
17449 make_cleanup (xfree, tem);
17450 include_name = tem;
c6da4cef 17451 include_name_to_compare = include_name;
c6da4cef
DE
17452 }
17453 if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
17454 {
d521ce57
TT
17455 char *tem = concat (comp_dir, SLASH_STRING,
17456 include_name, (char *)NULL);
17457
17458 make_cleanup (xfree, tem);
17459 include_name_to_compare = tem;
c6da4cef
DE
17460 }
17461 }
17462
17463 pst_filename = pst->filename;
17464 if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
17465 {
72b9f47f
TT
17466 copied_name = concat (pst->dirname, SLASH_STRING,
17467 pst_filename, (char *)NULL);
17468 pst_filename = copied_name;
c6da4cef
DE
17469 }
17470
1e3fad37 17471 file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
c6da4cef 17472
72b9f47f
TT
17473 if (copied_name != NULL)
17474 xfree (copied_name);
c6da4cef
DE
17475
17476 if (file_is_pst)
17477 return NULL;
17478 return include_name;
17479}
17480
d9b3de22
DE
17481/* State machine to track the state of the line number program. */
17482
17483typedef struct
17484{
17485 /* These are part of the standard DWARF line number state machine. */
17486
17487 unsigned char op_index;
17488 unsigned int file;
17489 unsigned int line;
17490 CORE_ADDR address;
17491 int is_stmt;
17492 unsigned int discriminator;
17493
17494 /* Additional bits of state we need to track. */
17495
17496 /* The last file that we called dwarf2_start_subfile for.
17497 This is only used for TLLs. */
17498 unsigned int last_file;
17499 /* The last file a line number was recorded for. */
17500 struct subfile *last_subfile;
17501
17502 /* The function to call to record a line. */
17503 record_line_ftype *record_line;
17504
17505 /* The last line number that was recorded, used to coalesce
17506 consecutive entries for the same line. This can happen, for
17507 example, when discriminators are present. PR 17276. */
17508 unsigned int last_line;
17509 int line_has_non_zero_discriminator;
17510} lnp_state_machine;
17511
17512/* There's a lot of static state to pass to dwarf_record_line.
17513 This keeps it all together. */
17514
17515typedef struct
17516{
17517 /* The gdbarch. */
17518 struct gdbarch *gdbarch;
17519
17520 /* The line number header. */
17521 struct line_header *line_header;
17522
17523 /* Non-zero if we're recording lines.
17524 Otherwise we're building partial symtabs and are just interested in
17525 finding include files mentioned by the line number program. */
17526 int record_lines_p;
17527} lnp_reader_state;
17528
c91513d8
PP
17529/* Ignore this record_line request. */
17530
17531static void
17532noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
17533{
17534 return;
17535}
17536
a05a36a5
DE
17537/* Return non-zero if we should add LINE to the line number table.
17538 LINE is the line to add, LAST_LINE is the last line that was added,
17539 LAST_SUBFILE is the subfile for LAST_LINE.
17540 LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
17541 had a non-zero discriminator.
17542
17543 We have to be careful in the presence of discriminators.
17544 E.g., for this line:
17545
17546 for (i = 0; i < 100000; i++);
17547
17548 clang can emit four line number entries for that one line,
17549 each with a different discriminator.
17550 See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
17551
17552 However, we want gdb to coalesce all four entries into one.
17553 Otherwise the user could stepi into the middle of the line and
17554 gdb would get confused about whether the pc really was in the
17555 middle of the line.
17556
17557 Things are further complicated by the fact that two consecutive
17558 line number entries for the same line is a heuristic used by gcc
17559 to denote the end of the prologue. So we can't just discard duplicate
17560 entries, we have to be selective about it. The heuristic we use is
17561 that we only collapse consecutive entries for the same line if at least
17562 one of those entries has a non-zero discriminator. PR 17276.
17563
17564 Note: Addresses in the line number state machine can never go backwards
17565 within one sequence, thus this coalescing is ok. */
17566
17567static int
17568dwarf_record_line_p (unsigned int line, unsigned int last_line,
17569 int line_has_non_zero_discriminator,
17570 struct subfile *last_subfile)
17571{
17572 if (current_subfile != last_subfile)
17573 return 1;
17574 if (line != last_line)
17575 return 1;
17576 /* Same line for the same file that we've seen already.
17577 As a last check, for pr 17276, only record the line if the line
17578 has never had a non-zero discriminator. */
17579 if (!line_has_non_zero_discriminator)
17580 return 1;
17581 return 0;
17582}
17583
252a6764
DE
17584/* Use P_RECORD_LINE to record line number LINE beginning at address ADDRESS
17585 in the line table of subfile SUBFILE. */
17586
17587static void
d9b3de22
DE
17588dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
17589 unsigned int line, CORE_ADDR address,
17590 record_line_ftype p_record_line)
252a6764
DE
17591{
17592 CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
17593
27e0867f
DE
17594 if (dwarf_line_debug)
17595 {
17596 fprintf_unfiltered (gdb_stdlog,
17597 "Recording line %u, file %s, address %s\n",
17598 line, lbasename (subfile->name),
17599 paddress (gdbarch, address));
17600 }
17601
d5962de5 17602 (*p_record_line) (subfile, line, addr);
252a6764
DE
17603}
17604
17605/* Subroutine of dwarf_decode_lines_1 to simplify it.
17606 Mark the end of a set of line number records.
d9b3de22 17607 The arguments are the same as for dwarf_record_line_1.
252a6764
DE
17608 If SUBFILE is NULL the request is ignored. */
17609
17610static void
17611dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
17612 CORE_ADDR address, record_line_ftype p_record_line)
17613{
27e0867f
DE
17614 if (subfile == NULL)
17615 return;
17616
17617 if (dwarf_line_debug)
17618 {
17619 fprintf_unfiltered (gdb_stdlog,
17620 "Finishing current line, file %s, address %s\n",
17621 lbasename (subfile->name),
17622 paddress (gdbarch, address));
17623 }
17624
d9b3de22
DE
17625 dwarf_record_line_1 (gdbarch, subfile, 0, address, p_record_line);
17626}
17627
17628/* Record the line in STATE.
17629 END_SEQUENCE is non-zero if we're processing the end of a sequence. */
17630
17631static void
17632dwarf_record_line (lnp_reader_state *reader, lnp_state_machine *state,
17633 int end_sequence)
17634{
17635 const struct line_header *lh = reader->line_header;
17636 unsigned int file, line, discriminator;
17637 int is_stmt;
17638
17639 file = state->file;
17640 line = state->line;
17641 is_stmt = state->is_stmt;
17642 discriminator = state->discriminator;
17643
17644 if (dwarf_line_debug)
17645 {
17646 fprintf_unfiltered (gdb_stdlog,
17647 "Processing actual line %u: file %u,"
17648 " address %s, is_stmt %u, discrim %u\n",
17649 line, file,
17650 paddress (reader->gdbarch, state->address),
17651 is_stmt, discriminator);
17652 }
17653
17654 if (file == 0 || file - 1 >= lh->num_file_names)
17655 dwarf2_debug_line_missing_file_complaint ();
17656 /* For now we ignore lines not starting on an instruction boundary.
17657 But not when processing end_sequence for compatibility with the
17658 previous version of the code. */
17659 else if (state->op_index == 0 || end_sequence)
17660 {
17661 lh->file_names[file - 1].included_p = 1;
17662 if (reader->record_lines_p && is_stmt)
17663 {
e815d2d2 17664 if (state->last_subfile != current_subfile || end_sequence)
d9b3de22
DE
17665 {
17666 dwarf_finish_line (reader->gdbarch, state->last_subfile,
17667 state->address, state->record_line);
17668 }
17669
17670 if (!end_sequence)
17671 {
17672 if (dwarf_record_line_p (line, state->last_line,
17673 state->line_has_non_zero_discriminator,
17674 state->last_subfile))
17675 {
17676 dwarf_record_line_1 (reader->gdbarch, current_subfile,
17677 line, state->address,
17678 state->record_line);
17679 }
17680 state->last_subfile = current_subfile;
17681 state->last_line = line;
17682 }
17683 }
17684 }
17685}
17686
17687/* Initialize STATE for the start of a line number program. */
17688
17689static void
17690init_lnp_state_machine (lnp_state_machine *state,
17691 const lnp_reader_state *reader)
17692{
17693 memset (state, 0, sizeof (*state));
17694
17695 /* Just starting, there is no "last file". */
17696 state->last_file = 0;
17697 state->last_subfile = NULL;
17698
17699 state->record_line = record_line;
17700
17701 state->last_line = 0;
17702 state->line_has_non_zero_discriminator = 0;
17703
17704 /* Initialize these according to the DWARF spec. */
17705 state->op_index = 0;
17706 state->file = 1;
17707 state->line = 1;
17708 /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
17709 was a line entry for it so that the backend has a chance to adjust it
17710 and also record it in case it needs it. This is currently used by MIPS
17711 code, cf. `mips_adjust_dwarf2_line'. */
17712 state->address = gdbarch_adjust_dwarf2_line (reader->gdbarch, 0, 0);
17713 state->is_stmt = reader->line_header->default_is_stmt;
17714 state->discriminator = 0;
252a6764
DE
17715}
17716
924c2928
DE
17717/* Check address and if invalid nop-out the rest of the lines in this
17718 sequence. */
17719
17720static void
d9b3de22 17721check_line_address (struct dwarf2_cu *cu, lnp_state_machine *state,
924c2928
DE
17722 const gdb_byte *line_ptr,
17723 CORE_ADDR lowpc, CORE_ADDR address)
17724{
17725 /* If address < lowpc then it's not a usable value, it's outside the
17726 pc range of the CU. However, we restrict the test to only address
17727 values of zero to preserve GDB's previous behaviour which is to
17728 handle the specific case of a function being GC'd by the linker. */
17729
17730 if (address == 0 && address < lowpc)
17731 {
17732 /* This line table is for a function which has been
17733 GCd by the linker. Ignore it. PR gdb/12528 */
17734
17735 struct objfile *objfile = cu->objfile;
17736 long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
17737
17738 complaint (&symfile_complaints,
17739 _(".debug_line address at offset 0x%lx is 0 [in module %s]"),
17740 line_offset, objfile_name (objfile));
d9b3de22
DE
17741 state->record_line = noop_record_line;
17742 /* Note: sm.record_line is left as noop_record_line
924c2928
DE
17743 until we see DW_LNE_end_sequence. */
17744 }
17745}
17746
f3f5162e 17747/* Subroutine of dwarf_decode_lines to simplify it.
d9b3de22
DE
17748 Process the line number information in LH.
17749 If DECODE_FOR_PST_P is non-zero, all we do is process the line number
17750 program in order to set included_p for every referenced header. */
debd256d 17751
c906108c 17752static void
43f3e411
DE
17753dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
17754 const int decode_for_pst_p, CORE_ADDR lowpc)
c906108c 17755{
d521ce57
TT
17756 const gdb_byte *line_ptr, *extended_end;
17757 const gdb_byte *line_end;
a8c50c1f 17758 unsigned int bytes_read, extended_len;
699ca60a 17759 unsigned char op_code, extended_op;
e142c38c
DJ
17760 CORE_ADDR baseaddr;
17761 struct objfile *objfile = cu->objfile;
f3f5162e 17762 bfd *abfd = objfile->obfd;
fbf65064 17763 struct gdbarch *gdbarch = get_objfile_arch (objfile);
d9b3de22
DE
17764 /* Non-zero if we're recording line info (as opposed to building partial
17765 symtabs). */
17766 int record_lines_p = !decode_for_pst_p;
17767 /* A collection of things we need to pass to dwarf_record_line. */
17768 lnp_reader_state reader_state;
e142c38c
DJ
17769
17770 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 17771
debd256d
JB
17772 line_ptr = lh->statement_program_start;
17773 line_end = lh->statement_program_end;
c906108c 17774
d9b3de22
DE
17775 reader_state.gdbarch = gdbarch;
17776 reader_state.line_header = lh;
17777 reader_state.record_lines_p = record_lines_p;
17778
c906108c
SS
17779 /* Read the statement sequences until there's nothing left. */
17780 while (line_ptr < line_end)
17781 {
d9b3de22
DE
17782 /* The DWARF line number program state machine. */
17783 lnp_state_machine state_machine;
c906108c 17784 int end_sequence = 0;
d9b3de22
DE
17785
17786 /* Reset the state machine at the start of each sequence. */
17787 init_lnp_state_machine (&state_machine, &reader_state);
17788
17789 if (record_lines_p && lh->num_file_names >= state_machine.file)
c906108c 17790 {
aaa75496 17791 /* Start a subfile for the current file of the state machine. */
debd256d
JB
17792 /* lh->include_dirs and lh->file_names are 0-based, but the
17793 directory and file name numbers in the statement program
17794 are 1-based. */
d9b3de22 17795 struct file_entry *fe = &lh->file_names[state_machine.file - 1];
d521ce57 17796 const char *dir = NULL;
a738430d 17797
afa6c9ab 17798 if (fe->dir_index && lh->include_dirs != NULL)
debd256d 17799 dir = lh->include_dirs[fe->dir_index - 1];
4f1520fb 17800
4d663531 17801 dwarf2_start_subfile (fe->name, dir);
c906108c
SS
17802 }
17803
a738430d 17804 /* Decode the table. */
d9b3de22 17805 while (line_ptr < line_end && !end_sequence)
c906108c
SS
17806 {
17807 op_code = read_1_byte (abfd, line_ptr);
17808 line_ptr += 1;
9aa1fe7e 17809
debd256d 17810 if (op_code >= lh->opcode_base)
6e70227d 17811 {
8e07a239 17812 /* Special opcode. */
699ca60a 17813 unsigned char adj_opcode;
3e29f34a 17814 CORE_ADDR addr_adj;
a05a36a5 17815 int line_delta;
8e07a239 17816
debd256d 17817 adj_opcode = op_code - lh->opcode_base;
d9b3de22
DE
17818 addr_adj = (((state_machine.op_index
17819 + (adj_opcode / lh->line_range))
2dc7f7b3
TT
17820 / lh->maximum_ops_per_instruction)
17821 * lh->minimum_instruction_length);
d9b3de22
DE
17822 state_machine.address
17823 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17824 state_machine.op_index = ((state_machine.op_index
17825 + (adj_opcode / lh->line_range))
17826 % lh->maximum_ops_per_instruction);
a05a36a5 17827 line_delta = lh->line_base + (adj_opcode % lh->line_range);
d9b3de22 17828 state_machine.line += line_delta;
a05a36a5 17829 if (line_delta != 0)
d9b3de22
DE
17830 state_machine.line_has_non_zero_discriminator
17831 = state_machine.discriminator != 0;
17832
17833 dwarf_record_line (&reader_state, &state_machine, 0);
17834 state_machine.discriminator = 0;
9aa1fe7e
GK
17835 }
17836 else switch (op_code)
c906108c
SS
17837 {
17838 case DW_LNS_extended_op:
3e43a32a
MS
17839 extended_len = read_unsigned_leb128 (abfd, line_ptr,
17840 &bytes_read);
473b7be6 17841 line_ptr += bytes_read;
a8c50c1f 17842 extended_end = line_ptr + extended_len;
c906108c
SS
17843 extended_op = read_1_byte (abfd, line_ptr);
17844 line_ptr += 1;
17845 switch (extended_op)
17846 {
17847 case DW_LNE_end_sequence:
d9b3de22 17848 state_machine.record_line = record_line;
c906108c 17849 end_sequence = 1;
c906108c
SS
17850 break;
17851 case DW_LNE_set_address:
d9b3de22
DE
17852 {
17853 CORE_ADDR address
17854 = read_address (abfd, line_ptr, cu, &bytes_read);
17855
17856 line_ptr += bytes_read;
17857 check_line_address (cu, &state_machine, line_ptr,
17858 lowpc, address);
17859 state_machine.op_index = 0;
17860 address += baseaddr;
17861 state_machine.address
17862 = gdbarch_adjust_dwarf2_line (gdbarch, address, 0);
17863 }
c906108c
SS
17864 break;
17865 case DW_LNE_define_file:
debd256d 17866 {
d521ce57 17867 const char *cur_file;
debd256d 17868 unsigned int dir_index, mod_time, length;
6e70227d 17869
3e43a32a
MS
17870 cur_file = read_direct_string (abfd, line_ptr,
17871 &bytes_read);
debd256d
JB
17872 line_ptr += bytes_read;
17873 dir_index =
17874 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17875 line_ptr += bytes_read;
17876 mod_time =
17877 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17878 line_ptr += bytes_read;
17879 length =
17880 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17881 line_ptr += bytes_read;
17882 add_file_name (lh, cur_file, dir_index, mod_time, length);
17883 }
c906108c 17884 break;
d0c6ba3d
CC
17885 case DW_LNE_set_discriminator:
17886 /* The discriminator is not interesting to the debugger;
a05a36a5
DE
17887 just ignore it. We still need to check its value though:
17888 if there are consecutive entries for the same
17889 (non-prologue) line we want to coalesce them.
17890 PR 17276. */
d9b3de22
DE
17891 state_machine.discriminator
17892 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17893 state_machine.line_has_non_zero_discriminator
17894 |= state_machine.discriminator != 0;
a05a36a5 17895 line_ptr += bytes_read;
d0c6ba3d 17896 break;
c906108c 17897 default:
4d3c2250 17898 complaint (&symfile_complaints,
e2e0b3e5 17899 _("mangled .debug_line section"));
debd256d 17900 return;
c906108c 17901 }
a8c50c1f
DJ
17902 /* Make sure that we parsed the extended op correctly. If e.g.
17903 we expected a different address size than the producer used,
17904 we may have read the wrong number of bytes. */
17905 if (line_ptr != extended_end)
17906 {
17907 complaint (&symfile_complaints,
17908 _("mangled .debug_line section"));
17909 return;
17910 }
c906108c
SS
17911 break;
17912 case DW_LNS_copy:
d9b3de22
DE
17913 dwarf_record_line (&reader_state, &state_machine, 0);
17914 state_machine.discriminator = 0;
c906108c
SS
17915 break;
17916 case DW_LNS_advance_pc:
2dc7f7b3
TT
17917 {
17918 CORE_ADDR adjust
17919 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
3e29f34a 17920 CORE_ADDR addr_adj;
2dc7f7b3 17921
d9b3de22 17922 addr_adj = (((state_machine.op_index + adjust)
2dc7f7b3
TT
17923 / lh->maximum_ops_per_instruction)
17924 * lh->minimum_instruction_length);
d9b3de22
DE
17925 state_machine.address
17926 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17927 state_machine.op_index = ((state_machine.op_index + adjust)
17928 % lh->maximum_ops_per_instruction);
2dc7f7b3
TT
17929 line_ptr += bytes_read;
17930 }
c906108c
SS
17931 break;
17932 case DW_LNS_advance_line:
a05a36a5
DE
17933 {
17934 int line_delta
17935 = read_signed_leb128 (abfd, line_ptr, &bytes_read);
17936
d9b3de22 17937 state_machine.line += line_delta;
a05a36a5 17938 if (line_delta != 0)
d9b3de22
DE
17939 state_machine.line_has_non_zero_discriminator
17940 = state_machine.discriminator != 0;
a05a36a5
DE
17941 line_ptr += bytes_read;
17942 }
c906108c
SS
17943 break;
17944 case DW_LNS_set_file:
d9b3de22
DE
17945 {
17946 /* The arrays lh->include_dirs and lh->file_names are
17947 0-based, but the directory and file name numbers in
17948 the statement program are 1-based. */
17949 struct file_entry *fe;
17950 const char *dir = NULL;
17951
17952 state_machine.file = read_unsigned_leb128 (abfd, line_ptr,
17953 &bytes_read);
17954 line_ptr += bytes_read;
17955 if (state_machine.file == 0
17956 || state_machine.file - 1 >= lh->num_file_names)
17957 dwarf2_debug_line_missing_file_complaint ();
17958 else
17959 {
17960 fe = &lh->file_names[state_machine.file - 1];
17961 if (fe->dir_index && lh->include_dirs != NULL)
17962 dir = lh->include_dirs[fe->dir_index - 1];
17963 if (record_lines_p)
17964 {
17965 state_machine.last_subfile = current_subfile;
17966 state_machine.line_has_non_zero_discriminator
17967 = state_machine.discriminator != 0;
17968 dwarf2_start_subfile (fe->name, dir);
17969 }
17970 }
17971 }
c906108c
SS
17972 break;
17973 case DW_LNS_set_column:
0ad93d4f 17974 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
c906108c
SS
17975 line_ptr += bytes_read;
17976 break;
17977 case DW_LNS_negate_stmt:
d9b3de22 17978 state_machine.is_stmt = (!state_machine.is_stmt);
c906108c
SS
17979 break;
17980 case DW_LNS_set_basic_block:
c906108c 17981 break;
c2c6d25f
JM
17982 /* Add to the address register of the state machine the
17983 address increment value corresponding to special opcode
a738430d
MK
17984 255. I.e., this value is scaled by the minimum
17985 instruction length since special opcode 255 would have
b021a221 17986 scaled the increment. */
c906108c 17987 case DW_LNS_const_add_pc:
2dc7f7b3
TT
17988 {
17989 CORE_ADDR adjust = (255 - lh->opcode_base) / lh->line_range;
3e29f34a 17990 CORE_ADDR addr_adj;
2dc7f7b3 17991
d9b3de22 17992 addr_adj = (((state_machine.op_index + adjust)
2dc7f7b3
TT
17993 / lh->maximum_ops_per_instruction)
17994 * lh->minimum_instruction_length);
d9b3de22
DE
17995 state_machine.address
17996 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17997 state_machine.op_index = ((state_machine.op_index + adjust)
17998 % lh->maximum_ops_per_instruction);
2dc7f7b3 17999 }
c906108c
SS
18000 break;
18001 case DW_LNS_fixed_advance_pc:
3e29f34a
MR
18002 {
18003 CORE_ADDR addr_adj;
18004
18005 addr_adj = read_2_bytes (abfd, line_ptr);
d9b3de22
DE
18006 state_machine.address
18007 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
18008 state_machine.op_index = 0;
3e29f34a
MR
18009 line_ptr += 2;
18010 }
c906108c 18011 break;
9aa1fe7e 18012 default:
a738430d
MK
18013 {
18014 /* Unknown standard opcode, ignore it. */
9aa1fe7e 18015 int i;
a738430d 18016
debd256d 18017 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
9aa1fe7e
GK
18018 {
18019 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
18020 line_ptr += bytes_read;
18021 }
18022 }
c906108c
SS
18023 }
18024 }
d9b3de22
DE
18025
18026 if (!end_sequence)
18027 dwarf2_debug_line_missing_end_sequence_complaint ();
18028
18029 /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
18030 in which case we still finish recording the last line). */
18031 dwarf_record_line (&reader_state, &state_machine, 1);
c906108c 18032 }
f3f5162e
DE
18033}
18034
18035/* Decode the Line Number Program (LNP) for the given line_header
18036 structure and CU. The actual information extracted and the type
18037 of structures created from the LNP depends on the value of PST.
18038
18039 1. If PST is NULL, then this procedure uses the data from the program
18040 to create all necessary symbol tables, and their linetables.
18041
18042 2. If PST is not NULL, this procedure reads the program to determine
18043 the list of files included by the unit represented by PST, and
18044 builds all the associated partial symbol tables.
18045
18046 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
18047 It is used for relative paths in the line table.
18048 NOTE: When processing partial symtabs (pst != NULL),
18049 comp_dir == pst->dirname.
18050
18051 NOTE: It is important that psymtabs have the same file name (via strcmp)
18052 as the corresponding symtab. Since COMP_DIR is not used in the name of the
18053 symtab we don't use it in the name of the psymtabs we create.
18054 E.g. expand_line_sal requires this when finding psymtabs to expand.
c3b7b696
YQ
18055 A good testcase for this is mb-inline.exp.
18056
527f3840
JK
18057 LOWPC is the lowest address in CU (or 0 if not known).
18058
18059 Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
18060 for its PC<->lines mapping information. Otherwise only the filename
18061 table is read in. */
f3f5162e
DE
18062
18063static void
18064dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
c3b7b696 18065 struct dwarf2_cu *cu, struct partial_symtab *pst,
527f3840 18066 CORE_ADDR lowpc, int decode_mapping)
f3f5162e
DE
18067{
18068 struct objfile *objfile = cu->objfile;
18069 const int decode_for_pst_p = (pst != NULL);
f3f5162e 18070
527f3840
JK
18071 if (decode_mapping)
18072 dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
aaa75496
JB
18073
18074 if (decode_for_pst_p)
18075 {
18076 int file_index;
18077
18078 /* Now that we're done scanning the Line Header Program, we can
18079 create the psymtab of each included file. */
18080 for (file_index = 0; file_index < lh->num_file_names; file_index++)
18081 if (lh->file_names[file_index].included_p == 1)
18082 {
d521ce57 18083 const char *include_name =
c6da4cef
DE
18084 psymtab_include_file_name (lh, file_index, pst, comp_dir);
18085 if (include_name != NULL)
aaa75496
JB
18086 dwarf2_create_include_psymtab (include_name, pst, objfile);
18087 }
18088 }
cb1df416
DJ
18089 else
18090 {
18091 /* Make sure a symtab is created for every file, even files
18092 which contain only variables (i.e. no code with associated
18093 line numbers). */
43f3e411 18094 struct compunit_symtab *cust = buildsym_compunit_symtab ();
cb1df416 18095 int i;
cb1df416
DJ
18096
18097 for (i = 0; i < lh->num_file_names; i++)
18098 {
d521ce57 18099 const char *dir = NULL;
f3f5162e 18100 struct file_entry *fe;
9a619af0 18101
cb1df416 18102 fe = &lh->file_names[i];
afa6c9ab 18103 if (fe->dir_index && lh->include_dirs != NULL)
cb1df416 18104 dir = lh->include_dirs[fe->dir_index - 1];
4d663531 18105 dwarf2_start_subfile (fe->name, dir);
cb1df416 18106
cb1df416 18107 if (current_subfile->symtab == NULL)
43f3e411
DE
18108 {
18109 current_subfile->symtab
18110 = allocate_symtab (cust, current_subfile->name);
18111 }
cb1df416
DJ
18112 fe->symtab = current_subfile->symtab;
18113 }
18114 }
c906108c
SS
18115}
18116
18117/* Start a subfile for DWARF. FILENAME is the name of the file and
18118 DIRNAME the name of the source directory which contains FILENAME
4d663531 18119 or NULL if not known.
c906108c
SS
18120 This routine tries to keep line numbers from identical absolute and
18121 relative file names in a common subfile.
18122
18123 Using the `list' example from the GDB testsuite, which resides in
18124 /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
18125 of /srcdir/list0.c yields the following debugging information for list0.c:
18126
c5aa993b 18127 DW_AT_name: /srcdir/list0.c
4d663531 18128 DW_AT_comp_dir: /compdir
357e46e7 18129 files.files[0].name: list0.h
c5aa993b 18130 files.files[0].dir: /srcdir
357e46e7 18131 files.files[1].name: list0.c
c5aa993b 18132 files.files[1].dir: /srcdir
c906108c
SS
18133
18134 The line number information for list0.c has to end up in a single
4f1520fb
FR
18135 subfile, so that `break /srcdir/list0.c:1' works as expected.
18136 start_subfile will ensure that this happens provided that we pass the
18137 concatenation of files.files[1].dir and files.files[1].name as the
18138 subfile's name. */
c906108c
SS
18139
18140static void
4d663531 18141dwarf2_start_subfile (const char *filename, const char *dirname)
c906108c 18142{
d521ce57 18143 char *copy = NULL;
4f1520fb 18144
4d663531 18145 /* In order not to lose the line information directory,
4f1520fb
FR
18146 we concatenate it to the filename when it makes sense.
18147 Note that the Dwarf3 standard says (speaking of filenames in line
18148 information): ``The directory index is ignored for file names
18149 that represent full path names''. Thus ignoring dirname in the
18150 `else' branch below isn't an issue. */
c906108c 18151
d5166ae1 18152 if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
d521ce57
TT
18153 {
18154 copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
18155 filename = copy;
18156 }
c906108c 18157
4d663531 18158 start_subfile (filename);
4f1520fb 18159
d521ce57
TT
18160 if (copy != NULL)
18161 xfree (copy);
c906108c
SS
18162}
18163
f4dc4d17
DE
18164/* Start a symtab for DWARF.
18165 NAME, COMP_DIR, LOW_PC are passed to start_symtab. */
18166
43f3e411 18167static struct compunit_symtab *
f4dc4d17 18168dwarf2_start_symtab (struct dwarf2_cu *cu,
15d034d0 18169 const char *name, const char *comp_dir, CORE_ADDR low_pc)
f4dc4d17 18170{
43f3e411
DE
18171 struct compunit_symtab *cust
18172 = start_symtab (cu->objfile, name, comp_dir, low_pc);
18173
f4dc4d17
DE
18174 record_debugformat ("DWARF 2");
18175 record_producer (cu->producer);
18176
18177 /* We assume that we're processing GCC output. */
18178 processing_gcc_compilation = 2;
18179
4d4ec4e5 18180 cu->processing_has_namespace_info = 0;
43f3e411
DE
18181
18182 return cust;
f4dc4d17
DE
18183}
18184
4c2df51b
DJ
18185static void
18186var_decode_location (struct attribute *attr, struct symbol *sym,
e7c27a73 18187 struct dwarf2_cu *cu)
4c2df51b 18188{
e7c27a73
DJ
18189 struct objfile *objfile = cu->objfile;
18190 struct comp_unit_head *cu_header = &cu->header;
18191
4c2df51b
DJ
18192 /* NOTE drow/2003-01-30: There used to be a comment and some special
18193 code here to turn a symbol with DW_AT_external and a
18194 SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol. This was
18195 necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
18196 with some versions of binutils) where shared libraries could have
18197 relocations against symbols in their debug information - the
18198 minimal symbol would have the right address, but the debug info
18199 would not. It's no longer necessary, because we will explicitly
18200 apply relocations when we read in the debug information now. */
18201
18202 /* A DW_AT_location attribute with no contents indicates that a
18203 variable has been optimized away. */
18204 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
18205 {
f1e6e072 18206 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
4c2df51b
DJ
18207 return;
18208 }
18209
18210 /* Handle one degenerate form of location expression specially, to
18211 preserve GDB's previous behavior when section offsets are
3019eac3
DE
18212 specified. If this is just a DW_OP_addr or DW_OP_GNU_addr_index
18213 then mark this symbol as LOC_STATIC. */
4c2df51b
DJ
18214
18215 if (attr_form_is_block (attr)
3019eac3
DE
18216 && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
18217 && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
18218 || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
18219 && (DW_BLOCK (attr)->size
18220 == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
4c2df51b 18221 {
891d2f0b 18222 unsigned int dummy;
4c2df51b 18223
3019eac3
DE
18224 if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
18225 SYMBOL_VALUE_ADDRESS (sym) =
18226 read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
18227 else
18228 SYMBOL_VALUE_ADDRESS (sym) =
18229 read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
f1e6e072 18230 SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
4c2df51b
DJ
18231 fixup_symbol_section (sym, objfile);
18232 SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
18233 SYMBOL_SECTION (sym));
4c2df51b
DJ
18234 return;
18235 }
18236
18237 /* NOTE drow/2002-01-30: It might be worthwhile to have a static
18238 expression evaluator, and use LOC_COMPUTED only when necessary
18239 (i.e. when the value of a register or memory location is
18240 referenced, or a thread-local block, etc.). Then again, it might
18241 not be worthwhile. I'm assuming that it isn't unless performance
18242 or memory numbers show me otherwise. */
18243
f1e6e072 18244 dwarf2_symbol_mark_computed (attr, sym, cu, 0);
8be455d7 18245
f1e6e072 18246 if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
8be455d7 18247 cu->has_loclist = 1;
4c2df51b
DJ
18248}
18249
c906108c
SS
18250/* Given a pointer to a DWARF information entry, figure out if we need
18251 to make a symbol table entry for it, and if so, create a new entry
18252 and return a pointer to it.
18253 If TYPE is NULL, determine symbol type from the die, otherwise
34eaf542
TT
18254 used the passed type.
18255 If SPACE is not NULL, use it to hold the new symbol. If it is
18256 NULL, allocate a new symbol on the objfile's obstack. */
c906108c
SS
18257
18258static struct symbol *
34eaf542
TT
18259new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
18260 struct symbol *space)
c906108c 18261{
e7c27a73 18262 struct objfile *objfile = cu->objfile;
3e29f34a 18263 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c 18264 struct symbol *sym = NULL;
15d034d0 18265 const char *name;
c906108c
SS
18266 struct attribute *attr = NULL;
18267 struct attribute *attr2 = NULL;
e142c38c 18268 CORE_ADDR baseaddr;
e37fd15a
SW
18269 struct pending **list_to_add = NULL;
18270
edb3359d 18271 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
e142c38c
DJ
18272
18273 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 18274
94af9270 18275 name = dwarf2_name (die, cu);
c906108c
SS
18276 if (name)
18277 {
94af9270 18278 const char *linkagename;
34eaf542 18279 int suppress_add = 0;
94af9270 18280
34eaf542
TT
18281 if (space)
18282 sym = space;
18283 else
e623cf5d 18284 sym = allocate_symbol (objfile);
c906108c 18285 OBJSTAT (objfile, n_syms++);
2de7ced7
DJ
18286
18287 /* Cache this symbol's name and the name's demangled form (if any). */
f85f34ed 18288 SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
94af9270
KS
18289 linkagename = dwarf2_physname (name, die, cu);
18290 SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
c906108c 18291
f55ee35c
JK
18292 /* Fortran does not have mangling standard and the mangling does differ
18293 between gfortran, iFort etc. */
18294 if (cu->language == language_fortran
b250c185 18295 && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
29df156d 18296 symbol_set_demangled_name (&(sym->ginfo),
cfc594ee 18297 dwarf2_full_name (name, die, cu),
29df156d 18298 NULL);
f55ee35c 18299
c906108c 18300 /* Default assumptions.
c5aa993b 18301 Use the passed type or decode it from the die. */
176620f1 18302 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
f1e6e072 18303 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
c906108c
SS
18304 if (type != NULL)
18305 SYMBOL_TYPE (sym) = type;
18306 else
e7c27a73 18307 SYMBOL_TYPE (sym) = die_type (die, cu);
edb3359d
DJ
18308 attr = dwarf2_attr (die,
18309 inlined_func ? DW_AT_call_line : DW_AT_decl_line,
18310 cu);
c906108c
SS
18311 if (attr)
18312 {
18313 SYMBOL_LINE (sym) = DW_UNSND (attr);
18314 }
cb1df416 18315
edb3359d
DJ
18316 attr = dwarf2_attr (die,
18317 inlined_func ? DW_AT_call_file : DW_AT_decl_file,
18318 cu);
cb1df416
DJ
18319 if (attr)
18320 {
18321 int file_index = DW_UNSND (attr);
9a619af0 18322
cb1df416
DJ
18323 if (cu->line_header == NULL
18324 || file_index > cu->line_header->num_file_names)
18325 complaint (&symfile_complaints,
18326 _("file index out of range"));
1c3d648d 18327 else if (file_index > 0)
cb1df416
DJ
18328 {
18329 struct file_entry *fe;
9a619af0 18330
cb1df416 18331 fe = &cu->line_header->file_names[file_index - 1];
08be3fe3 18332 symbol_set_symtab (sym, fe->symtab);
cb1df416
DJ
18333 }
18334 }
18335
c906108c
SS
18336 switch (die->tag)
18337 {
18338 case DW_TAG_label:
e142c38c 18339 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
c906108c 18340 if (attr)
3e29f34a
MR
18341 {
18342 CORE_ADDR addr;
18343
18344 addr = attr_value_as_address (attr);
18345 addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
18346 SYMBOL_VALUE_ADDRESS (sym) = addr;
18347 }
0f5238ed
TT
18348 SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
18349 SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
f1e6e072 18350 SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
0f5238ed 18351 add_symbol_to_list (sym, cu->list_in_scope);
c906108c
SS
18352 break;
18353 case DW_TAG_subprogram:
18354 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18355 finish_block. */
f1e6e072 18356 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
e142c38c 18357 attr2 = dwarf2_attr (die, DW_AT_external, cu);
2cfa0c8d
JB
18358 if ((attr2 && (DW_UNSND (attr2) != 0))
18359 || cu->language == language_ada)
c906108c 18360 {
2cfa0c8d
JB
18361 /* Subprograms marked external are stored as a global symbol.
18362 Ada subprograms, whether marked external or not, are always
18363 stored as a global symbol, because we want to be able to
18364 access them globally. For instance, we want to be able
18365 to break on a nested subprogram without having to
18366 specify the context. */
e37fd15a 18367 list_to_add = &global_symbols;
c906108c
SS
18368 }
18369 else
18370 {
e37fd15a 18371 list_to_add = cu->list_in_scope;
c906108c
SS
18372 }
18373 break;
edb3359d
DJ
18374 case DW_TAG_inlined_subroutine:
18375 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18376 finish_block. */
f1e6e072 18377 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
edb3359d 18378 SYMBOL_INLINED (sym) = 1;
481860b3 18379 list_to_add = cu->list_in_scope;
edb3359d 18380 break;
34eaf542
TT
18381 case DW_TAG_template_value_param:
18382 suppress_add = 1;
18383 /* Fall through. */
72929c62 18384 case DW_TAG_constant:
c906108c 18385 case DW_TAG_variable:
254e6b9e 18386 case DW_TAG_member:
0963b4bd
MS
18387 /* Compilation with minimal debug info may result in
18388 variables with missing type entries. Change the
18389 misleading `void' type to something sensible. */
c906108c 18390 if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
64c50499 18391 SYMBOL_TYPE (sym)
46bf5051 18392 = objfile_type (objfile)->nodebug_data_symbol;
64c50499 18393
e142c38c 18394 attr = dwarf2_attr (die, DW_AT_const_value, cu);
254e6b9e
DE
18395 /* In the case of DW_TAG_member, we should only be called for
18396 static const members. */
18397 if (die->tag == DW_TAG_member)
18398 {
3863f96c
DE
18399 /* dwarf2_add_field uses die_is_declaration,
18400 so we do the same. */
254e6b9e
DE
18401 gdb_assert (die_is_declaration (die, cu));
18402 gdb_assert (attr);
18403 }
c906108c
SS
18404 if (attr)
18405 {
e7c27a73 18406 dwarf2_const_value (attr, sym, cu);
e142c38c 18407 attr2 = dwarf2_attr (die, DW_AT_external, cu);
e37fd15a 18408 if (!suppress_add)
34eaf542
TT
18409 {
18410 if (attr2 && (DW_UNSND (attr2) != 0))
e37fd15a 18411 list_to_add = &global_symbols;
34eaf542 18412 else
e37fd15a 18413 list_to_add = cu->list_in_scope;
34eaf542 18414 }
c906108c
SS
18415 break;
18416 }
e142c38c 18417 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
18418 if (attr)
18419 {
e7c27a73 18420 var_decode_location (attr, sym, cu);
e142c38c 18421 attr2 = dwarf2_attr (die, DW_AT_external, cu);
4357ac6c
TT
18422
18423 /* Fortran explicitly imports any global symbols to the local
18424 scope by DW_TAG_common_block. */
18425 if (cu->language == language_fortran && die->parent
18426 && die->parent->tag == DW_TAG_common_block)
18427 attr2 = NULL;
18428
caac4577
JG
18429 if (SYMBOL_CLASS (sym) == LOC_STATIC
18430 && SYMBOL_VALUE_ADDRESS (sym) == 0
18431 && !dwarf2_per_objfile->has_section_at_zero)
18432 {
18433 /* When a static variable is eliminated by the linker,
18434 the corresponding debug information is not stripped
18435 out, but the variable address is set to null;
18436 do not add such variables into symbol table. */
18437 }
18438 else if (attr2 && (DW_UNSND (attr2) != 0))
1c809c68 18439 {
f55ee35c
JK
18440 /* Workaround gfortran PR debug/40040 - it uses
18441 DW_AT_location for variables in -fPIC libraries which may
18442 get overriden by other libraries/executable and get
18443 a different address. Resolve it by the minimal symbol
18444 which may come from inferior's executable using copy
18445 relocation. Make this workaround only for gfortran as for
18446 other compilers GDB cannot guess the minimal symbol
18447 Fortran mangling kind. */
18448 if (cu->language == language_fortran && die->parent
18449 && die->parent->tag == DW_TAG_module
18450 && cu->producer
61012eef 18451 && startswith (cu->producer, "GNU Fortran "))
f1e6e072 18452 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
f55ee35c 18453
1c809c68
TT
18454 /* A variable with DW_AT_external is never static,
18455 but it may be block-scoped. */
18456 list_to_add = (cu->list_in_scope == &file_symbols
18457 ? &global_symbols : cu->list_in_scope);
1c809c68 18458 }
c906108c 18459 else
e37fd15a 18460 list_to_add = cu->list_in_scope;
c906108c
SS
18461 }
18462 else
18463 {
18464 /* We do not know the address of this symbol.
c5aa993b
JM
18465 If it is an external symbol and we have type information
18466 for it, enter the symbol as a LOC_UNRESOLVED symbol.
18467 The address of the variable will then be determined from
18468 the minimal symbol table whenever the variable is
18469 referenced. */
e142c38c 18470 attr2 = dwarf2_attr (die, DW_AT_external, cu);
0971de02
TT
18471
18472 /* Fortran explicitly imports any global symbols to the local
18473 scope by DW_TAG_common_block. */
18474 if (cu->language == language_fortran && die->parent
18475 && die->parent->tag == DW_TAG_common_block)
18476 {
18477 /* SYMBOL_CLASS doesn't matter here because
18478 read_common_block is going to reset it. */
18479 if (!suppress_add)
18480 list_to_add = cu->list_in_scope;
18481 }
18482 else if (attr2 && (DW_UNSND (attr2) != 0)
18483 && dwarf2_attr (die, DW_AT_type, cu) != NULL)
c906108c 18484 {
0fe7935b
DJ
18485 /* A variable with DW_AT_external is never static, but it
18486 may be block-scoped. */
18487 list_to_add = (cu->list_in_scope == &file_symbols
18488 ? &global_symbols : cu->list_in_scope);
18489
f1e6e072 18490 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
c906108c 18491 }
442ddf59
JK
18492 else if (!die_is_declaration (die, cu))
18493 {
18494 /* Use the default LOC_OPTIMIZED_OUT class. */
18495 gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
e37fd15a
SW
18496 if (!suppress_add)
18497 list_to_add = cu->list_in_scope;
442ddf59 18498 }
c906108c
SS
18499 }
18500 break;
18501 case DW_TAG_formal_parameter:
edb3359d
DJ
18502 /* If we are inside a function, mark this as an argument. If
18503 not, we might be looking at an argument to an inlined function
18504 when we do not have enough information to show inlined frames;
18505 pretend it's a local variable in that case so that the user can
18506 still see it. */
18507 if (context_stack_depth > 0
18508 && context_stack[context_stack_depth - 1].name != NULL)
18509 SYMBOL_IS_ARGUMENT (sym) = 1;
e142c38c 18510 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
18511 if (attr)
18512 {
e7c27a73 18513 var_decode_location (attr, sym, cu);
c906108c 18514 }
e142c38c 18515 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
18516 if (attr)
18517 {
e7c27a73 18518 dwarf2_const_value (attr, sym, cu);
c906108c 18519 }
f346a30d 18520
e37fd15a 18521 list_to_add = cu->list_in_scope;
c906108c
SS
18522 break;
18523 case DW_TAG_unspecified_parameters:
18524 /* From varargs functions; gdb doesn't seem to have any
18525 interest in this information, so just ignore it for now.
18526 (FIXME?) */
18527 break;
34eaf542
TT
18528 case DW_TAG_template_type_param:
18529 suppress_add = 1;
18530 /* Fall through. */
c906108c 18531 case DW_TAG_class_type:
680b30c7 18532 case DW_TAG_interface_type:
c906108c
SS
18533 case DW_TAG_structure_type:
18534 case DW_TAG_union_type:
72019c9c 18535 case DW_TAG_set_type:
c906108c 18536 case DW_TAG_enumeration_type:
f1e6e072 18537 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
176620f1 18538 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
c906108c 18539
63d06c5c 18540 {
987504bb 18541 /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't
63d06c5c
DC
18542 really ever be static objects: otherwise, if you try
18543 to, say, break of a class's method and you're in a file
18544 which doesn't mention that class, it won't work unless
18545 the check for all static symbols in lookup_symbol_aux
18546 saves you. See the OtherFileClass tests in
18547 gdb.c++/namespace.exp. */
18548
e37fd15a 18549 if (!suppress_add)
34eaf542 18550 {
34eaf542
TT
18551 list_to_add = (cu->list_in_scope == &file_symbols
18552 && (cu->language == language_cplus
18553 || cu->language == language_java)
18554 ? &global_symbols : cu->list_in_scope);
63d06c5c 18555
64382290
TT
18556 /* The semantics of C++ state that "struct foo {
18557 ... }" also defines a typedef for "foo". A Java
18558 class declaration also defines a typedef for the
18559 class. */
18560 if (cu->language == language_cplus
18561 || cu->language == language_java
45280282
IB
18562 || cu->language == language_ada
18563 || cu->language == language_d)
64382290
TT
18564 {
18565 /* The symbol's name is already allocated along
18566 with this objfile, so we don't need to
18567 duplicate it for the type. */
18568 if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
18569 TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
18570 }
63d06c5c
DC
18571 }
18572 }
c906108c
SS
18573 break;
18574 case DW_TAG_typedef:
f1e6e072 18575 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
63d06c5c 18576 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e37fd15a 18577 list_to_add = cu->list_in_scope;
63d06c5c 18578 break;
c906108c 18579 case DW_TAG_base_type:
a02abb62 18580 case DW_TAG_subrange_type:
f1e6e072 18581 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
176620f1 18582 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e37fd15a 18583 list_to_add = cu->list_in_scope;
c906108c
SS
18584 break;
18585 case DW_TAG_enumerator:
e142c38c 18586 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
18587 if (attr)
18588 {
e7c27a73 18589 dwarf2_const_value (attr, sym, cu);
c906108c 18590 }
63d06c5c
DC
18591 {
18592 /* NOTE: carlton/2003-11-10: See comment above in the
18593 DW_TAG_class_type, etc. block. */
18594
e142c38c 18595 list_to_add = (cu->list_in_scope == &file_symbols
987504bb
JJ
18596 && (cu->language == language_cplus
18597 || cu->language == language_java)
e142c38c 18598 ? &global_symbols : cu->list_in_scope);
63d06c5c 18599 }
c906108c 18600 break;
74921315 18601 case DW_TAG_imported_declaration:
5c4e30ca 18602 case DW_TAG_namespace:
f1e6e072 18603 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
e37fd15a 18604 list_to_add = &global_symbols;
5c4e30ca 18605 break;
530e8392
KB
18606 case DW_TAG_module:
18607 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18608 SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
18609 list_to_add = &global_symbols;
18610 break;
4357ac6c 18611 case DW_TAG_common_block:
f1e6e072 18612 SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
4357ac6c
TT
18613 SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
18614 add_symbol_to_list (sym, cu->list_in_scope);
18615 break;
c906108c
SS
18616 default:
18617 /* Not a tag we recognize. Hopefully we aren't processing
18618 trash data, but since we must specifically ignore things
18619 we don't recognize, there is nothing else we should do at
0963b4bd 18620 this point. */
e2e0b3e5 18621 complaint (&symfile_complaints, _("unsupported tag: '%s'"),
4d3c2250 18622 dwarf_tag_name (die->tag));
c906108c
SS
18623 break;
18624 }
df8a16a1 18625
e37fd15a
SW
18626 if (suppress_add)
18627 {
18628 sym->hash_next = objfile->template_symbols;
18629 objfile->template_symbols = sym;
18630 list_to_add = NULL;
18631 }
18632
18633 if (list_to_add != NULL)
18634 add_symbol_to_list (sym, list_to_add);
18635
df8a16a1
DJ
18636 /* For the benefit of old versions of GCC, check for anonymous
18637 namespaces based on the demangled name. */
4d4ec4e5 18638 if (!cu->processing_has_namespace_info
94af9270 18639 && cu->language == language_cplus)
a10964d1 18640 cp_scan_for_anonymous_namespaces (sym, objfile);
c906108c
SS
18641 }
18642 return (sym);
18643}
18644
34eaf542
TT
18645/* A wrapper for new_symbol_full that always allocates a new symbol. */
18646
18647static struct symbol *
18648new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
18649{
18650 return new_symbol_full (die, type, cu, NULL);
18651}
18652
98bfdba5
PA
18653/* Given an attr with a DW_FORM_dataN value in host byte order,
18654 zero-extend it as appropriate for the symbol's type. The DWARF
18655 standard (v4) is not entirely clear about the meaning of using
18656 DW_FORM_dataN for a constant with a signed type, where the type is
18657 wider than the data. The conclusion of a discussion on the DWARF
18658 list was that this is unspecified. We choose to always zero-extend
18659 because that is the interpretation long in use by GCC. */
c906108c 18660
98bfdba5 18661static gdb_byte *
ff39bb5e 18662dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
12df843f 18663 struct dwarf2_cu *cu, LONGEST *value, int bits)
c906108c 18664{
e7c27a73 18665 struct objfile *objfile = cu->objfile;
e17a4113
UW
18666 enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
18667 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
98bfdba5
PA
18668 LONGEST l = DW_UNSND (attr);
18669
18670 if (bits < sizeof (*value) * 8)
18671 {
18672 l &= ((LONGEST) 1 << bits) - 1;
18673 *value = l;
18674 }
18675 else if (bits == sizeof (*value) * 8)
18676 *value = l;
18677 else
18678 {
18679 gdb_byte *bytes = obstack_alloc (obstack, bits / 8);
18680 store_unsigned_integer (bytes, bits / 8, byte_order, l);
18681 return bytes;
18682 }
18683
18684 return NULL;
18685}
18686
18687/* Read a constant value from an attribute. Either set *VALUE, or if
18688 the value does not fit in *VALUE, set *BYTES - either already
18689 allocated on the objfile obstack, or newly allocated on OBSTACK,
18690 or, set *BATON, if we translated the constant to a location
18691 expression. */
18692
18693static void
ff39bb5e 18694dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
98bfdba5
PA
18695 const char *name, struct obstack *obstack,
18696 struct dwarf2_cu *cu,
d521ce57 18697 LONGEST *value, const gdb_byte **bytes,
98bfdba5
PA
18698 struct dwarf2_locexpr_baton **baton)
18699{
18700 struct objfile *objfile = cu->objfile;
18701 struct comp_unit_head *cu_header = &cu->header;
c906108c 18702 struct dwarf_block *blk;
98bfdba5
PA
18703 enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
18704 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
18705
18706 *value = 0;
18707 *bytes = NULL;
18708 *baton = NULL;
c906108c
SS
18709
18710 switch (attr->form)
18711 {
18712 case DW_FORM_addr:
3019eac3 18713 case DW_FORM_GNU_addr_index:
ac56253d 18714 {
ac56253d
TT
18715 gdb_byte *data;
18716
98bfdba5
PA
18717 if (TYPE_LENGTH (type) != cu_header->addr_size)
18718 dwarf2_const_value_length_mismatch_complaint (name,
ac56253d 18719 cu_header->addr_size,
98bfdba5 18720 TYPE_LENGTH (type));
ac56253d
TT
18721 /* Symbols of this form are reasonably rare, so we just
18722 piggyback on the existing location code rather than writing
18723 a new implementation of symbol_computed_ops. */
7919a973 18724 *baton = obstack_alloc (obstack, sizeof (struct dwarf2_locexpr_baton));
98bfdba5
PA
18725 (*baton)->per_cu = cu->per_cu;
18726 gdb_assert ((*baton)->per_cu);
ac56253d 18727
98bfdba5 18728 (*baton)->size = 2 + cu_header->addr_size;
7919a973 18729 data = obstack_alloc (obstack, (*baton)->size);
98bfdba5 18730 (*baton)->data = data;
ac56253d
TT
18731
18732 data[0] = DW_OP_addr;
18733 store_unsigned_integer (&data[1], cu_header->addr_size,
18734 byte_order, DW_ADDR (attr));
18735 data[cu_header->addr_size + 1] = DW_OP_stack_value;
ac56253d 18736 }
c906108c 18737 break;
4ac36638 18738 case DW_FORM_string:
93b5768b 18739 case DW_FORM_strp:
3019eac3 18740 case DW_FORM_GNU_str_index:
36586728 18741 case DW_FORM_GNU_strp_alt:
98bfdba5
PA
18742 /* DW_STRING is already allocated on the objfile obstack, point
18743 directly to it. */
d521ce57 18744 *bytes = (const gdb_byte *) DW_STRING (attr);
93b5768b 18745 break;
c906108c
SS
18746 case DW_FORM_block1:
18747 case DW_FORM_block2:
18748 case DW_FORM_block4:
18749 case DW_FORM_block:
2dc7f7b3 18750 case DW_FORM_exprloc:
c906108c 18751 blk = DW_BLOCK (attr);
98bfdba5
PA
18752 if (TYPE_LENGTH (type) != blk->size)
18753 dwarf2_const_value_length_mismatch_complaint (name, blk->size,
18754 TYPE_LENGTH (type));
18755 *bytes = blk->data;
c906108c 18756 break;
2df3850c
JM
18757
18758 /* The DW_AT_const_value attributes are supposed to carry the
18759 symbol's value "represented as it would be on the target
18760 architecture." By the time we get here, it's already been
18761 converted to host endianness, so we just need to sign- or
18762 zero-extend it as appropriate. */
18763 case DW_FORM_data1:
3aef2284 18764 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
2df3850c 18765 break;
c906108c 18766 case DW_FORM_data2:
3aef2284 18767 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
2df3850c 18768 break;
c906108c 18769 case DW_FORM_data4:
3aef2284 18770 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
2df3850c 18771 break;
c906108c 18772 case DW_FORM_data8:
3aef2284 18773 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
2df3850c
JM
18774 break;
18775
c906108c 18776 case DW_FORM_sdata:
98bfdba5 18777 *value = DW_SND (attr);
2df3850c
JM
18778 break;
18779
c906108c 18780 case DW_FORM_udata:
98bfdba5 18781 *value = DW_UNSND (attr);
c906108c 18782 break;
2df3850c 18783
c906108c 18784 default:
4d3c2250 18785 complaint (&symfile_complaints,
e2e0b3e5 18786 _("unsupported const value attribute form: '%s'"),
4d3c2250 18787 dwarf_form_name (attr->form));
98bfdba5 18788 *value = 0;
c906108c
SS
18789 break;
18790 }
18791}
18792
2df3850c 18793
98bfdba5
PA
18794/* Copy constant value from an attribute to a symbol. */
18795
2df3850c 18796static void
ff39bb5e 18797dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
98bfdba5 18798 struct dwarf2_cu *cu)
2df3850c 18799{
98bfdba5
PA
18800 struct objfile *objfile = cu->objfile;
18801 struct comp_unit_head *cu_header = &cu->header;
12df843f 18802 LONGEST value;
d521ce57 18803 const gdb_byte *bytes;
98bfdba5 18804 struct dwarf2_locexpr_baton *baton;
2df3850c 18805
98bfdba5
PA
18806 dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
18807 SYMBOL_PRINT_NAME (sym),
18808 &objfile->objfile_obstack, cu,
18809 &value, &bytes, &baton);
2df3850c 18810
98bfdba5
PA
18811 if (baton != NULL)
18812 {
98bfdba5 18813 SYMBOL_LOCATION_BATON (sym) = baton;
f1e6e072 18814 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
98bfdba5
PA
18815 }
18816 else if (bytes != NULL)
18817 {
18818 SYMBOL_VALUE_BYTES (sym) = bytes;
f1e6e072 18819 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
98bfdba5
PA
18820 }
18821 else
18822 {
18823 SYMBOL_VALUE (sym) = value;
f1e6e072 18824 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
98bfdba5 18825 }
2df3850c
JM
18826}
18827
c906108c
SS
18828/* Return the type of the die in question using its DW_AT_type attribute. */
18829
18830static struct type *
e7c27a73 18831die_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 18832{
c906108c 18833 struct attribute *type_attr;
c906108c 18834
e142c38c 18835 type_attr = dwarf2_attr (die, DW_AT_type, cu);
c906108c
SS
18836 if (!type_attr)
18837 {
18838 /* A missing DW_AT_type represents a void type. */
46bf5051 18839 return objfile_type (cu->objfile)->builtin_void;
c906108c 18840 }
348e048f 18841
673bfd45 18842 return lookup_die_type (die, type_attr, cu);
c906108c
SS
18843}
18844
b4ba55a1
JB
18845/* True iff CU's producer generates GNAT Ada auxiliary information
18846 that allows to find parallel types through that information instead
18847 of having to do expensive parallel lookups by type name. */
18848
18849static int
18850need_gnat_info (struct dwarf2_cu *cu)
18851{
18852 /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
18853 of GNAT produces this auxiliary information, without any indication
18854 that it is produced. Part of enhancing the FSF version of GNAT
18855 to produce that information will be to put in place an indicator
18856 that we can use in order to determine whether the descriptive type
18857 info is available or not. One suggestion that has been made is
18858 to use a new attribute, attached to the CU die. For now, assume
18859 that the descriptive type info is not available. */
18860 return 0;
18861}
18862
b4ba55a1
JB
18863/* Return the auxiliary type of the die in question using its
18864 DW_AT_GNAT_descriptive_type attribute. Returns NULL if the
18865 attribute is not present. */
18866
18867static struct type *
18868die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
18869{
b4ba55a1 18870 struct attribute *type_attr;
b4ba55a1
JB
18871
18872 type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
18873 if (!type_attr)
18874 return NULL;
18875
673bfd45 18876 return lookup_die_type (die, type_attr, cu);
b4ba55a1
JB
18877}
18878
18879/* If DIE has a descriptive_type attribute, then set the TYPE's
18880 descriptive type accordingly. */
18881
18882static void
18883set_descriptive_type (struct type *type, struct die_info *die,
18884 struct dwarf2_cu *cu)
18885{
18886 struct type *descriptive_type = die_descriptive_type (die, cu);
18887
18888 if (descriptive_type)
18889 {
18890 ALLOCATE_GNAT_AUX_TYPE (type);
18891 TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
18892 }
18893}
18894
c906108c
SS
18895/* Return the containing type of the die in question using its
18896 DW_AT_containing_type attribute. */
18897
18898static struct type *
e7c27a73 18899die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 18900{
c906108c 18901 struct attribute *type_attr;
c906108c 18902
e142c38c 18903 type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
33ac96f0
JK
18904 if (!type_attr)
18905 error (_("Dwarf Error: Problem turning containing type into gdb type "
4262abfb 18906 "[in module %s]"), objfile_name (cu->objfile));
33ac96f0 18907
673bfd45 18908 return lookup_die_type (die, type_attr, cu);
c906108c
SS
18909}
18910
ac9ec31b
DE
18911/* Return an error marker type to use for the ill formed type in DIE/CU. */
18912
18913static struct type *
18914build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
18915{
18916 struct objfile *objfile = dwarf2_per_objfile->objfile;
18917 char *message, *saved;
18918
18919 message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
4262abfb 18920 objfile_name (objfile),
ac9ec31b
DE
18921 cu->header.offset.sect_off,
18922 die->offset.sect_off);
18923 saved = obstack_copy0 (&objfile->objfile_obstack,
18924 message, strlen (message));
18925 xfree (message);
18926
18927 return init_type (TYPE_CODE_ERROR, 0, 0, saved, objfile);
18928}
18929
673bfd45 18930/* Look up the type of DIE in CU using its type attribute ATTR.
ac9ec31b
DE
18931 ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
18932 DW_AT_containing_type.
673bfd45
DE
18933 If there is no type substitute an error marker. */
18934
c906108c 18935static struct type *
ff39bb5e 18936lookup_die_type (struct die_info *die, const struct attribute *attr,
673bfd45 18937 struct dwarf2_cu *cu)
c906108c 18938{
bb5ed363 18939 struct objfile *objfile = cu->objfile;
f792889a
DJ
18940 struct type *this_type;
18941
ac9ec31b
DE
18942 gdb_assert (attr->name == DW_AT_type
18943 || attr->name == DW_AT_GNAT_descriptive_type
18944 || attr->name == DW_AT_containing_type);
18945
673bfd45
DE
18946 /* First see if we have it cached. */
18947
36586728
TT
18948 if (attr->form == DW_FORM_GNU_ref_alt)
18949 {
18950 struct dwarf2_per_cu_data *per_cu;
18951 sect_offset offset = dwarf2_get_ref_die_offset (attr);
18952
18953 per_cu = dwarf2_find_containing_comp_unit (offset, 1, cu->objfile);
18954 this_type = get_die_type_at_offset (offset, per_cu);
18955 }
7771576e 18956 else if (attr_form_is_ref (attr))
673bfd45 18957 {
b64f50a1 18958 sect_offset offset = dwarf2_get_ref_die_offset (attr);
673bfd45
DE
18959
18960 this_type = get_die_type_at_offset (offset, cu->per_cu);
18961 }
55f1336d 18962 else if (attr->form == DW_FORM_ref_sig8)
673bfd45 18963 {
ac9ec31b 18964 ULONGEST signature = DW_SIGNATURE (attr);
673bfd45 18965
ac9ec31b 18966 return get_signatured_type (die, signature, cu);
673bfd45
DE
18967 }
18968 else
18969 {
ac9ec31b
DE
18970 complaint (&symfile_complaints,
18971 _("Dwarf Error: Bad type attribute %s in DIE"
18972 " at 0x%x [in module %s]"),
18973 dwarf_attr_name (attr->name), die->offset.sect_off,
4262abfb 18974 objfile_name (objfile));
ac9ec31b 18975 return build_error_marker_type (cu, die);
673bfd45
DE
18976 }
18977
18978 /* If not cached we need to read it in. */
18979
18980 if (this_type == NULL)
18981 {
ac9ec31b 18982 struct die_info *type_die = NULL;
673bfd45
DE
18983 struct dwarf2_cu *type_cu = cu;
18984
7771576e 18985 if (attr_form_is_ref (attr))
ac9ec31b
DE
18986 type_die = follow_die_ref (die, attr, &type_cu);
18987 if (type_die == NULL)
18988 return build_error_marker_type (cu, die);
18989 /* If we find the type now, it's probably because the type came
3019eac3
DE
18990 from an inter-CU reference and the type's CU got expanded before
18991 ours. */
ac9ec31b 18992 this_type = read_type_die (type_die, type_cu);
673bfd45
DE
18993 }
18994
18995 /* If we still don't have a type use an error marker. */
18996
18997 if (this_type == NULL)
ac9ec31b 18998 return build_error_marker_type (cu, die);
673bfd45 18999
f792889a 19000 return this_type;
c906108c
SS
19001}
19002
673bfd45
DE
19003/* Return the type in DIE, CU.
19004 Returns NULL for invalid types.
19005
02142a6c 19006 This first does a lookup in die_type_hash,
673bfd45
DE
19007 and only reads the die in if necessary.
19008
19009 NOTE: This can be called when reading in partial or full symbols. */
19010
f792889a 19011static struct type *
e7c27a73 19012read_type_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 19013{
f792889a
DJ
19014 struct type *this_type;
19015
19016 this_type = get_die_type (die, cu);
19017 if (this_type)
19018 return this_type;
19019
673bfd45
DE
19020 return read_type_die_1 (die, cu);
19021}
19022
19023/* Read the type in DIE, CU.
19024 Returns NULL for invalid types. */
19025
19026static struct type *
19027read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
19028{
19029 struct type *this_type = NULL;
19030
c906108c
SS
19031 switch (die->tag)
19032 {
19033 case DW_TAG_class_type:
680b30c7 19034 case DW_TAG_interface_type:
c906108c
SS
19035 case DW_TAG_structure_type:
19036 case DW_TAG_union_type:
f792889a 19037 this_type = read_structure_type (die, cu);
c906108c
SS
19038 break;
19039 case DW_TAG_enumeration_type:
f792889a 19040 this_type = read_enumeration_type (die, cu);
c906108c
SS
19041 break;
19042 case DW_TAG_subprogram:
19043 case DW_TAG_subroutine_type:
edb3359d 19044 case DW_TAG_inlined_subroutine:
f792889a 19045 this_type = read_subroutine_type (die, cu);
c906108c
SS
19046 break;
19047 case DW_TAG_array_type:
f792889a 19048 this_type = read_array_type (die, cu);
c906108c 19049 break;
72019c9c 19050 case DW_TAG_set_type:
f792889a 19051 this_type = read_set_type (die, cu);
72019c9c 19052 break;
c906108c 19053 case DW_TAG_pointer_type:
f792889a 19054 this_type = read_tag_pointer_type (die, cu);
c906108c
SS
19055 break;
19056 case DW_TAG_ptr_to_member_type:
f792889a 19057 this_type = read_tag_ptr_to_member_type (die, cu);
c906108c
SS
19058 break;
19059 case DW_TAG_reference_type:
f792889a 19060 this_type = read_tag_reference_type (die, cu);
c906108c
SS
19061 break;
19062 case DW_TAG_const_type:
f792889a 19063 this_type = read_tag_const_type (die, cu);
c906108c
SS
19064 break;
19065 case DW_TAG_volatile_type:
f792889a 19066 this_type = read_tag_volatile_type (die, cu);
c906108c 19067 break;
06d66ee9
TT
19068 case DW_TAG_restrict_type:
19069 this_type = read_tag_restrict_type (die, cu);
19070 break;
c906108c 19071 case DW_TAG_string_type:
f792889a 19072 this_type = read_tag_string_type (die, cu);
c906108c
SS
19073 break;
19074 case DW_TAG_typedef:
f792889a 19075 this_type = read_typedef (die, cu);
c906108c 19076 break;
a02abb62 19077 case DW_TAG_subrange_type:
f792889a 19078 this_type = read_subrange_type (die, cu);
a02abb62 19079 break;
c906108c 19080 case DW_TAG_base_type:
f792889a 19081 this_type = read_base_type (die, cu);
c906108c 19082 break;
81a17f79 19083 case DW_TAG_unspecified_type:
f792889a 19084 this_type = read_unspecified_type (die, cu);
81a17f79 19085 break;
0114d602
DJ
19086 case DW_TAG_namespace:
19087 this_type = read_namespace_type (die, cu);
19088 break;
f55ee35c
JK
19089 case DW_TAG_module:
19090 this_type = read_module_type (die, cu);
19091 break;
a2c2acaf
MW
19092 case DW_TAG_atomic_type:
19093 this_type = read_tag_atomic_type (die, cu);
19094 break;
c906108c 19095 default:
3e43a32a
MS
19096 complaint (&symfile_complaints,
19097 _("unexpected tag in read_type_die: '%s'"),
4d3c2250 19098 dwarf_tag_name (die->tag));
c906108c
SS
19099 break;
19100 }
63d06c5c 19101
f792889a 19102 return this_type;
63d06c5c
DC
19103}
19104
abc72ce4
DE
19105/* See if we can figure out if the class lives in a namespace. We do
19106 this by looking for a member function; its demangled name will
19107 contain namespace info, if there is any.
19108 Return the computed name or NULL.
19109 Space for the result is allocated on the objfile's obstack.
19110 This is the full-die version of guess_partial_die_structure_name.
19111 In this case we know DIE has no useful parent. */
19112
19113static char *
19114guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
19115{
19116 struct die_info *spec_die;
19117 struct dwarf2_cu *spec_cu;
19118 struct die_info *child;
19119
19120 spec_cu = cu;
19121 spec_die = die_specification (die, &spec_cu);
19122 if (spec_die != NULL)
19123 {
19124 die = spec_die;
19125 cu = spec_cu;
19126 }
19127
19128 for (child = die->child;
19129 child != NULL;
19130 child = child->sibling)
19131 {
19132 if (child->tag == DW_TAG_subprogram)
19133 {
19134 struct attribute *attr;
19135
19136 attr = dwarf2_attr (child, DW_AT_linkage_name, cu);
19137 if (attr == NULL)
19138 attr = dwarf2_attr (child, DW_AT_MIPS_linkage_name, cu);
19139 if (attr != NULL)
19140 {
19141 char *actual_name
19142 = language_class_name_from_physname (cu->language_defn,
19143 DW_STRING (attr));
19144 char *name = NULL;
19145
19146 if (actual_name != NULL)
19147 {
15d034d0 19148 const char *die_name = dwarf2_name (die, cu);
abc72ce4
DE
19149
19150 if (die_name != NULL
19151 && strcmp (die_name, actual_name) != 0)
19152 {
19153 /* Strip off the class name from the full name.
19154 We want the prefix. */
19155 int die_name_len = strlen (die_name);
19156 int actual_name_len = strlen (actual_name);
19157
19158 /* Test for '::' as a sanity check. */
19159 if (actual_name_len > die_name_len + 2
3e43a32a
MS
19160 && actual_name[actual_name_len
19161 - die_name_len - 1] == ':')
abc72ce4 19162 name =
34a68019 19163 obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb
TT
19164 actual_name,
19165 actual_name_len - die_name_len - 2);
abc72ce4
DE
19166 }
19167 }
19168 xfree (actual_name);
19169 return name;
19170 }
19171 }
19172 }
19173
19174 return NULL;
19175}
19176
96408a79
SA
19177/* GCC might emit a nameless typedef that has a linkage name. Determine the
19178 prefix part in such case. See
19179 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
19180
19181static char *
19182anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
19183{
19184 struct attribute *attr;
19185 char *base;
19186
19187 if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
19188 && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
19189 return NULL;
19190
19191 attr = dwarf2_attr (die, DW_AT_name, cu);
19192 if (attr != NULL && DW_STRING (attr) != NULL)
19193 return NULL;
19194
19195 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19196 if (attr == NULL)
19197 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19198 if (attr == NULL || DW_STRING (attr) == NULL)
19199 return NULL;
19200
19201 /* dwarf2_name had to be already called. */
19202 gdb_assert (DW_STRING_IS_CANONICAL (attr));
19203
19204 /* Strip the base name, keep any leading namespaces/classes. */
19205 base = strrchr (DW_STRING (attr), ':');
19206 if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
19207 return "";
19208
34a68019 19209 return obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb 19210 DW_STRING (attr), &base[-1] - DW_STRING (attr));
96408a79
SA
19211}
19212
fdde2d81 19213/* Return the name of the namespace/class that DIE is defined within,
0114d602 19214 or "" if we can't tell. The caller should not xfree the result.
fdde2d81 19215
0114d602
DJ
19216 For example, if we're within the method foo() in the following
19217 code:
19218
19219 namespace N {
19220 class C {
19221 void foo () {
19222 }
19223 };
19224 }
19225
19226 then determine_prefix on foo's die will return "N::C". */
fdde2d81 19227
0d5cff50 19228static const char *
e142c38c 19229determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
63d06c5c 19230{
0114d602
DJ
19231 struct die_info *parent, *spec_die;
19232 struct dwarf2_cu *spec_cu;
19233 struct type *parent_type;
96408a79 19234 char *retval;
63d06c5c 19235
f55ee35c 19236 if (cu->language != language_cplus && cu->language != language_java
45280282 19237 && cu->language != language_fortran && cu->language != language_d)
0114d602
DJ
19238 return "";
19239
96408a79
SA
19240 retval = anonymous_struct_prefix (die, cu);
19241 if (retval)
19242 return retval;
19243
0114d602
DJ
19244 /* We have to be careful in the presence of DW_AT_specification.
19245 For example, with GCC 3.4, given the code
19246
19247 namespace N {
19248 void foo() {
19249 // Definition of N::foo.
19250 }
19251 }
19252
19253 then we'll have a tree of DIEs like this:
19254
19255 1: DW_TAG_compile_unit
19256 2: DW_TAG_namespace // N
19257 3: DW_TAG_subprogram // declaration of N::foo
19258 4: DW_TAG_subprogram // definition of N::foo
19259 DW_AT_specification // refers to die #3
19260
19261 Thus, when processing die #4, we have to pretend that we're in
19262 the context of its DW_AT_specification, namely the contex of die
19263 #3. */
19264 spec_cu = cu;
19265 spec_die = die_specification (die, &spec_cu);
19266 if (spec_die == NULL)
19267 parent = die->parent;
19268 else
63d06c5c 19269 {
0114d602
DJ
19270 parent = spec_die->parent;
19271 cu = spec_cu;
63d06c5c 19272 }
0114d602
DJ
19273
19274 if (parent == NULL)
19275 return "";
98bfdba5
PA
19276 else if (parent->building_fullname)
19277 {
19278 const char *name;
19279 const char *parent_name;
19280
19281 /* It has been seen on RealView 2.2 built binaries,
19282 DW_TAG_template_type_param types actually _defined_ as
19283 children of the parent class:
19284
19285 enum E {};
19286 template class <class Enum> Class{};
19287 Class<enum E> class_e;
19288
19289 1: DW_TAG_class_type (Class)
19290 2: DW_TAG_enumeration_type (E)
19291 3: DW_TAG_enumerator (enum1:0)
19292 3: DW_TAG_enumerator (enum2:1)
19293 ...
19294 2: DW_TAG_template_type_param
19295 DW_AT_type DW_FORM_ref_udata (E)
19296
19297 Besides being broken debug info, it can put GDB into an
19298 infinite loop. Consider:
19299
19300 When we're building the full name for Class<E>, we'll start
19301 at Class, and go look over its template type parameters,
19302 finding E. We'll then try to build the full name of E, and
19303 reach here. We're now trying to build the full name of E,
19304 and look over the parent DIE for containing scope. In the
19305 broken case, if we followed the parent DIE of E, we'd again
19306 find Class, and once again go look at its template type
19307 arguments, etc., etc. Simply don't consider such parent die
19308 as source-level parent of this die (it can't be, the language
19309 doesn't allow it), and break the loop here. */
19310 name = dwarf2_name (die, cu);
19311 parent_name = dwarf2_name (parent, cu);
19312 complaint (&symfile_complaints,
19313 _("template param type '%s' defined within parent '%s'"),
19314 name ? name : "<unknown>",
19315 parent_name ? parent_name : "<unknown>");
19316 return "";
19317 }
63d06c5c 19318 else
0114d602
DJ
19319 switch (parent->tag)
19320 {
63d06c5c 19321 case DW_TAG_namespace:
0114d602 19322 parent_type = read_type_die (parent, cu);
acebe513
UW
19323 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
19324 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
19325 Work around this problem here. */
19326 if (cu->language == language_cplus
19327 && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
19328 return "";
0114d602
DJ
19329 /* We give a name to even anonymous namespaces. */
19330 return TYPE_TAG_NAME (parent_type);
63d06c5c 19331 case DW_TAG_class_type:
680b30c7 19332 case DW_TAG_interface_type:
63d06c5c 19333 case DW_TAG_structure_type:
0114d602 19334 case DW_TAG_union_type:
f55ee35c 19335 case DW_TAG_module:
0114d602
DJ
19336 parent_type = read_type_die (parent, cu);
19337 if (TYPE_TAG_NAME (parent_type) != NULL)
19338 return TYPE_TAG_NAME (parent_type);
19339 else
19340 /* An anonymous structure is only allowed non-static data
19341 members; no typedefs, no member functions, et cetera.
19342 So it does not need a prefix. */
19343 return "";
abc72ce4 19344 case DW_TAG_compile_unit:
95554aad 19345 case DW_TAG_partial_unit:
abc72ce4
DE
19346 /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace. Cope. */
19347 if (cu->language == language_cplus
8b70b953 19348 && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
abc72ce4
DE
19349 && die->child != NULL
19350 && (die->tag == DW_TAG_class_type
19351 || die->tag == DW_TAG_structure_type
19352 || die->tag == DW_TAG_union_type))
19353 {
19354 char *name = guess_full_die_structure_name (die, cu);
19355 if (name != NULL)
19356 return name;
19357 }
19358 return "";
3d567982
TT
19359 case DW_TAG_enumeration_type:
19360 parent_type = read_type_die (parent, cu);
19361 if (TYPE_DECLARED_CLASS (parent_type))
19362 {
19363 if (TYPE_TAG_NAME (parent_type) != NULL)
19364 return TYPE_TAG_NAME (parent_type);
19365 return "";
19366 }
19367 /* Fall through. */
63d06c5c 19368 default:
8176b9b8 19369 return determine_prefix (parent, cu);
63d06c5c 19370 }
63d06c5c
DC
19371}
19372
3e43a32a
MS
19373/* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
19374 with appropriate separator. If PREFIX or SUFFIX is NULL or empty, then
19375 simply copy the SUFFIX or PREFIX, respectively. If OBS is non-null, perform
19376 an obconcat, otherwise allocate storage for the result. The CU argument is
19377 used to determine the language and hence, the appropriate separator. */
987504bb 19378
f55ee35c 19379#define MAX_SEP_LEN 7 /* strlen ("__") + strlen ("_MOD_") */
63d06c5c
DC
19380
19381static char *
f55ee35c
JK
19382typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
19383 int physname, struct dwarf2_cu *cu)
63d06c5c 19384{
f55ee35c 19385 const char *lead = "";
5c315b68 19386 const char *sep;
63d06c5c 19387
3e43a32a
MS
19388 if (suffix == NULL || suffix[0] == '\0'
19389 || prefix == NULL || prefix[0] == '\0')
987504bb
JJ
19390 sep = "";
19391 else if (cu->language == language_java)
19392 sep = ".";
45280282
IB
19393 else if (cu->language == language_d)
19394 {
19395 /* For D, the 'main' function could be defined in any module, but it
19396 should never be prefixed. */
19397 if (strcmp (suffix, "D main") == 0)
19398 {
19399 prefix = "";
19400 sep = "";
19401 }
19402 else
19403 sep = ".";
19404 }
f55ee35c
JK
19405 else if (cu->language == language_fortran && physname)
19406 {
19407 /* This is gfortran specific mangling. Normally DW_AT_linkage_name or
19408 DW_AT_MIPS_linkage_name is preferred and used instead. */
19409
19410 lead = "__";
19411 sep = "_MOD_";
19412 }
987504bb
JJ
19413 else
19414 sep = "::";
63d06c5c 19415
6dd47d34
DE
19416 if (prefix == NULL)
19417 prefix = "";
19418 if (suffix == NULL)
19419 suffix = "";
19420
987504bb
JJ
19421 if (obs == NULL)
19422 {
3e43a32a
MS
19423 char *retval
19424 = xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1);
9a619af0 19425
f55ee35c
JK
19426 strcpy (retval, lead);
19427 strcat (retval, prefix);
6dd47d34
DE
19428 strcat (retval, sep);
19429 strcat (retval, suffix);
63d06c5c
DC
19430 return retval;
19431 }
987504bb
JJ
19432 else
19433 {
19434 /* We have an obstack. */
f55ee35c 19435 return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
987504bb 19436 }
63d06c5c
DC
19437}
19438
c906108c
SS
19439/* Return sibling of die, NULL if no sibling. */
19440
f9aca02d 19441static struct die_info *
fba45db2 19442sibling_die (struct die_info *die)
c906108c 19443{
639d11d3 19444 return die->sibling;
c906108c
SS
19445}
19446
71c25dea
TT
19447/* Get name of a die, return NULL if not found. */
19448
15d034d0
TT
19449static const char *
19450dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
71c25dea
TT
19451 struct obstack *obstack)
19452{
19453 if (name && cu->language == language_cplus)
19454 {
19455 char *canon_name = cp_canonicalize_string (name);
19456
19457 if (canon_name != NULL)
19458 {
19459 if (strcmp (canon_name, name) != 0)
10f0c4bb 19460 name = obstack_copy0 (obstack, canon_name, strlen (canon_name));
71c25dea
TT
19461 xfree (canon_name);
19462 }
19463 }
19464
19465 return name;
c906108c
SS
19466}
19467
96553a0c
DE
19468/* Get name of a die, return NULL if not found.
19469 Anonymous namespaces are converted to their magic string. */
9219021c 19470
15d034d0 19471static const char *
e142c38c 19472dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
9219021c
DC
19473{
19474 struct attribute *attr;
19475
e142c38c 19476 attr = dwarf2_attr (die, DW_AT_name, cu);
53832f31 19477 if ((!attr || !DW_STRING (attr))
96553a0c 19478 && die->tag != DW_TAG_namespace
53832f31
TT
19479 && die->tag != DW_TAG_class_type
19480 && die->tag != DW_TAG_interface_type
19481 && die->tag != DW_TAG_structure_type
19482 && die->tag != DW_TAG_union_type)
71c25dea
TT
19483 return NULL;
19484
19485 switch (die->tag)
19486 {
19487 case DW_TAG_compile_unit:
95554aad 19488 case DW_TAG_partial_unit:
71c25dea
TT
19489 /* Compilation units have a DW_AT_name that is a filename, not
19490 a source language identifier. */
19491 case DW_TAG_enumeration_type:
19492 case DW_TAG_enumerator:
19493 /* These tags always have simple identifiers already; no need
19494 to canonicalize them. */
19495 return DW_STRING (attr);
907af001 19496
96553a0c
DE
19497 case DW_TAG_namespace:
19498 if (attr != NULL && DW_STRING (attr) != NULL)
19499 return DW_STRING (attr);
19500 return CP_ANONYMOUS_NAMESPACE_STR;
19501
418835cc
KS
19502 case DW_TAG_subprogram:
19503 /* Java constructors will all be named "<init>", so return
19504 the class name when we see this special case. */
19505 if (cu->language == language_java
19506 && DW_STRING (attr) != NULL
19507 && strcmp (DW_STRING (attr), "<init>") == 0)
19508 {
19509 struct dwarf2_cu *spec_cu = cu;
19510 struct die_info *spec_die;
19511
19512 /* GCJ will output '<init>' for Java constructor names.
19513 For this special case, return the name of the parent class. */
19514
cdc07690 19515 /* GCJ may output subprogram DIEs with AT_specification set.
418835cc
KS
19516 If so, use the name of the specified DIE. */
19517 spec_die = die_specification (die, &spec_cu);
19518 if (spec_die != NULL)
19519 return dwarf2_name (spec_die, spec_cu);
19520
19521 do
19522 {
19523 die = die->parent;
19524 if (die->tag == DW_TAG_class_type)
19525 return dwarf2_name (die, cu);
19526 }
95554aad
TT
19527 while (die->tag != DW_TAG_compile_unit
19528 && die->tag != DW_TAG_partial_unit);
418835cc 19529 }
907af001
UW
19530 break;
19531
19532 case DW_TAG_class_type:
19533 case DW_TAG_interface_type:
19534 case DW_TAG_structure_type:
19535 case DW_TAG_union_type:
19536 /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
19537 structures or unions. These were of the form "._%d" in GCC 4.1,
19538 or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
19539 and GCC 4.4. We work around this problem by ignoring these. */
53832f31 19540 if (attr && DW_STRING (attr)
61012eef
GB
19541 && (startswith (DW_STRING (attr), "._")
19542 || startswith (DW_STRING (attr), "<anonymous")))
907af001 19543 return NULL;
53832f31
TT
19544
19545 /* GCC might emit a nameless typedef that has a linkage name. See
19546 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
19547 if (!attr || DW_STRING (attr) == NULL)
19548 {
df5c6c50 19549 char *demangled = NULL;
53832f31
TT
19550
19551 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19552 if (attr == NULL)
19553 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19554
19555 if (attr == NULL || DW_STRING (attr) == NULL)
19556 return NULL;
19557
df5c6c50
JK
19558 /* Avoid demangling DW_STRING (attr) the second time on a second
19559 call for the same DIE. */
19560 if (!DW_STRING_IS_CANONICAL (attr))
8de20a37 19561 demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
53832f31
TT
19562
19563 if (demangled)
19564 {
96408a79
SA
19565 char *base;
19566
53832f31 19567 /* FIXME: we already did this for the partial symbol... */
34a68019
TT
19568 DW_STRING (attr)
19569 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
19570 demangled, strlen (demangled));
53832f31
TT
19571 DW_STRING_IS_CANONICAL (attr) = 1;
19572 xfree (demangled);
96408a79
SA
19573
19574 /* Strip any leading namespaces/classes, keep only the base name.
19575 DW_AT_name for named DIEs does not contain the prefixes. */
19576 base = strrchr (DW_STRING (attr), ':');
19577 if (base && base > DW_STRING (attr) && base[-1] == ':')
19578 return &base[1];
19579 else
19580 return DW_STRING (attr);
53832f31
TT
19581 }
19582 }
907af001
UW
19583 break;
19584
71c25dea 19585 default:
907af001
UW
19586 break;
19587 }
19588
19589 if (!DW_STRING_IS_CANONICAL (attr))
19590 {
19591 DW_STRING (attr)
19592 = dwarf2_canonicalize_name (DW_STRING (attr), cu,
34a68019 19593 &cu->objfile->per_bfd->storage_obstack);
907af001 19594 DW_STRING_IS_CANONICAL (attr) = 1;
71c25dea 19595 }
907af001 19596 return DW_STRING (attr);
9219021c
DC
19597}
19598
19599/* Return the die that this die in an extension of, or NULL if there
f2f0e013
DJ
19600 is none. *EXT_CU is the CU containing DIE on input, and the CU
19601 containing the return value on output. */
9219021c
DC
19602
19603static struct die_info *
f2f0e013 19604dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
9219021c
DC
19605{
19606 struct attribute *attr;
9219021c 19607
f2f0e013 19608 attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
9219021c
DC
19609 if (attr == NULL)
19610 return NULL;
19611
f2f0e013 19612 return follow_die_ref (die, attr, ext_cu);
9219021c
DC
19613}
19614
c906108c
SS
19615/* Convert a DIE tag into its string name. */
19616
f39c6ffd 19617static const char *
aa1ee363 19618dwarf_tag_name (unsigned tag)
c906108c 19619{
f39c6ffd
TT
19620 const char *name = get_DW_TAG_name (tag);
19621
19622 if (name == NULL)
19623 return "DW_TAG_<unknown>";
19624
19625 return name;
c906108c
SS
19626}
19627
19628/* Convert a DWARF attribute code into its string name. */
19629
f39c6ffd 19630static const char *
aa1ee363 19631dwarf_attr_name (unsigned attr)
c906108c 19632{
f39c6ffd
TT
19633 const char *name;
19634
c764a876 19635#ifdef MIPS /* collides with DW_AT_HP_block_index */
f39c6ffd
TT
19636 if (attr == DW_AT_MIPS_fde)
19637 return "DW_AT_MIPS_fde";
19638#else
19639 if (attr == DW_AT_HP_block_index)
19640 return "DW_AT_HP_block_index";
c764a876 19641#endif
f39c6ffd
TT
19642
19643 name = get_DW_AT_name (attr);
19644
19645 if (name == NULL)
19646 return "DW_AT_<unknown>";
19647
19648 return name;
c906108c
SS
19649}
19650
19651/* Convert a DWARF value form code into its string name. */
19652
f39c6ffd 19653static const char *
aa1ee363 19654dwarf_form_name (unsigned form)
c906108c 19655{
f39c6ffd
TT
19656 const char *name = get_DW_FORM_name (form);
19657
19658 if (name == NULL)
19659 return "DW_FORM_<unknown>";
19660
19661 return name;
c906108c
SS
19662}
19663
19664static char *
fba45db2 19665dwarf_bool_name (unsigned mybool)
c906108c
SS
19666{
19667 if (mybool)
19668 return "TRUE";
19669 else
19670 return "FALSE";
19671}
19672
19673/* Convert a DWARF type code into its string name. */
19674
f39c6ffd 19675static const char *
aa1ee363 19676dwarf_type_encoding_name (unsigned enc)
c906108c 19677{
f39c6ffd 19678 const char *name = get_DW_ATE_name (enc);
c906108c 19679
f39c6ffd
TT
19680 if (name == NULL)
19681 return "DW_ATE_<unknown>";
c906108c 19682
f39c6ffd 19683 return name;
c906108c 19684}
c906108c 19685
f9aca02d 19686static void
d97bc12b 19687dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
c906108c
SS
19688{
19689 unsigned int i;
19690
d97bc12b
DE
19691 print_spaces (indent, f);
19692 fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
b64f50a1 19693 dwarf_tag_name (die->tag), die->abbrev, die->offset.sect_off);
d97bc12b
DE
19694
19695 if (die->parent != NULL)
19696 {
19697 print_spaces (indent, f);
19698 fprintf_unfiltered (f, " parent at offset: 0x%x\n",
b64f50a1 19699 die->parent->offset.sect_off);
d97bc12b
DE
19700 }
19701
19702 print_spaces (indent, f);
19703 fprintf_unfiltered (f, " has children: %s\n",
639d11d3 19704 dwarf_bool_name (die->child != NULL));
c906108c 19705
d97bc12b
DE
19706 print_spaces (indent, f);
19707 fprintf_unfiltered (f, " attributes:\n");
19708
c906108c
SS
19709 for (i = 0; i < die->num_attrs; ++i)
19710 {
d97bc12b
DE
19711 print_spaces (indent, f);
19712 fprintf_unfiltered (f, " %s (%s) ",
c906108c
SS
19713 dwarf_attr_name (die->attrs[i].name),
19714 dwarf_form_name (die->attrs[i].form));
d97bc12b 19715
c906108c
SS
19716 switch (die->attrs[i].form)
19717 {
c906108c 19718 case DW_FORM_addr:
3019eac3 19719 case DW_FORM_GNU_addr_index:
d97bc12b 19720 fprintf_unfiltered (f, "address: ");
5af949e3 19721 fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
c906108c
SS
19722 break;
19723 case DW_FORM_block2:
19724 case DW_FORM_block4:
19725 case DW_FORM_block:
19726 case DW_FORM_block1:
56eb65bd
SP
19727 fprintf_unfiltered (f, "block: size %s",
19728 pulongest (DW_BLOCK (&die->attrs[i])->size));
c906108c 19729 break;
2dc7f7b3 19730 case DW_FORM_exprloc:
56eb65bd
SP
19731 fprintf_unfiltered (f, "expression: size %s",
19732 pulongest (DW_BLOCK (&die->attrs[i])->size));
2dc7f7b3 19733 break;
4568ecf9
DE
19734 case DW_FORM_ref_addr:
19735 fprintf_unfiltered (f, "ref address: ");
19736 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19737 break;
36586728
TT
19738 case DW_FORM_GNU_ref_alt:
19739 fprintf_unfiltered (f, "alt ref address: ");
19740 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19741 break;
10b3939b
DJ
19742 case DW_FORM_ref1:
19743 case DW_FORM_ref2:
19744 case DW_FORM_ref4:
4568ecf9
DE
19745 case DW_FORM_ref8:
19746 case DW_FORM_ref_udata:
d97bc12b 19747 fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
4568ecf9 19748 (long) (DW_UNSND (&die->attrs[i])));
10b3939b 19749 break;
c906108c
SS
19750 case DW_FORM_data1:
19751 case DW_FORM_data2:
19752 case DW_FORM_data4:
ce5d95e1 19753 case DW_FORM_data8:
c906108c
SS
19754 case DW_FORM_udata:
19755 case DW_FORM_sdata:
43bbcdc2
PH
19756 fprintf_unfiltered (f, "constant: %s",
19757 pulongest (DW_UNSND (&die->attrs[i])));
c906108c 19758 break;
2dc7f7b3
TT
19759 case DW_FORM_sec_offset:
19760 fprintf_unfiltered (f, "section offset: %s",
19761 pulongest (DW_UNSND (&die->attrs[i])));
19762 break;
55f1336d 19763 case DW_FORM_ref_sig8:
ac9ec31b
DE
19764 fprintf_unfiltered (f, "signature: %s",
19765 hex_string (DW_SIGNATURE (&die->attrs[i])));
348e048f 19766 break;
c906108c 19767 case DW_FORM_string:
4bdf3d34 19768 case DW_FORM_strp:
3019eac3 19769 case DW_FORM_GNU_str_index:
36586728 19770 case DW_FORM_GNU_strp_alt:
8285870a 19771 fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
c906108c 19772 DW_STRING (&die->attrs[i])
8285870a
JK
19773 ? DW_STRING (&die->attrs[i]) : "",
19774 DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
c906108c
SS
19775 break;
19776 case DW_FORM_flag:
19777 if (DW_UNSND (&die->attrs[i]))
d97bc12b 19778 fprintf_unfiltered (f, "flag: TRUE");
c906108c 19779 else
d97bc12b 19780 fprintf_unfiltered (f, "flag: FALSE");
c906108c 19781 break;
2dc7f7b3
TT
19782 case DW_FORM_flag_present:
19783 fprintf_unfiltered (f, "flag: TRUE");
19784 break;
a8329558 19785 case DW_FORM_indirect:
0963b4bd
MS
19786 /* The reader will have reduced the indirect form to
19787 the "base form" so this form should not occur. */
3e43a32a
MS
19788 fprintf_unfiltered (f,
19789 "unexpected attribute form: DW_FORM_indirect");
a8329558 19790 break;
c906108c 19791 default:
d97bc12b 19792 fprintf_unfiltered (f, "unsupported attribute form: %d.",
c5aa993b 19793 die->attrs[i].form);
d97bc12b 19794 break;
c906108c 19795 }
d97bc12b 19796 fprintf_unfiltered (f, "\n");
c906108c
SS
19797 }
19798}
19799
f9aca02d 19800static void
d97bc12b 19801dump_die_for_error (struct die_info *die)
c906108c 19802{
d97bc12b
DE
19803 dump_die_shallow (gdb_stderr, 0, die);
19804}
19805
19806static void
19807dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
19808{
19809 int indent = level * 4;
19810
19811 gdb_assert (die != NULL);
19812
19813 if (level >= max_level)
19814 return;
19815
19816 dump_die_shallow (f, indent, die);
19817
19818 if (die->child != NULL)
c906108c 19819 {
d97bc12b
DE
19820 print_spaces (indent, f);
19821 fprintf_unfiltered (f, " Children:");
19822 if (level + 1 < max_level)
19823 {
19824 fprintf_unfiltered (f, "\n");
19825 dump_die_1 (f, level + 1, max_level, die->child);
19826 }
19827 else
19828 {
3e43a32a
MS
19829 fprintf_unfiltered (f,
19830 " [not printed, max nesting level reached]\n");
d97bc12b
DE
19831 }
19832 }
19833
19834 if (die->sibling != NULL && level > 0)
19835 {
19836 dump_die_1 (f, level, max_level, die->sibling);
c906108c
SS
19837 }
19838}
19839
d97bc12b
DE
19840/* This is called from the pdie macro in gdbinit.in.
19841 It's not static so gcc will keep a copy callable from gdb. */
19842
19843void
19844dump_die (struct die_info *die, int max_level)
19845{
19846 dump_die_1 (gdb_stdlog, 0, max_level, die);
19847}
19848
f9aca02d 19849static void
51545339 19850store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
c906108c 19851{
51545339 19852 void **slot;
c906108c 19853
b64f50a1
JK
19854 slot = htab_find_slot_with_hash (cu->die_hash, die, die->offset.sect_off,
19855 INSERT);
51545339
DJ
19856
19857 *slot = die;
c906108c
SS
19858}
19859
b64f50a1
JK
19860/* Return DIE offset of ATTR. Return 0 with complaint if ATTR is not of the
19861 required kind. */
19862
19863static sect_offset
ff39bb5e 19864dwarf2_get_ref_die_offset (const struct attribute *attr)
93311388 19865{
4568ecf9 19866 sect_offset retval = { DW_UNSND (attr) };
b64f50a1 19867
7771576e 19868 if (attr_form_is_ref (attr))
b64f50a1 19869 return retval;
93311388 19870
b64f50a1 19871 retval.sect_off = 0;
93311388
DE
19872 complaint (&symfile_complaints,
19873 _("unsupported die ref attribute form: '%s'"),
19874 dwarf_form_name (attr->form));
b64f50a1 19875 return retval;
c906108c
SS
19876}
19877
43bbcdc2
PH
19878/* Return the constant value held by ATTR. Return DEFAULT_VALUE if
19879 * the value held by the attribute is not constant. */
a02abb62 19880
43bbcdc2 19881static LONGEST
ff39bb5e 19882dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
a02abb62
JB
19883{
19884 if (attr->form == DW_FORM_sdata)
19885 return DW_SND (attr);
19886 else if (attr->form == DW_FORM_udata
19887 || attr->form == DW_FORM_data1
19888 || attr->form == DW_FORM_data2
19889 || attr->form == DW_FORM_data4
19890 || attr->form == DW_FORM_data8)
19891 return DW_UNSND (attr);
19892 else
19893 {
3e43a32a
MS
19894 complaint (&symfile_complaints,
19895 _("Attribute value is not a constant (%s)"),
a02abb62
JB
19896 dwarf_form_name (attr->form));
19897 return default_value;
19898 }
19899}
19900
348e048f
DE
19901/* Follow reference or signature attribute ATTR of SRC_DIE.
19902 On entry *REF_CU is the CU of SRC_DIE.
19903 On exit *REF_CU is the CU of the result. */
19904
19905static struct die_info *
ff39bb5e 19906follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
348e048f
DE
19907 struct dwarf2_cu **ref_cu)
19908{
19909 struct die_info *die;
19910
7771576e 19911 if (attr_form_is_ref (attr))
348e048f 19912 die = follow_die_ref (src_die, attr, ref_cu);
55f1336d 19913 else if (attr->form == DW_FORM_ref_sig8)
348e048f
DE
19914 die = follow_die_sig (src_die, attr, ref_cu);
19915 else
19916 {
19917 dump_die_for_error (src_die);
19918 error (_("Dwarf Error: Expected reference attribute [in module %s]"),
4262abfb 19919 objfile_name ((*ref_cu)->objfile));
348e048f
DE
19920 }
19921
19922 return die;
03dd20cc
DJ
19923}
19924
5c631832 19925/* Follow reference OFFSET.
673bfd45
DE
19926 On entry *REF_CU is the CU of the source die referencing OFFSET.
19927 On exit *REF_CU is the CU of the result.
19928 Returns NULL if OFFSET is invalid. */
f504f079 19929
f9aca02d 19930static struct die_info *
36586728
TT
19931follow_die_offset (sect_offset offset, int offset_in_dwz,
19932 struct dwarf2_cu **ref_cu)
c906108c 19933{
10b3939b 19934 struct die_info temp_die;
f2f0e013 19935 struct dwarf2_cu *target_cu, *cu = *ref_cu;
10b3939b 19936
348e048f
DE
19937 gdb_assert (cu->per_cu != NULL);
19938
98bfdba5
PA
19939 target_cu = cu;
19940
3019eac3 19941 if (cu->per_cu->is_debug_types)
348e048f
DE
19942 {
19943 /* .debug_types CUs cannot reference anything outside their CU.
19944 If they need to, they have to reference a signatured type via
55f1336d 19945 DW_FORM_ref_sig8. */
348e048f 19946 if (! offset_in_cu_p (&cu->header, offset))
5c631832 19947 return NULL;
348e048f 19948 }
36586728
TT
19949 else if (offset_in_dwz != cu->per_cu->is_dwz
19950 || ! offset_in_cu_p (&cu->header, offset))
10b3939b
DJ
19951 {
19952 struct dwarf2_per_cu_data *per_cu;
9a619af0 19953
36586728
TT
19954 per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
19955 cu->objfile);
03dd20cc
DJ
19956
19957 /* If necessary, add it to the queue and load its DIEs. */
95554aad
TT
19958 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
19959 load_full_comp_unit (per_cu, cu->language);
03dd20cc 19960
10b3939b
DJ
19961 target_cu = per_cu->cu;
19962 }
98bfdba5
PA
19963 else if (cu->dies == NULL)
19964 {
19965 /* We're loading full DIEs during partial symbol reading. */
19966 gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
95554aad 19967 load_full_comp_unit (cu->per_cu, language_minimal);
98bfdba5 19968 }
c906108c 19969
f2f0e013 19970 *ref_cu = target_cu;
51545339 19971 temp_die.offset = offset;
b64f50a1 19972 return htab_find_with_hash (target_cu->die_hash, &temp_die, offset.sect_off);
5c631832 19973}
10b3939b 19974
5c631832
JK
19975/* Follow reference attribute ATTR of SRC_DIE.
19976 On entry *REF_CU is the CU of SRC_DIE.
19977 On exit *REF_CU is the CU of the result. */
19978
19979static struct die_info *
ff39bb5e 19980follow_die_ref (struct die_info *src_die, const struct attribute *attr,
5c631832
JK
19981 struct dwarf2_cu **ref_cu)
19982{
b64f50a1 19983 sect_offset offset = dwarf2_get_ref_die_offset (attr);
5c631832
JK
19984 struct dwarf2_cu *cu = *ref_cu;
19985 struct die_info *die;
19986
36586728
TT
19987 die = follow_die_offset (offset,
19988 (attr->form == DW_FORM_GNU_ref_alt
19989 || cu->per_cu->is_dwz),
19990 ref_cu);
5c631832
JK
19991 if (!die)
19992 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
19993 "at 0x%x [in module %s]"),
4262abfb
JK
19994 offset.sect_off, src_die->offset.sect_off,
19995 objfile_name (cu->objfile));
348e048f 19996
5c631832
JK
19997 return die;
19998}
19999
d83e736b
JK
20000/* Return DWARF block referenced by DW_AT_location of DIE at OFFSET at PER_CU.
20001 Returned value is intended for DW_OP_call*. Returned
20002 dwarf2_locexpr_baton->data has lifetime of PER_CU->OBJFILE. */
5c631832
JK
20003
20004struct dwarf2_locexpr_baton
8b9737bf
TT
20005dwarf2_fetch_die_loc_sect_off (sect_offset offset,
20006 struct dwarf2_per_cu_data *per_cu,
20007 CORE_ADDR (*get_frame_pc) (void *baton),
20008 void *baton)
5c631832 20009{
918dd910 20010 struct dwarf2_cu *cu;
5c631832
JK
20011 struct die_info *die;
20012 struct attribute *attr;
20013 struct dwarf2_locexpr_baton retval;
20014
8cf6f0b1
TT
20015 dw2_setup (per_cu->objfile);
20016
918dd910
JK
20017 if (per_cu->cu == NULL)
20018 load_cu (per_cu);
20019 cu = per_cu->cu;
20020
36586728 20021 die = follow_die_offset (offset, per_cu->is_dwz, &cu);
5c631832
JK
20022 if (!die)
20023 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
4262abfb 20024 offset.sect_off, objfile_name (per_cu->objfile));
5c631832
JK
20025
20026 attr = dwarf2_attr (die, DW_AT_location, cu);
20027 if (!attr)
20028 {
e103e986
JK
20029 /* DWARF: "If there is no such attribute, then there is no effect.".
20030 DATA is ignored if SIZE is 0. */
5c631832 20031
e103e986 20032 retval.data = NULL;
5c631832
JK
20033 retval.size = 0;
20034 }
8cf6f0b1
TT
20035 else if (attr_form_is_section_offset (attr))
20036 {
20037 struct dwarf2_loclist_baton loclist_baton;
20038 CORE_ADDR pc = (*get_frame_pc) (baton);
20039 size_t size;
20040
20041 fill_in_loclist_baton (cu, &loclist_baton, attr);
20042
20043 retval.data = dwarf2_find_location_expression (&loclist_baton,
20044 &size, pc);
20045 retval.size = size;
20046 }
5c631832
JK
20047 else
20048 {
20049 if (!attr_form_is_block (attr))
20050 error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
20051 "is neither DW_FORM_block* nor DW_FORM_exprloc"),
4262abfb 20052 offset.sect_off, objfile_name (per_cu->objfile));
5c631832
JK
20053
20054 retval.data = DW_BLOCK (attr)->data;
20055 retval.size = DW_BLOCK (attr)->size;
20056 }
20057 retval.per_cu = cu->per_cu;
918dd910 20058
918dd910
JK
20059 age_cached_comp_units ();
20060
5c631832 20061 return retval;
348e048f
DE
20062}
20063
8b9737bf
TT
20064/* Like dwarf2_fetch_die_loc_sect_off, but take a CU
20065 offset. */
20066
20067struct dwarf2_locexpr_baton
20068dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
20069 struct dwarf2_per_cu_data *per_cu,
20070 CORE_ADDR (*get_frame_pc) (void *baton),
20071 void *baton)
20072{
20073 sect_offset offset = { per_cu->offset.sect_off + offset_in_cu.cu_off };
20074
20075 return dwarf2_fetch_die_loc_sect_off (offset, per_cu, get_frame_pc, baton);
20076}
20077
b6807d98
TT
20078/* Write a constant of a given type as target-ordered bytes into
20079 OBSTACK. */
20080
20081static const gdb_byte *
20082write_constant_as_bytes (struct obstack *obstack,
20083 enum bfd_endian byte_order,
20084 struct type *type,
20085 ULONGEST value,
20086 LONGEST *len)
20087{
20088 gdb_byte *result;
20089
20090 *len = TYPE_LENGTH (type);
20091 result = obstack_alloc (obstack, *len);
20092 store_unsigned_integer (result, *len, byte_order, value);
20093
20094 return result;
20095}
20096
20097/* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
20098 pointer to the constant bytes and set LEN to the length of the
20099 data. If memory is needed, allocate it on OBSTACK. If the DIE
20100 does not have a DW_AT_const_value, return NULL. */
20101
20102const gdb_byte *
20103dwarf2_fetch_constant_bytes (sect_offset offset,
20104 struct dwarf2_per_cu_data *per_cu,
20105 struct obstack *obstack,
20106 LONGEST *len)
20107{
20108 struct dwarf2_cu *cu;
20109 struct die_info *die;
20110 struct attribute *attr;
20111 const gdb_byte *result = NULL;
20112 struct type *type;
20113 LONGEST value;
20114 enum bfd_endian byte_order;
20115
20116 dw2_setup (per_cu->objfile);
20117
20118 if (per_cu->cu == NULL)
20119 load_cu (per_cu);
20120 cu = per_cu->cu;
20121
20122 die = follow_die_offset (offset, per_cu->is_dwz, &cu);
20123 if (!die)
20124 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
4262abfb 20125 offset.sect_off, objfile_name (per_cu->objfile));
b6807d98
TT
20126
20127
20128 attr = dwarf2_attr (die, DW_AT_const_value, cu);
20129 if (attr == NULL)
20130 return NULL;
20131
20132 byte_order = (bfd_big_endian (per_cu->objfile->obfd)
20133 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
20134
20135 switch (attr->form)
20136 {
20137 case DW_FORM_addr:
20138 case DW_FORM_GNU_addr_index:
20139 {
20140 gdb_byte *tem;
20141
20142 *len = cu->header.addr_size;
20143 tem = obstack_alloc (obstack, *len);
20144 store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
20145 result = tem;
20146 }
20147 break;
20148 case DW_FORM_string:
20149 case DW_FORM_strp:
20150 case DW_FORM_GNU_str_index:
20151 case DW_FORM_GNU_strp_alt:
20152 /* DW_STRING is already allocated on the objfile obstack, point
20153 directly to it. */
20154 result = (const gdb_byte *) DW_STRING (attr);
20155 *len = strlen (DW_STRING (attr));
20156 break;
20157 case DW_FORM_block1:
20158 case DW_FORM_block2:
20159 case DW_FORM_block4:
20160 case DW_FORM_block:
20161 case DW_FORM_exprloc:
20162 result = DW_BLOCK (attr)->data;
20163 *len = DW_BLOCK (attr)->size;
20164 break;
20165
20166 /* The DW_AT_const_value attributes are supposed to carry the
20167 symbol's value "represented as it would be on the target
20168 architecture." By the time we get here, it's already been
20169 converted to host endianness, so we just need to sign- or
20170 zero-extend it as appropriate. */
20171 case DW_FORM_data1:
20172 type = die_type (die, cu);
20173 result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
20174 if (result == NULL)
20175 result = write_constant_as_bytes (obstack, byte_order,
20176 type, value, len);
20177 break;
20178 case DW_FORM_data2:
20179 type = die_type (die, cu);
20180 result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
20181 if (result == NULL)
20182 result = write_constant_as_bytes (obstack, byte_order,
20183 type, value, len);
20184 break;
20185 case DW_FORM_data4:
20186 type = die_type (die, cu);
20187 result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
20188 if (result == NULL)
20189 result = write_constant_as_bytes (obstack, byte_order,
20190 type, value, len);
20191 break;
20192 case DW_FORM_data8:
20193 type = die_type (die, cu);
20194 result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
20195 if (result == NULL)
20196 result = write_constant_as_bytes (obstack, byte_order,
20197 type, value, len);
20198 break;
20199
20200 case DW_FORM_sdata:
20201 type = die_type (die, cu);
20202 result = write_constant_as_bytes (obstack, byte_order,
20203 type, DW_SND (attr), len);
20204 break;
20205
20206 case DW_FORM_udata:
20207 type = die_type (die, cu);
20208 result = write_constant_as_bytes (obstack, byte_order,
20209 type, DW_UNSND (attr), len);
20210 break;
20211
20212 default:
20213 complaint (&symfile_complaints,
20214 _("unsupported const value attribute form: '%s'"),
20215 dwarf_form_name (attr->form));
20216 break;
20217 }
20218
20219 return result;
20220}
20221
8a9b8146
TT
20222/* Return the type of the DIE at DIE_OFFSET in the CU named by
20223 PER_CU. */
20224
20225struct type *
b64f50a1 20226dwarf2_get_die_type (cu_offset die_offset,
8a9b8146
TT
20227 struct dwarf2_per_cu_data *per_cu)
20228{
b64f50a1
JK
20229 sect_offset die_offset_sect;
20230
8a9b8146 20231 dw2_setup (per_cu->objfile);
b64f50a1
JK
20232
20233 die_offset_sect.sect_off = per_cu->offset.sect_off + die_offset.cu_off;
20234 return get_die_type_at_offset (die_offset_sect, per_cu);
8a9b8146
TT
20235}
20236
ac9ec31b 20237/* Follow type unit SIG_TYPE referenced by SRC_DIE.
348e048f 20238 On entry *REF_CU is the CU of SRC_DIE.
ac9ec31b
DE
20239 On exit *REF_CU is the CU of the result.
20240 Returns NULL if the referenced DIE isn't found. */
348e048f
DE
20241
20242static struct die_info *
ac9ec31b
DE
20243follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
20244 struct dwarf2_cu **ref_cu)
348e048f
DE
20245{
20246 struct objfile *objfile = (*ref_cu)->objfile;
20247 struct die_info temp_die;
348e048f
DE
20248 struct dwarf2_cu *sig_cu;
20249 struct die_info *die;
20250
ac9ec31b
DE
20251 /* While it might be nice to assert sig_type->type == NULL here,
20252 we can get here for DW_AT_imported_declaration where we need
20253 the DIE not the type. */
348e048f
DE
20254
20255 /* If necessary, add it to the queue and load its DIEs. */
20256
95554aad 20257 if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
a0f42c21 20258 read_signatured_type (sig_type);
348e048f 20259
348e048f 20260 sig_cu = sig_type->per_cu.cu;
69d751e3 20261 gdb_assert (sig_cu != NULL);
3019eac3
DE
20262 gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
20263 temp_die.offset = sig_type->type_offset_in_section;
b64f50a1
JK
20264 die = htab_find_with_hash (sig_cu->die_hash, &temp_die,
20265 temp_die.offset.sect_off);
348e048f
DE
20266 if (die)
20267 {
796a7ff8
DE
20268 /* For .gdb_index version 7 keep track of included TUs.
20269 http://sourceware.org/bugzilla/show_bug.cgi?id=15021. */
20270 if (dwarf2_per_objfile->index_table != NULL
20271 && dwarf2_per_objfile->index_table->version <= 7)
20272 {
20273 VEC_safe_push (dwarf2_per_cu_ptr,
20274 (*ref_cu)->per_cu->imported_symtabs,
20275 sig_cu->per_cu);
20276 }
20277
348e048f
DE
20278 *ref_cu = sig_cu;
20279 return die;
20280 }
20281
ac9ec31b
DE
20282 return NULL;
20283}
20284
20285/* Follow signatured type referenced by ATTR in SRC_DIE.
20286 On entry *REF_CU is the CU of SRC_DIE.
20287 On exit *REF_CU is the CU of the result.
20288 The result is the DIE of the type.
20289 If the referenced type cannot be found an error is thrown. */
20290
20291static struct die_info *
ff39bb5e 20292follow_die_sig (struct die_info *src_die, const struct attribute *attr,
ac9ec31b
DE
20293 struct dwarf2_cu **ref_cu)
20294{
20295 ULONGEST signature = DW_SIGNATURE (attr);
20296 struct signatured_type *sig_type;
20297 struct die_info *die;
20298
20299 gdb_assert (attr->form == DW_FORM_ref_sig8);
20300
a2ce51a0 20301 sig_type = lookup_signatured_type (*ref_cu, signature);
ac9ec31b
DE
20302 /* sig_type will be NULL if the signatured type is missing from
20303 the debug info. */
20304 if (sig_type == NULL)
20305 {
20306 error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
20307 " from DIE at 0x%x [in module %s]"),
20308 hex_string (signature), src_die->offset.sect_off,
4262abfb 20309 objfile_name ((*ref_cu)->objfile));
ac9ec31b
DE
20310 }
20311
20312 die = follow_die_sig_1 (src_die, sig_type, ref_cu);
20313 if (die == NULL)
20314 {
20315 dump_die_for_error (src_die);
20316 error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
20317 " from DIE at 0x%x [in module %s]"),
20318 hex_string (signature), src_die->offset.sect_off,
4262abfb 20319 objfile_name ((*ref_cu)->objfile));
ac9ec31b
DE
20320 }
20321
20322 return die;
20323}
20324
20325/* Get the type specified by SIGNATURE referenced in DIE/CU,
20326 reading in and processing the type unit if necessary. */
20327
20328static struct type *
20329get_signatured_type (struct die_info *die, ULONGEST signature,
20330 struct dwarf2_cu *cu)
20331{
20332 struct signatured_type *sig_type;
20333 struct dwarf2_cu *type_cu;
20334 struct die_info *type_die;
20335 struct type *type;
20336
a2ce51a0 20337 sig_type = lookup_signatured_type (cu, signature);
ac9ec31b
DE
20338 /* sig_type will be NULL if the signatured type is missing from
20339 the debug info. */
20340 if (sig_type == NULL)
20341 {
20342 complaint (&symfile_complaints,
20343 _("Dwarf Error: Cannot find signatured DIE %s referenced"
20344 " from DIE at 0x%x [in module %s]"),
20345 hex_string (signature), die->offset.sect_off,
4262abfb 20346 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20347 return build_error_marker_type (cu, die);
20348 }
20349
20350 /* If we already know the type we're done. */
20351 if (sig_type->type != NULL)
20352 return sig_type->type;
20353
20354 type_cu = cu;
20355 type_die = follow_die_sig_1 (die, sig_type, &type_cu);
20356 if (type_die != NULL)
20357 {
20358 /* N.B. We need to call get_die_type to ensure only one type for this DIE
20359 is created. This is important, for example, because for c++ classes
20360 we need TYPE_NAME set which is only done by new_symbol. Blech. */
20361 type = read_type_die (type_die, type_cu);
20362 if (type == NULL)
20363 {
20364 complaint (&symfile_complaints,
20365 _("Dwarf Error: Cannot build signatured type %s"
20366 " referenced from DIE at 0x%x [in module %s]"),
20367 hex_string (signature), die->offset.sect_off,
4262abfb 20368 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20369 type = build_error_marker_type (cu, die);
20370 }
20371 }
20372 else
20373 {
20374 complaint (&symfile_complaints,
20375 _("Dwarf Error: Problem reading signatured DIE %s referenced"
20376 " from DIE at 0x%x [in module %s]"),
20377 hex_string (signature), die->offset.sect_off,
4262abfb 20378 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20379 type = build_error_marker_type (cu, die);
20380 }
20381 sig_type->type = type;
20382
20383 return type;
20384}
20385
20386/* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
20387 reading in and processing the type unit if necessary. */
20388
20389static struct type *
ff39bb5e 20390get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
b385a60d 20391 struct dwarf2_cu *cu) /* ARI: editCase function */
ac9ec31b
DE
20392{
20393 /* Yes, DW_AT_signature can use a non-ref_sig8 reference. */
7771576e 20394 if (attr_form_is_ref (attr))
ac9ec31b
DE
20395 {
20396 struct dwarf2_cu *type_cu = cu;
20397 struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
20398
20399 return read_type_die (type_die, type_cu);
20400 }
20401 else if (attr->form == DW_FORM_ref_sig8)
20402 {
20403 return get_signatured_type (die, DW_SIGNATURE (attr), cu);
20404 }
20405 else
20406 {
20407 complaint (&symfile_complaints,
20408 _("Dwarf Error: DW_AT_signature has bad form %s in DIE"
20409 " at 0x%x [in module %s]"),
20410 dwarf_form_name (attr->form), die->offset.sect_off,
4262abfb 20411 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20412 return build_error_marker_type (cu, die);
20413 }
348e048f
DE
20414}
20415
e5fe5e75 20416/* Load the DIEs associated with type unit PER_CU into memory. */
348e048f
DE
20417
20418static void
e5fe5e75 20419load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
348e048f 20420{
52dc124a 20421 struct signatured_type *sig_type;
348e048f 20422
f4dc4d17
DE
20423 /* Caller is responsible for ensuring type_unit_groups don't get here. */
20424 gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
20425
6721b2ec
DE
20426 /* We have the per_cu, but we need the signatured_type.
20427 Fortunately this is an easy translation. */
20428 gdb_assert (per_cu->is_debug_types);
20429 sig_type = (struct signatured_type *) per_cu;
348e048f 20430
6721b2ec 20431 gdb_assert (per_cu->cu == NULL);
348e048f 20432
52dc124a 20433 read_signatured_type (sig_type);
348e048f 20434
6721b2ec 20435 gdb_assert (per_cu->cu != NULL);
348e048f
DE
20436}
20437
dee91e82
DE
20438/* die_reader_func for read_signatured_type.
20439 This is identical to load_full_comp_unit_reader,
20440 but is kept separate for now. */
348e048f
DE
20441
20442static void
dee91e82 20443read_signatured_type_reader (const struct die_reader_specs *reader,
d521ce57 20444 const gdb_byte *info_ptr,
dee91e82
DE
20445 struct die_info *comp_unit_die,
20446 int has_children,
20447 void *data)
348e048f 20448{
dee91e82 20449 struct dwarf2_cu *cu = reader->cu;
348e048f 20450
dee91e82
DE
20451 gdb_assert (cu->die_hash == NULL);
20452 cu->die_hash =
20453 htab_create_alloc_ex (cu->header.length / 12,
20454 die_hash,
20455 die_eq,
20456 NULL,
20457 &cu->comp_unit_obstack,
20458 hashtab_obstack_allocate,
20459 dummy_obstack_deallocate);
348e048f 20460
dee91e82
DE
20461 if (has_children)
20462 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
20463 &info_ptr, comp_unit_die);
20464 cu->dies = comp_unit_die;
20465 /* comp_unit_die is not stored in die_hash, no need. */
348e048f
DE
20466
20467 /* We try not to read any attributes in this function, because not
9cdd5dbd 20468 all CUs needed for references have been loaded yet, and symbol
348e048f 20469 table processing isn't initialized. But we have to set the CU language,
dee91e82
DE
20470 or we won't be able to build types correctly.
20471 Similarly, if we do not read the producer, we can not apply
20472 producer-specific interpretation. */
95554aad 20473 prepare_one_comp_unit (cu, cu->dies, language_minimal);
dee91e82 20474}
348e048f 20475
3019eac3
DE
20476/* Read in a signatured type and build its CU and DIEs.
20477 If the type is a stub for the real type in a DWO file,
20478 read in the real type from the DWO file as well. */
dee91e82
DE
20479
20480static void
20481read_signatured_type (struct signatured_type *sig_type)
20482{
20483 struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
348e048f 20484
3019eac3 20485 gdb_assert (per_cu->is_debug_types);
dee91e82 20486 gdb_assert (per_cu->cu == NULL);
348e048f 20487
f4dc4d17
DE
20488 init_cutu_and_read_dies (per_cu, NULL, 0, 1,
20489 read_signatured_type_reader, NULL);
7ee85ab1 20490 sig_type->per_cu.tu_read = 1;
c906108c
SS
20491}
20492
c906108c
SS
20493/* Decode simple location descriptions.
20494 Given a pointer to a dwarf block that defines a location, compute
20495 the location and return the value.
20496
4cecd739
DJ
20497 NOTE drow/2003-11-18: This function is called in two situations
20498 now: for the address of static or global variables (partial symbols
20499 only) and for offsets into structures which are expected to be
20500 (more or less) constant. The partial symbol case should go away,
20501 and only the constant case should remain. That will let this
20502 function complain more accurately. A few special modes are allowed
20503 without complaint for global variables (for instance, global
20504 register values and thread-local values).
c906108c
SS
20505
20506 A location description containing no operations indicates that the
4cecd739 20507 object is optimized out. The return value is 0 for that case.
6b992462
DJ
20508 FIXME drow/2003-11-16: No callers check for this case any more; soon all
20509 callers will only want a very basic result and this can become a
21ae7a4d
JK
20510 complaint.
20511
20512 Note that stack[0] is unused except as a default error return. */
c906108c
SS
20513
20514static CORE_ADDR
e7c27a73 20515decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
c906108c 20516{
e7c27a73 20517 struct objfile *objfile = cu->objfile;
56eb65bd
SP
20518 size_t i;
20519 size_t size = blk->size;
d521ce57 20520 const gdb_byte *data = blk->data;
21ae7a4d
JK
20521 CORE_ADDR stack[64];
20522 int stacki;
20523 unsigned int bytes_read, unsnd;
20524 gdb_byte op;
c906108c 20525
21ae7a4d
JK
20526 i = 0;
20527 stacki = 0;
20528 stack[stacki] = 0;
20529 stack[++stacki] = 0;
20530
20531 while (i < size)
20532 {
20533 op = data[i++];
20534 switch (op)
20535 {
20536 case DW_OP_lit0:
20537 case DW_OP_lit1:
20538 case DW_OP_lit2:
20539 case DW_OP_lit3:
20540 case DW_OP_lit4:
20541 case DW_OP_lit5:
20542 case DW_OP_lit6:
20543 case DW_OP_lit7:
20544 case DW_OP_lit8:
20545 case DW_OP_lit9:
20546 case DW_OP_lit10:
20547 case DW_OP_lit11:
20548 case DW_OP_lit12:
20549 case DW_OP_lit13:
20550 case DW_OP_lit14:
20551 case DW_OP_lit15:
20552 case DW_OP_lit16:
20553 case DW_OP_lit17:
20554 case DW_OP_lit18:
20555 case DW_OP_lit19:
20556 case DW_OP_lit20:
20557 case DW_OP_lit21:
20558 case DW_OP_lit22:
20559 case DW_OP_lit23:
20560 case DW_OP_lit24:
20561 case DW_OP_lit25:
20562 case DW_OP_lit26:
20563 case DW_OP_lit27:
20564 case DW_OP_lit28:
20565 case DW_OP_lit29:
20566 case DW_OP_lit30:
20567 case DW_OP_lit31:
20568 stack[++stacki] = op - DW_OP_lit0;
20569 break;
f1bea926 20570
21ae7a4d
JK
20571 case DW_OP_reg0:
20572 case DW_OP_reg1:
20573 case DW_OP_reg2:
20574 case DW_OP_reg3:
20575 case DW_OP_reg4:
20576 case DW_OP_reg5:
20577 case DW_OP_reg6:
20578 case DW_OP_reg7:
20579 case DW_OP_reg8:
20580 case DW_OP_reg9:
20581 case DW_OP_reg10:
20582 case DW_OP_reg11:
20583 case DW_OP_reg12:
20584 case DW_OP_reg13:
20585 case DW_OP_reg14:
20586 case DW_OP_reg15:
20587 case DW_OP_reg16:
20588 case DW_OP_reg17:
20589 case DW_OP_reg18:
20590 case DW_OP_reg19:
20591 case DW_OP_reg20:
20592 case DW_OP_reg21:
20593 case DW_OP_reg22:
20594 case DW_OP_reg23:
20595 case DW_OP_reg24:
20596 case DW_OP_reg25:
20597 case DW_OP_reg26:
20598 case DW_OP_reg27:
20599 case DW_OP_reg28:
20600 case DW_OP_reg29:
20601 case DW_OP_reg30:
20602 case DW_OP_reg31:
20603 stack[++stacki] = op - DW_OP_reg0;
20604 if (i < size)
20605 dwarf2_complex_location_expr_complaint ();
20606 break;
c906108c 20607
21ae7a4d
JK
20608 case DW_OP_regx:
20609 unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
20610 i += bytes_read;
20611 stack[++stacki] = unsnd;
20612 if (i < size)
20613 dwarf2_complex_location_expr_complaint ();
20614 break;
c906108c 20615
21ae7a4d
JK
20616 case DW_OP_addr:
20617 stack[++stacki] = read_address (objfile->obfd, &data[i],
20618 cu, &bytes_read);
20619 i += bytes_read;
20620 break;
d53d4ac5 20621
21ae7a4d
JK
20622 case DW_OP_const1u:
20623 stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
20624 i += 1;
20625 break;
20626
20627 case DW_OP_const1s:
20628 stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
20629 i += 1;
20630 break;
20631
20632 case DW_OP_const2u:
20633 stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
20634 i += 2;
20635 break;
20636
20637 case DW_OP_const2s:
20638 stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
20639 i += 2;
20640 break;
d53d4ac5 20641
21ae7a4d
JK
20642 case DW_OP_const4u:
20643 stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
20644 i += 4;
20645 break;
20646
20647 case DW_OP_const4s:
20648 stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
20649 i += 4;
20650 break;
20651
585861ea
JK
20652 case DW_OP_const8u:
20653 stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
20654 i += 8;
20655 break;
20656
21ae7a4d
JK
20657 case DW_OP_constu:
20658 stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
20659 &bytes_read);
20660 i += bytes_read;
20661 break;
20662
20663 case DW_OP_consts:
20664 stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
20665 i += bytes_read;
20666 break;
20667
20668 case DW_OP_dup:
20669 stack[stacki + 1] = stack[stacki];
20670 stacki++;
20671 break;
20672
20673 case DW_OP_plus:
20674 stack[stacki - 1] += stack[stacki];
20675 stacki--;
20676 break;
20677
20678 case DW_OP_plus_uconst:
20679 stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
20680 &bytes_read);
20681 i += bytes_read;
20682 break;
20683
20684 case DW_OP_minus:
20685 stack[stacki - 1] -= stack[stacki];
20686 stacki--;
20687 break;
20688
20689 case DW_OP_deref:
20690 /* If we're not the last op, then we definitely can't encode
20691 this using GDB's address_class enum. This is valid for partial
20692 global symbols, although the variable's address will be bogus
20693 in the psymtab. */
20694 if (i < size)
20695 dwarf2_complex_location_expr_complaint ();
20696 break;
20697
20698 case DW_OP_GNU_push_tls_address:
20699 /* The top of the stack has the offset from the beginning
20700 of the thread control block at which the variable is located. */
20701 /* Nothing should follow this operator, so the top of stack would
20702 be returned. */
20703 /* This is valid for partial global symbols, but the variable's
585861ea
JK
20704 address will be bogus in the psymtab. Make it always at least
20705 non-zero to not look as a variable garbage collected by linker
20706 which have DW_OP_addr 0. */
21ae7a4d
JK
20707 if (i < size)
20708 dwarf2_complex_location_expr_complaint ();
585861ea 20709 stack[stacki]++;
21ae7a4d
JK
20710 break;
20711
20712 case DW_OP_GNU_uninit:
20713 break;
20714
3019eac3 20715 case DW_OP_GNU_addr_index:
49f6c839 20716 case DW_OP_GNU_const_index:
3019eac3
DE
20717 stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
20718 &bytes_read);
20719 i += bytes_read;
20720 break;
20721
21ae7a4d
JK
20722 default:
20723 {
f39c6ffd 20724 const char *name = get_DW_OP_name (op);
21ae7a4d
JK
20725
20726 if (name)
20727 complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
20728 name);
20729 else
20730 complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
20731 op);
20732 }
20733
20734 return (stack[stacki]);
d53d4ac5 20735 }
3c6e0cb3 20736
21ae7a4d
JK
20737 /* Enforce maximum stack depth of SIZE-1 to avoid writing
20738 outside of the allocated space. Also enforce minimum>0. */
20739 if (stacki >= ARRAY_SIZE (stack) - 1)
20740 {
20741 complaint (&symfile_complaints,
20742 _("location description stack overflow"));
20743 return 0;
20744 }
20745
20746 if (stacki <= 0)
20747 {
20748 complaint (&symfile_complaints,
20749 _("location description stack underflow"));
20750 return 0;
20751 }
20752 }
20753 return (stack[stacki]);
c906108c
SS
20754}
20755
20756/* memory allocation interface */
20757
c906108c 20758static struct dwarf_block *
7b5a2f43 20759dwarf_alloc_block (struct dwarf2_cu *cu)
c906108c
SS
20760{
20761 struct dwarf_block *blk;
20762
20763 blk = (struct dwarf_block *)
7b5a2f43 20764 obstack_alloc (&cu->comp_unit_obstack, sizeof (struct dwarf_block));
c906108c
SS
20765 return (blk);
20766}
20767
c906108c 20768static struct die_info *
b60c80d6 20769dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
c906108c
SS
20770{
20771 struct die_info *die;
b60c80d6
DJ
20772 size_t size = sizeof (struct die_info);
20773
20774 if (num_attrs > 1)
20775 size += (num_attrs - 1) * sizeof (struct attribute);
c906108c 20776
b60c80d6 20777 die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
c906108c
SS
20778 memset (die, 0, sizeof (struct die_info));
20779 return (die);
20780}
2e276125
JB
20781
20782\f
20783/* Macro support. */
20784
233d95b5
JK
20785/* Return file name relative to the compilation directory of file number I in
20786 *LH's file name table. The result is allocated using xmalloc; the caller is
2e276125 20787 responsible for freeing it. */
233d95b5 20788
2e276125 20789static char *
233d95b5 20790file_file_name (int file, struct line_header *lh)
2e276125 20791{
6a83a1e6
EZ
20792 /* Is the file number a valid index into the line header's file name
20793 table? Remember that file numbers start with one, not zero. */
20794 if (1 <= file && file <= lh->num_file_names)
20795 {
20796 struct file_entry *fe = &lh->file_names[file - 1];
6e70227d 20797
afa6c9ab
SL
20798 if (IS_ABSOLUTE_PATH (fe->name) || fe->dir_index == 0
20799 || lh->include_dirs == NULL)
6a83a1e6 20800 return xstrdup (fe->name);
233d95b5
JK
20801 return concat (lh->include_dirs[fe->dir_index - 1], SLASH_STRING,
20802 fe->name, NULL);
6a83a1e6 20803 }
2e276125
JB
20804 else
20805 {
6a83a1e6
EZ
20806 /* The compiler produced a bogus file number. We can at least
20807 record the macro definitions made in the file, even if we
20808 won't be able to find the file by name. */
20809 char fake_name[80];
9a619af0 20810
8c042590
PM
20811 xsnprintf (fake_name, sizeof (fake_name),
20812 "<bad macro file number %d>", file);
2e276125 20813
6e70227d 20814 complaint (&symfile_complaints,
6a83a1e6
EZ
20815 _("bad file number in macro information (%d)"),
20816 file);
2e276125 20817
6a83a1e6 20818 return xstrdup (fake_name);
2e276125
JB
20819 }
20820}
20821
233d95b5
JK
20822/* Return the full name of file number I in *LH's file name table.
20823 Use COMP_DIR as the name of the current directory of the
20824 compilation. The result is allocated using xmalloc; the caller is
20825 responsible for freeing it. */
20826static char *
20827file_full_name (int file, struct line_header *lh, const char *comp_dir)
20828{
20829 /* Is the file number a valid index into the line header's file name
20830 table? Remember that file numbers start with one, not zero. */
20831 if (1 <= file && file <= lh->num_file_names)
20832 {
20833 char *relative = file_file_name (file, lh);
20834
20835 if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
20836 return relative;
20837 return reconcat (relative, comp_dir, SLASH_STRING, relative, NULL);
20838 }
20839 else
20840 return file_file_name (file, lh);
20841}
20842
2e276125
JB
20843
20844static struct macro_source_file *
20845macro_start_file (int file, int line,
20846 struct macro_source_file *current_file,
43f3e411 20847 struct line_header *lh)
2e276125 20848{
233d95b5
JK
20849 /* File name relative to the compilation directory of this source file. */
20850 char *file_name = file_file_name (file, lh);
2e276125 20851
2e276125 20852 if (! current_file)
abc9d0dc 20853 {
fc474241
DE
20854 /* Note: We don't create a macro table for this compilation unit
20855 at all until we actually get a filename. */
43f3e411 20856 struct macro_table *macro_table = get_macro_table ();
fc474241 20857
abc9d0dc
TT
20858 /* If we have no current file, then this must be the start_file
20859 directive for the compilation unit's main source file. */
fc474241
DE
20860 current_file = macro_set_main (macro_table, file_name);
20861 macro_define_special (macro_table);
abc9d0dc 20862 }
2e276125 20863 else
233d95b5 20864 current_file = macro_include (current_file, line, file_name);
2e276125 20865
233d95b5 20866 xfree (file_name);
6e70227d 20867
2e276125
JB
20868 return current_file;
20869}
20870
20871
20872/* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
20873 followed by a null byte. */
20874static char *
20875copy_string (const char *buf, int len)
20876{
20877 char *s = xmalloc (len + 1);
9a619af0 20878
2e276125
JB
20879 memcpy (s, buf, len);
20880 s[len] = '\0';
2e276125
JB
20881 return s;
20882}
20883
20884
20885static const char *
20886consume_improper_spaces (const char *p, const char *body)
20887{
20888 if (*p == ' ')
20889 {
4d3c2250 20890 complaint (&symfile_complaints,
3e43a32a
MS
20891 _("macro definition contains spaces "
20892 "in formal argument list:\n`%s'"),
4d3c2250 20893 body);
2e276125
JB
20894
20895 while (*p == ' ')
20896 p++;
20897 }
20898
20899 return p;
20900}
20901
20902
20903static void
20904parse_macro_definition (struct macro_source_file *file, int line,
20905 const char *body)
20906{
20907 const char *p;
20908
20909 /* The body string takes one of two forms. For object-like macro
20910 definitions, it should be:
20911
20912 <macro name> " " <definition>
20913
20914 For function-like macro definitions, it should be:
20915
20916 <macro name> "() " <definition>
20917 or
20918 <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
20919
20920 Spaces may appear only where explicitly indicated, and in the
20921 <definition>.
20922
20923 The Dwarf 2 spec says that an object-like macro's name is always
20924 followed by a space, but versions of GCC around March 2002 omit
6e70227d 20925 the space when the macro's definition is the empty string.
2e276125
JB
20926
20927 The Dwarf 2 spec says that there should be no spaces between the
20928 formal arguments in a function-like macro's formal argument list,
20929 but versions of GCC around March 2002 include spaces after the
20930 commas. */
20931
20932
20933 /* Find the extent of the macro name. The macro name is terminated
20934 by either a space or null character (for an object-like macro) or
20935 an opening paren (for a function-like macro). */
20936 for (p = body; *p; p++)
20937 if (*p == ' ' || *p == '(')
20938 break;
20939
20940 if (*p == ' ' || *p == '\0')
20941 {
20942 /* It's an object-like macro. */
20943 int name_len = p - body;
20944 char *name = copy_string (body, name_len);
20945 const char *replacement;
20946
20947 if (*p == ' ')
20948 replacement = body + name_len + 1;
20949 else
20950 {
4d3c2250 20951 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
20952 replacement = body + name_len;
20953 }
6e70227d 20954
2e276125
JB
20955 macro_define_object (file, line, name, replacement);
20956
20957 xfree (name);
20958 }
20959 else if (*p == '(')
20960 {
20961 /* It's a function-like macro. */
20962 char *name = copy_string (body, p - body);
20963 int argc = 0;
20964 int argv_size = 1;
20965 char **argv = xmalloc (argv_size * sizeof (*argv));
20966
20967 p++;
20968
20969 p = consume_improper_spaces (p, body);
20970
20971 /* Parse the formal argument list. */
20972 while (*p && *p != ')')
20973 {
20974 /* Find the extent of the current argument name. */
20975 const char *arg_start = p;
20976
20977 while (*p && *p != ',' && *p != ')' && *p != ' ')
20978 p++;
20979
20980 if (! *p || p == arg_start)
4d3c2250 20981 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
20982 else
20983 {
20984 /* Make sure argv has room for the new argument. */
20985 if (argc >= argv_size)
20986 {
20987 argv_size *= 2;
20988 argv = xrealloc (argv, argv_size * sizeof (*argv));
20989 }
20990
20991 argv[argc++] = copy_string (arg_start, p - arg_start);
20992 }
20993
20994 p = consume_improper_spaces (p, body);
20995
20996 /* Consume the comma, if present. */
20997 if (*p == ',')
20998 {
20999 p++;
21000
21001 p = consume_improper_spaces (p, body);
21002 }
21003 }
21004
21005 if (*p == ')')
21006 {
21007 p++;
21008
21009 if (*p == ' ')
21010 /* Perfectly formed definition, no complaints. */
21011 macro_define_function (file, line, name,
6e70227d 21012 argc, (const char **) argv,
2e276125
JB
21013 p + 1);
21014 else if (*p == '\0')
21015 {
21016 /* Complain, but do define it. */
4d3c2250 21017 dwarf2_macro_malformed_definition_complaint (body);
2e276125 21018 macro_define_function (file, line, name,
6e70227d 21019 argc, (const char **) argv,
2e276125
JB
21020 p);
21021 }
21022 else
21023 /* Just complain. */
4d3c2250 21024 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21025 }
21026 else
21027 /* Just complain. */
4d3c2250 21028 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21029
21030 xfree (name);
21031 {
21032 int i;
21033
21034 for (i = 0; i < argc; i++)
21035 xfree (argv[i]);
21036 }
21037 xfree (argv);
21038 }
21039 else
4d3c2250 21040 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21041}
21042
cf2c3c16
TT
21043/* Skip some bytes from BYTES according to the form given in FORM.
21044 Returns the new pointer. */
2e276125 21045
d521ce57
TT
21046static const gdb_byte *
21047skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
cf2c3c16
TT
21048 enum dwarf_form form,
21049 unsigned int offset_size,
21050 struct dwarf2_section_info *section)
2e276125 21051{
cf2c3c16 21052 unsigned int bytes_read;
2e276125 21053
cf2c3c16 21054 switch (form)
2e276125 21055 {
cf2c3c16
TT
21056 case DW_FORM_data1:
21057 case DW_FORM_flag:
21058 ++bytes;
21059 break;
21060
21061 case DW_FORM_data2:
21062 bytes += 2;
21063 break;
21064
21065 case DW_FORM_data4:
21066 bytes += 4;
21067 break;
21068
21069 case DW_FORM_data8:
21070 bytes += 8;
21071 break;
21072
21073 case DW_FORM_string:
21074 read_direct_string (abfd, bytes, &bytes_read);
21075 bytes += bytes_read;
21076 break;
21077
21078 case DW_FORM_sec_offset:
21079 case DW_FORM_strp:
36586728 21080 case DW_FORM_GNU_strp_alt:
cf2c3c16
TT
21081 bytes += offset_size;
21082 break;
21083
21084 case DW_FORM_block:
21085 bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
21086 bytes += bytes_read;
21087 break;
21088
21089 case DW_FORM_block1:
21090 bytes += 1 + read_1_byte (abfd, bytes);
21091 break;
21092 case DW_FORM_block2:
21093 bytes += 2 + read_2_bytes (abfd, bytes);
21094 break;
21095 case DW_FORM_block4:
21096 bytes += 4 + read_4_bytes (abfd, bytes);
21097 break;
21098
21099 case DW_FORM_sdata:
21100 case DW_FORM_udata:
3019eac3
DE
21101 case DW_FORM_GNU_addr_index:
21102 case DW_FORM_GNU_str_index:
d521ce57 21103 bytes = gdb_skip_leb128 (bytes, buffer_end);
f664829e
DE
21104 if (bytes == NULL)
21105 {
21106 dwarf2_section_buffer_overflow_complaint (section);
21107 return NULL;
21108 }
cf2c3c16
TT
21109 break;
21110
21111 default:
21112 {
21113 complain:
21114 complaint (&symfile_complaints,
21115 _("invalid form 0x%x in `%s'"),
a32a8923 21116 form, get_section_name (section));
cf2c3c16
TT
21117 return NULL;
21118 }
2e276125
JB
21119 }
21120
cf2c3c16
TT
21121 return bytes;
21122}
757a13d0 21123
cf2c3c16
TT
21124/* A helper for dwarf_decode_macros that handles skipping an unknown
21125 opcode. Returns an updated pointer to the macro data buffer; or,
21126 on error, issues a complaint and returns NULL. */
757a13d0 21127
d521ce57 21128static const gdb_byte *
cf2c3c16 21129skip_unknown_opcode (unsigned int opcode,
d521ce57
TT
21130 const gdb_byte **opcode_definitions,
21131 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
cf2c3c16
TT
21132 bfd *abfd,
21133 unsigned int offset_size,
21134 struct dwarf2_section_info *section)
21135{
21136 unsigned int bytes_read, i;
21137 unsigned long arg;
d521ce57 21138 const gdb_byte *defn;
2e276125 21139
cf2c3c16 21140 if (opcode_definitions[opcode] == NULL)
2e276125 21141 {
cf2c3c16
TT
21142 complaint (&symfile_complaints,
21143 _("unrecognized DW_MACFINO opcode 0x%x"),
21144 opcode);
21145 return NULL;
21146 }
2e276125 21147
cf2c3c16
TT
21148 defn = opcode_definitions[opcode];
21149 arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
21150 defn += bytes_read;
2e276125 21151
cf2c3c16
TT
21152 for (i = 0; i < arg; ++i)
21153 {
f664829e
DE
21154 mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end, defn[i], offset_size,
21155 section);
cf2c3c16
TT
21156 if (mac_ptr == NULL)
21157 {
21158 /* skip_form_bytes already issued the complaint. */
21159 return NULL;
21160 }
21161 }
757a13d0 21162
cf2c3c16
TT
21163 return mac_ptr;
21164}
757a13d0 21165
cf2c3c16
TT
21166/* A helper function which parses the header of a macro section.
21167 If the macro section is the extended (for now called "GNU") type,
21168 then this updates *OFFSET_SIZE. Returns a pointer to just after
21169 the header, or issues a complaint and returns NULL on error. */
757a13d0 21170
d521ce57
TT
21171static const gdb_byte *
21172dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
cf2c3c16 21173 bfd *abfd,
d521ce57 21174 const gdb_byte *mac_ptr,
cf2c3c16
TT
21175 unsigned int *offset_size,
21176 int section_is_gnu)
21177{
21178 memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
757a13d0 21179
cf2c3c16
TT
21180 if (section_is_gnu)
21181 {
21182 unsigned int version, flags;
757a13d0 21183
cf2c3c16
TT
21184 version = read_2_bytes (abfd, mac_ptr);
21185 if (version != 4)
21186 {
21187 complaint (&symfile_complaints,
21188 _("unrecognized version `%d' in .debug_macro section"),
21189 version);
21190 return NULL;
21191 }
21192 mac_ptr += 2;
757a13d0 21193
cf2c3c16
TT
21194 flags = read_1_byte (abfd, mac_ptr);
21195 ++mac_ptr;
21196 *offset_size = (flags & 1) ? 8 : 4;
757a13d0 21197
cf2c3c16
TT
21198 if ((flags & 2) != 0)
21199 /* We don't need the line table offset. */
21200 mac_ptr += *offset_size;
757a13d0 21201
cf2c3c16
TT
21202 /* Vendor opcode descriptions. */
21203 if ((flags & 4) != 0)
21204 {
21205 unsigned int i, count;
757a13d0 21206
cf2c3c16
TT
21207 count = read_1_byte (abfd, mac_ptr);
21208 ++mac_ptr;
21209 for (i = 0; i < count; ++i)
21210 {
21211 unsigned int opcode, bytes_read;
21212 unsigned long arg;
21213
21214 opcode = read_1_byte (abfd, mac_ptr);
21215 ++mac_ptr;
21216 opcode_definitions[opcode] = mac_ptr;
21217 arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21218 mac_ptr += bytes_read;
21219 mac_ptr += arg;
21220 }
757a13d0 21221 }
cf2c3c16 21222 }
757a13d0 21223
cf2c3c16
TT
21224 return mac_ptr;
21225}
757a13d0 21226
cf2c3c16 21227/* A helper for dwarf_decode_macros that handles the GNU extensions,
8fc3fc34 21228 including DW_MACRO_GNU_transparent_include. */
cf2c3c16
TT
21229
21230static void
d521ce57
TT
21231dwarf_decode_macro_bytes (bfd *abfd,
21232 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
cf2c3c16 21233 struct macro_source_file *current_file,
43f3e411 21234 struct line_header *lh,
cf2c3c16 21235 struct dwarf2_section_info *section,
36586728 21236 int section_is_gnu, int section_is_dwz,
cf2c3c16 21237 unsigned int offset_size,
8fc3fc34 21238 htab_t include_hash)
cf2c3c16 21239{
4d663531 21240 struct objfile *objfile = dwarf2_per_objfile->objfile;
cf2c3c16
TT
21241 enum dwarf_macro_record_type macinfo_type;
21242 int at_commandline;
d521ce57 21243 const gdb_byte *opcode_definitions[256];
757a13d0 21244
cf2c3c16
TT
21245 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21246 &offset_size, section_is_gnu);
21247 if (mac_ptr == NULL)
21248 {
21249 /* We already issued a complaint. */
21250 return;
21251 }
757a13d0
JK
21252
21253 /* Determines if GDB is still before first DW_MACINFO_start_file. If true
21254 GDB is still reading the definitions from command line. First
21255 DW_MACINFO_start_file will need to be ignored as it was already executed
21256 to create CURRENT_FILE for the main source holding also the command line
21257 definitions. On first met DW_MACINFO_start_file this flag is reset to
21258 normally execute all the remaining DW_MACINFO_start_file macinfos. */
21259
21260 at_commandline = 1;
21261
21262 do
21263 {
21264 /* Do we at least have room for a macinfo type byte? */
21265 if (mac_ptr >= mac_end)
21266 {
f664829e 21267 dwarf2_section_buffer_overflow_complaint (section);
757a13d0
JK
21268 break;
21269 }
21270
21271 macinfo_type = read_1_byte (abfd, mac_ptr);
21272 mac_ptr++;
21273
cf2c3c16
TT
21274 /* Note that we rely on the fact that the corresponding GNU and
21275 DWARF constants are the same. */
757a13d0
JK
21276 switch (macinfo_type)
21277 {
21278 /* A zero macinfo type indicates the end of the macro
21279 information. */
21280 case 0:
21281 break;
2e276125 21282
cf2c3c16
TT
21283 case DW_MACRO_GNU_define:
21284 case DW_MACRO_GNU_undef:
21285 case DW_MACRO_GNU_define_indirect:
21286 case DW_MACRO_GNU_undef_indirect:
36586728
TT
21287 case DW_MACRO_GNU_define_indirect_alt:
21288 case DW_MACRO_GNU_undef_indirect_alt:
2e276125 21289 {
891d2f0b 21290 unsigned int bytes_read;
2e276125 21291 int line;
d521ce57 21292 const char *body;
cf2c3c16 21293 int is_define;
2e276125 21294
cf2c3c16
TT
21295 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21296 mac_ptr += bytes_read;
21297
21298 if (macinfo_type == DW_MACRO_GNU_define
21299 || macinfo_type == DW_MACRO_GNU_undef)
21300 {
21301 body = read_direct_string (abfd, mac_ptr, &bytes_read);
21302 mac_ptr += bytes_read;
21303 }
21304 else
21305 {
21306 LONGEST str_offset;
21307
21308 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
21309 mac_ptr += offset_size;
2e276125 21310
36586728 21311 if (macinfo_type == DW_MACRO_GNU_define_indirect_alt
f7a35f02
TT
21312 || macinfo_type == DW_MACRO_GNU_undef_indirect_alt
21313 || section_is_dwz)
36586728
TT
21314 {
21315 struct dwz_file *dwz = dwarf2_get_dwz_file ();
21316
21317 body = read_indirect_string_from_dwz (dwz, str_offset);
21318 }
21319 else
21320 body = read_indirect_string_at_offset (abfd, str_offset);
cf2c3c16
TT
21321 }
21322
21323 is_define = (macinfo_type == DW_MACRO_GNU_define
36586728
TT
21324 || macinfo_type == DW_MACRO_GNU_define_indirect
21325 || macinfo_type == DW_MACRO_GNU_define_indirect_alt);
2e276125 21326 if (! current_file)
757a13d0
JK
21327 {
21328 /* DWARF violation as no main source is present. */
21329 complaint (&symfile_complaints,
21330 _("debug info with no main source gives macro %s "
21331 "on line %d: %s"),
cf2c3c16
TT
21332 is_define ? _("definition") : _("undefinition"),
21333 line, body);
757a13d0
JK
21334 break;
21335 }
3e43a32a
MS
21336 if ((line == 0 && !at_commandline)
21337 || (line != 0 && at_commandline))
4d3c2250 21338 complaint (&symfile_complaints,
757a13d0
JK
21339 _("debug info gives %s macro %s with %s line %d: %s"),
21340 at_commandline ? _("command-line") : _("in-file"),
cf2c3c16 21341 is_define ? _("definition") : _("undefinition"),
757a13d0
JK
21342 line == 0 ? _("zero") : _("non-zero"), line, body);
21343
cf2c3c16 21344 if (is_define)
757a13d0 21345 parse_macro_definition (current_file, line, body);
cf2c3c16
TT
21346 else
21347 {
21348 gdb_assert (macinfo_type == DW_MACRO_GNU_undef
36586728
TT
21349 || macinfo_type == DW_MACRO_GNU_undef_indirect
21350 || macinfo_type == DW_MACRO_GNU_undef_indirect_alt);
cf2c3c16
TT
21351 macro_undef (current_file, line, body);
21352 }
2e276125
JB
21353 }
21354 break;
21355
cf2c3c16 21356 case DW_MACRO_GNU_start_file:
2e276125 21357 {
891d2f0b 21358 unsigned int bytes_read;
2e276125
JB
21359 int line, file;
21360
21361 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21362 mac_ptr += bytes_read;
21363 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21364 mac_ptr += bytes_read;
21365
3e43a32a
MS
21366 if ((line == 0 && !at_commandline)
21367 || (line != 0 && at_commandline))
757a13d0
JK
21368 complaint (&symfile_complaints,
21369 _("debug info gives source %d included "
21370 "from %s at %s line %d"),
21371 file, at_commandline ? _("command-line") : _("file"),
21372 line == 0 ? _("zero") : _("non-zero"), line);
21373
21374 if (at_commandline)
21375 {
cf2c3c16
TT
21376 /* This DW_MACRO_GNU_start_file was executed in the
21377 pass one. */
757a13d0
JK
21378 at_commandline = 0;
21379 }
21380 else
43f3e411 21381 current_file = macro_start_file (file, line, current_file, lh);
2e276125
JB
21382 }
21383 break;
21384
cf2c3c16 21385 case DW_MACRO_GNU_end_file:
2e276125 21386 if (! current_file)
4d3c2250 21387 complaint (&symfile_complaints,
3e43a32a
MS
21388 _("macro debug info has an unmatched "
21389 "`close_file' directive"));
2e276125
JB
21390 else
21391 {
21392 current_file = current_file->included_by;
21393 if (! current_file)
21394 {
cf2c3c16 21395 enum dwarf_macro_record_type next_type;
2e276125
JB
21396
21397 /* GCC circa March 2002 doesn't produce the zero
21398 type byte marking the end of the compilation
21399 unit. Complain if it's not there, but exit no
21400 matter what. */
21401
21402 /* Do we at least have room for a macinfo type byte? */
21403 if (mac_ptr >= mac_end)
21404 {
f664829e 21405 dwarf2_section_buffer_overflow_complaint (section);
2e276125
JB
21406 return;
21407 }
21408
21409 /* We don't increment mac_ptr here, so this is just
21410 a look-ahead. */
21411 next_type = read_1_byte (abfd, mac_ptr);
21412 if (next_type != 0)
4d3c2250 21413 complaint (&symfile_complaints,
3e43a32a
MS
21414 _("no terminating 0-type entry for "
21415 "macros in `.debug_macinfo' section"));
2e276125
JB
21416
21417 return;
21418 }
21419 }
21420 break;
21421
cf2c3c16 21422 case DW_MACRO_GNU_transparent_include:
36586728 21423 case DW_MACRO_GNU_transparent_include_alt:
cf2c3c16
TT
21424 {
21425 LONGEST offset;
8fc3fc34 21426 void **slot;
a036ba48
TT
21427 bfd *include_bfd = abfd;
21428 struct dwarf2_section_info *include_section = section;
21429 struct dwarf2_section_info alt_section;
d521ce57 21430 const gdb_byte *include_mac_end = mac_end;
a036ba48 21431 int is_dwz = section_is_dwz;
d521ce57 21432 const gdb_byte *new_mac_ptr;
cf2c3c16
TT
21433
21434 offset = read_offset_1 (abfd, mac_ptr, offset_size);
21435 mac_ptr += offset_size;
21436
a036ba48
TT
21437 if (macinfo_type == DW_MACRO_GNU_transparent_include_alt)
21438 {
21439 struct dwz_file *dwz = dwarf2_get_dwz_file ();
21440
4d663531 21441 dwarf2_read_section (objfile, &dwz->macro);
a036ba48 21442
a036ba48 21443 include_section = &dwz->macro;
a32a8923 21444 include_bfd = get_section_bfd_owner (include_section);
a036ba48
TT
21445 include_mac_end = dwz->macro.buffer + dwz->macro.size;
21446 is_dwz = 1;
21447 }
21448
21449 new_mac_ptr = include_section->buffer + offset;
21450 slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
21451
8fc3fc34
TT
21452 if (*slot != NULL)
21453 {
21454 /* This has actually happened; see
21455 http://sourceware.org/bugzilla/show_bug.cgi?id=13568. */
21456 complaint (&symfile_complaints,
21457 _("recursive DW_MACRO_GNU_transparent_include in "
21458 ".debug_macro section"));
21459 }
21460 else
21461 {
d521ce57 21462 *slot = (void *) new_mac_ptr;
36586728 21463
a036ba48 21464 dwarf_decode_macro_bytes (include_bfd, new_mac_ptr,
43f3e411 21465 include_mac_end, current_file, lh,
36586728 21466 section, section_is_gnu, is_dwz,
4d663531 21467 offset_size, include_hash);
8fc3fc34 21468
d521ce57 21469 htab_remove_elt (include_hash, (void *) new_mac_ptr);
8fc3fc34 21470 }
cf2c3c16
TT
21471 }
21472 break;
21473
2e276125 21474 case DW_MACINFO_vendor_ext:
cf2c3c16
TT
21475 if (!section_is_gnu)
21476 {
21477 unsigned int bytes_read;
21478 int constant;
2e276125 21479
cf2c3c16
TT
21480 constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21481 mac_ptr += bytes_read;
21482 read_direct_string (abfd, mac_ptr, &bytes_read);
21483 mac_ptr += bytes_read;
2e276125 21484
cf2c3c16
TT
21485 /* We don't recognize any vendor extensions. */
21486 break;
21487 }
21488 /* FALLTHROUGH */
21489
21490 default:
21491 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
f664829e 21492 mac_ptr, mac_end, abfd, offset_size,
cf2c3c16
TT
21493 section);
21494 if (mac_ptr == NULL)
21495 return;
21496 break;
2e276125 21497 }
757a13d0 21498 } while (macinfo_type != 0);
2e276125 21499}
8e19ed76 21500
cf2c3c16 21501static void
09262596 21502dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
43f3e411 21503 int section_is_gnu)
cf2c3c16 21504{
bb5ed363 21505 struct objfile *objfile = dwarf2_per_objfile->objfile;
09262596
DE
21506 struct line_header *lh = cu->line_header;
21507 bfd *abfd;
d521ce57 21508 const gdb_byte *mac_ptr, *mac_end;
cf2c3c16
TT
21509 struct macro_source_file *current_file = 0;
21510 enum dwarf_macro_record_type macinfo_type;
21511 unsigned int offset_size = cu->header.offset_size;
d521ce57 21512 const gdb_byte *opcode_definitions[256];
8fc3fc34
TT
21513 struct cleanup *cleanup;
21514 htab_t include_hash;
21515 void **slot;
09262596
DE
21516 struct dwarf2_section_info *section;
21517 const char *section_name;
21518
21519 if (cu->dwo_unit != NULL)
21520 {
21521 if (section_is_gnu)
21522 {
21523 section = &cu->dwo_unit->dwo_file->sections.macro;
21524 section_name = ".debug_macro.dwo";
21525 }
21526 else
21527 {
21528 section = &cu->dwo_unit->dwo_file->sections.macinfo;
21529 section_name = ".debug_macinfo.dwo";
21530 }
21531 }
21532 else
21533 {
21534 if (section_is_gnu)
21535 {
21536 section = &dwarf2_per_objfile->macro;
21537 section_name = ".debug_macro";
21538 }
21539 else
21540 {
21541 section = &dwarf2_per_objfile->macinfo;
21542 section_name = ".debug_macinfo";
21543 }
21544 }
cf2c3c16 21545
bb5ed363 21546 dwarf2_read_section (objfile, section);
cf2c3c16
TT
21547 if (section->buffer == NULL)
21548 {
fceca515 21549 complaint (&symfile_complaints, _("missing %s section"), section_name);
cf2c3c16
TT
21550 return;
21551 }
a32a8923 21552 abfd = get_section_bfd_owner (section);
cf2c3c16
TT
21553
21554 /* First pass: Find the name of the base filename.
21555 This filename is needed in order to process all macros whose definition
21556 (or undefinition) comes from the command line. These macros are defined
21557 before the first DW_MACINFO_start_file entry, and yet still need to be
21558 associated to the base file.
21559
21560 To determine the base file name, we scan the macro definitions until we
21561 reach the first DW_MACINFO_start_file entry. We then initialize
21562 CURRENT_FILE accordingly so that any macro definition found before the
21563 first DW_MACINFO_start_file can still be associated to the base file. */
21564
21565 mac_ptr = section->buffer + offset;
21566 mac_end = section->buffer + section->size;
21567
21568 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21569 &offset_size, section_is_gnu);
21570 if (mac_ptr == NULL)
21571 {
21572 /* We already issued a complaint. */
21573 return;
21574 }
21575
21576 do
21577 {
21578 /* Do we at least have room for a macinfo type byte? */
21579 if (mac_ptr >= mac_end)
21580 {
21581 /* Complaint is printed during the second pass as GDB will probably
21582 stop the first pass earlier upon finding
21583 DW_MACINFO_start_file. */
21584 break;
21585 }
21586
21587 macinfo_type = read_1_byte (abfd, mac_ptr);
21588 mac_ptr++;
21589
21590 /* Note that we rely on the fact that the corresponding GNU and
21591 DWARF constants are the same. */
21592 switch (macinfo_type)
21593 {
21594 /* A zero macinfo type indicates the end of the macro
21595 information. */
21596 case 0:
21597 break;
21598
21599 case DW_MACRO_GNU_define:
21600 case DW_MACRO_GNU_undef:
21601 /* Only skip the data by MAC_PTR. */
21602 {
21603 unsigned int bytes_read;
21604
21605 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21606 mac_ptr += bytes_read;
21607 read_direct_string (abfd, mac_ptr, &bytes_read);
21608 mac_ptr += bytes_read;
21609 }
21610 break;
21611
21612 case DW_MACRO_GNU_start_file:
21613 {
21614 unsigned int bytes_read;
21615 int line, file;
21616
21617 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21618 mac_ptr += bytes_read;
21619 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21620 mac_ptr += bytes_read;
21621
43f3e411 21622 current_file = macro_start_file (file, line, current_file, lh);
cf2c3c16
TT
21623 }
21624 break;
21625
21626 case DW_MACRO_GNU_end_file:
21627 /* No data to skip by MAC_PTR. */
21628 break;
21629
21630 case DW_MACRO_GNU_define_indirect:
21631 case DW_MACRO_GNU_undef_indirect:
f7a35f02
TT
21632 case DW_MACRO_GNU_define_indirect_alt:
21633 case DW_MACRO_GNU_undef_indirect_alt:
cf2c3c16
TT
21634 {
21635 unsigned int bytes_read;
21636
21637 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21638 mac_ptr += bytes_read;
21639 mac_ptr += offset_size;
21640 }
21641 break;
21642
21643 case DW_MACRO_GNU_transparent_include:
f7a35f02 21644 case DW_MACRO_GNU_transparent_include_alt:
cf2c3c16
TT
21645 /* Note that, according to the spec, a transparent include
21646 chain cannot call DW_MACRO_GNU_start_file. So, we can just
21647 skip this opcode. */
21648 mac_ptr += offset_size;
21649 break;
21650
21651 case DW_MACINFO_vendor_ext:
21652 /* Only skip the data by MAC_PTR. */
21653 if (!section_is_gnu)
21654 {
21655 unsigned int bytes_read;
21656
21657 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21658 mac_ptr += bytes_read;
21659 read_direct_string (abfd, mac_ptr, &bytes_read);
21660 mac_ptr += bytes_read;
21661 }
21662 /* FALLTHROUGH */
21663
21664 default:
21665 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
f664829e 21666 mac_ptr, mac_end, abfd, offset_size,
cf2c3c16
TT
21667 section);
21668 if (mac_ptr == NULL)
21669 return;
21670 break;
21671 }
21672 } while (macinfo_type != 0 && current_file == NULL);
21673
21674 /* Second pass: Process all entries.
21675
21676 Use the AT_COMMAND_LINE flag to determine whether we are still processing
21677 command-line macro definitions/undefinitions. This flag is unset when we
21678 reach the first DW_MACINFO_start_file entry. */
21679
8fc3fc34
TT
21680 include_hash = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
21681 NULL, xcalloc, xfree);
21682 cleanup = make_cleanup_htab_delete (include_hash);
21683 mac_ptr = section->buffer + offset;
21684 slot = htab_find_slot (include_hash, mac_ptr, INSERT);
d521ce57 21685 *slot = (void *) mac_ptr;
8fc3fc34 21686 dwarf_decode_macro_bytes (abfd, mac_ptr, mac_end,
43f3e411 21687 current_file, lh, section,
4d663531 21688 section_is_gnu, 0, offset_size, include_hash);
8fc3fc34 21689 do_cleanups (cleanup);
cf2c3c16
TT
21690}
21691
8e19ed76 21692/* Check if the attribute's form is a DW_FORM_block*
0963b4bd 21693 if so return true else false. */
380bca97 21694
8e19ed76 21695static int
6e5a29e1 21696attr_form_is_block (const struct attribute *attr)
8e19ed76
PS
21697{
21698 return (attr == NULL ? 0 :
21699 attr->form == DW_FORM_block1
21700 || attr->form == DW_FORM_block2
21701 || attr->form == DW_FORM_block4
2dc7f7b3
TT
21702 || attr->form == DW_FORM_block
21703 || attr->form == DW_FORM_exprloc);
8e19ed76 21704}
4c2df51b 21705
c6a0999f
JB
21706/* Return non-zero if ATTR's value is a section offset --- classes
21707 lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
21708 You may use DW_UNSND (attr) to retrieve such offsets.
21709
21710 Section 7.5.4, "Attribute Encodings", explains that no attribute
21711 may have a value that belongs to more than one of these classes; it
21712 would be ambiguous if we did, because we use the same forms for all
21713 of them. */
380bca97 21714
3690dd37 21715static int
6e5a29e1 21716attr_form_is_section_offset (const struct attribute *attr)
3690dd37
JB
21717{
21718 return (attr->form == DW_FORM_data4
2dc7f7b3
TT
21719 || attr->form == DW_FORM_data8
21720 || attr->form == DW_FORM_sec_offset);
3690dd37
JB
21721}
21722
3690dd37
JB
21723/* Return non-zero if ATTR's value falls in the 'constant' class, or
21724 zero otherwise. When this function returns true, you can apply
21725 dwarf2_get_attr_constant_value to it.
21726
21727 However, note that for some attributes you must check
21728 attr_form_is_section_offset before using this test. DW_FORM_data4
21729 and DW_FORM_data8 are members of both the constant class, and of
21730 the classes that contain offsets into other debug sections
21731 (lineptr, loclistptr, macptr or rangelistptr). The DWARF spec says
21732 that, if an attribute's can be either a constant or one of the
21733 section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
21734 taken as section offsets, not constants. */
380bca97 21735
3690dd37 21736static int
6e5a29e1 21737attr_form_is_constant (const struct attribute *attr)
3690dd37
JB
21738{
21739 switch (attr->form)
21740 {
21741 case DW_FORM_sdata:
21742 case DW_FORM_udata:
21743 case DW_FORM_data1:
21744 case DW_FORM_data2:
21745 case DW_FORM_data4:
21746 case DW_FORM_data8:
21747 return 1;
21748 default:
21749 return 0;
21750 }
21751}
21752
7771576e
SA
21753
21754/* DW_ADDR is always stored already as sect_offset; despite for the forms
21755 besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file. */
21756
21757static int
6e5a29e1 21758attr_form_is_ref (const struct attribute *attr)
7771576e
SA
21759{
21760 switch (attr->form)
21761 {
21762 case DW_FORM_ref_addr:
21763 case DW_FORM_ref1:
21764 case DW_FORM_ref2:
21765 case DW_FORM_ref4:
21766 case DW_FORM_ref8:
21767 case DW_FORM_ref_udata:
21768 case DW_FORM_GNU_ref_alt:
21769 return 1;
21770 default:
21771 return 0;
21772 }
21773}
21774
3019eac3
DE
21775/* Return the .debug_loc section to use for CU.
21776 For DWO files use .debug_loc.dwo. */
21777
21778static struct dwarf2_section_info *
21779cu_debug_loc_section (struct dwarf2_cu *cu)
21780{
21781 if (cu->dwo_unit)
21782 return &cu->dwo_unit->dwo_file->sections.loc;
21783 return &dwarf2_per_objfile->loc;
21784}
21785
8cf6f0b1
TT
21786/* A helper function that fills in a dwarf2_loclist_baton. */
21787
21788static void
21789fill_in_loclist_baton (struct dwarf2_cu *cu,
21790 struct dwarf2_loclist_baton *baton,
ff39bb5e 21791 const struct attribute *attr)
8cf6f0b1 21792{
3019eac3
DE
21793 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
21794
21795 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
8cf6f0b1
TT
21796
21797 baton->per_cu = cu->per_cu;
21798 gdb_assert (baton->per_cu);
21799 /* We don't know how long the location list is, but make sure we
21800 don't run off the edge of the section. */
3019eac3
DE
21801 baton->size = section->size - DW_UNSND (attr);
21802 baton->data = section->buffer + DW_UNSND (attr);
8cf6f0b1 21803 baton->base_address = cu->base_address;
f664829e 21804 baton->from_dwo = cu->dwo_unit != NULL;
8cf6f0b1
TT
21805}
21806
4c2df51b 21807static void
ff39bb5e 21808dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
f1e6e072 21809 struct dwarf2_cu *cu, int is_block)
4c2df51b 21810{
bb5ed363 21811 struct objfile *objfile = dwarf2_per_objfile->objfile;
3019eac3 21812 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
bb5ed363 21813
3690dd37 21814 if (attr_form_is_section_offset (attr)
3019eac3 21815 /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
99bcc461
DJ
21816 the section. If so, fall through to the complaint in the
21817 other branch. */
3019eac3 21818 && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
4c2df51b 21819 {
0d53c4c4 21820 struct dwarf2_loclist_baton *baton;
4c2df51b 21821
bb5ed363 21822 baton = obstack_alloc (&objfile->objfile_obstack,
0d53c4c4 21823 sizeof (struct dwarf2_loclist_baton));
4c2df51b 21824
8cf6f0b1 21825 fill_in_loclist_baton (cu, baton, attr);
be391dca 21826
d00adf39 21827 if (cu->base_known == 0)
0d53c4c4 21828 complaint (&symfile_complaints,
3e43a32a
MS
21829 _("Location list used without "
21830 "specifying the CU base address."));
4c2df51b 21831
f1e6e072
TT
21832 SYMBOL_ACLASS_INDEX (sym) = (is_block
21833 ? dwarf2_loclist_block_index
21834 : dwarf2_loclist_index);
0d53c4c4
DJ
21835 SYMBOL_LOCATION_BATON (sym) = baton;
21836 }
21837 else
21838 {
21839 struct dwarf2_locexpr_baton *baton;
21840
bb5ed363 21841 baton = obstack_alloc (&objfile->objfile_obstack,
0d53c4c4 21842 sizeof (struct dwarf2_locexpr_baton));
ae0d2f24
UW
21843 baton->per_cu = cu->per_cu;
21844 gdb_assert (baton->per_cu);
0d53c4c4
DJ
21845
21846 if (attr_form_is_block (attr))
21847 {
21848 /* Note that we're just copying the block's data pointer
21849 here, not the actual data. We're still pointing into the
6502dd73
DJ
21850 info_buffer for SYM's objfile; right now we never release
21851 that buffer, but when we do clean up properly this may
21852 need to change. */
0d53c4c4
DJ
21853 baton->size = DW_BLOCK (attr)->size;
21854 baton->data = DW_BLOCK (attr)->data;
21855 }
21856 else
21857 {
21858 dwarf2_invalid_attrib_class_complaint ("location description",
21859 SYMBOL_NATURAL_NAME (sym));
21860 baton->size = 0;
0d53c4c4 21861 }
6e70227d 21862
f1e6e072
TT
21863 SYMBOL_ACLASS_INDEX (sym) = (is_block
21864 ? dwarf2_locexpr_block_index
21865 : dwarf2_locexpr_index);
0d53c4c4
DJ
21866 SYMBOL_LOCATION_BATON (sym) = baton;
21867 }
4c2df51b 21868}
6502dd73 21869
9aa1f1e3
TT
21870/* Return the OBJFILE associated with the compilation unit CU. If CU
21871 came from a separate debuginfo file, then the master objfile is
21872 returned. */
ae0d2f24
UW
21873
21874struct objfile *
21875dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
21876{
9291a0cd 21877 struct objfile *objfile = per_cu->objfile;
ae0d2f24
UW
21878
21879 /* Return the master objfile, so that we can report and look up the
21880 correct file containing this variable. */
21881 if (objfile->separate_debug_objfile_backlink)
21882 objfile = objfile->separate_debug_objfile_backlink;
21883
21884 return objfile;
21885}
21886
96408a79
SA
21887/* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
21888 (CU_HEADERP is unused in such case) or prepare a temporary copy at
21889 CU_HEADERP first. */
21890
21891static const struct comp_unit_head *
21892per_cu_header_read_in (struct comp_unit_head *cu_headerp,
21893 struct dwarf2_per_cu_data *per_cu)
21894{
d521ce57 21895 const gdb_byte *info_ptr;
96408a79
SA
21896
21897 if (per_cu->cu)
21898 return &per_cu->cu->header;
21899
8a0459fd 21900 info_ptr = per_cu->section->buffer + per_cu->offset.sect_off;
96408a79
SA
21901
21902 memset (cu_headerp, 0, sizeof (*cu_headerp));
0bc3a05c 21903 read_comp_unit_head (cu_headerp, info_ptr, per_cu->objfile->obfd);
96408a79
SA
21904
21905 return cu_headerp;
21906}
21907
ae0d2f24
UW
21908/* Return the address size given in the compilation unit header for CU. */
21909
98714339 21910int
ae0d2f24
UW
21911dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
21912{
96408a79
SA
21913 struct comp_unit_head cu_header_local;
21914 const struct comp_unit_head *cu_headerp;
c471e790 21915
96408a79
SA
21916 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21917
21918 return cu_headerp->addr_size;
ae0d2f24
UW
21919}
21920
9eae7c52
TT
21921/* Return the offset size given in the compilation unit header for CU. */
21922
21923int
21924dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
21925{
96408a79
SA
21926 struct comp_unit_head cu_header_local;
21927 const struct comp_unit_head *cu_headerp;
9c6c53f7 21928
96408a79
SA
21929 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21930
21931 return cu_headerp->offset_size;
21932}
21933
21934/* See its dwarf2loc.h declaration. */
21935
21936int
21937dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
21938{
21939 struct comp_unit_head cu_header_local;
21940 const struct comp_unit_head *cu_headerp;
21941
21942 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21943
21944 if (cu_headerp->version == 2)
21945 return cu_headerp->addr_size;
21946 else
21947 return cu_headerp->offset_size;
181cebd4
JK
21948}
21949
9aa1f1e3
TT
21950/* Return the text offset of the CU. The returned offset comes from
21951 this CU's objfile. If this objfile came from a separate debuginfo
21952 file, then the offset may be different from the corresponding
21953 offset in the parent objfile. */
21954
21955CORE_ADDR
21956dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
21957{
bb3fa9d0 21958 struct objfile *objfile = per_cu->objfile;
9aa1f1e3
TT
21959
21960 return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21961}
21962
348e048f
DE
21963/* Locate the .debug_info compilation unit from CU's objfile which contains
21964 the DIE at OFFSET. Raises an error on failure. */
ae038cb0
DJ
21965
21966static struct dwarf2_per_cu_data *
b64f50a1 21967dwarf2_find_containing_comp_unit (sect_offset offset,
36586728 21968 unsigned int offset_in_dwz,
ae038cb0
DJ
21969 struct objfile *objfile)
21970{
21971 struct dwarf2_per_cu_data *this_cu;
21972 int low, high;
36586728 21973 const sect_offset *cu_off;
ae038cb0 21974
ae038cb0
DJ
21975 low = 0;
21976 high = dwarf2_per_objfile->n_comp_units - 1;
21977 while (high > low)
21978 {
36586728 21979 struct dwarf2_per_cu_data *mid_cu;
ae038cb0 21980 int mid = low + (high - low) / 2;
9a619af0 21981
36586728
TT
21982 mid_cu = dwarf2_per_objfile->all_comp_units[mid];
21983 cu_off = &mid_cu->offset;
21984 if (mid_cu->is_dwz > offset_in_dwz
21985 || (mid_cu->is_dwz == offset_in_dwz
21986 && cu_off->sect_off >= offset.sect_off))
ae038cb0
DJ
21987 high = mid;
21988 else
21989 low = mid + 1;
21990 }
21991 gdb_assert (low == high);
36586728
TT
21992 this_cu = dwarf2_per_objfile->all_comp_units[low];
21993 cu_off = &this_cu->offset;
21994 if (this_cu->is_dwz != offset_in_dwz || cu_off->sect_off > offset.sect_off)
ae038cb0 21995 {
36586728 21996 if (low == 0 || this_cu->is_dwz != offset_in_dwz)
8a3fe4f8
AC
21997 error (_("Dwarf Error: could not find partial DIE containing "
21998 "offset 0x%lx [in module %s]"),
b64f50a1 21999 (long) offset.sect_off, bfd_get_filename (objfile->obfd));
10b3939b 22000
b64f50a1
JK
22001 gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset.sect_off
22002 <= offset.sect_off);
ae038cb0
DJ
22003 return dwarf2_per_objfile->all_comp_units[low-1];
22004 }
22005 else
22006 {
22007 this_cu = dwarf2_per_objfile->all_comp_units[low];
22008 if (low == dwarf2_per_objfile->n_comp_units - 1
b64f50a1
JK
22009 && offset.sect_off >= this_cu->offset.sect_off + this_cu->length)
22010 error (_("invalid dwarf2 offset %u"), offset.sect_off);
22011 gdb_assert (offset.sect_off < this_cu->offset.sect_off + this_cu->length);
ae038cb0
DJ
22012 return this_cu;
22013 }
22014}
22015
23745b47 22016/* Initialize dwarf2_cu CU, owned by PER_CU. */
93311388 22017
9816fde3 22018static void
23745b47 22019init_one_comp_unit (struct dwarf2_cu *cu, struct dwarf2_per_cu_data *per_cu)
93311388 22020{
9816fde3 22021 memset (cu, 0, sizeof (*cu));
23745b47
DE
22022 per_cu->cu = cu;
22023 cu->per_cu = per_cu;
22024 cu->objfile = per_cu->objfile;
93311388 22025 obstack_init (&cu->comp_unit_obstack);
9816fde3
JK
22026}
22027
22028/* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE. */
22029
22030static void
95554aad
TT
22031prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
22032 enum language pretend_language)
9816fde3
JK
22033{
22034 struct attribute *attr;
22035
22036 /* Set the language we're debugging. */
22037 attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
22038 if (attr)
22039 set_cu_language (DW_UNSND (attr), cu);
22040 else
9cded63f 22041 {
95554aad 22042 cu->language = pretend_language;
9cded63f
TT
22043 cu->language_defn = language_def (cu->language);
22044 }
dee91e82
DE
22045
22046 attr = dwarf2_attr (comp_unit_die, DW_AT_producer, cu);
22047 if (attr)
22048 cu->producer = DW_STRING (attr);
93311388
DE
22049}
22050
ae038cb0
DJ
22051/* Release one cached compilation unit, CU. We unlink it from the tree
22052 of compilation units, but we don't remove it from the read_in_chain;
93311388
DE
22053 the caller is responsible for that.
22054 NOTE: DATA is a void * because this function is also used as a
22055 cleanup routine. */
ae038cb0
DJ
22056
22057static void
68dc6402 22058free_heap_comp_unit (void *data)
ae038cb0
DJ
22059{
22060 struct dwarf2_cu *cu = data;
22061
23745b47
DE
22062 gdb_assert (cu->per_cu != NULL);
22063 cu->per_cu->cu = NULL;
ae038cb0
DJ
22064 cu->per_cu = NULL;
22065
22066 obstack_free (&cu->comp_unit_obstack, NULL);
22067
22068 xfree (cu);
22069}
22070
72bf9492 22071/* This cleanup function is passed the address of a dwarf2_cu on the stack
ae038cb0 22072 when we're finished with it. We can't free the pointer itself, but be
dee91e82 22073 sure to unlink it from the cache. Also release any associated storage. */
72bf9492
DJ
22074
22075static void
22076free_stack_comp_unit (void *data)
22077{
22078 struct dwarf2_cu *cu = data;
22079
23745b47
DE
22080 gdb_assert (cu->per_cu != NULL);
22081 cu->per_cu->cu = NULL;
22082 cu->per_cu = NULL;
22083
72bf9492
DJ
22084 obstack_free (&cu->comp_unit_obstack, NULL);
22085 cu->partial_dies = NULL;
ae038cb0
DJ
22086}
22087
22088/* Free all cached compilation units. */
22089
22090static void
22091free_cached_comp_units (void *data)
22092{
22093 struct dwarf2_per_cu_data *per_cu, **last_chain;
22094
22095 per_cu = dwarf2_per_objfile->read_in_chain;
22096 last_chain = &dwarf2_per_objfile->read_in_chain;
22097 while (per_cu != NULL)
22098 {
22099 struct dwarf2_per_cu_data *next_cu;
22100
22101 next_cu = per_cu->cu->read_in_chain;
22102
68dc6402 22103 free_heap_comp_unit (per_cu->cu);
ae038cb0
DJ
22104 *last_chain = next_cu;
22105
22106 per_cu = next_cu;
22107 }
22108}
22109
22110/* Increase the age counter on each cached compilation unit, and free
22111 any that are too old. */
22112
22113static void
22114age_cached_comp_units (void)
22115{
22116 struct dwarf2_per_cu_data *per_cu, **last_chain;
22117
22118 dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
22119 per_cu = dwarf2_per_objfile->read_in_chain;
22120 while (per_cu != NULL)
22121 {
22122 per_cu->cu->last_used ++;
b4f54984 22123 if (per_cu->cu->last_used <= dwarf_max_cache_age)
ae038cb0
DJ
22124 dwarf2_mark (per_cu->cu);
22125 per_cu = per_cu->cu->read_in_chain;
22126 }
22127
22128 per_cu = dwarf2_per_objfile->read_in_chain;
22129 last_chain = &dwarf2_per_objfile->read_in_chain;
22130 while (per_cu != NULL)
22131 {
22132 struct dwarf2_per_cu_data *next_cu;
22133
22134 next_cu = per_cu->cu->read_in_chain;
22135
22136 if (!per_cu->cu->mark)
22137 {
68dc6402 22138 free_heap_comp_unit (per_cu->cu);
ae038cb0
DJ
22139 *last_chain = next_cu;
22140 }
22141 else
22142 last_chain = &per_cu->cu->read_in_chain;
22143
22144 per_cu = next_cu;
22145 }
22146}
22147
22148/* Remove a single compilation unit from the cache. */
22149
22150static void
dee91e82 22151free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
ae038cb0
DJ
22152{
22153 struct dwarf2_per_cu_data *per_cu, **last_chain;
22154
22155 per_cu = dwarf2_per_objfile->read_in_chain;
22156 last_chain = &dwarf2_per_objfile->read_in_chain;
22157 while (per_cu != NULL)
22158 {
22159 struct dwarf2_per_cu_data *next_cu;
22160
22161 next_cu = per_cu->cu->read_in_chain;
22162
dee91e82 22163 if (per_cu == target_per_cu)
ae038cb0 22164 {
68dc6402 22165 free_heap_comp_unit (per_cu->cu);
dee91e82 22166 per_cu->cu = NULL;
ae038cb0
DJ
22167 *last_chain = next_cu;
22168 break;
22169 }
22170 else
22171 last_chain = &per_cu->cu->read_in_chain;
22172
22173 per_cu = next_cu;
22174 }
22175}
22176
fe3e1990
DJ
22177/* Release all extra memory associated with OBJFILE. */
22178
22179void
22180dwarf2_free_objfile (struct objfile *objfile)
22181{
22182 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
22183
22184 if (dwarf2_per_objfile == NULL)
22185 return;
22186
22187 /* Cached DIE trees use xmalloc and the comp_unit_obstack. */
22188 free_cached_comp_units (NULL);
22189
7b9f3c50
DE
22190 if (dwarf2_per_objfile->quick_file_names_table)
22191 htab_delete (dwarf2_per_objfile->quick_file_names_table);
9291a0cd 22192
527f3840
JK
22193 if (dwarf2_per_objfile->line_header_hash)
22194 htab_delete (dwarf2_per_objfile->line_header_hash);
22195
fe3e1990
DJ
22196 /* Everything else should be on the objfile obstack. */
22197}
22198
dee91e82
DE
22199/* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
22200 We store these in a hash table separate from the DIEs, and preserve them
22201 when the DIEs are flushed out of cache.
22202
22203 The CU "per_cu" pointer is needed because offset alone is not enough to
3019eac3 22204 uniquely identify the type. A file may have multiple .debug_types sections,
c88ee1f0
DE
22205 or the type may come from a DWO file. Furthermore, while it's more logical
22206 to use per_cu->section+offset, with Fission the section with the data is in
22207 the DWO file but we don't know that section at the point we need it.
22208 We have to use something in dwarf2_per_cu_data (or the pointer to it)
22209 because we can enter the lookup routine, get_die_type_at_offset, from
22210 outside this file, and thus won't necessarily have PER_CU->cu.
22211 Fortunately, PER_CU is stable for the life of the objfile. */
1c379e20 22212
dee91e82 22213struct dwarf2_per_cu_offset_and_type
1c379e20 22214{
dee91e82 22215 const struct dwarf2_per_cu_data *per_cu;
b64f50a1 22216 sect_offset offset;
1c379e20
DJ
22217 struct type *type;
22218};
22219
dee91e82 22220/* Hash function for a dwarf2_per_cu_offset_and_type. */
1c379e20
DJ
22221
22222static hashval_t
dee91e82 22223per_cu_offset_and_type_hash (const void *item)
1c379e20 22224{
dee91e82 22225 const struct dwarf2_per_cu_offset_and_type *ofs = item;
9a619af0 22226
dee91e82 22227 return (uintptr_t) ofs->per_cu + ofs->offset.sect_off;
1c379e20
DJ
22228}
22229
dee91e82 22230/* Equality function for a dwarf2_per_cu_offset_and_type. */
1c379e20
DJ
22231
22232static int
dee91e82 22233per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
1c379e20 22234{
dee91e82
DE
22235 const struct dwarf2_per_cu_offset_and_type *ofs_lhs = item_lhs;
22236 const struct dwarf2_per_cu_offset_and_type *ofs_rhs = item_rhs;
9a619af0 22237
dee91e82
DE
22238 return (ofs_lhs->per_cu == ofs_rhs->per_cu
22239 && ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off);
1c379e20
DJ
22240}
22241
22242/* Set the type associated with DIE to TYPE. Save it in CU's hash
7e314c57
JK
22243 table if necessary. For convenience, return TYPE.
22244
22245 The DIEs reading must have careful ordering to:
22246 * Not cause infite loops trying to read in DIEs as a prerequisite for
22247 reading current DIE.
22248 * Not trying to dereference contents of still incompletely read in types
22249 while reading in other DIEs.
22250 * Enable referencing still incompletely read in types just by a pointer to
22251 the type without accessing its fields.
22252
22253 Therefore caller should follow these rules:
22254 * Try to fetch any prerequisite types we may need to build this DIE type
22255 before building the type and calling set_die_type.
e71ec853 22256 * After building type call set_die_type for current DIE as soon as
7e314c57
JK
22257 possible before fetching more types to complete the current type.
22258 * Make the type as complete as possible before fetching more types. */
1c379e20 22259
f792889a 22260static struct type *
1c379e20
DJ
22261set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
22262{
dee91e82 22263 struct dwarf2_per_cu_offset_and_type **slot, ofs;
673bfd45 22264 struct objfile *objfile = cu->objfile;
3cdcd0ce
JB
22265 struct attribute *attr;
22266 struct dynamic_prop prop;
1c379e20 22267
b4ba55a1
JB
22268 /* For Ada types, make sure that the gnat-specific data is always
22269 initialized (if not already set). There are a few types where
22270 we should not be doing so, because the type-specific area is
22271 already used to hold some other piece of info (eg: TYPE_CODE_FLT
22272 where the type-specific area is used to store the floatformat).
22273 But this is not a problem, because the gnat-specific information
22274 is actually not needed for these types. */
22275 if (need_gnat_info (cu)
22276 && TYPE_CODE (type) != TYPE_CODE_FUNC
22277 && TYPE_CODE (type) != TYPE_CODE_FLT
09e2d7c7
DE
22278 && TYPE_CODE (type) != TYPE_CODE_METHODPTR
22279 && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
22280 && TYPE_CODE (type) != TYPE_CODE_METHOD
b4ba55a1
JB
22281 && !HAVE_GNAT_AUX_INFO (type))
22282 INIT_GNAT_SPECIFIC (type);
22283
3cdcd0ce
JB
22284 /* Read DW_AT_data_location and set in type. */
22285 attr = dwarf2_attr (die, DW_AT_data_location, cu);
22286 if (attr_to_dynamic_prop (attr, die, cu, &prop))
93a8e227 22287 add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type, objfile);
3cdcd0ce 22288
dee91e82 22289 if (dwarf2_per_objfile->die_type_hash == NULL)
f792889a 22290 {
dee91e82
DE
22291 dwarf2_per_objfile->die_type_hash =
22292 htab_create_alloc_ex (127,
22293 per_cu_offset_and_type_hash,
22294 per_cu_offset_and_type_eq,
22295 NULL,
22296 &objfile->objfile_obstack,
22297 hashtab_obstack_allocate,
22298 dummy_obstack_deallocate);
f792889a 22299 }
1c379e20 22300
dee91e82 22301 ofs.per_cu = cu->per_cu;
1c379e20
DJ
22302 ofs.offset = die->offset;
22303 ofs.type = type;
dee91e82
DE
22304 slot = (struct dwarf2_per_cu_offset_and_type **)
22305 htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
7e314c57
JK
22306 if (*slot)
22307 complaint (&symfile_complaints,
22308 _("A problem internal to GDB: DIE 0x%x has type already set"),
b64f50a1 22309 die->offset.sect_off);
673bfd45 22310 *slot = obstack_alloc (&objfile->objfile_obstack, sizeof (**slot));
1c379e20 22311 **slot = ofs;
f792889a 22312 return type;
1c379e20
DJ
22313}
22314
02142a6c
DE
22315/* Look up the type for the die at OFFSET in PER_CU in die_type_hash,
22316 or return NULL if the die does not have a saved type. */
1c379e20
DJ
22317
22318static struct type *
b64f50a1 22319get_die_type_at_offset (sect_offset offset,
673bfd45 22320 struct dwarf2_per_cu_data *per_cu)
1c379e20 22321{
dee91e82 22322 struct dwarf2_per_cu_offset_and_type *slot, ofs;
f792889a 22323
dee91e82 22324 if (dwarf2_per_objfile->die_type_hash == NULL)
f792889a 22325 return NULL;
1c379e20 22326
dee91e82 22327 ofs.per_cu = per_cu;
673bfd45 22328 ofs.offset = offset;
dee91e82 22329 slot = htab_find (dwarf2_per_objfile->die_type_hash, &ofs);
1c379e20
DJ
22330 if (slot)
22331 return slot->type;
22332 else
22333 return NULL;
22334}
22335
02142a6c 22336/* Look up the type for DIE in CU in die_type_hash,
673bfd45
DE
22337 or return NULL if DIE does not have a saved type. */
22338
22339static struct type *
22340get_die_type (struct die_info *die, struct dwarf2_cu *cu)
22341{
22342 return get_die_type_at_offset (die->offset, cu->per_cu);
22343}
22344
10b3939b
DJ
22345/* Add a dependence relationship from CU to REF_PER_CU. */
22346
22347static void
22348dwarf2_add_dependence (struct dwarf2_cu *cu,
22349 struct dwarf2_per_cu_data *ref_per_cu)
22350{
22351 void **slot;
22352
22353 if (cu->dependencies == NULL)
22354 cu->dependencies
22355 = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
22356 NULL, &cu->comp_unit_obstack,
22357 hashtab_obstack_allocate,
22358 dummy_obstack_deallocate);
22359
22360 slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
22361 if (*slot == NULL)
22362 *slot = ref_per_cu;
22363}
1c379e20 22364
f504f079
DE
22365/* Subroutine of dwarf2_mark to pass to htab_traverse.
22366 Set the mark field in every compilation unit in the
ae038cb0
DJ
22367 cache that we must keep because we are keeping CU. */
22368
10b3939b
DJ
22369static int
22370dwarf2_mark_helper (void **slot, void *data)
22371{
22372 struct dwarf2_per_cu_data *per_cu;
22373
22374 per_cu = (struct dwarf2_per_cu_data *) *slot;
d07ed419
JK
22375
22376 /* cu->dependencies references may not yet have been ever read if QUIT aborts
22377 reading of the chain. As such dependencies remain valid it is not much
22378 useful to track and undo them during QUIT cleanups. */
22379 if (per_cu->cu == NULL)
22380 return 1;
22381
10b3939b
DJ
22382 if (per_cu->cu->mark)
22383 return 1;
22384 per_cu->cu->mark = 1;
22385
22386 if (per_cu->cu->dependencies != NULL)
22387 htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
22388
22389 return 1;
22390}
22391
f504f079
DE
22392/* Set the mark field in CU and in every other compilation unit in the
22393 cache that we must keep because we are keeping CU. */
22394
ae038cb0
DJ
22395static void
22396dwarf2_mark (struct dwarf2_cu *cu)
22397{
22398 if (cu->mark)
22399 return;
22400 cu->mark = 1;
10b3939b
DJ
22401 if (cu->dependencies != NULL)
22402 htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
ae038cb0
DJ
22403}
22404
22405static void
22406dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
22407{
22408 while (per_cu)
22409 {
22410 per_cu->cu->mark = 0;
22411 per_cu = per_cu->cu->read_in_chain;
22412 }
72bf9492
DJ
22413}
22414
72bf9492
DJ
22415/* Trivial hash function for partial_die_info: the hash value of a DIE
22416 is its offset in .debug_info for this objfile. */
22417
22418static hashval_t
22419partial_die_hash (const void *item)
22420{
22421 const struct partial_die_info *part_die = item;
9a619af0 22422
b64f50a1 22423 return part_die->offset.sect_off;
72bf9492
DJ
22424}
22425
22426/* Trivial comparison function for partial_die_info structures: two DIEs
22427 are equal if they have the same offset. */
22428
22429static int
22430partial_die_eq (const void *item_lhs, const void *item_rhs)
22431{
22432 const struct partial_die_info *part_die_lhs = item_lhs;
22433 const struct partial_die_info *part_die_rhs = item_rhs;
9a619af0 22434
b64f50a1 22435 return part_die_lhs->offset.sect_off == part_die_rhs->offset.sect_off;
72bf9492
DJ
22436}
22437
b4f54984
DE
22438static struct cmd_list_element *set_dwarf_cmdlist;
22439static struct cmd_list_element *show_dwarf_cmdlist;
ae038cb0
DJ
22440
22441static void
b4f54984 22442set_dwarf_cmd (char *args, int from_tty)
ae038cb0 22443{
b4f54984 22444 help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
635c7e8a 22445 gdb_stdout);
ae038cb0
DJ
22446}
22447
22448static void
b4f54984 22449show_dwarf_cmd (char *args, int from_tty)
6e70227d 22450{
b4f54984 22451 cmd_show_list (show_dwarf_cmdlist, from_tty, "");
ae038cb0
DJ
22452}
22453
4bf44c1c 22454/* Free data associated with OBJFILE, if necessary. */
dce234bc
PP
22455
22456static void
c1bd65d0 22457dwarf2_per_objfile_free (struct objfile *objfile, void *d)
dce234bc
PP
22458{
22459 struct dwarf2_per_objfile *data = d;
8b70b953 22460 int ix;
8b70b953 22461
626f2d1c
TT
22462 /* Make sure we don't accidentally use dwarf2_per_objfile while
22463 cleaning up. */
22464 dwarf2_per_objfile = NULL;
22465
59b0c7c1
JB
22466 for (ix = 0; ix < data->n_comp_units; ++ix)
22467 VEC_free (dwarf2_per_cu_ptr, data->all_comp_units[ix]->imported_symtabs);
796a7ff8 22468
59b0c7c1 22469 for (ix = 0; ix < data->n_type_units; ++ix)
796a7ff8 22470 VEC_free (dwarf2_per_cu_ptr,
59b0c7c1
JB
22471 data->all_type_units[ix]->per_cu.imported_symtabs);
22472 xfree (data->all_type_units);
95554aad 22473
8b70b953 22474 VEC_free (dwarf2_section_info_def, data->types);
3019eac3
DE
22475
22476 if (data->dwo_files)
22477 free_dwo_files (data->dwo_files, objfile);
5c6fa7ab
DE
22478 if (data->dwp_file)
22479 gdb_bfd_unref (data->dwp_file->dbfd);
36586728
TT
22480
22481 if (data->dwz_file && data->dwz_file->dwz_bfd)
22482 gdb_bfd_unref (data->dwz_file->dwz_bfd);
9291a0cd
TT
22483}
22484
22485\f
ae2de4f8 22486/* The "save gdb-index" command. */
9291a0cd
TT
22487
22488/* The contents of the hash table we create when building the string
22489 table. */
22490struct strtab_entry
22491{
22492 offset_type offset;
22493 const char *str;
22494};
22495
559a7a62
JK
22496/* Hash function for a strtab_entry.
22497
22498 Function is used only during write_hash_table so no index format backward
22499 compatibility is needed. */
b89be57b 22500
9291a0cd
TT
22501static hashval_t
22502hash_strtab_entry (const void *e)
22503{
22504 const struct strtab_entry *entry = e;
559a7a62 22505 return mapped_index_string_hash (INT_MAX, entry->str);
9291a0cd
TT
22506}
22507
22508/* Equality function for a strtab_entry. */
b89be57b 22509
9291a0cd
TT
22510static int
22511eq_strtab_entry (const void *a, const void *b)
22512{
22513 const struct strtab_entry *ea = a;
22514 const struct strtab_entry *eb = b;
22515 return !strcmp (ea->str, eb->str);
22516}
22517
22518/* Create a strtab_entry hash table. */
b89be57b 22519
9291a0cd
TT
22520static htab_t
22521create_strtab (void)
22522{
22523 return htab_create_alloc (100, hash_strtab_entry, eq_strtab_entry,
22524 xfree, xcalloc, xfree);
22525}
22526
22527/* Add a string to the constant pool. Return the string's offset in
22528 host order. */
b89be57b 22529
9291a0cd
TT
22530static offset_type
22531add_string (htab_t table, struct obstack *cpool, const char *str)
22532{
22533 void **slot;
22534 struct strtab_entry entry;
22535 struct strtab_entry *result;
22536
22537 entry.str = str;
22538 slot = htab_find_slot (table, &entry, INSERT);
22539 if (*slot)
22540 result = *slot;
22541 else
22542 {
22543 result = XNEW (struct strtab_entry);
22544 result->offset = obstack_object_size (cpool);
22545 result->str = str;
22546 obstack_grow_str0 (cpool, str);
22547 *slot = result;
22548 }
22549 return result->offset;
22550}
22551
22552/* An entry in the symbol table. */
22553struct symtab_index_entry
22554{
22555 /* The name of the symbol. */
22556 const char *name;
22557 /* The offset of the name in the constant pool. */
22558 offset_type index_offset;
22559 /* A sorted vector of the indices of all the CUs that hold an object
22560 of this name. */
22561 VEC (offset_type) *cu_indices;
22562};
22563
22564/* The symbol table. This is a power-of-2-sized hash table. */
22565struct mapped_symtab
22566{
22567 offset_type n_elements;
22568 offset_type size;
22569 struct symtab_index_entry **data;
22570};
22571
22572/* Hash function for a symtab_index_entry. */
b89be57b 22573
9291a0cd
TT
22574static hashval_t
22575hash_symtab_entry (const void *e)
22576{
22577 const struct symtab_index_entry *entry = e;
22578 return iterative_hash (VEC_address (offset_type, entry->cu_indices),
22579 sizeof (offset_type) * VEC_length (offset_type,
22580 entry->cu_indices),
22581 0);
22582}
22583
22584/* Equality function for a symtab_index_entry. */
b89be57b 22585
9291a0cd
TT
22586static int
22587eq_symtab_entry (const void *a, const void *b)
22588{
22589 const struct symtab_index_entry *ea = a;
22590 const struct symtab_index_entry *eb = b;
22591 int len = VEC_length (offset_type, ea->cu_indices);
22592 if (len != VEC_length (offset_type, eb->cu_indices))
22593 return 0;
22594 return !memcmp (VEC_address (offset_type, ea->cu_indices),
22595 VEC_address (offset_type, eb->cu_indices),
22596 sizeof (offset_type) * len);
22597}
22598
22599/* Destroy a symtab_index_entry. */
b89be57b 22600
9291a0cd
TT
22601static void
22602delete_symtab_entry (void *p)
22603{
22604 struct symtab_index_entry *entry = p;
22605 VEC_free (offset_type, entry->cu_indices);
22606 xfree (entry);
22607}
22608
22609/* Create a hash table holding symtab_index_entry objects. */
b89be57b 22610
9291a0cd 22611static htab_t
3876f04e 22612create_symbol_hash_table (void)
9291a0cd
TT
22613{
22614 return htab_create_alloc (100, hash_symtab_entry, eq_symtab_entry,
22615 delete_symtab_entry, xcalloc, xfree);
22616}
22617
22618/* Create a new mapped symtab object. */
b89be57b 22619
9291a0cd
TT
22620static struct mapped_symtab *
22621create_mapped_symtab (void)
22622{
22623 struct mapped_symtab *symtab = XNEW (struct mapped_symtab);
22624 symtab->n_elements = 0;
22625 symtab->size = 1024;
22626 symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22627 return symtab;
22628}
22629
22630/* Destroy a mapped_symtab. */
b89be57b 22631
9291a0cd
TT
22632static void
22633cleanup_mapped_symtab (void *p)
22634{
22635 struct mapped_symtab *symtab = p;
22636 /* The contents of the array are freed when the other hash table is
22637 destroyed. */
22638 xfree (symtab->data);
22639 xfree (symtab);
22640}
22641
22642/* Find a slot in SYMTAB for the symbol NAME. Returns a pointer to
559a7a62
JK
22643 the slot.
22644
22645 Function is used only during write_hash_table so no index format backward
22646 compatibility is needed. */
b89be57b 22647
9291a0cd
TT
22648static struct symtab_index_entry **
22649find_slot (struct mapped_symtab *symtab, const char *name)
22650{
559a7a62 22651 offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
9291a0cd
TT
22652
22653 index = hash & (symtab->size - 1);
22654 step = ((hash * 17) & (symtab->size - 1)) | 1;
22655
22656 for (;;)
22657 {
22658 if (!symtab->data[index] || !strcmp (name, symtab->data[index]->name))
22659 return &symtab->data[index];
22660 index = (index + step) & (symtab->size - 1);
22661 }
22662}
22663
22664/* Expand SYMTAB's hash table. */
b89be57b 22665
9291a0cd
TT
22666static void
22667hash_expand (struct mapped_symtab *symtab)
22668{
22669 offset_type old_size = symtab->size;
22670 offset_type i;
22671 struct symtab_index_entry **old_entries = symtab->data;
22672
22673 symtab->size *= 2;
22674 symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22675
22676 for (i = 0; i < old_size; ++i)
22677 {
22678 if (old_entries[i])
22679 {
22680 struct symtab_index_entry **slot = find_slot (symtab,
22681 old_entries[i]->name);
22682 *slot = old_entries[i];
22683 }
22684 }
22685
22686 xfree (old_entries);
22687}
22688
156942c7
DE
22689/* Add an entry to SYMTAB. NAME is the name of the symbol.
22690 CU_INDEX is the index of the CU in which the symbol appears.
22691 IS_STATIC is one if the symbol is static, otherwise zero (global). */
b89be57b 22692
9291a0cd
TT
22693static void
22694add_index_entry (struct mapped_symtab *symtab, const char *name,
156942c7 22695 int is_static, gdb_index_symbol_kind kind,
9291a0cd
TT
22696 offset_type cu_index)
22697{
22698 struct symtab_index_entry **slot;
156942c7 22699 offset_type cu_index_and_attrs;
9291a0cd
TT
22700
22701 ++symtab->n_elements;
22702 if (4 * symtab->n_elements / 3 >= symtab->size)
22703 hash_expand (symtab);
22704
22705 slot = find_slot (symtab, name);
22706 if (!*slot)
22707 {
22708 *slot = XNEW (struct symtab_index_entry);
22709 (*slot)->name = name;
156942c7 22710 /* index_offset is set later. */
9291a0cd
TT
22711 (*slot)->cu_indices = NULL;
22712 }
156942c7
DE
22713
22714 cu_index_and_attrs = 0;
22715 DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
22716 DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
22717 DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
22718
22719 /* We don't want to record an index value twice as we want to avoid the
22720 duplication.
22721 We process all global symbols and then all static symbols
22722 (which would allow us to avoid the duplication by only having to check
22723 the last entry pushed), but a symbol could have multiple kinds in one CU.
22724 To keep things simple we don't worry about the duplication here and
22725 sort and uniqufy the list after we've processed all symbols. */
22726 VEC_safe_push (offset_type, (*slot)->cu_indices, cu_index_and_attrs);
22727}
22728
22729/* qsort helper routine for uniquify_cu_indices. */
22730
22731static int
22732offset_type_compare (const void *ap, const void *bp)
22733{
22734 offset_type a = *(offset_type *) ap;
22735 offset_type b = *(offset_type *) bp;
22736
22737 return (a > b) - (b > a);
22738}
22739
22740/* Sort and remove duplicates of all symbols' cu_indices lists. */
22741
22742static void
22743uniquify_cu_indices (struct mapped_symtab *symtab)
22744{
22745 int i;
22746
22747 for (i = 0; i < symtab->size; ++i)
22748 {
22749 struct symtab_index_entry *entry = symtab->data[i];
22750
22751 if (entry
22752 && entry->cu_indices != NULL)
22753 {
22754 unsigned int next_to_insert, next_to_check;
22755 offset_type last_value;
22756
22757 qsort (VEC_address (offset_type, entry->cu_indices),
22758 VEC_length (offset_type, entry->cu_indices),
22759 sizeof (offset_type), offset_type_compare);
22760
22761 last_value = VEC_index (offset_type, entry->cu_indices, 0);
22762 next_to_insert = 1;
22763 for (next_to_check = 1;
22764 next_to_check < VEC_length (offset_type, entry->cu_indices);
22765 ++next_to_check)
22766 {
22767 if (VEC_index (offset_type, entry->cu_indices, next_to_check)
22768 != last_value)
22769 {
22770 last_value = VEC_index (offset_type, entry->cu_indices,
22771 next_to_check);
22772 VEC_replace (offset_type, entry->cu_indices, next_to_insert,
22773 last_value);
22774 ++next_to_insert;
22775 }
22776 }
22777 VEC_truncate (offset_type, entry->cu_indices, next_to_insert);
22778 }
22779 }
9291a0cd
TT
22780}
22781
22782/* Add a vector of indices to the constant pool. */
b89be57b 22783
9291a0cd 22784static offset_type
3876f04e 22785add_indices_to_cpool (htab_t symbol_hash_table, struct obstack *cpool,
9291a0cd
TT
22786 struct symtab_index_entry *entry)
22787{
22788 void **slot;
22789
3876f04e 22790 slot = htab_find_slot (symbol_hash_table, entry, INSERT);
9291a0cd
TT
22791 if (!*slot)
22792 {
22793 offset_type len = VEC_length (offset_type, entry->cu_indices);
22794 offset_type val = MAYBE_SWAP (len);
22795 offset_type iter;
22796 int i;
22797
22798 *slot = entry;
22799 entry->index_offset = obstack_object_size (cpool);
22800
22801 obstack_grow (cpool, &val, sizeof (val));
22802 for (i = 0;
22803 VEC_iterate (offset_type, entry->cu_indices, i, iter);
22804 ++i)
22805 {
22806 val = MAYBE_SWAP (iter);
22807 obstack_grow (cpool, &val, sizeof (val));
22808 }
22809 }
22810 else
22811 {
22812 struct symtab_index_entry *old_entry = *slot;
22813 entry->index_offset = old_entry->index_offset;
22814 entry = old_entry;
22815 }
22816 return entry->index_offset;
22817}
22818
22819/* Write the mapped hash table SYMTAB to the obstack OUTPUT, with
22820 constant pool entries going into the obstack CPOOL. */
b89be57b 22821
9291a0cd
TT
22822static void
22823write_hash_table (struct mapped_symtab *symtab,
22824 struct obstack *output, struct obstack *cpool)
22825{
22826 offset_type i;
3876f04e 22827 htab_t symbol_hash_table;
9291a0cd
TT
22828 htab_t str_table;
22829
3876f04e 22830 symbol_hash_table = create_symbol_hash_table ();
9291a0cd 22831 str_table = create_strtab ();
3876f04e 22832
9291a0cd
TT
22833 /* We add all the index vectors to the constant pool first, to
22834 ensure alignment is ok. */
22835 for (i = 0; i < symtab->size; ++i)
22836 {
22837 if (symtab->data[i])
3876f04e 22838 add_indices_to_cpool (symbol_hash_table, cpool, symtab->data[i]);
9291a0cd
TT
22839 }
22840
22841 /* Now write out the hash table. */
22842 for (i = 0; i < symtab->size; ++i)
22843 {
22844 offset_type str_off, vec_off;
22845
22846 if (symtab->data[i])
22847 {
22848 str_off = add_string (str_table, cpool, symtab->data[i]->name);
22849 vec_off = symtab->data[i]->index_offset;
22850 }
22851 else
22852 {
22853 /* While 0 is a valid constant pool index, it is not valid
22854 to have 0 for both offsets. */
22855 str_off = 0;
22856 vec_off = 0;
22857 }
22858
22859 str_off = MAYBE_SWAP (str_off);
22860 vec_off = MAYBE_SWAP (vec_off);
22861
22862 obstack_grow (output, &str_off, sizeof (str_off));
22863 obstack_grow (output, &vec_off, sizeof (vec_off));
22864 }
22865
22866 htab_delete (str_table);
3876f04e 22867 htab_delete (symbol_hash_table);
9291a0cd
TT
22868}
22869
0a5429f6
DE
22870/* Struct to map psymtab to CU index in the index file. */
22871struct psymtab_cu_index_map
22872{
22873 struct partial_symtab *psymtab;
22874 unsigned int cu_index;
22875};
22876
22877static hashval_t
22878hash_psymtab_cu_index (const void *item)
22879{
22880 const struct psymtab_cu_index_map *map = item;
22881
22882 return htab_hash_pointer (map->psymtab);
22883}
22884
22885static int
22886eq_psymtab_cu_index (const void *item_lhs, const void *item_rhs)
22887{
22888 const struct psymtab_cu_index_map *lhs = item_lhs;
22889 const struct psymtab_cu_index_map *rhs = item_rhs;
22890
22891 return lhs->psymtab == rhs->psymtab;
22892}
22893
22894/* Helper struct for building the address table. */
22895struct addrmap_index_data
22896{
22897 struct objfile *objfile;
22898 struct obstack *addr_obstack;
22899 htab_t cu_index_htab;
22900
22901 /* Non-zero if the previous_* fields are valid.
22902 We can't write an entry until we see the next entry (since it is only then
22903 that we know the end of the entry). */
22904 int previous_valid;
22905 /* Index of the CU in the table of all CUs in the index file. */
22906 unsigned int previous_cu_index;
0963b4bd 22907 /* Start address of the CU. */
0a5429f6
DE
22908 CORE_ADDR previous_cu_start;
22909};
22910
22911/* Write an address entry to OBSTACK. */
b89be57b 22912
9291a0cd 22913static void
0a5429f6
DE
22914add_address_entry (struct objfile *objfile, struct obstack *obstack,
22915 CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
9291a0cd 22916{
0a5429f6 22917 offset_type cu_index_to_write;
948f8e3d 22918 gdb_byte addr[8];
9291a0cd
TT
22919 CORE_ADDR baseaddr;
22920
22921 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
22922
0a5429f6
DE
22923 store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, start - baseaddr);
22924 obstack_grow (obstack, addr, 8);
22925 store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, end - baseaddr);
22926 obstack_grow (obstack, addr, 8);
22927 cu_index_to_write = MAYBE_SWAP (cu_index);
22928 obstack_grow (obstack, &cu_index_to_write, sizeof (offset_type));
22929}
22930
22931/* Worker function for traversing an addrmap to build the address table. */
22932
22933static int
22934add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
22935{
22936 struct addrmap_index_data *data = datap;
22937 struct partial_symtab *pst = obj;
0a5429f6
DE
22938
22939 if (data->previous_valid)
22940 add_address_entry (data->objfile, data->addr_obstack,
22941 data->previous_cu_start, start_addr,
22942 data->previous_cu_index);
22943
22944 data->previous_cu_start = start_addr;
22945 if (pst != NULL)
22946 {
22947 struct psymtab_cu_index_map find_map, *map;
22948 find_map.psymtab = pst;
22949 map = htab_find (data->cu_index_htab, &find_map);
22950 gdb_assert (map != NULL);
22951 data->previous_cu_index = map->cu_index;
22952 data->previous_valid = 1;
22953 }
22954 else
22955 data->previous_valid = 0;
22956
22957 return 0;
22958}
22959
22960/* Write OBJFILE's address map to OBSTACK.
22961 CU_INDEX_HTAB is used to map addrmap entries to their CU indices
22962 in the index file. */
22963
22964static void
22965write_address_map (struct objfile *objfile, struct obstack *obstack,
22966 htab_t cu_index_htab)
22967{
22968 struct addrmap_index_data addrmap_index_data;
22969
22970 /* When writing the address table, we have to cope with the fact that
22971 the addrmap iterator only provides the start of a region; we have to
22972 wait until the next invocation to get the start of the next region. */
22973
22974 addrmap_index_data.objfile = objfile;
22975 addrmap_index_data.addr_obstack = obstack;
22976 addrmap_index_data.cu_index_htab = cu_index_htab;
22977 addrmap_index_data.previous_valid = 0;
22978
22979 addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
22980 &addrmap_index_data);
22981
22982 /* It's highly unlikely the last entry (end address = 0xff...ff)
22983 is valid, but we should still handle it.
22984 The end address is recorded as the start of the next region, but that
22985 doesn't work here. To cope we pass 0xff...ff, this is a rare situation
22986 anyway. */
22987 if (addrmap_index_data.previous_valid)
22988 add_address_entry (objfile, obstack,
22989 addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
22990 addrmap_index_data.previous_cu_index);
9291a0cd
TT
22991}
22992
156942c7
DE
22993/* Return the symbol kind of PSYM. */
22994
22995static gdb_index_symbol_kind
22996symbol_kind (struct partial_symbol *psym)
22997{
22998 domain_enum domain = PSYMBOL_DOMAIN (psym);
22999 enum address_class aclass = PSYMBOL_CLASS (psym);
23000
23001 switch (domain)
23002 {
23003 case VAR_DOMAIN:
23004 switch (aclass)
23005 {
23006 case LOC_BLOCK:
23007 return GDB_INDEX_SYMBOL_KIND_FUNCTION;
23008 case LOC_TYPEDEF:
23009 return GDB_INDEX_SYMBOL_KIND_TYPE;
23010 case LOC_COMPUTED:
23011 case LOC_CONST_BYTES:
23012 case LOC_OPTIMIZED_OUT:
23013 case LOC_STATIC:
23014 return GDB_INDEX_SYMBOL_KIND_VARIABLE;
23015 case LOC_CONST:
23016 /* Note: It's currently impossible to recognize psyms as enum values
23017 short of reading the type info. For now punt. */
23018 return GDB_INDEX_SYMBOL_KIND_VARIABLE;
23019 default:
23020 /* There are other LOC_FOO values that one might want to classify
23021 as variables, but dwarf2read.c doesn't currently use them. */
23022 return GDB_INDEX_SYMBOL_KIND_OTHER;
23023 }
23024 case STRUCT_DOMAIN:
23025 return GDB_INDEX_SYMBOL_KIND_TYPE;
23026 default:
23027 return GDB_INDEX_SYMBOL_KIND_OTHER;
23028 }
23029}
23030
9291a0cd 23031/* Add a list of partial symbols to SYMTAB. */
b89be57b 23032
9291a0cd
TT
23033static void
23034write_psymbols (struct mapped_symtab *symtab,
987d643c 23035 htab_t psyms_seen,
9291a0cd
TT
23036 struct partial_symbol **psymp,
23037 int count,
987d643c
TT
23038 offset_type cu_index,
23039 int is_static)
9291a0cd
TT
23040{
23041 for (; count-- > 0; ++psymp)
23042 {
156942c7
DE
23043 struct partial_symbol *psym = *psymp;
23044 void **slot;
987d643c 23045
156942c7 23046 if (SYMBOL_LANGUAGE (psym) == language_ada)
9291a0cd 23047 error (_("Ada is not currently supported by the index"));
987d643c 23048
987d643c 23049 /* Only add a given psymbol once. */
156942c7 23050 slot = htab_find_slot (psyms_seen, psym, INSERT);
987d643c
TT
23051 if (!*slot)
23052 {
156942c7
DE
23053 gdb_index_symbol_kind kind = symbol_kind (psym);
23054
23055 *slot = psym;
23056 add_index_entry (symtab, SYMBOL_SEARCH_NAME (psym),
23057 is_static, kind, cu_index);
987d643c 23058 }
9291a0cd
TT
23059 }
23060}
23061
23062/* Write the contents of an ("unfinished") obstack to FILE. Throw an
23063 exception if there is an error. */
b89be57b 23064
9291a0cd
TT
23065static void
23066write_obstack (FILE *file, struct obstack *obstack)
23067{
23068 if (fwrite (obstack_base (obstack), 1, obstack_object_size (obstack),
23069 file)
23070 != obstack_object_size (obstack))
23071 error (_("couldn't data write to file"));
23072}
23073
23074/* Unlink a file if the argument is not NULL. */
b89be57b 23075
9291a0cd
TT
23076static void
23077unlink_if_set (void *p)
23078{
23079 char **filename = p;
23080 if (*filename)
23081 unlink (*filename);
23082}
23083
1fd400ff
TT
23084/* A helper struct used when iterating over debug_types. */
23085struct signatured_type_index_data
23086{
23087 struct objfile *objfile;
23088 struct mapped_symtab *symtab;
23089 struct obstack *types_list;
987d643c 23090 htab_t psyms_seen;
1fd400ff
TT
23091 int cu_index;
23092};
23093
23094/* A helper function that writes a single signatured_type to an
23095 obstack. */
b89be57b 23096
1fd400ff
TT
23097static int
23098write_one_signatured_type (void **slot, void *d)
23099{
23100 struct signatured_type_index_data *info = d;
23101 struct signatured_type *entry = (struct signatured_type *) *slot;
0186c6a7 23102 struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
1fd400ff
TT
23103 gdb_byte val[8];
23104
23105 write_psymbols (info->symtab,
987d643c 23106 info->psyms_seen,
3e43a32a
MS
23107 info->objfile->global_psymbols.list
23108 + psymtab->globals_offset,
987d643c
TT
23109 psymtab->n_global_syms, info->cu_index,
23110 0);
1fd400ff 23111 write_psymbols (info->symtab,
987d643c 23112 info->psyms_seen,
3e43a32a
MS
23113 info->objfile->static_psymbols.list
23114 + psymtab->statics_offset,
987d643c
TT
23115 psymtab->n_static_syms, info->cu_index,
23116 1);
1fd400ff 23117
b64f50a1
JK
23118 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23119 entry->per_cu.offset.sect_off);
1fd400ff 23120 obstack_grow (info->types_list, val, 8);
3019eac3
DE
23121 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23122 entry->type_offset_in_tu.cu_off);
1fd400ff
TT
23123 obstack_grow (info->types_list, val, 8);
23124 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->signature);
23125 obstack_grow (info->types_list, val, 8);
23126
23127 ++info->cu_index;
23128
23129 return 1;
23130}
23131
95554aad
TT
23132/* Recurse into all "included" dependencies and write their symbols as
23133 if they appeared in this psymtab. */
23134
23135static void
23136recursively_write_psymbols (struct objfile *objfile,
23137 struct partial_symtab *psymtab,
23138 struct mapped_symtab *symtab,
23139 htab_t psyms_seen,
23140 offset_type cu_index)
23141{
23142 int i;
23143
23144 for (i = 0; i < psymtab->number_of_dependencies; ++i)
23145 if (psymtab->dependencies[i]->user != NULL)
23146 recursively_write_psymbols (objfile, psymtab->dependencies[i],
23147 symtab, psyms_seen, cu_index);
23148
23149 write_psymbols (symtab,
23150 psyms_seen,
23151 objfile->global_psymbols.list + psymtab->globals_offset,
23152 psymtab->n_global_syms, cu_index,
23153 0);
23154 write_psymbols (symtab,
23155 psyms_seen,
23156 objfile->static_psymbols.list + psymtab->statics_offset,
23157 psymtab->n_static_syms, cu_index,
23158 1);
23159}
23160
9291a0cd 23161/* Create an index file for OBJFILE in the directory DIR. */
b89be57b 23162
9291a0cd
TT
23163static void
23164write_psymtabs_to_index (struct objfile *objfile, const char *dir)
23165{
23166 struct cleanup *cleanup;
23167 char *filename, *cleanup_filename;
1fd400ff
TT
23168 struct obstack contents, addr_obstack, constant_pool, symtab_obstack;
23169 struct obstack cu_list, types_cu_list;
9291a0cd
TT
23170 int i;
23171 FILE *out_file;
23172 struct mapped_symtab *symtab;
23173 offset_type val, size_of_contents, total_len;
23174 struct stat st;
987d643c 23175 htab_t psyms_seen;
0a5429f6
DE
23176 htab_t cu_index_htab;
23177 struct psymtab_cu_index_map *psymtab_cu_index_map;
9291a0cd 23178
9291a0cd
TT
23179 if (dwarf2_per_objfile->using_index)
23180 error (_("Cannot use an index to create the index"));
23181
8b70b953
TT
23182 if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) > 1)
23183 error (_("Cannot make an index when the file has multiple .debug_types sections"));
23184
260b681b
DE
23185 if (!objfile->psymtabs || !objfile->psymtabs_addrmap)
23186 return;
23187
4262abfb
JK
23188 if (stat (objfile_name (objfile), &st) < 0)
23189 perror_with_name (objfile_name (objfile));
9291a0cd 23190
4262abfb 23191 filename = concat (dir, SLASH_STRING, lbasename (objfile_name (objfile)),
9291a0cd
TT
23192 INDEX_SUFFIX, (char *) NULL);
23193 cleanup = make_cleanup (xfree, filename);
23194
614c279d 23195 out_file = gdb_fopen_cloexec (filename, "wb");
9291a0cd
TT
23196 if (!out_file)
23197 error (_("Can't open `%s' for writing"), filename);
23198
23199 cleanup_filename = filename;
23200 make_cleanup (unlink_if_set, &cleanup_filename);
23201
23202 symtab = create_mapped_symtab ();
23203 make_cleanup (cleanup_mapped_symtab, symtab);
23204
23205 obstack_init (&addr_obstack);
23206 make_cleanup_obstack_free (&addr_obstack);
23207
23208 obstack_init (&cu_list);
23209 make_cleanup_obstack_free (&cu_list);
23210
1fd400ff
TT
23211 obstack_init (&types_cu_list);
23212 make_cleanup_obstack_free (&types_cu_list);
23213
987d643c
TT
23214 psyms_seen = htab_create_alloc (100, htab_hash_pointer, htab_eq_pointer,
23215 NULL, xcalloc, xfree);
96408a79 23216 make_cleanup_htab_delete (psyms_seen);
987d643c 23217
0a5429f6
DE
23218 /* While we're scanning CU's create a table that maps a psymtab pointer
23219 (which is what addrmap records) to its index (which is what is recorded
23220 in the index file). This will later be needed to write the address
23221 table. */
23222 cu_index_htab = htab_create_alloc (100,
23223 hash_psymtab_cu_index,
23224 eq_psymtab_cu_index,
23225 NULL, xcalloc, xfree);
96408a79 23226 make_cleanup_htab_delete (cu_index_htab);
0a5429f6
DE
23227 psymtab_cu_index_map = (struct psymtab_cu_index_map *)
23228 xmalloc (sizeof (struct psymtab_cu_index_map)
23229 * dwarf2_per_objfile->n_comp_units);
23230 make_cleanup (xfree, psymtab_cu_index_map);
23231
23232 /* The CU list is already sorted, so we don't need to do additional
1fd400ff
TT
23233 work here. Also, the debug_types entries do not appear in
23234 all_comp_units, but only in their own hash table. */
9291a0cd
TT
23235 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
23236 {
3e43a32a
MS
23237 struct dwarf2_per_cu_data *per_cu
23238 = dwarf2_per_objfile->all_comp_units[i];
e254ef6a 23239 struct partial_symtab *psymtab = per_cu->v.psymtab;
9291a0cd 23240 gdb_byte val[8];
0a5429f6
DE
23241 struct psymtab_cu_index_map *map;
23242 void **slot;
9291a0cd 23243
92fac807
JK
23244 /* CU of a shared file from 'dwz -m' may be unused by this main file.
23245 It may be referenced from a local scope but in such case it does not
23246 need to be present in .gdb_index. */
23247 if (psymtab == NULL)
23248 continue;
23249
95554aad
TT
23250 if (psymtab->user == NULL)
23251 recursively_write_psymbols (objfile, psymtab, symtab, psyms_seen, i);
9291a0cd 23252
0a5429f6
DE
23253 map = &psymtab_cu_index_map[i];
23254 map->psymtab = psymtab;
23255 map->cu_index = i;
23256 slot = htab_find_slot (cu_index_htab, map, INSERT);
23257 gdb_assert (slot != NULL);
23258 gdb_assert (*slot == NULL);
23259 *slot = map;
9291a0cd 23260
b64f50a1
JK
23261 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23262 per_cu->offset.sect_off);
9291a0cd 23263 obstack_grow (&cu_list, val, 8);
e254ef6a 23264 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, per_cu->length);
9291a0cd
TT
23265 obstack_grow (&cu_list, val, 8);
23266 }
23267
0a5429f6
DE
23268 /* Dump the address map. */
23269 write_address_map (objfile, &addr_obstack, cu_index_htab);
23270
1fd400ff
TT
23271 /* Write out the .debug_type entries, if any. */
23272 if (dwarf2_per_objfile->signatured_types)
23273 {
23274 struct signatured_type_index_data sig_data;
23275
23276 sig_data.objfile = objfile;
23277 sig_data.symtab = symtab;
23278 sig_data.types_list = &types_cu_list;
987d643c 23279 sig_data.psyms_seen = psyms_seen;
1fd400ff
TT
23280 sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
23281 htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
23282 write_one_signatured_type, &sig_data);
23283 }
23284
156942c7
DE
23285 /* Now that we've processed all symbols we can shrink their cu_indices
23286 lists. */
23287 uniquify_cu_indices (symtab);
23288
9291a0cd
TT
23289 obstack_init (&constant_pool);
23290 make_cleanup_obstack_free (&constant_pool);
23291 obstack_init (&symtab_obstack);
23292 make_cleanup_obstack_free (&symtab_obstack);
23293 write_hash_table (symtab, &symtab_obstack, &constant_pool);
23294
23295 obstack_init (&contents);
23296 make_cleanup_obstack_free (&contents);
1fd400ff 23297 size_of_contents = 6 * sizeof (offset_type);
9291a0cd
TT
23298 total_len = size_of_contents;
23299
23300 /* The version number. */
796a7ff8 23301 val = MAYBE_SWAP (8);
9291a0cd
TT
23302 obstack_grow (&contents, &val, sizeof (val));
23303
23304 /* The offset of the CU list from the start of the file. */
23305 val = MAYBE_SWAP (total_len);
23306 obstack_grow (&contents, &val, sizeof (val));
23307 total_len += obstack_object_size (&cu_list);
23308
1fd400ff
TT
23309 /* The offset of the types CU list from the start of the file. */
23310 val = MAYBE_SWAP (total_len);
23311 obstack_grow (&contents, &val, sizeof (val));
23312 total_len += obstack_object_size (&types_cu_list);
23313
9291a0cd
TT
23314 /* The offset of the address table from the start of the file. */
23315 val = MAYBE_SWAP (total_len);
23316 obstack_grow (&contents, &val, sizeof (val));
23317 total_len += obstack_object_size (&addr_obstack);
23318
23319 /* The offset of the symbol table from the start of the file. */
23320 val = MAYBE_SWAP (total_len);
23321 obstack_grow (&contents, &val, sizeof (val));
23322 total_len += obstack_object_size (&symtab_obstack);
23323
23324 /* The offset of the constant pool from the start of the file. */
23325 val = MAYBE_SWAP (total_len);
23326 obstack_grow (&contents, &val, sizeof (val));
23327 total_len += obstack_object_size (&constant_pool);
23328
23329 gdb_assert (obstack_object_size (&contents) == size_of_contents);
23330
23331 write_obstack (out_file, &contents);
23332 write_obstack (out_file, &cu_list);
1fd400ff 23333 write_obstack (out_file, &types_cu_list);
9291a0cd
TT
23334 write_obstack (out_file, &addr_obstack);
23335 write_obstack (out_file, &symtab_obstack);
23336 write_obstack (out_file, &constant_pool);
23337
23338 fclose (out_file);
23339
23340 /* We want to keep the file, so we set cleanup_filename to NULL
23341 here. See unlink_if_set. */
23342 cleanup_filename = NULL;
23343
23344 do_cleanups (cleanup);
23345}
23346
90476074
TT
23347/* Implementation of the `save gdb-index' command.
23348
23349 Note that the file format used by this command is documented in the
23350 GDB manual. Any changes here must be documented there. */
11570e71 23351
9291a0cd
TT
23352static void
23353save_gdb_index_command (char *arg, int from_tty)
23354{
23355 struct objfile *objfile;
23356
23357 if (!arg || !*arg)
96d19272 23358 error (_("usage: save gdb-index DIRECTORY"));
9291a0cd
TT
23359
23360 ALL_OBJFILES (objfile)
23361 {
23362 struct stat st;
23363
23364 /* If the objfile does not correspond to an actual file, skip it. */
4262abfb 23365 if (stat (objfile_name (objfile), &st) < 0)
9291a0cd
TT
23366 continue;
23367
23368 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
23369 if (dwarf2_per_objfile)
23370 {
9291a0cd 23371
492d29ea 23372 TRY
9291a0cd
TT
23373 {
23374 write_psymtabs_to_index (objfile, arg);
23375 }
492d29ea
PA
23376 CATCH (except, RETURN_MASK_ERROR)
23377 {
23378 exception_fprintf (gdb_stderr, except,
23379 _("Error while writing index for `%s': "),
23380 objfile_name (objfile));
23381 }
23382 END_CATCH
9291a0cd
TT
23383 }
23384 }
dce234bc
PP
23385}
23386
9291a0cd
TT
23387\f
23388
b4f54984 23389int dwarf_always_disassemble;
9eae7c52
TT
23390
23391static void
b4f54984
DE
23392show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
23393 struct cmd_list_element *c, const char *value)
9eae7c52 23394{
3e43a32a
MS
23395 fprintf_filtered (file,
23396 _("Whether to always disassemble "
23397 "DWARF expressions is %s.\n"),
9eae7c52
TT
23398 value);
23399}
23400
900e11f9
JK
23401static void
23402show_check_physname (struct ui_file *file, int from_tty,
23403 struct cmd_list_element *c, const char *value)
23404{
23405 fprintf_filtered (file,
23406 _("Whether to check \"physname\" is %s.\n"),
23407 value);
23408}
23409
6502dd73
DJ
23410void _initialize_dwarf2_read (void);
23411
23412void
23413_initialize_dwarf2_read (void)
23414{
96d19272
JK
23415 struct cmd_list_element *c;
23416
dce234bc 23417 dwarf2_objfile_data_key
c1bd65d0 23418 = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
ae038cb0 23419
b4f54984
DE
23420 add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
23421Set DWARF specific variables.\n\
23422Configure DWARF variables such as the cache size"),
23423 &set_dwarf_cmdlist, "maintenance set dwarf ",
ae038cb0
DJ
23424 0/*allow-unknown*/, &maintenance_set_cmdlist);
23425
b4f54984
DE
23426 add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
23427Show DWARF specific variables\n\
23428Show DWARF variables such as the cache size"),
23429 &show_dwarf_cmdlist, "maintenance show dwarf ",
ae038cb0
DJ
23430 0/*allow-unknown*/, &maintenance_show_cmdlist);
23431
23432 add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
b4f54984
DE
23433 &dwarf_max_cache_age, _("\
23434Set the upper bound on the age of cached DWARF compilation units."), _("\
23435Show the upper bound on the age of cached DWARF compilation units."), _("\
7915a72c
AC
23436A higher limit means that cached compilation units will be stored\n\
23437in memory longer, and more total memory will be used. Zero disables\n\
23438caching, which can slow down startup."),
2c5b56ce 23439 NULL,
b4f54984
DE
23440 show_dwarf_max_cache_age,
23441 &set_dwarf_cmdlist,
23442 &show_dwarf_cmdlist);
d97bc12b 23443
9eae7c52 23444 add_setshow_boolean_cmd ("always-disassemble", class_obscure,
b4f54984 23445 &dwarf_always_disassemble, _("\
9eae7c52
TT
23446Set whether `info address' always disassembles DWARF expressions."), _("\
23447Show whether `info address' always disassembles DWARF expressions."), _("\
23448When enabled, DWARF expressions are always printed in an assembly-like\n\
23449syntax. When disabled, expressions will be printed in a more\n\
23450conversational style, when possible."),
23451 NULL,
b4f54984
DE
23452 show_dwarf_always_disassemble,
23453 &set_dwarf_cmdlist,
23454 &show_dwarf_cmdlist);
23455
23456 add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
23457Set debugging of the DWARF reader."), _("\
23458Show debugging of the DWARF reader."), _("\
23459When enabled (non-zero), debugging messages are printed during DWARF\n\
73be47f5
DE
23460reading and symtab expansion. A value of 1 (one) provides basic\n\
23461information. A value greater than 1 provides more verbose information."),
45cfd468
DE
23462 NULL,
23463 NULL,
23464 &setdebuglist, &showdebuglist);
23465
b4f54984
DE
23466 add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
23467Set debugging of the DWARF DIE reader."), _("\
23468Show debugging of the DWARF DIE reader."), _("\
d97bc12b
DE
23469When enabled (non-zero), DIEs are dumped after they are read in.\n\
23470The value is the maximum depth to print."),
ccce17b0
YQ
23471 NULL,
23472 NULL,
23473 &setdebuglist, &showdebuglist);
9291a0cd 23474
27e0867f
DE
23475 add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
23476Set debugging of the dwarf line reader."), _("\
23477Show debugging of the dwarf line reader."), _("\
23478When enabled (non-zero), line number entries are dumped as they are read in.\n\
23479A value of 1 (one) provides basic information.\n\
23480A value greater than 1 provides more verbose information."),
23481 NULL,
23482 NULL,
23483 &setdebuglist, &showdebuglist);
23484
900e11f9
JK
23485 add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
23486Set cross-checking of \"physname\" code against demangler."), _("\
23487Show cross-checking of \"physname\" code against demangler."), _("\
23488When enabled, GDB's internal \"physname\" code is checked against\n\
23489the demangler."),
23490 NULL, show_check_physname,
23491 &setdebuglist, &showdebuglist);
23492
e615022a
DE
23493 add_setshow_boolean_cmd ("use-deprecated-index-sections",
23494 no_class, &use_deprecated_index_sections, _("\
23495Set whether to use deprecated gdb_index sections."), _("\
23496Show whether to use deprecated gdb_index sections."), _("\
23497When enabled, deprecated .gdb_index sections are used anyway.\n\
23498Normally they are ignored either because of a missing feature or\n\
23499performance issue.\n\
23500Warning: This option must be enabled before gdb reads the file."),
23501 NULL,
23502 NULL,
23503 &setlist, &showlist);
23504
96d19272 23505 c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
11570e71 23506 _("\
fc1a9d6e 23507Save a gdb-index file.\n\
11570e71 23508Usage: save gdb-index DIRECTORY"),
96d19272
JK
23509 &save_cmdlist);
23510 set_cmd_completer (c, filename_completer);
f1e6e072
TT
23511
23512 dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
23513 &dwarf2_locexpr_funcs);
23514 dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
23515 &dwarf2_loclist_funcs);
23516
23517 dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
23518 &dwarf2_block_frame_base_locexpr_funcs);
23519 dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
23520 &dwarf2_block_frame_base_loclist_funcs);
6502dd73 23521}
This page took 3.601821 seconds and 4 git commands to generate.